diff --git a/README b/README
index 5dcbc589..856590b6 100644
--- a/README
+++ b/README
@@ -1,3 +1,11 @@
+Fixed project so it can be built with the latest version of WDK via Visual Studio 2022 & msvc-build.bat.
+
+Cannot get wddk-build.bat to work because build.exe does not appear to exist anymore.
+
+Windows Kit Version: 10.0.26100.0
+
+You can make your own .sys, but you must understand how digital signing works.
+
WinDivert 2.2: Windows Packet Divert
====================================
diff --git a/dll/.vs/windivert/CopilotIndices/17.13.433.20974/CodeChunks.db b/dll/.vs/windivert/CopilotIndices/17.13.433.20974/CodeChunks.db
new file mode 100644
index 00000000..ad0db827
Binary files /dev/null and b/dll/.vs/windivert/CopilotIndices/17.13.433.20974/CodeChunks.db differ
diff --git a/dll/.vs/windivert/CopilotIndices/17.13.433.20974/SemanticSymbols.db b/dll/.vs/windivert/CopilotIndices/17.13.433.20974/SemanticSymbols.db
new file mode 100644
index 00000000..7d90a0f9
Binary files /dev/null and b/dll/.vs/windivert/CopilotIndices/17.13.433.20974/SemanticSymbols.db differ
diff --git a/dll/.vs/windivert/FileContentIndex/60672609-35a8-4969-9f61-97f04aad2f14.vsidx b/dll/.vs/windivert/FileContentIndex/60672609-35a8-4969-9f61-97f04aad2f14.vsidx
new file mode 100644
index 00000000..1e72314c
Binary files /dev/null and b/dll/.vs/windivert/FileContentIndex/60672609-35a8-4969-9f61-97f04aad2f14.vsidx differ
diff --git a/dll/.vs/windivert/FileContentIndex/b5ce3664-8686-459e-94f0-8386aaedbf90.vsidx b/dll/.vs/windivert/FileContentIndex/b5ce3664-8686-459e-94f0-8386aaedbf90.vsidx
new file mode 100644
index 00000000..a2e91eab
Binary files /dev/null and b/dll/.vs/windivert/FileContentIndex/b5ce3664-8686-459e-94f0-8386aaedbf90.vsidx differ
diff --git a/dll/.vs/windivert/v17/.suo b/dll/.vs/windivert/v17/.suo
new file mode 100644
index 00000000..93d0e64e
Binary files /dev/null and b/dll/.vs/windivert/v17/.suo differ
diff --git a/dll/.vs/windivert/v17/Browse.VC.db b/dll/.vs/windivert/v17/Browse.VC.db
new file mode 100644
index 00000000..450a9418
Binary files /dev/null and b/dll/.vs/windivert/v17/Browse.VC.db differ
diff --git a/dll/.vs/windivert/v17/DocumentLayout.backup.json b/dll/.vs/windivert/v17/DocumentLayout.backup.json
new file mode 100644
index 00000000..eeea1a1f
--- /dev/null
+++ b/dll/.vs/windivert/v17/DocumentLayout.backup.json
@@ -0,0 +1,125 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "C:\\WinDivert\\dll\\",
+ "Documents": [
+ {
+ "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\VC\\v170\\Microsoft.CppBuild.targets||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\WinDivert\\dll\\windivert_shared.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
+ "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:windivert_shared.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\WinDivert\\dll\\windivert_helper.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
+ "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:windivert_helper.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{92A2A492-FB82-C312-DAC0-F8A1135CD7FA}|windivert.vcxproj|C:\\WinDivert\\dll\\windivert.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
+ "RelativeMoniker": "D:0:0:{92A2A492-FB82-C312-DAC0-F8A1135CD7FA}|windivert.vcxproj|solutionrelative:windivert.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|E:\\Unity\\WinDivert\\include\\windivert_device.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\shared\\apiset.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|E:\\Unity\\WinDivert\\include\\windivert.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+ }
+ ],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": [
+ {
+ "DockedWidth": 200,
+ "SelectedChildIndex": 0,
+ "Children": [
+ {
+ "$type": "Document",
+ "DocumentIndex": 0,
+ "Title": "Microsoft.CppBuild.targets",
+ "DocumentMoniker": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\VC\\v170\\Microsoft.CppBuild.targets",
+ "RelativeDocumentMoniker": "..\\..\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\VC\\v170\\Microsoft.CppBuild.targets",
+ "ToolTip": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\VC\\v170\\Microsoft.CppBuild.targets",
+ "RelativeToolTip": "..\\..\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\VC\\v170\\Microsoft.CppBuild.targets",
+ "ViewState": "AgIAAI0FAAAAAAAAAAD4v5sFAAAAAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003801|",
+ "WhenOpened": "2025-03-11T07:44:23.483Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 1,
+ "Title": "windivert_shared.c",
+ "DocumentMoniker": "C:\\WinDivert\\dll\\windivert_shared.c",
+ "RelativeDocumentMoniker": "windivert_shared.c",
+ "ToolTip": "C:\\WinDivert\\dll\\windivert_shared.c",
+ "RelativeToolTip": "windivert_shared.c",
+ "ViewState": "AgIAALsDAAAAAAAAAADgv8oDAAASAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|",
+ "WhenOpened": "2025-03-09T21:39:31.894Z"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 2,
+ "Title": "windivert_helper.c",
+ "DocumentMoniker": "C:\\WinDivert\\dll\\windivert_helper.c",
+ "RelativeDocumentMoniker": "windivert_helper.c",
+ "ToolTip": "C:\\WinDivert\\dll\\windivert_helper.c",
+ "RelativeToolTip": "windivert_helper.c",
+ "ViewState": "AgIAADAKAAAAAAAAAADgvzAKAAAFAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|",
+ "WhenOpened": "2025-03-07T07:02:10.071Z"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 4,
+ "Title": "windivert_device.h",
+ "DocumentMoniker": "E:\\Unity\\WinDivert\\include\\windivert_device.h",
+ "ToolTip": "E:\\Unity\\WinDivert\\include\\windivert_device.h",
+ "ViewState": "AgIAABIAAAAAAAAAAAAAAB8AAAA8AAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
+ "WhenOpened": "2025-03-07T07:00:44.343Z"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 6,
+ "Title": "windivert.h",
+ "DocumentMoniker": "E:\\Unity\\WinDivert\\include\\windivert.h",
+ "ToolTip": "E:\\Unity\\WinDivert\\include\\windivert.h",
+ "ViewState": "AgIAAIsAAAAAAAAAAADgv6AAAAAIAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
+ "WhenOpened": "2025-03-07T06:59:40.446Z"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 5,
+ "Title": "apiset.h",
+ "DocumentMoniker": "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\shared\\apiset.h",
+ "RelativeDocumentMoniker": "..\\..\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\shared\\apiset.h",
+ "ToolTip": "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\shared\\apiset.h",
+ "RelativeToolTip": "..\\..\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\shared\\apiset.h",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
+ "WhenOpened": "2025-03-07T06:59:34.288Z"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 3,
+ "Title": "windivert.c",
+ "DocumentMoniker": "C:\\WinDivert\\dll\\windivert.c",
+ "RelativeDocumentMoniker": "windivert.c",
+ "ToolTip": "C:\\WinDivert\\dll\\windivert.c",
+ "RelativeToolTip": "windivert.c",
+ "ViewState": "AgIAALoBAAAAAAAAAADgv9UBAAAkAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|",
+ "WhenOpened": "2025-03-07T03:38:13.621Z"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/dll/.vs/windivert/v17/DocumentLayout.json b/dll/.vs/windivert/v17/DocumentLayout.json
new file mode 100644
index 00000000..eeea1a1f
--- /dev/null
+++ b/dll/.vs/windivert/v17/DocumentLayout.json
@@ -0,0 +1,125 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "C:\\WinDivert\\dll\\",
+ "Documents": [
+ {
+ "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\VC\\v170\\Microsoft.CppBuild.targets||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\WinDivert\\dll\\windivert_shared.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
+ "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:windivert_shared.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\WinDivert\\dll\\windivert_helper.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
+ "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:windivert_helper.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{92A2A492-FB82-C312-DAC0-F8A1135CD7FA}|windivert.vcxproj|C:\\WinDivert\\dll\\windivert.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
+ "RelativeMoniker": "D:0:0:{92A2A492-FB82-C312-DAC0-F8A1135CD7FA}|windivert.vcxproj|solutionrelative:windivert.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|E:\\Unity\\WinDivert\\include\\windivert_device.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\shared\\apiset.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|E:\\Unity\\WinDivert\\include\\windivert.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+ }
+ ],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": [
+ {
+ "DockedWidth": 200,
+ "SelectedChildIndex": 0,
+ "Children": [
+ {
+ "$type": "Document",
+ "DocumentIndex": 0,
+ "Title": "Microsoft.CppBuild.targets",
+ "DocumentMoniker": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\VC\\v170\\Microsoft.CppBuild.targets",
+ "RelativeDocumentMoniker": "..\\..\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\VC\\v170\\Microsoft.CppBuild.targets",
+ "ToolTip": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\VC\\v170\\Microsoft.CppBuild.targets",
+ "RelativeToolTip": "..\\..\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\VC\\v170\\Microsoft.CppBuild.targets",
+ "ViewState": "AgIAAI0FAAAAAAAAAAD4v5sFAAAAAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003801|",
+ "WhenOpened": "2025-03-11T07:44:23.483Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 1,
+ "Title": "windivert_shared.c",
+ "DocumentMoniker": "C:\\WinDivert\\dll\\windivert_shared.c",
+ "RelativeDocumentMoniker": "windivert_shared.c",
+ "ToolTip": "C:\\WinDivert\\dll\\windivert_shared.c",
+ "RelativeToolTip": "windivert_shared.c",
+ "ViewState": "AgIAALsDAAAAAAAAAADgv8oDAAASAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|",
+ "WhenOpened": "2025-03-09T21:39:31.894Z"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 2,
+ "Title": "windivert_helper.c",
+ "DocumentMoniker": "C:\\WinDivert\\dll\\windivert_helper.c",
+ "RelativeDocumentMoniker": "windivert_helper.c",
+ "ToolTip": "C:\\WinDivert\\dll\\windivert_helper.c",
+ "RelativeToolTip": "windivert_helper.c",
+ "ViewState": "AgIAADAKAAAAAAAAAADgvzAKAAAFAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|",
+ "WhenOpened": "2025-03-07T07:02:10.071Z"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 4,
+ "Title": "windivert_device.h",
+ "DocumentMoniker": "E:\\Unity\\WinDivert\\include\\windivert_device.h",
+ "ToolTip": "E:\\Unity\\WinDivert\\include\\windivert_device.h",
+ "ViewState": "AgIAABIAAAAAAAAAAAAAAB8AAAA8AAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
+ "WhenOpened": "2025-03-07T07:00:44.343Z"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 6,
+ "Title": "windivert.h",
+ "DocumentMoniker": "E:\\Unity\\WinDivert\\include\\windivert.h",
+ "ToolTip": "E:\\Unity\\WinDivert\\include\\windivert.h",
+ "ViewState": "AgIAAIsAAAAAAAAAAADgv6AAAAAIAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
+ "WhenOpened": "2025-03-07T06:59:40.446Z"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 5,
+ "Title": "apiset.h",
+ "DocumentMoniker": "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\shared\\apiset.h",
+ "RelativeDocumentMoniker": "..\\..\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\shared\\apiset.h",
+ "ToolTip": "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\shared\\apiset.h",
+ "RelativeToolTip": "..\\..\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\shared\\apiset.h",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
+ "WhenOpened": "2025-03-07T06:59:34.288Z"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 3,
+ "Title": "windivert.c",
+ "DocumentMoniker": "C:\\WinDivert\\dll\\windivert.c",
+ "RelativeDocumentMoniker": "windivert.c",
+ "ToolTip": "C:\\WinDivert\\dll\\windivert.c",
+ "RelativeToolTip": "windivert.c",
+ "ViewState": "AgIAALoBAAAAAAAAAADgv9UBAAAkAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|",
+ "WhenOpened": "2025-03-07T03:38:13.621Z"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/dll/.vs/windivert/v17/Solution.VC.db b/dll/.vs/windivert/v17/Solution.VC.db
new file mode 100644
index 00000000..b52439b9
Binary files /dev/null and b/dll/.vs/windivert/v17/Solution.VC.db differ
diff --git a/dll/.vs/windivert/v17/ipch/AutoPCH/46c885694a84e36d/WINDIVERT.ipch b/dll/.vs/windivert/v17/ipch/AutoPCH/46c885694a84e36d/WINDIVERT.ipch
new file mode 100644
index 00000000..d10d8d59
Binary files /dev/null and b/dll/.vs/windivert/v17/ipch/AutoPCH/46c885694a84e36d/WINDIVERT.ipch differ
diff --git a/dll/.vs/windivert/v17/ipch/AutoPCH/48a6b35abd35a197/WINDIVERT.ipch b/dll/.vs/windivert/v17/ipch/AutoPCH/48a6b35abd35a197/WINDIVERT.ipch
new file mode 100644
index 00000000..3e0b4dc0
Binary files /dev/null and b/dll/.vs/windivert/v17/ipch/AutoPCH/48a6b35abd35a197/WINDIVERT.ipch differ
diff --git a/dll/.vs/windivert/v17/ipch/AutoPCH/756d575397066d7f/WINDIVERT.ipch b/dll/.vs/windivert/v17/ipch/AutoPCH/756d575397066d7f/WINDIVERT.ipch
new file mode 100644
index 00000000..680c8941
Binary files /dev/null and b/dll/.vs/windivert/v17/ipch/AutoPCH/756d575397066d7f/WINDIVERT.ipch differ
diff --git a/dll/Release/WinDivert.tlog/CL.command.1.tlog b/dll/Release/WinDivert.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..e01aca62
Binary files /dev/null and b/dll/Release/WinDivert.tlog/CL.command.1.tlog differ
diff --git a/dll/Release/WinDivert.tlog/CL.read.1.tlog b/dll/Release/WinDivert.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..c5fc3a95
Binary files /dev/null and b/dll/Release/WinDivert.tlog/CL.read.1.tlog differ
diff --git a/dll/Release/WinDivert.tlog/CL.write.1.tlog b/dll/Release/WinDivert.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..d8e38ca5
Binary files /dev/null and b/dll/Release/WinDivert.tlog/CL.write.1.tlog differ
diff --git a/dll/Release/WinDivert.tlog/WinDivert.lastbuildstate b/dll/Release/WinDivert.tlog/WinDivert.lastbuildstate
new file mode 100644
index 00000000..99bca752
--- /dev/null
+++ b/dll/Release/WinDivert.tlog/WinDivert.lastbuildstate
@@ -0,0 +1,2 @@
+#TargetFrameworkVersion=:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1
+Release|Win32|C:\Users\kujax\OneDrive\Desktop\WinDivert-master\dll\|
diff --git a/dll/Release/WinDivert.tlog/WinDivert.write.1u.tlog b/dll/Release/WinDivert.tlog/WinDivert.write.1u.tlog
new file mode 100644
index 00000000..4e1ec180
Binary files /dev/null and b/dll/Release/WinDivert.tlog/WinDivert.write.1u.tlog differ
diff --git a/dll/Release/WinDivert.tlog/link.command.1.tlog b/dll/Release/WinDivert.tlog/link.command.1.tlog
new file mode 100644
index 00000000..e954fcad
Binary files /dev/null and b/dll/Release/WinDivert.tlog/link.command.1.tlog differ
diff --git a/dll/Release/WinDivert.tlog/link.read.1.tlog b/dll/Release/WinDivert.tlog/link.read.1.tlog
new file mode 100644
index 00000000..e93c15bf
Binary files /dev/null and b/dll/Release/WinDivert.tlog/link.read.1.tlog differ
diff --git a/dll/Release/WinDivert.tlog/link.write.1.tlog b/dll/Release/WinDivert.tlog/link.write.1.tlog
new file mode 100644
index 00000000..24d70074
Binary files /dev/null and b/dll/Release/WinDivert.tlog/link.write.1.tlog differ
diff --git a/dll/Release/vc140.idb b/dll/Release/vc140.idb
new file mode 100644
index 00000000..33cc202c
Binary files /dev/null and b/dll/Release/vc140.idb differ
diff --git a/dll/Release/vc140.pdb b/dll/Release/vc140.pdb
new file mode 100644
index 00000000..f92bbd66
Binary files /dev/null and b/dll/Release/vc140.pdb differ
diff --git a/dll/Release/windivert.obj b/dll/Release/windivert.obj
new file mode 100644
index 00000000..13327b21
Binary files /dev/null and b/dll/Release/windivert.obj differ
diff --git a/dll/Win32/Release/WinDivert.exp b/dll/Win32/Release/WinDivert.exp
new file mode 100644
index 00000000..2912a50a
Binary files /dev/null and b/dll/Win32/Release/WinDivert.exp differ
diff --git a/dll/Win32/Release/WinDivert.lib b/dll/Win32/Release/WinDivert.lib
new file mode 100644
index 00000000..502868c7
Binary files /dev/null and b/dll/Win32/Release/WinDivert.lib differ
diff --git a/dll/WinDivert.exp b/dll/WinDivert.exp
new file mode 100644
index 00000000..38e3de18
Binary files /dev/null and b/dll/WinDivert.exp differ
diff --git a/dll/WinDivert/Release/WinDivert.dll.recipe b/dll/WinDivert/Release/WinDivert.dll.recipe
new file mode 100644
index 00000000..1398f52c
--- /dev/null
+++ b/dll/WinDivert/Release/WinDivert.dll.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ C:\WinDivert\install\MSVC\i386\WinDivert.dll
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dll/WinDivert/Release/WinDivert.ilk b/dll/WinDivert/Release/WinDivert.ilk
new file mode 100644
index 00000000..49febfcc
Binary files /dev/null and b/dll/WinDivert/Release/WinDivert.ilk differ
diff --git a/dll/WinDivert/Release/WinDivert.tlog/CL.command.1.tlog b/dll/WinDivert/Release/WinDivert.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..880ae303
Binary files /dev/null and b/dll/WinDivert/Release/WinDivert.tlog/CL.command.1.tlog differ
diff --git a/dll/WinDivert/Release/WinDivert.tlog/CL.read.1.tlog b/dll/WinDivert/Release/WinDivert.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..4f5dc5c6
Binary files /dev/null and b/dll/WinDivert/Release/WinDivert.tlog/CL.read.1.tlog differ
diff --git a/dll/WinDivert/Release/WinDivert.tlog/CL.write.1.tlog b/dll/WinDivert/Release/WinDivert.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..d90486eb
Binary files /dev/null and b/dll/WinDivert/Release/WinDivert.tlog/CL.write.1.tlog differ
diff --git a/dll/WinDivert/Release/WinDivert.tlog/Cl.items.tlog b/dll/WinDivert/Release/WinDivert.tlog/Cl.items.tlog
new file mode 100644
index 00000000..b3c33f2c
--- /dev/null
+++ b/dll/WinDivert/Release/WinDivert.tlog/Cl.items.tlog
@@ -0,0 +1 @@
+C:\WinDivert\dll\windivert.c;C:\WinDivert\dll\WinDivert\Release\windivert.obj
diff --git a/dll/WinDivert/Release/WinDivert.tlog/WinDivert.lastbuildstate b/dll/WinDivert/Release/WinDivert.tlog/WinDivert.lastbuildstate
new file mode 100644
index 00000000..1dc14fbf
--- /dev/null
+++ b/dll/WinDivert/Release/WinDivert.tlog/WinDivert.lastbuildstate
@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.26100.0:
+Release|Win32|C:\WinDivert\dll\|
diff --git a/dll/WinDivert/Release/WinDivert.tlog/link.command.1.tlog b/dll/WinDivert/Release/WinDivert.tlog/link.command.1.tlog
new file mode 100644
index 00000000..91c24a7b
Binary files /dev/null and b/dll/WinDivert/Release/WinDivert.tlog/link.command.1.tlog differ
diff --git a/dll/WinDivert/Release/WinDivert.tlog/link.read.1.tlog b/dll/WinDivert/Release/WinDivert.tlog/link.read.1.tlog
new file mode 100644
index 00000000..b94d9cad
Binary files /dev/null and b/dll/WinDivert/Release/WinDivert.tlog/link.read.1.tlog differ
diff --git a/dll/WinDivert/Release/WinDivert.tlog/link.secondary.1.tlog b/dll/WinDivert/Release/WinDivert.tlog/link.secondary.1.tlog
new file mode 100644
index 00000000..c6ed3530
--- /dev/null
+++ b/dll/WinDivert/Release/WinDivert.tlog/link.secondary.1.tlog
@@ -0,0 +1,4 @@
+^C:\WINDIVERT\DLL\WINDIVERT\RELEASE\WINDIVERT.OBJ
+C:\WinDivert\dll\Win32\Release\WinDivert.lib
+C:\WinDivert\dll\Win32\Release\WinDivert.EXP
+C:\WinDivert\dll\WinDivert\Release\WinDivert.ilk
diff --git a/dll/WinDivert/Release/WinDivert.tlog/link.write.1.tlog b/dll/WinDivert/Release/WinDivert.tlog/link.write.1.tlog
new file mode 100644
index 00000000..af3914dd
Binary files /dev/null and b/dll/WinDivert/Release/WinDivert.tlog/link.write.1.tlog differ
diff --git a/dll/WinDivert/Release/vc143.idb b/dll/WinDivert/Release/vc143.idb
new file mode 100644
index 00000000..ba449fe8
Binary files /dev/null and b/dll/WinDivert/Release/vc143.idb differ
diff --git a/dll/WinDivert/Release/vc143.pdb b/dll/WinDivert/Release/vc143.pdb
new file mode 100644
index 00000000..4a97e81b
Binary files /dev/null and b/dll/WinDivert/Release/vc143.pdb differ
diff --git a/dll/WinDivert/Release/windivert.obj b/dll/WinDivert/Release/windivert.obj
new file mode 100644
index 00000000..dbaa3973
Binary files /dev/null and b/dll/WinDivert/Release/windivert.obj differ
diff --git a/dll/WinDivert/x64/Release/.NETCoreApp,Version=v9.0.AssemblyAttributes.cpp b/dll/WinDivert/x64/Release/.NETCoreApp,Version=v9.0.AssemblyAttributes.cpp
new file mode 100644
index 00000000..e96f4ed1
--- /dev/null
+++ b/dll/WinDivert/x64/Release/.NETCoreApp,Version=v9.0.AssemblyAttributes.cpp
@@ -0,0 +1,2 @@
+#using
+[assembly: System::Runtime::Versioning::TargetFrameworkAttribute(L".NETCoreApp,Version=v9.0", FrameworkDisplayName=L".NET 9.0")];
diff --git a/dll/WinDivert/x64/Release/.NETFramework,Version=v9.0.AssemblyAttributes.cpp b/dll/WinDivert/x64/Release/.NETFramework,Version=v9.0.AssemblyAttributes.cpp
new file mode 100644
index 00000000..136760e8
--- /dev/null
+++ b/dll/WinDivert/x64/Release/.NETFramework,Version=v9.0.AssemblyAttributes.cpp
@@ -0,0 +1,2 @@
+#using
+[assembly: System::Runtime::Versioning::TargetFrameworkAttribute(L".NETFramework,Version=v9.0", FrameworkDisplayName=L"")];
diff --git a/dll/WinDivert/x64/Release/WinDivert.Build.CppClean.log b/dll/WinDivert/x64/Release/WinDivert.Build.CppClean.log
new file mode 100644
index 00000000..b3397487
--- /dev/null
+++ b/dll/WinDivert/x64/Release/WinDivert.Build.CppClean.log
@@ -0,0 +1,18 @@
+c:\windivert\dll\windivert\x64\release\vc143.pdb
+c:\windivert\dll\windivert\x64\release\vc143.idb
+c:\windivert\dll\windivert\x64\release\windivert.obj
+c:\windivert\install\msvc\amd64\windivert.dll
+c:\windivert\install\msvc\amd64\windivert.pdb
+c:\windivert\dll\x64\release\windivert.lib
+c:\windivert\dll\x64\release\windivert.exp
+c:\windivert\dll\windivert\x64\release\windivert.ilk
+c:\windivert\dll\x64\release\windivert.pdb
+c:\windivert\dll\x64\release\windivert.dll
+c:\windivert\dll\windivert\x64\release\windivert.tlog\cl.command.1.tlog
+c:\windivert\dll\windivert\x64\release\windivert.tlog\cl.items.tlog
+c:\windivert\dll\windivert\x64\release\windivert.tlog\cl.read.1.tlog
+c:\windivert\dll\windivert\x64\release\windivert.tlog\cl.write.1.tlog
+c:\windivert\dll\windivert\x64\release\windivert.tlog\link.command.1.tlog
+c:\windivert\dll\windivert\x64\release\windivert.tlog\link.read.1.tlog
+c:\windivert\dll\windivert\x64\release\windivert.tlog\link.secondary.1.tlog
+c:\windivert\dll\windivert\x64\release\windivert.tlog\link.write.1.tlog
diff --git a/dll/WinDivert/x64/Release/WinDivert.dll.recipe b/dll/WinDivert/x64/Release/WinDivert.dll.recipe
new file mode 100644
index 00000000..a1a0c633
--- /dev/null
+++ b/dll/WinDivert/x64/Release/WinDivert.dll.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ C:\WinDivert\install\MSVC\amd64\WinDivert.dll
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dll/WinDivert/x64/Release/WinDivert.ilk b/dll/WinDivert/x64/Release/WinDivert.ilk
new file mode 100644
index 00000000..f19f685b
Binary files /dev/null and b/dll/WinDivert/x64/Release/WinDivert.ilk differ
diff --git a/dll/WinDivert/x64/Release/WinDivert.tlog/CL.command.1.tlog b/dll/WinDivert/x64/Release/WinDivert.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..cb774d79
Binary files /dev/null and b/dll/WinDivert/x64/Release/WinDivert.tlog/CL.command.1.tlog differ
diff --git a/dll/WinDivert/x64/Release/WinDivert.tlog/CL.read.1.tlog b/dll/WinDivert/x64/Release/WinDivert.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..24c43133
Binary files /dev/null and b/dll/WinDivert/x64/Release/WinDivert.tlog/CL.read.1.tlog differ
diff --git a/dll/WinDivert/x64/Release/WinDivert.tlog/CL.write.1.tlog b/dll/WinDivert/x64/Release/WinDivert.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..4cb5527c
Binary files /dev/null and b/dll/WinDivert/x64/Release/WinDivert.tlog/CL.write.1.tlog differ
diff --git a/dll/WinDivert/x64/Release/WinDivert.tlog/Cl.items.tlog b/dll/WinDivert/x64/Release/WinDivert.tlog/Cl.items.tlog
new file mode 100644
index 00000000..8d7ccb4d
--- /dev/null
+++ b/dll/WinDivert/x64/Release/WinDivert.tlog/Cl.items.tlog
@@ -0,0 +1 @@
+C:\WinDivert\dll\windivert.c;C:\WinDivert\dll\WinDivert\x64\Release\windivert.obj
diff --git a/dll/WinDivert/x64/Release/WinDivert.tlog/WinDivert.lastbuildstate b/dll/WinDivert/x64/Release/WinDivert.tlog/WinDivert.lastbuildstate
new file mode 100644
index 00000000..635226bf
--- /dev/null
+++ b/dll/WinDivert/x64/Release/WinDivert.tlog/WinDivert.lastbuildstate
@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.26100.0:
+Release|x64|C:\WinDivert\dll\|
diff --git a/dll/WinDivert/x64/Release/WinDivert.tlog/link.command.1.tlog b/dll/WinDivert/x64/Release/WinDivert.tlog/link.command.1.tlog
new file mode 100644
index 00000000..befd2cbf
Binary files /dev/null and b/dll/WinDivert/x64/Release/WinDivert.tlog/link.command.1.tlog differ
diff --git a/dll/WinDivert/x64/Release/WinDivert.tlog/link.read.1.tlog b/dll/WinDivert/x64/Release/WinDivert.tlog/link.read.1.tlog
new file mode 100644
index 00000000..14c888a7
Binary files /dev/null and b/dll/WinDivert/x64/Release/WinDivert.tlog/link.read.1.tlog differ
diff --git a/dll/WinDivert/x64/Release/WinDivert.tlog/link.secondary.1.tlog b/dll/WinDivert/x64/Release/WinDivert.tlog/link.secondary.1.tlog
new file mode 100644
index 00000000..8ded5c21
--- /dev/null
+++ b/dll/WinDivert/x64/Release/WinDivert.tlog/link.secondary.1.tlog
@@ -0,0 +1,4 @@
+^C:\WINDIVERT\DLL\WINDIVERT\X64\RELEASE\WINDIVERT.OBJ
+C:\WinDivert\dll\x64\Release\WinDivert.lib
+C:\WinDivert\dll\x64\Release\WinDivert.EXP
+C:\WinDivert\dll\WinDivert\x64\Release\WinDivert.ilk
diff --git a/dll/WinDivert/x64/Release/WinDivert.tlog/link.write.1.tlog b/dll/WinDivert/x64/Release/WinDivert.tlog/link.write.1.tlog
new file mode 100644
index 00000000..0c17e828
Binary files /dev/null and b/dll/WinDivert/x64/Release/WinDivert.tlog/link.write.1.tlog differ
diff --git a/dll/WinDivert/x64/Release/vc143.idb b/dll/WinDivert/x64/Release/vc143.idb
new file mode 100644
index 00000000..2b3e67af
Binary files /dev/null and b/dll/WinDivert/x64/Release/vc143.idb differ
diff --git a/dll/WinDivert/x64/Release/vc143.pdb b/dll/WinDivert/x64/Release/vc143.pdb
new file mode 100644
index 00000000..79bf2b58
Binary files /dev/null and b/dll/WinDivert/x64/Release/vc143.pdb differ
diff --git a/dll/WinDivert/x64/Release/windivert.log b/dll/WinDivert/x64/Release/windivert.log
new file mode 100644
index 00000000..f5750352
--- /dev/null
+++ b/dll/WinDivert/x64/Release/windivert.log
@@ -0,0 +1,3 @@
+ windivert.c
+ Creating library x64\Release\WinDivert.lib and object x64\Release\WinDivert.exp
+ windivert.vcxproj -> C:\WinDivert\dll\x64\Release\WinDivert.dll
diff --git a/dll/WinDivert/x64/Release/windivert.obj b/dll/WinDivert/x64/Release/windivert.obj
new file mode 100644
index 00000000..1a6573e9
Binary files /dev/null and b/dll/WinDivert/x64/Release/windivert.obj differ
diff --git a/dll/WinDivert/x64/Release/windivert.vcxproj.FileListAbsolute.txt b/dll/WinDivert/x64/Release/windivert.vcxproj.FileListAbsolute.txt
new file mode 100644
index 00000000..e69de29b
diff --git a/dll/windivert.c b/dll/windivert.c
index f0ec577a..f1190be3 100644
--- a/dll/windivert.c
+++ b/dll/windivert.c
@@ -21,12 +21,12 @@
* the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
- *
+ *
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
- *
+ *
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
@@ -63,16 +63,16 @@ static BOOLEAN WinDivertIsXDigit(char c);
static BOOLEAN WinDivertIsSpace(char c);
static BOOLEAN WinDivertIsAlNum(char c);
static char WinDivertToLower(char c);
-static BOOLEAN WinDivertStrLen(const wchar_t *s, size_t maxlen,
- size_t *lenptr);
-static BOOLEAN WinDivertStrCpy(wchar_t *dst, size_t dstlen,
- const wchar_t *src);
-static int WinDivertStrCmp(const char *s, const char *t);
-static BOOLEAN WinDivertAToI(const char *str, char **endptr, UINT32 *intptr,
+static BOOLEAN WinDivertStrLen(const wchar_t* s, size_t maxlen,
+ size_t* lenptr);
+static BOOLEAN WinDivertStrCpy(wchar_t* dst, size_t dstlen,
+ const wchar_t* src);
+static int WinDivertStrCmp(const char* s, const char* t);
+static BOOLEAN WinDivertAToI(const char* str, char** endptr, UINT32* intptr,
UINT size);
-static BOOLEAN WinDivertAToX(const char *str, char **endptr, UINT32 *intptr,
+static BOOLEAN WinDivertAToX(const char* str, char** endptr, UINT32* intptr,
UINT size, BOOL prefix);
-static UINT32 WinDivertDivTen128(UINT32 *a);
+static UINT32 WinDivertDivTen128(UINT32* a);
/*
* Misc.
@@ -93,21 +93,21 @@ static UINT32 WinDivertDivTen128(UINT32 *a);
#pragma intrinsic(memcpy)
#pragma function(memcpy)
-void *memcpy(void *dst, const void *src, size_t n)
+void* memcpy(void* dst, const void* src, size_t n)
{
size_t i;
for (i = 0; i < n; i++)
- ((UINT8 *)dst)[i] = ((const UINT8 *)src)[i];
+ ((UINT8*)dst)[i] = ((const UINT8*)src)[i];
return dst;
}
#pragma intrinsic(memset)
#pragma function(memset)
-void *memset(void *dst, int c, size_t n)
+void* memset(void* dst, int c, size_t n)
{
size_t i;
for (i = 0; i < n; i++)
- ((UINT8 *)dst)[i] = (UINT8)c;
+ ((UINT8*)dst)[i] = (UINT8)c;
return dst;
}
@@ -119,10 +119,10 @@ void *memset(void *dst, int c, size_t n)
#endif /* _MSC_VER */
-/*
- * Filter interpreter config.
- */
-static BOOL WinDivertGetData(const VOID *packet, UINT packet_len, INT min,
+ /*
+ * Filter interpreter config.
+ */
+static BOOL WinDivertGetData(const VOID* packet, UINT packet_len, INT min,
INT max, INT idx, PVOID data, UINT size);
#define WINDIVERT_GET_DATA(packet, packet_len, min, max, index, data, size) \
WinDivertGetData((packet), (packet_len), (min), (max), (index), (data), \
@@ -141,9 +141,9 @@ static BOOLEAN WinDivertDriverInstall(VOID);
#include "windivert_shared.c"
#include "windivert_helper.c"
-/*
- * Thread local.
- */
+ /*
+ * Thread local.
+ */
static DWORD windivert_tls_idx;
/*
@@ -159,38 +159,38 @@ BOOL APIENTRY WinDivertDllEntry(HANDLE module0, DWORD reason, LPVOID reserved)
HANDLE event;
switch (reason)
{
- case DLL_PROCESS_ATTACH:
- module = module0;
- if ((windivert_tls_idx = TlsAlloc()) == TLS_OUT_OF_INDEXES)
- {
- return FALSE;
- }
- // Fallthrough
- case DLL_THREAD_ATTACH:
- event = CreateEvent(NULL, FALSE, FALSE, NULL);
- if (event == NULL)
- {
- return FALSE;
- }
- TlsSetValue(windivert_tls_idx, (LPVOID)event);
- break;
-
- case DLL_PROCESS_DETACH:
- event = (HANDLE)TlsGetValue(windivert_tls_idx);
- if (event != (HANDLE)NULL)
- {
- CloseHandle(event);
- }
- TlsFree(windivert_tls_idx);
- break;
-
- case DLL_THREAD_DETACH:
- event = (HANDLE)TlsGetValue(windivert_tls_idx);
- if (event != (HANDLE)NULL)
- {
- CloseHandle(event);
- }
- break;
+ case DLL_PROCESS_ATTACH:
+ module = module0;
+ if ((windivert_tls_idx = TlsAlloc()) == TLS_OUT_OF_INDEXES)
+ {
+ return FALSE;
+ }
+ // Fallthrough
+ case DLL_THREAD_ATTACH:
+ event = CreateEvent(NULL, FALSE, FALSE, NULL);
+ if (event == NULL)
+ {
+ return FALSE;
+ }
+ TlsSetValue(windivert_tls_idx, (LPVOID)event);
+ break;
+
+ case DLL_PROCESS_DETACH:
+ event = (HANDLE)TlsGetValue(windivert_tls_idx);
+ if (event != (HANDLE)NULL)
+ {
+ CloseHandle(event);
+ }
+ TlsFree(windivert_tls_idx);
+ break;
+
+ case DLL_THREAD_DETACH:
+ event = (HANDLE)TlsGetValue(windivert_tls_idx);
+ if (event != (HANDLE)NULL)
+ {
+ CloseHandle(event);
+ }
+ break;
}
return TRUE;
}
@@ -202,7 +202,7 @@ static BOOLEAN WinDivertUse32Bit(void)
{
BOOL is_wow64;
- if (sizeof(void *) == sizeof(UINT64))
+ if (sizeof(void*) == sizeof(UINT64))
{
return FALSE;
}
@@ -211,7 +211,7 @@ static BOOLEAN WinDivertUse32Bit(void)
// Just guess:
return FALSE;
}
- return (is_wow64? FALSE: TRUE);
+ return (is_wow64 ? FALSE : TRUE);
}
/*
@@ -253,8 +253,8 @@ static BOOLEAN WinDivertGetDriverFileName(LPWSTR sys_str)
SetLastError(ERROR_BAD_PATHNAME);
return FALSE;
}
- if (!WinDivertStrCpy(sys_str + dir_len, MAX_PATH-dir_len-1,
- (is_32bit? WINDIVERT_DRIVER32_SYS: WINDIVERT_DRIVER64_SYS)))
+ if (!WinDivertStrCpy(sys_str + dir_len, MAX_PATH - dir_len - 1,
+ (is_32bit ? WINDIVERT_DRIVER32_SYS : WINDIVERT_DRIVER64_SYS)))
{
SetLastError(ERROR_BAD_PATHNAME);
return FALSE;
@@ -266,7 +266,7 @@ static BOOLEAN WinDivertGetDriverFileName(LPWSTR sys_str)
/*
* Register event log. It is not an error if this function fails.
*/
-static void WinDivertRegisterEventSource(const wchar_t *windivert_sys)
+static void WinDivertRegisterEventSource(const wchar_t* windivert_sys)
{
HKEY key;
size_t len;
@@ -277,16 +277,16 @@ static void WinDivertRegisterEventSource(const wchar_t *windivert_sys)
return;
}
if (RegCreateKeyExA(HKEY_LOCAL_MACHINE,
- "System\\CurrentControlSet\\Services\\EventLog\\System\\WinDivert",
- 0, NULL, REG_OPTION_VOLATILE, KEY_SET_VALUE, NULL, &key, NULL)
- != ERROR_SUCCESS)
+ "System\\CurrentControlSet\\Services\\EventLog\\System\\WinDivert",
+ 0, NULL, REG_OPTION_VOLATILE, KEY_SET_VALUE, NULL, &key, NULL)
+ != ERROR_SUCCESS)
{
return;
}
RegSetValueExW(key, L"EventMessageFile", 0, REG_SZ, (LPBYTE)windivert_sys,
- (len + 1) * sizeof(wchar_t));
+ (len + 1) * sizeof(wchar_t));
RegSetValueExA(key, "TypesSupported", 0, REG_DWORD, (LPBYTE)&types,
- sizeof(types));
+ sizeof(types));
RegCloseKey(key);
}
@@ -297,7 +297,7 @@ static BOOLEAN WinDivertDriverInstall(VOID)
{
DWORD err;
SC_HANDLE manager = NULL, service = NULL;
- wchar_t windivert_sys[MAX_PATH+1];
+ wchar_t windivert_sys[MAX_PATH + 1];
HANDLE mutex = NULL;
BOOL success = TRUE;
@@ -310,10 +310,10 @@ static BOOLEAN WinDivertDriverInstall(VOID)
}
switch (WaitForSingleObject(mutex, INFINITE))
{
- case WAIT_OBJECT_0: case WAIT_ABANDONED:
- break;
- default:
- return FALSE;
+ case WAIT_OBJECT_0: case WAIT_ABANDONED:
+ break;
+ default:
+ return FALSE;
}
// Open the service manager:
@@ -343,7 +343,7 @@ static BOOLEAN WinDivertDriverInstall(VOID)
NULL, NULL, NULL);
if (service == NULL)
{
- if (GetLastError() == ERROR_SERVICE_EXISTS)
+ if (GetLastError() == ERROR_SERVICE_EXISTS)
{
service = OpenService(manager, WINDIVERT_DEVICE_NAME,
SERVICE_ALL_ACCESS);
@@ -394,7 +394,7 @@ static BOOLEAN WinDivertDriverInstall(VOID)
* Perform an (overlapped) DeviceIoControl.
*/
static BOOL WinDivertIoControlEx(HANDLE handle, DWORD code,
- PWINDIVERT_IOCTL ioctl, PVOID buf, UINT len, UINT *iolen,
+ PWINDIVERT_IOCTL ioctl, PVOID buf, UINT len, UINT* iolen,
LPOVERLAPPED overlapped)
{
BOOL result;
@@ -413,7 +413,7 @@ static BOOL WinDivertIoControlEx(HANDLE handle, DWORD code,
* Perform a DeviceIoControl.
*/
static BOOL WinDivertIoControl(HANDLE handle, DWORD code,
- PWINDIVERT_IOCTL ioctl, PVOID buf, UINT len, UINT *iolen)
+ PWINDIVERT_IOCTL ioctl, PVOID buf, UINT len, UINT* iolen)
{
OVERLAPPED overlapped;
DWORD iolen0;
@@ -433,7 +433,7 @@ static BOOL WinDivertIoControl(HANDLE handle, DWORD code,
memset(&overlapped, 0, sizeof(overlapped));
overlapped.hEvent = event;
if (!WinDivertIoControlEx(handle, code, ioctl, buf, len, iolen,
- &overlapped))
+ &overlapped))
{
if (GetLastError() != ERROR_IO_PENDING ||
!GetOverlappedResult(handle, &overlapped, &iolen0, TRUE))
@@ -451,10 +451,10 @@ static BOOL WinDivertIoControl(HANDLE handle, DWORD code,
/*
* Open a WinDivert handle.
*/
-HANDLE WinDivertOpen(const char *filter, WINDIVERT_LAYER layer, INT16 priority,
+HANDLE WinDivertOpen(const char* filter, WINDIVERT_LAYER layer, INT16 priority,
UINT64 flags)
{
- WINDIVERT_FILTER *object;
+ WINDIVERT_FILTER* object;
UINT obj_len;
ERROR comp_err;
DWORD err;
@@ -479,15 +479,15 @@ HANDLE WinDivertOpen(const char *filter, WINDIVERT_LAYER layer, INT16 priority,
// Parameter checking:
switch (layer)
{
- case WINDIVERT_LAYER_NETWORK:
- case WINDIVERT_LAYER_NETWORK_FORWARD:
- case WINDIVERT_LAYER_FLOW:
- case WINDIVERT_LAYER_SOCKET:
- case WINDIVERT_LAYER_REFLECT:
- break;
- default:
- SetLastError(ERROR_INVALID_PARAMETER);
- return INVALID_HANDLE_VALUE;
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ case WINDIVERT_LAYER_FLOW:
+ case WINDIVERT_LAYER_SOCKET:
+ case WINDIVERT_LAYER_REFLECT:
+ break;
+ default:
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return INVALID_HANDLE_VALUE;
}
if (!WINDIVERT_FLAGS_VALID(flags))
{
@@ -552,7 +552,7 @@ HANDLE WinDivertOpen(const char *filter, WINDIVERT_LAYER layer, INT16 priority,
if (!WinDivertDriverInstall())
{
err = GetLastError();
- err = (err == 0? ERROR_OPEN_FAILED: err);
+ err = (err == 0 ? ERROR_OPEN_FAILED : err);
HeapDestroy(pool);
SetLastError(err);
return INVALID_HANDLE_VALUE;
@@ -572,16 +572,16 @@ HANDLE WinDivertOpen(const char *filter, WINDIVERT_LAYER layer, INT16 priority,
// Initialize the handle:
memset(&ioctl, 0, sizeof(ioctl));
- ioctl.initialize.layer = layer;
+ ioctl.initialize.layer = layer;
ioctl.initialize.priority = (INT32)priority + WINDIVERT_PRIORITY_MAX;
- ioctl.initialize.flags = flags;
+ ioctl.initialize.flags = flags;
memset(&version, 0, sizeof(version));
- version.magic = WINDIVERT_MAGIC_DLL;
- version.major = WINDIVERT_VERSION_MAJOR;
- version.minor = WINDIVERT_VERSION_MINOR;
- version.bits = 8 * sizeof(void *);
+ version.magic = WINDIVERT_MAGIC_DLL;
+ version.major = WINDIVERT_VERSION_MAJOR;
+ version.minor = WINDIVERT_VERSION_MINOR;
+ version.bits = 8 * sizeof(void*);
if (!WinDivertIoControl(handle, IOCTL_WINDIVERT_INITIALIZE, &ioctl,
- &version, sizeof(version), NULL))
+ &version, sizeof(version), NULL))
{
err = GetLastError();
CloseHandle(handle);
@@ -602,7 +602,7 @@ HANDLE WinDivertOpen(const char *filter, WINDIVERT_LAYER layer, INT16 priority,
memset(&ioctl, 0, sizeof(ioctl));
ioctl.startup.flags = filter_flags;
if (!WinDivertIoControl(handle, IOCTL_WINDIVERT_STARTUP, &ioctl,
- object, obj_len * sizeof(WINDIVERT_FILTER), NULL))
+ object, obj_len * sizeof(WINDIVERT_FILTER), NULL))
{
err = GetLastError();
CloseHandle(handle);
@@ -619,7 +619,7 @@ HANDLE WinDivertOpen(const char *filter, WINDIVERT_LAYER layer, INT16 priority,
/*
* Receive a WinDivert packet.
*/
-BOOL WinDivertRecv(HANDLE handle, PVOID pPacket, UINT packetLen, UINT *readLen,
+BOOL WinDivertRecv(HANDLE handle, PVOID pPacket, UINT packetLen, UINT* readLen,
PWINDIVERT_ADDRESS addr)
{
WINDIVERT_IOCTL ioctl;
@@ -634,7 +634,7 @@ BOOL WinDivertRecv(HANDLE handle, PVOID pPacket, UINT packetLen, UINT *readLen,
* Receive a WinDivert packet.
*/
BOOL WinDivertRecvEx(HANDLE handle, PVOID pPacket, UINT packetLen,
- UINT *readLen, UINT64 flags, PWINDIVERT_ADDRESS addr, UINT *pAddrLen,
+ UINT* readLen, UINT64 flags, PWINDIVERT_ADDRESS addr, UINT* pAddrLen,
LPOVERLAPPED overlapped)
{
WINDIVERT_IOCTL ioctl;
@@ -661,8 +661,8 @@ BOOL WinDivertRecvEx(HANDLE handle, PVOID pPacket, UINT packetLen,
/*
* Send a WinDivert packet.
*/
-BOOL WinDivertSend(HANDLE handle, const VOID *pPacket, UINT packetLen,
- UINT *writeLen, const WINDIVERT_ADDRESS *addr)
+BOOL WinDivertSend(HANDLE handle, const VOID* pPacket, UINT packetLen,
+ UINT* writeLen, const WINDIVERT_ADDRESS* addr)
{
WINDIVERT_IOCTL ioctl;
memset(&ioctl, 0, sizeof(ioctl));
@@ -675,8 +675,8 @@ BOOL WinDivertSend(HANDLE handle, const VOID *pPacket, UINT packetLen,
/*
* Send a WinDivert packet.
*/
-BOOL WinDivertSendEx(HANDLE handle, const VOID *pPacket, UINT packetLen,
- UINT *writeLen, UINT64 flags, const WINDIVERT_ADDRESS *addr, UINT addrLen,
+BOOL WinDivertSendEx(HANDLE handle, const VOID* pPacket, UINT packetLen,
+ UINT* writeLen, UINT64 flags, const WINDIVERT_ADDRESS* addr, UINT addrLen,
LPOVERLAPPED overlapped)
{
WINDIVERT_IOCTL ioctl;
@@ -728,7 +728,7 @@ BOOL WinDivertSetParam(HANDLE handle, WINDIVERT_PARAM param, UINT64 value)
WINDIVERT_IOCTL ioctl;
memset(&ioctl, 0, sizeof(ioctl));
ioctl.set_param.param = (UINT32)param;
- ioctl.set_param.val = value;
+ ioctl.set_param.val = value;
return WinDivertIoControl(handle, IOCTL_WINDIVERT_SET_PARAM, &ioctl, NULL,
0, NULL);
}
@@ -736,7 +736,7 @@ BOOL WinDivertSetParam(HANDLE handle, WINDIVERT_PARAM param, UINT64 value)
/*
* Get a WinDivert parameter.
*/
-BOOL WinDivertGetParam(HANDLE handle, WINDIVERT_PARAM param, UINT64 *pValue)
+BOOL WinDivertGetParam(HANDLE handle, WINDIVERT_PARAM param, UINT64* pValue)
{
WINDIVERT_IOCTL ioctl;
memset(&ioctl, 0, sizeof(ioctl));
@@ -757,21 +757,21 @@ static BOOLEAN WinDivertIsDigit(char c)
static BOOLEAN WinDivertIsXDigit(char c)
{
return (c >= '0' && c <= '9') ||
- (c >= 'a' && c <= 'f') ||
- (c >= 'A' && c <= 'F');
+ (c >= 'a' && c <= 'f') ||
+ (c >= 'A' && c <= 'F');
}
static BOOLEAN WinDivertIsSpace(char c)
{
return (c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '\f' ||
- c == '\v');
+ c == '\v');
}
static BOOLEAN WinDivertIsAlNum(char c)
{
return (c >= 'a' && c <= 'z') ||
- (c >= 'A' && c <= 'Z') ||
- (c >= '0' && c <= '9');
+ (c >= 'A' && c <= 'Z') ||
+ (c >= '0' && c <= '9');
}
static char WinDivertToLower(char c)
@@ -781,8 +781,8 @@ static char WinDivertToLower(char c)
return c;
}
-static BOOLEAN WinDivertStrLen(const wchar_t *s, size_t maxlen,
- size_t *lenptr)
+static BOOLEAN WinDivertStrLen(const wchar_t* s, size_t maxlen,
+ size_t* lenptr)
{
size_t i;
for (i = 0; s[i]; i++)
@@ -796,7 +796,7 @@ static BOOLEAN WinDivertStrLen(const wchar_t *s, size_t maxlen,
return TRUE;
}
-static BOOLEAN WinDivertStrCpy(wchar_t *dst, size_t dstlen, const wchar_t *src)
+static BOOLEAN WinDivertStrCpy(wchar_t* dst, size_t dstlen, const wchar_t* src)
{
size_t i;
for (i = 0; src[i]; i++)
@@ -815,7 +815,7 @@ static BOOLEAN WinDivertStrCpy(wchar_t *dst, size_t dstlen, const wchar_t *src)
return TRUE;
}
-static int WinDivertStrCmp(const char *s, const char *t)
+static int WinDivertStrCmp(const char* s, const char* t)
{
int cmp;
size_t i;
@@ -833,7 +833,7 @@ static int WinDivertStrCmp(const char *s, const char *t)
}
}
-static BOOLEAN WinDivertMul128(UINT32 *n, UINT32 m)
+static BOOLEAN WinDivertMul128(UINT32* n, UINT32 m)
{
UINT64 n64 = (UINT64)n[0] * (UINT64)m;
n[0] = (UINT32)n64;
@@ -846,7 +846,7 @@ static BOOLEAN WinDivertMul128(UINT32 *n, UINT32 m)
return ((n64 >> 32) == 0);
}
-static BOOLEAN WinDivertAdd128(UINT32 *n, UINT32 a)
+static BOOLEAN WinDivertAdd128(UINT32* n, UINT32 a)
{
UINT64 n64 = (UINT64)n[0] + (UINT64)a;
n[0] = (UINT32)n64;
@@ -859,11 +859,11 @@ static BOOLEAN WinDivertAdd128(UINT32 *n, UINT32 a)
return ((n64 >> 32) == 0);
}
-static BOOLEAN WinDivertAToI(const char *str, char **endptr, UINT32 *intptr,
+static BOOLEAN WinDivertAToI(const char* str, char** endptr, UINT32* intptr,
UINT size)
{
size_t i = 0;
- UINT32 n[4] = {0};
+ UINT32 n[4] = { 0 };
BOOLEAN result = TRUE;
for (; str[i] && WinDivertIsDigit(str[i]); i++)
{
@@ -878,7 +878,7 @@ static BOOLEAN WinDivertAToI(const char *str, char **endptr, UINT32 *intptr,
}
if (endptr != NULL)
{
- *endptr = (char *)str + i;
+ *endptr = (char*)str + i;
}
for (i = 0; i < size; i++)
{
@@ -891,15 +891,15 @@ static BOOLEAN WinDivertAToI(const char *str, char **endptr, UINT32 *intptr,
return result;
}
-static BOOLEAN WinDivertAToX(const char *str, char **endptr, UINT32 *intptr,
+static BOOLEAN WinDivertAToX(const char* str, char** endptr, UINT32* intptr,
UINT size, BOOL prefix)
{
size_t i = 0;
- UINT32 n[4] = {0}, dig;
+ UINT32 n[4] = { 0 }, dig;
BOOLEAN result = TRUE;
if (prefix)
{
- if (str[i] == '0' && str[i+1] == 'x')
+ if (str[i] == '0' && str[i + 1] == 'x')
{
i += 2;
}
@@ -929,7 +929,7 @@ static BOOLEAN WinDivertAToX(const char *str, char **endptr, UINT32 *intptr,
}
if (endptr != NULL)
{
- *endptr = (char *)str + i;
+ *endptr = (char*)str + i;
}
for (i = 0; i < size; i++)
{
@@ -956,20 +956,20 @@ static BOOLEAN WinDivertAToX(const char *str, char **endptr, UINT32 *intptr,
t = (t >> 32) + (s >> 32); \
} \
} while (FALSE)
-static UINT32 WinDivertDivTen128(UINT32 *a)
+static UINT32 WinDivertDivTen128(UINT32* a)
{
const UINT32 c[5] =
{
0x9999999A, 0x99999999, 0x99999999, 0x99999999, 0x19999999
};
- UINT32 r[9] = {0}, m[6] = {0};
+ UINT32 r[9] = { 0 }, m[6] = { 0 };
UINT i, j;
for (i = 0; i < 4; i++)
{
for (j = 0; j < 5; j++)
{
- WINDIVERT_BIG_MUL_ROUND(a[i], c[j], r, i+j);
+ WINDIVERT_BIG_MUL_ROUND(a[i], c[j], r, i + j);
}
}
@@ -977,12 +977,11 @@ static UINT32 WinDivertDivTen128(UINT32 *a)
a[1] = r[6];
a[2] = r[7];
a[3] = r[8];
-
+
for (i = 0; i < 5; i++)
{
WINDIVERT_BIG_MUL_ROUND(r[i], 10, m, i);
}
-
+
return m[5];
}
-
diff --git a/dll/windivert.sln b/dll/windivert.sln
new file mode 100644
index 00000000..814d26e6
--- /dev/null
+++ b/dll/windivert.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.13.35825.156 d17.13
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinDivert", "windivert.vcxproj", "{92A2A492-FB82-C312-DAC0-F8A1135CD7FA}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {92A2A492-FB82-C312-DAC0-F8A1135CD7FA}.Release|x64.ActiveCfg = Release|x64
+ {92A2A492-FB82-C312-DAC0-F8A1135CD7FA}.Release|x64.Build.0 = Release|x64
+ {92A2A492-FB82-C312-DAC0-F8A1135CD7FA}.Release|x86.ActiveCfg = Release|Win32
+ {92A2A492-FB82-C312-DAC0-F8A1135CD7FA}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {A3E8816F-B955-45FA-938B-C6987C2BDC45}
+ EndGlobalSection
+EndGlobal
diff --git a/dll/windivert.vcxproj b/dll/windivert.vcxproj
index caab8747..8ce8817a 100644
--- a/dll/windivert.vcxproj
+++ b/dll/windivert.vcxproj
@@ -35,50 +35,58 @@
-->
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
-
-
- false
- MinSpace
- true
- Default
- false
- ..\include
-
-
-
- WinDivert
- WinDivert
-
-
-
- v140
- true
- DynamicLibrary
-
-
-
-
- false
- WIN32;NDEBUG;_WINDOWS;_USRDLL;DLL_EXPORTS;%(PreprocessorDefinitions)
- WIN32;NDEBUG;_WINDOWS;_USRDLL;DLL_EXPORTS;%(PreprocessorDefinitions)
-
-
- WinDivertDllEntry
- %(AdditionalDependencies)
- true
- windivert.def
- WinDivert.lib
-
-
-
-
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+
+ false
+ MinSpace
+ true
+ Default
+ false
+ ..\include
+
+
+
+ WinDivert
+ WinDivert
+ {92A2A492-FB82-C312-DAC0-F8A1135CD7FA}
+ 10.0.26100.0
+ .NET 9.0
+ net9.0
+ 10.0.26100.0
+
+
+
+ v143
+ true
+ DynamicLibrary
+
+
+ false
+
+
+
+
+ false
+ WIN32;NDEBUG;_WINDOWS;_USRDLL;DLL_EXPORTS;%(PreprocessorDefinitions)
+ WIN32;NDEBUG;_WINDOWS;_USRDLL;DLL_EXPORTS;%(PreprocessorDefinitions)
+
+
+ WinDivertDllEntry
+ %(AdditionalDependencies)
+ true
+ windivert.def
+ $(Platform)\$(Configuration)\WinDivert.lib
+
+
+
+
\ No newline at end of file
diff --git a/dll/windivert.vcxproj.user b/dll/windivert.vcxproj.user
new file mode 100644
index 00000000..88a55094
--- /dev/null
+++ b/dll/windivert.vcxproj.user
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/dll/windivert_helper.c b/dll/windivert_helper.c
index 0bba1543..c889e7db 100644
--- a/dll/windivert_helper.c
+++ b/dll/windivert_helper.c
@@ -267,7 +267,7 @@ static void WinDivertFormatExpr(PWINDIVERT_STREAM stream, PEXPR expr,
/*
* Parse an IPv4 address.
*/
-BOOL WinDivertHelperParseIPv4Address(const char *str, UINT32 *addr_ptr)
+BOOL WinDivertHelperParseIPv4Address(const char* str, UINT32* addr_ptr)
{
UINT32 addr = 0;
UINT32 part, i;
@@ -280,7 +280,7 @@ BOOL WinDivertHelperParseIPv4Address(const char *str, UINT32 *addr_ptr)
for (i = 0; i < 4; i++)
{
- if (!WinDivertAToI(str, (char **)&str, &part, 1) || part > UINT8_MAX)
+ if (!WinDivertAToI(str, (char**)&str, &part, 1) || part > UINT8_MAX)
{
SetLastError(ERROR_INVALID_PARAMETER);
return FALSE;
@@ -290,7 +290,7 @@ BOOL WinDivertHelperParseIPv4Address(const char *str, UINT32 *addr_ptr)
SetLastError(ERROR_INVALID_PARAMETER);
return FALSE;
}
- addr |= part << (8*(3-i));
+ addr |= part << (8 * (3 - i));
}
if (*str != '\0')
{
@@ -307,10 +307,10 @@ BOOL WinDivertHelperParseIPv4Address(const char *str, UINT32 *addr_ptr)
/*
* Parse an IPv6 address.
*/
-BOOL WinDivertHelperParseIPv6Address(const char *str, UINT32 *addr_ptr)
+BOOL WinDivertHelperParseIPv6Address(const char* str, UINT32* addr_ptr)
{
- UINT16 laddr[8] = {0};
- UINT16 raddr[8] = {0};
+ UINT16 laddr[8] = { 0 };
+ UINT16 raddr[8] = { 0 };
UINT32 addr[4];
BOOL left = TRUE, ipv4 = FALSE;
UINT32 ipv4_addr;
@@ -405,8 +405,8 @@ BOOL WinDivertHelperParseIPv6Address(const char *str, UINT32 *addr_ptr)
{
k = 2 * i + j;
l = k + 1;
- k = (k >= 8? k - 8: k);
- l = (l >= 8? l - 8: l);
+ k = (k >= 8 ? k - 8 : k);
+ l = (l >= 8 ? l - 8 : l);
addr[3 - i] =
(UINT32)laddr[2 * i + 1] |
(UINT32)laddr[2 * i] << 16 |
@@ -417,7 +417,7 @@ BOOL WinDivertHelperParseIPv6Address(const char *str, UINT32 *addr_ptr)
{
// Validate IPv4 address
if (addr[3] != 0 || addr[2] != 0 || addr[0] != 0 ||
- (addr[1] != 0x0000FFFF && addr[1] != 0))
+ (addr[1] != 0x0000FFFF && addr[1] != 0))
{
SetLastError(ERROR_INVALID_PARAMETER);
return FALSE;
diff --git a/dll/x64/Release/WinDivert.dll b/dll/x64/Release/WinDivert.dll
new file mode 100644
index 00000000..359febf5
Binary files /dev/null and b/dll/x64/Release/WinDivert.dll differ
diff --git a/dll/x64/Release/WinDivert.exp b/dll/x64/Release/WinDivert.exp
new file mode 100644
index 00000000..55b063b8
Binary files /dev/null and b/dll/x64/Release/WinDivert.exp differ
diff --git a/dll/x64/Release/WinDivert.lib b/dll/x64/Release/WinDivert.lib
new file mode 100644
index 00000000..325f9bf7
Binary files /dev/null and b/dll/x64/Release/WinDivert.lib differ
diff --git a/dll/x64/Release/WinDivert.pdb b/dll/x64/Release/WinDivert.pdb
new file mode 100644
index 00000000..dec47ccf
Binary files /dev/null and b/dll/x64/Release/WinDivert.pdb differ
diff --git a/dll/x64/Release/WinDivert.tlog/CL.command.1.tlog b/dll/x64/Release/WinDivert.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..e418fed7
Binary files /dev/null and b/dll/x64/Release/WinDivert.tlog/CL.command.1.tlog differ
diff --git a/dll/x64/Release/WinDivert.tlog/CL.read.1.tlog b/dll/x64/Release/WinDivert.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..daa10969
Binary files /dev/null and b/dll/x64/Release/WinDivert.tlog/CL.read.1.tlog differ
diff --git a/dll/x64/Release/WinDivert.tlog/CL.write.1.tlog b/dll/x64/Release/WinDivert.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..f37c1272
Binary files /dev/null and b/dll/x64/Release/WinDivert.tlog/CL.write.1.tlog differ
diff --git a/dll/x64/Release/WinDivert.tlog/WinDivert.lastbuildstate b/dll/x64/Release/WinDivert.tlog/WinDivert.lastbuildstate
new file mode 100644
index 00000000..fa4c580d
--- /dev/null
+++ b/dll/x64/Release/WinDivert.tlog/WinDivert.lastbuildstate
@@ -0,0 +1,2 @@
+#TargetFrameworkVersion=:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1
+Release|x64|C:\Users\kujax\OneDrive\Desktop\WinDivert-master\dll\|
diff --git a/dll/x64/Release/WinDivert.tlog/WinDivert.write.1u.tlog b/dll/x64/Release/WinDivert.tlog/WinDivert.write.1u.tlog
new file mode 100644
index 00000000..4ddec56a
Binary files /dev/null and b/dll/x64/Release/WinDivert.tlog/WinDivert.write.1u.tlog differ
diff --git a/dll/x64/Release/WinDivert.tlog/link.command.1.tlog b/dll/x64/Release/WinDivert.tlog/link.command.1.tlog
new file mode 100644
index 00000000..ad876246
Binary files /dev/null and b/dll/x64/Release/WinDivert.tlog/link.command.1.tlog differ
diff --git a/dll/x64/Release/WinDivert.tlog/link.read.1.tlog b/dll/x64/Release/WinDivert.tlog/link.read.1.tlog
new file mode 100644
index 00000000..5cc2d5b3
Binary files /dev/null and b/dll/x64/Release/WinDivert.tlog/link.read.1.tlog differ
diff --git a/dll/x64/Release/WinDivert.tlog/link.write.1.tlog b/dll/x64/Release/WinDivert.tlog/link.write.1.tlog
new file mode 100644
index 00000000..b93a34ff
Binary files /dev/null and b/dll/x64/Release/WinDivert.tlog/link.write.1.tlog differ
diff --git a/dll/x64/Release/vc140.idb b/dll/x64/Release/vc140.idb
new file mode 100644
index 00000000..e1daaa0e
Binary files /dev/null and b/dll/x64/Release/vc140.idb differ
diff --git a/dll/x64/Release/vc140.pdb b/dll/x64/Release/vc140.pdb
new file mode 100644
index 00000000..7ba381f3
Binary files /dev/null and b/dll/x64/Release/vc140.pdb differ
diff --git a/dll/x64/Release/windivert.obj b/dll/x64/Release/windivert.obj
new file mode 100644
index 00000000..9326179e
Binary files /dev/null and b/dll/x64/Release/windivert.obj differ
diff --git a/examples/flowtrack/.vs/flowtrack/FileContentIndex/488aaea6-ddca-40b2-baa2-d3e091092662.vsidx b/examples/flowtrack/.vs/flowtrack/FileContentIndex/488aaea6-ddca-40b2-baa2-d3e091092662.vsidx
new file mode 100644
index 00000000..c70942cf
Binary files /dev/null and b/examples/flowtrack/.vs/flowtrack/FileContentIndex/488aaea6-ddca-40b2-baa2-d3e091092662.vsidx differ
diff --git a/examples/flowtrack/.vs/flowtrack/v17/.suo b/examples/flowtrack/.vs/flowtrack/v17/.suo
new file mode 100644
index 00000000..8b077389
Binary files /dev/null and b/examples/flowtrack/.vs/flowtrack/v17/.suo differ
diff --git a/examples/flowtrack/.vs/flowtrack/v17/Browse.VC.db b/examples/flowtrack/.vs/flowtrack/v17/Browse.VC.db
new file mode 100644
index 00000000..e701410c
Binary files /dev/null and b/examples/flowtrack/.vs/flowtrack/v17/Browse.VC.db differ
diff --git a/examples/flowtrack/.vs/flowtrack/v17/DocumentLayout.backup.json b/examples/flowtrack/.vs/flowtrack/v17/DocumentLayout.backup.json
new file mode 100644
index 00000000..ba50aaa8
--- /dev/null
+++ b/examples/flowtrack/.vs/flowtrack/v17/DocumentLayout.backup.json
@@ -0,0 +1,12 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "E:\\Unity\\WinDivert\\examples\\flowtrack\\",
+ "Documents": [],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/flowtrack/.vs/flowtrack/v17/DocumentLayout.json b/examples/flowtrack/.vs/flowtrack/v17/DocumentLayout.json
new file mode 100644
index 00000000..ba50aaa8
--- /dev/null
+++ b/examples/flowtrack/.vs/flowtrack/v17/DocumentLayout.json
@@ -0,0 +1,12 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "E:\\Unity\\WinDivert\\examples\\flowtrack\\",
+ "Documents": [],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/flowtrack/.vs/flowtrack/v17/Solution.VC.db b/examples/flowtrack/.vs/flowtrack/v17/Solution.VC.db
new file mode 100644
index 00000000..ef345c5c
Binary files /dev/null and b/examples/flowtrack/.vs/flowtrack/v17/Solution.VC.db differ
diff --git a/examples/flowtrack/Release/flowtrack.obj b/examples/flowtrack/Release/flowtrack.obj
new file mode 100644
index 00000000..7727525a
Binary files /dev/null and b/examples/flowtrack/Release/flowtrack.obj differ
diff --git a/examples/flowtrack/Release/flowtrack.tlog/CL.command.1.tlog b/examples/flowtrack/Release/flowtrack.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..40527653
Binary files /dev/null and b/examples/flowtrack/Release/flowtrack.tlog/CL.command.1.tlog differ
diff --git a/examples/flowtrack/Release/flowtrack.tlog/CL.read.1.tlog b/examples/flowtrack/Release/flowtrack.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..d84578e8
Binary files /dev/null and b/examples/flowtrack/Release/flowtrack.tlog/CL.read.1.tlog differ
diff --git a/examples/flowtrack/Release/flowtrack.tlog/CL.write.1.tlog b/examples/flowtrack/Release/flowtrack.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..5936c973
Binary files /dev/null and b/examples/flowtrack/Release/flowtrack.tlog/CL.write.1.tlog differ
diff --git a/examples/flowtrack/Release/flowtrack.tlog/flowtrack.lastbuildstate b/examples/flowtrack/Release/flowtrack.tlog/flowtrack.lastbuildstate
new file mode 100644
index 00000000..b0e560ad
--- /dev/null
+++ b/examples/flowtrack/Release/flowtrack.tlog/flowtrack.lastbuildstate
@@ -0,0 +1,2 @@
+#TargetFrameworkVersion=:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1
+Release|Win32|C:\Users\kujax\OneDrive\Desktop\WinDivert-master\examples\flowtrack\|
diff --git a/examples/flowtrack/Release/flowtrack.tlog/link.command.1.tlog b/examples/flowtrack/Release/flowtrack.tlog/link.command.1.tlog
new file mode 100644
index 00000000..6f41bf7e
Binary files /dev/null and b/examples/flowtrack/Release/flowtrack.tlog/link.command.1.tlog differ
diff --git a/examples/flowtrack/Release/flowtrack.tlog/link.read.1.tlog b/examples/flowtrack/Release/flowtrack.tlog/link.read.1.tlog
new file mode 100644
index 00000000..c144c569
Binary files /dev/null and b/examples/flowtrack/Release/flowtrack.tlog/link.read.1.tlog differ
diff --git a/examples/flowtrack/Release/flowtrack.tlog/link.write.1.tlog b/examples/flowtrack/Release/flowtrack.tlog/link.write.1.tlog
new file mode 100644
index 00000000..272647f3
Binary files /dev/null and b/examples/flowtrack/Release/flowtrack.tlog/link.write.1.tlog differ
diff --git a/examples/flowtrack/Release/vc140.pdb b/examples/flowtrack/Release/vc140.pdb
new file mode 100644
index 00000000..63e1bf93
Binary files /dev/null and b/examples/flowtrack/Release/vc140.pdb differ
diff --git a/examples/flowtrack/flowtrack.sln b/examples/flowtrack/flowtrack.sln
new file mode 100644
index 00000000..a8cba978
--- /dev/null
+++ b/examples/flowtrack/flowtrack.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.13.35825.156 d17.13
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flowtrack", "flowtrack.vcxproj", "{BD005775-4504-21A4-2FE7-DA88E71A27CE}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {BD005775-4504-21A4-2FE7-DA88E71A27CE}.Release|x64.ActiveCfg = Release|x64
+ {BD005775-4504-21A4-2FE7-DA88E71A27CE}.Release|x64.Build.0 = Release|x64
+ {BD005775-4504-21A4-2FE7-DA88E71A27CE}.Release|x86.ActiveCfg = Release|Win32
+ {BD005775-4504-21A4-2FE7-DA88E71A27CE}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {14F19448-5E16-494B-89E7-4BFFA6860F19}
+ EndGlobalSection
+EndGlobal
diff --git a/examples/flowtrack/flowtrack.vcxproj b/examples/flowtrack/flowtrack.vcxproj
index a2e2b53c..c4478f7c 100644
--- a/examples/flowtrack/flowtrack.vcxproj
+++ b/examples/flowtrack/flowtrack.vcxproj
@@ -35,39 +35,41 @@
-->
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
-
-
- false
- MinSpace
- Default
- ..\..\include
-
-
-
- flowtrack
- flowtrack
-
-
-
- v140
- Application
-
-
-
-
- ..\..\install\MSVC\i386\WinDivert.lib;shlwapi.lib;%(AdditionalDependencies)
- ..\..\install\MSVC\amd64\WinDivert.lib;shlwapi.lib;%(AdditionalDependencies)
-
-
-
-
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+
+ false
+ MinSpace
+ Default
+ ..\..\include
+
+
+
+ flowtrack
+ flowtrack
+ {BD005775-4504-21A4-2FE7-DA88E71A27CE}
+ 10.0.26100.0
+
+
+
+ v143
+ Application
+
+
+
+
+ ..\..\install\MSVC\i386\WinDivert.lib;shlwapi.lib;%(AdditionalDependencies)
+ ..\..\install\MSVC\amd64\WinDivert.lib;shlwapi.lib;%(AdditionalDependencies)
+
+
+
+
\ No newline at end of file
diff --git a/examples/flowtrack/flowtrack.vcxproj.user b/examples/flowtrack/flowtrack.vcxproj.user
new file mode 100644
index 00000000..88a55094
--- /dev/null
+++ b/examples/flowtrack/flowtrack.vcxproj.user
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/examples/flowtrack/flowtrack/Release/flowtrack.exe.recipe b/examples/flowtrack/flowtrack/Release/flowtrack.exe.recipe
new file mode 100644
index 00000000..0e17f971
--- /dev/null
+++ b/examples/flowtrack/flowtrack/Release/flowtrack.exe.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ C:\WinDivert\install\MSVC\i386\flowtrack.exe
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/flowtrack/flowtrack/Release/flowtrack.obj b/examples/flowtrack/flowtrack/Release/flowtrack.obj
new file mode 100644
index 00000000..6040166e
Binary files /dev/null and b/examples/flowtrack/flowtrack/Release/flowtrack.obj differ
diff --git a/examples/flowtrack/flowtrack/Release/flowtrack.tlog/CL.command.1.tlog b/examples/flowtrack/flowtrack/Release/flowtrack.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..02d8ec09
Binary files /dev/null and b/examples/flowtrack/flowtrack/Release/flowtrack.tlog/CL.command.1.tlog differ
diff --git a/examples/flowtrack/flowtrack/Release/flowtrack.tlog/CL.read.1.tlog b/examples/flowtrack/flowtrack/Release/flowtrack.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..ceaa8ae5
Binary files /dev/null and b/examples/flowtrack/flowtrack/Release/flowtrack.tlog/CL.read.1.tlog differ
diff --git a/examples/flowtrack/flowtrack/Release/flowtrack.tlog/CL.write.1.tlog b/examples/flowtrack/flowtrack/Release/flowtrack.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..adfbe781
Binary files /dev/null and b/examples/flowtrack/flowtrack/Release/flowtrack.tlog/CL.write.1.tlog differ
diff --git a/examples/flowtrack/flowtrack/Release/flowtrack.tlog/Cl.items.tlog b/examples/flowtrack/flowtrack/Release/flowtrack.tlog/Cl.items.tlog
new file mode 100644
index 00000000..dbd1aaa3
--- /dev/null
+++ b/examples/flowtrack/flowtrack/Release/flowtrack.tlog/Cl.items.tlog
@@ -0,0 +1 @@
+C:\WinDivert\examples\flowtrack\flowtrack.c;C:\WinDivert\examples\flowtrack\flowtrack\Release\flowtrack.obj
diff --git a/examples/flowtrack/flowtrack/Release/flowtrack.tlog/flowtrack.lastbuildstate b/examples/flowtrack/flowtrack/Release/flowtrack.tlog/flowtrack.lastbuildstate
new file mode 100644
index 00000000..0431cfe7
--- /dev/null
+++ b/examples/flowtrack/flowtrack/Release/flowtrack.tlog/flowtrack.lastbuildstate
@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.26100.0:
+Release|Win32|C:\WinDivert\examples\flowtrack\|
diff --git a/examples/flowtrack/flowtrack/Release/flowtrack.tlog/link.command.1.tlog b/examples/flowtrack/flowtrack/Release/flowtrack.tlog/link.command.1.tlog
new file mode 100644
index 00000000..0b6cb701
Binary files /dev/null and b/examples/flowtrack/flowtrack/Release/flowtrack.tlog/link.command.1.tlog differ
diff --git a/examples/flowtrack/flowtrack/Release/flowtrack.tlog/link.read.1.tlog b/examples/flowtrack/flowtrack/Release/flowtrack.tlog/link.read.1.tlog
new file mode 100644
index 00000000..749b49d3
Binary files /dev/null and b/examples/flowtrack/flowtrack/Release/flowtrack.tlog/link.read.1.tlog differ
diff --git a/examples/flowtrack/flowtrack/Release/flowtrack.tlog/link.secondary.1.tlog b/examples/flowtrack/flowtrack/Release/flowtrack.tlog/link.secondary.1.tlog
new file mode 100644
index 00000000..62703c62
--- /dev/null
+++ b/examples/flowtrack/flowtrack/Release/flowtrack.tlog/link.secondary.1.tlog
@@ -0,0 +1,2 @@
+^C:\WINDIVERT\EXAMPLES\FLOWTRACK\FLOWTRACK\RELEASE\FLOWTRACK.OBJ
+C:\WinDivert\install\MSVC\i386\flowtrack.ILK
diff --git a/examples/flowtrack/flowtrack/Release/flowtrack.tlog/link.write.1.tlog b/examples/flowtrack/flowtrack/Release/flowtrack.tlog/link.write.1.tlog
new file mode 100644
index 00000000..718f5cc0
Binary files /dev/null and b/examples/flowtrack/flowtrack/Release/flowtrack.tlog/link.write.1.tlog differ
diff --git a/examples/flowtrack/flowtrack/Release/vc143.pdb b/examples/flowtrack/flowtrack/Release/vc143.pdb
new file mode 100644
index 00000000..55a22857
Binary files /dev/null and b/examples/flowtrack/flowtrack/Release/vc143.pdb differ
diff --git a/examples/flowtrack/flowtrack/x64/Release/flowtrack.exe.recipe b/examples/flowtrack/flowtrack/x64/Release/flowtrack.exe.recipe
new file mode 100644
index 00000000..051707bb
--- /dev/null
+++ b/examples/flowtrack/flowtrack/x64/Release/flowtrack.exe.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ C:\WinDivert\install\MSVC\amd64\flowtrack.exe
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/flowtrack/flowtrack/x64/Release/flowtrack.obj b/examples/flowtrack/flowtrack/x64/Release/flowtrack.obj
new file mode 100644
index 00000000..8d040de8
Binary files /dev/null and b/examples/flowtrack/flowtrack/x64/Release/flowtrack.obj differ
diff --git a/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/CL.command.1.tlog b/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..18eaa36f
Binary files /dev/null and b/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/CL.command.1.tlog differ
diff --git a/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/CL.read.1.tlog b/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..d8cec255
Binary files /dev/null and b/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/CL.read.1.tlog differ
diff --git a/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/CL.write.1.tlog b/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..e721d3c0
Binary files /dev/null and b/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/CL.write.1.tlog differ
diff --git a/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/Cl.items.tlog b/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/Cl.items.tlog
new file mode 100644
index 00000000..c7f17bd5
--- /dev/null
+++ b/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/Cl.items.tlog
@@ -0,0 +1 @@
+C:\WinDivert\examples\flowtrack\flowtrack.c;C:\WinDivert\examples\flowtrack\flowtrack\x64\Release\flowtrack.obj
diff --git a/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/flowtrack.lastbuildstate b/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/flowtrack.lastbuildstate
new file mode 100644
index 00000000..8e9183cd
--- /dev/null
+++ b/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/flowtrack.lastbuildstate
@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.26100.0:
+Release|x64|C:\WinDivert\examples\flowtrack\|
diff --git a/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/link.command.1.tlog b/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/link.command.1.tlog
new file mode 100644
index 00000000..f7c03b21
Binary files /dev/null and b/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/link.command.1.tlog differ
diff --git a/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/link.read.1.tlog b/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/link.read.1.tlog
new file mode 100644
index 00000000..96a6139a
Binary files /dev/null and b/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/link.read.1.tlog differ
diff --git a/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/link.secondary.1.tlog b/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/link.secondary.1.tlog
new file mode 100644
index 00000000..9fc25dd5
--- /dev/null
+++ b/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/link.secondary.1.tlog
@@ -0,0 +1,2 @@
+^C:\WINDIVERT\EXAMPLES\FLOWTRACK\FLOWTRACK\X64\RELEASE\FLOWTRACK.OBJ
+C:\WinDivert\install\MSVC\amd64\flowtrack.ILK
diff --git a/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/link.write.1.tlog b/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/link.write.1.tlog
new file mode 100644
index 00000000..4596ace6
Binary files /dev/null and b/examples/flowtrack/flowtrack/x64/Release/flowtrack.tlog/link.write.1.tlog differ
diff --git a/examples/flowtrack/flowtrack/x64/Release/vc143.pdb b/examples/flowtrack/flowtrack/x64/Release/vc143.pdb
new file mode 100644
index 00000000..71e012f6
Binary files /dev/null and b/examples/flowtrack/flowtrack/x64/Release/vc143.pdb differ
diff --git a/examples/flowtrack/x64/Release/flowtrack.obj b/examples/flowtrack/x64/Release/flowtrack.obj
new file mode 100644
index 00000000..a2f60c2c
Binary files /dev/null and b/examples/flowtrack/x64/Release/flowtrack.obj differ
diff --git a/examples/flowtrack/x64/Release/flowtrack.tlog/CL.command.1.tlog b/examples/flowtrack/x64/Release/flowtrack.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..c7bc5bd5
Binary files /dev/null and b/examples/flowtrack/x64/Release/flowtrack.tlog/CL.command.1.tlog differ
diff --git a/examples/flowtrack/x64/Release/flowtrack.tlog/CL.read.1.tlog b/examples/flowtrack/x64/Release/flowtrack.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..8793b608
Binary files /dev/null and b/examples/flowtrack/x64/Release/flowtrack.tlog/CL.read.1.tlog differ
diff --git a/examples/flowtrack/x64/Release/flowtrack.tlog/CL.write.1.tlog b/examples/flowtrack/x64/Release/flowtrack.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..47f350fb
Binary files /dev/null and b/examples/flowtrack/x64/Release/flowtrack.tlog/CL.write.1.tlog differ
diff --git a/examples/flowtrack/x64/Release/flowtrack.tlog/flowtrack.lastbuildstate b/examples/flowtrack/x64/Release/flowtrack.tlog/flowtrack.lastbuildstate
new file mode 100644
index 00000000..a3226257
--- /dev/null
+++ b/examples/flowtrack/x64/Release/flowtrack.tlog/flowtrack.lastbuildstate
@@ -0,0 +1,2 @@
+#TargetFrameworkVersion=:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1
+Release|x64|C:\Users\kujax\OneDrive\Desktop\WinDivert-master\examples\flowtrack\|
diff --git a/examples/flowtrack/x64/Release/flowtrack.tlog/link.command.1.tlog b/examples/flowtrack/x64/Release/flowtrack.tlog/link.command.1.tlog
new file mode 100644
index 00000000..8d333f92
Binary files /dev/null and b/examples/flowtrack/x64/Release/flowtrack.tlog/link.command.1.tlog differ
diff --git a/examples/flowtrack/x64/Release/flowtrack.tlog/link.read.1.tlog b/examples/flowtrack/x64/Release/flowtrack.tlog/link.read.1.tlog
new file mode 100644
index 00000000..42da8653
Binary files /dev/null and b/examples/flowtrack/x64/Release/flowtrack.tlog/link.read.1.tlog differ
diff --git a/examples/flowtrack/x64/Release/flowtrack.tlog/link.write.1.tlog b/examples/flowtrack/x64/Release/flowtrack.tlog/link.write.1.tlog
new file mode 100644
index 00000000..0d60e171
Binary files /dev/null and b/examples/flowtrack/x64/Release/flowtrack.tlog/link.write.1.tlog differ
diff --git a/examples/flowtrack/x64/Release/vc140.pdb b/examples/flowtrack/x64/Release/vc140.pdb
new file mode 100644
index 00000000..6592b90e
Binary files /dev/null and b/examples/flowtrack/x64/Release/vc140.pdb differ
diff --git a/examples/netdump/.vs/netdump/CopilotIndices/17.13.433.20974/CodeChunks.db b/examples/netdump/.vs/netdump/CopilotIndices/17.13.433.20974/CodeChunks.db
new file mode 100644
index 00000000..e13756bc
Binary files /dev/null and b/examples/netdump/.vs/netdump/CopilotIndices/17.13.433.20974/CodeChunks.db differ
diff --git a/examples/netdump/.vs/netdump/CopilotIndices/17.13.433.20974/SemanticSymbols.db b/examples/netdump/.vs/netdump/CopilotIndices/17.13.433.20974/SemanticSymbols.db
new file mode 100644
index 00000000..dfc4cb5b
Binary files /dev/null and b/examples/netdump/.vs/netdump/CopilotIndices/17.13.433.20974/SemanticSymbols.db differ
diff --git a/examples/netdump/.vs/netdump/FileContentIndex/0fb4d15a-93eb-47a0-bb75-08af111740c7.vsidx b/examples/netdump/.vs/netdump/FileContentIndex/0fb4d15a-93eb-47a0-bb75-08af111740c7.vsidx
new file mode 100644
index 00000000..da03c81c
Binary files /dev/null and b/examples/netdump/.vs/netdump/FileContentIndex/0fb4d15a-93eb-47a0-bb75-08af111740c7.vsidx differ
diff --git a/examples/netdump/.vs/netdump/FileContentIndex/50a9751b-fcd3-49a0-a7b4-d24058b134b0.vsidx b/examples/netdump/.vs/netdump/FileContentIndex/50a9751b-fcd3-49a0-a7b4-d24058b134b0.vsidx
new file mode 100644
index 00000000..70aef67a
Binary files /dev/null and b/examples/netdump/.vs/netdump/FileContentIndex/50a9751b-fcd3-49a0-a7b4-d24058b134b0.vsidx differ
diff --git a/examples/netdump/.vs/netdump/FileContentIndex/5d131afe-33fe-45c3-bd5c-35552db39f2c.vsidx b/examples/netdump/.vs/netdump/FileContentIndex/5d131afe-33fe-45c3-bd5c-35552db39f2c.vsidx
new file mode 100644
index 00000000..947f60ea
Binary files /dev/null and b/examples/netdump/.vs/netdump/FileContentIndex/5d131afe-33fe-45c3-bd5c-35552db39f2c.vsidx differ
diff --git a/examples/netdump/.vs/netdump/v17/.suo b/examples/netdump/.vs/netdump/v17/.suo
new file mode 100644
index 00000000..0b3d07e4
Binary files /dev/null and b/examples/netdump/.vs/netdump/v17/.suo differ
diff --git a/examples/netdump/.vs/netdump/v17/Browse.VC.db b/examples/netdump/.vs/netdump/v17/Browse.VC.db
new file mode 100644
index 00000000..31864649
Binary files /dev/null and b/examples/netdump/.vs/netdump/v17/Browse.VC.db differ
diff --git a/examples/netdump/.vs/netdump/v17/DocumentLayout.backup.json b/examples/netdump/.vs/netdump/v17/DocumentLayout.backup.json
new file mode 100644
index 00000000..cc82b582
--- /dev/null
+++ b/examples/netdump/.vs/netdump/v17/DocumentLayout.backup.json
@@ -0,0 +1,37 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "C:\\WinDivert\\examples\\netdump\\",
+ "Documents": [
+ {
+ "AbsoluteMoniker": "D:0:0:{DC384335-F852-1015-B877-FF6B795836B8}|netdump.vcxproj|C:\\WinDivert\\examples\\netdump\\netdump.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
+ "RelativeMoniker": "D:0:0:{DC384335-F852-1015-B877-FF6B795836B8}|netdump.vcxproj|solutionrelative:netdump.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+ }
+ ],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": [
+ {
+ "DockedWidth": 200,
+ "SelectedChildIndex": 0,
+ "Children": [
+ {
+ "$type": "Document",
+ "DocumentIndex": 0,
+ "Title": "netdump.c",
+ "DocumentMoniker": "C:\\WinDivert\\examples\\netdump\\netdump.c",
+ "RelativeDocumentMoniker": "netdump.c",
+ "ToolTip": "C:\\WinDivert\\examples\\netdump\\netdump.c",
+ "RelativeToolTip": "netdump.c",
+ "ViewState": "AgIAAGoAAAAAAAAAAAAUwHIAAABMAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|",
+ "WhenOpened": "2025-03-11T07:41:45.713Z",
+ "EditorCaption": ""
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/netdump/.vs/netdump/v17/DocumentLayout.json b/examples/netdump/.vs/netdump/v17/DocumentLayout.json
new file mode 100644
index 00000000..cc82b582
--- /dev/null
+++ b/examples/netdump/.vs/netdump/v17/DocumentLayout.json
@@ -0,0 +1,37 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "C:\\WinDivert\\examples\\netdump\\",
+ "Documents": [
+ {
+ "AbsoluteMoniker": "D:0:0:{DC384335-F852-1015-B877-FF6B795836B8}|netdump.vcxproj|C:\\WinDivert\\examples\\netdump\\netdump.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
+ "RelativeMoniker": "D:0:0:{DC384335-F852-1015-B877-FF6B795836B8}|netdump.vcxproj|solutionrelative:netdump.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+ }
+ ],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": [
+ {
+ "DockedWidth": 200,
+ "SelectedChildIndex": 0,
+ "Children": [
+ {
+ "$type": "Document",
+ "DocumentIndex": 0,
+ "Title": "netdump.c",
+ "DocumentMoniker": "C:\\WinDivert\\examples\\netdump\\netdump.c",
+ "RelativeDocumentMoniker": "netdump.c",
+ "ToolTip": "C:\\WinDivert\\examples\\netdump\\netdump.c",
+ "RelativeToolTip": "netdump.c",
+ "ViewState": "AgIAAGoAAAAAAAAAAAAUwHIAAABMAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|",
+ "WhenOpened": "2025-03-11T07:41:45.713Z",
+ "EditorCaption": ""
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/netdump/.vs/netdump/v17/Solution.VC.db b/examples/netdump/.vs/netdump/v17/Solution.VC.db
new file mode 100644
index 00000000..35661c26
Binary files /dev/null and b/examples/netdump/.vs/netdump/v17/Solution.VC.db differ
diff --git a/examples/netdump/.vs/netdump/v17/ipch/AutoPCH/e87814d2778369dd/NETDUMP.ipch b/examples/netdump/.vs/netdump/v17/ipch/AutoPCH/e87814d2778369dd/NETDUMP.ipch
new file mode 100644
index 00000000..7c7e1461
Binary files /dev/null and b/examples/netdump/.vs/netdump/v17/ipch/AutoPCH/e87814d2778369dd/NETDUMP.ipch differ
diff --git a/examples/netdump/Release/netdump.obj b/examples/netdump/Release/netdump.obj
new file mode 100644
index 00000000..5bf7276c
Binary files /dev/null and b/examples/netdump/Release/netdump.obj differ
diff --git a/examples/netdump/Release/netdump.tlog/CL.command.1.tlog b/examples/netdump/Release/netdump.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..864f6b6a
Binary files /dev/null and b/examples/netdump/Release/netdump.tlog/CL.command.1.tlog differ
diff --git a/examples/netdump/Release/netdump.tlog/CL.read.1.tlog b/examples/netdump/Release/netdump.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..3ab07f87
Binary files /dev/null and b/examples/netdump/Release/netdump.tlog/CL.read.1.tlog differ
diff --git a/examples/netdump/Release/netdump.tlog/CL.write.1.tlog b/examples/netdump/Release/netdump.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..a046c153
Binary files /dev/null and b/examples/netdump/Release/netdump.tlog/CL.write.1.tlog differ
diff --git a/examples/netdump/Release/netdump.tlog/link.command.1.tlog b/examples/netdump/Release/netdump.tlog/link.command.1.tlog
new file mode 100644
index 00000000..00cb251d
Binary files /dev/null and b/examples/netdump/Release/netdump.tlog/link.command.1.tlog differ
diff --git a/examples/netdump/Release/netdump.tlog/link.read.1.tlog b/examples/netdump/Release/netdump.tlog/link.read.1.tlog
new file mode 100644
index 00000000..189f4612
Binary files /dev/null and b/examples/netdump/Release/netdump.tlog/link.read.1.tlog differ
diff --git a/examples/netdump/Release/netdump.tlog/link.write.1.tlog b/examples/netdump/Release/netdump.tlog/link.write.1.tlog
new file mode 100644
index 00000000..3de3d9bf
Binary files /dev/null and b/examples/netdump/Release/netdump.tlog/link.write.1.tlog differ
diff --git a/examples/netdump/Release/netdump.tlog/netdump.lastbuildstate b/examples/netdump/Release/netdump.tlog/netdump.lastbuildstate
new file mode 100644
index 00000000..3457e4f4
--- /dev/null
+++ b/examples/netdump/Release/netdump.tlog/netdump.lastbuildstate
@@ -0,0 +1,2 @@
+#TargetFrameworkVersion=:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1
+Release|Win32|C:\Users\kujax\OneDrive\Desktop\WinDivert-master\examples\netdump\|
diff --git a/examples/netdump/Release/vc140.pdb b/examples/netdump/Release/vc140.pdb
new file mode 100644
index 00000000..87f328a0
Binary files /dev/null and b/examples/netdump/Release/vc140.pdb differ
diff --git a/examples/netdump/netdump.c b/examples/netdump/netdump.c
index 47db9ba2..0531f8a9 100644
--- a/examples/netdump/netdump.c
+++ b/examples/netdump/netdump.c
@@ -118,7 +118,7 @@ int __cdecl main(int argc, char **argv)
}
// Max-out the packet queue:
- if (!WinDivertSetParam(handle, WINDIVERT_PARAM_QUEUE_LENGTH,
+ if (!WinDivertSetParam(handle, WINDIVERT_PARAM_QUEUE_LEN,
WINDIVERT_PARAM_QUEUE_LENGTH_MAX))
{
fprintf(stderr, "error: failed to set packet queue length (%d)\n",
diff --git a/examples/netdump/netdump.sln b/examples/netdump/netdump.sln
new file mode 100644
index 00000000..bc1828b0
--- /dev/null
+++ b/examples/netdump/netdump.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.13.35825.156 d17.13
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "netdump", "netdump.vcxproj", "{DC384335-F852-1015-B877-FF6B795836B8}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {DC384335-F852-1015-B877-FF6B795836B8}.Release|x64.ActiveCfg = Release|x64
+ {DC384335-F852-1015-B877-FF6B795836B8}.Release|x64.Build.0 = Release|x64
+ {DC384335-F852-1015-B877-FF6B795836B8}.Release|x86.ActiveCfg = Release|Win32
+ {DC384335-F852-1015-B877-FF6B795836B8}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {D83CB085-1BD8-451E-9501-6890CA503CCE}
+ EndGlobalSection
+EndGlobal
diff --git a/examples/netdump/netdump.vcxproj b/examples/netdump/netdump.vcxproj
index 1a90ec64..6cfc0cca 100644
--- a/examples/netdump/netdump.vcxproj
+++ b/examples/netdump/netdump.vcxproj
@@ -35,39 +35,41 @@
-->
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
-
-
- false
- MinSpace
- Default
- ..\..\include
-
-
-
- netdump
- netdump
-
-
-
- v140
- Application
-
-
-
-
- ..\..\install\MSVC\i386\WinDivert.lib;%(AdditionalDependencies)
- ..\..\install\MSVC\amd64\WinDivert.lib;%(AdditionalDependencies)
-
-
-
-
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+
+ false
+ MinSpace
+ Default
+ ..\..\include
+
+
+
+ netdump
+ netdump
+ {DC384335-F852-1015-B877-FF6B795836B8}
+ 10.0.26100.0
+
+
+
+ v143
+ Application
+
+
+
+
+ ..\..\install\MSVC\i386\WinDivert.lib;%(AdditionalDependencies)
+ ..\..\install\MSVC\amd64\WinDivert.lib;%(AdditionalDependencies)
+
+
+
+
\ No newline at end of file
diff --git a/examples/netdump/netdump.vcxproj.user b/examples/netdump/netdump.vcxproj.user
new file mode 100644
index 00000000..88a55094
--- /dev/null
+++ b/examples/netdump/netdump.vcxproj.user
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/examples/netdump/netdump/Release/netdump.exe.recipe b/examples/netdump/netdump/Release/netdump.exe.recipe
new file mode 100644
index 00000000..60cadbc8
--- /dev/null
+++ b/examples/netdump/netdump/Release/netdump.exe.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ C:\WinDivert\install\MSVC\i386\netdump.exe
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/netdump/netdump/Release/netdump.obj b/examples/netdump/netdump/Release/netdump.obj
new file mode 100644
index 00000000..4e67f444
Binary files /dev/null and b/examples/netdump/netdump/Release/netdump.obj differ
diff --git a/examples/netdump/netdump/Release/netdump.tlog/CL.command.1.tlog b/examples/netdump/netdump/Release/netdump.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..482b833f
Binary files /dev/null and b/examples/netdump/netdump/Release/netdump.tlog/CL.command.1.tlog differ
diff --git a/examples/netdump/netdump/Release/netdump.tlog/CL.read.1.tlog b/examples/netdump/netdump/Release/netdump.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..ad777cf8
Binary files /dev/null and b/examples/netdump/netdump/Release/netdump.tlog/CL.read.1.tlog differ
diff --git a/examples/netdump/netdump/Release/netdump.tlog/CL.write.1.tlog b/examples/netdump/netdump/Release/netdump.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..ab52c644
Binary files /dev/null and b/examples/netdump/netdump/Release/netdump.tlog/CL.write.1.tlog differ
diff --git a/examples/netdump/netdump/Release/netdump.tlog/Cl.items.tlog b/examples/netdump/netdump/Release/netdump.tlog/Cl.items.tlog
new file mode 100644
index 00000000..309b7d6c
--- /dev/null
+++ b/examples/netdump/netdump/Release/netdump.tlog/Cl.items.tlog
@@ -0,0 +1 @@
+C:\WinDivert\examples\netdump\netdump.c;C:\WinDivert\examples\netdump\netdump\Release\netdump.obj
diff --git a/examples/netdump/netdump/Release/netdump.tlog/link.command.1.tlog b/examples/netdump/netdump/Release/netdump.tlog/link.command.1.tlog
new file mode 100644
index 00000000..ece5abfc
Binary files /dev/null and b/examples/netdump/netdump/Release/netdump.tlog/link.command.1.tlog differ
diff --git a/examples/netdump/netdump/Release/netdump.tlog/link.read.1.tlog b/examples/netdump/netdump/Release/netdump.tlog/link.read.1.tlog
new file mode 100644
index 00000000..c66f1215
Binary files /dev/null and b/examples/netdump/netdump/Release/netdump.tlog/link.read.1.tlog differ
diff --git a/examples/netdump/netdump/Release/netdump.tlog/link.secondary.1.tlog b/examples/netdump/netdump/Release/netdump.tlog/link.secondary.1.tlog
new file mode 100644
index 00000000..55efcc58
--- /dev/null
+++ b/examples/netdump/netdump/Release/netdump.tlog/link.secondary.1.tlog
@@ -0,0 +1,2 @@
+^C:\WINDIVERT\EXAMPLES\NETDUMP\NETDUMP\RELEASE\NETDUMP.OBJ
+C:\WinDivert\install\MSVC\i386\netdump.ILK
diff --git a/examples/netdump/netdump/Release/netdump.tlog/link.write.1.tlog b/examples/netdump/netdump/Release/netdump.tlog/link.write.1.tlog
new file mode 100644
index 00000000..75aac328
Binary files /dev/null and b/examples/netdump/netdump/Release/netdump.tlog/link.write.1.tlog differ
diff --git a/examples/netdump/netdump/Release/netdump.tlog/netdump.lastbuildstate b/examples/netdump/netdump/Release/netdump.tlog/netdump.lastbuildstate
new file mode 100644
index 00000000..4788340a
--- /dev/null
+++ b/examples/netdump/netdump/Release/netdump.tlog/netdump.lastbuildstate
@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.26100.0:
+Release|Win32|C:\WinDivert\examples\netdump\|
diff --git a/examples/netdump/netdump/Release/vc143.pdb b/examples/netdump/netdump/Release/vc143.pdb
new file mode 100644
index 00000000..ee3389c9
Binary files /dev/null and b/examples/netdump/netdump/Release/vc143.pdb differ
diff --git a/examples/netdump/netdump/x64/Release/netdump.Build.CppClean.log b/examples/netdump/netdump/x64/Release/netdump.Build.CppClean.log
new file mode 100644
index 00000000..8d026000
--- /dev/null
+++ b/examples/netdump/netdump/x64/Release/netdump.Build.CppClean.log
@@ -0,0 +1,2 @@
+c:\windivert\examples\netdump\netdump\x64\release\vc143.pdb
+c:\windivert\examples\netdump\netdump\x64\release\netdump.tlog\cl.command.1.tlog
diff --git a/examples/netdump/netdump/x64/Release/netdump.exe.recipe b/examples/netdump/netdump/x64/Release/netdump.exe.recipe
new file mode 100644
index 00000000..0297b46a
--- /dev/null
+++ b/examples/netdump/netdump/x64/Release/netdump.exe.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ C:\WinDivert\install\MSVC\amd64\netdump.exe
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/netdump/netdump/x64/Release/netdump.log b/examples/netdump/netdump/x64/Release/netdump.log
new file mode 100644
index 00000000..6e8142ff
--- /dev/null
+++ b/examples/netdump/netdump/x64/Release/netdump.log
@@ -0,0 +1,2 @@
+ netdump.c
+ netdump.vcxproj -> C:\WinDivert\examples\netdump\x64\Release\netdump.exe
diff --git a/examples/netdump/netdump/x64/Release/netdump.obj b/examples/netdump/netdump/x64/Release/netdump.obj
new file mode 100644
index 00000000..f9562d8e
Binary files /dev/null and b/examples/netdump/netdump/x64/Release/netdump.obj differ
diff --git a/examples/netdump/netdump/x64/Release/netdump.tlog/CL.command.1.tlog b/examples/netdump/netdump/x64/Release/netdump.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..e044e162
Binary files /dev/null and b/examples/netdump/netdump/x64/Release/netdump.tlog/CL.command.1.tlog differ
diff --git a/examples/netdump/netdump/x64/Release/netdump.tlog/CL.read.1.tlog b/examples/netdump/netdump/x64/Release/netdump.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..1dc83c5a
Binary files /dev/null and b/examples/netdump/netdump/x64/Release/netdump.tlog/CL.read.1.tlog differ
diff --git a/examples/netdump/netdump/x64/Release/netdump.tlog/CL.write.1.tlog b/examples/netdump/netdump/x64/Release/netdump.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..aa156c7e
Binary files /dev/null and b/examples/netdump/netdump/x64/Release/netdump.tlog/CL.write.1.tlog differ
diff --git a/examples/netdump/netdump/x64/Release/netdump.tlog/Cl.items.tlog b/examples/netdump/netdump/x64/Release/netdump.tlog/Cl.items.tlog
new file mode 100644
index 00000000..28a4c4d9
--- /dev/null
+++ b/examples/netdump/netdump/x64/Release/netdump.tlog/Cl.items.tlog
@@ -0,0 +1 @@
+C:\WinDivert\examples\netdump\netdump.c;C:\WinDivert\examples\netdump\netdump\x64\Release\netdump.obj
diff --git a/examples/netdump/netdump/x64/Release/netdump.tlog/link.command.1.tlog b/examples/netdump/netdump/x64/Release/netdump.tlog/link.command.1.tlog
new file mode 100644
index 00000000..0680b317
Binary files /dev/null and b/examples/netdump/netdump/x64/Release/netdump.tlog/link.command.1.tlog differ
diff --git a/examples/netdump/netdump/x64/Release/netdump.tlog/link.read.1.tlog b/examples/netdump/netdump/x64/Release/netdump.tlog/link.read.1.tlog
new file mode 100644
index 00000000..96ed8d0a
Binary files /dev/null and b/examples/netdump/netdump/x64/Release/netdump.tlog/link.read.1.tlog differ
diff --git a/examples/netdump/netdump/x64/Release/netdump.tlog/link.secondary.1.tlog b/examples/netdump/netdump/x64/Release/netdump.tlog/link.secondary.1.tlog
new file mode 100644
index 00000000..698814c3
--- /dev/null
+++ b/examples/netdump/netdump/x64/Release/netdump.tlog/link.secondary.1.tlog
@@ -0,0 +1,2 @@
+^C:\WINDIVERT\EXAMPLES\NETDUMP\NETDUMP\X64\RELEASE\NETDUMP.OBJ
+C:\WinDivert\install\MSVC\amd64\netdump.ILK
diff --git a/examples/netdump/netdump/x64/Release/netdump.tlog/link.write.1.tlog b/examples/netdump/netdump/x64/Release/netdump.tlog/link.write.1.tlog
new file mode 100644
index 00000000..78a05ebe
Binary files /dev/null and b/examples/netdump/netdump/x64/Release/netdump.tlog/link.write.1.tlog differ
diff --git a/examples/netdump/netdump/x64/Release/netdump.tlog/netdump.lastbuildstate b/examples/netdump/netdump/x64/Release/netdump.tlog/netdump.lastbuildstate
new file mode 100644
index 00000000..92bcef54
--- /dev/null
+++ b/examples/netdump/netdump/x64/Release/netdump.tlog/netdump.lastbuildstate
@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.26100.0:
+Release|x64|C:\WinDivert\examples\netdump\|
diff --git a/examples/netdump/netdump/x64/Release/netdump.vcxproj.FileListAbsolute.txt b/examples/netdump/netdump/x64/Release/netdump.vcxproj.FileListAbsolute.txt
new file mode 100644
index 00000000..e69de29b
diff --git a/examples/netdump/netdump/x64/Release/vc143.pdb b/examples/netdump/netdump/x64/Release/vc143.pdb
new file mode 100644
index 00000000..1eac2b98
Binary files /dev/null and b/examples/netdump/netdump/x64/Release/vc143.pdb differ
diff --git a/examples/netdump/x64/Release/netdump.exe b/examples/netdump/x64/Release/netdump.exe
new file mode 100644
index 00000000..49d884d3
Binary files /dev/null and b/examples/netdump/x64/Release/netdump.exe differ
diff --git a/examples/netdump/x64/Release/netdump.ilk b/examples/netdump/x64/Release/netdump.ilk
new file mode 100644
index 00000000..7688b979
Binary files /dev/null and b/examples/netdump/x64/Release/netdump.ilk differ
diff --git a/examples/netdump/x64/Release/netdump.obj b/examples/netdump/x64/Release/netdump.obj
new file mode 100644
index 00000000..546a9935
Binary files /dev/null and b/examples/netdump/x64/Release/netdump.obj differ
diff --git a/examples/netdump/x64/Release/netdump.pdb b/examples/netdump/x64/Release/netdump.pdb
new file mode 100644
index 00000000..cd88875d
Binary files /dev/null and b/examples/netdump/x64/Release/netdump.pdb differ
diff --git a/examples/netdump/x64/Release/netdump.tlog/CL.command.1.tlog b/examples/netdump/x64/Release/netdump.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..e1eaa6e9
Binary files /dev/null and b/examples/netdump/x64/Release/netdump.tlog/CL.command.1.tlog differ
diff --git a/examples/netdump/x64/Release/netdump.tlog/CL.read.1.tlog b/examples/netdump/x64/Release/netdump.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..e8565163
Binary files /dev/null and b/examples/netdump/x64/Release/netdump.tlog/CL.read.1.tlog differ
diff --git a/examples/netdump/x64/Release/netdump.tlog/CL.write.1.tlog b/examples/netdump/x64/Release/netdump.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..95878e51
Binary files /dev/null and b/examples/netdump/x64/Release/netdump.tlog/CL.write.1.tlog differ
diff --git a/examples/netdump/x64/Release/netdump.tlog/link.command.1.tlog b/examples/netdump/x64/Release/netdump.tlog/link.command.1.tlog
new file mode 100644
index 00000000..c7b7190d
Binary files /dev/null and b/examples/netdump/x64/Release/netdump.tlog/link.command.1.tlog differ
diff --git a/examples/netdump/x64/Release/netdump.tlog/link.read.1.tlog b/examples/netdump/x64/Release/netdump.tlog/link.read.1.tlog
new file mode 100644
index 00000000..5e5a9bd1
Binary files /dev/null and b/examples/netdump/x64/Release/netdump.tlog/link.read.1.tlog differ
diff --git a/examples/netdump/x64/Release/netdump.tlog/link.write.1.tlog b/examples/netdump/x64/Release/netdump.tlog/link.write.1.tlog
new file mode 100644
index 00000000..620de239
Binary files /dev/null and b/examples/netdump/x64/Release/netdump.tlog/link.write.1.tlog differ
diff --git a/examples/netdump/x64/Release/netdump.tlog/netdump.lastbuildstate b/examples/netdump/x64/Release/netdump.tlog/netdump.lastbuildstate
new file mode 100644
index 00000000..4e2d789b
--- /dev/null
+++ b/examples/netdump/x64/Release/netdump.tlog/netdump.lastbuildstate
@@ -0,0 +1,2 @@
+#TargetFrameworkVersion=:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1
+Release|x64|C:\Users\kujax\OneDrive\Desktop\WinDivert-master\examples\netdump\|
diff --git a/examples/netdump/x64/Release/vc140.pdb b/examples/netdump/x64/Release/vc140.pdb
new file mode 100644
index 00000000..e9c6f605
Binary files /dev/null and b/examples/netdump/x64/Release/vc140.pdb differ
diff --git a/examples/netfilter/.vs/netfilter/FileContentIndex/5e368491-0df0-4818-b456-4b817eb08084.vsidx b/examples/netfilter/.vs/netfilter/FileContentIndex/5e368491-0df0-4818-b456-4b817eb08084.vsidx
new file mode 100644
index 00000000..7b8b79b0
Binary files /dev/null and b/examples/netfilter/.vs/netfilter/FileContentIndex/5e368491-0df0-4818-b456-4b817eb08084.vsidx differ
diff --git a/examples/netfilter/.vs/netfilter/v17/.suo b/examples/netfilter/.vs/netfilter/v17/.suo
new file mode 100644
index 00000000..b6eec5bd
Binary files /dev/null and b/examples/netfilter/.vs/netfilter/v17/.suo differ
diff --git a/examples/netfilter/.vs/netfilter/v17/Browse.VC.db b/examples/netfilter/.vs/netfilter/v17/Browse.VC.db
new file mode 100644
index 00000000..ca895a46
Binary files /dev/null and b/examples/netfilter/.vs/netfilter/v17/Browse.VC.db differ
diff --git a/examples/netfilter/.vs/netfilter/v17/DocumentLayout.backup.json b/examples/netfilter/.vs/netfilter/v17/DocumentLayout.backup.json
new file mode 100644
index 00000000..cb557c04
--- /dev/null
+++ b/examples/netfilter/.vs/netfilter/v17/DocumentLayout.backup.json
@@ -0,0 +1,12 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "E:\\Unity\\WinDivert\\examples\\netfilter\\",
+ "Documents": [],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/netfilter/.vs/netfilter/v17/DocumentLayout.json b/examples/netfilter/.vs/netfilter/v17/DocumentLayout.json
new file mode 100644
index 00000000..cb557c04
--- /dev/null
+++ b/examples/netfilter/.vs/netfilter/v17/DocumentLayout.json
@@ -0,0 +1,12 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "E:\\Unity\\WinDivert\\examples\\netfilter\\",
+ "Documents": [],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/netfilter/.vs/netfilter/v17/Solution.VC.db b/examples/netfilter/.vs/netfilter/v17/Solution.VC.db
new file mode 100644
index 00000000..1af8aa29
Binary files /dev/null and b/examples/netfilter/.vs/netfilter/v17/Solution.VC.db differ
diff --git a/examples/netfilter/Release/netfilter.obj b/examples/netfilter/Release/netfilter.obj
new file mode 100644
index 00000000..3812785d
Binary files /dev/null and b/examples/netfilter/Release/netfilter.obj differ
diff --git a/examples/netfilter/Release/netfilter.tlog/CL.command.1.tlog b/examples/netfilter/Release/netfilter.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..42614ae1
Binary files /dev/null and b/examples/netfilter/Release/netfilter.tlog/CL.command.1.tlog differ
diff --git a/examples/netfilter/Release/netfilter.tlog/CL.read.1.tlog b/examples/netfilter/Release/netfilter.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..dad22d4f
Binary files /dev/null and b/examples/netfilter/Release/netfilter.tlog/CL.read.1.tlog differ
diff --git a/examples/netfilter/Release/netfilter.tlog/CL.write.1.tlog b/examples/netfilter/Release/netfilter.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..0cd8e379
Binary files /dev/null and b/examples/netfilter/Release/netfilter.tlog/CL.write.1.tlog differ
diff --git a/examples/netfilter/Release/netfilter.tlog/link.command.1.tlog b/examples/netfilter/Release/netfilter.tlog/link.command.1.tlog
new file mode 100644
index 00000000..0292ede1
Binary files /dev/null and b/examples/netfilter/Release/netfilter.tlog/link.command.1.tlog differ
diff --git a/examples/netfilter/Release/netfilter.tlog/link.read.1.tlog b/examples/netfilter/Release/netfilter.tlog/link.read.1.tlog
new file mode 100644
index 00000000..a2469db5
Binary files /dev/null and b/examples/netfilter/Release/netfilter.tlog/link.read.1.tlog differ
diff --git a/examples/netfilter/Release/netfilter.tlog/link.write.1.tlog b/examples/netfilter/Release/netfilter.tlog/link.write.1.tlog
new file mode 100644
index 00000000..e42a5211
Binary files /dev/null and b/examples/netfilter/Release/netfilter.tlog/link.write.1.tlog differ
diff --git a/examples/netfilter/Release/netfilter.tlog/netfilter.lastbuildstate b/examples/netfilter/Release/netfilter.tlog/netfilter.lastbuildstate
new file mode 100644
index 00000000..3798eb02
--- /dev/null
+++ b/examples/netfilter/Release/netfilter.tlog/netfilter.lastbuildstate
@@ -0,0 +1,2 @@
+#TargetFrameworkVersion=:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1
+Release|Win32|C:\Users\kujax\OneDrive\Desktop\WinDivert-master\examples\netfilter\|
diff --git a/examples/netfilter/Release/vc140.pdb b/examples/netfilter/Release/vc140.pdb
new file mode 100644
index 00000000..f50e2674
Binary files /dev/null and b/examples/netfilter/Release/vc140.pdb differ
diff --git a/examples/netfilter/netfilter.sln b/examples/netfilter/netfilter.sln
new file mode 100644
index 00000000..114e6dce
--- /dev/null
+++ b/examples/netfilter/netfilter.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.13.35825.156 d17.13
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "netfilter", "netfilter.vcxproj", "{39796BD2-12BE-73F2-F3AD-9F04FC7D2A8B}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {39796BD2-12BE-73F2-F3AD-9F04FC7D2A8B}.Release|x64.ActiveCfg = Release|x64
+ {39796BD2-12BE-73F2-F3AD-9F04FC7D2A8B}.Release|x64.Build.0 = Release|x64
+ {39796BD2-12BE-73F2-F3AD-9F04FC7D2A8B}.Release|x86.ActiveCfg = Release|Win32
+ {39796BD2-12BE-73F2-F3AD-9F04FC7D2A8B}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {BCEBC878-5C86-40C2-A272-D5AEAFF51154}
+ EndGlobalSection
+EndGlobal
diff --git a/examples/netfilter/netfilter.vcxproj b/examples/netfilter/netfilter.vcxproj
index a547d673..81109c38 100644
--- a/examples/netfilter/netfilter.vcxproj
+++ b/examples/netfilter/netfilter.vcxproj
@@ -35,39 +35,41 @@
-->
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
-
-
- false
- MinSpace
- Default
- ..\..\include
-
-
-
- netfilter
- netfilter
-
-
-
- v140
- Application
-
-
-
-
- ..\..\install\MSVC\i386\WinDivert.lib;%(AdditionalDependencies)
- ..\..\install\MSVC\amd64\WinDivert.lib;%(AdditionalDependencies)
-
-
-
-
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+
+ false
+ MinSpace
+ Default
+ ..\..\include
+
+
+
+ netfilter
+ netfilter
+ {39796BD2-12BE-73F2-F3AD-9F04FC7D2A8B}
+ 10.0.26100.0
+
+
+
+ v143
+ Application
+
+
+
+
+ ..\..\install\MSVC\i386\WinDivert.lib;%(AdditionalDependencies)
+ ..\..\install\MSVC\amd64\WinDivert.lib;%(AdditionalDependencies)
+
+
+
+
\ No newline at end of file
diff --git a/examples/netfilter/netfilter.vcxproj.user b/examples/netfilter/netfilter.vcxproj.user
new file mode 100644
index 00000000..88a55094
--- /dev/null
+++ b/examples/netfilter/netfilter.vcxproj.user
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/examples/netfilter/netfilter/Release/netfilter.exe.recipe b/examples/netfilter/netfilter/Release/netfilter.exe.recipe
new file mode 100644
index 00000000..07f526d9
--- /dev/null
+++ b/examples/netfilter/netfilter/Release/netfilter.exe.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ C:\WinDivert\install\MSVC\i386\netfilter.exe
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/netfilter/netfilter/Release/netfilter.obj b/examples/netfilter/netfilter/Release/netfilter.obj
new file mode 100644
index 00000000..590e1fbb
Binary files /dev/null and b/examples/netfilter/netfilter/Release/netfilter.obj differ
diff --git a/examples/netfilter/netfilter/Release/netfilter.tlog/CL.command.1.tlog b/examples/netfilter/netfilter/Release/netfilter.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..4b9819da
Binary files /dev/null and b/examples/netfilter/netfilter/Release/netfilter.tlog/CL.command.1.tlog differ
diff --git a/examples/netfilter/netfilter/Release/netfilter.tlog/CL.read.1.tlog b/examples/netfilter/netfilter/Release/netfilter.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..af9ddf16
Binary files /dev/null and b/examples/netfilter/netfilter/Release/netfilter.tlog/CL.read.1.tlog differ
diff --git a/examples/netfilter/netfilter/Release/netfilter.tlog/CL.write.1.tlog b/examples/netfilter/netfilter/Release/netfilter.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..40d3d387
Binary files /dev/null and b/examples/netfilter/netfilter/Release/netfilter.tlog/CL.write.1.tlog differ
diff --git a/examples/netfilter/netfilter/Release/netfilter.tlog/Cl.items.tlog b/examples/netfilter/netfilter/Release/netfilter.tlog/Cl.items.tlog
new file mode 100644
index 00000000..5d419396
--- /dev/null
+++ b/examples/netfilter/netfilter/Release/netfilter.tlog/Cl.items.tlog
@@ -0,0 +1 @@
+C:\WinDivert\examples\netfilter\netfilter.c;C:\WinDivert\examples\netfilter\netfilter\Release\netfilter.obj
diff --git a/examples/netfilter/netfilter/Release/netfilter.tlog/link.command.1.tlog b/examples/netfilter/netfilter/Release/netfilter.tlog/link.command.1.tlog
new file mode 100644
index 00000000..3f57afa5
Binary files /dev/null and b/examples/netfilter/netfilter/Release/netfilter.tlog/link.command.1.tlog differ
diff --git a/examples/netfilter/netfilter/Release/netfilter.tlog/link.read.1.tlog b/examples/netfilter/netfilter/Release/netfilter.tlog/link.read.1.tlog
new file mode 100644
index 00000000..81d536ef
Binary files /dev/null and b/examples/netfilter/netfilter/Release/netfilter.tlog/link.read.1.tlog differ
diff --git a/examples/netfilter/netfilter/Release/netfilter.tlog/link.secondary.1.tlog b/examples/netfilter/netfilter/Release/netfilter.tlog/link.secondary.1.tlog
new file mode 100644
index 00000000..36373061
--- /dev/null
+++ b/examples/netfilter/netfilter/Release/netfilter.tlog/link.secondary.1.tlog
@@ -0,0 +1,2 @@
+^C:\WINDIVERT\EXAMPLES\NETFILTER\NETFILTER\RELEASE\NETFILTER.OBJ
+C:\WinDivert\install\MSVC\i386\netfilter.ILK
diff --git a/examples/netfilter/netfilter/Release/netfilter.tlog/link.write.1.tlog b/examples/netfilter/netfilter/Release/netfilter.tlog/link.write.1.tlog
new file mode 100644
index 00000000..2af33299
Binary files /dev/null and b/examples/netfilter/netfilter/Release/netfilter.tlog/link.write.1.tlog differ
diff --git a/examples/netfilter/netfilter/Release/netfilter.tlog/netfilter.lastbuildstate b/examples/netfilter/netfilter/Release/netfilter.tlog/netfilter.lastbuildstate
new file mode 100644
index 00000000..bbae04f0
--- /dev/null
+++ b/examples/netfilter/netfilter/Release/netfilter.tlog/netfilter.lastbuildstate
@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.26100.0:
+Release|Win32|C:\WinDivert\examples\netfilter\|
diff --git a/examples/netfilter/netfilter/Release/vc143.pdb b/examples/netfilter/netfilter/Release/vc143.pdb
new file mode 100644
index 00000000..51c4036a
Binary files /dev/null and b/examples/netfilter/netfilter/Release/vc143.pdb differ
diff --git a/examples/netfilter/netfilter/x64/Release/netfilter.exe.recipe b/examples/netfilter/netfilter/x64/Release/netfilter.exe.recipe
new file mode 100644
index 00000000..1e5395c9
--- /dev/null
+++ b/examples/netfilter/netfilter/x64/Release/netfilter.exe.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ C:\WinDivert\install\MSVC\amd64\netfilter.exe
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/netfilter/netfilter/x64/Release/netfilter.obj b/examples/netfilter/netfilter/x64/Release/netfilter.obj
new file mode 100644
index 00000000..6858e76c
Binary files /dev/null and b/examples/netfilter/netfilter/x64/Release/netfilter.obj differ
diff --git a/examples/netfilter/netfilter/x64/Release/netfilter.tlog/CL.command.1.tlog b/examples/netfilter/netfilter/x64/Release/netfilter.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..d8cf263d
Binary files /dev/null and b/examples/netfilter/netfilter/x64/Release/netfilter.tlog/CL.command.1.tlog differ
diff --git a/examples/netfilter/netfilter/x64/Release/netfilter.tlog/CL.read.1.tlog b/examples/netfilter/netfilter/x64/Release/netfilter.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..0ffae310
Binary files /dev/null and b/examples/netfilter/netfilter/x64/Release/netfilter.tlog/CL.read.1.tlog differ
diff --git a/examples/netfilter/netfilter/x64/Release/netfilter.tlog/CL.write.1.tlog b/examples/netfilter/netfilter/x64/Release/netfilter.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..7f35594b
Binary files /dev/null and b/examples/netfilter/netfilter/x64/Release/netfilter.tlog/CL.write.1.tlog differ
diff --git a/examples/netfilter/netfilter/x64/Release/netfilter.tlog/Cl.items.tlog b/examples/netfilter/netfilter/x64/Release/netfilter.tlog/Cl.items.tlog
new file mode 100644
index 00000000..9ec178b5
--- /dev/null
+++ b/examples/netfilter/netfilter/x64/Release/netfilter.tlog/Cl.items.tlog
@@ -0,0 +1 @@
+C:\WinDivert\examples\netfilter\netfilter.c;C:\WinDivert\examples\netfilter\netfilter\x64\Release\netfilter.obj
diff --git a/examples/netfilter/netfilter/x64/Release/netfilter.tlog/link.command.1.tlog b/examples/netfilter/netfilter/x64/Release/netfilter.tlog/link.command.1.tlog
new file mode 100644
index 00000000..4004deaa
Binary files /dev/null and b/examples/netfilter/netfilter/x64/Release/netfilter.tlog/link.command.1.tlog differ
diff --git a/examples/netfilter/netfilter/x64/Release/netfilter.tlog/link.read.1.tlog b/examples/netfilter/netfilter/x64/Release/netfilter.tlog/link.read.1.tlog
new file mode 100644
index 00000000..5629aa7d
Binary files /dev/null and b/examples/netfilter/netfilter/x64/Release/netfilter.tlog/link.read.1.tlog differ
diff --git a/examples/netfilter/netfilter/x64/Release/netfilter.tlog/link.secondary.1.tlog b/examples/netfilter/netfilter/x64/Release/netfilter.tlog/link.secondary.1.tlog
new file mode 100644
index 00000000..84f502b1
--- /dev/null
+++ b/examples/netfilter/netfilter/x64/Release/netfilter.tlog/link.secondary.1.tlog
@@ -0,0 +1,2 @@
+^C:\WINDIVERT\EXAMPLES\NETFILTER\NETFILTER\X64\RELEASE\NETFILTER.OBJ
+C:\WinDivert\install\MSVC\amd64\netfilter.ILK
diff --git a/examples/netfilter/netfilter/x64/Release/netfilter.tlog/link.write.1.tlog b/examples/netfilter/netfilter/x64/Release/netfilter.tlog/link.write.1.tlog
new file mode 100644
index 00000000..acb4f4f6
Binary files /dev/null and b/examples/netfilter/netfilter/x64/Release/netfilter.tlog/link.write.1.tlog differ
diff --git a/examples/netfilter/netfilter/x64/Release/netfilter.tlog/netfilter.lastbuildstate b/examples/netfilter/netfilter/x64/Release/netfilter.tlog/netfilter.lastbuildstate
new file mode 100644
index 00000000..b17f48d8
--- /dev/null
+++ b/examples/netfilter/netfilter/x64/Release/netfilter.tlog/netfilter.lastbuildstate
@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.26100.0:
+Release|x64|C:\WinDivert\examples\netfilter\|
diff --git a/examples/netfilter/netfilter/x64/Release/vc143.pdb b/examples/netfilter/netfilter/x64/Release/vc143.pdb
new file mode 100644
index 00000000..39729227
Binary files /dev/null and b/examples/netfilter/netfilter/x64/Release/vc143.pdb differ
diff --git a/examples/netfilter/x64/Release/netfilter.obj b/examples/netfilter/x64/Release/netfilter.obj
new file mode 100644
index 00000000..7e2218a7
Binary files /dev/null and b/examples/netfilter/x64/Release/netfilter.obj differ
diff --git a/examples/netfilter/x64/Release/netfilter.tlog/CL.command.1.tlog b/examples/netfilter/x64/Release/netfilter.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..e7c88af1
Binary files /dev/null and b/examples/netfilter/x64/Release/netfilter.tlog/CL.command.1.tlog differ
diff --git a/examples/netfilter/x64/Release/netfilter.tlog/CL.read.1.tlog b/examples/netfilter/x64/Release/netfilter.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..103c446f
Binary files /dev/null and b/examples/netfilter/x64/Release/netfilter.tlog/CL.read.1.tlog differ
diff --git a/examples/netfilter/x64/Release/netfilter.tlog/CL.write.1.tlog b/examples/netfilter/x64/Release/netfilter.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..949362ba
Binary files /dev/null and b/examples/netfilter/x64/Release/netfilter.tlog/CL.write.1.tlog differ
diff --git a/examples/netfilter/x64/Release/netfilter.tlog/link.command.1.tlog b/examples/netfilter/x64/Release/netfilter.tlog/link.command.1.tlog
new file mode 100644
index 00000000..0417d655
Binary files /dev/null and b/examples/netfilter/x64/Release/netfilter.tlog/link.command.1.tlog differ
diff --git a/examples/netfilter/x64/Release/netfilter.tlog/link.read.1.tlog b/examples/netfilter/x64/Release/netfilter.tlog/link.read.1.tlog
new file mode 100644
index 00000000..57266e18
Binary files /dev/null and b/examples/netfilter/x64/Release/netfilter.tlog/link.read.1.tlog differ
diff --git a/examples/netfilter/x64/Release/netfilter.tlog/link.write.1.tlog b/examples/netfilter/x64/Release/netfilter.tlog/link.write.1.tlog
new file mode 100644
index 00000000..44a66b2f
Binary files /dev/null and b/examples/netfilter/x64/Release/netfilter.tlog/link.write.1.tlog differ
diff --git a/examples/netfilter/x64/Release/netfilter.tlog/netfilter.lastbuildstate b/examples/netfilter/x64/Release/netfilter.tlog/netfilter.lastbuildstate
new file mode 100644
index 00000000..a6410494
--- /dev/null
+++ b/examples/netfilter/x64/Release/netfilter.tlog/netfilter.lastbuildstate
@@ -0,0 +1,2 @@
+#TargetFrameworkVersion=:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1
+Release|x64|C:\Users\kujax\OneDrive\Desktop\WinDivert-master\examples\netfilter\|
diff --git a/examples/netfilter/x64/Release/vc140.pdb b/examples/netfilter/x64/Release/vc140.pdb
new file mode 100644
index 00000000..f57698c7
Binary files /dev/null and b/examples/netfilter/x64/Release/vc140.pdb differ
diff --git a/examples/passthru/.vs/passthru/CopilotIndices/17.13.433.20974/CodeChunks.db b/examples/passthru/.vs/passthru/CopilotIndices/17.13.433.20974/CodeChunks.db
new file mode 100644
index 00000000..2f88b467
Binary files /dev/null and b/examples/passthru/.vs/passthru/CopilotIndices/17.13.433.20974/CodeChunks.db differ
diff --git a/examples/passthru/.vs/passthru/CopilotIndices/17.13.433.20974/SemanticSymbols.db b/examples/passthru/.vs/passthru/CopilotIndices/17.13.433.20974/SemanticSymbols.db
new file mode 100644
index 00000000..b1766683
Binary files /dev/null and b/examples/passthru/.vs/passthru/CopilotIndices/17.13.433.20974/SemanticSymbols.db differ
diff --git a/examples/passthru/.vs/passthru/FileContentIndex/5c1e3d34-5d5c-48b8-8f7c-afa9f1d35e01.vsidx b/examples/passthru/.vs/passthru/FileContentIndex/5c1e3d34-5d5c-48b8-8f7c-afa9f1d35e01.vsidx
new file mode 100644
index 00000000..70aef67a
Binary files /dev/null and b/examples/passthru/.vs/passthru/FileContentIndex/5c1e3d34-5d5c-48b8-8f7c-afa9f1d35e01.vsidx differ
diff --git a/examples/passthru/.vs/passthru/FileContentIndex/ddac18ea-62cd-4da2-b369-56aa262cb183.vsidx b/examples/passthru/.vs/passthru/FileContentIndex/ddac18ea-62cd-4da2-b369-56aa262cb183.vsidx
new file mode 100644
index 00000000..dac74160
Binary files /dev/null and b/examples/passthru/.vs/passthru/FileContentIndex/ddac18ea-62cd-4da2-b369-56aa262cb183.vsidx differ
diff --git a/examples/passthru/.vs/passthru/v17/.suo b/examples/passthru/.vs/passthru/v17/.suo
new file mode 100644
index 00000000..451834e2
Binary files /dev/null and b/examples/passthru/.vs/passthru/v17/.suo differ
diff --git a/examples/passthru/.vs/passthru/v17/Browse.VC.db b/examples/passthru/.vs/passthru/v17/Browse.VC.db
new file mode 100644
index 00000000..7de32305
Binary files /dev/null and b/examples/passthru/.vs/passthru/v17/Browse.VC.db differ
diff --git a/examples/passthru/.vs/passthru/v17/DocumentLayout.backup.json b/examples/passthru/.vs/passthru/v17/DocumentLayout.backup.json
new file mode 100644
index 00000000..cc25f78f
--- /dev/null
+++ b/examples/passthru/.vs/passthru/v17/DocumentLayout.backup.json
@@ -0,0 +1,12 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "E:\\Unity\\WinDivert\\examples\\passthru\\",
+ "Documents": [],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/passthru/.vs/passthru/v17/DocumentLayout.json b/examples/passthru/.vs/passthru/v17/DocumentLayout.json
new file mode 100644
index 00000000..b2b4bd9b
--- /dev/null
+++ b/examples/passthru/.vs/passthru/v17/DocumentLayout.json
@@ -0,0 +1,12 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "C:\\WinDivert\\examples\\passthru\\",
+ "Documents": [],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/passthru/.vs/passthru/v17/Solution.VC.db b/examples/passthru/.vs/passthru/v17/Solution.VC.db
new file mode 100644
index 00000000..ceed438c
Binary files /dev/null and b/examples/passthru/.vs/passthru/v17/Solution.VC.db differ
diff --git a/examples/passthru/Release/passthru.obj b/examples/passthru/Release/passthru.obj
new file mode 100644
index 00000000..a9b43da5
Binary files /dev/null and b/examples/passthru/Release/passthru.obj differ
diff --git a/examples/passthru/Release/passthru.tlog/CL.command.1.tlog b/examples/passthru/Release/passthru.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..bc9d77a6
Binary files /dev/null and b/examples/passthru/Release/passthru.tlog/CL.command.1.tlog differ
diff --git a/examples/passthru/Release/passthru.tlog/CL.read.1.tlog b/examples/passthru/Release/passthru.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..d3991e29
Binary files /dev/null and b/examples/passthru/Release/passthru.tlog/CL.read.1.tlog differ
diff --git a/examples/passthru/Release/passthru.tlog/CL.write.1.tlog b/examples/passthru/Release/passthru.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..9f37761e
Binary files /dev/null and b/examples/passthru/Release/passthru.tlog/CL.write.1.tlog differ
diff --git a/examples/passthru/Release/passthru.tlog/link.command.1.tlog b/examples/passthru/Release/passthru.tlog/link.command.1.tlog
new file mode 100644
index 00000000..41e761cc
Binary files /dev/null and b/examples/passthru/Release/passthru.tlog/link.command.1.tlog differ
diff --git a/examples/passthru/Release/passthru.tlog/link.read.1.tlog b/examples/passthru/Release/passthru.tlog/link.read.1.tlog
new file mode 100644
index 00000000..58a9f67d
Binary files /dev/null and b/examples/passthru/Release/passthru.tlog/link.read.1.tlog differ
diff --git a/examples/passthru/Release/passthru.tlog/link.write.1.tlog b/examples/passthru/Release/passthru.tlog/link.write.1.tlog
new file mode 100644
index 00000000..9f5e4dad
Binary files /dev/null and b/examples/passthru/Release/passthru.tlog/link.write.1.tlog differ
diff --git a/examples/passthru/Release/passthru.tlog/passthru.lastbuildstate b/examples/passthru/Release/passthru.tlog/passthru.lastbuildstate
new file mode 100644
index 00000000..d19d6183
--- /dev/null
+++ b/examples/passthru/Release/passthru.tlog/passthru.lastbuildstate
@@ -0,0 +1,2 @@
+#TargetFrameworkVersion=:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1
+Release|Win32|C:\Users\kujax\OneDrive\Desktop\WinDivert-master\examples\passthru\|
diff --git a/examples/passthru/Release/vc140.pdb b/examples/passthru/Release/vc140.pdb
new file mode 100644
index 00000000..b53501ae
Binary files /dev/null and b/examples/passthru/Release/vc140.pdb differ
diff --git a/examples/passthru/passthru.sln b/examples/passthru/passthru.sln
new file mode 100644
index 00000000..16852fa9
--- /dev/null
+++ b/examples/passthru/passthru.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.13.35825.156 d17.13
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "passthru", "passthru.vcxproj", "{762C7704-DAFC-7719-7F9C-2BE10D84893A}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {762C7704-DAFC-7719-7F9C-2BE10D84893A}.Release|x64.ActiveCfg = Release|x64
+ {762C7704-DAFC-7719-7F9C-2BE10D84893A}.Release|x64.Build.0 = Release|x64
+ {762C7704-DAFC-7719-7F9C-2BE10D84893A}.Release|x86.ActiveCfg = Release|Win32
+ {762C7704-DAFC-7719-7F9C-2BE10D84893A}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {1CFE3192-B413-43EB-911F-A1A54DA14B13}
+ EndGlobalSection
+EndGlobal
diff --git a/examples/passthru/passthru.vcxproj b/examples/passthru/passthru.vcxproj
index 40faa519..628a74ba 100644
--- a/examples/passthru/passthru.vcxproj
+++ b/examples/passthru/passthru.vcxproj
@@ -35,39 +35,41 @@
-->
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
-
-
- false
- MinSpace
- Default
- ..\..\include
-
-
-
- passthru
- passthru
-
-
-
- v140
- Application
-
-
-
-
- ..\..\install\MSVC\i386\WinDivert.lib;%(AdditionalDependencies)
- ..\..\install\MSVC\amd64\WinDivert.lib;%(AdditionalDependencies)
-
-
-
-
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+
+ false
+ MinSpace
+ Default
+ ..\..\include
+
+
+
+ passthru
+ passthru
+ {762C7704-DAFC-7719-7F9C-2BE10D84893A}
+ 10.0.26100.0
+
+
+
+ v143
+ Application
+
+
+
+
+ ..\..\install\MSVC\i386\WinDivert.lib;%(AdditionalDependencies)
+ ..\..\install\MSVC\amd64\WinDivert.lib;%(AdditionalDependencies)
+
+
+
+
\ No newline at end of file
diff --git a/examples/passthru/passthru.vcxproj.user b/examples/passthru/passthru.vcxproj.user
new file mode 100644
index 00000000..88a55094
--- /dev/null
+++ b/examples/passthru/passthru.vcxproj.user
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/examples/passthru/passthru/Release/passthru.exe.recipe b/examples/passthru/passthru/Release/passthru.exe.recipe
new file mode 100644
index 00000000..62a1f0d5
--- /dev/null
+++ b/examples/passthru/passthru/Release/passthru.exe.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ C:\WinDivert\install\MSVC\i386\passthru.exe
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/passthru/passthru/Release/passthru.obj b/examples/passthru/passthru/Release/passthru.obj
new file mode 100644
index 00000000..f98592a5
Binary files /dev/null and b/examples/passthru/passthru/Release/passthru.obj differ
diff --git a/examples/passthru/passthru/Release/passthru.tlog/CL.command.1.tlog b/examples/passthru/passthru/Release/passthru.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..11a35591
Binary files /dev/null and b/examples/passthru/passthru/Release/passthru.tlog/CL.command.1.tlog differ
diff --git a/examples/passthru/passthru/Release/passthru.tlog/CL.read.1.tlog b/examples/passthru/passthru/Release/passthru.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..73e3761c
Binary files /dev/null and b/examples/passthru/passthru/Release/passthru.tlog/CL.read.1.tlog differ
diff --git a/examples/passthru/passthru/Release/passthru.tlog/CL.write.1.tlog b/examples/passthru/passthru/Release/passthru.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..aee21b86
Binary files /dev/null and b/examples/passthru/passthru/Release/passthru.tlog/CL.write.1.tlog differ
diff --git a/examples/passthru/passthru/Release/passthru.tlog/Cl.items.tlog b/examples/passthru/passthru/Release/passthru.tlog/Cl.items.tlog
new file mode 100644
index 00000000..bac3f5ae
--- /dev/null
+++ b/examples/passthru/passthru/Release/passthru.tlog/Cl.items.tlog
@@ -0,0 +1 @@
+C:\WinDivert\examples\passthru\passthru.c;C:\WinDivert\examples\passthru\passthru\Release\passthru.obj
diff --git a/examples/passthru/passthru/Release/passthru.tlog/link.command.1.tlog b/examples/passthru/passthru/Release/passthru.tlog/link.command.1.tlog
new file mode 100644
index 00000000..cea68e55
Binary files /dev/null and b/examples/passthru/passthru/Release/passthru.tlog/link.command.1.tlog differ
diff --git a/examples/passthru/passthru/Release/passthru.tlog/link.read.1.tlog b/examples/passthru/passthru/Release/passthru.tlog/link.read.1.tlog
new file mode 100644
index 00000000..16eac993
Binary files /dev/null and b/examples/passthru/passthru/Release/passthru.tlog/link.read.1.tlog differ
diff --git a/examples/passthru/passthru/Release/passthru.tlog/link.secondary.1.tlog b/examples/passthru/passthru/Release/passthru.tlog/link.secondary.1.tlog
new file mode 100644
index 00000000..b86d476d
--- /dev/null
+++ b/examples/passthru/passthru/Release/passthru.tlog/link.secondary.1.tlog
@@ -0,0 +1,2 @@
+^C:\WINDIVERT\EXAMPLES\PASSTHRU\PASSTHRU\RELEASE\PASSTHRU.OBJ
+C:\WinDivert\install\MSVC\i386\passthru.ILK
diff --git a/examples/passthru/passthru/Release/passthru.tlog/link.write.1.tlog b/examples/passthru/passthru/Release/passthru.tlog/link.write.1.tlog
new file mode 100644
index 00000000..346bfaf4
Binary files /dev/null and b/examples/passthru/passthru/Release/passthru.tlog/link.write.1.tlog differ
diff --git a/examples/passthru/passthru/Release/passthru.tlog/passthru.lastbuildstate b/examples/passthru/passthru/Release/passthru.tlog/passthru.lastbuildstate
new file mode 100644
index 00000000..be8c34a1
--- /dev/null
+++ b/examples/passthru/passthru/Release/passthru.tlog/passthru.lastbuildstate
@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.26100.0:
+Release|Win32|C:\WinDivert\examples\passthru\|
diff --git a/examples/passthru/passthru/Release/vc143.pdb b/examples/passthru/passthru/Release/vc143.pdb
new file mode 100644
index 00000000..a7c42c03
Binary files /dev/null and b/examples/passthru/passthru/Release/vc143.pdb differ
diff --git a/examples/passthru/passthru/x64/Release/passthru.exe.recipe b/examples/passthru/passthru/x64/Release/passthru.exe.recipe
new file mode 100644
index 00000000..989016f5
--- /dev/null
+++ b/examples/passthru/passthru/x64/Release/passthru.exe.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ C:\WinDivert\install\MSVC\amd64\passthru.exe
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/passthru/passthru/x64/Release/passthru.obj b/examples/passthru/passthru/x64/Release/passthru.obj
new file mode 100644
index 00000000..902be983
Binary files /dev/null and b/examples/passthru/passthru/x64/Release/passthru.obj differ
diff --git a/examples/passthru/passthru/x64/Release/passthru.tlog/CL.command.1.tlog b/examples/passthru/passthru/x64/Release/passthru.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..3ebd8d99
Binary files /dev/null and b/examples/passthru/passthru/x64/Release/passthru.tlog/CL.command.1.tlog differ
diff --git a/examples/passthru/passthru/x64/Release/passthru.tlog/CL.read.1.tlog b/examples/passthru/passthru/x64/Release/passthru.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..6bf71133
Binary files /dev/null and b/examples/passthru/passthru/x64/Release/passthru.tlog/CL.read.1.tlog differ
diff --git a/examples/passthru/passthru/x64/Release/passthru.tlog/CL.write.1.tlog b/examples/passthru/passthru/x64/Release/passthru.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..26a8d5fa
Binary files /dev/null and b/examples/passthru/passthru/x64/Release/passthru.tlog/CL.write.1.tlog differ
diff --git a/examples/passthru/passthru/x64/Release/passthru.tlog/Cl.items.tlog b/examples/passthru/passthru/x64/Release/passthru.tlog/Cl.items.tlog
new file mode 100644
index 00000000..80d345a0
--- /dev/null
+++ b/examples/passthru/passthru/x64/Release/passthru.tlog/Cl.items.tlog
@@ -0,0 +1 @@
+C:\WinDivert\examples\passthru\passthru.c;C:\WinDivert\examples\passthru\passthru\x64\Release\passthru.obj
diff --git a/examples/passthru/passthru/x64/Release/passthru.tlog/link.command.1.tlog b/examples/passthru/passthru/x64/Release/passthru.tlog/link.command.1.tlog
new file mode 100644
index 00000000..55dd4822
Binary files /dev/null and b/examples/passthru/passthru/x64/Release/passthru.tlog/link.command.1.tlog differ
diff --git a/examples/passthru/passthru/x64/Release/passthru.tlog/link.read.1.tlog b/examples/passthru/passthru/x64/Release/passthru.tlog/link.read.1.tlog
new file mode 100644
index 00000000..ebdac039
Binary files /dev/null and b/examples/passthru/passthru/x64/Release/passthru.tlog/link.read.1.tlog differ
diff --git a/examples/passthru/passthru/x64/Release/passthru.tlog/link.secondary.1.tlog b/examples/passthru/passthru/x64/Release/passthru.tlog/link.secondary.1.tlog
new file mode 100644
index 00000000..52b253a5
--- /dev/null
+++ b/examples/passthru/passthru/x64/Release/passthru.tlog/link.secondary.1.tlog
@@ -0,0 +1,2 @@
+^C:\WINDIVERT\EXAMPLES\PASSTHRU\PASSTHRU\X64\RELEASE\PASSTHRU.OBJ
+C:\WinDivert\install\MSVC\amd64\passthru.ILK
diff --git a/examples/passthru/passthru/x64/Release/passthru.tlog/link.write.1.tlog b/examples/passthru/passthru/x64/Release/passthru.tlog/link.write.1.tlog
new file mode 100644
index 00000000..a838e338
Binary files /dev/null and b/examples/passthru/passthru/x64/Release/passthru.tlog/link.write.1.tlog differ
diff --git a/examples/passthru/passthru/x64/Release/passthru.tlog/passthru.lastbuildstate b/examples/passthru/passthru/x64/Release/passthru.tlog/passthru.lastbuildstate
new file mode 100644
index 00000000..ed05f457
--- /dev/null
+++ b/examples/passthru/passthru/x64/Release/passthru.tlog/passthru.lastbuildstate
@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.26100.0:
+Release|x64|C:\WinDivert\examples\passthru\|
diff --git a/examples/passthru/passthru/x64/Release/vc143.pdb b/examples/passthru/passthru/x64/Release/vc143.pdb
new file mode 100644
index 00000000..ed90c48f
Binary files /dev/null and b/examples/passthru/passthru/x64/Release/vc143.pdb differ
diff --git a/examples/passthru/x64/Release/passthru.obj b/examples/passthru/x64/Release/passthru.obj
new file mode 100644
index 00000000..597c8576
Binary files /dev/null and b/examples/passthru/x64/Release/passthru.obj differ
diff --git a/examples/passthru/x64/Release/passthru.tlog/CL.command.1.tlog b/examples/passthru/x64/Release/passthru.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..3f57a3c8
Binary files /dev/null and b/examples/passthru/x64/Release/passthru.tlog/CL.command.1.tlog differ
diff --git a/examples/passthru/x64/Release/passthru.tlog/CL.read.1.tlog b/examples/passthru/x64/Release/passthru.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..3a55df73
Binary files /dev/null and b/examples/passthru/x64/Release/passthru.tlog/CL.read.1.tlog differ
diff --git a/examples/passthru/x64/Release/passthru.tlog/CL.write.1.tlog b/examples/passthru/x64/Release/passthru.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..93aa6edd
Binary files /dev/null and b/examples/passthru/x64/Release/passthru.tlog/CL.write.1.tlog differ
diff --git a/examples/passthru/x64/Release/passthru.tlog/link.command.1.tlog b/examples/passthru/x64/Release/passthru.tlog/link.command.1.tlog
new file mode 100644
index 00000000..0e1ff80d
Binary files /dev/null and b/examples/passthru/x64/Release/passthru.tlog/link.command.1.tlog differ
diff --git a/examples/passthru/x64/Release/passthru.tlog/link.read.1.tlog b/examples/passthru/x64/Release/passthru.tlog/link.read.1.tlog
new file mode 100644
index 00000000..791b37d3
Binary files /dev/null and b/examples/passthru/x64/Release/passthru.tlog/link.read.1.tlog differ
diff --git a/examples/passthru/x64/Release/passthru.tlog/link.write.1.tlog b/examples/passthru/x64/Release/passthru.tlog/link.write.1.tlog
new file mode 100644
index 00000000..23415f8c
Binary files /dev/null and b/examples/passthru/x64/Release/passthru.tlog/link.write.1.tlog differ
diff --git a/examples/passthru/x64/Release/passthru.tlog/passthru.lastbuildstate b/examples/passthru/x64/Release/passthru.tlog/passthru.lastbuildstate
new file mode 100644
index 00000000..bcc41516
--- /dev/null
+++ b/examples/passthru/x64/Release/passthru.tlog/passthru.lastbuildstate
@@ -0,0 +1,2 @@
+#TargetFrameworkVersion=:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1
+Release|x64|C:\Users\kujax\OneDrive\Desktop\WinDivert-master\examples\passthru\|
diff --git a/examples/passthru/x64/Release/vc140.pdb b/examples/passthru/x64/Release/vc140.pdb
new file mode 100644
index 00000000..291a3b02
Binary files /dev/null and b/examples/passthru/x64/Release/vc140.pdb differ
diff --git a/examples/socketdump/.vs/socketdump/FileContentIndex/b13aa439-1470-479f-85eb-9d1ccc7fb38d.vsidx b/examples/socketdump/.vs/socketdump/FileContentIndex/b13aa439-1470-479f-85eb-9d1ccc7fb38d.vsidx
new file mode 100644
index 00000000..cbded04d
Binary files /dev/null and b/examples/socketdump/.vs/socketdump/FileContentIndex/b13aa439-1470-479f-85eb-9d1ccc7fb38d.vsidx differ
diff --git a/examples/socketdump/.vs/socketdump/v17/.suo b/examples/socketdump/.vs/socketdump/v17/.suo
new file mode 100644
index 00000000..7ac6439c
Binary files /dev/null and b/examples/socketdump/.vs/socketdump/v17/.suo differ
diff --git a/examples/socketdump/.vs/socketdump/v17/Browse.VC.db b/examples/socketdump/.vs/socketdump/v17/Browse.VC.db
new file mode 100644
index 00000000..70ffd3c5
Binary files /dev/null and b/examples/socketdump/.vs/socketdump/v17/Browse.VC.db differ
diff --git a/examples/socketdump/.vs/socketdump/v17/DocumentLayout.backup.json b/examples/socketdump/.vs/socketdump/v17/DocumentLayout.backup.json
new file mode 100644
index 00000000..56e490ac
--- /dev/null
+++ b/examples/socketdump/.vs/socketdump/v17/DocumentLayout.backup.json
@@ -0,0 +1,12 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "E:\\Unity\\WinDivert\\examples\\socketdump\\",
+ "Documents": [],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/socketdump/.vs/socketdump/v17/DocumentLayout.json b/examples/socketdump/.vs/socketdump/v17/DocumentLayout.json
new file mode 100644
index 00000000..56e490ac
--- /dev/null
+++ b/examples/socketdump/.vs/socketdump/v17/DocumentLayout.json
@@ -0,0 +1,12 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "E:\\Unity\\WinDivert\\examples\\socketdump\\",
+ "Documents": [],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/socketdump/.vs/socketdump/v17/Solution.VC.db b/examples/socketdump/.vs/socketdump/v17/Solution.VC.db
new file mode 100644
index 00000000..1351de46
Binary files /dev/null and b/examples/socketdump/.vs/socketdump/v17/Solution.VC.db differ
diff --git a/examples/socketdump/Release/socketdump.obj b/examples/socketdump/Release/socketdump.obj
new file mode 100644
index 00000000..fce8c5f0
Binary files /dev/null and b/examples/socketdump/Release/socketdump.obj differ
diff --git a/examples/socketdump/Release/socketdump.tlog/CL.command.1.tlog b/examples/socketdump/Release/socketdump.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..7136cc44
Binary files /dev/null and b/examples/socketdump/Release/socketdump.tlog/CL.command.1.tlog differ
diff --git a/examples/socketdump/Release/socketdump.tlog/CL.read.1.tlog b/examples/socketdump/Release/socketdump.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..613b1478
Binary files /dev/null and b/examples/socketdump/Release/socketdump.tlog/CL.read.1.tlog differ
diff --git a/examples/socketdump/Release/socketdump.tlog/CL.write.1.tlog b/examples/socketdump/Release/socketdump.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..f863e2bf
Binary files /dev/null and b/examples/socketdump/Release/socketdump.tlog/CL.write.1.tlog differ
diff --git a/examples/socketdump/Release/socketdump.tlog/link.command.1.tlog b/examples/socketdump/Release/socketdump.tlog/link.command.1.tlog
new file mode 100644
index 00000000..5bd38f85
Binary files /dev/null and b/examples/socketdump/Release/socketdump.tlog/link.command.1.tlog differ
diff --git a/examples/socketdump/Release/socketdump.tlog/link.read.1.tlog b/examples/socketdump/Release/socketdump.tlog/link.read.1.tlog
new file mode 100644
index 00000000..a907857a
Binary files /dev/null and b/examples/socketdump/Release/socketdump.tlog/link.read.1.tlog differ
diff --git a/examples/socketdump/Release/socketdump.tlog/link.write.1.tlog b/examples/socketdump/Release/socketdump.tlog/link.write.1.tlog
new file mode 100644
index 00000000..17742347
Binary files /dev/null and b/examples/socketdump/Release/socketdump.tlog/link.write.1.tlog differ
diff --git a/examples/socketdump/Release/socketdump.tlog/socketdump.lastbuildstate b/examples/socketdump/Release/socketdump.tlog/socketdump.lastbuildstate
new file mode 100644
index 00000000..355fae9f
--- /dev/null
+++ b/examples/socketdump/Release/socketdump.tlog/socketdump.lastbuildstate
@@ -0,0 +1,2 @@
+#TargetFrameworkVersion=:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1
+Release|Win32|C:\Users\kujax\OneDrive\Desktop\WinDivert-master\examples\socketdump\|
diff --git a/examples/socketdump/Release/vc140.pdb b/examples/socketdump/Release/vc140.pdb
new file mode 100644
index 00000000..80121065
Binary files /dev/null and b/examples/socketdump/Release/vc140.pdb differ
diff --git a/examples/socketdump/socketdump.sln b/examples/socketdump/socketdump.sln
new file mode 100644
index 00000000..14596943
--- /dev/null
+++ b/examples/socketdump/socketdump.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.13.35825.156 d17.13
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "socketdump", "socketdump.vcxproj", "{77F80E85-2D4B-90AD-6913-8435045FC423}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {77F80E85-2D4B-90AD-6913-8435045FC423}.Release|x64.ActiveCfg = Release|x64
+ {77F80E85-2D4B-90AD-6913-8435045FC423}.Release|x64.Build.0 = Release|x64
+ {77F80E85-2D4B-90AD-6913-8435045FC423}.Release|x86.ActiveCfg = Release|Win32
+ {77F80E85-2D4B-90AD-6913-8435045FC423}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {67559BEE-4CE4-4F6F-AB7C-F66CE4244DD6}
+ EndGlobalSection
+EndGlobal
diff --git a/examples/socketdump/socketdump.vcxproj b/examples/socketdump/socketdump.vcxproj
index c515229b..c7b82436 100644
--- a/examples/socketdump/socketdump.vcxproj
+++ b/examples/socketdump/socketdump.vcxproj
@@ -35,39 +35,41 @@
-->
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
-
-
- false
- MinSpace
- Default
- ..\..\include
-
-
-
- socketdump
- socketdump
-
-
-
- v140
- Application
-
-
-
-
- ..\..\install\MSVC\i386\WinDivert.lib;shlwapi.lib;%(AdditionalDependencies)
- ..\..\install\MSVC\amd64\WinDivert.lib;shlwapi.lib;%(AdditionalDependencies)
-
-
-
-
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+
+ false
+ MinSpace
+ Default
+ ..\..\include
+
+
+
+ socketdump
+ socketdump
+ {77F80E85-2D4B-90AD-6913-8435045FC423}
+ 10.0.26100.0
+
+
+
+ v143
+ Application
+
+
+
+
+ ..\..\install\MSVC\i386\WinDivert.lib;shlwapi.lib;%(AdditionalDependencies)
+ ..\..\install\MSVC\amd64\WinDivert.lib;shlwapi.lib;%(AdditionalDependencies)
+
+
+
+
\ No newline at end of file
diff --git a/examples/socketdump/socketdump.vcxproj.user b/examples/socketdump/socketdump.vcxproj.user
new file mode 100644
index 00000000..88a55094
--- /dev/null
+++ b/examples/socketdump/socketdump.vcxproj.user
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/examples/socketdump/socketdump/Release/socketdump.exe.recipe b/examples/socketdump/socketdump/Release/socketdump.exe.recipe
new file mode 100644
index 00000000..6c6d9e0b
--- /dev/null
+++ b/examples/socketdump/socketdump/Release/socketdump.exe.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ C:\WinDivert\install\MSVC\i386\socketdump.exe
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/socketdump/socketdump/Release/socketdump.obj b/examples/socketdump/socketdump/Release/socketdump.obj
new file mode 100644
index 00000000..4e95cb07
Binary files /dev/null and b/examples/socketdump/socketdump/Release/socketdump.obj differ
diff --git a/examples/socketdump/socketdump/Release/socketdump.tlog/CL.command.1.tlog b/examples/socketdump/socketdump/Release/socketdump.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..365f19a8
Binary files /dev/null and b/examples/socketdump/socketdump/Release/socketdump.tlog/CL.command.1.tlog differ
diff --git a/examples/socketdump/socketdump/Release/socketdump.tlog/CL.read.1.tlog b/examples/socketdump/socketdump/Release/socketdump.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..7a3f9bc6
Binary files /dev/null and b/examples/socketdump/socketdump/Release/socketdump.tlog/CL.read.1.tlog differ
diff --git a/examples/socketdump/socketdump/Release/socketdump.tlog/CL.write.1.tlog b/examples/socketdump/socketdump/Release/socketdump.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..42d4f703
Binary files /dev/null and b/examples/socketdump/socketdump/Release/socketdump.tlog/CL.write.1.tlog differ
diff --git a/examples/socketdump/socketdump/Release/socketdump.tlog/Cl.items.tlog b/examples/socketdump/socketdump/Release/socketdump.tlog/Cl.items.tlog
new file mode 100644
index 00000000..00f6f626
--- /dev/null
+++ b/examples/socketdump/socketdump/Release/socketdump.tlog/Cl.items.tlog
@@ -0,0 +1 @@
+C:\WinDivert\examples\socketdump\socketdump.c;C:\WinDivert\examples\socketdump\socketdump\Release\socketdump.obj
diff --git a/examples/socketdump/socketdump/Release/socketdump.tlog/link.command.1.tlog b/examples/socketdump/socketdump/Release/socketdump.tlog/link.command.1.tlog
new file mode 100644
index 00000000..6b66ddaa
Binary files /dev/null and b/examples/socketdump/socketdump/Release/socketdump.tlog/link.command.1.tlog differ
diff --git a/examples/socketdump/socketdump/Release/socketdump.tlog/link.read.1.tlog b/examples/socketdump/socketdump/Release/socketdump.tlog/link.read.1.tlog
new file mode 100644
index 00000000..91338d62
Binary files /dev/null and b/examples/socketdump/socketdump/Release/socketdump.tlog/link.read.1.tlog differ
diff --git a/examples/socketdump/socketdump/Release/socketdump.tlog/link.secondary.1.tlog b/examples/socketdump/socketdump/Release/socketdump.tlog/link.secondary.1.tlog
new file mode 100644
index 00000000..643b7b1d
--- /dev/null
+++ b/examples/socketdump/socketdump/Release/socketdump.tlog/link.secondary.1.tlog
@@ -0,0 +1,2 @@
+^C:\WINDIVERT\EXAMPLES\SOCKETDUMP\SOCKETDUMP\RELEASE\SOCKETDUMP.OBJ
+C:\WinDivert\install\MSVC\i386\socketdump.ILK
diff --git a/examples/socketdump/socketdump/Release/socketdump.tlog/link.write.1.tlog b/examples/socketdump/socketdump/Release/socketdump.tlog/link.write.1.tlog
new file mode 100644
index 00000000..08e23066
Binary files /dev/null and b/examples/socketdump/socketdump/Release/socketdump.tlog/link.write.1.tlog differ
diff --git a/examples/socketdump/socketdump/Release/socketdump.tlog/socketdump.lastbuildstate b/examples/socketdump/socketdump/Release/socketdump.tlog/socketdump.lastbuildstate
new file mode 100644
index 00000000..a24497ab
--- /dev/null
+++ b/examples/socketdump/socketdump/Release/socketdump.tlog/socketdump.lastbuildstate
@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.26100.0:
+Release|Win32|C:\WinDivert\examples\socketdump\|
diff --git a/examples/socketdump/socketdump/Release/vc143.pdb b/examples/socketdump/socketdump/Release/vc143.pdb
new file mode 100644
index 00000000..a8a86cfc
Binary files /dev/null and b/examples/socketdump/socketdump/Release/vc143.pdb differ
diff --git a/examples/socketdump/socketdump/x64/Release/socketdump.exe.recipe b/examples/socketdump/socketdump/x64/Release/socketdump.exe.recipe
new file mode 100644
index 00000000..96b20b8b
--- /dev/null
+++ b/examples/socketdump/socketdump/x64/Release/socketdump.exe.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ C:\WinDivert\install\MSVC\amd64\socketdump.exe
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/socketdump/socketdump/x64/Release/socketdump.obj b/examples/socketdump/socketdump/x64/Release/socketdump.obj
new file mode 100644
index 00000000..f1b1227c
Binary files /dev/null and b/examples/socketdump/socketdump/x64/Release/socketdump.obj differ
diff --git a/examples/socketdump/socketdump/x64/Release/socketdump.tlog/CL.command.1.tlog b/examples/socketdump/socketdump/x64/Release/socketdump.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..41119149
Binary files /dev/null and b/examples/socketdump/socketdump/x64/Release/socketdump.tlog/CL.command.1.tlog differ
diff --git a/examples/socketdump/socketdump/x64/Release/socketdump.tlog/CL.read.1.tlog b/examples/socketdump/socketdump/x64/Release/socketdump.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..273ffe26
Binary files /dev/null and b/examples/socketdump/socketdump/x64/Release/socketdump.tlog/CL.read.1.tlog differ
diff --git a/examples/socketdump/socketdump/x64/Release/socketdump.tlog/CL.write.1.tlog b/examples/socketdump/socketdump/x64/Release/socketdump.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..14e71546
Binary files /dev/null and b/examples/socketdump/socketdump/x64/Release/socketdump.tlog/CL.write.1.tlog differ
diff --git a/examples/socketdump/socketdump/x64/Release/socketdump.tlog/Cl.items.tlog b/examples/socketdump/socketdump/x64/Release/socketdump.tlog/Cl.items.tlog
new file mode 100644
index 00000000..049cb097
--- /dev/null
+++ b/examples/socketdump/socketdump/x64/Release/socketdump.tlog/Cl.items.tlog
@@ -0,0 +1 @@
+C:\WinDivert\examples\socketdump\socketdump.c;C:\WinDivert\examples\socketdump\socketdump\x64\Release\socketdump.obj
diff --git a/examples/socketdump/socketdump/x64/Release/socketdump.tlog/link.command.1.tlog b/examples/socketdump/socketdump/x64/Release/socketdump.tlog/link.command.1.tlog
new file mode 100644
index 00000000..67f1c682
Binary files /dev/null and b/examples/socketdump/socketdump/x64/Release/socketdump.tlog/link.command.1.tlog differ
diff --git a/examples/socketdump/socketdump/x64/Release/socketdump.tlog/link.read.1.tlog b/examples/socketdump/socketdump/x64/Release/socketdump.tlog/link.read.1.tlog
new file mode 100644
index 00000000..d63f117b
Binary files /dev/null and b/examples/socketdump/socketdump/x64/Release/socketdump.tlog/link.read.1.tlog differ
diff --git a/examples/socketdump/socketdump/x64/Release/socketdump.tlog/link.secondary.1.tlog b/examples/socketdump/socketdump/x64/Release/socketdump.tlog/link.secondary.1.tlog
new file mode 100644
index 00000000..8f41df7b
--- /dev/null
+++ b/examples/socketdump/socketdump/x64/Release/socketdump.tlog/link.secondary.1.tlog
@@ -0,0 +1,2 @@
+^C:\WINDIVERT\EXAMPLES\SOCKETDUMP\SOCKETDUMP\X64\RELEASE\SOCKETDUMP.OBJ
+C:\WinDivert\install\MSVC\amd64\socketdump.ILK
diff --git a/examples/socketdump/socketdump/x64/Release/socketdump.tlog/link.write.1.tlog b/examples/socketdump/socketdump/x64/Release/socketdump.tlog/link.write.1.tlog
new file mode 100644
index 00000000..a2de0f4b
Binary files /dev/null and b/examples/socketdump/socketdump/x64/Release/socketdump.tlog/link.write.1.tlog differ
diff --git a/examples/socketdump/socketdump/x64/Release/socketdump.tlog/socketdump.lastbuildstate b/examples/socketdump/socketdump/x64/Release/socketdump.tlog/socketdump.lastbuildstate
new file mode 100644
index 00000000..1cc1f025
--- /dev/null
+++ b/examples/socketdump/socketdump/x64/Release/socketdump.tlog/socketdump.lastbuildstate
@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.26100.0:
+Release|x64|C:\WinDivert\examples\socketdump\|
diff --git a/examples/socketdump/socketdump/x64/Release/vc143.pdb b/examples/socketdump/socketdump/x64/Release/vc143.pdb
new file mode 100644
index 00000000..390bdfa3
Binary files /dev/null and b/examples/socketdump/socketdump/x64/Release/vc143.pdb differ
diff --git a/examples/socketdump/x64/Release/socketdump.obj b/examples/socketdump/x64/Release/socketdump.obj
new file mode 100644
index 00000000..8512d0c1
Binary files /dev/null and b/examples/socketdump/x64/Release/socketdump.obj differ
diff --git a/examples/socketdump/x64/Release/socketdump.tlog/CL.command.1.tlog b/examples/socketdump/x64/Release/socketdump.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..5d892a45
Binary files /dev/null and b/examples/socketdump/x64/Release/socketdump.tlog/CL.command.1.tlog differ
diff --git a/examples/socketdump/x64/Release/socketdump.tlog/CL.read.1.tlog b/examples/socketdump/x64/Release/socketdump.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..de97b395
Binary files /dev/null and b/examples/socketdump/x64/Release/socketdump.tlog/CL.read.1.tlog differ
diff --git a/examples/socketdump/x64/Release/socketdump.tlog/CL.write.1.tlog b/examples/socketdump/x64/Release/socketdump.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..cbd38954
Binary files /dev/null and b/examples/socketdump/x64/Release/socketdump.tlog/CL.write.1.tlog differ
diff --git a/examples/socketdump/x64/Release/socketdump.tlog/link.command.1.tlog b/examples/socketdump/x64/Release/socketdump.tlog/link.command.1.tlog
new file mode 100644
index 00000000..3e416a60
Binary files /dev/null and b/examples/socketdump/x64/Release/socketdump.tlog/link.command.1.tlog differ
diff --git a/examples/socketdump/x64/Release/socketdump.tlog/link.read.1.tlog b/examples/socketdump/x64/Release/socketdump.tlog/link.read.1.tlog
new file mode 100644
index 00000000..55d11e96
Binary files /dev/null and b/examples/socketdump/x64/Release/socketdump.tlog/link.read.1.tlog differ
diff --git a/examples/socketdump/x64/Release/socketdump.tlog/link.write.1.tlog b/examples/socketdump/x64/Release/socketdump.tlog/link.write.1.tlog
new file mode 100644
index 00000000..16e9dcd9
Binary files /dev/null and b/examples/socketdump/x64/Release/socketdump.tlog/link.write.1.tlog differ
diff --git a/examples/socketdump/x64/Release/socketdump.tlog/socketdump.lastbuildstate b/examples/socketdump/x64/Release/socketdump.tlog/socketdump.lastbuildstate
new file mode 100644
index 00000000..11c44627
--- /dev/null
+++ b/examples/socketdump/x64/Release/socketdump.tlog/socketdump.lastbuildstate
@@ -0,0 +1,2 @@
+#TargetFrameworkVersion=:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1
+Release|x64|C:\Users\kujax\OneDrive\Desktop\WinDivert-master\examples\socketdump\|
diff --git a/examples/socketdump/x64/Release/vc140.pdb b/examples/socketdump/x64/Release/vc140.pdb
new file mode 100644
index 00000000..fa6336c3
Binary files /dev/null and b/examples/socketdump/x64/Release/vc140.pdb differ
diff --git a/examples/streamdump/.vs/streamdump/FileContentIndex/03d8c252-3eaa-4bb6-a4fd-2fadd85840bb.vsidx b/examples/streamdump/.vs/streamdump/FileContentIndex/03d8c252-3eaa-4bb6-a4fd-2fadd85840bb.vsidx
new file mode 100644
index 00000000..3338e25b
Binary files /dev/null and b/examples/streamdump/.vs/streamdump/FileContentIndex/03d8c252-3eaa-4bb6-a4fd-2fadd85840bb.vsidx differ
diff --git a/examples/streamdump/.vs/streamdump/v17/.suo b/examples/streamdump/.vs/streamdump/v17/.suo
new file mode 100644
index 00000000..a83446e5
Binary files /dev/null and b/examples/streamdump/.vs/streamdump/v17/.suo differ
diff --git a/examples/streamdump/.vs/streamdump/v17/Browse.VC.db b/examples/streamdump/.vs/streamdump/v17/Browse.VC.db
new file mode 100644
index 00000000..d9997110
Binary files /dev/null and b/examples/streamdump/.vs/streamdump/v17/Browse.VC.db differ
diff --git a/examples/streamdump/.vs/streamdump/v17/DocumentLayout.backup.json b/examples/streamdump/.vs/streamdump/v17/DocumentLayout.backup.json
new file mode 100644
index 00000000..ed81f445
--- /dev/null
+++ b/examples/streamdump/.vs/streamdump/v17/DocumentLayout.backup.json
@@ -0,0 +1,12 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "E:\\Unity\\WinDivert\\examples\\streamdump\\",
+ "Documents": [],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/streamdump/.vs/streamdump/v17/DocumentLayout.json b/examples/streamdump/.vs/streamdump/v17/DocumentLayout.json
new file mode 100644
index 00000000..ed81f445
--- /dev/null
+++ b/examples/streamdump/.vs/streamdump/v17/DocumentLayout.json
@@ -0,0 +1,12 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "E:\\Unity\\WinDivert\\examples\\streamdump\\",
+ "Documents": [],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/streamdump/.vs/streamdump/v17/Solution.VC.db b/examples/streamdump/.vs/streamdump/v17/Solution.VC.db
new file mode 100644
index 00000000..3ec272c7
Binary files /dev/null and b/examples/streamdump/.vs/streamdump/v17/Solution.VC.db differ
diff --git a/examples/streamdump/Release/streamdump.obj b/examples/streamdump/Release/streamdump.obj
new file mode 100644
index 00000000..46b7f19c
Binary files /dev/null and b/examples/streamdump/Release/streamdump.obj differ
diff --git a/examples/streamdump/Release/streamdump.tlog/CL.command.1.tlog b/examples/streamdump/Release/streamdump.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..58179934
Binary files /dev/null and b/examples/streamdump/Release/streamdump.tlog/CL.command.1.tlog differ
diff --git a/examples/streamdump/Release/streamdump.tlog/CL.read.1.tlog b/examples/streamdump/Release/streamdump.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..c62f71a4
Binary files /dev/null and b/examples/streamdump/Release/streamdump.tlog/CL.read.1.tlog differ
diff --git a/examples/streamdump/Release/streamdump.tlog/CL.write.1.tlog b/examples/streamdump/Release/streamdump.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..8ae54ee1
Binary files /dev/null and b/examples/streamdump/Release/streamdump.tlog/CL.write.1.tlog differ
diff --git a/examples/streamdump/Release/streamdump.tlog/link.command.1.tlog b/examples/streamdump/Release/streamdump.tlog/link.command.1.tlog
new file mode 100644
index 00000000..7b152e49
Binary files /dev/null and b/examples/streamdump/Release/streamdump.tlog/link.command.1.tlog differ
diff --git a/examples/streamdump/Release/streamdump.tlog/link.read.1.tlog b/examples/streamdump/Release/streamdump.tlog/link.read.1.tlog
new file mode 100644
index 00000000..5a14154c
Binary files /dev/null and b/examples/streamdump/Release/streamdump.tlog/link.read.1.tlog differ
diff --git a/examples/streamdump/Release/streamdump.tlog/link.write.1.tlog b/examples/streamdump/Release/streamdump.tlog/link.write.1.tlog
new file mode 100644
index 00000000..d283532a
Binary files /dev/null and b/examples/streamdump/Release/streamdump.tlog/link.write.1.tlog differ
diff --git a/examples/streamdump/Release/streamdump.tlog/streamdump.lastbuildstate b/examples/streamdump/Release/streamdump.tlog/streamdump.lastbuildstate
new file mode 100644
index 00000000..31bcf02e
--- /dev/null
+++ b/examples/streamdump/Release/streamdump.tlog/streamdump.lastbuildstate
@@ -0,0 +1,2 @@
+#TargetFrameworkVersion=:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1
+Release|Win32|C:\Users\kujax\OneDrive\Desktop\WinDivert-master\examples\streamdump\|
diff --git a/examples/streamdump/Release/vc140.pdb b/examples/streamdump/Release/vc140.pdb
new file mode 100644
index 00000000..add34b5e
Binary files /dev/null and b/examples/streamdump/Release/vc140.pdb differ
diff --git a/examples/streamdump/streamdump.sln b/examples/streamdump/streamdump.sln
new file mode 100644
index 00000000..32c7c387
--- /dev/null
+++ b/examples/streamdump/streamdump.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.13.35825.156 d17.13
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "streamdump", "streamdump.vcxproj", "{CEC73179-C5E3-B758-76EC-AA5DDAEFEAAB}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {CEC73179-C5E3-B758-76EC-AA5DDAEFEAAB}.Release|x64.ActiveCfg = Release|x64
+ {CEC73179-C5E3-B758-76EC-AA5DDAEFEAAB}.Release|x64.Build.0 = Release|x64
+ {CEC73179-C5E3-B758-76EC-AA5DDAEFEAAB}.Release|x86.ActiveCfg = Release|Win32
+ {CEC73179-C5E3-B758-76EC-AA5DDAEFEAAB}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {771466CB-AF04-4BCA-9C00-1391DBA921B0}
+ EndGlobalSection
+EndGlobal
diff --git a/examples/streamdump/streamdump.vcxproj b/examples/streamdump/streamdump.vcxproj
index 567fe2b2..d8f97edb 100644
--- a/examples/streamdump/streamdump.vcxproj
+++ b/examples/streamdump/streamdump.vcxproj
@@ -35,39 +35,41 @@
-->
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
-
-
- false
- MinSpace
- Default
- ..\..\include
-
-
-
- streamdump
- streamdump
-
-
-
- v140
- Application
-
-
-
-
- ..\..\install\MSVC\i386\WinDivert.lib;ws2_32.lib;%(AdditionalDependencies)
- ..\..\install\MSVC\amd64\WinDivert.lib;ws2_32.lib;%(AdditionalDependencies)
-
-
-
-
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+
+ false
+ MinSpace
+ Default
+ ..\..\include
+
+
+
+ streamdump
+ streamdump
+ {CEC73179-C5E3-B758-76EC-AA5DDAEFEAAB}
+ 10.0.26100.0
+
+
+
+ v143
+ Application
+
+
+
+
+ ..\..\install\MSVC\i386\WinDivert.lib;ws2_32.lib;%(AdditionalDependencies)
+ ..\..\install\MSVC\amd64\WinDivert.lib;ws2_32.lib;%(AdditionalDependencies)
+
+
+
+
\ No newline at end of file
diff --git a/examples/streamdump/streamdump.vcxproj.user b/examples/streamdump/streamdump.vcxproj.user
new file mode 100644
index 00000000..88a55094
--- /dev/null
+++ b/examples/streamdump/streamdump.vcxproj.user
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/examples/streamdump/streamdump/Release/streamdump.exe.recipe b/examples/streamdump/streamdump/Release/streamdump.exe.recipe
new file mode 100644
index 00000000..3c3c5947
--- /dev/null
+++ b/examples/streamdump/streamdump/Release/streamdump.exe.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ C:\WinDivert\install\MSVC\i386\streamdump.exe
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/streamdump/streamdump/Release/streamdump.obj b/examples/streamdump/streamdump/Release/streamdump.obj
new file mode 100644
index 00000000..bdc15068
Binary files /dev/null and b/examples/streamdump/streamdump/Release/streamdump.obj differ
diff --git a/examples/streamdump/streamdump/Release/streamdump.tlog/CL.command.1.tlog b/examples/streamdump/streamdump/Release/streamdump.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..d9cde995
Binary files /dev/null and b/examples/streamdump/streamdump/Release/streamdump.tlog/CL.command.1.tlog differ
diff --git a/examples/streamdump/streamdump/Release/streamdump.tlog/CL.read.1.tlog b/examples/streamdump/streamdump/Release/streamdump.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..b76a9748
Binary files /dev/null and b/examples/streamdump/streamdump/Release/streamdump.tlog/CL.read.1.tlog differ
diff --git a/examples/streamdump/streamdump/Release/streamdump.tlog/CL.write.1.tlog b/examples/streamdump/streamdump/Release/streamdump.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..4137c463
Binary files /dev/null and b/examples/streamdump/streamdump/Release/streamdump.tlog/CL.write.1.tlog differ
diff --git a/examples/streamdump/streamdump/Release/streamdump.tlog/Cl.items.tlog b/examples/streamdump/streamdump/Release/streamdump.tlog/Cl.items.tlog
new file mode 100644
index 00000000..b9068bc3
--- /dev/null
+++ b/examples/streamdump/streamdump/Release/streamdump.tlog/Cl.items.tlog
@@ -0,0 +1 @@
+C:\WinDivert\examples\streamdump\streamdump.c;C:\WinDivert\examples\streamdump\streamdump\Release\streamdump.obj
diff --git a/examples/streamdump/streamdump/Release/streamdump.tlog/link.command.1.tlog b/examples/streamdump/streamdump/Release/streamdump.tlog/link.command.1.tlog
new file mode 100644
index 00000000..52b3f224
Binary files /dev/null and b/examples/streamdump/streamdump/Release/streamdump.tlog/link.command.1.tlog differ
diff --git a/examples/streamdump/streamdump/Release/streamdump.tlog/link.read.1.tlog b/examples/streamdump/streamdump/Release/streamdump.tlog/link.read.1.tlog
new file mode 100644
index 00000000..9a989b8d
Binary files /dev/null and b/examples/streamdump/streamdump/Release/streamdump.tlog/link.read.1.tlog differ
diff --git a/examples/streamdump/streamdump/Release/streamdump.tlog/link.secondary.1.tlog b/examples/streamdump/streamdump/Release/streamdump.tlog/link.secondary.1.tlog
new file mode 100644
index 00000000..4f8dd9a2
--- /dev/null
+++ b/examples/streamdump/streamdump/Release/streamdump.tlog/link.secondary.1.tlog
@@ -0,0 +1,2 @@
+^C:\WINDIVERT\EXAMPLES\STREAMDUMP\STREAMDUMP\RELEASE\STREAMDUMP.OBJ
+C:\WinDivert\install\MSVC\i386\streamdump.ILK
diff --git a/examples/streamdump/streamdump/Release/streamdump.tlog/link.write.1.tlog b/examples/streamdump/streamdump/Release/streamdump.tlog/link.write.1.tlog
new file mode 100644
index 00000000..027e9bd0
Binary files /dev/null and b/examples/streamdump/streamdump/Release/streamdump.tlog/link.write.1.tlog differ
diff --git a/examples/streamdump/streamdump/Release/streamdump.tlog/streamdump.lastbuildstate b/examples/streamdump/streamdump/Release/streamdump.tlog/streamdump.lastbuildstate
new file mode 100644
index 00000000..f36f8e66
--- /dev/null
+++ b/examples/streamdump/streamdump/Release/streamdump.tlog/streamdump.lastbuildstate
@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.26100.0:
+Release|Win32|C:\WinDivert\examples\streamdump\|
diff --git a/examples/streamdump/streamdump/Release/vc143.pdb b/examples/streamdump/streamdump/Release/vc143.pdb
new file mode 100644
index 00000000..7a0e5848
Binary files /dev/null and b/examples/streamdump/streamdump/Release/vc143.pdb differ
diff --git a/examples/streamdump/streamdump/x64/Release/streamdump.exe.recipe b/examples/streamdump/streamdump/x64/Release/streamdump.exe.recipe
new file mode 100644
index 00000000..c8534168
--- /dev/null
+++ b/examples/streamdump/streamdump/x64/Release/streamdump.exe.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ C:\WinDivert\install\MSVC\amd64\streamdump.exe
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/streamdump/streamdump/x64/Release/streamdump.obj b/examples/streamdump/streamdump/x64/Release/streamdump.obj
new file mode 100644
index 00000000..1fdc2488
Binary files /dev/null and b/examples/streamdump/streamdump/x64/Release/streamdump.obj differ
diff --git a/examples/streamdump/streamdump/x64/Release/streamdump.tlog/CL.command.1.tlog b/examples/streamdump/streamdump/x64/Release/streamdump.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..80331694
Binary files /dev/null and b/examples/streamdump/streamdump/x64/Release/streamdump.tlog/CL.command.1.tlog differ
diff --git a/examples/streamdump/streamdump/x64/Release/streamdump.tlog/CL.read.1.tlog b/examples/streamdump/streamdump/x64/Release/streamdump.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..d05f9ad0
Binary files /dev/null and b/examples/streamdump/streamdump/x64/Release/streamdump.tlog/CL.read.1.tlog differ
diff --git a/examples/streamdump/streamdump/x64/Release/streamdump.tlog/CL.write.1.tlog b/examples/streamdump/streamdump/x64/Release/streamdump.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..487042bc
Binary files /dev/null and b/examples/streamdump/streamdump/x64/Release/streamdump.tlog/CL.write.1.tlog differ
diff --git a/examples/streamdump/streamdump/x64/Release/streamdump.tlog/Cl.items.tlog b/examples/streamdump/streamdump/x64/Release/streamdump.tlog/Cl.items.tlog
new file mode 100644
index 00000000..91ccfe7f
--- /dev/null
+++ b/examples/streamdump/streamdump/x64/Release/streamdump.tlog/Cl.items.tlog
@@ -0,0 +1 @@
+C:\WinDivert\examples\streamdump\streamdump.c;C:\WinDivert\examples\streamdump\streamdump\x64\Release\streamdump.obj
diff --git a/examples/streamdump/streamdump/x64/Release/streamdump.tlog/link.command.1.tlog b/examples/streamdump/streamdump/x64/Release/streamdump.tlog/link.command.1.tlog
new file mode 100644
index 00000000..b8328f01
Binary files /dev/null and b/examples/streamdump/streamdump/x64/Release/streamdump.tlog/link.command.1.tlog differ
diff --git a/examples/streamdump/streamdump/x64/Release/streamdump.tlog/link.read.1.tlog b/examples/streamdump/streamdump/x64/Release/streamdump.tlog/link.read.1.tlog
new file mode 100644
index 00000000..83148602
Binary files /dev/null and b/examples/streamdump/streamdump/x64/Release/streamdump.tlog/link.read.1.tlog differ
diff --git a/examples/streamdump/streamdump/x64/Release/streamdump.tlog/link.secondary.1.tlog b/examples/streamdump/streamdump/x64/Release/streamdump.tlog/link.secondary.1.tlog
new file mode 100644
index 00000000..eab9ae47
--- /dev/null
+++ b/examples/streamdump/streamdump/x64/Release/streamdump.tlog/link.secondary.1.tlog
@@ -0,0 +1,2 @@
+^C:\WINDIVERT\EXAMPLES\STREAMDUMP\STREAMDUMP\X64\RELEASE\STREAMDUMP.OBJ
+C:\WinDivert\install\MSVC\amd64\streamdump.ILK
diff --git a/examples/streamdump/streamdump/x64/Release/streamdump.tlog/link.write.1.tlog b/examples/streamdump/streamdump/x64/Release/streamdump.tlog/link.write.1.tlog
new file mode 100644
index 00000000..1751f74d
Binary files /dev/null and b/examples/streamdump/streamdump/x64/Release/streamdump.tlog/link.write.1.tlog differ
diff --git a/examples/streamdump/streamdump/x64/Release/streamdump.tlog/streamdump.lastbuildstate b/examples/streamdump/streamdump/x64/Release/streamdump.tlog/streamdump.lastbuildstate
new file mode 100644
index 00000000..c378a01d
--- /dev/null
+++ b/examples/streamdump/streamdump/x64/Release/streamdump.tlog/streamdump.lastbuildstate
@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.26100.0:
+Release|x64|C:\WinDivert\examples\streamdump\|
diff --git a/examples/streamdump/streamdump/x64/Release/vc143.pdb b/examples/streamdump/streamdump/x64/Release/vc143.pdb
new file mode 100644
index 00000000..984b85ce
Binary files /dev/null and b/examples/streamdump/streamdump/x64/Release/vc143.pdb differ
diff --git a/examples/streamdump/x64/Release/streamdump.obj b/examples/streamdump/x64/Release/streamdump.obj
new file mode 100644
index 00000000..c1d75527
Binary files /dev/null and b/examples/streamdump/x64/Release/streamdump.obj differ
diff --git a/examples/streamdump/x64/Release/streamdump.tlog/CL.command.1.tlog b/examples/streamdump/x64/Release/streamdump.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..3a560b8c
Binary files /dev/null and b/examples/streamdump/x64/Release/streamdump.tlog/CL.command.1.tlog differ
diff --git a/examples/streamdump/x64/Release/streamdump.tlog/CL.read.1.tlog b/examples/streamdump/x64/Release/streamdump.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..35cdc79d
Binary files /dev/null and b/examples/streamdump/x64/Release/streamdump.tlog/CL.read.1.tlog differ
diff --git a/examples/streamdump/x64/Release/streamdump.tlog/CL.write.1.tlog b/examples/streamdump/x64/Release/streamdump.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..c22f5cc0
Binary files /dev/null and b/examples/streamdump/x64/Release/streamdump.tlog/CL.write.1.tlog differ
diff --git a/examples/streamdump/x64/Release/streamdump.tlog/link.command.1.tlog b/examples/streamdump/x64/Release/streamdump.tlog/link.command.1.tlog
new file mode 100644
index 00000000..f7862c14
Binary files /dev/null and b/examples/streamdump/x64/Release/streamdump.tlog/link.command.1.tlog differ
diff --git a/examples/streamdump/x64/Release/streamdump.tlog/link.read.1.tlog b/examples/streamdump/x64/Release/streamdump.tlog/link.read.1.tlog
new file mode 100644
index 00000000..5a9a2e8e
Binary files /dev/null and b/examples/streamdump/x64/Release/streamdump.tlog/link.read.1.tlog differ
diff --git a/examples/streamdump/x64/Release/streamdump.tlog/link.write.1.tlog b/examples/streamdump/x64/Release/streamdump.tlog/link.write.1.tlog
new file mode 100644
index 00000000..fa46840a
Binary files /dev/null and b/examples/streamdump/x64/Release/streamdump.tlog/link.write.1.tlog differ
diff --git a/examples/streamdump/x64/Release/streamdump.tlog/streamdump.lastbuildstate b/examples/streamdump/x64/Release/streamdump.tlog/streamdump.lastbuildstate
new file mode 100644
index 00000000..0215dcdd
--- /dev/null
+++ b/examples/streamdump/x64/Release/streamdump.tlog/streamdump.lastbuildstate
@@ -0,0 +1,2 @@
+#TargetFrameworkVersion=:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1
+Release|x64|C:\Users\kujax\OneDrive\Desktop\WinDivert-master\examples\streamdump\|
diff --git a/examples/streamdump/x64/Release/vc140.pdb b/examples/streamdump/x64/Release/vc140.pdb
new file mode 100644
index 00000000..dfed229f
Binary files /dev/null and b/examples/streamdump/x64/Release/vc140.pdb differ
diff --git a/examples/webfilter/.vs/webfilter/FileContentIndex/29eac37f-3e57-4d16-affe-b9814757a240.vsidx b/examples/webfilter/.vs/webfilter/FileContentIndex/29eac37f-3e57-4d16-affe-b9814757a240.vsidx
new file mode 100644
index 00000000..42054766
Binary files /dev/null and b/examples/webfilter/.vs/webfilter/FileContentIndex/29eac37f-3e57-4d16-affe-b9814757a240.vsidx differ
diff --git a/examples/webfilter/.vs/webfilter/v17/.suo b/examples/webfilter/.vs/webfilter/v17/.suo
new file mode 100644
index 00000000..b4a918f2
Binary files /dev/null and b/examples/webfilter/.vs/webfilter/v17/.suo differ
diff --git a/examples/webfilter/.vs/webfilter/v17/Browse.VC.db b/examples/webfilter/.vs/webfilter/v17/Browse.VC.db
new file mode 100644
index 00000000..5932dab2
Binary files /dev/null and b/examples/webfilter/.vs/webfilter/v17/Browse.VC.db differ
diff --git a/examples/webfilter/.vs/webfilter/v17/DocumentLayout.backup.json b/examples/webfilter/.vs/webfilter/v17/DocumentLayout.backup.json
new file mode 100644
index 00000000..3ced232e
--- /dev/null
+++ b/examples/webfilter/.vs/webfilter/v17/DocumentLayout.backup.json
@@ -0,0 +1,12 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "E:\\Unity\\WinDivert\\examples\\webfilter\\",
+ "Documents": [],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/webfilter/.vs/webfilter/v17/DocumentLayout.json b/examples/webfilter/.vs/webfilter/v17/DocumentLayout.json
new file mode 100644
index 00000000..3ced232e
--- /dev/null
+++ b/examples/webfilter/.vs/webfilter/v17/DocumentLayout.json
@@ -0,0 +1,12 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "E:\\Unity\\WinDivert\\examples\\webfilter\\",
+ "Documents": [],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/webfilter/.vs/webfilter/v17/Solution.VC.db b/examples/webfilter/.vs/webfilter/v17/Solution.VC.db
new file mode 100644
index 00000000..3be86a18
Binary files /dev/null and b/examples/webfilter/.vs/webfilter/v17/Solution.VC.db differ
diff --git a/examples/webfilter/Release/vc140.pdb b/examples/webfilter/Release/vc140.pdb
new file mode 100644
index 00000000..987fd47e
Binary files /dev/null and b/examples/webfilter/Release/vc140.pdb differ
diff --git a/examples/webfilter/Release/webfilter.obj b/examples/webfilter/Release/webfilter.obj
new file mode 100644
index 00000000..008e8f9a
Binary files /dev/null and b/examples/webfilter/Release/webfilter.obj differ
diff --git a/examples/webfilter/Release/webfilter.tlog/CL.command.1.tlog b/examples/webfilter/Release/webfilter.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..311274f5
Binary files /dev/null and b/examples/webfilter/Release/webfilter.tlog/CL.command.1.tlog differ
diff --git a/examples/webfilter/Release/webfilter.tlog/CL.read.1.tlog b/examples/webfilter/Release/webfilter.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..c9e39fcd
Binary files /dev/null and b/examples/webfilter/Release/webfilter.tlog/CL.read.1.tlog differ
diff --git a/examples/webfilter/Release/webfilter.tlog/CL.write.1.tlog b/examples/webfilter/Release/webfilter.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..f29e3a79
Binary files /dev/null and b/examples/webfilter/Release/webfilter.tlog/CL.write.1.tlog differ
diff --git a/examples/webfilter/Release/webfilter.tlog/link.command.1.tlog b/examples/webfilter/Release/webfilter.tlog/link.command.1.tlog
new file mode 100644
index 00000000..0ef66202
Binary files /dev/null and b/examples/webfilter/Release/webfilter.tlog/link.command.1.tlog differ
diff --git a/examples/webfilter/Release/webfilter.tlog/link.read.1.tlog b/examples/webfilter/Release/webfilter.tlog/link.read.1.tlog
new file mode 100644
index 00000000..706524b9
Binary files /dev/null and b/examples/webfilter/Release/webfilter.tlog/link.read.1.tlog differ
diff --git a/examples/webfilter/Release/webfilter.tlog/link.write.1.tlog b/examples/webfilter/Release/webfilter.tlog/link.write.1.tlog
new file mode 100644
index 00000000..0247bbfb
Binary files /dev/null and b/examples/webfilter/Release/webfilter.tlog/link.write.1.tlog differ
diff --git a/examples/webfilter/Release/webfilter.tlog/webfilter.lastbuildstate b/examples/webfilter/Release/webfilter.tlog/webfilter.lastbuildstate
new file mode 100644
index 00000000..b600a5ad
--- /dev/null
+++ b/examples/webfilter/Release/webfilter.tlog/webfilter.lastbuildstate
@@ -0,0 +1,2 @@
+#TargetFrameworkVersion=:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1
+Release|Win32|C:\Users\kujax\OneDrive\Desktop\WinDivert-master\examples\webfilter\|
diff --git a/examples/webfilter/webfilter.sln b/examples/webfilter/webfilter.sln
new file mode 100644
index 00000000..56a7d9ee
--- /dev/null
+++ b/examples/webfilter/webfilter.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.13.35825.156 d17.13
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "webfilter", "webfilter.vcxproj", "{63A08D6E-95A2-7807-3FC8-04E9624FE90A}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {63A08D6E-95A2-7807-3FC8-04E9624FE90A}.Release|x64.ActiveCfg = Release|x64
+ {63A08D6E-95A2-7807-3FC8-04E9624FE90A}.Release|x64.Build.0 = Release|x64
+ {63A08D6E-95A2-7807-3FC8-04E9624FE90A}.Release|x86.ActiveCfg = Release|Win32
+ {63A08D6E-95A2-7807-3FC8-04E9624FE90A}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {A200731E-0685-4697-A65C-0F5DB79BA389}
+ EndGlobalSection
+EndGlobal
diff --git a/examples/webfilter/webfilter.vcxproj b/examples/webfilter/webfilter.vcxproj
index b29ca0d0..54d3bc88 100644
--- a/examples/webfilter/webfilter.vcxproj
+++ b/examples/webfilter/webfilter.vcxproj
@@ -35,39 +35,41 @@
-->
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
-
-
- false
- MinSpace
- Default
- ..\..\include
-
-
-
- webfilter
- webfilter
-
-
-
- v140
- Application
-
-
-
-
- ..\..\install\MSVC\i386\WinDivert.lib;%(AdditionalDependencies)
- ..\..\install\MSVC\amd64\WinDivert.lib;%(AdditionalDependencies)
-
-
-
-
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+
+ false
+ MinSpace
+ Default
+ ..\..\include
+
+
+
+ webfilter
+ webfilter
+ {63A08D6E-95A2-7807-3FC8-04E9624FE90A}
+ 10.0.26100.0
+
+
+
+ v143
+ Application
+
+
+
+
+ ..\..\install\MSVC\i386\WinDivert.lib;%(AdditionalDependencies)
+ ..\..\install\MSVC\amd64\WinDivert.lib;%(AdditionalDependencies)
+
+
+
+
\ No newline at end of file
diff --git a/examples/webfilter/webfilter.vcxproj.user b/examples/webfilter/webfilter.vcxproj.user
new file mode 100644
index 00000000..88a55094
--- /dev/null
+++ b/examples/webfilter/webfilter.vcxproj.user
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/examples/webfilter/webfilter/Release/vc143.pdb b/examples/webfilter/webfilter/Release/vc143.pdb
new file mode 100644
index 00000000..b01ade74
Binary files /dev/null and b/examples/webfilter/webfilter/Release/vc143.pdb differ
diff --git a/examples/webfilter/webfilter/Release/webfilter.exe.recipe b/examples/webfilter/webfilter/Release/webfilter.exe.recipe
new file mode 100644
index 00000000..303c72ac
--- /dev/null
+++ b/examples/webfilter/webfilter/Release/webfilter.exe.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ C:\WinDivert\install\MSVC\i386\webfilter.exe
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/webfilter/webfilter/Release/webfilter.obj b/examples/webfilter/webfilter/Release/webfilter.obj
new file mode 100644
index 00000000..e918fde6
Binary files /dev/null and b/examples/webfilter/webfilter/Release/webfilter.obj differ
diff --git a/examples/webfilter/webfilter/Release/webfilter.tlog/CL.command.1.tlog b/examples/webfilter/webfilter/Release/webfilter.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..36a69bf6
Binary files /dev/null and b/examples/webfilter/webfilter/Release/webfilter.tlog/CL.command.1.tlog differ
diff --git a/examples/webfilter/webfilter/Release/webfilter.tlog/CL.read.1.tlog b/examples/webfilter/webfilter/Release/webfilter.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..130ce911
Binary files /dev/null and b/examples/webfilter/webfilter/Release/webfilter.tlog/CL.read.1.tlog differ
diff --git a/examples/webfilter/webfilter/Release/webfilter.tlog/CL.write.1.tlog b/examples/webfilter/webfilter/Release/webfilter.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..c20f977d
Binary files /dev/null and b/examples/webfilter/webfilter/Release/webfilter.tlog/CL.write.1.tlog differ
diff --git a/examples/webfilter/webfilter/Release/webfilter.tlog/Cl.items.tlog b/examples/webfilter/webfilter/Release/webfilter.tlog/Cl.items.tlog
new file mode 100644
index 00000000..43e8498b
--- /dev/null
+++ b/examples/webfilter/webfilter/Release/webfilter.tlog/Cl.items.tlog
@@ -0,0 +1 @@
+C:\WinDivert\examples\webfilter\webfilter.c;C:\WinDivert\examples\webfilter\webfilter\Release\webfilter.obj
diff --git a/examples/webfilter/webfilter/Release/webfilter.tlog/link.command.1.tlog b/examples/webfilter/webfilter/Release/webfilter.tlog/link.command.1.tlog
new file mode 100644
index 00000000..6d9619ad
Binary files /dev/null and b/examples/webfilter/webfilter/Release/webfilter.tlog/link.command.1.tlog differ
diff --git a/examples/webfilter/webfilter/Release/webfilter.tlog/link.read.1.tlog b/examples/webfilter/webfilter/Release/webfilter.tlog/link.read.1.tlog
new file mode 100644
index 00000000..95bdb03f
Binary files /dev/null and b/examples/webfilter/webfilter/Release/webfilter.tlog/link.read.1.tlog differ
diff --git a/examples/webfilter/webfilter/Release/webfilter.tlog/link.secondary.1.tlog b/examples/webfilter/webfilter/Release/webfilter.tlog/link.secondary.1.tlog
new file mode 100644
index 00000000..ef07a83e
--- /dev/null
+++ b/examples/webfilter/webfilter/Release/webfilter.tlog/link.secondary.1.tlog
@@ -0,0 +1,2 @@
+^C:\WINDIVERT\EXAMPLES\WEBFILTER\WEBFILTER\RELEASE\WEBFILTER.OBJ
+C:\WinDivert\install\MSVC\i386\webfilter.ILK
diff --git a/examples/webfilter/webfilter/Release/webfilter.tlog/link.write.1.tlog b/examples/webfilter/webfilter/Release/webfilter.tlog/link.write.1.tlog
new file mode 100644
index 00000000..1a79b4db
Binary files /dev/null and b/examples/webfilter/webfilter/Release/webfilter.tlog/link.write.1.tlog differ
diff --git a/examples/webfilter/webfilter/Release/webfilter.tlog/webfilter.lastbuildstate b/examples/webfilter/webfilter/Release/webfilter.tlog/webfilter.lastbuildstate
new file mode 100644
index 00000000..28cab0cb
--- /dev/null
+++ b/examples/webfilter/webfilter/Release/webfilter.tlog/webfilter.lastbuildstate
@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.26100.0:
+Release|Win32|C:\WinDivert\examples\webfilter\|
diff --git a/examples/webfilter/webfilter/x64/Release/vc143.pdb b/examples/webfilter/webfilter/x64/Release/vc143.pdb
new file mode 100644
index 00000000..30598610
Binary files /dev/null and b/examples/webfilter/webfilter/x64/Release/vc143.pdb differ
diff --git a/examples/webfilter/webfilter/x64/Release/webfilter.exe.recipe b/examples/webfilter/webfilter/x64/Release/webfilter.exe.recipe
new file mode 100644
index 00000000..f5e29593
--- /dev/null
+++ b/examples/webfilter/webfilter/x64/Release/webfilter.exe.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ C:\WinDivert\install\MSVC\amd64\webfilter.exe
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/webfilter/webfilter/x64/Release/webfilter.obj b/examples/webfilter/webfilter/x64/Release/webfilter.obj
new file mode 100644
index 00000000..a40b06e2
Binary files /dev/null and b/examples/webfilter/webfilter/x64/Release/webfilter.obj differ
diff --git a/examples/webfilter/webfilter/x64/Release/webfilter.tlog/CL.command.1.tlog b/examples/webfilter/webfilter/x64/Release/webfilter.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..71538171
Binary files /dev/null and b/examples/webfilter/webfilter/x64/Release/webfilter.tlog/CL.command.1.tlog differ
diff --git a/examples/webfilter/webfilter/x64/Release/webfilter.tlog/CL.read.1.tlog b/examples/webfilter/webfilter/x64/Release/webfilter.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..63ad54b5
Binary files /dev/null and b/examples/webfilter/webfilter/x64/Release/webfilter.tlog/CL.read.1.tlog differ
diff --git a/examples/webfilter/webfilter/x64/Release/webfilter.tlog/CL.write.1.tlog b/examples/webfilter/webfilter/x64/Release/webfilter.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..a0d08d41
Binary files /dev/null and b/examples/webfilter/webfilter/x64/Release/webfilter.tlog/CL.write.1.tlog differ
diff --git a/examples/webfilter/webfilter/x64/Release/webfilter.tlog/Cl.items.tlog b/examples/webfilter/webfilter/x64/Release/webfilter.tlog/Cl.items.tlog
new file mode 100644
index 00000000..e0fe4125
--- /dev/null
+++ b/examples/webfilter/webfilter/x64/Release/webfilter.tlog/Cl.items.tlog
@@ -0,0 +1 @@
+C:\WinDivert\examples\webfilter\webfilter.c;C:\WinDivert\examples\webfilter\webfilter\x64\Release\webfilter.obj
diff --git a/examples/webfilter/webfilter/x64/Release/webfilter.tlog/link.command.1.tlog b/examples/webfilter/webfilter/x64/Release/webfilter.tlog/link.command.1.tlog
new file mode 100644
index 00000000..edfd061e
Binary files /dev/null and b/examples/webfilter/webfilter/x64/Release/webfilter.tlog/link.command.1.tlog differ
diff --git a/examples/webfilter/webfilter/x64/Release/webfilter.tlog/link.read.1.tlog b/examples/webfilter/webfilter/x64/Release/webfilter.tlog/link.read.1.tlog
new file mode 100644
index 00000000..797cf12a
Binary files /dev/null and b/examples/webfilter/webfilter/x64/Release/webfilter.tlog/link.read.1.tlog differ
diff --git a/examples/webfilter/webfilter/x64/Release/webfilter.tlog/link.secondary.1.tlog b/examples/webfilter/webfilter/x64/Release/webfilter.tlog/link.secondary.1.tlog
new file mode 100644
index 00000000..9acbe552
--- /dev/null
+++ b/examples/webfilter/webfilter/x64/Release/webfilter.tlog/link.secondary.1.tlog
@@ -0,0 +1,2 @@
+^C:\WINDIVERT\EXAMPLES\WEBFILTER\WEBFILTER\X64\RELEASE\WEBFILTER.OBJ
+C:\WinDivert\install\MSVC\amd64\webfilter.ILK
diff --git a/examples/webfilter/webfilter/x64/Release/webfilter.tlog/link.write.1.tlog b/examples/webfilter/webfilter/x64/Release/webfilter.tlog/link.write.1.tlog
new file mode 100644
index 00000000..38e63790
Binary files /dev/null and b/examples/webfilter/webfilter/x64/Release/webfilter.tlog/link.write.1.tlog differ
diff --git a/examples/webfilter/webfilter/x64/Release/webfilter.tlog/webfilter.lastbuildstate b/examples/webfilter/webfilter/x64/Release/webfilter.tlog/webfilter.lastbuildstate
new file mode 100644
index 00000000..a0dce8a3
--- /dev/null
+++ b/examples/webfilter/webfilter/x64/Release/webfilter.tlog/webfilter.lastbuildstate
@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.26100.0:
+Release|x64|C:\WinDivert\examples\webfilter\|
diff --git a/examples/webfilter/x64/Release/vc140.pdb b/examples/webfilter/x64/Release/vc140.pdb
new file mode 100644
index 00000000..dd68be87
Binary files /dev/null and b/examples/webfilter/x64/Release/vc140.pdb differ
diff --git a/examples/webfilter/x64/Release/webfilter.obj b/examples/webfilter/x64/Release/webfilter.obj
new file mode 100644
index 00000000..4a55afdf
Binary files /dev/null and b/examples/webfilter/x64/Release/webfilter.obj differ
diff --git a/examples/webfilter/x64/Release/webfilter.tlog/CL.command.1.tlog b/examples/webfilter/x64/Release/webfilter.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..ef07fdf4
Binary files /dev/null and b/examples/webfilter/x64/Release/webfilter.tlog/CL.command.1.tlog differ
diff --git a/examples/webfilter/x64/Release/webfilter.tlog/CL.read.1.tlog b/examples/webfilter/x64/Release/webfilter.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..e02ea28f
Binary files /dev/null and b/examples/webfilter/x64/Release/webfilter.tlog/CL.read.1.tlog differ
diff --git a/examples/webfilter/x64/Release/webfilter.tlog/CL.write.1.tlog b/examples/webfilter/x64/Release/webfilter.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..790c2089
Binary files /dev/null and b/examples/webfilter/x64/Release/webfilter.tlog/CL.write.1.tlog differ
diff --git a/examples/webfilter/x64/Release/webfilter.tlog/link.command.1.tlog b/examples/webfilter/x64/Release/webfilter.tlog/link.command.1.tlog
new file mode 100644
index 00000000..e60d8966
Binary files /dev/null and b/examples/webfilter/x64/Release/webfilter.tlog/link.command.1.tlog differ
diff --git a/examples/webfilter/x64/Release/webfilter.tlog/link.read.1.tlog b/examples/webfilter/x64/Release/webfilter.tlog/link.read.1.tlog
new file mode 100644
index 00000000..0e3b9b22
Binary files /dev/null and b/examples/webfilter/x64/Release/webfilter.tlog/link.read.1.tlog differ
diff --git a/examples/webfilter/x64/Release/webfilter.tlog/link.write.1.tlog b/examples/webfilter/x64/Release/webfilter.tlog/link.write.1.tlog
new file mode 100644
index 00000000..0b65701e
Binary files /dev/null and b/examples/webfilter/x64/Release/webfilter.tlog/link.write.1.tlog differ
diff --git a/examples/webfilter/x64/Release/webfilter.tlog/webfilter.lastbuildstate b/examples/webfilter/x64/Release/webfilter.tlog/webfilter.lastbuildstate
new file mode 100644
index 00000000..fea354bb
--- /dev/null
+++ b/examples/webfilter/x64/Release/webfilter.tlog/webfilter.lastbuildstate
@@ -0,0 +1,2 @@
+#TargetFrameworkVersion=:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1
+Release|x64|C:\Users\kujax\OneDrive\Desktop\WinDivert-master\examples\webfilter\|
diff --git a/examples/windivertctl/.vs/windivertctl/CopilotIndices/17.13.433.20974/CodeChunks.db b/examples/windivertctl/.vs/windivertctl/CopilotIndices/17.13.433.20974/CodeChunks.db
new file mode 100644
index 00000000..d730c24e
Binary files /dev/null and b/examples/windivertctl/.vs/windivertctl/CopilotIndices/17.13.433.20974/CodeChunks.db differ
diff --git a/examples/windivertctl/.vs/windivertctl/CopilotIndices/17.13.433.20974/SemanticSymbols.db b/examples/windivertctl/.vs/windivertctl/CopilotIndices/17.13.433.20974/SemanticSymbols.db
new file mode 100644
index 00000000..ca70b9c9
Binary files /dev/null and b/examples/windivertctl/.vs/windivertctl/CopilotIndices/17.13.433.20974/SemanticSymbols.db differ
diff --git a/examples/windivertctl/.vs/windivertctl/FileContentIndex/053e1184-809f-4966-8659-e0b08a82d9b3.vsidx b/examples/windivertctl/.vs/windivertctl/FileContentIndex/053e1184-809f-4966-8659-e0b08a82d9b3.vsidx
new file mode 100644
index 00000000..dadcd501
Binary files /dev/null and b/examples/windivertctl/.vs/windivertctl/FileContentIndex/053e1184-809f-4966-8659-e0b08a82d9b3.vsidx differ
diff --git a/examples/windivertctl/.vs/windivertctl/FileContentIndex/a7e1c1f6-d68f-4e62-a53a-249605b25423.vsidx b/examples/windivertctl/.vs/windivertctl/FileContentIndex/a7e1c1f6-d68f-4e62-a53a-249605b25423.vsidx
new file mode 100644
index 00000000..f9882407
Binary files /dev/null and b/examples/windivertctl/.vs/windivertctl/FileContentIndex/a7e1c1f6-d68f-4e62-a53a-249605b25423.vsidx differ
diff --git a/examples/windivertctl/.vs/windivertctl/FileContentIndex/fbf8f7f9-2664-4b23-88d6-b314018a16ff.vsidx b/examples/windivertctl/.vs/windivertctl/FileContentIndex/fbf8f7f9-2664-4b23-88d6-b314018a16ff.vsidx
new file mode 100644
index 00000000..70aef67a
Binary files /dev/null and b/examples/windivertctl/.vs/windivertctl/FileContentIndex/fbf8f7f9-2664-4b23-88d6-b314018a16ff.vsidx differ
diff --git a/examples/windivertctl/.vs/windivertctl/v17/.suo b/examples/windivertctl/.vs/windivertctl/v17/.suo
new file mode 100644
index 00000000..75b7ab93
Binary files /dev/null and b/examples/windivertctl/.vs/windivertctl/v17/.suo differ
diff --git a/examples/windivertctl/.vs/windivertctl/v17/Browse.VC.db b/examples/windivertctl/.vs/windivertctl/v17/Browse.VC.db
new file mode 100644
index 00000000..638d3506
Binary files /dev/null and b/examples/windivertctl/.vs/windivertctl/v17/Browse.VC.db differ
diff --git a/examples/windivertctl/.vs/windivertctl/v17/DocumentLayout.backup.json b/examples/windivertctl/.vs/windivertctl/v17/DocumentLayout.backup.json
new file mode 100644
index 00000000..41092185
--- /dev/null
+++ b/examples/windivertctl/.vs/windivertctl/v17/DocumentLayout.backup.json
@@ -0,0 +1,37 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "C:\\WinDivert\\examples\\windivertctl\\",
+ "Documents": [
+ {
+ "AbsoluteMoniker": "D:0:0:{5C65F2AE-5852-F141-23C1-E2B8822B4AD3}|windivertctl.vcxproj|C:\\WinDivert\\examples\\windivertctl\\windivertctl.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
+ "RelativeMoniker": "D:0:0:{5C65F2AE-5852-F141-23C1-E2B8822B4AD3}|windivertctl.vcxproj|solutionrelative:windivertctl.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+ }
+ ],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": [
+ {
+ "DockedWidth": 200,
+ "SelectedChildIndex": 0,
+ "Children": [
+ {
+ "$type": "Document",
+ "DocumentIndex": 0,
+ "Title": "windivertctl.c",
+ "DocumentMoniker": "C:\\WinDivert\\examples\\windivertctl\\windivertctl.c",
+ "RelativeDocumentMoniker": "windivertctl.c",
+ "ToolTip": "C:\\WinDivert\\examples\\windivertctl\\windivertctl.c",
+ "RelativeToolTip": "windivertctl.c",
+ "ViewState": "AgIAAI0AAAAAAAAAAAAUwJYAAAAFAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|",
+ "WhenOpened": "2025-03-11T07:43:33.3Z",
+ "EditorCaption": ""
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/windivertctl/.vs/windivertctl/v17/DocumentLayout.json b/examples/windivertctl/.vs/windivertctl/v17/DocumentLayout.json
new file mode 100644
index 00000000..41092185
--- /dev/null
+++ b/examples/windivertctl/.vs/windivertctl/v17/DocumentLayout.json
@@ -0,0 +1,37 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "C:\\WinDivert\\examples\\windivertctl\\",
+ "Documents": [
+ {
+ "AbsoluteMoniker": "D:0:0:{5C65F2AE-5852-F141-23C1-E2B8822B4AD3}|windivertctl.vcxproj|C:\\WinDivert\\examples\\windivertctl\\windivertctl.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
+ "RelativeMoniker": "D:0:0:{5C65F2AE-5852-F141-23C1-E2B8822B4AD3}|windivertctl.vcxproj|solutionrelative:windivertctl.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+ }
+ ],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": [
+ {
+ "DockedWidth": 200,
+ "SelectedChildIndex": 0,
+ "Children": [
+ {
+ "$type": "Document",
+ "DocumentIndex": 0,
+ "Title": "windivertctl.c",
+ "DocumentMoniker": "C:\\WinDivert\\examples\\windivertctl\\windivertctl.c",
+ "RelativeDocumentMoniker": "windivertctl.c",
+ "ToolTip": "C:\\WinDivert\\examples\\windivertctl\\windivertctl.c",
+ "RelativeToolTip": "windivertctl.c",
+ "ViewState": "AgIAAI0AAAAAAAAAAAAUwJYAAAAFAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|",
+ "WhenOpened": "2025-03-11T07:43:33.3Z",
+ "EditorCaption": ""
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/windivertctl/.vs/windivertctl/v17/Solution.VC.db b/examples/windivertctl/.vs/windivertctl/v17/Solution.VC.db
new file mode 100644
index 00000000..9c6a90cc
Binary files /dev/null and b/examples/windivertctl/.vs/windivertctl/v17/Solution.VC.db differ
diff --git a/examples/windivertctl/.vs/windivertctl/v17/ipch/AutoPCH/1a86278529006a31/WINDIVERTCTL.ipch b/examples/windivertctl/.vs/windivertctl/v17/ipch/AutoPCH/1a86278529006a31/WINDIVERTCTL.ipch
new file mode 100644
index 00000000..c47f3698
Binary files /dev/null and b/examples/windivertctl/.vs/windivertctl/v17/ipch/AutoPCH/1a86278529006a31/WINDIVERTCTL.ipch differ
diff --git a/examples/windivertctl/Release/vc140.pdb b/examples/windivertctl/Release/vc140.pdb
new file mode 100644
index 00000000..c1aa75d0
Binary files /dev/null and b/examples/windivertctl/Release/vc140.pdb differ
diff --git a/examples/windivertctl/Release/windivertctl.obj b/examples/windivertctl/Release/windivertctl.obj
new file mode 100644
index 00000000..4365ad22
Binary files /dev/null and b/examples/windivertctl/Release/windivertctl.obj differ
diff --git a/examples/windivertctl/Release/windivertctl.tlog/CL.command.1.tlog b/examples/windivertctl/Release/windivertctl.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..29d42127
Binary files /dev/null and b/examples/windivertctl/Release/windivertctl.tlog/CL.command.1.tlog differ
diff --git a/examples/windivertctl/Release/windivertctl.tlog/CL.read.1.tlog b/examples/windivertctl/Release/windivertctl.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..84f31854
Binary files /dev/null and b/examples/windivertctl/Release/windivertctl.tlog/CL.read.1.tlog differ
diff --git a/examples/windivertctl/Release/windivertctl.tlog/CL.write.1.tlog b/examples/windivertctl/Release/windivertctl.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..8e0c22f7
Binary files /dev/null and b/examples/windivertctl/Release/windivertctl.tlog/CL.write.1.tlog differ
diff --git a/examples/windivertctl/Release/windivertctl.tlog/link.command.1.tlog b/examples/windivertctl/Release/windivertctl.tlog/link.command.1.tlog
new file mode 100644
index 00000000..a3bf7880
Binary files /dev/null and b/examples/windivertctl/Release/windivertctl.tlog/link.command.1.tlog differ
diff --git a/examples/windivertctl/Release/windivertctl.tlog/link.read.1.tlog b/examples/windivertctl/Release/windivertctl.tlog/link.read.1.tlog
new file mode 100644
index 00000000..d672f694
Binary files /dev/null and b/examples/windivertctl/Release/windivertctl.tlog/link.read.1.tlog differ
diff --git a/examples/windivertctl/Release/windivertctl.tlog/link.write.1.tlog b/examples/windivertctl/Release/windivertctl.tlog/link.write.1.tlog
new file mode 100644
index 00000000..64b3659c
Binary files /dev/null and b/examples/windivertctl/Release/windivertctl.tlog/link.write.1.tlog differ
diff --git a/examples/windivertctl/Release/windivertctl.tlog/windivertctl.lastbuildstate b/examples/windivertctl/Release/windivertctl.tlog/windivertctl.lastbuildstate
new file mode 100644
index 00000000..1b8a465c
--- /dev/null
+++ b/examples/windivertctl/Release/windivertctl.tlog/windivertctl.lastbuildstate
@@ -0,0 +1,2 @@
+#TargetFrameworkVersion=:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1
+Release|Win32|C:\Users\kujax\OneDrive\Desktop\WinDivert-master\examples\windivertctl\|
diff --git a/examples/windivertctl/windivertctl.c b/examples/windivertctl/windivertctl.c
index 5bb6ce94..048f7b3e 100644
--- a/examples/windivertctl/windivertctl.c
+++ b/examples/windivertctl/windivertctl.c
@@ -153,7 +153,7 @@ int __cdecl main(int argc, char **argv)
GetLastError());
return EXIT_FAILURE;
}
- if (!WinDivertSetParam(handle, WINDIVERT_PARAM_QUEUE_LENGTH,
+ if (!WinDivertSetParam(handle, WINDIVERT_PARAM_QUEUE_LEN,
WINDIVERT_PARAM_QUEUE_LENGTH_MAX) ||
!WinDivertSetParam(handle, WINDIVERT_PARAM_QUEUE_SIZE,
WINDIVERT_PARAM_QUEUE_SIZE_MAX) ||
diff --git a/examples/windivertctl/windivertctl.sln b/examples/windivertctl/windivertctl.sln
new file mode 100644
index 00000000..1a9350ad
--- /dev/null
+++ b/examples/windivertctl/windivertctl.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.13.35825.156 d17.13
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "windivertctl", "windivertctl.vcxproj", "{5C65F2AE-5852-F141-23C1-E2B8822B4AD3}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {5C65F2AE-5852-F141-23C1-E2B8822B4AD3}.Release|x64.ActiveCfg = Release|x64
+ {5C65F2AE-5852-F141-23C1-E2B8822B4AD3}.Release|x64.Build.0 = Release|x64
+ {5C65F2AE-5852-F141-23C1-E2B8822B4AD3}.Release|x86.ActiveCfg = Release|Win32
+ {5C65F2AE-5852-F141-23C1-E2B8822B4AD3}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {B07E36A2-4032-47C0-A77E-ECF444739083}
+ EndGlobalSection
+EndGlobal
diff --git a/examples/windivertctl/windivertctl.vcxproj b/examples/windivertctl/windivertctl.vcxproj
index be368292..9592f37a 100644
--- a/examples/windivertctl/windivertctl.vcxproj
+++ b/examples/windivertctl/windivertctl.vcxproj
@@ -35,39 +35,41 @@
-->
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
-
-
- false
- MinSpace
- Default
- ..\..\include
-
-
-
- windivertctl
- windivertctl
-
-
-
- v140
- Application
-
-
-
-
- ..\..\install\MSVC\i386\WinDivert.lib;%(AdditionalDependencies)
- ..\..\install\MSVC\amd64\WinDivert.lib;%(AdditionalDependencies)
-
-
-
-
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+
+ false
+ MinSpace
+ Default
+ ..\..\include
+
+
+
+ windivertctl
+ windivertctl
+ {5C65F2AE-5852-F141-23C1-E2B8822B4AD3}
+ 10.0.26100.0
+
+
+
+ v143
+ Application
+
+
+
+
+ ..\..\install\MSVC\i386\WinDivert.lib;%(AdditionalDependencies)
+ ..\..\install\MSVC\amd64\WinDivert.lib;%(AdditionalDependencies)
+
+
+
+
\ No newline at end of file
diff --git a/examples/windivertctl/windivertctl.vcxproj.user b/examples/windivertctl/windivertctl.vcxproj.user
new file mode 100644
index 00000000..88a55094
--- /dev/null
+++ b/examples/windivertctl/windivertctl.vcxproj.user
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/examples/windivertctl/windivertctl/Release/vc143.pdb b/examples/windivertctl/windivertctl/Release/vc143.pdb
new file mode 100644
index 00000000..ea5e97ce
Binary files /dev/null and b/examples/windivertctl/windivertctl/Release/vc143.pdb differ
diff --git a/examples/windivertctl/windivertctl/Release/windivertctl.exe.recipe b/examples/windivertctl/windivertctl/Release/windivertctl.exe.recipe
new file mode 100644
index 00000000..bbb8592f
--- /dev/null
+++ b/examples/windivertctl/windivertctl/Release/windivertctl.exe.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ C:\WinDivert\install\MSVC\i386\windivertctl.exe
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/windivertctl/windivertctl/Release/windivertctl.obj b/examples/windivertctl/windivertctl/Release/windivertctl.obj
new file mode 100644
index 00000000..7c66bd3a
Binary files /dev/null and b/examples/windivertctl/windivertctl/Release/windivertctl.obj differ
diff --git a/examples/windivertctl/windivertctl/Release/windivertctl.tlog/CL.command.1.tlog b/examples/windivertctl/windivertctl/Release/windivertctl.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..b2a7e2d8
Binary files /dev/null and b/examples/windivertctl/windivertctl/Release/windivertctl.tlog/CL.command.1.tlog differ
diff --git a/examples/windivertctl/windivertctl/Release/windivertctl.tlog/CL.read.1.tlog b/examples/windivertctl/windivertctl/Release/windivertctl.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..85ecad53
Binary files /dev/null and b/examples/windivertctl/windivertctl/Release/windivertctl.tlog/CL.read.1.tlog differ
diff --git a/examples/windivertctl/windivertctl/Release/windivertctl.tlog/CL.write.1.tlog b/examples/windivertctl/windivertctl/Release/windivertctl.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..13a89733
Binary files /dev/null and b/examples/windivertctl/windivertctl/Release/windivertctl.tlog/CL.write.1.tlog differ
diff --git a/examples/windivertctl/windivertctl/Release/windivertctl.tlog/Cl.items.tlog b/examples/windivertctl/windivertctl/Release/windivertctl.tlog/Cl.items.tlog
new file mode 100644
index 00000000..61dfe3bb
--- /dev/null
+++ b/examples/windivertctl/windivertctl/Release/windivertctl.tlog/Cl.items.tlog
@@ -0,0 +1 @@
+C:\WinDivert\examples\windivertctl\windivertctl.c;C:\WinDivert\examples\windivertctl\windivertctl\Release\windivertctl.obj
diff --git a/examples/windivertctl/windivertctl/Release/windivertctl.tlog/link.command.1.tlog b/examples/windivertctl/windivertctl/Release/windivertctl.tlog/link.command.1.tlog
new file mode 100644
index 00000000..d57c4097
Binary files /dev/null and b/examples/windivertctl/windivertctl/Release/windivertctl.tlog/link.command.1.tlog differ
diff --git a/examples/windivertctl/windivertctl/Release/windivertctl.tlog/link.read.1.tlog b/examples/windivertctl/windivertctl/Release/windivertctl.tlog/link.read.1.tlog
new file mode 100644
index 00000000..9b60de31
Binary files /dev/null and b/examples/windivertctl/windivertctl/Release/windivertctl.tlog/link.read.1.tlog differ
diff --git a/examples/windivertctl/windivertctl/Release/windivertctl.tlog/link.secondary.1.tlog b/examples/windivertctl/windivertctl/Release/windivertctl.tlog/link.secondary.1.tlog
new file mode 100644
index 00000000..85880d01
--- /dev/null
+++ b/examples/windivertctl/windivertctl/Release/windivertctl.tlog/link.secondary.1.tlog
@@ -0,0 +1,2 @@
+^C:\WINDIVERT\EXAMPLES\WINDIVERTCTL\WINDIVERTCTL\RELEASE\WINDIVERTCTL.OBJ
+C:\WinDivert\install\MSVC\i386\windivertctl.ILK
diff --git a/examples/windivertctl/windivertctl/Release/windivertctl.tlog/link.write.1.tlog b/examples/windivertctl/windivertctl/Release/windivertctl.tlog/link.write.1.tlog
new file mode 100644
index 00000000..02b1758c
Binary files /dev/null and b/examples/windivertctl/windivertctl/Release/windivertctl.tlog/link.write.1.tlog differ
diff --git a/examples/windivertctl/windivertctl/Release/windivertctl.tlog/windivertctl.lastbuildstate b/examples/windivertctl/windivertctl/Release/windivertctl.tlog/windivertctl.lastbuildstate
new file mode 100644
index 00000000..2f18a9ec
--- /dev/null
+++ b/examples/windivertctl/windivertctl/Release/windivertctl.tlog/windivertctl.lastbuildstate
@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.26100.0:
+Release|Win32|C:\WinDivert\examples\windivertctl\|
diff --git a/examples/windivertctl/windivertctl/x64/Release/vc143.pdb b/examples/windivertctl/windivertctl/x64/Release/vc143.pdb
new file mode 100644
index 00000000..7a2e04c9
Binary files /dev/null and b/examples/windivertctl/windivertctl/x64/Release/vc143.pdb differ
diff --git a/examples/windivertctl/windivertctl/x64/Release/windivertctl.Build.CppClean.log b/examples/windivertctl/windivertctl/x64/Release/windivertctl.Build.CppClean.log
new file mode 100644
index 00000000..c8af5758
--- /dev/null
+++ b/examples/windivertctl/windivertctl/x64/Release/windivertctl.Build.CppClean.log
@@ -0,0 +1,2 @@
+c:\windivert\examples\windivertctl\windivertctl\x64\release\vc143.pdb
+c:\windivert\examples\windivertctl\windivertctl\x64\release\windivertctl.tlog\cl.command.1.tlog
diff --git a/examples/windivertctl/windivertctl/x64/Release/windivertctl.exe.recipe b/examples/windivertctl/windivertctl/x64/Release/windivertctl.exe.recipe
new file mode 100644
index 00000000..511cff9d
--- /dev/null
+++ b/examples/windivertctl/windivertctl/x64/Release/windivertctl.exe.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ C:\WinDivert\install\MSVC\amd64\windivertctl.exe
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/windivertctl/windivertctl/x64/Release/windivertctl.log b/examples/windivertctl/windivertctl/x64/Release/windivertctl.log
new file mode 100644
index 00000000..04d4eb20
--- /dev/null
+++ b/examples/windivertctl/windivertctl/x64/Release/windivertctl.log
@@ -0,0 +1,2 @@
+ windivertctl.c
+ windivertctl.vcxproj -> C:\WinDivert\examples\windivertctl\x64\Release\windivertctl.exe
diff --git a/examples/windivertctl/windivertctl/x64/Release/windivertctl.obj b/examples/windivertctl/windivertctl/x64/Release/windivertctl.obj
new file mode 100644
index 00000000..4bc06b13
Binary files /dev/null and b/examples/windivertctl/windivertctl/x64/Release/windivertctl.obj differ
diff --git a/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/CL.command.1.tlog b/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..1de32066
Binary files /dev/null and b/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/CL.command.1.tlog differ
diff --git a/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/CL.read.1.tlog b/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..57f42447
Binary files /dev/null and b/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/CL.read.1.tlog differ
diff --git a/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/CL.write.1.tlog b/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..cab981fe
Binary files /dev/null and b/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/CL.write.1.tlog differ
diff --git a/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/Cl.items.tlog b/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/Cl.items.tlog
new file mode 100644
index 00000000..52462d44
--- /dev/null
+++ b/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/Cl.items.tlog
@@ -0,0 +1 @@
+C:\WinDivert\examples\windivertctl\windivertctl.c;C:\WinDivert\examples\windivertctl\windivertctl\x64\Release\windivertctl.obj
diff --git a/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/link.command.1.tlog b/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/link.command.1.tlog
new file mode 100644
index 00000000..92cdf871
Binary files /dev/null and b/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/link.command.1.tlog differ
diff --git a/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/link.read.1.tlog b/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/link.read.1.tlog
new file mode 100644
index 00000000..c72c8a4e
Binary files /dev/null and b/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/link.read.1.tlog differ
diff --git a/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/link.secondary.1.tlog b/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/link.secondary.1.tlog
new file mode 100644
index 00000000..06413855
--- /dev/null
+++ b/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/link.secondary.1.tlog
@@ -0,0 +1,2 @@
+^C:\WINDIVERT\EXAMPLES\WINDIVERTCTL\WINDIVERTCTL\X64\RELEASE\WINDIVERTCTL.OBJ
+C:\WinDivert\install\MSVC\amd64\windivertctl.ILK
diff --git a/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/link.write.1.tlog b/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/link.write.1.tlog
new file mode 100644
index 00000000..0ba5e5b6
Binary files /dev/null and b/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/link.write.1.tlog differ
diff --git a/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/windivertctl.lastbuildstate b/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/windivertctl.lastbuildstate
new file mode 100644
index 00000000..042ffd80
--- /dev/null
+++ b/examples/windivertctl/windivertctl/x64/Release/windivertctl.tlog/windivertctl.lastbuildstate
@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.26100.0:
+Release|x64|C:\WinDivert\examples\windivertctl\|
diff --git a/examples/windivertctl/windivertctl/x64/Release/windivertctl.vcxproj.FileListAbsolute.txt b/examples/windivertctl/windivertctl/x64/Release/windivertctl.vcxproj.FileListAbsolute.txt
new file mode 100644
index 00000000..e69de29b
diff --git a/examples/windivertctl/x64/Release/vc140.pdb b/examples/windivertctl/x64/Release/vc140.pdb
new file mode 100644
index 00000000..68445a6f
Binary files /dev/null and b/examples/windivertctl/x64/Release/vc140.pdb differ
diff --git a/examples/windivertctl/x64/Release/windivertctl.exe b/examples/windivertctl/x64/Release/windivertctl.exe
new file mode 100644
index 00000000..a9011f59
Binary files /dev/null and b/examples/windivertctl/x64/Release/windivertctl.exe differ
diff --git a/examples/windivertctl/x64/Release/windivertctl.ilk b/examples/windivertctl/x64/Release/windivertctl.ilk
new file mode 100644
index 00000000..38c7399f
Binary files /dev/null and b/examples/windivertctl/x64/Release/windivertctl.ilk differ
diff --git a/examples/windivertctl/x64/Release/windivertctl.obj b/examples/windivertctl/x64/Release/windivertctl.obj
new file mode 100644
index 00000000..e6ddc318
Binary files /dev/null and b/examples/windivertctl/x64/Release/windivertctl.obj differ
diff --git a/examples/windivertctl/x64/Release/windivertctl.pdb b/examples/windivertctl/x64/Release/windivertctl.pdb
new file mode 100644
index 00000000..2e78a79b
Binary files /dev/null and b/examples/windivertctl/x64/Release/windivertctl.pdb differ
diff --git a/examples/windivertctl/x64/Release/windivertctl.tlog/CL.command.1.tlog b/examples/windivertctl/x64/Release/windivertctl.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..66b59eb2
Binary files /dev/null and b/examples/windivertctl/x64/Release/windivertctl.tlog/CL.command.1.tlog differ
diff --git a/examples/windivertctl/x64/Release/windivertctl.tlog/CL.read.1.tlog b/examples/windivertctl/x64/Release/windivertctl.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..c0e6b2af
Binary files /dev/null and b/examples/windivertctl/x64/Release/windivertctl.tlog/CL.read.1.tlog differ
diff --git a/examples/windivertctl/x64/Release/windivertctl.tlog/CL.write.1.tlog b/examples/windivertctl/x64/Release/windivertctl.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..0067ba01
Binary files /dev/null and b/examples/windivertctl/x64/Release/windivertctl.tlog/CL.write.1.tlog differ
diff --git a/examples/windivertctl/x64/Release/windivertctl.tlog/link.command.1.tlog b/examples/windivertctl/x64/Release/windivertctl.tlog/link.command.1.tlog
new file mode 100644
index 00000000..10192326
Binary files /dev/null and b/examples/windivertctl/x64/Release/windivertctl.tlog/link.command.1.tlog differ
diff --git a/examples/windivertctl/x64/Release/windivertctl.tlog/link.read.1.tlog b/examples/windivertctl/x64/Release/windivertctl.tlog/link.read.1.tlog
new file mode 100644
index 00000000..6f05764e
Binary files /dev/null and b/examples/windivertctl/x64/Release/windivertctl.tlog/link.read.1.tlog differ
diff --git a/examples/windivertctl/x64/Release/windivertctl.tlog/link.write.1.tlog b/examples/windivertctl/x64/Release/windivertctl.tlog/link.write.1.tlog
new file mode 100644
index 00000000..977bae92
Binary files /dev/null and b/examples/windivertctl/x64/Release/windivertctl.tlog/link.write.1.tlog differ
diff --git a/examples/windivertctl/x64/Release/windivertctl.tlog/windivertctl.lastbuildstate b/examples/windivertctl/x64/Release/windivertctl.tlog/windivertctl.lastbuildstate
new file mode 100644
index 00000000..0deb3b7d
--- /dev/null
+++ b/examples/windivertctl/x64/Release/windivertctl.tlog/windivertctl.lastbuildstate
@@ -0,0 +1,2 @@
+#TargetFrameworkVersion=:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1
+Release|x64|C:\Users\kujax\OneDrive\Desktop\WinDivert-master\examples\windivertctl\|
diff --git a/include/windivert.h b/include/windivert.h
index fc63adf2..5f6a8d5e 100644
--- a/include/windivert.h
+++ b/include/windivert.h
@@ -202,7 +202,7 @@ typedef enum
*/
typedef enum
{
- WINDIVERT_PARAM_QUEUE_LENGTH = 0, /* Packet queue length. */
+ WINDIVERT_PARAM_QUEUE_LEN = 0, /* Packet queue length. */
WINDIVERT_PARAM_QUEUE_TIME = 1, /* Packet queue time. */
WINDIVERT_PARAM_QUEUE_SIZE = 2, /* Packet queue size. */
WINDIVERT_PARAM_VERSION_MAJOR = 3, /* Driver version (major). */
diff --git a/include/windivert_device_constants.h b/include/windivert_device_constants.h
new file mode 100644
index 00000000..5542318f
--- /dev/null
+++ b/include/windivert_device_constants.h
@@ -0,0 +1,11 @@
+// windivert_device_constants.h
+#ifndef WINDIVERT_DEVICE_CONSTANTS_H
+#define WINDIVERT_DEVICE_CONSTANTS_H
+
+#include
+
+// Define the constant UNICODE_STRINGs
+extern const UNICODE_STRING device_name;
+extern const UNICODE_STRING dos_device_name;
+
+#endif // WINDIVERT_DEVICE_CONSTANTS_H
diff --git a/inf/windivert32.inf b/inf/windivert32.inf
index 30da7747..03254e63 100644
--- a/inf/windivert32.inf
+++ b/inf/windivert32.inf
@@ -5,6 +5,7 @@ ClassGuid = {57465043-616C-6C6F-7574-5F636C617373}
Provider = %Basil%
CatalogFile = WinDivert32.Cat
DriverVer = 08/08/2019,2.2.0
+PnpLockdown=1
[SourceDisksNames]
1 = %DiskName%
@@ -16,11 +17,11 @@ WinDivert32.sys = 1
DefaultDestDir = 12 ; %windir%\system32\drivers
WinDivertCalloutDriver.DriverFiles = 12 ; %windir%\system32\drivers
-[DefaultInstall]
+[DefaultInstall.NTx86]
OptionDesc = %Description%
CopyFiles = WinDivertCalloutDriver.DriverFiles
-[DefaultInstall.Services]
+[DefaultInstall.NTx86.Services]
AddService = %ServiceName%,,WinDivertCalloutDriver.Service
[WinDivertCalloutDriver.DriverFiles]
diff --git a/inf/windivert64.inf b/inf/windivert64.inf
index c5e2cdbf..048aaad6 100644
--- a/inf/windivert64.inf
+++ b/inf/windivert64.inf
@@ -5,6 +5,11 @@ ClassGuid = {57465043-616C-6C6F-7574-5F636C617373}
Provider = %Basil%
CatalogFile = WinDivert64.Cat
DriverVer = 08/08/2019,2.2.0
+PnpLockdown=1
+
+[DestinationDirs]
+DefaultDestDir = 12 ; %windir%\system32\drivers
+WinDivertCalloutDriver.DriverFiles = 12 ; %windir%\system32\drivers
[SourceDisksNames]
1 = %DiskName%
@@ -12,15 +17,11 @@ DriverVer = 08/08/2019,2.2.0
[SourceDisksFiles]
WinDivert64.sys = 1
-[DestinationDirs]
-DefaultDestDir = 12 ; %windir%\system32\drivers
-WinDivertCalloutDriver.DriverFiles = 12 ; %windir%\system32\drivers
-
-[DefaultInstall]
+[DefaultInstall.NTamd64]
OptionDesc = %Description%
CopyFiles = WinDivertCalloutDriver.DriverFiles
-[DefaultInstall.Services]
+[DefaultInstall.NTamd64.Services]
AddService = %ServiceName%,,WinDivertCalloutDriver.Service
[WinDivertCalloutDriver.DriverFiles]
diff --git a/install/MSVC/amd64/WinDivert.dll b/install/MSVC/amd64/WinDivert.dll
new file mode 100644
index 00000000..35b72461
Binary files /dev/null and b/install/MSVC/amd64/WinDivert.dll differ
diff --git a/install/MSVC/amd64/WinDivert.ilk b/install/MSVC/amd64/WinDivert.ilk
new file mode 100644
index 00000000..033837b0
Binary files /dev/null and b/install/MSVC/amd64/WinDivert.ilk differ
diff --git a/install/MSVC/amd64/WinDivert.lib b/install/MSVC/amd64/WinDivert.lib
new file mode 100644
index 00000000..325f9bf7
Binary files /dev/null and b/install/MSVC/amd64/WinDivert.lib differ
diff --git a/install/MSVC/amd64/WinDivert.pdb b/install/MSVC/amd64/WinDivert.pdb
new file mode 100644
index 00000000..0d093618
Binary files /dev/null and b/install/MSVC/amd64/WinDivert.pdb differ
diff --git a/install/MSVC/amd64/WinDivert64.pdb b/install/MSVC/amd64/WinDivert64.pdb
new file mode 100644
index 00000000..57d4aa31
Binary files /dev/null and b/install/MSVC/amd64/WinDivert64.pdb differ
diff --git a/install/MSVC/amd64/WinDivert64.sys b/install/MSVC/amd64/WinDivert64.sys
new file mode 100644
index 00000000..b29b9915
Binary files /dev/null and b/install/MSVC/amd64/WinDivert64.sys differ
diff --git a/install/MSVC/amd64/flowtrack.exe b/install/MSVC/amd64/flowtrack.exe
new file mode 100644
index 00000000..36576e26
Binary files /dev/null and b/install/MSVC/amd64/flowtrack.exe differ
diff --git a/install/MSVC/amd64/flowtrack.ilk b/install/MSVC/amd64/flowtrack.ilk
new file mode 100644
index 00000000..3adffc0e
Binary files /dev/null and b/install/MSVC/amd64/flowtrack.ilk differ
diff --git a/install/MSVC/amd64/flowtrack.pdb b/install/MSVC/amd64/flowtrack.pdb
new file mode 100644
index 00000000..6b3a1ecc
Binary files /dev/null and b/install/MSVC/amd64/flowtrack.pdb differ
diff --git a/install/MSVC/amd64/netdump.exe b/install/MSVC/amd64/netdump.exe
new file mode 100644
index 00000000..cd73b775
Binary files /dev/null and b/install/MSVC/amd64/netdump.exe differ
diff --git a/install/MSVC/amd64/netdump.ilk b/install/MSVC/amd64/netdump.ilk
new file mode 100644
index 00000000..de16977e
Binary files /dev/null and b/install/MSVC/amd64/netdump.ilk differ
diff --git a/install/MSVC/amd64/netdump.pdb b/install/MSVC/amd64/netdump.pdb
new file mode 100644
index 00000000..d4b8b69b
Binary files /dev/null and b/install/MSVC/amd64/netdump.pdb differ
diff --git a/install/MSVC/amd64/netfilter.exe b/install/MSVC/amd64/netfilter.exe
new file mode 100644
index 00000000..226059cf
Binary files /dev/null and b/install/MSVC/amd64/netfilter.exe differ
diff --git a/install/MSVC/amd64/netfilter.ilk b/install/MSVC/amd64/netfilter.ilk
new file mode 100644
index 00000000..1d98bcfd
Binary files /dev/null and b/install/MSVC/amd64/netfilter.ilk differ
diff --git a/install/MSVC/amd64/netfilter.pdb b/install/MSVC/amd64/netfilter.pdb
new file mode 100644
index 00000000..72a085ad
Binary files /dev/null and b/install/MSVC/amd64/netfilter.pdb differ
diff --git a/install/MSVC/amd64/passthru.exe b/install/MSVC/amd64/passthru.exe
new file mode 100644
index 00000000..93b50d6b
Binary files /dev/null and b/install/MSVC/amd64/passthru.exe differ
diff --git a/install/MSVC/amd64/passthru.ilk b/install/MSVC/amd64/passthru.ilk
new file mode 100644
index 00000000..120e48c2
Binary files /dev/null and b/install/MSVC/amd64/passthru.ilk differ
diff --git a/install/MSVC/amd64/passthru.pdb b/install/MSVC/amd64/passthru.pdb
new file mode 100644
index 00000000..c45d78d3
Binary files /dev/null and b/install/MSVC/amd64/passthru.pdb differ
diff --git a/install/MSVC/amd64/socketdump.exe b/install/MSVC/amd64/socketdump.exe
new file mode 100644
index 00000000..d8f5cefe
Binary files /dev/null and b/install/MSVC/amd64/socketdump.exe differ
diff --git a/install/MSVC/amd64/socketdump.ilk b/install/MSVC/amd64/socketdump.ilk
new file mode 100644
index 00000000..d97fcd06
Binary files /dev/null and b/install/MSVC/amd64/socketdump.ilk differ
diff --git a/install/MSVC/amd64/socketdump.pdb b/install/MSVC/amd64/socketdump.pdb
new file mode 100644
index 00000000..ef1b961f
Binary files /dev/null and b/install/MSVC/amd64/socketdump.pdb differ
diff --git a/install/MSVC/amd64/streamdump.exe b/install/MSVC/amd64/streamdump.exe
new file mode 100644
index 00000000..699f92b5
Binary files /dev/null and b/install/MSVC/amd64/streamdump.exe differ
diff --git a/install/MSVC/amd64/streamdump.ilk b/install/MSVC/amd64/streamdump.ilk
new file mode 100644
index 00000000..2f1aeb48
Binary files /dev/null and b/install/MSVC/amd64/streamdump.ilk differ
diff --git a/install/MSVC/amd64/streamdump.pdb b/install/MSVC/amd64/streamdump.pdb
new file mode 100644
index 00000000..c4a4b3d6
Binary files /dev/null and b/install/MSVC/amd64/streamdump.pdb differ
diff --git a/install/MSVC/amd64/test.exe b/install/MSVC/amd64/test.exe
new file mode 100644
index 00000000..03885c44
Binary files /dev/null and b/install/MSVC/amd64/test.exe differ
diff --git a/install/MSVC/amd64/test.ilk b/install/MSVC/amd64/test.ilk
new file mode 100644
index 00000000..4779f60a
Binary files /dev/null and b/install/MSVC/amd64/test.ilk differ
diff --git a/install/MSVC/amd64/test.pdb b/install/MSVC/amd64/test.pdb
new file mode 100644
index 00000000..1c958694
Binary files /dev/null and b/install/MSVC/amd64/test.pdb differ
diff --git a/install/MSVC/amd64/webfilter.exe b/install/MSVC/amd64/webfilter.exe
new file mode 100644
index 00000000..0e24be47
Binary files /dev/null and b/install/MSVC/amd64/webfilter.exe differ
diff --git a/install/MSVC/amd64/webfilter.ilk b/install/MSVC/amd64/webfilter.ilk
new file mode 100644
index 00000000..50e95e62
Binary files /dev/null and b/install/MSVC/amd64/webfilter.ilk differ
diff --git a/install/MSVC/amd64/webfilter.pdb b/install/MSVC/amd64/webfilter.pdb
new file mode 100644
index 00000000..ee0e3449
Binary files /dev/null and b/install/MSVC/amd64/webfilter.pdb differ
diff --git a/install/MSVC/amd64/windivert.obj b/install/MSVC/amd64/windivert.obj
new file mode 100644
index 00000000..9326179e
Binary files /dev/null and b/install/MSVC/amd64/windivert.obj differ
diff --git a/install/MSVC/amd64/windivert32.inf b/install/MSVC/amd64/windivert32.inf
new file mode 100644
index 00000000..03254e63
--- /dev/null
+++ b/install/MSVC/amd64/windivert32.inf
@@ -0,0 +1,43 @@
+[Version]
+Signature = "$Windows NT$"
+Class = WFPCALLOUTS
+ClassGuid = {57465043-616C-6C6F-7574-5F636C617373}
+Provider = %Basil%
+CatalogFile = WinDivert32.Cat
+DriverVer = 08/08/2019,2.2.0
+PnpLockdown=1
+
+[SourceDisksNames]
+1 = %DiskName%
+
+[SourceDisksFiles]
+WinDivert32.sys = 1
+
+[DestinationDirs]
+DefaultDestDir = 12 ; %windir%\system32\drivers
+WinDivertCalloutDriver.DriverFiles = 12 ; %windir%\system32\drivers
+
+[DefaultInstall.NTx86]
+OptionDesc = %Description%
+CopyFiles = WinDivertCalloutDriver.DriverFiles
+
+[DefaultInstall.NTx86.Services]
+AddService = %ServiceName%,,WinDivertCalloutDriver.Service
+
+[WinDivertCalloutDriver.DriverFiles]
+WinDivert32.sys,,,0x00000040 ; COPYFLG_OVERWRITE_OLDER_ONLY
+
+[WinDivertCalloutDriver.Service]
+DisplayName = %ServiceName%
+Description = %ServiceDesc%
+ServiceType = 1 ; SERVICE_KERNEL_DRIVER
+StartType = 0 ; SERVICE_BOOT_START
+ErrorControl = 1 ; SERVICE_ERROR_NORMAL
+ServiceBinary = %12%\WinDivert32.sys
+
+[Strings]
+Basil = "Basil"
+DiskName = "WinDivert Installation Disk"
+Description = "WinDivert Driver"
+ServiceName = "WinDivert"
+ServiceDesc = "WinDivert Driver"
diff --git a/install/MSVC/amd64/windivert64.inf b/install/MSVC/amd64/windivert64.inf
new file mode 100644
index 00000000..2cfccafb
--- /dev/null
+++ b/install/MSVC/amd64/windivert64.inf
@@ -0,0 +1,42 @@
+[Version]
+Signature = "$Windows NT$"
+Class = WFPCALLOUTS
+ClassGuid = {57465043-616C-6C6F-7574-5F636C617373}
+Provider = %Basil%
+CatalogFile = WinDivert64.Cat
+DriverVer = 08/08/2019,2.2.0
+
+[SourceDisksNames]
+1 = %DiskName%
+
+[SourceDisksFiles]
+WinDivert64.sys = 1
+
+[DestinationDirs]
+DefaultDestDir = 12 ; %windir%\system32\drivers
+WinDivertCalloutDriver.DriverFiles = 12 ; %windir%\system32\drivers
+
+[DefaultInstall]
+OptionDesc = %Description%
+CopyFiles = WinDivertCalloutDriver.DriverFiles
+
+[DefaultInstall.Services]
+AddService = %ServiceName%,,WinDivertCalloutDriver.Service
+
+[WinDivertCalloutDriver.DriverFiles]
+WinDivert64.sys,,,0x00000040 ; COPYFLG_OVERWRITE_OLDER_ONLY
+
+[WinDivertCalloutDriver.Service]
+DisplayName = %ServiceName%
+Description = %ServiceDesc%
+ServiceType = 1 ; SERVICE_KERNEL_DRIVER
+StartType = 0 ; SERVICE_BOOT_START
+ErrorControl = 1 ; SERVICE_ERROR_NORMAL
+ServiceBinary = %12%\WinDivert64.sys
+
+[Strings]
+Basil = "Basil"
+DiskName = "WinDivert Installation Disk"
+Description = "WinDivert Driver"
+ServiceName = "WinDivert"
+ServiceDesc = "WinDivert Driver"
\ No newline at end of file
diff --git a/install/MSVC/amd64/windivertctl.exe b/install/MSVC/amd64/windivertctl.exe
new file mode 100644
index 00000000..a6e40391
Binary files /dev/null and b/install/MSVC/amd64/windivertctl.exe differ
diff --git a/install/MSVC/amd64/windivertctl.ilk b/install/MSVC/amd64/windivertctl.ilk
new file mode 100644
index 00000000..5a393d3e
Binary files /dev/null and b/install/MSVC/amd64/windivertctl.ilk differ
diff --git a/install/MSVC/amd64/windivertctl.pdb b/install/MSVC/amd64/windivertctl.pdb
new file mode 100644
index 00000000..312886c4
Binary files /dev/null and b/install/MSVC/amd64/windivertctl.pdb differ
diff --git a/install/MSVC/i386/WinDivert.dll b/install/MSVC/i386/WinDivert.dll
new file mode 100644
index 00000000..916b6ef4
Binary files /dev/null and b/install/MSVC/i386/WinDivert.dll differ
diff --git a/install/MSVC/i386/WinDivert.ilk b/install/MSVC/i386/WinDivert.ilk
new file mode 100644
index 00000000..b79bd13c
Binary files /dev/null and b/install/MSVC/i386/WinDivert.ilk differ
diff --git a/install/MSVC/i386/WinDivert.lib b/install/MSVC/i386/WinDivert.lib
new file mode 100644
index 00000000..502868c7
Binary files /dev/null and b/install/MSVC/i386/WinDivert.lib differ
diff --git a/install/MSVC/i386/WinDivert.pdb b/install/MSVC/i386/WinDivert.pdb
new file mode 100644
index 00000000..eb3ec1b5
Binary files /dev/null and b/install/MSVC/i386/WinDivert.pdb differ
diff --git a/install/MSVC/i386/flowtrack.exe b/install/MSVC/i386/flowtrack.exe
new file mode 100644
index 00000000..73dfb223
Binary files /dev/null and b/install/MSVC/i386/flowtrack.exe differ
diff --git a/install/MSVC/i386/flowtrack.ilk b/install/MSVC/i386/flowtrack.ilk
new file mode 100644
index 00000000..2fba18d6
Binary files /dev/null and b/install/MSVC/i386/flowtrack.ilk differ
diff --git a/install/MSVC/i386/flowtrack.pdb b/install/MSVC/i386/flowtrack.pdb
new file mode 100644
index 00000000..d7a33076
Binary files /dev/null and b/install/MSVC/i386/flowtrack.pdb differ
diff --git a/install/MSVC/i386/netdump.exe b/install/MSVC/i386/netdump.exe
new file mode 100644
index 00000000..47ef186b
Binary files /dev/null and b/install/MSVC/i386/netdump.exe differ
diff --git a/install/MSVC/i386/netdump.ilk b/install/MSVC/i386/netdump.ilk
new file mode 100644
index 00000000..434dab00
Binary files /dev/null and b/install/MSVC/i386/netdump.ilk differ
diff --git a/install/MSVC/i386/netdump.pdb b/install/MSVC/i386/netdump.pdb
new file mode 100644
index 00000000..0122547e
Binary files /dev/null and b/install/MSVC/i386/netdump.pdb differ
diff --git a/install/MSVC/i386/netfilter.exe b/install/MSVC/i386/netfilter.exe
new file mode 100644
index 00000000..ddb44359
Binary files /dev/null and b/install/MSVC/i386/netfilter.exe differ
diff --git a/install/MSVC/i386/netfilter.ilk b/install/MSVC/i386/netfilter.ilk
new file mode 100644
index 00000000..063eba33
Binary files /dev/null and b/install/MSVC/i386/netfilter.ilk differ
diff --git a/install/MSVC/i386/netfilter.pdb b/install/MSVC/i386/netfilter.pdb
new file mode 100644
index 00000000..dd48cd06
Binary files /dev/null and b/install/MSVC/i386/netfilter.pdb differ
diff --git a/install/MSVC/i386/passthru.exe b/install/MSVC/i386/passthru.exe
new file mode 100644
index 00000000..92ff2a15
Binary files /dev/null and b/install/MSVC/i386/passthru.exe differ
diff --git a/install/MSVC/i386/passthru.ilk b/install/MSVC/i386/passthru.ilk
new file mode 100644
index 00000000..8ef2476f
Binary files /dev/null and b/install/MSVC/i386/passthru.ilk differ
diff --git a/install/MSVC/i386/passthru.pdb b/install/MSVC/i386/passthru.pdb
new file mode 100644
index 00000000..174b494e
Binary files /dev/null and b/install/MSVC/i386/passthru.pdb differ
diff --git a/install/MSVC/i386/socketdump.exe b/install/MSVC/i386/socketdump.exe
new file mode 100644
index 00000000..6dd374f5
Binary files /dev/null and b/install/MSVC/i386/socketdump.exe differ
diff --git a/install/MSVC/i386/socketdump.ilk b/install/MSVC/i386/socketdump.ilk
new file mode 100644
index 00000000..7f0ad217
Binary files /dev/null and b/install/MSVC/i386/socketdump.ilk differ
diff --git a/install/MSVC/i386/socketdump.pdb b/install/MSVC/i386/socketdump.pdb
new file mode 100644
index 00000000..263b455d
Binary files /dev/null and b/install/MSVC/i386/socketdump.pdb differ
diff --git a/install/MSVC/i386/streamdump.exe b/install/MSVC/i386/streamdump.exe
new file mode 100644
index 00000000..6fe392fe
Binary files /dev/null and b/install/MSVC/i386/streamdump.exe differ
diff --git a/install/MSVC/i386/streamdump.ilk b/install/MSVC/i386/streamdump.ilk
new file mode 100644
index 00000000..24828bcc
Binary files /dev/null and b/install/MSVC/i386/streamdump.ilk differ
diff --git a/install/MSVC/i386/streamdump.pdb b/install/MSVC/i386/streamdump.pdb
new file mode 100644
index 00000000..73f3675c
Binary files /dev/null and b/install/MSVC/i386/streamdump.pdb differ
diff --git a/install/MSVC/i386/test.exe b/install/MSVC/i386/test.exe
new file mode 100644
index 00000000..f832c404
Binary files /dev/null and b/install/MSVC/i386/test.exe differ
diff --git a/install/MSVC/i386/test.ilk b/install/MSVC/i386/test.ilk
new file mode 100644
index 00000000..48091f66
Binary files /dev/null and b/install/MSVC/i386/test.ilk differ
diff --git a/install/MSVC/i386/test.pdb b/install/MSVC/i386/test.pdb
new file mode 100644
index 00000000..0bf860f3
Binary files /dev/null and b/install/MSVC/i386/test.pdb differ
diff --git a/install/MSVC/i386/webfilter.exe b/install/MSVC/i386/webfilter.exe
new file mode 100644
index 00000000..b72d3179
Binary files /dev/null and b/install/MSVC/i386/webfilter.exe differ
diff --git a/install/MSVC/i386/webfilter.ilk b/install/MSVC/i386/webfilter.ilk
new file mode 100644
index 00000000..df4dff0b
Binary files /dev/null and b/install/MSVC/i386/webfilter.ilk differ
diff --git a/install/MSVC/i386/webfilter.pdb b/install/MSVC/i386/webfilter.pdb
new file mode 100644
index 00000000..cdff5e86
Binary files /dev/null and b/install/MSVC/i386/webfilter.pdb differ
diff --git a/install/MSVC/i386/windivertctl.exe b/install/MSVC/i386/windivertctl.exe
new file mode 100644
index 00000000..9bbf5efc
Binary files /dev/null and b/install/MSVC/i386/windivertctl.exe differ
diff --git a/install/MSVC/i386/windivertctl.ilk b/install/MSVC/i386/windivertctl.ilk
new file mode 100644
index 00000000..64a46e3e
Binary files /dev/null and b/install/MSVC/i386/windivertctl.ilk differ
diff --git a/install/MSVC/i386/windivertctl.pdb b/install/MSVC/i386/windivertctl.pdb
new file mode 100644
index 00000000..8439164d
Binary files /dev/null and b/install/MSVC/i386/windivertctl.pdb differ
diff --git a/msbuild b/msbuild
new file mode 100644
index 00000000..e69de29b
diff --git a/msvc-build.bat b/msvc-build.bat
index 509243fd..5cac142a 100644
--- a/msvc-build.bat
+++ b/msvc-build.bat
@@ -32,13 +32,6 @@
@echo off
-msbuild sys\windivert.vcxproj ^
- /p:Configuration=Release ^
- /p:platform=Win32 ^
- /p:SignMode=Off ^
- /p:OutDir=..\install\MSVC\i386\ ^
- /p:AssemblyName=WinDivert32
-
msbuild sys\windivert.vcxproj ^
/p:Configuration=Release ^
/p:platform=x64 ^
diff --git a/sys/.vs/windivert - Copy/CopilotIndices/17.13.433.20974/CodeChunks.db b/sys/.vs/windivert - Copy/CopilotIndices/17.13.433.20974/CodeChunks.db
new file mode 100644
index 00000000..8d8662de
Binary files /dev/null and b/sys/.vs/windivert - Copy/CopilotIndices/17.13.433.20974/CodeChunks.db differ
diff --git a/sys/.vs/windivert - Copy/CopilotIndices/17.13.433.20974/SemanticSymbols.db b/sys/.vs/windivert - Copy/CopilotIndices/17.13.433.20974/SemanticSymbols.db
new file mode 100644
index 00000000..381d358f
Binary files /dev/null and b/sys/.vs/windivert - Copy/CopilotIndices/17.13.433.20974/SemanticSymbols.db differ
diff --git a/sys/.vs/windivert - Copy/FileContentIndex/merges/2d136856-38de-47b6-bafd-3070a8f38575.vsidx b/sys/.vs/windivert - Copy/FileContentIndex/merges/2d136856-38de-47b6-bafd-3070a8f38575.vsidx
new file mode 100644
index 00000000..e69de29b
diff --git a/sys/.vs/windivert - Copy/v17/.suo b/sys/.vs/windivert - Copy/v17/.suo
new file mode 100644
index 00000000..d23a9ae4
Binary files /dev/null and b/sys/.vs/windivert - Copy/v17/.suo differ
diff --git a/sys/.vs/windivert - Copy/v17/Browse.VC.db b/sys/.vs/windivert - Copy/v17/Browse.VC.db
new file mode 100644
index 00000000..ed933a74
Binary files /dev/null and b/sys/.vs/windivert - Copy/v17/Browse.VC.db differ
diff --git a/sys/.vs/windivert - Copy/v17/Solution.VC.db b/sys/.vs/windivert - Copy/v17/Solution.VC.db
new file mode 100644
index 00000000..8a59aa18
Binary files /dev/null and b/sys/.vs/windivert - Copy/v17/Solution.VC.db differ
diff --git a/sys/.vs/windivert/CopilotIndices/17.12.38.29086/CodeChunks.db b/sys/.vs/windivert/CopilotIndices/17.12.38.29086/CodeChunks.db
new file mode 100644
index 00000000..fe8bf2d0
Binary files /dev/null and b/sys/.vs/windivert/CopilotIndices/17.12.38.29086/CodeChunks.db differ
diff --git a/sys/.vs/windivert/CopilotIndices/17.12.38.29086/SemanticSymbols.db b/sys/.vs/windivert/CopilotIndices/17.12.38.29086/SemanticSymbols.db
new file mode 100644
index 00000000..664cabda
Binary files /dev/null and b/sys/.vs/windivert/CopilotIndices/17.12.38.29086/SemanticSymbols.db differ
diff --git a/sys/.vs/windivert/CopilotIndices/17.12.38.29086/SemanticSymbols.db-shm b/sys/.vs/windivert/CopilotIndices/17.12.38.29086/SemanticSymbols.db-shm
new file mode 100644
index 00000000..582ea4cb
Binary files /dev/null and b/sys/.vs/windivert/CopilotIndices/17.12.38.29086/SemanticSymbols.db-shm differ
diff --git a/sys/.vs/windivert/CopilotIndices/17.12.38.29086/SemanticSymbols.db-wal b/sys/.vs/windivert/CopilotIndices/17.12.38.29086/SemanticSymbols.db-wal
new file mode 100644
index 00000000..727b31cb
Binary files /dev/null and b/sys/.vs/windivert/CopilotIndices/17.12.38.29086/SemanticSymbols.db-wal differ
diff --git a/sys/.vs/windivert/CopilotIndices/17.13.433.20974/CodeChunks.db b/sys/.vs/windivert/CopilotIndices/17.13.433.20974/CodeChunks.db
new file mode 100644
index 00000000..1250676f
Binary files /dev/null and b/sys/.vs/windivert/CopilotIndices/17.13.433.20974/CodeChunks.db differ
diff --git a/sys/.vs/windivert/CopilotIndices/17.13.433.20974/SemanticSymbols.db b/sys/.vs/windivert/CopilotIndices/17.13.433.20974/SemanticSymbols.db
new file mode 100644
index 00000000..9b100f89
Binary files /dev/null and b/sys/.vs/windivert/CopilotIndices/17.13.433.20974/SemanticSymbols.db differ
diff --git a/sys/.vs/windivert/FileContentIndex/009d0697-5816-46ef-8102-fa1a88afc08d.vsidx b/sys/.vs/windivert/FileContentIndex/009d0697-5816-46ef-8102-fa1a88afc08d.vsidx
new file mode 100644
index 00000000..70aef67a
Binary files /dev/null and b/sys/.vs/windivert/FileContentIndex/009d0697-5816-46ef-8102-fa1a88afc08d.vsidx differ
diff --git a/sys/.vs/windivert/FileContentIndex/0374581f-421b-44fb-bc3c-9649b9cdcffc.vsidx b/sys/.vs/windivert/FileContentIndex/0374581f-421b-44fb-bc3c-9649b9cdcffc.vsidx
new file mode 100644
index 00000000..70aef67a
Binary files /dev/null and b/sys/.vs/windivert/FileContentIndex/0374581f-421b-44fb-bc3c-9649b9cdcffc.vsidx differ
diff --git a/sys/.vs/windivert/FileContentIndex/43b153b2-1096-4f77-b30d-c81b85d86fb2.vsidx b/sys/.vs/windivert/FileContentIndex/43b153b2-1096-4f77-b30d-c81b85d86fb2.vsidx
new file mode 100644
index 00000000..1db896d3
Binary files /dev/null and b/sys/.vs/windivert/FileContentIndex/43b153b2-1096-4f77-b30d-c81b85d86fb2.vsidx differ
diff --git a/sys/.vs/windivert/FileContentIndex/76bfbecb-383d-486f-95b3-1591039e8986.vsidx b/sys/.vs/windivert/FileContentIndex/76bfbecb-383d-486f-95b3-1591039e8986.vsidx
new file mode 100644
index 00000000..70aef67a
Binary files /dev/null and b/sys/.vs/windivert/FileContentIndex/76bfbecb-383d-486f-95b3-1591039e8986.vsidx differ
diff --git a/sys/.vs/windivert/FileContentIndex/98077515-6f37-4fbf-8862-0d6cdde91753.vsidx b/sys/.vs/windivert/FileContentIndex/98077515-6f37-4fbf-8862-0d6cdde91753.vsidx
new file mode 100644
index 00000000..36d66b02
Binary files /dev/null and b/sys/.vs/windivert/FileContentIndex/98077515-6f37-4fbf-8862-0d6cdde91753.vsidx differ
diff --git a/sys/.vs/windivert/copilot-chat/3bc9f777/sessions/8cd7f27e-bd30-4b86-b91b-a7b7174ffb0e b/sys/.vs/windivert/copilot-chat/3bc9f777/sessions/8cd7f27e-bd30-4b86-b91b-a7b7174ffb0e
new file mode 100644
index 00000000..21ddf9c1
Binary files /dev/null and b/sys/.vs/windivert/copilot-chat/3bc9f777/sessions/8cd7f27e-bd30-4b86-b91b-a7b7174ffb0e differ
diff --git a/sys/.vs/windivert/v17/.suo b/sys/.vs/windivert/v17/.suo
new file mode 100644
index 00000000..66c505ff
Binary files /dev/null and b/sys/.vs/windivert/v17/.suo differ
diff --git a/sys/.vs/windivert/v17/Browse.VC.db b/sys/.vs/windivert/v17/Browse.VC.db
new file mode 100644
index 00000000..366f8f44
Binary files /dev/null and b/sys/.vs/windivert/v17/Browse.VC.db differ
diff --git a/sys/.vs/windivert/v17/DocumentLayout.backup.json b/sys/.vs/windivert/v17/DocumentLayout.backup.json
new file mode 100644
index 00000000..3795b6c7
--- /dev/null
+++ b/sys/.vs/windivert/v17/DocumentLayout.backup.json
@@ -0,0 +1,37 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "C:\\WinDivert\\sys\\",
+ "Documents": [
+ {
+ "AbsoluteMoniker": "D:0:0:{C1A6A244-A523-4F5E-933B-192BB4176681}|windivert.vcxproj|C:\\WinDivert\\sys\\windivert.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
+ "RelativeMoniker": "D:0:0:{C1A6A244-A523-4F5E-933B-192BB4176681}|windivert.vcxproj|solutionrelative:windivert.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+ }
+ ],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": [
+ {
+ "DockedWidth": 200,
+ "SelectedChildIndex": 0,
+ "Children": [
+ {
+ "$type": "Document",
+ "DocumentIndex": 0,
+ "Title": "windivert.c",
+ "DocumentMoniker": "C:\\WinDivert\\sys\\windivert.c",
+ "RelativeDocumentMoniker": "windivert.c",
+ "ToolTip": "C:\\WinDivert\\sys\\windivert.c",
+ "RelativeToolTip": "windivert.c",
+ "ViewState": "AgIAABQNAAAAAAAAAAAiwCENAAASAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|",
+ "WhenOpened": "2025-03-06T06:01:18.809Z",
+ "EditorCaption": ""
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sys/.vs/windivert/v17/DocumentLayout.json b/sys/.vs/windivert/v17/DocumentLayout.json
new file mode 100644
index 00000000..3795b6c7
--- /dev/null
+++ b/sys/.vs/windivert/v17/DocumentLayout.json
@@ -0,0 +1,37 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "C:\\WinDivert\\sys\\",
+ "Documents": [
+ {
+ "AbsoluteMoniker": "D:0:0:{C1A6A244-A523-4F5E-933B-192BB4176681}|windivert.vcxproj|C:\\WinDivert\\sys\\windivert.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
+ "RelativeMoniker": "D:0:0:{C1A6A244-A523-4F5E-933B-192BB4176681}|windivert.vcxproj|solutionrelative:windivert.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
+ }
+ ],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": [
+ {
+ "DockedWidth": 200,
+ "SelectedChildIndex": 0,
+ "Children": [
+ {
+ "$type": "Document",
+ "DocumentIndex": 0,
+ "Title": "windivert.c",
+ "DocumentMoniker": "C:\\WinDivert\\sys\\windivert.c",
+ "RelativeDocumentMoniker": "windivert.c",
+ "ToolTip": "C:\\WinDivert\\sys\\windivert.c",
+ "RelativeToolTip": "windivert.c",
+ "ViewState": "AgIAABQNAAAAAAAAAAAiwCENAAASAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|",
+ "WhenOpened": "2025-03-06T06:01:18.809Z",
+ "EditorCaption": ""
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/sys/.vs/windivert/v17/Solution.VC.db b/sys/.vs/windivert/v17/Solution.VC.db
new file mode 100644
index 00000000..b440920c
Binary files /dev/null and b/sys/.vs/windivert/v17/Solution.VC.db differ
diff --git a/sys/.vs/windivert/v17/ipch/AutoPCH/482dd13a52681c6f/WINDIVERT.ipch b/sys/.vs/windivert/v17/ipch/AutoPCH/482dd13a52681c6f/WINDIVERT.ipch
new file mode 100644
index 00000000..2d2472d0
Binary files /dev/null and b/sys/.vs/windivert/v17/ipch/AutoPCH/482dd13a52681c6f/WINDIVERT.ipch differ
diff --git a/sys/.vs/windivert/v17/ipch/AutoPCH/4d88c9bb9cb0d83d/TMPD8B4.TMP.ipch b/sys/.vs/windivert/v17/ipch/AutoPCH/4d88c9bb9cb0d83d/TMPD8B4.TMP.ipch
new file mode 100644
index 00000000..2c9f6793
Binary files /dev/null and b/sys/.vs/windivert/v17/ipch/AutoPCH/4d88c9bb9cb0d83d/TMPD8B4.TMP.ipch differ
diff --git a/sys/.vs/windivert/v17/ipch/AutoPCH/5953973cb8fed96d/MONITOR.ipch b/sys/.vs/windivert/v17/ipch/AutoPCH/5953973cb8fed96d/MONITOR.ipch
new file mode 100644
index 00000000..b8f30108
Binary files /dev/null and b/sys/.vs/windivert/v17/ipch/AutoPCH/5953973cb8fed96d/MONITOR.ipch differ
diff --git a/sys/.vs/windivert/v17/ipch/AutoPCH/93556c5b13bb55c2/WINDIVERT.ipch b/sys/.vs/windivert/v17/ipch/AutoPCH/93556c5b13bb55c2/WINDIVERT.ipch
new file mode 100644
index 00000000..5f8ce749
Binary files /dev/null and b/sys/.vs/windivert/v17/ipch/AutoPCH/93556c5b13bb55c2/WINDIVERT.ipch differ
diff --git a/sys/.vs/windivert/v17/ipch/AutoPCH/c586f508ec42f909/WINDIVERT.ipch b/sys/.vs/windivert/v17/ipch/AutoPCH/c586f508ec42f909/WINDIVERT.ipch
new file mode 100644
index 00000000..580b6134
Binary files /dev/null and b/sys/.vs/windivert/v17/ipch/AutoPCH/c586f508ec42f909/WINDIVERT.ipch differ
diff --git a/sys/.vs/windivert/v17/ipch/AutoPCH/e6644b8b9d1c77a0/WINDIVERT.ipch b/sys/.vs/windivert/v17/ipch/AutoPCH/e6644b8b9d1c77a0/WINDIVERT.ipch
new file mode 100644
index 00000000..46fd7215
Binary files /dev/null and b/sys/.vs/windivert/v17/ipch/AutoPCH/e6644b8b9d1c77a0/WINDIVERT.ipch differ
diff --git a/sys/.vs/windivert/v17/ipch/AutoPCH/fcdfcda63452199b/WINDIVERT.ipch b/sys/.vs/windivert/v17/ipch/AutoPCH/fcdfcda63452199b/WINDIVERT.ipch
new file mode 100644
index 00000000..da36aa11
Binary files /dev/null and b/sys/.vs/windivert/v17/ipch/AutoPCH/fcdfcda63452199b/WINDIVERT.ipch differ
diff --git a/sys/MSG00001.bin b/sys/MSG00001.bin
new file mode 100644
index 00000000..29c7702a
Binary files /dev/null and b/sys/MSG00001.bin differ
diff --git a/sys/RCa17512 b/sys/RCa17512
new file mode 100644
index 00000000..279666ba
Binary files /dev/null and b/sys/RCa17512 differ
diff --git a/sys/RCa28648 b/sys/RCa28648
new file mode 100644
index 00000000..167105ea
Binary files /dev/null and b/sys/RCa28648 differ
diff --git a/sys/RCa46140 b/sys/RCa46140
new file mode 100644
index 00000000..167105ea
Binary files /dev/null and b/sys/RCa46140 differ
diff --git a/sys/RCa50948 b/sys/RCa50948
new file mode 100644
index 00000000..5b83a542
Binary files /dev/null and b/sys/RCa50948 differ
diff --git a/sys/RCb17512 b/sys/RCb17512
new file mode 100644
index 00000000..279666ba
Binary files /dev/null and b/sys/RCb17512 differ
diff --git a/sys/Release/WinDivert.tlog/CL.command.1.tlog b/sys/Release/WinDivert.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..46b134b1
--- /dev/null
+++ b/sys/Release/WinDivert.tlog/CL.command.1.tlog
@@ -0,0 +1 @@
+ÿþ
\ No newline at end of file
diff --git a/sys/Release/WinDivert.tlog/WinDivert.lastbuildstate b/sys/Release/WinDivert.tlog/WinDivert.lastbuildstate
new file mode 100644
index 00000000..da459697
--- /dev/null
+++ b/sys/Release/WinDivert.tlog/WinDivert.lastbuildstate
@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.42.34433:TargetPlatformVersion=10.0.26100.0:
+Release|Win32|C:\Users\kujax\OneDrive\Desktop\WinDivert-master\sys\|
diff --git a/sys/Release/WinDivert.tlog/unsuccessfulbuild b/sys/Release/WinDivert.tlog/unsuccessfulbuild
new file mode 100644
index 00000000..e69de29b
diff --git a/sys/Release/vc143.idb b/sys/Release/vc143.idb
new file mode 100644
index 00000000..a96b0cbd
Binary files /dev/null and b/sys/Release/vc143.idb differ
diff --git a/sys/Release/vc143.pdb b/sys/Release/vc143.pdb
new file mode 100644
index 00000000..7cf2ffb5
Binary files /dev/null and b/sys/Release/vc143.pdb differ
diff --git a/sys/WinDivert/x64/Release/WinDivert.Build.CppClean.log b/sys/WinDivert/x64/Release/WinDivert.Build.CppClean.log
new file mode 100644
index 00000000..0efcdce5
--- /dev/null
+++ b/sys/WinDivert/x64/Release/WinDivert.Build.CppClean.log
@@ -0,0 +1,9 @@
+e:\unity\windivert\sys\windivert\x64\release\windivert.i
+e:\unity\windivert\sys\windivert\x64\release\vc143.pdb
+e:\unity\windivert\sys\windivert\x64\release\windivert.res
+e:\unity\windivert\sys\windivert\x64\release\windivert.tlog\cl.command.1.tlog
+e:\unity\windivert\sys\windivert\x64\release\windivert.tlog\cl.items.tlog
+e:\unity\windivert\sys\windivert\x64\release\windivert.tlog\cl.write.1.tlog
+e:\unity\windivert\sys\windivert\x64\release\windivert.tlog\rc.command.1.tlog
+e:\unity\windivert\sys\windivert\x64\release\windivert.tlog\rc.read.1.tlog
+e:\unity\windivert\sys\windivert\x64\release\windivert.tlog\rc.write.1.tlog
diff --git a/sys/WinDivert/x64/Release/WinDivert.recipe b/sys/WinDivert/x64/Release/WinDivert.recipe
new file mode 100644
index 00000000..d5a43fe6
--- /dev/null
+++ b/sys/WinDivert/x64/Release/WinDivert.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ E:\Unity\WinDivert\sys\x64\Release\WinDivert
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sys/WinDivert/x64/Release/WinDivert.sys.recipe b/sys/WinDivert/x64/Release/WinDivert.sys.recipe
new file mode 100644
index 00000000..5e831ffb
--- /dev/null
+++ b/sys/WinDivert/x64/Release/WinDivert.sys.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ E:\Unity\WinDivert\sys\x64\Release\WinDivert.sys
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sys/WinDivert/x64/Release/WinDivert.tlog/CL.command.1.tlog b/sys/WinDivert/x64/Release/WinDivert.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..08a806e8
Binary files /dev/null and b/sys/WinDivert/x64/Release/WinDivert.tlog/CL.command.1.tlog differ
diff --git a/sys/WinDivert/x64/Release/WinDivert.tlog/CL.write.1.tlog b/sys/WinDivert/x64/Release/WinDivert.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..cb9448d3
Binary files /dev/null and b/sys/WinDivert/x64/Release/WinDivert.tlog/CL.write.1.tlog differ
diff --git a/sys/WinDivert/x64/Release/WinDivert.tlog/Cl.items.tlog b/sys/WinDivert/x64/Release/WinDivert.tlog/Cl.items.tlog
new file mode 100644
index 00000000..992ad597
--- /dev/null
+++ b/sys/WinDivert/x64/Release/WinDivert.tlog/Cl.items.tlog
@@ -0,0 +1 @@
+E:\Unity\WinDivert\sys\windivert.c;E:\Unity\WinDivert\sys\WinDivert\x64\Release\windivert.obj
diff --git a/sys/WinDivert/x64/Release/WinDivert.tlog/WinDivert.lastbuildstate b/sys/WinDivert/x64/Release/WinDivert.tlog/WinDivert.lastbuildstate
new file mode 100644
index 00000000..089d9e9c
--- /dev/null
+++ b/sys/WinDivert/x64/Release/WinDivert.tlog/WinDivert.lastbuildstate
@@ -0,0 +1,2 @@
+PlatformToolSet=WindowsKernelModeDriver10.0:VCToolArchitecture=Native32Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.26100.0:
+Release|x64|C:\WinDivert\sys\|
diff --git a/sys/WinDivert/x64/Release/WinDivert.tlog/rc.command.1.tlog b/sys/WinDivert/x64/Release/WinDivert.tlog/rc.command.1.tlog
new file mode 100644
index 00000000..9d8d77e7
Binary files /dev/null and b/sys/WinDivert/x64/Release/WinDivert.tlog/rc.command.1.tlog differ
diff --git a/sys/WinDivert/x64/Release/WinDivert.tlog/rc.read.1.tlog b/sys/WinDivert/x64/Release/WinDivert.tlog/rc.read.1.tlog
new file mode 100644
index 00000000..b6cddc37
Binary files /dev/null and b/sys/WinDivert/x64/Release/WinDivert.tlog/rc.read.1.tlog differ
diff --git a/sys/WinDivert/x64/Release/WinDivert.tlog/rc.write.1.tlog b/sys/WinDivert/x64/Release/WinDivert.tlog/rc.write.1.tlog
new file mode 100644
index 00000000..643cafe9
Binary files /dev/null and b/sys/WinDivert/x64/Release/WinDivert.tlog/rc.write.1.tlog differ
diff --git a/sys/WinDivert/x64/Release/WinDivert.tlog/unsuccessfulbuild b/sys/WinDivert/x64/Release/WinDivert.tlog/unsuccessfulbuild
new file mode 100644
index 00000000..e69de29b
diff --git a/sys/WinDivert/x64/Release/WinDivert64.Build.CppClean.log b/sys/WinDivert/x64/Release/WinDivert64.Build.CppClean.log
new file mode 100644
index 00000000..0efcdce5
--- /dev/null
+++ b/sys/WinDivert/x64/Release/WinDivert64.Build.CppClean.log
@@ -0,0 +1,9 @@
+e:\unity\windivert\sys\windivert\x64\release\windivert.i
+e:\unity\windivert\sys\windivert\x64\release\vc143.pdb
+e:\unity\windivert\sys\windivert\x64\release\windivert.res
+e:\unity\windivert\sys\windivert\x64\release\windivert.tlog\cl.command.1.tlog
+e:\unity\windivert\sys\windivert\x64\release\windivert.tlog\cl.items.tlog
+e:\unity\windivert\sys\windivert\x64\release\windivert.tlog\cl.write.1.tlog
+e:\unity\windivert\sys\windivert\x64\release\windivert.tlog\rc.command.1.tlog
+e:\unity\windivert\sys\windivert\x64\release\windivert.tlog\rc.read.1.tlog
+e:\unity\windivert\sys\windivert\x64\release\windivert.tlog\rc.write.1.tlog
diff --git a/sys/WinDivert/x64/Release/WinDivert64.sys.recipe b/sys/WinDivert/x64/Release/WinDivert64.sys.recipe
new file mode 100644
index 00000000..f716ab6c
--- /dev/null
+++ b/sys/WinDivert/x64/Release/WinDivert64.sys.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ E:\Unity\WinDivert\sys\x64\Release\WinDivert64.sys
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sys/WinDivert/x64/Release/vc143.pdb b/sys/WinDivert/x64/Release/vc143.pdb
new file mode 100644
index 00000000..6a2d1152
Binary files /dev/null and b/sys/WinDivert/x64/Release/vc143.pdb differ
diff --git a/sys/WinDivert/x64/Release/windivert.i b/sys/WinDivert/x64/Release/windivert.i
new file mode 100644
index 00000000..7f0b1837
--- /dev/null
+++ b/sys/WinDivert/x64/Release/windivert.i
@@ -0,0 +1,283519 @@
+#line 1 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 27 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#line 28 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+#pragma warning(disable:4116)
+
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+#pragma warning(push)
+#line 41 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#pragma warning(disable:4115)
+#pragma warning(disable:4201)
+#pragma warning(disable:4214)
+
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 25 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+#line 30 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+#line 31 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+#pragma warning(push)
+#line 38 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+#pragma warning(disable:4115)
+#pragma warning(disable:4201)
+#pragma warning(disable:4214)
+#pragma warning(disable:4625)
+#pragma warning(disable:4626)
+#pragma warning(disable:4668)
+#pragma warning(disable:4820)
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 40 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+#line 41 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+#pragma warning(push)
+#line 48 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#pragma warning(disable:4115)
+#pragma warning(disable:4201)
+#pragma warning(disable:4214)
+#pragma warning(disable:4365)
+#pragma warning(disable:4668)
+#pragma warning(disable:4820)
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\excpt.h"
+
+
+
+
+
+
+
+
+#pragma once
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 32 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+#line 34 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+#line 35 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+#line 39 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+
+
+
+
+
+#line 49 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+#line 54 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+ #line 55 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+#line 56 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 151 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+#line 155 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 185 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+#line 188 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+#line 190 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+#line 196 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+#line 200 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+#line 207 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 219 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+
+
+#line 228 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+#line 229 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma region Input Buffer SAL 1 compatibility macros
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma endregion Input Buffer SAL 1 compatibility macros
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1555 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1586 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1611 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1624 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1663 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1775 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1878 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2047 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2149 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2366 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+#line 2367 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2595 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2634 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2868 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+
+
+
+#line 2878 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+
+#line 2886 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+#line 2887 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+#line 2894 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+#line 2895 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+#line 2902 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+#line 2903 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 2915 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2949 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\concurrencysal.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 292 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\concurrencysal.h"
+
+
+
+#line 296 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\concurrencysal.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 389 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\concurrencysal.h"
+
+
+
+
+
+#line 395 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\concurrencysal.h"
+#pragma external_header(pop)
+#line 2975 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\sal.h"
+#pragma external_header(pop)
+#line 58 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+#pragma external_header(push)
+#line 1 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+#pragma pack(push, 8)
+
+
+
+
+
+
+
+ #line 24 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+#line 25 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+
+
+
+
+
+
+
+
+ #line 34 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+#line 35 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+
+
+
+
+#line 40 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+
+
+
+
+
+#line 46 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+
+#pragma warning(push)
+#pragma warning(disable: 4514 4820 )
+
+
+
+
+
+
+
+#line 57 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+
+
+
+
+ typedef unsigned __int64 uintptr_t;
+
+
+#line 65 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+#line 66 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+
+
+
+
+
+
+ typedef char* va_list;
+ #line 74 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+#line 75 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+
+
+
+
+
+#line 81 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+
+
+
+
+
+#line 87 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+
+
+
+#line 91 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+
+
+#line 94 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 106 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+
+
+
+
+
+
+
+#line 114 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 126 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+
+
+
+
+
+#line 132 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+
+
+
+
+
+
+
+
+
+
+#line 143 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+
+
+
+
+
+
+
+
+
+
+#line 154 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+
+ void __cdecl __va_start(va_list* , ...);
+
+
+
+
+
+
+
+
+#line 165 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 202 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+
+
+
+#line 206 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vadefs.h"
+
+#pragma warning(pop)
+#pragma pack(pop)
+#pragma external_header(pop)
+#line 59 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+#pragma warning(push)
+#pragma warning(disable: 4514 4820 )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 77 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+
+
+
+
+
+#line 87 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+
+
+
+#line 95 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+__pragma(pack(push, 8))
+
+
+
+
+
+
+
+
+ #line 106 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+#line 107 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 126 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+#line 128 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+ #line 130 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+#line 131 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+#line 136 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+ #line 138 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+#line 139 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+
+#line 145 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+#line 148 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+
+#line 154 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+
+
+
+
+
+
+#line 165 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+#line 167 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+
+#line 173 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+
+
+
+ #line 181 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+#line 182 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+
+
+ typedef unsigned __int64 size_t;
+ typedef __int64 ptrdiff_t;
+ typedef __int64 intptr_t;
+
+
+
+
+#line 196 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+#line 200 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+#line 204 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+ typedef _Bool __vcrt_bool;
+#line 206 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+#line 211 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+#line 215 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+#line 219 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+ typedef unsigned short wchar_t;
+#line 225 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+
+
+ #line 232 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+#line 233 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+
+#line 239 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+#line 243 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 255 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+#line 259 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+
+
+
+
+
+#line 269 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+#line 274 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+ #line 276 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+#line 277 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+#line 282 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+ #line 284 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+#line 285 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+#line 290 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+ #line 292 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+#line 293 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+
+#line 299 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+#line 303 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+
+
+
+
+
+#line 313 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+#line 314 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+#line 318 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+#line 320 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #line 334 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+#line 335 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+
+
+
+
+#line 344 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+
+
+#line 351 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+
+
+
+
+
+
+ #line 362 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+#line 363 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+#line 367 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+
+
+
+
+
+#line 375 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+#line 376 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+ void __cdecl __security_init_cookie(void);
+
+
+
+
+#line 384 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+
+#line 387 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+ void __cdecl __security_check_cookie( uintptr_t _StackCookie);
+ __declspec(noreturn) void __cdecl __report_gsfailure( uintptr_t _StackCookie);
+ #line 390 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+#line 391 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+extern uintptr_t __security_cookie;
+
+
+
+
+
+#line 399 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+
+__pragma(pack(pop))
+
+#pragma warning(pop)
+
+#line 405 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime.h"
+#pragma external_header(pop)
+#line 13 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\excpt.h"
+
+#pragma warning(push)
+#pragma warning(disable: 4514 4820 )
+
+__pragma(pack(push, 8))
+
+
+
+
+typedef enum _EXCEPTION_DISPOSITION
+{
+ ExceptionContinueExecution,
+ ExceptionContinueSearch,
+ ExceptionNestedException,
+ ExceptionCollidedUnwind
+} EXCEPTION_DISPOSITION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 46 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\excpt.h"
+
+
+ struct _EXCEPTION_RECORD;
+ struct _CONTEXT;
+ struct _DISPATCHER_CONTEXT;
+
+ EXCEPTION_DISPOSITION __cdecl __C_specific_handler(
+ struct _EXCEPTION_RECORD* ExceptionRecord,
+ void* EstablisherFrame,
+ struct _CONTEXT* ContextRecord,
+ struct _DISPATCHER_CONTEXT* DispatcherContext
+ );
+
+ #line 60 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\excpt.h"
+#line 61 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\excpt.h"
+
+
+
+
+
+
+
+
+
+
+
+unsigned long __cdecl _exception_code(void);
+void * __cdecl _exception_info(void);
+int __cdecl _abnormal_termination(void);
+
+
+
+
+
+
+
+
+
+
+__pragma(pack(pop))
+
+#pragma warning(pop)
+#pragma external_header(pop)
+#line 57 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 22 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\ctype.h"
+
+
+
+
+
+
+
+#pragma once
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #line 38 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 39 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+#line 43 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+#line 50 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 51 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #line 73 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 74 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+#line 79 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 95 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #line 111 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 112 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+ #line 119 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 120 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+#pragma warning(push)
+#pragma warning(disable: 4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727 )
+
+
+__pragma(pack(push, 8))
+
+
+
+
+
+
+
+
+
+#line 136 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+#line 140 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 141 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+#line 147 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+#line 152 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+#line 156 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 157 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+#line 161 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+#line 163 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+#line 169 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+#line 175 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+#line 177 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+#line 184 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+#line 188 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+#line 190 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+
+
+#line 201 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #line 219 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 220 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+#line 224 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+#line 226 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+#line 230 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+#line 232 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+#line 236 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+#line 238 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+ #line 245 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 246 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 270 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+#line 274 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+ typedef _Bool __crt_bool;
+#line 276 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #line 296 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+ #line 297 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 298 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 320 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+ #line 322 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 323 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+#line 327 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+#line 331 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 343 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+ #line 345 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+ #line 346 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 347 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+#line 352 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+ #line 354 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 355 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport) void __cdecl _invalid_parameter_noinfo(void);
+__declspec(dllimport) __declspec(noreturn) void __cdecl _invalid_parameter_noinfo_noreturn(void);
+
+__declspec(noreturn)
+__declspec(dllimport) void __cdecl _invoke_watson(
+ wchar_t const* _Expression,
+ wchar_t const* _FunctionName,
+ wchar_t const* _FileName,
+ unsigned int _LineNo,
+ uintptr_t _Reserved);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #line 401 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 402 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 419 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+#line 423 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+ #line 432 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 433 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #line 451 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 452 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+ #line 459 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 460 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+#line 464 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 478 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 494 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+#line 501 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+#line 505 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+#line 510 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 511 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+
+ #line 521 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+ #line 522 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 523 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+#line 527 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+#line 533 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+
+ #line 543 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 544 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+#line 553 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+
+#line 563 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+#line 570 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+#line 575 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+#line 583 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+#line 591 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 592 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+#line 596 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+typedef int errno_t;
+typedef unsigned short wint_t;
+typedef unsigned short wctype_t;
+typedef long __time32_t;
+typedef __int64 __time64_t;
+
+typedef struct __crt_locale_data_public
+{
+ unsigned short const* _locale_pctype;
+ int _locale_mb_cur_max;
+ unsigned int _locale_lc_codepage;
+} __crt_locale_data_public;
+
+typedef struct __crt_locale_pointers
+{
+ struct __crt_locale_data* locinfo;
+ struct __crt_multibyte_data* mbcinfo;
+} __crt_locale_pointers;
+
+typedef __crt_locale_pointers* _locale_t;
+
+typedef struct _Mbstatet
+{
+ unsigned long _Wchar;
+ unsigned short _Byte, _State;
+} _Mbstatet;
+
+typedef _Mbstatet mbstate_t;
+
+
+
+#line 636 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+#line 640 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+ typedef __time64_t time_t;
+ #line 647 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 648 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+#line 653 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+ typedef size_t rsize_t;
+#line 657 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 812 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #line 827 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 828 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1879 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2069 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+ #line 2070 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+#line 2071 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt.h"
+
+__pragma(pack(pop))
+
+
+#pragma warning(pop)
+#pragma external_header(pop)
+#line 13 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\ctype.h"
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wctype.h"
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+#pragma warning(push)
+#pragma warning(disable: 4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727 )
+
+
+__pragma(pack(push, 8))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ __declspec(dllimport) int __cdecl iswalnum ( wint_t _C);
+ __declspec(dllimport) int __cdecl iswalpha ( wint_t _C);
+ __declspec(dllimport) int __cdecl iswascii ( wint_t _C);
+ __declspec(dllimport) int __cdecl iswblank ( wint_t _C);
+ __declspec(dllimport) int __cdecl iswcntrl ( wint_t _C);
+
+
+ __declspec(dllimport) int __cdecl iswdigit ( wint_t _C);
+
+ __declspec(dllimport) int __cdecl iswgraph ( wint_t _C);
+ __declspec(dllimport) int __cdecl iswlower ( wint_t _C);
+ __declspec(dllimport) int __cdecl iswprint ( wint_t _C);
+ __declspec(dllimport) int __cdecl iswpunct ( wint_t _C);
+ __declspec(dllimport) int __cdecl iswspace ( wint_t _C);
+ __declspec(dllimport) int __cdecl iswupper ( wint_t _C);
+ __declspec(dllimport) int __cdecl iswxdigit ( wint_t _C);
+ __declspec(dllimport) int __cdecl __iswcsymf( wint_t _C);
+ __declspec(dllimport) int __cdecl __iswcsym ( wint_t _C);
+
+ __declspec(dllimport) int __cdecl _iswalnum_l ( wint_t _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl _iswalpha_l ( wint_t _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl _iswblank_l ( wint_t _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl _iswcntrl_l ( wint_t _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl _iswdigit_l ( wint_t _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl _iswgraph_l ( wint_t _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl _iswlower_l ( wint_t _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl _iswprint_l ( wint_t _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl _iswpunct_l ( wint_t _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl _iswspace_l ( wint_t _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl _iswupper_l ( wint_t _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl _iswxdigit_l( wint_t _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl _iswcsymf_l ( wint_t _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl _iswcsym_l ( wint_t _C, _locale_t _Locale);
+
+
+ __declspec(dllimport) wint_t __cdecl towupper( wint_t _C);
+ __declspec(dllimport) wint_t __cdecl towlower( wint_t _C);
+ __declspec(dllimport) int __cdecl iswctype( wint_t _C, wctype_t _Type);
+
+ __declspec(dllimport) wint_t __cdecl _towupper_l( wint_t _C, _locale_t _Locale);
+ __declspec(dllimport) wint_t __cdecl _towlower_l( wint_t _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl _iswctype_l( wint_t _C, wctype_t _Type, _locale_t _Locale);
+
+
+
+ __declspec(dllimport) int __cdecl isleadbyte( int _C);
+ __declspec(dllimport) int __cdecl _isleadbyte_l( int _C, _locale_t _Locale);
+
+ __declspec(deprecated("This function or variable has been superceded by newer library " "or operating system functionality. Consider using " "iswctype" " " "instead. See online help for details.")) __declspec(dllimport) int __cdecl is_wctype( wint_t _C, wctype_t _Type);
+#line 117 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wctype.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 200 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wctype.h"
+
+
+
+__pragma(pack(pop))
+
+#pragma warning(pop)
+#pragma external_header(pop)
+#line 14 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\ctype.h"
+
+#pragma warning(push)
+#pragma warning(disable: 4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727 )
+
+
+__pragma(pack(push, 8))
+
+
+
+
+
+
+
+
+
+ __declspec(dllimport) int __cdecl _isctype( int _C, int _Type);
+ __declspec(dllimport) int __cdecl _isctype_l( int _C, int _Type, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl isalpha( int _C);
+ __declspec(dllimport) int __cdecl _isalpha_l( int _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl isupper( int _C);
+ __declspec(dllimport) int __cdecl _isupper_l( int _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl islower( int _C);
+ __declspec(dllimport) int __cdecl _islower_l( int _C, _locale_t _Locale);
+
+
+ __declspec(dllimport) int __cdecl isdigit( int _C);
+
+ __declspec(dllimport) int __cdecl _isdigit_l( int _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl isxdigit( int _C);
+ __declspec(dllimport) int __cdecl _isxdigit_l( int _C, _locale_t _Locale);
+
+
+ __declspec(dllimport) int __cdecl isspace( int _C);
+
+ __declspec(dllimport) int __cdecl _isspace_l( int _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl ispunct( int _C);
+ __declspec(dllimport) int __cdecl _ispunct_l( int _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl isblank( int _C);
+ __declspec(dllimport) int __cdecl _isblank_l( int _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl isalnum( int _C);
+ __declspec(dllimport) int __cdecl _isalnum_l( int _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl isprint( int _C);
+ __declspec(dllimport) int __cdecl _isprint_l( int _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl isgraph( int _C);
+ __declspec(dllimport) int __cdecl _isgraph_l( int _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl iscntrl( int _C);
+ __declspec(dllimport) int __cdecl _iscntrl_l( int _C, _locale_t _Locale);
+
+
+ __declspec(dllimport) int __cdecl toupper( int _C);
+
+
+ __declspec(dllimport) int __cdecl tolower( int _C);
+
+ __declspec(dllimport) int __cdecl _tolower( int _C);
+ __declspec(dllimport) int __cdecl _tolower_l( int _C, _locale_t _Locale);
+ __declspec(dllimport) int __cdecl _toupper( int _C);
+ __declspec(dllimport) int __cdecl _toupper_l( int _C, _locale_t _Locale);
+
+ __declspec(dllimport) int __cdecl __isascii( int _C);
+ __declspec(dllimport) int __cdecl __toascii( int _C);
+ __declspec(dllimport) int __cdecl __iscsymf( int _C);
+ __declspec(dllimport) int __cdecl __iscsym( int _C);
+
+
+
+
+
+
+
+
+__inline int __cdecl __acrt_locale_get_ctype_array_value(
+ unsigned short const * const _Locale_pctype_array,
+ int const _Char_value,
+ int const _Mask
+ )
+{
+
+
+
+
+
+ if (_Char_value >= -1 && _Char_value <= 255)
+ {
+ return _Locale_pctype_array[_Char_value] & _Mask;
+ }
+
+ return 0;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 303 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\ctype.h"
+
+
+
+#line 307 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\ctype.h"
+__pragma(pack(pop))
+
+#pragma warning(pop)
+#line 311 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\ctype.h"
+#pragma external_header(pop)
+#line 25 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\winapifamily.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4001)
+#line 23 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\winapifamily.h"
+#pragma once
+#line 25 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\winapifamily.h"
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\winpackagefamily.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4001)
+#line 23 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\winpackagefamily.h"
+#pragma once
+#line 25 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\winpackagefamily.h"
+
+
+
+#line 29 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\winpackagefamily.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(pop)
+#line 89 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\winpackagefamily.h"
+#line 90 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\winpackagefamily.h"
+
+#line 92 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\winpackagefamily.h"
+#pragma external_header(pop)
+#line 27 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\winapifamily.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 91 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\winapifamily.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 148 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\winapifamily.h"
+
+
+
+#line 152 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\winapifamily.h"
+
+
+
+
+
+
+#line 159 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\winapifamily.h"
+
+
+
+
+
+#line 165 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\winapifamily.h"
+
+
+
+#line 169 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\winapifamily.h"
+
+
+
+
+
+#line 175 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\winapifamily.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 187 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\winapifamily.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 244 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\winapifamily.h"
+
+
+
+#pragma warning(pop)
+#line 249 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\winapifamily.h"
+#line 250 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\winapifamily.h"
+
+#line 252 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\winapifamily.h"
+#pragma external_header(pop)
+#line 26 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 41 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 42 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4201)
+#pragma warning(disable:4668)
+#pragma warning(disable:4820)
+#line 51 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+#line 58 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+#line 62 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+#line 66 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+#line 70 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+#line 74 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+#line 78 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 96 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+#line 106 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 107 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+#line 117 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+#line 124 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 125 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 19 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+#pragma warning(push)
+#pragma warning(disable:4668)
+#line 24 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+
+
+
+#line 30 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+ #line 32 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+
+
+
+
+ #line 39 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+
+
+ #line 44 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+#line 46 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 67 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 100 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 113 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 216 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+#line 217 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 320 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 380 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 468 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 488 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+
+
+
+#line 494 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+#line 497 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 566 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+
+
+
+
+
+
+
+
+#line 577 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 608 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 625 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 643 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings_strict.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 30 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings_strict.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings_undef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(pop)
+#line 189 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings_strict.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1065 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings_strict.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1130 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings_strict.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1185 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings_strict.h"
+#line 1186 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings_strict.h"
+#line 1187 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings_strict.h"
+#pragma external_header(pop)
+#line 675 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+#line 676 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 694 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\driverspecs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdv_driverspecs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 23 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdv_driverspecs.h"
+#pragma external_header(pop)
+#line 126 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\driverspecs.h"
+
+
+
+#pragma once
+#line 131 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\driverspecs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 255 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\driverspecs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 272 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\driverspecs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 699 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\driverspecs.h"
+
+#line 701 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\driverspecs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 887 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\driverspecs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 901 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\driverspecs.h"
+
+#pragma external_header(pop)
+#line 696 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 709 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+
+#pragma warning(pop)
+#line 713 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+
+#line 715 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\specstrings.h"
+#pragma external_header(pop)
+#line 129 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\kernelspecs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 41 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\kernelspecs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 57 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\kernelspecs.h"
+
+
+ #line 60 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\kernelspecs.h"
+
+
+#line 63 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\kernelspecs.h"
+
+
+#line 66 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\kernelspecs.h"
+
+
+#line 69 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\kernelspecs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 263 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\kernelspecs.h"
+#pragma external_header(pop)
+#line 130 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+#line 134 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+#line 140 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+#line 142 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+#line 151 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+#line 156 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+#line 167 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 181 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 199 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 221 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\basetsd.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4668)
+#line 26 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\basetsd.h"
+
+
+
+ typedef unsigned __int64 POINTER_64_INT;
+
+
+
+
+#line 35 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\basetsd.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 49 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\basetsd.h"
+
+
+
+
+
+#line 55 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\basetsd.h"
+
+
+
+
+
+
+
+#line 63 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\basetsd.h"
+
+
+
+
+
+#pragma once
+#line 70 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\basetsd.h"
+
+
+
+
+
+typedef signed char INT8, *PINT8;
+typedef signed short INT16, *PINT16;
+typedef signed int INT32, *PINT32;
+typedef signed __int64 INT64, *PINT64;
+typedef unsigned char UINT8, *PUINT8;
+typedef unsigned short UINT16, *PUINT16;
+typedef unsigned int UINT32, *PUINT32;
+typedef unsigned __int64 UINT64, *PUINT64;
+
+
+
+
+
+typedef signed int LONG32, *PLONG32;
+
+
+
+
+
+typedef unsigned int ULONG32, *PULONG32;
+typedef unsigned int DWORD32, *PDWORD32;
+
+
+
+
+
+
+
+#line 104 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\basetsd.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 122 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\basetsd.h"
+
+
+
+ typedef __int64 INT_PTR, *PINT_PTR;
+ typedef unsigned __int64 UINT_PTR, *PUINT_PTR;
+
+ typedef __int64 LONG_PTR, *PLONG_PTR;
+ typedef unsigned __int64 ULONG_PTR, *PULONG_PTR;
+
+
+
+
+
+
+
+
+
+
+
+
+#line 143 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\basetsd.h"
+#line 144 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\basetsd.h"
+
+
+
+
+
+
+
+
+
+
+
+typedef void* __ptr64 HANDLE64;
+typedef HANDLE64 *PHANDLE64;
+#line 158 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\basetsd.h"
+
+
+
+
+
+
+
+
+
+
+
+typedef __int64 SHANDLE_PTR;
+typedef unsigned __int64 HANDLE_PTR;
+typedef unsigned int UHALF_PTR, *PUHALF_PTR;
+typedef int HALF_PTR, *PHALF_PTR;
+
+
+__inline
+unsigned long
+HandleToULong(
+ const void *h
+ )
+{
+ return((unsigned long) (ULONG_PTR) h );
+}
+
+__inline
+long
+HandleToLong(
+ const void *h
+ )
+{
+ return((long) (LONG_PTR) h );
+}
+
+__inline
+void *
+ULongToHandle(
+ const unsigned long h
+ )
+{
+ return((void *) (UINT_PTR) h );
+}
+
+
+__inline
+void *
+LongToHandle(
+ const long h
+ )
+{
+ return((void *) (INT_PTR) h );
+}
+
+
+__inline
+unsigned long
+PtrToUlong(
+ const void *p
+ )
+{
+ return((unsigned long) (ULONG_PTR) p );
+}
+
+__inline
+unsigned int
+PtrToUint(
+ const void *p
+ )
+{
+ return((unsigned int) (UINT_PTR) p );
+}
+
+__inline
+unsigned short
+PtrToUshort(
+ const void *p
+ )
+{
+ return((unsigned short) (unsigned long) (ULONG_PTR) p );
+}
+
+__inline
+long
+PtrToLong(
+ const void *p
+ )
+{
+ return((long) (LONG_PTR) p );
+}
+
+__inline
+int
+PtrToInt(
+ const void *p
+ )
+{
+ return((int) (INT_PTR) p );
+}
+
+__inline
+short
+PtrToShort(
+ const void *p
+ )
+{
+ return((short) (long) (LONG_PTR) p );
+}
+
+__inline
+void *
+IntToPtr(
+ const int i
+ )
+
+{
+ return( (void *)(INT_PTR)i );
+}
+
+__inline
+void *
+UIntToPtr(
+ const unsigned int ui
+ )
+
+{
+ return( (void *)(UINT_PTR)ui );
+}
+
+__inline
+void *
+LongToPtr(
+ const long l
+ )
+
+{
+ return( (void *)(LONG_PTR)l );
+}
+
+__inline
+void *
+ULongToPtr(
+ const unsigned long ul
+ )
+
+{
+ return( (void *)(ULONG_PTR)ul );
+}
+
+
+
+
+
+
+__inline
+void *
+Ptr32ToPtr(
+ const void * __ptr32 p
+ )
+{
+ return((void *) (ULONG_PTR) (unsigned long) p);
+}
+
+__inline
+void *
+Handle32ToHandle(
+ const void * __ptr32 h
+ )
+{
+ return((void *) (LONG_PTR) (long) h);
+}
+
+__inline
+void * __ptr32
+PtrToPtr32(
+ const void *p
+ )
+{
+ return((void * __ptr32) (unsigned long) (ULONG_PTR) p);
+}
+
+
+
+#line 342 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\basetsd.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 411 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\basetsd.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef ULONG_PTR SIZE_T, *PSIZE_T;
+typedef LONG_PTR SSIZE_T, *PSSIZE_T;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 478 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\basetsd.h"
+
+
+
+
+
+typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
+
+
+
+
+
+typedef __int64 LONG64, *PLONG64;
+
+
+
+
+
+
+typedef unsigned __int64 ULONG64, *PULONG64;
+typedef unsigned __int64 DWORD64, *PDWORD64;
+
+
+
+
+
+
+
+typedef ULONG_PTR KAFFINITY;
+typedef KAFFINITY *PKAFFINITY;
+
+
+
+
+
+
+
+
+#pragma warning(pop)
+#line 517 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\basetsd.h"
+
+#line 519 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\basetsd.h"
+#pragma external_header(pop)
+#line 223 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+#line 229 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+#line 238 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 239 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+#line 246 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 247 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+#line 254 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 255 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+#line 262 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 263 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+#line 270 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 271 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+#line 277 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+#line 281 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+#line 290 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 291 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+#line 295 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+#line 300 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+#line 302 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 303 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+#line 308 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+#line 310 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 311 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+#line 318 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 319 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+#line 326 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 327 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+#line 332 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+#line 334 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 335 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+#line 342 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 343 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+#line 350 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 351 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 368 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 369 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+#line 378 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 379 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+#line 386 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 387 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+#line 392 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+#line 394 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 395 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+#line 400 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+#line 402 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 403 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+#line 412 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 413 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 437 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+#line 448 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 449 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 464 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+typedef void *PVOID;
+typedef void * __ptr64 PVOID64;
+
+
+
+
+
+
+
+#line 481 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+#line 483 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+#line 486 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 499 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+#line 505 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 522 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+typedef char CHAR;
+typedef short SHORT;
+typedef long LONG;
+
+typedef int INT;
+#line 539 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 540 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+typedef wchar_t WCHAR;
+
+
+
+#line 551 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+typedef WCHAR *PWCHAR, *LPWCH, *PWCH;
+typedef const WCHAR *LPCWCH, *PCWCH;
+
+typedef WCHAR *NWPSTR, *LPWSTR, *PWSTR;
+typedef PWSTR *PZPWSTR;
+typedef const PWSTR *PCZPWSTR;
+typedef WCHAR __unaligned *LPUWSTR, *PUWSTR;
+typedef const WCHAR *LPCWSTR, *PCWSTR;
+typedef PCWSTR *PZPCWSTR;
+typedef const PCWSTR *PCZPCWSTR;
+typedef const WCHAR __unaligned *LPCUWSTR, *PCUWSTR;
+
+typedef WCHAR *PZZWSTR;
+typedef const WCHAR *PCZZWSTR;
+typedef WCHAR __unaligned *PUZZWSTR;
+typedef const WCHAR __unaligned *PCUZZWSTR;
+
+typedef WCHAR *PNZWCH;
+typedef const WCHAR *PCNZWCH;
+typedef WCHAR __unaligned *PUNZWCH;
+typedef const WCHAR __unaligned *PCUNZWCH;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 616 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+typedef CHAR *PCHAR, *LPCH, *PCH;
+typedef const CHAR *LPCCH, *PCCH;
+
+typedef CHAR *NPSTR, *LPSTR, *PSTR;
+typedef PSTR *PZPSTR;
+typedef const PSTR *PCZPSTR;
+typedef const CHAR *LPCSTR, *PCSTR;
+typedef PCSTR *PZPCSTR;
+typedef const PCSTR *PCZPCSTR;
+
+typedef CHAR *PZZSTR;
+typedef const CHAR *PCZZSTR;
+
+typedef CHAR *PNZCH;
+typedef const CHAR *PCNZCH;
+
+
+
+
+
+
+
+typedef WCHAR TCHAR, *PTCHAR;
+typedef WCHAR TUCHAR, *PTUCHAR;
+
+#line 647 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+typedef LPWCH LPTCH, PTCH;
+typedef LPCWCH LPCTCH, PCTCH;
+typedef LPWSTR PTSTR, LPTSTR;
+typedef LPCWSTR PCTSTR, LPCTSTR;
+typedef LPUWSTR PUTSTR, LPUTSTR;
+typedef LPCUWSTR PCUTSTR, LPCUTSTR;
+typedef LPWSTR LP;
+typedef PZZWSTR PZZTSTR;
+typedef PCZZWSTR PCZZTSTR;
+typedef PUZZWSTR PUZZTSTR;
+typedef PCUZZWSTR PCUZZTSTR;
+typedef PZPWSTR PZPTSTR;
+typedef PNZWCH PNZTCH;
+typedef PCNZWCH PCNZTCH;
+typedef PUNZWCH PUNZTCH;
+typedef PCUNZWCH PCUNZTCH;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 686 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+typedef double DOUBLE;
+
+typedef struct _QUAD {
+ union {
+ __int64 UseThisFieldToCopy;
+ double DoNotUseThisField;
+ } ;
+
+} QUAD;
+
+
+
+
+
+typedef SHORT *PSHORT;
+typedef LONG *PLONG;
+typedef QUAD *PQUAD;
+
+
+
+
+
+
+
+
+typedef unsigned char UCHAR;
+typedef unsigned short USHORT;
+typedef unsigned long ULONG;
+typedef QUAD UQUAD;
+
+
+
+
+
+typedef UCHAR *PUCHAR;
+typedef USHORT *PUSHORT;
+typedef ULONG *PULONG;
+typedef UQUAD *PUQUAD;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 749 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+typedef signed char SCHAR;
+typedef SCHAR *PSCHAR;
+
+
+
+
+
+#line 762 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+#line 767 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 768 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct _PROCESSOR_NUMBER {
+ USHORT Group;
+ UCHAR Number;
+ UCHAR Reserved;
+} PROCESSOR_NUMBER, *PPROCESSOR_NUMBER;
+
+
+
+
+
+
+typedef struct _GROUP_AFFINITY {
+ KAFFINITY Mask;
+ USHORT Group;
+ USHORT Reserved[3];
+} GROUP_AFFINITY, *PGROUP_AFFINITY;
+
+
+
+
+
+
+
+
+
+#line 804 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+typedef void *HANDLE;
+
+
+#line 818 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+#line 820 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+#line 824 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+typedef HANDLE *PHANDLE;
+
+
+
+
+
+
+
+typedef UCHAR FCHAR;
+typedef USHORT FSHORT;
+typedef ULONG FLONG;
+
+
+
+
+
+
+
+
+
+
+typedef long HRESULT;
+#line 847 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 848 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 875 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+#line 885 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 899 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef char CCHAR;
+typedef short CSHORT;
+typedef ULONG CLONG;
+
+typedef CCHAR *PCCHAR;
+typedef CSHORT *PCSHORT;
+typedef CLONG *PCLONG;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef ULONG LCID;
+typedef PULONG PLCID;
+typedef USHORT LANGID;
+
+
+
+
+
+
+
+
+
+
+typedef enum {
+ UNSPECIFIED_COMPARTMENT_ID = 0,
+ DEFAULT_COMPARTMENT_ID
+} COMPARTMENT_ID, *PCOMPARTMENT_ID;
+
+#line 990 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+typedef ULONG LOGICAL;
+typedef ULONG *PLOGICAL;
+
+
+
+
+
+
+
+
+
+
+
+
+typedef LONG NTSTATUS;
+
+typedef NTSTATUS *PNTSTATUS;
+
+
+
+
+#line 1021 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1063 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+#line 1073 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+#line 1083 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef long SECURITY_STATUS;
+
+#line 1100 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1133 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+typedef struct _FLOAT128 {
+ __int64 LowPart;
+ __int64 HighPart;
+} FLOAT128;
+
+typedef FLOAT128 *PFLOAT128;
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef __int64 LONGLONG;
+typedef unsigned __int64 ULONGLONG;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1173 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+typedef LONGLONG *PLONGLONG;
+typedef ULONGLONG *PULONGLONG;
+
+
+
+typedef LONGLONG USN;
+
+
+
+
+
+#line 1186 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+typedef union _LARGE_INTEGER {
+ struct {
+ ULONG LowPart;
+ LONG HighPart;
+ } ;
+ struct {
+ ULONG LowPart;
+ LONG HighPart;
+ } u;
+ LONGLONG QuadPart;
+} LARGE_INTEGER;
+#line 1198 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+typedef LARGE_INTEGER *PLARGE_INTEGER;
+
+
+
+
+
+#line 1206 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+typedef union _ULARGE_INTEGER {
+ struct {
+ ULONG LowPart;
+ ULONG HighPart;
+ } ;
+ struct {
+ ULONG LowPart;
+ ULONG HighPart;
+ } u;
+ ULONGLONG QuadPart;
+} ULARGE_INTEGER;
+#line 1218 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+typedef ULARGE_INTEGER *PULARGE_INTEGER;
+
+
+
+
+
+typedef LONG_PTR RTL_REFERENCE_COUNT, *PRTL_REFERENCE_COUNT;
+typedef LONG RTL_REFERENCE_COUNT32, *PRTL_REFERENCE_COUNT32;
+
+
+
+
+
+
+
+
+
+typedef struct _LUID {
+ ULONG LowPart;
+ LONG HighPart;
+} LUID, *PLUID;
+
+
+typedef ULONGLONG DWORDLONG;
+typedef DWORDLONG *PDWORDLONG;
+
+
+
+
+
+
+
+
+
+
+
+
+typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1393 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+unsigned char
+__cdecl
+_rotl8 (
+ unsigned char Value,
+ unsigned char Shift
+ );
+
+unsigned short
+__cdecl
+_rotl16 (
+ unsigned short Value,
+ unsigned char Shift
+ );
+
+unsigned char
+__cdecl
+_rotr8 (
+ unsigned char Value,
+ unsigned char Shift
+ );
+
+unsigned short
+__cdecl
+_rotr16 (
+ unsigned short Value,
+ unsigned char Shift
+ );
+
+#pragma intrinsic(_rotl8)
+#pragma intrinsic(_rotl16)
+#pragma intrinsic(_rotr8)
+#pragma intrinsic(_rotr16)
+
+#line 1443 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+unsigned int
+__cdecl
+_rotl (
+ unsigned int Value,
+ int Shift
+ );
+
+unsigned __int64
+__cdecl
+_rotl64 (
+ unsigned __int64 Value,
+ int Shift
+ );
+
+unsigned int
+__cdecl
+_rotr (
+ unsigned int Value,
+ int Shift
+ );
+
+unsigned __int64
+__cdecl
+_rotr64 (
+ unsigned __int64 Value,
+ int Shift
+ );
+
+#pragma intrinsic(_rotl)
+#pragma intrinsic(_rotl64)
+#pragma intrinsic(_rotr)
+#pragma intrinsic(_rotr64)
+
+#line 1485 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _EVENT_TYPE {
+ NotificationEvent,
+ SynchronizationEvent
+} EVENT_TYPE;
+
+
+
+
+
+
+typedef enum _TIMER_TYPE {
+ NotificationTimer,
+ SynchronizationTimer
+} TIMER_TYPE;
+
+
+
+
+
+typedef enum _WAIT_TYPE {
+ WaitAll,
+ WaitAny,
+ WaitNotification,
+ WaitDequeue,
+ WaitDpc
+} WAIT_TYPE;
+
+
+
+
+
+
+
+
+typedef CHAR *PSZ;
+typedef const char *PCSZ;
+
+
+
+
+
+
+typedef USHORT RTL_STRING_LENGTH_TYPE;
+
+typedef struct _STRING {
+ USHORT Length;
+ USHORT MaximumLength;
+
+
+
+ PCHAR Buffer;
+} STRING;
+typedef STRING *PSTRING;
+typedef STRING ANSI_STRING;
+typedef PSTRING PANSI_STRING;
+
+
+
+
+typedef STRING OEM_STRING;
+typedef PSTRING POEM_STRING;
+typedef const STRING* PCOEM_STRING;
+
+
+
+
+
+typedef struct _CSTRING {
+ USHORT Length;
+ USHORT MaximumLength;
+ const char *Buffer;
+} CSTRING;
+typedef CSTRING *PCSTRING;
+
+
+
+
+
+typedef STRING CANSI_STRING;
+typedef PSTRING PCANSI_STRING;
+
+typedef STRING UTF8_STRING;
+typedef PSTRING PUTF8_STRING;
+
+
+
+
+
+
+typedef struct _UNICODE_STRING {
+ USHORT Length;
+ USHORT MaximumLength;
+
+
+
+ PWCH Buffer;
+#line 1594 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+} UNICODE_STRING;
+typedef UNICODE_STRING *PUNICODE_STRING;
+typedef const UNICODE_STRING *PCUNICODE_STRING;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1631 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+typedef UCHAR BOOLEAN;
+typedef BOOLEAN *PBOOLEAN;
+
+
+
+
+
+
+
+
+
+typedef struct _LIST_ENTRY {
+ struct _LIST_ENTRY *Flink;
+ struct _LIST_ENTRY *Blink;
+} LIST_ENTRY, *PLIST_ENTRY, * PRLIST_ENTRY;
+
+
+
+
+
+
+typedef struct _SINGLE_LIST_ENTRY {
+ struct _SINGLE_LIST_ENTRY *Next;
+} SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4214)
+
+typedef struct _RTL_BALANCED_NODE {
+ union {
+ struct _RTL_BALANCED_NODE *Children[2];
+ struct {
+ struct _RTL_BALANCED_NODE *Left;
+ struct _RTL_BALANCED_NODE *Right;
+ } ;
+ } ;
+
+
+
+ union {
+ UCHAR Red : 1;
+ UCHAR Balance : 2;
+ ULONG_PTR ParentValue;
+ } ;
+} RTL_BALANCED_NODE, *PRTL_BALANCED_NODE;
+
+#pragma warning(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct LIST_ENTRY32 {
+ ULONG Flink;
+ ULONG Blink;
+} LIST_ENTRY32;
+typedef LIST_ENTRY32 *PLIST_ENTRY32;
+
+typedef struct LIST_ENTRY64 {
+ ULONGLONG Flink;
+ ULONGLONG Blink;
+} LIST_ENTRY64;
+typedef LIST_ENTRY64 *PLIST_ENTRY64;
+
+
+
+typedef struct _SINGLE_LIST_ENTRY32 {
+ ULONG Next;
+} SINGLE_LIST_ENTRY32, *PSINGLE_LIST_ENTRY32;
+
+
+__inline
+void
+ListEntry32To64(
+ PLIST_ENTRY32 l32,
+ PLIST_ENTRY64 l64
+ )
+{
+ l64->Flink = (ULONGLONG)(ULONG)l32->Flink;
+ l64->Blink = (ULONGLONG)(ULONG)l32->Blink;
+}
+
+__inline
+void
+ListEntry64To32(
+ PLIST_ENTRY64 l64,
+ PLIST_ENTRY32 l32
+ )
+{
+ l32->Flink = (ULONG)l64->Flink;
+ l32->Blink = (ULONG)l64->Blink;
+}
+#line 1748 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _WNF_STATE_NAME {
+ ULONG Data[2];
+} WNF_STATE_NAME;
+
+typedef struct _WNF_STATE_NAME* PWNF_STATE_NAME;
+typedef const struct _WNF_STATE_NAME* PCWNF_STATE_NAME;
+#line 1766 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+typedef struct _STRING32 {
+ USHORT Length;
+ USHORT MaximumLength;
+ ULONG Buffer;
+} STRING32;
+typedef STRING32 *PSTRING32;
+
+typedef STRING32 UNICODE_STRING32;
+typedef UNICODE_STRING32 *PUNICODE_STRING32;
+
+typedef STRING32 ANSI_STRING32;
+typedef ANSI_STRING32 *PANSI_STRING32;
+
+
+typedef struct _STRING64 {
+ USHORT Length;
+ USHORT MaximumLength;
+ ULONGLONG Buffer;
+} STRING64;
+typedef STRING64 *PSTRING64;
+
+typedef STRING64 UNICODE_STRING64;
+typedef UNICODE_STRING64 *PUNICODE_STRING64;
+
+typedef STRING64 ANSI_STRING64;
+typedef ANSI_STRING64 *PANSI_STRING64;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _OBJECT_ATTRIBUTES64 {
+ ULONG Length;
+ ULONG64 RootDirectory;
+ ULONG64 ObjectName;
+ ULONG Attributes;
+ ULONG64 SecurityDescriptor;
+ ULONG64 SecurityQualityOfService;
+} OBJECT_ATTRIBUTES64;
+typedef OBJECT_ATTRIBUTES64 *POBJECT_ATTRIBUTES64;
+typedef const OBJECT_ATTRIBUTES64 *PCOBJECT_ATTRIBUTES64;
+
+typedef struct _OBJECT_ATTRIBUTES32 {
+ ULONG Length;
+ ULONG RootDirectory;
+ ULONG ObjectName;
+ ULONG Attributes;
+ ULONG SecurityDescriptor;
+ ULONG SecurityQualityOfService;
+} OBJECT_ATTRIBUTES32;
+typedef OBJECT_ATTRIBUTES32 *POBJECT_ATTRIBUTES32;
+typedef const OBJECT_ATTRIBUTES32 *PCOBJECT_ATTRIBUTES32;
+
+
+
+typedef struct _OBJECT_ATTRIBUTES {
+ ULONG Length;
+ HANDLE RootDirectory;
+ PUNICODE_STRING ObjectName;
+ ULONG Attributes;
+ PVOID SecurityDescriptor;
+ PVOID SecurityQualityOfService;
+} OBJECT_ATTRIBUTES;
+typedef OBJECT_ATTRIBUTES *POBJECT_ATTRIBUTES;
+typedef const OBJECT_ATTRIBUTES *PCOBJECT_ATTRIBUTES;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 22 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+typedef struct _GUID {
+ unsigned long Data1;
+ unsigned short Data2;
+ unsigned short Data3;
+ unsigned char Data4[ 8 ];
+} GUID;
+#line 29 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+#line 30 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+
+
+
+
+
+
+#line 37 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+#line 38 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 67 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+
+
+
+
+
+
+
+
+typedef GUID *LPGUID;
+#line 77 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+
+
+
+typedef const GUID *LPCGUID;
+#line 82 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+
+
+
+
+typedef GUID IID;
+typedef IID *LPIID;
+
+
+typedef GUID CLSID;
+typedef CLSID *LPCLSID;
+
+
+typedef GUID FMTID;
+typedef FMTID *LPFMTID;
+
+
+
+
+
+
+
+#line 104 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+
+
+
+
+
+
+
+#line 112 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+#line 113 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+
+
+
+
+
+
+
+#line 121 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+#line 122 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+
+
+
+
+
+
+
+#line 130 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+#line 131 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+
+
+
+
+
+
+
+#line 139 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+#line 140 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+
+#line 142 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_memory.h"
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_memcpy_s.h"
+
+
+
+
+
+
+
+#pragma once
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\errno.h"
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable: 4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727 )
+
+
+__pragma(pack(push, 8))
+
+
+
+
+ __declspec(dllimport) int* __cdecl _errno(void);
+
+
+ __declspec(dllimport) errno_t __cdecl _set_errno( int _Value);
+ __declspec(dllimport) errno_t __cdecl _get_errno( int* _Value);
+
+ __declspec(dllimport) unsigned long* __cdecl __doserrno(void);
+
+
+ __declspec(dllimport) errno_t __cdecl _set_doserrno( unsigned long _Value);
+ __declspec(dllimport) errno_t __cdecl _get_doserrno( unsigned long * _Value);
+#line 35 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\errno.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 83 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\errno.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 131 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\errno.h"
+
+
+
+__pragma(pack(pop))
+
+#pragma warning(pop)
+#line 138 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\errno.h"
+#pragma external_header(pop)
+#line 12 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_memcpy_s.h"
+#pragma external_header(push)
+#line 1 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime_string.h"
+
+
+
+
+
+
+
+#pragma once
+
+
+
+#pragma warning(push)
+#pragma warning(disable: 4514 4820 )
+
+
+
+__pragma(pack(push, 8))
+
+
+
+
+ void * __cdecl memchr(
+ void const* _Buf,
+ int _Val,
+ size_t _MaxCount
+ );
+
+
+int __cdecl memcmp(
+ void const* _Buf1,
+ void const* _Buf2,
+ size_t _Size
+ );
+
+
+
+
+#line 43 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime_string.h"
+void* __cdecl memcpy(
+ void* _Dst,
+ void const* _Src,
+ size_t _Size
+ );
+
+
+ void* __cdecl memmove(
+ void* _Dst,
+ void const* _Src,
+ size_t _Size
+ );
+
+
+
+#line 63 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime_string.h"
+void* __cdecl memset(
+ void* _Dst,
+ int _Val,
+ size_t _Size
+ );
+
+
+ char * __cdecl strchr(
+ char const* _Str,
+ int _Val
+ );
+
+
+ char * __cdecl strrchr(
+ char const* _Str,
+ int _Ch
+ );
+
+
+ char * __cdecl strstr(
+ char const* _Str,
+ char const* _SubStr
+ );
+
+
+
+ wchar_t * __cdecl wcschr(
+ wchar_t const* _Str,
+ wchar_t _Ch
+ );
+
+
+ wchar_t * __cdecl wcsrchr(
+ wchar_t const* _Str,
+ wchar_t _Ch
+ );
+
+
+
+ wchar_t * __cdecl wcsstr(
+ wchar_t const* _Str,
+ wchar_t const* _SubStr
+ );
+
+
+
+__pragma(pack(pop))
+
+#line 112 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\vcruntime_string.h"
+
+#pragma warning(pop)
+#pragma external_header(pop)
+#line 13 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_memcpy_s.h"
+
+#pragma warning(push)
+#pragma warning(disable: 4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727 )
+
+
+__pragma(pack(push, 8))
+
+
+
+#line 23 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_memcpy_s.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ static __inline errno_t __cdecl memcpy_s(
+ void* const _Destination,
+ rsize_t const _DestinationSize,
+ void const* const _Source,
+ rsize_t const _SourceSize
+ )
+ {
+ if (_SourceSize == 0)
+ {
+ return 0;
+ }
+
+ { int _Expr_val=!!(_Destination != ((void *)0)); if (!(_Expr_val)) { (*_errno()) = 22; _invalid_parameter_noinfo(); return 22; } };
+ if (_Source == ((void *)0) || _DestinationSize < _SourceSize)
+ {
+ memset(_Destination, 0, _DestinationSize);
+
+ { int _Expr_val=!!(_Source != ((void *)0)); if (!(_Expr_val)) { (*_errno()) = 22; _invalid_parameter_noinfo(); return 22; } };
+ { int _Expr_val=!!(_DestinationSize >= _SourceSize); if (!(_Expr_val)) { (*_errno()) = 34; _invalid_parameter_noinfo(); return 34; } };
+
+
+ return 22;
+ }
+ memcpy(_Destination, _Source, _SourceSize);
+ return 0;
+ }
+
+
+ static __inline errno_t __cdecl memmove_s(
+ void* const _Destination,
+ rsize_t const _DestinationSize,
+ void const* const _Source,
+ rsize_t const _SourceSize
+ )
+ {
+ if (_SourceSize == 0)
+ {
+ return 0;
+ }
+
+ { int _Expr_val=!!(_Destination != ((void *)0)); if (!(_Expr_val)) { (*_errno()) = 22; _invalid_parameter_noinfo(); return 22; } };
+ { int _Expr_val=!!(_Source != ((void *)0)); if (!(_Expr_val)) { (*_errno()) = 22; _invalid_parameter_noinfo(); return 22; } };
+ { int _Expr_val=!!(_DestinationSize >= _SourceSize); if (!(_Expr_val)) { (*_errno()) = 34; _invalid_parameter_noinfo(); return 34; } };
+
+ memmove(_Destination, _Source, _SourceSize);
+ return 0;
+ }
+
+#line 88 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_memcpy_s.h"
+
+
+
+
+#pragma warning(pop)
+__pragma(pack(pop))
+#pragma external_header(pop)
+#line 15 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_memory.h"
+
+
+#pragma warning(push)
+#pragma warning(disable: 4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727 )
+
+
+
+
+__pragma(pack(push, 8))
+
+
+
+
+__declspec(dllimport) int __cdecl _memicmp(
+ void const* _Buf1,
+ void const* _Buf2,
+ size_t _Size
+ );
+
+
+__declspec(dllimport) int __cdecl _memicmp_l(
+ void const* _Buf1,
+ void const* _Buf2,
+ size_t _Size,
+ _locale_t _Locale
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 60 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_memory.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 75 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_memory.h"
+
+#line 77 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_memory.h"
+
+
+
+
+
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_memccpy" ". See online help for details."))
+ __declspec(dllimport) void* __cdecl memccpy(
+ void* _Dst,
+ void const* _Src,
+ int _Val,
+ size_t _Size
+ );
+
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_memicmp" ". See online help for details."))
+ __declspec(dllimport) int __cdecl memicmp(
+ void const* _Buf1,
+ void const* _Buf2,
+ size_t _Size
+ );
+
+#line 98 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_memory.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 115 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_memory.h"
+
+
+
+__pragma(pack(pop))
+
+#line 121 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_memory.h"
+
+#pragma warning(pop)
+#pragma external_header(pop)
+#line 14 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable: 4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727 )
+
+
+
+
+__pragma(pack(push, 8))
+
+
+
+
+
+
+
+
+
+
+
+ __declspec(dllimport) errno_t __cdecl wcscat_s(
+ wchar_t* _Destination,
+ rsize_t _SizeInWords,
+ wchar_t const* _Source
+ );
+
+
+ __declspec(dllimport) errno_t __cdecl wcscpy_s(
+ wchar_t* _Destination,
+ rsize_t _SizeInWords,
+ wchar_t const* _Source
+ );
+
+
+ __declspec(dllimport) errno_t __cdecl wcsncat_s(
+ wchar_t* _Destination,
+ rsize_t _SizeInWords,
+ wchar_t const* _Source,
+ rsize_t _MaxCount
+ );
+
+
+ __declspec(dllimport) errno_t __cdecl wcsncpy_s(
+ wchar_t* _Destination,
+ rsize_t _SizeInWords,
+ wchar_t const* _Source,
+ rsize_t _MaxCount
+ );
+
+
+ __declspec(dllimport) wchar_t* __cdecl wcstok_s(
+ wchar_t* _String,
+ wchar_t const* _Delimiter,
+ wchar_t** _Context
+ );
+
+#line 69 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 81 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+
+__declspec(dllimport) __declspec(allocator) wchar_t* __cdecl _wcsdup(
+ wchar_t const* _String
+ );
+
+
+
+#line 90 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+
+
+
+#line 98 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "wcscat_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __declspec(dllimport) wchar_t* __cdecl wcscat( wchar_t *_Destination, wchar_t const* _Source);
+#line 105 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+#line 106 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+
+__declspec(dllimport) int __cdecl wcscmp(
+ wchar_t const* _String1,
+ wchar_t const* _String2
+ );
+
+
+#line 118 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "wcscpy_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __declspec(dllimport) wchar_t* __cdecl wcscpy( wchar_t *_Destination, wchar_t const* _Source);
+#line 124 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+
+__declspec(dllimport) size_t __cdecl wcscspn(
+ wchar_t const* _String,
+ wchar_t const* _Control
+ );
+
+
+__declspec(dllimport) size_t __cdecl wcslen(
+ wchar_t const* _String
+ );
+
+
+
+#line 141 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+#line 145 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+__declspec(dllimport) size_t __cdecl wcsnlen(
+ wchar_t const* _Source,
+ size_t _MaxCount
+ );
+
+
+
+
+
+#line 157 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+#line 161 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+ static __inline size_t __cdecl wcsnlen_s(
+ wchar_t const* _Source,
+ size_t _MaxCount
+ )
+ {
+ return (_Source == 0) ? 0 : wcsnlen(_Source, _MaxCount);
+ }
+
+#line 170 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+
+#line 177 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "wcsncat_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __declspec(dllimport) wchar_t* __cdecl wcsncat( wchar_t *_Destination, wchar_t const* _Source, size_t _Count);
+#line 185 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+
+__declspec(dllimport) int __cdecl wcsncmp(
+ wchar_t const* _String1,
+ wchar_t const* _String2,
+ size_t _MaxCount
+ );
+
+
+#line 199 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "wcsncpy_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __declspec(dllimport) wchar_t* __cdecl wcsncpy( wchar_t *_Destination, wchar_t const* _Source, size_t _Count);
+#line 207 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+
+__declspec(dllimport) wchar_t * __cdecl wcspbrk(
+ wchar_t const* _String,
+ wchar_t const* _Control
+ );
+
+
+__declspec(dllimport) size_t __cdecl wcsspn(
+ wchar_t const* _String,
+ wchar_t const* _Control
+ );
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "wcstok_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+__declspec(dllimport) wchar_t* __cdecl wcstok(
+ wchar_t* _String,
+ wchar_t const* _Delimiter,
+ wchar_t** _Context
+ );
+
+
+
+
+
+#line 232 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+
+
+
+ #line 237 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "wcstok_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ static __inline wchar_t* __cdecl _wcstok(
+ wchar_t* const _String,
+ wchar_t const* const _Delimiter
+ )
+ {
+ return wcstok(_String, _Delimiter, 0);
+ }
+
+
+
+#line 250 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+
+
+
+
+
+
+
+
+
+#line 261 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+#line 263 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+
+
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcserror_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+__declspec(dllimport) wchar_t* __cdecl _wcserror(
+ int _ErrorNumber
+ );
+
+
+__declspec(dllimport) errno_t __cdecl _wcserror_s(
+ wchar_t* _Buffer,
+ size_t _SizeInWords,
+ int _ErrorNumber
+ );
+
+
+#line 284 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "__wcserror_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+__declspec(dllimport) wchar_t* __cdecl __wcserror(
+ wchar_t const* _String
+ );
+
+ __declspec(dllimport) errno_t __cdecl __wcserror_s(
+ wchar_t* _Buffer,
+ size_t _SizeInWords,
+ wchar_t const* _ErrorMessage
+ );
+
+
+#line 303 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+ __declspec(dllimport) int __cdecl _wcsicmp(
+ wchar_t const* _String1,
+ wchar_t const* _String2
+ );
+
+ __declspec(dllimport) int __cdecl _wcsicmp_l(
+ wchar_t const* _String1,
+ wchar_t const* _String2,
+ _locale_t _Locale
+ );
+
+ __declspec(dllimport) int __cdecl _wcsnicmp(
+ wchar_t const* _String1,
+ wchar_t const* _String2,
+ size_t _MaxCount
+ );
+
+ __declspec(dllimport) int __cdecl _wcsnicmp_l(
+ wchar_t const* _String1,
+ wchar_t const* _String2,
+ size_t _MaxCount,
+ _locale_t _Locale
+ );
+
+ __declspec(dllimport) errno_t __cdecl _wcsnset_s(
+ wchar_t* _Destination,
+ size_t _SizeInWords,
+ wchar_t _Value,
+ size_t _MaxCount
+ );
+
+
+#line 341 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcsnset_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __declspec(dllimport) wchar_t* __cdecl _wcsnset( wchar_t *_String, wchar_t _Value, size_t _MaxCount);
+#line 349 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+__declspec(dllimport) wchar_t* __cdecl _wcsrev(
+ wchar_t* _String
+ );
+
+ __declspec(dllimport) errno_t __cdecl _wcsset_s(
+ wchar_t* _Destination,
+ size_t _SizeInWords,
+ wchar_t _Value
+ );
+
+
+#line 365 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcsset_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __declspec(dllimport) wchar_t* __cdecl _wcsset( wchar_t *_String, wchar_t _Value);
+#line 372 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+ __declspec(dllimport) errno_t __cdecl _wcslwr_s(
+ wchar_t* _String,
+ size_t _SizeInWords
+ );
+
+
+#line 382 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcslwr_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __declspec(dllimport) wchar_t* __cdecl _wcslwr( wchar_t *_String);
+#line 387 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+
+__declspec(dllimport) errno_t __cdecl _wcslwr_s_l(
+ wchar_t* _String,
+ size_t _SizeInWords,
+ _locale_t _Locale
+ );
+
+
+#line 400 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcslwr_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __declspec(dllimport) wchar_t* __cdecl _wcslwr_l( wchar_t *_String, _locale_t _Locale);
+#line 407 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+
+__declspec(dllimport) errno_t __cdecl _wcsupr_s(
+ wchar_t* _String,
+ size_t _Size
+ );
+
+
+#line 418 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcsupr_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __declspec(dllimport) wchar_t* __cdecl _wcsupr( wchar_t *_String);
+#line 423 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+
+__declspec(dllimport) errno_t __cdecl _wcsupr_s_l(
+ wchar_t* _String,
+ size_t _Size,
+ _locale_t _Locale
+ );
+
+
+#line 436 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcsupr_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __declspec(dllimport) wchar_t* __cdecl _wcsupr_l( wchar_t *_String, _locale_t _Locale);
+#line 443 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+
+
+__declspec(dllimport) size_t __cdecl wcsxfrm(
+ wchar_t* _Destination,
+ wchar_t const* _Source,
+ size_t _MaxCount
+ );
+
+
+
+__declspec(dllimport) size_t __cdecl _wcsxfrm_l(
+ wchar_t* _Destination,
+ wchar_t const* _Source,
+ size_t _MaxCount,
+ _locale_t _Locale
+ );
+
+
+__declspec(dllimport) int __cdecl wcscoll(
+ wchar_t const* _String1,
+ wchar_t const* _String2
+ );
+
+
+__declspec(dllimport) int __cdecl _wcscoll_l(
+ wchar_t const* _String1,
+ wchar_t const* _String2,
+ _locale_t _Locale
+ );
+
+
+__declspec(dllimport) int __cdecl _wcsicoll(
+ wchar_t const* _String1,
+ wchar_t const* _String2
+ );
+
+
+__declspec(dllimport) int __cdecl _wcsicoll_l(
+ wchar_t const* _String1,
+ wchar_t const* _String2,
+ _locale_t _Locale
+ );
+
+
+__declspec(dllimport) int __cdecl _wcsncoll(
+ wchar_t const* _String1,
+ wchar_t const* _String2,
+ size_t _MaxCount
+ );
+
+
+__declspec(dllimport) int __cdecl _wcsncoll_l(
+ wchar_t const* _String1,
+ wchar_t const* _String2,
+ size_t _MaxCount,
+ _locale_t _Locale
+ );
+
+
+__declspec(dllimport) int __cdecl _wcsnicoll(
+ wchar_t const* _String1,
+ wchar_t const* _String2,
+ size_t _MaxCount
+ );
+
+
+__declspec(dllimport) int __cdecl _wcsnicoll_l(
+ wchar_t const* _String1,
+ wchar_t const* _String2,
+ size_t _MaxCount,
+ _locale_t _Locale
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 568 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsdup" ". See online help for details."))
+ __declspec(dllimport) wchar_t* __cdecl wcsdup(
+ wchar_t const* _String
+ );
+
+
+
+#line 577 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+
+
+
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsicmp" ". See online help for details."))
+ __declspec(dllimport) int __cdecl wcsicmp(
+ wchar_t const* _String1,
+ wchar_t const* _String2
+ );
+
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsnicmp" ". See online help for details."))
+ __declspec(dllimport) int __cdecl wcsnicmp(
+ wchar_t const* _String1,
+ wchar_t const* _String2,
+ size_t _MaxCount
+ );
+
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsnset" ". See online help for details."))
+
+ __declspec(dllimport) wchar_t* __cdecl wcsnset(
+ wchar_t* _String,
+ wchar_t _Value,
+ size_t _MaxCount
+ );
+
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsrev" ". See online help for details."))
+
+ __declspec(dllimport) wchar_t* __cdecl wcsrev(
+ wchar_t* _String
+ );
+
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsset" ". See online help for details."))
+
+ __declspec(dllimport) wchar_t* __cdecl wcsset(
+ wchar_t* _String,
+ wchar_t _Value
+ );
+
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcslwr" ". See online help for details."))
+
+ __declspec(dllimport) wchar_t* __cdecl wcslwr(
+ wchar_t* _String
+ );
+
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsupr" ". See online help for details."))
+
+ __declspec(dllimport) wchar_t* __cdecl wcsupr(
+ wchar_t* _String
+ );
+
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsicoll" ". See online help for details."))
+ __declspec(dllimport) int __cdecl wcsicoll(
+ wchar_t const* _String1,
+ wchar_t const* _String2
+ );
+
+#line 634 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+
+
+__pragma(pack(pop))
+
+#line 640 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstring.h"
+
+#pragma warning(pop)
+#pragma external_header(pop)
+#line 15 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable: 4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727 )
+
+
+__pragma(pack(push, 8))
+
+
+
+
+
+
+
+
+ __declspec(dllimport) errno_t __cdecl strcpy_s(
+ char* _Destination,
+ rsize_t _SizeInBytes,
+ char const* _Source
+ );
+
+
+ __declspec(dllimport) errno_t __cdecl strcat_s(
+ char* _Destination,
+ rsize_t _SizeInBytes,
+ char const* _Source
+ );
+
+
+ __declspec(dllimport) errno_t __cdecl strerror_s(
+ char* _Buffer,
+ size_t _SizeInBytes,
+ int _ErrorNumber);
+
+
+ __declspec(dllimport) errno_t __cdecl strncat_s(
+ char* _Destination,
+ rsize_t _SizeInBytes,
+ char const* _Source,
+ rsize_t _MaxCount
+ );
+
+
+ __declspec(dllimport) errno_t __cdecl strncpy_s(
+ char* _Destination,
+ rsize_t _SizeInBytes,
+ char const* _Source,
+ rsize_t _MaxCount
+ );
+
+
+ __declspec(dllimport) char* __cdecl strtok_s(
+ char* _String,
+ char const* _Delimiter,
+ char** _Context
+ );
+
+#line 75 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+__declspec(dllimport) void* __cdecl _memccpy(
+ void* _Dst,
+ void const* _Src,
+ int _Val,
+ size_t _MaxCount
+ );
+
+
+#line 88 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "strcat_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char* __cdecl strcat( char *_Destination, char const* _Source);
+#line 96 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+#line 98 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+
+int __cdecl strcmp(
+ char const* _Str1,
+ char const* _Str2
+ );
+
+
+__declspec(dllimport) int __cdecl _strcmpi(
+ char const* _String1,
+ char const* _String2
+ );
+
+
+__declspec(dllimport) int __cdecl strcoll(
+ char const* _String1,
+ char const* _String2
+ );
+
+
+__declspec(dllimport) int __cdecl _strcoll_l(
+ char const* _String1,
+ char const* _String2,
+ _locale_t _Locale
+ );
+
+
+#line 129 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "strcpy_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char* __cdecl strcpy( char *_Destination, char const* _Source);
+#line 135 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+
+__declspec(dllimport) size_t __cdecl strcspn(
+ char const* _Str,
+ char const* _Control
+ );
+
+
+
+
+#line 146 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+
+__declspec(dllimport) __declspec(allocator) char* __cdecl _strdup(
+ char const* _Source
+ );
+
+
+
+#line 155 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_strerror_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+__declspec(dllimport) char* __cdecl _strerror(
+ char const* _ErrorMessage
+ );
+
+
+__declspec(dllimport) errno_t __cdecl _strerror_s(
+ char* _Buffer,
+ size_t _SizeInBytes,
+ char const* _ErrorMessage
+ );
+
+
+#line 175 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "strerror_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+__declspec(dllimport) char* __cdecl strerror(
+ int _ErrorMessage
+ );
+
+
+#line 187 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+
+__declspec(dllimport) int __cdecl _stricmp(
+ char const* _String1,
+ char const* _String2
+ );
+
+
+__declspec(dllimport) int __cdecl _stricoll(
+ char const* _String1,
+ char const* _String2
+ );
+
+
+__declspec(dllimport) int __cdecl _stricoll_l(
+ char const* _String1,
+ char const* _String2,
+ _locale_t _Locale
+ );
+
+
+__declspec(dllimport) int __cdecl _stricmp_l(
+ char const* _String1,
+ char const* _String2,
+ _locale_t _Locale
+ );
+
+
+size_t __cdecl strlen(
+ char const* _Str
+ );
+
+
+__declspec(dllimport) errno_t __cdecl _strlwr_s(
+ char* _String,
+ size_t _Size
+ );
+
+
+#line 229 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strlwr_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __declspec(dllimport) char* __cdecl _strlwr( char *_String);
+#line 234 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+
+__declspec(dllimport) errno_t __cdecl _strlwr_s_l(
+ char* _String,
+ size_t _Size,
+ _locale_t _Locale
+ );
+
+
+#line 247 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strlwr_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __declspec(dllimport) char* __cdecl _strlwr_l( char *_String, _locale_t _Locale);
+#line 254 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+
+#line 261 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "strncat_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __declspec(dllimport) char* __cdecl strncat( char *_Destination, char const* _Source, size_t _Count);
+#line 269 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+
+__declspec(dllimport) int __cdecl strncmp(
+ char const* _Str1,
+ char const* _Str2,
+ size_t _MaxCount
+ );
+
+
+__declspec(dllimport) int __cdecl _strnicmp(
+ char const* _String1,
+ char const* _String2,
+ size_t _MaxCount
+ );
+
+
+__declspec(dllimport) int __cdecl _strnicmp_l(
+ char const* _String1,
+ char const* _String2,
+ size_t _MaxCount,
+ _locale_t _Locale
+ );
+
+
+__declspec(dllimport) int __cdecl _strnicoll(
+ char const* _String1,
+ char const* _String2,
+ size_t _MaxCount
+ );
+
+
+__declspec(dllimport) int __cdecl _strnicoll_l(
+ char const* _String1,
+ char const* _String2,
+ size_t _MaxCount,
+ _locale_t _Locale
+ );
+
+
+__declspec(dllimport) int __cdecl _strncoll(
+ char const* _String1,
+ char const* _String2,
+ size_t _MaxCount
+ );
+
+
+__declspec(dllimport) int __cdecl _strncoll_l(
+ char const* _String1,
+ char const* _String2,
+ size_t _MaxCount,
+ _locale_t _Locale
+ );
+
+__declspec(dllimport) size_t __cdecl __strncnt(
+ char const* _String,
+ size_t _Count
+ );
+
+
+#line 333 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "strncpy_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __declspec(dllimport) char* __cdecl strncpy( char *_Destination, char const* _Source, size_t _Count);
+#line 341 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+
+
+#line 347 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+#line 351 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+__declspec(dllimport) size_t __cdecl strnlen(
+ char const* _String,
+ size_t _MaxCount
+ );
+
+
+
+
+
+#line 363 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+#line 367 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+ static __inline size_t __cdecl strnlen_s(
+ char const* _String,
+ size_t _MaxCount
+ )
+ {
+ return _String == 0 ? 0 : strnlen(_String, _MaxCount);
+ }
+
+#line 376 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+
+__declspec(dllimport) errno_t __cdecl _strnset_s(
+ char* _String,
+ size_t _SizeInBytes,
+ int _Value,
+ size_t _MaxCount
+ );
+
+
+#line 391 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strnset_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __declspec(dllimport) char* __cdecl _strnset( char *_Destination, int _Value, size_t _Count);
+#line 399 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+
+__declspec(dllimport) char * __cdecl strpbrk(
+ char const* _Str,
+ char const* _Control
+ );
+
+__declspec(dllimport) char* __cdecl _strrev(
+ char* _Str
+ );
+
+
+__declspec(dllimport) errno_t __cdecl _strset_s(
+ char* _Destination,
+ size_t _DestinationSize,
+ int _Value
+ );
+
+
+#line 422 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strset_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char* __cdecl _strset( char *_Destination, int _Value);
+#line 428 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+
+__declspec(dllimport) size_t __cdecl strspn(
+ char const* _Str,
+ char const* _Control
+ );
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "strtok_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+__declspec(dllimport) char* __cdecl strtok(
+ char* _String,
+ char const* _Delimiter
+ );
+
+
+__declspec(dllimport) errno_t __cdecl _strupr_s(
+ char* _String,
+ size_t _Size
+ );
+
+
+#line 451 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strupr_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __declspec(dllimport) char* __cdecl _strupr( char *_String);
+#line 456 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+
+__declspec(dllimport) errno_t __cdecl _strupr_s_l(
+ char* _String,
+ size_t _Size,
+ _locale_t _Locale
+ );
+
+
+#line 469 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strupr_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __declspec(dllimport) char* __cdecl _strupr_l( char *_String, _locale_t _Locale);
+#line 476 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+
+
+__declspec(dllimport) size_t __cdecl strxfrm(
+ char* _Destination,
+ char const* _Source,
+ size_t _MaxCount
+ );
+
+
+
+__declspec(dllimport) size_t __cdecl _strxfrm_l(
+ char* _Destination,
+ char const* _Source,
+ size_t _MaxCount,
+ _locale_t _Locale
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strdup" ". See online help for details."))
+ __declspec(dllimport) char* __cdecl strdup(
+ char const* _String
+ );
+
+
+
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strcmpi" ". See online help for details."))
+ __declspec(dllimport) int __cdecl strcmpi(
+ char const* _String1,
+ char const* _String2
+ );
+
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_stricmp" ". See online help for details."))
+ __declspec(dllimport) int __cdecl stricmp(
+ char const* _String1,
+ char const* _String2
+ );
+
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strlwr" ". See online help for details."))
+ __declspec(dllimport) char* __cdecl strlwr(
+ char* _String
+ );
+
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strnicmp" ". See online help for details."))
+ __declspec(dllimport) int __cdecl strnicmp(
+ char const* _String1,
+ char const* _String2,
+ size_t _MaxCount
+ );
+
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strnset" ". See online help for details."))
+ __declspec(dllimport) char* __cdecl strnset(
+ char* _String,
+ int _Value,
+ size_t _MaxCount
+ );
+
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strrev" ". See online help for details."))
+ __declspec(dllimport) char* __cdecl strrev(
+ char* _String
+ );
+
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strset" ". See online help for details."))
+ char* __cdecl strset(
+ char* _String,
+ int _Value);
+
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strupr" ". See online help for details."))
+ __declspec(dllimport) char* __cdecl strupr(
+ char* _String
+ );
+
+#line 585 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+
+
+
+__pragma(pack(pop))
+
+#pragma warning(pop)
+#line 592 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+#line 593 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\string.h"
+#pragma external_header(pop)
+#line 147 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 175 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 203 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+#line 204 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+#line 205 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+#line 206 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+#pragma external_header(pop)
+#line 1911 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+typedef struct _OBJECTID {
+ GUID Lineage;
+ ULONG Uniquifier;
+} OBJECTID;
+#line 1920 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1968 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2088 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+#line 2090 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+#line 2096 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2136 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+#line 2138 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+char _RTL_CONSTANT_STRING_type_check(const void *s);
+
+#line 2173 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+
+EXCEPTION_DISPOSITION
+__stdcall
+EXCEPTION_ROUTINE (
+ struct _EXCEPTION_RECORD *ExceptionRecord,
+ PVOID EstablisherFrame,
+ struct _CONTEXT *ContextRecord,
+ PVOID DispatcherContext
+ );
+
+typedef EXCEPTION_ROUTINE *PEXCEPTION_ROUTINE;
+
+
+
+
+
+
+
+
+
+
+typedef UCHAR KIRQL;
+
+typedef KIRQL *PKIRQL;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _NT_PRODUCT_TYPE {
+ NtProductWinNt = 1,
+ NtProductLanManNt,
+ NtProductServer
+} NT_PRODUCT_TYPE, *PNT_PRODUCT_TYPE;
+
+
+
+
+
+
+
+
+typedef enum _SUITE_TYPE {
+ SmallBusiness,
+ Enterprise,
+ BackOffice,
+ CommunicationServer,
+ TerminalServer,
+ SmallBusinessRestricted,
+ EmbeddedNT,
+ DataCenter,
+ SingleUserTS,
+ Personal,
+ Blade,
+ EmbeddedRestricted,
+ SecurityAppliance,
+ StorageServer,
+ ComputeServer,
+ WHServer,
+ PhoneNT,
+ MultiUserTS,
+ MaxSuiteType
+} SUITE_TYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4668)
+#line 23 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+#pragma warning(disable:4001)
+#line 25 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+#pragma once
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 187 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+#line 189 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+
+
+
+#line 194 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+#line 196 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+
+
+
+#line 201 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+#line 203 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+
+
+
+#line 208 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+#line 210 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+
+
+#line 214 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 226 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+
+
+
+
+
+#line 233 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+
+#line 236 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+
+
+#line 240 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+#line 241 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+
+
+
+
+
+
+#line 249 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+#line 250 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+
+
+
+
+
+#line 257 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+#line 259 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+#line 261 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+#line 263 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+#line 265 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+#line 267 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+#line 269 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+#line 271 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+
+#line 274 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+#line 275 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+
+
+
+
+
+
+
+#line 284 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+
+
+#line 288 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+
+
+#line 292 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+
+
+#line 296 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+
+
+#line 300 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+
+
+#line 304 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+#line 306 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+
+
+#pragma warning(pop)
+
+
+#line 313 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+#line 314 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+#line 316 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\sdkddkver.h"
+
+#pragma external_header(pop)
+#line 2504 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3232 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3259 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3286 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3354 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3380 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+#line 3384 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+#line 3386 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+
+
+
+
+
+#line 3396 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#pragma warning(push)
+#pragma warning(disable: 4116)
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((struct { char x; LARGE_INTEGER test; } *)0)->test)) == 8)?1:-1];
+#pragma warning(pop)
+#line 3401 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+#line 3402 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+
+
+#pragma warning(pop)
+#line 3408 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+
+#line 3411 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntdef.h"
+
+#pragma external_header(pop)
+#line 58 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntstatus.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 36 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntstatus.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 15060 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntstatus.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 26546 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntstatus.h"
+
+
+
+
+
+#line 26552 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntstatus.h"
+#line 26553 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntstatus.h"
+#pragma external_header(pop)
+#line 59 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\bugcodes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 4759 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\bugcodes.h"
+#pragma external_header(pop)
+#line 60 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntiologc.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1651 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntiologc.h"
+
+#pragma external_header(pop)
+#line 61 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__pragma(warning(disable: 28110 28111 28161 28162)) typedef int __prefast_analysis_mode_flag0;
+__pragma(warning(disable: 28110 28111 28161 28162)) typedef int __prefast_analysis_mode_flag1;
+
+
+
+
+
+
+
+
+
+
+typedef struct _ACCESS_STATE *PACCESS_STATE;
+typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT;
+
+
+
+#line 81 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+typedef struct _KPROCESS *PEPROCESS;
+typedef struct _KTHREAD *PETHREAD;
+
+
+
+#line 87 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+typedef struct _IO_TIMER *PIO_TIMER;
+typedef struct _KINTERRUPT *PKINTERRUPT;
+typedef struct _KTHREAD *PKTHREAD, *PRKTHREAD;
+typedef struct _KPROCESS *PKPROCESS, *PRKPROCESS;
+typedef struct _OBJECT_TYPE *POBJECT_TYPE;
+typedef struct _SECURITY_QUALITY_OF_SERVICE *PSECURITY_QUALITY_OF_SERVICE;
+
+
+
+
+
+
+typedef struct _CONTEXT *PCONTEXT;
+typedef struct _IO_STACK_LOCATION *PIO_STACK_LOCATION;
+typedef struct _VPB *PVPB;
+typedef struct _FILE_GET_QUOTA_INFORMATION *PFILE_GET_QUOTA_INFORMATION;
+
+
+
+
+
+
+ULONG64
+__readgsqword (
+ ULONG Offset
+ );
+
+#pragma intrinsic(__readgsqword)
+
+__forceinline
+PKTHREAD
+KeGetCurrentThread (
+ void
+ )
+
+{
+ return (struct _KTHREAD *)__readgsqword(0x188);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 139 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 141 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+#line 152 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\mce.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+#pragma warning(push)
+#pragma warning(disable:4201)
+#pragma warning(disable:4214)
+#line 31 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\mce.h"
+
+
+
+
+
+typedef enum {
+ HAL_MCE_RECORD,
+ HAL_MCA_RECORD
+} MCA_EXCEPTION_TYPE;
+
+
+
+
+
+
+
+typedef union _MCI_ADDR{
+ struct {
+ ULONG Address;
+ ULONG Reserved;
+ } ;
+
+ ULONGLONG QuadPart;
+} MCI_ADDR, *PMCI_ADDR;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 81 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\mce.h"
+typedef union _MCI_STATS {
+ struct {
+ USHORT McaErrorCode;
+ USHORT ModelErrorCode;
+ ULONG OtherInformation : 25;
+ ULONG ContextCorrupt : 1;
+ ULONG AddressValid : 1;
+ ULONG MiscValid : 1;
+ ULONG ErrorEnabled : 1;
+ ULONG UncorrectedError : 1;
+ ULONG StatusOverFlow : 1;
+ ULONG Valid : 1;
+ } MciStatus;
+
+ ULONG64 QuadPart;
+} MCI_STATS, *PMCI_STATS;
+#line 98 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\mce.h"
+
+#line 100 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\mce.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 126 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\mce.h"
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _MCA_EXCEPTION {
+
+
+ ULONG VersionNumber;
+ MCA_EXCEPTION_TYPE ExceptionType;
+ LARGE_INTEGER TimeStamp;
+ ULONG ProcessorNumber;
+ ULONG Reserved1;
+
+ union {
+ struct {
+ UCHAR BankNumber;
+ UCHAR Reserved2[7];
+ MCI_STATS Status;
+ MCI_ADDR Address;
+ ULONGLONG Misc;
+ } Mca;
+
+ struct {
+ ULONGLONG Address;
+ ULONGLONG Type;
+ } Mce;
+ } u;
+
+
+
+ ULONG ExtCnt;
+ ULONG Reserved3;
+ ULONGLONG ExtReg[24];
+
+
+} MCA_EXCEPTION, *PMCA_EXCEPTION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 195 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\mce.h"
+
+typedef MCA_EXCEPTION CMC_EXCEPTION, *PCMC_EXCEPTION;
+typedef MCA_EXCEPTION CPE_EXCEPTION, *PCPE_EXCEPTION;
+
+
+
+
+#line 203 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\mce.h"
+
+#line 205 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\mce.h"
+
+
+
+
+
+
+
+
+
+
+typedef UCHAR ERROR_SEVERITY, *PERROR_SEVERITY;
+
+typedef enum _ERROR_SEVERITY_VALUE {
+ ErrorRecoverable = 0,
+ ErrorFatal = 1,
+ ErrorCorrected = 2,
+ ErrorOthers = 3,
+} ERROR_SEVERITY_VALUE;
+
+#line 225 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\mce.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1391 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\mce.h"
+
+
+
+
+
+
+
+
+
+
+#line 1402 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\mce.h"
+
+
+#pragma warning(pop)
+#line 1406 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\mce.h"
+
+#line 1408 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\mce.h"
+
+
+#line 166 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+extern __declspec(dllimport) volatile CCHAR KeNumberProcessors;
+
+
+#line 179 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+#line 184 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 205 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 224 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 242 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 260 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _KSYSTEM_TIME {
+ ULONG LowPart;
+ LONG High1Time;
+ LONG High2Time;
+} KSYSTEM_TIME, *PKSYSTEM_TIME;
+
+
+
+
+
+
+typedef LONG KPRIORITY;
+
+
+
+
+
+
+
+
+typedef ULONG_PTR KSPIN_LOCK;
+typedef KSPIN_LOCK *PKSPIN_LOCK;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 343 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+typedef ULONG64 KSPIN_LOCK_QUEUE_NUMBER;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 391 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef struct _KSPIN_LOCK_QUEUE {
+ struct _KSPIN_LOCK_QUEUE * volatile Next;
+ PKSPIN_LOCK volatile Lock;
+} KSPIN_LOCK_QUEUE, *PKSPIN_LOCK_QUEUE;
+
+typedef struct _KLOCK_QUEUE_HANDLE {
+ KSPIN_LOCK_QUEUE LockQueue;
+ KIRQL OldIrql;
+} KLOCK_QUEUE_HANDLE, *PKLOCK_QUEUE_HANDLE;
+
+
+
+
+typedef enum _KPROFILE_SOURCE {
+ ProfileTime,
+ ProfileAlignmentFixup,
+ ProfileTotalIssues,
+ ProfilePipelineDry,
+ ProfileLoadInstructions,
+ ProfilePipelineFrozen,
+ ProfileBranchInstructions,
+ ProfileTotalNonissues,
+ ProfileDcacheMisses,
+ ProfileIcacheMisses,
+ ProfileCacheMisses,
+ ProfileBranchMispredictions,
+ ProfileStoreInstructions,
+ ProfileFpInstructions,
+ ProfileIntegerInstructions,
+ Profile2Issue,
+ Profile3Issue,
+ Profile4Issue,
+ ProfileSpecialInstructions,
+ ProfileTotalCycles,
+ ProfileIcacheIssues,
+ ProfileDcacheAccesses,
+ ProfileMemoryBarrierCycles,
+ ProfileLoadLinkedIssues,
+ ProfileMaximum
+} KPROFILE_SOURCE;
+
+
+
+
+
+
+
+
+
+
+typedef struct _DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK {
+ ULONG Signature;
+ USHORT Revision;
+ USHORT Size;
+ USHORT DpcWatchdogProfileOffset;
+ ULONG DpcWatchdogProfileLength;
+} DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, *PDPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK;
+
+
+
+
+
+
+
+typedef struct __declspec(align(16)) _M128A {
+ ULONGLONG Low;
+ LONGLONG High;
+} M128A, *PM128A;
+
+
+
+
+
+typedef struct __declspec(align(16)) _XSAVE_FORMAT {
+ USHORT ControlWord;
+ USHORT StatusWord;
+ UCHAR TagWord;
+ UCHAR Reserved1;
+ USHORT ErrorOpcode;
+ ULONG ErrorOffset;
+ USHORT ErrorSelector;
+ USHORT Reserved2;
+ ULONG DataOffset;
+ USHORT DataSelector;
+ USHORT Reserved3;
+ ULONG MxCsr;
+ ULONG MxCsr_Mask;
+ M128A FloatRegisters[8];
+
+
+
+ M128A XmmRegisters[16];
+ UCHAR Reserved4[96];
+
+
+
+
+
+
+#line 492 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+} XSAVE_FORMAT, *PXSAVE_FORMAT;
+
+
+
+
+
+
+
+typedef struct _XSAVE_CET_U_FORMAT {
+ ULONG64 Ia32CetUMsr;
+ ULONG64 Ia32Pl3SspMsr;
+} XSAVE_CET_U_FORMAT, *PXSAVE_CET_U_FORMAT;
+
+
+
+
+
+typedef struct _XSAVE_ARM64_SVE_HEADER {
+ ULONG VectorLength;
+ ULONG VectorRegisterOffset;
+ ULONG PredicateRegisterOffset;
+ ULONG Reserved[5];
+} XSAVE_ARM64_SVE_HEADER, *PXSAVE_ARM64_SVE_HEADER;
+
+
+
+typedef char __C_ASSERT__[(sizeof(XSAVE_ARM64_SVE_HEADER) == (4 * sizeof(ULONG64)))?1:-1];
+
+#line 522 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef struct __declspec(align(8)) _XSAVE_AREA_HEADER {
+ ULONG64 Mask;
+ ULONG64 CompactionMask;
+ ULONG64 Reserved2[6];
+} XSAVE_AREA_HEADER, *PXSAVE_AREA_HEADER;
+
+typedef struct __declspec(align(16)) _XSAVE_AREA {
+ XSAVE_FORMAT LegacyState;
+ XSAVE_AREA_HEADER Header;
+} XSAVE_AREA, *PXSAVE_AREA;
+
+
+
+typedef struct _XSTATE_CONTEXT {
+ ULONG64 Mask;
+ ULONG Length;
+ UCHAR Flags;
+ UCHAR Reserved0[3];
+ PXSAVE_AREA Area;
+
+
+
+#line 546 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ PVOID Buffer;
+
+
+
+#line 552 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+} XSTATE_CONTEXT, *PXSTATE_CONTEXT;
+
+typedef struct _KERNEL_CET_CONTEXT {
+ ULONG64 Ssp;
+ ULONG64 Rip;
+ USHORT SegCs;
+ union {
+ USHORT AllFlags;
+ struct {
+ USHORT UseWrss : 1;
+ USHORT PopShadowStackOne : 1;
+ USHORT Unused : 14;
+ } ;
+ } ;
+ USHORT Fill[2];
+} KERNEL_CET_CONTEXT, *PKERNEL_CET_CONTEXT;
+
+
+
+typedef char __C_ASSERT__[(sizeof(KERNEL_CET_CONTEXT) == (3 * sizeof(ULONG64)))?1:-1];
+
+#line 575 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1534 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1549 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+BOOLEAN
+_bittest (
+ LONG const *Base,
+ LONG Offset
+ );
+
+BOOLEAN
+_bittestandcomplement (
+ LONG *Base,
+ LONG Offset
+ );
+
+BOOLEAN
+_bittestandset (
+ LONG *Base,
+ LONG Offset
+ );
+
+BOOLEAN
+_bittestandreset (
+ LONG *Base,
+ LONG Offset
+ );
+
+BOOLEAN
+_interlockedbittestandset (
+ LONG volatile *Base,
+ LONG Offset
+ );
+
+BOOLEAN
+_interlockedbittestandreset (
+ LONG volatile *Base,
+ LONG Offset
+ );
+
+BOOLEAN
+_bittest64 (
+ LONG64 const *Base,
+ LONG64 Offset
+ );
+
+BOOLEAN
+_bittestandcomplement64 (
+ LONG64 *Base,
+ LONG64 Offset
+ );
+
+BOOLEAN
+_bittestandset64 (
+ LONG64 *Base,
+ LONG64 Offset
+ );
+
+BOOLEAN
+_bittestandreset64 (
+ LONG64 *Base,
+ LONG64 Offset
+ );
+
+BOOLEAN
+_interlockedbittestandset64 (
+ LONG64 volatile *Base,
+ LONG64 Offset
+ );
+
+BOOLEAN
+_interlockedbittestandreset64 (
+ LONG64 volatile *Base,
+ LONG64 Offset
+ );
+
+#pragma intrinsic(_bittest)
+#pragma intrinsic(_bittestandcomplement)
+#pragma intrinsic(_bittestandset)
+#pragma intrinsic(_bittestandreset)
+
+
+#pragma intrinsic(_interlockedbittestandset)
+#pragma intrinsic(_interlockedbittestandreset)
+#line 1632 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#pragma intrinsic(_bittest64)
+#pragma intrinsic(_bittestandcomplement64)
+#pragma intrinsic(_bittestandset64)
+#pragma intrinsic(_bittestandreset64)
+
+
+#pragma intrinsic(_interlockedbittestandset64)
+#pragma intrinsic(_interlockedbittestandreset64)
+#line 1642 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+BOOLEAN
+_BitScanForward (
+ ULONG *Index,
+ ULONG Mask
+ );
+
+
+BOOLEAN
+_BitScanReverse (
+ ULONG *Index,
+ ULONG Mask
+ );
+
+
+BOOLEAN
+_BitScanForward64 (
+ ULONG *Index,
+ ULONG64 Mask
+ );
+
+
+BOOLEAN
+_BitScanReverse64 (
+ ULONG *Index,
+ ULONG64 Mask
+ );
+
+#pragma intrinsic(_BitScanForward)
+#pragma intrinsic(_BitScanReverse)
+#pragma intrinsic(_BitScanForward64)
+#pragma intrinsic(_BitScanReverse64)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1820 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+SHORT
+_InterlockedIncrement16 (
+ SHORT volatile *Addend
+ );
+
+SHORT
+_InterlockedDecrement16 (
+ SHORT volatile *Addend
+ );
+
+SHORT
+_InterlockedCompareExchange16 (
+ SHORT volatile *Destination,
+ SHORT ExChange,
+ SHORT Comperand
+ );
+
+LONG
+_InterlockedAnd (
+ LONG volatile *Destination,
+ LONG Value
+ );
+
+LONG
+_InterlockedOr (
+ LONG volatile *Destination,
+ LONG Value
+ );
+
+LONG
+_InterlockedXor (
+ LONG volatile *Destination,
+ LONG Value
+ );
+
+LONG64
+_InterlockedAnd64 (
+ LONG64 volatile *Destination,
+ LONG64 Value
+ );
+
+LONG64
+_InterlockedOr64 (
+ LONG64 volatile *Destination,
+ LONG64 Value
+ );
+
+LONG64
+_InterlockedXor64 (
+ LONG64 volatile *Destination,
+ LONG64 Value
+ );
+
+LONG
+_InterlockedIncrement (
+ LONG volatile *Addend
+ );
+
+LONG
+_InterlockedDecrement (
+ LONG volatile *Addend
+ );
+
+LONG
+_InterlockedExchange (
+ LONG volatile *Target,
+ LONG Value
+ );
+
+LONG
+_InterlockedExchangeAdd (
+ LONG volatile *Addend,
+ LONG Value
+ );
+
+
+
+__forceinline
+LONG
+_InlineInterlockedAdd (
+ LONG volatile *Addend,
+ LONG Value
+ )
+
+{
+ return _InterlockedExchangeAdd(Addend, Value) + Value;
+}
+
+#line 1910 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+LONG
+_InterlockedCompareExchange (
+ LONG volatile *Destination,
+ LONG ExChange,
+ LONG Comperand
+ );
+
+LONG64
+_InterlockedIncrement64 (
+ LONG64 volatile *Addend
+ );
+
+LONG64
+_InterlockedDecrement64 (
+ LONG64 volatile *Addend
+ );
+
+LONG64
+_InterlockedExchange64 (
+ LONG64 volatile *Target,
+ LONG64 Value
+ );
+
+LONG64
+_InterlockedExchangeAdd64 (
+ LONG64 volatile *Addend,
+ LONG64 Value
+ );
+
+
+
+__forceinline
+LONG64
+_InlineInterlockedAdd64 (
+ LONG64 volatile *Addend,
+ LONG64 Value
+ )
+
+{
+ return _InterlockedExchangeAdd64(Addend, Value) + Value;
+}
+
+#line 1954 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+LONG64
+_InterlockedCompareExchange64 (
+ LONG64 volatile *Destination,
+ LONG64 ExChange,
+ LONG64 Comperand
+ );
+
+BOOLEAN
+_InterlockedCompareExchange128 (
+ LONG64 volatile *Destination,
+ LONG64 ExchangeHigh,
+ LONG64 ExchangeLow,
+ LONG64 *ComparandResult
+ );
+
+ PVOID
+_InterlockedCompareExchangePointer (
+
+#line 1975 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+ PVOID volatile *Destination,
+ PVOID Exchange,
+ PVOID Comperand
+ );
+
+ PVOID
+_InterlockedExchangePointer(
+
+#line 1985 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+ PVOID volatile *Target,
+ PVOID Value
+ );
+
+
+#pragma intrinsic(_InterlockedIncrement16)
+#pragma intrinsic(_InterlockedDecrement16)
+#pragma intrinsic(_InterlockedCompareExchange16)
+#pragma intrinsic(_InterlockedAnd)
+#pragma intrinsic(_InterlockedOr)
+#pragma intrinsic(_InterlockedXor)
+#pragma intrinsic(_InterlockedIncrement)
+#pragma intrinsic(_InterlockedDecrement)
+#pragma intrinsic(_InterlockedExchange)
+#pragma intrinsic(_InterlockedExchangeAdd)
+#pragma intrinsic(_InterlockedCompareExchange)
+#pragma intrinsic(_InterlockedAnd64)
+#pragma intrinsic(_InterlockedOr64)
+#pragma intrinsic(_InterlockedXor64)
+#pragma intrinsic(_InterlockedIncrement64)
+#pragma intrinsic(_InterlockedDecrement64)
+#pragma intrinsic(_InterlockedExchange64)
+#pragma intrinsic(_InterlockedExchangeAdd64)
+#pragma intrinsic(_InterlockedCompareExchange64)
+
+
+
+#pragma intrinsic(_InterlockedCompareExchange128)
+
+#line 2015 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#pragma intrinsic(_InterlockedExchangePointer)
+#pragma intrinsic(_InterlockedCompareExchangePointer)
+#line 2019 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+CHAR
+_InterlockedExchange8 (
+ CHAR volatile *Target,
+ CHAR Value
+ );
+
+SHORT
+_InterlockedExchange16 (
+ SHORT volatile *Destination,
+ SHORT ExChange
+ );
+
+
+#pragma intrinsic(_InterlockedExchange8)
+#pragma intrinsic(_InterlockedExchange16)
+#line 2047 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 2049 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+char
+_InterlockedExchangeAdd8 (
+ char volatile * _Addend,
+ char _Value
+ );
+
+char
+_InterlockedAnd8 (
+ char volatile *Destination,
+ char Value
+ );
+
+char
+_InterlockedOr8 (
+ char volatile *Destination,
+ char Value
+ );
+
+char
+_InterlockedXor8 (
+ char volatile *Destination,
+ char Value
+ );
+
+SHORT
+_InterlockedAnd16(
+ SHORT volatile *Destination,
+ SHORT Value
+ );
+
+SHORT
+_InterlockedOr16(
+ SHORT volatile *Destination,
+ SHORT Value
+ );
+
+SHORT
+_InterlockedXor16(
+ SHORT volatile *Destination,
+ SHORT Value
+ );
+
+
+#pragma intrinsic (_InterlockedExchangeAdd8)
+#pragma intrinsic (_InterlockedAnd8)
+#pragma intrinsic (_InterlockedOr8)
+#pragma intrinsic (_InterlockedXor8)
+#pragma intrinsic (_InterlockedAnd16)
+#pragma intrinsic (_InterlockedOr16)
+#pragma intrinsic (_InterlockedXor16)
+#line 2130 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 2132 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+#line 2133 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2153 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+void
+
+
+#line 2158 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+__cpuidex (
+ int CPUInfo[4],
+ int Function,
+ int SubLeaf
+ );
+
+
+
+#pragma intrinsic(__cpuidex)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2210 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+void
+_mm_clflush (
+ void const *Address
+ );
+
+#pragma intrinsic(_mm_clflush)
+
+#line 2230 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+void
+_ReadWriteBarrier (
+ void
+ );
+
+#pragma intrinsic(_ReadWriteBarrier)
+
+
+
+
+
+
+
+#line 2250 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2263 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+void
+__faststorefence (
+ void
+ );
+
+#line 2276 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+void
+_mm_lfence (
+ void
+ );
+
+void
+_mm_mfence (
+ void
+ );
+
+void
+_mm_sfence (
+ void
+ );
+
+void
+_mm_pause (
+ void
+ );
+
+void
+_mm_prefetch (
+ CHAR const *a,
+ int sel
+ );
+
+void
+_m_prefetchw (
+ volatile const void *Source
+ );
+
+#line 2315 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma intrinsic(__faststorefence)
+
+#line 2334 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+#pragma intrinsic(_mm_pause)
+#pragma intrinsic(_mm_prefetch)
+#pragma intrinsic(_mm_lfence)
+#pragma intrinsic(_mm_mfence)
+#pragma intrinsic(_mm_sfence)
+#pragma intrinsic(_m_prefetchw)
+
+#line 2349 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2368 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+unsigned int
+_mm_getcsr (
+ void
+ );
+
+void
+_mm_setcsr (
+ unsigned int MxCsr
+ );
+
+
+
+#pragma intrinsic(_mm_getcsr)
+#pragma intrinsic(_mm_setcsr)
+
+#line 2392 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+unsigned __int32
+__getcallerseflags (
+ void
+ );
+
+#pragma intrinsic(__getcallerseflags)
+
+
+
+
+
+
+
+ULONG
+__segmentlimit (
+ ULONG Selector
+ );
+
+#pragma intrinsic(__segmentlimit)
+
+
+
+
+
+
+
+ULONG64
+__readpmc (
+ ULONG Counter
+ );
+
+#pragma intrinsic(__readpmc)
+
+
+
+
+
+
+
+ULONG64
+__rdtsc (
+ void
+ );
+
+#pragma intrinsic(__rdtsc)
+
+
+
+
+
+void
+__movsb (
+ PUCHAR Destination,
+ UCHAR const *Source,
+ SIZE_T Count
+ );
+
+void
+__movsw (
+ PUSHORT Destination,
+ USHORT const *Source,
+ SIZE_T Count
+ );
+
+void
+__movsd (
+ PULONG Destination,
+ ULONG const *Source,
+ SIZE_T Count
+ );
+
+void
+__movsq (
+ PULONG64 Destination,
+ ULONG64 const *Source,
+ SIZE_T Count
+ );
+
+#pragma intrinsic(__movsb)
+#pragma intrinsic(__movsw)
+#pragma intrinsic(__movsd)
+#pragma intrinsic(__movsq)
+
+
+
+
+
+void
+__stosb (
+ PUCHAR Destination,
+ UCHAR Value,
+ SIZE_T Count
+ );
+
+void
+__stosw (
+ PUSHORT Destination,
+ USHORT Value,
+ SIZE_T Count
+ );
+
+void
+__stosd (
+ PULONG Destination,
+ ULONG Value,
+ SIZE_T Count
+ );
+
+void
+__stosq (
+ PULONG64 Destination,
+ ULONG64 Value,
+ SIZE_T Count
+ );
+
+#pragma intrinsic(__stosb)
+#pragma intrinsic(__stosw)
+#pragma intrinsic(__stosd)
+#pragma intrinsic(__stosq)
+
+
+
+
+
+
+
+
+LONGLONG
+__mulh (
+ LONG64 Multiplier,
+ LONG64 Multiplicand
+ );
+
+ULONGLONG
+__umulh (
+ ULONG64 Multiplier,
+ ULONG64 Multiplicand
+ );
+
+#pragma intrinsic(__mulh)
+#pragma intrinsic(__umulh)
+
+#line 2544 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2559 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ULONG64
+__popcnt64 (
+ ULONG64 operand
+ );
+
+
+
+
+#pragma intrinsic(__popcnt64)
+
+#line 2571 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+#line 2572 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2588 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ULONG64
+__shiftleft128 (
+ ULONG64 LowPart,
+ ULONG64 HighPart,
+ UCHAR Shift
+ );
+
+ULONG64
+__shiftright128 (
+ ULONG64 LowPart,
+ ULONG64 HighPart,
+ UCHAR Shift
+ );
+
+
+
+#pragma intrinsic(__shiftleft128)
+#pragma intrinsic(__shiftright128)
+
+#line 2609 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2624 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+LONG64
+_mul128 (
+ LONG64 Multiplier,
+ LONG64 Multiplicand,
+ LONG64 *HighProduct
+ );
+
+
+
+#pragma intrinsic(_mul128)
+
+#line 2637 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+ULONG64
+UnsignedMultiply128 (
+ ULONG64 Multiplier,
+ ULONG64 Multiplicand,
+ ULONG64 *HighProduct
+ );
+
+
+
+
+
+
+
+
+
+
+#line 2657 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ULONG64
+_umul128 (
+ ULONG64 Multiplier,
+ ULONG64 Multiplicand,
+ ULONG64 *HighProduct
+ );
+
+LONG64
+_mul128 (
+ LONG64 Multiplier,
+ LONG64 Multiplicand,
+ LONG64 *HighProduct
+ );
+
+
+
+#pragma intrinsic(_umul128)
+
+#line 2677 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 2679 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+__forceinline
+LONG64
+MultiplyExtract128 (
+ LONG64 Multiplier,
+ LONG64 Multiplicand,
+ UCHAR Shift
+ )
+
+{
+
+ LONG64 extractedProduct;
+ LONG64 highProduct;
+ LONG64 lowProduct;
+ BOOLEAN negate;
+ ULONG64 uhighProduct;
+ ULONG64 ulowProduct;
+
+ lowProduct = _mul128(Multiplier, Multiplicand, &highProduct);
+ negate = 0;
+ uhighProduct = (ULONG64)highProduct;
+ ulowProduct = (ULONG64)lowProduct;
+ if (highProduct < 0) {
+ negate = 1;
+ uhighProduct = (ULONG64)(-highProduct);
+ ulowProduct = (ULONG64)(-lowProduct);
+ if (ulowProduct != 0) {
+ uhighProduct -= 1;
+ }
+ }
+
+ extractedProduct = (LONG64)__shiftright128(ulowProduct, uhighProduct, Shift);
+ if (negate != 0) {
+ extractedProduct = -extractedProduct;
+ }
+
+ return extractedProduct;
+}
+
+__forceinline
+ULONG64
+UnsignedMultiplyExtract128 (
+ ULONG64 Multiplier,
+ ULONG64 Multiplicand,
+ UCHAR Shift
+ )
+
+{
+
+ ULONG64 extractedProduct;
+ ULONG64 highProduct;
+ ULONG64 lowProduct;
+
+ lowProduct = _umul128(Multiplier, Multiplicand, &highProduct);
+ extractedProduct = __shiftright128(lowProduct, highProduct, Shift);
+ return extractedProduct;
+}
+
+
+
+
+
+
+
+UCHAR
+__readgsbyte (
+ ULONG Offset
+ );
+
+USHORT
+__readgsword (
+ ULONG Offset
+ );
+
+ULONG
+__readgsdword (
+ ULONG Offset
+ );
+
+ULONG64
+__readgsqword (
+ ULONG Offset
+ );
+
+void
+__writegsbyte (
+ ULONG Offset,
+ UCHAR Data
+ );
+
+void
+__writegsword (
+ ULONG Offset,
+ USHORT Data
+ );
+
+void
+__writegsdword (
+ ULONG Offset,
+ ULONG Data
+ );
+
+void
+__writegsqword (
+ ULONG Offset,
+ ULONG64 Data
+ );
+
+#pragma intrinsic(__readgsbyte)
+#pragma intrinsic(__readgsword)
+#pragma intrinsic(__readgsdword)
+#pragma intrinsic(__readgsqword)
+#pragma intrinsic(__writegsbyte)
+#pragma intrinsic(__writegsword)
+#pragma intrinsic(__writegsdword)
+#pragma intrinsic(__writegsqword)
+
+
+
+void
+__incgsbyte (
+ ULONG Offset
+ );
+
+void
+__addgsbyte (
+ ULONG Offset,
+ UCHAR Value
+ );
+
+void
+__incgsword (
+ ULONG Offset
+ );
+
+void
+__addgsword (
+ ULONG Offset,
+ USHORT Value
+ );
+
+void
+__incgsdword (
+ ULONG Offset
+ );
+
+void
+__addgsdword (
+ ULONG Offset,
+ ULONG Value
+ );
+
+void
+__incgsqword (
+ ULONG Offset
+ );
+
+void
+__addgsqword (
+ ULONG Offset,
+ ULONG64 Value
+ );
+
+
+
+
+
+
+
+
+
+
+#line 2852 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 2854 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 2856 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+#line 2865 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+typedef XSAVE_FORMAT XMM_SAVE_AREA32, *PXMM_SAVE_AREA32;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2910 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+#line 2915 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 4699 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+__forceinline
+CHAR
+ReadAcquire8 (
+ CHAR const volatile *Source
+ )
+
+{
+
+ CHAR Value;
+
+ Value = *Source;
+ return Value;
+}
+
+__forceinline
+CHAR
+ReadNoFence8 (
+ CHAR const volatile *Source
+ )
+
+{
+
+ CHAR Value;
+
+ Value = *Source;
+ return Value;
+}
+
+__forceinline
+void
+WriteRelease8 (
+ CHAR volatile *Destination,
+ CHAR Value
+ )
+
+{
+
+ *Destination = Value;
+ return;
+}
+
+__forceinline
+void
+WriteNoFence8 (
+ CHAR volatile *Destination,
+ CHAR Value
+ )
+
+{
+
+ *Destination = Value;
+ return;
+}
+
+__forceinline
+SHORT
+ReadAcquire16 (
+ SHORT const volatile *Source
+ )
+
+{
+
+ SHORT Value;
+
+ Value = *Source;
+ return Value;
+}
+
+__forceinline
+SHORT
+ReadNoFence16 (
+ SHORT const volatile *Source
+ )
+
+{
+
+ SHORT Value;
+
+ Value = *Source;
+ return Value;
+}
+
+__forceinline
+void
+WriteRelease16 (
+ SHORT volatile *Destination,
+ SHORT Value
+ )
+
+{
+
+ *Destination = Value;
+ return;
+}
+
+__forceinline
+void
+WriteNoFence16 (
+ SHORT volatile *Destination,
+ SHORT Value
+ )
+
+{
+
+ *Destination = Value;
+ return;
+}
+
+__forceinline
+LONG
+ReadAcquire (
+ LONG const volatile *Source
+ )
+
+{
+
+ LONG Value;
+
+ Value = *Source;
+ return Value;
+}
+
+__forceinline
+LONG
+ReadNoFence (
+ LONG const volatile *Source
+ )
+
+{
+
+ LONG Value;
+
+ Value = *Source;
+ return Value;
+}
+
+__forceinline
+void
+WriteRelease (
+ LONG volatile *Destination,
+ LONG Value
+ )
+
+{
+
+ *Destination = Value;
+ return;
+}
+
+__forceinline
+void
+WriteNoFence (
+ LONG volatile *Destination,
+ LONG Value
+ )
+
+{
+
+ *Destination = Value;
+ return;
+}
+
+__forceinline
+LONG64
+ReadAcquire64 (
+ LONG64 const volatile *Source
+ )
+
+{
+
+ LONG64 Value;
+
+ Value = *Source;
+ return Value;
+}
+
+__forceinline
+LONG64
+ReadNoFence64 (
+ LONG64 const volatile *Source
+ )
+
+{
+
+ LONG64 Value;
+
+ Value = *Source;
+ return Value;
+}
+
+__forceinline
+void
+WriteRelease64 (
+ LONG64 volatile *Destination,
+ LONG64 Value
+ )
+
+{
+
+ *Destination = Value;
+ return;
+}
+
+__forceinline
+void
+WriteNoFence64 (
+ LONG64 volatile *Destination,
+ LONG64 Value
+ )
+
+{
+
+ *Destination = Value;
+ return;
+}
+
+
+
+__forceinline
+void
+BarrierAfterRead (
+ void
+ )
+
+{
+ _ReadWriteBarrier();
+ return;
+}
+
+#line 4939 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+#line 4945 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 5010 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+__forceinline
+CHAR
+ReadRaw8 (
+ CHAR const volatile *Source
+ )
+
+{
+
+ CHAR Value;
+
+ Value = *(CHAR *)Source;
+ return Value;
+}
+
+__forceinline
+void
+WriteRaw8 (
+ CHAR volatile *Destination,
+ CHAR Value
+ )
+
+{
+
+ *(CHAR *)Destination = Value;
+ return;
+}
+
+__forceinline
+SHORT
+ReadRaw16 (
+ SHORT const volatile *Source
+ )
+
+{
+
+ SHORT Value;
+
+ Value = *(SHORT *)Source;
+ return Value;
+}
+
+__forceinline
+void
+WriteRaw16 (
+ SHORT volatile *Destination,
+ SHORT Value
+ )
+
+{
+
+ *(SHORT *)Destination = Value;
+ return;
+}
+
+__forceinline
+LONG
+ReadRaw (
+ LONG const volatile *Source
+ )
+
+{
+
+ LONG Value;
+
+ Value = *(LONG *)Source;
+ return Value;
+}
+
+__forceinline
+void
+WriteRaw (
+ LONG volatile *Destination,
+ LONG Value
+ )
+
+{
+
+ *(LONG *)Destination = Value;
+ return;
+}
+
+__forceinline
+LONG64
+ReadRaw64 (
+ LONG64 const volatile *Source
+ )
+
+{
+
+ LONG64 Value;
+
+ Value = *(LONG64 *)Source;
+ return Value;
+}
+
+__forceinline
+void
+WriteRaw64 (
+ LONG64 volatile *Destination,
+ LONG64 Value
+ )
+
+{
+
+ *(LONG64 *)Destination = Value;
+ return;
+}
+
+#line 5120 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__forceinline
+LONG
+AddRaw (
+ LONG volatile *Destination,
+ LONG Value
+ )
+
+{
+ LONG NewValue;
+
+ NewValue = ReadRaw(Destination);
+ NewValue += Value;
+ WriteRaw(Destination, NewValue);
+
+ return NewValue;
+}
+
+__forceinline
+ULONG
+AddULongRaw (
+ ULONG volatile *Destination,
+ ULONG Value
+ )
+
+{
+ return (ULONG)AddRaw((PLONG)Destination, (LONG)Value);
+}
+
+__forceinline
+LONG
+IncrementRaw (
+ LONG volatile *Destination
+ )
+
+{
+ return AddRaw(Destination, 1);
+}
+
+__forceinline
+ULONG
+IncrementULongRaw (
+ ULONG volatile *Destination
+ )
+
+{
+ return (ULONG)IncrementRaw((PLONG)Destination);
+}
+
+
+
+
+
+__forceinline
+UCHAR
+ReadUCharAcquire (
+ UCHAR const volatile *Source
+ )
+
+{
+
+ return (UCHAR)ReadAcquire8((PCHAR)Source);
+}
+
+__forceinline
+UCHAR
+ReadUCharNoFence (
+ UCHAR const volatile *Source
+ )
+
+{
+
+ return (UCHAR)ReadNoFence8((PCHAR)Source);
+}
+
+__forceinline
+UCHAR
+ReadBooleanAcquire (
+ BOOLEAN const volatile *Source
+ )
+
+{
+
+ return (BOOLEAN)ReadAcquire8((PCHAR)Source);
+}
+
+__forceinline
+UCHAR
+ReadBooleanNoFence (
+ BOOLEAN const volatile *Source
+ )
+
+{
+
+ return (BOOLEAN)ReadNoFence8((PCHAR)Source);
+}
+
+__forceinline
+UCHAR
+ReadBooleanRaw (
+ BOOLEAN const volatile *Source
+ )
+
+{
+ return (BOOLEAN)ReadRaw8((PCHAR)Source);
+}
+
+__forceinline
+UCHAR
+ReadUCharRaw (
+ UCHAR const volatile *Source
+ )
+
+{
+
+ return (UCHAR)ReadRaw8((PCHAR)Source);
+}
+
+__forceinline
+void
+WriteUCharRelease (
+ UCHAR volatile *Destination,
+ UCHAR Value
+ )
+
+{
+
+ WriteRelease8((PCHAR)Destination, (CHAR)Value);
+ return;
+}
+
+__forceinline
+void
+WriteUCharNoFence (
+ UCHAR volatile *Destination,
+ UCHAR Value
+ )
+
+{
+
+ WriteNoFence8((PCHAR)Destination, (CHAR)Value);
+ return;
+}
+
+__forceinline
+void
+WriteBooleanRelease (
+ BOOLEAN volatile *Destination,
+ BOOLEAN Value
+ )
+
+{
+
+ WriteRelease8((PCHAR)Destination, (CHAR)Value);
+ return;
+}
+
+__forceinline
+void
+WriteBooleanNoFence (
+ BOOLEAN volatile *Destination,
+ BOOLEAN Value
+ )
+
+{
+
+ WriteNoFence8((PCHAR)Destination, (CHAR)Value);
+ return;
+}
+
+__forceinline
+void
+WriteUCharRaw (
+ UCHAR volatile *Destination,
+ UCHAR Value
+ )
+
+{
+
+ WriteRaw8((PCHAR)Destination, (CHAR)Value);
+ return;
+}
+
+__forceinline
+USHORT
+ReadUShortAcquire (
+ USHORT const volatile *Source
+ )
+
+{
+
+ return (USHORT)ReadAcquire16((PSHORT)Source);
+}
+
+__forceinline
+USHORT
+ReadUShortNoFence (
+ USHORT const volatile *Source
+ )
+
+{
+
+ return (USHORT)ReadNoFence16((PSHORT)Source);
+}
+
+__forceinline
+USHORT
+ReadUShortRaw (
+ USHORT const volatile *Source
+ )
+
+{
+
+ return (USHORT)ReadRaw16((PSHORT)Source);
+}
+
+__forceinline
+void
+WriteUShortRelease (
+ USHORT volatile *Destination,
+ USHORT Value
+ )
+
+{
+
+ WriteRelease16((PSHORT)Destination, (SHORT)Value);
+ return;
+}
+
+__forceinline
+void
+WriteUShortNoFence (
+ USHORT volatile *Destination,
+ USHORT Value
+ )
+
+{
+
+ WriteNoFence16((PSHORT)Destination, (SHORT)Value);
+ return;
+}
+
+__forceinline
+void
+WriteUShortRaw (
+ USHORT volatile *Destination,
+ USHORT Value
+ )
+
+{
+
+ WriteRaw16((PSHORT)Destination, (SHORT)Value);
+ return;
+}
+
+__forceinline
+ULONG
+ReadULongAcquire (
+ ULONG const volatile *Source
+ )
+
+{
+
+ return (ULONG)ReadAcquire((PLONG)Source);
+}
+
+__forceinline
+ULONG
+ReadULongNoFence (
+ ULONG const volatile *Source
+ )
+
+{
+
+ return (ULONG)ReadNoFence((PLONG)Source);
+}
+
+__forceinline
+ULONG
+ReadULongRaw (
+ ULONG const volatile *Source
+ )
+
+{
+
+ return (ULONG)ReadRaw((PLONG)Source);
+}
+
+__forceinline
+void
+WriteULongRelease (
+ ULONG volatile *Destination,
+ ULONG Value
+ )
+
+{
+
+ WriteRelease((PLONG)Destination, (LONG)Value);
+ return;
+}
+
+__forceinline
+void
+WriteULongNoFence (
+ ULONG volatile *Destination,
+ ULONG Value
+ )
+
+{
+
+ WriteNoFence((PLONG)Destination, (LONG)Value);
+ return;
+}
+
+__forceinline
+void
+WriteULongRaw (
+ ULONG volatile *Destination,
+ ULONG Value
+ )
+
+{
+
+ WriteRaw((PLONG)Destination, (LONG)Value);
+ return;
+}
+
+__forceinline
+INT32
+ReadInt32Acquire (
+ INT32 const volatile *Source
+ )
+
+{
+
+ return (INT32)ReadAcquire((PLONG)Source);
+}
+
+__forceinline
+INT32
+ReadInt32NoFence (
+ INT32 const volatile *Source
+ )
+
+{
+
+ return (INT32)ReadNoFence((PLONG)Source);
+}
+
+__forceinline
+INT32
+ReadInt32Raw (
+ INT32 const volatile *Source
+ )
+
+{
+
+ return (INT32)ReadRaw((PLONG)Source);
+}
+
+__forceinline
+void
+WriteInt32Release (
+ INT32 volatile *Destination,
+ INT32 Value
+ )
+
+{
+
+ WriteRelease((PLONG)Destination, (LONG)Value);
+ return;
+}
+
+__forceinline
+void
+WriteInt32NoFence (
+ INT32 volatile *Destination,
+ INT32 Value
+ )
+
+{
+
+ WriteNoFence((PLONG)Destination, (LONG)Value);
+ return;
+}
+
+__forceinline
+void
+WriteInt32Raw (
+ INT32 volatile *Destination,
+ INT32 Value
+ )
+
+{
+
+ WriteRaw((PLONG)Destination, (LONG)Value);
+ return;
+}
+
+__forceinline
+UINT32
+ReadUInt32Acquire (
+ UINT32 const volatile *Source
+ )
+
+{
+
+ return (UINT32)ReadAcquire((PLONG)Source);
+}
+
+__forceinline
+UINT32
+ReadUInt32NoFence (
+ UINT32 const volatile *Source
+ )
+
+{
+
+ return (UINT32)ReadNoFence((PLONG)Source);
+}
+
+__forceinline
+UINT32
+ReadUInt32Raw (
+ UINT32 const volatile *Source
+ )
+
+{
+
+ return (UINT32)ReadRaw((PLONG)Source);
+}
+
+__forceinline
+void
+WriteUInt32Release (
+ UINT32 volatile *Destination,
+ UINT32 Value
+ )
+
+{
+
+ WriteRelease((PLONG)Destination, (LONG)Value);
+ return;
+}
+
+__forceinline
+void
+WriteUInt32NoFence (
+ UINT32 volatile *Destination,
+ UINT32 Value
+ )
+
+{
+
+ WriteNoFence((PLONG)Destination, (LONG)Value);
+ return;
+}
+
+__forceinline
+void
+WriteUInt32Raw (
+ UINT32 volatile *Destination,
+ UINT32 Value
+ )
+
+{
+
+ WriteRaw((PLONG)Destination, (LONG)Value);
+ return;
+}
+
+__forceinline
+ULONG64
+ReadULong64Acquire (
+ ULONG64 const volatile *Source
+ )
+
+{
+
+ return (ULONG64)ReadAcquire64((PLONG64)Source);
+}
+
+__forceinline
+ULONG64
+ReadULong64NoFence (
+ ULONG64 const volatile *Source
+ )
+
+{
+
+ return (ULONG64)ReadNoFence64((PLONG64)Source);
+}
+
+__forceinline
+ULONG64
+ReadULong64Raw (
+ ULONG64 const volatile *Source
+ )
+
+{
+
+ return (ULONG64)ReadRaw64((PLONG64)Source);
+}
+
+__forceinline
+void
+WriteULong64Release (
+ ULONG64 volatile *Destination,
+ ULONG64 Value
+ )
+
+{
+
+ WriteRelease64((PLONG64)Destination, (LONG64)Value);
+ return;
+}
+
+__forceinline
+void
+WriteULong64NoFence (
+ ULONG64 volatile *Destination,
+ ULONG64 Value
+ )
+
+{
+
+ WriteNoFence64((PLONG64)Destination, (LONG64)Value);
+ return;
+}
+
+__forceinline
+void
+WriteULong64Raw (
+ ULONG64 volatile *Destination,
+ ULONG64 Value
+ )
+
+{
+
+ WriteRaw64((PLONG64)Destination, (LONG64)Value);
+ return;
+}
+
+__forceinline
+LONG64
+AddRaw64 (
+ LONG64 volatile *Destination,
+ LONG64 Value
+ )
+
+{
+ LONG64 NewValue;
+
+ NewValue = ReadRaw64(Destination);
+ NewValue += Value;
+ WriteRaw64(Destination, NewValue);
+
+ return NewValue;
+}
+
+__forceinline
+ULONG64
+AddULong64Raw (
+ ULONG64 volatile *Destination,
+ ULONG64 Value
+ )
+
+{
+ return (ULONG64)AddRaw64((PLONG64)Destination, (LONG64)Value);
+}
+
+__forceinline
+LONG64
+IncrementRaw64 (
+ LONG64 volatile *Destination
+ )
+
+{
+ return AddRaw64(Destination, 1);
+}
+
+__forceinline
+ULONG64
+IncrementULong64Raw (
+ ULONG64 volatile *Destination
+ )
+
+{
+ return (ULONG64)IncrementRaw64((PLONG64)Destination);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 5826 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+__forceinline
+PVOID
+ReadPointerAcquire (
+ PVOID const volatile *Source
+ )
+
+{
+
+ return (PVOID)ReadAcquire64((PLONG64)Source);
+}
+
+__forceinline
+PVOID
+ReadPointerNoFence (
+ PVOID const volatile *Source
+ )
+
+{
+
+ return (PVOID)ReadNoFence64((PLONG64)Source);
+}
+
+__forceinline
+PVOID
+ReadPointerRaw (
+ PVOID const volatile *Source
+ )
+
+{
+
+ return (PVOID)ReadRaw64((PLONG64)Source);
+}
+
+__forceinline
+void
+WritePointerRelease (
+ PVOID volatile *Destination,
+ PVOID Value
+ )
+
+{
+
+ WriteRelease64((PLONG64)Destination, (LONG64)Value);
+ return;
+}
+
+__forceinline
+void
+WritePointerNoFence (
+ PVOID volatile *Destination,
+ PVOID Value
+ )
+
+{
+
+ WriteNoFence64((PLONG64)Destination, (LONG64)Value);
+ return;
+}
+
+__forceinline
+void
+WritePointerRaw (
+ PVOID volatile *Destination,
+ PVOID Value
+ )
+
+{
+
+ WriteRaw64((PLONG64)Destination, (LONG64)Value);
+ return;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 5924 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 5926 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 5951 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+void
+__int2c (
+ void
+ );
+
+#pragma intrinsic(__int2c)
+
+
+
+
+
+#line 5968 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 5970 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 6087 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+#line 6088 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 6101 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+#line 6108 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 6110 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 6112 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 6156 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 6170 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 6189 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 6191 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+typedef PVOID PACCESS_TOKEN;
+
+
+
+
+
+typedef PVOID PSECURITY_DESCRIPTOR;
+
+
+
+
+
+typedef PVOID PSID;
+
+
+
+
+
+typedef PVOID PCLAIMS_BLOB;
+
+
+typedef ULONG ACCESS_MASK;
+typedef ACCESS_MASK *PACCESS_MASK;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _GENERIC_MAPPING {
+ ACCESS_MASK GenericRead;
+ ACCESS_MASK GenericWrite;
+ ACCESS_MASK GenericExecute;
+ ACCESS_MASK GenericAll;
+} GENERIC_MAPPING;
+typedef GENERIC_MAPPING *PGENERIC_MAPPING;
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack4.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(disable:4103)
+
+#pragma pack(push,4)
+
+
+#line 30 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack4.h"
+
+
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack4.h"
+#line 34 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack4.h"
+#pragma external_header(pop)
+#line 6291 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef struct _LUID_AND_ATTRIBUTES {
+ LUID Luid;
+ ULONG Attributes;
+ } LUID_AND_ATTRIBUTES, * PLUID_AND_ATTRIBUTES;
+typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[1];
+typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY;
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(disable:4103)
+
+#pragma pack(pop)
+
+
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+
+
+#line 36 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+#line 37 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+#pragma external_header(pop)
+#line 6300 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _ACL {
+ UCHAR AclRevision;
+ UCHAR Sbz1;
+ USHORT AclSize;
+ USHORT AceCount;
+ USHORT Sbz2;
+} ACL;
+typedef ACL *PACL;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _PRIVILEGE_SET {
+ ULONG PrivilegeCount;
+ ULONG Control;
+ LUID_AND_ATTRIBUTES Privilege[1];
+ } PRIVILEGE_SET, * PPRIVILEGE_SET;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _SECURITY_IMPERSONATION_LEVEL {
+ SecurityAnonymous,
+ SecurityIdentification,
+ SecurityImpersonation,
+ SecurityDelegation
+ } SECURITY_IMPERSONATION_LEVEL, * PSECURITY_IMPERSONATION_LEVEL;
+
+
+
+
+
+
+
+
+
+
+
+
+typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,
+ * PSECURITY_CONTEXT_TRACKING_MODE;
+
+
+
+
+
+
+
+typedef struct _SECURITY_QUALITY_OF_SERVICE {
+ ULONG Length;
+ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+ SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
+ BOOLEAN EffectiveOnly;
+ } SECURITY_QUALITY_OF_SERVICE, * PSECURITY_QUALITY_OF_SERVICE;
+
+
+
+
+
+
+typedef struct _SE_IMPERSONATION_STATE {
+ PACCESS_TOKEN Token;
+ BOOLEAN CopyOnOpen;
+ BOOLEAN EffectiveOnly;
+ SECURITY_IMPERSONATION_LEVEL Level;
+} SE_IMPERSONATION_STATE, *PSE_IMPERSONATION_STATE;
+
+
+typedef ULONG SECURITY_INFORMATION, *PSECURITY_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _SE_ADT_PARAMETER_TYPE {
+
+ SeAdtParmTypeNone = 0,
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeString,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeFileSpec,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeUlong,
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeSid,
+
+
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeLogonId,
+
+
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeNoLogonId,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeAccessMask,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypePrivs,
+
+
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeObjectTypes,
+
+
+
+
+
+
+ SeAdtParmTypeHexUlong,
+
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypePtr,
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeTime,
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeGuid,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeLuid,
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeHexInt64,
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeStringList,
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeSidList,
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeDuration,
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeUserAccountControl,
+
+
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeNoUac,
+
+
+
+
+
+
+
+
+ SeAdtParmTypeMessage,
+
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeDateTime,
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeSockAddr,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeSD,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeLogonHours,
+
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeLogonIdNoSid,
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeUlongNoConv,
+
+
+
+
+
+
+
+ SeAdtParmTypeSockAddrNoPort,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeAccessReason,
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeStagingReason,
+
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeResourceAttribute,
+
+
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeClaims,
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeLogonIdAsSid,
+
+
+
+
+
+
+
+
+
+
+
+ SeAdtParmTypeMultiSzString,
+
+
+
+
+
+
+
+
+ SeAdtParmTypeLogonIdEx,
+
+
+
+
+
+
+
+
+
+
+
+} SE_ADT_PARAMETER_TYPE, *PSE_ADT_PARAMETER_TYPE;
+
+
+
+
+
+typedef struct _SE_ADT_OBJECT_TYPE {
+ GUID ObjectType;
+ USHORT Flags;
+
+ USHORT Level;
+ ACCESS_MASK AccessMask;
+} SE_ADT_OBJECT_TYPE, *PSE_ADT_OBJECT_TYPE;
+
+typedef struct _SE_ADT_PARAMETER_ARRAY_ENTRY {
+
+ SE_ADT_PARAMETER_TYPE Type;
+ ULONG Length;
+ ULONG_PTR Data[2];
+ PVOID Address;
+
+} SE_ADT_PARAMETER_ARRAY_ENTRY, *PSE_ADT_PARAMETER_ARRAY_ENTRY;
+
+
+typedef struct _SE_ADT_ACCESS_REASON{
+ ACCESS_MASK AccessMask;
+ ULONG AccessReasons[32];
+ ULONG ObjectTypeIndex;
+ ULONG AccessGranted;
+ PSECURITY_DESCRIPTOR SecurityDescriptor;
+} SE_ADT_ACCESS_REASON, *PSE_ADT_ACCESS_REASON;
+
+typedef struct _SE_ADT_CLAIMS {
+
+ ULONG Length;
+ PCLAIMS_BLOB Claims;
+
+} SE_ADT_CLAIMS, *PSE_ADT_CLAIMS;
+
+
+
+
+
+
+
+
+
+typedef struct _SE_ADT_PARAMETER_ARRAY {
+
+ ULONG CategoryId;
+ ULONG AuditId;
+ ULONG ParameterCount;
+ ULONG Length;
+ USHORT FlatSubCategoryId;
+ USHORT Type;
+ ULONG Flags;
+ SE_ADT_PARAMETER_ARRAY_ENTRY Parameters[ 32 ];
+
+} SE_ADT_PARAMETER_ARRAY, *PSE_ADT_PARAMETER_ARRAY;
+
+typedef struct _SE_ADT_PARAMETER_ARRAY_EX {
+
+ ULONG CategoryId;
+ ULONG AuditId;
+ ULONG Version;
+ ULONG ParameterCount;
+ ULONG Length;
+ USHORT FlatSubCategoryId;
+ USHORT Type;
+ ULONG Flags;
+ SE_ADT_PARAMETER_ARRAY_ENTRY Parameters[ 32 ];
+
+} SE_ADT_PARAMETER_ARRAY_EX, *PSE_ADT_PARAMETER_ARRAY_EX;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7078 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+#line 7081 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7348 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 7360 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+#line 7366 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7401 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7415 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+#line 7425 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+#line 7432 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+#line 7437 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+#line 7442 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+#line 7453 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7495 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+#line 7498 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7519 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _EXTENDED_CREATE_DUAL_OPLOCK_KEYS {
+
+
+
+
+
+
+ GUID ParentOplockKey;
+
+
+
+
+
+
+ GUID TargetOplockKey;
+
+} EXTENDED_CREATE_DUAL_OPLOCK_KEYS, *PEXTENDED_CREATE_DUAL_OPLOCK_KEYS;
+
+#line 7571 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+typedef struct _EXTENDED_CREATE_INFORMATION {
+ LONGLONG ExtendedCreateFlags;
+ PVOID EaBuffer;
+ ULONG EaLength;
+
+ PEXTENDED_CREATE_DUAL_OPLOCK_KEYS DualOplockKeys;
+#line 7583 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+} EXTENDED_CREATE_INFORMATION, *PEXTENDED_CREATE_INFORMATION;
+
+
+
+
+typedef struct _EXTENDED_CREATE_INFORMATION_32 {
+ LONGLONG ExtendedCreateFlags;
+ void* __ptr32 EaBuffer;
+ ULONG EaLength;
+
+ PEXTENDED_CREATE_DUAL_OPLOCK_KEYS __ptr32 DualOplockKeys;
+#line 7595 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+} EXTENDED_CREATE_INFORMATION_32, *PEXTENDED_CREATE_INFORMATION_32;
+
+
+
+
+
+
+
+
+#line 7605 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7627 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+#line 7630 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _IO_STATUS_BLOCK {
+ union {
+ NTSTATUS Status;
+ PVOID Pointer;
+ };
+
+ ULONG_PTR Information;
+} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
+
+
+
+
+
+
+
+
+typedef IO_STATUS_BLOCK IO_STATUS_BLOCK64;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7733 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef IO_STATUS_BLOCK64 *PIO_STATUS_BLOCK64;
+
+
+
+typedef struct _IO_STATUS_BLOCK32 {
+ NTSTATUS Status;
+ ULONG Information;
+} IO_STATUS_BLOCK32, *PIO_STATUS_BLOCK32;
+
+
+
+
+
+
+
+typedef
+void
+(__stdcall *PIO_APC_ROUTINE) (
+ PVOID ApcContext,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ ULONG Reserved
+ );
+
+
+
+
+
+
+
+
+typedef enum _IO_SESSION_EVENT {
+ IoSessionEventIgnore = 0,
+ IoSessionEventCreated,
+ IoSessionEventTerminated,
+ IoSessionEventConnected,
+ IoSessionEventDisconnected,
+ IoSessionEventLogon,
+ IoSessionEventLogoff,
+ IoSessionEventMax
+} IO_SESSION_EVENT, *PIO_SESSION_EVENT;
+
+typedef enum _IO_SESSION_STATE {
+ IoSessionStateCreated = 1,
+ IoSessionStateInitialized,
+ IoSessionStateConnected,
+ IoSessionStateDisconnected,
+ IoSessionStateDisconnectedLoggedOn,
+ IoSessionStateLoggedOn,
+ IoSessionStateLoggedOff,
+ IoSessionStateTerminated,
+ IoSessionStateMax
+} IO_SESSION_STATE, *PIO_SESSION_STATE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _IO_SESSION_CONNECT_INFO {
+ ULONG SessionId;
+ BOOLEAN LocalSession;
+} IO_SESSION_CONNECT_INFO, *PIO_SESSION_CONNECT_INFO;
+
+
+
+
+
+
+
+
+
+
+typedef enum _FILE_INFORMATION_CLASS {
+ FileDirectoryInformation = 1,
+ FileFullDirectoryInformation,
+ FileBothDirectoryInformation,
+ FileBasicInformation,
+ FileStandardInformation,
+ FileInternalInformation,
+ FileEaInformation,
+ FileAccessInformation,
+ FileNameInformation,
+ FileRenameInformation,
+ FileLinkInformation,
+ FileNamesInformation,
+ FileDispositionInformation,
+ FilePositionInformation,
+ FileFullEaInformation,
+ FileModeInformation,
+ FileAlignmentInformation,
+ FileAllInformation,
+ FileAllocationInformation,
+ FileEndOfFileInformation,
+ FileAlternateNameInformation,
+ FileStreamInformation,
+ FilePipeInformation,
+ FilePipeLocalInformation,
+ FilePipeRemoteInformation,
+ FileMailslotQueryInformation,
+ FileMailslotSetInformation,
+ FileCompressionInformation,
+ FileObjectIdInformation,
+ FileCompletionInformation,
+ FileMoveClusterInformation,
+ FileQuotaInformation,
+ FileReparsePointInformation,
+ FileNetworkOpenInformation,
+ FileAttributeTagInformation,
+ FileTrackingInformation,
+ FileIdBothDirectoryInformation,
+ FileIdFullDirectoryInformation,
+ FileValidDataLengthInformation,
+ FileShortNameInformation,
+ FileIoCompletionNotificationInformation,
+ FileIoStatusBlockRangeInformation,
+ FileIoPriorityHintInformation,
+ FileSfioReserveInformation,
+ FileSfioVolumeInformation,
+ FileHardLinkInformation,
+ FileProcessIdsUsingFileInformation,
+ FileNormalizedNameInformation,
+ FileNetworkPhysicalNameInformation,
+ FileIdGlobalTxDirectoryInformation,
+ FileIsRemoteDeviceInformation,
+ FileUnusedInformation,
+ FileNumaNodeInformation,
+ FileStandardLinkInformation,
+ FileRemoteProtocolInformation,
+
+
+
+
+
+
+
+
+
+ FileRenameInformationBypassAccessCheck,
+ FileLinkInformationBypassAccessCheck,
+
+
+
+
+
+ FileVolumeNameInformation,
+ FileIdInformation,
+ FileIdExtdDirectoryInformation,
+ FileReplaceCompletionInformation,
+ FileHardLinkFullIdInformation,
+ FileIdExtdBothDirectoryInformation,
+ FileDispositionInformationEx,
+ FileRenameInformationEx,
+ FileRenameInformationExBypassAccessCheck,
+ FileDesiredStorageClassInformation,
+ FileStatInformation,
+ FileMemoryPartitionInformation,
+ FileStatLxInformation,
+ FileCaseSensitiveInformation,
+ FileLinkInformationEx,
+ FileLinkInformationExBypassAccessCheck,
+ FileStorageReserveIdInformation,
+ FileCaseSensitiveInformationForceAccessCheck,
+ FileKnownFolderInformation,
+ FileStatBasicInformation,
+ FileId64ExtdDirectoryInformation,
+ FileId64ExtdBothDirectoryInformation,
+ FileIdAllExtdDirectoryInformation,
+ FileIdAllExtdBothDirectoryInformation,
+ FileStreamReservationInformation,
+
+
+
+
+
+
+
+
+ FileMupProviderInfo,
+
+
+
+
+
+ FileMaximumInformation
+} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
+
+typedef enum _DIRECTORY_NOTIFY_INFORMATION_CLASS {
+ DirectoryNotifyInformation = 1,
+ DirectoryNotifyExtendedInformation,
+
+ DirectoryNotifyFullInformation,
+#line 7943 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ DirectoryNotifyMaximumInformation
+} DIRECTORY_NOTIFY_INFORMATION_CLASS, *PDIRECTORY_NOTIFY_INFORMATION_CLASS;
+
+
+
+
+
+
+
+
+typedef struct _FILE_BASIC_INFORMATION {
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ ULONG FileAttributes;
+} FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
+
+
+
+typedef struct _FILE_STANDARD_INFORMATION {
+ LARGE_INTEGER AllocationSize;
+ LARGE_INTEGER EndOfFile;
+ ULONG NumberOfLinks;
+ BOOLEAN DeletePending;
+ BOOLEAN Directory;
+} FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
+
+
+typedef struct _FILE_STANDARD_INFORMATION_EX {
+ LARGE_INTEGER AllocationSize;
+ LARGE_INTEGER EndOfFile;
+ ULONG NumberOfLinks;
+ BOOLEAN DeletePending;
+ BOOLEAN Directory;
+ BOOLEAN AlternateStream;
+ BOOLEAN MetadataAttribute;
+} FILE_STANDARD_INFORMATION_EX, *PFILE_STANDARD_INFORMATION_EX;
+#line 7983 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+typedef struct _FILE_POSITION_INFORMATION {
+ LARGE_INTEGER CurrentByteOffset;
+} FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
+
+
+
+
+typedef struct _FILE_NETWORK_OPEN_INFORMATION {
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER AllocationSize;
+ LARGE_INTEGER EndOfFile;
+ ULONG FileAttributes;
+} FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
+
+
+typedef struct _FILE_FULL_EA_INFORMATION {
+ ULONG NextEntryOffset;
+ UCHAR Flags;
+ UCHAR EaNameLength;
+ USHORT EaValueLength;
+ CHAR EaName[1];
+} FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
+
+
+
+
+
+
+typedef struct _FILE_SFIO_RESERVE_INFORMATION {
+ ULONG RequestsPerPeriod;
+ ULONG Period;
+ BOOLEAN RetryFailures;
+ BOOLEAN Discardable;
+ ULONG RequestSize;
+ ULONG NumOutstandingRequests;
+} FILE_SFIO_RESERVE_INFORMATION, *PFILE_SFIO_RESERVE_INFORMATION;
+
+
+
+
+
+typedef struct _FILE_SFIO_VOLUME_INFORMATION {
+ ULONG MaximumRequestsPerPeriod;
+ ULONG MinimumPeriod;
+ ULONG MinimumTransferSize;
+} FILE_SFIO_VOLUME_INFORMATION, *PFILE_SFIO_VOLUME_INFORMATION;
+
+
+
+
+
+typedef enum _IO_PRIORITY_HINT {
+ IoPriorityVeryLow = 0,
+ IoPriorityLow,
+ IoPriorityNormal,
+ IoPriorityHigh,
+ IoPriorityCritical,
+ MaxIoPriorityTypes
+} IO_PRIORITY_HINT;
+
+typedef struct _FILE_IO_PRIORITY_HINT_INFORMATION {
+ IO_PRIORITY_HINT PriorityHint;
+} FILE_IO_PRIORITY_HINT_INFORMATION, *PFILE_IO_PRIORITY_HINT_INFORMATION;
+
+typedef struct _FILE_IO_PRIORITY_HINT_INFORMATION_EX {
+ IO_PRIORITY_HINT PriorityHint;
+ BOOLEAN BoostOutstanding;
+} FILE_IO_PRIORITY_HINT_INFORMATION_EX, *PFILE_IO_PRIORITY_HINT_INFORMATION_EX;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_IO_COMPLETION_NOTIFICATION_INFORMATION {
+ ULONG Flags;
+} FILE_IO_COMPLETION_NOTIFICATION_INFORMATION, *PFILE_IO_COMPLETION_NOTIFICATION_INFORMATION;
+
+typedef struct _FILE_PROCESS_IDS_USING_FILE_INFORMATION {
+ ULONG NumberOfProcessIdsInList;
+ ULONG_PTR ProcessIdList[1];
+} FILE_PROCESS_IDS_USING_FILE_INFORMATION, *PFILE_PROCESS_IDS_USING_FILE_INFORMATION;
+
+typedef struct _FILE_IS_REMOTE_DEVICE_INFORMATION {
+ BOOLEAN IsRemote;
+} FILE_IS_REMOTE_DEVICE_INFORMATION, *PFILE_IS_REMOTE_DEVICE_INFORMATION;
+
+typedef struct _FILE_NUMA_NODE_INFORMATION {
+ USHORT NodeNumber;
+} FILE_NUMA_NODE_INFORMATION, *PFILE_NUMA_NODE_INFORMATION;
+
+
+
+
+
+typedef struct _FILE_IOSTATUSBLOCK_RANGE_INFORMATION {
+ PUCHAR IoStatusBlockRange;
+ ULONG Length;
+} FILE_IOSTATUSBLOCK_RANGE_INFORMATION, *PFILE_IOSTATUSBLOCK_RANGE_INFORMATION;
+
+
+
+typedef struct _FILE_MEMORY_PARTITION_INFORMATION {
+ ULONG_PTR OwnerPartitionHandle;
+ union {
+ struct {
+ UCHAR NoCrossPartitionAccess;
+ UCHAR Spare[3];
+ } ;
+
+ ULONG AllFlags;
+ } Flags;
+} FILE_MEMORY_PARTITION_INFORMATION, *PFILE_MEMORY_PARTITION_INFORMATION;
+
+#line 8116 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+typedef enum _FSINFOCLASS {
+ FileFsVolumeInformation = 1,
+ FileFsLabelInformation,
+ FileFsSizeInformation,
+ FileFsDeviceInformation,
+ FileFsAttributeInformation,
+ FileFsControlInformation,
+ FileFsFullSizeInformation,
+ FileFsObjectIdInformation,
+ FileFsDriverPathInformation,
+ FileFsVolumeFlagsInformation,
+ FileFsSectorSizeInformation,
+ FileFsDataCopyInformation,
+ FileFsMetadataSizeInformation,
+ FileFsFullSizeInformationEx,
+ FileFsGuidInformation,
+ FileFsMaximumInformation
+} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
+
+
+typedef struct _FILE_FS_DEVICE_INFORMATION {
+ ULONG DeviceType;
+ ULONG Characteristics;
+} FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION;
+
+
+
+
+
+
+typedef union _FILE_SEGMENT_ELEMENT {
+ PVOID64 Buffer;
+ ULONGLONG Alignment;
+}FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8207 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8220 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8233 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+typedef enum _INTERFACE_TYPE {
+ InterfaceTypeUndefined = -1,
+ Internal,
+ Isa,
+ Eisa,
+ MicroChannel,
+ TurboChannel,
+ PCIBus,
+ VMEBus,
+ NuBus,
+ PCMCIABus,
+ CBus,
+ MPIBus,
+ MPSABus,
+ ProcessorInternal,
+ InternalPowerBus,
+ PNPISABus,
+ PNPBus,
+ Vmcs,
+ ACPIBus,
+ MaximumInterfaceType
+}INTERFACE_TYPE, *PINTERFACE_TYPE;
+
+
+
+
+
+
+
+
+typedef enum _DMA_WIDTH {
+ Width8Bits,
+ Width16Bits,
+ Width32Bits,
+ Width64Bits,
+ WidthNoWrap,
+ MaximumDmaWidth
+}DMA_WIDTH, *PDMA_WIDTH;
+
+
+
+
+
+typedef enum _DMA_SPEED {
+ Compatible,
+ TypeA,
+ TypeB,
+ TypeC,
+ TypeF,
+ MaximumDmaSpeed
+}DMA_SPEED, *PDMA_SPEED;
+
+
+
+
+
+
+
+
+typedef void (*PINTERFACE_REFERENCE)(PVOID Context);
+typedef void (*PINTERFACE_DEREFERENCE)(PVOID Context);
+
+
+
+
+
+
+typedef struct _IO_ERROR_LOG_PACKET {
+ UCHAR MajorFunctionCode;
+ UCHAR RetryCount;
+ USHORT DumpDataSize;
+ USHORT NumberOfStrings;
+ USHORT StringOffset;
+ USHORT EventCategory;
+ NTSTATUS ErrorCode;
+ ULONG UniqueErrorValue;
+ NTSTATUS FinalStatus;
+ ULONG SequenceNumber;
+ ULONG IoControlCode;
+ LARGE_INTEGER DeviceOffset;
+ ULONG DumpData[1];
+}IO_ERROR_LOG_PACKET, *PIO_ERROR_LOG_PACKET;
+
+
+
+
+
+
+typedef struct _IO_ERROR_LOG_MESSAGE {
+ USHORT Type;
+ USHORT Size;
+ USHORT DriverNameLength;
+ LARGE_INTEGER TimeStamp;
+ ULONG DriverNameOffset;
+ IO_ERROR_LOG_PACKET EntryData;
+}IO_ERROR_LOG_MESSAGE, *PIO_ERROR_LOG_MESSAGE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8384 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _KEY_BASIC_INFORMATION {
+ LARGE_INTEGER LastWriteTime;
+ ULONG TitleIndex;
+ ULONG NameLength;
+ WCHAR Name[1];
+} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
+
+typedef struct _KEY_NODE_INFORMATION {
+ LARGE_INTEGER LastWriteTime;
+ ULONG TitleIndex;
+ ULONG ClassOffset;
+ ULONG ClassLength;
+ ULONG NameLength;
+ WCHAR Name[1];
+
+} KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
+
+typedef struct _KEY_FULL_INFORMATION {
+ LARGE_INTEGER LastWriteTime;
+ ULONG TitleIndex;
+ ULONG ClassOffset;
+ ULONG ClassLength;
+ ULONG SubKeys;
+ ULONG MaxNameLen;
+ ULONG MaxClassLen;
+ ULONG Values;
+ ULONG MaxValueNameLen;
+ ULONG MaxValueDataLen;
+ WCHAR Class[1];
+} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
+
+typedef enum _KEY_INFORMATION_CLASS {
+ KeyBasicInformation,
+ KeyNodeInformation,
+ KeyFullInformation,
+ KeyNameInformation,
+ KeyCachedInformation,
+ KeyFlagsInformation,
+ KeyVirtualizationInformation,
+ KeyHandleTagsInformation,
+ KeyTrustInformation,
+ KeyLayerInformation,
+ MaxKeyInfoClass
+} KEY_INFORMATION_CLASS;
+
+typedef struct _KEY_WRITE_TIME_INFORMATION {
+ LARGE_INTEGER LastWriteTime;
+} KEY_WRITE_TIME_INFORMATION, *PKEY_WRITE_TIME_INFORMATION;
+
+typedef struct _KEY_WOW64_FLAGS_INFORMATION {
+ ULONG UserFlags;
+} KEY_WOW64_FLAGS_INFORMATION, *PKEY_WOW64_FLAGS_INFORMATION;
+
+typedef struct _KEY_CONTROL_FLAGS_INFORMATION {
+ ULONG ControlFlags;
+} KEY_CONTROL_FLAGS_INFORMATION, *PKEY_CONTROL_FLAGS_INFORMATION;
+
+typedef struct _KEY_SET_VIRTUALIZATION_INFORMATION {
+ ULONG VirtualTarget : 1;
+ ULONG VirtualStore : 1;
+ ULONG VirtualSource : 1;
+ ULONG Reserved : 29;
+} KEY_SET_VIRTUALIZATION_INFORMATION, *PKEY_SET_VIRTUALIZATION_INFORMATION;
+
+
+typedef enum _KEY_SET_INFORMATION_CLASS {
+ KeyWriteTimeInformation,
+ KeyWow64FlagsInformation,
+ KeyControlFlagsInformation,
+ KeySetVirtualizationInformation,
+ KeySetDebugInformation,
+ KeySetHandleTagsInformation,
+ KeySetLayerInformation,
+ MaxKeySetInfoClass
+} KEY_SET_INFORMATION_CLASS;
+
+
+
+
+
+
+typedef struct _KEY_VALUE_BASIC_INFORMATION {
+ ULONG TitleIndex;
+ ULONG Type;
+ ULONG NameLength;
+ WCHAR Name[1];
+} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
+
+typedef struct _KEY_VALUE_FULL_INFORMATION {
+ ULONG TitleIndex;
+ ULONG Type;
+ ULONG DataOffset;
+ ULONG DataLength;
+ ULONG NameLength;
+ WCHAR Name[1];
+
+} KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
+
+typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
+ ULONG TitleIndex;
+ ULONG Type;
+ ULONG DataLength;
+ UCHAR Data[1];
+} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
+
+typedef struct _KEY_VALUE_PARTIAL_INFORMATION_ALIGN64 {
+ ULONG Type;
+ ULONG DataLength;
+ UCHAR Data[1];
+} KEY_VALUE_PARTIAL_INFORMATION_ALIGN64, *PKEY_VALUE_PARTIAL_INFORMATION_ALIGN64;
+
+typedef struct _KEY_VALUE_LAYER_INFORMATION {
+ ULONG IsTombstone : 1;
+ ULONG Reserved : 31;
+} KEY_VALUE_LAYER_INFORMATION, *PKEY_VALUE_LAYER_INFORMATION;
+
+typedef struct _KEY_VALUE_ENTRY {
+ PUNICODE_STRING ValueName;
+ ULONG DataLength;
+ ULONG DataOffset;
+ ULONG Type;
+} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
+
+typedef enum _KEY_VALUE_INFORMATION_CLASS {
+ KeyValueBasicInformation,
+ KeyValueFullInformation,
+ KeyValuePartialInformation,
+ KeyValueFullInformationAlign64,
+ KeyValuePartialInformationAlign64,
+ KeyValueLayerInformation,
+ MaxKeyValueInfoClass
+} KEY_VALUE_INFORMATION_CLASS;
+
+
+
+typedef struct _KEY_TRUST_INFORMATION {
+ ULONG TrustedKey : 1;
+ ULONG Reserved : 31;
+} KEY_TRUST_INFORMATION, *PKEY_TRUST_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _OBJECT_NAME_INFORMATION {
+ UNICODE_STRING Name;
+} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
+
+
+
+
+
+
+
+
+typedef enum _SECTION_INHERIT {
+ ViewShare = 1,
+ ViewUnmap = 2
+} SECTION_INHERIT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum MEM_EXTENDED_PARAMETER_TYPE {
+ MemExtendedParameterInvalidType = 0,
+ MemExtendedParameterAddressRequirements,
+ MemExtendedParameterNumaNode,
+ MemExtendedParameterPartitionHandle,
+ MemExtendedParameterUserPhysicalHandle,
+ MemExtendedParameterAttributeFlags,
+ MemExtendedParameterImageMachine,
+ MemExtendedParameterMax
+} MEM_EXTENDED_PARAMETER_TYPE, *PMEM_EXTENDED_PARAMETER_TYPE;
+
+
+
+typedef struct __declspec(align(8)) MEM_EXTENDED_PARAMETER {
+
+ struct {
+ ULONG64 Type : 8;
+ ULONG64 Reserved : 64 - 8;
+ } ;
+
+ union {
+ ULONG64 ULong64;
+ PVOID Pointer;
+ SIZE_T Size;
+ HANDLE Handle;
+ ULONG ULong;
+ } ;
+
+} MEM_EXTENDED_PARAMETER, *PMEM_EXTENDED_PARAMETER;
+
+typedef struct _MEM_ADDRESS_REQUIREMENTS {
+ PVOID LowestStartingAddress;
+ PVOID HighestEndingAddress;
+ SIZE_T Alignment;
+} MEM_ADDRESS_REQUIREMENTS, *PMEM_ADDRESS_REQUIREMENTS;
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _MEM_DEDICATED_ATTRIBUTE_TYPE {
+ MemDedicatedAttributeReadBandwidth = 0,
+ MemDedicatedAttributeReadLatency,
+ MemDedicatedAttributeWriteBandwidth,
+ MemDedicatedAttributeWriteLatency,
+ MemDedicatedAttributeMax
+} MEM_DEDICATED_ATTRIBUTE_TYPE, *PMEM_DEDICATED_ATTRIBUTE_TYPE;
+
+
+
+typedef struct _MEMORY_PARTITION_DEDICATED_MEMORY_OPEN_INFORMATION {
+
+
+
+
+
+ ULONG64 DedicatedMemoryTypeId;
+
+
+
+
+
+
+ ULONG HandleAttributes;
+ ACCESS_MASK DesiredAccess;
+
+
+
+
+
+ HANDLE DedicatedMemoryPartitionHandle;
+
+} MEMORY_PARTITION_DEDICATED_MEMORY_OPEN_INFORMATION, *PMEMORY_PARTITION_DEDICATED_MEMORY_OPEN_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+typedef enum MEM_SECTION_EXTENDED_PARAMETER_TYPE {
+ MemSectionExtendedParameterInvalidType = 0,
+ MemSectionExtendedParameterUserPhysicalFlags,
+ MemSectionExtendedParameterNumaNode,
+ MemSectionExtendedParameterSigningLevel,
+ MemSectionExtendedParameterMax
+} MEM_SECTION_EXTENDED_PARAMETER_TYPE, *PMEM_SECTION_EXTENDED_PARAMETER_TYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8956 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8981 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+typedef struct _CLIENT_ID {
+ HANDLE UniqueProcess;
+ HANDLE UniqueThread;
+} CLIENT_ID;
+typedef CLIENT_ID *PCLIENT_ID;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _PARTITION_INFORMATION_CLASS {
+ SystemMemoryPartitionInformation = 0,
+ SystemMemoryPartitionDedicatedMemoryInformation = 9,
+ SystemMemoryPartitionOpenDedicatedMemory = 10,
+} PARTITION_INFORMATION_CLASS, *PPARTITION_INFORMATION_CLASS;
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtManagePartition (
+ HANDLE TargetHandle,
+ HANDLE SourceHandle,
+ PARTITION_INFORMATION_CLASS PartitionInformationClass,
+ PVOID PartitionInformation,
+ ULONG PartitionInformationLength
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_MAX_POWER_SAVINGS;
+
+
+
+
+
+
+extern const GUID GUID_MIN_POWER_SAVINGS;
+
+
+
+
+
+
+extern const GUID GUID_TYPICAL_POWER_SAVINGS;
+
+
+
+
+
+
+
+extern const GUID NO_SUBGROUP_GUID;
+
+
+
+
+
+
+
+extern const GUID ALL_POWERSCHEMES_GUID;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_POWERSCHEME_PERSONALITY;
+
+
+
+
+
+
+
+
+extern const GUID GUID_ACTIVE_POWERSCHEME;
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_POWER_MODE_BEST_EFFICIENCY;
+
+
+
+
+
+
+
+extern const GUID GUID_POWER_MODE_NONE;
+
+
+
+
+
+
+
+extern const GUID GUID_POWER_MODE_PERFORMANCE;
+
+
+
+
+
+
+
+extern const GUID GUID_POWER_MODE_BEST_PERFORMANCE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_IDLE_RESILIENCY_SUBGROUP;
+
+
+
+
+
+
+
+extern const GUID GUID_IDLE_RESILIENCY_PERIOD;
+
+
+
+
+
+extern const GUID GUID_DEEP_SLEEP_ENABLED;
+
+
+
+
+
+
+
+
+extern const GUID GUID_DEEP_SLEEP_PLATFORM_STATE;
+
+
+
+
+
+
+extern const GUID GUID_DISK_COALESCING_POWERDOWN_TIMEOUT;
+
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_EXECUTION_REQUIRED_REQUEST_TIMEOUT;
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_VIDEO_SUBGROUP;
+
+
+
+
+
+
+
+extern const GUID GUID_VIDEO_POWERDOWN_TIMEOUT;
+
+
+
+
+
+
+
+
+extern const GUID GUID_VIDEO_ANNOYANCE_TIMEOUT;
+
+
+
+
+
+
+
+
+extern const GUID GUID_VIDEO_ADAPTIVE_PERCENT_INCREASE;
+
+
+
+
+
+
+
+extern const GUID GUID_VIDEO_DIM_TIMEOUT;
+
+
+
+
+
+
+
+extern const GUID GUID_VIDEO_ADAPTIVE_POWERDOWN;
+
+
+
+
+
+
+extern const GUID GUID_MONITOR_POWER_ON;
+
+
+
+
+
+
+extern const GUID GUID_DEVICE_POWER_POLICY_VIDEO_BRIGHTNESS;
+
+
+
+
+
+
+extern const GUID GUID_DEVICE_POWER_POLICY_VIDEO_DIM_BRIGHTNESS;
+
+
+
+
+
+
+extern const GUID GUID_VIDEO_CURRENT_MONITOR_BRIGHTNESS;
+
+
+
+
+
+
+
+extern const GUID GUID_VIDEO_ADAPTIVE_DISPLAY_BRIGHTNESS;
+
+
+
+
+
+
+extern const GUID GUID_CONSOLE_DISPLAY_STATE;
+
+
+
+
+
+
+
+extern const GUID GUID_ALLOW_DISPLAY_REQUIRED;
+
+
+
+
+
+
+
+
+extern const GUID GUID_VIDEO_CONSOLE_LOCK_TIMEOUT;
+
+
+
+
+
+
+
+
+extern const GUID GUID_ADVANCED_COLOR_QUALITY_BIAS;
+
+
+
+
+
+
+extern const GUID GUID_ADAPTIVE_POWER_BEHAVIOR_SUBGROUP;
+
+
+
+
+
+
+extern const GUID GUID_NON_ADAPTIVE_INPUT_TIMEOUT;
+
+
+
+
+
+
+extern const GUID GUID_ADAPTIVE_INPUT_CONTROLLER_STATE;
+
+
+
+
+
+
+
+extern const GUID GUID_DISK_SUBGROUP;
+
+
+
+
+extern const GUID GUID_DISK_MAX_POWER;
+
+
+
+
+
+extern const GUID GUID_DISK_POWERDOWN_TIMEOUT;
+
+
+
+
+
+
+extern const GUID GUID_DISK_IDLE_TIMEOUT;
+
+
+
+
+
+
+
+
+extern const GUID GUID_DISK_BURST_IGNORE_THRESHOLD;
+
+
+
+
+
+extern const GUID GUID_DISK_ADAPTIVE_POWERDOWN;
+
+
+
+
+extern const GUID GUID_DISK_NVME_NOPPME;
+
+
+
+
+
+
+
+
+extern const GUID GUID_SLEEP_SUBGROUP;
+
+
+
+
+
+
+
+extern const GUID GUID_SLEEP_IDLE_THRESHOLD;
+
+
+
+
+
+extern const GUID GUID_STANDBY_TIMEOUT;
+
+
+
+
+
+
+
+
+extern const GUID GUID_UNATTEND_SLEEP_TIMEOUT;
+
+
+
+
+
+extern const GUID GUID_HIBERNATE_TIMEOUT;
+
+
+
+
+
+extern const GUID GUID_HIBERNATE_FASTS4_POLICY;
+
+
+
+
+
+
+
+
+extern const GUID GUID_CRITICAL_POWER_TRANSITION;
+
+
+
+
+
+extern const GUID GUID_SYSTEM_AWAYMODE;
+
+
+
+
+
+
+extern const GUID GUID_ALLOW_AWAYMODE;
+
+
+
+
+
+
+extern const GUID GUID_USER_PRESENCE_PREDICTION;
+
+
+
+
+
+
+extern const GUID GUID_STANDBY_BUDGET_GRACE_PERIOD;
+
+
+
+
+
+
+extern const GUID GUID_STANDBY_BUDGET_PERCENT;
+
+
+
+
+
+
+extern const GUID GUID_STANDBY_BUDGET_REFRESH_COUNT;
+
+
+
+
+
+
+extern const GUID GUID_STANDBY_BUDGET_REFRESH_INTERVAL;
+
+
+
+
+
+
+
+extern const GUID GUID_STANDBY_RESERVE_GRACE_PERIOD;
+
+
+
+
+
+
+extern const GUID GUID_STANDBY_RESERVE_TIME;
+
+
+
+
+
+
+extern const GUID GUID_STANDBY_RESET_PERCENT;
+
+
+
+
+
+
+extern const GUID GUID_HUPR_ADAPTIVE_AWAY_DISPLAY_TIMEOUT;
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_HUPR_ADAPTIVE_INATTENTIVE_DIM_TIMEOUT;
+
+
+
+
+
+
+
+
+extern const GUID GUID_HUPR_ADAPTIVE_INATTENTIVE_DISPLAY_TIMEOUT;
+
+
+
+
+
+
+
+extern const GUID GUID_HUPR_ADAPTIVE_AWAY_DIM_TIMEOUT;
+
+
+
+
+
+
+
+extern const GUID GUID_ALLOW_STANDBY_STATES;
+
+
+
+
+
+
+extern const GUID GUID_ALLOW_RTC_WAKE;
+
+
+
+
+
+
+extern const GUID GUID_LEGACY_RTC_MITIGATION;
+
+
+
+
+
+
+
+extern const GUID GUID_ALLOW_SYSTEM_REQUIRED;
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_POWER_SAVING_STATUS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_ENERGY_SAVER_STATUS;
+
+
+
+
+
+
+
+extern const GUID GUID_ENERGY_SAVER_SUBGROUP;
+
+
+
+
+
+
+extern const GUID GUID_ENERGY_SAVER_BATTERY_THRESHOLD;
+
+
+
+
+
+
+extern const GUID GUID_ENERGY_SAVER_BRIGHTNESS;
+
+
+
+
+
+
+extern const GUID GUID_ENERGY_SAVER_POLICY;
+
+
+
+
+
+
+
+
+extern const GUID GUID_SYSTEM_BUTTON_SUBGROUP;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_POWERBUTTON_ACTION;
+
+
+
+
+
+extern const GUID GUID_SLEEPBUTTON_ACTION;
+
+
+
+
+
+
+extern const GUID GUID_USERINTERFACEBUTTON_ACTION;
+
+
+
+
+
+extern const GUID GUID_LIDCLOSE_ACTION;
+extern const GUID GUID_LIDOPEN_POWERSTATE;
+
+
+
+
+
+
+
+
+extern const GUID GUID_BATTERY_SUBGROUP;
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_BATTERY_DISCHARGE_ACTION_0;
+extern const GUID GUID_BATTERY_DISCHARGE_LEVEL_0;
+extern const GUID GUID_BATTERY_DISCHARGE_FLAGS_0;
+
+extern const GUID GUID_BATTERY_DISCHARGE_ACTION_1;
+extern const GUID GUID_BATTERY_DISCHARGE_LEVEL_1;
+extern const GUID GUID_BATTERY_DISCHARGE_FLAGS_1;
+
+extern const GUID GUID_BATTERY_DISCHARGE_ACTION_2;
+extern const GUID GUID_BATTERY_DISCHARGE_LEVEL_2;
+extern const GUID GUID_BATTERY_DISCHARGE_FLAGS_2;
+
+extern const GUID GUID_BATTERY_DISCHARGE_ACTION_3;
+extern const GUID GUID_BATTERY_DISCHARGE_LEVEL_3;
+extern const GUID GUID_BATTERY_DISCHARGE_FLAGS_3;
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_SETTINGS_SUBGROUP;
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_THROTTLE_POLICY;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_THROTTLE_MAXIMUM;
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_THROTTLE_MAXIMUM_1;
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_THROTTLE_MINIMUM;
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_THROTTLE_MINIMUM_1;
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_FREQUENCY_LIMIT;
+#line 9809 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+extern const GUID GUID_PROCESSOR_FREQUENCY_LIMIT_1;
+#line 9813 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_ALLOW_THROTTLING;
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_IDLESTATE_POLICY;
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERFSTATE_POLICY;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_INCREASE_THRESHOLD;
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_INCREASE_THRESHOLD_1;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_DECREASE_THRESHOLD;
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_DECREASE_THRESHOLD_1;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_INCREASE_POLICY;
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_INCREASE_POLICY_1;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_DECREASE_POLICY;
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_DECREASE_POLICY_1;
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_INCREASE_TIME;
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_INCREASE_TIME_1;
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_DECREASE_TIME;
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_DECREASE_TIME_1;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_TIME_CHECK;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_BOOST_POLICY;
+#line 9958 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_BOOST_MODE;
+#line 9970 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_AUTONOMOUS_MODE;
+#line 9988 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_ENERGY_PERFORMANCE_PREFERENCE;
+#line 9999 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_ENERGY_PERFORMANCE_PREFERENCE_1;
+#line 10007 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_AUTONOMOUS_ACTIVITY_WINDOW;
+#line 10018 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_DUTY_CYCLING;
+#line 10028 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_IDLE_ALLOW_SCALING;
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_IDLE_DISABLE;
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_IDLE_STATE_MAXIMUM;
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_IDLE_TIME_CHECK;
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_IDLE_DEMOTE_THRESHOLD;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_IDLE_PROMOTE_THRESHOLD;
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_CORE_PARKING_INCREASE_THRESHOLD;
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_CORE_PARKING_DECREASE_THRESHOLD;
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_CORE_PARKING_INCREASE_POLICY;
+
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_CORE_PARKING_DECREASE_POLICY;
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_CORE_PARKING_MAX_CORES;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_CORE_PARKING_MAX_CORES_1;
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_CORE_PARKING_MIN_CORES;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_CORE_PARKING_MIN_CORES_1;
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_CORE_PARKING_INCREASE_TIME;
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_CORE_PARKING_DECREASE_TIME;
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_CORE_PARKING_AFFINITY_HISTORY_DECREASE_FACTOR;
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_CORE_PARKING_AFFINITY_HISTORY_THRESHOLD;
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_CORE_PARKING_AFFINITY_WEIGHTING;
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_HISTORY_DECREASE_FACTOR;
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_HISTORY_THRESHOLD;
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_WEIGHTING;
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_THRESHOLD;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PARKING_CORE_OVERRIDE;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PARKING_PERF_STATE;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PARKING_PERF_STATE_1;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PARKING_CONCURRENCY_THRESHOLD;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PARKING_HEADROOM_THRESHOLD;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PARKING_DISTRIBUTION_THRESHOLD;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_SOFT_PARKING_LATENCY;
+#line 10269 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_HISTORY;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_HISTORY_1;
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_INCREASE_HISTORY;
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_DECREASE_HISTORY;
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_CORE_PARKING_HISTORY;
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_LATENCY_HINT;
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_LATENCY_HINT_PERF;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_LATENCY_HINT_PERF_1;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_LATENCY_HINT_EPP;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_PERF_LATENCY_HINT_EPP_1;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_LATENCY_HINT_MIN_UNPARK;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_LATENCY_HINT_MIN_UNPARK_1;
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_MODULE_PARKING_POLICY;
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_COMPLEX_PARKING_POLICY;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_SMT_UNPARKING_POLICY;
+
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_RESTRICTION_COUNT;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_DISTRIBUTE_UTILITY;
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_RESOURCE_PRIORITY;
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_RESOURCE_PRIORITY_1;
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_HETEROGENEOUS_POLICY;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_HETERO_DECREASE_TIME;
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_HETERO_INCREASE_TIME;
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_HETERO_CONTAINMENT_DECREASE_TIME;
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_HETERO_CONTAINMENT_INCREASE_TIME;
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_HETERO_CONTAINMENT_EFFICIENCY_THRESHOLD;
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_HETERO_CONTAINMENT_HYBRID_THRESHOLD;
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_HETERO_CONTAINMENT_POLICY;
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_HETERO_DECREASE_THRESHOLD;
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_HETERO_DECREASE_THRESHOLD_1;
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_HETERO_INCREASE_THRESHOLD;
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_HETERO_INCREASE_THRESHOLD_1;
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_CLASS0_FLOOR_PERF;
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_CLASS1_INITIAL_PERF;
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_THREAD_SCHEDULING_POLICY;
+#line 10563 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_SHORT_THREAD_SCHEDULING_POLICY;
+#line 10572 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_SHORT_THREAD_RUNTIME_THRESHOLD;
+#line 10581 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_SHORT_THREAD_ARCH_CLASS_UPPER_THRESHOLD;
+#line 10589 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_SHORT_THREAD_ARCH_CLASS_LOWER_THRESHOLD;
+#line 10597 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_LONG_THREAD_ARCH_CLASS_UPPER_THRESHOLD;
+#line 10605 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_LONG_THREAD_ARCH_CLASS_LOWER_THRESHOLD;
+#line 10613 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+extern const GUID GUID_SYSTEM_COOLING_POLICY;
+#line 10622 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_RESPONSIVENESS_DISABLE_THRESHOLD;
+#line 10633 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_RESPONSIVENESS_DISABLE_THRESHOLD_1;
+#line 10642 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_RESPONSIVENESS_ENABLE_THRESHOLD;
+#line 10650 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_RESPONSIVENESS_ENABLE_THRESHOLD_1;
+#line 10658 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_RESPONSIVENESS_DISABLE_TIME;
+#line 10666 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_RESPONSIVENESS_DISABLE_TIME_1;
+#line 10674 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_RESPONSIVENESS_ENABLE_TIME;
+#line 10682 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_RESPONSIVENESS_ENABLE_TIME_1;
+#line 10690 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_RESPONSIVENESS_EPP_CEILING;
+#line 10697 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_RESPONSIVENESS_EPP_CEILING_1;
+#line 10705 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_RESPONSIVENESS_PERF_FLOOR;
+#line 10713 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+extern const GUID GUID_PROCESSOR_RESPONSIVENESS_PERF_FLOOR_1;
+#line 10721 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_LOCK_CONSOLE_ON_WAKE;
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_DEVICE_IDLE_POLICY;
+
+
+
+
+
+
+
+
+extern const GUID GUID_CONNECTIVITY_IN_STANDBY;
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_DISCONNECTED_STANDBY_MODE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_ACDC_POWER_SOURCE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_LIDSWITCH_STATE_CHANGE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_LIDSWITCH_STATE_RELIABILITY;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_BATTERY_PERCENTAGE_REMAINING;
+
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_BATTERY_COUNT;
+
+
+
+
+
+
+extern const GUID GUID_GLOBAL_USER_PRESENCE;
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_SESSION_DISPLAY_STATUS;
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_SESSION_USER_PRESENCE;
+
+
+
+
+
+
+extern const GUID GUID_IDLE_BACKGROUND_TASK;
+
+
+
+
+
+
+extern const GUID GUID_BACKGROUND_TASK_NOTIFICATION;
+
+
+
+
+
+
+
+extern const GUID GUID_APPLAUNCH_BUTTON;
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_PCIEXPRESS_SETTINGS_SUBGROUP;
+
+
+
+
+
+extern const GUID GUID_PCIEXPRESS_ASPM_POLICY;
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_ENABLE_SWITCH_FORCED_SHUTDOWN;
+
+
+
+
+
+
+extern const GUID GUID_INTSTEER_SUBGROUP;
+#line 10929 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+extern const GUID GUID_INTSTEER_MODE;
+#line 10933 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+extern const GUID GUID_INTSTEER_LOAD_PER_PROC_TRIGGER;
+#line 10937 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+extern const GUID GUID_INTSTEER_TIME_UNPARK_TRIGGER;
+#line 10941 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_GRAPHICS_SUBGROUP;
+
+
+
+
+
+extern const GUID GUID_GPU_PREFERENCE_POLICY;
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_MIXED_REALITY_MODE;
+#line 10969 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+extern const GUID GUID_SPR_ACTIVE_SESSION_CHANGE;
+#line 10977 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+typedef enum _SYSTEM_POWER_STATE {
+ PowerSystemUnspecified = 0,
+ PowerSystemWorking = 1,
+ PowerSystemSleeping1 = 2,
+ PowerSystemSleeping2 = 3,
+ PowerSystemSleeping3 = 4,
+ PowerSystemHibernate = 5,
+ PowerSystemShutdown = 6,
+ PowerSystemMaximum = 7
+} SYSTEM_POWER_STATE, *PSYSTEM_POWER_STATE;
+
+
+
+typedef enum {
+ PowerActionNone = 0,
+ PowerActionReserved,
+ PowerActionSleep,
+ PowerActionHibernate,
+ PowerActionShutdown,
+ PowerActionShutdownReset,
+ PowerActionShutdownOff,
+ PowerActionWarmEject,
+ PowerActionDisplayOff
+} POWER_ACTION, *PPOWER_ACTION;
+
+typedef enum _DEVICE_POWER_STATE {
+ PowerDeviceUnspecified = 0,
+ PowerDeviceD0,
+ PowerDeviceD1,
+ PowerDeviceD2,
+ PowerDeviceD3,
+ PowerDeviceMaximum
+} DEVICE_POWER_STATE, *PDEVICE_POWER_STATE;
+
+typedef enum _MONITOR_DISPLAY_STATE {
+ PowerMonitorOff = 0,
+ PowerMonitorOn,
+ PowerMonitorDim
+} MONITOR_DISPLAY_STATE, *PMONITOR_DISPLAY_STATE;
+
+typedef enum _USER_ACTIVITY_PRESENCE {
+ PowerUserPresent = 0,
+ PowerUserNotPresent,
+ PowerUserInactive,
+ PowerUserMaximum,
+ PowerUserInvalid = PowerUserMaximum
+} USER_ACTIVITY_PRESENCE, *PUSER_ACTIVITY_PRESENCE;
+
+typedef enum _ENERGY_SAVER_STATUS {
+ ENERGY_SAVER_OFF = 0,
+ ENERGY_SAVER_STANDARD,
+ ENERGY_SAVER_HIGH_SAVINGS
+} ENERGY_SAVER_STATUS, *PENERGY_SAVER_STATUS;
+
+
+
+
+typedef union _POWER_STATE {
+ SYSTEM_POWER_STATE SystemState;
+ DEVICE_POWER_STATE DeviceState;
+} POWER_STATE, *PPOWER_STATE;
+
+typedef enum _POWER_STATE_TYPE {
+ SystemPowerState = 0,
+ DevicePowerState
+} POWER_STATE_TYPE, *PPOWER_STATE_TYPE;
+
+
+typedef struct _SYSTEM_POWER_STATE_CONTEXT {
+ union {
+ struct {
+ ULONG Reserved1 : 8;
+ ULONG TargetSystemState : 4;
+ ULONG EffectiveSystemState : 4;
+ ULONG CurrentSystemState : 4;
+ ULONG IgnoreHibernationPath : 1;
+ ULONG PseudoTransition : 1;
+ ULONG KernelSoftReboot : 1;
+ ULONG DirectedDripsTransition : 1;
+ ULONG Reserved2 : 8;
+ } ;
+
+ ULONG ContextAsUlong;
+ } ;
+} SYSTEM_POWER_STATE_CONTEXT, *PSYSTEM_POWER_STATE_CONTEXT;
+#line 11070 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+typedef struct _COUNTED_REASON_CONTEXT {
+ ULONG Version;
+ ULONG Flags;
+ union {
+ struct {
+ UNICODE_STRING ResourceFileName;
+ USHORT ResourceReasonId;
+ ULONG StringCount;
+ PUNICODE_STRING ReasonStrings;
+ } ;
+
+ UNICODE_STRING SimpleString;
+ } ;
+} COUNTED_REASON_CONTEXT, *PCOUNTED_REASON_CONTEXT;
+
+#line 11090 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef ULONG EXECUTION_STATE, *PEXECUTION_STATE;
+
+typedef enum {
+ LT_DONT_CARE,
+ LT_LOWEST_LATENCY
+} LATENCY_TIME;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _POWER_REQUEST_TYPE {
+ PowerRequestDisplayRequired,
+ PowerRequestSystemRequired,
+ PowerRequestAwayModeRequired,
+ PowerRequestExecutionRequired
+} POWER_REQUEST_TYPE, *PPOWER_REQUEST_TYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct CM_Power_Data_s {
+ ULONG PD_Size;
+ DEVICE_POWER_STATE PD_MostRecentPowerState;
+ ULONG PD_Capabilities;
+ ULONG PD_D1Latency;
+ ULONG PD_D2Latency;
+ ULONG PD_D3Latency;
+ DEVICE_POWER_STATE PD_PowerStateMapping[7];
+ SYSTEM_POWER_STATE PD_DeepestSystemWake;
+} CM_POWER_DATA, *PCM_POWER_DATA;
+
+#line 11179 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+typedef enum {
+ SystemPowerPolicyAc,
+ SystemPowerPolicyDc,
+ VerifySystemPolicyAc,
+ VerifySystemPolicyDc,
+ SystemPowerCapabilities,
+ SystemBatteryState,
+ SystemPowerStateHandler,
+ ProcessorStateHandler,
+ SystemPowerPolicyCurrent,
+ AdministratorPowerPolicy,
+ SystemReserveHiberFile,
+ ProcessorInformation,
+ SystemPowerInformation,
+ ProcessorStateHandler2,
+ LastWakeTime,
+ LastSleepTime,
+ SystemExecutionState,
+ SystemPowerStateNotifyHandler,
+ ProcessorPowerPolicyAc,
+ ProcessorPowerPolicyDc,
+ VerifyProcessorPowerPolicyAc,
+ VerifyProcessorPowerPolicyDc,
+ ProcessorPowerPolicyCurrent,
+ SystemPowerStateLogging,
+ SystemPowerLoggingEntry,
+ SetPowerSettingValue,
+ NotifyUserPowerSetting,
+ PowerInformationLevelUnused0,
+ SystemMonitorHiberBootPowerOff,
+ SystemVideoState,
+ TraceApplicationPowerMessage,
+ TraceApplicationPowerMessageEnd,
+ ProcessorPerfStates,
+ ProcessorIdleStates,
+ ProcessorCap,
+ SystemWakeSource,
+ SystemHiberFileInformation,
+ TraceServicePowerMessage,
+ ProcessorLoad,
+ PowerShutdownNotification,
+ MonitorCapabilities,
+ SessionPowerInit,
+ SessionDisplayState,
+ PowerRequestCreate,
+ PowerRequestAction,
+ GetPowerRequestList,
+ ProcessorInformationEx,
+ NotifyUserModeLegacyPowerEvent,
+ GroupPark,
+ ProcessorIdleDomains,
+ WakeTimerList,
+ SystemHiberFileSize,
+ ProcessorIdleStatesHv,
+ ProcessorPerfStatesHv,
+ ProcessorPerfCapHv,
+ ProcessorSetIdle,
+ LogicalProcessorIdling,
+ UserPresence,
+ PowerSettingNotificationName,
+ GetPowerSettingValue,
+ IdleResiliency,
+ SessionRITState,
+ SessionConnectNotification,
+ SessionPowerCleanup,
+ SessionLockState,
+ SystemHiberbootState,
+ PlatformInformation,
+ PdcInvocation,
+ MonitorInvocation,
+ FirmwareTableInformationRegistered,
+ SetShutdownSelectedTime,
+ SuspendResumeInvocation,
+ PlmPowerRequestCreate,
+ ScreenOff,
+ CsDeviceNotification,
+ PlatformRole,
+ LastResumePerformance,
+ DisplayBurst,
+ ExitLatencySamplingPercentage,
+ RegisterSpmPowerSettings,
+ PlatformIdleStates,
+ ProcessorIdleVeto,
+ PlatformIdleVeto,
+ SystemBatteryStatePrecise,
+ ThermalEvent,
+ PowerRequestActionInternal,
+ BatteryDeviceState,
+ PowerInformationInternal,
+ ThermalStandby,
+ SystemHiberFileType,
+ PhysicalPowerButtonPress,
+ QueryPotentialDripsConstraint,
+ EnergyTrackerCreate,
+ EnergyTrackerQuery,
+ UpdateBlackBoxRecorder,
+ SessionAllowExternalDmaDevices,
+ SendSuspendResumeNotification,
+ BlackBoxRecorderDirectAccessBuffer,
+ PowerInformationLevelMaximum
+} POWER_INFORMATION_LEVEL;
+
+
+
+
+
+typedef enum {
+ UserNotPresent = 0,
+ UserPresent = 1,
+ UserUnknown = 0xff
+} POWER_USER_PRESENCE_TYPE, *PPOWER_USER_PRESENCE_TYPE;
+
+typedef struct _POWER_USER_PRESENCE {
+ POWER_USER_PRESENCE_TYPE UserPresence;
+} POWER_USER_PRESENCE, *PPOWER_USER_PRESENCE;
+
+
+
+
+typedef struct _POWER_SESSION_CONNECT {
+ BOOLEAN Connected;
+ BOOLEAN Console;
+} POWER_SESSION_CONNECT, *PPOWER_SESSION_CONNECT;
+
+typedef struct _POWER_SESSION_TIMEOUTS {
+ ULONG InputTimeout;
+ ULONG DisplayTimeout;
+} POWER_SESSION_TIMEOUTS, *PPOWER_SESSION_TIMEOUTS;
+
+
+
+
+typedef struct _POWER_SESSION_RIT_STATE {
+ BOOLEAN Active;
+ ULONG64 LastInputTime;
+} POWER_SESSION_RIT_STATE, *PPOWER_SESSION_RIT_STATE;
+
+
+
+
+typedef struct _POWER_SESSION_WINLOGON {
+ ULONG SessionId;
+ BOOLEAN Console;
+ BOOLEAN Locked;
+} POWER_SESSION_WINLOGON, *PPOWER_SESSION_WINLOGON;
+
+
+
+
+typedef struct _POWER_SESSION_ALLOW_EXTERNAL_DMA_DEVICES {
+ BOOLEAN IsAllowed;
+} POWER_SESSION_ALLOW_EXTERNAL_DMA_DEVICES, *PPOWER_SESSION_ALLOW_EXTERNAL_DMA_DEVICES;
+
+
+
+
+typedef struct _POWER_IDLE_RESILIENCY {
+ ULONG CoalescingTimeout;
+ ULONG IdleResiliencyPeriod;
+} POWER_IDLE_RESILIENCY, *PPOWER_IDLE_RESILIENCY;
+
+
+
+
+
+
+typedef enum {
+ MonitorRequestReasonUnknown,
+ MonitorRequestReasonPowerButton,
+ MonitorRequestReasonRemoteConnection,
+ MonitorRequestReasonScMonitorpower,
+ MonitorRequestReasonUserInput,
+ MonitorRequestReasonAcDcDisplayBurst,
+ MonitorRequestReasonUserDisplayBurst,
+ MonitorRequestReasonPoSetSystemState,
+ MonitorRequestReasonSetThreadExecutionState,
+ MonitorRequestReasonFullWake,
+ MonitorRequestReasonSessionUnlock,
+ MonitorRequestReasonScreenOffRequest,
+ MonitorRequestReasonIdleTimeout,
+ MonitorRequestReasonPolicyChange,
+ MonitorRequestReasonSleepButton,
+ MonitorRequestReasonLid,
+ MonitorRequestReasonBatteryCountChange,
+ MonitorRequestReasonGracePeriod,
+ MonitorRequestReasonPnP,
+ MonitorRequestReasonDP,
+ MonitorRequestReasonSxTransition,
+ MonitorRequestReasonSystemIdle,
+ MonitorRequestReasonNearProximity,
+ MonitorRequestReasonThermalStandby,
+ MonitorRequestReasonResumePdc,
+ MonitorRequestReasonResumeS4,
+ MonitorRequestReasonTerminal,
+ MonitorRequestReasonPdcSignal,
+ MonitorRequestReasonAcDcDisplayBurstSuppressed,
+ MonitorRequestReasonSystemStateEntered,
+
+
+ MonitorRequestReasonWinrt,
+ MonitorRequestReasonUserInputKeyboard,
+ MonitorRequestReasonUserInputMouse,
+ MonitorRequestReasonUserInputTouchpad,
+ MonitorRequestReasonUserInputPen,
+ MonitorRequestReasonUserInputAccelerometer,
+ MonitorRequestReasonUserInputHid,
+ MonitorRequestReasonUserInputPoUserPresent,
+ MonitorRequestReasonUserInputSessionSwitch,
+ MonitorRequestReasonUserInputInitialization,
+ MonitorRequestReasonPdcSignalWindowsMobilePwrNotif,
+ MonitorRequestReasonPdcSignalWindowsMobileShell,
+ MonitorRequestReasonPdcSignalHeyCortana,
+ MonitorRequestReasonPdcSignalHolographicShell,
+ MonitorRequestReasonPdcSignalFingerprint,
+ MonitorRequestReasonDirectedDrips,
+ MonitorRequestReasonDim,
+ MonitorRequestReasonBuiltinPanel,
+ MonitorRequestReasonDisplayRequiredUnDim,
+ MonitorRequestReasonBatteryCountChangeSuppressed,
+ MonitorRequestReasonResumeModernStandby,
+ MonitorRequestReasonTerminalInit,
+ MonitorRequestReasonPdcSignalSensorsHumanPresence,
+ MonitorRequestReasonBatteryPreCritical,
+ MonitorRequestReasonUserInputTouch,
+ MonitorRequestReasonAusterityBatteryDrain,
+ MonitorRequestReasonDozeRestrictedStandby,
+ MonitorRequestReasonSmartRestrictedStandby,
+ MonitorRequestReasonMax
+} POWER_MONITOR_REQUEST_REASON;
+
+typedef enum _POWER_MONITOR_REQUEST_TYPE {
+ MonitorRequestTypeOff,
+ MonitorRequestTypeOnAndPresent,
+ MonitorRequestTypeToggleOn
+} POWER_MONITOR_REQUEST_TYPE;
+
+
+
+
+typedef struct _POWER_MONITOR_INVOCATION {
+ BOOLEAN Console;
+ POWER_MONITOR_REQUEST_REASON RequestReason;
+} POWER_MONITOR_INVOCATION, *PPOWER_MONITOR_INVOCATION;
+
+
+
+
+
+
+
+typedef enum _POWER_LIMIT_TYPES {
+ PowerLimitContinuous = 0,
+ PowerLimitBurst,
+ PowerLimitRapid,
+ PowerLimitPreemptive,
+ PowerLimitPreemptiveOffset,
+ PowerLimitTypeMax
+} POWER_LIMIT_TYPES, *PPOWER_LIMIT_TYPES;
+
+typedef struct _POWER_LIMIT_ATTRIBUTES {
+
+
+
+
+
+ POWER_LIMIT_TYPES Type;
+ ULONG DomainId;
+
+
+
+
+
+ ULONG MaxValue;
+ ULONG MinValue;
+ ULONG MinTimeParameter;
+ ULONG MaxTimeParameter;
+ ULONG DefaultACValue;
+ ULONG DefaultDCValue;
+
+ union {
+ struct {
+ ULONG SupportTimeParameter : 1;
+ ULONG Reserved : 31;
+ };
+
+ ULONG AsUlong;
+ } Flags;
+} POWER_LIMIT_ATTRIBUTES, *PPOWER_LIMIT_ATTRIBUTES;
+
+typedef struct _POWER_LIMIT_VALUE {
+ POWER_LIMIT_TYPES Type;
+ ULONG DomainId;
+ ULONG TargetValue;
+ ULONG TimeParameter;
+} POWER_LIMIT_VALUE, *PPOWER_LIMIT_VALUE;
+
+
+
+#line 11481 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+typedef struct _RESUME_PERFORMANCE {
+ ULONG PostTimeMs;
+ ULONGLONG TotalResumeTimeMs;
+ ULONGLONG ResumeCompleteTimestamp;
+} RESUME_PERFORMANCE, *PRESUME_PERFORMANCE;
+
+
+
+
+
+typedef enum {
+ PoAc,
+ PoDc,
+ PoHot,
+ PoConditionMaximum
+} SYSTEM_POWER_CONDITION;
+
+typedef struct {
+
+
+
+
+
+ ULONG Version;
+
+
+
+
+
+ GUID Guid;
+
+
+
+
+
+
+ SYSTEM_POWER_CONDITION PowerCondition;
+
+
+
+
+ ULONG DataLength;
+
+
+
+
+ UCHAR Data[1];
+} SET_POWER_SETTING_VALUE, *PSET_POWER_SETTING_VALUE;
+
+
+
+typedef struct {
+ GUID Guid;
+} NOTIFY_USER_POWER_SETTING, *PNOTIFY_USER_POWER_SETTING;
+
+
+
+
+
+
+typedef struct _APPLICATIONLAUNCH_SETTING_VALUE {
+
+
+
+
+
+ LARGE_INTEGER ActivationTime;
+
+
+
+
+ ULONG Flags;
+
+
+
+
+ ULONG ButtonInstanceID;
+
+
+} APPLICATIONLAUNCH_SETTING_VALUE, *PAPPLICATIONLAUNCH_SETTING_VALUE;
+
+
+
+
+
+typedef enum _POWER_PLATFORM_ROLE {
+ PlatformRoleUnspecified = 0,
+ PlatformRoleDesktop,
+ PlatformRoleMobile,
+ PlatformRoleWorkstation,
+ PlatformRoleEnterpriseServer,
+ PlatformRoleSOHOServer,
+ PlatformRoleAppliancePC,
+ PlatformRolePerformanceServer,
+ PlatformRoleSlate,
+ PlatformRoleMaximum
+} POWER_PLATFORM_ROLE, *PPOWER_PLATFORM_ROLE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 11601 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef struct _POWER_PLATFORM_INFORMATION {
+ BOOLEAN AoAc;
+} POWER_PLATFORM_INFORMATION, *PPOWER_PLATFORM_INFORMATION;
+
+
+
+
+
+typedef enum POWER_SETTING_ALTITUDE {
+ ALTITUDE_GROUP_POLICY,
+ ALTITUDE_USER,
+ ALTITUDE_RUNTIME_OVERRIDE,
+ ALTITUDE_PROVISIONING,
+ ALTITUDE_OEM_CUSTOMIZATION,
+ ALTITUDE_INTERNAL_OVERRIDE,
+ ALTITUDE_OS_DEFAULT,
+} POWER_SETTING_ALTITUDE, *PPOWER_SETTING_ALTITUDE;
+
+
+
+
+
+
+typedef struct {
+ ULONG Granularity;
+ ULONG Capacity;
+} BATTERY_REPORTING_SCALE, *PBATTERY_REPORTING_SCALE;
+#line 11630 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+#line 11633 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtPowerInformation(
+ POWER_INFORMATION_LEVEL InformationLevel,
+ PVOID InputBuffer,
+ ULONG InputBufferLength,
+ PVOID OutputBuffer,
+ ULONG OutputBufferLength
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _CM_SERVICE_NODE_TYPE {
+ DriverType = 0x00000001,
+ FileSystemType = 0x00000002,
+ Win32ServiceOwnProcess = 0x00000010,
+ Win32ServiceShareProcess = 0x00000020,
+ AdapterType = 0x00000004,
+ RecognizerType = 0x00000008
+} SERVICE_NODE_TYPE;
+
+typedef enum _CM_SERVICE_LOAD_TYPE {
+ BootLoad = 0x00000000,
+ SystemLoad = 0x00000001,
+ AutoLoad = 0x00000002,
+ DemandLoad = 0x00000003,
+ DisableLoad = 0x00000004
+} SERVICE_LOAD_TYPE;
+
+typedef enum _CM_ERROR_CONTROL_TYPE {
+ IgnoreError = 0x00000000,
+ NormalError = 0x00000001,
+ SevereError = 0x00000002,
+ CriticalError = 0x00000003
+} SERVICE_ERROR_TYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef int CM_RESOURCE_TYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _CM_SHARE_DISPOSITION {
+ CmResourceShareUndetermined = 0,
+ CmResourceShareDeviceExclusive,
+ CmResourceShareDriverExclusive,
+ CmResourceShareShared
+} CM_SHARE_DISPOSITION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack4.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(disable:4103)
+
+#pragma pack(push,4)
+
+
+#line 30 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack4.h"
+
+
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack4.h"
+#line 34 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack4.h"
+#pragma external_header(pop)
+#line 12007 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR {
+ UCHAR Type;
+ UCHAR ShareDisposition;
+ USHORT Flags;
+ union {
+
+
+
+
+
+
+
+ struct {
+ PHYSICAL_ADDRESS Start;
+ ULONG Length;
+ } Generic;
+
+
+
+
+ struct {
+ PHYSICAL_ADDRESS Start;
+ ULONG Length;
+ } Port;
+
+
+
+
+ struct {
+
+
+
+#line 12040 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+ ULONG Level;
+#line 12042 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+ ULONG Vector;
+ KAFFINITY Affinity;
+ } Interrupt;
+
+
+
+
+
+
+ struct {
+ union {
+ struct {
+
+
+#line 12057 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+ USHORT Reserved;
+#line 12059 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+ USHORT MessageCount;
+ ULONG Vector;
+ KAFFINITY Affinity;
+ } Raw;
+
+ struct {
+
+
+
+#line 12069 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+ ULONG Level;
+#line 12071 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+ ULONG Vector;
+ KAFFINITY Affinity;
+ } Translated;
+ } ;
+ } MessageInterrupt;
+
+
+
+
+
+
+
+ struct {
+ PHYSICAL_ADDRESS Start;
+ ULONG Length;
+ } Memory;
+
+
+
+
+
+ struct {
+ ULONG Channel;
+ ULONG Port;
+ ULONG Reserved1;
+ } Dma;
+
+ struct {
+ ULONG Channel;
+ ULONG RequestLine;
+ UCHAR TransferWidth;
+ UCHAR Reserved1;
+ UCHAR Reserved2;
+ UCHAR Reserved3;
+ } DmaV3;
+
+
+
+
+
+
+ struct {
+ ULONG Data[3];
+ } DevicePrivate;
+
+
+
+
+
+ struct {
+ ULONG Start;
+ ULONG Length;
+ ULONG Reserved;
+ } BusNumber;
+
+
+
+
+
+
+
+
+ struct {
+ ULONG DataSize;
+ ULONG Reserved1;
+ ULONG Reserved2;
+ } DeviceSpecificData;
+
+
+
+ struct {
+ PHYSICAL_ADDRESS Start;
+ ULONG Length40;
+ } Memory40;
+
+ struct {
+ PHYSICAL_ADDRESS Start;
+ ULONG Length48;
+ } Memory48;
+
+ struct {
+ PHYSICAL_ADDRESS Start;
+ ULONG Length64;
+ } Memory64;
+
+ struct {
+ UCHAR Class;
+ UCHAR Type;
+ UCHAR Reserved1;
+ UCHAR Reserved2;
+ ULONG IdLowPart;
+ ULONG IdHighPart;
+ } Connection;
+
+ } u;
+} CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(disable:4103)
+
+#pragma pack(pop)
+
+
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+
+
+#line 36 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+#line 37 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+#pragma external_header(pop)
+#line 12168 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _CM_PARTIAL_RESOURCE_LIST {
+ USHORT Version;
+ USHORT Revision;
+ ULONG Count;
+ CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1];
+} CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST;
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _CM_FULL_RESOURCE_DESCRIPTOR {
+ INTERFACE_TYPE InterfaceType;
+ ULONG BusNumber;
+ CM_PARTIAL_RESOURCE_LIST PartialResourceList;
+} CM_FULL_RESOURCE_DESCRIPTOR, *PCM_FULL_RESOURCE_DESCRIPTOR;
+
+
+
+
+
+
+typedef struct _CM_RESOURCE_LIST {
+ ULONG Count;
+ CM_FULL_RESOURCE_DESCRIPTOR List[1];
+} CM_RESOURCE_LIST, *PCM_RESOURCE_LIST;
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _DEVICE_FLAGS {
+ ULONG Failed : 1;
+ ULONG ReadOnly : 1;
+ ULONG Removable : 1;
+ ULONG ConsoleIn : 1;
+ ULONG ConsoleOut : 1;
+ ULONG Input : 1;
+ ULONG Output : 1;
+} DEVICE_FLAGS, *PDEVICE_FLAGS;
+
+
+
+
+
+typedef struct _CM_COMPONENT_INFORMATION {
+ DEVICE_FLAGS Flags;
+ ULONG Version;
+ ULONG Key;
+ KAFFINITY AffinityMask;
+} CM_COMPONENT_INFORMATION, *PCM_COMPONENT_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _CM_ROM_BLOCK {
+ ULONG Address;
+ ULONG Size;
+} CM_ROM_BLOCK, *PCM_ROM_BLOCK;
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack1.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(disable:4103)
+
+#pragma pack(push,1)
+
+
+#line 30 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack1.h"
+
+
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack1.h"
+#line 34 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack1.h"
+#pragma external_header(pop)
+#line 12268 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+typedef struct _CM_INT13_DRIVE_PARAMETER {
+ USHORT DriveSelect;
+ ULONG MaxCylinders;
+ USHORT SectorsPerTrack;
+ USHORT MaxHeads;
+ USHORT NumberDrives;
+} CM_INT13_DRIVE_PARAMETER, *PCM_INT13_DRIVE_PARAMETER;
+
+
+
+
+
+
+
+typedef struct _CM_MCA_POS_DATA {
+ USHORT AdapterId;
+ UCHAR PosData1;
+ UCHAR PosData2;
+ UCHAR PosData3;
+ UCHAR PosData4;
+} CM_MCA_POS_DATA, *PCM_MCA_POS_DATA;
+
+
+
+
+
+typedef struct _EISA_MEMORY_TYPE {
+ UCHAR ReadWrite: 1;
+ UCHAR Cached : 1;
+ UCHAR Reserved0 :1;
+ UCHAR Type:2;
+ UCHAR Shared:1;
+ UCHAR Reserved1 :1;
+ UCHAR MoreEntries : 1;
+} EISA_MEMORY_TYPE, *PEISA_MEMORY_TYPE;
+
+typedef struct _EISA_MEMORY_CONFIGURATION {
+ EISA_MEMORY_TYPE ConfigurationByte;
+ UCHAR DataSize;
+ USHORT AddressLowWord;
+ UCHAR AddressHighByte;
+ USHORT MemorySize;
+} EISA_MEMORY_CONFIGURATION, *PEISA_MEMORY_CONFIGURATION;
+
+
+
+
+
+
+typedef struct _EISA_IRQ_DESCRIPTOR {
+ UCHAR Interrupt : 4;
+ UCHAR Reserved :1;
+ UCHAR LevelTriggered :1;
+ UCHAR Shared : 1;
+ UCHAR MoreEntries : 1;
+} EISA_IRQ_DESCRIPTOR, *PEISA_IRQ_DESCRIPTOR;
+
+typedef struct _EISA_IRQ_CONFIGURATION {
+ EISA_IRQ_DESCRIPTOR ConfigurationByte;
+ UCHAR Reserved;
+} EISA_IRQ_CONFIGURATION, *PEISA_IRQ_CONFIGURATION;
+
+
+
+
+
+
+typedef struct _DMA_CONFIGURATION_BYTE0 {
+ UCHAR Channel : 3;
+ UCHAR Reserved : 3;
+ UCHAR Shared :1;
+ UCHAR MoreEntries :1;
+} DMA_CONFIGURATION_BYTE0;
+
+typedef struct _DMA_CONFIGURATION_BYTE1 {
+ UCHAR Reserved0 : 2;
+ UCHAR TransferSize : 2;
+ UCHAR Timing : 2;
+ UCHAR Reserved1 : 2;
+} DMA_CONFIGURATION_BYTE1;
+
+typedef struct _EISA_DMA_CONFIGURATION {
+ DMA_CONFIGURATION_BYTE0 ConfigurationByte0;
+ DMA_CONFIGURATION_BYTE1 ConfigurationByte1;
+} EISA_DMA_CONFIGURATION, *PEISA_DMA_CONFIGURATION;
+
+
+
+
+
+
+typedef struct _EISA_PORT_DESCRIPTOR {
+ UCHAR NumberPorts : 5;
+ UCHAR Reserved :1;
+ UCHAR Shared :1;
+ UCHAR MoreEntries : 1;
+} EISA_PORT_DESCRIPTOR, *PEISA_PORT_DESCRIPTOR;
+
+typedef struct _EISA_PORT_CONFIGURATION {
+ EISA_PORT_DESCRIPTOR Configuration;
+ USHORT PortAddress;
+} EISA_PORT_CONFIGURATION, *PEISA_PORT_CONFIGURATION;
+
+
+
+
+
+
+
+
+typedef struct _CM_EISA_SLOT_INFORMATION {
+ UCHAR ReturnCode;
+ UCHAR ReturnFlags;
+ UCHAR MajorRevision;
+ UCHAR MinorRevision;
+ USHORT Checksum;
+ UCHAR NumberFunctions;
+ UCHAR FunctionInformation;
+ ULONG CompressedId;
+} CM_EISA_SLOT_INFORMATION, *PCM_EISA_SLOT_INFORMATION;
+
+
+
+
+
+
+typedef struct _CM_EISA_FUNCTION_INFORMATION {
+ ULONG CompressedId;
+ UCHAR IdSlotFlags1;
+ UCHAR IdSlotFlags2;
+ UCHAR MinorRevision;
+ UCHAR MajorRevision;
+ UCHAR Selections[26];
+ UCHAR FunctionFlags;
+ UCHAR TypeString[80];
+ EISA_MEMORY_CONFIGURATION EisaMemory[9];
+ EISA_IRQ_CONFIGURATION EisaIrq[7];
+ EISA_DMA_CONFIGURATION EisaDma[4];
+ EISA_PORT_CONFIGURATION EisaPort[20];
+ UCHAR InitializationData[60];
+} CM_EISA_FUNCTION_INFORMATION, *PCM_EISA_FUNCTION_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _CM_PNP_BIOS_DEVICE_NODE {
+ USHORT Size;
+ UCHAR Node;
+ ULONG ProductId;
+ UCHAR DeviceType[3];
+ USHORT DeviceAttributes;
+
+
+} CM_PNP_BIOS_DEVICE_NODE,*PCM_PNP_BIOS_DEVICE_NODE;
+
+
+
+
+
+typedef struct _CM_PNP_BIOS_INSTALLATION_CHECK {
+ UCHAR Signature[4];
+ UCHAR Revision;
+ UCHAR Length;
+ USHORT ControlField;
+ UCHAR Checksum;
+ ULONG EventFlagAddress;
+ USHORT RealModeEntryOffset;
+ USHORT RealModeEntrySegment;
+ USHORT ProtectedModeEntryOffset;
+ ULONG ProtectedModeCodeBaseAddress;
+ ULONG OemDeviceId;
+ USHORT RealModeDataBaseAddress;
+ ULONG ProtectedModeDataBaseAddress;
+} CM_PNP_BIOS_INSTALLATION_CHECK, *PCM_PNP_BIOS_INSTALLATION_CHECK;
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(disable:4103)
+
+#pragma pack(pop)
+
+
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+
+
+#line 36 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+#line 37 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+#pragma external_header(pop)
+#line 12466 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _CM_SCSI_DEVICE_DATA {
+ USHORT Version;
+ USHORT Revision;
+ UCHAR HostIdentifier;
+} CM_SCSI_DEVICE_DATA, *PCM_SCSI_DEVICE_DATA;
+
+
+
+
+
+
+
+
+
+typedef struct _CM_VIDEO_DEVICE_DATA {
+ USHORT Version;
+ USHORT Revision;
+ ULONG VideoClock;
+} CM_VIDEO_DEVICE_DATA, *PCM_VIDEO_DEVICE_DATA;
+
+
+
+
+
+typedef struct _CM_SONIC_DEVICE_DATA {
+ USHORT Version;
+ USHORT Revision;
+ USHORT DataConfigurationRegister;
+ UCHAR EthernetAddress[8];
+} CM_SONIC_DEVICE_DATA, *PCM_SONIC_DEVICE_DATA;
+
+
+
+
+
+typedef struct _CM_SERIAL_DEVICE_DATA {
+ USHORT Version;
+ USHORT Revision;
+ ULONG BaudClock;
+} CM_SERIAL_DEVICE_DATA, *PCM_SERIAL_DEVICE_DATA;
+
+
+
+
+
+
+
+
+
+typedef struct _CM_MONITOR_DEVICE_DATA {
+ USHORT Version;
+ USHORT Revision;
+ USHORT HorizontalScreenSize;
+ USHORT VerticalScreenSize;
+ USHORT HorizontalResolution;
+ USHORT VerticalResolution;
+ USHORT HorizontalDisplayTimeLow;
+ USHORT HorizontalDisplayTime;
+ USHORT HorizontalDisplayTimeHigh;
+ USHORT HorizontalBackPorchLow;
+ USHORT HorizontalBackPorch;
+ USHORT HorizontalBackPorchHigh;
+ USHORT HorizontalFrontPorchLow;
+ USHORT HorizontalFrontPorch;
+ USHORT HorizontalFrontPorchHigh;
+ USHORT HorizontalSyncLow;
+ USHORT HorizontalSync;
+ USHORT HorizontalSyncHigh;
+ USHORT VerticalBackPorchLow;
+ USHORT VerticalBackPorch;
+ USHORT VerticalBackPorchHigh;
+ USHORT VerticalFrontPorchLow;
+ USHORT VerticalFrontPorch;
+ USHORT VerticalFrontPorchHigh;
+ USHORT VerticalSyncLow;
+ USHORT VerticalSync;
+ USHORT VerticalSyncHigh;
+} CM_MONITOR_DEVICE_DATA, *PCM_MONITOR_DEVICE_DATA;
+
+
+
+
+
+typedef struct _CM_FLOPPY_DEVICE_DATA {
+ USHORT Version;
+ USHORT Revision;
+ CHAR Size[8];
+ ULONG MaxDensity;
+ ULONG MountDensity;
+
+
+
+ UCHAR StepRateHeadUnloadTime;
+ UCHAR HeadLoadTime;
+ UCHAR MotorOffTime;
+ UCHAR SectorLengthCode;
+ UCHAR SectorPerTrack;
+ UCHAR ReadWriteGapLength;
+ UCHAR DataTransferLength;
+ UCHAR FormatGapLength;
+ UCHAR FormatFillCharacter;
+ UCHAR HeadSettleTime;
+ UCHAR MotorSettleTime;
+ UCHAR MaximumTrackValue;
+ UCHAR DataTransferRate;
+} CM_FLOPPY_DEVICE_DATA, *PCM_FLOPPY_DEVICE_DATA;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _CM_KEYBOARD_DEVICE_DATA {
+ USHORT Version;
+ USHORT Revision;
+ UCHAR Type;
+ UCHAR Subtype;
+ USHORT KeyboardFlags;
+} CM_KEYBOARD_DEVICE_DATA, *PCM_KEYBOARD_DEVICE_DATA;
+
+
+
+
+
+typedef struct _CM_DISK_GEOMETRY_DEVICE_DATA {
+ ULONG BytesPerSector;
+ ULONG NumberOfCylinders;
+ ULONG SectorsPerTrack;
+ ULONG NumberOfHeads;
+} CM_DISK_GEOMETRY_DEVICE_DATA, *PCM_DISK_GEOMETRY_DEVICE_DATA;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 12688 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef enum _IRQ_DEVICE_POLICY {
+ IrqPolicyMachineDefault = 0,
+ IrqPolicyAllCloseProcessors,
+ IrqPolicyOneCloseProcessor,
+ IrqPolicyAllProcessorsInMachine,
+ IrqPolicySpecifiedProcessors,
+ IrqPolicySpreadMessagesAcrossAllProcessors,
+ IrqPolicyAllProcessorsInMachineWhenSteered
+} IRQ_DEVICE_POLICY, *PIRQ_DEVICE_POLICY;
+
+#line 12700 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+typedef enum _IRQ_PRIORITY {
+ IrqPriorityUndefined = 0,
+ IrqPriorityLow,
+ IrqPriorityNormal,
+ IrqPriorityHigh
+} IRQ_PRIORITY, *PIRQ_PRIORITY;
+
+
+
+
+
+typedef enum _IRQ_GROUP_POLICY {
+ GroupAffinityAllGroupZero = 0,
+ GroupAffinityDontCare
+} IRQ_GROUP_POLICY, *PIRQ_GROUP_POLICY;
+
+
+
+
+
+typedef struct _IO_RESOURCE_DESCRIPTOR {
+ UCHAR Option;
+ UCHAR Type;
+ UCHAR ShareDisposition;
+ UCHAR Spare1;
+ USHORT Flags;
+ USHORT Spare2;
+
+ union {
+ struct {
+ ULONG Length;
+ ULONG Alignment;
+ PHYSICAL_ADDRESS MinimumAddress;
+ PHYSICAL_ADDRESS MaximumAddress;
+ } Port;
+
+ struct {
+ ULONG Length;
+ ULONG Alignment;
+ PHYSICAL_ADDRESS MinimumAddress;
+ PHYSICAL_ADDRESS MaximumAddress;
+ } Memory;
+
+ struct {
+ ULONG MinimumVector;
+ ULONG MaximumVector;
+
+
+
+#line 12755 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+ IRQ_DEVICE_POLICY AffinityPolicy;
+#line 12757 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+ IRQ_PRIORITY PriorityPolicy;
+ KAFFINITY TargetedProcessors;
+ } Interrupt;
+
+ struct {
+ ULONG MinimumChannel;
+ ULONG MaximumChannel;
+ } Dma;
+
+ struct {
+ ULONG RequestLine;
+ ULONG Reserved;
+ ULONG Channel;
+ ULONG TransferWidth;
+ } DmaV3;
+
+ struct {
+ ULONG Length;
+ ULONG Alignment;
+ PHYSICAL_ADDRESS MinimumAddress;
+ PHYSICAL_ADDRESS MaximumAddress;
+ } Generic;
+
+ struct {
+ ULONG Data[3];
+ } DevicePrivate;
+
+
+
+
+
+ struct {
+ ULONG Length;
+ ULONG MinBusNumber;
+ ULONG MaxBusNumber;
+ ULONG Reserved;
+ } BusNumber;
+
+ struct {
+ ULONG Priority;
+ ULONG Reserved1;
+ ULONG Reserved2;
+ } ConfigData;
+
+
+
+
+
+
+ struct {
+ ULONG Length40;
+ ULONG Alignment40;
+ PHYSICAL_ADDRESS MinimumAddress;
+ PHYSICAL_ADDRESS MaximumAddress;
+ } Memory40;
+
+ struct {
+ ULONG Length48;
+ ULONG Alignment48;
+ PHYSICAL_ADDRESS MinimumAddress;
+ PHYSICAL_ADDRESS MaximumAddress;
+ } Memory48;
+
+ struct {
+ ULONG Length64;
+ ULONG Alignment64;
+ PHYSICAL_ADDRESS MinimumAddress;
+ PHYSICAL_ADDRESS MaximumAddress;
+ } Memory64;
+
+ struct {
+ UCHAR Class;
+ UCHAR Type;
+ UCHAR Reserved1;
+ UCHAR Reserved2;
+ ULONG IdLowPart;
+ ULONG IdHighPart;
+ } Connection;
+
+ } u;
+
+} IO_RESOURCE_DESCRIPTOR, *PIO_RESOURCE_DESCRIPTOR;
+
+
+typedef struct _IO_RESOURCE_LIST {
+ USHORT Version;
+ USHORT Revision;
+
+ ULONG Count;
+ IO_RESOURCE_DESCRIPTOR Descriptors[1];
+} IO_RESOURCE_LIST, *PIO_RESOURCE_LIST;
+
+
+typedef struct _IO_RESOURCE_REQUIREMENTS_LIST {
+ ULONG ListSize;
+ INTERFACE_TYPE InterfaceType;
+ ULONG BusNumber;
+ ULONG SlotNumber;
+ ULONG Reserved[3];
+ ULONG AlternativeLists;
+ IO_RESOURCE_LIST List[1];
+} IO_RESOURCE_REQUIREMENTS_LIST, *PIO_RESOURCE_REQUIREMENTS_LIST;
+
+
+
+
+
+
+
+
+
+
+
+
+#line 12872 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4324)
+
+typedef struct __declspec(align(16)) _SLIST_ENTRY {
+ struct _SLIST_ENTRY *Next;
+} SLIST_ENTRY, *PSLIST_ENTRY;
+
+#pragma warning(pop)
+
+
+
+
+
+#line 12902 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+typedef union __declspec(align(16)) _SLIST_HEADER {
+ struct {
+ ULONGLONG Alignment;
+ ULONGLONG Region;
+ } ;
+ struct {
+ ULONGLONG Depth:16;
+ ULONGLONG Sequence:48;
+ ULONGLONG Reserved:4;
+ ULONGLONG NextEntry:60;
+ } HeaderX64;
+} SLIST_HEADER, *PSLIST_HEADER;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 12957 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 12959 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+
+void
+__stdcall
+RtlAssert(
+ PVOID VoidFailedAssertion,
+ PVOID VoidFileName,
+ ULONG LineNumber,
+ PSTR MutableMessage
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 13008 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 13021 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4714)
+#pragma warning(disable:4793)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(noreturn)
+void
+__fastfail(
+ unsigned int Code
+ );
+
+#pragma intrinsic(__fastfail)
+
+#line 13135 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(noreturn)
+__forceinline
+void
+RtlFailFast(
+ ULONG Code
+ )
+
+{
+
+ __fastfail(Code);
+}
+
+#line 13183 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 13197 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__forceinline
+void
+InitializeListHead(
+ PLIST_ENTRY ListHead
+ )
+
+{
+
+ ListHead->Flink = ListHead->Blink = ListHead;
+ return;
+}
+
+
+BOOLEAN
+__forceinline
+IsListEmpty(
+ const LIST_ENTRY * ListHead
+ )
+
+{
+
+ return (BOOLEAN)(ListHead->Flink == ListHead);
+}
+
+__forceinline
+BOOLEAN
+RemoveEntryListUnsafe(
+ PLIST_ENTRY Entry
+ )
+
+{
+
+ PLIST_ENTRY Blink;
+ PLIST_ENTRY Flink;
+
+ Flink = Entry->Flink;
+ Blink = Entry->Blink;
+ Blink->Flink = Flink;
+ Flink->Blink = Blink;
+ return (BOOLEAN)(Flink == Blink);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 13370 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__forceinline
+void
+FatalListEntryError(
+ PVOID p1,
+ PVOID p2,
+ PVOID p3
+ )
+
+{
+
+ (p1);
+ (p2);
+ (p3);
+
+ RtlFailFast(3);
+}
+
+__forceinline
+void
+RtlpCheckListEntry(
+ PLIST_ENTRY Entry
+ )
+
+{
+
+ if ((((Entry->Flink)->Blink) != Entry) || (((Entry->Blink)->Flink) != Entry)) {
+ FatalListEntryError((PVOID)(Entry),
+ (PVOID)((Entry->Flink)->Blink),
+ (PVOID)((Entry->Blink)->Flink));
+ }
+}
+
+
+__forceinline
+BOOLEAN
+RemoveEntryList(
+ PLIST_ENTRY Entry
+ )
+
+{
+
+ PLIST_ENTRY PrevEntry;
+ PLIST_ENTRY NextEntry;
+
+ NextEntry = Entry->Flink;
+ PrevEntry = Entry->Blink;
+ if ((NextEntry->Blink != Entry) || (PrevEntry->Flink != Entry)) {
+ FatalListEntryError((PVOID)PrevEntry,
+ (PVOID)Entry,
+ (PVOID)NextEntry);
+ }
+
+ PrevEntry->Flink = NextEntry;
+ NextEntry->Blink = PrevEntry;
+ return (BOOLEAN)(PrevEntry == NextEntry);
+}
+
+__forceinline
+PLIST_ENTRY
+RemoveHeadList(
+ PLIST_ENTRY ListHead
+ )
+
+{
+
+ PLIST_ENTRY Entry;
+ PLIST_ENTRY NextEntry;
+
+ Entry = ListHead->Flink;
+
+
+
+
+
+#line 13473 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ NextEntry = Entry->Flink;
+ if ((Entry->Blink != ListHead) || (NextEntry->Blink != Entry)) {
+ FatalListEntryError((PVOID)ListHead,
+ (PVOID)Entry,
+ (PVOID)NextEntry);
+ }
+
+ ListHead->Flink = NextEntry;
+ NextEntry->Blink = ListHead;
+
+ return Entry;
+}
+
+__forceinline
+PLIST_ENTRY
+RemoveTailList(
+ PLIST_ENTRY ListHead
+ )
+{
+
+ PLIST_ENTRY Entry;
+ PLIST_ENTRY PrevEntry;
+
+ Entry = ListHead->Blink;
+
+
+
+
+
+#line 13504 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ PrevEntry = Entry->Blink;
+ if ((Entry->Flink != ListHead) || (PrevEntry->Flink != Entry)) {
+ FatalListEntryError((PVOID)PrevEntry,
+ (PVOID)Entry,
+ (PVOID)ListHead);
+ }
+
+ ListHead->Blink = PrevEntry;
+ PrevEntry->Flink = ListHead;
+ return Entry;
+}
+
+
+__forceinline
+void
+InsertTailList(
+ PLIST_ENTRY ListHead,
+ PLIST_ENTRY Entry
+ )
+{
+
+ PLIST_ENTRY PrevEntry;
+
+
+
+
+
+#line 13533 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ PrevEntry = ListHead->Blink;
+ if (PrevEntry->Flink != ListHead) {
+ FatalListEntryError((PVOID)PrevEntry,
+ (PVOID)ListHead,
+ (PVOID)PrevEntry->Flink);
+ }
+
+ Entry->Flink = ListHead;
+ Entry->Blink = PrevEntry;
+ PrevEntry->Flink = Entry;
+ ListHead->Blink = Entry;
+ return;
+}
+
+
+__forceinline
+void
+InsertHeadList(
+ PLIST_ENTRY ListHead,
+ PLIST_ENTRY Entry
+ )
+
+{
+
+ PLIST_ENTRY NextEntry;
+
+
+
+
+
+
+#line 13566 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ NextEntry = ListHead->Flink;
+ if (NextEntry->Blink != ListHead) {
+ FatalListEntryError((PVOID)ListHead,
+ (PVOID)NextEntry,
+ (PVOID)NextEntry->Blink);
+ }
+
+ Entry->Flink = NextEntry;
+ Entry->Blink = ListHead;
+ NextEntry->Blink = Entry;
+ ListHead->Flink = Entry;
+ return;
+}
+
+__forceinline
+void
+AppendTailList(
+ PLIST_ENTRY ListHead,
+ PLIST_ENTRY ListToAppend
+ )
+{
+ PLIST_ENTRY ListEnd = ListHead->Blink;
+
+ RtlpCheckListEntry(ListHead);
+ RtlpCheckListEntry(ListToAppend);
+ ListHead->Blink->Flink = ListToAppend;
+ ListHead->Blink = ListToAppend->Blink;
+ ListToAppend->Blink->Flink = ListHead;
+ ListToAppend->Blink = ListEnd;
+ return;
+}
+
+#line 13600 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__forceinline
+PSINGLE_LIST_ENTRY
+PopEntryList(
+ PSINGLE_LIST_ENTRY ListHead
+ )
+{
+
+ PSINGLE_LIST_ENTRY FirstEntry;
+
+ FirstEntry = ListHead->Next;
+ if (FirstEntry != ((void *)0)) {
+ ListHead->Next = FirstEntry->Next;
+ }
+
+ return FirstEntry;
+}
+
+
+__forceinline
+void
+PushEntryList(
+ PSINGLE_LIST_ENTRY ListHead,
+ PSINGLE_LIST_ENTRY Entry
+ )
+
+{
+
+ Entry->Next = ListHead->Next;
+ ListHead->Next = Entry;
+ return;
+}
+
+
+
+
+
+#pragma warning(pop)
+
+#line 13642 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlIntegerToUnicodeString (
+ ULONG Value,
+ ULONG Base,
+ PUNICODE_STRING String
+ );
+#line 13661 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlInt64ToUnicodeString (
+ ULONGLONG Value,
+ ULONG Base,
+ PUNICODE_STRING String
+ );
+#line 13674 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+#line 13680 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlUnicodeStringToInteger (
+ PCUNICODE_STRING String,
+ ULONG Base,
+ PULONG Value
+ );
+#line 13692 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+NTSTATUS
+RtlUnicodeStringToInt64 (
+ PCUNICODE_STRING String,
+ ULONG Base,
+ PLONG64 Number,
+ PWSTR *EndPointer
+ );
+#line 13702 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 13722 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+extern BOOLEAN (*NlsMbCodePageTag);
+extern BOOLEAN (*NlsMbOemCodePageTag);
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlInitString(
+ PSTRING DestinationString,
+ PCSZ SourceString
+ );
+#line 13738 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlInitAnsiString(
+ PANSI_STRING DestinationString,
+ PCSZ SourceString
+ );
+#line 13749 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlInitUTF8String(
+ PUTF8_STRING DestinationString,
+ PCSZ SourceString
+ );
+#line 13760 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlInitUnicodeString(
+ PUNICODE_STRING DestinationString,
+ PCWSTR SourceString
+ );
+
+
+
+
+
+
+#pragma prefast(push)
+#pragma prefast(disable : 6101, "Out parameter is not written fully or at all.")
+
+__forceinline
+void
+RtlSanitizeUnicodeStringPadding(
+ PUNICODE_STRING String
+ )
+{
+
+
+
+ ULONG PaddingSize;
+ ULONG PaddingStart;
+
+ PaddingStart = ((LONG)(LONG_PTR)&(((UNICODE_STRING *)0)->MaximumLength)) +
+ sizeof(String->MaximumLength);
+
+ PaddingSize = ((LONG)(LONG_PTR)&(((UNICODE_STRING *)0)->Buffer)) - PaddingStart;
+
+ memset((PCH)String + PaddingStart, 0, PaddingSize);
+
+
+
+
+
+#line 13808 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+}
+
+#pragma prefast(pop)
+
+
+
+
+
+
+__forceinline
+void
+RtlInitEmptyUnicodeString(
+ PUNICODE_STRING UnicodeString,
+
+
+ PWCHAR Buffer,
+ USHORT BufferSize
+ )
+{
+ memset(UnicodeString, 0, sizeof(*UnicodeString));
+ UnicodeString->MaximumLength = BufferSize;
+ UnicodeString->Buffer = Buffer;
+}
+
+
+
+
+
+
+__forceinline
+void
+RtlInitEmptyAnsiString(
+ PANSI_STRING AnsiString,
+ PCHAR Buffer,
+ USHORT BufferSize
+ )
+{
+ memset(AnsiString, 0, sizeof(*AnsiString));
+ AnsiString->MaximumLength = BufferSize;
+ AnsiString->Buffer = Buffer;
+}
+#line 13851 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+RTL_QUERY_REGISTRY_ROUTINE(
+ PWSTR ValueName,
+ ULONG ValueType,
+ PVOID ValueData,
+ ULONG ValueLength,
+ PVOID Context,
+ PVOID EntryContext
+ );
+typedef RTL_QUERY_REGISTRY_ROUTINE *PRTL_QUERY_REGISTRY_ROUTINE;
+
+typedef struct _RTL_QUERY_REGISTRY_TABLE {
+ PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
+ ULONG Flags;
+ PWSTR Name;
+ PVOID EntryContext;
+ ULONG DefaultType;
+ PVOID DefaultData;
+ ULONG DefaultLength;
+
+} RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlQueryRegistryValues(
+ ULONG RelativeTo,
+ PCWSTR Path,
+
+ PRTL_QUERY_REGISTRY_TABLE QueryTable,
+ PVOID Context,
+ PVOID Environment
+ );
+#line 13959 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+#line 13967 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+PVOID
+__stdcall
+MmGetSystemRoutineAddress (
+ PUNICODE_STRING SystemRoutineName
+ );
+
+
+__forceinline
+NTSTATUS
+RtlxQueryRegistryValues(
+ ULONG RelativeTo,
+ PCWSTR Path,
+
+ PRTL_QUERY_REGISTRY_TABLE QueryTable,
+ PVOID Context,
+ PVOID Environment
+ )
+{
+ typedef NTSTATUS __stdcall QUERYFN(
+ ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID);
+
+ UNICODE_STRING FunctionName;
+ QUERYFN* QueryRoutine;
+
+ RtlInitUnicodeString(&FunctionName, L"RtlQueryRegistryValuesEx");
+
+#pragma warning(push)
+#pragma warning(disable: 4055)
+
+ QueryRoutine = (QUERYFN*)MmGetSystemRoutineAddress(&FunctionName);
+
+#pragma warning(pop)
+
+ if (QueryRoutine == ((void *)0)) {
+ QueryRoutine = &RtlQueryRegistryValues;
+ }
+
+ return QueryRoutine(RelativeTo,
+ Path,
+ QueryTable,
+ Context,
+ Environment);
+}
+
+#line 14012 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+#line 14017 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlWriteRegistryValue(
+ ULONG RelativeTo,
+ PCWSTR Path,
+ PCWSTR ValueName,
+ ULONG ValueType,
+ PVOID ValueData,
+ ULONG ValueLength
+ );
+#line 14032 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlDeleteRegistryValue(
+ ULONG RelativeTo,
+ PCWSTR Path,
+ PCWSTR ValueName
+ );
+#line 14044 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlCreateRegistryKey(
+ ULONG RelativeTo,
+ PWSTR Path
+ );
+#line 14055 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlCheckRegistryKey(
+ ULONG RelativeTo,
+ PWSTR Path
+ );
+#line 14067 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlInitAnsiStringEx(
+ PANSI_STRING DestinationString,
+ PCSZ SourceString
+ );
+#line 14096 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlInitStringEx(
+ PSTRING DestinationString,
+ PCSZ SourceString
+ );
+#line 14107 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlInitUTF8StringEx(
+ PUTF8_STRING DestinationString,
+ PCSZ SourceString
+ );
+#line 14118 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlAnsiStringToUnicodeString(
+
+
+ PUNICODE_STRING DestinationString,
+ PCANSI_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+#line 14140 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+#line 14147 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 14150 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlUnicodeStringToAnsiString(
+
+
+ PANSI_STRING DestinationString,
+ PCUNICODE_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+#line 14163 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+LONG
+__stdcall
+RtlCompareUnicodeStrings(
+ PCWCH String1,
+ SIZE_T String1Length,
+ PCWCH String2,
+ SIZE_T String2Length,
+ BOOLEAN CaseInSensitive
+ );
+
+
+
+__declspec(dllimport)
+LONG
+__stdcall
+RtlCompareUnicodeString(
+ PCUNICODE_STRING String1,
+ PCUNICODE_STRING String2,
+ BOOLEAN CaseInSensitive
+ );
+#line 14194 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlEqualUnicodeString(
+ PCUNICODE_STRING String1,
+ PCUNICODE_STRING String2,
+ BOOLEAN CaseInSensitive
+ );
+#line 14208 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlHashUnicodeString(
+ PCUNICODE_STRING String,
+ BOOLEAN CaseInSensitive,
+ ULONG HashAlgorithm,
+ PULONG HashValue
+ );
+
+#line 14228 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+#line 14239 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+__declspec(dllimport)
+void
+__stdcall
+RtlCopyUnicodeString(
+ PUNICODE_STRING DestinationString,
+ PCUNICODE_STRING SourceString
+ );
+#line 14247 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+#line 14256 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 14259 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlAppendUnicodeStringToString (
+ PUNICODE_STRING Destination,
+ PCUNICODE_STRING Source
+ );
+#line 14267 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+#line 14276 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 14279 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlAppendUnicodeToString (
+ PUNICODE_STRING Destination,
+ PCWSTR Source
+ );
+#line 14287 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+WCHAR
+__stdcall
+RtlUpcaseUnicodeChar(
+ WCHAR SourceCharacter
+ );
+#line 14300 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+WCHAR
+__stdcall
+RtlDowncaseUnicodeChar(
+ WCHAR SourceCharacter
+ );
+#line 14310 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlFreeUnicodeString(
+
+ PUNICODE_STRING UnicodeString
+ );
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlFreeAnsiString(
+
+ PANSI_STRING AnsiString
+ );
+#line 14335 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlFreeUTF8String(
+
+ PUTF8_STRING utf8String
+ );
+#line 14346 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlxUnicodeStringToAnsiSize(
+ PCUNICODE_STRING UnicodeString
+ );
+#line 14357 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlxAnsiStringToUnicodeSize(
+ PCANSI_STRING AnsiString
+ );
+#line 14381 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlUnicodeToUTF8N(
+ PCHAR UTF8StringDestination,
+ ULONG UTF8StringMaxByteCount,
+ PULONG UTF8StringActualByteCount,
+ PCWCH UnicodeStringSource,
+ ULONG UnicodeStringByteCount
+ );
+#line 14409 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlUTF8ToUnicodeN(
+ PWSTR UnicodeStringDestination,
+ ULONG UnicodeStringMaxByteCount,
+ PULONG UnicodeStringActualByteCount,
+ PCCH UTF8StringSource,
+ ULONG UTF8StringByteCount
+ );
+#line 14424 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+#line 14429 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 14432 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlUnicodeStringToUTF8String(
+
+
+ PUTF8_STRING DestinationString,
+ PCUNICODE_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlUTF8StringToUnicodeString(
+
+
+ PUNICODE_STRING DestinationString,
+ PUTF8_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+#line 14458 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 58 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+
+
+
+
+
+
+
+
+#line 67 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(pop)
+#line 14462 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+#line 14468 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+#line 14472 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+ #line 14484 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+#line 14485 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlStringFromGUID(
+ const GUID * const Guid,
+
+ PUNICODE_STRING GuidString
+ );
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlGUIDFromString(
+ PCUNICODE_STRING GuidString,
+ GUID* Guid
+ );
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlGenerateClass5Guid(
+ const GUID * const NamespaceGuid,
+ PVOID Buffer,
+ ULONG BufferSize,
+ GUID* Guid
+ );
+
+#line 14530 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 14560 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+volatile void*
+__cdecl
+RtlCopyDeviceMemory (
+ volatile void* Destination,
+ volatile const void* Source,
+ size_t Length
+ );
+
+volatile void*
+__cdecl
+RtlCopyVolatileMemory (
+ volatile void* Destination,
+ volatile const void* Source,
+ size_t Length
+ );
+
+volatile void*
+__cdecl
+RtlMoveVolatileMemory (
+ volatile void* Destination,
+ volatile const void* Source,
+ size_t Length
+ );
+
+volatile void*
+__cdecl
+RtlSetVolatileMemory (
+ volatile void* Destination,
+ int Fill,
+ size_t Length
+ );
+
+__forceinline
+volatile void*
+RtlFillVolatileMemory (
+ volatile void* Destination,
+ size_t Length,
+ int Fill
+ )
+{
+ return RtlSetVolatileMemory(Destination, Fill, Length);
+}
+
+__forceinline
+volatile void*
+RtlZeroVolatileMemory (
+ volatile void* Destination,
+ size_t Length
+ )
+{
+ return RtlFillVolatileMemory(Destination, Length, 0);
+}
+
+__forceinline
+volatile void*
+RtlSecureZeroMemory2 (
+ volatile void* Destination,
+ size_t Length
+ )
+{
+ return RtlZeroVolatileMemory(Destination, Length);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 14658 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+__forceinline
+volatile void*
+RtlFillDeviceMemory (
+ volatile void* Destination,
+ size_t Length,
+ int Fill
+ )
+{
+ return RtlSetVolatileMemory(Destination, Fill, Length);
+}
+
+
+
+
+
+#line 14675 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+__forceinline
+volatile void*
+RtlZeroDeviceMemory (
+ volatile void* Destination,
+ size_t Length
+ )
+{
+ return RtlFillDeviceMemory(Destination, Length, 0);
+}
+
+#line 14687 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 14689 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__forceinline
+int
+RtlConstantTimeEqualMemory(
+ const void* v1,
+ const void* v2,
+ unsigned long len
+ )
+{
+ char x = 0;
+ unsigned long i = 0;
+
+
+ volatile const char* p1 = (volatile const char*) v1;
+ volatile const char* p2 = (volatile const char*) v2;
+
+ for (; i < len; i += 1) {
+
+
+
+
+
+
+
+
+
+
+
+
+#line 14724 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ x |= p1[i] ^ p2[i];
+
+#line 14728 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ }
+
+ return x == 0;
+}
+
+#line 14735 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+#line 14743 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+__forceinline
+PVOID
+RtlSecureZeroMemory(
+ PVOID ptr,
+ SIZE_T cnt
+ )
+{
+ volatile char *vptr = (volatile char *)ptr;
+
+
+
+ __stosb((PUCHAR)((ULONG64)vptr), 0, cnt);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 14776 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ return ptr;
+}
+
+#line 14781 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 14783 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlCopyMemoryNonTemporal (
+ void __unaligned *Destination,
+ const void __unaligned *Source,
+ SIZE_T Length
+ );
+
+__declspec(dllimport)
+void
+__stdcall
+RtlFillMemoryNonTemporal (
+ void __unaligned *Destination,
+ SIZE_T Length,
+ const UCHAR Value
+ );
+
+
+
+
+
+
+#line 14816 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+
+RtlPrefetchMemoryNonTemporal(
+ PVOID Source,
+ SIZE_T Length
+ );
+
+#line 14827 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 14855 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 14857 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+DbgBreakPointWithStatus(
+ ULONG Status
+ );
+#line 14869 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 14889 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+#line 14899 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ULONG
+__cdecl
+DbgPrint (
+ PCSTR Format,
+ ...
+ );
+
+
+
+
+__declspec(dllimport)
+ULONG
+__cdecl
+DbgPrintEx (
+ ULONG ComponentId,
+ ULONG Level,
+ PCSTR Format,
+ ...
+ );
+#line 14924 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+vDbgPrintEx(
+ ULONG ComponentId,
+ ULONG Level,
+ PCCH Format,
+ va_list arglist
+ );
+
+__declspec(dllimport)
+ULONG
+__stdcall
+vDbgPrintExWithPrefix (
+ PCCH Prefix,
+ ULONG ComponentId,
+ ULONG Level,
+ PCCH Format,
+ va_list arglist
+ );
+
+#line 14952 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 14954 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+ULONG
+__cdecl
+DbgPrintReturnControlC (
+ PCCH Format,
+ ...
+ );
+#line 14966 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+DbgQueryDebugFilterState (
+ ULONG ComponentId,
+ ULONG Level
+ );
+#line 14976 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+DbgSetDebugFilterState (
+ ULONG ComponentId,
+ ULONG Level,
+ BOOLEAN State
+ );
+#line 14987 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+typedef
+void
+(*PDEBUG_PRINT_CALLBACK) (
+ PSTRING Output,
+ ULONG ComponentId,
+ ULONG Level
+ );
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+DbgSetDebugPrintCallback (
+ PDEBUG_PRINT_CALLBACK DebugPrintCallback,
+ BOOLEAN Enable
+ );
+#line 15005 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 15007 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline
+LARGE_INTEGER
+__stdcall
+RtlLargeIntegerAdd (
+ LARGE_INTEGER Addend1,
+ LARGE_INTEGER Addend2
+ )
+{
+ LARGE_INTEGER Sum;
+
+ Sum.QuadPart = Addend1.QuadPart + Addend2.QuadPart;
+ return Sum;
+}
+
+
+
+
+
+
+
+__inline
+LARGE_INTEGER
+__stdcall
+RtlEnlargedIntegerMultiply (
+ LONG Multiplicand,
+ LONG Multiplier
+ )
+{
+ LARGE_INTEGER Product;
+
+ Product.QuadPart = (LONGLONG)Multiplicand * (ULONGLONG)Multiplier;
+ return Product;
+}
+
+
+
+
+
+
+
+__inline
+LARGE_INTEGER
+__stdcall
+RtlEnlargedUnsignedMultiply (
+ ULONG Multiplicand,
+ ULONG Multiplier
+ )
+{
+ LARGE_INTEGER Product;
+
+ Product.QuadPart = (ULONGLONG)Multiplicand * (ULONGLONG)Multiplier;
+ return Product;
+}
+
+
+
+
+
+
+
+__inline
+ULONG
+__stdcall
+RtlEnlargedUnsignedDivide (
+ ULARGE_INTEGER Dividend,
+ ULONG Divisor,
+ PULONG Remainder
+ )
+{
+ ULONG Quotient;
+
+ Quotient = (ULONG)(Dividend.QuadPart / Divisor);
+ if (( (CHAR *)((ULONG_PTR)(Remainder)) != (CHAR *)(((void *)0)) )) {
+ *Remainder = (ULONG)(Dividend.QuadPart % Divisor);
+ }
+
+ return Quotient;
+}
+
+
+
+
+
+
+
+
+__inline
+LARGE_INTEGER
+__stdcall
+RtlLargeIntegerNegate (
+ LARGE_INTEGER Subtrahend
+ )
+{
+ LARGE_INTEGER Difference;
+
+ Difference.QuadPart = -Subtrahend.QuadPart;
+ return Difference;
+}
+
+
+
+
+
+
+
+__inline
+LARGE_INTEGER
+__stdcall
+RtlLargeIntegerSubtract (
+ LARGE_INTEGER Minuend,
+ LARGE_INTEGER Subtrahend
+ )
+{
+ LARGE_INTEGER Difference;
+
+ Difference.QuadPart = Minuend.QuadPart - Subtrahend.QuadPart;
+ return Difference;
+}
+
+
+
+
+
+
+
+
+
+__inline
+LARGE_INTEGER
+__stdcall
+RtlExtendedMagicDivide (
+ LARGE_INTEGER Dividend,
+ LARGE_INTEGER MagicDivisor,
+ CCHAR ShiftCount
+ )
+
+{
+
+ LARGE_INTEGER Quotient;
+
+ if (Dividend.QuadPart >= 0) {
+ Quotient.QuadPart = __umulh(Dividend.QuadPart,
+ (ULONG64)MagicDivisor.QuadPart);
+
+ } else {
+ Quotient.QuadPart = __umulh(-Dividend.QuadPart,
+ (ULONG64)MagicDivisor.QuadPart);
+ }
+
+ Quotient.QuadPart = (ULONG64)Quotient.QuadPart >> ShiftCount;
+ if (Dividend.QuadPart < 0) {
+ Quotient.QuadPart = - Quotient.QuadPart;
+ }
+
+ return Quotient;
+}
+
+#line 15180 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 15197 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+__inline
+LARGE_INTEGER
+__stdcall
+RtlExtendedLargeIntegerDivide (
+ LARGE_INTEGER Dividend,
+ ULONG Divisor,
+ PULONG Remainder
+ )
+{
+ LARGE_INTEGER Quotient;
+
+ Quotient.QuadPart = (ULONG64)Dividend.QuadPart / Divisor;
+ if (( (CHAR *)((ULONG_PTR)(Remainder)) != (CHAR *)(((void *)0)) )) {
+ *Remainder = (ULONG)((ULONG64)Dividend.QuadPart % Divisor);
+ }
+
+ return Quotient;
+}
+
+
+
+
+
+
+
+__inline
+LARGE_INTEGER
+__stdcall
+RtlExtendedIntegerMultiply (
+ LARGE_INTEGER Multiplicand,
+ LONG Multiplier
+ )
+{
+ LARGE_INTEGER Product;
+
+ Product.QuadPart = Multiplicand.QuadPart * Multiplier;
+ return Product;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 15286 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+#line 15295 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+__inline
+LARGE_INTEGER
+__stdcall
+RtlConvertLongToLargeInteger (
+ LONG SignedInteger
+ )
+{
+ LARGE_INTEGER Result;
+
+ Result.QuadPart = SignedInteger;
+ return Result;
+}
+
+
+
+
+
+
+__inline
+LARGE_INTEGER
+__stdcall
+RtlConvertUlongToLargeInteger (
+ ULONG UnsignedInteger
+ )
+{
+ LARGE_INTEGER Result;
+
+ Result.QuadPart = UnsignedInteger;
+ return Result;
+}
+
+
+
+
+
+
+
+__inline
+LARGE_INTEGER
+__stdcall
+RtlLargeIntegerShiftLeft (
+ LARGE_INTEGER LargeInteger,
+ CCHAR ShiftCount
+ )
+{
+ LARGE_INTEGER Result;
+
+ Result.QuadPart = LargeInteger.QuadPart << ShiftCount;
+ return Result;
+}
+
+
+
+__inline
+LARGE_INTEGER
+__stdcall
+RtlLargeIntegerShiftRight (
+ LARGE_INTEGER LargeInteger,
+ CCHAR ShiftCount
+ )
+{
+ LARGE_INTEGER Result;
+
+ Result.QuadPart = (ULONG64)LargeInteger.QuadPart >> ShiftCount;
+ return Result;
+}
+
+
+
+__inline
+LARGE_INTEGER
+__stdcall
+RtlLargeIntegerArithmeticShift (
+ LARGE_INTEGER LargeInteger,
+ CCHAR ShiftCount
+ )
+{
+ LARGE_INTEGER Result;
+
+ Result.QuadPart = LargeInteger.QuadPart >> ShiftCount;
+ return Result;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 15405 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 15461 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+typedef struct _TIME_FIELDS {
+ CSHORT Year;
+ CSHORT Month;
+ CSHORT Day;
+ CSHORT Hour;
+ CSHORT Minute;
+ CSHORT Second;
+ CSHORT Milliseconds;
+ CSHORT Weekday;
+} TIME_FIELDS;
+typedef TIME_FIELDS *PTIME_FIELDS;
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlTimeToTimeFields (
+ PLARGE_INTEGER Time,
+ PTIME_FIELDS TimeFields
+ );
+#line 15489 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlTimeFieldsToTime (
+ PTIME_FIELDS TimeFields,
+ PLARGE_INTEGER Time
+ );
+#line 15504 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 15577 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 15626 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 15669 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 15705 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 15747 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 15795 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+typedef struct _RTL_BITMAP {
+ ULONG SizeOfBitMap;
+ PULONG Buffer;
+} RTL_BITMAP;
+typedef RTL_BITMAP *PRTL_BITMAP;
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlInitializeBitMap (
+ PRTL_BITMAP BitMapHeader,
+ PULONG BitMapBuffer,
+ ULONG SizeOfBitMap
+ );
+#line 15829 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlClearBit (
+ PRTL_BITMAP BitMapHeader,
+ ULONG BitNumber
+ );
+#line 15844 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlSetBit (
+ PRTL_BITMAP BitMapHeader,
+ ULONG BitNumber
+ );
+#line 15854 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlTestBit (
+ PRTL_BITMAP BitMapHeader,
+ ULONG BitNumber
+ );
+#line 15865 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlClearAllBits (
+ PRTL_BITMAP BitMapHeader
+ );
+#line 15879 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlSetAllBits (
+ PRTL_BITMAP BitMapHeader
+ );
+#line 15888 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlFindClearBits (
+ PRTL_BITMAP BitMapHeader,
+ ULONG NumberToFind,
+ ULONG HintIndex
+ );
+#line 15912 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlFindSetBits (
+ PRTL_BITMAP BitMapHeader,
+ ULONG NumberToFind,
+ ULONG HintIndex
+ );
+#line 15926 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlFindClearBitsAndSet (
+ PRTL_BITMAP BitMapHeader,
+ ULONG NumberToFind,
+ ULONG HintIndex
+ );
+#line 15950 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlFindSetBitsAndClear (
+ PRTL_BITMAP BitMapHeader,
+ ULONG NumberToFind,
+ ULONG HintIndex
+ );
+#line 15963 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlClearBits (
+ PRTL_BITMAP BitMapHeader,
+ ULONG StartingIndex,
+ ULONG NumberToClear
+ );
+#line 15979 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlSetBits (
+ PRTL_BITMAP BitMapHeader,
+ ULONG StartingIndex,
+ ULONG NumberToSet
+ );
+#line 15990 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+typedef struct _RTL_BITMAP_RUN {
+
+ ULONG StartingIndex;
+ ULONG NumberOfBits;
+
+} RTL_BITMAP_RUN;
+typedef RTL_BITMAP_RUN *PRTL_BITMAP_RUN;
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlFindClearRuns (
+ PRTL_BITMAP BitMapHeader,
+ PRTL_BITMAP_RUN RunArray,
+ ULONG SizeOfRunArray,
+ BOOLEAN LocateLongestRuns
+ );
+#line 16018 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlFindLongestRunClear (
+ PRTL_BITMAP BitMapHeader,
+ PULONG StartingIndex
+ );
+#line 16037 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlFindFirstRunClear (
+ PRTL_BITMAP BitMapHeader,
+ PULONG StartingIndex
+ );
+#line 16054 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__forceinline
+BOOLEAN
+RtlCheckBit (
+ PRTL_BITMAP BitMapHeader,
+ ULONG BitPosition
+ )
+
+{
+ return _bittest64((LONG64 const *)BitMapHeader->Buffer, (LONG64)BitPosition);
+}
+
+
+
+
+
+#line 16091 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlNumberOfClearBitsInRange (
+ PRTL_BITMAP BitMapHeader,
+ ULONG StartingIndex,
+ ULONG Length
+ );
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlNumberOfSetBitsInRange (
+ PRTL_BITMAP BitMapHeader,
+ ULONG StartingIndex,
+ ULONG Length
+ );
+
+#line 16118 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlNumberOfClearBits (
+ PRTL_BITMAP BitMapHeader
+ );
+#line 16127 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlNumberOfSetBits (
+ PRTL_BITMAP BitMapHeader
+ );
+#line 16136 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlAreBitsClear (
+ PRTL_BITMAP BitMapHeader,
+ ULONG StartingIndex,
+ ULONG Length
+ );
+#line 16153 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlAreBitsSet (
+ PRTL_BITMAP BitMapHeader,
+ ULONG StartingIndex,
+ ULONG Length
+ );
+#line 16165 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlFindNextForwardRunClear (
+ PRTL_BITMAP BitMapHeader,
+ ULONG FromIndex,
+ PULONG StartingRunIndex
+ );
+#line 16176 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlFindLastBackwardRunClear (
+ PRTL_BITMAP BitMapHeader,
+ ULONG FromIndex,
+ PULONG StartingRunIndex
+ );
+#line 16187 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+CCHAR
+__stdcall
+RtlFindLeastSignificantBit (
+ ULONGLONG Set
+ );
+#line 16204 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+CCHAR
+__stdcall
+RtlFindMostSignificantBit (
+ ULONGLONG Set
+ );
+#line 16215 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlNumberOfSetBitsUlongPtr (
+ ULONG_PTR Target
+ );
+#line 16229 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlCopyBitMap (
+ PRTL_BITMAP Source,
+ PRTL_BITMAP Destination,
+ ULONG TargetBit
+ );
+
+__declspec(dllimport)
+void
+__stdcall
+RtlExtractBitMap (
+ PRTL_BITMAP Source,
+ PRTL_BITMAP Destination,
+ ULONG TargetBit,
+ ULONG NumberOfBits
+ );
+
+#line 16252 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlCreateSecurityDescriptor (
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ ULONG Revision
+ );
+#line 16293 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlValidSecurityDescriptor (
+ PSECURITY_DESCRIPTOR SecurityDescriptor
+ );
+#line 16305 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlLengthSecurityDescriptor (
+ PSECURITY_DESCRIPTOR SecurityDescriptor
+ );
+#line 16315 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlValidRelativeSecurityDescriptor (
+ PSECURITY_DESCRIPTOR SecurityDescriptorInput,
+ ULONG SecurityDescriptorLength,
+ SECURITY_INFORMATION RequiredInformation
+ );
+#line 16328 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlSetDaclSecurityDescriptor (
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ BOOLEAN DaclPresent,
+ PACL Dacl,
+ BOOLEAN DaclDefaulted
+ );
+#line 16342 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ unsigned short __cdecl _byteswap_ushort( unsigned short);
+ unsigned long __cdecl _byteswap_ulong ( unsigned long);
+ unsigned __int64 __cdecl _byteswap_uint64( unsigned __int64);
+
+
+
+#pragma intrinsic(_byteswap_ushort)
+#pragma intrinsic(_byteswap_ulong)
+#pragma intrinsic(_byteswap_uint64)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 16419 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+typedef struct _OSVERSIONINFOA {
+ ULONG dwOSVersionInfoSize;
+ ULONG dwMajorVersion;
+ ULONG dwMinorVersion;
+ ULONG dwBuildNumber;
+ ULONG dwPlatformId;
+ CHAR szCSDVersion[ 128 ];
+} OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA;
+
+typedef struct _OSVERSIONINFOW {
+ ULONG dwOSVersionInfoSize;
+ ULONG dwMajorVersion;
+ ULONG dwMinorVersion;
+ ULONG dwBuildNumber;
+ ULONG dwPlatformId;
+ WCHAR szCSDVersion[ 128 ];
+} OSVERSIONINFOW, *POSVERSIONINFOW, *LPOSVERSIONINFOW, RTL_OSVERSIONINFOW, *PRTL_OSVERSIONINFOW;
+
+typedef OSVERSIONINFOW OSVERSIONINFO;
+typedef POSVERSIONINFOW POSVERSIONINFO;
+typedef LPOSVERSIONINFOW LPOSVERSIONINFO;
+
+
+
+
+#line 16447 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef struct _OSVERSIONINFOEXA {
+ ULONG dwOSVersionInfoSize;
+ ULONG dwMajorVersion;
+ ULONG dwMinorVersion;
+ ULONG dwBuildNumber;
+ ULONG dwPlatformId;
+ CHAR szCSDVersion[ 128 ];
+ USHORT wServicePackMajor;
+ USHORT wServicePackMinor;
+ USHORT wSuiteMask;
+ UCHAR wProductType;
+ UCHAR wReserved;
+} OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA;
+typedef struct _OSVERSIONINFOEXW {
+ ULONG dwOSVersionInfoSize;
+ ULONG dwMajorVersion;
+ ULONG dwMinorVersion;
+ ULONG dwBuildNumber;
+ ULONG dwPlatformId;
+ WCHAR szCSDVersion[ 128 ];
+ USHORT wServicePackMajor;
+ USHORT wServicePackMinor;
+ USHORT wSuiteMask;
+ UCHAR wProductType;
+ UCHAR wReserved;
+} OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW, RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW;
+
+typedef OSVERSIONINFOEXW OSVERSIONINFOEX;
+typedef POSVERSIONINFOEXW POSVERSIONINFOEX;
+typedef LPOSVERSIONINFOEXW LPOSVERSIONINFOEX;
+
+
+
+
+#line 16483 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+ULONGLONG
+__stdcall
+VerSetConditionMask(
+ ULONGLONG ConditionMask,
+ ULONG TypeMask,
+ UCHAR Condition
+ );
+
+#line 16559 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 16561 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 16563 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+#pragma endregion
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlGetVersion(
+
+
+
+#line 16581 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+ PRTL_OSVERSIONINFOW lpVersionInformation
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlVerifyVersionInfo(
+ PRTL_OSVERSIONINFOEXW VersionInfo,
+ ULONG TypeMask,
+ ULONGLONG ConditionMask
+ );
+#line 16595 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+typedef BOOLEAN (*PFN_RTL_IS_NTDDI_VERSION_AVAILABLE)(
+ ULONG Version
+ );
+
+typedef BOOLEAN (*PFN_RTL_IS_SERVICE_PACK_VERSION_INSTALLED)(
+ ULONG Version
+ );
+
+BOOLEAN
+RtlIsNtDdiVersionAvailable (
+ ULONG Version
+ );
+
+BOOLEAN
+RtlIsServicePackVersionInstalled (
+ ULONG Version
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\dpfilter.h"
+
+
+
+
+
+
+
+
+
+
+typedef enum _DPFLTR_TYPE {
+ DPFLTR_SYSTEM_ID = 0,
+ DPFLTR_SMSS_ID = 1,
+ DPFLTR_SETUP_ID = 2,
+ DPFLTR_NTFS_ID = 3,
+ DPFLTR_FSTUB_ID = 4,
+ DPFLTR_CRASHDUMP_ID = 5,
+ DPFLTR_CDAUDIO_ID = 6,
+ DPFLTR_CDROM_ID = 7,
+ DPFLTR_CLASSPNP_ID = 8,
+ DPFLTR_DISK_ID = 9,
+ DPFLTR_REDBOOK_ID = 10,
+ DPFLTR_STORPROP_ID = 11,
+ DPFLTR_SCSIPORT_ID = 12,
+ DPFLTR_SCSIMINIPORT_ID = 13,
+ DPFLTR_CONFIG_ID = 14,
+ DPFLTR_I8042PRT_ID = 15,
+ DPFLTR_SERMOUSE_ID = 16,
+ DPFLTR_LSERMOUS_ID = 17,
+ DPFLTR_KBDHID_ID = 18,
+ DPFLTR_MOUHID_ID = 19,
+ DPFLTR_KBDCLASS_ID = 20,
+ DPFLTR_MOUCLASS_ID = 21,
+ DPFLTR_TWOTRACK_ID = 22,
+ DPFLTR_WMILIB_ID = 23,
+ DPFLTR_ACPI_ID = 24,
+ DPFLTR_AMLI_ID = 25,
+ DPFLTR_HALIA64_ID = 26,
+ DPFLTR_VIDEO_ID = 27,
+ DPFLTR_SVCHOST_ID = 28,
+ DPFLTR_VIDEOPRT_ID = 29,
+ DPFLTR_TCPIP_ID = 30,
+ DPFLTR_DMSYNTH_ID = 31,
+ DPFLTR_NTOSPNP_ID = 32,
+ DPFLTR_FASTFAT_ID = 33,
+ DPFLTR_SAMSS_ID = 34,
+ DPFLTR_PNPMGR_ID = 35,
+ DPFLTR_NETAPI_ID = 36,
+ DPFLTR_SCSERVER_ID = 37,
+ DPFLTR_SCCLIENT_ID = 38,
+ DPFLTR_SERIAL_ID = 39,
+ DPFLTR_SERENUM_ID = 40,
+ DPFLTR_UHCD_ID = 41,
+ DPFLTR_RPCPROXY_ID = 42,
+ DPFLTR_AUTOCHK_ID = 43,
+ DPFLTR_DCOMSS_ID = 44,
+ DPFLTR_UNIMODEM_ID = 45,
+ DPFLTR_SIS_ID = 46,
+ DPFLTR_FLTMGR_ID = 47,
+ DPFLTR_WMICORE_ID = 48,
+ DPFLTR_BURNENG_ID = 49,
+ DPFLTR_IMAPI_ID = 50,
+ DPFLTR_SXS_ID = 51,
+ DPFLTR_FUSION_ID = 52,
+ DPFLTR_IDLETASK_ID = 53,
+ DPFLTR_SOFTPCI_ID = 54,
+ DPFLTR_TAPE_ID = 55,
+ DPFLTR_MCHGR_ID = 56,
+ DPFLTR_IDEP_ID = 57,
+ DPFLTR_PCIIDE_ID = 58,
+ DPFLTR_FLOPPY_ID = 59,
+ DPFLTR_FDC_ID = 60,
+ DPFLTR_TERMSRV_ID = 61,
+ DPFLTR_W32TIME_ID = 62,
+ DPFLTR_PREFETCHER_ID = 63,
+ DPFLTR_RSFILTER_ID = 64,
+ DPFLTR_FCPORT_ID = 65,
+ DPFLTR_PCI_ID = 66,
+ DPFLTR_DMIO_ID = 67,
+ DPFLTR_DMCONFIG_ID = 68,
+ DPFLTR_DMADMIN_ID = 69,
+ DPFLTR_WSOCKTRANSPORT_ID = 70,
+ DPFLTR_VSS_ID = 71,
+ DPFLTR_PNPMEM_ID = 72,
+ DPFLTR_PROCESSOR_ID = 73,
+ DPFLTR_DMSERVER_ID = 74,
+ DPFLTR_SR_ID = 75,
+ DPFLTR_INFINIBAND_ID = 76,
+ DPFLTR_IHVDRIVER_ID = 77,
+ DPFLTR_IHVVIDEO_ID = 78,
+ DPFLTR_IHVAUDIO_ID = 79,
+ DPFLTR_IHVNETWORK_ID = 80,
+ DPFLTR_IHVSTREAMING_ID = 81,
+ DPFLTR_IHVBUS_ID = 82,
+ DPFLTR_HPS_ID = 83,
+ DPFLTR_RTLTHREADPOOL_ID = 84,
+ DPFLTR_LDR_ID = 85,
+ DPFLTR_TCPIP6_ID = 86,
+ DPFLTR_ISAPNP_ID = 87,
+ DPFLTR_SHPC_ID = 88,
+ DPFLTR_STORPORT_ID = 89,
+ DPFLTR_STORMINIPORT_ID = 90,
+ DPFLTR_PRINTSPOOLER_ID = 91,
+ DPFLTR_VSSDYNDISK_ID = 92,
+ DPFLTR_VERIFIER_ID = 93,
+ DPFLTR_VDS_ID = 94,
+ DPFLTR_VDSBAS_ID = 95,
+ DPFLTR_VDSDYN_ID = 96,
+ DPFLTR_VDSDYNDR_ID = 97,
+ DPFLTR_VDSLDR_ID = 98,
+ DPFLTR_VDSUTIL_ID = 99,
+ DPFLTR_DFRGIFC_ID = 100,
+ DPFLTR_DEFAULT_ID = 101,
+ DPFLTR_MM_ID = 102,
+ DPFLTR_DFSC_ID = 103,
+ DPFLTR_WOW64_ID = 104,
+ DPFLTR_ALPC_ID = 105,
+ DPFLTR_WDI_ID = 106,
+ DPFLTR_PERFLIB_ID = 107,
+ DPFLTR_KTM_ID = 108,
+ DPFLTR_IOSTRESS_ID = 109,
+ DPFLTR_HEAP_ID = 110,
+ DPFLTR_WHEA_ID = 111,
+ DPFLTR_USERGDI_ID = 112,
+ DPFLTR_MMCSS_ID = 113,
+ DPFLTR_TPM_ID = 114,
+ DPFLTR_THREADORDER_ID = 115,
+ DPFLTR_ENVIRON_ID = 116,
+ DPFLTR_EMS_ID = 117,
+ DPFLTR_WDT_ID = 118,
+ DPFLTR_FVEVOL_ID = 119,
+ DPFLTR_NDIS_ID = 120,
+ DPFLTR_NVCTRACE_ID = 121,
+ DPFLTR_LUAFV_ID = 122,
+ DPFLTR_APPCOMPAT_ID = 123,
+ DPFLTR_USBSTOR_ID = 124,
+ DPFLTR_SBP2PORT_ID = 125,
+ DPFLTR_COVERAGE_ID = 126,
+ DPFLTR_CACHEMGR_ID = 127,
+ DPFLTR_MOUNTMGR_ID = 128,
+ DPFLTR_CFR_ID = 129,
+ DPFLTR_TXF_ID = 130,
+ DPFLTR_KSECDD_ID = 131,
+ DPFLTR_FLTREGRESS_ID = 132,
+ DPFLTR_MPIO_ID = 133,
+ DPFLTR_MSDSM_ID = 134,
+ DPFLTR_UDFS_ID = 135,
+ DPFLTR_PSHED_ID = 136,
+ DPFLTR_STORVSP_ID = 137,
+ DPFLTR_LSASS_ID = 138,
+ DPFLTR_SSPICLI_ID = 139,
+ DPFLTR_CNG_ID = 140,
+ DPFLTR_EXFAT_ID = 141,
+ DPFLTR_FILETRACE_ID = 142,
+ DPFLTR_XSAVE_ID = 143,
+ DPFLTR_SE_ID = 144,
+ DPFLTR_DRIVEEXTENDER_ID = 145,
+ DPFLTR_POWER_ID = 146,
+ DPFLTR_CRASHDUMPXHCI_ID = 147,
+ DPFLTR_GPIO_ID = 148,
+ DPFLTR_REFS_ID = 149,
+ DPFLTR_WER_ID = 150,
+ DPFLTR_CAPIMG_ID = 151,
+ DPFLTR_VPCI_ID = 152,
+ DPFLTR_STORAGECLASSMEMORY_ID = 153,
+ DPFLTR_FSLIB_ID = 154,
+ DPFLTR_ENDOFTABLE_ID
+} DPFLTR_TYPE;
+
+#pragma external_header(pop)
+#line 16645 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+#line 16646 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlIoEncodeMemIoResource (
+ PIO_RESOURCE_DESCRIPTOR Descriptor,
+ UCHAR Type,
+ ULONGLONG Length,
+ ULONGLONG Alignment,
+ ULONGLONG MinimumAddress,
+ ULONGLONG MaximumAddress
+ );
+#line 16661 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlCmEncodeMemIoResource (
+ PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor,
+ UCHAR Type,
+ ULONGLONG Length,
+ ULONGLONG Start
+ );
+#line 16673 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+ULONGLONG
+__stdcall
+RtlIoDecodeMemIoResource (
+ PIO_RESOURCE_DESCRIPTOR Descriptor,
+ PULONGLONG Alignment,
+ PULONGLONG MinimumAddress,
+ PULONGLONG MaximumAddress
+ );
+#line 16685 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+ULONGLONG
+__stdcall
+RtlCmDecodeMemIoResource (
+ PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor,
+ PULONGLONG Start
+ );
+#line 16695 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlFindClosestEncodableLength (
+ ULONGLONG SourceLength,
+ PULONGLONG TargetLength
+ );
+#line 16705 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlIsUntrustedObject (
+ HANDLE Handle,
+ PVOID Object,
+ PBOOLEAN UntrustedObject
+ );
+
+#line 16720 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlQueryValidationRunlevel (
+ PCUNICODE_STRING ComponentName
+ );
+#line 16730 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 16747 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 16749 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 16782 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 16784 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 16796 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlCrc32(
+ const void *Buffer,
+ size_t Size,
+ ULONG InitialCrc
+ );
+
+__declspec(dllimport)
+ULONGLONG
+__stdcall
+RtlCrc64(
+ const void *Buffer,
+ size_t Size,
+ ULONGLONG InitialCrc
+ );
+
+
+
+#line 16832 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+#pragma endregion
+
+
+
+#line 16837 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _OS_DEPLOYEMENT_STATE_VALUES {
+ OS_DEPLOYMENT_STANDARD = 1,
+ OS_DEPLOYMENT_COMPACT
+} OS_DEPLOYEMENT_STATE_VALUES;
+
+__declspec(dllimport)
+OS_DEPLOYEMENT_STATE_VALUES
+__stdcall
+RtlOsDeploymentState(
+ ULONG Flags
+ );
+
+
+#line 16863 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+typedef enum _IMAGE_POLICY_ENTRY_TYPE {
+ ImagePolicyEntryTypeNone = 0,
+ ImagePolicyEntryTypeBool,
+ ImagePolicyEntryTypeInt8,
+ ImagePolicyEntryTypeUInt8,
+ ImagePolicyEntryTypeInt16,
+ ImagePolicyEntryTypeUInt16,
+ ImagePolicyEntryTypeInt32,
+ ImagePolicyEntryTypeUInt32,
+ ImagePolicyEntryTypeInt64,
+ ImagePolicyEntryTypeUInt64,
+ ImagePolicyEntryTypeAnsiString,
+ ImagePolicyEntryTypeUnicodeString,
+ ImagePolicyEntryTypeOverride,
+ ImagePolicyEntryTypeMaximum
+} IMAGE_POLICY_ENTRY_TYPE;
+
+typedef enum _IMAGE_POLICY_ID {
+ ImagePolicyIdNone = 0,
+ ImagePolicyIdEtw,
+ ImagePolicyIdDebug,
+ ImagePolicyIdCrashDump,
+ ImagePolicyIdCrashDumpKey,
+ ImagePolicyIdCrashDumpKeyGuid,
+ ImagePolicyIdParentSd,
+ ImagePolicyIdParentSdRev,
+ ImagePolicyIdSvn,
+ ImagePolicyIdDeviceId,
+ ImagePolicyIdCapability,
+ ImagePolicyIdScenarioId,
+ ImagePolicyIdCapabilityOverridable,
+ ImagePolicyIdTrustletIdOverridable,
+ ImagePolicyIdMaximum
+} IMAGE_POLICY_ID;
+
+typedef struct _IMAGE_POLICY_ENTRY {
+ IMAGE_POLICY_ENTRY_TYPE Type;
+ IMAGE_POLICY_ID PolicyId;
+ union {
+ const void* None;
+ BOOLEAN BoolValue;
+ INT8 Int8Value;
+ UINT8 UInt8Value;
+ INT16 Int16Value;
+ UINT16 UInt16Value;
+ INT32 Int32Value;
+ UINT32 UInt32Value;
+ INT64 Int64Value;
+ UINT64 UInt64Value;
+ PCSTR AnsiStringValue;
+ PCWSTR UnicodeStringValue;
+ } u;
+} IMAGE_POLICY_ENTRY;
+typedef const IMAGE_POLICY_ENTRY* PCIMAGE_POLICY_ENTRY;
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4200)
+typedef struct _IMAGE_POLICY_METADATA {
+ UCHAR Version;
+ UCHAR Reserved0[7];
+ ULONGLONG ApplicationId;
+ IMAGE_POLICY_ENTRY Policies[];
+} IMAGE_POLICY_METADATA;
+typedef const IMAGE_POLICY_METADATA* PCIMAGE_POLICY_METADATA;
+#pragma warning(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 16957 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\apiset.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 39 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\apiset.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 98 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\apiset.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 115 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\apiset.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 132 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\apiset.h"
+
+
+
+#line 136 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\apiset.h"
+
+#line 138 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\apiset.h"
+#pragma external_header(pop)
+#line 16995 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#pragma region Application Family or OneCore Family
+
+
+
+
+
+__declspec(dllimport)
+SIZE_T
+__stdcall
+RtlCompareMemory(
+ const void* Source1,
+ const void* Source2,
+ SIZE_T Length
+ );
+
+#line 17012 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 17014 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+#pragma endregion
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ktmtypes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4820)
+#line 30 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ktmtypes.h"
+
+typedef GUID UOW, *PUOW;
+typedef GUID CRM_PROTOCOL_ID, *PCRM_PROTOCOL_ID;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef ULONG NOTIFICATION_MASK;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _TRANSACTION_NOTIFICATION {
+ PVOID TransactionKey;
+ ULONG TransactionNotification;
+ LARGE_INTEGER TmVirtualClock;
+ ULONG ArgumentLength;
+} TRANSACTION_NOTIFICATION, *PTRANSACTION_NOTIFICATION;
+
+typedef struct _TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT {
+ GUID EnlistmentId;
+ UOW UOW;
+} TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT, *PTRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT;
+
+
+
+typedef struct _TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT {
+ GUID TmIdentity;
+ ULONG Flags;
+} TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT, *PTRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT;
+
+typedef ULONG SAVEPOINT_ID, *PSAVEPOINT_ID;
+
+typedef struct _TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT {
+ SAVEPOINT_ID SavepointId;
+} TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT, *PTRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT;
+
+typedef struct _TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT {
+ ULONG PropagationCookie;
+ GUID UOW;
+ GUID TmIdentity;
+ ULONG BufferLength;
+
+} TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT, *PTRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT;
+
+typedef struct _TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT {
+ ULONG MarshalCookie;
+ GUID UOW;
+} TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT, *PTRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT;
+
+typedef TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT TRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT, *PTRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT;
+
+
+
+
+
+
+
+typedef struct _KCRM_MARSHAL_HEADER {
+ ULONG VersionMajor;
+ ULONG VersionMinor;
+ ULONG NumProtocols;
+ ULONG Unused;
+} KCRM_MARSHAL_HEADER, *PKCRM_MARSHAL_HEADER, * PRKCRM_MARSHAL_HEADER;
+
+typedef struct _KCRM_TRANSACTION_BLOB {
+ UOW UOW;
+ GUID TmIdentity;
+ ULONG IsolationLevel;
+ ULONG IsolationFlags;
+ ULONG Timeout;
+ WCHAR Description[64];
+} KCRM_TRANSACTION_BLOB, *PKCRM_TRANSACTION_BLOB, * PRKCRM_TRANSACTION_BLOB;
+
+typedef struct _KCRM_PROTOCOL_BLOB {
+ CRM_PROTOCOL_ID ProtocolId;
+ ULONG StaticInfoLength;
+ ULONG TransactionIdInfoLength;
+ ULONG Unused1;
+ ULONG Unused2;
+} KCRM_PROTOCOL_BLOB, *PKCRM_PROTOCOL_BLOB, * PRKCRM_PROTOCOL_BLOB;
+
+
+#pragma warning(pop)
+#line 210 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ktmtypes.h"
+
+
+
+
+
+#line 216 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ktmtypes.h"
+#pragma external_header(pop)
+#line 17026 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+#pragma warning(push)
+#pragma warning(disable:4820)
+#line 17031 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _TRANSACTION_OUTCOME {
+ TransactionOutcomeUndetermined = 1,
+ TransactionOutcomeCommitted,
+ TransactionOutcomeAborted,
+} TRANSACTION_OUTCOME;
+
+
+typedef enum _TRANSACTION_STATE {
+ TransactionStateNormal = 1,
+ TransactionStateIndoubt,
+ TransactionStateCommittedNotify,
+} TRANSACTION_STATE;
+
+
+typedef struct _TRANSACTION_BASIC_INFORMATION {
+ GUID TransactionId;
+ ULONG State;
+ ULONG Outcome;
+} TRANSACTION_BASIC_INFORMATION, *PTRANSACTION_BASIC_INFORMATION;
+
+typedef struct _TRANSACTIONMANAGER_BASIC_INFORMATION {
+ GUID TmIdentity;
+ LARGE_INTEGER VirtualClock;
+} TRANSACTIONMANAGER_BASIC_INFORMATION, *PTRANSACTIONMANAGER_BASIC_INFORMATION;
+
+typedef struct _TRANSACTIONMANAGER_LOG_INFORMATION {
+ GUID LogIdentity;
+} TRANSACTIONMANAGER_LOG_INFORMATION, *PTRANSACTIONMANAGER_LOG_INFORMATION;
+
+typedef struct _TRANSACTIONMANAGER_LOGPATH_INFORMATION {
+ ULONG LogPathLength;
+ WCHAR LogPath[1];
+
+} TRANSACTIONMANAGER_LOGPATH_INFORMATION, *PTRANSACTIONMANAGER_LOGPATH_INFORMATION;
+
+typedef struct _TRANSACTIONMANAGER_RECOVERY_INFORMATION {
+ ULONGLONG LastRecoveredLsn;
+} TRANSACTIONMANAGER_RECOVERY_INFORMATION, *PTRANSACTIONMANAGER_RECOVERY_INFORMATION;
+
+
+
+
+typedef struct _TRANSACTION_PROPERTIES_INFORMATION {
+ ULONG IsolationLevel;
+ ULONG IsolationFlags;
+ LARGE_INTEGER Timeout;
+ ULONG Outcome;
+ ULONG DescriptionLength;
+ WCHAR Description[1];
+
+} TRANSACTION_PROPERTIES_INFORMATION, *PTRANSACTION_PROPERTIES_INFORMATION;
+
+
+
+typedef struct _TRANSACTION_BIND_INFORMATION {
+ HANDLE TmHandle;
+} TRANSACTION_BIND_INFORMATION, *PTRANSACTION_BIND_INFORMATION;
+
+typedef struct _TRANSACTION_ENLISTMENT_PAIR {
+ GUID EnlistmentId;
+ GUID ResourceManagerId;
+} TRANSACTION_ENLISTMENT_PAIR, *PTRANSACTION_ENLISTMENT_PAIR;
+
+typedef struct _TRANSACTION_ENLISTMENTS_INFORMATION {
+ ULONG NumberOfEnlistments;
+ TRANSACTION_ENLISTMENT_PAIR EnlistmentPair[1];
+} TRANSACTION_ENLISTMENTS_INFORMATION, *PTRANSACTION_ENLISTMENTS_INFORMATION;
+
+typedef struct _TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION {
+ TRANSACTION_ENLISTMENT_PAIR SuperiorEnlistmentPair;
+} TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION, *PTRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION;
+
+
+typedef struct _RESOURCEMANAGER_BASIC_INFORMATION {
+ GUID ResourceManagerId;
+ ULONG DescriptionLength;
+ WCHAR Description[1];
+} RESOURCEMANAGER_BASIC_INFORMATION, *PRESOURCEMANAGER_BASIC_INFORMATION;
+
+typedef struct _RESOURCEMANAGER_COMPLETION_INFORMATION {
+ HANDLE IoCompletionPortHandle;
+ ULONG_PTR CompletionKey;
+} RESOURCEMANAGER_COMPLETION_INFORMATION, *PRESOURCEMANAGER_COMPLETION_INFORMATION;
+
+typedef enum _TRANSACTION_INFORMATION_CLASS {
+ TransactionBasicInformation,
+ TransactionPropertiesInformation,
+ TransactionEnlistmentInformation,
+ TransactionSuperiorEnlistmentInformation
+} TRANSACTION_INFORMATION_CLASS;
+
+
+typedef enum _TRANSACTIONMANAGER_INFORMATION_CLASS {
+ TransactionManagerBasicInformation,
+ TransactionManagerLogInformation,
+ TransactionManagerLogPathInformation,
+ TransactionManagerRecoveryInformation = 4
+
+} TRANSACTIONMANAGER_INFORMATION_CLASS;
+
+
+
+typedef enum _RESOURCEMANAGER_INFORMATION_CLASS {
+ ResourceManagerBasicInformation,
+ ResourceManagerCompletionInformation,
+} RESOURCEMANAGER_INFORMATION_CLASS;
+
+
+typedef struct _ENLISTMENT_BASIC_INFORMATION {
+ GUID EnlistmentId;
+ GUID TransactionId;
+ GUID ResourceManagerId;
+} ENLISTMENT_BASIC_INFORMATION, *PENLISTMENT_BASIC_INFORMATION;
+
+typedef struct _ENLISTMENT_CRM_INFORMATION {
+ GUID CrmTransactionManagerId;
+ GUID CrmResourceManagerId;
+ GUID CrmEnlistmentId;
+} ENLISTMENT_CRM_INFORMATION, *PENLISTMENT_CRM_INFORMATION;
+
+
+
+typedef enum _ENLISTMENT_INFORMATION_CLASS {
+ EnlistmentBasicInformation,
+ EnlistmentRecoveryInformation,
+ EnlistmentCrmInformation
+} ENLISTMENT_INFORMATION_CLASS;
+
+typedef struct _TRANSACTION_LIST_ENTRY {
+ UOW UOW;
+} TRANSACTION_LIST_ENTRY, *PTRANSACTION_LIST_ENTRY;
+
+typedef struct _TRANSACTION_LIST_INFORMATION {
+ ULONG NumberOfTransactions;
+ TRANSACTION_LIST_ENTRY TransactionInformation[1];
+} TRANSACTION_LIST_INFORMATION, *PTRANSACTION_LIST_INFORMATION;
+
+
+
+
+
+
+typedef enum _KTMOBJECT_TYPE {
+
+ KTMOBJECT_TRANSACTION,
+ KTMOBJECT_TRANSACTION_MANAGER,
+ KTMOBJECT_RESOURCE_MANAGER,
+ KTMOBJECT_ENLISTMENT,
+ KTMOBJECT_INVALID
+
+} KTMOBJECT_TYPE, *PKTMOBJECT_TYPE;
+
+
+
+
+
+
+
+
+
+typedef struct _KTMOBJECT_CURSOR {
+
+
+
+
+
+ GUID LastQuery;
+
+
+
+
+
+ ULONG ObjectIdCount;
+
+
+
+
+
+ GUID ObjectIds[1];
+
+} KTMOBJECT_CURSOR, *PKTMOBJECT_CURSOR;
+
+
+
+
+
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtCreateTransactionManager (
+ PHANDLE TmHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ PUNICODE_STRING LogFileName,
+ ULONG CreateOptions,
+ ULONG CommitStrength
+ );
+#line 17405 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtOpenTransactionManager (
+ PHANDLE TmHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ PUNICODE_STRING LogFileName,
+ LPGUID TmIdentity,
+ ULONG OpenOptions
+ );
+#line 17422 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtRenameTransactionManager (
+ PUNICODE_STRING LogFileName,
+ LPGUID ExistingTransactionManagerGuid
+ );
+#line 17435 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtRollforwardTransactionManager (
+ HANDLE TransactionManagerHandle,
+ PLARGE_INTEGER TmVirtualClock
+ );
+#line 17448 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtRecoverTransactionManager (
+ HANDLE TransactionManagerHandle
+ );
+#line 17460 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtQueryInformationTransactionManager (
+ HANDLE TransactionManagerHandle,
+ TRANSACTIONMANAGER_INFORMATION_CLASS TransactionManagerInformationClass,
+ PVOID TransactionManagerInformation,
+ ULONG TransactionManagerInformationLength,
+ PULONG ReturnLength
+ );
+#line 17476 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtSetInformationTransactionManager (
+ HANDLE TmHandle,
+ TRANSACTIONMANAGER_INFORMATION_CLASS TransactionManagerInformationClass,
+ PVOID TransactionManagerInformation,
+ ULONG TransactionManagerInformationLength
+ );
+#line 17491 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtEnumerateTransactionObject (
+ HANDLE RootObjectHandle,
+ KTMOBJECT_TYPE QueryType,
+ PKTMOBJECT_CURSOR ObjectCursor,
+ ULONG ObjectCursorLength,
+ PULONG ReturnLength
+ );
+#line 17507 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+typedef NTSTATUS (__stdcall * PFN_NT_CREATE_TRANSACTION)(
+ PHANDLE TransactionHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ LPGUID Uow,
+ HANDLE TmHandle,
+ ULONG CreateOptions,
+ ULONG IsolationLevel,
+ ULONG IsolationFlags,
+ PLARGE_INTEGER Timeout,
+ PUNICODE_STRING Description
+ );
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtCreateTransaction (
+ PHANDLE TransactionHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ LPGUID Uow,
+ HANDLE TmHandle,
+ ULONG CreateOptions,
+ ULONG IsolationLevel,
+ ULONG IsolationFlags,
+ PLARGE_INTEGER Timeout,
+ PUNICODE_STRING Description
+ );
+#line 17542 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+typedef NTSTATUS (__stdcall *PFN_NT_OPEN_TRANSACTION)(
+ PHANDLE TransactionHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ LPGUID Uow,
+ HANDLE TmHandle
+ );
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtOpenTransaction (
+ PHANDLE TransactionHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ LPGUID Uow,
+ HANDLE TmHandle
+ );
+#line 17567 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+typedef NTSTATUS (__stdcall * PFN_NT_QUERY_INFORMATION_TRANSACTION)(
+ HANDLE TransactionHandle,
+ TRANSACTION_INFORMATION_CLASS TransactionInformationClass,
+ PVOID TransactionInformation,
+ ULONG TransactionInformationLength,
+ PULONG ReturnLength
+ );
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtQueryInformationTransaction (
+ HANDLE TransactionHandle,
+ TRANSACTION_INFORMATION_CLASS TransactionInformationClass,
+ PVOID TransactionInformation,
+ ULONG TransactionInformationLength,
+ PULONG ReturnLength
+ );
+#line 17592 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+typedef NTSTATUS (__stdcall * PFN_NT_SET_INFORMATION_TRANSACTION)(
+ HANDLE TransactionHandle,
+ TRANSACTION_INFORMATION_CLASS TransactionInformationClass,
+ PVOID TransactionInformation,
+ ULONG TransactionInformationLength
+ );
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtSetInformationTransaction (
+ HANDLE TransactionHandle,
+ TRANSACTION_INFORMATION_CLASS TransactionInformationClass,
+ PVOID TransactionInformation,
+ ULONG TransactionInformationLength
+ );
+#line 17615 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+typedef NTSTATUS (__stdcall * PFN_NT_COMMIT_TRANSACTION)(
+ HANDLE TransactionHandle,
+ BOOLEAN Wait
+ );
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtCommitTransaction (
+ HANDLE TransactionHandle,
+ BOOLEAN Wait
+ );
+#line 17633 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+typedef NTSTATUS (__stdcall * PFN_NT_ROLLBACK_TRANSACTION)(
+ HANDLE TransactionHandle,
+ BOOLEAN Wait
+ );
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtRollbackTransaction (
+ HANDLE TransactionHandle,
+ BOOLEAN Wait
+ );
+#line 17651 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtCreateEnlistment (
+ PHANDLE EnlistmentHandle,
+ ACCESS_MASK DesiredAccess,
+ HANDLE ResourceManagerHandle,
+ HANDLE TransactionHandle,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ ULONG CreateOptions,
+ NOTIFICATION_MASK NotificationMask,
+ PVOID EnlistmentKey
+ );
+#line 17670 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtOpenEnlistment (
+ PHANDLE EnlistmentHandle,
+ ACCESS_MASK DesiredAccess,
+ HANDLE ResourceManagerHandle,
+ LPGUID EnlistmentGuid,
+ POBJECT_ATTRIBUTES ObjectAttributes
+ );
+#line 17686 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtQueryInformationEnlistment (
+ HANDLE EnlistmentHandle,
+ ENLISTMENT_INFORMATION_CLASS EnlistmentInformationClass,
+ PVOID EnlistmentInformation,
+ ULONG EnlistmentInformationLength,
+ PULONG ReturnLength
+ );
+#line 17702 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtSetInformationEnlistment (
+ HANDLE EnlistmentHandle,
+ ENLISTMENT_INFORMATION_CLASS EnlistmentInformationClass,
+ PVOID EnlistmentInformation,
+ ULONG EnlistmentInformationLength
+ );
+#line 17717 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtRecoverEnlistment (
+ HANDLE EnlistmentHandle,
+ PVOID EnlistmentKey
+ );
+#line 17730 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtPrePrepareEnlistment (
+ HANDLE EnlistmentHandle,
+ PLARGE_INTEGER TmVirtualClock
+ );
+#line 17743 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtPrepareEnlistment (
+ HANDLE EnlistmentHandle,
+ PLARGE_INTEGER TmVirtualClock
+ );
+#line 17756 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtCommitEnlistment (
+ HANDLE EnlistmentHandle,
+ PLARGE_INTEGER TmVirtualClock
+ );
+#line 17769 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtRollbackEnlistment (
+ HANDLE EnlistmentHandle,
+ PLARGE_INTEGER TmVirtualClock
+ );
+#line 17781 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtPrePrepareComplete (
+ HANDLE EnlistmentHandle,
+ PLARGE_INTEGER TmVirtualClock
+ );
+#line 17793 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtPrepareComplete (
+ HANDLE EnlistmentHandle,
+ PLARGE_INTEGER TmVirtualClock
+ );
+#line 17805 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtCommitComplete (
+ HANDLE EnlistmentHandle,
+ PLARGE_INTEGER TmVirtualClock
+ );
+#line 17817 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtReadOnlyEnlistment (
+ HANDLE EnlistmentHandle,
+ PLARGE_INTEGER TmVirtualClock
+ );
+#line 17829 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtRollbackComplete (
+ HANDLE EnlistmentHandle,
+ PLARGE_INTEGER TmVirtualClock
+ );
+#line 17841 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtSinglePhaseReject (
+ HANDLE EnlistmentHandle,
+ PLARGE_INTEGER TmVirtualClock
+ );
+#line 17853 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtCreateResourceManager (
+ PHANDLE ResourceManagerHandle,
+ ACCESS_MASK DesiredAccess,
+ HANDLE TmHandle,
+ LPGUID RmGuid,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ ULONG CreateOptions,
+ PUNICODE_STRING Description
+ );
+#line 17871 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtOpenResourceManager (
+ PHANDLE ResourceManagerHandle,
+ ACCESS_MASK DesiredAccess,
+ HANDLE TmHandle,
+ LPGUID ResourceManagerGuid,
+ POBJECT_ATTRIBUTES ObjectAttributes
+ );
+#line 17887 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtRecoverResourceManager (
+ HANDLE ResourceManagerHandle
+ );
+#line 17899 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtGetNotificationResourceManager (
+ HANDLE ResourceManagerHandle,
+ PTRANSACTION_NOTIFICATION TransactionNotification,
+ ULONG NotificationLength,
+ PLARGE_INTEGER Timeout,
+ PULONG ReturnLength,
+ ULONG Asynchronous,
+ ULONG_PTR AsynchronousContext
+ );
+#line 17917 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtQueryInformationResourceManager (
+ HANDLE ResourceManagerHandle,
+ RESOURCEMANAGER_INFORMATION_CLASS ResourceManagerInformationClass,
+ PVOID ResourceManagerInformation,
+ ULONG ResourceManagerInformationLength,
+ PULONG ReturnLength
+ );
+#line 17933 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtSetInformationResourceManager (
+ HANDLE ResourceManagerHandle,
+ RESOURCEMANAGER_INFORMATION_CLASS ResourceManagerInformationClass,
+ PVOID ResourceManagerInformation,
+ ULONG ResourceManagerInformationLength
+ );
+#line 17948 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtRegisterProtocolAddressInformation(
+ HANDLE ResourceManager,
+ PCRM_PROTOCOL_ID ProtocolId,
+ ULONG ProtocolInformationSize,
+ PVOID ProtocolInformation,
+ ULONG CreateOptions
+ );
+#line 17964 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtPropagationComplete(
+ HANDLE ResourceManagerHandle,
+ ULONG RequestCookie,
+ ULONG BufferLength,
+ PVOID Buffer
+ );
+#line 17978 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtPropagationFailed(
+ HANDLE ResourceManagerHandle,
+ ULONG RequestCookie,
+ NTSTATUS PropStatus
+ );
+#line 17991 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+#pragma warning(pop)
+#line 17997 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+#line 18003 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 18058 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+#line 18066 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+#line 18074 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+#line 18078 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+extern ULONG NtGlobalFlag;
+extern ULONG NtGlobalFlag2;
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4471)
+typedef enum _POOL_TYPE POOL_TYPE;
+#pragma warning(pop)
+
+
+
+typedef ULONG64 POOL_FLAGS;
+
+typedef
+
+
+PVOID
+ALLOCATE_FUNCTION (
+ POOL_TYPE PoolType,
+ SIZE_T NumberOfBytes,
+ ULONG Tag
+ );
+typedef ALLOCATE_FUNCTION *PALLOCATE_FUNCTION;
+
+typedef
+
+
+void
+FREE_FUNCTION (
+ PVOID Buffer
+ );
+typedef FREE_FUNCTION *PFREE_FUNCTION;
+
+typedef struct _LOOKASIDE_LIST_EX *PLOOKASIDE_LIST_EX;
+
+typedef
+
+
+PVOID
+ALLOCATE_FUNCTION_EX (
+ POOL_TYPE PoolType,
+ SIZE_T NumberOfBytes,
+ ULONG Tag,
+ PLOOKASIDE_LIST_EX Lookaside
+ );
+typedef ALLOCATE_FUNCTION_EX *PALLOCATE_FUNCTION_EX;
+
+typedef
+
+
+void
+FREE_FUNCTION_EX (
+ PVOID Buffer,
+ PLOOKASIDE_LIST_EX Lookaside
+ );
+typedef FREE_FUNCTION_EX *PFREE_FUNCTION_EX;
+
+
+
+
+
+#line 18146 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+#line 18150 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4324)
+#line 18210 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef struct __declspec(align(64)) _GENERAL_LOOKASIDE {
+ union { SLIST_HEADER ListHead; SINGLE_LIST_ENTRY SingleListHead; } ; USHORT Depth; USHORT MaximumDepth; ULONG TotalAllocates; union { ULONG AllocateMisses; ULONG AllocateHits; } ; ULONG TotalFrees; union { ULONG FreeMisses; ULONG FreeHits; } ; POOL_TYPE Type; ULONG Tag; ULONG Size; union { PALLOCATE_FUNCTION_EX AllocateEx; PALLOCATE_FUNCTION Allocate; } ; union { PFREE_FUNCTION_EX FreeEx; PFREE_FUNCTION Free; } ; LIST_ENTRY ListEntry; ULONG LastTotalAllocates; union { ULONG LastAllocateMisses; ULONG LastAllocateHits; } ; ULONG Future[2];
+} GENERAL_LOOKASIDE;
+
+typedef GENERAL_LOOKASIDE *PGENERAL_LOOKASIDE;
+
+
+#pragma warning(pop)
+#line 18220 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _GENERAL_LOOKASIDE_POOL {
+ union { SLIST_HEADER ListHead; SINGLE_LIST_ENTRY SingleListHead; } ; USHORT Depth; USHORT MaximumDepth; ULONG TotalAllocates; union { ULONG AllocateMisses; ULONG AllocateHits; } ; ULONG TotalFrees; union { ULONG FreeMisses; ULONG FreeHits; } ; POOL_TYPE Type; ULONG Tag; ULONG Size; union { PALLOCATE_FUNCTION_EX AllocateEx; PALLOCATE_FUNCTION Allocate; } ; union { PFREE_FUNCTION_EX FreeEx; PFREE_FUNCTION Free; } ; LIST_ENTRY ListEntry; ULONG LastTotalAllocates; union { ULONG LastAllocateMisses; ULONG LastAllocateHits; } ; ULONG Future[2];
+} GENERAL_LOOKASIDE_POOL, *PGENERAL_LOOKASIDE_POOL;
+
+
+
+
+
+
+
+
+
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((GENERAL_LOOKASIDE *)0)->TotalFrees))==((LONG)(LONG_PTR)&(((GENERAL_LOOKASIDE_POOL *)0)->TotalFrees)))?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((GENERAL_LOOKASIDE *)0)->Tag))==((LONG)(LONG_PTR)&(((GENERAL_LOOKASIDE_POOL *)0)->Tag)))?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((GENERAL_LOOKASIDE *)0)->Future))==((LONG)(LONG_PTR)&(((GENERAL_LOOKASIDE_POOL *)0)->Future)))?1:-1];
+
+
+
+
+
+
+
+
+
+
+
+typedef CCHAR KPROCESSOR_MODE;
+
+typedef enum _MODE {
+ KernelMode,
+ UserMode,
+ MaximumMode
+} MODE;
+
+
+
+typedef
+
+
+
+BOOLEAN
+KSYNCHRONIZE_ROUTINE (
+ PVOID SynchronizeContext
+ );
+typedef KSYNCHRONIZE_ROUTINE *PKSYNCHRONIZE_ROUTINE;
+
+typedef struct _KAPC {
+ UCHAR Type;
+ UCHAR AllFlags;
+ UCHAR Size;
+ UCHAR SpareByte1;
+ ULONG SpareLong0;
+ struct _KTHREAD *Thread;
+ LIST_ENTRY ApcListEntry;
+ PVOID Reserved[3];
+ PVOID NormalContext;
+ PVOID SystemArgument1;
+ PVOID SystemArgument2;
+ CCHAR ApcStateIndex;
+ KPROCESSOR_MODE ApcMode;
+ BOOLEAN Inserted;
+} KAPC, *PKAPC, *PRKAPC;
+
+
+
+
+
+
+
+
+
+
+
+
+
+struct _KDPC;
+
+
+
+
+
+
+typedef
+void
+KDEFERRED_ROUTINE (
+ struct _KDPC *Dpc,
+ PVOID DeferredContext,
+ PVOID SystemArgument1,
+ PVOID SystemArgument2
+ );
+
+typedef KDEFERRED_ROUTINE *PKDEFERRED_ROUTINE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _KDPC_IMPORTANCE {
+ LowImportance,
+ MediumImportance,
+ HighImportance,
+ MediumHighImportance
+} KDPC_IMPORTANCE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _KDPC {
+ union {
+ ULONG TargetInfoAsUlong;
+ struct {
+ UCHAR Type;
+ UCHAR Importance;
+ volatile USHORT Number;
+ } ;
+ } ;
+
+ SINGLE_LIST_ENTRY DpcListEntry;
+ KAFFINITY ProcessorHistory;
+ PKDEFERRED_ROUTINE DeferredRoutine;
+ PVOID DeferredContext;
+ PVOID SystemArgument1;
+ PVOID SystemArgument2;
+ PVOID DpcData;
+} KDPC, *PKDPC, *PRKDPC;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 18437 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 18491 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+#line 18524 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+ struct _MDL {
+ struct _MDL *Next;
+ CSHORT Size;
+ CSHORT MdlFlags;
+
+ struct _EPROCESS *Process;
+ PVOID MappedSystemVa;
+ PVOID StartVa;
+ ULONG ByteCount;
+ ULONG ByteOffset;
+} MDL, *PMDL;
+
+typedef MDL *PMDLX;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 18580 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 18592 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+#line 18597 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+#line 18607 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+#line 18611 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 18613 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+#line 18621 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+#line 18625 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+#line 18629 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+#line 18640 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 18652 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+typedef struct _DISPATCHER_HEADER {
+ union {
+ union {
+ volatile LONG Lock;
+ LONG LockNV;
+ } ;
+
+ struct {
+ UCHAR Type;
+ UCHAR Signalling;
+ UCHAR Size;
+ UCHAR Reserved1;
+ } ;
+
+ struct {
+ UCHAR TimerType;
+ union {
+ UCHAR TimerControlFlags;
+ struct {
+ UCHAR Absolute : 1;
+ UCHAR Wake : 1;
+ UCHAR EncodedTolerableDelay : 6;
+ } ;
+ };
+
+ UCHAR Hand;
+ union {
+ UCHAR TimerMiscFlags;
+ struct {
+
+
+
+ UCHAR Index : 6;
+
+
+
+
+
+
+#line 18697 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ UCHAR Inserted : 1;
+ volatile UCHAR Expired : 1;
+ } ;
+ } ;
+ } ;
+
+ struct {
+ UCHAR Timer2Type;
+ union {
+ UCHAR Timer2Flags;
+ struct {
+ UCHAR Timer2Inserted : 1;
+ UCHAR Timer2Expiring : 1;
+ UCHAR Timer2CancelPending : 1;
+ UCHAR Timer2SetPending : 1;
+ UCHAR Timer2Running : 1;
+ UCHAR Timer2Disabled : 1;
+ UCHAR Timer2ReservedFlags : 2;
+ } ;
+ } ;
+
+ UCHAR Timer2ComponentId;
+ UCHAR Timer2RelativeId;
+ } ;
+
+ struct {
+ UCHAR QueueType;
+ union {
+ UCHAR QueueControlFlags;
+ struct {
+ UCHAR Abandoned : 1;
+ UCHAR DisableIncrement : 1;
+ UCHAR QueueReservedControlFlags : 6;
+ } ;
+ } ;
+
+ UCHAR QueueSize;
+ UCHAR QueueReserved;
+ } ;
+
+ struct {
+ UCHAR ThreadType;
+ UCHAR ThreadReserved;
+
+ union {
+ UCHAR ThreadControlFlags;
+ struct {
+ UCHAR CycleProfiling : 1;
+ UCHAR CounterProfiling : 1;
+ UCHAR GroupScheduling : 1;
+ UCHAR AffinitySet : 1;
+ UCHAR Tagged : 1;
+ UCHAR EnergyProfiling: 1;
+ UCHAR SchedulerAssist: 1;
+
+
+
+ UCHAR ThreadReservedControlFlags : 1;
+
+
+
+
+
+#line 18762 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ } ;
+ } ;
+
+ union {
+ UCHAR DebugActive;
+
+
+
+ struct {
+ BOOLEAN ActiveDR7 : 1;
+ BOOLEAN Instrumented : 1;
+ BOOLEAN Minimal : 1;
+ BOOLEAN Reserved4 : 2;
+ BOOLEAN AltSyscall : 1;
+ BOOLEAN Emulation : 1;
+ BOOLEAN Reserved5 : 1;
+ } ;
+
+#line 18782 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ } ;
+ } ;
+
+ struct {
+ UCHAR MutantType;
+ UCHAR MutantSize;
+ BOOLEAN DpcActive;
+ UCHAR MutantReserved;
+ } ;
+ } ;
+
+ LONG SignalState;
+ LIST_ENTRY WaitListHead;
+} DISPATCHER_HEADER, *PDISPATCHER_HEADER;
+
+
+
+
+
+
+typedef struct _KEVENT {
+ DISPATCHER_HEADER Header;
+} KEVENT, *PKEVENT, *PRKEVENT;
+
+
+
+
+
+
+
+
+
+typedef struct _KGATE {
+ DISPATCHER_HEADER Header;
+} KGATE, *PKGATE;
+
+
+
+
+
+
+
+typedef struct _KTIMER {
+ DISPATCHER_HEADER Header;
+ ULARGE_INTEGER DueTime;
+ LIST_ENTRY TimerListEntry;
+ struct _KDPC *Dpc;
+
+
+
+ USHORT Processor;
+ USHORT TimerType;
+
+#line 18837 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ ULONG Period;
+} KTIMER, *PKTIMER, *PRKTIMER;
+
+
+
+
+
+
+typedef enum _LOCK_OPERATION {
+ IoReadAccess,
+ IoWriteAccess,
+ IoModifyAccess
+} LOCK_OPERATION;
+
+
+
+
+typedef struct _FAST_MUTEX {
+ LONG Count;
+ PVOID Owner;
+ ULONG Contention;
+ KEVENT Event;
+ ULONG OldIrql;
+} FAST_MUTEX, *PFAST_MUTEX, KGUARDED_MUTEX, *PKGUARDED_MUTEX;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 19504 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+UCHAR
+__inbyte (
+ USHORT Port
+ );
+
+USHORT
+__inword (
+ USHORT Port
+ );
+
+ULONG
+__indword (
+ USHORT Port
+ );
+
+void
+__outbyte (
+ USHORT Port,
+ UCHAR Data
+ );
+
+void
+__outword (
+ USHORT Port,
+ USHORT Data
+ );
+
+void
+__outdword (
+ USHORT Port,
+ ULONG Data
+ );
+
+void
+__inbytestring (
+ USHORT Port,
+ PUCHAR Buffer,
+ ULONG Count
+ );
+
+void
+__inwordstring (
+ USHORT Port,
+ PUSHORT Buffer,
+ ULONG Count
+ );
+
+void
+__indwordstring (
+ USHORT Port,
+ PULONG Buffer,
+ ULONG Count
+ );
+
+void
+__outbytestring (
+ USHORT Port,
+ PUCHAR Buffer,
+ ULONG Count
+ );
+
+void
+__outwordstring (
+ USHORT Port,
+ PUSHORT Buffer,
+ ULONG Count
+ );
+
+void
+__outdwordstring (
+ USHORT Port,
+ PULONG Buffer,
+ ULONG Count
+ );
+
+#pragma intrinsic(__inbyte)
+#pragma intrinsic(__inword)
+#pragma intrinsic(__indword)
+#pragma intrinsic(__outbyte)
+#pragma intrinsic(__outword)
+#pragma intrinsic(__outdword)
+#pragma intrinsic(__inbytestring)
+#pragma intrinsic(__inwordstring)
+#pragma intrinsic(__indwordstring)
+#pragma intrinsic(__outbytestring)
+#pragma intrinsic(__outwordstring)
+#pragma intrinsic(__outdwordstring)
+
+
+
+
+
+#line 19613 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+typedef ULONG PFN_COUNT;
+typedef LONG64 SPFN_NUMBER, *PSPFN_NUMBER;
+typedef ULONG64 PFN_NUMBER, *PPFN_NUMBER;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ULONG64
+__readcr8 (
+ void
+ );
+
+
+
+
+
+void
+__writecr8 (
+ ULONG64 Data
+ );
+
+#pragma intrinsic(__readcr8)
+#pragma intrinsic(__writecr8)
+
+
+
+
+
+#line 19676 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__forceinline
+UCHAR
+READ_REGISTER_UCHAR (
+ volatile UCHAR *Register
+ )
+{
+ _ReadWriteBarrier();
+ return *Register;
+}
+
+__forceinline
+USHORT
+READ_REGISTER_USHORT (
+ volatile USHORT *Register
+ )
+{
+ _ReadWriteBarrier();
+ return *Register;
+}
+
+__forceinline
+ULONG
+READ_REGISTER_ULONG (
+ volatile ULONG *Register
+ )
+{
+ _ReadWriteBarrier();
+ return *Register;
+}
+
+__forceinline
+ULONG64
+READ_REGISTER_ULONG64 (
+ volatile ULONG64 *Register
+ )
+{
+ _ReadWriteBarrier();
+ return *Register;
+}
+
+__forceinline
+void
+READ_REGISTER_BUFFER_UCHAR (
+ volatile UCHAR *Register,
+ PUCHAR Buffer,
+ ULONG Count
+ )
+{
+ _ReadWriteBarrier();
+ __movsb(Buffer, (PUCHAR)Register, Count);
+ return;
+}
+
+__forceinline
+void
+READ_REGISTER_BUFFER_USHORT (
+ volatile USHORT *Register,
+ PUSHORT Buffer,
+ ULONG Count
+ )
+{
+ _ReadWriteBarrier();
+ __movsw(Buffer, (PUSHORT)Register, Count);
+ return;
+}
+
+__forceinline
+void
+READ_REGISTER_BUFFER_ULONG (
+ volatile ULONG *Register,
+ PULONG Buffer,
+ ULONG Count
+ )
+{
+ _ReadWriteBarrier();
+ __movsd(Buffer, (PULONG)Register, Count);
+ return;
+}
+
+__forceinline
+void
+READ_REGISTER_BUFFER_ULONG64 (
+ volatile ULONG64 *Register,
+ PULONG64 Buffer,
+ ULONG Count
+ )
+{
+ _ReadWriteBarrier();
+ __movsq(Buffer, (PULONG64)Register, Count);
+ return;
+}
+
+__forceinline
+void
+WRITE_REGISTER_UCHAR (
+ volatile UCHAR *Register,
+ UCHAR Value
+ )
+{
+
+ *Register = Value;
+ __faststorefence();
+ return;
+}
+
+__forceinline
+void
+WRITE_REGISTER_USHORT (
+ volatile USHORT *Register,
+ USHORT Value
+ )
+{
+
+ *Register = Value;
+ __faststorefence();
+ return;
+}
+
+__forceinline
+void
+WRITE_REGISTER_ULONG (
+ volatile ULONG *Register,
+ ULONG Value
+ )
+{
+
+ *Register = Value;
+ __faststorefence();
+ return;
+}
+
+__forceinline
+void
+WRITE_REGISTER_ULONG64 (
+ volatile ULONG64 *Register,
+ ULONG64 Value
+ )
+{
+
+ *Register = Value;
+ __faststorefence();
+ return;
+}
+
+__forceinline
+void
+WRITE_REGISTER_BUFFER_UCHAR (
+ volatile UCHAR *Register,
+ PUCHAR Buffer,
+ ULONG Count
+ )
+{
+
+ __movsb((PUCHAR)Register, Buffer, Count);
+ __faststorefence();
+ return;
+}
+
+__forceinline
+void
+WRITE_REGISTER_BUFFER_USHORT (
+ volatile USHORT *Register,
+ PUSHORT Buffer,
+ ULONG Count
+ )
+{
+
+ __movsw((PUSHORT)Register, Buffer, Count);
+ __faststorefence();
+ return;
+}
+
+__forceinline
+void
+WRITE_REGISTER_BUFFER_ULONG (
+ volatile ULONG *Register,
+ PULONG Buffer,
+ ULONG Count
+ )
+{
+
+ __movsd((PULONG)Register, Buffer, Count);
+ __faststorefence();
+ return;
+}
+
+__forceinline
+void
+WRITE_REGISTER_BUFFER_ULONG64 (
+ volatile ULONG64 *Register,
+ PULONG64 Buffer,
+ ULONG Count
+ )
+{
+
+ __movsq((PULONG64)Register, Buffer, Count);
+ __faststorefence();
+ return;
+}
+
+
+
+
+
+__forceinline
+UCHAR
+READ_PORT_UCHAR (
+ PUCHAR Port
+ )
+
+{
+ UCHAR Result;
+
+ _ReadWriteBarrier();
+ Result = __inbyte((USHORT)((ULONG_PTR)Port));
+ _ReadWriteBarrier();
+ return Result;
+}
+
+__forceinline
+USHORT
+READ_PORT_USHORT (
+ PUSHORT Port
+ )
+
+{
+ USHORT Result;
+
+ _ReadWriteBarrier();
+ Result = __inword((USHORT)((ULONG_PTR)Port));
+ _ReadWriteBarrier();
+ return Result;
+}
+
+__forceinline
+ULONG
+READ_PORT_ULONG (
+ PULONG Port
+ )
+
+{
+ ULONG Result;
+
+ _ReadWriteBarrier();
+ Result = __indword((USHORT)((ULONG_PTR)Port));
+ _ReadWriteBarrier();
+ return Result;
+}
+
+
+__forceinline
+void
+READ_PORT_BUFFER_UCHAR (
+ PUCHAR Port,
+ PUCHAR Buffer,
+ ULONG Count
+ )
+
+{
+ _ReadWriteBarrier();
+ __inbytestring((USHORT)((ULONG_PTR)Port), Buffer, Count);
+ _ReadWriteBarrier();
+ return;
+}
+
+__forceinline
+void
+READ_PORT_BUFFER_USHORT (
+ PUSHORT Port,
+ PUSHORT Buffer,
+ ULONG Count
+ )
+
+{
+ _ReadWriteBarrier();
+ __inwordstring((USHORT)((ULONG_PTR)Port), Buffer, Count);
+ _ReadWriteBarrier();
+ return;
+}
+
+__forceinline
+void
+READ_PORT_BUFFER_ULONG (
+ PULONG Port,
+ PULONG Buffer,
+ ULONG Count
+ )
+
+{
+ _ReadWriteBarrier();
+ __indwordstring((USHORT)((ULONG_PTR)Port), Buffer, Count);
+ _ReadWriteBarrier();
+ return;
+}
+
+__forceinline
+void
+WRITE_PORT_UCHAR (
+ PUCHAR Port,
+ UCHAR Value
+ )
+
+{
+ _ReadWriteBarrier();
+ __outbyte((USHORT)((ULONG_PTR)Port), Value);
+ _ReadWriteBarrier();
+ return;
+}
+
+__forceinline
+void
+WRITE_PORT_USHORT (
+ PUSHORT Port,
+ USHORT Value
+ )
+
+{
+ _ReadWriteBarrier();
+ __outword((USHORT)((ULONG_PTR)Port), Value);
+ _ReadWriteBarrier();
+ return;
+}
+
+__forceinline
+void
+WRITE_PORT_ULONG (
+ PULONG Port,
+ ULONG Value
+ )
+
+{
+ _ReadWriteBarrier();
+ __outdword((USHORT)((ULONG_PTR)Port), Value);
+ _ReadWriteBarrier();
+ return;
+}
+
+__forceinline
+void
+WRITE_PORT_BUFFER_UCHAR (
+ PUCHAR Port,
+ PUCHAR Buffer,
+ ULONG Count
+ )
+
+{
+ _ReadWriteBarrier();
+ __outbytestring((USHORT)((ULONG_PTR)Port), Buffer, Count);
+ _ReadWriteBarrier();
+ return;
+}
+
+__forceinline
+void
+WRITE_PORT_BUFFER_USHORT (
+ PUSHORT Port,
+ PUSHORT Buffer,
+ ULONG Count
+ )
+
+{
+ _ReadWriteBarrier();
+ __outwordstring((USHORT)((ULONG_PTR)Port), Buffer, Count);
+ _ReadWriteBarrier();
+ return;
+}
+
+__forceinline
+void
+WRITE_PORT_BUFFER_ULONG (
+ PULONG Port,
+ PULONG Buffer,
+ ULONG Count
+ )
+
+{
+ _ReadWriteBarrier();
+ __outdwordstring((USHORT)((ULONG_PTR)Port), Buffer, Count);
+ _ReadWriteBarrier();
+ return;
+}
+
+
+
+
+
+
+
+
+
+#line 20088 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 20102 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+void
+KeFlushIoBuffers (
+ PMDL Mdl,
+ BOOLEAN ReadOperation,
+ BOOLEAN DmaOperation
+ );
+
+
+
+
+
+#line 20120 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _KFLOATING_SAVE {
+ ULONG Dummy;
+} KFLOATING_SAVE, *PKFLOATING_SAVE;
+
+
+
+
+
+
+
+
+__forceinline
+ULONG
+KeGetCurrentProcessorIndex (
+ void
+ )
+
+{
+
+ return __readgsdword(0x1a4);
+}
+
+#line 20154 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__forceinline
+void
+KeMemoryBarrier (
+ void
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+
+ __faststorefence();
+ return;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 20218 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+#pragma warning(push)
+#pragma warning(suppress:28104 28161 6001 6101)
+
+
+
+
+
+__forceinline
+NTSTATUS
+KeSaveFloatingPointState (
+ PKFLOATING_SAVE FloatSave
+ )
+{
+
+ (FloatSave);
+
+ return ((NTSTATUS)0x00000000L);
+}
+
+#pragma warning(pop)
+
+#pragma warning(push)
+#pragma warning (suppress:28103 28162)
+
+
+
+
+
+__forceinline
+NTSTATUS
+KeRestoreFloatingPointState (
+ PKFLOATING_SAVE FloatSave
+ )
+{
+
+ (FloatSave);
+
+ return ((NTSTATUS)0x00000000L);
+}
+
+#pragma warning(pop)
+
+
+#line 20264 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 20282 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 20324 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+KIRQL
+KeGetCurrentIrql (
+ void
+ );
+
+#line 20334 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+KeLowerIrql (
+ KIRQL NewIrql
+ );
+
+
+
+
+__declspec(dllimport)
+KIRQL
+KfRaiseIrql (
+ KIRQL NewIrql
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 20379 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 20478 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 20480 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+#line 20486 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 21233 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 21270 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+#line 21276 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 22191 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 22230 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+typedef enum _FIRMWARE_TYPE {
+ FirmwareTypeUnknown,
+ FirmwareTypeBios,
+ FirmwareTypeUefi,
+ FirmwareTypeMax
+} FIRMWARE_TYPE, *PFIRMWARE_TYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _LOGICAL_PROCESSOR_RELATIONSHIP {
+ RelationProcessorCore,
+ RelationNumaNode,
+ RelationCache,
+ RelationProcessorPackage,
+ RelationGroup,
+ RelationProcessorDie,
+ RelationNumaNodeEx,
+ RelationProcessorModule,
+ RelationAll = 0xffff
+} LOGICAL_PROCESSOR_RELATIONSHIP;
+
+
+
+
+
+
+typedef enum _PROCESSOR_CACHE_TYPE {
+ CacheUnified,
+ CacheInstruction,
+ CacheData,
+ CacheTrace,
+ CacheUnknown
+} PROCESSOR_CACHE_TYPE, *PPROCESSOR_CACHE_TYPE;
+
+
+
+
+
+
+typedef struct _CACHE_DESCRIPTOR {
+ UCHAR Level;
+ UCHAR Associativity;
+ USHORT LineSize;
+ ULONG Size;
+ PROCESSOR_CACHE_TYPE Type;
+} CACHE_DESCRIPTOR, *PCACHE_DESCRIPTOR;
+
+typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION {
+ ULONG_PTR ProcessorMask;
+ LOGICAL_PROCESSOR_RELATIONSHIP Relationship;
+ union {
+ struct {
+ UCHAR Flags;
+ } ProcessorCore;
+ struct {
+ ULONG NodeNumber;
+ } NumaNode;
+ CACHE_DESCRIPTOR Cache;
+ ULONGLONG Reserved[2];
+ } ;
+} SYSTEM_LOGICAL_PROCESSOR_INFORMATION, *PSYSTEM_LOGICAL_PROCESSOR_INFORMATION;
+
+typedef struct _PROCESSOR_RELATIONSHIP {
+ UCHAR Flags;
+ UCHAR EfficiencyClass;
+ UCHAR Reserved[20];
+ USHORT GroupCount;
+ GROUP_AFFINITY GroupMask[1];
+} PROCESSOR_RELATIONSHIP, *PPROCESSOR_RELATIONSHIP;
+
+typedef struct _NUMA_NODE_RELATIONSHIP {
+ ULONG NodeNumber;
+ UCHAR Reserved[18];
+ USHORT GroupCount;
+ union {
+ GROUP_AFFINITY GroupMask;
+
+ GROUP_AFFINITY GroupMasks[1];
+ } ;
+} NUMA_NODE_RELATIONSHIP, *PNUMA_NODE_RELATIONSHIP;
+
+typedef struct _CACHE_RELATIONSHIP {
+ UCHAR Level;
+ UCHAR Associativity;
+ USHORT LineSize;
+ ULONG CacheSize;
+ PROCESSOR_CACHE_TYPE Type;
+ UCHAR Reserved[18];
+ USHORT GroupCount;
+ union {
+ GROUP_AFFINITY GroupMask;
+
+ GROUP_AFFINITY GroupMasks[1];
+ } ;
+} CACHE_RELATIONSHIP, *PCACHE_RELATIONSHIP;
+
+typedef struct _PROCESSOR_GROUP_INFO {
+ UCHAR MaximumProcessorCount;
+ UCHAR ActiveProcessorCount;
+ UCHAR Reserved[38];
+ KAFFINITY ActiveProcessorMask;
+} PROCESSOR_GROUP_INFO, *PPROCESSOR_GROUP_INFO;
+
+typedef struct _GROUP_RELATIONSHIP {
+ USHORT MaximumGroupCount;
+ USHORT ActiveGroupCount;
+ UCHAR Reserved[20];
+ PROCESSOR_GROUP_INFO GroupInfo[1];
+} GROUP_RELATIONSHIP, *PGROUP_RELATIONSHIP;
+
+ struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX {
+ LOGICAL_PROCESSOR_RELATIONSHIP Relationship;
+ ULONG Size;
+ union {
+ PROCESSOR_RELATIONSHIP Processor;
+ NUMA_NODE_RELATIONSHIP NumaNode;
+ CACHE_RELATIONSHIP Cache;
+ GROUP_RELATIONSHIP Group;
+ } ;
+};
+
+typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX, *PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX;
+
+typedef enum _CPU_SET_INFORMATION_TYPE {
+ CpuSetInformation
+} CPU_SET_INFORMATION_TYPE, *PCPU_SET_INFORMATION_TYPE;
+
+ struct _SYSTEM_CPU_SET_INFORMATION {
+ ULONG Size;
+ CPU_SET_INFORMATION_TYPE Type;
+ union {
+ struct {
+ ULONG Id;
+ USHORT Group;
+ UCHAR LogicalProcessorIndex;
+ UCHAR CoreIndex;
+ UCHAR LastLevelCacheIndex;
+ UCHAR NumaNodeIndex;
+ UCHAR EfficiencyClass;
+ union {
+
+
+
+
+
+
+ UCHAR AllFlags;
+ struct {
+ UCHAR Parked : 1;
+ UCHAR Allocated : 1;
+ UCHAR AllocatedToTargetProcess : 1;
+ UCHAR RealTime : 1;
+ UCHAR ReservedFlags : 4;
+ } ;
+ } ;
+
+ union {
+ ULONG Reserved;
+ UCHAR SchedulingClass;
+ };
+
+ ULONG64 AllocationTag;
+ } CpuSet;
+ } ;
+};
+
+typedef struct _SYSTEM_CPU_SET_INFORMATION SYSTEM_CPU_SET_INFORMATION, *PSYSTEM_CPU_SET_INFORMATION;
+
+
+
+
+typedef struct _SYSTEM_POOL_ZEROING_INFORMATION {
+ BOOLEAN PoolZeroingSupportPresent;
+} SYSTEM_POOL_ZEROING_INFORMATION, *PSYSTEM_POOL_ZEROING_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _ALTERNATIVE_ARCHITECTURE_TYPE {
+ StandardDesign,
+ NEC98x86,
+ EndAlternatives
+} ALTERNATIVE_ARCHITECTURE_TYPE;
+
+
+
+
+
+
+
+#line 22515 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+#line 22519 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+#line 22523 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+#line 22527 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 22529 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _EXCEPTION_RECORD {
+ NTSTATUS ExceptionCode;
+ ULONG ExceptionFlags;
+ struct _EXCEPTION_RECORD *ExceptionRecord;
+ PVOID ExceptionAddress;
+ ULONG NumberParameters;
+ ULONG_PTR ExceptionInformation[15];
+ } EXCEPTION_RECORD;
+
+typedef EXCEPTION_RECORD *PEXCEPTION_RECORD;
+
+typedef struct _EXCEPTION_RECORD32 {
+ NTSTATUS ExceptionCode;
+ ULONG ExceptionFlags;
+ ULONG ExceptionRecord;
+ ULONG ExceptionAddress;
+ ULONG NumberParameters;
+ ULONG ExceptionInformation[15];
+} EXCEPTION_RECORD32, *PEXCEPTION_RECORD32;
+
+typedef struct _EXCEPTION_RECORD64 {
+ NTSTATUS ExceptionCode;
+ ULONG ExceptionFlags;
+ ULONG64 ExceptionRecord;
+ ULONG64 ExceptionAddress;
+ ULONG NumberParameters;
+ ULONG __unusedAlignment;
+ ULONG64 ExceptionInformation[15];
+} EXCEPTION_RECORD64, *PEXCEPTION_RECORD64;
+
+
+
+
+
+typedef struct _EXCEPTION_POINTERS {
+ PEXCEPTION_RECORD ExceptionRecord;
+ PCONTEXT ContextRecord;
+} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 22623 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+#line 22629 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+typedef enum _KINTERRUPT_MODE {
+ LevelSensitive,
+ Latched
+} KINTERRUPT_MODE;
+
+
+
+typedef enum _KINTERRUPT_POLARITY {
+ InterruptPolarityUnknown,
+ InterruptActiveHigh,
+ InterruptRisingEdge = InterruptActiveHigh,
+ InterruptActiveLow,
+ InterruptFallingEdge = InterruptActiveLow,
+
+
+
+ InterruptActiveBoth,
+
+#line 22657 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+ InterruptActiveBothTriggerLow = InterruptActiveBoth,
+ InterruptActiveBothTriggerHigh,
+
+#line 22664 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+} KINTERRUPT_POLARITY, *PKINTERRUPT_POLARITY;
+
+
+
+
+
+
+
+typedef enum _KWAIT_REASON {
+ Executive,
+ FreePage,
+ PageIn,
+ PoolAllocation,
+ DelayExecution,
+ Suspended,
+ UserRequest,
+ WrExecutive,
+ WrFreePage,
+ WrPageIn,
+ WrPoolAllocation,
+ WrDelayExecution,
+ WrSuspended,
+ WrUserRequest,
+ WrSpare0,
+ WrQueue,
+ WrLpcReceive,
+ WrLpcReply,
+ WrVirtualMemory,
+ WrPageOut,
+ WrRendezvous,
+ WrKeyedEvent,
+ WrTerminated,
+ WrProcessInSwap,
+ WrCpuRateControl,
+ WrCalloutStack,
+ WrKernel,
+ WrResource,
+ WrPushLock,
+ WrMutex,
+ WrQuantumEnd,
+ WrDispatchInt,
+ WrPreempted,
+ WrYieldExecution,
+ WrFastMutex,
+ WrGuardedMutex,
+ WrRundown,
+ WrAlertByThreadId,
+ WrDeferredPreempt,
+ WrPhysicalFault,
+ WrIoRing,
+ WrMdlCache,
+ WrRcu,
+ MaximumWaitReason
+} KWAIT_REASON;
+
+
+
+typedef struct _KWAIT_BLOCK {
+ LIST_ENTRY WaitListEntry;
+ UCHAR WaitType;
+ volatile UCHAR BlockState;
+ USHORT WaitKey;
+
+
+
+ LONG SpareLong;
+
+#line 22733 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ union {
+ struct _KTHREAD *Thread;
+ struct _KQUEUE *NotificationQueue;
+ struct _KDPC *Dpc;
+ };
+
+ PVOID Object;
+ PVOID SparePtr;
+
+} KWAIT_BLOCK, *PKWAIT_BLOCK, *PRKWAIT_BLOCK;
+
+
+
+
+
+typedef
+
+
+void
+KSTART_ROUTINE (
+ PVOID StartContext
+ );
+typedef KSTART_ROUTINE *PKSTART_ROUTINE;
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _KDEVICE_QUEUE {
+ CSHORT Type;
+ CSHORT Size;
+ LIST_ENTRY DeviceListHead;
+ KSPIN_LOCK Lock;
+
+
+
+ union {
+ BOOLEAN Busy;
+ struct {
+ LONG64 Reserved : 8;
+ LONG64 Hint : 56;
+ };
+ };
+
+
+
+
+
+#line 22789 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+} KDEVICE_QUEUE, *PKDEVICE_QUEUE, *PRKDEVICE_QUEUE;
+
+typedef struct _KDEVICE_QUEUE_ENTRY {
+ LIST_ENTRY DeviceListEntry;
+ ULONG SortKey;
+ BOOLEAN Inserted;
+} KDEVICE_QUEUE_ENTRY, *PKDEVICE_QUEUE_ENTRY, *PRKDEVICE_QUEUE_ENTRY;
+
+
+
+
+
+
+typedef
+
+
+
+BOOLEAN
+KSERVICE_ROUTINE (
+ struct _KINTERRUPT *Interrupt,
+ PVOID ServiceContext
+ );
+
+typedef KSERVICE_ROUTINE *PKSERVICE_ROUTINE;
+
+typedef
+
+
+BOOLEAN
+KMESSAGE_SERVICE_ROUTINE (
+ struct _KINTERRUPT *Interrupt,
+ PVOID ServiceContext,
+ ULONG MessageID
+ );
+
+typedef KMESSAGE_SERVICE_ROUTINE *PKMESSAGE_SERVICE_ROUTINE;
+
+
+
+
+
+typedef struct _KMUTANT {
+ DISPATCHER_HEADER Header;
+ LIST_ENTRY MutantListEntry;
+ struct _KTHREAD *OwnerThread;
+
+ union {
+ UCHAR MutantFlags;
+ struct {
+ UCHAR Abandoned : 1;
+ UCHAR Spare1 : 7;
+ } ;
+ } ;
+
+ UCHAR ApcDisable;
+} KMUTANT, *PKMUTANT, *PRKMUTANT, KMUTEX, *PKMUTEX, *PRKMUTEX;
+
+
+
+
+
+
+
+
+typedef struct _KSEMAPHORE {
+ DISPATCHER_HEADER Header;
+ LONG Limit;
+} KSEMAPHORE, *PKSEMAPHORE, *PRKSEMAPHORE;
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+KeInitializeDpc (
+ PRKDPC Dpc,
+ PKDEFERRED_ROUTINE DeferredRoutine,
+ PVOID DeferredContext
+ );
+#line 22875 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+KeInitializeThreadedDpc (
+ PRKDPC Dpc,
+ PKDEFERRED_ROUTINE DeferredRoutine,
+ PVOID DeferredContext
+ );
+#line 22885 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+KeInsertQueueDpc (
+ PRKDPC Dpc,
+ PVOID SystemArgument1,
+ PVOID SystemArgument2
+ );
+#line 22895 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+KeRemoveQueueDpc (
+ PRKDPC Dpc
+ );
+#line 22904 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+KeRemoveQueueDpcEx (
+ PRKDPC Dpc,
+ BOOLEAN WaitIfActive
+ );
+#line 22914 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+KeInitializeCrashDumpHeader(
+ ULONG DumpType,
+ ULONG Flags,
+ PVOID Buffer,
+ ULONG BufferSize,
+ PULONG BufferNeeded
+ );
+#line 22928 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+KeSetImportanceDpc (
+ PRKDPC Dpc,
+ KDPC_IMPORTANCE Importance
+ );
+#line 22937 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+KeSetTargetProcessorDpc (
+ PRKDPC Dpc,
+ CCHAR Number
+ );
+#line 22946 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+KeFlushQueuedDpcs (
+ void
+ );
+#line 22957 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+KeInitializeDeviceQueue (
+ PKDEVICE_QUEUE DeviceQueue
+ );
+#line 22970 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+KeInsertDeviceQueue (
+ PKDEVICE_QUEUE DeviceQueue,
+ PKDEVICE_QUEUE_ENTRY DeviceQueueEntry
+ );
+#line 22980 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+KeInsertByKeyDeviceQueue (
+ PKDEVICE_QUEUE DeviceQueue,
+ PKDEVICE_QUEUE_ENTRY DeviceQueueEntry,
+ ULONG SortKey
+ );
+#line 22991 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+PKDEVICE_QUEUE_ENTRY
+KeRemoveDeviceQueue (
+ PKDEVICE_QUEUE DeviceQueue
+ );
+#line 23000 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+PKDEVICE_QUEUE_ENTRY
+KeRemoveByKeyDeviceQueue (
+ PKDEVICE_QUEUE DeviceQueue,
+ ULONG SortKey
+ );
+#line 23010 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+PKDEVICE_QUEUE_ENTRY
+KeRemoveByKeyDeviceQueueIfBusy (
+ PKDEVICE_QUEUE DeviceQueue,
+ ULONG SortKey
+ );
+#line 23020 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+KeRemoveEntryDeviceQueue (
+ PKDEVICE_QUEUE DeviceQueue,
+ PKDEVICE_QUEUE_ENTRY DeviceQueueEntry
+ );
+#line 23030 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+KeSynchronizeExecution (
+ PKINTERRUPT Interrupt,
+ PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
+ PVOID SynchronizeContext
+ );
+#line 23042 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+KIRQL
+KeAcquireInterruptSpinLock (
+ PKINTERRUPT Interrupt
+ );
+#line 23055 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+KeReleaseInterruptSpinLock (
+ PKINTERRUPT Interrupt,
+ KIRQL OldIrql
+ );
+#line 23067 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+KeInitializeEvent (
+ PRKEVENT Event,
+ EVENT_TYPE Type,
+ BOOLEAN State
+ );
+
+
+__declspec(dllimport)
+void
+KeClearEvent (
+ PRKEVENT Event
+ );
+
+
+
+
+__declspec(dllimport)
+LONG
+KeReadStateEvent (
+ PRKEVENT Event
+ );
+#line 23098 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+LONG
+KeResetEvent (
+ PRKEVENT Event
+ );
+#line 23107 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+#line 23115 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+__declspec(dllimport)
+LONG
+KeSetEvent (
+ PRKEVENT Event,
+ KPRIORITY Increment,
+ BOOLEAN Wait
+ );
+#line 23123 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+void
+KeInitializeMutex (
+ PRKMUTEX Mutex,
+ ULONG Level
+ );
+#line 23136 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+LONG
+KeReadStateMutex (
+ PRKMUTEX Mutex
+ );
+#line 23145 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+#line 23153 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+__declspec(dllimport)
+LONG
+KeReleaseMutex (
+ PRKMUTEX Mutex,
+ BOOLEAN Wait
+ );
+#line 23160 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+KeInitializeSemaphore (
+ PRKSEMAPHORE Semaphore,
+ LONG Count,
+ LONG Limit
+ );
+#line 23175 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+LONG
+KeReadStateSemaphore (
+ PRKSEMAPHORE Semaphore
+ );
+#line 23184 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+#line 23192 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+__declspec(dllimport)
+LONG
+KeReleaseSemaphore (
+ PRKSEMAPHORE Semaphore,
+ KPRIORITY Increment,
+ LONG Adjustment,
+ BOOLEAN Wait
+ );
+#line 23201 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+KeDelayExecutionThread (
+ KPROCESSOR_MODE WaitMode,
+ BOOLEAN Alertable,
+ PLARGE_INTEGER Interval
+ );
+#line 23214 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+KPRIORITY
+KeQueryPriorityThread (
+ PKTHREAD Thread
+ );
+#line 23224 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+ULONG
+KeQueryRuntimeThread (
+ PKTHREAD Thread,
+ PULONG UserTime
+ );
+#line 23234 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ULONG64
+KeQueryTotalCycleTimeThread (
+ PKTHREAD Thread,
+ PULONG64 CycleTimeStamp
+ );
+#line 23245 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+KeSetTargetProcessorDpcEx (
+ PKDPC Dpc,
+ PPROCESSOR_NUMBER ProcNumber
+ );
+#line 23256 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+KeRevertToUserAffinityThread (
+ void
+ );
+#line 23266 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+KeSetSystemAffinityThread (
+ KAFFINITY Affinity
+ );
+#line 23276 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+KeRevertToUserAffinityThreadEx (
+ KAFFINITY Affinity
+ );
+#line 23286 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+KeSetSystemGroupAffinityThread (
+ PGROUP_AFFINITY Affinity,
+ PGROUP_AFFINITY PreviousAffinity
+ );
+
+
+
+__declspec(dllimport)
+void
+KeRevertToUserGroupAffinityThread (
+ PGROUP_AFFINITY PreviousAffinity
+ );
+#line 23305 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+KAFFINITY
+KeSetSystemAffinityThreadEx (
+ KAFFINITY Affinity
+ );
+#line 23315 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+KPRIORITY
+KeSetPriorityThread (
+ PKTHREAD Thread,
+ KPRIORITY Priority
+ );
+#line 23326 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+void
+KeEnterCriticalRegion (
+ void
+ );
+#line 23338 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+KeLeaveCriticalRegion (
+ void
+ );
+#line 23348 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+KeEnterGuardedRegion (
+ void
+ );
+#line 23358 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+KeLeaveGuardedRegion (
+ void
+ );
+#line 23368 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+KeAreApcsDisabled (
+ void
+ );
+#line 23378 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+KeInitializeTimer (
+ PKTIMER Timer
+ );
+#line 23393 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+KeInitializeTimerEx (
+ PKTIMER Timer,
+ TIMER_TYPE Type
+ );
+#line 23403 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+KeCancelTimer (
+ PKTIMER
+ );
+#line 23412 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+KeReadStateTimer (
+ PKTIMER Timer
+ );
+#line 23421 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+KeSetTimer (
+ PKTIMER Timer,
+ LARGE_INTEGER DueTime,
+ PKDPC Dpc
+ );
+#line 23432 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+KeSetTimerEx (
+ PKTIMER Timer,
+ LARGE_INTEGER DueTime,
+ LONG Period,
+ PKDPC Dpc
+ );
+#line 23444 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+KeSetCoalescableTimer (
+ PKTIMER Timer,
+ LARGE_INTEGER DueTime,
+ ULONG Period,
+ ULONG TolerableDelay,
+ PKDPC Dpc
+ );
+#line 23457 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+KeWaitForMultipleObjects (
+ ULONG Count,
+ PVOID Object[],
+ WAIT_TYPE WaitType,
+ KWAIT_REASON WaitReason,
+ KPROCESSOR_MODE WaitMode,
+ BOOLEAN Alertable,
+ PLARGE_INTEGER Timeout,
+ PKWAIT_BLOCK WaitBlockArray
+ );
+#line 23478 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+KeWaitForSingleObject (
+ PVOID Object,
+ KWAIT_REASON WaitReason,
+ KPROCESSOR_MODE WaitMode,
+ BOOLEAN Alertable,
+ PLARGE_INTEGER Timeout
+ );
+#line 23493 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+typedef
+
+
+
+ULONG_PTR
+KIPI_BROADCAST_WORKER (
+ ULONG_PTR Argument
+ );
+
+typedef KIPI_BROADCAST_WORKER *PKIPI_BROADCAST_WORKER;
+
+
+
+
+__declspec(dllimport)
+ULONG_PTR
+KeIpiGenericCall (
+ PKIPI_BROADCAST_WORKER BroadcastFunction,
+ ULONG_PTR Context
+ );
+#line 23519 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 23533 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+__declspec(dllimport)
+void
+__stdcall
+KeInitializeSpinLock (
+ PKSPIN_LOCK SpinLock
+ );
+
+#line 23542 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 23579 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+
+KeTestSpinLock (
+ PKSPIN_LOCK SpinLock
+ );
+#line 23591 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+
+KeTryToAcquireSpinLockAtDpcLevel (
+
+
+ PKSPIN_LOCK SpinLock
+ );
+#line 23605 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 23667 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+KeAcquireSpinLockAtDpcLevel (
+ PKSPIN_LOCK SpinLock
+ );
+#line 23687 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+KIRQL
+KeAcquireSpinLockRaiseToDpc (
+ PKSPIN_LOCK SpinLock
+ );
+#line 23700 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+KeReleaseSpinLock (
+ PKSPIN_LOCK SpinLock,
+ KIRQL NewIrql
+ );
+#line 23712 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+KeReleaseSpinLockFromDpcLevel (
+ PKSPIN_LOCK SpinLock
+ );
+#line 23723 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 23725 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+KIRQL
+
+KeAcquireSpinLockForDpc (
+ PKSPIN_LOCK SpinLock
+ );
+#line 23740 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+
+KeReleaseSpinLockForDpc (
+ PKSPIN_LOCK SpinLock,
+ KIRQL OldIrql
+ );
+#line 23753 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+
+KeAcquireInStackQueuedSpinLock (
+ PKSPIN_LOCK SpinLock,
+ PKLOCK_QUEUE_HANDLE LockHandle
+ );
+#line 23778 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+void
+
+KeReleaseInStackQueuedSpinLock (
+ PKLOCK_QUEUE_HANDLE LockHandle
+ );
+#line 23791 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+
+KeAcquireInStackQueuedSpinLockAtDpcLevel (
+ PKSPIN_LOCK SpinLock,
+ PKLOCK_QUEUE_HANDLE LockHandle
+ );
+#line 23810 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+
+KeReleaseInStackQueuedSpinLockFromDpcLevel (
+ PKLOCK_QUEUE_HANDLE LockHandle
+ );
+#line 23822 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+
+KeAcquireInStackQueuedSpinLockForDpc (
+ PKSPIN_LOCK SpinLock,
+ PKLOCK_QUEUE_HANDLE LockHandle
+ );
+#line 23842 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+void
+
+KeReleaseInStackQueuedSpinLockForDpc (
+ PKLOCK_QUEUE_HANDLE LockHandle
+ );
+#line 23855 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 23933 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+typedef struct _KDPC_WATCHDOG_INFORMATION {
+ ULONG DpcTimeLimit;
+ ULONG DpcTimeCount;
+ ULONG DpcWatchdogLimit;
+ ULONG DpcWatchdogCount;
+ ULONG Reserved;
+} KDPC_WATCHDOG_INFORMATION, *PKDPC_WATCHDOG_INFORMATION;
+
+
+
+__declspec(dllimport)
+NTSTATUS
+KeQueryDpcWatchdogInformation (
+ PKDPC_WATCHDOG_INFORMATION WatchdogInformation
+ );
+#line 23954 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+
+LOGICAL
+KeIsExecutingDpc (
+ void
+ );
+#line 23963 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef enum _KBUGCHECK_BUFFER_DUMP_STATE {
+ BufferEmpty,
+ BufferInserted,
+ BufferStarted,
+ BufferFinished,
+ BufferIncomplete
+} KBUGCHECK_BUFFER_DUMP_STATE;
+
+typedef
+
+
+void
+KBUGCHECK_CALLBACK_ROUTINE (
+ PVOID Buffer,
+ ULONG Length
+ );
+typedef KBUGCHECK_CALLBACK_ROUTINE *PKBUGCHECK_CALLBACK_ROUTINE;
+
+typedef struct _KBUGCHECK_CALLBACK_RECORD {
+ LIST_ENTRY Entry;
+ PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine;
+ PVOID Buffer;
+ ULONG Length;
+ PUCHAR Component;
+ ULONG_PTR Checksum;
+ UCHAR State;
+} KBUGCHECK_CALLBACK_RECORD, *PKBUGCHECK_CALLBACK_RECORD;
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+KeDeregisterBugCheckCallback (
+ PKBUGCHECK_CALLBACK_RECORD CallbackRecord
+ );
+#line 24003 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+KeRegisterBugCheckCallback (
+ PKBUGCHECK_CALLBACK_RECORD CallbackRecord,
+ PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine,
+ PVOID Buffer,
+ ULONG Length,
+ PUCHAR Component
+ );
+#line 24016 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef enum _KBUGCHECK_CALLBACK_REASON {
+ KbCallbackInvalid,
+ KbCallbackReserved1,
+ KbCallbackSecondaryDumpData,
+ KbCallbackDumpIo,
+ KbCallbackAddPages,
+ KbCallbackSecondaryMultiPartDumpData,
+ KbCallbackRemovePages,
+ KbCallbackTriageDumpData,
+ KbCallbackReserved2,
+ KbCallbackReserved3,
+} KBUGCHECK_CALLBACK_REASON;
+
+typedef
+
+
+void
+KBUGCHECK_REASON_CALLBACK_ROUTINE (
+ KBUGCHECK_CALLBACK_REASON Reason,
+ struct _KBUGCHECK_REASON_CALLBACK_RECORD* Record,
+ PVOID ReasonSpecificData,
+ ULONG ReasonSpecificDataLength
+ );
+typedef KBUGCHECK_REASON_CALLBACK_ROUTINE *PKBUGCHECK_REASON_CALLBACK_ROUTINE;
+
+KBUGCHECK_REASON_CALLBACK_ROUTINE BugCheckSecondaryMultiPartDumpDataCallback;
+
+typedef struct _KBUGCHECK_REASON_CALLBACK_RECORD {
+ LIST_ENTRY Entry;
+ PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine;
+ PUCHAR Component;
+ ULONG_PTR Checksum;
+ KBUGCHECK_CALLBACK_REASON Reason;
+ UCHAR State;
+} KBUGCHECK_REASON_CALLBACK_RECORD, *PKBUGCHECK_REASON_CALLBACK_RECORD;
+
+
+typedef struct _KBUGCHECK_SECONDARY_DUMP_DATA {
+ PVOID InBuffer;
+ ULONG InBufferLength;
+ ULONG MaximumAllowed;
+ GUID Guid;
+ PVOID OutBuffer;
+ ULONG OutBufferLength;
+} KBUGCHECK_SECONDARY_DUMP_DATA, *PKBUGCHECK_SECONDARY_DUMP_DATA;
+
+typedef struct _KBUGCHECK_SECONDARY_DUMP_DATA_EX {
+ PVOID InBuffer;
+ ULONG InBufferLength;
+ ULONG MaximumAllowed;
+ GUID Guid;
+ PVOID OutBuffer;
+ ULONG OutBufferLength;
+ PVOID Context;
+ ULONG Flags;
+ ULONG DumpType;
+ ULONG BugCheckCode;
+ ULONG_PTR BugCheckParameter1;
+ ULONG_PTR BugCheckParameter2;
+ ULONG_PTR BugCheckParameter3;
+ ULONG_PTR BugCheckParameter4;
+} KBUGCHECK_SECONDARY_DUMP_DATA_EX, *PKBUGCHECK_SECONDARY_DUMP_DATA_EX;
+
+
+
+
+typedef enum _KBUGCHECK_DUMP_IO_TYPE {
+ KbDumpIoInvalid,
+ KbDumpIoHeader,
+ KbDumpIoBody,
+ KbDumpIoSecondaryData,
+ KbDumpIoComplete
+} KBUGCHECK_DUMP_IO_TYPE;
+
+typedef struct _KBUGCHECK_DUMP_IO {
+ ULONG64 Offset;
+ PVOID Buffer;
+ ULONG BufferLength;
+ KBUGCHECK_DUMP_IO_TYPE Type;
+} KBUGCHECK_DUMP_IO, *PKBUGCHECK_DUMP_IO;
+
+
+
+
+
+
+
+
+
+typedef struct _KBUGCHECK_ADD_PAGES {
+ PVOID Context;
+ ULONG Flags;
+ ULONG BugCheckCode;
+ ULONG_PTR Address;
+ ULONG_PTR Count;
+} KBUGCHECK_ADD_PAGES, *PKBUGCHECK_ADD_PAGES;
+
+
+
+
+
+
+
+
+
+typedef struct _KBUGCHECK_REMOVE_PAGES {
+ PVOID Context;
+ ULONG Flags;
+ ULONG BugCheckCode;
+ ULONG_PTR Address;
+ ULONG_PTR Count;
+} KBUGCHECK_REMOVE_PAGES, *PKBUGCHECK_REMOVE_PAGES;
+
+
+
+
+
+typedef struct _KADDRESS_RANGE {
+ PVOID Address;
+ SIZE_T Size;
+} KADDRESS_RANGE, *PKADDRESS_RANGE;
+
+typedef struct _KADDRESS_RANGE_DESCRIPTOR {
+ const KADDRESS_RANGE *AddressRanges;
+ SIZE_T AddressRangeCount;
+} KADDRESS_RANGE_DESCRIPTOR, *PKADDRESS_RANGE_DESCRIPTOR;
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+#line 24158 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+struct _KTRIAGE_DUMP_DATA_ARRAY {
+ LIST_ENTRY List;
+ ULONG NumBlocksUsed;
+ ULONG NumBlocksTotal;
+ ULONG DataSize;
+ ULONG MaxDataSize;
+ ULONG ComponentNameBufferLength;
+ PUCHAR ComponentName;
+
+ KADDRESS_RANGE Blocks[1];
+} KTRIAGE_DUMP_DATA_ARRAY, *PKTRIAGE_DUMP_DATA_ARRAY;
+
+
+
+typedef struct _KBUGCHECK_TRIAGE_DUMP_DATA {
+ PKTRIAGE_DUMP_DATA_ARRAY DataArray;
+ ULONG Flags;
+ ULONG MaxVirtMemSize;
+ ULONG BugCheckCode;
+ ULONG_PTR BugCheckParameter1;
+ ULONG_PTR BugCheckParameter2;
+ ULONG_PTR BugCheckParameter3;
+ ULONG_PTR BugCheckParameter4;
+} KBUGCHECK_TRIAGE_DUMP_DATA, *PKBUGCHECK_TRIAGE_DUMP_DATA;
+
+
+
+NTSTATUS
+KeInitializeTriageDumpDataArray (
+ PKTRIAGE_DUMP_DATA_ARRAY KtriageDumpDataArray,
+ ULONG Size
+ );
+
+
+
+NTSTATUS
+KeAddTriageDumpDataBlock (
+ PKTRIAGE_DUMP_DATA_ARRAY KtriageDumpDataArray,
+ PVOID Address,
+ SIZE_T Size
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+KeDeregisterBugCheckReasonCallback (
+ PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord
+ );
+#line 24232 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+KeRegisterBugCheckReasonCallback (
+ PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord,
+ PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine,
+ KBUGCHECK_CALLBACK_REASON Reason,
+ PUCHAR Component
+ );
+#line 24244 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef
+
+
+BOOLEAN
+NMI_CALLBACK(
+ PVOID Context,
+ BOOLEAN Handled
+ );
+typedef NMI_CALLBACK *PNMI_CALLBACK;
+
+
+
+__declspec(dllimport)
+PVOID
+KeRegisterNmiCallback (
+ PNMI_CALLBACK CallbackRoutine,
+ PVOID Context
+ );
+#line 24264 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+KeDeregisterNmiCallback (
+ PVOID Handle
+ );
+#line 24273 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+typedef enum _BOUND_CALLBACK_STATUS {
+ BoundExceptionContinueSearch = 0,
+ BoundExceptionHandled,
+ BoundExceptionError,
+ BoundExceptionMaximum
+} BOUND_CALLBACK_STATUS, *PBOUND_CALLBACK_STATUS;
+#line 24284 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+typedef
+
+BOUND_CALLBACK_STATUS
+BOUND_CALLBACK(
+ void
+ );
+typedef BOUND_CALLBACK *PBOUND_CALLBACK;
+#line 24294 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+PVOID
+KeRegisterBoundCallback (
+ PBOUND_CALLBACK CallbackRoutine
+ );
+#line 24303 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+KeDeregisterBoundCallback (
+ PVOID Handle
+ );
+#line 24312 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 24314 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+#line 24320 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+__declspec(dllimport)
+__declspec(noreturn)
+void
+__stdcall
+KeBugCheckEx(
+ ULONG BugCheckCode,
+ ULONG_PTR BugCheckParameter1,
+ ULONG_PTR BugCheckParameter2,
+ ULONG_PTR BugCheckParameter3,
+ ULONG_PTR BugCheckParameter4
+ );
+#line 24332 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 24352 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+KeQuerySystemTimePrecise (
+ PLARGE_INTEGER CurrentTime
+ );
+#line 24360 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+ULONG64
+KeQueryInterruptTimePrecise (
+ PULONG64 QpcTimeStamp
+ );
+#line 24368 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+ULONG64
+KeQueryUnbiasedInterruptTimePrecise (
+ PULONG64 QpcTimeStamp
+ );
+#line 24376 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+ULONG
+KeQueryTimeIncrement (
+ void
+ );
+#line 24384 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+ULONGLONG
+KeQueryUnbiasedInterruptTime (
+ void
+ );
+#line 24392 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+ULONG
+KeGetRecommendedSharedDataAlignment (
+ void
+ );
+#line 24400 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+KAFFINITY
+KeQueryActiveProcessors (
+ void
+ );
+#line 24410 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+ULONG
+KeQueryActiveProcessorCount (
+ PKAFFINITY ActiveProcessors
+ );
+#line 24418 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+ULONG
+KeQueryActiveProcessorCountEx (
+ USHORT GroupNumber
+ );
+#line 24426 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+ULONG
+KeQueryMaximumProcessorCount (
+ void
+ );
+#line 24434 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+ULONG
+KeQueryMaximumProcessorCountEx (
+ USHORT GroupNumber
+ );
+#line 24442 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+USHORT
+KeQueryActiveGroupCount (
+ void
+ );
+#line 24450 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+USHORT
+KeQueryMaximumGroupCount (
+ void
+ );
+#line 24458 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+KAFFINITY
+KeQueryGroupAffinity (
+ USHORT GroupNumber
+ );
+#line 24466 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+ULONG
+KeGetCurrentProcessorNumberEx (
+ PPROCESSOR_NUMBER ProcNumber
+ );
+#line 24474 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+KeQueryNodeActiveAffinity (
+ USHORT NodeNumber,
+ PGROUP_AFFINITY Affinity,
+ PUSHORT Count
+ );
+#line 24484 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+USHORT
+KeQueryNodeMaximumProcessorCount (
+ USHORT NodeNumber
+ );
+#line 24492 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+USHORT
+KeQueryHighestNodeNumber (
+ void
+ );
+#line 24500 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+USHORT
+KeGetCurrentNodeNumber (
+ void
+ );
+#line 24508 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+KeQueryLogicalProcessorRelationship (
+ PPROCESSOR_NUMBER ProcessorNumber,
+ LOGICAL_PROCESSOR_RELATIONSHIP RelationshipType,
+ PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Information,
+ PULONG Length
+ );
+#line 24521 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+LOGICAL
+KeShouldYieldProcessor (
+ void
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+KeQueryNodeActiveAffinity2 (
+ USHORT NodeNumber,
+
+ PGROUP_AFFINITY GroupAffinities,
+ USHORT GroupAffinitiesCount,
+ PUSHORT GroupAffinitiesRequired
+ );
+#line 24540 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+ULONG
+KeQueryNodeActiveProcessorCount (
+ USHORT NodeNumber
+ );
+#line 24548 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+#line 24554 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+typedef enum _MEMORY_CACHING_TYPE_ORIG {
+ MmFrameBufferCached = 2
+} MEMORY_CACHING_TYPE_ORIG;
+
+typedef enum _MEMORY_CACHING_TYPE {
+ MmNonCached = 0,
+ MmCached = 1,
+ MmWriteCombined = MmFrameBufferCached,
+ MmHardwareCoherentCached,
+ MmNonCachedUnordered,
+ MmUSWCCached,
+ MmMaximumCacheType,
+ MmNotMapped = -1
+} MEMORY_CACHING_TYPE;
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+KeAreAllApcsDisabled (
+ void
+ );
+#line 24584 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+
+KeInitializeGuardedMutex (
+ PKGUARDED_MUTEX Mutex
+ );
+#line 24595 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+
+KeAcquireGuardedMutex (
+ PKGUARDED_MUTEX Mutex
+ );
+#line 24609 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+void
+
+KeReleaseGuardedMutex (
+ PKGUARDED_MUTEX Mutex
+ );
+#line 24622 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+
+KeTryToAcquireGuardedMutex (
+
+ PKGUARDED_MUTEX Mutex
+ );
+#line 24636 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+void
+
+KeAcquireGuardedMutexUnsafe (
+ PKGUARDED_MUTEX FastMutex
+ );
+#line 24649 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+
+KeReleaseGuardedMutexUnsafe (
+ PKGUARDED_MUTEX FastMutex
+ );
+#line 24661 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+typedef enum {
+ KeProcessorAddStartNotify = 0,
+ KeProcessorAddCompleteNotify,
+ KeProcessorAddFailureNotify
+} KE_PROCESSOR_CHANGE_NOTIFY_STATE;
+
+typedef struct _KE_PROCESSOR_CHANGE_NOTIFY_CONTEXT {
+ KE_PROCESSOR_CHANGE_NOTIFY_STATE State;
+ ULONG NtNumber;
+ NTSTATUS Status;
+
+
+
+ PROCESSOR_NUMBER ProcNumber;
+
+#line 24683 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+} KE_PROCESSOR_CHANGE_NOTIFY_CONTEXT, *PKE_PROCESSOR_CHANGE_NOTIFY_CONTEXT;
+
+typedef
+
+
+void
+PROCESSOR_CALLBACK_FUNCTION (
+ PVOID CallbackContext,
+ PKE_PROCESSOR_CHANGE_NOTIFY_CONTEXT ChangeContext,
+ PNTSTATUS OperationStatus
+ );
+
+typedef PROCESSOR_CALLBACK_FUNCTION *PPROCESSOR_CALLBACK_FUNCTION;
+
+
+
+
+
+PVOID
+KeRegisterProcessorChangeCallback (
+ PPROCESSOR_CALLBACK_FUNCTION CallbackFunction,
+ PVOID CallbackContext,
+ ULONG Flags
+ );
+#line 24710 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+void
+KeDeregisterProcessorChangeCallback (
+ PVOID CallbackHandle
+ );
+#line 24718 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+NTSTATUS
+KeGetProcessorNumberFromIndex (
+ ULONG ProcIndex,
+ PPROCESSOR_NUMBER ProcNumber
+ );
+
+ULONG
+KeGetProcessorIndexFromNumber (
+ PPROCESSOR_NUMBER ProcNumber
+ );
+
+
+typedef struct _XSTATE_SAVE {
+
+
+
+ struct _XSTATE_SAVE* Prev;
+ struct _KTHREAD* Thread;
+ UCHAR Level;
+ XSTATE_CONTEXT XStateContext;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 24769 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+} XSTATE_SAVE, *PXSTATE_SAVE;
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+KeSaveExtendedProcessorState (
+ ULONG64 Mask,
+ PXSTATE_SAVE XStateSave
+ );
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+KeRestoreExtendedProcessorState (
+ PXSTATE_SAVE XStateSave
+ );
+
+#line 24797 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+typedef struct _EXT_SET_PARAMETERS_V0 {
+ ULONG Version;
+ ULONG Reserved;
+ LONGLONG NoWakeTolerance;
+} EXT_SET_PARAMETERS, *PEXT_SET_PARAMETERS;
+
+typedef EXT_SET_PARAMETERS KT2_SET_PARAMETERS, *PKT2_SET_PARAMETERS;
+
+
+__forceinline
+void
+KeInitializeTimer2SetParameters (
+ PKT2_SET_PARAMETERS Parameters
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+
+ memset((Parameters),0,(sizeof(*Parameters)));
+
+ ((void) 0);
+
+ return;
+}
+#line 24845 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+NTSTATUS
+KeConvertAuxiliaryCounterToPerformanceCounter (
+ ULONG64 AuxiliaryCounterValue,
+ PULONG64 PerformanceCounterValue,
+ PULONG64 ConversionError
+ );
+
+NTSTATUS
+KeConvertPerformanceCounterToAuxiliaryCounter (
+ ULONG64 PerformanceCounterValue,
+ PULONG64 AuxiliaryCounterValue,
+ PULONG64 ConversionError
+ );
+
+NTSTATUS
+KeQueryAuxiliaryCounterFrequency (
+ PULONG64 AuxiliaryCounterFrequency
+ );
+
+#line 24869 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+typedef struct _KWAIT_CHAIN {
+ PVOID Head;
+} KWAIT_CHAIN, *PKWAIT_CHAIN;
+
+
+
+
+
+
+
+extern PBOOLEAN KdDebuggerNotPresent;
+extern PBOOLEAN KdDebuggerEnabled;
+
+
+
+
+
+
+
+
+
+
+#line 24894 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+KdDisableDebugger(
+ void
+ );
+#line 24902 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+KdEnableDebugger(
+ void
+ );
+#line 24910 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+KdRefreshDebuggerNotPresent(
+ void
+ );
+#line 24928 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef enum _KD_OPTION {
+ KD_OPTION_SET_BLOCK_ENABLE,
+} KD_OPTION;
+
+
+NTSTATUS
+KdChangeOption(
+ KD_OPTION Option,
+ ULONG InBufferBytes ,
+ PVOID InBuffer,
+ ULONG OutBufferBytes ,
+ PVOID OutBuffer,
+ PULONG OutBufferNeeded
+ );
+#line 24944 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+typedef enum _POOL_TYPE {
+ NonPagedPool,
+ NonPagedPoolExecute = NonPagedPool,
+ PagedPool,
+ NonPagedPoolMustSucceed = NonPagedPool + 2,
+ DontUseThisType,
+ NonPagedPoolCacheAligned = NonPagedPool + 4,
+ PagedPoolCacheAligned,
+ NonPagedPoolCacheAlignedMustS = NonPagedPool + 6,
+ MaxPoolType,
+
+
+
+
+
+
+ NonPagedPoolBase = 0,
+ NonPagedPoolBaseMustSucceed = NonPagedPoolBase + 2,
+ NonPagedPoolBaseCacheAligned = NonPagedPoolBase + 4,
+ NonPagedPoolBaseCacheAlignedMustS = NonPagedPoolBase + 6,
+
+
+
+
+
+
+ NonPagedPoolSession = 32,
+ PagedPoolSession = NonPagedPoolSession + 1,
+ NonPagedPoolMustSucceedSession = PagedPoolSession + 1,
+ DontUseThisTypeSession = NonPagedPoolMustSucceedSession + 1,
+ NonPagedPoolCacheAlignedSession = DontUseThisTypeSession + 1,
+ PagedPoolCacheAlignedSession = NonPagedPoolCacheAlignedSession + 1,
+ NonPagedPoolCacheAlignedMustSSession = PagedPoolCacheAlignedSession + 1,
+
+ NonPagedPoolNx = 512,
+ NonPagedPoolNxCacheAligned = NonPagedPoolNx + 4,
+ NonPagedPoolSessionNx = NonPagedPoolNx + 32,
+
+} POOL_TYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef char __C_ASSERT__[(0x0000000000000800UI64 < 0x1000)?1:-1];
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 25091 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+#line 25098 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+#line 25103 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 25105 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(deprecated("ExAllocatePool is deprecated, use ExAllocatePool2."))
+
+
+#line 25121 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+#line 25127 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 25130 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 25133 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+__declspec(dllimport)
+PVOID
+ExAllocatePool (
+ POOL_TYPE PoolType,
+ SIZE_T NumberOfBytes
+ );
+
+#line 25142 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(deprecated("ExAllocatePoolWithQuota is deprecated, use ExAllocatePool2."))
+
+
+#line 25149 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+#line 25155 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 25157 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+PVOID
+ExAllocatePoolWithQuota (
+ POOL_TYPE PoolType,
+ SIZE_T NumberOfBytes
+ );
+
+#line 25167 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(deprecated("ExAllocatePoolWithTag is deprecated, use ExAllocatePool2."))
+
+
+
+
+
+#line 25178 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 25181 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 25184 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+__declspec(dllimport)
+PVOID
+__stdcall
+ExAllocatePoolWithTag (
+ POOL_TYPE PoolType,
+ SIZE_T NumberOfBytes,
+ ULONG Tag
+ );
+
+#line 25195 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _EX_POOL_PRIORITY {
+ LowPoolPriority,
+ LowPoolPrioritySpecialPoolOverrun = 8,
+ LowPoolPrioritySpecialPoolUnderrun = 9,
+ NormalPoolPriority = 16,
+ NormalPoolPrioritySpecialPoolOverrun = 24,
+ NormalPoolPrioritySpecialPoolUnderrun = 25,
+ HighPoolPriority = 32,
+ HighPoolPrioritySpecialPoolOverrun = 40,
+ HighPoolPrioritySpecialPoolUnderrun = 41
+} EX_POOL_PRIORITY;
+
+
+
+__declspec(deprecated("ExAllocatePoolWithTagPriority is deprecated, use ExAllocatePool3."))
+
+
+
+
+
+#line 25243 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 25246 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 25249 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+__declspec(dllimport)
+PVOID
+__stdcall
+ExAllocatePoolWithTagPriority (
+ POOL_TYPE PoolType,
+ SIZE_T NumberOfBytes,
+ ULONG Tag,
+ EX_POOL_PRIORITY Priority
+ );
+
+#line 25261 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+typedef enum POOL_EXTENDED_PARAMETER_TYPE {
+ PoolExtendedParameterInvalidType = 0,
+ PoolExtendedParameterPriority,
+ PoolExtendedParameterSecurePool,
+ PoolExtendedParameterNumaNode,
+ PoolExtendedParameterMax
+} POOL_EXTENDED_PARAMETER_TYPE, *PPOOL_EXTENDED_PARAMETER_TYPE;
+
+
+
+
+
+
+
+
+
+typedef struct _POOL_EXTENDED_PARAMS_SECURE_POOL {
+ HANDLE SecurePoolHandle;
+ PVOID Buffer;
+ ULONG_PTR Cookie;
+ ULONG SecurePoolFlags;
+} POOL_EXTENDED_PARAMS_SECURE_POOL;
+
+typedef ULONG POOL_NODE_REQUIREMENT;
+
+typedef struct _POOL_EXTENDED_PARAMETER {
+ struct {
+ ULONG64 Type : 8;
+ ULONG64 Optional : 1;
+ ULONG64 Reserved : (64 - 8 - 1);
+ } ;
+
+ union {
+ ULONG64 Reserved2;
+ PVOID Reserved3;
+ EX_POOL_PRIORITY Priority;
+ POOL_EXTENDED_PARAMS_SECURE_POOL* SecurePoolParams;
+ POOL_NODE_REQUIREMENT PreferredNode;
+ } ;
+} POOL_EXTENDED_PARAMETER, *PPOOL_EXTENDED_PARAMETER;
+typedef const POOL_EXTENDED_PARAMETER *PCPOOL_EXTENDED_PARAMETER;
+
+
+typedef
+
+ULONG64 POOL_FLAGS;
+
+
+
+
+
+__declspec(restrict)
+
+
+
+__declspec(dllimport)
+PVOID
+__stdcall
+ExAllocatePool2 (
+ POOL_FLAGS Flags,
+ SIZE_T NumberOfBytes,
+ ULONG Tag
+ );
+
+
+
+
+__declspec(restrict)
+
+
+
+__declspec(dllimport)
+PVOID
+__stdcall
+ExAllocatePool3 (
+ POOL_FLAGS Flags,
+ SIZE_T NumberOfBytes,
+ ULONG Tag,
+ PCPOOL_EXTENDED_PARAMETER ExtendedParameters,
+ ULONG ExtendedParametersCount
+ );
+
+
+__declspec(dllimport)
+void
+__stdcall
+ExFreePool2 (
+ PVOID P,
+ ULONG Tag,
+ PCPOOL_EXTENDED_PARAMETER ExtendedParameters,
+ ULONG ExtendedParametersCount
+ );
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _POOL_CREATE_EXTENDED_PARAMETER_TYPE {
+ PoolCreateExtendedParameterInvalidType,
+ PoolCreateExtendedParameterName
+} POOL_CREATE_EXTENDED_PARAMETER_TYPE, *PPOOL_CREATE_EXTENDED_PARAMETER_TYPE;
+
+typedef struct _POOL_CREATE_EXTENDED_PARAMETER {
+ POOL_CREATE_EXTENDED_PARAMETER_TYPE Type;
+
+ union {
+ UNICODE_STRING PoolName;
+ } ;
+} POOL_CREATE_EXTENDED_PARAMETER, *PPOOL_CREATE_EXTENDED_PARAMETER;
+
+typedef const POOL_CREATE_EXTENDED_PARAMETER* PCPOOL_CREATE_EXTENDED_PARAMETER;
+
+
+
+typedef struct _POOL_CREATE_EXTENDED_PARAMS {
+ ULONG Version;
+ ULONG ParameterCount;
+ PPOOL_CREATE_EXTENDED_PARAMETER Parameters;
+} POOL_CREATE_EXTENDED_PARAMS, *PPOOL_CREATE_EXTENDED_PARAMS;
+
+typedef const POOL_CREATE_EXTENDED_PARAMS* PCPOOL_CREATE_EXTENDED_PARAMS;
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ExCreatePool (
+ ULONG Flags,
+ ULONG_PTR Tag,
+ POOL_CREATE_EXTENDED_PARAMS* Params,
+ HANDLE* PoolHandle
+ );
+
+__declspec(dllimport)
+void
+__stdcall
+ExDestroyPool (
+ HANDLE PoolHandle
+ );
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ExSecurePoolUpdate (
+ HANDLE SecurePoolHandle,
+ ULONG Tag,
+ PVOID Allocation,
+ ULONG_PTR Cookie,
+ SIZE_T Offset,
+ SIZE_T Size,
+ PVOID Buffer
+ );
+
+__declspec(dllimport)
+LOGICAL
+__stdcall
+ExSecurePoolValidate (
+ HANDLE SecurePoolHandle,
+ ULONG Tag,
+ PVOID Allocation,
+ ULONG_PTR Cookie
+ );
+
+#line 25433 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(deprecated("ExAllocatePoolWithQuotaTag is deprecated, use ExAllocatePool2."))
+
+
+
+
+
+#line 25448 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 25450 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+PVOID
+ExAllocatePoolWithQuotaTag (
+ POOL_TYPE PoolType,
+ SIZE_T NumberOfBytes,
+ ULONG Tag
+ );
+
+#line 25461 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+__declspec(selectany) BOOLEAN ExPoolZeroingNativelySupported = 0;
+
+
+
+
+
+
+__forceinline
+
+
+
+
+#line 25486 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 25489 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 25492 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+PVOID
+__stdcall
+ExAllocatePoolZero (
+ POOL_TYPE PoolType,
+ SIZE_T NumberOfBytes,
+ ULONG Tag
+ )
+{
+ PVOID Allocation;
+
+ #pragma warning( suppress : 4996 28751 )
+ Allocation = ExAllocatePoolWithTag((POOL_TYPE) (PoolType | 1024),
+ NumberOfBytes,
+ Tag);
+
+
+
+
+
+
+
+#line 25515 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ return Allocation;
+}
+
+__forceinline
+
+
+
+
+#line 25526 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 25529 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 25532 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+PVOID
+__stdcall
+ExAllocatePoolUninitialized (
+ POOL_TYPE PoolType,
+ SIZE_T NumberOfBytes,
+ ULONG Tag
+ )
+{
+ #pragma warning( suppress : 4996 28751 )
+ return ExAllocatePoolWithTag(PoolType,
+ NumberOfBytes,
+ Tag);
+}
+
+__forceinline
+
+
+
+
+#line 25554 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 25557 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 25560 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+PVOID
+__stdcall
+ExAllocatePoolQuotaZero (
+ POOL_TYPE PoolType,
+ SIZE_T NumberOfBytes,
+ ULONG Tag
+ )
+{
+ PVOID Allocation;
+
+ #pragma warning( suppress : 4996 28751 )
+ Allocation = ExAllocatePoolWithQuotaTag((POOL_TYPE) (PoolType | 1024),
+ NumberOfBytes,
+ Tag);
+
+
+
+
+
+
+
+#line 25583 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ return Allocation;
+}
+
+__forceinline
+
+
+
+
+#line 25594 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 25597 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 25600 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+PVOID
+__stdcall
+ExAllocatePoolQuotaUninitialized (
+ POOL_TYPE PoolType,
+ SIZE_T NumberOfBytes,
+ ULONG Tag
+ )
+{
+ #pragma warning( suppress : 4996 28751 )
+ return ExAllocatePoolWithQuotaTag(PoolType,
+ NumberOfBytes,
+ Tag);
+}
+
+__forceinline
+
+
+
+
+#line 25622 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 25625 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 25628 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+PVOID
+__stdcall
+ExAllocatePoolPriorityZero (
+ POOL_TYPE PoolType,
+ SIZE_T NumberOfBytes,
+ ULONG Tag,
+ EX_POOL_PRIORITY Priority
+ )
+{
+ PVOID Allocation;
+
+ #pragma warning( suppress : 4996 28751 )
+ Allocation = ExAllocatePoolWithTagPriority((POOL_TYPE) (PoolType | 1024),
+ NumberOfBytes,
+ Tag,
+ Priority);
+
+
+
+
+
+
+
+#line 25653 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ return Allocation;
+}
+
+__forceinline
+
+
+
+
+#line 25664 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 25667 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 25670 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+PVOID
+__stdcall
+ExAllocatePoolPriorityUninitialized (
+ POOL_TYPE PoolType,
+ SIZE_T NumberOfBytes,
+ ULONG Tag,
+ EX_POOL_PRIORITY Priority
+ )
+{
+ #pragma warning( suppress : 4996 28751 )
+ return ExAllocatePoolWithTagPriority(PoolType,
+ NumberOfBytes,
+ Tag,
+ Priority);
+}
+
+#line 25688 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+ExFreePool (
+ PVOID P
+ );
+
+#line 25704 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 25720 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+ExFreePoolWithTag (
+ PVOID P,
+ ULONG Tag
+ );
+
+#line 25733 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__forceinline
+void
+ExInitializeFastMutex (
+ PFAST_MUTEX FastMutex
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+
+ WriteRaw(&FastMutex->Count, 0x1);
+ FastMutex->Owner = ((void *)0);
+ FastMutex->Contention = 0;
+ KeInitializeEvent(&FastMutex->Event, SynchronizationEvent, 0);
+ return;
+}
+
+
+
+
+
+__declspec(dllimport)
+void
+
+ExAcquireFastMutexUnsafe(
+
+ PFAST_MUTEX FastMutex
+ );
+
+#line 25786 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+
+ExReleaseFastMutexUnsafe(
+
+ PFAST_MUTEX FastMutex
+ );
+
+#line 25800 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+void
+
+ExAcquireFastMutex (
+
+ PFAST_MUTEX FastMutex
+ );
+
+#line 25815 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+
+ExReleaseFastMutex (
+
+ PFAST_MUTEX FastMutex
+ );
+
+#line 25829 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+
+ExTryToAcquireFastMutex (
+
+ PFAST_MUTEX FastMutex
+ );
+
+#line 25845 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 25871 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+#line 25876 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+LARGE_INTEGER
+ExInterlockedAddLargeInteger (
+ PLARGE_INTEGER Addend,
+ LARGE_INTEGER Increment,
+ PKSPIN_LOCK Lock
+ );
+
+#line 25890 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+ULONG
+
+ExInterlockedAddUlong (
+ PULONG Addend,
+ ULONG Increment,
+ PKSPIN_LOCK Lock
+ );
+
+#line 25904 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 25926 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+PLIST_ENTRY
+
+ExInterlockedInsertHeadList (
+ PLIST_ENTRY ListHead,
+ PLIST_ENTRY ListEntry,
+ PKSPIN_LOCK Lock
+ );
+
+#line 25939 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+PLIST_ENTRY
+
+ExInterlockedInsertTailList (
+ PLIST_ENTRY ListHead,
+ PLIST_ENTRY ListEntry,
+ PKSPIN_LOCK Lock
+ );
+
+#line 25952 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+PLIST_ENTRY
+
+ExInterlockedRemoveHeadList (
+ PLIST_ENTRY ListHead,
+ PKSPIN_LOCK Lock
+ );
+
+#line 25964 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+PSINGLE_LIST_ENTRY
+
+ExInterlockedPopEntryList (
+ PSINGLE_LIST_ENTRY ListHead,
+ PKSPIN_LOCK Lock
+ );
+
+#line 25976 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+PSINGLE_LIST_ENTRY
+
+ExInterlockedPushEntryList (
+ PSINGLE_LIST_ENTRY ListHead,
+ PSINGLE_LIST_ENTRY ListEntry,
+ PKSPIN_LOCK Lock
+ );
+
+#line 25989 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+InitializeSListHead (
+ PSLIST_HEADER SListHead
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 26075 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 26077 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+PSLIST_ENTRY
+FirstEntrySList (
+ PSLIST_HEADER SListHead
+ );
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+USHORT
+ExQueryDepthSList (
+ PSLIST_HEADER SListHead
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 26141 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+#line 26147 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+#line 26154 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 26184 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+__declspec(dllimport)
+PSLIST_ENTRY
+ExpInterlockedPopEntrySList (
+ PSLIST_HEADER ListHead
+ );
+
+__declspec(dllimport)
+PSLIST_ENTRY
+ExpInterlockedPushEntrySList (
+ PSLIST_HEADER ListHead,
+ PSLIST_ENTRY ListEntry
+ );
+
+__declspec(dllimport)
+PSLIST_ENTRY
+ExpInterlockedFlushSList (
+ PSLIST_HEADER ListHead
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 26265 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+typedef struct _LOOKASIDE_LIST_EX {
+ GENERAL_LOOKASIDE_POOL L;
+} LOOKASIDE_LIST_EX, *PLOOKASIDE_LIST_EX;
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ExInitializeLookasideListEx (
+ PLOOKASIDE_LIST_EX Lookaside,
+ PALLOCATE_FUNCTION_EX Allocate,
+ PFREE_FUNCTION_EX Free,
+ POOL_TYPE PoolType,
+ ULONG Flags,
+ SIZE_T Size,
+ ULONG Tag,
+ USHORT Depth
+ );
+
+
+__declspec(dllimport)
+void
+ExDeleteLookasideListEx (
+ PLOOKASIDE_LIST_EX Lookaside
+ );
+
+
+__declspec(dllimport)
+void
+ExFlushLookasideListEx (
+ PLOOKASIDE_LIST_EX Lookaside
+ );
+
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+ExAllocateFromLookasideListEx (
+ PLOOKASIDE_LIST_EX Lookaside
+ );
+
+
+__declspec(dllimport)
+void
+ExFreeToLookasideListEx (
+ PLOOKASIDE_LIST_EX Lookaside,
+ PVOID Entry
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 26424 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 26426 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef struct __declspec(align(64)) _NPAGED_LOOKASIDE_LIST {
+
+ GENERAL_LOOKASIDE L;
+
+
+
+
+
+#line 26436 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+} NPAGED_LOOKASIDE_LIST, *PNPAGED_LOOKASIDE_LIST;
+
+
+
+
+__declspec(dllimport)
+void
+ExInitializeNPagedLookasideList (
+ PNPAGED_LOOKASIDE_LIST Lookaside,
+ PALLOCATE_FUNCTION Allocate,
+ PFREE_FUNCTION Free,
+ ULONG Flags,
+ SIZE_T Size,
+ ULONG Tag,
+ USHORT Depth
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 26496 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 26498 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+ExDeleteNPagedLookasideList (
+ PNPAGED_LOOKASIDE_LIST Lookaside
+ );
+
+#line 26510 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+ExAllocateFromNPagedLookasideList (
+ PNPAGED_LOOKASIDE_LIST Lookaside
+ );
+
+
+__declspec(dllimport)
+void
+ExFreeToNPagedLookasideList (
+ PNPAGED_LOOKASIDE_LIST Lookaside,
+ PVOID Entry
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 26645 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+typedef struct __declspec(align(64)) _PAGED_LOOKASIDE_LIST {
+
+ GENERAL_LOOKASIDE L;
+
+
+
+
+
+#line 26657 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+} PAGED_LOOKASIDE_LIST, *PPAGED_LOOKASIDE_LIST;
+
+
+
+
+
+__declspec(dllimport)
+void
+ExInitializePagedLookasideList (
+ PPAGED_LOOKASIDE_LIST Lookaside,
+ PALLOCATE_FUNCTION Allocate,
+ PFREE_FUNCTION Free,
+ ULONG Flags,
+ SIZE_T Size,
+ ULONG Tag,
+ USHORT Depth
+ );
+
+#line 26677 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+ExDeletePagedLookasideList (
+ PPAGED_LOOKASIDE_LIST Lookaside
+ );
+
+#line 26688 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+PVOID
+ExAllocateFromPagedLookasideList (
+ PPAGED_LOOKASIDE_LIST Lookaside
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 26748 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+ExFreeToPagedLookasideList (
+ PPAGED_LOOKASIDE_LIST Lookaside,
+ PVOID Entry
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 26805 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 26825 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+ProbeForRead (
+ volatile void *Address,
+ SIZE_T Length,
+ ULONG Alignment
+ );
+
+#line 26838 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 26840 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 26842 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+__declspec(noreturn)
+void
+__stdcall
+ExRaiseStatus (
+ NTSTATUS Status
+ );
+
+#line 26859 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+ProbeForWrite (
+ volatile void *Address,
+ SIZE_T Length,
+ ULONG Alignment
+ );
+
+#line 26880 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+typedef enum _WORK_QUEUE_TYPE {
+ CriticalWorkQueue,
+ DelayedWorkQueue,
+ HyperCriticalWorkQueue,
+ NormalWorkQueue,
+ BackgroundWorkQueue,
+ RealTimeWorkQueue,
+ SuperCriticalWorkQueue,
+ MaximumWorkQueue,
+ CustomPriorityWorkQueue = 32
+} WORK_QUEUE_TYPE;
+
+typedef
+
+
+
+void
+WORKER_THREAD_ROUTINE (
+ PVOID Parameter
+ );
+
+typedef WORKER_THREAD_ROUTINE *PWORKER_THREAD_ROUTINE;
+
+typedef struct _WORK_QUEUE_ITEM {
+ LIST_ENTRY List;
+ PWORKER_THREAD_ROUTINE WorkerRoutine;
+ PVOID Parameter;
+} WORK_QUEUE_ITEM, *PWORK_QUEUE_ITEM;
+
+
+__forceinline
+void
+ExInitializeWorkItem (
+ PWORK_QUEUE_ITEM Item,
+ PWORKER_THREAD_ROUTINE Routine,
+ PVOID Context
+ )
+{
+ Item->WorkerRoutine = Routine;
+ Item->Parameter = Context;
+ Item->List.Flink = ((void *)0);
+}
+
+
+
+
+
+
+
+
+
+#line 26942 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 26944 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+ExQueueWorkItem(
+ PWORK_QUEUE_ITEM WorkItem,
+ WORK_QUEUE_TYPE QueueType
+ );
+
+#line 26955 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+#line 26962 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+__declspec(dllimport)
+BOOLEAN
+ExIsProcessorFeaturePresent(
+ ULONG ProcessorFeature
+ );
+
+#line 26969 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+typedef ULONG_PTR ERESOURCE_THREAD;
+typedef ERESOURCE_THREAD *PERESOURCE_THREAD;
+
+typedef struct _OWNER_ENTRY {
+ ERESOURCE_THREAD OwnerThread;
+ union {
+ struct {
+ ULONG IoPriorityBoosted : 1;
+ ULONG OwnerReferenced : 1;
+ ULONG IoQoSPriorityBoosted : 1;
+ ULONG OwnerCount : 29;
+ };
+ ULONG TableSize;
+ };
+
+} OWNER_ENTRY, *POWNER_ENTRY;
+
+typedef struct _ERESOURCE {
+ LIST_ENTRY SystemResourcesList;
+ POWNER_ENTRY OwnerTable;
+
+
+
+
+
+
+
+
+ SHORT ActiveCount;
+ union {
+ USHORT Flag;
+ struct {
+ UCHAR ReservedLowFlags;
+ UCHAR WaiterPriority;
+ };
+ };
+
+ PVOID SharedWaiters;
+ PVOID ExclusiveWaiters;
+
+
+
+
+
+
+
+
+
+ OWNER_ENTRY OwnerEntry;
+ ULONG ActiveEntries;
+ ULONG ContentionCount;
+ ULONG NumberOfSharedWaiters;
+ ULONG NumberOfExclusiveWaiters;
+
+
+
+ volatile CHAR MiscFlags;
+ UCHAR Reserved1[3];
+ ULONG ResourceTimeoutCount;
+
+#line 27036 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ union {
+ PVOID Address;
+ ULONG_PTR CreatorBackTraceIndex;
+ };
+
+ KSPIN_LOCK SpinLock;
+} ERESOURCE, *PERESOURCE;
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _RESOURCE_HASH_ENTRY {
+ LIST_ENTRY ListEntry;
+ PVOID Address;
+ ULONG ContentionCount;
+ ULONG Number;
+} RESOURCE_HASH_ENTRY, *PRESOURCE_HASH_ENTRY;
+
+typedef struct _RESOURCE_PERFORMANCE_DATA {
+ ULONG ActiveResourceCount;
+ ULONG TotalResourceCount;
+ ULONG ExclusiveAcquire;
+ ULONG SharedFirstLevel;
+ ULONG SharedSecondLevel;
+ ULONG StarveFirstLevel;
+ ULONG StarveSecondLevel;
+ ULONG WaitForExclusive;
+ ULONG OwnerTableExpands;
+ ULONG MaximumTableExpand;
+ LIST_ENTRY HashTable[64];
+} RESOURCE_PERFORMANCE_DATA, *PRESOURCE_PERFORMANCE_DATA;
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ExInitializeResourceLite (
+ PERESOURCE Resource
+ );
+
+#line 27091 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ExReinitializeResourceLite (
+ PERESOURCE Resource
+ );
+
+#line 27102 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+ExAcquireResourceSharedLite (
+
+
+ PERESOURCE Resource,
+ BOOLEAN Wait
+ );
+
+#line 27119 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+ExEnterCriticalRegionAndAcquireResourceShared (
+
+ PERESOURCE Resource
+ );
+
+#line 27132 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+ExAcquireResourceExclusiveLite (
+
+
+ PERESOURCE Resource,
+ BOOLEAN Wait
+ );
+
+#line 27150 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+ExEnterCriticalRegionAndAcquireResourceExclusive (
+
+ PERESOURCE Resource
+ );
+
+#line 27163 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+ExAcquireSharedStarveExclusive(
+
+
+ PERESOURCE Resource,
+ BOOLEAN Wait
+ );
+
+#line 27181 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+ExAcquireSharedWaitForExclusive(
+
+
+ PERESOURCE Resource,
+ BOOLEAN Wait
+ );
+
+#line 27198 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+ExEnterCriticalRegionAndAcquireSharedWaitForExclusive (
+
+ PERESOURCE Resource
+ );
+
+#line 27211 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+#line 27222 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+
+ExReleaseResourceLite(
+ PERESOURCE Resource
+ );
+
+#line 27239 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+
+ExReleaseResourceAndLeaveCriticalRegion(
+
+ PERESOURCE Resource
+ );
+
+#line 27253 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+void
+ExReleaseResourceForThreadLite(
+
+ PERESOURCE Resource,
+ ERESOURCE_THREAD ResourceThreadId
+ );
+
+#line 27268 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+ExSetResourceOwnerPointer(
+ PERESOURCE Resource,
+ PVOID OwnerPointer
+ );
+
+#line 27280 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+ExSetResourceOwnerPointerEx(
+ PERESOURCE Resource,
+ PVOID OwnerPointer,
+ ULONG Flags
+ );
+
+
+
+#line 27295 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+ExConvertExclusiveToSharedLite(
+ PERESOURCE Resource
+ );
+
+#line 27306 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ExDeleteResourceLite (
+ PERESOURCE Resource
+ );
+
+#line 27317 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+ULONG
+ExGetExclusiveWaiterCount (
+ PERESOURCE Resource
+ );
+
+#line 27328 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+ULONG
+ExGetSharedWaiterCount (
+ PERESOURCE Resource
+ );
+
+#line 27339 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+ExIsResourceAcquiredExclusiveLite (
+ PERESOURCE Resource
+ );
+
+#line 27360 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+ULONG
+ExIsResourceAcquiredSharedLite (
+ PERESOURCE Resource
+ );
+
+#line 27371 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 27389 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+#line 27390 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+typedef struct _EX_RUNDOWN_REF {
+
+
+
+
+
+ union {
+ ULONG_PTR Count;
+ PVOID Ptr;
+ };
+} EX_RUNDOWN_REF, *PEX_RUNDOWN_REF;
+
+
+
+
+
+typedef struct _EX_RUNDOWN_REF_CACHE_AWARE *PEX_RUNDOWN_REF_CACHE_AWARE;
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+KPROCESSOR_MODE
+ExGetPreviousMode(
+ void
+ );
+
+#line 27428 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+ULONG
+ExSetTimerResolution (
+ ULONG DesiredTime,
+ BOOLEAN SetResolution
+ );
+
+#line 27445 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+ExQueryTimerResolution (
+ PULONG MaximumTime,
+ PULONG MinimumTime,
+ PULONG CurrentTime
+ );
+
+#line 27461 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+ExSystemTimeToLocalTime (
+ PLARGE_INTEGER SystemTime,
+ PLARGE_INTEGER LocalTime
+ );
+
+#line 27476 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+ExLocalTimeToSystemTime (
+ PLARGE_INTEGER LocalTime,
+ PLARGE_INTEGER SystemTime
+ );
+
+#line 27491 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+typedef struct _EX_TIMER *PEX_TIMER;
+
+
+
+
+typedef
+void
+EXT_CALLBACK (
+ PEX_TIMER Timer,
+ PVOID Context
+ );
+
+typedef EXT_CALLBACK *PEXT_CALLBACK;
+
+
+
+
+typedef
+void
+EXT_DELETE_CALLBACK (
+ PVOID Context
+ );
+
+typedef EXT_DELETE_CALLBACK *PEXT_DELETE_CALLBACK;
+typedef PVOID PEXT_CANCEL_PARAMETERS;
+typedef struct _EXT_DELETE_PARAMETERS {
+ ULONG Version;
+ ULONG Reserved;
+ PEXT_DELETE_CALLBACK DeleteCallback;
+ PVOID DeleteContext;
+} EXT_DELETE_PARAMETERS, *PEXT_DELETE_PARAMETERS;
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PEX_TIMER
+ExAllocateTimer (
+ PEXT_CALLBACK Callback,
+ PVOID CallbackContext,
+ ULONG Attributes
+ );
+
+__declspec(dllimport)
+BOOLEAN
+ExSetTimer (
+ PEX_TIMER Timer,
+ LONGLONG DueTime,
+ LONGLONG Period,
+ PEXT_SET_PARAMETERS Parameters
+ );
+
+__declspec(dllimport)
+BOOLEAN
+ExCancelTimer (
+ PEX_TIMER Timer,
+ PEXT_CANCEL_PARAMETERS Parameters
+ );
+
+__declspec(dllimport)
+BOOLEAN
+ExDeleteTimer (
+ PEX_TIMER Timer,
+ BOOLEAN Cancel,
+ BOOLEAN Wait,
+ PEXT_DELETE_PARAMETERS Parameters
+ );
+
+__forceinline
+void
+ExInitializeSetTimerParameters (
+ PEXT_SET_PARAMETERS Parameters
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+
+ KeInitializeTimer2SetParameters(Parameters);
+ return;
+}
+
+__forceinline
+void
+ExInitializeDeleteTimerParameters (
+ PEXT_DELETE_PARAMETERS Parameters
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+
+ memset((Parameters),0,(sizeof(*Parameters)));
+
+ ((void) 0);
+
+ return;
+}
+
+
+#line 27638 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT;
+
+typedef
+
+
+void
+CALLBACK_FUNCTION (
+ PVOID CallbackContext,
+ PVOID Argument1,
+ PVOID Argument2
+ );
+
+typedef CALLBACK_FUNCTION *PCALLBACK_FUNCTION;
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ExCreateCallback (
+ PCALLBACK_OBJECT *CallbackObject,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ BOOLEAN Create,
+ BOOLEAN AllowMultipleCallbacks
+ );
+
+#line 27672 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+PVOID
+ExRegisterCallback (
+ PCALLBACK_OBJECT CallbackObject,
+ PCALLBACK_FUNCTION CallbackFunction,
+ PVOID CallbackContext
+ );
+
+#line 27685 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+ExUnregisterCallback (
+ PVOID CallbackRegistration
+ );
+
+#line 27696 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+ExNotifyCallback (
+ PVOID CallbackObject,
+ PVOID Argument1,
+ PVOID Argument2
+ );
+
+#line 27709 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+ExVerifySuite(
+ SUITE_TYPE SuiteType
+ );
+
+#line 27724 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+
+ExInitializeRundownProtection (
+ PEX_RUNDOWN_REF RunRef
+ );
+
+#line 27740 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+
+ExReInitializeRundownProtection (
+ PEX_RUNDOWN_REF RunRef
+ );
+
+#line 27751 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+
+ExAcquireRundownProtection (
+ PEX_RUNDOWN_REF RunRef
+ );
+
+#line 27764 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+
+ExAcquireRundownProtectionEx (
+ PEX_RUNDOWN_REF RunRef,
+ ULONG Count
+ );
+
+#line 27778 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+
+ExReleaseRundownProtection (
+ PEX_RUNDOWN_REF RunRef
+ );
+
+#line 27790 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+
+ExReleaseRundownProtectionEx (
+ PEX_RUNDOWN_REF RunRef,
+ ULONG Count
+ );
+
+#line 27803 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+
+ExRundownCompleted (
+ PEX_RUNDOWN_REF RunRef
+ );
+
+#line 27814 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+
+ExWaitForRundownProtectionRelease (
+ PEX_RUNDOWN_REF RunRef
+ );
+
+#line 27826 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+PEX_RUNDOWN_REF_CACHE_AWARE
+ExAllocateCacheAwareRundownProtection(
+ POOL_TYPE PoolType,
+ ULONG PoolTag
+ );
+
+#line 27839 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+SIZE_T
+ExSizeOfRundownProtectionCacheAware(
+ void
+ );
+
+#line 27850 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+ExInitializeRundownProtectionCacheAware(
+ PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware,
+ SIZE_T RunRefSize
+ );
+
+#line 27862 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+ExFreeCacheAwareRundownProtection(
+ PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware
+ );
+
+#line 27873 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+
+ExAcquireRundownProtectionCacheAware (
+ PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware
+ );
+
+#line 27886 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+
+ExReleaseRundownProtectionCacheAware (
+ PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware
+ );
+
+#line 27897 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+
+ExAcquireRundownProtectionCacheAwareEx (
+ PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware,
+ ULONG Count
+ );
+
+#line 27911 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+
+ExReleaseRundownProtectionCacheAwareEx (
+ PEX_RUNDOWN_REF_CACHE_AWARE RunRef,
+ ULONG Count
+ );
+
+#line 27923 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+
+ExWaitForRundownProtectionReleaseCacheAware (
+ PEX_RUNDOWN_REF_CACHE_AWARE RunRef
+ );
+
+#line 27934 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+
+ExReInitializeRundownProtectionCacheAware (
+ PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware
+ );
+
+#line 27945 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+
+ExRundownCompletedCacheAware (
+ PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware
+ );
+
+#line 27956 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+ExInitializeRundownProtectionCacheAwareEx (
+ PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware,
+ ULONG Flags
+ );
+
+#line 27979 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+ExCleanupRundownProtectionCacheAware (
+ PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware
+ );
+
+#line 27994 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+void
+ExInitializePushLock (
+ PULONG_PTR PushLock
+ );
+
+
+
+
+
+__declspec(dllimport)
+void
+
+ExAcquirePushLockExclusiveEx (
+
+ PULONG_PTR PushLock,
+ ULONG Flags
+ );
+
+
+
+__declspec(dllimport)
+void
+
+ExAcquirePushLockSharedEx (
+
+ PULONG_PTR PushLock,
+ ULONG Flags
+ );
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+
+ExTryAcquirePushLockExclusiveEx (
+
+ PULONG_PTR PushLock,
+ ULONG Flags
+ );
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+
+ExTryAcquirePushLockSharedEx (
+
+ PULONG_PTR PushLock,
+ ULONG Flags
+ );
+
+
+
+
+__declspec(dllimport)
+void
+
+ExReleasePushLockExclusiveEx (
+
+ PULONG_PTR PushLock,
+ ULONG Flags
+ );
+
+
+
+__declspec(dllimport)
+void
+
+ExReleasePushLockSharedEx (
+
+ PULONG_PTR PushLock,
+ ULONG Flags
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 28098 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+#line 28099 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ExInitializeDeviceAts (
+ struct _DEVICE_OBJECT *PhysicalDeviceObject,
+ ULONG Flags
+ );
+
+#line 28113 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+typedef volatile LONG EX_SPIN_LOCK, *PEX_SPIN_LOCK;
+
+
+
+
+
+__declspec(dllimport)
+void
+ExAcquireSpinLockSharedAtDpcLevel (
+
+ PEX_SPIN_LOCK SpinLock
+ );
+
+
+
+__declspec(dllimport)
+KIRQL
+ExAcquireSpinLockShared (
+
+ PEX_SPIN_LOCK SpinLock
+ );
+
+
+__declspec(dllimport)
+void
+ExReleaseSpinLockSharedFromDpcLevel (
+
+ PEX_SPIN_LOCK SpinLock
+ );
+
+
+__declspec(dllimport)
+void
+ExReleaseSpinLockShared (
+
+ PEX_SPIN_LOCK SpinLock,
+ KIRQL OldIrql
+ );
+
+
+
+
+__declspec(dllimport)
+LOGICAL
+ExTryConvertSharedSpinLockExclusive (
+ PEX_SPIN_LOCK SpinLock
+ );
+
+
+__declspec(dllimport)
+void
+ExAcquireSpinLockExclusiveAtDpcLevel (
+
+ PEX_SPIN_LOCK SpinLock
+ );
+
+
+
+__declspec(dllimport)
+KIRQL
+ExAcquireSpinLockExclusive (
+
+ PEX_SPIN_LOCK SpinLock
+ );
+
+
+__declspec(dllimport)
+void
+ExReleaseSpinLockExclusiveFromDpcLevel (
+
+ PEX_SPIN_LOCK SpinLock
+ );
+
+
+__declspec(dllimport)
+void
+ExReleaseSpinLockExclusive (
+
+ PEX_SPIN_LOCK SpinLock,
+ KIRQL OldIrql
+ );
+
+#line 28201 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+LOGICAL
+ExTryAcquireSpinLockSharedAtDpcLevel (
+
+
+ PEX_SPIN_LOCK SpinLock
+ );
+
+
+LOGICAL
+ExTryAcquireSpinLockExclusiveAtDpcLevel (
+
+
+ PEX_SPIN_LOCK SpinLock
+ );
+
+#line 28221 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+typedef
+
+
+NTSTATUS
+EX_CALLBACK_FUNCTION (
+ PVOID CallbackContext,
+ PVOID Argument1,
+ PVOID Argument2
+ );
+
+typedef EX_CALLBACK_FUNCTION *PEX_CALLBACK_FUNCTION;
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ExGetFirmwareEnvironmentVariable (
+ PUNICODE_STRING VariableName,
+ LPGUID VendorGuid,
+ PVOID Value,
+ PULONG ValueLength,
+ PULONG Attributes
+ );
+
+__declspec(dllimport)
+NTSTATUS
+ExSetFirmwareEnvironmentVariable (
+ PUNICODE_STRING VariableName,
+ LPGUID VendorGuid,
+ PVOID Value,
+ ULONG ValueLength,
+ ULONG Attributes
+ );
+#line 28261 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+ExIsManufacturingModeEnabled (
+ void
+ );
+#line 28272 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+ExIsSoftBoot (
+ void
+ );
+#line 28283 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+FIRMWARE_TYPE
+ExGetFirmwareType (
+ void
+ );
+#line 28292 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ExEnumerateSystemFirmwareTables(
+ ULONG FirmwareTableProviderSignature,
+ PVOID FirmwareTableBuffer,
+ ULONG BufferLength,
+ PULONG ReturnLength
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+ExGetSystemFirmwareTable(
+ ULONG FirmwareTableProviderSignature,
+ ULONG FirmwareTableID,
+ PVOID FirmwareTableBuffer,
+ ULONG BufferLength,
+ PULONG ReturnLength
+ );
+#line 28316 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+typedef enum _REG_NOTIFY_CLASS {
+ RegNtDeleteKey,
+ RegNtPreDeleteKey = RegNtDeleteKey,
+ RegNtSetValueKey,
+ RegNtPreSetValueKey = RegNtSetValueKey,
+ RegNtDeleteValueKey,
+ RegNtPreDeleteValueKey = RegNtDeleteValueKey,
+ RegNtSetInformationKey,
+ RegNtPreSetInformationKey = RegNtSetInformationKey,
+ RegNtRenameKey,
+ RegNtPreRenameKey = RegNtRenameKey,
+ RegNtEnumerateKey,
+ RegNtPreEnumerateKey = RegNtEnumerateKey,
+ RegNtEnumerateValueKey,
+ RegNtPreEnumerateValueKey = RegNtEnumerateValueKey,
+ RegNtQueryKey,
+ RegNtPreQueryKey = RegNtQueryKey,
+ RegNtQueryValueKey,
+ RegNtPreQueryValueKey = RegNtQueryValueKey,
+ RegNtQueryMultipleValueKey,
+ RegNtPreQueryMultipleValueKey = RegNtQueryMultipleValueKey,
+ RegNtPreCreateKey,
+ RegNtPostCreateKey,
+ RegNtPreOpenKey,
+ RegNtPostOpenKey,
+ RegNtKeyHandleClose,
+ RegNtPreKeyHandleClose = RegNtKeyHandleClose,
+
+
+
+ RegNtPostDeleteKey,
+ RegNtPostSetValueKey,
+ RegNtPostDeleteValueKey,
+ RegNtPostSetInformationKey,
+ RegNtPostRenameKey,
+ RegNtPostEnumerateKey,
+ RegNtPostEnumerateValueKey,
+ RegNtPostQueryKey,
+ RegNtPostQueryValueKey,
+ RegNtPostQueryMultipleValueKey,
+ RegNtPostKeyHandleClose,
+ RegNtPreCreateKeyEx,
+ RegNtPostCreateKeyEx,
+ RegNtPreOpenKeyEx,
+ RegNtPostOpenKeyEx,
+
+
+
+ RegNtPreFlushKey,
+ RegNtPostFlushKey,
+ RegNtPreLoadKey,
+ RegNtPostLoadKey,
+ RegNtPreUnLoadKey,
+ RegNtPostUnLoadKey,
+ RegNtPreQueryKeySecurity,
+ RegNtPostQueryKeySecurity,
+ RegNtPreSetKeySecurity,
+ RegNtPostSetKeySecurity,
+
+
+
+ RegNtCallbackObjectContextCleanup,
+
+
+
+ RegNtPreRestoreKey,
+ RegNtPostRestoreKey,
+ RegNtPreSaveKey,
+ RegNtPostSaveKey,
+ RegNtPreReplaceKey,
+ RegNtPostReplaceKey,
+
+
+
+ RegNtPreQueryKeyName,
+ RegNtPostQueryKeyName,
+ RegNtPreSaveMergedKey,
+ RegNtPostSaveMergedKey,
+
+ MaxRegNtNotifyClass
+} REG_NOTIFY_CLASS;
+
+
+
+
+typedef struct _REG_DELETE_KEY_INFORMATION {
+ PVOID Object;
+ PVOID CallContext;
+ PVOID ObjectContext;
+ PVOID Reserved;
+} REG_DELETE_KEY_INFORMATION, *PREG_DELETE_KEY_INFORMATION
+
+, REG_FLUSH_KEY_INFORMATION, *PREG_FLUSH_KEY_INFORMATION
+#line 28420 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+;
+
+typedef struct _REG_SET_VALUE_KEY_INFORMATION {
+ PVOID Object;
+ PUNICODE_STRING ValueName;
+ ULONG TitleIndex;
+ ULONG Type;
+ PVOID Data;
+ ULONG DataSize;
+ PVOID CallContext;
+ PVOID ObjectContext;
+ PVOID Reserved;
+} REG_SET_VALUE_KEY_INFORMATION, *PREG_SET_VALUE_KEY_INFORMATION;
+
+typedef struct _REG_DELETE_VALUE_KEY_INFORMATION {
+ PVOID Object;
+ PUNICODE_STRING ValueName;
+ PVOID CallContext;
+ PVOID ObjectContext;
+ PVOID Reserved;
+} REG_DELETE_VALUE_KEY_INFORMATION, *PREG_DELETE_VALUE_KEY_INFORMATION;
+
+typedef struct _REG_SET_INFORMATION_KEY_INFORMATION {
+ PVOID Object;
+ KEY_SET_INFORMATION_CLASS KeySetInformationClass;
+ PVOID KeySetInformation;
+ ULONG KeySetInformationLength;
+ PVOID CallContext;
+ PVOID ObjectContext;
+ PVOID Reserved;
+} REG_SET_INFORMATION_KEY_INFORMATION, *PREG_SET_INFORMATION_KEY_INFORMATION;
+
+typedef struct _REG_ENUMERATE_KEY_INFORMATION {
+ PVOID Object;
+ ULONG Index;
+ KEY_INFORMATION_CLASS KeyInformationClass;
+ PVOID KeyInformation;
+ ULONG Length;
+ PULONG ResultLength;
+ PVOID CallContext;
+ PVOID ObjectContext;
+ PVOID Reserved;
+} REG_ENUMERATE_KEY_INFORMATION, *PREG_ENUMERATE_KEY_INFORMATION;
+
+typedef struct _REG_ENUMERATE_VALUE_KEY_INFORMATION {
+ PVOID Object;
+ ULONG Index;
+ KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass;
+ PVOID KeyValueInformation;
+ ULONG Length;
+ PULONG ResultLength;
+ PVOID CallContext;
+ PVOID ObjectContext;
+ PVOID Reserved;
+} REG_ENUMERATE_VALUE_KEY_INFORMATION, *PREG_ENUMERATE_VALUE_KEY_INFORMATION;
+
+typedef struct _REG_QUERY_KEY_INFORMATION {
+ PVOID Object;
+ KEY_INFORMATION_CLASS KeyInformationClass;
+ PVOID KeyInformation;
+ ULONG Length;
+ PULONG ResultLength;
+ PVOID CallContext;
+ PVOID ObjectContext;
+ PVOID Reserved;
+} REG_QUERY_KEY_INFORMATION, *PREG_QUERY_KEY_INFORMATION;
+
+typedef struct _REG_QUERY_VALUE_KEY_INFORMATION {
+ PVOID Object;
+ PUNICODE_STRING ValueName;
+ KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass;
+ PVOID KeyValueInformation;
+ ULONG Length;
+ PULONG ResultLength;
+ PVOID CallContext;
+ PVOID ObjectContext;
+ PVOID Reserved;
+} REG_QUERY_VALUE_KEY_INFORMATION, *PREG_QUERY_VALUE_KEY_INFORMATION;
+
+typedef struct _REG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION {
+ PVOID Object;
+ PKEY_VALUE_ENTRY ValueEntries;
+ ULONG EntryCount;
+ PVOID ValueBuffer;
+ PULONG BufferLength;
+ PULONG RequiredBufferLength;
+ PVOID CallContext;
+ PVOID ObjectContext;
+ PVOID Reserved;
+} REG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION, *PREG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION;
+
+typedef struct _REG_RENAME_KEY_INFORMATION {
+ PVOID Object;
+ PUNICODE_STRING NewName;
+ PVOID CallContext;
+ PVOID ObjectContext;
+ PVOID Reserved;
+} REG_RENAME_KEY_INFORMATION, *PREG_RENAME_KEY_INFORMATION;
+
+
+typedef struct _REG_KEY_HANDLE_CLOSE_INFORMATION {
+ PVOID Object;
+ PVOID CallContext;
+ PVOID ObjectContext;
+ PVOID Reserved;
+} REG_KEY_HANDLE_CLOSE_INFORMATION, *PREG_KEY_HANDLE_CLOSE_INFORMATION;
+
+
+typedef struct _REG_CREATE_KEY_INFORMATION {
+ PUNICODE_STRING CompleteName;
+ PVOID RootObject;
+ PVOID ObjectType;
+ ULONG CreateOptions;
+ PUNICODE_STRING Class;
+ PVOID SecurityDescriptor;
+ PVOID SecurityQualityOfService;
+ ACCESS_MASK DesiredAccess;
+ ACCESS_MASK GrantedAccess;
+
+
+ PULONG Disposition;
+
+
+ PVOID *ResultObject;
+
+
+ PVOID CallContext;
+ PVOID RootObjectContext;
+ PVOID Transaction;
+ PVOID Reserved;
+
+} REG_CREATE_KEY_INFORMATION, REG_OPEN_KEY_INFORMATION,*PREG_CREATE_KEY_INFORMATION, *PREG_OPEN_KEY_INFORMATION;
+
+typedef struct _REG_CREATE_KEY_INFORMATION_V1 {
+ PUNICODE_STRING CompleteName;
+ PVOID RootObject;
+ PVOID ObjectType;
+ ULONG Options;
+ PUNICODE_STRING Class;
+ PVOID SecurityDescriptor;
+ PVOID SecurityQualityOfService;
+ ACCESS_MASK DesiredAccess;
+ ACCESS_MASK GrantedAccess;
+
+
+ PULONG Disposition;
+
+
+ PVOID *ResultObject;
+
+
+ PVOID CallContext;
+ PVOID RootObjectContext;
+ PVOID Transaction;
+
+ ULONG_PTR Version;
+ PUNICODE_STRING RemainingName;
+ ULONG Wow64Flags;
+ ULONG Attributes;
+ KPROCESSOR_MODE CheckAccessMode;
+
+} REG_CREATE_KEY_INFORMATION_V1, REG_OPEN_KEY_INFORMATION_V1,*PREG_CREATE_KEY_INFORMATION_V1, *PREG_OPEN_KEY_INFORMATION_V1;
+
+
+
+typedef struct _REG_POST_OPERATION_INFORMATION {
+ PVOID Object;
+ NTSTATUS Status;
+ PVOID PreInformation;
+
+ NTSTATUS ReturnStatus;
+
+ PVOID CallContext;
+ PVOID ObjectContext;
+ PVOID Reserved;
+} REG_POST_OPERATION_INFORMATION,*PREG_POST_OPERATION_INFORMATION;
+
+
+
+typedef struct _REG_PRE_CREATE_KEY_INFORMATION {
+ PUNICODE_STRING CompleteName;
+} REG_PRE_CREATE_KEY_INFORMATION, REG_PRE_OPEN_KEY_INFORMATION,*PREG_PRE_CREATE_KEY_INFORMATION, *PREG_PRE_OPEN_KEY_INFORMATION;;
+
+typedef struct _REG_POST_CREATE_KEY_INFORMATION {
+ PUNICODE_STRING CompleteName;
+ PVOID Object;
+ NTSTATUS Status;
+} REG_POST_CREATE_KEY_INFORMATION,REG_POST_OPEN_KEY_INFORMATION, *PREG_POST_CREATE_KEY_INFORMATION, *PREG_POST_OPEN_KEY_INFORMATION;
+
+
+
+
+typedef struct _REG_LOAD_KEY_INFORMATION {
+ PVOID Object;
+ PUNICODE_STRING KeyName;
+ PUNICODE_STRING SourceFile;
+ ULONG Flags;
+ PVOID TrustClassObject;
+ PVOID UserEvent;
+ ACCESS_MASK DesiredAccess;
+ PHANDLE RootHandle;
+ PVOID CallContext;
+ PVOID ObjectContext;
+ PVOID Reserved;
+} REG_LOAD_KEY_INFORMATION, *PREG_LOAD_KEY_INFORMATION;
+
+typedef struct _REG_UNLOAD_KEY_INFORMATION {
+ PVOID Object;
+ PVOID UserEvent;
+ PVOID CallContext;
+ PVOID ObjectContext;
+ PVOID Reserved;
+} REG_UNLOAD_KEY_INFORMATION, *PREG_UNLOAD_KEY_INFORMATION;
+
+typedef struct _REG_CALLBACK_CONTEXT_CLEANUP_INFORMATION {
+ PVOID Object;
+ PVOID ObjectContext;
+ PVOID Reserved;
+} REG_CALLBACK_CONTEXT_CLEANUP_INFORMATION, *PREG_CALLBACK_CONTEXT_CLEANUP_INFORMATION;
+
+typedef struct _REG_QUERY_KEY_SECURITY_INFORMATION {
+ PVOID Object;
+ PSECURITY_INFORMATION SecurityInformation;
+ PSECURITY_DESCRIPTOR SecurityDescriptor;
+ PULONG Length;
+ PVOID CallContext;
+ PVOID ObjectContext;
+ PVOID Reserved;
+} REG_QUERY_KEY_SECURITY_INFORMATION, *PREG_QUERY_KEY_SECURITY_INFORMATION;
+
+typedef struct _REG_SET_KEY_SECURITY_INFORMATION {
+ PVOID Object;
+ PSECURITY_INFORMATION SecurityInformation;
+ PSECURITY_DESCRIPTOR SecurityDescriptor;
+ PVOID CallContext;
+ PVOID ObjectContext;
+ PVOID Reserved;
+} REG_SET_KEY_SECURITY_INFORMATION, *PREG_SET_KEY_SECURITY_INFORMATION;
+
+
+typedef struct _REG_RESTORE_KEY_INFORMATION {
+ PVOID Object;
+ HANDLE FileHandle;
+ ULONG Flags;
+ PVOID CallContext;
+ PVOID ObjectContext;
+ PVOID Reserved;
+} REG_RESTORE_KEY_INFORMATION, *PREG_RESTORE_KEY_INFORMATION;
+
+typedef struct _REG_SAVE_KEY_INFORMATION {
+ PVOID Object;
+ HANDLE FileHandle;
+ ULONG Format;
+ PVOID CallContext;
+ PVOID ObjectContext;
+ PVOID Reserved;
+} REG_SAVE_KEY_INFORMATION, *PREG_SAVE_KEY_INFORMATION;
+
+typedef struct _REG_REPLACE_KEY_INFORMATION {
+ PVOID Object;
+ PUNICODE_STRING OldFileName;
+ PUNICODE_STRING NewFileName;
+ PVOID CallContext;
+ PVOID ObjectContext;
+ PVOID Reserved;
+} REG_REPLACE_KEY_INFORMATION, *PREG_REPLACE_KEY_INFORMATION;
+#line 28687 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef struct _REG_QUERY_KEY_NAME {
+ PVOID Object;
+ POBJECT_NAME_INFORMATION ObjectNameInfo;
+ ULONG Length;
+ PULONG ReturnLength;
+ PVOID CallContext;
+ PVOID ObjectContext;
+ PVOID Reserved;
+} REG_QUERY_KEY_NAME, *PREG_QUERY_KEY_NAME;
+
+
+
+__declspec(dllimport)
+NTSTATUS
+CmRegisterCallback( PEX_CALLBACK_FUNCTION Function,
+ PVOID Context,
+ PLARGE_INTEGER Cookie
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+CmUnRegisterCallback( LARGE_INTEGER Cookie);
+
+#line 28713 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+CmRegisterCallbackEx ( PEX_CALLBACK_FUNCTION Function,
+ PCUNICODE_STRING Altitude,
+ PVOID Driver,
+ PVOID Context,
+ PLARGE_INTEGER Cookie,
+ PVOID Reserved
+ );
+
+
+__declspec(dllimport)
+void
+CmGetCallbackVersion ( PULONG Major,
+ PULONG Minor
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+CmSetCallbackObjectContext ( PVOID Object,
+ PLARGE_INTEGER Cookie,
+ PVOID NewContext,
+ PVOID *OldContext
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+CmCallbackGetKeyObjectID ( PLARGE_INTEGER Cookie,
+ PVOID Object,
+ PULONG_PTR ObjectID,
+ PCUNICODE_STRING *ObjectName
+ );
+
+
+__declspec(dllimport)
+PVOID
+CmGetBoundTransaction( PLARGE_INTEGER Cookie,
+ PVOID Object );
+
+#line 28758 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+typedef struct _REG_LOAD_KEY_INFORMATION_V2 {
+ PVOID Object;
+ PUNICODE_STRING KeyName;
+ PUNICODE_STRING SourceFile;
+ ULONG Flags;
+ PVOID TrustClassObject;
+ PVOID UserEvent;
+ ACCESS_MASK DesiredAccess;
+ PHANDLE RootHandle;
+ PVOID CallContext;
+ PVOID ObjectContext;
+ ULONG_PTR Version;
+ PVOID FileAccessToken;
+} REG_LOAD_KEY_INFORMATION_V2, *PREG_LOAD_KEY_INFORMATION_V2;
+
+#line 28777 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+CmCallbackGetKeyObjectIDEx (
+ PLARGE_INTEGER Cookie,
+ PVOID Object,
+ PULONG_PTR ObjectID,
+ PCUNICODE_STRING *ObjectName,
+ ULONG Flags
+ );
+
+
+__declspec(dllimport)
+void
+CmCallbackReleaseKeyObjectIDEx (
+ PCUNICODE_STRING ObjectName
+ );
+
+#line 28799 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+typedef struct _REG_SAVE_MERGED_KEY_INFORMATION {
+ PVOID Object;
+ HANDLE FileHandle;
+ PVOID HighKeyObject;
+ PVOID LowKeyObject;
+ PVOID CallContext;
+ PVOID ObjectContext;
+ PVOID Reserved;
+} REG_SAVE_MERGED_KEY_INFORMATION, *PREG_SAVE_MERGED_KEY_INFORMATION;
+
+#line 28813 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 28941 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+extern PBOOLEAN Mm64BitPhysicalAddress;
+
+#line 28945 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+extern PVOID MmBadPointer;
+
+
+
+
+
+
+
+
+
+
+
+#pragma deprecated(MmBadPointer)
+
+
+
+
+
+#line 28972 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 29117 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _MM_SYSTEM_SIZE {
+ MmSmallSystem,
+ MmMediumSystem,
+ MmLargeSystem
+} MM_SYSTEMSIZE;
+
+
+__declspec(dllimport)
+MM_SYSTEMSIZE
+MmQuerySystemSize (
+ void
+ );
+#line 29257 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+MmProbeAndLockSelectedPages (
+ PMDL MemoryDescriptorList,
+ PFILE_SEGMENT_ELEMENT SegmentArray,
+ KPROCESSOR_MODE AccessMode,
+ LOCK_OPERATION Operation
+ );
+
+
+
+
+__declspec(dllimport)
+void
+MmProbeAndLockProcessPages (
+ PMDL MemoryDescriptorList,
+ PEPROCESS Process,
+ KPROCESSOR_MODE AccessMode,
+ LOCK_OPERATION Operation
+ );
+#line 29285 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+#line 29290 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+__declspec(dllimport)
+void
+MmProbeAndLockPages (
+ PMDL MemoryDescriptorList,
+ KPROCESSOR_MODE AccessMode,
+ LOCK_OPERATION Operation
+ );
+#line 29298 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+MmUnlockPages (
+ PMDL MemoryDescriptorList
+ );
+#line 29307 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+MmBuildMdlForNonPagedPool (
+ PMDL MemoryDescriptorList
+ );
+#line 29316 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+typedef struct _MM_PHYSICAL_ADDRESS_LIST {
+ PHYSICAL_ADDRESS PhysicalAddress;
+ SIZE_T NumberOfBytes;
+} MM_PHYSICAL_ADDRESS_LIST, *PMM_PHYSICAL_ADDRESS_LIST;
+
+
+__declspec(dllimport)
+NTSTATUS
+MmAllocateMdlForIoSpace (
+ PMM_PHYSICAL_ADDRESS_LIST PhysicalAddressList,
+ SIZE_T NumberOfEntries,
+ PMDL *NewMdl
+ );
+
+
+__declspec(dllimport)
+LOGICAL
+MmAreMdlPagesCached (
+ PMDL MemoryDescriptorList
+ );
+
+#line 29341 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmSetPermanentCacheAttribute (
+ PHYSICAL_ADDRESS StartAddress,
+ LARGE_INTEGER NumberOfBytes,
+ MEMORY_CACHING_TYPE CacheType,
+ ULONG Flags
+ );
+
+#line 29357 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+#line 29363 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+PVOID
+MmMapLockedPages (
+ PMDL MemoryDescriptorList,
+
+ KPROCESSOR_MODE AccessMode
+ );
+#line 29374 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+typedef
+void
+MM_MDL_ROUTINE (
+ PVOID DriverContext,
+ PVOID MappedVa
+ );
+
+typedef MM_MDL_ROUTINE *PMM_MDL_ROUTINE;
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmMapMdl (
+ PMDL MemoryDescriptorList,
+ ULONG Protection,
+ PMM_MDL_ROUTINE DriverRoutine,
+ PVOID DriverContext
+ );
+
+#line 29398 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmMapMemoryDumpMdlEx (
+ PVOID Va,
+ PFN_NUMBER PageTotal,
+ PMDL MemoryDumpMdl,
+ ULONG Flags
+ );
+
+#line 29414 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+LOGICAL
+MmIsIoSpaceActive (
+ PHYSICAL_ADDRESS StartAddress,
+ SIZE_T NumberOfBytes
+ );
+#line 29425 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+PVOID
+__stdcall
+MmGetSystemRoutineAddress (
+ PUNICODE_STRING SystemRoutineName
+ );
+#line 29435 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef
+PVOID
+(*PMM_GET_SYSTEM_ROUTINE_ADDRESS_EX) (
+ PUNICODE_STRING ModuleName,
+ PSTR FunctionName
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+#line 29455 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmAdvanceMdl (
+ PMDL Mdl,
+ ULONG NumberOfBytes
+ );
+#line 29465 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmProtectMdlSystemAddress (
+ PMDL MemoryDescriptorList,
+ ULONG NewProtect
+ );
+#line 29476 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _MM_PAGE_PRIORITY {
+ LowPagePriority,
+ NormalPagePriority = 16,
+ HighPagePriority = 32
+} MM_PAGE_PRIORITY;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 29520 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+PVOID
+MmMapLockedPagesSpecifyCache (
+ PMDL MemoryDescriptorList,
+
+ KPROCESSOR_MODE AccessMode,
+ MEMORY_CACHING_TYPE CacheType,
+ PVOID RequestedAddress,
+ ULONG BugCheckOnFailure,
+ ULONG Priority
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 29580 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 29582 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+MmUnmapLockedPages (
+ PVOID BaseAddress,
+ PMDL MemoryDescriptorList
+ );
+#line 29592 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+ PVOID
+MmAllocateMappingAddressEx (
+ SIZE_T NumberOfBytes,
+ ULONG PoolTag,
+ ULONG Flags
+ );
+#line 29607 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+ PVOID
+MmAllocateMappingAddress (
+ SIZE_T NumberOfBytes,
+ ULONG PoolTag
+ );
+#line 29618 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+MmFreeMappingAddress (
+ PVOID BaseAddress,
+ ULONG PoolTag
+ );
+#line 29628 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+#line 29635 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+PVOID
+MmMapLockedPagesWithReservedMapping (
+ PVOID MappingAddress,
+ ULONG PoolTag,
+ PMDL MemoryDescriptorList,
+ MEMORY_CACHING_TYPE CacheType
+ );
+#line 29646 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+MmUnmapReservedMapping (
+ PVOID BaseAddress,
+ ULONG PoolTag,
+ PMDL MemoryDescriptorList
+ );
+#line 29657 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PMDL
+MmAllocateNodePagesForMdlEx (
+ PHYSICAL_ADDRESS LowAddress,
+ PHYSICAL_ADDRESS HighAddress,
+ PHYSICAL_ADDRESS SkipBytes,
+ SIZE_T TotalBytes,
+ MEMORY_CACHING_TYPE CacheType,
+ ULONG IdealNode,
+ ULONG Flags
+ );
+#line 29683 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+typedef ULONG MM_NODE_NUMBER_ZERO_BASED;
+
+
+
+
+
+
+
+
+
+typedef ULONG MM_NODE_NUMBER_ONE_BASED;
+
+
+
+
+__declspec(dllimport)
+PMDL
+MmAllocatePartitionNodePagesForMdlEx (
+ PHYSICAL_ADDRESS LowAddress,
+ PHYSICAL_ADDRESS HighAddress,
+ PHYSICAL_ADDRESS SkipBytes,
+ SIZE_T TotalBytes,
+ MEMORY_CACHING_TYPE CacheType,
+ MM_NODE_NUMBER_ZERO_BASED IdealNode,
+ ULONG Flags,
+ PVOID PartitionObject
+ );
+#line 29717 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+PMDL
+MmAllocatePagesForMdlEx (
+ PHYSICAL_ADDRESS LowAddress,
+ PHYSICAL_ADDRESS HighAddress,
+ PHYSICAL_ADDRESS SkipBytes,
+ SIZE_T TotalBytes,
+ MEMORY_CACHING_TYPE CacheType,
+ ULONG Flags
+ );
+#line 29732 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+PMDL
+MmAllocatePagesForMdl (
+ PHYSICAL_ADDRESS LowAddress,
+ PHYSICAL_ADDRESS HighAddress,
+ PHYSICAL_ADDRESS SkipBytes,
+ SIZE_T TotalBytes
+ );
+#line 29745 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+void
+MmFreePagesFromMdlEx (
+ PMDL MemoryDescriptorList,
+ ULONG Flags
+ );
+#line 29758 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+MmFreePagesFromMdl (
+ PMDL MemoryDescriptorList
+ );
+#line 29767 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+
+PVOID
+MmMapIoSpace (
+ PHYSICAL_ADDRESS PhysicalAddress,
+ SIZE_T NumberOfBytes,
+ MEMORY_CACHING_TYPE CacheType
+ );
+#line 29780 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+MmUnmapIoSpace (
+ PVOID BaseAddress,
+ SIZE_T NumberOfBytes
+ );
+#line 29790 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+
+PVOID
+MmMapIoSpaceEx (
+ PHYSICAL_ADDRESS PhysicalAddress,
+ SIZE_T NumberOfBytes,
+ ULONG Protect
+ );
+#line 29803 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+ PVOID
+MmAllocateContiguousMemory (
+ SIZE_T NumberOfBytes,
+ PHYSICAL_ADDRESS HighestAcceptableAddress
+ );
+#line 29815 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+ PVOID
+MmAllocateContiguousMemorySpecifyCache (
+ SIZE_T NumberOfBytes,
+ PHYSICAL_ADDRESS LowestAcceptableAddress,
+ PHYSICAL_ADDRESS HighestAcceptableAddress,
+ PHYSICAL_ADDRESS BoundaryAddressMultiple,
+ MEMORY_CACHING_TYPE CacheType
+ );
+#line 29829 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+typedef ULONG NODE_REQUIREMENT;
+
+
+
+
+
+#line 29841 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+ PVOID
+MmAllocateContiguousMemorySpecifyCacheNode (
+ SIZE_T NumberOfBytes,
+ PHYSICAL_ADDRESS LowestAcceptableAddress,
+ PHYSICAL_ADDRESS HighestAcceptableAddress,
+ PHYSICAL_ADDRESS BoundaryAddressMultiple,
+ MEMORY_CACHING_TYPE CacheType,
+ NODE_REQUIREMENT PreferredNode
+ );
+#line 29856 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+ PVOID
+MmAllocateContiguousNodeMemory (
+ SIZE_T NumberOfBytes,
+ PHYSICAL_ADDRESS LowestAcceptableAddress,
+ PHYSICAL_ADDRESS HighestAcceptableAddress,
+ PHYSICAL_ADDRESS BoundaryAddressMultiple,
+ ULONG Protect,
+ NODE_REQUIREMENT PreferredNode
+ );
+#line 29871 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmAllocateContiguousMemoryEx (
+ PSIZE_T NumberOfBytes,
+ PHYSICAL_ADDRESS LowestAcceptableAddress,
+ PHYSICAL_ADDRESS HighestAcceptableAddress,
+ PHYSICAL_ADDRESS BoundaryAddressMultiple,
+ NODE_REQUIREMENT PreferredNode,
+ ULONG Protect,
+ PVOID PartitionObject,
+ ULONG Tag,
+ ULONG Flags,
+ PVOID* BaseAddress
+ );
+
+#line 29893 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+MmFreeContiguousMemory (
+ PVOID BaseAddress
+ );
+#line 29902 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+MmFreeContiguousMemorySpecifyCache (
+ PVOID BaseAddress,
+ SIZE_T NumberOfBytes,
+ MEMORY_CACHING_TYPE CacheType
+ );
+#line 29913 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+SIZE_T
+MmSizeOfMdl (
+ PVOID Base,
+ SIZE_T Length
+ );
+#line 29923 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+PMDL
+MmCreateMdl (
+ PMDL MemoryDescriptorList,
+ PVOID Base,
+ SIZE_T Length
+ );
+#line 29935 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+typedef enum _MM_MDL_PAGE_CONTENTS_STATE {
+ MmMdlPageContentsDynamic,
+ MmMdlPageContentsInvariant,
+ MmMdlPageContentsQuery
+} MM_MDL_PAGE_CONTENTS_STATE, PMM_MDL_PAGE_CONTENTS_STATE;
+
+
+__declspec(dllimport)
+MM_MDL_PAGE_CONTENTS_STATE
+MmMdlPageContentsState (
+ PMDL MemoryDescriptorList,
+ MM_MDL_PAGE_CONTENTS_STATE State
+ );
+
+#line 29953 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+PVOID
+MmLockPagableDataSection (
+ PVOID AddressWithinSection
+ );
+#line 29963 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+MmResetDriverPaging (
+ PVOID AddressWithinSection
+ );
+#line 29972 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+PVOID
+MmPageEntireDriver (
+ PVOID AddressWithinSection
+ );
+#line 29981 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+MmUnlockPagableImageSection (
+ PVOID ImageSectionHandle
+ );
+#line 29990 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__forceinline
+void
+MmInitializeMdl (
+
+ PMDL MemoryDescriptorList,
+ PVOID BaseVa,
+ SIZE_T Length
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+ MemoryDescriptorList->Next = (PMDL) ((void *)0);
+ MemoryDescriptorList->Size = (CSHORT)(sizeof(MDL) +
+ (sizeof(PFN_NUMBER) * ((((ULONG)((LONG_PTR)(BaseVa) & (0x1000 - 1))) + ((SIZE_T) (Length)) + (0x1000 - 1)) >> 12L)));
+ MemoryDescriptorList->MdlFlags = 0;
+ MemoryDescriptorList->StartVa = (PVOID) ((PVOID)((ULONG_PTR)(BaseVa) & ~(0x1000 - 1)));
+ MemoryDescriptorList->ByteOffset = ((ULONG)((LONG_PTR)(BaseVa) & (0x1000 - 1)));
+ MemoryDescriptorList->ByteCount = (ULONG)Length;
+}
+
+
+
+
+
+#line 30035 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__forceinline
+PVOID
+MmGetSystemAddressForMdlSafe (
+ PMDL Mdl,
+ ULONG Priority
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+ if (Mdl->MdlFlags & (0x0001 | 0x0004)) {
+ return Mdl->MappedSystemVa;
+ } else {
+ return MmMapLockedPagesSpecifyCache(Mdl, KernelMode, MmCached,
+ ((void *)0), 0, Priority);
+ }
+}
+#line 30079 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 30113 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+void
+__forceinline
+MmPrepareMdlForReuse (
+ PMDL MDL
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+ if ((MDL->MdlFlags & 0x0020) != 0) {
+ ((void) 0);
+ MmUnmapLockedPages( MDL->MappedSystemVa, MDL );
+ } else if ((MDL->MdlFlags & 0x0010) == 0) {
+ ((void) 0);
+ }
+}
+
+typedef NTSTATUS (*PMM_DLL_INITIALIZE) (
+ PUNICODE_STRING RegistryPath
+ );
+
+typedef NTSTATUS (*PMM_DLL_UNLOAD) (
+ void
+ );
+
+
+
+
+
+
+
+struct _DRIVER_OBJECT;
+
+
+
+
+
+
+
+NTSTATUS
+MmProtectDriverSection (
+ PVOID AddressWithinSection,
+ SIZE_T Size,
+ ULONG Flags
+ );
+
+
+
+__declspec(dllimport)
+LOGICAL
+MmIsDriverSuspectForVerifier (
+ struct _DRIVER_OBJECT *DriverObject
+ );
+#line 30188 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+LOGICAL
+MmIsDriverVerifying (
+ struct _DRIVER_OBJECT *DriverObject
+ );
+#line 30196 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+LOGICAL
+MmIsDriverVerifyingByAddress (
+ PVOID AddressWithinSection
+ );
+#line 30205 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmIsVerifierEnabled (
+ PULONG VerifierFlags
+ );
+#line 30215 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmAddVerifierThunks (
+ PVOID ThunkBuffer,
+ ULONG ThunkBufferSize
+ );
+#line 30226 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmAddVerifierSpecialThunks (
+ ULONG_PTR EntryRoutine,
+ PVOID ThunkBuffer,
+ ULONG ThunkBufferSize
+ );
+#line 30237 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+typedef enum _SECURITY_OPERATION_CODE {
+ SetSecurityDescriptor,
+ QuerySecurityDescriptor,
+ DeleteSecurityDescriptor,
+ AssignSecurityDescriptor
+} SECURITY_OPERATION_CODE, *PSECURITY_OPERATION_CODE;
+
+
+
+
+
+
+
+
+
+typedef struct _SECURITY_SUBJECT_CONTEXT {
+ PACCESS_TOKEN ClientToken;
+ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+ PACCESS_TOKEN PrimaryToken;
+ PVOID ProcessAuditId;
+} SECURITY_SUBJECT_CONTEXT, *PSECURITY_SUBJECT_CONTEXT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _INITIAL_PRIVILEGE_SET {
+ ULONG PrivilegeCount;
+ ULONG Control;
+ LUID_AND_ATTRIBUTES Privilege[3];
+} INITIAL_PRIVILEGE_SET, *PINITIAL_PRIVILEGE_SET;
+
+
+
+
+
+
+
+
+typedef struct _ACCESS_STATE {
+ LUID OperationID;
+ BOOLEAN SecurityEvaluated;
+ BOOLEAN GenerateAudit;
+ BOOLEAN GenerateOnClose;
+ BOOLEAN PrivilegesAllocated;
+ ULONG Flags;
+ ACCESS_MASK RemainingDesiredAccess;
+ ACCESS_MASK PreviouslyGrantedAccess;
+ ACCESS_MASK OriginalDesiredAccess;
+ SECURITY_SUBJECT_CONTEXT SubjectSecurityContext;
+ PSECURITY_DESCRIPTOR SecurityDescriptor;
+ PVOID AuxData;
+ union {
+ INITIAL_PRIVILEGE_SET InitialPrivilegeSet;
+ PRIVILEGE_SET PrivilegeSet;
+ } Privileges;
+
+ BOOLEAN AuditPrivileges;
+ UNICODE_STRING ObjectName;
+ UNICODE_STRING ObjectTypeName;
+
+} ACCESS_STATE, *PACCESS_STATE;
+
+
+typedef
+void
+NTFS_DEREF_EXPORTED_SECURITY_DESCRIPTOR(
+ PVOID Vcb,
+ PSECURITY_DESCRIPTOR SecurityDescriptor);
+typedef NTFS_DEREF_EXPORTED_SECURITY_DESCRIPTOR *PNTFS_DEREF_EXPORTED_SECURITY_DESCRIPTOR;
+
+
+
+
+__declspec(dllimport)
+void
+SeCaptureSubjectContext (
+ PSECURITY_SUBJECT_CONTEXT SubjectContext
+ );
+#line 30333 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+SeLockSubjectContext(
+ PSECURITY_SUBJECT_CONTEXT SubjectContext
+ );
+#line 30341 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+SeUnlockSubjectContext(
+ PSECURITY_SUBJECT_CONTEXT SubjectContext
+ );
+#line 30349 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+SeReleaseSubjectContext (
+ PSECURITY_SUBJECT_CONTEXT SubjectContext
+ );
+#line 30357 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+SeAssignSecurity (
+ PSECURITY_DESCRIPTOR ParentDescriptor,
+ PSECURITY_DESCRIPTOR ExplicitDescriptor,
+ PSECURITY_DESCRIPTOR *NewDescriptor,
+ BOOLEAN IsDirectoryObject,
+ PSECURITY_SUBJECT_CONTEXT SubjectContext,
+ PGENERIC_MAPPING GenericMapping,
+ POOL_TYPE PoolType
+ );
+#line 30373 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+ULONG
+SeComputeAutoInheritByObjectType(
+ PVOID ObjectType,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSECURITY_DESCRIPTOR ParentSecurityDescriptor
+ );
+#line 30383 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+SeAssignSecurityEx (
+ PSECURITY_DESCRIPTOR ParentDescriptor,
+ PSECURITY_DESCRIPTOR ExplicitDescriptor,
+ PSECURITY_DESCRIPTOR *NewDescriptor,
+ GUID *ObjectType,
+ BOOLEAN IsDirectoryObject,
+ ULONG AutoInheritFlags,
+ PSECURITY_SUBJECT_CONTEXT SubjectContext,
+ PGENERIC_MAPPING GenericMapping,
+ POOL_TYPE PoolType
+ );
+#line 30399 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+SeDeassignSecurity (
+ PSECURITY_DESCRIPTOR *SecurityDescriptor
+ );
+#line 30408 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+ULONG
+SeObjectCreateSaclAccessBits(
+ PSECURITY_DESCRIPTOR SecurityDescriptor
+ );
+
+
+__declspec(dllimport)
+BOOLEAN
+SeAccessCheck (
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext,
+ BOOLEAN SubjectContextLocked,
+ ACCESS_MASK DesiredAccess,
+ ACCESS_MASK PreviouslyGrantedAccess,
+ PPRIVILEGE_SET *Privileges,
+ PGENERIC_MAPPING GenericMapping,
+ KPROCESSOR_MODE AccessMode,
+ PACCESS_MASK GrantedAccess,
+ PNTSTATUS AccessStatus
+ );
+#line 30432 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS
+SeSetAuditParameter(
+ PSE_ADT_PARAMETER_ARRAY AuditParameters,
+ SE_ADT_PARAMETER_TYPE Type,
+ ULONG Index,
+ PVOID Data
+ );
+#line 30457 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+NTSTATUS
+SeReportSecurityEvent(
+ ULONG Flags,
+ PUNICODE_STRING SourceName,
+ PSID UserSid,
+ PSE_ADT_PARAMETER_ARRAY AuditParameters
+ );
+#line 30467 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+SeValidSecurityDescriptor(
+ ULONG Length,
+ PSECURITY_DESCRIPTOR SecurityDescriptor
+ );
+#line 30478 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+typedef enum _SE_IMAGE_TYPE
+{
+ SeImageTypeElamDriver = 0,
+ SeImageTypeDriver,
+ SeImageTypePlatformSecureFile,
+ SeImageTypeDynamicCodeFile,
+ SeImageTypeAll,
+ SeImageTypeMax
+} SE_IMAGE_TYPE, *PSE_IMAGE_TYPE;
+
+typedef struct _BDCB_IMAGE_INFORMATION *PBDCB_IMAGE_INFORMATION;
+
+typedef
+
+
+void
+SE_IMAGE_VERIFICATION_CALLBACK_FUNCTION (
+ PVOID CallbackContext,
+ SE_IMAGE_TYPE ImageType,
+ PBDCB_IMAGE_INFORMATION ImageInformation
+ );
+
+typedef SE_IMAGE_VERIFICATION_CALLBACK_FUNCTION *PSE_IMAGE_VERIFICATION_CALLBACK_FUNCTION;
+
+typedef enum _SE_IMAGE_VERIFICATION_CALLBACK_TYPE {
+ SeImageVerificationCallbackInformational = 0,
+ SeImageVerificationCallbackBlock = 1
+} SE_IMAGE_VERIFICATION_CALLBACK_TYPE, *PSE_IMAGE_VERIFICATION_CALLBACK_TYPE;
+
+typedef PVOID SE_IMAGE_VERIFICATION_CALLBACK_TOKEN, *PSE_IMAGE_VERIFICATION_CALLBACK_TOKEN;
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+SeRegisterImageVerificationCallback(
+ SE_IMAGE_TYPE ImageType,
+ SE_IMAGE_VERIFICATION_CALLBACK_TYPE CallbackType,
+ PSE_IMAGE_VERIFICATION_CALLBACK_FUNCTION CallbackFunction,
+ PVOID CallbackContext,
+ SE_IMAGE_VERIFICATION_CALLBACK_TOKEN Token,
+ PVOID* CallbackHandle
+ );
+
+
+
+__declspec(dllimport)
+void
+SeUnregisterImageVerificationCallback (
+ PVOID CallbackHandle
+ );
+#line 30537 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__forceinline
+PETHREAD
+PsGetCurrentThread (
+ void
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+
+ return (PETHREAD)KeGetCurrentThread();
+}
+
+#line 30572 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+
+NTSTATUS
+PsCreateSystemThread(
+ PHANDLE ThreadHandle,
+ ULONG DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ HANDLE ProcessHandle,
+ PCLIENT_ID ClientId,
+ PKSTART_ROUTINE StartRoutine,
+ PVOID StartContext
+ );
+#line 30589 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PsTerminateSystemThread(
+ NTSTATUS ExitStatus
+ );
+#line 30598 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+__declspec(dllimport)
+NTSTATUS
+PsWrapApcWow64Thread (
+ PVOID *ApcContext,
+ PVOID *ApcRoutine);
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+PsGetVersion(
+ PULONG MajorVersion,
+ PULONG MinorVersion,
+ PULONG BuildNumber,
+ PUNICODE_STRING CSDVersion
+ );
+#line 30619 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+ULONG64
+PsQueryTotalCycleTimeProcess (
+ PEPROCESS Process,
+ PULONG64 CycleTimeStamp
+ );
+#line 30628 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+typedef struct _AFFINITY_TOKEN *PAFFINITY_TOKEN;
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PsAllocateAffinityToken (
+ PAFFINITY_TOKEN *AffinityToken
+ );
+
+
+
+__declspec(dllimport)
+void
+PsFreeAffinityToken (
+ PAFFINITY_TOKEN AffinityToken
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PsSetSystemMultipleGroupAffinityThread (
+ PGROUP_AFFINITY GroupAffinities,
+ USHORT GroupCount,
+ PAFFINITY_TOKEN AffinityToken
+ );
+
+
+
+__declspec(dllimport)
+void
+PsRevertToUserMultipleGroupAffinityThread (
+ PAFFINITY_TOKEN AffinityToken
+ );
+
+#line 30668 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+typedef struct _KAFFINITY_EX *PKAFFINITY_EX;
+
+
+
+
+NTSTATUS
+PsQueryProcessAvailableCpus (
+ PEPROCESS Process,
+ PKAFFINITY_EX Affinity,
+ PULONG64 ObservedSequenceNumber,
+ PULONG64 SequenceNumber
+ );
+
+
+
+
+NTSTATUS
+PsQueryProcessAvailableCpusCount (
+ PEPROCESS Process,
+ PULONG AvailableCpuCount,
+ PULONG64 SequenceNumber
+ );
+
+
+
+
+NTSTATUS
+PsQuerySystemAvailableCpus (
+ PKAFFINITY_EX Affinity,
+ PULONG64 ObservedSequenceNumber,
+ PULONG64 SequenceNumber
+ );
+
+
+
+
+NTSTATUS
+PsQuerySystemAvailableCpusCount (
+ PULONG AvailableCpuCount,
+ PULONG64 SequenceNumber
+ );
+
+typedef
+
+void
+PS_AVAILABLE_CPUS_CHANGE_CALLBACK (
+ PVOID Parameter
+ );
+
+typedef PVOID PS_AVAILABLE_CPUS_CHANGE_REGISTRATION;
+
+
+
+NTSTATUS
+PsRegisterProcessAvailableCpusChangeNotification (
+ PEPROCESS Process,
+ PS_AVAILABLE_CPUS_CHANGE_CALLBACK* Callback,
+ PVOID Context,
+ PULONG64 ObservedSequenceNumber,
+ PS_AVAILABLE_CPUS_CHANGE_REGISTRATION* RegistrationHandle
+ );
+
+
+
+NTSTATUS
+PsRegisterSystemAvailableCpusChangeNotification (
+ PS_AVAILABLE_CPUS_CHANGE_CALLBACK* Callback,
+ PVOID Context,
+ PULONG64 ObservedSequenceNumber,
+ PS_AVAILABLE_CPUS_CHANGE_REGISTRATION* RegistrationHandle
+ );
+
+
+
+void
+PsUnregisterAvailableCpusChangeNotification (
+ PS_AVAILABLE_CPUS_CHANGE_REGISTRATION RegistrationHandle
+ );
+
+#line 30752 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 30865 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _CREATE_FILE_TYPE {
+ CreateFileTypeNone,
+ CreateFileTypeNamedPipe,
+ CreateFileTypeMailslot
+} CREATE_FILE_TYPE;
+
+
+
+
+
+
+
+
+typedef struct _NAMED_PIPE_CREATE_PARAMETERS {
+ ULONG NamedPipeType;
+ ULONG ReadMode;
+ ULONG CompletionMode;
+ ULONG MaximumInstances;
+ ULONG InboundQuota;
+ ULONG OutboundQuota;
+ LARGE_INTEGER DefaultTimeout;
+ BOOLEAN TimeoutSpecified;
+} NAMED_PIPE_CREATE_PARAMETERS, *PNAMED_PIPE_CREATE_PARAMETERS;
+
+
+
+
+
+
+
+
+typedef struct _MAILSLOT_CREATE_PARAMETERS {
+ ULONG MailslotQuota;
+ ULONG MaximumMessageSize;
+ LARGE_INTEGER ReadTimeout;
+ BOOLEAN TimeoutSpecified;
+} MAILSLOT_CREATE_PARAMETERS, *PMAILSLOT_CREATE_PARAMETERS;
+
+
+
+
+
+
+
+
+
+
+struct _DEVICE_DESCRIPTION;
+struct _DEVICE_OBJECT;
+struct _DMA_ADAPTER;
+struct _DRIVER_OBJECT;
+struct _DRIVE_LAYOUT_INFORMATION;
+struct _DISK_PARTITION;
+
+struct _FILE_OBJECT;
+
+
+
+
+
+
+
+#line 30984 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+struct __declspec(align(16)) _IRP;
+struct _SCSI_REQUEST_BLOCK;
+struct _SCATTER_GATHER_LIST;
+
+
+
+
+
+
+
+
+
+typedef
+void
+IO_DPC_ROUTINE (
+ PKDPC Dpc,
+ struct _DEVICE_OBJECT *DeviceObject,
+ struct _IRP *Irp,
+ PVOID Context
+ );
+
+typedef IO_DPC_ROUTINE *PIO_DPC_ROUTINE;
+
+
+
+
+
+
+
+typedef
+void
+IO_TIMER_ROUTINE (
+ struct _DEVICE_OBJECT *DeviceObject,
+ PVOID Context
+ );
+
+typedef IO_TIMER_ROUTINE *PIO_TIMER_ROUTINE;
+
+
+
+
+
+
+
+
+typedef
+NTSTATUS
+DRIVER_INITIALIZE (
+ struct _DRIVER_OBJECT *DriverObject,
+ PUNICODE_STRING RegistryPath
+ );
+
+typedef DRIVER_INITIALIZE *PDRIVER_INITIALIZE;
+
+
+
+
+
+
+
+
+
+
+
+typedef
+void
+DRIVER_CANCEL (
+ struct _DEVICE_OBJECT *DeviceObject,
+ struct _IRP *Irp
+ );
+
+typedef DRIVER_CANCEL *PDRIVER_CANCEL;
+
+
+
+
+
+
+
+
+
+
+
+typedef
+NTSTATUS
+DRIVER_DISPATCH (
+ struct _DEVICE_OBJECT *DeviceObject,
+ struct _IRP *Irp
+ );
+
+typedef DRIVER_DISPATCH *PDRIVER_DISPATCH;
+
+
+
+
+typedef DRIVER_DISPATCH DRIVER_DISPATCH_RAISED;
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+NTSTATUS
+DRIVER_DISPATCH_PAGED (
+ struct _DEVICE_OBJECT *DeviceObject,
+ struct _IRP *Irp
+ );
+
+typedef DRIVER_DISPATCH_PAGED *PDRIVER_DISPATCH_PAGED;
+
+
+
+
+
+
+
+
+
+typedef
+void
+DRIVER_STARTIO (
+ struct _DEVICE_OBJECT *DeviceObject,
+ struct _IRP *Irp
+ );
+
+typedef DRIVER_STARTIO *PDRIVER_STARTIO;
+
+
+
+
+
+
+
+typedef
+void
+DRIVER_UNLOAD (
+ struct _DRIVER_OBJECT *DriverObject
+ );
+
+typedef DRIVER_UNLOAD *PDRIVER_UNLOAD;
+
+
+
+
+
+
+
+
+
+typedef
+NTSTATUS
+DRIVER_ADD_DEVICE (
+ struct _DRIVER_OBJECT *DriverObject,
+ struct _DEVICE_OBJECT *PhysicalDeviceObject
+ );
+
+typedef DRIVER_ADD_DEVICE *PDRIVER_ADD_DEVICE;
+
+
+
+
+
+
+
+
+
+
+
+typedef
+BOOLEAN
+FAST_IO_CHECK_IF_POSSIBLE (
+ struct _FILE_OBJECT *FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ BOOLEAN Wait,
+ ULONG LockKey,
+ BOOLEAN CheckForReadOperation,
+
+
+
+ PIO_STATUS_BLOCK IoStatus,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_CHECK_IF_POSSIBLE *PFAST_IO_CHECK_IF_POSSIBLE;
+
+
+
+typedef
+BOOLEAN
+FAST_IO_READ (
+ struct _FILE_OBJECT *FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ BOOLEAN Wait,
+ ULONG LockKey,
+ PVOID Buffer,
+ PIO_STATUS_BLOCK IoStatus,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_READ *PFAST_IO_READ;
+
+
+
+typedef
+BOOLEAN
+FAST_IO_WRITE (
+ struct _FILE_OBJECT *FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ BOOLEAN Wait,
+ ULONG LockKey,
+ PVOID Buffer,
+ PIO_STATUS_BLOCK IoStatus,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_WRITE *PFAST_IO_WRITE;
+
+
+
+
+
+
+
+
+typedef
+BOOLEAN
+FAST_IO_QUERY_BASIC_INFO (
+ struct _FILE_OBJECT *FileObject,
+ BOOLEAN Wait,
+ PFILE_BASIC_INFORMATION Buffer,
+ PIO_STATUS_BLOCK IoStatus,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_QUERY_BASIC_INFO *PFAST_IO_QUERY_BASIC_INFO;
+
+
+
+
+typedef
+BOOLEAN
+FAST_IO_QUERY_STANDARD_INFO (
+ struct _FILE_OBJECT *FileObject,
+ BOOLEAN Wait,
+ PFILE_STANDARD_INFORMATION Buffer,
+ PIO_STATUS_BLOCK IoStatus,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_QUERY_STANDARD_INFO *PFAST_IO_QUERY_STANDARD_INFO;
+
+
+
+
+
+
+
+typedef
+BOOLEAN
+FAST_IO_LOCK (
+ struct _FILE_OBJECT *FileObject,
+ PLARGE_INTEGER FileOffset,
+ PLARGE_INTEGER Length,
+ PEPROCESS ProcessId,
+ ULONG Key,
+ BOOLEAN FailImmediately,
+ BOOLEAN ExclusiveLock,
+ PIO_STATUS_BLOCK IoStatus,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_LOCK *PFAST_IO_LOCK;
+
+
+
+typedef
+BOOLEAN
+FAST_IO_UNLOCK_SINGLE (
+ struct _FILE_OBJECT *FileObject,
+ PLARGE_INTEGER FileOffset,
+ PLARGE_INTEGER Length,
+ PEPROCESS ProcessId,
+ ULONG Key,
+ PIO_STATUS_BLOCK IoStatus,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_UNLOCK_SINGLE *PFAST_IO_UNLOCK_SINGLE;
+
+
+
+typedef
+BOOLEAN
+FAST_IO_UNLOCK_ALL (
+ struct _FILE_OBJECT *FileObject,
+ PEPROCESS ProcessId,
+ PIO_STATUS_BLOCK IoStatus,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_UNLOCK_ALL *PFAST_IO_UNLOCK_ALL;
+
+
+
+typedef
+BOOLEAN
+FAST_IO_UNLOCK_ALL_BY_KEY (
+ struct _FILE_OBJECT *FileObject,
+ PVOID ProcessId,
+ ULONG Key,
+ PIO_STATUS_BLOCK IoStatus,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_UNLOCK_ALL_BY_KEY *PFAST_IO_UNLOCK_ALL_BY_KEY;
+
+
+
+
+
+
+
+typedef
+BOOLEAN
+FAST_IO_DEVICE_CONTROL (
+ struct _FILE_OBJECT *FileObject,
+ BOOLEAN Wait,
+ PVOID InputBuffer,
+ ULONG InputBufferLength,
+ PVOID OutputBuffer,
+ ULONG OutputBufferLength,
+ ULONG IoControlCode,
+ PIO_STATUS_BLOCK IoStatus,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_DEVICE_CONTROL *PFAST_IO_DEVICE_CONTROL;
+
+
+
+
+
+
+
+
+
+typedef
+void
+FAST_IO_ACQUIRE_FILE (
+ struct _FILE_OBJECT *FileObject
+ );
+
+typedef FAST_IO_ACQUIRE_FILE *PFAST_IO_ACQUIRE_FILE;
+
+
+
+typedef
+void
+FAST_IO_RELEASE_FILE (
+ struct _FILE_OBJECT *FileObject
+ );
+
+typedef FAST_IO_RELEASE_FILE *PFAST_IO_RELEASE_FILE;
+
+
+
+
+
+
+
+
+
+typedef
+void
+FAST_IO_DETACH_DEVICE (
+ struct _DEVICE_OBJECT *SourceDevice,
+ struct _DEVICE_OBJECT *TargetDevice
+ );
+
+typedef FAST_IO_DETACH_DEVICE *PFAST_IO_DETACH_DEVICE;
+
+
+
+
+
+
+
+
+
+
+
+typedef
+BOOLEAN
+FAST_IO_QUERY_NETWORK_OPEN_INFO (
+ struct _FILE_OBJECT *FileObject,
+ BOOLEAN Wait,
+ struct _FILE_NETWORK_OPEN_INFORMATION *Buffer,
+ struct _IO_STATUS_BLOCK *IoStatus,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_QUERY_NETWORK_OPEN_INFO *PFAST_IO_QUERY_NETWORK_OPEN_INFO;
+
+
+
+
+
+
+
+typedef
+BOOLEAN
+FAST_IO_MDL_READ (
+ struct _FILE_OBJECT *FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ ULONG LockKey,
+ PMDL *MdlChain,
+ PIO_STATUS_BLOCK IoStatus,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_MDL_READ *PFAST_IO_MDL_READ;
+
+
+
+typedef
+BOOLEAN
+FAST_IO_MDL_READ_COMPLETE (
+ struct _FILE_OBJECT *FileObject,
+ PMDL MdlChain,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_MDL_READ_COMPLETE *PFAST_IO_MDL_READ_COMPLETE;
+
+
+
+typedef
+BOOLEAN
+FAST_IO_PREPARE_MDL_WRITE (
+ struct _FILE_OBJECT *FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ ULONG LockKey,
+ PMDL *MdlChain,
+ PIO_STATUS_BLOCK IoStatus,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_PREPARE_MDL_WRITE *PFAST_IO_PREPARE_MDL_WRITE;
+
+
+
+typedef
+BOOLEAN
+FAST_IO_MDL_WRITE_COMPLETE (
+ struct _FILE_OBJECT *FileObject,
+ PLARGE_INTEGER FileOffset,
+ PMDL MdlChain,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_MDL_WRITE_COMPLETE *PFAST_IO_MDL_WRITE_COMPLETE;
+
+
+
+
+
+
+
+
+typedef
+NTSTATUS
+FAST_IO_ACQUIRE_FOR_MOD_WRITE (
+ struct _FILE_OBJECT *FileObject,
+ PLARGE_INTEGER EndingOffset,
+ struct _ERESOURCE **ResourceToRelease,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_ACQUIRE_FOR_MOD_WRITE *PFAST_IO_ACQUIRE_FOR_MOD_WRITE;
+
+
+
+typedef
+NTSTATUS
+FAST_IO_RELEASE_FOR_MOD_WRITE (
+ struct _FILE_OBJECT *FileObject,
+ struct _ERESOURCE *ResourceToRelease,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_RELEASE_FOR_MOD_WRITE *PFAST_IO_RELEASE_FOR_MOD_WRITE;
+
+
+
+
+
+
+
+
+typedef
+NTSTATUS
+FAST_IO_ACQUIRE_FOR_CCFLUSH (
+ struct _FILE_OBJECT *FileObject,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_ACQUIRE_FOR_CCFLUSH *PFAST_IO_ACQUIRE_FOR_CCFLUSH;
+
+
+
+typedef
+NTSTATUS
+FAST_IO_RELEASE_FOR_CCFLUSH (
+ struct _FILE_OBJECT *FileObject,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_RELEASE_FOR_CCFLUSH *PFAST_IO_RELEASE_FOR_CCFLUSH;
+
+
+
+typedef
+BOOLEAN
+FAST_IO_READ_COMPRESSED (
+ struct _FILE_OBJECT *FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ ULONG LockKey,
+ PVOID Buffer,
+ PMDL *MdlChain,
+ PIO_STATUS_BLOCK IoStatus,
+ struct _COMPRESSED_DATA_INFO *CompressedDataInfo,
+ ULONG CompressedDataInfoLength,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_READ_COMPRESSED *PFAST_IO_READ_COMPRESSED;
+
+
+
+typedef
+BOOLEAN
+FAST_IO_WRITE_COMPRESSED (
+ struct _FILE_OBJECT *FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ ULONG LockKey,
+ PVOID Buffer,
+ PMDL *MdlChain,
+ PIO_STATUS_BLOCK IoStatus,
+ struct _COMPRESSED_DATA_INFO *CompressedDataInfo,
+ ULONG CompressedDataInfoLength,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_WRITE_COMPRESSED *PFAST_IO_WRITE_COMPRESSED;
+
+
+
+typedef
+BOOLEAN
+FAST_IO_MDL_READ_COMPLETE_COMPRESSED (
+ struct _FILE_OBJECT *FileObject,
+ PMDL MdlChain,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_MDL_READ_COMPLETE_COMPRESSED *PFAST_IO_MDL_READ_COMPLETE_COMPRESSED;
+
+
+
+typedef
+BOOLEAN
+FAST_IO_MDL_WRITE_COMPLETE_COMPRESSED (
+ struct _FILE_OBJECT *FileObject,
+ PLARGE_INTEGER FileOffset,
+ PMDL MdlChain,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_MDL_WRITE_COMPLETE_COMPRESSED *PFAST_IO_MDL_WRITE_COMPLETE_COMPRESSED;
+
+
+
+typedef
+BOOLEAN
+FAST_IO_QUERY_OPEN (
+ struct _IRP *Irp,
+ PFILE_NETWORK_OPEN_INFORMATION NetworkInformation,
+ struct _DEVICE_OBJECT *DeviceObject
+ );
+
+typedef FAST_IO_QUERY_OPEN *PFAST_IO_QUERY_OPEN;
+
+
+
+
+
+
+
+typedef struct _FAST_IO_DISPATCH {
+ ULONG SizeOfFastIoDispatch;
+ PFAST_IO_CHECK_IF_POSSIBLE FastIoCheckIfPossible;
+ PFAST_IO_READ FastIoRead;
+ PFAST_IO_WRITE FastIoWrite;
+ PFAST_IO_QUERY_BASIC_INFO FastIoQueryBasicInfo;
+ PFAST_IO_QUERY_STANDARD_INFO FastIoQueryStandardInfo;
+ PFAST_IO_LOCK FastIoLock;
+ PFAST_IO_UNLOCK_SINGLE FastIoUnlockSingle;
+ PFAST_IO_UNLOCK_ALL FastIoUnlockAll;
+ PFAST_IO_UNLOCK_ALL_BY_KEY FastIoUnlockAllByKey;
+ PFAST_IO_DEVICE_CONTROL FastIoDeviceControl;
+ PFAST_IO_ACQUIRE_FILE AcquireFileForNtCreateSection;
+ PFAST_IO_RELEASE_FILE ReleaseFileForNtCreateSection;
+ PFAST_IO_DETACH_DEVICE FastIoDetachDevice;
+ PFAST_IO_QUERY_NETWORK_OPEN_INFO FastIoQueryNetworkOpenInfo;
+ PFAST_IO_ACQUIRE_FOR_MOD_WRITE AcquireForModWrite;
+ PFAST_IO_MDL_READ MdlRead;
+ PFAST_IO_MDL_READ_COMPLETE MdlReadComplete;
+ PFAST_IO_PREPARE_MDL_WRITE PrepareMdlWrite;
+ PFAST_IO_MDL_WRITE_COMPLETE MdlWriteComplete;
+ PFAST_IO_READ_COMPRESSED FastIoReadCompressed;
+ PFAST_IO_WRITE_COMPRESSED FastIoWriteCompressed;
+ PFAST_IO_MDL_READ_COMPLETE_COMPRESSED MdlReadCompleteCompressed;
+ PFAST_IO_MDL_WRITE_COMPLETE_COMPRESSED MdlWriteCompleteCompressed;
+ PFAST_IO_QUERY_OPEN FastIoQueryOpen;
+ PFAST_IO_RELEASE_FOR_MOD_WRITE ReleaseForModWrite;
+ PFAST_IO_ACQUIRE_FOR_CCFLUSH AcquireForCcFlush;
+ PFAST_IO_RELEASE_FOR_CCFLUSH ReleaseForCcFlush;
+} FAST_IO_DISPATCH, *PFAST_IO_DISPATCH;
+
+
+
+
+
+
+typedef enum _IO_ALLOCATION_ACTION {
+ KeepObject = 1,
+ DeallocateObject,
+ DeallocateObjectKeepRegisters
+} IO_ALLOCATION_ACTION, *PIO_ALLOCATION_ACTION;
+
+
+
+
+
+typedef
+
+
+IO_ALLOCATION_ACTION
+DRIVER_CONTROL (
+ struct _DEVICE_OBJECT *DeviceObject,
+ struct _IRP *Irp,
+ PVOID MapRegisterBase,
+ PVOID Context
+ );
+typedef DRIVER_CONTROL *PDRIVER_CONTROL;
+
+
+
+
+
+
+
+typedef struct _IO_SECURITY_CONTEXT {
+ PSECURITY_QUALITY_OF_SERVICE SecurityQos;
+ PACCESS_STATE AccessState;
+ ACCESS_MASK DesiredAccess;
+ ULONG FullCreateOptions;
+} IO_SECURITY_CONTEXT, *PIO_SECURITY_CONTEXT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 31699 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+typedef struct _VPB {
+ CSHORT Type;
+ CSHORT Size;
+ USHORT Flags;
+ USHORT VolumeLabelLength;
+ struct _DEVICE_OBJECT *DeviceObject;
+ struct _DEVICE_OBJECT *RealDevice;
+ ULONG SerialNumber;
+ ULONG ReferenceCount;
+ WCHAR VolumeLabel[(32 * sizeof(WCHAR)) / sizeof(WCHAR)];
+} VPB, *PVPB;
+
+
+
+
+
+
+
+
+
+#line 31727 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+#line 31734 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 31736 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+typedef struct _DMA_ADAPTER *PADAPTER_OBJECT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 31759 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+typedef struct _WAIT_CONTEXT_BLOCK {
+ union {
+ KDEVICE_QUEUE_ENTRY WaitQueueEntry;
+ struct {
+ LIST_ENTRY DmaWaitEntry;
+ ULONG NumberOfChannels;
+ ULONG SyncCallback : 1;
+ ULONG DmaContext : 1;
+ ULONG ZeroMapRegisters : 1;
+ ULONG Reserved : 9;
+ ULONG NumberOfRemapPages : 20;
+ };
+ };
+ PDRIVER_CONTROL DeviceRoutine;
+ PVOID DeviceContext;
+ ULONG NumberOfMapRegisters;
+ PVOID DeviceObject;
+ PVOID CurrentIrp;
+ PKDPC BufferChainingDpc;
+} WAIT_CONTEXT_BLOCK, *PWAIT_CONTEXT_BLOCK;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4324)
+#line 31812 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef struct __declspec(align(16)) _DEVICE_OBJECT {
+ CSHORT Type;
+ USHORT Size;
+ LONG ReferenceCount;
+ struct _DRIVER_OBJECT *DriverObject;
+ struct _DEVICE_OBJECT *NextDevice;
+ struct _DEVICE_OBJECT *AttachedDevice;
+ struct _IRP *CurrentIrp;
+ PIO_TIMER Timer;
+ ULONG Flags;
+ ULONG Characteristics;
+ PVPB Vpb;
+ PVOID DeviceExtension;
+ ULONG DeviceType;
+ CCHAR StackSize;
+ union {
+ LIST_ENTRY ListEntry;
+ WAIT_CONTEXT_BLOCK Wcb;
+ } Queue;
+ ULONG AlignmentRequirement;
+ KDEVICE_QUEUE DeviceQueue;
+ KDPC Dpc;
+
+
+
+
+
+
+ ULONG ActiveThreadCount;
+ PSECURITY_DESCRIPTOR SecurityDescriptor;
+ KEVENT DeviceLock;
+
+ USHORT SectorSize;
+ USHORT Spare1;
+
+ struct _DEVOBJ_EXTENSION *DeviceObjectExtension;
+ PVOID Reserved;
+
+} DEVICE_OBJECT;
+
+typedef struct _DEVICE_OBJECT *PDEVICE_OBJECT;
+
+
+#pragma warning(pop)
+#line 31858 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+struct _DEVICE_OBJECT_POWER_EXTENSION;
+
+
+typedef struct _DEVOBJ_EXTENSION {
+
+ CSHORT Type;
+ USHORT Size;
+
+ PDEVICE_OBJECT DeviceObject;
+
+
+
+
+
+ ULONG PowerFlags;
+ struct _DEVICE_OBJECT_POWER_EXTENSION *Dope;
+ ULONG ExtensionFlags;
+ PVOID DeviceNode;
+ PDEVICE_OBJECT AttachedTo;
+ LONG StartIoCount;
+ LONG StartIoKey;
+ ULONG StartIoFlags;
+ PVPB Vpb;
+ PVOID DependencyNode;
+ PVOID InterruptContext;
+ LONG InterruptCount;
+
+ PVOID VerifierContext;
+
+} DEVOBJ_EXTENSION, *PDEVOBJ_EXTENSION;
+
+
+
+
+
+
+
+
+
+typedef struct _DRIVER_PROXY_EXTENSION *PDRIVER_PROXY_EXTENSION;
+
+typedef struct _DRIVER_EXTENSION {
+
+
+
+
+
+ struct _DRIVER_OBJECT *DriverObject;
+
+
+
+
+
+
+
+ PDRIVER_ADD_DEVICE AddDevice;
+
+
+
+
+
+
+ ULONG Count;
+
+
+
+
+
+
+ UNICODE_STRING ServiceKeyName;
+
+
+
+
+
+
+} DRIVER_EXTENSION, *PDRIVER_EXTENSION;
+
+
+typedef struct _DRIVER_OBJECT {
+ CSHORT Type;
+ CSHORT Size;
+
+
+
+
+
+
+
+ PDEVICE_OBJECT DeviceObject;
+ ULONG Flags;
+
+
+
+
+
+
+
+ PVOID DriverStart;
+ ULONG DriverSize;
+ PVOID DriverSection;
+ PDRIVER_EXTENSION DriverExtension;
+
+
+
+
+
+
+ UNICODE_STRING DriverName;
+
+
+
+
+
+
+ PUNICODE_STRING HardwareDatabase;
+
+
+
+
+
+
+
+
+
+
+ PFAST_IO_DISPATCH FastIoDispatch;
+
+
+
+
+
+
+
+ PDRIVER_INITIALIZE DriverInit;
+ PDRIVER_STARTIO DriverStartIo;
+ PDRIVER_UNLOAD DriverUnload;
+ PDRIVER_DISPATCH MajorFunction[0x1b + 1];
+
+} DRIVER_OBJECT;
+typedef struct _DRIVER_OBJECT *PDRIVER_OBJECT;
+
+
+
+
+
+
+
+
+typedef struct _SECTION_OBJECT_POINTERS {
+ PVOID DataSectionObject;
+ PVOID SharedCacheMap;
+ PVOID ImageSectionObject;
+} SECTION_OBJECT_POINTERS;
+typedef SECTION_OBJECT_POINTERS *PSECTION_OBJECT_POINTERS;
+
+
+
+
+
+typedef struct _IO_COMPLETION_CONTEXT {
+ PVOID Port;
+ PVOID Key;
+
+
+
+
+
+
+
+
+
+
+
+
+ LONG_PTR UsageCount;
+} IO_COMPLETION_CONTEXT, *PIO_COMPLETION_CONTEXT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_OBJECT {
+ CSHORT Type;
+ CSHORT Size;
+ PDEVICE_OBJECT DeviceObject;
+ PVPB Vpb;
+ PVOID FsContext;
+ PVOID FsContext2;
+ PSECTION_OBJECT_POINTERS SectionObjectPointer;
+ PVOID PrivateCacheMap;
+ NTSTATUS FinalStatus;
+ struct _FILE_OBJECT *RelatedFileObject;
+ BOOLEAN LockOperation;
+ BOOLEAN DeletePending;
+ BOOLEAN ReadAccess;
+ BOOLEAN WriteAccess;
+ BOOLEAN DeleteAccess;
+ BOOLEAN SharedRead;
+ BOOLEAN SharedWrite;
+ BOOLEAN SharedDelete;
+ ULONG Flags;
+ UNICODE_STRING FileName;
+ LARGE_INTEGER CurrentByteOffset;
+ ULONG Waiters;
+ ULONG Busy;
+ PVOID LastLock;
+ KEVENT Lock;
+ KEVENT Event;
+ PIO_COMPLETION_CONTEXT CompletionContext;
+ KSPIN_LOCK IrpListLock;
+ LIST_ENTRY IrpList;
+ struct _IOP_FILE_OBJECT_EXTENSION *FileObjectExtension;
+} FILE_OBJECT;
+typedef struct _FILE_OBJECT *PFILE_OBJECT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct __declspec(align(16)) _IRP {
+ CSHORT Type;
+ USHORT Size;
+
+
+
+
+
+
+
+
+
+
+
+ PMDL MdlAddress;
+
+
+
+
+
+ ULONG Flags;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ union {
+ struct _IRP *MasterIrp;
+ LONG IrpCount;
+ PVOID SystemBuffer;
+ } AssociatedIrp;
+
+
+
+
+
+
+ LIST_ENTRY ThreadListEntry;
+
+
+
+
+
+ IO_STATUS_BLOCK IoStatus;
+
+
+
+
+
+ KPROCESSOR_MODE RequestorMode;
+
+
+
+
+
+
+ BOOLEAN PendingReturned;
+
+
+
+
+
+ CHAR StackCount;
+ CHAR CurrentLocation;
+
+
+
+
+
+ BOOLEAN Cancel;
+
+
+
+
+
+ KIRQL CancelIrql;
+
+
+
+
+
+
+ CCHAR ApcEnvironment;
+
+
+
+
+
+ UCHAR AllocationFlags;
+
+
+
+
+
+ union {
+ PIO_STATUS_BLOCK UserIosb;
+
+
+
+
+
+
+
+ PVOID IoRingContext;
+ };
+
+ PKEVENT UserEvent;
+ union {
+ struct {
+ union {
+ PIO_APC_ROUTINE UserApcRoutine;
+ PVOID IssuingProcess;
+ };
+ union {
+ PVOID UserApcContext;
+
+
+
+
+
+
+
+
+
+
+
+ struct _IORING_OBJECT* IoRing;
+ };
+ } AsynchronousParameters;
+ LARGE_INTEGER AllocationSize;
+ } Overlay;
+
+
+
+
+
+
+ PDRIVER_CANCEL CancelRoutine;
+
+
+
+
+
+
+
+
+
+ PVOID UserBuffer;
+
+
+
+
+
+
+
+
+
+
+
+ union {
+
+ struct {
+
+ union {
+
+
+
+
+
+
+ KDEVICE_QUEUE_ENTRY DeviceQueueEntry;
+
+ struct {
+
+
+
+
+
+
+
+ PVOID DriverContext[4];
+
+ } ;
+
+ } ;
+
+
+
+
+
+ PETHREAD Thread;
+
+
+
+
+
+
+
+ PCHAR AuxiliaryBuffer;
+
+
+
+
+
+
+
+ struct {
+
+
+
+
+
+
+ LIST_ENTRY ListEntry;
+
+ union {
+
+
+
+
+
+
+
+
+ struct _IO_STACK_LOCATION *CurrentStackLocation;
+
+
+
+
+
+ ULONG PacketType;
+ };
+ };
+
+
+
+
+
+
+
+ PFILE_OBJECT OriginalFileObject;
+
+ } Overlay;
+
+
+
+
+
+
+
+
+
+ KAPC Apc;
+
+
+
+
+
+
+ PVOID CompletionKey;
+
+ } Tail;
+
+} IRP;
+
+typedef IRP *PIRP;
+
+
+
+
+
+
+
+
+
+typedef
+NTSTATUS
+IO_COMPLETION_ROUTINE (
+ PDEVICE_OBJECT DeviceObject,
+ PIRP Irp,
+ PVOID Context
+ );
+
+typedef IO_COMPLETION_ROUTINE *PIO_COMPLETION_ROUTINE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _DEVICE_RELATION_TYPE {
+ BusRelations,
+ EjectionRelations,
+ PowerRelations,
+ RemovalRelations,
+ TargetDeviceRelation,
+ SingleBusRelations,
+ TransportRelations
+} DEVICE_RELATION_TYPE, *PDEVICE_RELATION_TYPE;
+
+typedef struct _DEVICE_RELATIONS {
+ ULONG Count;
+ PDEVICE_OBJECT Objects[1];
+} DEVICE_RELATIONS, *PDEVICE_RELATIONS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _DEVICE_USAGE_NOTIFICATION_TYPE {
+ DeviceUsageTypeUndefined,
+ DeviceUsageTypePaging,
+ DeviceUsageTypeHibernation,
+ DeviceUsageTypeDumpFile,
+ DeviceUsageTypeBoot,
+ DeviceUsageTypePostDisplay,
+ DeviceUsageTypeGuestAssigned
+} DEVICE_USAGE_NOTIFICATION_TYPE;
+
+
+
+
+
+
+
+typedef struct _INTERFACE {
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+} INTERFACE, *PINTERFACE;
+
+
+
+typedef struct _DEVICE_CAPABILITIES {
+ USHORT Size;
+ USHORT Version;
+ ULONG DeviceD1:1;
+ ULONG DeviceD2:1;
+ ULONG LockSupported:1;
+ ULONG EjectSupported:1;
+ ULONG Removable:1;
+ ULONG DockDevice:1;
+ ULONG UniqueID:1;
+ ULONG SilentInstall:1;
+ ULONG RawDeviceOK:1;
+ ULONG SurpriseRemovalOK:1;
+ ULONG WakeFromD0:1;
+ ULONG WakeFromD1:1;
+ ULONG WakeFromD2:1;
+ ULONG WakeFromD3:1;
+ ULONG HardwareDisabled:1;
+ ULONG NonDynamic:1;
+ ULONG WarmEjectSupported:1;
+ ULONG NoDisplayInUI:1;
+
+
+ ULONG Reserved1:1;
+ ULONG WakeFromInterrupt:1;
+ ULONG SecureDevice:1;
+ ULONG ChildOfVgaEnabledBridge:1;
+ ULONG DecodeIoOnBoot:1;
+
+
+ ULONG Reserved:9;
+
+ ULONG Address;
+ ULONG UINumber;
+
+ DEVICE_POWER_STATE DeviceState[7];
+ SYSTEM_POWER_STATE SystemWake;
+ DEVICE_POWER_STATE DeviceWake;
+ ULONG D1Latency;
+ ULONG D2Latency;
+ ULONG D3Latency;
+} DEVICE_CAPABILITIES, *PDEVICE_CAPABILITIES;
+
+typedef struct _POWER_SEQUENCE {
+ ULONG SequenceD1;
+ ULONG SequenceD2;
+ ULONG SequenceD3;
+} POWER_SEQUENCE, *PPOWER_SEQUENCE;
+
+typedef enum {
+ BusQueryDeviceID = 0,
+ BusQueryHardwareIDs = 1,
+ BusQueryCompatibleIDs = 2,
+ BusQueryInstanceID = 3,
+ BusQueryDeviceSerialNumber = 4,
+ BusQueryContainerID = 5
+} BUS_QUERY_ID_TYPE, *PBUS_QUERY_ID_TYPE;
+
+typedef ULONG PNP_DEVICE_STATE, *PPNP_DEVICE_STATE;
+
+
+
+
+
+
+
+
+
+
+
+typedef enum {
+ DeviceTextDescription = 0,
+ DeviceTextLocationInformation = 1
+} DEVICE_TEXT_TYPE, *PDEVICE_TEXT_TYPE;
+
+
+
+
+
+
+
+
+#line 32790 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+#line 32798 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4324)
+#line 32805 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef struct _IO_STACK_LOCATION {
+ UCHAR MajorFunction;
+ UCHAR MinorFunction;
+ UCHAR Flags;
+ UCHAR Control;
+
+
+
+
+
+
+
+ union {
+
+
+
+
+
+ struct {
+ PIO_SECURITY_CONTEXT SecurityContext;
+ ULONG Options;
+ USHORT __declspec(align(8)) FileAttributes;
+ USHORT ShareAccess;
+ ULONG __declspec(align(8)) EaLength;
+ } Create;
+
+
+
+
+
+
+
+
+
+
+ struct {
+ PIO_SECURITY_CONTEXT SecurityContext;
+ ULONG Options;
+ USHORT __declspec(align(8)) Reserved;
+ USHORT ShareAccess;
+ PNAMED_PIPE_CREATE_PARAMETERS Parameters;
+ } CreatePipe;
+
+
+
+
+
+
+
+
+
+
+ struct {
+ PIO_SECURITY_CONTEXT SecurityContext;
+ ULONG Options;
+ USHORT __declspec(align(8)) Reserved;
+ USHORT ShareAccess;
+ PMAILSLOT_CREATE_PARAMETERS Parameters;
+ } CreateMailslot;
+
+
+
+
+
+ struct {
+ ULONG Length;
+ ULONG __declspec(align(8)) Key;
+
+ ULONG Flags;
+#line 32876 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+ LARGE_INTEGER ByteOffset;
+ } Read;
+
+
+
+
+
+ struct {
+ ULONG Length;
+ ULONG __declspec(align(8)) Key;
+
+ ULONG Flags;
+#line 32889 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+ LARGE_INTEGER ByteOffset;
+ } Write;
+
+
+
+
+
+ struct {
+ ULONG Length;
+ PUNICODE_STRING FileName;
+ FILE_INFORMATION_CLASS FileInformationClass;
+ ULONG __declspec(align(8)) FileIndex;
+ } QueryDirectory;
+
+
+
+
+
+ struct {
+ ULONG Length;
+ ULONG __declspec(align(8)) CompletionFilter;
+ } NotifyDirectory;
+
+
+
+
+
+
+
+
+ struct {
+ ULONG Length;
+ ULONG __declspec(align(8)) CompletionFilter;
+ DIRECTORY_NOTIFY_INFORMATION_CLASS __declspec(align(8)) DirectoryNotifyInformationClass;
+ } NotifyDirectoryEx;
+
+
+
+
+
+ struct {
+ ULONG Length;
+ FILE_INFORMATION_CLASS __declspec(align(8)) FileInformationClass;
+ } QueryFile;
+
+
+
+
+
+ struct {
+ ULONG Length;
+ FILE_INFORMATION_CLASS __declspec(align(8)) FileInformationClass;
+ PFILE_OBJECT FileObject;
+ union {
+ struct {
+ BOOLEAN ReplaceIfExists;
+ BOOLEAN AdvanceOnly;
+ };
+ ULONG ClusterCount;
+ HANDLE DeleteHandle;
+ };
+ } SetFile;
+
+
+
+
+
+
+
+ struct {
+ ULONG Length;
+ PVOID EaList;
+ ULONG EaListLength;
+ ULONG __declspec(align(8)) EaIndex;
+ } QueryEa;
+
+
+
+
+
+ struct {
+ ULONG Length;
+ } SetEa;
+
+
+
+
+
+
+
+ struct {
+ ULONG Length;
+ FS_INFORMATION_CLASS __declspec(align(8)) FsInformationClass;
+ } QueryVolume;
+
+
+
+
+
+
+
+ struct {
+ ULONG Length;
+ FS_INFORMATION_CLASS __declspec(align(8)) FsInformationClass;
+ } SetVolume;
+
+
+
+
+
+
+
+
+ struct {
+ ULONG OutputBufferLength;
+ ULONG __declspec(align(8)) InputBufferLength;
+ ULONG __declspec(align(8)) FsControlCode;
+ PVOID Type3InputBuffer;
+ } FileSystemControl;
+
+
+
+
+ struct {
+ PLARGE_INTEGER Length;
+ ULONG __declspec(align(8)) Key;
+ LARGE_INTEGER ByteOffset;
+ } LockControl;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ struct {
+ ULONG OutputBufferLength;
+ ULONG __declspec(align(8)) InputBufferLength;
+ ULONG __declspec(align(8)) IoControlCode;
+ PVOID Type3InputBuffer;
+ } DeviceIoControl;
+
+
+
+
+
+ struct {
+ SECURITY_INFORMATION SecurityInformation;
+ ULONG __declspec(align(8)) Length;
+ } QuerySecurity;
+
+
+
+
+
+ struct {
+ SECURITY_INFORMATION SecurityInformation;
+ PSECURITY_DESCRIPTOR SecurityDescriptor;
+ } SetSecurity;
+
+
+
+
+
+
+
+ struct {
+ PVPB Vpb;
+ PDEVICE_OBJECT DeviceObject;
+ ULONG OutputBufferLength;
+ } MountVolume;
+
+
+
+
+
+ struct {
+ PVPB Vpb;
+ PDEVICE_OBJECT DeviceObject;
+ } VerifyVolume;
+
+
+
+
+
+ struct {
+ struct _SCSI_REQUEST_BLOCK *Srb;
+ } Scsi;
+
+
+
+
+
+
+
+ struct {
+ ULONG Length;
+ PSID StartSid;
+ PFILE_GET_QUOTA_INFORMATION SidList;
+ ULONG SidListLength;
+ } QueryQuota;
+
+
+
+
+
+ struct {
+ ULONG Length;
+ } SetQuota;
+
+
+
+
+
+
+
+ struct {
+ DEVICE_RELATION_TYPE Type;
+ } QueryDeviceRelations;
+
+
+
+
+
+ struct {
+ const GUID *InterfaceType;
+ USHORT Size;
+ USHORT Version;
+ PINTERFACE Interface;
+ PVOID InterfaceSpecificData;
+ } QueryInterface;
+
+
+
+
+
+ struct {
+ PDEVICE_CAPABILITIES Capabilities;
+ } DeviceCapabilities;
+
+
+
+
+
+ struct {
+ PIO_RESOURCE_REQUIREMENTS_LIST IoResourceRequirementList;
+ } FilterResourceRequirements;
+
+
+
+
+
+ struct {
+ ULONG WhichSpace;
+ PVOID Buffer;
+ ULONG Offset;
+ ULONG __declspec(align(8)) Length;
+ } ReadWriteConfig;
+
+
+
+
+
+ struct {
+ BOOLEAN Lock;
+ } SetLock;
+
+
+
+
+
+ struct {
+ BUS_QUERY_ID_TYPE IdType;
+ } QueryId;
+
+
+
+
+
+ struct {
+ DEVICE_TEXT_TYPE DeviceTextType;
+ LCID __declspec(align(8)) LocaleId;
+ } QueryDeviceText;
+
+
+
+
+
+ struct {
+ BOOLEAN InPath;
+ BOOLEAN Reserved[3];
+ DEVICE_USAGE_NOTIFICATION_TYPE __declspec(align(8)) Type;
+ } UsageNotification;
+
+
+
+
+
+ struct {
+ SYSTEM_POWER_STATE PowerState;
+ } WaitWake;
+
+
+
+
+
+ struct {
+ PPOWER_SEQUENCE PowerSequence;
+ } PowerSequence;
+
+
+
+
+
+
+ struct {
+ union {
+ ULONG SystemContext;
+ SYSTEM_POWER_STATE_CONTEXT SystemPowerStateContext;
+ };
+ POWER_STATE_TYPE __declspec(align(8)) Type;
+ POWER_STATE __declspec(align(8)) State;
+ POWER_ACTION __declspec(align(8)) ShutdownType;
+ } Power;
+
+
+
+
+
+
+
+#line 33238 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+ struct {
+ PCM_RESOURCE_LIST AllocatedResources;
+ PCM_RESOURCE_LIST AllocatedResourcesTranslated;
+ } StartDevice;
+
+
+
+
+
+
+
+
+
+
+
+ struct {
+ ULONG_PTR ProviderId;
+ PVOID DataPath;
+ ULONG BufferSize;
+ PVOID Buffer;
+ } WMI;
+
+
+
+
+
+ struct {
+ PVOID Argument1;
+ PVOID Argument2;
+ PVOID Argument3;
+ PVOID Argument4;
+ } Others;
+
+ } Parameters;
+
+
+
+
+
+
+ PDEVICE_OBJECT DeviceObject;
+
+
+
+
+
+
+ PFILE_OBJECT FileObject;
+
+
+
+
+
+
+ PIO_COMPLETION_ROUTINE CompletionRoutine;
+
+
+
+
+
+
+ PVOID Context;
+
+} IO_STACK_LOCATION, *PIO_STACK_LOCATION;
+
+
+#pragma warning(pop)
+#line 33311 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+#line 33315 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+typedef struct _SHARE_ACCESS {
+ ULONG OpenCount;
+ ULONG Readers;
+ ULONG Writers;
+ ULONG Deleters;
+ ULONG SharedRead;
+ ULONG SharedWrite;
+ ULONG SharedDelete;
+} SHARE_ACCESS, *PSHARE_ACCESS;
+
+
+
+
+
+
+
+
+
+typedef struct _LINK_SHARE_ACCESS {
+
+ ULONG OpenCount;
+ ULONG Deleters;
+ ULONG SharedDelete;
+} LINK_SHARE_ACCESS, *PLINK_SHARE_ACCESS;
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+IoAcquireCancelSpinLock(
+ PKIRQL Irql
+ );
+#line 33361 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoAllocateDriverObjectExtension(
+ PDRIVER_OBJECT DriverObject,
+ PVOID ClientIdentificationAddress,
+ ULONG DriverObjectExtensionSize,
+
+
+#line 33375 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ PVOID *DriverObjectExtension
+ );
+#line 33379 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+PVOID
+IoAllocateErrorLogEntry(
+ PVOID IoObject,
+ UCHAR EntrySize
+ );
+#line 33389 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+PIRP
+IoAllocateIrp(
+ CCHAR StackSize,
+ BOOLEAN ChargeQuota
+ );
+#line 33400 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+PIRP
+IoAllocateIrpEx(
+ PDEVICE_OBJECT DeviceObject,
+ CCHAR StackSize,
+ BOOLEAN ChargeQuota
+ );
+#line 33412 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+#line 33416 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+PMDL
+IoAllocateMdl(
+ PVOID VirtualAddress,
+ ULONG Length,
+ BOOLEAN SecondaryBuffer,
+ BOOLEAN ChargeQuota,
+ PIRP Irp
+ );
+#line 33429 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef enum _IO_PAGING_PRIORITY {
+ IoPagingPriorityInvalid,
+ IoPagingPriorityNormal,
+ IoPagingPriorityHigh,
+ IoPagingPriorityReserved1,
+ IoPagingPriorityReserved2
+} IO_PAGING_PRIORITY;
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoAttachDevice(
+
+ PDEVICE_OBJECT SourceDevice,
+ PUNICODE_STRING TargetDevice,
+ PDEVICE_OBJECT *AttachedDevice
+ );
+#line 33450 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+PDEVICE_OBJECT
+IoAttachDeviceToDeviceStack(
+
+ PDEVICE_OBJECT SourceDevice,
+ PDEVICE_OBJECT TargetDevice
+ );
+#line 33463 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+PIRP
+IoBuildAsynchronousFsdRequest(
+ ULONG MajorFunction,
+ PDEVICE_OBJECT DeviceObject,
+ PVOID Buffer,
+ ULONG Length,
+ PLARGE_INTEGER StartingOffset,
+ PIO_STATUS_BLOCK IoStatusBlock
+ );
+#line 33479 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+PIRP
+IoBuildDeviceIoControlRequest(
+ ULONG IoControlCode,
+ PDEVICE_OBJECT DeviceObject,
+ PVOID InputBuffer,
+ ULONG InputBufferLength,
+ PVOID OutputBuffer,
+ ULONG OutputBufferLength,
+ BOOLEAN InternalDeviceIoControl,
+ PKEVENT Event,
+ PIO_STATUS_BLOCK IoStatusBlock
+ );
+#line 33498 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+IoBuildPartialMdl(
+ PMDL SourceMdl,
+ PMDL TargetMdl,
+ PVOID VirtualAddress,
+ ULONG Length
+ );
+#line 33510 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef struct _BOOTDISK_INFORMATION {
+ LONGLONG BootPartitionOffset;
+ LONGLONG SystemPartitionOffset;
+ ULONG BootDeviceSignature;
+ ULONG SystemDeviceSignature;
+} BOOTDISK_INFORMATION, *PBOOTDISK_INFORMATION;
+
+
+
+
+typedef struct _BOOTDISK_INFORMATION_EX {
+ LONGLONG BootPartitionOffset;
+ LONGLONG SystemPartitionOffset;
+ ULONG BootDeviceSignature;
+ ULONG SystemDeviceSignature;
+ GUID BootDeviceGuid;
+ GUID SystemDeviceGuid;
+ BOOLEAN BootDeviceIsGpt;
+ BOOLEAN SystemDeviceIsGpt;
+} BOOTDISK_INFORMATION_EX, *PBOOTDISK_INFORMATION_EX;
+
+
+typedef struct _LOADER_PARTITION_INFORMATION_EX {
+ ULONG PartitionStyle;
+ ULONG PartitionNumber;
+ union {
+ ULONG Signature;
+ GUID DeviceId;
+ };
+ ULONG Flags;
+} LOADER_PARTITION_INFORMATION_EX, *PLOADER_PARTITION_INFORMATION_EX;
+
+typedef struct _BOOTDISK_INFORMATION_LITE {
+ ULONG NumberEntries;
+ LOADER_PARTITION_INFORMATION_EX Entries[1];
+} BOOTDISK_INFORMATION_LITE, *PBOOTDISK_INFORMATION_LITE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 33561 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoGetBootDiskInformation(
+ PBOOTDISK_INFORMATION BootDiskInformation,
+ ULONG Size
+ );
+#line 33570 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoGetBootDiskInformationLite(
+ PBOOTDISK_INFORMATION_LITE *BootDiskInformation
+ );
+
+#line 33579 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PIRP
+IoBuildSynchronousFsdRequest(
+ ULONG MajorFunction,
+ PDEVICE_OBJECT DeviceObject,
+ PVOID Buffer,
+ ULONG Length,
+ PLARGE_INTEGER StartingOffset,
+ PKEVENT Event,
+ PIO_STATUS_BLOCK IoStatusBlock
+ );
+#line 33600 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+
+IofCallDriver(
+ PDEVICE_OBJECT DeviceObject,
+ PIRP Irp
+ );
+#line 33613 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+IoCancelIrp(
+ PIRP Irp
+ );
+#line 33626 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoCheckShareAccess(
+ ACCESS_MASK DesiredAccess,
+ ULONG DesiredShareAccess,
+ PFILE_OBJECT FileObject,
+ PSHARE_ACCESS ShareAccess,
+ BOOLEAN Update
+ );
+#line 33640 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoCheckShareAccessEx(
+ ACCESS_MASK DesiredAccess,
+ ULONG DesiredShareAccess,
+ PFILE_OBJECT FileObject,
+ PSHARE_ACCESS ShareAccess,
+ BOOLEAN Update,
+ PBOOLEAN WritePermission
+ );
+#line 33653 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoCheckLinkShareAccess(
+ ACCESS_MASK DesiredAccess,
+ ULONG DesiredShareAccess,
+ PFILE_OBJECT FileObject,
+ PSHARE_ACCESS ShareAccess,
+ PLINK_SHARE_ACCESS LinkShareAccess,
+ ULONG IoShareAccessFlags
+ );
+#line 33666 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _IO_COMPLETION_ROUTINE_RESULT {
+
+ ContinueCompletion = ((NTSTATUS)0x00000000L),
+ StopCompletion = ((NTSTATUS)0xC0000016L)
+
+} IO_COMPLETION_ROUTINE_RESULT, *PIO_COMPLETION_ROUTINE_RESULT;
+
+
+
+
+__declspec(dllimport)
+void
+
+IofCompleteRequest(
+ PIRP Irp,
+ CCHAR PriorityBoost
+ );
+#line 33745 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoConnectInterrupt(
+ PKINTERRUPT *InterruptObject,
+ PKSERVICE_ROUTINE ServiceRoutine,
+ PVOID ServiceContext,
+ PKSPIN_LOCK SpinLock,
+ ULONG Vector,
+ KIRQL Irql,
+ KIRQL SynchronizeIrql,
+ KINTERRUPT_MODE InterruptMode,
+ BOOLEAN ShareVector,
+ KAFFINITY ProcessorEnableMask,
+ BOOLEAN FloatingSave
+ );
+#line 33767 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+typedef struct _IO_INTERRUPT_MESSAGE_INFO_ENTRY {
+
+
+
+
+
+
+ PHYSICAL_ADDRESS MessageAddress;
+
+
+
+
+
+
+ KAFFINITY TargetProcessorSet;
+
+
+
+
+
+
+ PKINTERRUPT InterruptObject;
+
+
+
+
+
+
+ ULONG MessageData;
+
+
+
+
+
+
+
+
+
+ ULONG Vector;
+ KIRQL Irql;
+ KINTERRUPT_MODE Mode;
+ KINTERRUPT_POLARITY Polarity;
+
+} IO_INTERRUPT_MESSAGE_INFO_ENTRY, *PIO_INTERRUPT_MESSAGE_INFO_ENTRY;
+
+
+
+
+
+typedef struct _IO_INTERRUPT_MESSAGE_INFO {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ KIRQL UnifiedIrql;
+
+
+
+
+
+
+ ULONG MessageCount;
+
+
+
+
+
+
+
+
+ IO_INTERRUPT_MESSAGE_INFO_ENTRY MessageInfo[1];
+
+} IO_INTERRUPT_MESSAGE_INFO, *PIO_INTERRUPT_MESSAGE_INFO;
+
+
+
+
+
+
+typedef struct _IO_CONNECT_INTERRUPT_FULLY_SPECIFIED_PARAMETERS {
+
+
+
+
+
+
+
+
+ PDEVICE_OBJECT PhysicalDeviceObject;
+
+
+
+
+
+
+
+ PKINTERRUPT *InterruptObject;
+
+
+
+
+
+
+ PKSERVICE_ROUTINE ServiceRoutine;
+
+
+
+
+
+
+ PVOID ServiceContext;
+
+
+
+
+
+
+
+
+
+
+
+
+ PKSPIN_LOCK SpinLock;
+
+
+
+
+
+
+
+
+
+
+
+
+ KIRQL SynchronizeIrql;
+
+
+
+
+
+
+ BOOLEAN FloatingSave;
+
+
+
+
+
+
+
+
+ BOOLEAN ShareVector;
+
+
+
+
+
+
+
+
+ ULONG Vector;
+
+
+
+
+
+
+
+ KIRQL Irql;
+
+
+
+
+
+
+
+
+
+ KINTERRUPT_MODE InterruptMode;
+
+
+
+
+
+
+
+
+ KAFFINITY ProcessorEnableMask;
+
+
+
+
+
+
+
+
+
+
+ USHORT Group;
+
+} IO_CONNECT_INTERRUPT_FULLY_SPECIFIED_PARAMETERS,
+ *PIO_CONNECT_INTERRUPT_FULLY_SPECIFIED_PARAMETERS;
+
+
+
+
+
+
+typedef struct _IO_CONNECT_INTERRUPT_LINE_BASED_PARAMETERS {
+
+
+
+
+
+
+
+
+
+ PDEVICE_OBJECT PhysicalDeviceObject;
+
+
+
+
+
+
+
+ PKINTERRUPT *InterruptObject;
+
+
+
+
+
+
+ PKSERVICE_ROUTINE ServiceRoutine;
+
+
+
+
+
+
+ PVOID ServiceContext;
+
+
+
+
+
+
+
+
+
+
+
+
+ PKSPIN_LOCK SpinLock;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ KIRQL SynchronizeIrql;
+
+
+
+
+
+
+ BOOLEAN FloatingSave;
+
+} IO_CONNECT_INTERRUPT_LINE_BASED_PARAMETERS,
+ *PIO_CONNECT_INTERRUPT_LINE_BASED_PARAMETERS;
+
+
+
+
+
+
+typedef struct _IO_CONNECT_INTERRUPT_MESSAGE_BASED_PARAMETERS {
+
+
+
+
+
+
+
+
+
+ PDEVICE_OBJECT PhysicalDeviceObject;
+
+
+
+
+
+
+
+
+
+
+
+
+ union {
+ PVOID *Generic;
+ PIO_INTERRUPT_MESSAGE_INFO *InterruptMessageTable;
+ PKINTERRUPT *InterruptObject;
+ } ConnectionContext;
+
+
+
+
+
+
+
+ PKMESSAGE_SERVICE_ROUTINE MessageServiceRoutine;
+
+
+
+
+
+
+ PVOID ServiceContext;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PKSPIN_LOCK SpinLock;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ KIRQL SynchronizeIrql;
+
+
+
+
+
+
+ BOOLEAN FloatingSave;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PKSERVICE_ROUTINE FallBackServiceRoutine;
+
+} IO_CONNECT_INTERRUPT_MESSAGE_BASED_PARAMETERS,
+ *PIO_CONNECT_INTERRUPT_MESSAGE_BASED_PARAMETERS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _IO_CONNECT_INTERRUPT_PARAMETERS {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ULONG Version;
+
+
+
+
+
+
+ union {
+ IO_CONNECT_INTERRUPT_FULLY_SPECIFIED_PARAMETERS FullySpecified;
+ IO_CONNECT_INTERRUPT_LINE_BASED_PARAMETERS LineBased;
+ IO_CONNECT_INTERRUPT_MESSAGE_BASED_PARAMETERS MessageBased;
+ };
+
+} IO_CONNECT_INTERRUPT_PARAMETERS, *PIO_CONNECT_INTERRUPT_PARAMETERS;
+
+
+__declspec(dllimport)
+NTSTATUS
+IoConnectInterruptEx (
+ PIO_CONNECT_INTERRUPT_PARAMETERS Parameters
+ );
+#line 34269 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoCreateDevice(
+ PDRIVER_OBJECT DriverObject,
+ ULONG DeviceExtensionSize,
+ PUNICODE_STRING DeviceName,
+ ULONG DeviceType,
+ ULONG DeviceCharacteristics,
+ BOOLEAN Exclusive,
+
+
+#line 34289 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+ PDEVICE_OBJECT *DeviceObject
+ );
+#line 34292 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+IoIsWdmVersionAvailable(
+ UCHAR MajorVersion,
+#line 34304 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 34307 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+ UCHAR MinorVersion
+ );
+#line 34310 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoCreateFile(
+ PHANDLE FileHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PLARGE_INTEGER AllocationSize,
+ ULONG FileAttributes,
+ ULONG ShareAccess,
+ ULONG Disposition,
+ ULONG CreateOptions,
+ PVOID EaBuffer,
+ ULONG EaLength,
+ CREATE_FILE_TYPE CreateFileType,
+ PVOID InternalParameters,
+ ULONG Options
+ );
+#line 34332 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+PKEVENT
+IoCreateNotificationEvent(
+ PUNICODE_STRING EventName,
+ PHANDLE EventHandle
+ );
+#line 34343 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoCreateSymbolicLink(
+ PUNICODE_STRING SymbolicLinkName,
+ PUNICODE_STRING DeviceName
+ );
+#line 34353 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+PKEVENT
+IoCreateSynchronizationEvent(
+ PUNICODE_STRING EventName,
+ PHANDLE EventHandle
+ );
+#line 34363 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoCreateUnprotectedSymbolicLink(
+ PUNICODE_STRING SymbolicLinkName,
+ PUNICODE_STRING DeviceName
+ );
+#line 34373 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+IoDeleteDevice (
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 34383 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoDeleteSymbolicLink(
+ PUNICODE_STRING SymbolicLinkName
+ );
+#line 34392 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+IoDetachDevice(
+ PDEVICE_OBJECT TargetDevice
+ );
+#line 34401 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+IoDisconnectInterrupt(
+ PKINTERRUPT InterruptObject
+ );
+#line 34410 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+typedef struct _IO_DISCONNECT_INTERRUPT_PARAMETERS {
+
+
+
+
+
+
+
+
+ ULONG Version;
+
+
+
+
+
+
+
+
+
+
+
+
+ union {
+ PVOID Generic;
+ PKINTERRUPT InterruptObject;
+ PIO_INTERRUPT_MESSAGE_INFO InterruptMessageTable;
+ } ConnectionContext;
+
+} IO_DISCONNECT_INTERRUPT_PARAMETERS, *PIO_DISCONNECT_INTERRUPT_PARAMETERS;
+
+
+__declspec(dllimport)
+void
+IoDisconnectInterruptEx (
+ PIO_DISCONNECT_INTERRUPT_PARAMETERS Parameters
+ );
+#line 34452 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+typedef struct _IO_REPORT_INTERRUPT_ACTIVE_STATE_PARAMETERS {
+
+
+
+
+
+
+
+
+ ULONG Version;
+
+
+
+
+
+
+
+
+
+
+
+
+ union {
+ PVOID Generic;
+ PKINTERRUPT InterruptObject;
+ PIO_INTERRUPT_MESSAGE_INFO InterruptMessageTable;
+ } ConnectionContext;
+
+} IO_REPORT_INTERRUPT_ACTIVE_STATE_PARAMETERS,
+ *PIO_REPORT_INTERRUPT_ACTIVE_STATE_PARAMETERS;
+
+
+__declspec(dllimport)
+void
+IoReportInterruptActive (
+ PIO_REPORT_INTERRUPT_ACTIVE_STATE_PARAMETERS Parameters
+ );
+
+void
+IoReportInterruptInactive (
+ PIO_REPORT_INTERRUPT_ACTIVE_STATE_PARAMETERS Parameters
+ );
+#line 34500 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoGetAffinityInterrupt (
+ PKINTERRUPT InterruptObject,
+ PGROUP_AFFINITY GroupAffinity
+ );
+#line 34509 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+IoFreeIrp(
+ PIRP Irp
+ );
+#line 34519 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+IoFreeMdl(
+ PMDL Mdl
+ );
+#line 34528 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+PDEVICE_OBJECT
+IoGetAttachedDeviceReference(
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 34537 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__forceinline
+
+PIO_STACK_LOCATION
+IoGetCurrentIrpStackLocation(
+ PIRP Irp
+)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+ ((void) 0);
+ return Irp->Tail.Overlay.CurrentStackLocation;
+}
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+IoGetDriverObjectExtension(
+ PDRIVER_OBJECT DriverObject,
+ PVOID ClientIdentificationAddress
+ );
+#line 34578 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+PEPROCESS
+IoGetCurrentProcess(
+ void
+ );
+#line 34587 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoGetDeviceObjectPointer(
+ PUNICODE_STRING ObjectName,
+ ACCESS_MASK DesiredAccess,
+ PFILE_OBJECT *FileObject,
+ PDEVICE_OBJECT *DeviceObject
+ );
+#line 34599 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+struct _DMA_ADAPTER *
+IoGetDmaAdapter(
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ struct _DEVICE_DESCRIPTION *DeviceDescription,
+
+ PULONG NumberOfMapRegisters
+ );
+#line 34612 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+typedef struct _DMA_IOMMU_INTERFACE DMA_IOMMU_INTERFACE, *PDMA_IOMMU_INTERFACE;
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoGetIommuInterface (
+ ULONG Version,
+ PDMA_IOMMU_INTERFACE InterfaceOut
+ );
+
+#line 34627 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+typedef struct _DMA_IOMMU_INTERFACE_EX DMA_IOMMU_INTERFACE_EX, *PDMA_IOMMU_INTERFACE_EX;
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoGetIommuInterfaceEx (
+ ULONG Version,
+ ULONGLONG Flags,
+ PDMA_IOMMU_INTERFACE_EX InterfaceOut
+ );
+
+#line 34643 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+IoForwardIrpSynchronously(
+ PDEVICE_OBJECT DeviceObject,
+ PIRP Irp
+ );
+
+
+
+#line 34655 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoSynchronousCallDriver(
+ PDEVICE_OBJECT DeviceObject,
+ PIRP Irp
+ );
+#line 34664 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+IoGetInitialStack(
+ void
+ );
+#line 34706 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+IoGetStackLimits (
+ PULONG_PTR LowLimit,
+ PULONG_PTR HighLimit
+ );
+
+
+LOGICAL
+IoWithinStackLimits(
+ ULONG_PTR RegionStart,
+ SIZE_T RegionSize
+ );
+#line 34722 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__forceinline
+ULONG_PTR
+IoGetRemainingStackSize (
+ void
+ )
+{
+ ULONG_PTR Top;
+ ULONG_PTR Bottom;
+
+ IoGetStackLimits( &Bottom, &Top );
+ return((ULONG_PTR)(&Top) - Bottom );
+}
+
+__forceinline
+
+PIO_STACK_LOCATION
+IoGetNextIrpStackLocation(
+ PIRP Irp
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+ ((void) 0);
+
+ return ((Irp)->Tail.Overlay.CurrentStackLocation - 1 );
+}
+
+
+__declspec(dllimport)
+PDEVICE_OBJECT
+IoGetRelatedDeviceObject(
+ PFILE_OBJECT FileObject
+ );
+#line 34778 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+PIRP
+IoGetTopLevelIrp(
+ void
+ );
+#line 34787 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+void
+__forceinline
+IoInitializeDpcRequest(
+ PDEVICE_OBJECT DeviceObject,
+ PIO_DPC_ROUTINE DpcRoutine
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+ KeInitializeDpc( &DeviceObject->Dpc,
+#pragma warning (suppress: 28024)
+ (PKDEFERRED_ROUTINE) DpcRoutine,
+ DeviceObject );
+}
+
+
+void
+__forceinline
+IoInitializeThreadedDpcRequest(
+ PDEVICE_OBJECT DeviceObject,
+ PIO_DPC_ROUTINE DpcRoutine
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+#pragma warning (suppress: 28128)
+ KeInitializeThreadedDpc( &DeviceObject->Dpc,
+#pragma warning (suppress: 28165 28024)
+ (PKDEFERRED_ROUTINE) DpcRoutine,
+ DeviceObject );
+}
+#line 34862 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+IoInitializeIrp(
+ PIRP Irp,
+ USHORT PacketSize,
+ CCHAR StackSize
+ );
+#line 34873 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+IoCleanupIrp(
+ PIRP Irp
+ );
+#line 34882 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+IoInitializeIrpEx(
+ PIRP Irp,
+ PDEVICE_OBJECT DeviceObject,
+ USHORT PacketSize,
+ CCHAR StackSize
+ );
+#line 34894 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoInitializeTimer(
+ PDEVICE_OBJECT DeviceObject,
+ PIO_TIMER_ROUTINE TimerRoutine,
+ PVOID Context
+ );
+#line 34906 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+#line 34907 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+IoReuseIrp(
+ PIRP Irp,
+ NTSTATUS Iostatus
+ );
+#line 34918 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__forceinline
+void
+IoMarkIrpPending(
+ PIRP Irp
+)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+ IoGetCurrentIrpStackLocation( (Irp) )->Control |= 0x01;
+}
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoRegisterShutdownNotification(
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 34990 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoRegisterLastChanceShutdownNotification(
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 34999 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+void
+IoReleaseCancelSpinLock(
+ KIRQL Irql
+ );
+#line 35011 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+IoRemoveShareAccess(
+ PFILE_OBJECT FileObject,
+ PSHARE_ACCESS ShareAccess
+ );
+#line 35022 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+IoRemoveLinkShareAccess(
+ PFILE_OBJECT FileObject,
+ PSHARE_ACCESS ShareAccess,
+ PLINK_SHARE_ACCESS LinkShareAccess
+ );
+#line 35032 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+IoRemoveLinkShareAccessEx(
+ PFILE_OBJECT FileObject,
+ PSHARE_ACCESS ShareAccess,
+ PLINK_SHARE_ACCESS LinkShareAccess,
+ ULONG IoShareAccessFlags
+ );
+#line 35043 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__forceinline
+void
+IoRequestDpc(
+ PDEVICE_OBJECT DeviceObject,
+ PIRP Irp,
+ PVOID Context
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+ KeInsertQueueDpc( &DeviceObject->Dpc, Irp, Context );
+}
+#line 35081 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__forceinline
+PDRIVER_CANCEL
+IoSetCancelRoutine(
+ PIRP Irp,
+ PDRIVER_CANCEL CancelRoutine
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+ return (PDRIVER_CANCEL)(ULONG_PTR) _InterlockedExchangePointer((PVOID *)&(Irp)->CancelRoutine, (PVOID)(ULONG_PTR)(CancelRoutine) );
+}
+#line 35115 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__forceinline
+void
+IoSetCompletionRoutine(
+ PIRP Irp,
+ PIO_COMPLETION_ROUTINE CompletionRoutine,
+ PVOID Context,
+ BOOLEAN InvokeOnSuccess,
+ BOOLEAN InvokeOnError,
+ BOOLEAN InvokeOnCancel
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+ PIO_STACK_LOCATION irpSp;
+ ((void) 0);
+ irpSp = IoGetNextIrpStackLocation(Irp);
+ irpSp->CompletionRoutine = CompletionRoutine;
+ irpSp->Context = Context;
+ irpSp->Control = 0;
+
+ if (InvokeOnSuccess) {
+ irpSp->Control = 0x40;
+ }
+
+ if (InvokeOnError) {
+ irpSp->Control |= 0x80;
+ }
+
+ if (InvokeOnCancel) {
+ irpSp->Control |= 0x20;
+ }
+}
+
+
+
+__declspec(dllimport)
+
+NTSTATUS
+IoSetCompletionRoutineEx(
+ PDEVICE_OBJECT DeviceObject,
+ PIRP Irp,
+ PIO_COMPLETION_ROUTINE CompletionRoutine,
+ PVOID Context,
+ BOOLEAN InvokeOnSuccess,
+ BOOLEAN InvokeOnError,
+ BOOLEAN InvokeOnCancel
+ );
+#line 35195 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__forceinline
+void
+IoSetNextIrpStackLocation (
+ PIRP Irp
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+ ((void) 0);
+ Irp->CurrentLocation--;
+ Irp->Tail.Overlay.CurrentStackLocation--;
+}
+
+__forceinline
+void
+IoCopyCurrentIrpStackLocationToNext(
+ PIRP Irp
+)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+ PIO_STACK_LOCATION irpSp;
+ PIO_STACK_LOCATION nextIrpSp;
+ irpSp = IoGetCurrentIrpStackLocation(Irp);
+ nextIrpSp = IoGetNextIrpStackLocation(Irp);
+ memcpy((nextIrpSp),(irpSp),(((LONG)(LONG_PTR)&(((IO_STACK_LOCATION *)0)->CompletionRoutine))));
+ nextIrpSp->Control = 0;
+}
+
+__forceinline
+void
+IoSkipCurrentIrpStackLocation (
+ PIRP Irp
+)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+ ((void) 0);
+ Irp->CurrentLocation++;
+ Irp->Tail.Overlay.CurrentStackLocation++;
+}
+
+
+__declspec(dllimport)
+void
+IoSetShareAccess(
+ ACCESS_MASK DesiredAccess,
+ ULONG DesiredShareAccess,
+ PFILE_OBJECT FileObject,
+ PSHARE_ACCESS ShareAccess
+ );
+#line 35300 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+IoSetShareAccessEx(
+ ACCESS_MASK DesiredAccess,
+ ULONG DesiredShareAccess,
+ PFILE_OBJECT FileObject,
+ PSHARE_ACCESS ShareAccess,
+ PBOOLEAN WritePermission
+ );
+#line 35312 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+IoSetLinkShareAccess(
+ ACCESS_MASK DesiredAccess,
+ ULONG DesiredShareAccess,
+ PFILE_OBJECT FileObject,
+ PSHARE_ACCESS ShareAccess,
+ PLINK_SHARE_ACCESS LinkShareAccess,
+ ULONG IoShareAccessFlags
+ );
+#line 35325 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+IoSetTopLevelIrp(
+ PIRP Irp
+ );
+#line 35336 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+typedef struct _IO_REMOVE_LOCK_TRACKING_BLOCK * PIO_REMOVE_LOCK_TRACKING_BLOCK;
+
+typedef struct _IO_REMOVE_LOCK_COMMON_BLOCK {
+ BOOLEAN Removed;
+ BOOLEAN Reserved [3];
+ LONG IoCount;
+ KEVENT RemoveEvent;
+
+} IO_REMOVE_LOCK_COMMON_BLOCK;
+
+typedef struct _IO_REMOVE_LOCK_DBG_BLOCK {
+ LONG Signature;
+ ULONG HighWatermark;
+ LONGLONG MaxLockedTicks;
+ LONG AllocateTag;
+ LIST_ENTRY LockList;
+ KSPIN_LOCK Spin;
+ LONG LowMemoryCount;
+ ULONG Reserved1[4];
+ PVOID Reserved2;
+ PIO_REMOVE_LOCK_TRACKING_BLOCK Blocks;
+} IO_REMOVE_LOCK_DBG_BLOCK;
+
+typedef struct _IO_REMOVE_LOCK {
+ IO_REMOVE_LOCK_COMMON_BLOCK Common;
+
+
+#line 35368 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+} IO_REMOVE_LOCK, *PIO_REMOVE_LOCK;
+
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+IoInitializeRemoveLockEx(
+ PIO_REMOVE_LOCK Lock,
+ ULONG AllocateTag,
+ ULONG MaxLockedMinutes,
+ ULONG HighWatermark,
+ ULONG RemlockSize
+ );
+#line 35386 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 35399 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+#line 35402 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+IoAcquireRemoveLockEx (
+ PIO_REMOVE_LOCK RemoveLock,
+ PVOID Tag,
+ PCSTR File,
+ ULONG Line,
+ ULONG RemlockSize
+ );
+#line 35416 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+IoReleaseRemoveLockEx(
+ PIO_REMOVE_LOCK RemoveLock,
+ PVOID Tag,
+ ULONG RemlockSize
+ );
+#line 35465 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+IoReleaseRemoveLockAndWaitEx(
+ PIO_REMOVE_LOCK RemoveLock,
+ PVOID Tag,
+ ULONG RemlockSize
+ );
+#line 35505 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+USHORT
+IoSizeOfIrpEx(
+ PDEVICE_OBJECT DeviceObject,
+ CCHAR StackSize
+ );
+#line 35560 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+IoStartNextPacket(
+ PDEVICE_OBJECT DeviceObject,
+ BOOLEAN Cancelable
+ );
+#line 35570 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+IoStartNextPacketByKey(
+ PDEVICE_OBJECT DeviceObject,
+ BOOLEAN Cancelable,
+ ULONG Key
+ );
+#line 35581 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+IoStartPacket(
+ PDEVICE_OBJECT DeviceObject,
+ PIRP Irp,
+ PULONG Key,
+ PDRIVER_CANCEL CancelFunction
+ );
+#line 35594 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+void
+IoSetStartIoAttributes(
+ PDEVICE_OBJECT DeviceObject,
+ BOOLEAN DeferredStartIo,
+ BOOLEAN NonCancelable
+ );
+#line 35603 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+IoStartTimer(
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 35613 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+#line 35614 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+IoStopTimer(
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 35624 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+#line 35625 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+IoUnregisterShutdownNotification(
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 35635 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+IoUpdateShareAccess(
+ PFILE_OBJECT FileObject,
+ PSHARE_ACCESS ShareAccess
+ );
+#line 35645 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+IoUpdateLinkShareAccess(
+ PFILE_OBJECT FileObject,
+ PSHARE_ACCESS ShareAccess,
+ PLINK_SHARE_ACCESS LinkShareAccess
+ );
+#line 35655 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+IoUpdateLinkShareAccessEx(
+ PFILE_OBJECT FileObject,
+ PSHARE_ACCESS ShareAccess,
+ PLINK_SHARE_ACCESS LinkShareAccess,
+ ULONG IoShareAccessFlags
+ );
+#line 35666 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+IoWriteErrorLogEntry(
+ PVOID ElEntry
+ );
+#line 35675 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+NTSTATUS
+IoCreateSystemThread(
+ PVOID IoObject,
+ PHANDLE ThreadHandle,
+ ULONG DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ HANDLE ProcessHandle,
+ PCLIENT_ID ClientId,
+ PKSTART_ROUTINE StartRoutine,
+ PVOID StartContext
+ );
+
+#line 35694 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef struct _IO_WORKITEM *PIO_WORKITEM;
+
+
+
+
+typedef
+void
+IO_WORKITEM_ROUTINE (
+ PDEVICE_OBJECT DeviceObject,
+ PVOID Context
+ );
+
+typedef IO_WORKITEM_ROUTINE *PIO_WORKITEM_ROUTINE;
+
+
+
+
+
+
+__declspec(dllimport)
+PIO_WORKITEM
+IoAllocateWorkItem(
+ PDEVICE_OBJECT DeviceObject
+ );
+
+
+__declspec(dllimport)
+void
+IoFreeWorkItem(
+ PIO_WORKITEM IoWorkItem
+ );
+
+
+__declspec(dllimport)
+void
+IoQueueWorkItem(
+ PIO_WORKITEM IoWorkItem,
+ PIO_WORKITEM_ROUTINE WorkerRoutine,
+ WORK_QUEUE_TYPE QueueType,
+ PVOID Context
+ );
+
+#line 35738 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+typedef
+void
+IO_WORKITEM_ROUTINE_EX (
+ PVOID IoObject,
+ PVOID Context,
+ PIO_WORKITEM IoWorkItem
+ );
+
+typedef IO_WORKITEM_ROUTINE_EX *PIO_WORKITEM_ROUTINE_EX;
+
+
+
+
+void
+IoQueueWorkItemEx(
+ PIO_WORKITEM IoWorkItem,
+ PIO_WORKITEM_ROUTINE_EX WorkerRoutine,
+ WORK_QUEUE_TYPE QueueType,
+ PVOID Context
+ );
+
+ULONG
+IoSizeofWorkItem(
+ void
+ );
+
+void
+IoInitializeWorkItem(
+ PVOID IoObject,
+ PIO_WORKITEM IoWorkItem
+ );
+
+void
+IoUninitializeWorkItem(
+ PIO_WORKITEM IoWorkItem
+ );
+
+#line 35780 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+BOOLEAN
+IoTryQueueWorkItem(
+ PIO_WORKITEM IoWorkItem,
+ PIO_WORKITEM_ROUTINE_EX WorkerRoutine,
+ WORK_QUEUE_TYPE QueueType,
+ PVOID Context
+ );
+
+#line 35793 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoWMIRegistrationControl(
+ PDEVICE_OBJECT DeviceObject,
+ ULONG Action
+);
+#line 35804 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoWMIAllocateInstanceIds(
+ LPCGUID Guid,
+ ULONG InstanceCount,
+ ULONG *FirstInstanceId
+ );
+#line 35832 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoWMISuggestInstanceName(
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ PUNICODE_STRING SymbolicLinkName,
+ BOOLEAN CombineNames,
+ PUNICODE_STRING SuggestedInstanceName
+ );
+#line 35843 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoWMIWriteEvent(
+ PVOID WnodeEventItem
+ );
+#line 35854 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+ULONG
+IoWMIDeviceObjectToProviderId(
+ PDEVICE_OBJECT DeviceObject
+ );
+
+
+#line 35864 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoWMIOpenBlock (
+ LPCGUID Guid,
+ ULONG DesiredAccess,
+ PVOID *DataBlockObject
+ );
+#line 35874 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoWMIQueryAllData (
+ PVOID DataBlockObject,
+ PULONG InOutBufferSize,
+ PVOID OutBuffer
+ );
+#line 35884 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoWMIQueryAllDataMultiple (
+ PVOID *DataBlockObjectList,
+ ULONG ObjectCount,
+ PULONG InOutBufferSize,
+ PVOID OutBuffer
+ );
+#line 35895 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoWMIQuerySingleInstance (
+ PVOID DataBlockObject,
+ PUNICODE_STRING InstanceName,
+ PULONG InOutBufferSize,
+ PVOID OutBuffer
+ );
+#line 35906 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoWMIQuerySingleInstanceMultiple (
+ PVOID *DataBlockObjectList,
+ PUNICODE_STRING InstanceNames,
+ ULONG ObjectCount,
+ PULONG InOutBufferSize,
+ PVOID OutBuffer
+ );
+#line 35918 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoWMISetSingleInstance(
+ PVOID DataBlockObject,
+ PUNICODE_STRING InstanceName,
+ ULONG Version,
+ ULONG ValueBufferSize,
+ PVOID ValueBuffer
+ );
+#line 35930 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoWMISetSingleItem(
+ PVOID DataBlockObject,
+ PUNICODE_STRING InstanceName,
+ ULONG DataItemId,
+ ULONG Version,
+ ULONG ValueBufferSize,
+ PVOID ValueBuffer
+ );
+#line 35943 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoWMIExecuteMethod(
+ PVOID DataBlockObject,
+ PUNICODE_STRING InstanceName,
+ ULONG MethodId,
+ ULONG InBufferSize,
+ PULONG OutBufferSize,
+ PUCHAR InOutBuffer
+ );
+#line 35956 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef
+
+
+void FWMI_NOTIFICATION_CALLBACK (
+ PVOID Wnode,
+ PVOID Context
+ );
+typedef FWMI_NOTIFICATION_CALLBACK *WMI_NOTIFICATION_CALLBACK;
+
+
+__declspec(dllimport)
+NTSTATUS
+IoWMISetNotificationCallback(
+ PVOID Object,
+ WMI_NOTIFICATION_CALLBACK Callback,
+ PVOID Context
+ );
+#line 35975 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoWMIHandleToInstanceName(
+ PVOID DataBlockObject,
+ HANDLE FileHandle,
+ PUNICODE_STRING InstanceName
+ );
+#line 35985 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoWMIDeviceObjectToInstanceName(
+ PVOID DataBlockObject,
+ PDEVICE_OBJECT DeviceObject,
+ PUNICODE_STRING InstanceName
+ );
+#line 35995 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+IoIs32bitProcess(
+ PIRP Irp
+ );
+
+
+
+__declspec(dllimport)
+BOOLEAN
+IoIsInitiator32bitProcess(
+ PIRP Irp
+ );
+#line 36012 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+IoFreeErrorLogEntry(
+ PVOID ElEntry
+ );
+#line 36021 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _IO_CSQ IO_CSQ, *PIO_CSQ;
+
+
+
+
+
+
+
+
+
+
+typedef struct _IO_CSQ_IRP_CONTEXT {
+ ULONG Type;
+ PIRP Irp;
+ PIO_CSQ Csq;
+} IO_CSQ_IRP_CONTEXT, *PIO_CSQ_IRP_CONTEXT;
+
+
+
+
+
+typedef void
+IO_CSQ_INSERT_IRP (
+ struct _IO_CSQ *Csq,
+ PIRP Irp
+ );
+
+typedef IO_CSQ_INSERT_IRP *PIO_CSQ_INSERT_IRP;
+
+typedef NTSTATUS
+IO_CSQ_INSERT_IRP_EX (
+ struct _IO_CSQ *Csq,
+ PIRP Irp,
+ PVOID InsertContext
+ );
+
+typedef IO_CSQ_INSERT_IRP_EX *PIO_CSQ_INSERT_IRP_EX;
+
+typedef void
+IO_CSQ_REMOVE_IRP (
+ PIO_CSQ Csq,
+ PIRP Irp
+ );
+
+typedef IO_CSQ_REMOVE_IRP *PIO_CSQ_REMOVE_IRP;
+
+
+
+
+
+
+
+
+
+typedef PIRP
+IO_CSQ_PEEK_NEXT_IRP (
+ PIO_CSQ Csq,
+ PIRP Irp,
+ PVOID PeekContext
+ );
+
+typedef IO_CSQ_PEEK_NEXT_IRP *PIO_CSQ_PEEK_NEXT_IRP;
+
+
+
+
+
+typedef void
+IO_CSQ_ACQUIRE_LOCK (
+ PIO_CSQ Csq,
+ PKIRQL Irql
+ );
+
+typedef IO_CSQ_ACQUIRE_LOCK *PIO_CSQ_ACQUIRE_LOCK;
+
+typedef void
+IO_CSQ_RELEASE_LOCK (
+ PIO_CSQ Csq,
+ KIRQL Irql
+ );
+
+typedef IO_CSQ_RELEASE_LOCK *PIO_CSQ_RELEASE_LOCK;
+
+
+
+
+
+
+typedef void
+IO_CSQ_COMPLETE_CANCELED_IRP (
+ PIO_CSQ Csq,
+ PIRP Irp
+ );
+
+typedef IO_CSQ_COMPLETE_CANCELED_IRP *PIO_CSQ_COMPLETE_CANCELED_IRP;
+
+
+
+
+
+
+
+
+typedef struct _IO_CSQ {
+ ULONG Type;
+ PIO_CSQ_INSERT_IRP CsqInsertIrp;
+ PIO_CSQ_REMOVE_IRP CsqRemoveIrp;
+ PIO_CSQ_PEEK_NEXT_IRP CsqPeekNextIrp;
+ PIO_CSQ_ACQUIRE_LOCK CsqAcquireLock;
+ PIO_CSQ_RELEASE_LOCK CsqReleaseLock;
+ PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp;
+ PVOID ReservePointer;
+} IO_CSQ, *PIO_CSQ;
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoCsqInitialize(
+ PIO_CSQ Csq,
+ PIO_CSQ_INSERT_IRP CsqInsertIrp,
+ PIO_CSQ_REMOVE_IRP CsqRemoveIrp,
+ PIO_CSQ_PEEK_NEXT_IRP CsqPeekNextIrp,
+ PIO_CSQ_ACQUIRE_LOCK CsqAcquireLock,
+ PIO_CSQ_RELEASE_LOCK CsqReleaseLock,
+ PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp
+ );
+#line 36198 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoCsqInitializeEx(
+ PIO_CSQ Csq,
+ PIO_CSQ_INSERT_IRP_EX CsqInsertIrp,
+ PIO_CSQ_REMOVE_IRP CsqRemoveIrp,
+ PIO_CSQ_PEEK_NEXT_IRP CsqPeekNextIrp,
+ PIO_CSQ_ACQUIRE_LOCK CsqAcquireLock,
+ PIO_CSQ_RELEASE_LOCK CsqReleaseLock,
+ PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp
+ );
+#line 36212 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+void
+IoCsqInsertIrp(
+ PIO_CSQ Csq,
+ PIRP Irp,
+ PIO_CSQ_IRP_CONTEXT Context
+ );
+#line 36226 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoCsqInsertIrpEx(
+ PIO_CSQ Csq,
+ PIRP Irp,
+ PIO_CSQ_IRP_CONTEXT Context,
+ PVOID InsertContext
+ );
+#line 36237 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+PIRP
+IoCsqRemoveNextIrp(
+ PIO_CSQ Csq,
+ PVOID PeekContext
+ );
+#line 36250 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PIRP
+IoCsqRemoveIrp(
+ PIO_CSQ Csq,
+ PIO_CSQ_IRP_CONTEXT Context
+ );
+#line 36265 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoValidateDeviceIoControlAccess(
+ PIRP Irp,
+ ULONG RequiredAccess
+ );
+#line 36277 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+IO_PRIORITY_HINT
+IoGetIoPriorityHint(
+ PIRP Irp
+ );
+#line 36285 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+NTSTATUS
+IoSetIoPriorityHint(
+ PIRP Irp,
+ IO_PRIORITY_HINT PriorityHint
+ );
+#line 36293 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+NTSTATUS
+IoAllocateSfioStreamIdentifier(
+ PFILE_OBJECT FileObject,
+ ULONG Length,
+ PVOID Signature,
+ PVOID *StreamIdentifier
+ );
+#line 36303 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+PVOID
+IoGetSfioStreamIdentifier(
+ PFILE_OBJECT FileObject,
+ PVOID Signature
+ );
+#line 36311 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+NTSTATUS
+IoFreeSfioStreamIdentifier(
+ PFILE_OBJECT FileObject,
+ PVOID Signature
+ );
+#line 36319 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+NTSTATUS
+IoGetIoAttributionHandle (
+ PIRP Irp,
+ PVOID* IoAttributionHandle
+ );
+
+
+
+typedef struct _IO_ATTRIBUTION_INFORMATION {
+
+ ULONG Version;
+
+ union {
+ struct {
+ ULONG MajorCode : 8;
+ ULONG IoStart : 1;
+ ULONG QueueOnly : 1;
+ ULONG IoFailed : 1;
+ ULONG VirtualDevice : 1;
+ ULONG Spare : 20;
+ };
+
+ ULONG AllFlags;
+ } Flags;
+
+ ULONG Length;
+
+
+
+
+
+ ULONGLONG ServiceStartTime;
+ ULONGLONG CurrentTime;
+
+} IO_ATTRIBUTION_INFORMATION, *PIO_ATTRIBUTION_INFORMATION;
+
+NTSTATUS
+IoRecordIoAttribution (
+ PVOID OpaqueHandle,
+ IO_ATTRIBUTION_INFORMATION* AttributionInformation
+ );
+
+
+
+
+
+
+NTSTATUS
+IoSetIoAttributionIrp (
+ PIRP Irp,
+ PVOID AttributionSource,
+ ULONG Flags
+ );
+
+#line 36377 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef enum _IO_ACCESS_TYPE {
+
+
+
+
+
+ ReadAccess,
+
+
+
+
+
+ WriteAccess,
+
+
+
+
+
+ ModifyAccess
+
+} IO_ACCESS_TYPE;
+
+typedef enum _IO_ACCESS_MODE {
+
+
+
+
+
+ SequentialAccess,
+
+
+
+
+
+ RandomAccess
+
+} IO_ACCESS_MODE;
+
+typedef enum _IO_CONTAINER_NOTIFICATION_CLASS {
+ IoSessionStateNotification,
+ IoMaxContainerNotificationClass
+} IO_CONTAINER_NOTIFICATION_CLASS;
+
+typedef struct _IO_SESSION_STATE_NOTIFICATION {
+ ULONG Size;
+ ULONG Flags;
+ PVOID IoObject;
+ ULONG EventMask;
+ PVOID Context;
+} IO_SESSION_STATE_NOTIFICATION, *PIO_SESSION_STATE_NOTIFICATION;
+
+typedef enum _IO_CONTAINER_INFORMATION_CLASS {
+ IoSessionStateInformation,
+ IoMaxContainerInformationClass
+} IO_CONTAINER_INFORMATION_CLASS;
+
+typedef struct _IO_SESSION_STATE_INFORMATION {
+ ULONG SessionId;
+ IO_SESSION_STATE SessionState;
+ BOOLEAN LocalSession;
+} IO_SESSION_STATE_INFORMATION, *PIO_SESSION_STATE_INFORMATION;
+
+
+NTSTATUS
+IoGetContainerInformation (
+ IO_CONTAINER_INFORMATION_CLASS InformationClass,
+ PVOID ContainerObject,
+ PVOID Buffer,
+ ULONG BufferLength
+ );
+#line 36449 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+typedef NTSTATUS (*PIO_CONTAINER_NOTIFICATION_FUNCTION)(void);
+
+typedef
+NTSTATUS
+IO_SESSION_NOTIFICATION_FUNCTION (
+ PVOID SessionObject,
+ PVOID IoObject,
+ ULONG Event,
+ PVOID Context,
+ PVOID NotificationPayload,
+ ULONG PayloadLength
+ );
+
+typedef IO_SESSION_NOTIFICATION_FUNCTION *PIO_SESSION_NOTIFICATION_FUNCTION;
+#line 36467 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+NTSTATUS
+IoRegisterContainerNotification(
+ IO_CONTAINER_NOTIFICATION_CLASS NotificationClass,
+ PIO_CONTAINER_NOTIFICATION_FUNCTION CallbackFunction,
+ PVOID NotificationInformation,
+ ULONG NotificationInformationLength,
+ PVOID CallbackRegistration
+ );
+#line 36478 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+void
+IoUnregisterContainerNotification(
+ PVOID CallbackRegistration
+ );
+#line 36485 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoReserveKsrPersistentMemory (
+ PDRIVER_OBJECT DriverObject,
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ SIZE_T Size,
+ ULONG Flags,
+ PVOID * DataHandle
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoFreeKsrPersistentMemory (
+ PVOID DataHandle
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoQueryKsrPersistentMemorySize (
+ PDRIVER_OBJECT DriverObject,
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ PSIZE_T BufferSize
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoAcquireKsrPersistentMemory (
+ PDRIVER_OBJECT DriverObject,
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ PVOID Buffer,
+ PSIZE_T Size
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoWriteKsrPersistentMemory (
+ PVOID DataHandle,
+ PVOID Buffer,
+ SIZE_T Size
+ );
+
+#line 36541 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+typedef
+NTSTATUS
+(IO_PERSISTED_MEMORY_ENUMERATION_CALLBACK) (
+ PDRIVER_OBJECT DriverObject,
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ PUNICODE_STRING PhysicalDeviceId,
+ PUSHORT DataTag,
+ PULONG DataVersion,
+ PVOID Context
+ );
+
+typedef IO_PERSISTED_MEMORY_ENUMERATION_CALLBACK*
+ PIO_PERSISTED_MEMORY_ENUMERATION_CALLBACK;
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoEnumerateKsrPersistentMemoryEx (
+ PDRIVER_OBJECT DriverObject,
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ PUNICODE_STRING PhysicalDeviceId,
+ PIO_PERSISTED_MEMORY_ENUMERATION_CALLBACK Callback,
+ PVOID CallbackContext
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoReserveKsrPersistentMemoryEx (
+ PDRIVER_OBJECT DriverObject,
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ PUNICODE_STRING PhysicalDeviceId,
+ PUSHORT DataTag,
+ ULONG DataVersion,
+ SIZE_T Size,
+ ULONG Flags,
+ PVOID * DataHandle
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoQueryKsrPersistentMemorySizeEx (
+ PDRIVER_OBJECT DriverObject,
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ PUNICODE_STRING PhysicalDeviceId,
+ PUSHORT DataTag,
+ PULONG DataVersion,
+ PSIZE_T BufferSize
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoAcquireKsrPersistentMemoryEx (
+ PDRIVER_OBJECT DriverObject,
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ PUNICODE_STRING PhysicalDeviceId,
+ PUSHORT DataTag,
+ PULONG DataVersion,
+ PVOID Buffer,
+ PSIZE_T Size
+ );
+
+#line 36613 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoGetKsrPersistentMemoryBuffer (
+ PVOID DataHandle,
+ PVOID *BufferPtr,
+ PSIZE_T BufferSize
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoMapKsrPersistentMemoryEx (
+ PDRIVER_OBJECT DriverObject,
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ PUNICODE_STRING PhysicalDeviceId,
+ PUSHORT DataTag,
+ PULONG DataVersion,
+ PVOID * DataHandle
+ );
+
+#line 36640 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+typedef union _DRIVER_PROXY_FEATURE_FLAGS {
+ ULONG AsUlong;
+ struct {
+ ULONG Enabled : 1;
+ ULONG Reserved : 31;
+ };
+} DRIVER_PROXY_FEATURE_FLAGS, *PDRIVER_PROXY_FEATURE_FLAGS;
+
+typedef char __C_ASSERT__[(sizeof(DRIVER_PROXY_FEATURE_FLAGS) == sizeof(ULONG))?1:-1];
+
+typedef union _DRIVER_PROXY_EXTENSION_CREATION_FLAGS {
+ ULONG AsUlong;
+ struct {
+ ULONG ReservedZero : 32;
+ };
+} DRIVER_PROXY_EXTENSION_CREATION_FLAGS,
+ *PDRIVER_PROXY_EXTENSION_CREATION_FLAGS;
+
+typedef
+
+void
+DRIVER_PROXY_ENDPOINT_FUNCTION (
+ void
+ );
+
+typedef DRIVER_PROXY_ENDPOINT_FUNCTION *PDRIVER_PROXY_ENDPOINT_FUNCTION,
+ *PDRIVER_PROXY_WRAPPED_ENDPOINT_FUNCTION;
+
+typedef ULONG DRIVER_PROXY_ENDPOINT_FUNCTION_ID,
+ *PDRIVER_PROXY_ENDPOINT_FUNCTION_ID;
+
+
+
+typedef struct _DRIVER_PROXY_ENDPOINT_INFORMATION {
+ DRIVER_PROXY_ENDPOINT_FUNCTION_ID Id;
+ PDRIVER_PROXY_ENDPOINT_FUNCTION EndpointFunction;
+ ULONG ParameterCount;
+} DRIVER_PROXY_ENDPOINT_INFORMATION, *PDRIVER_PROXY_ENDPOINT_INFORMATION;
+
+typedef enum _DRIVER_PROXY_REGISTER_CALLBACK_PHASE {
+ DriverProxyRegisterCallbackPreProcess,
+ DriverProxyRegisterCallbackProxyStalled,
+ DriverProxyRegisterCallbackPostProcess,
+ DriverProxyRegisterCallbackMax
+} DRIVER_PROXY_REGISTER_CALLBACK_PHASE, *PDRIVER_PROXY_REGISTER_CALLBACK_PHASE;
+
+typedef
+
+NTSTATUS
+DRIVER_PROXY_REGISTER_CALLBACK (
+ DRIVER_PROXY_REGISTER_CALLBACK_PHASE Phase,
+ PVOID Context
+ );
+
+typedef DRIVER_PROXY_REGISTER_CALLBACK *PDRIVER_PROXY_REGISTER_CALLBACK;
+
+typedef
+
+
+BOOLEAN
+DRIVER_PROXY_HOTSWAP_WORKER_ROUTINE (
+ PVOID WorkerContext,
+ NTSTATUS WaitStatus
+ );
+
+typedef DRIVER_PROXY_HOTSWAP_WORKER_ROUTINE *PDRIVER_PROXY_HOTSWAP_WORKER_ROUTINE;
+
+typedef struct _DRIVER_PROXY_HOTSWAP_WORKER_ROUTINE_START_CONTEXT {
+ PDRIVER_PROXY_HOTSWAP_WORKER_ROUTINE WorkerRoutine;
+ PVOID Context;
+ WAIT_TYPE WaitType;
+ KWAIT_REASON WaitReason;
+ KPROCESSOR_MODE WaitMode;
+ BOOLEAN Altertable;
+ BOOLEAN HasTimeout;
+ LARGE_INTEGER Timeout;
+ ULONG EventCount;
+ PKEVENT Events[1];
+} DRIVER_PROXY_HOTSWAP_WORKER_ROUTINE_START_CONTEXT, *PDRIVER_PROXY_HOTSWAP_WORKER_ROUTINE_START_CONTEXT;
+
+__declspec(dllimport)
+void
+IoGetDriverProxyFeatures (
+ PDRIVER_OBJECT DriverObject,
+ PDRIVER_PROXY_FEATURE_FLAGS Flags
+ );
+
+__declspec(dllimport)
+NTSTATUS
+IoCreateDriverProxyExtension (
+ PDRIVER_OBJECT OwningDriverObject,
+ DRIVER_PROXY_EXTENSION_CREATION_FLAGS Flags,
+ PDRIVER_PROXY_EXTENSION *DriverProxyExtension
+ );
+
+__declspec(dllimport)
+PDRIVER_PROXY_EXTENSION
+IoGetDriverProxyExtensionFromDriverObject (
+ PDRIVER_OBJECT DriverObject
+ );
+
+__declspec(dllimport)
+NTSTATUS
+IoRegisterDriverProxyEndpoints (
+ PDRIVER_PROXY_EXTENSION DriverProxyExtension,
+ PDRIVER_PROXY_ENDPOINT_INFORMATION EndpointInfo,
+ ULONG Count,
+ PDRIVER_PROXY_REGISTER_CALLBACK PhasedCallback,
+ PVOID Context
+ );
+
+
+
+#line 36758 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+__declspec(dllimport)
+PDRIVER_PROXY_WRAPPED_ENDPOINT_FUNCTION
+IoGetDriverProxyEndpointWrapper (
+ PDRIVER_PROXY_EXTENSION DriverProxyExtension,
+ DRIVER_PROXY_ENDPOINT_FUNCTION_ID FunctionId
+ );
+
+__declspec(dllimport)
+NTSTATUS
+IofGetDriverProxyWrapperFromEndpoint (
+ PDRIVER_PROXY_EXTENSION DriverProxyExtension,
+ PDRIVER_PROXY_ENDPOINT_FUNCTION Endpoint,
+ PDRIVER_PROXY_WRAPPED_ENDPOINT_FUNCTION *Wrapper
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoDriverProxyCreateHotSwappableWorkerThread(
+ PDRIVER_PROXY_EXTENSION DriverProxyExtension,
+ PHANDLE ThreadHandle,
+ ULONG DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ HANDLE ProcessHandle,
+ PCLIENT_ID ClientId,
+ PDRIVER_PROXY_HOTSWAP_WORKER_ROUTINE_START_CONTEXT WorkerStartContext
+ );
+
+#line 36797 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef ULONG64 TRACEHANDLE, *PTRACEHANDLE;
+#line 36812 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _ETW_TRACE_SESSION_SETTINGS {
+ ULONG Version;
+ ULONG BufferSize;
+ ULONG MinimumBuffers;
+ ULONG MaximumBuffers;
+ ULONG LoggerMode;
+ ULONG FlushTimer;
+ ULONG FlushThreshold;
+ ULONG ClockType;
+} ETW_TRACE_SESSION_SETTINGS, *PETW_TRACE_SESSION_SETTINGS;
+
+typedef enum _TRACE_INFORMATION_CLASS {
+ TraceIdClass,
+ TraceHandleClass,
+ TraceEnableFlagsClass,
+ TraceEnableLevelClass,
+ GlobalLoggerHandleClass,
+ EventLoggerHandleClass,
+ AllLoggerHandlesClass,
+ TraceHandleByNameClass,
+ LoggerEventsLostClass,
+ TraceSessionSettingsClass,
+ LoggerEventsLoggedClass,
+ DiskIoNotifyRoutinesClass,
+ TraceInformationClassReserved1,
+ FltIoNotifyRoutinesClass,
+ TraceInformationClassReserved2,
+ WdfNotifyRoutinesClass,
+ MaxTraceInformationClass
+} TRACE_INFORMATION_CLASS;
+
+
+__declspec(dllimport)
+
+NTSTATUS
+WmiQueryTraceInformation (
+ TRACE_INFORMATION_CLASS TraceInformationClass,
+ PVOID TraceInformation,
+ ULONG TraceInformationLength,
+ PULONG RequiredLength,
+ PVOID Buffer
+ );
+#line 36892 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+#line 36895 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+#line 36899 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\evntprov.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4820)
+#line 29 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\evntprov.h"
+
+
+
+
+
+#line 35 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\evntprov.h"
+
+
+
+
+
+
+
+#line 43 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\evntprov.h"
+#line 44 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\evntprov.h"
+#line 45 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\evntprov.h"
+
+
+
+
+
+
+
+
+#line 54 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\evntprov.h"
+#line 55 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\evntprov.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef ULONGLONG REGHANDLE, *PREGHANDLE;
+
+#pragma warning(push)
+#pragma warning(disable:4201)
+
+
+
+
+typedef struct _EVENT_DATA_DESCRIPTOR {
+
+ ULONGLONG Ptr;
+ ULONG Size;
+ union {
+ ULONG Reserved;
+ struct {
+ UCHAR Type;
+ UCHAR Reserved1;
+ USHORT Reserved2;
+ } ;
+ } ;
+
+} EVENT_DATA_DESCRIPTOR, *PEVENT_DATA_DESCRIPTOR;
+
+#pragma warning(pop)
+
+
+
+
+
+
+
+
+
+
+typedef struct _EVENT_DESCRIPTOR {
+
+ USHORT Id;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UCHAR Version;
+
+
+
+
+
+ UCHAR Channel;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UCHAR Level;
+
+
+
+
+
+
+
+
+
+
+ UCHAR Opcode;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ USHORT Task;
+
+
+
+
+
+
+ ULONGLONG Keyword;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+} EVENT_DESCRIPTOR, *PEVENT_DESCRIPTOR;
+
+typedef const EVENT_DESCRIPTOR *PCEVENT_DESCRIPTOR;
+
+#line 324 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\evntprov.h"
+
+
+
+
+typedef struct _EVENT_FILTER_DESCRIPTOR {
+
+ ULONGLONG Ptr;
+ ULONG Size;
+ ULONG Type;
+
+} EVENT_FILTER_DESCRIPTOR, *PEVENT_FILTER_DESCRIPTOR;
+
+
+
+
+
+typedef struct _EVENT_FILTER_HEADER {
+
+ USHORT Id;
+ UCHAR Version;
+ UCHAR Reserved[5];
+ ULONGLONG InstanceId;
+ ULONG Size;
+ ULONG NextOffset;
+
+} EVENT_FILTER_HEADER, *PEVENT_FILTER_HEADER;
+
+
+
+
+
+typedef struct _EVENT_FILTER_EVENT_ID {
+ BOOLEAN FilterIn;
+ UCHAR Reserved;
+ USHORT Count;
+ USHORT Events[1];
+} EVENT_FILTER_EVENT_ID, *PEVENT_FILTER_EVENT_ID;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _EVENT_FILTER_EVENT_NAME {
+ ULONGLONG MatchAnyKeyword;
+ ULONGLONG MatchAllKeyword;
+ UCHAR Level;
+ BOOLEAN FilterIn;
+ USHORT NameCount;
+ UCHAR Names[1];
+} EVENT_FILTER_EVENT_NAME, *PEVENT_FILTER_EVENT_NAME;
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _EVENT_FILTER_LEVEL_KW {
+ ULONGLONG MatchAnyKeyword;
+ ULONGLONG MatchAllKeyword;
+ UCHAR Level;
+ BOOLEAN FilterIn;
+} EVENT_FILTER_LEVEL_KW, *PEVENT_FILTER_LEVEL_KW;
+
+
+
+
+
+
+
+typedef enum _EVENT_INFO_CLASS {
+ EventProviderBinaryTrackInfo,
+
+
+
+
+
+ EventProviderSetReserved1,
+
+ EventProviderSetTraits,
+
+
+
+
+
+
+
+ EventProviderUseDescriptorType,
+
+
+
+ MaxEventInfo
+} EVENT_INFO_CLASS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 793 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\evntprov.h"
+
+#pragma region Application Family or OneCore Family or GameCore Family
+
+
+
+
+__forceinline
+void
+EventDataDescCreate(
+ PEVENT_DATA_DESCRIPTOR EventDataDescriptor,
+ const void* DataPtr,
+ ULONG DataSize
+ )
+{
+ EventDataDescriptor->Ptr = (ULONGLONG)(ULONG_PTR)DataPtr;
+ EventDataDescriptor->Size = DataSize;
+ EventDataDescriptor->Reserved = 0;
+ return;
+}
+
+#line 814 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\evntprov.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family or GameCore Family
+
+
+
+
+
+__forceinline
+void
+EventDescCreate(
+ PEVENT_DESCRIPTOR EventDescriptor,
+ USHORT Id,
+ UCHAR Version,
+ UCHAR Channel,
+ UCHAR Level,
+ USHORT Task,
+ UCHAR Opcode,
+ ULONGLONG Keyword
+ )
+{
+ EventDescriptor->Id = Id;
+ EventDescriptor->Version = Version;
+ EventDescriptor->Channel = Channel;
+ EventDescriptor->Level = Level;
+ EventDescriptor->Task = Task;
+ EventDescriptor->Opcode = Opcode;
+ EventDescriptor->Keyword = Keyword;
+ return;
+}
+
+
+
+
+__forceinline
+void
+EventDescZero(
+ PEVENT_DESCRIPTOR EventDescriptor
+ )
+{
+ memset(EventDescriptor, 0, sizeof(EVENT_DESCRIPTOR));
+ return;
+}
+
+
+
+
+
+__forceinline
+USHORT
+EventDescGetId(
+ PCEVENT_DESCRIPTOR EventDescriptor
+ )
+{
+ return (EventDescriptor->Id);
+}
+
+__forceinline
+UCHAR
+EventDescGetVersion(
+ PCEVENT_DESCRIPTOR EventDescriptor
+ )
+{
+ return (EventDescriptor->Version);
+}
+
+__forceinline
+USHORT
+EventDescGetTask(
+ PCEVENT_DESCRIPTOR EventDescriptor
+ )
+{
+ return (EventDescriptor->Task);
+}
+
+__forceinline
+UCHAR
+EventDescGetOpcode(
+ PCEVENT_DESCRIPTOR EventDescriptor
+ )
+{
+ return (EventDescriptor->Opcode);
+}
+
+__forceinline
+UCHAR
+EventDescGetChannel(
+ PCEVENT_DESCRIPTOR EventDescriptor
+ )
+{
+ return (EventDescriptor->Channel);
+}
+
+__forceinline
+UCHAR
+EventDescGetLevel(
+ PCEVENT_DESCRIPTOR EventDescriptor
+ )
+{
+ return (EventDescriptor->Level);
+}
+
+__forceinline
+ULONGLONG
+EventDescGetKeyword(
+ PCEVENT_DESCRIPTOR EventDescriptor
+ )
+{
+ return (EventDescriptor->Keyword);
+}
+
+
+
+
+
+__forceinline
+PEVENT_DESCRIPTOR
+EventDescSetId(
+ PEVENT_DESCRIPTOR EventDescriptor,
+ USHORT Id
+ )
+{
+ EventDescriptor->Id = Id;
+ return (EventDescriptor);
+}
+
+__forceinline
+PEVENT_DESCRIPTOR
+EventDescSetVersion(
+ PEVENT_DESCRIPTOR EventDescriptor,
+ UCHAR Version
+ )
+{
+ EventDescriptor->Version = Version;
+ return (EventDescriptor);
+}
+
+__forceinline
+PEVENT_DESCRIPTOR
+EventDescSetTask(
+ PEVENT_DESCRIPTOR EventDescriptor,
+ USHORT Task
+ )
+{
+ EventDescriptor->Task = Task;
+ return (EventDescriptor);
+}
+
+__forceinline
+PEVENT_DESCRIPTOR
+EventDescSetOpcode(
+ PEVENT_DESCRIPTOR EventDescriptor,
+ UCHAR Opcode
+ )
+{
+ EventDescriptor->Opcode = Opcode;
+ return (EventDescriptor);
+}
+
+__forceinline
+PEVENT_DESCRIPTOR
+EventDescSetLevel(
+ PEVENT_DESCRIPTOR EventDescriptor,
+ UCHAR Level
+ )
+{
+ EventDescriptor->Level = Level;
+ return (EventDescriptor);
+}
+
+__forceinline
+PEVENT_DESCRIPTOR
+EventDescSetChannel(
+ PEVENT_DESCRIPTOR EventDescriptor,
+ UCHAR Channel
+ )
+{
+ EventDescriptor->Channel = Channel;
+ return (EventDescriptor);
+}
+
+__forceinline
+PEVENT_DESCRIPTOR
+EventDescSetKeyword(
+ PEVENT_DESCRIPTOR EventDescriptor,
+ ULONGLONG Keyword
+ )
+{
+ EventDescriptor->Keyword = Keyword;
+ return (EventDescriptor);
+}
+
+
+__forceinline
+PEVENT_DESCRIPTOR
+EventDescOrKeyword(
+ PEVENT_DESCRIPTOR EventDescriptor,
+ ULONGLONG Keyword
+ )
+{
+ EventDescriptor->Keyword |= Keyword;
+ return (EventDescriptor);
+}
+
+#line 1019 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\evntprov.h"
+#pragma endregion
+
+
+
+#line 1024 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\evntprov.h"
+
+
+
+
+
+
+#pragma warning(pop)
+#line 1032 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\evntprov.h"
+
+#line 1034 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\evntprov.h"
+
+#pragma external_header(pop)
+#line 36901 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+typedef
+
+
+void
+__stdcall
+ETWENABLECALLBACK (
+ LPCGUID SourceId,
+ ULONG ControlCode,
+ UCHAR Level,
+ ULONGLONG MatchAnyKeyword,
+ ULONGLONG MatchAllKeyword,
+ PEVENT_FILTER_DESCRIPTOR FilterData,
+ PVOID CallbackContext
+ );
+
+typedef ETWENABLECALLBACK *PETWENABLECALLBACK;
+
+
+
+
+
+
+__declspec(dllimport)
+
+NTSTATUS
+EtwRegister (
+ LPCGUID ProviderId,
+ PETWENABLECALLBACK EnableCallback,
+ PVOID CallbackContext,
+ PREGHANDLE RegHandle
+ );
+#line 36939 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+
+NTSTATUS
+EtwUnregister (
+ REGHANDLE RegHandle
+ );
+#line 36948 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+
+NTSTATUS
+EtwSetInformation(
+ REGHANDLE RegHandle,
+ EVENT_INFO_CLASS InformationClass,
+ PVOID EventInformation,
+ ULONG InformationLength
+ );
+#line 36960 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+
+BOOLEAN
+EtwEventEnabled (
+ REGHANDLE RegHandle,
+ PCEVENT_DESCRIPTOR EventDescriptor
+ );
+#line 36974 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+
+BOOLEAN
+EtwProviderEnabled (
+ REGHANDLE RegHandle,
+ UCHAR Level,
+ ULONGLONG Keyword
+ );
+#line 36985 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+
+
+
+
+
+NTSTATUS
+EtwActivityIdControl (
+ ULONG ControlCode,
+ LPGUID ActivityId
+ );
+#line 36999 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+
+NTSTATUS
+EtwWrite (
+ REGHANDLE RegHandle,
+ PCEVENT_DESCRIPTOR EventDescriptor,
+ LPCGUID ActivityId,
+ ULONG UserDataCount,
+ PEVENT_DATA_DESCRIPTOR UserData
+ );
+#line 37016 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+
+NTSTATUS
+EtwWriteTransfer (
+ REGHANDLE RegHandle,
+ PCEVENT_DESCRIPTOR EventDescriptor,
+ LPCGUID ActivityId,
+ LPCGUID RelatedActivityId,
+ ULONG UserDataCount,
+ PEVENT_DATA_DESCRIPTOR UserData
+ );
+#line 37030 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+
+NTSTATUS
+EtwWriteString (
+ REGHANDLE RegHandle,
+ UCHAR Level,
+ ULONGLONG Keyword,
+ LPCGUID ActivityId,
+ PCWSTR String
+ );
+#line 37043 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+
+NTSTATUS
+EtwWriteEx (
+ REGHANDLE RegHandle,
+ PCEVENT_DESCRIPTOR EventDescriptor,
+ ULONG64 Filter,
+ ULONG Flags,
+ LPCGUID ActivityId,
+ LPCGUID RelatedActivityId,
+ ULONG UserDataCount,
+ PEVENT_DATA_DESCRIPTOR UserData
+ );
+#line 37059 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+
+NTSTATUS
+SeEtwWriteKMCveEvent (
+ PCUNICODE_STRING CveId,
+ PCUNICODE_STRING AdditionalDetails
+ );
+#line 37069 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 37085 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef enum {
+ DevicePropertyDeviceDescription = 0x0 | 0,
+ DevicePropertyHardwareID = 0x1 | 0,
+ DevicePropertyCompatibleIDs = 0x2 | 0,
+ DevicePropertyBootConfiguration = 0x3,
+ DevicePropertyBootConfigurationTranslated = 0x4,
+ DevicePropertyClassName = 0x5 | 0,
+ DevicePropertyClassGuid = 0x6 | 0,
+ DevicePropertyDriverKeyName = 0x7 | 0,
+ DevicePropertyManufacturer = 0x8 | 0,
+ DevicePropertyFriendlyName = 0x9 | 0,
+ DevicePropertyLocationInformation = 0xa | 0,
+ DevicePropertyPhysicalDeviceObjectName = 0xb | 0,
+ DevicePropertyBusTypeGuid = 0xc | 0,
+ DevicePropertyLegacyBusType = 0xd,
+ DevicePropertyBusNumber = 0xe,
+ DevicePropertyEnumeratorName = 0xf | 0,
+ DevicePropertyAddress = 0x10,
+ DevicePropertyUINumber = 0x11,
+ DevicePropertyInstallState = 0x12,
+ DevicePropertyRemovalPolicy = 0x13,
+ DevicePropertyResourceRequirements = 0x14,
+ DevicePropertyAllocatedResources = 0x15,
+ DevicePropertyContainerID = 0x16 | 0
+} DEVICE_REGISTRY_PROPERTY;
+
+
+
+typedef
+
+
+
+BOOLEAN TRANSLATE_BUS_ADDRESS(
+ PVOID Context,
+ PHYSICAL_ADDRESS BusAddress,
+ ULONG Length,
+ PULONG AddressSpace,
+ PPHYSICAL_ADDRESS TranslatedAddress
+ );
+typedef TRANSLATE_BUS_ADDRESS *PTRANSLATE_BUS_ADDRESS;
+
+typedef
+
+
+struct _DMA_ADAPTER *GET_DMA_ADAPTER(
+ PVOID Context,
+ struct _DEVICE_DESCRIPTION *DeviceDescriptor,
+ PULONG NumberOfMapRegisters
+ );
+typedef GET_DMA_ADAPTER *PGET_DMA_ADAPTER;
+
+typedef
+
+
+ULONG GET_SET_DEVICE_DATA (
+ PVOID Context,
+ ULONG DataType,
+ PVOID Buffer,
+ ULONG Offset,
+ ULONG Length
+ );
+typedef GET_SET_DEVICE_DATA *PGET_SET_DEVICE_DATA;
+
+typedef enum _DEVICE_INSTALL_STATE {
+ InstallStateInstalled,
+ InstallStateNeedsReinstall,
+ InstallStateFailedInstall,
+ InstallStateFinishInstall
+} DEVICE_INSTALL_STATE, *PDEVICE_INSTALL_STATE;
+
+
+
+
+
+
+
+
+typedef struct _PNP_BUS_INFORMATION {
+ GUID BusTypeGuid;
+ INTERFACE_TYPE LegacyBusType;
+ ULONG BusNumber;
+} PNP_BUS_INFORMATION, *PPNP_BUS_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _LEGACY_BUS_INFORMATION {
+ GUID BusTypeGuid;
+ INTERFACE_TYPE LegacyBusType;
+ ULONG BusNumber;
+} LEGACY_BUS_INFORMATION, *PLEGACY_BUS_INFORMATION;
+
+
+
+
+typedef enum _DEVICE_REMOVAL_POLICY {
+
+ RemovalPolicyExpectNoRemoval = 1,
+ RemovalPolicyExpectOrderlyRemoval = 2,
+ RemovalPolicyExpectSurpriseRemoval = 3
+
+} DEVICE_REMOVAL_POLICY, *PDEVICE_REMOVAL_POLICY;
+
+typedef struct _BUS_INTERFACE_STANDARD {
+
+
+
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+
+
+ PTRANSLATE_BUS_ADDRESS TranslateBusAddress;
+ PGET_DMA_ADAPTER GetDmaAdapter;
+ PGET_SET_DEVICE_DATA SetBusData;
+ PGET_SET_DEVICE_DATA GetBusData;
+
+} BUS_INTERFACE_STANDARD, *PBUS_INTERFACE_STANDARD;
+
+typedef
+
+
+
+ULONG GET_VIRTUAL_DEVICE_DATA (
+ PVOID Context,
+ USHORT VirtualFunction,
+ PVOID Buffer,
+ ULONG Offset,
+ ULONG Length
+ );
+typedef GET_VIRTUAL_DEVICE_DATA *PGET_VIRTUAL_DEVICE_DATA;
+
+typedef
+
+
+
+ULONG SET_VIRTUAL_DEVICE_DATA (
+ PVOID Context,
+ USHORT VirtualFunction,
+ PVOID Buffer,
+ ULONG Offset,
+ ULONG Length
+ );
+typedef SET_VIRTUAL_DEVICE_DATA *PSET_VIRTUAL_DEVICE_DATA;
+
+typedef
+
+
+
+NTSTATUS GET_VIRTUAL_DEVICE_LOCATION (
+ PVOID Context,
+ USHORT VirtualFunction,
+ PUINT16 SegmentNumber,
+ PUINT8 BusNumber,
+ PUINT8 FunctionNumber
+ );
+typedef GET_VIRTUAL_DEVICE_LOCATION *PGET_VIRTUAL_DEVICE_LOCATION;
+
+typedef
+
+
+
+void GET_VIRTUAL_DEVICE_RESOURCES (
+ PVOID Context,
+ PUINT8 CapturedBusNumbers
+ );
+typedef GET_VIRTUAL_DEVICE_RESOURCES *PGET_VIRTUAL_DEVICE_RESOURCES;
+
+typedef
+
+
+
+NTSTATUS ENABLE_VIRTUALIZATION (
+ PVOID Context,
+ UINT16 NumVFs,
+ BOOLEAN EnableVfMigration,
+ BOOLEAN EnableMigrationInterrupt,
+ BOOLEAN EnableVirtualization
+ );
+typedef ENABLE_VIRTUALIZATION *PENABLE_VIRTUALIZATION;
+
+
+typedef
+
+
+NTSTATUS
+GET_VIRTUAL_FUNCTION_PROBED_BARS(
+ PVOID Context,
+ PULONG BaseRegisterValues
+ ) ;
+typedef GET_VIRTUAL_FUNCTION_PROBED_BARS *PGET_VIRTUAL_FUNCTION_PROBED_BARS;
+
+
+typedef struct _PCI_VIRTUALIZATION_INTERFACE {
+
+
+
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+
+
+
+ PSET_VIRTUAL_DEVICE_DATA SetVirtualFunctionData;
+ PGET_VIRTUAL_DEVICE_DATA GetVirtualFunctionData;
+
+ PGET_VIRTUAL_DEVICE_LOCATION GetLocation;
+ PGET_VIRTUAL_DEVICE_RESOURCES GetResources;
+
+ PENABLE_VIRTUALIZATION EnableVirtualization;
+
+ PGET_VIRTUAL_FUNCTION_PROBED_BARS GetVirtualFunctionProbedBars;
+
+} PCI_VIRTUALIZATION_INTERFACE, *PPCI_VIRTUALIZATION_INTERFACE;
+
+
+
+
+
+
+
+typedef enum _PCI_ACS_BIT {
+
+ PciAcsReserved = 0,
+ PciAcsBitEnable,
+ PciAcsBitDisable,
+ PciAcsBitDontCare
+
+} PCI_ACS_BIT, *PPCI_ACS_BIT;
+
+typedef
+
+
+
+NTSTATUS PCI_SET_ACS (
+ PVOID Context,
+ PCI_ACS_BIT EnableSourceValidation,
+ PCI_ACS_BIT EnableTranslationBlocking,
+ PCI_ACS_BIT EnableP2PRequestRedirect,
+ PCI_ACS_BIT EnableCompletionRedirect,
+ PCI_ACS_BIT EnableUpstreamForwarding,
+ PCI_ACS_BIT EnableEgressControl,
+ PCI_ACS_BIT EnableDirectTranslatedP2P
+ );
+
+typedef PCI_SET_ACS *PPCI_SET_ACS;
+
+typedef struct _PCI_SECURITY_INTERFACE {
+
+
+
+
+
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+
+
+
+
+ PPCI_SET_ACS SetAccessControlServices;
+
+} PCI_SECURITY_INTERFACE, *PPCI_SECURITY_INTERFACE;
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+PCI_SET_ACS2 (
+ PVOID Context,
+ ULONG ScenariosToModify,
+ ULONG ScenarioState
+ );
+typedef PCI_SET_ACS2 *PPCI_SET_ACS2;
+
+typedef struct _PCI_SECURITY_INTERFACE2 {
+
+
+
+
+
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+
+
+
+
+ ULONG Flags;
+ ULONG SupportedScenarios;
+ PPCI_SET_ACS2 SetAccessControlServices;
+
+} PCI_SECURITY_INTERFACE2, *PPCI_SECURITY_INTERFACE2;
+
+
+
+
+
+
+
+
+typedef
+
+
+
+NTSTATUS PCI_SET_ATS (
+ PVOID Context,
+ BOOLEAN EnableAts
+ );
+
+typedef PCI_SET_ATS *PPCI_SET_ATS;
+
+typedef struct _PCI_ATS_INTERFACE {
+
+
+
+
+
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+
+
+
+
+ PPCI_SET_ATS SetAddressTranslationServices;
+
+ UCHAR InvalidateQueueDepth;
+} PCI_ATS_INTERFACE, *PPCI_ATS_INTERFACE;
+
+
+
+typedef
+void
+(*PREENUMERATE_SELF)(
+ PVOID Context
+ );
+
+typedef struct _REENUMERATE_SELF_INTERFACE_STANDARD {
+
+
+
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+
+
+ PREENUMERATE_SELF SurpriseRemoveAndReenumerateSelf;
+} REENUMERATE_SELF_INTERFACE_STANDARD, *PREENUMERATE_SELF_INTERFACE_STANDARD;
+
+
+
+
+
+typedef
+void
+(*PQUERYEXTENDEDADDRESS)(
+ PVOID Context,
+ PULONG64 ExtendedAddress
+ );
+
+typedef struct _PNP_EXTENDED_ADDRESS_INTERFACE {
+
+
+
+
+
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+
+
+
+
+ PQUERYEXTENDEDADDRESS QueryExtendedAddress;
+} PNP_EXTENDED_ADDRESS_INTERFACE, *PPNP_EXTENDED_ADDRESS_INTERFACE;
+
+
+
+
+
+
+
+
+
+typedef
+
+
+void
+SET_D3COLD_SUPPORT (
+ PVOID Context,
+ BOOLEAN D3ColdSupport
+ );
+
+typedef SET_D3COLD_SUPPORT *PSET_D3COLD_SUPPORT;
+
+typedef enum _DEVICE_WAKE_DEPTH {
+ DeviceWakeDepthNotWakeable = 0,
+ DeviceWakeDepthD0,
+ DeviceWakeDepthD1,
+ DeviceWakeDepthD2,
+ DeviceWakeDepthD3hot,
+ DeviceWakeDepthD3cold,
+ DeviceWakeDepthMaximum
+} DEVICE_WAKE_DEPTH, *PDEVICE_WAKE_DEPTH;
+
+__forceinline
+DEVICE_POWER_STATE
+MapWakeDepthToDstate(
+ DEVICE_WAKE_DEPTH WakeDepth
+ )
+{
+ const DEVICE_POWER_STATE dstateMap[DeviceWakeDepthMaximum] =
+ {
+ PowerDeviceD0,
+ PowerDeviceD0,
+ PowerDeviceD1,
+ PowerDeviceD2,
+ PowerDeviceD3,
+ PowerDeviceD3
+ };
+
+ if (WakeDepth < 0 || WakeDepth >= DeviceWakeDepthMaximum) {
+ return PowerDeviceUnspecified;
+ } else {
+ return dstateMap[WakeDepth];
+ }
+}
+
+typedef
+
+
+NTSTATUS
+GET_IDLE_WAKE_INFO (
+ PVOID Context,
+ SYSTEM_POWER_STATE SystemPowerState,
+ PDEVICE_WAKE_DEPTH DeepestWakeableDstate
+ );
+
+typedef GET_IDLE_WAKE_INFO *PGET_IDLE_WAKE_INFO;
+
+typedef
+
+
+NTSTATUS
+GET_D3COLD_CAPABILITY (
+ PVOID Context,
+ PBOOLEAN D3ColdSupported
+ );
+
+typedef GET_D3COLD_CAPABILITY *PGET_D3COLD_CAPABILITY;
+
+typedef enum _D3COLD_LAST_TRANSITION_STATUS {
+ LastDStateTransitionStatusUnknown = 0,
+ LastDStateTransitionD3hot,
+ LastDStateTransitionD3cold
+} D3COLD_LAST_TRANSITION_STATUS, *PD3COLD_LAST_TRANSITION_STATUS;
+
+typedef
+
+
+void
+GET_D3COLD_LAST_TRANSITION_STATUS (
+ PVOID Context,
+ PD3COLD_LAST_TRANSITION_STATUS LastTransitionStatus
+ );
+
+typedef GET_D3COLD_LAST_TRANSITION_STATUS *PGET_D3COLD_LAST_TRANSITION_STATUS;
+
+typedef struct _D3COLD_SUPPORT_INTERFACE {
+
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+ PSET_D3COLD_SUPPORT SetD3ColdSupport;
+ PGET_IDLE_WAKE_INFO GetIdleWakeInfo;
+ PGET_D3COLD_CAPABILITY GetD3ColdCapability;
+ PGET_D3COLD_CAPABILITY GetBusDriverD3ColdSupport;
+ PGET_D3COLD_LAST_TRANSITION_STATUS GetLastTransitionStatus;
+
+} D3COLD_SUPPORT_INTERFACE, *PD3COLD_SUPPORT_INTERFACE;
+
+typedef
+
+
+void
+D3COLD_REQUEST_CORE_POWER_RAIL (
+ PVOID Context,
+ BOOLEAN CorePowerRailNeeded
+ );
+
+typedef D3COLD_REQUEST_CORE_POWER_RAIL *PD3COLD_REQUEST_CORE_POWER_RAIL;
+
+typedef
+
+
+NTSTATUS
+D3COLD_REQUEST_AUX_POWER (
+ PVOID Context,
+ ULONG AuxPowerInMilliWatts,
+ PULONG RetryInSeconds
+ );
+
+typedef D3COLD_REQUEST_AUX_POWER *PD3COLD_REQUEST_AUX_POWER;
+
+typedef
+
+
+NTSTATUS
+D3COLD_REQUEST_PERST_DELAY (
+ PVOID Context,
+ ULONG DelayInMicroSeconds
+ );
+
+typedef D3COLD_REQUEST_PERST_DELAY *PD3COLD_REQUEST_PERST_DELAY;
+
+typedef struct _D3COLD_AUX_POWER_AND_TIMING_INTERFACE {
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+ PD3COLD_REQUEST_CORE_POWER_RAIL RequestCorePowerRail;
+ PD3COLD_REQUEST_AUX_POWER RequestAuxPower;
+ PD3COLD_REQUEST_PERST_DELAY RequestPerstDelay;
+} D3COLD_AUX_POWER_AND_TIMING_INTERFACE, *PD3COLD_AUX_POWER_AND_TIMING_INTERFACE;
+
+typedef
+
+
+void
+FPGA_BUS_SCAN (
+ PVOID Context
+ );
+
+typedef FPGA_BUS_SCAN *PFPGA_BUS_SCAN;
+
+typedef
+
+
+NTSTATUS
+FPGA_CONTROL_LINK (
+ PVOID Context,
+ BOOLEAN Enable
+ );
+
+typedef FPGA_CONTROL_LINK *PFPGA_CONTROL_LINK;
+
+typedef
+
+
+NTSTATUS
+FPGA_CONTROL_CONFIG_SPACE (
+ PVOID Context,
+ BOOLEAN Enable
+ );
+
+typedef FPGA_CONTROL_CONFIG_SPACE *PFPGA_CONTROL_CONFIG_SPACE;
+
+typedef
+
+
+NTSTATUS
+FPGA_CONTROL_ERROR_REPORTING (
+ PVOID Context,
+ ULONG UncorrectableMask,
+ ULONG CorrectableMask,
+ BOOLEAN DisableErrorReporting
+ );
+
+typedef FPGA_CONTROL_ERROR_REPORTING *PFPGA_CONTROL_ERROR_REPORTING;
+
+typedef struct _FPGA_CONTROL_INTERFACE {
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+ PFPGA_BUS_SCAN BusScan;
+ PFPGA_CONTROL_LINK ControlLink;
+ PFPGA_CONTROL_CONFIG_SPACE ControlConfigSpace;
+ PFPGA_CONTROL_ERROR_REPORTING ControlErrorReporting;
+} FPGA_CONTROL_INTERFACE, *PFPGA_CONTROL_INTERFACE;
+
+typedef
+
+
+NTSTATUS
+PTM_DEVICE_QUERY_GRANULARITY (
+ PVOID Context,
+ PUCHAR Granularity
+ );
+
+typedef PTM_DEVICE_QUERY_GRANULARITY *PPTM_DEVICE_QUERY_GRANULARITY;
+
+typedef
+
+
+NTSTATUS
+PTM_DEVICE_QUERY_TIME_SOURCE (
+ PVOID Context,
+ PULONG TimeSource
+ );
+
+typedef PTM_DEVICE_QUERY_TIME_SOURCE *PPTM_DEVICE_QUERY_TIME_SOURCE;
+
+typedef
+
+
+NTSTATUS
+PTM_DEVICE_ENABLE (
+ PVOID Context
+ );
+
+typedef PTM_DEVICE_ENABLE *PPTM_DEVICE_ENABLE;
+
+typedef
+
+
+NTSTATUS
+PTM_DEVICE_DISABLE (
+ PVOID Context
+ );
+
+typedef PTM_DEVICE_DISABLE *PPTM_DEVICE_DISABLE;
+
+typedef struct _PTM_CONTROL_INTERFACE {
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+ PPTM_DEVICE_QUERY_GRANULARITY QueryGranularity;
+ PPTM_DEVICE_QUERY_TIME_SOURCE QueryTimeSource;
+ PPTM_DEVICE_ENABLE Enable;
+ PPTM_DEVICE_DISABLE Disable;
+} PTM_CONTROL_INTERFACE, *PPTM_CONTROL_INTERFACE;
+
+
+
+typedef
+
+
+NTSTATUS
+GET_UPDATED_BUS_RESOURCE (
+ PVOID Context,
+ PCM_RESOURCE_LIST *UpdatedResourceList,
+ PCM_RESOURCE_LIST *UpdatedTranslatedResourceList
+ );
+
+typedef GET_UPDATED_BUS_RESOURCE *PGET_UPDATED_BUS_RESOURCE;
+
+typedef struct _BUS_RESOURCE_UPDATE_INTERFACE {
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+ PGET_UPDATED_BUS_RESOURCE GetUpdatedBusResource;
+} BUS_RESOURCE_UPDATE_INTERFACE, *PBUS_RESOURCE_UPDATE_INTERFACE;
+
+typedef enum _NPEM_CONTROL_STANDARD_CONTROL_BIT {
+ InitiateReset = 1,
+ OkControl,
+ LocateControl,
+ FailControl,
+ RebuildControl,
+ PFAControl,
+ HotSpareControl,
+ InACriticalArrayControl,
+ InAFailedArrayControl,
+ InvalidDeviceTypeControl,
+ DisabledControl,
+} NPEM_CONTROL_STANDARD_CONTROL_BIT, *PNPEM_CONTROL_STANDARD_CONTROL_BIT;
+
+typedef union _NPEM_CAPABILITY_STANDARD {
+ struct {
+ ULONG Capable:1;
+ ULONG ResetCapable:1;
+ ULONG OkCapable:1;
+ ULONG LocateCapable:1;
+ ULONG FailCapable:1;
+ ULONG RebuildCapable:1;
+ ULONG PFACapable:1;
+ ULONG HotSpareCapable:1;
+ ULONG InACriticalArrayCapable:1;
+ ULONG InAFailedArrayCapable:1;
+ ULONG InvalidDeviceTypeCapable:1;
+ ULONG DisabledCapable:1;
+ ULONG Rsvd:20;
+ } ;
+
+ ULONG AsULONG;
+} NPEM_CAPABILITY_STANDARD, *PNPEM_CAPABILITY_STANDARD;
+
+typedef
+
+
+NTSTATUS
+NPEM_CONTROL_ENABLE_DISABLE (
+ PVOID Context,
+ BOOLEAN EnableNpem
+ );
+
+typedef NPEM_CONTROL_ENABLE_DISABLE *PNPEM_CONTROL_ENABLE_DISABLE;
+
+typedef
+
+
+NTSTATUS
+NPEM_CONTROL_QUERY_STANDARD_CAPABILITIES (
+ PVOID Context,
+ PNPEM_CAPABILITY_STANDARD StandardCapabilities
+ );
+
+typedef NPEM_CONTROL_QUERY_STANDARD_CAPABILITIES *PNPEM_CONTROL_QUERY_STANDARD_CAPABILITIES;
+
+typedef
+
+
+NTSTATUS
+NPEM_CONTROL_SET_STANDARD_CONTROL (
+ PVOID Context,
+ NPEM_CONTROL_STANDARD_CONTROL_BIT StandardControl,
+ BOOLEAN Set
+ );
+
+typedef NPEM_CONTROL_SET_STANDARD_CONTROL *PNPEM_CONTROL_SET_STANDARD_CONTROL;
+
+typedef
+
+
+ULONG
+NPEM_CONTROL_QUERY_CONTROL (
+ PVOID Context
+ );
+
+typedef NPEM_CONTROL_QUERY_CONTROL *PNPEM_CONTROL_QUERY_CONTROL;
+
+
+
+
+
+
+
+typedef struct _NPEM_CONTROL_INTERFACE {
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+ PNPEM_CONTROL_ENABLE_DISABLE SetNpemSupportState;
+ PNPEM_CONTROL_QUERY_STANDARD_CAPABILITIES QueryStandardCapabilities;
+ PNPEM_CONTROL_SET_STANDARD_CONTROL SetStandardControl;
+ PNPEM_CONTROL_QUERY_CONTROL QueryNpemControl;
+} NPEM_CONTROL_INTERFACE, *PNPEM_CONTROL_INTERFACE;
+
+
+
+
+
+typedef BOOLEAN (* PGPE_SERVICE_ROUTINE) (
+ PVOID,
+ PVOID);
+
+typedef
+
+
+NTSTATUS (* PGPE_CONNECT_VECTOR) (
+ PDEVICE_OBJECT,
+ ULONG,
+ KINTERRUPT_MODE,
+ BOOLEAN,
+ PGPE_SERVICE_ROUTINE,
+ PVOID,
+ PVOID);
+
+typedef
+
+
+NTSTATUS (* PGPE_DISCONNECT_VECTOR) (
+ PVOID);
+
+typedef
+
+
+NTSTATUS (* PGPE_ENABLE_EVENT) (
+ PDEVICE_OBJECT,
+ PVOID);
+
+typedef
+
+
+NTSTATUS (* PGPE_DISABLE_EVENT) (
+ PDEVICE_OBJECT,
+ PVOID);
+
+typedef
+
+
+NTSTATUS (* PGPE_CLEAR_STATUS) (
+ PDEVICE_OBJECT,
+ PVOID);
+
+typedef
+void (* PDEVICE_NOTIFY_CALLBACK) (
+ PVOID,
+ ULONG);
+
+typedef
+
+
+NTSTATUS (* PREGISTER_FOR_DEVICE_NOTIFICATIONS) (
+ PDEVICE_OBJECT,
+ PDEVICE_NOTIFY_CALLBACK,
+ PVOID);
+
+typedef
+
+void (* PUNREGISTER_FOR_DEVICE_NOTIFICATIONS) (
+ PDEVICE_OBJECT,
+ PDEVICE_NOTIFY_CALLBACK);
+
+typedef struct _ACPI_INTERFACE_STANDARD {
+
+
+
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+
+
+ PGPE_CONNECT_VECTOR GpeConnectVector;
+ PGPE_DISCONNECT_VECTOR GpeDisconnectVector;
+ PGPE_ENABLE_EVENT GpeEnableEvent;
+ PGPE_DISABLE_EVENT GpeDisableEvent;
+ PGPE_CLEAR_STATUS GpeClearStatus;
+ PREGISTER_FOR_DEVICE_NOTIFICATIONS RegisterForDeviceNotifications;
+ PUNREGISTER_FOR_DEVICE_NOTIFICATIONS UnregisterForDeviceNotifications;
+
+} ACPI_INTERFACE_STANDARD, *PACPI_INTERFACE_STANDARD;
+
+
+
+
+
+
+
+typedef
+BOOLEAN
+(*PGPE_SERVICE_ROUTINE2) (
+ PVOID ObjectContext,
+ PVOID ServiceContext
+ );
+
+typedef
+
+
+NTSTATUS
+(*PGPE_CONNECT_VECTOR2) (
+ PVOID Context,
+ ULONG GpeNumber,
+ KINTERRUPT_MODE Mode,
+ BOOLEAN Shareable,
+ PGPE_SERVICE_ROUTINE ServiceRoutine,
+ PVOID ServiceContext,
+ PVOID *ObjectContext
+ );
+
+typedef
+
+
+NTSTATUS
+(*PGPE_DISCONNECT_VECTOR2) (
+ PVOID Context,
+ PVOID ObjectContext
+ );
+
+typedef
+
+
+NTSTATUS
+(*PGPE_ENABLE_EVENT2) (
+ PVOID Context,
+ PVOID ObjectContext
+ );
+
+typedef
+
+
+NTSTATUS
+(*PGPE_DISABLE_EVENT2) (
+ PVOID Context,
+ PVOID ObjectContext
+ );
+
+typedef
+
+
+NTSTATUS
+(*PGPE_CLEAR_STATUS2) (
+ PVOID Context,
+ PVOID ObjectContext
+ );
+
+typedef
+
+void
+(*PDEVICE_NOTIFY_CALLBACK2) (
+ PVOID NotificationContext,
+ ULONG NotifyCode
+ );
+
+typedef
+
+
+NTSTATUS
+(*PREGISTER_FOR_DEVICE_NOTIFICATIONS2) (
+ PVOID Context,
+ PDEVICE_NOTIFY_CALLBACK2 NotificationHandler,
+ PVOID NotificationContext
+ );
+
+typedef
+
+void
+(*PUNREGISTER_FOR_DEVICE_NOTIFICATIONS2) (
+ PVOID Context
+ );
+
+typedef struct {
+
+
+
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+
+
+ PGPE_CONNECT_VECTOR2 GpeConnectVector;
+ PGPE_DISCONNECT_VECTOR2 GpeDisconnectVector;
+ PGPE_ENABLE_EVENT2 GpeEnableEvent;
+ PGPE_DISABLE_EVENT2 GpeDisableEvent;
+ PGPE_CLEAR_STATUS2 GpeClearStatus;
+ PREGISTER_FOR_DEVICE_NOTIFICATIONS2 RegisterForDeviceNotifications;
+ PUNREGISTER_FOR_DEVICE_NOTIFICATIONS2 UnregisterForDeviceNotifications;
+
+} ACPI_INTERFACE_STANDARD2, *PACPI_INTERFACE_STANDARD2;
+
+
+
+
+__declspec(dllimport)
+void
+IoInvalidateDeviceRelations(
+ PDEVICE_OBJECT DeviceObject,
+ DEVICE_RELATION_TYPE Type
+ );
+#line 38098 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+IoRequestDeviceEject(
+ PDEVICE_OBJECT PhysicalDeviceObject
+ );
+#line 38107 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef void (*PIO_DEVICE_EJECT_CALLBACK)(
+ NTSTATUS Status,
+ PVOID Context
+ );
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoRequestDeviceEjectEx(
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ PIO_DEVICE_EJECT_CALLBACK Callback,
+ PVOID Context,
+ PDRIVER_OBJECT DriverObject
+ );
+#line 38125 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+#line 38133 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 38137 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+__declspec(dllimport)
+NTSTATUS
+IoGetDeviceProperty(
+ PDEVICE_OBJECT DeviceObject,
+ DEVICE_REGISTRY_PROPERTY DeviceProperty,
+ ULONG BufferLength,
+ PVOID PropertyBuffer,
+ PULONG ResultLength
+ );
+#line 38147 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoOpenDeviceRegistryKey(
+ PDEVICE_OBJECT DeviceObject,
+ ULONG DevInstKeyType,
+ ACCESS_MASK DesiredAccess,
+ PHANDLE DeviceRegKey
+ );
+#line 38171 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+IoRegisterDeviceInterface(
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ const GUID *InterfaceClassGuid,
+ PUNICODE_STRING ReferenceString,
+
+#line 38184 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+ PUNICODE_STRING SymbolicLinkName
+ );
+#line 38187 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoOpenDeviceInterfaceRegistryKey(
+ PUNICODE_STRING SymbolicLinkName,
+ ACCESS_MASK DesiredAccess,
+ PHANDLE DeviceInterfaceRegKey
+ );
+#line 38199 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoSetDeviceInterfaceState(
+ PUNICODE_STRING SymbolicLinkName,
+ BOOLEAN Enable
+ );
+#line 38210 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+IoGetDeviceInterfaces(
+ const GUID *InterfaceClassGuid,
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ ULONG Flags,
+
+
+#line 38224 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+ PZZWSTR *SymbolicLinkList
+ );
+#line 38227 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+IoGetDeviceInterfaceAlias(
+ PUNICODE_STRING SymbolicLinkName,
+ const GUID *AliasInterfaceClassGuid,
+
+
+#line 38242 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+ PUNICODE_STRING AliasSymbolicLinkName
+ );
+#line 38245 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+typedef enum _IO_NOTIFICATION_EVENT_CATEGORY {
+ EventCategoryReserved,
+ EventCategoryHardwareProfileChange,
+ EventCategoryDeviceInterfaceChange,
+ EventCategoryTargetDeviceChange,
+ EventCategoryKernelSoftRestart,
+} IO_NOTIFICATION_EVENT_CATEGORY;
+
+
+
+
+
+
+
+
+typedef
+
+
+NTSTATUS
+DRIVER_NOTIFICATION_CALLBACK_ROUTINE (
+ PVOID NotificationStructure,
+ PVOID Context
+);
+typedef DRIVER_NOTIFICATION_CALLBACK_ROUTINE
+ *PDRIVER_NOTIFICATION_CALLBACK_ROUTINE;
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoRegisterPlugPlayNotification(
+ IO_NOTIFICATION_EVENT_CATEGORY EventCategory,
+ ULONG EventCategoryFlags,
+ PVOID EventCategoryData,
+ PDRIVER_OBJECT DriverObject,
+ PDRIVER_NOTIFICATION_CALLBACK_ROUTINE CallbackRoutine,
+ PVOID Context,
+
+
+#line 38292 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+ PVOID *NotificationEntry
+ );
+#line 38295 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoUnregisterPlugPlayNotification(
+ PVOID NotificationEntry
+ );
+#line 38304 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoUnregisterPlugPlayNotificationEx(
+ PVOID NotificationEntry
+ );
+#line 38313 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoReportTargetDeviceChange(
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ PVOID NotificationStructure
+ );
+#line 38323 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef
+
+
+void
+DEVICE_CHANGE_COMPLETE_CALLBACK(
+ PVOID Context
+ );
+typedef DEVICE_CHANGE_COMPLETE_CALLBACK *PDEVICE_CHANGE_COMPLETE_CALLBACK;
+
+
+
+__declspec(dllimport)
+void
+IoInvalidateDeviceState(
+ PDEVICE_OBJECT PhysicalDeviceObject
+ );
+#line 38341 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoReportTargetDeviceChangeAsynchronous(
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ PVOID NotificationStructure,
+ PDEVICE_CHANGE_COMPLETE_CALLBACK Callback,
+ PVOID Context
+ );
+#line 38361 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+typedef enum _DRIVER_DIRECTORY_TYPE {
+ DriverDirectoryImage = 0,
+ DriverDirectoryData,
+
+ DriverDirectorySharedData,
+#line 38369 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+} DRIVER_DIRECTORY_TYPE, *PDRIVER_DIRECTORY_TYPE;
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoGetDriverDirectory(
+ PDRIVER_OBJECT DriverObject,
+ DRIVER_DIRECTORY_TYPE DirectoryType,
+ ULONG Flags,
+ PHANDLE DriverDirectoryHandle
+ );
+#line 38382 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+typedef enum _DEVICE_DIRECTORY_TYPE {
+ DeviceDirectoryData = 0,
+} DEVICE_DIRECTORY_TYPE, *PDEVICE_DIRECTORY_TYPE;
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoGetDeviceDirectory(
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ DEVICE_DIRECTORY_TYPE DirectoryType,
+ ULONG Flags,
+ PVOID Reserved,
+ PHANDLE DeviceDirectoryHandle
+ );
+#line 38400 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+typedef enum _DRIVER_REGKEY_TYPE {
+ DriverRegKeyParameters = 0,
+ DriverRegKeyPersistentState,
+
+ DriverRegKeySharedPersistentState,
+#line 38408 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+} DRIVER_REGKEY_TYPE, *PDRIVER_REGKEY_TYPE;
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoOpenDriverRegistryKey(
+ PDRIVER_OBJECT DriverObject,
+ DRIVER_REGKEY_TYPE RegKeyType,
+ ACCESS_MASK DesiredAccess,
+ ULONG Flags,
+ PHANDLE DriverRegKey
+ );
+#line 38422 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+typedef struct _PLUGPLAY_NOTIFICATION_HEADER {
+ USHORT Version;
+ USHORT Size;
+ GUID Event;
+
+
+
+} PLUGPLAY_NOTIFICATION_HEADER, *PPLUGPLAY_NOTIFICATION_HEADER;
+
+
+
+
+
+typedef struct _HWPROFILE_CHANGE_NOTIFICATION {
+ USHORT Version;
+ USHORT Size;
+ GUID Event;
+
+
+
+} HWPROFILE_CHANGE_NOTIFICATION, *PHWPROFILE_CHANGE_NOTIFICATION;
+
+
+
+
+
+
+typedef struct _DEVICE_INTERFACE_CHANGE_NOTIFICATION {
+ USHORT Version;
+ USHORT Size;
+ GUID Event;
+
+
+
+ GUID InterfaceClassGuid;
+ PUNICODE_STRING SymbolicLinkName;
+} DEVICE_INTERFACE_CHANGE_NOTIFICATION, *PDEVICE_INTERFACE_CHANGE_NOTIFICATION;
+
+
+
+
+
+
+
+
+
+
+typedef struct _TARGET_DEVICE_REMOVAL_NOTIFICATION {
+ USHORT Version;
+ USHORT Size;
+ GUID Event;
+
+
+
+ PFILE_OBJECT FileObject;
+} TARGET_DEVICE_REMOVAL_NOTIFICATION, *PTARGET_DEVICE_REMOVAL_NOTIFICATION;
+
+
+
+
+
+typedef struct _KERNEL_SOFT_RESTART_NOTIFICATION {
+ USHORT Version;
+ USHORT Size;
+ GUID Event;
+
+
+
+} KERNEL_SOFT_RESTART_NOTIFICATION, *PKERNEL_SOFT_RESTART_NOTIFICATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _TARGET_DEVICE_CUSTOM_NOTIFICATION {
+ USHORT Version;
+ USHORT Size;
+ GUID Event;
+
+
+
+ PFILE_OBJECT FileObject;
+
+
+
+
+
+
+ LONG NameBufferOffset;
+
+
+ UCHAR CustomDataBuffer[1];
+
+
+
+
+} TARGET_DEVICE_CUSTOM_NOTIFICATION, *PTARGET_DEVICE_CUSTOM_NOTIFICATION;
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\devpropdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma region Desktop Family or OneCore Family or Games Family
+
+
+
+
+
+
+
+
+
+
+typedef ULONG DEVPROPTYPE, *PDEVPROPTYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef CHAR DEVPROP_BOOLEAN, *PDEVPROP_BOOLEAN;
+
+
+
+
+
+
+
+
+
+
+
+typedef GUID DEVPROPGUID, *PDEVPROPGUID;
+typedef ULONG DEVPROPID, *PDEVPROPID;
+
+typedef struct _DEVPROPKEY {
+ DEVPROPGUID fmtid;
+ DEVPROPID pid;
+} DEVPROPKEY, *PDEVPROPKEY;
+
+#line 113 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\devpropdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 126 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\devpropdef.h"
+#line 127 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\devpropdef.h"
+
+
+
+
+
+
+
+typedef
+
+
+
+enum _DEVPROPSTORE {
+ DEVPROP_STORE_SYSTEM,
+ DEVPROP_STORE_USER
+} DEVPROPSTORE, *PDEVPROPSTORE;
+
+
+
+
+
+
+
+typedef struct _DEVPROPCOMPKEY {
+ DEVPROPKEY Key;
+ DEVPROPSTORE Store;
+
+
+
+ PCWSTR LocaleName;
+#line 157 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\devpropdef.h"
+} DEVPROPCOMPKEY, *PDEVPROPCOMPKEY;
+
+
+
+#line 162 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\devpropdef.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 174 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\devpropdef.h"
+
+
+
+
+
+typedef struct _DEVPROPERTY {
+ DEVPROPCOMPKEY CompKey;
+ DEVPROPTYPE Type;
+ ULONG BufferSize;
+
+
+
+ PVOID Buffer;
+#line 188 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\devpropdef.h"
+} DEVPROPERTY, *PDEVPROPERTY;
+
+
+
+
+
+
+
+
+#line 198 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\devpropdef.h"
+
+
+
+
+
+
+
+
+
+#line 208 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\devpropdef.h"
+
+#line 210 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\devpropdef.h"
+#pragma endregion
+#pragma external_header(pop)
+#line 38543 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+#line 38551 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoSetDevicePropertyData (
+ PDEVICE_OBJECT Pdo,
+ const DEVPROPKEY *PropertyKey,
+ LCID Lcid,
+ ULONG Flags,
+ DEVPROPTYPE Type,
+ ULONG Size,
+
+ PVOID Data
+ );
+#line 38570 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoGetDevicePropertyData (
+ PDEVICE_OBJECT Pdo,
+ const DEVPROPKEY *PropertyKey,
+ LCID Lcid,
+ ULONG Flags,
+ ULONG Size,
+
+ PVOID Data,
+ PULONG RequiredSize,
+ PDEVPROPTYPE Type
+ );
+#line 38588 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoSetDeviceInterfacePropertyData (
+ PUNICODE_STRING SymbolicLinkName,
+ const DEVPROPKEY *PropertyKey,
+ LCID Lcid,
+ ULONG Flags,
+ DEVPROPTYPE Type,
+ ULONG Size,
+
+ PVOID Data
+ );
+#line 38605 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoGetDeviceInterfacePropertyData (
+ PUNICODE_STRING SymbolicLinkName,
+ const DEVPROPKEY *PropertyKey,
+ LCID Lcid,
+ ULONG Flags,
+ ULONG Size,
+
+ PVOID Data,
+ PULONG RequiredSize,
+ PDEVPROPTYPE Type
+ );
+#line 38623 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoGetDeviceNumaNode (
+ PDEVICE_OBJECT Pdo,
+ PUSHORT NodeNumber
+ );
+#line 38634 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+IoReplacePartitionUnit (
+ PDEVICE_OBJECT TargetPdo,
+ PDEVICE_OBJECT SparePdo,
+ ULONG Flags
+ );
+#line 38648 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+typedef struct _PNP_REPLACE_DRIVER_INTERFACE *PPNP_REPLACE_DRIVER_INTERFACE;
+
+typedef
+
+NTSTATUS
+(*PREPLACE_DRIVER_INIT) (
+ PPNP_REPLACE_DRIVER_INTERFACE Interface,
+ PVOID Unused
+ );
+
+
+
+
+
+
+
+typedef
+
+NTSTATUS
+(*PREPLACE_MAP_MEMORY) (
+ PHYSICAL_ADDRESS TargetPhysicalAddress,
+ PHYSICAL_ADDRESS SparePhysicalAddress,
+ PLARGE_INTEGER NumberOfBytes,
+ PVOID *TargetAddress,
+ PVOID *SpareAddress
+ );
+
+typedef struct _PNP_REPLACE_MEMORY_LIST {
+
+ ULONG AllocatedCount;
+ ULONG Count;
+ ULONGLONG TotalLength;
+ struct {
+ PHYSICAL_ADDRESS Address;
+ ULONGLONG Length;
+ } Ranges[1];
+
+} PNP_REPLACE_MEMORY_LIST, *PPNP_REPLACE_MEMORY_LIST;
+
+typedef struct _PNP_REPLACE_PROCESSOR_LIST {
+
+ PKAFFINITY Affinity;
+ ULONG GroupCount;
+ ULONG AllocatedCount;
+ ULONG Count;
+ ULONG ApicIds[1];
+
+} PNP_REPLACE_PROCESSOR_LIST, *PPNP_REPLACE_PROCESSOR_LIST;
+
+typedef struct _PNP_REPLACE_PROCESSOR_LIST_V1 {
+
+ KAFFINITY AffinityMask;
+ ULONG AllocatedCount;
+ ULONG Count;
+ ULONG ApicIds[1];
+
+} PNP_REPLACE_PROCESSOR_LIST_V1, *PPNP_REPLACE_PROCESSOR_LIST_V1;
+
+
+
+typedef struct _PNP_REPLACE_PARAMETERS {
+
+ ULONG Size;
+ ULONG Version;
+
+ ULONG64 Target;
+ ULONG64 Spare;
+ PPNP_REPLACE_PROCESSOR_LIST TargetProcessors;
+ PPNP_REPLACE_PROCESSOR_LIST SpareProcessors;
+ PPNP_REPLACE_MEMORY_LIST TargetMemory;
+ PPNP_REPLACE_MEMORY_LIST SpareMemory;
+
+ PREPLACE_MAP_MEMORY MapMemory;
+
+} PNP_REPLACE_PARAMETERS, *PPNP_REPLACE_PARAMETERS;
+
+
+
+
+
+typedef
+void
+(*PREPLACE_UNLOAD) (
+ void
+ );
+
+typedef
+
+NTSTATUS
+(*PREPLACE_BEGIN) (
+ PPNP_REPLACE_PARAMETERS Parameters,
+ PVOID *Context
+);
+
+typedef
+
+NTSTATUS
+(*PREPLACE_END) (
+ PVOID Context
+ );
+
+typedef
+
+NTSTATUS
+(*PREPLACE_MIRROR_PHYSICAL_MEMORY) (
+ PVOID Context,
+ PHYSICAL_ADDRESS PhysicalAddress,
+ LARGE_INTEGER ByteCount
+ );
+
+typedef
+
+NTSTATUS
+(*PREPLACE_SET_PROCESSOR_ID) (
+ PVOID Context,
+ ULONG ApicId,
+ BOOLEAN Target
+ );
+
+typedef
+
+NTSTATUS
+(*PREPLACE_SWAP) (
+ PVOID Context
+ );
+
+typedef
+
+NTSTATUS
+(*PREPLACE_INITIATE_HARDWARE_MIRROR) (
+ PVOID Context
+ );
+
+typedef
+
+NTSTATUS
+(*PREPLACE_MIRROR_PLATFORM_MEMORY) (
+ PVOID Context
+ );
+
+typedef
+
+NTSTATUS
+(*PREPLACE_GET_MEMORY_DESTINATION) (
+ PVOID Context,
+ PHYSICAL_ADDRESS SourceAddress,
+ PPHYSICAL_ADDRESS DestinationAddress
+ );
+
+typedef
+ NTSTATUS
+(*PREPLACE_ENABLE_DISABLE_HARDWARE_QUIESCE) (
+ PVOID Context,
+ BOOLEAN Enable
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _PNP_REPLACE_DRIVER_INTERFACE {
+
+ ULONG Size;
+ ULONG Version;
+
+ ULONG Flags;
+ PREPLACE_UNLOAD Unload;
+ PREPLACE_BEGIN BeginReplace;
+ PREPLACE_END EndReplace;
+ PREPLACE_MIRROR_PHYSICAL_MEMORY MirrorPhysicalMemory;
+ PREPLACE_SET_PROCESSOR_ID SetProcessorId;
+ PREPLACE_SWAP Swap;
+ PREPLACE_INITIATE_HARDWARE_MIRROR InitiateHardwareMirror;
+ PREPLACE_MIRROR_PLATFORM_MEMORY MirrorPlatformMemory;
+ PREPLACE_GET_MEMORY_DESTINATION GetMemoryDestination;
+ PREPLACE_ENABLE_DISABLE_HARDWARE_QUIESCE EnableDisableHardwareQuiesce;
+
+} PNP_REPLACE_DRIVER_INTERFACE, *PPNP_REPLACE_DRIVER_INTERFACE;
+
+
+
+
+
+
+
+
+typedef
+NTSTATUS
+(*PCRASHDUMP_POWER_ON)(
+ PVOID Context
+ );
+
+typedef struct _CRASHDUMP_FUNCTIONS_INTERFACE {
+
+
+
+
+
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+
+
+
+
+ PCRASHDUMP_POWER_ON PowerOn;
+
+} CRASHDUMP_FUNCTIONS_INTERFACE, *PCRASHDUMP_FUNCTIONS_INTERFACE;
+#line 38876 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _DEVICE_RESET_TYPE
+{
+ FunctionLevelDeviceReset,
+ PlatformLevelDeviceReset
+} DEVICE_RESET_TYPE;
+
+
+
+
+
+typedef union _DEVICE_BUS_SPECIFIC_RESET_TYPE {
+ struct {
+ ULONGLONG FunctionLevelDeviceReset:1;
+ ULONGLONG PlatformLevelDeviceReset:1;
+ ULONGLONG SecondaryBusReset:1;
+ ULONGLONG PowerControllerReset:1;
+ ULONGLONG NoOpReset:1;
+ ULONGLONG Reserved:59;
+ } Pci;
+
+ struct {
+ ULONGLONG FunctionLevelDeviceReset:1;
+ ULONGLONG PlatformLevelDeviceReset:1;
+ ULONGLONG Reserved:62;
+ } Acpi;
+ ULONGLONG AsULONGLONG;
+} DEVICE_BUS_SPECIFIC_RESET_TYPE, *PDEVICE_BUS_SPECIFIC_RESET_TYPE;
+
+typedef
+void
+(DEVICE_RESET_COMPLETION)(
+ NTSTATUS Status,
+ PVOID Context
+ );
+
+typedef DEVICE_RESET_COMPLETION *PDEVICE_RESET_COMPLETION;
+
+typedef struct _FUNCTION_LEVEL_DEVICE_RESET_PARAMETERS {
+ ULONG Size;
+ PDEVICE_RESET_COMPLETION DeviceResetCompletion;
+ PVOID CompletionContext;
+} FUNCTION_LEVEL_DEVICE_RESET_PARAMETERS, *PFUNCTION_LEVEL_DEVICE_RESET_PARAMETERS;
+
+typedef
+
+
+
+NTSTATUS
+DEVICE_RESET_HANDLER(
+ PVOID InterfaceContext,
+ DEVICE_RESET_TYPE ResetType,
+ ULONG Flags,
+ PVOID ResetParameters
+ );
+
+typedef DEVICE_RESET_HANDLER *PDEVICE_RESET_HANDLER;
+
+
+
+typedef struct _DEVICE_BUS_SPECIFIC_RESET_INFO {
+
+
+
+
+ GUID BusTypeGuid;
+ DEVICE_BUS_SPECIFIC_RESET_TYPE ResetTypeSupported;
+
+} DEVICE_BUS_SPECIFIC_RESET_INFO, *PDEVICE_BUS_SPECIFIC_RESET_INFO;
+
+typedef
+
+
+
+NTSTATUS
+DEVICE_QUERY_BUS_SPECIFIC_RESET_HANDLER(
+ PVOID InterfaceContext,
+ PULONG ResetInfoCount,
+ PDEVICE_BUS_SPECIFIC_RESET_INFO ResetInfoSupported
+);
+
+typedef DEVICE_QUERY_BUS_SPECIFIC_RESET_HANDLER *PDEVICE_QUERY_BUS_SPECIFIC_RESET_HANDLER;
+
+typedef union _BUS_SPECIFIC_RESET_FLAGS {
+ struct {
+ ULONGLONG KeepStackReset:1;
+ ULONGLONG Reserved:63;
+ } u;
+ ULONGLONG AsUlonglong;
+} BUS_SPECIFIC_RESET_FLAGS, *PBUS_SPECIFIC_RESET_FLAGS;
+
+typedef char __C_ASSERT__[(sizeof(BUS_SPECIFIC_RESET_FLAGS) == sizeof(ULONGLONG))?1:-1];
+
+typedef
+
+
+
+NTSTATUS
+DEVICE_BUS_SPECIFIC_RESET_HANDLER(
+ PVOID InterfaceContext,
+ const GUID *BusType,
+ DEVICE_BUS_SPECIFIC_RESET_TYPE ResetTypeSelected,
+ PBUS_SPECIFIC_RESET_FLAGS Flags,
+ PVOID ResetParameters
+);
+
+typedef DEVICE_BUS_SPECIFIC_RESET_HANDLER *PDEVICE_BUS_SPECIFIC_RESET_HANDLER;
+
+typedef union _DEVICE_RESET_STATUS_FLAGS {
+ struct {
+ ULONGLONG KeepStackReset:1;
+ ULONGLONG RecoveringFromBusError:1;
+ ULONGLONG Reserved:62;
+ } u;
+ ULONGLONG AsUlonglong;
+} DEVICE_RESET_STATUS_FLAGS, *PDEVICE_RESET_STATUS_FLAGS;
+
+typedef char __C_ASSERT__[(sizeof(DEVICE_RESET_STATUS_FLAGS) == sizeof(ULONGLONG))?1:-1];
+
+typedef
+
+
+
+NTSTATUS
+GET_DEVICE_RESET_STATUS(
+ PVOID InterfaceContext,
+ PBOOLEAN IsResetting,
+ PDEVICE_BUS_SPECIFIC_RESET_TYPE ResetTypeSelected,
+ PDEVICE_RESET_STATUS_FLAGS Flags
+);
+
+typedef GET_DEVICE_RESET_STATUS *PGET_DEVICE_RESET_STATUS;
+
+#line 39024 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef struct _DEVICE_RESET_INTERFACE_STANDARD {
+
+
+
+
+
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+
+
+
+
+ PDEVICE_RESET_HANDLER DeviceReset;
+ ULONG SupportedResetTypes;
+ PVOID Reserved;
+
+
+
+
+
+
+
+ PDEVICE_QUERY_BUS_SPECIFIC_RESET_HANDLER QueryBusSpecificResetInfo;
+ PDEVICE_BUS_SPECIFIC_RESET_HANDLER DeviceBusSpecificReset;
+
+
+
+
+
+ PGET_DEVICE_RESET_STATUS GetDeviceResetStatus;
+
+#line 39061 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+} DEVICE_RESET_INTERFACE_STANDARD, *PDEVICE_RESET_INTERFACE_STANDARD;
+
+#line 39065 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+typedef
+
+
+
+PEPROCESS
+SECURE_DRIVER_PROCESS_REFERENCE (
+ PVOID InterfaceContext
+ );
+
+typedef SECURE_DRIVER_PROCESS_REFERENCE *PSECURE_DRIVER_PROCESS_REFERENCE;
+
+typedef
+
+
+
+void
+SECURE_DRIVER_PROCESS_DEREFERENCE (
+ PVOID InterfaceContext,
+ PEPROCESS Process
+ );
+
+typedef SECURE_DRIVER_PROCESS_DEREFERENCE *PSECURE_DRIVER_PROCESS_DEREFERENCE;
+
+typedef struct _SECURE_DRIVER_INTERFACE {
+ INTERFACE InterfaceHeader;
+ PSECURE_DRIVER_PROCESS_REFERENCE ProcessReference;
+ PSECURE_DRIVER_PROCESS_DEREFERENCE ProcessDereference;
+ ULONG Reserved;
+} SECURE_DRIVER_INTERFACE, *PSECURE_DRIVER_INTERFACE;
+
+#line 39101 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+typedef
+
+
+
+ULONGLONG
+GET_SDEV_IDENTIFIER (
+ PVOID InterfaceContext
+ );
+
+typedef GET_SDEV_IDENTIFIER *PGET_SDEV_IDENTIFIER;
+
+typedef struct _SDEV_IDENTIFIER_INTERFACE {
+ INTERFACE InterfaceHeader;
+ PGET_SDEV_IDENTIFIER GetIdentifier;
+} SDEV_IDENTIFIER_INTERFACE, *PSDEV_IDENTIFIER_INTERFACE;
+
+
+
+
+
+
+typedef struct _DEVICE_DESCRIPTION {
+ ULONG Version;
+ BOOLEAN Master;
+ BOOLEAN ScatterGather;
+ BOOLEAN DemandMode;
+ BOOLEAN AutoInitialize;
+ BOOLEAN Dma32BitAddresses;
+ BOOLEAN IgnoreCount;
+ BOOLEAN Reserved1;
+ BOOLEAN Dma64BitAddresses;
+ ULONG BusNumber;
+ ULONG DmaChannel;
+ INTERFACE_TYPE InterfaceType;
+ DMA_WIDTH DmaWidth;
+ DMA_SPEED DmaSpeed;
+ ULONG MaximumLength;
+ ULONG DmaPort;
+
+ ULONG DmaAddressWidth;
+ ULONG DmaControllerInstance;
+ ULONG DmaRequestLine;
+ PHYSICAL_ADDRESS DeviceAddress;
+#line 39150 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+} DEVICE_DESCRIPTION, *PDEVICE_DESCRIPTION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _DMA_ADAPTER_INFO_V1 {
+ ULONG ReadDmaCounterAvailable;
+ ULONG ScatterGatherLimit;
+ ULONG DmaAddressWidth;
+ ULONG Flags;
+ ULONG MinimumTransferUnit;
+} DMA_ADAPTER_INFO_V1, *PDMA_ADAPTER_INFO_V1;
+
+typedef struct _DMA_ADAPTER_INFO_CRASHDUMP {
+ DEVICE_DESCRIPTION DeviceDescription;
+ SIZE_T DeviceIdSize;
+ PVOID DeviceId;
+} DMA_ADAPTER_INFO_CRASHDUMP, *PDMA_ADAPTER_INFO_CRASHDUMP;
+
+typedef union _DMA_ADAPTER_INFO {
+ struct {
+ ULONG Version;
+ DMA_ADAPTER_INFO_V1 V1;
+ };
+
+ struct {
+ ULONGLONG Reserved;
+ union {
+ DMA_ADAPTER_INFO_CRASHDUMP Crashdump;
+ };
+ };
+} DMA_ADAPTER_INFO, *PDMA_ADAPTER_INFO;
+
+
+
+
+
+
+
+
+
+
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((DMA_ADAPTER_INFO *)0)->V1)) == 0x4)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((DMA_ADAPTER_INFO *)0)->Crashdump)) == 0x8)?1:-1];
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _DMA_TRANSFER_INFO_V1 {
+ ULONG MapRegisterCount;
+ ULONG ScatterGatherElementCount;
+ ULONG ScatterGatherListSize;
+} DMA_TRANSFER_INFO_V1, *PDMA_TRANSFER_INFO_V1;
+
+typedef struct _DMA_TRANSFER_INFO_V2 {
+ ULONG MapRegisterCount;
+ ULONG ScatterGatherElementCount;
+ ULONG ScatterGatherListSize;
+ ULONG LogicalPageCount;
+} DMA_TRANSFER_INFO_V2, *PDMA_TRANSFER_INFO_V2;
+
+typedef struct _DMA_TRANSFER_INFO {
+ ULONG Version;
+ union {
+ DMA_TRANSFER_INFO_V1 V1;
+ DMA_TRANSFER_INFO_V2 V2;
+ };
+} DMA_TRANSFER_INFO, *PDMA_TRANSFER_INFO;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 39260 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+KeFlushWriteBuffer (
+ void
+ );
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+
+#line 39289 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+LARGE_INTEGER
+KeQueryPerformanceCounter (
+ PLARGE_INTEGER PerformanceFrequency
+ );
+
+
+#line 39297 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+KeStallExecutionProcessor (
+ ULONG MicroSeconds
+ );
+#line 39310 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+typedef
+NTSTATUS
+PROCESSOR_HALT_ROUTINE (
+ PVOID Context
+ );
+
+typedef PROCESSOR_HALT_ROUTINE *PPROCESSOR_HALT_ROUTINE;
+
+
+typedef struct _IOMMU_DMA_DEVICE IOMMU_DMA_DEVICE, *PIOMMU_DMA_DEVICE;
+
+
+typedef struct _SCATTER_GATHER_ELEMENT {
+ PHYSICAL_ADDRESS Address;
+ ULONG Length;
+ ULONG_PTR Reserved;
+} SCATTER_GATHER_ELEMENT, *PSCATTER_GATHER_ELEMENT;
+
+
+
+
+#pragma warning(push)
+#line 39344 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+#pragma warning(disable:4200)
+typedef struct _SCATTER_GATHER_LIST {
+ ULONG NumberOfElements;
+ ULONG_PTR Reserved;
+ SCATTER_GATHER_ELEMENT Elements[];
+} SCATTER_GATHER_LIST, *PSCATTER_GATHER_LIST;
+
+#pragma warning(pop)
+
+
+#line 39355 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+#line 39362 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+typedef struct _DMA_OPERATIONS *PDMA_OPERATIONS;
+
+
+
+typedef struct _DMA_ADAPTER {
+ USHORT Version;
+ USHORT Size;
+ PDMA_OPERATIONS DmaOperations;
+
+} DMA_ADAPTER, *PDMA_ADAPTER;
+
+typedef enum {
+ DmaComplete,
+ DmaAborted,
+ DmaError,
+ DmaCancelled
+} DMA_COMPLETION_STATUS;
+
+
+
+typedef enum _DMA_COMMON_BUFFER_EXTENDED_CONFIGURATION_TYPE {
+ CommonBufferConfigTypeLogicalAddressLimits,
+ CommonBufferConfigTypeSubSection,
+ CommonBufferConfigTypeHardwareAccessPermissions,
+ CommonBufferConfigTypeMax,
+} DMA_COMMON_BUFFER_EXTENDED_CONFIGURATION_TYPE,
+ *PDMA_COMMON_BUFFER_EXTENDED_CONFIGURATION_TYPE;
+
+typedef enum _DMA_COMMON_BUFFER_EXTENDED_CONFIGURATION_ACCESS_TYPE {
+ CommonBufferHardwareAccessReadOnly,
+ CommonBufferHardwareAccessWriteOnly,
+ CommonBufferHardwareAccessReadWrite,
+ CommonBufferHardwareAccessMax,
+} DMA_COMMON_BUFFER_EXTENDED_CONFIGURATION_ACCESS_TYPE,
+ *PDMA_COMMON_BUFFER_EXTENDED_CONFIGURATION_ACCESS_TYPE;
+
+typedef struct _DMA_COMMON_BUFFER_EXTENDED_CONFIGURATION {
+ DMA_COMMON_BUFFER_EXTENDED_CONFIGURATION_TYPE ConfigType;
+ union {
+ struct {
+ PHYSICAL_ADDRESS MinimumAddress;
+ PHYSICAL_ADDRESS MaximumAddress;
+ } LogicalAddressLimits;
+
+ struct {
+ ULONGLONG Offset;
+ ULONG Length;
+ } SubSection;
+
+ DMA_COMMON_BUFFER_EXTENDED_CONFIGURATION_ACCESS_TYPE HardwareAccessType;
+ ULONGLONG Reserved[4];
+ };
+} DMA_COMMON_BUFFER_EXTENDED_CONFIGURATION,
+ *PDMA_COMMON_BUFFER_EXTENDED_CONFIGURATION;
+
+#line 39421 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+typedef void (*PPUT_DMA_ADAPTER)(
+ PDMA_ADAPTER DmaAdapter
+ );
+
+typedef PVOID (*PALLOCATE_COMMON_BUFFER)(
+ PDMA_ADAPTER DmaAdapter,
+ ULONG Length,
+ PPHYSICAL_ADDRESS LogicalAddress,
+ BOOLEAN CacheEnabled
+ );
+
+typedef void (*PFREE_COMMON_BUFFER)(
+ PDMA_ADAPTER DmaAdapter,
+ ULONG Length,
+ PHYSICAL_ADDRESS LogicalAddress,
+ PVOID VirtualAddress,
+ BOOLEAN CacheEnabled
+ );
+
+typedef NTSTATUS (*PALLOCATE_ADAPTER_CHANNEL)(
+ PDMA_ADAPTER DmaAdapter,
+ PDEVICE_OBJECT DeviceObject,
+ ULONG NumberOfMapRegisters,
+ PDRIVER_CONTROL ExecutionRoutine,
+ PVOID Context
+ );
+
+typedef BOOLEAN (*PFLUSH_ADAPTER_BUFFERS)(
+ PDMA_ADAPTER DmaAdapter,
+ PMDL Mdl,
+ PVOID MapRegisterBase,
+ PVOID CurrentVa,
+ ULONG Length,
+ BOOLEAN WriteToDevice
+ );
+
+typedef void (*PFREE_ADAPTER_CHANNEL)(
+ PDMA_ADAPTER DmaAdapter
+ );
+
+typedef void (*PFREE_ADAPTER_OBJECT)(
+ PDMA_ADAPTER DmaAdapter,
+ IO_ALLOCATION_ACTION AllocationAction
+ );
+
+typedef void (*PFREE_MAP_REGISTERS)(
+ PDMA_ADAPTER DmaAdapter,
+ PVOID MapRegisterBase,
+ ULONG NumberOfMapRegisters
+ );
+
+typedef PHYSICAL_ADDRESS (*PMAP_TRANSFER)(
+ PDMA_ADAPTER DmaAdapter,
+ PMDL Mdl,
+ PVOID MapRegisterBase,
+ PVOID CurrentVa,
+ PULONG Length,
+ BOOLEAN WriteToDevice
+ );
+
+typedef ULONG (*PGET_DMA_ALIGNMENT)(
+ PDMA_ADAPTER DmaAdapter
+ );
+
+typedef ULONG (*PREAD_DMA_COUNTER)(
+ PDMA_ADAPTER DmaAdapter
+ );
+
+typedef
+
+
+void
+DRIVER_LIST_CONTROL(
+ struct _DEVICE_OBJECT *DeviceObject,
+ struct _IRP *Irp,
+ PSCATTER_GATHER_LIST ScatterGather,
+ PVOID Context
+ );
+typedef DRIVER_LIST_CONTROL *PDRIVER_LIST_CONTROL;
+
+typedef NTSTATUS
+(*PGET_SCATTER_GATHER_LIST)(
+ PDMA_ADAPTER DmaAdapter,
+ PDEVICE_OBJECT DeviceObject,
+ PMDL Mdl,
+ PVOID CurrentVa,
+ ULONG Length,
+ PDRIVER_LIST_CONTROL ExecutionRoutine,
+ PVOID Context,
+ BOOLEAN WriteToDevice
+ );
+
+typedef void
+(*PPUT_SCATTER_GATHER_LIST)(
+ PDMA_ADAPTER DmaAdapter,
+ PSCATTER_GATHER_LIST ScatterGather,
+ BOOLEAN WriteToDevice
+ );
+
+typedef NTSTATUS
+(*PCALCULATE_SCATTER_GATHER_LIST_SIZE)(
+ PDMA_ADAPTER DmaAdapter,
+ PMDL Mdl,
+ PVOID CurrentVa,
+ ULONG Length,
+ PULONG ScatterGatherListSize,
+ PULONG pNumberOfMapRegisters
+ );
+
+typedef NTSTATUS
+(*PBUILD_SCATTER_GATHER_LIST)(
+ PDMA_ADAPTER DmaAdapter,
+ PDEVICE_OBJECT DeviceObject,
+ PMDL Mdl,
+ PVOID CurrentVa,
+ ULONG Length,
+ PDRIVER_LIST_CONTROL ExecutionRoutine,
+ PVOID Context,
+ BOOLEAN WriteToDevice,
+ PVOID ScatterGatherBuffer,
+ ULONG ScatterGatherLength
+ );
+
+typedef NTSTATUS
+(*PBUILD_MDL_FROM_SCATTER_GATHER_LIST)(
+ PDMA_ADAPTER DmaAdapter,
+ PSCATTER_GATHER_LIST ScatterGather,
+ PMDL OriginalMdl,
+ PMDL *TargetMdl
+ );
+
+typedef NTSTATUS
+(*PGET_DMA_ADAPTER_INFO)(
+ PDMA_ADAPTER DmaAdapter,
+ PDMA_ADAPTER_INFO AdapterInfo
+ );
+
+typedef NTSTATUS
+(*PGET_DMA_TRANSFER_INFO)(
+ PDMA_ADAPTER DmaAdapter,
+ PMDL Mdl,
+ ULONGLONG Offset,
+ ULONG Length,
+ BOOLEAN WriteOnly,
+ PDMA_TRANSFER_INFO TransferInfo
+ );
+
+typedef NTSTATUS
+(*PCONFIGURE_ADAPTER_CHANNEL)(
+ PDMA_ADAPTER DmaAdapter,
+ ULONG FunctionNumber,
+ PVOID Context
+ );
+
+typedef NTSTATUS
+(*PINITIALIZE_DMA_TRANSFER_CONTEXT)(
+ PDMA_ADAPTER DmaAdapter,
+ PVOID DmaTransferContext
+ );
+
+typedef PVOID
+(*PALLOCATE_COMMON_BUFFER_EX)(
+ PDMA_ADAPTER DmaAdapter,
+ PPHYSICAL_ADDRESS MaximumAddress,
+ ULONG Length,
+ PPHYSICAL_ADDRESS LogicalAddress,
+ BOOLEAN CacheEnabled,
+ NODE_REQUIREMENT PreferredNode
+ );
+
+typedef NTSTATUS
+(*PALLOCATE_ADAPTER_CHANNEL_EX)(
+ PDMA_ADAPTER DmaAdapter,
+ PDEVICE_OBJECT DeviceObject,
+ PVOID DmaTransferContext,
+ ULONG NumberOfMapRegisters,
+ ULONG Flags,
+ PDRIVER_CONTROL ExecutionRoutine,
+ PVOID ExecutionContext,
+ PVOID *MapRegisterBase
+ );
+
+typedef void
+
+
+
+DMA_COMPLETION_ROUTINE(
+ PDMA_ADAPTER DmaAdapter,
+ PDEVICE_OBJECT DeviceObject,
+ PVOID CompletionContext,
+ DMA_COMPLETION_STATUS Status
+ );
+typedef DMA_COMPLETION_ROUTINE *PDMA_COMPLETION_ROUTINE;
+
+typedef NTSTATUS
+(*PMAP_TRANSFER_EX)(
+ PDMA_ADAPTER DmaAdapter,
+ PMDL Mdl,
+ PVOID MapRegisterBase,
+ ULONGLONG Offset,
+ ULONG DeviceOffset,
+ PULONG Length,
+ BOOLEAN WriteToDevice,
+ PSCATTER_GATHER_LIST ScatterGatherBuffer,
+ ULONG ScatterGatherBufferLength,
+ PDMA_COMPLETION_ROUTINE DmaCompletionRoutine,
+ PVOID CompletionContext
+ );
+
+typedef BOOLEAN
+(*PCANCEL_ADAPTER_CHANNEL)(
+ PDMA_ADAPTER DmaAdapter,
+ PDEVICE_OBJECT DeviceObject,
+ PVOID DmaTransferContext
+ );
+
+typedef NTSTATUS
+(*PCANCEL_MAPPED_TRANSFER)(
+ PDMA_ADAPTER DmaAdapter,
+ PVOID DmaTransferContext
+ );
+
+typedef NTSTATUS
+(*PFLUSH_ADAPTER_BUFFERS_EX)(
+ PDMA_ADAPTER DmaAdapter,
+ PMDL Mdl,
+ PVOID MapRegisterBase,
+ ULONGLONG Offset,
+ ULONG Length,
+ BOOLEAN WriteToDevice
+ );
+
+typedef NTSTATUS
+(*PGET_SCATTER_GATHER_LIST_EX)(
+ PDMA_ADAPTER DmaAdapter,
+ PDEVICE_OBJECT DeviceObject,
+ PVOID DmaTransferContext,
+ PMDL Mdl,
+ ULONGLONG Offset,
+ ULONG Length,
+ ULONG Flags,
+ PDRIVER_LIST_CONTROL ExecutionRoutine,
+ PVOID Context,
+ BOOLEAN WriteToDevice,
+ PDMA_COMPLETION_ROUTINE DmaCompletionRoutine,
+ PVOID CompletionContext,
+ PSCATTER_GATHER_LIST *ScatterGatherList
+ );
+
+typedef NTSTATUS
+(*PBUILD_SCATTER_GATHER_LIST_EX)(
+ PDMA_ADAPTER DmaAdapter,
+ PDEVICE_OBJECT DeviceObject,
+ PVOID DmaTransferContext,
+ PMDL Mdl,
+ ULONGLONG Offset,
+ ULONG Length,
+ ULONG Flags,
+ PDRIVER_LIST_CONTROL ExecutionRoutine,
+ PVOID Context,
+ BOOLEAN WriteToDevice,
+ PVOID ScatterGatherBuffer,
+ ULONG ScatterGatherLength,
+ PDMA_COMPLETION_ROUTINE DmaCompletionRoutine,
+ PVOID CompletionContext,
+ PVOID ScatterGatherList
+ );
+
+typedef NTSTATUS
+(*PALLOCATE_DOMAIN_COMMON_BUFFER)(
+ PDMA_ADAPTER DmaAdapter,
+ HANDLE DomainHandle,
+ PPHYSICAL_ADDRESS MaximumAddress,
+ ULONG Length,
+ ULONG Flags,
+ MEMORY_CACHING_TYPE *CacheType,
+ NODE_REQUIREMENT PreferredNode,
+ PPHYSICAL_ADDRESS LogicalAddress,
+ PVOID *VirtualAddress
+ );
+
+typedef PVOID
+(*PALLOCATE_COMMON_BUFFER_WITH_BOUNDS)(
+ PDMA_ADAPTER DmaAdapter,
+ PPHYSICAL_ADDRESS MinimumAddress,
+ PPHYSICAL_ADDRESS MaximumAddress,
+ ULONG Length,
+ ULONG Flags,
+ MEMORY_CACHING_TYPE *CacheType,
+ NODE_REQUIREMENT PreferredNode,
+ PPHYSICAL_ADDRESS LogicalAddress
+ );
+
+typedef struct _DMA_COMMON_BUFFER_VECTOR DMA_COMMON_BUFFER_VECTOR,
+ *PDMA_COMMON_BUFFER_VECTOR;
+
+typedef NTSTATUS
+(*PALLOCATE_COMMON_BUFFER_VECTOR)(
+ PDMA_ADAPTER DmaAdapter,
+ PHYSICAL_ADDRESS LowAddress,
+ PHYSICAL_ADDRESS HighAddress,
+ MEMORY_CACHING_TYPE CacheType,
+ NODE_REQUIREMENT IdealNode,
+ ULONG Flags,
+ ULONG NumberOfElements,
+ ULONGLONG SizeOfElements,
+ PDMA_COMMON_BUFFER_VECTOR *VectorOut
+ );
+
+typedef void
+(*PGET_COMMON_BUFFER_FROM_VECTOR_BY_INDEX)(
+ PDMA_ADAPTER DmaAdapter,
+ PDMA_COMMON_BUFFER_VECTOR Vector,
+ ULONG Index,
+ PVOID *VirtualAddressOut,
+ PPHYSICAL_ADDRESS LogicalAddressOut
+ );
+
+typedef void
+(*PFREE_COMMON_BUFFER_FROM_VECTOR)(
+ PDMA_ADAPTER DmaAdapter,
+ PDMA_COMMON_BUFFER_VECTOR Vector,
+ ULONG Index
+ );
+
+typedef void
+(*PFREE_COMMON_BUFFER_VECTOR)(
+ PDMA_ADAPTER DmaAdapter,
+ PDMA_COMMON_BUFFER_VECTOR Vector
+ );
+
+
+
+typedef NTSTATUS
+(*PCREATE_COMMON_BUFFER_FROM_MDL)(
+ PDMA_ADAPTER DmaAdapter,
+ PMDL Mdl,
+ PDMA_COMMON_BUFFER_EXTENDED_CONFIGURATION ExtendedConfigs,
+ ULONG ExtendedConfigsCount,
+ PPHYSICAL_ADDRESS LogicalAddress
+ );
+
+#line 39767 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+typedef NTSTATUS
+(*PFLUSH_DMA_BUFFER)(
+ PDMA_ADAPTER DmaAdapter,
+ PMDL Mdl,
+ BOOLEAN ReadOperation
+);
+
+typedef NTSTATUS
+(*PJOIN_DMA_DOMAIN)(
+ PDMA_ADAPTER DmaAdapter,
+ HANDLE DomainHandle
+);
+
+typedef NTSTATUS
+(*PLEAVE_DMA_DOMAIN)(
+ PDMA_ADAPTER DmaAdapter
+);
+
+typedef HANDLE
+(*PGET_DMA_DOMAIN)(
+ PDMA_ADAPTER DmaAdapter
+);
+
+
+
+typedef struct _DMA_OPERATIONS {
+ ULONG Size;
+ PPUT_DMA_ADAPTER PutDmaAdapter;
+ PALLOCATE_COMMON_BUFFER AllocateCommonBuffer;
+ PFREE_COMMON_BUFFER FreeCommonBuffer;
+ PALLOCATE_ADAPTER_CHANNEL AllocateAdapterChannel;
+ PFLUSH_ADAPTER_BUFFERS FlushAdapterBuffers;
+ PFREE_ADAPTER_CHANNEL FreeAdapterChannel;
+ PFREE_MAP_REGISTERS FreeMapRegisters;
+ PMAP_TRANSFER MapTransfer;
+ PGET_DMA_ALIGNMENT GetDmaAlignment;
+ PREAD_DMA_COUNTER ReadDmaCounter;
+ PGET_SCATTER_GATHER_LIST GetScatterGatherList;
+ PPUT_SCATTER_GATHER_LIST PutScatterGatherList;
+ PCALCULATE_SCATTER_GATHER_LIST_SIZE CalculateScatterGatherList;
+ PBUILD_SCATTER_GATHER_LIST BuildScatterGatherList;
+ PBUILD_MDL_FROM_SCATTER_GATHER_LIST BuildMdlFromScatterGatherList;
+ PGET_DMA_ADAPTER_INFO GetDmaAdapterInfo;
+ PGET_DMA_TRANSFER_INFO GetDmaTransferInfo;
+ PINITIALIZE_DMA_TRANSFER_CONTEXT InitializeDmaTransferContext;
+ PALLOCATE_COMMON_BUFFER_EX AllocateCommonBufferEx;
+ PALLOCATE_ADAPTER_CHANNEL_EX AllocateAdapterChannelEx;
+ PCONFIGURE_ADAPTER_CHANNEL ConfigureAdapterChannel;
+ PCANCEL_ADAPTER_CHANNEL CancelAdapterChannel;
+ PMAP_TRANSFER_EX MapTransferEx;
+ PGET_SCATTER_GATHER_LIST_EX GetScatterGatherListEx;
+ PBUILD_SCATTER_GATHER_LIST_EX BuildScatterGatherListEx;
+ PFLUSH_ADAPTER_BUFFERS_EX FlushAdapterBuffersEx;
+ PFREE_ADAPTER_OBJECT FreeAdapterObject;
+ PCANCEL_MAPPED_TRANSFER CancelMappedTransfer;
+ PALLOCATE_DOMAIN_COMMON_BUFFER AllocateDomainCommonBuffer;
+ PFLUSH_DMA_BUFFER FlushDmaBuffer;
+ PJOIN_DMA_DOMAIN JoinDmaDomain;
+ PLEAVE_DMA_DOMAIN LeaveDmaDomain;
+ PGET_DMA_DOMAIN GetDmaDomain;
+ PALLOCATE_COMMON_BUFFER_WITH_BOUNDS AllocateCommonBufferWithBounds;
+ PALLOCATE_COMMON_BUFFER_VECTOR AllocateCommonBufferVector;
+ PGET_COMMON_BUFFER_FROM_VECTOR_BY_INDEX GetCommonBufferFromVectorByIndex;
+ PFREE_COMMON_BUFFER_FROM_VECTOR FreeCommonBufferFromVector;
+ PFREE_COMMON_BUFFER_VECTOR FreeCommonBufferVector;
+
+
+
+ PCREATE_COMMON_BUFFER_FROM_MDL CreateCommonBufferFromMdl;
+
+#line 39845 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+} DMA_OPERATIONS;
+
+
+
+
+
+
+
+__forceinline
+PVOID
+HalAllocateCommonBuffer(
+ PDMA_ADAPTER DmaAdapter,
+ ULONG Length,
+ PPHYSICAL_ADDRESS LogicalAddress,
+ BOOLEAN CacheEnabled
+ ){
+
+ PALLOCATE_COMMON_BUFFER allocateCommonBuffer;
+ PVOID commonBuffer;
+
+ allocateCommonBuffer = *(DmaAdapter)->DmaOperations->AllocateCommonBuffer;
+ ((void) 0);
+
+ commonBuffer = allocateCommonBuffer( DmaAdapter,
+ Length,
+ LogicalAddress,
+ CacheEnabled );
+
+ return commonBuffer;
+}
+
+
+
+__forceinline
+void
+HalFreeCommonBuffer(
+ PDMA_ADAPTER DmaAdapter,
+ ULONG Length,
+ PHYSICAL_ADDRESS LogicalAddress,
+ PVOID VirtualAddress,
+ BOOLEAN CacheEnabled
+ ){
+
+ PFREE_COMMON_BUFFER freeCommonBuffer;
+
+ freeCommonBuffer = *(DmaAdapter)->DmaOperations->FreeCommonBuffer;
+ ((void) 0);
+
+ freeCommonBuffer( DmaAdapter,
+ Length,
+ LogicalAddress,
+ VirtualAddress,
+ CacheEnabled );
+}
+
+
+
+
+
+__forceinline
+NTSTATUS
+IoAllocateAdapterChannel(
+ PDMA_ADAPTER DmaAdapter,
+ PDEVICE_OBJECT DeviceObject,
+ ULONG NumberOfMapRegisters,
+ PDRIVER_CONTROL ExecutionRoutine,
+ PVOID Context
+ ){
+
+ PALLOCATE_ADAPTER_CHANNEL allocateAdapterChannel;
+ NTSTATUS status;
+
+ allocateAdapterChannel =
+ *(DmaAdapter)->DmaOperations->AllocateAdapterChannel;
+
+ ((void) 0);
+
+ status = allocateAdapterChannel( DmaAdapter,
+ DeviceObject,
+ NumberOfMapRegisters,
+ ExecutionRoutine,
+ Context );
+
+ return status;
+}
+
+
+
+__forceinline
+BOOLEAN
+IoFlushAdapterBuffers(
+ PDMA_ADAPTER DmaAdapter,
+ PMDL Mdl,
+ PVOID MapRegisterBase,
+ PVOID CurrentVa,
+ ULONG Length,
+ BOOLEAN WriteToDevice
+ ){
+
+ PFLUSH_ADAPTER_BUFFERS flushAdapterBuffers;
+ BOOLEAN result;
+
+ flushAdapterBuffers = *(DmaAdapter)->DmaOperations->FlushAdapterBuffers;
+ ((void) 0);
+
+ result = flushAdapterBuffers( DmaAdapter,
+ Mdl,
+ MapRegisterBase,
+ CurrentVa,
+ Length,
+ WriteToDevice );
+ return result;
+}
+
+
+
+__forceinline
+void
+IoFreeAdapterChannel(
+ PDMA_ADAPTER DmaAdapter
+ ){
+
+ PFREE_ADAPTER_CHANNEL freeAdapterChannel;
+
+ freeAdapterChannel = *(DmaAdapter)->DmaOperations->FreeAdapterChannel;
+ ((void) 0);
+
+ freeAdapterChannel( DmaAdapter );
+}
+
+
+
+__forceinline
+void
+IoFreeMapRegisters(
+ PDMA_ADAPTER DmaAdapter,
+ PVOID MapRegisterBase,
+ ULONG NumberOfMapRegisters
+ ){
+
+ PFREE_MAP_REGISTERS freeMapRegisters;
+
+ freeMapRegisters = *(DmaAdapter)->DmaOperations->FreeMapRegisters;
+ ((void) 0);
+
+ freeMapRegisters( DmaAdapter,
+ MapRegisterBase,
+ NumberOfMapRegisters );
+}
+
+
+
+
+__forceinline
+PHYSICAL_ADDRESS
+IoMapTransfer(
+ PDMA_ADAPTER DmaAdapter,
+ PMDL Mdl,
+ PVOID MapRegisterBase,
+ PVOID CurrentVa,
+ PULONG Length,
+ BOOLEAN WriteToDevice
+ ){
+
+ PHYSICAL_ADDRESS physicalAddress;
+ PMAP_TRANSFER mapTransfer;
+
+ mapTransfer = *(DmaAdapter)->DmaOperations->MapTransfer;
+ ((void) 0);
+
+ physicalAddress = mapTransfer( DmaAdapter,
+ Mdl,
+ MapRegisterBase,
+ CurrentVa,
+ Length,
+ WriteToDevice );
+
+ return physicalAddress;
+}
+
+
+__forceinline
+ULONG
+HalGetDmaAlignment(
+ PDMA_ADAPTER DmaAdapter
+ )
+{
+ PGET_DMA_ALIGNMENT getDmaAlignment;
+ ULONG alignment;
+
+ getDmaAlignment = *(DmaAdapter)->DmaOperations->GetDmaAlignment;
+ ((void) 0);
+
+ alignment = getDmaAlignment( DmaAdapter );
+ return alignment;
+}
+
+
+
+__forceinline
+ULONG
+HalReadDmaCounter(
+ PDMA_ADAPTER DmaAdapter
+ )
+{
+ PREAD_DMA_COUNTER readDmaCounter;
+ ULONG counter;
+
+ readDmaCounter = *(DmaAdapter)->DmaOperations->ReadDmaCounter;
+ ((void) 0);
+
+ counter = readDmaCounter( DmaAdapter );
+ return counter;
+}
+
+#line 40062 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _IOMMU_DMA_DOMAIN IOMMU_DMA_DOMAIN, * PIOMMU_DMA_DOMAIN;
+
+
+
+typedef struct _IOMMU_DMA_PASID_DEVICE IOMMU_DMA_PASID_DEVICE,
+ *PIOMMU_DMA_PASID_DEVICE;
+
+#line 40086 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+typedef enum _FAULT_INFORMATION_ARCH {
+ FaultInformationInvalid,
+ FaultInformationArm64,
+ FaultInformationX64
+} FAULT_INFORMATION_ARCH, *PFAULT_INFORMATION_ARCH;
+
+typedef enum _FAULT_INFORMATION_ARM64_TYPE {
+ UnsupportedUpstreamTransaction,
+ AddressSizeFault,
+ TlbMatchConflict,
+ ExternalFault,
+ PermissionFault,
+ AccessFlagFault,
+ TranslationFault,
+ MaxFaultType
+} FAULT_INFORMATION_ARM64_TYPE, *PFAULT_INFORMATION_ARM64_TYPE;
+
+typedef enum _FAULT_INFORMATION_ARM64_TYPE FAULT_INFORMATION_X64_TYPE,
+ *PFAULT_INFORMATION_X64_TYPE;
+
+typedef struct _FAULT_INFORMATION_X64_FLAGS {
+ ULONG FaultAddressValid : 1;
+ ULONG Reserved : 31;
+} FAULT_INFORMATION_X64_FLAGS, *PFAULT_INFORMATION_X64_FLAGS;
+
+typedef struct _FAULT_INFORMATION_ARM64_FLAGS {
+ ULONG WriteNotRead : 1;
+ ULONG InstructionNotData : 1;
+ ULONG Privileged : 1;
+ ULONG FaultAddressValid : 1;
+ ULONG Reserved : 28;
+} FAULT_INFORMATION_ARM64_FLAGS, *PFAULT_INFORMATION_ARM64_FLAGS;
+
+typedef struct _FAULT_INFORMATION_X64 {
+ PVOID DomainHandle;
+ PVOID FaultAddress;
+ FAULT_INFORMATION_X64_FLAGS Flags;
+ FAULT_INFORMATION_X64_TYPE Type;
+ ULONG64 IommuBaseAddress;
+ ULONG PciSegment;
+} FAULT_INFORMATION_X64, *PFAULT_INFORMATION_X64;
+
+typedef struct _FAULT_INFORMATION_ARM64 {
+ PVOID DomainHandle;
+ PVOID FaultAddress;
+ PDEVICE_OBJECT PhysicalDeviceObject;
+ ULONG InputMappingId;
+ FAULT_INFORMATION_ARM64_FLAGS Flags;
+ FAULT_INFORMATION_ARM64_TYPE Type;
+ ULONG64 IommuBaseAddress;
+} FAULT_INFORMATION_ARM64, *PFAULT_INFORMATION_ARM64;
+
+typedef struct _FAULT_INFORMATION {
+ FAULT_INFORMATION_ARCH Type;
+ BOOLEAN IsStage1;
+ union {
+ FAULT_INFORMATION_ARM64 Arm64;
+ FAULT_INFORMATION_X64 X64;
+ };
+} FAULT_INFORMATION, *PFAULT_INFORMATION;
+
+
+
+
+
+typedef enum _DOMAIN_CONFIGURATION_ARCH {
+ DomainConfigurationArm64,
+ DomainConfigurationX64,
+ DomainConfigurationInvalid,
+} DOMAIN_CONFIGURATION_ARCH, *PDOMAIN_CONFIGURATION_ARCH;
+
+typedef struct _DOMAIN_CONFIGURATION_ARM64 {
+ PHYSICAL_ADDRESS Ttbr0;
+ PHYSICAL_ADDRESS Ttbr1;
+ ULONG Mair0;
+ ULONG Mair1;
+ UCHAR InputSize0;
+ UCHAR InputSize1;
+ BOOLEAN CoherentTableWalks;
+ BOOLEAN TranslationEnabled;
+} DOMAIN_CONFIGURATION_ARM64, *PDOMAIN_CONFIGURATION_ARM64;
+
+typedef struct _DOMAIN_CONFIGURATION_X64 {
+ PHYSICAL_ADDRESS FirstLevelPageTableRoot;
+ BOOLEAN TranslationEnabled;
+} DOMAIN_CONFIGURATION_X64, *PDOMAIN_CONFIGURATION_X64;
+
+
+typedef struct _DOMAIN_CONFIGURATION {
+ DOMAIN_CONFIGURATION_ARCH Type;
+ union {
+ DOMAIN_CONFIGURATION_ARM64 Arm64;
+ DOMAIN_CONFIGURATION_X64 X64;
+ };
+} DOMAIN_CONFIGURATION, *PDOMAIN_CONFIGURATION;
+
+
+
+
+
+typedef void IOMMU_DEVICE_FAULT_HANDLER(
+ PVOID Context,
+ PFAULT_INFORMATION FaultInformation
+ );
+
+typedef IOMMU_DEVICE_FAULT_HANDLER *PIOMMU_DEVICE_FAULT_HANDLER;
+
+typedef struct _DEVICE_FAULT_CONFIGURATION {
+
+
+
+
+
+
+ PIOMMU_DEVICE_FAULT_HANDLER FaultHandler;
+
+
+
+
+
+ PVOID FaultContext;
+} DEVICE_FAULT_CONFIGURATION, *PDEVICE_FAULT_CONFIGURATION;
+
+
+
+typedef ULONGLONG IOMMU_DMA_LOGICAL_ADDRESS, *PIOMMU_DMA_LOGICAL_ADDRESS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _IOMMU_DMA_DOMAIN_TYPE {
+ DomainTypeTranslate,
+ DomainTypePassThrough,
+ DomainTypeUnmanaged,
+ DomainTypeTranslateS1,
+ DomainTypeMax,
+} IOMMU_DMA_DOMAIN_TYPE, *PIOMMU_DMA_DOMAIN_TYPE;
+
+typedef union _IOMMU_DMA_DOMAIN_CREATION_FLAGS {
+ struct {
+ ULONGLONG Reserved : 64;
+ };
+
+ ULONGLONG AsUlonglong;
+} IOMMU_DMA_DOMAIN_CREATION_FLAGS, *PIOMMU_DMA_DOMAIN_CREATION_FLAGS;
+
+typedef enum _IOMMU_DEVICE_CREATION_CONFIGURATION_TYPE {
+ IommuDeviceCreationConfigTypeNone,
+ IommuDeviceCreationConfigTypeAcpi,
+ IommuDeviceCreationConfigTypeDeviceId,
+
+
+
+ IommuDeviceCreationConfigTypePasid,
+
+#line 40266 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ IommuDeviceCreationConfigTypeMax
+} IOMMU_DEVICE_CREATION_CONFIGURATION_TYPE,
+ *PIOMMU_DEVICE_CREATION_CONFIGURATION_TYPE;
+
+typedef struct _IOMMU_DEVICE_CREATION_CONFIGURATION_ACPI {
+ UINT32 InputMappingBase;
+ UINT32 MappingsCount;
+} IOMMU_DEVICE_CREATION_CONFIGURATION_ACPI,
+ *PIOMMU_DEVICE_CREATION_CONFIGURATION_ACPI;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _IOMMU_PASID_CONFIGURATION_TYPE {
+ PasidConfigTypeDefaultPasidOnly,
+ PasidConfigTypePasidTaggedDma,
+ PasidConfigTypeMax,
+} IOMMU_PASID_CONFIGURATION_TYPE, *PIOMMU_PASID_CONFIGURATION_TYPE;
+
+typedef struct _IOMMU_DEVICE_CREATION_CONFIGURATION_PASID {
+
+
+
+
+
+ IOMMU_PASID_CONFIGURATION_TYPE ConfigType;
+
+
+
+
+
+
+ BOOLEAN SuppressPasidFaults;
+} IOMMU_DEVICE_CREATION_CONFIGURATION_PASID,
+ *PIOMMU_DEVICE_CREATION_CONFIGURATION_PASID;
+
+#line 40317 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef struct _IOMMU_DEVICE_CREATION_CONFIGURATION {
+ LIST_ENTRY NextConfiguration;
+ IOMMU_DEVICE_CREATION_CONFIGURATION_TYPE ConfigType;
+ union {
+ IOMMU_DEVICE_CREATION_CONFIGURATION_ACPI Acpi;
+ PVOID DeviceId;
+
+
+
+ IOMMU_DEVICE_CREATION_CONFIGURATION_PASID Pasid;
+
+#line 40330 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ };
+} IOMMU_DEVICE_CREATION_CONFIGURATION, *PIOMMU_DEVICE_CREATION_CONFIGURATION;
+
+
+
+
+
+typedef enum _IOMMU_MAP_PHYSICAL_ADDRESS_TYPE {
+ MapPhysicalAddressTypeMdl,
+ MapPhysicalAddressTypeContiguousRange,
+ MapPhysicalAddressTypePfn,
+ MapPhysicalAddressTypeMax,
+} IOMMU_MAP_PHYSICAL_ADDRESS_TYPE, *PIOMMU_MAP_PHYSICAL_ADDRESS_TYPE;
+
+typedef struct _IOMMU_MAP_PHYSICAL_ADDRESS {
+ IOMMU_MAP_PHYSICAL_ADDRESS_TYPE MapType;
+ union {
+ struct {
+ PMDL Mdl;
+ } Mdl;
+
+ struct {
+ PHYSICAL_ADDRESS Base;
+ SIZE_T Size;
+ } ContiguousRange;
+
+ struct {
+ PPFN_NUMBER PageFrame;
+ SIZE_T NumberOfPages;
+ } PfnArray;
+ };
+} IOMMU_MAP_PHYSICAL_ADDRESS, *PIOMMU_MAP_PHYSICAL_ADDRESS;
+
+typedef struct _IOMMU_DMA_RESERVED_REGION {
+ struct _IOMMU_DMA_RESERVED_REGION *RegionNext;
+ IOMMU_DMA_LOGICAL_ADDRESS Base;
+ SIZE_T NumberOfPages;
+ BOOLEAN ShouldMap;
+} IOMMU_DMA_RESERVED_REGION, *PIOMMU_DMA_RESERVED_REGION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _IOMMU_DMA_LOGICAL_ALLOCATOR_TYPE {
+ IommuDmaLogicalAllocatorNone,
+ IommuDmaLogicalAllocatorBuddy,
+
+
+
+
+
+ IommuDmaLogicalAllocatorMax
+} IOMMU_DMA_LOGICAL_ALLOCATOR_TYPE, *PIOMMU_DMA_LOGICAL_ALLOCATOR_TYPE;
+
+typedef struct _IOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG {
+ IOMMU_DMA_LOGICAL_ALLOCATOR_TYPE LogicalAllocatorType;
+
+
+
+
+
+ union {
+ struct {
+ ULONG AddressWidth;
+ } BuddyAllocatorConfig;
+ };
+} IOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG, *PIOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG;
+
+typedef struct _IOMMU_DMA_LOGICAL_ADDRESS_TOKEN {
+ IOMMU_DMA_LOGICAL_ADDRESS LogicalAddressBase;
+ SIZE_T Size;
+} IOMMU_DMA_LOGICAL_ADDRESS_TOKEN, *PIOMMU_DMA_LOGICAL_ADDRESS_TOKEN;
+
+typedef struct _IOMMU_DMA_LOGICAL_ADDRESS_TOKEN_MAPPED_SEGMENT {
+ PIOMMU_DMA_LOGICAL_ADDRESS_TOKEN OwningToken;
+ SIZE_T Offset;
+ SIZE_T Size;
+} IOMMU_DMA_LOGICAL_ADDRESS_TOKEN_MAPPED_SEGMENT,
+ *PIOMMU_DMA_LOGICAL_ADDRESS_TOKEN_MAPPED_SEGMENT;
+
+
+
+
+
+typedef union _IOMMU_INTERFACE_STATE_CHANGE_FIELDS {
+ struct {
+ ULONG AvailableDomainTypes : 1;
+ ULONG Reserved : 31;
+ } ;
+
+ ULONG AsULONG;
+} IOMMU_INTERFACE_STATE_CHANGE_FIELDS, *PIOMMU_INTERFACE_STATE_CHANGE_FIELDS;
+
+typedef struct _IOMMU_INTERFACE_STATE_CHANGE {
+ IOMMU_INTERFACE_STATE_CHANGE_FIELDS PresentFields;
+ ULONG AvailableDomainTypes;
+} IOMMU_INTERFACE_STATE_CHANGE, *PIOMMU_INTERFACE_STATE_CHANGE;
+
+typedef
+
+
+
+void
+IOMMU_INTERFACE_STATE_CHANGE_CALLBACK (
+ PIOMMU_INTERFACE_STATE_CHANGE StateChange,
+ PVOID Context
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_INTERFACE_STATE_CHANGE_CALLBACK
+ *PIOMMU_INTERFACE_STATE_CHANGE_CALLBACK;
+
+#line 40474 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+typedef struct _IOMMU_DMA_DEVICE_INFORMATION {
+ BOOLEAN DefaultPasidEnabled;
+ BOOLEAN PasidTaggedDmaEnabled;
+ BOOLEAN PasidFaultsSuppressed;
+} IOMMU_DMA_DEVICE_INFORMATION, *PIOMMU_DMA_DEVICE_INFORMATION;
+
+
+
+
+
+#line 40488 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+typedef
+
+
+NTSTATUS
+IOMMU_DOMAIN_CREATE (
+ BOOLEAN OsManagedPageTable,
+ PIOMMU_DMA_DOMAIN *DomainOut
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_DOMAIN_CREATE *PIOMMU_DOMAIN_CREATE;
+
+typedef
+
+
+NTSTATUS
+IOMMU_DOMAIN_DELETE (
+ PIOMMU_DMA_DOMAIN Domain
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_DOMAIN_DELETE *PIOMMU_DOMAIN_DELETE;
+
+typedef
+
+
+NTSTATUS
+IOMMU_DOMAIN_ATTACH_DEVICE (
+ PIOMMU_DMA_DOMAIN Domain,
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ ULONG InputMappingIdBase,
+ ULONG MappingCount
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_DOMAIN_ATTACH_DEVICE *PIOMMU_DOMAIN_ATTACH_DEVICE;
+
+typedef
+
+
+NTSTATUS
+IOMMU_DOMAIN_DETACH_DEVICE (
+ PIOMMU_DMA_DOMAIN Domain,
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ ULONG InputMappingId
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_DOMAIN_DETACH_DEVICE *PIOMMU_DOMAIN_DETACH_DEVICE;
+
+typedef
+NTSTATUS
+IOMMU_SET_DEVICE_FAULT_REPORTING (
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ ULONG InputMappingIdBase,
+ BOOLEAN Enable,
+ PDEVICE_FAULT_CONFIGURATION FaultConfig
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_SET_DEVICE_FAULT_REPORTING *PIOMMU_SET_DEVICE_FAULT_REPORTING;
+
+typedef
+NTSTATUS
+IOMMU_DOMAIN_CONFIGURE (
+ PIOMMU_DMA_DOMAIN Domain,
+ PDOMAIN_CONFIGURATION Configuration
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_DOMAIN_CONFIGURE *PIOMMU_DOMAIN_CONFIGURE;
+
+typedef
+
+NTSTATUS
+IOMMU_FLUSH_DOMAIN (
+ PIOMMU_DMA_DOMAIN Domain
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_FLUSH_DOMAIN *PIOMMU_FLUSH_DOMAIN;
+
+typedef
+NTSTATUS
+IOMMU_FLUSH_DOMAIN_VA_LIST (
+ PIOMMU_DMA_DOMAIN Domain,
+ BOOLEAN LastLevel,
+ ULONG Number,
+ PVOID VaList
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_FLUSH_DOMAIN_VA_LIST *PIOMMU_FLUSH_DOMAIN_VA_LIST;
+
+typedef struct _INPUT_MAPPING_ELEMENT {
+ ULONG InputMappingId;
+} INPUT_MAPPING_ELEMENT, *PINPUT_MAPPING_ELEMENT;
+
+typedef
+NTSTATUS
+IOMMU_QUERY_INPUT_MAPPINGS (
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ PINPUT_MAPPING_ELEMENT Buffer,
+ ULONG BufferLength,
+ PULONG ReturnLength
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_QUERY_INPUT_MAPPINGS *PIOMMU_QUERY_INPUT_MAPPINGS;
+
+typedef
+
+
+NTSTATUS
+IOMMU_MAP_LOGICAL_RANGE (
+ PIOMMU_DMA_DOMAIN Domain,
+ ULONG Permissions,
+ PMDL Mdl,
+ ULONGLONG LogicalAddress
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_MAP_LOGICAL_RANGE *PIOMMU_MAP_LOGICAL_RANGE;
+
+typedef
+
+
+NTSTATUS
+IOMMU_UNMAP_LOGICAL_RANGE (
+ PIOMMU_DMA_DOMAIN Domain,
+ ULONGLONG LogicalAddress,
+ ULONGLONG NumberOfPages
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_UNMAP_LOGICAL_RANGE *PIOMMU_UNMAP_LOGICAL_RANGE;
+
+typedef
+
+
+NTSTATUS
+IOMMU_MAP_IDENTITY_RANGE (
+ PIOMMU_DMA_DOMAIN Domain,
+ ULONG Permissions,
+ PMDL Mdl
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_MAP_IDENTITY_RANGE *PIOMMU_MAP_IDENTITY_RANGE;
+
+typedef
+
+
+NTSTATUS
+IOMMU_UNMAP_IDENTITY_RANGE (
+ PIOMMU_DMA_DOMAIN Domain,
+ PMDL Mdl
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_UNMAP_IDENTITY_RANGE *PIOMMU_UNMAP_IDENTITY_RANGE;
+
+
+
+typedef
+
+
+NTSTATUS
+IOMMU_DOMAIN_CREATE_EX (
+ IOMMU_DMA_DOMAIN_TYPE DomainType,
+ IOMMU_DMA_DOMAIN_CREATION_FLAGS Flags,
+ PIOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG LogicalAllocatorConfig,
+ PIOMMU_DMA_RESERVED_REGION ReservedRegions,
+ PIOMMU_DMA_DOMAIN *DomainOut
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_DOMAIN_CREATE_EX *PIOMMU_DOMAIN_CREATE_EX;
+
+typedef
+
+
+NTSTATUS
+IOMMU_DOMAIN_ATTACH_DEVICE_EX (
+ PIOMMU_DMA_DOMAIN Domain,
+ PIOMMU_DMA_DEVICE DmaDevice
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_DOMAIN_ATTACH_DEVICE_EX *PIOMMU_DOMAIN_ATTACH_DEVICE_EX;
+
+typedef
+
+
+NTSTATUS
+IOMMU_DOMAIN_DETACH_DEVICE_EX (
+ PIOMMU_DMA_DEVICE DmaDevice
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_DOMAIN_DETACH_DEVICE_EX *PIOMMU_DOMAIN_DETACH_DEVICE_EX;
+
+typedef
+
+
+NTSTATUS
+IOMMU_MAP_LOGICAL_RANGE_EX (
+ PIOMMU_DMA_DOMAIN Domain,
+ ULONG Permissions,
+ PIOMMU_MAP_PHYSICAL_ADDRESS PhysicalAddressToMap,
+ PIOMMU_DMA_LOGICAL_ADDRESS ExplicitLogicalAddress,
+ PIOMMU_DMA_LOGICAL_ADDRESS MinLogicalAddress,
+ PIOMMU_DMA_LOGICAL_ADDRESS MaxLogicalAddress,
+ PIOMMU_DMA_LOGICAL_ADDRESS LogicalAddressOut
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_MAP_LOGICAL_RANGE_EX *PIOMMU_MAP_LOGICAL_RANGE_EX;
+
+typedef
+
+
+NTSTATUS
+IOMMU_MAP_IDENTITY_RANGE_EX (
+ PIOMMU_DMA_DOMAIN Domain,
+ ULONG Permissions,
+ PIOMMU_MAP_PHYSICAL_ADDRESS PhysicalAddressToMap
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_MAP_IDENTITY_RANGE_EX *PIOMMU_MAP_IDENTITY_RANGE_EX;
+
+typedef
+
+
+NTSTATUS
+IOMMU_UNMAP_IDENTITY_RANGE_EX (
+ PIOMMU_DMA_DOMAIN Domain,
+ PIOMMU_MAP_PHYSICAL_ADDRESS MappedPhysicalAddress
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_UNMAP_IDENTITY_RANGE_EX *PIOMMU_UNMAP_IDENTITY_RANGE_EX;
+
+typedef
+
+
+void
+IOMMU_DEVICE_QUERY_DOMAIN_TYPES (
+ PIOMMU_DMA_DEVICE DmaDevice,
+ PULONG AvailableDomains
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_DEVICE_QUERY_DOMAIN_TYPES *PIOMMU_DEVICE_QUERY_DOMAIN_TYPES;
+
+typedef
+
+
+NTSTATUS
+IOMMU_REGISTER_INTERFACE_STATE_CHANGE_CALLBACK (
+ PIOMMU_INTERFACE_STATE_CHANGE_CALLBACK StateChangeCallback,
+ PVOID Context,
+ PIOMMU_DMA_DEVICE DmaDevice,
+ PIOMMU_INTERFACE_STATE_CHANGE_FIELDS StateFields
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_REGISTER_INTERFACE_STATE_CHANGE_CALLBACK
+ *PIOMMU_REGISTER_INTERFACE_STATE_CHANGE_CALLBACK;
+
+typedef
+
+
+NTSTATUS
+IOMMU_UNREGISTER_INTERFACE_STATE_CHANGE_CALLBACK (
+ PIOMMU_INTERFACE_STATE_CHANGE_CALLBACK StateChangeCallback,
+ PIOMMU_DMA_DEVICE DmaDevice
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_UNREGISTER_INTERFACE_STATE_CHANGE_CALLBACK
+ *PIOMMU_UNREGISTER_INTERFACE_STATE_CHANGE_CALLBACK;
+
+typedef
+NTSTATUS
+IOMMU_RESERVE_LOGICAL_ADDRESS_RANGE (
+ PIOMMU_DMA_DOMAIN Domain,
+ SIZE_T Size,
+ PIOMMU_DMA_LOGICAL_ADDRESS ExplicitLogicalAddress,
+ PIOMMU_DMA_LOGICAL_ADDRESS MinLogicalAddress,
+ PIOMMU_DMA_LOGICAL_ADDRESS MaxLogicalAddress,
+ PIOMMU_DMA_LOGICAL_ADDRESS_TOKEN *LogicalAddressToken
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_RESERVE_LOGICAL_ADDRESS_RANGE *PIOMMU_RESERVE_LOGICAL_ADDRESS_RANGE;
+
+typedef
+NTSTATUS
+IOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE (
+ PIOMMU_DMA_LOGICAL_ADDRESS_TOKEN LogicalAddressToken
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE *PIOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE;
+
+typedef
+NTSTATUS
+IOMMU_MAP_RESERVED_LOGICAL_RANGE (
+ PIOMMU_DMA_LOGICAL_ADDRESS_TOKEN LogicalAddressToken,
+ SIZE_T Offset,
+ ULONG Permissions,
+ PIOMMU_MAP_PHYSICAL_ADDRESS PhysicalAddressToMap,
+ PIOMMU_DMA_LOGICAL_ADDRESS_TOKEN_MAPPED_SEGMENT MappedSegment
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_MAP_RESERVED_LOGICAL_RANGE *PIOMMU_MAP_RESERVED_LOGICAL_RANGE;
+
+typedef
+NTSTATUS
+IOMMU_UNMAP_RESERVED_LOGICAL_RANGE (
+ PIOMMU_DMA_LOGICAL_ADDRESS_TOKEN_MAPPED_SEGMENT MappedSegment
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_UNMAP_RESERVED_LOGICAL_RANGE *PIOMMU_UNMAP_RESERVED_LOGICAL_RANGE;
+
+typedef
+
+
+NTSTATUS
+IOMMU_DEVICE_CREATE (
+ PDEVICE_OBJECT DeviceObject,
+ PIOMMU_DEVICE_CREATION_CONFIGURATION DeviceConfig,
+ PIOMMU_DMA_DEVICE *DmaDeviceOut
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_DEVICE_CREATE *PIOMMU_DEVICE_CREATE;
+
+typedef
+
+
+NTSTATUS
+IOMMU_DEVICE_DELETE (
+ PIOMMU_DMA_DEVICE DmaDevice
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_DEVICE_DELETE *PIOMMU_DEVICE_DELETE;
+
+typedef
+NTSTATUS
+IOMMU_SET_DEVICE_FAULT_REPORTING_EX (
+ PIOMMU_DMA_DEVICE DmaDevice,
+ ULONG InputMappingIdBase,
+ BOOLEAN Enable,
+ PDEVICE_FAULT_CONFIGURATION FaultConfig
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_SET_DEVICE_FAULT_REPORTING_EX
+ *PIOMMU_SET_DEVICE_FAULT_REPORTING_EX;
+
+#line 41694 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+typedef
+
+
+NTSTATUS
+IOMMU_PASID_DEVICE_CREATE (
+ PIOMMU_DMA_DEVICE DmaDevice,
+ PIOMMU_DMA_PASID_DEVICE *PasidDeviceOut,
+ PULONG AsidOut
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_PASID_DEVICE_CREATE *PIOMMU_PASID_DEVICE_CREATE;
+
+typedef
+
+
+NTSTATUS
+IOMMU_PASID_DEVICE_DELETE (
+ PIOMMU_DMA_PASID_DEVICE PasidDevice
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_PASID_DEVICE_DELETE *PIOMMU_PASID_DEVICE_DELETE;
+
+typedef
+
+
+NTSTATUS
+IOMMU_DOMAIN_ATTACH_PASID_DEVICE (
+ PIOMMU_DMA_DOMAIN Domain,
+ PIOMMU_DMA_PASID_DEVICE PasidDevice
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_DOMAIN_ATTACH_PASID_DEVICE *PIOMMU_DOMAIN_ATTACH_PASID_DEVICE;
+
+typedef
+
+
+NTSTATUS
+IOMMU_DOMAIN_DETACH_PASID_DEVICE (
+ PIOMMU_DMA_PASID_DEVICE PasidDevice
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_DOMAIN_DETACH_PASID_DEVICE *PIOMMU_DOMAIN_DETACH_PASID_DEVICE;
+
+typedef
+
+
+NTSTATUS
+IOMMU_DEVICE_QUERY_INFORMATION (
+ PIOMMU_DMA_DEVICE DmaDevice,
+ ULONG Size,
+ PULONG BytesWritten,
+ PIOMMU_DMA_DEVICE_INFORMATION Buffer
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IOMMU_DEVICE_QUERY_INFORMATION *PIOMMU_DEVICE_QUERY_INFORMATION;
+
+#line 41893 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+typedef struct _DMA_IOMMU_INTERFACE {
+ ULONG Version;
+ PIOMMU_DOMAIN_CREATE CreateDomain;
+ PIOMMU_DOMAIN_DELETE DeleteDomain;
+ PIOMMU_DOMAIN_ATTACH_DEVICE AttachDevice;
+ PIOMMU_DOMAIN_DETACH_DEVICE DetachDevice;
+ PIOMMU_FLUSH_DOMAIN FlushDomain;
+ PIOMMU_FLUSH_DOMAIN_VA_LIST FlushDomainByVaList;
+ PIOMMU_QUERY_INPUT_MAPPINGS QueryInputMappings;
+ PIOMMU_MAP_LOGICAL_RANGE MapLogicalRange;
+ PIOMMU_UNMAP_LOGICAL_RANGE UnmapLogicalRange;
+ PIOMMU_MAP_IDENTITY_RANGE MapIdentityRange;
+ PIOMMU_UNMAP_IDENTITY_RANGE UnmapIdentityRange;
+ PIOMMU_SET_DEVICE_FAULT_REPORTING SetDeviceFaultReporting;
+ PIOMMU_DOMAIN_CONFIGURE ConfigureDomain;
+} DMA_IOMMU_INTERFACE, *PDMA_IOMMU_INTERFACE;
+
+#line 41915 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 41934 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef struct _DMA_IOMMU_INTERFACE_V1 {
+ PIOMMU_DOMAIN_CREATE CreateDomain;
+ PIOMMU_DOMAIN_DELETE DeleteDomain;
+ PIOMMU_DOMAIN_ATTACH_DEVICE AttachDevice;
+ PIOMMU_DOMAIN_DETACH_DEVICE DetachDevice;
+ PIOMMU_FLUSH_DOMAIN FlushDomain;
+ PIOMMU_FLUSH_DOMAIN_VA_LIST FlushDomainByVaList;
+ PIOMMU_QUERY_INPUT_MAPPINGS QueryInputMappings;
+ PIOMMU_MAP_LOGICAL_RANGE MapLogicalRange;
+ PIOMMU_UNMAP_LOGICAL_RANGE UnmapLogicalRange;
+ PIOMMU_MAP_IDENTITY_RANGE MapIdentityRange;
+ PIOMMU_UNMAP_IDENTITY_RANGE UnmapIdentityRange;
+ PIOMMU_SET_DEVICE_FAULT_REPORTING SetDeviceFaultReporting;
+ PIOMMU_DOMAIN_CONFIGURE ConfigureDomain;
+} DMA_IOMMU_INTERFACE_V1, *PDMA_IOMMU_INTERFACE_V1;
+
+typedef struct _DMA_IOMMU_INTERFACE_V2 {
+ PIOMMU_DOMAIN_CREATE_EX CreateDomainEx;
+ PIOMMU_DOMAIN_DELETE DeleteDomain;
+ PIOMMU_DOMAIN_ATTACH_DEVICE_EX AttachDeviceEx;
+ PIOMMU_DOMAIN_DETACH_DEVICE_EX DetachDeviceEx;
+ PIOMMU_FLUSH_DOMAIN FlushDomain;
+ PIOMMU_FLUSH_DOMAIN_VA_LIST FlushDomainByVaList;
+ PIOMMU_QUERY_INPUT_MAPPINGS QueryInputMappings;
+ PIOMMU_MAP_LOGICAL_RANGE_EX MapLogicalRangeEx;
+ PIOMMU_UNMAP_LOGICAL_RANGE UnmapLogicalRange;
+ PIOMMU_MAP_IDENTITY_RANGE_EX MapIdentityRangeEx;
+ PIOMMU_UNMAP_IDENTITY_RANGE_EX UnmapIdentityRangeEx;
+ PIOMMU_SET_DEVICE_FAULT_REPORTING_EX SetDeviceFaultReportingEx;
+ PIOMMU_DOMAIN_CONFIGURE ConfigureDomain;
+ PIOMMU_DEVICE_QUERY_DOMAIN_TYPES QueryAvailableDomainTypes;
+ PIOMMU_REGISTER_INTERFACE_STATE_CHANGE_CALLBACK
+ RegisterInterfaceStateChangeCallback;
+
+ PIOMMU_UNREGISTER_INTERFACE_STATE_CHANGE_CALLBACK
+ UnregisterInterfaceStateChangeCallback;
+
+ PIOMMU_RESERVE_LOGICAL_ADDRESS_RANGE ReserveLogicalAddressRange;
+ PIOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE FreeReservedLogicalAddressRange;
+ PIOMMU_MAP_RESERVED_LOGICAL_RANGE MapReservedLogicalRange;
+ PIOMMU_UNMAP_RESERVED_LOGICAL_RANGE UnmapReservedLogicalRange;
+ PIOMMU_DEVICE_CREATE CreateDevice;
+ PIOMMU_DEVICE_DELETE DeleteDevice;
+} DMA_IOMMU_INTERFACE_V2, *PDMA_IOMMU_INTERFACE_V2;
+
+
+
+typedef struct _DMA_IOMMU_INTERFACE_V3 {
+ PIOMMU_DOMAIN_CREATE_EX CreateDomainEx;
+ PIOMMU_DOMAIN_DELETE DeleteDomain;
+ PIOMMU_DOMAIN_ATTACH_DEVICE_EX AttachDeviceEx;
+ PIOMMU_DOMAIN_DETACH_DEVICE_EX DetachDeviceEx;
+ PIOMMU_FLUSH_DOMAIN FlushDomain;
+ PIOMMU_FLUSH_DOMAIN_VA_LIST FlushDomainByVaList;
+ PIOMMU_QUERY_INPUT_MAPPINGS QueryInputMappings;
+ PIOMMU_MAP_LOGICAL_RANGE_EX MapLogicalRangeEx;
+ PIOMMU_UNMAP_LOGICAL_RANGE UnmapLogicalRange;
+ PIOMMU_MAP_IDENTITY_RANGE_EX MapIdentityRangeEx;
+ PIOMMU_UNMAP_IDENTITY_RANGE_EX UnmapIdentityRangeEx;
+ PIOMMU_SET_DEVICE_FAULT_REPORTING_EX SetDeviceFaultReportingEx;
+ PIOMMU_DOMAIN_CONFIGURE ConfigureDomain;
+ PIOMMU_DEVICE_QUERY_DOMAIN_TYPES QueryAvailableDomainTypes;
+ PIOMMU_REGISTER_INTERFACE_STATE_CHANGE_CALLBACK
+ RegisterInterfaceStateChangeCallback;
+
+ PIOMMU_UNREGISTER_INTERFACE_STATE_CHANGE_CALLBACK
+ UnregisterInterfaceStateChangeCallback;
+
+ PIOMMU_RESERVE_LOGICAL_ADDRESS_RANGE ReserveLogicalAddressRange;
+ PIOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE FreeReservedLogicalAddressRange;
+ PIOMMU_MAP_RESERVED_LOGICAL_RANGE MapReservedLogicalRange;
+ PIOMMU_UNMAP_RESERVED_LOGICAL_RANGE UnmapReservedLogicalRange;
+ PIOMMU_DEVICE_CREATE CreateDevice;
+ PIOMMU_DEVICE_DELETE DeleteDevice;
+ PIOMMU_PASID_DEVICE_CREATE CreatePasidDevice;
+ PIOMMU_PASID_DEVICE_DELETE DeletePasidDevice;
+ PIOMMU_DOMAIN_ATTACH_PASID_DEVICE AttachPasidDevice;
+ PIOMMU_DOMAIN_DETACH_PASID_DEVICE DetachPasidDevice;
+ PIOMMU_DEVICE_QUERY_INFORMATION QueryDeviceInfo;
+} DMA_IOMMU_INTERFACE_V3, *PDMA_IOMMU_INTERFACE_V3;
+
+#line 42017 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef struct _DMA_IOMMU_INTERFACE_EX {
+ SIZE_T Size;
+ ULONG Version;
+ union {
+ DMA_IOMMU_INTERFACE_V1 V1;
+ DMA_IOMMU_INTERFACE_V2 V2;
+
+
+
+ DMA_IOMMU_INTERFACE_V3 V3;
+
+#line 42030 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+ };
+} DMA_IOMMU_INTERFACE_EX, *PDMA_IOMMU_INTERFACE_EX;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef char __C_ASSERT__[((((LONG)(LONG_PTR)&(((DMA_IOMMU_INTERFACE_EX *)0)->V1)) + sizeof(DMA_IOMMU_INTERFACE_V1)) == 0x78)?1:-1];
+typedef char __C_ASSERT__[((((LONG)(LONG_PTR)&(((DMA_IOMMU_INTERFACE_EX *)0)->V2)) + sizeof(DMA_IOMMU_INTERFACE_V2)) == 0xc0)?1:-1];
+
+#line 42053 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+typedef char __C_ASSERT__[((((LONG)(LONG_PTR)&(((DMA_IOMMU_INTERFACE_EX *)0)->V3)) + sizeof(DMA_IOMMU_INTERFACE_V3)) == 0xe8)?1:-1];
+
+#line 42064 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 42066 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 42068 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+PoSetHiberRange (
+ PVOID MemoryMap,
+ ULONG Flags,
+ PVOID Address,
+ ULONG_PTR Length,
+ ULONG Tag
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+PoSetSystemState (
+ EXECUTION_STATE Flags
+ );
+#line 42097 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+PVOID
+PoRegisterSystemState (
+ PVOID StateHandle,
+ EXECUTION_STATE Flags
+ );
+#line 42108 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PoCreatePowerRequest (
+ PVOID *PowerRequest,
+ PDEVICE_OBJECT DeviceObject,
+ PCOUNTED_REASON_CONTEXT Context
+ );
+#line 42119 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PoSetPowerRequest (
+ PVOID PowerRequest,
+ POWER_REQUEST_TYPE Type
+ );
+#line 42129 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PoClearPowerRequest (
+ PVOID PowerRequest,
+ POWER_REQUEST_TYPE Type
+ );
+#line 42139 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+PoDeletePowerRequest (
+ PVOID PowerRequest
+ );
+#line 42148 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+typedef
+
+
+
+void
+REQUEST_POWER_COMPLETE (
+ PDEVICE_OBJECT DeviceObject,
+ UCHAR MinorFunction,
+ POWER_STATE PowerState,
+ PVOID Context,
+ PIO_STATUS_BLOCK IoStatus
+ );
+
+typedef REQUEST_POWER_COMPLETE *PREQUEST_POWER_COMPLETE;
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PoRequestPowerIrp (
+ PDEVICE_OBJECT DeviceObject,
+ UCHAR MinorFunction,
+ POWER_STATE PowerState,
+ PREQUEST_POWER_COMPLETE CompletionFunction,
+ PVOID Context,
+ PIRP *Irp
+ );
+#line 42178 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+PoSetSystemWake (
+ PIRP Irp
+ );
+#line 42187 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+PoSetSystemWakeDevice(
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 42196 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+PoGetSystemWake (
+ PIRP Irp
+ );
+#line 42205 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+void
+PoUnregisterSystemState (
+ PVOID StateHandle
+ );
+#line 42215 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+POWER_STATE
+PoSetPowerState (
+ PDEVICE_OBJECT DeviceObject,
+ POWER_STATE_TYPE Type,
+ POWER_STATE State
+ );
+#line 42227 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PoCallDriver (
+ PDEVICE_OBJECT DeviceObject,
+ PIRP Irp
+ );
+#line 42237 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+PoStartNextPowerIrp(
+ PIRP Irp
+ );
+#line 42246 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+PULONG
+PoRegisterDeviceForIdleDetection (
+ PDEVICE_OBJECT DeviceObject,
+ ULONG ConservationIdleTime,
+ ULONG PerformanceIdleTime,
+ DEVICE_POWER_STATE State
+ );
+#line 42258 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+PoSetDeviceBusyEx (
+ PULONG IdlePointer
+ );
+#line 42269 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+PoStartDeviceBusy (
+ PULONG IdlePointer
+ );
+#line 42277 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+PoEndDeviceBusy (
+ PULONG IdlePointer
+ );
+#line 42285 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+PoQueryWatchdogTime (
+ PDEVICE_OBJECT Pdo,
+ PULONG SecondsRemaining
+ );
+#line 42295 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef
+
+
+NTSTATUS
+POWER_SETTING_CALLBACK (
+ LPCGUID SettingGuid,
+ PVOID Value,
+ ULONG ValueLength,
+ PVOID Context
+);
+
+typedef POWER_SETTING_CALLBACK *PPOWER_SETTING_CALLBACK;
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PoRegisterPowerSettingCallback (
+ PDEVICE_OBJECT DeviceObject,
+ LPCGUID SettingGuid,
+ PPOWER_SETTING_CALLBACK Callback,
+ PVOID Context,
+ PVOID *Handle
+ );
+#line 42322 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PoUnregisterPowerSettingCallback (
+ PVOID Handle
+ );
+#line 42331 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+struct POHANDLE__{int unused;}; typedef struct POHANDLE__ *POHANDLE;
+
+typedef
+
+
+void
+PO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK (
+ PVOID Context,
+ ULONG Component
+ );
+
+typedef PO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK
+ *PPO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK;
+
+typedef
+
+
+void
+PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK (
+ PVOID Context,
+ ULONG Component
+ );
+
+typedef PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK
+ *PPO_FX_COMPONENT_IDLE_CONDITION_CALLBACK;
+
+typedef
+
+
+void
+PO_FX_COMPONENT_IDLE_STATE_CALLBACK (
+ PVOID Context,
+ ULONG Component,
+ ULONG State
+ );
+
+typedef PO_FX_COMPONENT_IDLE_STATE_CALLBACK
+ *PPO_FX_COMPONENT_IDLE_STATE_CALLBACK;
+
+typedef
+
+
+void
+PO_FX_DEVICE_POWER_REQUIRED_CALLBACK (
+ PVOID Context
+ );
+
+typedef PO_FX_DEVICE_POWER_REQUIRED_CALLBACK
+ *PPO_FX_DEVICE_POWER_REQUIRED_CALLBACK;
+
+typedef
+
+
+void
+PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK (
+ PVOID Context
+ );
+
+typedef PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK
+ *PPO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK;
+
+typedef
+
+
+NTSTATUS
+PO_FX_POWER_CONTROL_CALLBACK (
+ PVOID DeviceContext,
+ LPCGUID PowerControlCode,
+ PVOID InBuffer,
+ SIZE_T InBufferSize,
+ PVOID OutBuffer,
+ SIZE_T OutBufferSize,
+ PSIZE_T BytesReturned
+ );
+
+typedef PO_FX_POWER_CONTROL_CALLBACK *PPO_FX_POWER_CONTROL_CALLBACK;
+
+typedef
+
+
+void
+PO_FX_COMPONENT_CRITICAL_TRANSITION_CALLBACK (
+ PVOID Context,
+ ULONG Component,
+ BOOLEAN Active
+ );
+
+typedef PO_FX_COMPONENT_CRITICAL_TRANSITION_CALLBACK
+ *PPO_FX_COMPONENT_CRITICAL_TRANSITION_CALLBACK;
+
+typedef struct _PO_FX_COMPONENT_IDLE_STATE {
+ ULONGLONG TransitionLatency;
+ ULONGLONG ResidencyRequirement;
+ ULONG NominalPower;
+} PO_FX_COMPONENT_IDLE_STATE, *PPO_FX_COMPONENT_IDLE_STATE;
+
+typedef struct _PO_FX_COMPONENT_V1 {
+ GUID Id;
+ ULONG IdleStateCount;
+ ULONG DeepestWakeableIdleState;
+ PPO_FX_COMPONENT_IDLE_STATE IdleStates;
+} PO_FX_COMPONENT_V1, *PPO_FX_COMPONENT_V1;
+
+typedef struct _PO_FX_DEVICE_V1 {
+ ULONG Version;
+ ULONG ComponentCount;
+ PPO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK ComponentActiveConditionCallback;
+ PPO_FX_COMPONENT_IDLE_CONDITION_CALLBACK ComponentIdleConditionCallback;
+ PPO_FX_COMPONENT_IDLE_STATE_CALLBACK ComponentIdleStateCallback;
+ PPO_FX_DEVICE_POWER_REQUIRED_CALLBACK DevicePowerRequiredCallback;
+ PPO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK DevicePowerNotRequiredCallback;
+ PPO_FX_POWER_CONTROL_CALLBACK PowerControlCallback;
+ PVOID DeviceContext;
+ PO_FX_COMPONENT_V1 Components[1];
+} PO_FX_DEVICE_V1, *PPO_FX_DEVICE_V1;
+
+
+
+
+
+typedef struct _PO_FX_COMPONENT_V2 {
+ GUID Id;
+ ULONGLONG Flags;
+ ULONG DeepestWakeableIdleState;
+ ULONG IdleStateCount;
+ PPO_FX_COMPONENT_IDLE_STATE IdleStates;
+ ULONG ProviderCount;
+ PULONG Providers;
+} PO_FX_COMPONENT_V2, *PPO_FX_COMPONENT_V2;
+
+typedef struct _PO_FX_DEVICE_V2 {
+ ULONG Version;
+ ULONGLONG Flags;
+ PPO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK ComponentActiveConditionCallback;
+ PPO_FX_COMPONENT_IDLE_CONDITION_CALLBACK ComponentIdleConditionCallback;
+ PPO_FX_COMPONENT_IDLE_STATE_CALLBACK ComponentIdleStateCallback;
+ PPO_FX_DEVICE_POWER_REQUIRED_CALLBACK DevicePowerRequiredCallback;
+ PPO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK DevicePowerNotRequiredCallback;
+ PPO_FX_POWER_CONTROL_CALLBACK PowerControlCallback;
+ PVOID DeviceContext;
+ ULONG ComponentCount;
+ PO_FX_COMPONENT_V2 Components[1];
+} PO_FX_DEVICE_V2, *PPO_FX_DEVICE_V2;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+
+
+void
+PO_FX_DIRECTED_POWER_UP_CALLBACK (
+ PVOID Context,
+ ULONG Flags
+ );
+
+typedef PO_FX_DIRECTED_POWER_UP_CALLBACK *PPO_FX_DIRECTED_POWER_UP_CALLBACK;
+
+typedef
+
+
+
+void
+PO_FX_DIRECTED_POWER_DOWN_CALLBACK (
+ PVOID Context,
+ ULONG Flags
+ );
+
+typedef PO_FX_DIRECTED_POWER_DOWN_CALLBACK *PPO_FX_DIRECTED_POWER_DOWN_CALLBACK;
+
+typedef struct _PO_FX_DEVICE_V3 {
+ ULONG Version;
+ ULONGLONG Flags;
+ PPO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK ComponentActiveConditionCallback;
+ PPO_FX_COMPONENT_IDLE_CONDITION_CALLBACK ComponentIdleConditionCallback;
+ PPO_FX_COMPONENT_IDLE_STATE_CALLBACK ComponentIdleStateCallback;
+ PPO_FX_DEVICE_POWER_REQUIRED_CALLBACK DevicePowerRequiredCallback;
+ PPO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK DevicePowerNotRequiredCallback;
+ PPO_FX_POWER_CONTROL_CALLBACK PowerControlCallback;
+ PPO_FX_DIRECTED_POWER_UP_CALLBACK DirectedPowerUpCallback;
+ PPO_FX_DIRECTED_POWER_DOWN_CALLBACK DirectedPowerDownCallback;
+ ULONG DirectedFxTimeoutInSeconds;
+ PVOID DeviceContext;
+ ULONG ComponentCount;
+ PO_FX_COMPONENT_V2 Components[1];
+} PO_FX_DEVICE_V3, *PPO_FX_DEVICE_V3;
+
+
+typedef PO_FX_COMPONENT_V1 PO_FX_COMPONENT, *PPO_FX_COMPONENT;
+typedef PO_FX_DEVICE_V1 PO_FX_DEVICE, *PPO_FX_DEVICE;
+
+
+
+
+
+
+
+
+#line 42594 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef enum _PO_FX_PERF_STATE_UNIT {
+ PoFxPerfStateUnitOther,
+ PoFxPerfStateUnitFrequency,
+ PoFxPerfStateUnitBandwidth,
+ PoFxPerfStateUnitMaximum
+} PO_FX_PERF_STATE_UNIT, *PPO_FX_PERF_STATE_UNIT;
+
+typedef enum _PO_FX_PERF_STATE_TYPE {
+ PoFxPerfStateTypeDiscrete,
+ PoFxPerfStateTypeRange,
+ PoFxPerfStateTypeMaximum
+} PO_FX_PERF_STATE_TYPE, *PPO_FX_PERF_STATE_TYPE;
+
+typedef struct _PO_FX_PERF_STATE {
+ ULONGLONG Value;
+ PVOID Context;
+} PO_FX_PERF_STATE, *PPO_FX_PERF_STATE;
+
+typedef struct _PO_FX_COMPONENT_PERF_SET {
+ UNICODE_STRING Name;
+ ULONGLONG Flags;
+ PO_FX_PERF_STATE_UNIT Unit;
+ PO_FX_PERF_STATE_TYPE Type;
+ union {
+ struct {
+ ULONG Count;
+ PPO_FX_PERF_STATE States;
+ } Discrete;
+ struct {
+ ULONGLONG Minimum;
+ ULONGLONG Maximum;
+ } Range;
+ };
+} PO_FX_COMPONENT_PERF_SET, *PPO_FX_COMPONENT_PERF_SET;
+
+typedef struct _PO_FX_COMPONENT_PERF_INFO {
+ ULONG PerfStateSetsCount;
+ PO_FX_COMPONENT_PERF_SET PerfStateSets[1];
+} PO_FX_COMPONENT_PERF_INFO, *PPO_FX_COMPONENT_PERF_INFO;
+
+typedef struct _PO_FX_PERF_STATE_CHANGE {
+ ULONG Set;
+ union {
+ ULONG StateIndex;
+ ULONGLONG StateValue;
+ };
+} PO_FX_PERF_STATE_CHANGE, *PPO_FX_PERF_STATE_CHANGE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PoFxRegisterDevice (
+ PDEVICE_OBJECT Pdo,
+ PPO_FX_DEVICE Device,
+ POHANDLE *Handle
+ );
+#line 42667 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+PoFxStartDevicePowerManagement (
+ POHANDLE Handle
+ );
+#line 42676 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+PoFxUnregisterDevice (
+ POHANDLE Handle
+ );
+#line 42685 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PoFxRegisterCrashdumpDevice (
+ POHANDLE Handle
+ );
+#line 42694 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PoFxPowerOnCrashdumpDevice(
+ POHANDLE Handle,
+ PVOID Context
+ );
+#line 42704 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+PoFxActivateComponent (
+ POHANDLE Handle,
+ ULONG Component,
+ ULONG Flags
+ );
+#line 42715 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+PoFxCompleteDevicePowerNotRequired (
+ POHANDLE Handle
+ );
+#line 42724 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+PoFxCompleteIdleCondition (
+ POHANDLE Handle,
+ ULONG Component
+ );
+#line 42734 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+PoFxCompleteIdleState (
+ POHANDLE Handle,
+ ULONG Component
+ );
+#line 42744 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+PoFxIdleComponent (
+ POHANDLE Handle,
+ ULONG Component,
+ ULONG Flags
+ );
+#line 42755 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+PoFxSetComponentLatency (
+ POHANDLE Handle,
+ ULONG Component,
+ ULONGLONG Latency
+ );
+#line 42766 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+PoFxSetComponentResidency (
+ POHANDLE Handle,
+ ULONG Component,
+ ULONGLONG Residency
+ );
+#line 42777 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+PoFxSetComponentWake (
+ POHANDLE Handle,
+ ULONG Component,
+ BOOLEAN WakeHint
+ );
+#line 42788 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+PoFxSetDeviceIdleTimeout (
+ POHANDLE Handle,
+ ULONGLONG IdleTimeout
+ );
+#line 42798 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+PoFxReportDevicePoweredOn (
+ POHANDLE Handle
+ );
+#line 42807 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PoFxPowerControl (
+ POHANDLE Handle,
+ LPCGUID PowerControlCode,
+ PVOID InBuffer,
+ SIZE_T InBufferSize,
+ PVOID OutBuffer,
+ SIZE_T OutBufferSize,
+ PSIZE_T BytesReturned
+ );
+#line 42822 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+PoFxNotifySurprisePowerOn(
+ PDEVICE_OBJECT Pdo
+ );
+#line 42831 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+typedef
+
+void
+PO_FX_COMPONENT_PERF_STATE_CALLBACK(
+ PVOID Context,
+ ULONG Component,
+ BOOLEAN Succeeded,
+ PVOID RequestContext
+ );
+
+typedef PO_FX_COMPONENT_PERF_STATE_CALLBACK
+ *PPO_FX_COMPONENT_PERF_STATE_CALLBACK;
+
+
+__declspec(dllimport)
+NTSTATUS
+PoFxRegisterComponentPerfStates (
+ POHANDLE Handle,
+ ULONG Component,
+ ULONGLONG Flags,
+ PPO_FX_COMPONENT_PERF_STATE_CALLBACK ComponentPerfStateCallback,
+ PPO_FX_COMPONENT_PERF_INFO InputStateInfo,
+
+
+ PPO_FX_COMPONENT_PERF_INFO* OutputStateInfo
+ );
+
+
+__declspec(dllimport)
+void
+PoFxIssueComponentPerfStateChange (
+ POHANDLE Handle,
+ ULONG Flags,
+ ULONG Component,
+ PPO_FX_PERF_STATE_CHANGE PerfChange,
+ PVOID Context
+ );
+
+
+__declspec(dllimport)
+void
+PoFxIssueComponentPerfStateChangeMultiple (
+ POHANDLE Handle,
+ ULONG Flags,
+ ULONG Component,
+ ULONG PerfChangesCount,
+ PO_FX_PERF_STATE_CHANGE PerfChanges[],
+ PVOID Context
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+PoFxQueryCurrentComponentPerfState (
+ POHANDLE Handle,
+ ULONG Flags,
+ ULONG Component,
+ ULONG SetIndex,
+ PULONGLONG CurrentPerf
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+PoFxSetTargetDripsDevicePowerState(
+ POHANDLE Handle,
+ DEVICE_POWER_STATE TargetState
+ );
+
+#line 42903 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+PoFxCompleteDirectedPowerDown (
+ POHANDLE Handle
+ );
+#line 42912 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PoCreateThermalRequest (
+ PVOID *ThermalRequest,
+ PDEVICE_OBJECT TargetDeviceObject,
+ PDEVICE_OBJECT PolicyDeviceObject,
+ PCOUNTED_REASON_CONTEXT Context,
+ ULONG Flags
+ );
+#line 42925 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef enum _PO_THERMAL_REQUEST_TYPE {
+ PoThermalRequestPassive,
+ PoThermalRequestActive,
+} PO_THERMAL_REQUEST_TYPE, *PPO_THERMAL_REQUEST_TYPE;
+
+
+
+__declspec(dllimport)
+BOOLEAN
+PoGetThermalRequestSupport (
+ PVOID ThermalRequest,
+ PO_THERMAL_REQUEST_TYPE Type
+ );
+#line 42940 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PoSetThermalPassiveCooling (
+ PVOID ThermalRequest,
+ UCHAR Throttle
+ );
+#line 42950 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PoSetThermalActiveCooling (
+ PVOID ThermalRequest,
+ BOOLEAN Engaged
+ );
+#line 42960 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+PoDeleteThermalRequest (
+ PVOID ThermalRequest
+ );
+#line 42969 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+typedef
+
+
+void
+PO_FX_DRIPS_WATCHDOG_CALLBACK (
+ PVOID Context,
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ ULONG UniqueId
+);
+
+typedef PO_FX_DRIPS_WATCHDOG_CALLBACK
+ *PPO_FX_DRIPS_WATCHDOG_CALLBACK;
+
+
+__declspec(dllimport)
+void
+PoFxRegisterDripsWatchdogCallback (
+ POHANDLE Handle,
+ PPO_FX_DRIPS_WATCHDOG_CALLBACK Callback,
+ BOOLEAN IncludeChildDevices,
+ PDRIVER_OBJECT MatchingDriverObject
+ );
+#line 42994 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PoCreatePowerLimitRequest (
+ PVOID *PowerLimitRequest,
+ PDEVICE_OBJECT TargetDeviceObject,
+ PDEVICE_OBJECT PolicyDeviceObject,
+ PCOUNTED_REASON_CONTEXT Context
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+PoQueryPowerLimitAttributes (
+ PVOID PowerLimitRequest,
+ ULONG BufferCount,
+ PPOWER_LIMIT_ATTRIBUTES Buffer,
+ PULONG AttributeCount
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+PoSetPowerLimitValue (
+ PVOID PowerLimitRequest,
+ PCOUNTED_REASON_CONTEXT Reason,
+ ULONG ValueCount,
+ PPOWER_LIMIT_VALUE Values
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+PoQueryPowerLimitValue (
+ PVOID PowerLimitRequest,
+ ULONG ValueCount,
+ PPOWER_LIMIT_VALUE Values
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+PoDeletePowerLimitRequest (
+ PVOID PowerLimitRequest
+ );
+
+typedef enum _PO_EFFECTIVE_POWER_MODE {
+ PoEffectivePowerModeBatterySaver,
+ PoEffectivePowerModeEnergySaverHighSavings = PoEffectivePowerModeBatterySaver,
+ PoEffectivePowerModeBetterBattery,
+ PoEffectivePowerModeEnergySaverStandard = PoEffectivePowerModeBetterBattery,
+ PoEffectivePowerModeBalanced,
+ PoEffectivePowerModeHighPerformance,
+ PoEffectivePowerModeMaxPerformance,
+ PoEffectivePowerModeGameMode,
+ PoEffectivePowerModeMixedReality,
+} PO_EFFECTIVE_POWER_MODE, *PPO_EFFECTIVE_POWER_MODE;
+
+
+
+
+
+struct PO_EPM_HANDLE__{int unused;}; typedef struct PO_EPM_HANDLE__ *PO_EPM_HANDLE;
+
+typedef
+
+void
+PO_EFFECTIVE_POWER_MODE_CALLBACK (
+ PO_EFFECTIVE_POWER_MODE Mode,
+ void *Context
+ );
+
+typedef PO_EFFECTIVE_POWER_MODE_CALLBACK *PPO_EFFECTIVE_POWER_MODE_CALLBACK;
+
+
+__declspec(dllimport)
+NTSTATUS
+PoRegisterForEffectivePowerModeNotifications (
+ ULONG Version,
+ PPO_EFFECTIVE_POWER_MODE_CALLBACK Callback,
+ PVOID Context,
+ PO_EPM_HANDLE *RegistrationHandle,
+ PDEVICE_OBJECT DeviceObject
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+PoUnregisterFromEffectivePowerModeNotifications (
+ PO_EPM_HANDLE RegistrationHandle
+ );
+
+#line 43090 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+typedef struct _OBJECT_HANDLE_INFORMATION {
+ ULONG HandleAttributes;
+ ACCESS_MASK GrantedAccess;
+} OBJECT_HANDLE_INFORMATION, *POBJECT_HANDLE_INFORMATION;
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ObReferenceObjectByHandle(
+ HANDLE Handle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_TYPE ObjectType,
+ KPROCESSOR_MODE AccessMode,
+ PVOID *Object,
+ POBJECT_HANDLE_INFORMATION HandleInformation
+ );
+#line 43115 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ObReferenceObjectByHandleWithTag(
+ HANDLE Handle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_TYPE ObjectType,
+ KPROCESSOR_MODE AccessMode,
+ ULONG Tag,
+ PVOID *Object,
+ POBJECT_HANDLE_INFORMATION HandleInformation
+ );
+#line 43130 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+
+ObReferenceObjectSafe (
+ PVOID Object
+ );
+
+__declspec(dllimport)
+BOOLEAN
+
+ObReferenceObjectSafeWithTag (
+ PVOID Object,
+ ULONG Tag
+ );
+
+#line 43149 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ObCloseHandle (
+ HANDLE Handle,
+ KPROCESSOR_MODE PreviousMode
+ );
+#line 43159 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 43182 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+LONG_PTR
+
+ObfReferenceObject(
+ PVOID Object
+ );
+#line 43192 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+LONG_PTR
+
+ObfReferenceObjectWithTag(
+ PVOID Object,
+ ULONG Tag
+ );
+#line 43203 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ObReferenceObjectByPointer(
+ PVOID Object,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_TYPE ObjectType,
+ KPROCESSOR_MODE AccessMode
+ );
+#line 43215 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ObReferenceObjectByPointerWithTag(
+ PVOID Object,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_TYPE ObjectType,
+ KPROCESSOR_MODE AccessMode,
+ ULONG Tag
+ );
+#line 43228 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+LONG_PTR
+
+ObfDereferenceObject(
+ PVOID Object
+ );
+#line 43238 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+LONG_PTR
+
+ObfDereferenceObjectWithTag(
+ PVOID Object,
+ ULONG Tag
+ );
+#line 43249 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+ObDereferenceObjectDeferDelete(
+ PVOID Object
+ );
+#line 43257 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+void
+ObDereferenceObjectDeferDeleteWithTag(
+ PVOID Object,
+ ULONG Tag
+ );
+#line 43266 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ObGetObjectSecurity(
+ PVOID Object,
+ PSECURITY_DESCRIPTOR *SecurityDescriptor,
+ PBOOLEAN MemoryAllocated
+ );
+#line 43278 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+void
+ObReleaseObjectSecurity(
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ BOOLEAN MemoryAllocated
+ );
+#line 43288 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+typedef ULONG OB_OPERATION;
+
+
+
+
+typedef struct _OB_PRE_CREATE_HANDLE_INFORMATION {
+ ACCESS_MASK DesiredAccess;
+ ACCESS_MASK OriginalDesiredAccess;
+} OB_PRE_CREATE_HANDLE_INFORMATION, *POB_PRE_CREATE_HANDLE_INFORMATION;
+
+typedef struct _OB_PRE_DUPLICATE_HANDLE_INFORMATION {
+ ACCESS_MASK DesiredAccess;
+ ACCESS_MASK OriginalDesiredAccess;
+ PVOID SourceProcess;
+ PVOID TargetProcess;
+} OB_PRE_DUPLICATE_HANDLE_INFORMATION, * POB_PRE_DUPLICATE_HANDLE_INFORMATION;
+
+typedef union _OB_PRE_OPERATION_PARAMETERS {
+ OB_PRE_CREATE_HANDLE_INFORMATION CreateHandleInformation;
+ OB_PRE_DUPLICATE_HANDLE_INFORMATION DuplicateHandleInformation;
+} OB_PRE_OPERATION_PARAMETERS, *POB_PRE_OPERATION_PARAMETERS;
+
+typedef struct _OB_PRE_OPERATION_INFORMATION {
+ OB_OPERATION Operation;
+ union {
+ ULONG Flags;
+ struct {
+ ULONG KernelHandle:1;
+ ULONG Reserved:31;
+ };
+ };
+ PVOID Object;
+ POBJECT_TYPE ObjectType;
+ PVOID CallContext;
+ POB_PRE_OPERATION_PARAMETERS Parameters;
+} OB_PRE_OPERATION_INFORMATION, *POB_PRE_OPERATION_INFORMATION;
+
+typedef struct _OB_POST_CREATE_HANDLE_INFORMATION {
+ ACCESS_MASK GrantedAccess;
+} OB_POST_CREATE_HANDLE_INFORMATION, *POB_POST_CREATE_HANDLE_INFORMATION;
+
+typedef struct _OB_POST_DUPLICATE_HANDLE_INFORMATION {
+ ACCESS_MASK GrantedAccess;
+} OB_POST_DUPLICATE_HANDLE_INFORMATION, * POB_POST_DUPLICATE_HANDLE_INFORMATION;
+
+typedef union _OB_POST_OPERATION_PARAMETERS {
+ OB_POST_CREATE_HANDLE_INFORMATION CreateHandleInformation;
+ OB_POST_DUPLICATE_HANDLE_INFORMATION DuplicateHandleInformation;
+} OB_POST_OPERATION_PARAMETERS, *POB_POST_OPERATION_PARAMETERS;
+
+typedef struct _OB_POST_OPERATION_INFORMATION {
+ OB_OPERATION Operation;
+ union {
+ ULONG Flags;
+ struct {
+ ULONG KernelHandle:1;
+ ULONG Reserved:31;
+ };
+ };
+ PVOID Object;
+ POBJECT_TYPE ObjectType;
+ PVOID CallContext;
+ NTSTATUS ReturnStatus;
+ POB_POST_OPERATION_PARAMETERS Parameters;
+} OB_POST_OPERATION_INFORMATION,*POB_POST_OPERATION_INFORMATION;
+
+typedef enum _OB_PREOP_CALLBACK_STATUS {
+ OB_PREOP_SUCCESS
+} OB_PREOP_CALLBACK_STATUS, *POB_PREOP_CALLBACK_STATUS;
+
+typedef OB_PREOP_CALLBACK_STATUS
+(*POB_PRE_OPERATION_CALLBACK) (
+ PVOID RegistrationContext,
+ POB_PRE_OPERATION_INFORMATION OperationInformation
+ );
+
+typedef void
+(*POB_POST_OPERATION_CALLBACK) (
+ PVOID RegistrationContext,
+ POB_POST_OPERATION_INFORMATION OperationInformation
+ );
+
+typedef struct _OB_OPERATION_REGISTRATION {
+ POBJECT_TYPE *ObjectType;
+ OB_OPERATION Operations;
+ POB_PRE_OPERATION_CALLBACK PreOperation;
+ POB_POST_OPERATION_CALLBACK PostOperation;
+} OB_OPERATION_REGISTRATION, *POB_OPERATION_REGISTRATION;
+
+typedef struct _OB_CALLBACK_REGISTRATION {
+ USHORT Version;
+ USHORT OperationRegistrationCount;
+ UNICODE_STRING Altitude;
+ PVOID RegistrationContext;
+ OB_OPERATION_REGISTRATION *OperationRegistration;
+} OB_CALLBACK_REGISTRATION, *POB_CALLBACK_REGISTRATION;
+
+
+__declspec(dllimport)
+NTSTATUS
+ObRegisterCallbacks (
+ POB_CALLBACK_REGISTRATION CallbackRegistration,
+ PVOID *RegistrationHandle
+ );
+
+__declspec(dllimport)
+void
+ObUnRegisterCallbacks (
+ PVOID RegistrationHandle
+ );
+
+
+__declspec(dllimport)
+USHORT
+ObGetFilterVersion (
+ void
+ );
+#line 43418 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _PCI_SEGMENT_BUS_NUMBER {
+ union {
+ struct {
+ ULONG BusNumber:8;
+ ULONG SegmentNumber:16;
+ ULONG Reserved:8;
+ } bits;
+ ULONG AsULONG;
+ } u;
+} PCI_SEGMENT_BUS_NUMBER, *PPCI_SEGMENT_BUS_NUMBER;
+
+typedef struct _PCI_SLOT_NUMBER {
+ union {
+ struct {
+ ULONG DeviceNumber:5;
+ ULONG FunctionNumber:3;
+ ULONG Reserved:24;
+ } bits;
+ ULONG AsULONG;
+ } u;
+} PCI_SLOT_NUMBER, *PPCI_SLOT_NUMBER;
+
+
+
+
+
+typedef struct _PCI_COMMON_HEADER {
+ USHORT VendorID;
+ USHORT DeviceID;
+ USHORT Command;
+ USHORT Status;
+ UCHAR RevisionID;
+ UCHAR ProgIf;
+ UCHAR SubClass;
+ UCHAR BaseClass;
+ UCHAR CacheLineSize;
+ UCHAR LatencyTimer;
+ UCHAR HeaderType;
+ UCHAR BIST;
+
+ union {
+ struct _PCI_HEADER_TYPE_0 {
+ ULONG BaseAddresses[6];
+ ULONG CIS;
+ USHORT SubVendorID;
+ USHORT SubSystemID;
+ ULONG ROMBaseAddress;
+ UCHAR CapabilitiesPtr;
+ UCHAR Reserved1[3];
+ ULONG Reserved2;
+ UCHAR InterruptLine;
+ UCHAR InterruptPin;
+ UCHAR MinimumGrant;
+ UCHAR MaximumLatency;
+ } type0;
+
+
+
+
+
+
+
+ struct _PCI_HEADER_TYPE_1 {
+ ULONG BaseAddresses[2];
+ UCHAR PrimaryBus;
+ UCHAR SecondaryBus;
+ UCHAR SubordinateBus;
+ UCHAR SecondaryLatency;
+ UCHAR IOBase;
+ UCHAR IOLimit;
+ USHORT SecondaryStatus;
+ USHORT MemoryBase;
+ USHORT MemoryLimit;
+ USHORT PrefetchBase;
+ USHORT PrefetchLimit;
+ ULONG PrefetchBaseUpper32;
+ ULONG PrefetchLimitUpper32;
+ USHORT IOBaseUpper16;
+ USHORT IOLimitUpper16;
+ UCHAR CapabilitiesPtr;
+ UCHAR Reserved1[3];
+ ULONG ROMBaseAddress;
+ UCHAR InterruptLine;
+ UCHAR InterruptPin;
+ USHORT BridgeControl;
+ } type1;
+
+
+
+
+
+ struct _PCI_HEADER_TYPE_2 {
+ ULONG SocketRegistersBaseAddress;
+ UCHAR CapabilitiesPtr;
+ UCHAR Reserved;
+ USHORT SecondaryStatus;
+ UCHAR PrimaryBus;
+ UCHAR SecondaryBus;
+ UCHAR SubordinateBus;
+ UCHAR SecondaryLatency;
+ struct {
+ ULONG Base;
+ ULONG Limit;
+ } Range[5-1];
+ UCHAR InterruptLine;
+ UCHAR InterruptPin;
+ USHORT BridgeControl;
+ } type2;
+
+
+
+ } u;
+
+} PCI_COMMON_HEADER, *PPCI_COMMON_HEADER;
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _PCI_COMMON_CONFIG {
+ PCI_COMMON_HEADER ;
+ UCHAR DeviceSpecific[192];
+} PCI_COMMON_CONFIG, *PPCI_COMMON_CONFIG;
+
+#line 43577 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _PCI_CAPABILITIES_HEADER {
+ UCHAR CapabilityID;
+ UCHAR Next;
+} PCI_CAPABILITIES_HEADER, *PPCI_CAPABILITIES_HEADER;
+
+
+
+
+
+
+
+typedef struct _PCI_PMC {
+ UCHAR Version:3;
+ UCHAR PMEClock:1;
+ UCHAR Rsvd1:1;
+ UCHAR DeviceSpecificInitialization:1;
+ UCHAR Rsvd2:2;
+ struct _PM_SUPPORT {
+ UCHAR Rsvd2:1;
+ UCHAR D1:1;
+ UCHAR D2:1;
+ UCHAR PMED0:1;
+ UCHAR PMED1:1;
+ UCHAR PMED2:1;
+ UCHAR PMED3Hot:1;
+ UCHAR PMED3Cold:1;
+ } Support;
+} PCI_PMC, *PPCI_PMC;
+
+typedef struct _PCI_PMCSR {
+ USHORT PowerState:2;
+ USHORT Rsvd1:1;
+ USHORT NoSoftReset:1;
+ USHORT Rsvd2:4;
+ USHORT PMEEnable:1;
+ USHORT DataSelect:4;
+ USHORT DataScale:2;
+ USHORT PMEStatus:1;
+} PCI_PMCSR, *PPCI_PMCSR;
+
+
+typedef struct _PCI_PMCSR_BSE {
+ UCHAR Rsvd1:6;
+ UCHAR D3HotSupportsStopClock:1;
+ UCHAR BusPowerClockControlEnabled:1;
+} PCI_PMCSR_BSE, *PPCI_PMCSR_BSE;
+
+
+typedef struct _PCI_PM_CAPABILITY {
+
+ PCI_CAPABILITIES_HEADER Header;
+
+
+
+
+
+ union {
+ PCI_PMC Capabilities;
+ USHORT AsUSHORT;
+ } PMC;
+
+
+
+
+
+ union {
+ PCI_PMCSR ControlStatus;
+ USHORT AsUSHORT;
+ } PMCSR;
+
+
+
+
+
+ union {
+ PCI_PMCSR_BSE BridgeSupport;
+ UCHAR AsUCHAR;
+ } PMCSR_BSE;
+
+
+
+
+
+
+ UCHAR Data;
+
+} PCI_PM_CAPABILITY, *PPCI_PM_CAPABILITY;
+
+
+
+
+
+
+
+
+typedef struct {
+
+ PCI_CAPABILITIES_HEADER Header;
+
+ union {
+ struct {
+ USHORT DataParityErrorRecoveryEnable:1;
+ USHORT EnableRelaxedOrdering:1;
+ USHORT MaxMemoryReadByteCount:2;
+ USHORT MaxOutstandingSplitTransactions:3;
+ USHORT Reserved:9;
+ } bits;
+ USHORT AsUSHORT;
+ } Command;
+
+ union {
+ struct {
+ ULONG FunctionNumber:3;
+ ULONG DeviceNumber:5;
+ ULONG BusNumber:8;
+ ULONG Device64Bit:1;
+ ULONG Capable133MHz:1;
+ ULONG SplitCompletionDiscarded:1;
+ ULONG UnexpectedSplitCompletion:1;
+ ULONG DeviceComplexity:1;
+ ULONG DesignedMaxMemoryReadByteCount:2;
+ ULONG DesignedMaxOutstandingSplitTransactions:3;
+ ULONG DesignedMaxCumulativeReadSize:3;
+ ULONG ReceivedSplitCompletionErrorMessage:1;
+ ULONG CapablePCIX266:1;
+ ULONG CapablePCIX533:1;
+ } bits;
+ ULONG AsULONG;
+ } Status;
+} PCI_X_CAPABILITY, *PPCI_X_CAPABILITY;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER {
+
+ USHORT CapabilityID;
+ USHORT Version:4;
+ USHORT Next:12;
+
+} PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER, *PPCI_EXPRESS_ENHANCED_CAPABILITY_HEADER;
+
+
+
+
+
+typedef struct _PCI_EXPRESS_VENDOR_SPECIFIC_CAPABILITY {
+
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+
+ USHORT VsecId;
+ USHORT VsecRev:4;
+ USHORT VsecLength:12;
+
+} PCI_EXPRESS_VENDOR_SPECIFIC_CAPABILITY, *PPCI_EXPRESS_VENDOR_SPECIFIC_CAPABILITY;
+
+
+
+
+
+typedef struct _PCI_EXPRESS_SERIAL_NUMBER_CAPABILITY {
+
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+
+ ULONG LowSerialNumber;
+ ULONG HighSerialNumber;
+
+} PCI_EXPRESS_SERIAL_NUMBER_CAPABILITY, *PPCI_EXPRESS_SERIAL_NUMBER_CAPABILITY;
+
+
+
+
+
+typedef struct _PCI_EXPRESS_ARI_CAPABILITY_REGISTER {
+
+ USHORT MfvcFunctionGroupsCapability:1;
+ USHORT AcsFunctionGroupsCapability:1;
+ USHORT Reserved:6;
+ USHORT NextFunctionNumber:8;
+
+} PCI_EXPRESS_ARI_CAPABILITY_REGISTER, *PPCI_EXPRESS_ARI_CAPABILITY_REGISTER;
+
+typedef struct _PCI_EXPRESS_ARI_CONTROL_REGISTER {
+
+ USHORT MfvcFunctionGroupsEnable:1;
+ USHORT AcsFunctionGroupsEnable:1;
+ USHORT Reserved1:2;
+ USHORT FunctionGroup:3;
+ USHORT Reserved2:9;
+
+} PCI_EXPRESS_ARI_CONTROL_REGISTER, *PPCI_EXPRESS_ARI_CONTROL_REGISTER;
+
+typedef struct _PCI_EXPRESS_ARI_CAPABILITY {
+
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+
+ PCI_EXPRESS_ARI_CAPABILITY_REGISTER Capability;
+ PCI_EXPRESS_ARI_CONTROL_REGISTER Control;
+
+} PCI_EXPRESS_ARI_CAPABILITY, *PPCI_EXPRESS_ARI_CAPABILITY;
+
+
+
+
+
+typedef union _VIRTUAL_CHANNEL_CAPABILITIES1 {
+ struct {
+ ULONG ExtendedVCCount:3;
+ ULONG RsvdP1:1;
+ ULONG LowPriorityExtendedVCCount:3;
+ ULONG RsvdP2:1;
+ ULONG ReferenceClock:2;
+ ULONG PortArbitrationTableEntrySize:2;
+ ULONG RsvdP3:20;
+ };
+ ULONG AsULONG;
+} VIRTUAL_CHANNEL_CAPABILITIES1, *PVIRTUAL_CHANNEL_CAPABILITIES1;
+
+typedef union _VIRTUAL_CHANNEL_CAPABILITIES2 {
+ struct {
+ ULONG VCArbitrationCapability:8;
+ ULONG RsvdP:16;
+ ULONG VCArbitrationTableOffset:8;
+ };
+ ULONG AsULONG;
+} VIRTUAL_CHANNEL_CAPABILITIES2, *PVIRTUAL_CHANNEL_CAPABILITIES2;
+
+typedef union _VIRTUAL_CHANNEL_CONTROL {
+ struct {
+ USHORT LoadVCArbitrationTable:1;
+ USHORT VCArbitrationSelect:3;
+ USHORT RsvdP:12;
+ };
+ USHORT AsUSHORT;
+} VIRTUAL_CHANNEL_CONTROL, *PVIRTUAL_CHANNEL_CONTROL;
+
+typedef union _VIRTUAL_CHANNEL_STATUS {
+ struct {
+ USHORT VCArbitrationTableStatus:1;
+ USHORT RsvdZ:15;
+ };
+ USHORT AsUSHORT;
+} VIRTUAL_CHANNEL_STATUS, *PVIRTUAL_CHANNEL_STATUS;
+
+typedef union _VIRTUAL_RESOURCE_CAPABILITY {
+ struct {
+ ULONG PortArbitrationCapability:8;
+ ULONG RsvdP1:6;
+ ULONG Undefined:1;
+ ULONG RejectSnoopTransactions:1;
+ ULONG MaximumTimeSlots:7;
+ ULONG RsvdP2:1;
+ ULONG PortArbitrationTableOffset:8;
+ };
+ ULONG AsULONG;
+} VIRTUAL_RESOURCE_CAPABILITY, *PVIRTUAL_RESOURCE_CAPABILITY;
+
+typedef union _VIRTUAL_RESOURCE_CONTROL {
+ struct {
+ ULONG TcVcMap:8;
+ ULONG RsvdP1:8;
+ ULONG LoadPortArbitrationTable:1;
+ ULONG PortArbitrationSelect:3;
+ ULONG RsvdP2:4;
+ ULONG VcID:3;
+ ULONG RsvdP3:4;
+ ULONG VcEnable:1;
+ };
+ ULONG AsULONG;
+} VIRTUAL_RESOURCE_CONTROL, *PVIRTUAL_RESOURCE_CONTROL;
+
+typedef union _VIRTUAL_RESOURCE_STATUS {
+ struct {
+ USHORT PortArbitrationTableStatus:1;
+ USHORT VcNegotiationPending:1;
+ USHORT RsvdZ:14;
+ };
+ USHORT AsUSHORT;
+} VIRTUAL_RESOURCE_STATUS, *PVIRTUAL_RESOURCE_STATUS;
+
+typedef struct _VIRTUAL_RESOURCE {
+ VIRTUAL_RESOURCE_CAPABILITY Capability;
+ VIRTUAL_RESOURCE_CONTROL Control;
+ USHORT RsvdP;
+ VIRTUAL_RESOURCE_STATUS Status;
+} VIRTUAL_RESOURCE, *PVIRTUAL_RESOURCE;
+
+
+typedef struct _PCI_EXPRESS_VIRTUAL_CHANNEL_CAPABILITY {
+
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+
+ VIRTUAL_CHANNEL_CAPABILITIES1 Capabilities1;
+ VIRTUAL_CHANNEL_CAPABILITIES2 Capabilities2;
+ VIRTUAL_CHANNEL_CONTROL Control;
+ VIRTUAL_CHANNEL_STATUS Status;
+ VIRTUAL_RESOURCE Resource[0x8];
+
+} PCI_EXPRESS_VIRTUAL_CHANNEL_CAPABILITY, *PPCI_EXPRESS_VIRTUAL_CHANNEL_CAPABILITY;
+
+
+
+
+
+typedef struct _PCI_EXPRESS_ATS_CAPABILITY_REGISTER {
+
+ USHORT InvalidateQueueDepth:5;
+ USHORT PageAlignedRequest:1;
+ USHORT GlobalInvalidateSupported:1;
+ USHORT RelaxedOrderingSupported:1;
+ USHORT Reserved:8;
+
+} PCI_EXPRESS_ATS_CAPABILITY_REGISTER, *PPCI_EXPRESS_ATS_CAPABILITY_REGISTER;
+
+typedef union _PCI_EXPRESS_ATS_CONTROL_REGISTER {
+ struct {
+ USHORT SmallestTransactionUnit:5;
+ USHORT Reserved:10;
+ USHORT Enable:1;
+ };
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_ATS_CONTROL_REGISTER, *PPCI_EXPRESS_ATS_CONTROL_REGISTER;
+
+typedef struct _PCI_EXPRESS_ATS_CAPABILITY {
+
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+
+ PCI_EXPRESS_ATS_CAPABILITY_REGISTER Capability;
+ PCI_EXPRESS_ATS_CONTROL_REGISTER Control;
+
+} PCI_EXPRESS_ATS_CAPABILITY, *PPCI_EXPRESS_ATS_CAPABILITY;
+
+
+
+
+
+typedef union _PCI_EXPRESS_PASID_CAPABILITY_REGISTER {
+ struct {
+ USHORT Rsvd:1;
+ USHORT ExecutePermissionSupported:1;
+ USHORT PrivilegedModeSupported:1;
+ USHORT Rsvd2:5;
+ USHORT MaxPASIDWidth:5;
+ USHORT Rsvd3:3;
+ } ;
+
+ USHORT AsUSHORT;
+} PCI_EXPRESS_PASID_CAPABILITY_REGISTER, *PPCI_EXPRESS_PASID_CAPABILITY_REGISTER;
+
+typedef union _PCI_EXPRESS_PASID_CONTROL_REGISTER {
+ struct {
+ USHORT PASIDEnable:1;
+ USHORT ExecutePermissionEnable:1;
+ USHORT PrivilegedModeEnable:1;
+ USHORT Rsvd:13;
+ } ;
+
+ USHORT AsUSHORT;
+} PCI_EXPRESS_PASID_CONTROL_REGISTER, *PPCI_EXPRESS_PASID_CONTROL_REGISTER;
+
+typedef struct _PCI_EXPRESS_PASID_CAPABILITY {
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+ PCI_EXPRESS_PASID_CAPABILITY_REGISTER Capability;
+ PCI_EXPRESS_PASID_CONTROL_REGISTER Control;
+} PCI_EXPRESS_PASID_CAPABILITY, *PPCI_EXPRESS_PASID_CAPABILITY;
+
+
+
+
+
+typedef union _PCI_EXPRESS_PRI_STATUS_REGISTER {
+ struct {
+ USHORT ResponseFailure:1;
+ USHORT UnexpectedPageRequestGroupIndex:1;
+ USHORT Rsvd:6;
+ USHORT Stopped:1;
+ USHORT Rsvd2:6;
+ USHORT PrgResponsePasidRequired:1;
+ } ;
+
+ USHORT AsUSHORT;
+} PCI_EXPRESS_PRI_STATUS_REGISTER, *PPCI_EXPRESS_PRI_STATUS_REGISTER;
+
+typedef union _PCI_EXPRESS_PRI_CONTROL_REGISTER {
+ struct {
+ USHORT Enable:1;
+ USHORT Reset:1;
+ USHORT Rsvd:14;
+ } ;
+
+ USHORT AsUSHORT;
+} PCI_EXPRESS_PRI_CONTROL_REGISTER, *PPCI_EXPRESS_PRI_CONTROL_REGISTER;
+
+typedef struct _PCI_EXPRESS_PRI_CAPABILITY {
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+ PCI_EXPRESS_PRI_CONTROL_REGISTER Control;
+ PCI_EXPRESS_PRI_STATUS_REGISTER Status;
+ ULONG PRCapacity;
+ ULONG PRAllocation;
+} PCI_EXPRESS_PRI_CAPABILITY, *PPCI_EXPRESS_PRI_CAPABILITY;
+
+
+
+
+
+typedef union _PCI_EXPRESS_DEVICE_CAPABILITIES_3_REGISTER {
+ struct {
+ ULONG DmwrRequestRoutingSupported:1;
+ ULONG Rsvd:31;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_DEVICE_CAPABILITIES_3_REGISTER, *PPCI_EXPRESS_DEVICE_CAPABILITIES_3_REGISTER;
+
+typedef union _PCI_EXPRESS_DEVICE_CONTROL_3_REGISTER {
+ struct {
+ ULONG DmwrRequesterEnable:1;
+ ULONG Rsvd:31;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_DEVICE_CONTROL_3_REGISTER, *PPCI_EXPRESS_DEVICE_CONTROL_3_REGISTER;
+
+typedef struct _PCI_EXPRESS_DEVICE_3_EXTENDED_CAPABILITY {
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+ PCI_EXPRESS_DEVICE_CAPABILITIES_3_REGISTER Capability;
+ PCI_EXPRESS_DEVICE_CONTROL_3_REGISTER Control;
+} PCI_EXPRESS_DEVICE_3_EXTENDED_CAPABILITY, *PPCI_EXPRESS_DEVICE_3_EXTENDED_CAPABILITY;
+
+
+
+
+
+typedef union _PCI_EXPRESS_PTM_CAPABILITY_REGISTER {
+
+ struct {
+ ULONG RequesterCapable:1;
+ ULONG ResponderCapable:1;
+ ULONG RootCapable:1;
+ ULONG Rsvd:5;
+ ULONG LocalGranularity:8;
+ ULONG Rsvd2:16;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_PTM_CAPABILITY_REGISTER, *PPCI_EXPRESS_PTM_CAPABILITY_REGISTER;
+
+typedef union _PCI_EXPRESS_PTM_CONTROL_REGISTER {
+
+ struct {
+ ULONG Enable:1;
+ ULONG RootSelect:1;
+ ULONG Rsvd:6;
+ ULONG EffectiveGranularity:8;
+ ULONG Rsvd2:16;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_PTM_CONTROL_REGISTER, *PPCI_EXPRESS_PTM_CONTROL_REGISTER;
+
+typedef struct _PCI_EXPRESS_PTM_CAPABILITY {
+
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+ PCI_EXPRESS_PTM_CAPABILITY_REGISTER PtmCapability;
+ PCI_EXPRESS_PTM_CONTROL_REGISTER PtmControl;
+
+} PCI_EXPRESS_PTM_CAPABILITY, *PPCI_EXPRESS_PTM_CAPABILITY;
+
+
+
+
+
+typedef union _PCI_EXPRESS_UNCORRECTABLE_ERROR_STATUS {
+
+ struct {
+ ULONG Undefined:1;
+ ULONG Reserved1:3;
+ ULONG DataLinkProtocolError:1;
+ ULONG SurpriseDownError:1;
+ ULONG Reserved2:6;
+ ULONG PoisonedTLP:1;
+ ULONG FlowControlProtocolError:1;
+ ULONG CompletionTimeout:1;
+ ULONG CompleterAbort:1;
+ ULONG UnexpectedCompletion:1;
+ ULONG ReceiverOverflow:1;
+ ULONG MalformedTLP:1;
+ ULONG ECRCError:1;
+ ULONG UnsupportedRequestError:1;
+ ULONG AcsViolation:1;
+ ULONG UncorrectableInternalError:1;
+ ULONG MCBlockedTlp:1;
+ ULONG AtomicOpEgressBlocked:1;
+ ULONG TlpPrefixBlocked:1;
+ ULONG PoisonedTlpEgressBlocked:1;
+ ULONG Reserved3:5;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_UNCORRECTABLE_ERROR_STATUS, *PPCI_EXPRESS_UNCORRECTABLE_ERROR_STATUS;
+
+typedef union _PCI_EXPRESS_UNCORRECTABLE_ERROR_MASK {
+
+ struct {
+ ULONG Undefined:1;
+ ULONG Reserved1:3;
+ ULONG DataLinkProtocolError:1;
+ ULONG SurpriseDownError:1;
+ ULONG Reserved2:6;
+ ULONG PoisonedTLP:1;
+ ULONG FlowControlProtocolError:1;
+ ULONG CompletionTimeout:1;
+ ULONG CompleterAbort:1;
+ ULONG UnexpectedCompletion:1;
+ ULONG ReceiverOverflow:1;
+ ULONG MalformedTLP:1;
+ ULONG ECRCError:1;
+ ULONG UnsupportedRequestError:1;
+ ULONG AcsViolation:1;
+ ULONG UncorrectableInternalError:1;
+ ULONG MCBlockedTlp:1;
+ ULONG AtomicOpEgressBlocked:1;
+ ULONG TlpPrefixBlocked:1;
+ ULONG PoisonedTlpEgressBlocked:1;
+ ULONG Reserved3:5;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_UNCORRECTABLE_ERROR_MASK, *PPCI_EXPRESS_UNCORRECTABLE_ERROR_MASK;
+
+typedef union _PCI_EXPRESS_UNCORRECTABLE_ERROR_SEVERITY {
+
+ struct {
+ ULONG Undefined:1;
+ ULONG Reserved1:3;
+ ULONG DataLinkProtocolError:1;
+ ULONG SurpriseDownError:1;
+ ULONG Reserved2:6;
+ ULONG PoisonedTLP:1;
+ ULONG FlowControlProtocolError:1;
+ ULONG CompletionTimeout:1;
+ ULONG CompleterAbort:1;
+ ULONG UnexpectedCompletion:1;
+ ULONG ReceiverOverflow:1;
+ ULONG MalformedTLP:1;
+ ULONG ECRCError:1;
+ ULONG UnsupportedRequestError:1;
+ ULONG AcsViolation:1;
+ ULONG UncorrectableInternalError:1;
+ ULONG MCBlockedTlp:1;
+ ULONG AtomicOpEgressBlocked:1;
+ ULONG TlpPrefixBlocked:1;
+ ULONG PoisonedTlpEgressBlocked:1;
+ ULONG Reserved3:5;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_UNCORRECTABLE_ERROR_SEVERITY, *PPCI_EXPRESS_UNCORRECTABLE_ERROR_SEVERITY;
+
+typedef union _PCI_EXPRESS_CORRECTABLE_ERROR_STATUS {
+
+ struct {
+ ULONG ReceiverError:1;
+ ULONG Reserved1:5;
+ ULONG BadTLP:1;
+ ULONG BadDLLP:1;
+ ULONG ReplayNumRollover:1;
+ ULONG Reserved2:3;
+ ULONG ReplayTimerTimeout:1;
+ ULONG AdvisoryNonFatalError:1;
+ ULONG CorrectedInternalError:1;
+ ULONG HeaderLogOverflow:1;
+ ULONG Reserved3:16;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_CORRECTABLE_ERROR_STATUS, *PPCI_CORRECTABLE_ERROR_STATUS;
+
+typedef union _PCI_EXPRESS_CORRECTABLE_ERROR_MASK {
+
+ struct {
+ ULONG ReceiverError:1;
+ ULONG Reserved1:5;
+ ULONG BadTLP:1;
+ ULONG BadDLLP:1;
+ ULONG ReplayNumRollover:1;
+ ULONG Reserved2:3;
+ ULONG ReplayTimerTimeout:1;
+ ULONG AdvisoryNonFatalError:1;
+ ULONG CorrectedInternalError:1;
+ ULONG HeaderLogOverflow:1;
+ ULONG Reserved3:16;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_CORRECTABLE_ERROR_MASK, *PPCI_CORRECTABLE_ERROR_MASK;
+
+typedef union _PCI_EXPRESS_AER_CAPABILITIES {
+
+ struct {
+ ULONG FirstErrorPointer:5;
+ ULONG ECRCGenerationCapable:1;
+ ULONG ECRCGenerationEnable:1;
+ ULONG ECRCCheckCapable:1;
+ ULONG ECRCCheckEnable:1;
+ ULONG MultipleHeaderRecordingCapable:1;
+ ULONG MultipleHeaderRecordingEnable:1;
+ ULONG TlpPrefixLogPresent:1;
+ ULONG Reserved:20;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_AER_CAPABILITIES, *PPCI_EXPRESS_AER_CAPABILITIES;
+
+typedef union _PCI_EXPRESS_ROOT_ERROR_COMMAND {
+
+ struct {
+ ULONG CorrectableErrorReportingEnable:1;
+ ULONG NonFatalErrorReportingEnable:1;
+ ULONG FatalErrorReportingEnable:1;
+ ULONG Reserved:29;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_ROOT_ERROR_COMMAND, *PPCI_EXPRESS_ROOT_ERROR_COMMAND;
+
+typedef union _PCI_EXPRESS_ROOT_ERROR_STATUS {
+
+ struct {
+ ULONG CorrectableErrorReceived:1;
+ ULONG MultipleCorrectableErrorsReceived:1;
+ ULONG UncorrectableErrorReceived:1;
+ ULONG MultipleUncorrectableErrorsReceived:1;
+ ULONG FirstUncorrectableFatal:1;
+ ULONG NonFatalErrorMessagesReceived:1;
+ ULONG FatalErrorMessagesReceived:1;
+ ULONG Reserved:20;
+ ULONG AdvancedErrorInterruptMessageNumber:5;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_ROOT_ERROR_STATUS, *PPCI_EXPRESS_ROOT_ERROR_STATUS;
+
+typedef union _PCI_EXPRESS_ERROR_SOURCE_ID {
+
+ struct {
+ USHORT CorrectableSourceIdFun:3;
+ USHORT CorrectableSourceIdDev:5;
+ USHORT CorrectableSourceIdBus:8;
+ USHORT UncorrectableSourceIdFun:3;
+ USHORT UncorrectableSourceIdDev:5;
+ USHORT UncorrectableSourceIdBus:8;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_ERROR_SOURCE_ID, *PPCI_EXPRESS_ERROR_SOURCE_ID;
+
+typedef union _PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_STATUS {
+
+ struct {
+ ULONG TargetAbortOnSplitCompletion:1;
+ ULONG MasterAbortOnSplitCompletion:1;
+ ULONG ReceivedTargetAbort:1;
+ ULONG ReceivedMasterAbort:1;
+ ULONG RsvdZ:1;
+ ULONG UnexpectedSplitCompletionError:1;
+ ULONG UncorrectableSplitCompletion:1;
+ ULONG UncorrectableDataError:1;
+ ULONG UncorrectableAttributeError:1;
+ ULONG UncorrectableAddressError:1;
+ ULONG DelayedTransactionDiscardTimerExpired:1;
+ ULONG PERRAsserted:1;
+ ULONG SERRAsserted:1;
+ ULONG InternalBridgeError:1;
+ ULONG Reserved:18;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_STATUS,
+ *PPCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_STATUS;
+
+typedef union _PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_MASK {
+
+ struct {
+ ULONG TargetAbortOnSplitCompletion:1;
+ ULONG MasterAbortOnSplitCompletion:1;
+ ULONG ReceivedTargetAbort:1;
+ ULONG ReceivedMasterAbort:1;
+ ULONG RsvdZ:1;
+ ULONG UnexpectedSplitCompletionError:1;
+ ULONG UncorrectableSplitCompletion:1;
+ ULONG UncorrectableDataError:1;
+ ULONG UncorrectableAttributeError:1;
+ ULONG UncorrectableAddressError:1;
+ ULONG DelayedTransactionDiscardTimerExpired:1;
+ ULONG PERRAsserted:1;
+ ULONG SERRAsserted:1;
+ ULONG InternalBridgeError:1;
+ ULONG Reserved:18;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_MASK,
+ *PPCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_MASK;
+
+typedef union _PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_SEVERITY {
+
+ struct {
+ ULONG TargetAbortOnSplitCompletion:1;
+ ULONG MasterAbortOnSplitCompletion:1;
+ ULONG ReceivedTargetAbort:1;
+ ULONG ReceivedMasterAbort:1;
+ ULONG RsvdZ:1;
+ ULONG UnexpectedSplitCompletionError:1;
+ ULONG UncorrectableSplitCompletion:1;
+ ULONG UncorrectableDataError:1;
+ ULONG UncorrectableAttributeError:1;
+ ULONG UncorrectableAddressError:1;
+ ULONG DelayedTransactionDiscardTimerExpired:1;
+ ULONG PERRAsserted:1;
+ ULONG SERRAsserted:1;
+ ULONG InternalBridgeError:1;
+ ULONG Reserved:18;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_SEVERITY,
+ *PPCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_SEVERITY;
+
+typedef union _PCI_EXPRESS_SEC_AER_CAPABILITIES {
+
+ struct {
+ ULONG SecondaryUncorrectableFirstErrorPtr:5;
+ ULONG Reserved:27;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_SEC_AER_CAPABILITIES, *PPCI_EXPRESS_SEC_AER_CAPABILITIES;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _PCI_EXPRESS_AER_CAPABILITY {
+
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+
+ PCI_EXPRESS_UNCORRECTABLE_ERROR_STATUS UncorrectableErrorStatus;
+ PCI_EXPRESS_UNCORRECTABLE_ERROR_MASK UncorrectableErrorMask;
+ PCI_EXPRESS_UNCORRECTABLE_ERROR_SEVERITY UncorrectableErrorSeverity;
+ PCI_EXPRESS_CORRECTABLE_ERROR_STATUS CorrectableErrorStatus;
+ PCI_EXPRESS_CORRECTABLE_ERROR_MASK CorrectableErrorMask;
+ PCI_EXPRESS_AER_CAPABILITIES CapabilitiesAndControl;
+ ULONG HeaderLog[4];
+ PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_STATUS SecUncorrectableErrorStatus;
+ PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_MASK SecUncorrectableErrorMask;
+ PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_SEVERITY SecUncorrectableErrorSeverity;
+ PCI_EXPRESS_SEC_AER_CAPABILITIES SecCapabilitiesAndControl;
+ ULONG SecHeaderLog[4];
+
+} PCI_EXPRESS_AER_CAPABILITY, *PPCI_EXPRESS_AER_CAPABILITY;
+
+
+
+
+
+typedef struct _PCI_EXPRESS_ROOTPORT_AER_CAPABILITY {
+
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+
+ PCI_EXPRESS_UNCORRECTABLE_ERROR_STATUS UncorrectableErrorStatus;
+ PCI_EXPRESS_UNCORRECTABLE_ERROR_MASK UncorrectableErrorMask;
+ PCI_EXPRESS_UNCORRECTABLE_ERROR_SEVERITY UncorrectableErrorSeverity;
+ PCI_EXPRESS_CORRECTABLE_ERROR_STATUS CorrectableErrorStatus;
+ PCI_EXPRESS_CORRECTABLE_ERROR_MASK CorrectableErrorMask;
+ PCI_EXPRESS_AER_CAPABILITIES CapabilitiesAndControl;
+ ULONG HeaderLog[4];
+ PCI_EXPRESS_ROOT_ERROR_COMMAND RootErrorCommand;
+ PCI_EXPRESS_ROOT_ERROR_STATUS RootErrorStatus;
+ PCI_EXPRESS_ERROR_SOURCE_ID ErrorSourceId;
+
+} PCI_EXPRESS_ROOTPORT_AER_CAPABILITY, *PPCI_EXPRESS_ROOTPORT_AER_CAPABILITY;
+
+
+
+
+
+typedef struct _PCI_EXPRESS_BRIDGE_AER_CAPABILITY {
+
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+
+ PCI_EXPRESS_UNCORRECTABLE_ERROR_STATUS UncorrectableErrorStatus;
+ PCI_EXPRESS_UNCORRECTABLE_ERROR_MASK UncorrectableErrorMask;
+ PCI_EXPRESS_UNCORRECTABLE_ERROR_SEVERITY UncorrectableErrorSeverity;
+ PCI_EXPRESS_CORRECTABLE_ERROR_STATUS CorrectableErrorStatus;
+ PCI_EXPRESS_CORRECTABLE_ERROR_MASK CorrectableErrorMask;
+ PCI_EXPRESS_AER_CAPABILITIES CapabilitiesAndControl;
+ ULONG HeaderLog[4];
+ PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_STATUS SecUncorrectableErrorStatus;
+ PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_MASK SecUncorrectableErrorMask;
+ PCI_EXPRESS_SEC_UNCORRECTABLE_ERROR_SEVERITY SecUncorrectableErrorSeverity;
+ PCI_EXPRESS_SEC_AER_CAPABILITIES SecCapabilitiesAndControl;
+ ULONG SecHeaderLog[4];
+
+} PCI_EXPRESS_BRIDGE_AER_CAPABILITY, *PPCI_EXPRESS_BRIDGE_AER_CAPABILITY;
+
+
+
+
+typedef union _PCI_EXPRESS_ACS_CAPABILITY_REGISTER {
+
+ struct {
+ USHORT SourceValidation:1;
+ USHORT TranslationBlocking:1;
+ USHORT RequestRedirect:1;
+ USHORT CompletionRedirect:1;
+ USHORT UpstreamForwarding:1;
+ USHORT EgressControl:1;
+ USHORT DirectTranslation:1;
+ USHORT EnhancedCapability:1;
+ USHORT EgressControlVectorSize:8;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_ACS_CAPABILITY_REGISTER, *PPCI_EXPRESS_ACS_CAPABILITY_REGISTER;
+
+
+
+
+
+typedef union _PCI_EXPRESS_ACS_CONTROL {
+
+ struct {
+ USHORT SourceValidation:1;
+ USHORT TranslationBlocking:1;
+ USHORT RequestRedirect:1;
+ USHORT CompletionRedirect:1;
+ USHORT UpstreamForwarding:1;
+ USHORT EgressControl:1;
+ USHORT DirectTranslation:1;
+ USHORT IoBlocking:1;
+ USHORT DspMemoryControl:2;
+ USHORT UspMemoryControl:2;
+ USHORT UnclaimedRedirect:1;
+ USHORT Reserved:3;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_ACS_CONTROL, *PPCI_EXPRESS_ACS_CONTROL;
+
+typedef struct _PCI_EXPRESS_ACS_CAPABILITY {
+
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+
+ PCI_EXPRESS_ACS_CAPABILITY_REGISTER Capability;
+ PCI_EXPRESS_ACS_CONTROL Control;
+
+ ULONG EgressControl[1];
+} PCI_EXPRESS_ACS_CAPABILITY, *PPCI_EXPRESS_ACS_CAPABILITY ;
+
+
+
+
+
+typedef union _PCI_EXPRESS_SRIOV_CAPS {
+
+ struct {
+ ULONG VFMigrationCapable:1;
+ ULONG Reserved1:20;
+ ULONG VFMigrationInterruptNumber:11;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_SRIOV_CAPS, *PPCI_EXPRESS_SRIOV_CAPS;
+
+typedef union _PCI_EXPRESS_SRIOV_CONTROL {
+
+ struct {
+ USHORT VFEnable:1;
+ USHORT VFMigrationEnable:1;
+ USHORT VFMigrationInterruptEnable:1;
+ USHORT VFMemorySpaceEnable:1;
+ USHORT ARICapableHierarchy:1;
+ USHORT Reserved1:11;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_SRIOV_CONTROL, *PPCI_EXPRESS_SRIOV_CONTROL;
+
+typedef union _PCI_EXPRESS_SRIOV_STATUS {
+
+ struct {
+ USHORT VFMigrationStatus:1;
+ USHORT Reserved1:15;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_SRIOV_STATUS, *PPCI_EXPRESS_SRIOV_STATUS;
+
+typedef union _PCI_EXPRESS_SRIOV_MIGRATION_STATE_ARRAY {
+
+ struct {
+ ULONG VFMigrationStateBIR:3;
+ ULONG VFMigrationStateOffset:29;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_SRIOV_MIGRATION_STATE_ARRAY, *PPCI_EXPRESS_SRIOV_MIGRATION_STATE_ARRAY;
+
+typedef struct _PCI_EXPRESS_SRIOV_CAPABILITY {
+
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+
+ PCI_EXPRESS_SRIOV_CAPS SRIOVCapabilities;
+ PCI_EXPRESS_SRIOV_CONTROL SRIOVControl;
+ PCI_EXPRESS_SRIOV_STATUS SRIOVStatus;
+ USHORT InitialVFs;
+ USHORT TotalVFs;
+ USHORT NumVFs;
+ UCHAR FunctionDependencyLink;
+ UCHAR RsvdP1;
+ USHORT FirstVFOffset;
+ USHORT VFStride;
+ USHORT RsvdP2;
+ USHORT VFDeviceId;
+ ULONG SupportedPageSizes;
+ ULONG SystemPageSize;
+ ULONG BaseAddresses[6];
+ PCI_EXPRESS_SRIOV_MIGRATION_STATE_ARRAY VFMigrationStateArrayOffset;
+
+} PCI_EXPRESS_SRIOV_CAPABILITY, *PPCI_EXPRESS_SRIOV_CAPABILITY;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 44926 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _PCI_DEVICE_PRESENCE_PARAMETERS {
+
+ ULONG Size;
+ ULONG Flags;
+
+ USHORT VendorID;
+ USHORT DeviceID;
+ UCHAR RevisionID;
+ USHORT SubVendorID;
+ USHORT SubSystemID;
+ UCHAR BaseClass;
+ UCHAR SubClass;
+ UCHAR ProgIf;
+
+} PCI_DEVICE_PRESENCE_PARAMETERS, *PPCI_DEVICE_PRESENCE_PARAMETERS;
+
+
+
+typedef
+BOOLEAN
+PCI_IS_DEVICE_PRESENT (
+ USHORT VendorID,
+ USHORT DeviceID,
+ UCHAR RevisionID,
+ USHORT SubVendorID,
+ USHORT SubSystemID,
+ ULONG Flags
+);
+
+typedef PCI_IS_DEVICE_PRESENT *PPCI_IS_DEVICE_PRESENT;
+
+
+
+typedef
+BOOLEAN
+PCI_IS_DEVICE_PRESENT_EX (
+ PVOID Context,
+ PPCI_DEVICE_PRESENCE_PARAMETERS Parameters
+ );
+
+typedef PCI_IS_DEVICE_PRESENT_EX *PPCI_IS_DEVICE_PRESENT_EX;
+
+typedef struct _PCI_DEVICE_PRESENT_INTERFACE {
+
+
+
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+
+
+ PPCI_IS_DEVICE_PRESENT IsDevicePresent;
+
+ PPCI_IS_DEVICE_PRESENT_EX IsDevicePresentEx;
+
+} PCI_DEVICE_PRESENT_INTERFACE, *PPCI_DEVICE_PRESENT_INTERFACE;
+
+
+
+
+
+
+
+
+
+typedef
+NTSTATUS
+PCI_EXPRESS_ENTER_LINK_QUIESCENT_MODE (
+ PVOID Context
+ );
+
+typedef PCI_EXPRESS_ENTER_LINK_QUIESCENT_MODE *PPCI_EXPRESS_ENTER_LINK_QUIESCENT_MODE;
+
+
+
+typedef
+NTSTATUS
+PCI_EXPRESS_EXIT_LINK_QUIESCENT_MODE (
+ PVOID Context
+ );
+
+typedef PCI_EXPRESS_EXIT_LINK_QUIESCENT_MODE *PPCI_EXPRESS_EXIT_LINK_QUIESCENT_MODE;
+
+typedef struct _PCI_EXPRESS_LINK_QUIESCENT_INTERFACE {
+
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+ PPCI_EXPRESS_ENTER_LINK_QUIESCENT_MODE PciExpressEnterLinkQuiescentMode;
+ PPCI_EXPRESS_EXIT_LINK_QUIESCENT_MODE PciExpressExitLinkQuiescentMode;
+
+} PCI_EXPRESS_LINK_QUIESCENT_INTERFACE, *PPCI_EXPRESS_LINK_QUIESCENT_INTERFACE;
+
+
+
+
+
+
+
+typedef
+ULONG
+(*PPCI_EXPRESS_ROOT_PORT_READ_CONFIG_SPACE) (
+ PVOID Context,
+ PVOID Buffer,
+ ULONG Offset,
+ ULONG Length
+ );
+
+typedef
+ULONG
+(*PPCI_EXPRESS_ROOT_PORT_WRITE_CONFIG_SPACE) (
+ PVOID Context,
+ PVOID Buffer,
+ ULONG Offset,
+ ULONG Length
+ );
+
+typedef struct _PCI_EXPRESS_ROOT_PORT_INTERFACE {
+
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+ PPCI_EXPRESS_ROOT_PORT_READ_CONFIG_SPACE ReadConfigSpace;
+ PPCI_EXPRESS_ROOT_PORT_WRITE_CONFIG_SPACE WriteConfigSpace;
+
+} PCI_EXPRESS_ROOT_PORT_INTERFACE, *PPCI_EXPRESS_ROOT_PORT_INTERFACE;
+
+
+
+
+
+
+
+
+typedef
+NTSTATUS
+PCI_MSIX_SET_ENTRY (
+ PVOID Context,
+ ULONG TableEntry,
+ ULONG MessageNumber
+ );
+
+typedef PCI_MSIX_SET_ENTRY *PPCI_MSIX_SET_ENTRY;
+
+
+typedef
+NTSTATUS
+PCI_MSIX_MASKUNMASK_ENTRY (
+ PVOID Context,
+ ULONG TableEntry
+ );
+
+typedef PCI_MSIX_MASKUNMASK_ENTRY *PPCI_MSIX_MASKUNMASK_ENTRY;
+
+
+typedef
+NTSTATUS
+PCI_MSIX_GET_ENTRY (
+ PVOID Context,
+ ULONG TableEntry,
+ PULONG MessageNumber,
+ PBOOLEAN Masked
+ );
+
+typedef PCI_MSIX_GET_ENTRY *PPCI_MSIX_GET_ENTRY;
+
+
+typedef
+NTSTATUS
+PCI_MSIX_GET_TABLE_SIZE (
+ PVOID Context,
+ PULONG TableSize
+ );
+
+typedef PCI_MSIX_GET_TABLE_SIZE *PPCI_MSIX_GET_TABLE_SIZE;
+
+typedef struct _PCI_MSIX_TABLE_CONFIG_INTERFACE {
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+ PPCI_MSIX_SET_ENTRY SetTableEntry;
+ PPCI_MSIX_MASKUNMASK_ENTRY MaskTableEntry;
+ PPCI_MSIX_MASKUNMASK_ENTRY UnmaskTableEntry;
+ PPCI_MSIX_GET_ENTRY GetTableEntry;
+ PPCI_MSIX_GET_TABLE_SIZE GetTableSize;
+} PCI_MSIX_TABLE_CONFIG_INTERFACE, *PPCI_MSIX_TABLE_CONFIG_INTERFACE;
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwCreateFile(
+ PHANDLE FileHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PLARGE_INTEGER AllocationSize,
+ ULONG FileAttributes,
+ ULONG ShareAccess,
+ ULONG CreateDisposition,
+ ULONG CreateOptions,
+ PVOID EaBuffer,
+ ULONG EaLength
+ );
+#line 45170 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwOpenFile(
+ PHANDLE FileHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ ULONG ShareAccess,
+ ULONG OpenOptions
+ );
+#line 45186 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwLoadDriver(
+ PUNICODE_STRING DriverServiceName
+ );
+#line 45196 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwUnloadDriver(
+ PUNICODE_STRING DriverServiceName
+ );
+#line 45206 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwQueryInformationFile(
+ HANDLE FileHandle,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID FileInformation,
+ ULONG Length,
+ FILE_INFORMATION_CLASS FileInformationClass
+ );
+#line 45221 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwSetInformationFile(
+ HANDLE FileHandle,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID FileInformation,
+ ULONG Length,
+ FILE_INFORMATION_CLASS FileInformationClass
+ );
+#line 45236 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwReadFile(
+ HANDLE FileHandle,
+ HANDLE Event,
+ PIO_APC_ROUTINE ApcRoutine,
+ PVOID ApcContext,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID Buffer,
+ ULONG Length,
+ PLARGE_INTEGER ByteOffset,
+ PULONG Key
+ );
+#line 45255 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwWriteFile(
+ HANDLE FileHandle,
+ HANDLE Event,
+ PIO_APC_ROUTINE ApcRoutine,
+ PVOID ApcContext,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID Buffer,
+ ULONG Length,
+ PLARGE_INTEGER ByteOffset,
+ PULONG Key
+ );
+#line 45274 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwClose(
+ HANDLE Handle
+ );
+#line 45285 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwCreateDirectoryObject(
+ PHANDLE DirectoryHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes
+ );
+#line 45297 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwMakeTemporaryObject(
+ HANDLE Handle
+ );
+#line 45307 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwCreateSection (
+ PHANDLE SectionHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ PLARGE_INTEGER MaximumSize,
+ ULONG SectionPageProtection,
+ ULONG AllocationAttributes,
+ HANDLE FileHandle
+ );
+#line 45324 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwOpenSection(
+ PHANDLE SectionHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes
+ );
+#line 45337 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwMapViewOfSection(
+ HANDLE SectionHandle,
+ HANDLE ProcessHandle,
+ PVOID *BaseAddress,
+ ULONG_PTR ZeroBits,
+ SIZE_T CommitSize,
+ PLARGE_INTEGER SectionOffset,
+ PSIZE_T ViewSize,
+ SECTION_INHERIT InheritDisposition,
+ ULONG AllocationType,
+ ULONG Win32Protect
+ );
+#line 45359 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwMapViewOfSectionEx (
+ HANDLE SectionHandle,
+ HANDLE ProcessHandle,
+ PVOID *BaseAddress,
+ PLARGE_INTEGER SectionOffset,
+ PSIZE_T ViewSize,
+ ULONG AllocationType,
+ ULONG PageProtection,
+ PMEM_EXTENDED_PARAMETER ExtendedParameters,
+ ULONG ExtendedParameterCount
+ );
+#line 45379 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwUnmapViewOfSection(
+ HANDLE ProcessHandle,
+ PVOID BaseAddress
+ );
+#line 45391 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwCreateKey(
+ PHANDLE KeyHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ ULONG TitleIndex,
+ PUNICODE_STRING Class,
+ ULONG CreateOptions,
+ PULONG Disposition
+ );
+#line 45408 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ZwCreateKeyTransacted(
+ PHANDLE KeyHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ ULONG TitleIndex,
+ PUNICODE_STRING Class,
+ ULONG CreateOptions,
+ HANDLE TransactionHandle,
+ PULONG Disposition
+ );
+#line 45424 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwCreateRegistryTransaction (
+ PHANDLE TransactionHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ ULONG CreateOptions
+ );
+#line 45438 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtOpenRegistryTransaction (
+ PHANDLE TransactionHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes
+ );
+#line 45451 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwCommitRegistryTransaction (
+ HANDLE TransactionHandle,
+ ULONG Flags
+ );
+#line 45462 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtRollbackRegistryTransaction (
+ HANDLE TransactionHandle,
+ ULONG Flags
+ );
+#line 45473 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwOpenKey(
+ PHANDLE KeyHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes
+ );
+#line 45486 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwOpenKeyEx(
+ PHANDLE KeyHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ ULONG OpenOptions
+ );
+#line 45499 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwOpenKeyTransacted(
+ PHANDLE KeyHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ HANDLE TransactionHandle
+ );
+#line 45514 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwOpenKeyTransactedEx(
+ PHANDLE KeyHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ ULONG OpenOptions,
+ HANDLE TransactionHandle
+ );
+#line 45529 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwDeleteKey(
+ HANDLE KeyHandle
+ );
+#line 45542 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwDeleteValueKey(
+ HANDLE KeyHandle,
+ PUNICODE_STRING ValueName
+ );
+#line 45553 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwEnumerateKey(
+ HANDLE KeyHandle,
+ ULONG Index,
+ KEY_INFORMATION_CLASS KeyInformationClass,
+ PVOID KeyInformation,
+ ULONG Length,
+ PULONG ResultLength
+ );
+#line 45572 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwEnumerateValueKey(
+ HANDLE KeyHandle,
+ ULONG Index,
+ KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
+ PVOID KeyValueInformation,
+ ULONG Length,
+ PULONG ResultLength
+ );
+#line 45591 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwFlushKey(
+ HANDLE KeyHandle
+ );
+#line 45601 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwQueryKey(
+ HANDLE KeyHandle,
+ KEY_INFORMATION_CLASS KeyInformationClass,
+ PVOID KeyInformation,
+ ULONG Length,
+ PULONG ResultLength
+ );
+#line 45619 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwQueryValueKey(
+ HANDLE KeyHandle,
+ PUNICODE_STRING ValueName,
+ KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
+ PVOID KeyValueInformation,
+ ULONG Length,
+ PULONG ResultLength
+ );
+#line 45638 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwRenameKey(
+ HANDLE KeyHandle,
+ PUNICODE_STRING NewName
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwSaveKey (
+ HANDLE KeyHandle,
+ HANDLE FileHandle
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwSaveKeyEx (
+ HANDLE KeyHandle,
+ HANDLE FileHandle,
+ ULONG Format
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwRestoreKey (
+ HANDLE KeyHandle,
+ HANDLE FileHandle,
+ ULONG Flags
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwSetInformationKey (
+ HANDLE KeyHandle,
+
+ KEY_SET_INFORMATION_CLASS KeySetInformationClass,
+ PVOID KeySetInformation,
+ ULONG KeySetInformationLength
+ );
+
+#line 45695 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwSetValueKey(
+ HANDLE KeyHandle,
+ PUNICODE_STRING ValueName,
+ ULONG TitleIndex,
+ ULONG Type,
+ PVOID Data,
+ ULONG DataSize
+ );
+#line 45711 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwOpenSymbolicLinkObject(
+ PHANDLE LinkHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes
+ );
+#line 45723 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwQuerySymbolicLinkObject(
+ HANDLE LinkHandle,
+ PUNICODE_STRING LinkTarget,
+ PULONG ReturnedLength
+ );
+#line 45735 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwCreateTransactionManager (
+ PHANDLE TmHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ PUNICODE_STRING LogFileName,
+ ULONG CreateOptions,
+ ULONG CommitStrength
+ );
+#line 45750 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwOpenTransactionManager (
+ PHANDLE TmHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ PUNICODE_STRING LogFileName,
+ LPGUID TmIdentity,
+ ULONG OpenOptions
+ );
+#line 45765 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwRollforwardTransactionManager (
+ HANDLE TransactionManagerHandle,
+ PLARGE_INTEGER TmVirtualClock
+ );
+#line 45777 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwRecoverTransactionManager (
+ HANDLE TransactionManagerHandle
+ );
+#line 45787 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwQueryInformationTransactionManager (
+ HANDLE TransactionManagerHandle,
+ TRANSACTIONMANAGER_INFORMATION_CLASS TransactionManagerInformationClass,
+ PVOID TransactionManagerInformation,
+ ULONG TransactionManagerInformationLength,
+ PULONG ReturnLength
+ );
+#line 45801 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwSetInformationTransactionManager (
+ HANDLE TmHandle,
+ TRANSACTIONMANAGER_INFORMATION_CLASS TransactionManagerInformationClass,
+ PVOID TransactionManagerInformation,
+ ULONG TransactionManagerInformationLength
+ );
+#line 45814 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwEnumerateTransactionObject (
+ HANDLE RootObjectHandle,
+ KTMOBJECT_TYPE QueryType,
+ PKTMOBJECT_CURSOR ObjectCursor,
+ ULONG ObjectCursorLength,
+ PULONG ReturnLength
+ );
+#line 45828 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwCreateTransaction (
+ PHANDLE TransactionHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ LPGUID Uow,
+ HANDLE TmHandle,
+ ULONG CreateOptions,
+ ULONG IsolationLevel,
+ ULONG IsolationFlags,
+ PLARGE_INTEGER Timeout,
+ PUNICODE_STRING Description
+ );
+#line 45847 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwOpenTransaction (
+ PHANDLE TransactionHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ LPGUID Uow,
+ HANDLE TmHandle
+ );
+#line 45861 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwQueryInformationTransaction (
+ HANDLE TransactionHandle,
+ TRANSACTION_INFORMATION_CLASS TransactionInformationClass,
+ PVOID TransactionInformation,
+ ULONG TransactionInformationLength,
+ PULONG ReturnLength
+ );
+#line 45875 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwSetInformationTransaction (
+ HANDLE TransactionHandle,
+ TRANSACTION_INFORMATION_CLASS TransactionInformationClass,
+ PVOID TransactionInformation,
+ ULONG TransactionInformationLength
+ );
+#line 45888 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwCommitTransaction (
+ HANDLE TransactionHandle,
+ BOOLEAN Wait
+ );
+#line 45899 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwRollbackTransaction (
+ HANDLE TransactionHandle,
+ BOOLEAN Wait
+ );
+#line 45910 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwCreateResourceManager (
+ PHANDLE ResourceManagerHandle,
+ ACCESS_MASK DesiredAccess,
+ HANDLE TmHandle,
+ LPGUID ResourceManagerGuid,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ ULONG CreateOptions,
+ PUNICODE_STRING Description
+ );
+#line 45926 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwOpenResourceManager (
+ PHANDLE ResourceManagerHandle,
+ ACCESS_MASK DesiredAccess,
+ HANDLE TmHandle,
+ LPGUID ResourceManagerGuid,
+ POBJECT_ATTRIBUTES ObjectAttributes
+ );
+#line 45940 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwRecoverResourceManager (
+ HANDLE ResourceManagerHandle
+ );
+#line 45950 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwGetNotificationResourceManager (
+ HANDLE ResourceManagerHandle,
+ PTRANSACTION_NOTIFICATION TransactionNotification,
+ ULONG NotificationLength,
+ PLARGE_INTEGER Timeout,
+ PULONG ReturnLength,
+ ULONG Asynchronous,
+ ULONG_PTR AsynchronousContext
+ );
+#line 45966 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwQueryInformationResourceManager (
+ HANDLE ResourceManagerHandle,
+ RESOURCEMANAGER_INFORMATION_CLASS ResourceManagerInformationClass,
+ PVOID ResourceManagerInformation,
+ ULONG ResourceManagerInformationLength,
+ PULONG ReturnLength
+ );
+#line 45980 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwSetInformationResourceManager (
+ HANDLE ResourceManagerHandle,
+ RESOURCEMANAGER_INFORMATION_CLASS ResourceManagerInformationClass,
+ PVOID ResourceManagerInformation,
+ ULONG ResourceManagerInformationLength
+ );
+#line 45993 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwCreateEnlistment (
+ PHANDLE EnlistmentHandle,
+ ACCESS_MASK DesiredAccess,
+ HANDLE ResourceManagerHandle,
+ HANDLE TransactionHandle,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ ULONG CreateOptions,
+ NOTIFICATION_MASK NotificationMask,
+ PVOID EnlistmentKey
+ );
+#line 46010 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwOpenEnlistment (
+ PHANDLE EnlistmentHandle,
+ ACCESS_MASK DesiredAccess,
+ HANDLE RmHandle,
+ LPGUID EnlistmentGuid,
+ POBJECT_ATTRIBUTES ObjectAttributes
+ );
+#line 46024 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwQueryInformationEnlistment (
+ HANDLE EnlistmentHandle,
+ ENLISTMENT_INFORMATION_CLASS EnlistmentInformationClass,
+ PVOID EnlistmentInformation,
+ ULONG EnlistmentInformationLength,
+ PULONG ReturnLength
+ );
+#line 46038 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwSetInformationEnlistment (
+ HANDLE EnlistmentHandle,
+ ENLISTMENT_INFORMATION_CLASS EnlistmentInformationClass,
+ PVOID EnlistmentInformation,
+ ULONG EnlistmentInformationLength
+ );
+#line 46051 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwRecoverEnlistment (
+ HANDLE EnlistmentHandle,
+ PVOID EnlistmentKey
+ );
+#line 46062 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwPrePrepareEnlistment (
+ HANDLE EnlistmentHandle,
+ PLARGE_INTEGER TmVirtualClock
+ );
+#line 46073 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwPrepareEnlistment (
+ HANDLE EnlistmentHandle,
+ PLARGE_INTEGER TmVirtualClock
+ );
+#line 46084 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwCommitEnlistment (
+ HANDLE EnlistmentHandle,
+ PLARGE_INTEGER TmVirtualClock
+ );
+#line 46095 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwRollbackEnlistment (
+ HANDLE EnlistmentHandle,
+ PLARGE_INTEGER TmVirtualClock
+ );
+#line 46106 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwPrePrepareComplete (
+ HANDLE EnlistmentHandle,
+ PLARGE_INTEGER TmVirtualClock
+ );
+#line 46117 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwPrepareComplete (
+ HANDLE EnlistmentHandle,
+ PLARGE_INTEGER TmVirtualClock
+ );
+#line 46128 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwCommitComplete (
+ HANDLE EnlistmentHandle,
+ PLARGE_INTEGER TmVirtualClock
+ );
+#line 46139 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwReadOnlyEnlistment (
+ HANDLE EnlistmentHandle,
+ PLARGE_INTEGER TmVirtualClock
+ );
+#line 46150 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwRollbackComplete (
+ HANDLE EnlistmentHandle,
+ PLARGE_INTEGER TmVirtualClock
+ );
+#line 46160 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwSinglePhaseReject (
+ HANDLE EnlistmentHandle,
+ PLARGE_INTEGER TmVirtualClock
+ );
+#line 46171 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwOpenEvent (
+ PHANDLE EventHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes
+ );
+#line 46183 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwQueryInformationByName (
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID FileInformation,
+ ULONG Length,
+ FILE_INFORMATION_CLASS FileInformationClass
+ );
+#line 46197 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwQueryFullAttributesFile(
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ PFILE_NETWORK_OPEN_INFORMATION FileInformation
+ );
+#line 46208 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwCopyFileChunk (
+ HANDLE SourceHandle,
+ HANDLE DestHandle,
+ HANDLE Event,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ ULONG Length,
+ PLARGE_INTEGER SourceOffset,
+ PLARGE_INTEGER DestOffset,
+ PULONG SourceKey,
+ PULONG DestKey,
+ ULONG Flags
+ );
+#line 46228 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+#line 46236 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 46238 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 46240 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef ULONG CLFS_CONTAINER_ID;
+typedef CLFS_CONTAINER_ID *PCLFS_CONTAINER_ID;
+typedef CLFS_CONTAINER_ID **PPCLFS_CONTAINER_ID;
+
+#line 46308 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _CLS_LSN
+{
+
+ ULONGLONG Internal;
+
+} CLS_LSN, *PCLS_LSN, **PPCLS_LSN;
+
+#line 46329 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 46331 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+typedef CLS_LSN CLFS_LSN;
+typedef CLFS_LSN *PCLFS_LSN, **PPCLFS_LSN;
+
+#line 46342 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+extern __declspec(dllimport) const CLFS_LSN CLFS_LSN_INVALID;
+extern __declspec(dllimport) const CLFS_LSN CLFS_LSN_NULL;
+#line 46352 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 46388 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 46390 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 46406 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 46408 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 46425 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 46427 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+typedef UCHAR CLS_RECORD_TYPE, *PCLS_RECORD_TYPE, **PPCLS_RECORD_TYPE;
+typedef CLS_RECORD_TYPE CLFS_RECORD_TYPE, *PCLFS_RECORD_TYPE, **PPCLFS_RECORD_TYPE;
+#line 46436 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+typedef enum _CLS_CONTEXT_MODE
+{
+ ClsContextNone = 0x00,
+ ClsContextUndoNext,
+ ClsContextPrevious,
+ ClsContextForward
+
+} CLS_CONTEXT_MODE, *PCLS_CONTEXT_MODE, **PPCLS_CONTEXT_MODE;
+#line 46454 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+typedef enum _CLFS_CONTEXT_MODE
+{
+ ClfsContextNone = 0x00,
+ ClfsContextUndoNext,
+ ClfsContextPrevious,
+ ClfsContextForward
+
+} CLFS_CONTEXT_MODE, *PCLFS_CONTEXT_MODE, **PPCLFS_CONTEXT_MODE;
+#line 46469 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _CLFS_NODE_ID
+{
+ ULONG cType;
+ ULONG cbNode;
+
+} CLFS_NODE_ID, *PCLFS_NODE_ID;
+#line 46487 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct _CLS_WRITE_ENTRY
+{
+ PVOID Buffer;
+ ULONG ByteLength;
+} CLS_WRITE_ENTRY, *PCLS_WRITE_ENTRY, **PPCLS_WRITE_ENTRY;
+#line 46503 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+typedef CLS_WRITE_ENTRY CLFS_WRITE_ENTRY;
+typedef CLFS_WRITE_ENTRY *PCLFS_WRITE_ENTRY, **PPCLFS_WRITE_ENTRY;
+#line 46512 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+typedef GUID CLFS_LOG_ID;
+#line 46522 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+typedef struct _CLS_INFORMATION
+{
+ LONGLONG TotalAvailable;
+ LONGLONG CurrentAvailable;
+ LONGLONG TotalReservation;
+ ULONGLONG BaseFileSize;
+ ULONGLONG ContainerSize;
+ ULONG TotalContainers;
+ ULONG FreeContainers;
+ ULONG TotalClients;
+ ULONG Attributes;
+ ULONG FlushThreshold;
+ ULONG SectorSize;
+ CLS_LSN MinArchiveTailLsn;
+ CLS_LSN BaseLsn;
+ CLS_LSN LastFlushedLsn;
+ CLS_LSN LastLsn;
+ CLS_LSN RestartLsn;
+ GUID Identity;
+} CLS_INFORMATION, *PCLS_INFORMATION, *PPCLS_INFORMATION;
+#line 46552 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+typedef CLS_INFORMATION CLFS_INFORMATION;
+typedef CLFS_INFORMATION *PCLFS_INFORMATION, *PPCLFS_INFORMATION;
+#line 46561 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _CLFS_LOG_NAME_INFORMATION
+{
+
+ USHORT NameLengthInBytes;
+ WCHAR Name[1];
+
+} CLFS_LOG_NAME_INFORMATION, *PCLFS_LOG_NAME_INFORMATION, **PPCLFS_LOG_NAME_INFORMATION;
+#line 46604 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+typedef struct _CLFS_STREAM_ID_INFORMATION
+{
+
+ UCHAR StreamIdentifier;
+
+} CLFS_STREAM_ID_INFORMATION, *PCLFS_STREAM_ID_INFORMATION, **PPCLFS_STREAM_ID_INFORMATION;
+#line 46620 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+#pragma pack(push,8)
+typedef struct _CLFS_PHYSICAL_LSN_INFORMATION
+{
+ UCHAR StreamIdentifier;
+ CLFS_LSN VirtualLsn;
+ CLFS_LSN PhysicalLsn;
+
+} CLFS_PHYSICAL_LSN_INFORMATION, *PCLFS_PHYSICAL_LSN_INFORMATION;
+#pragma pack(pop)
+#line 46638 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+typedef UINT32 CLS_CONTAINER_STATE, *PCLS_CONTAINER_STATE, *PPCLS_CONTAINER_STATE;
+typedef CLS_CONTAINER_STATE CLFS_CONTAINER_STATE, *PCLFS_CONTAINER_STATE, *PPCLFS_CONTAINER_STATE;
+#line 46651 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 46687 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 46689 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 46707 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 46709 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _CLS_CONTAINER_INFORMATION
+{
+ ULONG FileAttributes;
+ ULONGLONG CreationTime;
+ ULONGLONG LastAccessTime;
+ ULONGLONG LastWriteTime;
+ LONGLONG ContainerSize;
+ ULONG FileNameActualLength;
+ ULONG FileNameLength;
+ WCHAR FileName [(256)];
+ CLFS_CONTAINER_STATE State;
+ CLFS_CONTAINER_ID PhysicalContainerId;
+ CLFS_CONTAINER_ID LogicalContainerId;
+
+} CLS_CONTAINER_INFORMATION, *PCLS_CONTAINER_INFORMATION, **PPCLS_CONTAINER_INFORMATION;
+
+
+
+
+
+typedef CLS_CONTAINER_INFORMATION CLFS_CONTAINER_INFORMATION;
+typedef CLFS_CONTAINER_INFORMATION *PCLFS_CONTAINER_INFORMATION, **PPCLFS_CONTAINER_INFORMATION;
+#line 46743 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+typedef enum _CLS_LOG_INFORMATION_CLASS
+{
+
+ ClfsLogBasicInformation = 0x00,
+ ClfsLogBasicInformationPhysical,
+ ClfsLogPhysicalNameInformation,
+ ClfsLogStreamIdentifierInformation,
+
+ ClfsLogSystemMarkingInformation,
+ ClfsLogPhysicalLsnInformation
+#line 46764 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+} CLS_LOG_INFORMATION_CLASS, *PCLS_LOG_INFORMATION_CLASS, **PPCLS_LOG_INFORMATION_CLASS;
+
+
+
+
+
+typedef CLS_LOG_INFORMATION_CLASS CLFS_LOG_INFORMATION_CLASS;
+typedef CLFS_LOG_INFORMATION_CLASS *PCLFS_LOG_INFORMATION_CLASS, **PPCLFS_LOG_INFORMATION_CLASS;
+#line 46774 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+typedef enum _CLS_IOSTATS_CLASS
+{
+ ClsIoStatsDefault = 0x0000,
+ ClsIoStatsMax = 0xFFFF
+
+} CLS_IOSTATS_CLASS, *PCLS_IOSTATS_CLASS, **PPCLS_IOSTATS_CLASS;
+#line 46789 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+typedef enum _CLFS_IOSTATS_CLASS
+{
+ ClfsIoStatsDefault = 0x0000,
+ ClfsIoStatsMax = 0xFFFF
+
+} CLFS_IOSTATS_CLASS, *PCLFS_IOSTATS_CLASS, **PPCLFS_IOSTATS_CLASS;
+#line 46805 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _CLS_IO_STATISTICS_HEADER
+{
+ UCHAR ubMajorVersion;
+ UCHAR ubMinorVersion;
+ CLFS_IOSTATS_CLASS eStatsClass;
+ USHORT cbLength;
+ ULONG coffData;
+
+} CLS_IO_STATISTICS_HEADER, *PCLS_IO_STATISTICS_HEADER, **PPCLS_IO_STATISTICS_HEADER;
+
+
+
+
+
+typedef CLS_IO_STATISTICS_HEADER CLFS_IO_STATISTICS_HEADER;
+typedef CLFS_IO_STATISTICS_HEADER *PCLFS_IO_STATISTICS_HEADER, **PPCLFS_IO_STATISTICS_HEADER;
+#line 46833 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+typedef struct _CLS_IO_STATISTICS
+{
+ CLS_IO_STATISTICS_HEADER hdrIoStats;
+ ULONGLONG cFlush;
+ ULONGLONG cbFlush;
+ ULONGLONG cMetaFlush;
+ ULONGLONG cbMetaFlush;
+
+} CLS_IO_STATISTICS, *PCLS_IO_STATISTICS, **PPCLS_IO_STATISTICS;
+
+
+
+
+
+typedef CLS_IO_STATISTICS CLFS_IO_STATISTICS;
+typedef CLFS_IO_STATISTICS *PCLFS_IO_STATISTICS, **PPCLFS_IO_STATISTICS;
+#line 46853 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 46880 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef UCHAR CLFS_SCAN_MODE, *PCLFS_SCAN_MODE;
+#line 46883 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef FILE_OBJECT LOG_FILE_OBJECT, *PLOG_FILE_OBJECT, **PPLOG_FILE_OBJECT;
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4324)
+#line 46907 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+#line 46908 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef struct _CLS_SCAN_CONTEXT
+{
+ CLFS_NODE_ID cidNode;
+ PLOG_FILE_OBJECT plfoLog;
+ __declspec(align(8)) ULONG cIndex;
+ __declspec(align(8)) ULONG cContainers;
+ __declspec(align(8)) ULONG cContainersReturned;
+ __declspec(align(8)) CLFS_SCAN_MODE eScanMode;
+ __declspec(align(8)) PCLS_CONTAINER_INFORMATION pinfoContainer;
+
+} CLS_SCAN_CONTEXT, *PCLS_SCAN_CONTEXT, **PPCLS_SCAN_CONTEXT;
+
+
+
+#pragma warning(pop)
+#line 46925 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+#line 46926 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 46928 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+typedef CLS_SCAN_CONTEXT CLFS_SCAN_CONTEXT;
+typedef CLFS_SCAN_CONTEXT *PCLFS_SCAN_CONTEXT, **PPCLFS_SCAN_CONTEXT;
+#line 46938 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _CLS_ARCHIVE_DESCRIPTOR
+{
+ ULONGLONG coffLow;
+ ULONGLONG coffHigh;
+ CLS_CONTAINER_INFORMATION infoContainer;
+
+} CLS_ARCHIVE_DESCRIPTOR, *PCLS_ARCHIVE_DESCRIPTOR, **PPCLS_ARCHIVE_DESCRIPTOR;
+
+
+
+
+
+typedef CLS_ARCHIVE_DESCRIPTOR CLFS_ARCHIVE_DESCRIPTOR;
+typedef CLFS_ARCHIVE_DESCRIPTOR *PCLFS_ARCHIVE_DESCRIPTOR, **PPCLFS_ARCHIVE_DESCRIPTOR;
+#line 46965 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+typedef PVOID (* CLFS_BLOCK_ALLOCATION) (ULONG cbBufferLength, PVOID pvUserContext);
+
+
+
+
+
+
+
+typedef void (* CLFS_BLOCK_DEALLOCATION) (PVOID pvBuffer, PVOID pvUserContext);
+#line 46983 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+typedef enum _CLFS_LOG_ARCHIVE_MODE
+{
+
+ ClfsLogArchiveEnabled = 0x01,
+ ClfsLogArchiveDisabled = 0x02
+
+} CLFS_LOG_ARCHIVE_MODE, *PCLFS_LOG_ARCHIVE_MODE;
+#line 46999 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport) BOOLEAN __stdcall
+ClfsLsnEqual
+(
+ const CLFS_LSN* plsn1,
+ const CLFS_LSN* plsn2
+);
+#line 47038 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport) BOOLEAN __stdcall
+ClfsLsnLess
+(
+ const CLFS_LSN* plsn1,
+ const CLFS_LSN* plsn2
+);
+#line 47067 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport) BOOLEAN __stdcall
+ClfsLsnGreater
+(
+ const CLFS_LSN* plsn1,
+ const CLFS_LSN* plsn2
+);
+#line 47096 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport) BOOLEAN __stdcall
+ClfsLsnNull
+(
+ const CLFS_LSN* plsn
+);
+#line 47124 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport) CLFS_CONTAINER_ID __stdcall
+ClfsLsnContainer
+(
+ const CLFS_LSN* plsn
+);
+#line 47150 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport) CLFS_LSN __stdcall
+ClfsLsnCreate
+(
+ CLFS_CONTAINER_ID cidContainer,
+ ULONG offBlock,
+ ULONG cRecord
+);
+#line 47183 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport) ULONG __stdcall
+ClfsLsnBlockOffset
+(
+ const CLFS_LSN* plsn
+);
+#line 47209 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport) ULONG __stdcall
+ClfsLsnRecordSequence
+(
+ const CLFS_LSN* plsn
+);
+#line 47235 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport) BOOLEAN __stdcall
+ClfsLsnInvalid
+(
+ const CLFS_LSN* plsn
+);
+#line 47263 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport) CLFS_LSN __stdcall
+ClfsLsnIncrement ( PCLFS_LSN plsn);
+#line 47288 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 47400 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _CLFS_MGMT_POLICY_TYPE {
+
+ ClfsMgmtPolicyMaximumSize = 0x0,
+ ClfsMgmtPolicyMinimumSize,
+ ClfsMgmtPolicyNewContainerSize,
+ ClfsMgmtPolicyGrowthRate,
+ ClfsMgmtPolicyLogTail,
+ ClfsMgmtPolicyAutoShrink,
+ ClfsMgmtPolicyAutoGrow,
+ ClfsMgmtPolicyNewContainerPrefix,
+ ClfsMgmtPolicyNewContainerSuffix,
+ ClfsMgmtPolicyNewContainerExtension,
+
+ ClfsMgmtPolicyInvalid
+
+} CLFS_MGMT_POLICY_TYPE, *PCLFS_MGMT_POLICY_TYPE;
+#line 47428 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+#line 47432 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+#line 47441 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+#line 47449 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 47464 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct _CLFS_MGMT_POLICY {
+
+
+
+
+ ULONG Version;
+
+
+
+
+ ULONG LengthInBytes;
+
+
+
+
+
+ ULONG PolicyFlags;
+
+
+
+
+ CLFS_MGMT_POLICY_TYPE PolicyType;
+
+
+
+
+
+
+
+
+ union {
+
+ struct {
+ ULONG Containers;
+ } MaximumSize;
+
+ struct {
+ ULONG Containers;
+ } MinimumSize;
+
+ struct {
+ ULONG SizeInBytes;
+ } NewContainerSize;
+
+ struct {
+ ULONG AbsoluteGrowthInContainers;
+ ULONG RelativeGrowthPercentage;
+ } GrowthRate;
+
+ struct {
+ ULONG MinimumAvailablePercentage;
+ ULONG MinimumAvailableContainers;
+ } LogTail;
+
+ struct {
+ ULONG Percentage;
+ } AutoShrink;
+
+ struct {
+ ULONG Enabled;
+ } AutoGrow;
+
+ struct {
+ USHORT PrefixLengthInBytes;
+ WCHAR PrefixString[1];
+ } NewContainerPrefix;
+
+ struct {
+ ULONGLONG NextContainerSuffix;
+ } NewContainerSuffix;
+
+ struct {
+ USHORT ExtensionLengthInBytes;
+ WCHAR ExtensionString[1];
+ } NewContainerExtension;
+
+ } PolicyParameters;
+
+
+
+
+
+
+} CLFS_MGMT_POLICY, *PCLFS_MGMT_POLICY;
+#line 47559 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+typedef enum _CLFS_MGMT_NOTIFICATION_TYPE
+{
+
+
+
+
+
+ ClfsMgmtAdvanceTailNotification = 0,
+
+
+
+
+
+
+ ClfsMgmtLogFullHandlerNotification,
+
+
+
+
+
+
+ ClfsMgmtLogUnpinnedNotification,
+
+
+
+
+
+
+ ClfsMgmtLogWriteNotification
+
+} CLFS_MGMT_NOTIFICATION_TYPE, *PCLFS_MGMT_NOTIFICATION_TYPE;
+#line 47601 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+typedef struct _CLFS_MGMT_NOTIFICATION
+{
+
+
+
+
+
+ CLFS_MGMT_NOTIFICATION_TYPE Notification;
+
+
+
+
+
+
+ CLFS_LSN Lsn;
+
+
+
+
+
+
+
+ USHORT LogIsPinned;
+
+} CLFS_MGMT_NOTIFICATION, *PCLFS_MGMT_NOTIFICATION;
+#line 47636 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+NTSTATUS
+(*PCLFS_CLIENT_ADVANCE_TAIL_CALLBACK) (
+ PLOG_FILE_OBJECT LogFile,
+ PCLFS_LSN TargetLsn,
+ PVOID ClientData
+ );
+#line 47659 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+typedef
+void
+(*PCLFS_CLIENT_LFF_HANDLER_COMPLETE_CALLBACK) (
+ PLOG_FILE_OBJECT LogFile,
+ NTSTATUS OperationStatus,
+ BOOLEAN LogIsPinned,
+ PVOID ClientData
+ );
+#line 47675 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+typedef
+void
+(*PCLFS_CLIENT_LOG_UNPINNED_CALLBACK) (
+ PLOG_FILE_OBJECT LogFile,
+ PVOID ClientData
+ );
+#line 47690 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+typedef
+void
+(*PCLFS_SET_LOG_SIZE_COMPLETE_CALLBACK) (
+ PLOG_FILE_OBJECT LogFile,
+ NTSTATUS OperationStatus,
+ PVOID ClientData
+ );
+#line 47707 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _CLFS_MGMT_CLIENT_REGISTRATION {
+
+
+
+
+
+ ULONG Version;
+
+ PCLFS_CLIENT_ADVANCE_TAIL_CALLBACK AdvanceTailCallback;
+ PVOID AdvanceTailCallbackData;
+
+ PCLFS_CLIENT_LFF_HANDLER_COMPLETE_CALLBACK LogGrowthCompleteCallback;
+ PVOID LogGrowthCompleteCallbackData;
+
+ PCLFS_CLIENT_LOG_UNPINNED_CALLBACK LogUnpinnedCallback;
+ PVOID LogUnpinnedCallbackData;
+
+} CLFS_MGMT_CLIENT_REGISTRATION, *PCLFS_MGMT_CLIENT_REGISTRATION;
+#line 47740 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+typedef PVOID CLFS_MGMT_CLIENT, *PCLFS_MGMT_CLIENT;
+#line 47752 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ClfsMgmtRegisterManagedClient(
+ PLOG_FILE_OBJECT LogFile,
+ PCLFS_MGMT_CLIENT_REGISTRATION RegistrationData,
+ PCLFS_MGMT_CLIENT ClientCookie
+ );
+#line 47763 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+ClfsMgmtDeregisterManagedClient(
+ CLFS_MGMT_CLIENT ClientCookie
+ );
+#line 47771 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+ClfsMgmtTailAdvanceFailure(
+ CLFS_MGMT_CLIENT Client,
+ NTSTATUS Reason
+ );
+#line 47780 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+ClfsMgmtHandleLogFileFull(
+ CLFS_MGMT_CLIENT Client
+ );
+#line 47788 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+ClfsMgmtInstallPolicy(
+ PLOG_FILE_OBJECT LogFile,
+ PCLFS_MGMT_POLICY Policy,
+ ULONG PolicyLength
+ );
+#line 47798 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+ClfsMgmtQueryPolicy(
+ PLOG_FILE_OBJECT LogFile,
+ CLFS_MGMT_POLICY_TYPE PolicyType,
+ PCLFS_MGMT_POLICY Policy,
+ PULONG PolicyLength
+ );
+#line 47809 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+ClfsMgmtRemovePolicy(
+ PLOG_FILE_OBJECT LogFile,
+ CLFS_MGMT_POLICY_TYPE PolicyType
+ );
+#line 47818 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+ClfsMgmtSetLogFileSize(
+ PLOG_FILE_OBJECT LogFile,
+ PULONGLONG NewSizeInContainers,
+ PULONGLONG ResultingSizeInContainers,
+ PCLFS_SET_LOG_SIZE_COMPLETE_CALLBACK CompletionRoutine,
+ PVOID CompletionRoutineData
+ );
+#line 47830 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ClfsMgmtSetLogFileSizeAsClient(
+ PLOG_FILE_OBJECT LogFile,
+ CLFS_MGMT_CLIENT ClientCookie,
+ PULONGLONG NewSizeInContainers,
+ PULONGLONG ResultingSizeInContainers,
+ PCLFS_SET_LOG_SIZE_COMPLETE_CALLBACK CompletionRoutine,
+ PVOID CompletionRoutineData
+ );
+#line 47844 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsInitialize (void);
+#line 47868 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void ClfsFinalize (void);
+#line 47879 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsCreateLogFile (
+ PPLOG_FILE_OBJECT pplfoLog,
+ PUNICODE_STRING puszLogFileName,
+ ACCESS_MASK fDesiredAccess,
+ ULONG dwShareMode,
+ PSECURITY_DESCRIPTOR psdLogFile,
+ ULONG fCreateDisposition,
+ ULONG fCreateOptions,
+ ULONG fFlagsAndAttributes,
+ ULONG fLogOptionFlag,
+ PVOID pvContext,
+ ULONG cbContext
+ );
+#line 47904 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsDeleteLogByPointer ( PLOG_FILE_OBJECT plfoLog);
+#line 47916 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsDeleteLogFile (
+ PUNICODE_STRING puszLogFileName,
+ PVOID pvReserved,
+ ULONG fLogOptionFlag,
+ PVOID pvContext,
+ ULONG cbContext
+ );
+#line 47934 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsAddLogContainer (
+ PLOG_FILE_OBJECT plfoLog,
+ PULONGLONG pcbContainer,
+ PUNICODE_STRING puszContainerPath
+ );
+#line 47950 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsAddLogContainerSet (
+ PLOG_FILE_OBJECT plfoLog,
+ USHORT cContainers,
+ PULONGLONG pcbContainer,
+ PUNICODE_STRING rguszContainerPath
+ );
+#line 47967 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsRemoveLogContainer (
+ PLOG_FILE_OBJECT plfoLog,
+ PUNICODE_STRING puszContainerPath,
+ BOOLEAN fForce
+ );
+#line 47983 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsRemoveLogContainerSet (
+ PLOG_FILE_OBJECT plfoLog,
+ USHORT cContainers,
+ PUNICODE_STRING rgwszContainerPath,
+ BOOLEAN fForce
+ );
+#line 48000 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsSetArchiveTail (
+ PLOG_FILE_OBJECT plfoLog,
+ PCLFS_LSN plsnArchiveTail
+ );
+#line 48015 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsSetEndOfLog (
+ PLOG_FILE_OBJECT plfoLog,
+ PCLFS_LSN plsnEnd
+ );
+#line 48030 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsCreateScanContext (
+ PLOG_FILE_OBJECT plfoLog,
+ ULONG cFromContainer,
+ ULONG cContainers,
+ CLFS_SCAN_MODE eScanMode,
+ PCLFS_SCAN_CONTEXT pcxScan
+ );
+#line 48048 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsScanLogContainers (
+ PCLFS_SCAN_CONTEXT pcxScan,
+ CLFS_SCAN_MODE eScanMode
+ );
+#line 48063 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsGetContainerName (
+ PLOG_FILE_OBJECT plfoLog,
+ CLFS_CONTAINER_ID cidLogicalContainer,
+ PUNICODE_STRING puszContainerName,
+ PULONG pcActualLenContainerName
+ );
+#line 48081 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsGetLogFileInformation (
+ PLOG_FILE_OBJECT plfoLog,
+ PCLFS_INFORMATION pinfoBuffer,
+ PULONG pcbInfoBuffer
+ );
+#line 48101 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsQueryLogFileInformation (
+ PLOG_FILE_OBJECT plfoLog,
+ CLFS_LOG_INFORMATION_CLASS eInformationClass,
+ PVOID pinfoInputBuffer,
+ ULONG cbinfoInputBuffer,
+ PVOID pinfoBuffer,
+ PULONG pcbInfoBuffer
+ );
+#line 48120 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsSetLogFileInformation (
+ PLOG_FILE_OBJECT plfoLog,
+ CLFS_LOG_INFORMATION_CLASS eInformationClass,
+ PVOID pinfoBuffer,
+ ULONG cbBuffer
+ );
+#line 48137 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsReadRestartArea (
+ PVOID pvMarshalContext,
+ PVOID *ppvRestartBuffer,
+ PULONG pcbRestartBuffer,
+ PCLFS_LSN plsn,
+ PVOID *ppvReadContext
+ );
+#line 48155 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsReadPreviousRestartArea (
+ PVOID pvReadContext,
+ PVOID *ppvRestartBuffer,
+ PULONG pcbRestartBuffer,
+ PCLFS_LSN plsnRestart
+ );
+#line 48173 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsWriteRestartArea (
+ PVOID pvMarshalContext,
+ PVOID pvRestartBuffer,
+ ULONG cbRestartBuffer,
+ PCLFS_LSN plsnBase,
+ ULONG fFlags,
+ PULONG pcbWritten,
+ PCLFS_LSN plsnNext
+ );
+#line 48193 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsAdvanceLogBase (
+ PVOID pvMarshalContext,
+ PCLFS_LSN plsnBase,
+ ULONG fFlags
+ );
+#line 48208 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsCloseAndResetLogFile ( PLOG_FILE_OBJECT plfoLog);
+#line 48220 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsCloseLogFileObject ( PLOG_FILE_OBJECT plfoLog);
+#line 48231 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsCreateMarshallingArea (
+ PLOG_FILE_OBJECT plfoLog,
+ POOL_TYPE ePoolType,
+ PALLOCATE_FUNCTION pfnAllocBuffer,
+ PFREE_FUNCTION pfnFreeBuffer,
+ ULONG cbMarshallingBuffer,
+ ULONG cMaxWriteBuffers,
+ ULONG cMaxReadBuffers,
+ PVOID *ppvMarshalContext
+ );
+#line 48252 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsCreateMarshallingAreaEx (
+ PLOG_FILE_OBJECT plfoLog,
+ POOL_TYPE ePoolType,
+ PALLOCATE_FUNCTION pfnAllocBuffer,
+ PFREE_FUNCTION pfnFreeBuffer,
+ ULONG cbMarshallingBuffer,
+ ULONG cMaxWriteBuffers,
+ ULONG cMaxReadBuffers,
+ ULONG cAlignmentSize,
+ ULONGLONG fFlags,
+ PVOID *ppvMarshalContext
+ );
+#line 48275 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsDeleteMarshallingArea ( PVOID pvMarshalContext);
+#line 48287 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsReserveAndAppendLog (
+ PVOID pvMarshalContext,
+ PCLFS_WRITE_ENTRY rgWriteEntries,
+ ULONG cWriteEntries,
+ PCLFS_LSN plsnUndoNext,
+ PCLFS_LSN plsnPrevious,
+ ULONG cReserveRecords,
+ PLONGLONG rgcbReservation,
+ ULONG fFlags,
+ PCLFS_LSN plsn
+ );
+#line 48309 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsReserveAndAppendLogAligned (
+ PVOID pvMarshalContext,
+ PCLFS_WRITE_ENTRY rgWriteEntries,
+ ULONG cWriteEntries,
+ ULONG cbEntryAlignment,
+ PCLFS_LSN plsnUndoNext,
+ PCLFS_LSN plsnPrevious,
+ ULONG cReserveRecords,
+ PLONGLONG rgcbReservation,
+ ULONG fFlags,
+ PCLFS_LSN plsn
+ );
+#line 48333 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsAlignReservedLog (
+ PVOID pvMarshalContext,
+ ULONG cRecords,
+ LONGLONG rgcbReservation [],
+ PLONGLONG pcbAlignReservation
+ );
+#line 48350 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsAllocReservedLog (
+ PVOID pvMarshalContext,
+ ULONG cRecords,
+ PLONGLONG pcbAdjustment
+ );
+#line 48366 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsFreeReservedLog (
+ PVOID pvMarshalContext,
+ ULONG cRecords,
+ PLONGLONG pcbAdjustment
+ );
+#line 48382 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsFlushBuffers ( PVOID pvMarshalContext);
+#line 48394 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsFlushToLsn (
+ PVOID pvMarshalContext,
+ PCLFS_LSN plsnFlush,
+ PCLFS_LSN plsnLastFlushed
+ );
+#line 48410 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsReadLogRecord (
+ PVOID pvMarshalContext,
+ PCLFS_LSN plsnFirst,
+ CLFS_CONTEXT_MODE peContextMode,
+ PVOID *ppvReadBuffer,
+ PULONG pcbReadBuffer,
+ PCLFS_RECORD_TYPE peRecordType,
+ PCLFS_LSN plsnUndoNext,
+ PCLFS_LSN plsnPrevious,
+ PVOID* ppvReadContext
+ );
+#line 48432 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsReadNextLogRecord (
+ PVOID pvReadContext,
+ PVOID *ppvBuffer,
+ PULONG pcbBuffer,
+ PCLFS_RECORD_TYPE peRecordType,
+ PCLFS_LSN plsnUser,
+ PCLFS_LSN plsnUndoNext,
+ PCLFS_LSN plsnPrevious,
+ PCLFS_LSN plsnRecord
+ );
+#line 48452 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsTerminateReadLog ( PVOID pvCursorContext);
+#line 48463 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsGetLastLsn (
+ PLOG_FILE_OBJECT plfoLog,
+ PCLFS_LSN plsnLast
+ );
+#line 48477 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS ClfsGetIoStatistics (
+ PLOG_FILE_OBJECT plfoLog,
+ PVOID pvStatsBuffer,
+ ULONG cbStatsBuffer,
+ CLFS_IOSTATS_CLASS eStatsClass,
+ PULONG pcbStatsWritten
+ );
+#line 48494 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+CLFS_LSN
+ClfsLaterLsn ( PCLFS_LSN plsn);
+#line 48519 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+CLFS_LSN
+ClfsEarlierLsn ( PCLFS_LSN plsn);
+#line 48544 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ClfsLsnDifference (
+ PCLFS_LSN plsnStart,
+ PCLFS_LSN plsnFinish,
+ ULONG cbContainer,
+ ULONG cbMaxBlock,
+ PLONGLONG pcbDifference
+ );
+#line 48580 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+ClfsValidTopLevelContext ( PIRP pirpTopLevelContext);
+#line 48604 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+#line 48611 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef struct _KTRANSACTION KTRANSACTION, *PKTRANSACTION, * PRKTRANSACTION;
+typedef struct _KENLISTMENT KENLISTMENT, *PKENLISTMENT, * PRKENLISTMENT;
+typedef struct _KRESOURCEMANAGER KRESOURCEMANAGER, *PKRESOURCEMANAGER, * PRKRESOURCEMANAGER;
+typedef struct _KTM KTM, *PKTM, * PRKTM;
+
+typedef GUID UOW, *PUOW;
+typedef GUID *PGUID;
+
+
+
+
+
+typedef
+NTSTATUS
+(__stdcall *PTM_RM_NOTIFICATION) (
+ PKENLISTMENT EnlistmentObject,
+ PVOID RMContext,
+ PVOID TransactionContext,
+ ULONG TransactionNotification,
+ PLARGE_INTEGER TmVirtualClock,
+ ULONG ArgumentLength,
+ PVOID Argument
+ );
+
+
+
+
+
+typedef GUID KCRM_PROTOCOL_ID, *PKCRM_PROTOCOL_ID;
+
+typedef
+NTSTATUS
+(__stdcall *PTM_PROPAGATE_ROUTINE) (
+ PVOID PropagationCookie,
+ PVOID CallbackData,
+ NTSTATUS PropagationStatus,
+ GUID TransactionGuid
+ );
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmInitializeTransactionManager (
+ PRKTM TransactionManager,
+ PCUNICODE_STRING LogFileName,
+ PGUID TmId,
+ ULONG CreateOptions
+ );
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmRenameTransactionManager (
+ PUNICODE_STRING LogFileName,
+ LPGUID ExistingTransactionManagerGuid
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmRecoverTransactionManager (
+ PKTM Tm,
+ PLARGE_INTEGER TargetVirtualClock
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmCommitTransaction (
+ PKTRANSACTION Transaction,
+ BOOLEAN Wait
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmRollbackTransaction (
+ PKTRANSACTION Transaction,
+ BOOLEAN Wait
+ );
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmCreateEnlistment (
+ PHANDLE EnlistmentHandle,
+ KPROCESSOR_MODE PreviousMode,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ PRKRESOURCEMANAGER ResourceManager,
+ PKTRANSACTION Transaction,
+ ULONG CreateOptions,
+ NOTIFICATION_MASK NotificationMask,
+ PVOID EnlistmentKey
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmRecoverEnlistment (
+ PKENLISTMENT Enlistment,
+ PVOID EnlistmentKey
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmPrePrepareEnlistment (
+ PKENLISTMENT Enlistment,
+ PLARGE_INTEGER TmVirtualClock
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmPrepareEnlistment (
+ PKENLISTMENT Enlistment,
+ PLARGE_INTEGER TmVirtualClock
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmCommitEnlistment (
+ PKENLISTMENT Enlistment,
+ PLARGE_INTEGER TmVirtualClock
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmRollbackEnlistment (
+ PKENLISTMENT Enlistment,
+ PLARGE_INTEGER TmVirtualClock
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmPrePrepareComplete (
+ PKENLISTMENT Enlistment,
+ PLARGE_INTEGER TmVirtualClock
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmPrepareComplete (
+ PKENLISTMENT Enlistment,
+ PLARGE_INTEGER TmVirtualClock
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmReadOnlyEnlistment (
+ PKENLISTMENT Enlistment,
+ PLARGE_INTEGER TmVirtualClock
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmCommitComplete (
+ PKENLISTMENT Enlistment,
+ PLARGE_INTEGER TmVirtualClock
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmRollbackComplete (
+ PKENLISTMENT Enlistment,
+ PLARGE_INTEGER TmVirtualClock
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmReferenceEnlistmentKey (
+ PKENLISTMENT Enlistment,
+ PVOID *Key
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmDereferenceEnlistmentKey (
+ PKENLISTMENT Enlistment,
+ PBOOLEAN LastReference
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmSinglePhaseReject (
+ PKENLISTMENT Enlistment,
+ PLARGE_INTEGER TmVirtualClock
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmRequestOutcomeEnlistment (
+ PKENLISTMENT Enlistment,
+ PLARGE_INTEGER TmVirtualClock
+ );
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmEnableCallbacks (
+ PKRESOURCEMANAGER ResourceManager,
+ PTM_RM_NOTIFICATION CallbackRoutine,
+ PVOID RMKey
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmRecoverResourceManager (
+ PKRESOURCEMANAGER ResourceManager
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmPropagationComplete(
+ PKRESOURCEMANAGER ResourceManager,
+ ULONG RequestCookie,
+ ULONG BufferLength,
+ PVOID Buffer
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+TmPropagationFailed(
+ PKRESOURCEMANAGER ResourceManager,
+ ULONG RequestCookie,
+ NTSTATUS Status
+ );
+
+
+__declspec(dllimport)
+void
+__stdcall
+TmGetTransactionId(
+ PKTRANSACTION Transaction,
+ PUOW TransactionId
+ );
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+TmIsTransactionActive (
+ PKTRANSACTION Transaction
+ );
+
+
+
+
+
+#line 48926 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+#line 48932 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+typedef struct _PCW_INSTANCE *PPCW_INSTANCE;
+typedef struct _PCW_REGISTRATION *PPCW_REGISTRATION;
+typedef struct _PCW_BUFFER *PPCW_BUFFER;
+
+typedef struct _PCW_COUNTER_DESCRIPTOR {
+ USHORT Id;
+ USHORT StructIndex;
+ USHORT Offset;
+ USHORT Size;
+} PCW_COUNTER_DESCRIPTOR, *PPCW_COUNTER_DESCRIPTOR;
+
+typedef struct _PCW_DATA {
+ const void *Data;
+ ULONG Size;
+} PCW_DATA, *PPCW_DATA;
+
+typedef struct _PCW_COUNTER_INFORMATION {
+ ULONG64 CounterMask;
+ PCUNICODE_STRING InstanceMask;
+} PCW_COUNTER_INFORMATION, *PPCW_COUNTER_INFORMATION;
+
+typedef struct _PCW_MASK_INFORMATION {
+ ULONG64 CounterMask;
+ PCUNICODE_STRING InstanceMask;
+ ULONG InstanceId;
+ BOOLEAN CollectMultiple;
+ PPCW_BUFFER Buffer;
+ PKEVENT CancelEvent;
+} PCW_MASK_INFORMATION, *PPCW_MASK_INFORMATION;
+
+typedef union _PCW_CALLBACK_INFORMATION {
+ PCW_COUNTER_INFORMATION AddCounter;
+ PCW_COUNTER_INFORMATION RemoveCounter;
+ PCW_MASK_INFORMATION EnumerateInstances;
+ PCW_MASK_INFORMATION CollectData;
+} PCW_CALLBACK_INFORMATION, *PPCW_CALLBACK_INFORMATION;
+
+typedef enum _PCW_CALLBACK_TYPE {
+ PcwCallbackAddCounter = 0,
+ PcwCallbackRemoveCounter,
+ PcwCallbackEnumerateInstances,
+ PcwCallbackCollectData,
+} PCW_CALLBACK_TYPE, *PPCW_CALLBACK_TYPE;
+
+typedef
+NTSTATUS __stdcall
+PCW_CALLBACK(
+ PCW_CALLBACK_TYPE Type,
+ PPCW_CALLBACK_INFORMATION Info,
+ PVOID Context
+ );
+
+typedef PCW_CALLBACK *PPCW_CALLBACK;
+
+typedef enum PCW_REGISTRATION_FLAGS {
+ PcwRegistrationNone = 0,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PcwRegistrationSiloNeutral = 0x0001,
+#line 49005 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+} PCW_REGISTRATION_FLAGS;
+
+typedef struct _PCW_REGISTRATION_INFORMATION {
+ ULONG Version;
+ PCUNICODE_STRING Name;
+ ULONG CounterCount;
+ PPCW_COUNTER_DESCRIPTOR Counters;
+ PPCW_CALLBACK Callback;
+ PVOID CallbackContext;
+
+
+ PCW_REGISTRATION_FLAGS Flags;
+#line 49018 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+} PCW_REGISTRATION_INFORMATION, *PPCW_REGISTRATION_INFORMATION;
+
+
+
+NTSTATUS
+__stdcall
+PcwRegister(
+ PPCW_REGISTRATION *Registration,
+ PPCW_REGISTRATION_INFORMATION Info
+ );
+#line 49029 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+void
+__stdcall
+PcwUnregister(
+ PPCW_REGISTRATION Registration
+ );
+#line 49038 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+NTSTATUS
+__stdcall
+PcwCreateInstance(
+ PPCW_INSTANCE *Instance,
+ PPCW_REGISTRATION Registration,
+ PCUNICODE_STRING Name,
+ ULONG Count,
+ PPCW_DATA Data
+ );
+#line 49051 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+void
+__stdcall
+PcwCloseInstance(
+ PPCW_INSTANCE Instance
+ );
+#line 49060 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+NTSTATUS
+__stdcall
+PcwAddInstance(
+ PPCW_BUFFER Buffer,
+ PCUNICODE_STRING Name,
+ ULONG Id,
+ ULONG Count,
+ PPCW_DATA Data
+ );
+#line 49073 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+NTSTATUS
+VslCreateSecureSection (
+ PHANDLE Handle,
+ PEPROCESS TargetProcess,
+ PMDL Mdl,
+ ULONG DevicePageProtection,
+ ULONG Attributes
+ );
+
+
+NTSTATUS
+VslDeleteSecureSection (
+ HANDLE GlobalHandle
+ );
+
+#line 49096 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 49133 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+typedef enum _DRIVER_RUNTIME_INIT_FLAGS {
+
+
+
+
+
+
+
+
+ DrvRtPoolNxOptIn = 0x00000001,
+
+ LastDrvRtFlag
+} DRIVER_RUNTIME_INIT_FLAGS, * PDRIVER_RUNTIME_INIT_FLAGS;
+
+typedef const enum _DRIVER_RUNTIME_INIT_FLAGS * PCDRIVER_RUNTIME_INIT_FLAGS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 49171 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+__forceinline
+void
+ExInitializeDriverRuntime(
+ ULONG RuntimeFlags
+ )
+
+{
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 49203 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 49241 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+ (RuntimeFlags);
+#line 49243 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 49260 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+extern POBJECT_TYPE *CmKeyObjectType;
+extern POBJECT_TYPE *IoFileObjectType;
+extern POBJECT_TYPE *ExEventObjectType;
+extern POBJECT_TYPE *ExSemaphoreObjectType;
+extern POBJECT_TYPE *TmTransactionManagerObjectType;
+extern POBJECT_TYPE *TmResourceManagerObjectType;
+extern POBJECT_TYPE *TmEnlistmentObjectType;
+extern POBJECT_TYPE *TmTransactionObjectType;
+extern POBJECT_TYPE *PsProcessType;
+extern POBJECT_TYPE *PsThreadType;
+extern POBJECT_TYPE *PsJobType;
+extern POBJECT_TYPE *SeTokenObjectType;
+#line 49273 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+extern POBJECT_TYPE *ExDesktopObjectType;
+#line 49277 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+
+
+
+
+
+#pragma warning(pop)
+
+
+
+
+#line 49289 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+
+#line 49291 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdm.h"
+#line 48 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _BUS_HANDLER *PBUS_HANDLER;
+typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT;
+typedef struct _DEVICE_HANDLER_OBJECT *PDEVICE_HANDLER_OBJECT;
+
+
+
+
+#line 71 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+typedef struct _KPROCESS *PEPROCESS;
+typedef struct _KTHREAD *PETHREAD;
+
+
+
+#line 77 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+typedef struct _EJOB *PEJOB;
+
+typedef struct _EJOB *PESILO;
+typedef struct _SILO_MONITOR *PSILO_MONITOR;
+#line 82 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+typedef struct _IO_TIMER *PIO_TIMER;
+typedef struct _KINTERRUPT *PKINTERRUPT;
+typedef struct _KTHREAD *PKTHREAD, *PRKTHREAD;
+typedef struct _OBJECT_TYPE *POBJECT_TYPE;
+typedef struct _PEB *PPEB;
+typedef struct _IMAGE_NT_HEADERS *PIMAGE_NT_HEADERS32;
+typedef struct _IMAGE_NT_HEADERS64 *PIMAGE_NT_HEADERS64;
+
+typedef PIMAGE_NT_HEADERS64 PIMAGE_NT_HEADERS;
+
+
+#line 94 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+extern __declspec(dllimport) volatile CCHAR KeNumberProcessors;
+
+
+#line 103 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+#line 108 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+extern POBJECT_TYPE *PsProcessType;
+extern POBJECT_TYPE *PsThreadType;
+extern POBJECT_TYPE *PsJobType;
+
+extern POBJECT_TYPE *PsSiloContextPagedType;
+extern POBJECT_TYPE *PsSiloContextNonPagedType;
+#line 118 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 130 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 532 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 562 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 577 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct __declspec(align(16)) __pragma(warning(push)) __pragma(warning(disable:4845)) __declspec(no_init_all) __pragma(warning(pop)) _CONTEXT {
+
+
+
+
+
+
+
+
+ ULONG64 P1Home;
+ ULONG64 P2Home;
+ ULONG64 P3Home;
+ ULONG64 P4Home;
+ ULONG64 P5Home;
+ ULONG64 P6Home;
+
+
+
+
+
+ ULONG ContextFlags;
+ ULONG MxCsr;
+
+
+
+
+
+ USHORT SegCs;
+ USHORT SegDs;
+ USHORT SegEs;
+ USHORT SegFs;
+ USHORT SegGs;
+ USHORT SegSs;
+ ULONG EFlags;
+
+
+
+
+
+ ULONG64 Dr0;
+ ULONG64 Dr1;
+ ULONG64 Dr2;
+ ULONG64 Dr3;
+ ULONG64 Dr6;
+ ULONG64 Dr7;
+
+
+
+
+
+ ULONG64 Rax;
+ ULONG64 Rcx;
+ ULONG64 Rdx;
+ ULONG64 Rbx;
+ ULONG64 Rsp;
+ ULONG64 Rbp;
+ ULONG64 Rsi;
+ ULONG64 Rdi;
+ ULONG64 R8;
+ ULONG64 R9;
+ ULONG64 R10;
+ ULONG64 R11;
+ ULONG64 R12;
+ ULONG64 R13;
+ ULONG64 R14;
+ ULONG64 R15;
+
+
+
+
+
+ ULONG64 Rip;
+
+
+
+
+
+ union {
+ XMM_SAVE_AREA32 FltSave;
+ struct {
+ M128A Header[2];
+ M128A Legacy[8];
+ M128A Xmm0;
+ M128A Xmm1;
+ M128A Xmm2;
+ M128A Xmm3;
+ M128A Xmm4;
+ M128A Xmm5;
+ M128A Xmm6;
+ M128A Xmm7;
+ M128A Xmm8;
+ M128A Xmm9;
+ M128A Xmm10;
+ M128A Xmm11;
+ M128A Xmm12;
+ M128A Xmm13;
+ M128A Xmm14;
+ M128A Xmm15;
+ } ;
+ } ;
+
+
+
+
+
+ M128A VectorRegister[26];
+ ULONG64 VectorControl;
+
+
+
+
+
+ ULONG64 DebugControl;
+ ULONG64 LastBranchToRip;
+ ULONG64 LastBranchFromRip;
+ ULONG64 LastExceptionToRip;
+ ULONG64 LastExceptionFromRip;
+} CONTEXT, *PCONTEXT;
+
+
+
+
+#line 743 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 995 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1040 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1057 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+#line 1059 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef union _ARM64_NT_NEON128 {
+ struct {
+ ULONGLONG Low;
+ LONGLONG High;
+ } ;
+ double D[2];
+ float S[4];
+ USHORT H[8];
+ UCHAR B[16];
+} ARM64_NT_NEON128, *PARM64_NT_NEON128;
+
+
+
+
+
+#line 1119 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 1131 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+typedef struct __declspec(align(16)) __pragma(warning(push)) __pragma(warning(disable:4845)) __declspec(no_init_all) __pragma(warning(pop)) _ARM64_NT_CONTEXT {
+
+
+
+
+
+ ULONG ContextFlags;
+
+
+
+
+
+ ULONG Cpsr;
+ union {
+ struct {
+ ULONG64 X0;
+ ULONG64 X1;
+ ULONG64 X2;
+ ULONG64 X3;
+ ULONG64 X4;
+ ULONG64 X5;
+ ULONG64 X6;
+ ULONG64 X7;
+ ULONG64 X8;
+ ULONG64 X9;
+ ULONG64 X10;
+ ULONG64 X11;
+ ULONG64 X12;
+ ULONG64 X13;
+ ULONG64 X14;
+ ULONG64 X15;
+ ULONG64 X16;
+ ULONG64 X17;
+ ULONG64 X18;
+ ULONG64 X19;
+ ULONG64 X20;
+ ULONG64 X21;
+ ULONG64 X22;
+ ULONG64 X23;
+ ULONG64 X24;
+ ULONG64 X25;
+ ULONG64 X26;
+ ULONG64 X27;
+ ULONG64 X28;
+ ULONG64 Fp;
+ ULONG64 Lr;
+ } ;
+ ULONG64 X[31];
+ } ;
+ ULONG64 Sp;
+ ULONG64 Pc;
+
+
+
+
+
+ ARM64_NT_NEON128 V[32];
+ ULONG Fpcr;
+ ULONG Fpsr;
+
+
+
+
+
+ ULONG Bcr[8];
+ ULONG64 Bvr[8];
+ ULONG Wcr[2];
+ ULONG64 Wvr[2];
+
+
+} ARM64_NT_CONTEXT, *PARM64_NT_CONTEXT;
+
+
+
+
+
+
+
+
+
+
+
+#line 1215 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+typedef struct __declspec(align(16)) __pragma(warning(push)) __pragma(warning(disable:4845)) __declspec(no_init_all) __pragma(warning(pop)) _ARM64EC_NT_CONTEXT {
+ union {
+ struct {
+
+
+
+
+
+ ULONG64 AMD64_P1Home;
+ ULONG64 AMD64_P2Home;
+ ULONG64 AMD64_P3Home;
+ ULONG64 AMD64_P4Home;
+ ULONG64 AMD64_P5Home;
+ ULONG64 AMD64_P6Home;
+
+
+
+
+
+ ULONG ContextFlags;
+
+ ULONG AMD64_MxCsr_copy;
+
+
+
+
+
+
+ USHORT AMD64_SegCs;
+ USHORT AMD64_SegDs;
+ USHORT AMD64_SegEs;
+ USHORT AMD64_SegFs;
+ USHORT AMD64_SegGs;
+ USHORT AMD64_SegSs;
+
+
+
+
+
+ ULONG AMD64_EFlags;
+
+
+
+
+
+ ULONG64 AMD64_Dr0;
+ ULONG64 AMD64_Dr1;
+ ULONG64 AMD64_Dr2;
+ ULONG64 AMD64_Dr3;
+ ULONG64 AMD64_Dr6;
+ ULONG64 AMD64_Dr7;
+
+
+
+
+
+ ULONG64 X8;
+ ULONG64 X0;
+ ULONG64 X1;
+ ULONG64 X27;
+ ULONG64 Sp;
+ ULONG64 Fp;
+ ULONG64 X25;
+ ULONG64 X26;
+ ULONG64 X2;
+ ULONG64 X3;
+ ULONG64 X4;
+ ULONG64 X5;
+ ULONG64 X19;
+ ULONG64 X20;
+ ULONG64 X21;
+ ULONG64 X22;
+
+
+
+
+
+ ULONG64 Pc;
+
+
+
+
+
+ struct {
+ USHORT AMD64_ControlWord;
+ USHORT AMD64_StatusWord;
+ UCHAR AMD64_TagWord;
+ UCHAR AMD64_Reserved1;
+ USHORT AMD64_ErrorOpcode;
+ ULONG AMD64_ErrorOffset;
+ USHORT AMD64_ErrorSelector;
+ USHORT AMD64_Reserved2;
+ ULONG AMD64_DataOffset;
+ USHORT AMD64_DataSelector;
+ USHORT AMD64_Reserved3;
+
+ ULONG AMD64_MxCsr;
+ ULONG AMD64_MxCsr_Mask;
+
+ ULONG64 Lr;
+ USHORT X16_0;
+ USHORT AMD64_St0_Reserved1;
+ ULONG AMD64_St0_Reserved2;
+ ULONG64 X6;
+ USHORT X16_1;
+ USHORT AMD64_St1_Reserved1;
+ ULONG AMD64_St1_Reserved2;
+ ULONG64 X7;
+ USHORT X16_2;
+ USHORT AMD64_St2_Reserved1;
+ ULONG AMD64_St2_Reserved2;
+ ULONG64 X9;
+ USHORT X16_3;
+ USHORT AMD64_St3_Reserved1;
+ ULONG AMD64_St3_Reserved2;
+ ULONG64 X10;
+ USHORT X17_0;
+ USHORT AMD64_St4_Reserved1;
+ ULONG AMD64_St4_Reserved2;
+ ULONG64 X11;
+ USHORT X17_1;
+ USHORT AMD64_St5_Reserved1;
+ ULONG AMD64_St5_Reserved2;
+ ULONG64 X12;
+ USHORT X17_2;
+ USHORT AMD64_St6_Reserved1;
+ ULONG AMD64_St6_Reserved2;
+ ULONG64 X15;
+ USHORT X17_3;
+ USHORT AMD64_St7_Reserved1;
+ ULONG AMD64_St7_Reserved2;
+
+ ARM64_NT_NEON128 V[16];
+ UCHAR AMD64_XSAVE_FORMAT_Reserved4[96];
+ } ;
+
+
+
+
+
+ ARM64_NT_NEON128 AMD64_VectorRegister[26];
+ ULONG64 AMD64_VectorControl;
+
+
+
+
+
+ ULONG64 AMD64_DebugControl;
+ ULONG64 AMD64_LastBranchToRip;
+ ULONG64 AMD64_LastBranchFromRip;
+ ULONG64 AMD64_LastExceptionToRip;
+ ULONG64 AMD64_LastExceptionFromRip;
+
+
+ } ;
+
+
+
+
+
+#line 1377 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+ } ;
+} ARM64EC_NT_CONTEXT, *PARM64EC_NT_CONTEXT;
+
+
+
+
+
+
+
+#line 1388 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+typedef enum {
+
+ WinNullSid = 0,
+ WinWorldSid = 1,
+ WinLocalSid = 2,
+ WinCreatorOwnerSid = 3,
+ WinCreatorGroupSid = 4,
+ WinCreatorOwnerServerSid = 5,
+ WinCreatorGroupServerSid = 6,
+ WinNtAuthoritySid = 7,
+ WinDialupSid = 8,
+ WinNetworkSid = 9,
+ WinBatchSid = 10,
+ WinInteractiveSid = 11,
+ WinServiceSid = 12,
+ WinAnonymousSid = 13,
+ WinProxySid = 14,
+ WinEnterpriseControllersSid = 15,
+ WinSelfSid = 16,
+ WinAuthenticatedUserSid = 17,
+ WinRestrictedCodeSid = 18,
+ WinTerminalServerSid = 19,
+ WinRemoteLogonIdSid = 20,
+ WinLogonIdsSid = 21,
+ WinLocalSystemSid = 22,
+ WinLocalServiceSid = 23,
+ WinNetworkServiceSid = 24,
+ WinBuiltinDomainSid = 25,
+ WinBuiltinAdministratorsSid = 26,
+ WinBuiltinUsersSid = 27,
+ WinBuiltinGuestsSid = 28,
+ WinBuiltinPowerUsersSid = 29,
+ WinBuiltinAccountOperatorsSid = 30,
+ WinBuiltinSystemOperatorsSid = 31,
+ WinBuiltinPrintOperatorsSid = 32,
+ WinBuiltinBackupOperatorsSid = 33,
+ WinBuiltinReplicatorSid = 34,
+ WinBuiltinPreWindows2000CompatibleAccessSid = 35,
+ WinBuiltinRemoteDesktopUsersSid = 36,
+ WinBuiltinNetworkConfigurationOperatorsSid = 37,
+ WinAccountAdministratorSid = 38,
+ WinAccountGuestSid = 39,
+ WinAccountKrbtgtSid = 40,
+ WinAccountDomainAdminsSid = 41,
+ WinAccountDomainUsersSid = 42,
+ WinAccountDomainGuestsSid = 43,
+ WinAccountComputersSid = 44,
+ WinAccountControllersSid = 45,
+ WinAccountCertAdminsSid = 46,
+ WinAccountSchemaAdminsSid = 47,
+ WinAccountEnterpriseAdminsSid = 48,
+ WinAccountPolicyAdminsSid = 49,
+ WinAccountRasAndIasServersSid = 50,
+ WinNTLMAuthenticationSid = 51,
+ WinDigestAuthenticationSid = 52,
+ WinSChannelAuthenticationSid = 53,
+ WinThisOrganizationSid = 54,
+ WinOtherOrganizationSid = 55,
+ WinBuiltinIncomingForestTrustBuildersSid = 56,
+ WinBuiltinPerfMonitoringUsersSid = 57,
+ WinBuiltinPerfLoggingUsersSid = 58,
+ WinBuiltinAuthorizationAccessSid = 59,
+ WinBuiltinTerminalServerLicenseServersSid = 60,
+ WinBuiltinDCOMUsersSid = 61,
+ WinBuiltinIUsersSid = 62,
+ WinIUserSid = 63,
+ WinBuiltinCryptoOperatorsSid = 64,
+ WinUntrustedLabelSid = 65,
+ WinLowLabelSid = 66,
+ WinMediumLabelSid = 67,
+ WinHighLabelSid = 68,
+ WinSystemLabelSid = 69,
+ WinWriteRestrictedCodeSid = 70,
+ WinCreatorOwnerRightsSid = 71,
+ WinCacheablePrincipalsGroupSid = 72,
+ WinNonCacheablePrincipalsGroupSid = 73,
+ WinEnterpriseReadonlyControllersSid = 74,
+ WinAccountReadonlyControllersSid = 75,
+ WinBuiltinEventLogReadersGroup = 76,
+ WinNewEnterpriseReadonlyControllersSid = 77,
+ WinBuiltinCertSvcDComAccessGroup = 78,
+ WinMediumPlusLabelSid = 79,
+ WinLocalLogonSid = 80,
+ WinConsoleLogonSid = 81,
+ WinThisOrganizationCertificateSid = 82,
+ WinApplicationPackageAuthoritySid = 83,
+ WinBuiltinAnyPackageSid = 84,
+ WinCapabilityInternetClientSid = 85,
+ WinCapabilityInternetClientServerSid = 86,
+ WinCapabilityPrivateNetworkClientServerSid = 87,
+ WinCapabilityPicturesLibrarySid = 88,
+ WinCapabilityVideosLibrarySid = 89,
+ WinCapabilityMusicLibrarySid = 90,
+ WinCapabilityDocumentsLibrarySid = 91,
+ WinCapabilitySharedUserCertificatesSid = 92,
+ WinCapabilityEnterpriseAuthenticationSid = 93,
+ WinCapabilityRemovableStorageSid = 94,
+ WinBuiltinRDSRemoteAccessServersSid = 95,
+ WinBuiltinRDSEndpointServersSid = 96,
+ WinBuiltinRDSManagementServersSid = 97,
+ WinUserModeDriversSid = 98,
+ WinBuiltinHyperVAdminsSid = 99,
+ WinAccountCloneableControllersSid = 100,
+ WinBuiltinAccessControlAssistanceOperatorsSid = 101,
+ WinBuiltinRemoteManagementUsersSid = 102,
+ WinAuthenticationAuthorityAssertedSid = 103,
+ WinAuthenticationServiceAssertedSid = 104,
+ WinLocalAccountSid = 105,
+ WinLocalAccountAndAdministratorSid = 106,
+ WinAccountProtectedUsersSid = 107,
+ WinCapabilityAppointmentsSid = 108,
+ WinCapabilityContactsSid = 109,
+ WinAccountDefaultSystemManagedSid = 110,
+ WinBuiltinDefaultSystemManagedGroupSid = 111,
+ WinBuiltinStorageReplicaAdminsSid = 112,
+ WinAccountKeyAdminsSid = 113,
+ WinAccountEnterpriseKeyAdminsSid = 114,
+ WinAuthenticationKeyTrustSid = 115,
+ WinAuthenticationKeyPropertyMFASid = 116,
+ WinAuthenticationKeyPropertyAttestationSid = 117,
+ WinAuthenticationFreshKeyAuthSid = 118,
+ WinBuiltinDeviceOwnersSid = 119,
+ WinBuiltinUserModeHardwareOperatorsSid = 120,
+ WinBuiltinOpenSSHUsersSid = 121,
+} WELL_KNOWN_SID_TYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+typedef UCHAR SE_SIGNING_LEVEL, *PSE_SIGNING_LEVEL;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _SE_IMAGE_SIGNATURE_TYPE
+{
+ SeImageSignatureNone = 0,
+ SeImageSignatureEmbedded,
+ SeImageSignatureCache,
+ SeImageSignatureCatalogCached,
+ SeImageSignatureCatalogNotCached,
+ SeImageSignatureCatalogHint,
+ SeImageSignaturePackageCatalog,
+ SeImageSignaturePplMitigated
+} SE_IMAGE_SIGNATURE_TYPE, *PSE_IMAGE_SIGNATURE_TYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2165 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef union _RTL_RUN_ONCE {
+ PVOID Ptr;
+} RTL_RUN_ONCE, *PRTL_RUN_ONCE;
+
+typedef
+
+
+ULONG
+__stdcall
+RTL_RUN_ONCE_INIT_FN (
+ PRTL_RUN_ONCE RunOnce,
+ PVOID Parameter,
+ PVOID *Context
+ );
+typedef RTL_RUN_ONCE_INIT_FN *PRTL_RUN_ONCE_INIT_FN;
+
+
+
+#line 2210 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlRunOnceInitialize (
+ PRTL_RUN_ONCE RunOnce
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlRunOnceExecuteOnce (
+ PRTL_RUN_ONCE RunOnce,
+ PRTL_RUN_ONCE_INIT_FN InitFn,
+ PVOID Parameter,
+ PVOID *Context
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlRunOnceBeginInitialize (
+ PRTL_RUN_ONCE RunOnce,
+ ULONG Flags,
+ PVOID *Context
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlRunOnceComplete (
+ PRTL_RUN_ONCE RunOnce,
+ ULONG Flags,
+ PVOID Context
+ );
+
+#line 2257 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+typedef enum _TABLE_SEARCH_RESULT{
+ TableEmptyTree,
+ TableFoundNode,
+ TableInsertAsLeft,
+ TableInsertAsRight
+} TABLE_SEARCH_RESULT;
+
+
+
+
+
+typedef enum _RTL_GENERIC_COMPARE_RESULTS {
+ GenericLessThan,
+ GenericGreaterThan,
+ GenericEqual
+} RTL_GENERIC_COMPARE_RESULTS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+struct _RTL_AVL_TABLE;
+
+
+
+
+
+
+
+typedef
+
+
+RTL_GENERIC_COMPARE_RESULTS
+__stdcall
+RTL_AVL_COMPARE_ROUTINE (
+ struct _RTL_AVL_TABLE *Table,
+ PVOID FirstStruct,
+ PVOID SecondStruct
+ );
+typedef RTL_AVL_COMPARE_ROUTINE *PRTL_AVL_COMPARE_ROUTINE;
+
+
+
+
+
+
+typedef
+
+
+
+PVOID
+__stdcall
+RTL_AVL_ALLOCATE_ROUTINE (
+ struct _RTL_AVL_TABLE *Table,
+ CLONG ByteSize
+ );
+typedef RTL_AVL_ALLOCATE_ROUTINE *PRTL_AVL_ALLOCATE_ROUTINE;
+
+
+
+
+
+
+
+typedef
+
+
+void
+__stdcall
+RTL_AVL_FREE_ROUTINE (
+ struct _RTL_AVL_TABLE *Table,
+ PVOID Buffer
+ );
+typedef RTL_AVL_FREE_ROUTINE *PRTL_AVL_FREE_ROUTINE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+
+NTSTATUS
+__stdcall
+RTL_AVL_MATCH_FUNCTION (
+ struct _RTL_AVL_TABLE *Table,
+ PVOID UserData,
+ PVOID MatchData
+ );
+typedef RTL_AVL_MATCH_FUNCTION *PRTL_AVL_MATCH_FUNCTION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _RTL_BALANCED_LINKS {
+ struct _RTL_BALANCED_LINKS *Parent;
+ struct _RTL_BALANCED_LINKS *LeftChild;
+ struct _RTL_BALANCED_LINKS *RightChild;
+ CHAR Balance;
+ UCHAR Reserved[3];
+} RTL_BALANCED_LINKS;
+typedef RTL_BALANCED_LINKS *PRTL_BALANCED_LINKS;
+
+
+
+
+
+
+
+
+
+typedef struct _RTL_AVL_TABLE {
+ RTL_BALANCED_LINKS BalancedRoot;
+ PVOID OrderedPointer;
+ ULONG WhichOrderedElement;
+ ULONG NumberGenericTableElements;
+ ULONG DepthOfTree;
+ PRTL_BALANCED_LINKS RestartKey;
+ ULONG DeleteCount;
+ PRTL_AVL_COMPARE_ROUTINE CompareRoutine;
+ PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine;
+ PRTL_AVL_FREE_ROUTINE FreeRoutine;
+ PVOID TableContext;
+} RTL_AVL_TABLE;
+typedef RTL_AVL_TABLE *PRTL_AVL_TABLE;
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlInitializeGenericTableAvl (
+ PRTL_AVL_TABLE Table,
+ PRTL_AVL_COMPARE_ROUTINE CompareRoutine,
+ PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine,
+ PRTL_AVL_FREE_ROUTINE FreeRoutine,
+ PVOID TableContext
+ );
+#line 2452 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+__stdcall
+RtlInsertElementGenericTableAvl (
+ PRTL_AVL_TABLE Table,
+ PVOID Buffer,
+ CLONG BufferSize,
+ PBOOLEAN NewElement
+ );
+#line 2477 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+__stdcall
+RtlInsertElementGenericTableFullAvl (
+ PRTL_AVL_TABLE Table,
+ PVOID Buffer,
+ CLONG BufferSize,
+ PBOOLEAN NewElement,
+ PVOID NodeOrParent,
+ TABLE_SEARCH_RESULT SearchResult
+ );
+#line 2506 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlDeleteElementGenericTableAvl (
+ PRTL_AVL_TABLE Table,
+ PVOID Buffer
+ );
+#line 2524 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlDeleteElementGenericTableAvlEx (
+ PRTL_AVL_TABLE Table,
+ PVOID NodeOrParent
+ );
+#line 2540 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+__stdcall
+RtlLookupElementGenericTableAvl (
+ PRTL_AVL_TABLE Table,
+ PVOID Buffer
+ );
+#line 2560 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+__stdcall
+RtlLookupElementGenericTableFullAvl (
+ PRTL_AVL_TABLE Table,
+ PVOID Buffer,
+ PVOID *NodeOrParent,
+ TABLE_SEARCH_RESULT *SearchResult
+ );
+#line 2582 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+__stdcall
+RtlEnumerateGenericTableAvl (
+ PRTL_AVL_TABLE Table,
+ BOOLEAN Restart
+ );
+#line 2614 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+__stdcall
+RtlEnumerateGenericTableWithoutSplayingAvl (
+ PRTL_AVL_TABLE Table,
+ PVOID *RestartKey
+ );
+#line 2651 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+__stdcall
+RtlLookupFirstMatchingElementGenericTableAvl (
+ PRTL_AVL_TABLE Table,
+ PVOID Buffer,
+ PVOID *RestartKey
+ );
+#line 2672 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+__stdcall
+RtlEnumerateGenericTableLikeADirectory (
+ PRTL_AVL_TABLE Table,
+ PRTL_AVL_MATCH_FUNCTION MatchFunction,
+ PVOID MatchData,
+ ULONG NextFlag,
+ PVOID *RestartKey,
+ PULONG DeleteCount,
+ PVOID Buffer
+ );
+#line 2720 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+__stdcall
+RtlGetElementGenericTableAvl (
+ PRTL_AVL_TABLE Table,
+ ULONG I
+ );
+#line 2740 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlNumberGenericTableElementsAvl (
+ PRTL_AVL_TABLE Table
+ );
+#line 2754 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlIsGenericTableEmptyAvl (
+ PRTL_AVL_TABLE Table
+ );
+#line 2773 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _RTL_SPLAY_LINKS {
+ struct _RTL_SPLAY_LINKS *Parent;
+ struct _RTL_SPLAY_LINKS *LeftChild;
+ struct _RTL_SPLAY_LINKS *RightChild;
+} RTL_SPLAY_LINKS;
+typedef RTL_SPLAY_LINKS *PRTL_SPLAY_LINKS;
+
+
+
+
+__forceinline
+void
+RtlInitializeSplayLinks (
+ PRTL_SPLAY_LINKS Links
+ )
+
+
+
+
+
+
+
+
+{
+ Links->Parent = Links;
+ Links->LeftChild = ((void *)0);
+ Links->RightChild = ((void *)0);
+}
+
+#line 2861 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__forceinline
+void
+RtlInsertAsLeftChild (
+ PRTL_SPLAY_LINKS ParentLinks,
+ PRTL_SPLAY_LINKS ChildLinks
+ )
+
+
+
+
+
+
+
+
+
+{
+ ParentLinks->LeftChild = ChildLinks;
+ ChildLinks->Parent = ParentLinks;
+}
+
+__forceinline
+void
+RtlInsertAsRightChild (
+ PRTL_SPLAY_LINKS ParentLinks,
+ PRTL_SPLAY_LINKS ChildLinks
+ )
+
+
+
+
+
+
+
+
+
+{
+ ParentLinks->RightChild = ChildLinks;
+ ChildLinks->Parent = ParentLinks;
+}
+
+#line 2998 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PRTL_SPLAY_LINKS
+__stdcall
+RtlSplay (
+ PRTL_SPLAY_LINKS Links
+ );
+#line 3014 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PRTL_SPLAY_LINKS
+__stdcall
+RtlDelete (
+ PRTL_SPLAY_LINKS Links
+ );
+#line 3031 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlDeleteNoSplay (
+ PRTL_SPLAY_LINKS Links,
+ PRTL_SPLAY_LINKS *Root
+ );
+#line 3050 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PRTL_SPLAY_LINKS
+__stdcall
+RtlSubtreeSuccessor (
+ PRTL_SPLAY_LINKS Links
+ );
+#line 3067 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PRTL_SPLAY_LINKS
+__stdcall
+RtlSubtreePredecessor (
+ PRTL_SPLAY_LINKS Links
+ );
+#line 3084 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PRTL_SPLAY_LINKS
+__stdcall
+RtlRealSuccessor (
+ PRTL_SPLAY_LINKS Links
+ );
+#line 3100 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PRTL_SPLAY_LINKS
+__stdcall
+RtlRealPredecessor (
+ PRTL_SPLAY_LINKS Links
+ );
+#line 3117 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+struct _RTL_GENERIC_TABLE;
+
+
+
+
+
+
+
+typedef
+
+
+RTL_GENERIC_COMPARE_RESULTS
+__stdcall
+RTL_GENERIC_COMPARE_ROUTINE (
+ struct _RTL_GENERIC_TABLE *Table,
+ PVOID FirstStruct,
+ PVOID SecondStruct
+ );
+typedef RTL_GENERIC_COMPARE_ROUTINE *PRTL_GENERIC_COMPARE_ROUTINE;
+
+
+
+
+
+
+typedef
+
+
+
+PVOID
+__stdcall
+RTL_GENERIC_ALLOCATE_ROUTINE (
+ struct _RTL_GENERIC_TABLE *Table,
+ CLONG ByteSize
+ );
+typedef RTL_GENERIC_ALLOCATE_ROUTINE *PRTL_GENERIC_ALLOCATE_ROUTINE;
+
+
+
+
+
+
+
+typedef
+
+
+void
+__stdcall
+RTL_GENERIC_FREE_ROUTINE (
+ struct _RTL_GENERIC_TABLE *Table,
+ PVOID Buffer
+ );
+typedef RTL_GENERIC_FREE_ROUTINE *PRTL_GENERIC_FREE_ROUTINE;
+
+
+
+
+
+
+
+
+typedef struct _RTL_GENERIC_TABLE {
+ PRTL_SPLAY_LINKS TableRoot;
+ LIST_ENTRY InsertOrderList;
+ PLIST_ENTRY OrderedPointer;
+ ULONG WhichOrderedElement;
+ ULONG NumberGenericTableElements;
+ PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine;
+ PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine;
+ PRTL_GENERIC_FREE_ROUTINE FreeRoutine;
+ PVOID TableContext;
+} RTL_GENERIC_TABLE;
+typedef RTL_GENERIC_TABLE *PRTL_GENERIC_TABLE;
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlInitializeGenericTable (
+ PRTL_GENERIC_TABLE Table,
+ PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine,
+ PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine,
+ PRTL_GENERIC_FREE_ROUTINE FreeRoutine,
+ PVOID TableContext
+ );
+#line 3237 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+__stdcall
+RtlInsertElementGenericTable (
+ PRTL_GENERIC_TABLE Table,
+ PVOID Buffer,
+ CLONG BufferSize,
+ PBOOLEAN NewElement
+ );
+#line 3262 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+__stdcall
+RtlInsertElementGenericTableFull (
+ PRTL_GENERIC_TABLE Table,
+ PVOID Buffer,
+ CLONG BufferSize,
+ PBOOLEAN NewElement,
+ PVOID NodeOrParent,
+ TABLE_SEARCH_RESULT SearchResult
+ );
+#line 3291 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlDeleteElementGenericTable (
+ PRTL_GENERIC_TABLE Table,
+ PVOID Buffer
+ );
+#line 3309 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+__stdcall
+RtlLookupElementGenericTable (
+ PRTL_GENERIC_TABLE Table,
+ PVOID Buffer
+ );
+#line 3328 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+__stdcall
+RtlLookupElementGenericTableFull (
+ PRTL_GENERIC_TABLE Table,
+ PVOID Buffer,
+ PVOID *NodeOrParent,
+ TABLE_SEARCH_RESULT *SearchResult
+ );
+#line 3350 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+__stdcall
+RtlEnumerateGenericTable (
+ PRTL_GENERIC_TABLE Table,
+ BOOLEAN Restart
+ );
+#line 3384 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+__stdcall
+RtlEnumerateGenericTableWithoutSplaying (
+ PRTL_GENERIC_TABLE Table,
+ PVOID *RestartKey
+ );
+#line 3420 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+__stdcall
+RtlGetElementGenericTable(
+ PRTL_GENERIC_TABLE Table,
+ ULONG I
+ );
+#line 3440 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlNumberGenericTableElements(
+ PRTL_GENERIC_TABLE Table
+ );
+#line 3454 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlIsGenericTableEmpty (
+ PRTL_GENERIC_TABLE Table
+ );
+#line 3470 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+#line 3472 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _RTL_DYNAMIC_HASH_TABLE_ENTRY {
+ LIST_ENTRY Linkage;
+ ULONG_PTR Signature;
+} RTL_DYNAMIC_HASH_TABLE_ENTRY, *PRTL_DYNAMIC_HASH_TABLE_ENTRY;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _RTL_DYNAMIC_HASH_TABLE_CONTEXT {
+ PLIST_ENTRY ChainHead;
+ PLIST_ENTRY PrevLinkage;
+ ULONG_PTR Signature;
+} RTL_DYNAMIC_HASH_TABLE_CONTEXT, *PRTL_DYNAMIC_HASH_TABLE_CONTEXT;
+
+typedef struct _RTL_DYNAMIC_HASH_TABLE_ENUMERATOR {
+ union {
+ RTL_DYNAMIC_HASH_TABLE_ENTRY HashEntry;
+ PLIST_ENTRY CurEntry;
+ };
+ PLIST_ENTRY ChainHead;
+ ULONG BucketIndex;
+} RTL_DYNAMIC_HASH_TABLE_ENUMERATOR, *PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR;
+
+typedef struct _RTL_DYNAMIC_HASH_TABLE {
+
+
+ ULONG Flags;
+ ULONG Shift;
+
+
+ ULONG TableSize;
+ ULONG Pivot;
+ ULONG DivisorMask;
+
+
+ ULONG NumEntries;
+ ULONG NonEmptyBuckets;
+ ULONG NumEnumerators;
+
+
+ PVOID Directory;
+
+} RTL_DYNAMIC_HASH_TABLE, *PRTL_DYNAMIC_HASH_TABLE;
+
+
+
+
+
+
+
+
+__forceinline
+void
+RtlInitHashTableContext(
+ PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context
+ )
+{
+ Context->ChainHead = ((void *)0);
+ Context->PrevLinkage = ((void *)0);
+}
+#line 3576 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__forceinline
+void
+RtlInitHashTableContextFromEnumerator(
+ PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context,
+ PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator
+ )
+{
+ Context->ChainHead = Enumerator->ChainHead;
+ Context->PrevLinkage = Enumerator->HashEntry.Linkage.Blink;
+}
+#line 3589 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__forceinline
+void
+RtlReleaseHashTableContext(
+ PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context
+ )
+{
+ (Context);
+ return;
+}
+#line 3601 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__forceinline
+ULONG
+RtlTotalBucketsHashTable(
+ PRTL_DYNAMIC_HASH_TABLE HashTable
+ )
+{
+ return HashTable->TableSize;
+}
+#line 3612 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__forceinline
+ULONG
+RtlNonEmptyBucketsHashTable(
+ PRTL_DYNAMIC_HASH_TABLE HashTable
+ )
+{
+ return HashTable->NonEmptyBuckets;
+}
+#line 3623 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__forceinline
+ULONG
+RtlEmptyBucketsHashTable(
+ PRTL_DYNAMIC_HASH_TABLE HashTable
+ )
+{
+ return HashTable->TableSize - HashTable->NonEmptyBuckets;
+}
+#line 3634 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__forceinline
+ULONG
+RtlTotalEntriesHashTable(
+ PRTL_DYNAMIC_HASH_TABLE HashTable
+ )
+{
+ return HashTable->NumEntries;
+}
+#line 3645 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__forceinline
+ULONG
+RtlActiveEnumeratorsHashTable(
+ PRTL_DYNAMIC_HASH_TABLE HashTable
+ )
+{
+ return HashTable->NumEnumerators;
+}
+#line 3656 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+#line 3658 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlCreateHashTable(
+
+ PRTL_DYNAMIC_HASH_TABLE *HashTable,
+ ULONG Shift,
+ ULONG Flags
+ );
+#line 3680 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlCreateHashTableEx(
+
+ PRTL_DYNAMIC_HASH_TABLE *HashTable,
+ ULONG InitialSize,
+ ULONG Shift,
+ ULONG Flags
+ );
+#line 3695 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlDeleteHashTable(
+
+ PRTL_DYNAMIC_HASH_TABLE HashTable
+ );
+#line 3705 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlInsertEntryHashTable(
+ PRTL_DYNAMIC_HASH_TABLE HashTable,
+ PRTL_DYNAMIC_HASH_TABLE_ENTRY Entry,
+ ULONG_PTR Signature,
+ PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context
+ );
+#line 3717 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlRemoveEntryHashTable(
+ PRTL_DYNAMIC_HASH_TABLE HashTable,
+ PRTL_DYNAMIC_HASH_TABLE_ENTRY Entry,
+ PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context
+ );
+#line 3728 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+PRTL_DYNAMIC_HASH_TABLE_ENTRY
+__stdcall
+RtlLookupEntryHashTable(
+ PRTL_DYNAMIC_HASH_TABLE HashTable,
+ ULONG_PTR Signature,
+ PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context
+ );
+#line 3740 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+PRTL_DYNAMIC_HASH_TABLE_ENTRY
+__stdcall
+RtlGetNextEntryHashTable(
+ PRTL_DYNAMIC_HASH_TABLE HashTable,
+ PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context
+ );
+#line 3751 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlInitEnumerationHashTable(
+ PRTL_DYNAMIC_HASH_TABLE HashTable,
+ PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator
+ );
+#line 3761 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+PRTL_DYNAMIC_HASH_TABLE_ENTRY
+__stdcall
+RtlEnumerateEntryHashTable(
+ PRTL_DYNAMIC_HASH_TABLE HashTable,
+ PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator
+ );
+#line 3772 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlEndEnumerationHashTable(
+ PRTL_DYNAMIC_HASH_TABLE HashTable,
+ PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator
+ );
+#line 3782 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlInitWeakEnumerationHashTable(
+ PRTL_DYNAMIC_HASH_TABLE HashTable,
+ PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator
+ );
+#line 3792 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+PRTL_DYNAMIC_HASH_TABLE_ENTRY
+__stdcall
+RtlWeaklyEnumerateEntryHashTable(
+ PRTL_DYNAMIC_HASH_TABLE HashTable,
+ PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator
+ );
+#line 3803 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlEndWeakEnumerationHashTable(
+ PRTL_DYNAMIC_HASH_TABLE HashTable,
+ PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator
+ );
+#line 3813 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlInitStrongEnumerationHashTable(
+ PRTL_DYNAMIC_HASH_TABLE HashTable,
+ PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator
+ );
+#line 3823 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+PRTL_DYNAMIC_HASH_TABLE_ENTRY
+__stdcall
+RtlStronglyEnumerateEntryHashTable(
+ PRTL_DYNAMIC_HASH_TABLE HashTable,
+ PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator
+ );
+#line 3834 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlEndStrongEnumerationHashTable(
+ PRTL_DYNAMIC_HASH_TABLE HashTable,
+ PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator
+ );
+#line 3844 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlExpandHashTable(
+ PRTL_DYNAMIC_HASH_TABLE HashTable
+ );
+#line 3854 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlContractHashTable(
+ PRTL_DYNAMIC_HASH_TABLE HashTable
+ );
+#line 3863 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+PVOID
+_ReturnAddress (
+ void
+ );
+
+#pragma intrinsic(_ReturnAddress)
+
+#line 3877 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+#line 3886 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlGetCallersAddress(
+ PVOID *CallersAddress,
+ PVOID *CallersCaller
+ );
+
+#line 3897 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+#line 3899 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlWalkFrameChain (
+ PVOID *Callers,
+ ULONG Count,
+ ULONG Flags
+ );
+#line 3920 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+__declspec(dllimport)
+ULONG64
+__stdcall
+RtlGetEnabledExtendedFeatures(
+ ULONG64 FeatureMask
+ );
+#line 3932 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+#line 3933 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlCharToInteger (
+ PCSZ String,
+ ULONG Base,
+ PULONG Value
+ );
+#line 3945 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlCopyString(
+ PSTRING DestinationString,
+ const STRING * SourceString
+ );
+#line 3956 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+CHAR
+__stdcall
+RtlUpperChar (
+ CHAR Character
+ );
+#line 3966 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+__declspec(dllimport)
+LONG
+__stdcall
+RtlCompareString(
+ const STRING * String1,
+ const STRING * String2,
+ BOOLEAN CaseInSensitive
+ );
+#line 3981 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlEqualString(
+ const STRING * String1,
+ const STRING * String2,
+ BOOLEAN CaseInSensitive
+ );
+#line 3994 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlUpperString(
+ PSTRING DestinationString,
+ const STRING * SourceString
+ );
+#line 4007 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlPrefixUnicodeString(
+ PCUNICODE_STRING String1,
+ PCUNICODE_STRING String2,
+ BOOLEAN CaseInSensitive
+ );
+#line 4020 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlSuffixUnicodeString(
+ PCUNICODE_STRING String1,
+ PCUNICODE_STRING String2,
+ BOOLEAN CaseInSensitive
+ );
+#line 4033 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlUpcaseUnicodeString(
+
+
+ PUNICODE_STRING DestinationString,
+ PCUNICODE_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+#line 4048 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+__inline
+LARGE_INTEGER
+__stdcall
+RtlLargeIntegerDivide (
+ LARGE_INTEGER Dividend,
+ LARGE_INTEGER Divisor,
+ PLARGE_INTEGER Remainder
+ )
+{
+ LARGE_INTEGER Quotient;
+
+ Quotient.QuadPart = Dividend.QuadPart / Divisor.QuadPart;
+ if (( (CHAR *)((ULONG_PTR)(Remainder)) != (CHAR *)(((void *)0)) )) {
+ Remainder->QuadPart = Dividend.QuadPart % Divisor.QuadPart;
+ }
+
+ return Quotient;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 4095 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+#line 4096 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlQueryRegistryValueWithFallback(
+ HANDLE PrimaryHandle,
+ HANDLE FallbackHandle,
+ PUNICODE_STRING ValueName,
+ ULONG ValueLength,
+ PULONG ValueType,
+ PVOID ValueData,
+ PULONG ResultLength
+ );
+#line 4112 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__forceinline
+LUID
+__stdcall
+RtlConvertLongToLuid(
+ LONG Long
+ )
+{
+ LUID TempLuid;
+ LARGE_INTEGER TempLi;
+
+ TempLi.QuadPart = Long;
+ TempLuid.LowPart = TempLi.u.LowPart;
+ TempLuid.HighPart = TempLi.u.HighPart;
+ return(TempLuid);
+}
+
+__forceinline
+LUID
+__stdcall
+RtlConvertUlongToLuid(
+ ULONG Ulong
+ )
+{
+ LUID TempLuid;
+
+ TempLuid.LowPart = Ulong;
+ TempLuid.HighPart = 0;
+ return(TempLuid);
+}
+
+__forceinline
+LONGLONG
+__stdcall
+RtlConvertLuidToLonglong(
+ LUID Luid
+ )
+{
+ LONGLONG TempLl;
+
+ TempLl = Luid.LowPart;
+ TempLl += ((LONGLONG)(Luid.HighPart) << 32);
+
+ return(TempLl);
+}
+
+#line 4183 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlMapGenericMask(
+ PACCESS_MASK AccessMask,
+ const GENERIC_MAPPING *GenericMapping
+ );
+#line 4195 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+#line 4204 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlVolumeDeviceToDosName(
+ PVOID VolumeDeviceObject,
+ PUNICODE_STRING DosName
+ );
+#line 4213 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+DbgPrompt (
+ PCCH Prompt,
+ PCH Response,
+ ULONG Length
+ );
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlGetProductInfo(
+ ULONG OSMajorVersion,
+ ULONG OSMinorVersion,
+ ULONG SpMajorVersion,
+ ULONG SpMinorVersion,
+ PULONG ReturnedProductType
+ );
+
+#line 4241 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlIsUntrustedObject (
+ HANDLE Handle,
+ PVOID Object,
+ PBOOLEAN UntrustedObject
+ );
+
+#line 4256 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlGetActiveConsoleId(
+ void
+ );
+#line 4266 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+ULONGLONG
+__stdcall
+RtlGetConsoleSessionForegroundProcessId(
+ void
+ );
+#line 4275 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlGetSuiteMask(
+ void
+ );
+#line 4284 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlIsMultiSessionSku (
+ void
+ );
+#line 4295 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlIsStateSeparationEnabled (
+ void
+ );
+
+typedef enum _STATE_LOCATION_TYPE {
+ LocationTypeRegistry = 0,
+ LocationTypeFileSystem = 1,
+ LocationTypeMaximum = 2
+} STATE_LOCATION_TYPE;
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlGetPersistedStateLocation (
+ PCWSTR SourceID,
+ PCWSTR CustomValue,
+ PCWSTR DefaultPath,
+ STATE_LOCATION_TYPE StateLocationType,
+
+ PWCHAR TargetPath,
+ ULONG BufferLengthIn,
+ PULONG BufferLengthOut
+ );
+
+#line 4329 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlIsApiSetImplemented(
+ PCSTR apiSetName
+ );
+
+#line 4341 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlIsMultiUsersInSessionSku (
+ void
+ );
+#line 4352 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlGetNtProductType(
+ PNT_PRODUCT_TYPE NtProductType
+ );
+#line 4362 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+PCWSTR
+__stdcall
+RtlGetNtSystemRoot (
+ void
+ );
+#line 4372 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+typedef struct _NV_MEMORY_RANGE {
+ void *BaseAddress;
+ SIZE_T Length;
+} NV_MEMORY_RANGE, *PNV_MEMORY_RANGE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlGetNonVolatileToken (
+ PVOID NvBuffer,
+ SIZE_T Size,
+ PVOID *NvToken
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlFreeNonVolatileToken (
+ PVOID NvToken
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlFlushNonVolatileMemory (
+ PVOID NvToken,
+ PVOID NvBuffer,
+ SIZE_T Size,
+ ULONG Flags
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlDrainNonVolatileFlush (
+ PVOID NvToken
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlWriteNonVolatileMemory (
+ PVOID NvToken,
+ void __unaligned *NvDestination,
+ const void __unaligned *Source,
+ SIZE_T Size,
+ ULONG Flags
+ );
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlFillNonVolatileMemory (
+ PVOID NvToken,
+ void __unaligned *NvDestination,
+ SIZE_T Size,
+ const UCHAR Value,
+ ULONG Flags
+ );
+
+#line 4548 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlFlushNonVolatileMemoryRanges (
+ PVOID NvToken,
+ PNV_MEMORY_RANGE NvRanges,
+ SIZE_T NumRanges,
+ ULONG Flags
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 4588 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+#line 4590 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct CORRELATION_VECTOR {
+ CHAR Version;
+ CHAR Vector[129];
+} CORRELATION_VECTOR;
+
+typedef CORRELATION_VECTOR *PCORRELATION_VECTOR;
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlInitializeCorrelationVector(
+ PCORRELATION_VECTOR CorrelationVector,
+ int Version,
+ const GUID * Guid
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlIncrementCorrelationVector(
+ PCORRELATION_VECTOR CorrelationVector
+ );
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlExtendCorrelationVector(
+ PCORRELATION_VECTOR CorrelationVector
+ );
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlValidateCorrelationVector(
+ PCORRELATION_VECTOR Vector
+ );
+
+#line 4651 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+typedef struct _CUSTOM_SYSTEM_EVENT_TRIGGER_CONFIG {
+
+
+
+ ULONG Size;
+
+
+
+
+ PCWSTR TriggerId;
+
+} CUSTOM_SYSTEM_EVENT_TRIGGER_CONFIG, *PCUSTOM_SYSTEM_EVENT_TRIGGER_CONFIG;
+
+
+__forceinline
+void
+CUSTOM_SYSTEM_EVENT_TRIGGER_INIT(
+ PCUSTOM_SYSTEM_EVENT_TRIGGER_CONFIG Config,
+ PCWSTR TriggerId
+ )
+{
+ memset((Config),0,(sizeof(CUSTOM_SYSTEM_EVENT_TRIGGER_CONFIG)));
+
+ Config->Size = sizeof(CUSTOM_SYSTEM_EVENT_TRIGGER_CONFIG);
+ Config->TriggerId = TriggerId;
+}
+#line 4682 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+NTSTATUS
+__stdcall
+RtlRaiseCustomSystemEventTrigger(
+ PCUSTOM_SYSTEM_EVENT_TRIGGER_CONFIG TriggerConfig
+ );
+
+#line 4692 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlIsZeroMemory (
+ PVOID Buffer,
+ SIZE_T Length
+ );
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlNormalizeSecurityDescriptor (
+ PSECURITY_DESCRIPTOR *SecurityDescriptor,
+ ULONG SecurityDescriptorLength,
+ PSECURITY_DESCRIPTOR *NewSecurityDescriptor,
+ PULONG NewSecurityDescriptorLength,
+ BOOLEAN CheckOnly
+ );
+
+#line 4716 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _RTL_SYSTEM_GLOBAL_DATA_ID {
+ GlobalDataIdUnknown = 0,
+ GlobalDataIdRngSeedVersion,
+ GlobalDataIdInterruptTime,
+ GlobalDataIdTimeZoneBias,
+ GlobalDataIdImageNumberLow,
+ GlobalDataIdImageNumberHigh,
+ GlobalDataIdTimeZoneId,
+ GlobalDataIdNtMajorVersion,
+ GlobalDataIdNtMinorVersion,
+ GlobalDataIdSystemExpirationDate,
+ GlobalDataIdKdDebuggerEnabled,
+ GlobalDataIdCyclesPerYield,
+ GlobalDataIdSafeBootMode,
+ GlobalDataIdLastSystemRITEventTickCount,
+ GlobalDataIdConsoleSharedDataFlags,
+ GlobalDataIdNtSystemRootDrive,
+ GlobalDataIdQpcBypassEnabled,
+ GlobalDataIdQpcData,
+ GlobalDataIdQpcBias
+} RTL_SYSTEM_GLOBAL_DATA_ID, *PRTL_SYSTEM_GLOBAL_DATA_ID;
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlGetSystemGlobalData (
+ RTL_SYSTEM_GLOBAL_DATA_ID DataId,
+ PVOID Buffer,
+ ULONG Size
+ );
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlSetSystemGlobalData (
+ RTL_SYSTEM_GLOBAL_DATA_ID DataId,
+ PVOID Buffer,
+ ULONG Size
+ );
+
+#line 4770 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 4952 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_ALIGNMENT_INFORMATION {
+ ULONG AlignmentRequirement;
+} FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION;
+
+
+
+
+
+
+typedef struct _FILE_NAME_INFORMATION {
+ ULONG FileNameLength;
+ WCHAR FileName[1];
+} FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
+
+
+
+
+typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION {
+ ULONG FileAttributes;
+ ULONG ReparseTag;
+} FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
+
+
+
+typedef struct _FILE_DISPOSITION_INFORMATION {
+ BOOLEAN DeleteFile;
+} FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
+
+
+
+
+
+
+
+
+
+#line 5007 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+typedef struct _FILE_DISPOSITION_INFORMATION_EX {
+ ULONG Flags;
+} FILE_DISPOSITION_INFORMATION_EX, *PFILE_DISPOSITION_INFORMATION_EX;
+#line 5012 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+typedef struct _FILE_END_OF_FILE_INFORMATION {
+ LARGE_INTEGER EndOfFile;
+} FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
+
+
+
+typedef struct _FILE_VALID_DATA_LENGTH_INFORMATION {
+ LARGE_INTEGER ValidDataLength;
+} FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_FS_LABEL_INFORMATION {
+ ULONG VolumeLabelLength;
+ WCHAR VolumeLabel[1];
+} FILE_FS_LABEL_INFORMATION, *PFILE_FS_LABEL_INFORMATION;
+
+typedef struct _FILE_FS_VOLUME_INFORMATION {
+ LARGE_INTEGER VolumeCreationTime;
+ ULONG VolumeSerialNumber;
+ ULONG VolumeLabelLength;
+ BOOLEAN SupportsObjects;
+ WCHAR VolumeLabel[1];
+} FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION;
+
+
+
+
+
+
+typedef struct _FILE_FS_SIZE_INFORMATION {
+ LARGE_INTEGER TotalAllocationUnits;
+ LARGE_INTEGER AvailableAllocationUnits;
+ ULONG SectorsPerAllocationUnit;
+ ULONG BytesPerSector;
+} FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION;
+
+typedef struct _FILE_FS_FULL_SIZE_INFORMATION {
+ LARGE_INTEGER TotalAllocationUnits;
+ LARGE_INTEGER CallerAvailableAllocationUnits;
+ LARGE_INTEGER ActualAvailableAllocationUnits;
+ ULONG SectorsPerAllocationUnit;
+ ULONG BytesPerSector;
+} FILE_FS_FULL_SIZE_INFORMATION, *PFILE_FS_FULL_SIZE_INFORMATION;
+
+
+typedef struct _FILE_FS_FULL_SIZE_INFORMATION_EX {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ULONGLONG ActualTotalAllocationUnits;
+ ULONGLONG ActualAvailableAllocationUnits;
+ ULONGLONG ActualPoolUnavailableAllocationUnits;
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ULONGLONG CallerTotalAllocationUnits;
+ ULONGLONG CallerAvailableAllocationUnits;
+ ULONGLONG CallerPoolUnavailableAllocationUnits;
+
+
+
+
+
+ ULONGLONG UsedAllocationUnits;
+
+
+
+
+
+ ULONGLONG TotalReservedAllocationUnits;
+
+
+
+
+
+
+ ULONGLONG VolumeStorageReserveAllocationUnits;
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ULONGLONG AvailableCommittedAllocationUnits;
+
+
+
+
+
+
+ ULONGLONG PoolAvailableAllocationUnits;
+
+ ULONG SectorsPerAllocationUnit;
+ ULONG BytesPerSector;
+
+} FILE_FS_FULL_SIZE_INFORMATION_EX, *PFILE_FS_FULL_SIZE_INFORMATION_EX;
+#line 5165 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+typedef struct _FILE_FS_METADATA_SIZE_INFORMATION {
+ LARGE_INTEGER TotalMetadataAllocationUnits;
+ ULONG SectorsPerAllocationUnit;
+ ULONG BytesPerSector;
+} FILE_FS_METADATA_SIZE_INFORMATION, *PFILE_FS_METADATA_SIZE_INFORMATION;
+#line 5173 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_FS_SECTOR_SIZE_INFORMATION {
+ ULONG LogicalBytesPerSector;
+ ULONG PhysicalBytesPerSectorForAtomicity;
+ ULONG PhysicalBytesPerSectorForPerformance;
+ ULONG FileSystemEffectivePhysicalBytesPerSectorForAtomicity;
+ ULONG Flags;
+ ULONG ByteOffsetForSectorAlignment;
+ ULONG ByteOffsetForPartitionAlignment;
+} FILE_FS_SECTOR_SIZE_INFORMATION, *PFILE_FS_SECTOR_SIZE_INFORMATION;
+
+typedef struct _FILE_FS_OBJECTID_INFORMATION {
+ UCHAR ObjectId[16];
+ UCHAR ExtendedInfo[48];
+} FILE_FS_OBJECTID_INFORMATION, *PFILE_FS_OBJECTID_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _BUS_DATA_TYPE {
+ ConfigurationSpaceUndefined = -1,
+ Cmos,
+ EisaConfiguration,
+ Pos,
+ CbusConfiguration,
+ PCIConfiguration,
+ VMEConfiguration,
+ NuBusConfiguration,
+ PCMCIAConfiguration,
+ MPIConfiguration,
+ MPSAConfiguration,
+ PNPISAConfiguration,
+ SgiInternalConfiguration,
+ MaximumBusDataType
+} BUS_DATA_TYPE, *PBUS_DATA_TYPE;
+
+typedef struct _KEY_NAME_INFORMATION {
+ ULONG NameLength;
+ WCHAR Name[1];
+} KEY_NAME_INFORMATION, *PKEY_NAME_INFORMATION;
+
+typedef struct _KEY_CACHED_INFORMATION {
+ LARGE_INTEGER LastWriteTime;
+ ULONG TitleIndex;
+ ULONG SubKeys;
+ ULONG MaxNameLen;
+ ULONG Values;
+ ULONG MaxValueNameLen;
+ ULONG MaxValueDataLen;
+ ULONG NameLength;
+} KEY_CACHED_INFORMATION, *PKEY_CACHED_INFORMATION;
+
+typedef struct _KEY_VIRTUALIZATION_INFORMATION {
+ ULONG VirtualizationCandidate : 1;
+ ULONG VirtualizationEnabled : 1;
+ ULONG VirtualTarget : 1;
+ ULONG VirtualStore : 1;
+ ULONG VirtualSource : 1;
+ ULONG Reserved : 27;
+} KEY_VIRTUALIZATION_INFORMATION, *PKEY_VIRTUALIZATION_INFORMATION;
+
+typedef struct _KEY_LAYER_INFORMATION {
+ ULONG IsTombstone : 1;
+ ULONG IsSupersedeLocal : 1;
+ ULONG IsSupersedeTree : 1;
+ ULONG ClassIsInherited : 1;
+ ULONG Reserved : 28;
+} KEY_LAYER_INFORMATION, *PKEY_LAYER_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _EXCEPTION_REGISTRATION_RECORD {
+ struct _EXCEPTION_REGISTRATION_RECORD *Next;
+ PEXCEPTION_ROUTINE Handler;
+} EXCEPTION_REGISTRATION_RECORD;
+
+typedef EXCEPTION_REGISTRATION_RECORD *PEXCEPTION_REGISTRATION_RECORD;
+
+
+typedef struct _NT_TIB {
+ struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
+ PVOID StackBase;
+ PVOID StackLimit;
+ PVOID SubSystemTib;
+
+ union {
+ PVOID FiberData;
+ ULONG Version;
+ };
+
+
+#line 5350 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+ PVOID ArbitraryUserPointer;
+ struct _NT_TIB *Self;
+} NT_TIB;
+typedef NT_TIB *PNT_TIB;
+
+
+
+
+typedef struct _NT_TIB32 {
+ ULONG ExceptionList;
+ ULONG StackBase;
+ ULONG StackLimit;
+ ULONG SubSystemTib;
+
+
+ union {
+ ULONG FiberData;
+ ULONG Version;
+ };
+
+
+#line 5372 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+ ULONG ArbitraryUserPointer;
+ ULONG Self;
+} NT_TIB32, *PNT_TIB32;
+
+typedef struct _NT_TIB64 {
+ ULONG64 ExceptionList;
+ ULONG64 StackBase;
+ ULONG64 StackLimit;
+ ULONG64 SubSystemTib;
+
+
+ union {
+ ULONG64 FiberData;
+ ULONG Version;
+ };
+
+
+
+#line 5392 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+ ULONG64 ArbitraryUserPointer;
+ ULONG64 Self;
+} NT_TIB64, *PNT_TIB64;
+
+
+
+
+
+
+
+
+
+typedef enum _PROCESSINFOCLASS {
+ ProcessBasicInformation = 0,
+ ProcessQuotaLimits = 1,
+ ProcessIoCounters = 2,
+ ProcessVmCounters = 3,
+ ProcessTimes = 4,
+ ProcessBasePriority = 5,
+ ProcessRaisePriority = 6,
+ ProcessDebugPort = 7,
+ ProcessExceptionPort = 8,
+ ProcessAccessToken = 9,
+ ProcessLdtInformation = 10,
+ ProcessLdtSize = 11,
+ ProcessDefaultHardErrorMode = 12,
+ ProcessIoPortHandlers = 13,
+ ProcessPooledUsageAndLimits = 14,
+ ProcessWorkingSetWatch = 15,
+ ProcessUserModeIOPL = 16,
+ ProcessEnableAlignmentFaultFixup = 17,
+ ProcessPriorityClass = 18,
+ ProcessWx86Information = 19,
+ ProcessHandleCount = 20,
+ ProcessAffinityMask = 21,
+ ProcessPriorityBoost = 22,
+ ProcessDeviceMap = 23,
+ ProcessSessionInformation = 24,
+ ProcessForegroundInformation = 25,
+ ProcessWow64Information = 26,
+ ProcessImageFileName = 27,
+ ProcessLUIDDeviceMapsEnabled = 28,
+ ProcessBreakOnTermination = 29,
+ ProcessDebugObjectHandle = 30,
+ ProcessDebugFlags = 31,
+ ProcessHandleTracing = 32,
+ ProcessIoPriority = 33,
+ ProcessExecuteFlags = 34,
+ ProcessTlsInformation = 35,
+ ProcessCookie = 36,
+ ProcessImageInformation = 37,
+ ProcessCycleTime = 38,
+ ProcessPagePriority = 39,
+ ProcessInstrumentationCallback = 40,
+ ProcessThreadStackAllocation = 41,
+ ProcessWorkingSetWatchEx = 42,
+ ProcessImageFileNameWin32 = 43,
+ ProcessImageFileMapping = 44,
+ ProcessAffinityUpdateMode = 45,
+ ProcessMemoryAllocationMode = 46,
+ ProcessGroupInformation = 47,
+ ProcessTokenVirtualizationEnabled = 48,
+ ProcessOwnerInformation = 49,
+ ProcessWindowInformation = 50,
+ ProcessHandleInformation = 51,
+ ProcessMitigationPolicy = 52,
+ ProcessDynamicFunctionTableInformation = 53,
+ ProcessHandleCheckingMode = 54,
+ ProcessKeepAliveCount = 55,
+ ProcessRevokeFileHandles = 56,
+ ProcessWorkingSetControl = 57,
+ ProcessHandleTable = 58,
+ ProcessCheckStackExtentsMode = 59,
+ ProcessCommandLineInformation = 60,
+ ProcessProtectionInformation = 61,
+ ProcessMemoryExhaustion = 62,
+ ProcessFaultInformation = 63,
+ ProcessTelemetryIdInformation = 64,
+ ProcessCommitReleaseInformation = 65,
+ ProcessReserved1Information = 66,
+ ProcessReserved2Information = 67,
+ ProcessSubsystemProcess = 68,
+ ProcessInPrivate = 70,
+ ProcessRaiseUMExceptionOnInvalidHandleClose = 71,
+ ProcessSubsystemInformation = 75,
+ ProcessWin32kSyscallFilterInformation = 79,
+ ProcessEnergyTrackingState = 82,
+ ProcessNetworkIoCounters = 114,
+ MaxProcessInfoClass = 116
+} PROCESSINFOCLASS;
+
+
+
+
+
+
+typedef enum _THREADINFOCLASS {
+ ThreadBasicInformation = 0,
+ ThreadTimes = 1,
+ ThreadPriority = 2,
+ ThreadBasePriority = 3,
+ ThreadAffinityMask = 4,
+ ThreadImpersonationToken = 5,
+ ThreadDescriptorTableEntry = 6,
+ ThreadEnableAlignmentFaultFixup = 7,
+ ThreadEventPair_Reusable = 8,
+ ThreadQuerySetWin32StartAddress = 9,
+ ThreadZeroTlsCell = 10,
+ ThreadPerformanceCount = 11,
+ ThreadAmILastThread = 12,
+ ThreadIdealProcessor = 13,
+ ThreadPriorityBoost = 14,
+ ThreadSetTlsArrayAddress = 15,
+ ThreadIsIoPending = 16,
+ ThreadHideFromDebugger = 17,
+ ThreadBreakOnTermination = 18,
+ ThreadSwitchLegacyState = 19,
+ ThreadIsTerminated = 20,
+ ThreadLastSystemCall = 21,
+ ThreadIoPriority = 22,
+ ThreadCycleTime = 23,
+ ThreadPagePriority = 24,
+ ThreadActualBasePriority = 25,
+ ThreadTebInformation = 26,
+ ThreadCSwitchMon = 27,
+ ThreadCSwitchPmu = 28,
+ ThreadWow64Context = 29,
+ ThreadGroupInformation = 30,
+ ThreadUmsInformation = 31,
+ ThreadCounterProfiling = 32,
+ ThreadIdealProcessorEx = 33,
+ ThreadCpuAccountingInformation = 34,
+ ThreadSuspendCount = 35,
+ ThreadActualGroupAffinity = 41,
+ ThreadDynamicCodePolicyInfo = 42,
+ ThreadSubsystemInformation = 45,
+
+ MaxThreadInfoClass = 60,
+} THREADINFOCLASS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _PAGE_PRIORITY_INFORMATION {
+ ULONG PagePriority;
+} PAGE_PRIORITY_INFORMATION, *PPAGE_PRIORITY_INFORMATION;
+
+
+
+
+
+
+typedef struct _PROCESS_WS_WATCH_INFORMATION {
+ PVOID FaultingPc;
+ PVOID FaultingVa;
+} PROCESS_WS_WATCH_INFORMATION, *PPROCESS_WS_WATCH_INFORMATION;
+
+
+
+
+
+
+typedef struct _PROCESS_BASIC_INFORMATION {
+ NTSTATUS ExitStatus;
+ PPEB PebBaseAddress;
+ ULONG_PTR AffinityMask;
+ KPRIORITY BasePriority;
+ ULONG_PTR UniqueProcessId;
+ ULONG_PTR InheritedFromUniqueProcessId;
+} PROCESS_BASIC_INFORMATION,*PPROCESS_BASIC_INFORMATION;
+
+typedef struct _PROCESS_EXTENDED_BASIC_INFORMATION {
+ SIZE_T Size;
+ PROCESS_BASIC_INFORMATION BasicInfo;
+ union {
+ ULONG Flags;
+ struct {
+ ULONG IsProtectedProcess : 1;
+ ULONG IsWow64Process : 1;
+ ULONG IsProcessDeleting : 1;
+ ULONG IsCrossSessionCreate : 1;
+ ULONG IsFrozen : 1;
+ ULONG IsBackground : 1;
+ ULONG IsStronglyNamed : 1;
+ ULONG IsSecureProcess : 1;
+ ULONG IsSubsystemProcess : 1;
+ ULONG IsTrustedApp : 1;
+ ULONG SpareBits : 22;
+ } ;
+ } ;
+} PROCESS_EXTENDED_BASIC_INFORMATION, *PPROCESS_EXTENDED_BASIC_INFORMATION;
+
+
+
+
+typedef struct _PROCESS_MEMBERSHIP_INFORMATION {
+ ULONG ServerSiloId;
+} PROCESS_MEMBERSHIP_INFORMATION, *PPROCESS_MEMBERSHIP_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+typedef struct _PROCESS_DEVICEMAP_INFORMATION {
+ union {
+ struct {
+ HANDLE DirectoryHandle;
+ } Set;
+ struct {
+ ULONG DriveMap;
+ UCHAR DriveType[ 32 ];
+ } Query;
+ } ;
+} PROCESS_DEVICEMAP_INFORMATION, *PPROCESS_DEVICEMAP_INFORMATION;
+
+typedef struct _PROCESS_DEVICEMAP_INFORMATION_EX {
+ union {
+ struct {
+ HANDLE DirectoryHandle;
+ } Set;
+ struct {
+ ULONG DriveMap;
+ UCHAR DriveType[ 32 ];
+ } Query;
+ } ;
+ ULONG Flags;
+} PROCESS_DEVICEMAP_INFORMATION_EX, *PPROCESS_DEVICEMAP_INFORMATION_EX;
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _PROCESS_SESSION_INFORMATION {
+ ULONG SessionId;
+} PROCESS_SESSION_INFORMATION, *PPROCESS_SESSION_INFORMATION;
+
+typedef struct _PROCESS_HANDLE_TRACING_ENABLE {
+ ULONG Flags;
+} PROCESS_HANDLE_TRACING_ENABLE, *PPROCESS_HANDLE_TRACING_ENABLE;
+
+typedef struct _PROCESS_HANDLE_TRACING_ENABLE_EX {
+ ULONG Flags;
+ ULONG TotalSlots;
+} PROCESS_HANDLE_TRACING_ENABLE_EX, *PPROCESS_HANDLE_TRACING_ENABLE_EX;
+
+
+
+
+
+
+
+
+typedef struct _PROCESS_HANDLE_TRACING_ENTRY {
+ HANDLE Handle;
+ CLIENT_ID ClientId;
+ ULONG Type;
+ PVOID Stacks[16];
+} PROCESS_HANDLE_TRACING_ENTRY, *PPROCESS_HANDLE_TRACING_ENTRY;
+
+typedef struct _PROCESS_HANDLE_TRACING_QUERY {
+ HANDLE Handle;
+ ULONG TotalTraces;
+ PROCESS_HANDLE_TRACING_ENTRY HandleTrace[1];
+} PROCESS_HANDLE_TRACING_QUERY, *PPROCESS_HANDLE_TRACING_QUERY;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _PROCESS_DYNAMIC_EH_CONTINUATION_TARGET {
+ ULONG_PTR TargetAddress;
+ ULONG_PTR Flags;
+} PROCESS_DYNAMIC_EH_CONTINUATION_TARGET, *PPROCESS_DYNAMIC_EH_CONTINUATION_TARGET;
+
+typedef struct _PROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION {
+ USHORT NumberOfTargets;
+ USHORT Reserved;
+ ULONG Reserved2;
+ PPROCESS_DYNAMIC_EH_CONTINUATION_TARGET Targets;
+} PROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION, *PPROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE {
+ ULONG_PTR BaseAddress;
+ SIZE_T Size;
+ ULONG Flags;
+} PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE, *PPROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE;
+
+typedef struct _PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGES_INFORMATION {
+ USHORT NumberOfRanges;
+ USHORT Reserved;
+ ULONG Reserved2;
+ PPROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE Ranges;
+} PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGES_INFORMATION, *PPROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGES_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _QUOTA_LIMITS {
+ SIZE_T PagedPoolLimit;
+ SIZE_T NonPagedPoolLimit;
+ SIZE_T MinimumWorkingSetSize;
+ SIZE_T MaximumWorkingSetSize;
+ SIZE_T PagefileLimit;
+ LARGE_INTEGER TimeLimit;
+} QUOTA_LIMITS, *PQUOTA_LIMITS;
+
+
+
+
+
+
+
+typedef union _RATE_QUOTA_LIMIT {
+ ULONG RateData;
+ struct {
+ ULONG RatePercent : 7;
+ ULONG Reserved0 : 25;
+ } ;
+} RATE_QUOTA_LIMIT, *PRATE_QUOTA_LIMIT;
+
+typedef struct _QUOTA_LIMITS_EX {
+ SIZE_T PagedPoolLimit;
+ SIZE_T NonPagedPoolLimit;
+ SIZE_T MinimumWorkingSetSize;
+ SIZE_T MaximumWorkingSetSize;
+ SIZE_T PagefileLimit;
+ LARGE_INTEGER TimeLimit;
+ SIZE_T WorkingSetLimit;
+ SIZE_T Reserved2;
+ SIZE_T Reserved3;
+ SIZE_T Reserved4;
+ ULONG Flags;
+ RATE_QUOTA_LIMIT CpuRateLimit;
+} QUOTA_LIMITS_EX, *PQUOTA_LIMITS_EX;
+
+
+
+
+
+
+typedef struct _IO_COUNTERS {
+ ULONGLONG ReadOperationCount;
+ ULONGLONG WriteOperationCount;
+ ULONGLONG OtherOperationCount;
+ ULONGLONG ReadTransferCount;
+ ULONGLONG WriteTransferCount;
+ ULONGLONG OtherTransferCount;
+} IO_COUNTERS;
+typedef IO_COUNTERS *PIO_COUNTERS;
+
+
+
+
+
+
+
+
+
+typedef struct _VM_COUNTERS {
+ SIZE_T PeakVirtualSize;
+ SIZE_T VirtualSize;
+ ULONG PageFaultCount;
+ SIZE_T PeakWorkingSetSize;
+ SIZE_T WorkingSetSize;
+ SIZE_T QuotaPeakPagedPoolUsage;
+ SIZE_T QuotaPagedPoolUsage;
+ SIZE_T QuotaPeakNonPagedPoolUsage;
+ SIZE_T QuotaNonPagedPoolUsage;
+ SIZE_T PagefileUsage;
+ SIZE_T PeakPagefileUsage;
+} VM_COUNTERS;
+typedef VM_COUNTERS *PVM_COUNTERS;
+
+typedef struct _VM_COUNTERS_EX {
+ SIZE_T PeakVirtualSize;
+ SIZE_T VirtualSize;
+ ULONG PageFaultCount;
+ SIZE_T PeakWorkingSetSize;
+ SIZE_T WorkingSetSize;
+ SIZE_T QuotaPeakPagedPoolUsage;
+ SIZE_T QuotaPagedPoolUsage;
+ SIZE_T QuotaPeakNonPagedPoolUsage;
+ SIZE_T QuotaNonPagedPoolUsage;
+ SIZE_T PagefileUsage;
+ SIZE_T PeakPagefileUsage;
+ SIZE_T PrivateUsage;
+} VM_COUNTERS_EX;
+
+typedef VM_COUNTERS_EX *PVM_COUNTERS_EX;
+
+typedef struct _VM_COUNTERS_EX2 {
+ VM_COUNTERS_EX CountersEx;
+ SIZE_T PrivateWorkingSetSize;
+ ULONGLONG SharedCommitUsage;
+} VM_COUNTERS_EX2, *PVM_COUNTERS_EX2;
+
+
+
+
+
+
+
+typedef enum _HARDWARE_COUNTER_TYPE {
+ PMCCounter,
+ MaxHardwareCounterType
+} HARDWARE_COUNTER_TYPE, *PHARDWARE_COUNTER_TYPE;
+
+
+
+
+typedef struct _HARDWARE_COUNTER {
+ HARDWARE_COUNTER_TYPE Type;
+ ULONG Reserved;
+ ULONG64 Index;
+} HARDWARE_COUNTER, *PHARDWARE_COUNTER;
+
+
+
+
+
+
+
+
+
+typedef enum _PROCESS_MITIGATION_POLICY {
+ ProcessDEPPolicy,
+ ProcessASLRPolicy,
+ ProcessDynamicCodePolicy,
+ ProcessStrictHandleCheckPolicy,
+ ProcessSystemCallDisablePolicy,
+ ProcessMitigationOptionsMask,
+ ProcessExtensionPointDisablePolicy,
+ ProcessControlFlowGuardPolicy,
+ ProcessSignaturePolicy,
+ ProcessFontDisablePolicy,
+ ProcessImageLoadPolicy,
+ ProcessSystemCallFilterPolicy,
+ ProcessPayloadRestrictionPolicy,
+ ProcessChildProcessPolicy,
+ ProcessSideChannelIsolationPolicy,
+ ProcessUserShadowStackPolicy,
+ ProcessRedirectionTrustPolicy,
+ ProcessUserPointerAuthPolicy,
+ ProcessSEHOPPolicy,
+ MaxProcessMitigationPolicy
+} PROCESS_MITIGATION_POLICY, *PPROCESS_MITIGATION_POLICY;
+
+
+
+
+
+
+typedef struct _PROCESS_MITIGATION_ASLR_POLICY {
+ union {
+ ULONG Flags;
+ struct {
+ ULONG EnableBottomUpRandomization : 1;
+ ULONG EnableForceRelocateImages : 1;
+ ULONG EnableHighEntropy : 1;
+ ULONG DisallowStrippedImages : 1;
+ ULONG ReservedFlags : 28;
+ } ;
+ } ;
+} PROCESS_MITIGATION_ASLR_POLICY, *PPROCESS_MITIGATION_ASLR_POLICY;
+
+typedef struct _PROCESS_MITIGATION_DEP_POLICY {
+ union {
+ ULONG Flags;
+ struct {
+ ULONG Enable : 1;
+ ULONG DisableAtlThunkEmulation : 1;
+ ULONG ReservedFlags : 30;
+ } ;
+ } ;
+ BOOLEAN Permanent;
+} PROCESS_MITIGATION_DEP_POLICY, *PPROCESS_MITIGATION_DEP_POLICY;
+
+typedef struct _PROCESS_MITIGATION_SEHOP_POLICY {
+ union {
+ ULONG Flags;
+ struct {
+ ULONG EnableSehop : 1;
+ ULONG ReservedFlags : 31;
+ } ;
+ } ;
+} PROCESS_MITIGATION_SEHOP_POLICY, *PPROCESS_MITIGATION_SEHOP_POLICY;
+
+typedef struct _PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY {
+ union {
+ ULONG Flags;
+ struct {
+ ULONG RaiseExceptionOnInvalidHandleReference : 1;
+ ULONG HandleExceptionsPermanentlyEnabled : 1;
+ ULONG ReservedFlags : 30;
+ } ;
+ } ;
+} PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY, *PPROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY;
+
+typedef struct _PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY {
+ union {
+ ULONG Flags;
+ struct {
+ ULONG DisallowWin32kSystemCalls : 1;
+ ULONG AuditDisallowWin32kSystemCalls : 1;
+ ULONG DisallowFsctlSystemCalls : 1;
+ ULONG AuditDisallowFsctlSystemCalls : 1;
+ ULONG ReservedFlags : 28;
+ } ;
+ } ;
+} PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY, *PPROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY;
+
+typedef struct _PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY {
+ union {
+ ULONG Flags;
+ struct {
+ ULONG DisableExtensionPoints : 1;
+ ULONG ReservedFlags : 31;
+ } ;
+ } ;
+} PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY, *PPROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY;
+
+typedef struct _PROCESS_MITIGATION_DYNAMIC_CODE_POLICY {
+ union {
+ ULONG Flags;
+ struct {
+ ULONG ProhibitDynamicCode : 1;
+ ULONG AllowThreadOptOut : 1;
+ ULONG AllowRemoteDowngrade : 1;
+ ULONG AuditProhibitDynamicCode : 1;
+ ULONG ReservedFlags : 28;
+ } ;
+ } ;
+} PROCESS_MITIGATION_DYNAMIC_CODE_POLICY, *PPROCESS_MITIGATION_DYNAMIC_CODE_POLICY;
+
+typedef struct _PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY {
+ union {
+ ULONG Flags;
+ struct {
+ ULONG EnableControlFlowGuard : 1;
+ ULONG EnableExportSuppression : 1;
+ ULONG StrictMode : 1;
+ ULONG EnableXfg : 1;
+ ULONG EnableXfgAuditMode : 1;
+ ULONG ReservedFlags : 27;
+ } ;
+ } ;
+} PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY, *PPROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY;
+
+typedef struct _PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY {
+ union {
+ ULONG Flags;
+ struct {
+ ULONG MicrosoftSignedOnly : 1;
+ ULONG StoreSignedOnly : 1;
+ ULONG MitigationOptIn : 1;
+ ULONG AuditMicrosoftSignedOnly : 1;
+ ULONG AuditStoreSignedOnly : 1;
+ ULONG ReservedFlags : 27;
+ } ;
+ } ;
+} PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY, *PPROCESS_MITIGATION_BINARY_SIGNATURE_POLICY;
+
+typedef struct _PROCESS_MITIGATION_FONT_DISABLE_POLICY {
+ union {
+ ULONG Flags;
+ struct {
+ ULONG DisableNonSystemFonts : 1;
+ ULONG AuditNonSystemFontLoading : 1;
+ ULONG ReservedFlags : 30;
+ } ;
+ } ;
+} PROCESS_MITIGATION_FONT_DISABLE_POLICY, *PPROCESS_MITIGATION_FONT_DISABLE_POLICY;
+
+typedef struct _PROCESS_MITIGATION_IMAGE_LOAD_POLICY {
+ union {
+ ULONG Flags;
+ struct {
+ ULONG NoRemoteImages : 1;
+ ULONG NoLowMandatoryLabelImages : 1;
+ ULONG PreferSystem32Images : 1;
+ ULONG AuditNoRemoteImages : 1;
+ ULONG AuditNoLowMandatoryLabelImages : 1;
+ ULONG ReservedFlags : 27;
+ } ;
+ } ;
+} PROCESS_MITIGATION_IMAGE_LOAD_POLICY, *PPROCESS_MITIGATION_IMAGE_LOAD_POLICY;
+
+typedef struct _PROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY {
+ union {
+ ULONG Flags;
+ struct {
+ ULONG FilterId: 4;
+ ULONG ReservedFlags : 28;
+ } ;
+ } ;
+} PROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY, *PPROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY;
+
+typedef struct _PROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY {
+ union {
+ ULONG Flags;
+ struct {
+ ULONG EnableExportAddressFilter : 1;
+ ULONG AuditExportAddressFilter : 1;
+
+ ULONG EnableExportAddressFilterPlus : 1;
+ ULONG AuditExportAddressFilterPlus : 1;
+
+ ULONG EnableImportAddressFilter : 1;
+ ULONG AuditImportAddressFilter : 1;
+
+ ULONG EnableRopStackPivot : 1;
+ ULONG AuditRopStackPivot : 1;
+
+ ULONG EnableRopCallerCheck : 1;
+ ULONG AuditRopCallerCheck : 1;
+
+ ULONG EnableRopSimExec : 1;
+ ULONG AuditRopSimExec : 1;
+
+ ULONG ReservedFlags : 20;
+ } ;
+ } ;
+} PROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY, *PPROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY;
+
+typedef struct _PROCESS_MITIGATION_CHILD_PROCESS_POLICY {
+ union {
+ ULONG Flags;
+ struct {
+ ULONG NoChildProcessCreation : 1;
+ ULONG AuditNoChildProcessCreation : 1;
+ ULONG AllowSecureProcessCreation : 1;
+ ULONG ReservedFlags : 29;
+ } ;
+ } ;
+} PROCESS_MITIGATION_CHILD_PROCESS_POLICY, *PPROCESS_MITIGATION_CHILD_PROCESS_POLICY;
+
+typedef struct _PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY {
+ union {
+ ULONG Flags;
+ struct {
+
+
+
+
+
+ ULONG SmtBranchTargetIsolation : 1;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ULONG IsolateSecurityDomain : 1;
+
+
+
+
+
+
+ ULONG DisablePageCombine : 1;
+
+
+
+
+
+ ULONG SpeculativeStoreBypassDisable : 1;
+
+
+
+
+
+
+ ULONG RestrictCoreSharing : 1;
+
+ ULONG ReservedFlags : 27;
+
+ } ;
+ } ;
+} PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY, *PPROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY;
+
+typedef struct _PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY {
+ union {
+ ULONG Flags;
+ struct {
+ ULONG EnableUserShadowStack : 1;
+ ULONG AuditUserShadowStack : 1;
+ ULONG SetContextIpValidation : 1;
+ ULONG AuditSetContextIpValidation : 1;
+ ULONG EnableUserShadowStackStrictMode : 1;
+ ULONG BlockNonCetBinaries : 1;
+ ULONG BlockNonCetBinariesNonEhcont : 1;
+ ULONG AuditBlockNonCetBinaries : 1;
+ ULONG CetDynamicApisOutOfProcOnly : 1;
+ ULONG SetContextIpValidationRelaxedMode : 1;
+ ULONG ReservedFlags : 22;
+
+ } ;
+ } ;
+} PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY, *PPROCESS_MITIGATION_USER_SHADOW_STACK_POLICY;
+
+typedef struct _PROCESS_MITIGATION_USER_POINTER_AUTH_POLICY {
+ union {
+ ULONG Flags;
+ struct {
+ ULONG EnablePointerAuthUserIp : 1;
+ ULONG ReservedFlags : 31;
+ } ;
+ } ;
+} PROCESS_MITIGATION_USER_POINTER_AUTH_POLICY, *PPROCESS_MITIGATION_USER_POINTER_AUTH_POLICY;
+
+typedef struct _PROCESS_MITIGATION_REDIRECTION_TRUST_POLICY {
+ union {
+ ULONG Flags;
+ struct {
+ ULONG EnforceRedirectionTrust : 1;
+ ULONG AuditRedirectionTrust : 1;
+ ULONG ReservedFlags : 30;
+ } ;
+ } ;
+} PROCESS_MITIGATION_REDIRECTION_TRUST_POLICY, *PPROCESS_MITIGATION_REDIRECTION_TRUST_POLICY;
+
+
+
+
+
+typedef struct _PROCESS_NETWORK_COUNTERS {
+ ULONG64 BytesIn;
+ ULONG64 BytesOut;
+} PROCESS_NETWORK_COUNTERS, *PPROCESS_NETWORK_COUNTERS;
+
+
+
+
+
+
+
+
+typedef struct _PROCESS_KEEPALIVE_COUNT_INFORMATION {
+ ULONG WakeCount;
+ ULONG NoWakeCount;
+} PROCESS_KEEPALIVE_COUNT_INFORMATION, *PPROCESS_KEEPALIVE_COUNT_INFORMATION;
+
+
+
+
+
+typedef struct _PROCESS_REVOKE_FILE_HANDLES_INFORMATION {
+ UNICODE_STRING TargetDevicePath;
+} PROCESS_REVOKE_FILE_HANDLES_INFORMATION, *PPROCESS_REVOKE_FILE_HANDLES_INFORMATION;
+
+
+
+
+
+
+
+
+
+typedef struct _POOLED_USAGE_AND_LIMITS {
+ SIZE_T PeakPagedPoolUsage;
+ SIZE_T PagedPoolUsage;
+ SIZE_T PagedPoolLimit;
+ SIZE_T PeakNonPagedPoolUsage;
+ SIZE_T NonPagedPoolUsage;
+ SIZE_T NonPagedPoolLimit;
+ SIZE_T PeakPagefileUsage;
+ SIZE_T PagefileUsage;
+ SIZE_T PagefileLimit;
+} POOLED_USAGE_AND_LIMITS;
+typedef POOLED_USAGE_AND_LIMITS *PPOOLED_USAGE_AND_LIMITS;
+
+
+
+
+
+
+
+
+typedef struct _PROCESS_ACCESS_TOKEN {
+
+
+
+
+
+
+ HANDLE Token;
+
+
+
+
+
+
+
+
+
+ HANDLE Thread;
+
+} PROCESS_ACCESS_TOKEN, *PPROCESS_ACCESS_TOKEN;
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _PROCESS_EXCEPTION_PORT {
+
+
+
+
+
+ HANDLE ExceptionPortHandle;
+
+
+
+
+
+
+ ULONG StateFlags;
+
+} PROCESS_EXCEPTION_PORT, *PPROCESS_EXCEPTION_PORT;
+
+
+
+
+
+
+
+typedef struct _KERNEL_USER_TIMES {
+ LARGE_INTEGER CreateTime;
+ LARGE_INTEGER ExitTime;
+ LARGE_INTEGER KernelTime;
+ LARGE_INTEGER UserTime;
+} KERNEL_USER_TIMES;
+typedef KERNEL_USER_TIMES *PKERNEL_USER_TIMES;
+
+
+
+
+
+
+
+typedef enum _SUBSYSTEM_INFORMATION_TYPE {
+ SubsystemInformationTypeWin32 = 0,
+ SubsystemInformationTypeWSL = 1,
+ MaxSubsystemInformationType
+} SUBSYSTEM_INFORMATION_TYPE, *PSUBSYSTEM_INFORMATION_TYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _POWER_THROTTLING_PROCESS_STATE {
+ ULONG Version;
+ ULONG ControlMask;
+ ULONG StateMask;
+} POWER_THROTTLING_PROCESS_STATE, *PPOWER_THROTTLING_PROCESS_STATE;
+
+
+
+
+
+
+
+typedef struct _POWER_THROTTLING_THREAD_STATE {
+ ULONG Version;
+ ULONG ControlMask;
+ ULONG StateMask;
+} POWER_THROTTLING_THREAD_STATE, *PPOWER_THROTTLING_THREAD_STATE;
+
+
+
+
+
+
+
+
+typedef struct _PROCESS_SYSCALL_PROVIDER_INFORMATION {
+ GUID ProviderId;
+ UCHAR Level;
+} PROCESS_SYSCALL_PROVIDER_INFORMATION, *PPROCESS_SYSCALL_PROVIDER_INFORMATION;
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtOpenProcess (
+ PHANDLE ProcessHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ PCLIENT_ID ClientId
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 6420 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 6683 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _KPCR {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ union {
+ NT_TIB NtTib;
+ struct {
+ union _KGDTENTRY64 *GdtBase;
+ struct _KTSS64 *TssBase;
+ ULONG64 UserRsp;
+ struct _KPCR *Self;
+ struct _KPRCB *CurrentPrcb;
+ PKSPIN_LOCK_QUEUE LockArray;
+ PVOID Used_Self;
+ };
+ };
+
+ union _KIDTENTRY64 *IdtBase;
+
+ ULONG64 Unused[2];
+ KIRQL Irql;
+ UCHAR SecondLevelCacheAssociativity;
+ UCHAR ObsoleteNumber;
+ UCHAR Fill0;
+ ULONG Unused0[3];
+ USHORT MajorVersion;
+ USHORT MinorVersion;
+ ULONG StallScaleFactor;
+ PVOID Unused1[3];
+
+ ULONG KernelReserved[15];
+ ULONG SecondLevelCacheSize;
+ ULONG HalReserved[16];
+ ULONG Unused2;
+ PVOID KdVersionBlock;
+ PVOID Unused3;
+ ULONG PcrAlign1[24];
+
+
+} KPCR, *PKPCR;
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _KEXCEPTION_FRAME {
+
+
+
+
+
+ ULONG64 P1Home;
+ ULONG64 P2Home;
+ ULONG64 P3Home;
+ ULONG64 P4Home;
+ ULONG64 P5;
+ ULONG64 Spare1;
+
+
+
+
+
+ M128A Xmm6;
+ M128A Xmm7;
+ M128A Xmm8;
+ M128A Xmm9;
+ M128A Xmm10;
+ M128A Xmm11;
+ M128A Xmm12;
+ M128A Xmm13;
+ M128A Xmm14;
+ M128A Xmm15;
+
+
+
+
+
+ ULONG64 TrapFrame;
+ ULONG64 OutputBuffer;
+ ULONG64 OutputLength;
+ ULONG64 Spare2;
+
+
+
+
+
+
+ ULONG64 MxCsr;
+
+
+
+
+
+ ULONG64 Rbp;
+
+
+
+
+
+ ULONG64 Rbx;
+ ULONG64 Rdi;
+ ULONG64 Rsi;
+ ULONG64 R12;
+ ULONG64 R13;
+ ULONG64 R14;
+ ULONG64 R15;
+
+
+
+
+
+ ULONG64 Return;
+} KEXCEPTION_FRAME, *PKEXCEPTION_FRAME;
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _KTRAP_FRAME {
+
+
+
+
+
+ ULONG64 P1Home;
+ ULONG64 P2Home;
+ ULONG64 P3Home;
+ ULONG64 P4Home;
+ ULONG64 P5;
+
+
+
+
+
+
+ KPROCESSOR_MODE PreviousMode;
+
+ KIRQL PreviousIrql;
+
+
+
+
+
+ UCHAR FaultIndicator;
+
+
+
+
+
+
+
+
+
+ UCHAR ExceptionActive;
+
+
+
+
+
+ ULONG MxCsr;
+
+
+
+
+
+
+
+
+ ULONG64 Rax;
+ ULONG64 Rcx;
+ ULONG64 Rdx;
+ ULONG64 R8;
+ ULONG64 R9;
+ ULONG64 R10;
+ ULONG64 R11;
+
+
+
+
+
+
+
+ union {
+ ULONG64 GsBase;
+ ULONG64 GsSwap;
+ };
+
+
+
+
+
+
+
+
+ M128A Xmm0;
+ M128A Xmm1;
+ M128A Xmm2;
+ M128A Xmm3;
+ M128A Xmm4;
+ M128A Xmm5;
+
+
+
+
+
+
+ union {
+ ULONG64 FaultAddress;
+ ULONG64 ContextRecord;
+ };
+
+
+
+
+
+
+
+ union {
+ struct {
+ ULONG64 Dr0;
+ ULONG64 Dr1;
+ ULONG64 Dr2;
+ ULONG64 Dr3;
+ ULONG64 Dr6;
+ ULONG64 Dr7;
+ };
+
+ struct {
+ ULONG64 ShadowStackFrame;
+ ULONG64 Spare[5];
+ };
+ };
+
+
+
+
+
+ struct {
+ ULONG64 DebugControl;
+ ULONG64 LastBranchToRip;
+ ULONG64 LastBranchFromRip;
+ ULONG64 LastExceptionToRip;
+ ULONG64 LastExceptionFromRip;
+ };
+
+
+
+
+
+ USHORT SegDs;
+ USHORT SegEs;
+ USHORT SegFs;
+ USHORT SegGs;
+
+
+
+
+
+ ULONG64 TrapFrame;
+
+
+
+
+
+
+
+ ULONG64 Rbx;
+
+
+ ULONG64 Rdi;
+ ULONG64 Rsi;
+
+
+
+
+
+
+ ULONG64 Rbp;
+
+
+
+
+
+
+
+
+
+ union {
+ ULONG64 ErrorCode;
+ ULONG64 ExceptionFrame;
+ };
+
+ ULONG64 Rip;
+ USHORT SegCs;
+ UCHAR Fill0;
+ UCHAR Logging;
+ USHORT Fill1[2];
+ ULONG EFlags;
+ ULONG Fill2;
+ ULONG64 Rsp;
+ USHORT SegSs;
+ USHORT Fill3;
+ ULONG Fill4;
+} KTRAP_FRAME, *PKTRAP_FRAME;
+
+typedef struct _KUMS_CONTEXT_HEADER {
+ ULONG64 P1Home;
+ ULONG64 P2Home;
+ ULONG64 P3Home;
+ ULONG64 P4Home;
+ PVOID StackTop;
+ ULONG64 StackSize;
+ ULONG64 RspOffset;
+ ULONG64 Rip;
+ PXMM_SAVE_AREA32 FltSave;
+
+
+ union {
+ struct {
+ ULONG64 Volatile : 1;
+ ULONG64 Reserved : 63;
+ };
+ ULONG64 Flags;
+ };
+ PKTRAP_FRAME TrapFrame;
+ PKEXCEPTION_FRAME ExceptionFrame;
+ struct _KTHREAD *SourceThread;
+ ULONG64 Return;
+} KUMS_CONTEXT_HEADER, *PKUMS_CONTEXT_HEADER;
+
+
+
+
+
+
+extern __declspec(dllimport) ULONG KeLastBranchMSR;
+
+
+
+
+
+extern const __declspec(dllimport) PVOID MmHighestUserAddress;
+
+
+extern const __declspec(dllimport) PVOID MmSystemRangeStart;
+
+
+extern const __declspec(dllimport) ULONG64 MmUserProbeAddress;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7115 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+#line 7119 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7143 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+typedef enum _INTERLOCKED_RESULT {
+ ResultNegative = 1,
+ ResultZero = 0,
+ ResultPositive = 2
+} INTERLOCKED_RESULT;
+
+
+
+
+
+__forceinline
+LONG
+_ExInterlockedDecrementLong (
+ PLONG Addend
+ )
+
+{
+
+ LONG Result;
+
+ Result = _InterlockedDecrement(Addend);
+ if (Result < 0) {
+ return ResultNegative;
+
+ } else if (Result > 0) {
+ return ResultPositive;
+
+ } else {
+ return ResultZero;
+ }
+}
+
+
+
+
+
+__forceinline
+LONG
+_ExInterlockedIncrementLong (
+ PLONG Addend
+ )
+
+{
+
+ LONG Result;
+
+ Result = _InterlockedIncrement(Addend);
+ if (Result < 0) {
+ return ResultNegative;
+
+ } else if (Result > 0) {
+ return ResultPositive;
+
+ } else {
+ return ResultZero;
+ }
+}
+
+
+
+
+__forceinline
+ULONG
+_ExInterlockedExchangeUlong (
+ PULONG Target,
+ ULONG Value
+ )
+
+{
+
+ return (ULONG)_InterlockedExchange((PLONG)Target, (LONG)Value);
+}
+
+#line 7222 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+__forceinline
+PKPCR
+KeGetPcr (
+ void
+ )
+
+{
+ return (PKPCR)__readgsqword(((LONG)(LONG_PTR)&(((KPCR *)0)->Self)));
+}
+
+
+
+
+
+
+
+
+__forceinline
+ULONG
+KeGetCurrentProcessorNumber (
+ void
+ )
+
+{
+
+ return (ULONG)__readgsbyte(0x184);
+}
+
+#line 7264 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+#line 7267 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+#line 7270 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+__forceinline
+KIRQL
+KeRaiseIrqlToDpcLevel (
+ void
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+
+ return KfRaiseIrql(2);
+}
+
+
+
+__forceinline
+KIRQL
+KeRaiseIrqlToSynchLevel (
+ void
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+
+ return KfRaiseIrql(12);
+}
+
+
+#line 7340 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7849 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7918 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8402 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8473 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+typedef enum _SYSTEM_FIRMWARE_TABLE_ACTION {
+ SystemFirmwareTable_Enumerate,
+ SystemFirmwareTable_Get
+} SYSTEM_FIRMWARE_TABLE_ACTION;
+
+typedef struct _SYSTEM_FIRMWARE_TABLE_INFORMATION {
+ ULONG ProviderSignature;
+ SYSTEM_FIRMWARE_TABLE_ACTION Action;
+ ULONG TableID;
+ ULONG TableBufferLength;
+ UCHAR TableBuffer[1];
+} SYSTEM_FIRMWARE_TABLE_INFORMATION, *PSYSTEM_FIRMWARE_TABLE_INFORMATION;
+
+typedef
+NTSTATUS
+(__cdecl *PFNFTH) (
+ PSYSTEM_FIRMWARE_TABLE_INFORMATION SystemFirmwareTableInfo
+ );
+
+typedef struct _SYSTEM_FIRMWARE_TABLE_HANDLER {
+ ULONG ProviderSignature;
+ BOOLEAN Register;
+ PFNFTH FirmwareTableHandler;
+ PVOID DriverObject;
+} SYSTEM_FIRMWARE_TABLE_HANDLER, *PSYSTEM_FIRMWARE_TABLE_HANDLER;
+
+
+
+
+
+
+
+
+typedef
+void
+(*PTIMER_APC_ROUTINE) (
+ PVOID TimerContext,
+ ULONG TimerLowValue,
+ LONG TimerHighValue
+ );
+
+
+
+
+
+typedef enum _TIMER_SET_INFORMATION_CLASS {
+ TimerSetCoalescableTimer,
+ MaxTimerInfoClass
+} TIMER_SET_INFORMATION_CLASS;
+
+
+
+typedef struct _TIMER_SET_COALESCABLE_TIMER_INFO {
+ LARGE_INTEGER DueTime;
+ PTIMER_APC_ROUTINE TimerApcRoutine;
+ PVOID TimerContext;
+ struct _COUNTED_REASON_CONTEXT *WakeContext;
+ ULONG Period;
+ ULONG TolerableDelay;
+ PBOOLEAN PreviousState;
+} TIMER_SET_COALESCABLE_TIMER_INFO, *PTIMER_SET_COALESCABLE_TIMER_INFO;
+
+#line 8543 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+typedef
+ULONG_PTR
+(*PDRIVER_VERIFIER_THUNK_ROUTINE) (
+ PVOID Context
+ );
+
+
+
+
+
+
+typedef struct _DRIVER_VERIFIER_THUNK_PAIRS {
+ PDRIVER_VERIFIER_THUNK_ROUTINE PristineRoutine;
+ PDRIVER_VERIFIER_THUNK_ROUTINE NewRoutine;
+} DRIVER_VERIFIER_THUNK_PAIRS, *PDRIVER_VERIFIER_THUNK_PAIRS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8727 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8744 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _XSTATE_FEATURE {
+ ULONG Offset;
+ ULONG Size;
+} XSTATE_FEATURE, *PXSTATE_FEATURE;
+
+typedef struct _XSTATE_CONFIGURATION {
+
+ ULONG64 EnabledFeatures;
+
+
+ ULONG64 EnabledVolatileFeatures;
+
+
+ ULONG Size;
+
+
+ union {
+ ULONG ControlFlags;
+ struct
+ {
+ ULONG OptimizedSave : 1;
+ ULONG CompactionEnabled : 1;
+ ULONG ExtendedFeatureDisable : 1;
+ } ;
+ } ;
+
+
+ XSTATE_FEATURE Features[(64)];
+
+
+ ULONG64 EnabledSupervisorFeatures;
+
+
+ ULONG64 AlignedFeatures;
+
+
+ ULONG AllFeatureSize;
+
+
+ ULONG AllFeatures[(64)];
+
+
+ ULONG64 EnabledUserVisibleSupervisorFeatures;
+
+
+ ULONG64 ExtendedFeatureDisableFeatures;
+
+
+ ULONG AllNonLargeFeatureSize;
+
+
+
+ USHORT MaxSveVectorLength;
+
+ USHORT Spare1;
+
+} XSTATE_CONFIGURATION, *PXSTATE_CONFIGURATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _KUSER_SHARED_DATA {
+
+
+
+
+
+
+
+ ULONG TickCountLowDeprecated;
+ ULONG TickCountMultiplier;
+
+
+
+
+
+ volatile KSYSTEM_TIME InterruptTime;
+
+
+
+
+
+ volatile KSYSTEM_TIME SystemTime;
+
+
+
+
+
+ volatile KSYSTEM_TIME TimeZoneBias;
+
+
+
+
+
+
+
+ USHORT ImageNumberLow;
+ USHORT ImageNumberHigh;
+
+
+
+
+
+
+
+
+ WCHAR NtSystemRoot[260];
+
+
+
+
+
+ ULONG MaxStackTraceDepth;
+
+
+
+
+
+ ULONG CryptoExponent;
+
+
+
+
+
+ ULONG TimeZoneId;
+ ULONG LargePageMinimum;
+
+
+
+
+
+ ULONG AitSamplingValue;
+
+
+
+
+
+ ULONG AppCompatFlag;
+
+
+
+
+
+ ULONGLONG RNGSeedVersion;
+
+
+
+
+
+ ULONG GlobalValidationRunlevel;
+
+ volatile LONG TimeZoneBiasStamp;
+
+
+
+
+
+
+ ULONG NtBuildNumber;
+
+
+
+
+
+
+
+
+ NT_PRODUCT_TYPE NtProductType;
+ BOOLEAN ProductTypeIsValid;
+ BOOLEAN Reserved0[1];
+ USHORT NativeProcessorArchitecture;
+
+
+
+
+
+
+
+
+
+
+ ULONG NtMajorVersion;
+ ULONG NtMinorVersion;
+
+
+
+
+
+ BOOLEAN ProcessorFeatures[64];
+
+
+
+
+
+ ULONG Reserved1;
+ ULONG Reserved3;
+
+
+
+
+
+ volatile ULONG TimeSlip;
+
+
+
+
+
+ ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture;
+
+
+
+
+
+ ULONG BootId;
+
+
+
+
+
+
+
+
+ LARGE_INTEGER SystemExpirationDate;
+
+
+
+
+
+
+
+
+ ULONG SuiteMask;
+
+
+
+
+
+ BOOLEAN KdDebuggerEnabled;
+
+
+
+
+
+ union
+ {
+ UCHAR MitigationPolicies;
+ struct
+ {
+ UCHAR NXSupportPolicy : 2;
+ UCHAR SEHValidationPolicy : 2;
+ UCHAR CurDirDevicesSkippedForDlls : 2;
+ UCHAR Reserved : 2;
+ };
+ };
+
+
+
+
+
+
+
+ USHORT CyclesPerYield;
+
+
+
+
+
+
+
+
+ volatile ULONG ActiveConsoleId;
+
+
+
+
+
+
+
+ volatile ULONG DismountCount;
+
+
+
+
+
+
+
+ ULONG ComPlusPackage;
+
+
+
+
+
+
+
+ ULONG LastSystemRITEventTickCount;
+
+
+
+
+
+
+
+
+
+ ULONG NumberOfPhysicalPages;
+
+
+
+
+
+ BOOLEAN SafeBootMode;
+
+
+
+
+
+ union {
+ UCHAR VirtualizationFlags;
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 9235 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+ };
+
+
+
+
+
+ UCHAR Reserved12[2];
+
+
+
+
+
+
+
+
+
+
+ union {
+ ULONG SharedDataFlags;
+ struct {
+
+
+
+
+
+
+ ULONG DbgErrorPortPresent : 1;
+ ULONG DbgElevationEnabled : 1;
+ ULONG DbgVirtEnabled : 1;
+ ULONG DbgInstallerDetectEnabled : 1;
+ ULONG DbgLkgEnabled : 1;
+ ULONG DbgDynProcessorEnabled : 1;
+ ULONG DbgConsoleBrokerEnabled : 1;
+ ULONG DbgSecureBootEnabled : 1;
+ ULONG DbgMultiSessionSku : 1;
+ ULONG DbgMultiUsersInSessionSku : 1;
+ ULONG DbgStateSeparationEnabled : 1;
+ ULONG SpareBits : 21;
+ } ;
+ } ;
+
+ ULONG DataFlagsPad[1];
+
+
+
+
+
+
+
+
+ ULONGLONG TestRetInstruction;
+ LONGLONG QpcFrequency;
+
+
+
+
+
+
+ ULONG SystemCall;
+
+
+
+
+
+ ULONG Reserved2;
+
+
+
+
+
+
+
+ ULONGLONG FullNumberOfPhysicalPages;
+
+
+
+
+
+ ULONGLONG SystemCallPad[1];
+
+
+
+
+
+ union {
+ volatile KSYSTEM_TIME TickCount;
+ volatile ULONG64 TickCountQuad;
+ struct {
+ ULONG ReservedTickCountOverlay[3];
+ ULONG TickCountPad[1];
+ } ;
+ } ;
+
+
+
+
+
+ ULONG Cookie;
+ ULONG CookiePad[1];
+
+
+
+
+
+
+
+
+
+ LONGLONG ConsoleSessionForegroundProcessId;
+
+
+
+
+
+
+
+
+
+ ULONGLONG TimeUpdateLock;
+
+
+
+
+
+ ULONGLONG BaselineSystemTimeQpc;
+
+
+
+
+
+ ULONGLONG BaselineInterruptTimeQpc;
+
+
+
+
+
+
+ ULONGLONG QpcSystemTimeIncrement;
+
+
+
+
+
+
+ ULONGLONG QpcInterruptTimeIncrement;
+
+
+
+
+
+
+ UCHAR QpcSystemTimeIncrementShift;
+
+
+
+
+
+
+ UCHAR QpcInterruptTimeIncrementShift;
+
+
+
+
+
+ USHORT UnparkedProcessorCount;
+
+
+
+
+
+
+
+
+ ULONG EnclaveFeatureMask[4];
+
+
+
+
+
+ ULONG TelemetryCoverageRound;
+
+
+
+
+
+
+ USHORT UserModeGlobalLogger[16];
+
+
+
+
+
+
+ ULONG ImageFileExecutionOptions;
+
+
+
+
+
+ ULONG LangGenerationCount;
+
+
+
+
+
+ ULONGLONG Reserved4;
+
+
+
+
+
+ volatile ULONGLONG InterruptTimeBias;
+
+
+
+
+
+
+ volatile ULONGLONG QpcBias;
+
+
+
+
+
+ ULONG ActiveProcessorCount;
+ volatile UCHAR ActiveGroupCount;
+
+
+
+
+
+ UCHAR Reserved9;
+
+ union {
+ USHORT QpcData;
+ struct {
+
+
+
+
+
+
+ volatile UCHAR QpcBypassEnabled;
+
+
+
+
+
+
+ UCHAR QpcReserved;
+ };
+ };
+
+ LARGE_INTEGER TimeZoneBiasEffectiveStart;
+ LARGE_INTEGER TimeZoneBiasEffectiveEnd;
+
+
+
+
+
+ XSTATE_CONFIGURATION XState;
+
+ KSYSTEM_TIME FeatureConfigurationChangeStamp;
+ ULONG Spare;
+
+ ULONG64 UserPointerAuthMask;
+
+
+
+
+
+
+
+
+
+
+#line 9513 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+ ULONG Reserved10[210];
+
+#line 9517 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+} KUSER_SHARED_DATA, *PKUSER_SHARED_DATA;
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef char __C_ASSERT__[(0 == 0)?1:-1];
+typedef char __C_ASSERT__[(1 == 1)?1:-1];
+
+
+
+
+
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->TickCountLowDeprecated)) == 0x0)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->TickCountMultiplier)) == 0x4)?1:-1];
+typedef char __C_ASSERT__[(__alignof(KSYSTEM_TIME) == 4)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->InterruptTime)) == 0x08)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->SystemTime)) == 0x014)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->TimeZoneBias)) == 0x020)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->ImageNumberLow)) == 0x02c)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->ImageNumberHigh)) == 0x02e)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->NtSystemRoot)) == 0x030)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->MaxStackTraceDepth)) == 0x238)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->CryptoExponent)) == 0x23c)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->TimeZoneId)) == 0x240)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->LargePageMinimum)) == 0x244)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->AitSamplingValue)) == 0x248)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->AppCompatFlag)) == 0x24c)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->RNGSeedVersion)) == 0x250)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->GlobalValidationRunlevel)) == 0x258)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->TimeZoneBiasStamp)) == 0x25c)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->NtBuildNumber)) == 0x260)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->NtProductType)) == 0x264)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->ProductTypeIsValid)) == 0x268)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->NativeProcessorArchitecture)) == 0x26a)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->NtMajorVersion)) == 0x26c)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->NtMinorVersion)) == 0x270)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->ProcessorFeatures)) == 0x274)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->Reserved1)) == 0x2b4)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->Reserved3)) == 0x2b8)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->TimeSlip)) == 0x2bc)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->AlternativeArchitecture)) == 0x2c0)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->SystemExpirationDate)) == 0x2c8)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->SuiteMask)) == 0x2d0)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->KdDebuggerEnabled)) == 0x2d4)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->MitigationPolicies)) == 0x2d5)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->CyclesPerYield)) == 0x2d6)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->ActiveConsoleId)) == 0x2d8)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->DismountCount)) == 0x2dc)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->ComPlusPackage)) == 0x2e0)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->LastSystemRITEventTickCount)) == 0x2e4)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->NumberOfPhysicalPages)) == 0x2e8)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->SafeBootMode)) == 0x2ec)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->VirtualizationFlags)) == 0x2ed)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->Reserved12)) == 0x2ee)?1:-1];
+
+
+
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->SharedDataFlags)) == 0x2f0)?1:-1];
+
+#line 9587 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->TestRetInstruction)) == 0x2f8)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->QpcFrequency)) == 0x300)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->SystemCall)) == 0x308)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->Reserved2)) == 0x30c)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->SystemCallPad)) == 0x318)?1:-1];
+
+
+
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->TickCount)) == 0x320)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->TickCountQuad)) == 0x320)?1:-1];
+
+#line 9600 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->Cookie)) == 0x330)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->ConsoleSessionForegroundProcessId)) == 0x338)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->TimeUpdateLock)) == 0x340)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->BaselineSystemTimeQpc)) == 0x348)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->BaselineInterruptTimeQpc)) == 0x350)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->QpcSystemTimeIncrement)) == 0x358)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->QpcInterruptTimeIncrement)) == 0x360)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->QpcSystemTimeIncrementShift)) == 0x368)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->QpcInterruptTimeIncrementShift)) == 0x369)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->UnparkedProcessorCount)) == 0x36a)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->EnclaveFeatureMask)) == 0x36c)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->TelemetryCoverageRound)) == 0x37c)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->UserModeGlobalLogger)) == 0x380)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->ImageFileExecutionOptions)) == 0x3a0)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->LangGenerationCount)) == 0x3a4)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->Reserved4)) == 0x3a8)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->InterruptTimeBias)) == 0x3b0)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->QpcBias)) == 0x3b8)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->ActiveProcessorCount)) == 0x3c0)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->ActiveGroupCount)) == 0x3c4)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->Reserved9)) == 0x3c5)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->QpcData)) == 0x3c6)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->QpcBypassEnabled)) == 0x3c6)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->QpcReserved)) == 0x3c7)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->TimeZoneBiasEffectiveStart)) == 0x3c8)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->TimeZoneBiasEffectiveEnd)) == 0x3d0)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->XState)) == 0x3d8)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->FeatureConfigurationChangeStamp)) == 0x720)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->UserPointerAuthMask)) == 0x730)?1:-1];
+
+
+#line 9633 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((KUSER_SHARED_DATA *)0)->Reserved10)) == 0x738)?1:-1];
+#line 9635 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+typedef char __C_ASSERT__[(sizeof(KUSER_SHARED_DATA) == 0xA80)?1:-1];
+#line 9638 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+#line 9640 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _CM_PCCARD_DEVICE_DATA {
+ UCHAR Flags;
+ UCHAR ErrorCode;
+ USHORT Reserved;
+ ULONG BusData;
+ ULONG DeviceId;
+ ULONG LegacyBaseAddress;
+ UCHAR IRQMap[16];
+} CM_PCCARD_DEVICE_DATA, *PCM_PCCARD_DEVICE_DATA;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _CONFIGURATION_TYPE {
+ ArcSystem,
+ CentralProcessor,
+ FloatingPointProcessor,
+ PrimaryIcache,
+ PrimaryDcache,
+ SecondaryIcache,
+ SecondaryDcache,
+ SecondaryCache,
+ EisaAdapter,
+ TcAdapter,
+ ScsiAdapter,
+ DtiAdapter,
+ MultiFunctionAdapter,
+ DiskController,
+ TapeController,
+ CdromController,
+ WormController,
+ SerialController,
+ NetworkController,
+ DisplayController,
+ ParallelController,
+ PointerController,
+ KeyboardController,
+ AudioController,
+ OtherController,
+ DiskPeripheral,
+ FloppyDiskPeripheral,
+ TapePeripheral,
+ ModemPeripheral,
+ MonitorPeripheral,
+ PrinterPeripheral,
+ PointerPeripheral,
+ KeyboardPeripheral,
+ TerminalPeripheral,
+ OtherPeripheral,
+ LinePeripheral,
+ NetworkPeripheral,
+ SystemMemory,
+ DockingInformation,
+ RealModeIrqRoutingTable,
+ RealModePCIEnumeration,
+ MaximumType
+} CONFIGURATION_TYPE, *PCONFIGURATION_TYPE;
+
+#line 9729 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+#line 9740 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+#line 9746 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 9759 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+KeInitializeCrashDumpHeader(
+ ULONG DumpType,
+ ULONG Flags,
+ PVOID Buffer,
+ ULONG BufferSize,
+ PULONG BufferNeeded
+ );
+#line 9772 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+void
+KeSetImportanceDpc (
+ PRKDPC Dpc,
+ KDPC_IMPORTANCE Importance
+ );
+#line 9781 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+void
+KeSetTargetProcessorDpc (
+ PRKDPC Dpc,
+ CCHAR Number
+ );
+#line 9790 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+LONG
+KePulseEvent (
+ PRKEVENT Event,
+ KPRIORITY Increment,
+ BOOLEAN Wait
+ );
+#line 9802 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+typedef
+
+
+void
+(__stdcall EXPAND_STACK_CALLOUT) (
+ PVOID Parameter
+ );
+
+typedef EXPAND_STACK_CALLOUT *PEXPAND_STACK_CALLOUT;
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+KeExpandKernelStackAndCallout (
+ PEXPAND_STACK_CALLOUT Callout,
+ PVOID Parameter,
+ SIZE_T Size
+ );
+
+#line 9828 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+#line 9837 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+#line 9839 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+__declspec(dllimport)
+NTSTATUS
+KeExpandKernelStackAndCalloutEx (
+ PEXPAND_STACK_CALLOUT Callout,
+ PVOID Parameter,
+ SIZE_T Size,
+ BOOLEAN Wait,
+ PVOID Context
+ );
+#line 9849 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+__declspec(dllimport)
+LONG
+KeSetBasePriorityThread (
+ PKTHREAD Thread,
+ LONG Increment
+ );
+#line 9862 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+KeEnterCriticalRegion (
+ void
+ );
+#line 9873 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+void
+KeLeaveCriticalRegion (
+ void
+ );
+#line 9883 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+void
+KeEnterGuardedRegion (
+ void
+ );
+#line 9893 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+void
+KeLeaveGuardedRegion (
+ void
+ );
+#line 9903 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+KeAreApcsDisabled (
+ void
+ );
+#line 9913 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+#line 9920 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+__declspec(dllimport)
+__declspec(noreturn)
+void
+__stdcall
+KeBugCheck (
+ ULONG BugCheckCode
+ );
+#line 9928 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+KeInvalidateAllCaches (
+ void
+ );
+#line 9942 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+#line 9944 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+void
+
+KeInvalidateRangeAllCaches (
+ PVOID BaseAddress,
+ ULONG Length
+ );
+
+
+
+__declspec(dllimport)
+KAFFINITY
+KeQueryActiveProcessors (
+ void
+ );
+#line 9963 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+ULONG
+KeQueryActiveProcessorCount (
+ PKAFFINITY ActiveProcessors
+ );
+#line 9971 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+ULONG
+KeQueryActiveProcessorCountEx (
+ USHORT GroupNumber
+ );
+#line 9979 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+ULONG
+KeQueryMaximumProcessorCount (
+ void
+ );
+#line 9987 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+ULONG
+KeQueryMaximumProcessorCountEx (
+ USHORT GroupNumber
+ );
+#line 9995 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+USHORT
+KeQueryActiveGroupCount (
+ void
+ );
+#line 10003 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+USHORT
+KeQueryMaximumGroupCount (
+ void
+ );
+#line 10011 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+KAFFINITY
+KeQueryGroupAffinity (
+ USHORT GroupNumber
+ );
+#line 10019 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+ULONG
+KeGetCurrentProcessorNumberEx (
+ PPROCESSOR_NUMBER ProcNumber
+ );
+#line 10027 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+void
+KeQueryNodeActiveAffinity (
+ USHORT NodeNumber,
+ PGROUP_AFFINITY Affinity,
+ PUSHORT Count
+ );
+#line 10037 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+USHORT
+KeQueryNodeMaximumProcessorCount (
+ USHORT NodeNumber
+ );
+#line 10045 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+USHORT
+KeQueryHighestNodeNumber (
+ void
+ );
+#line 10053 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+USHORT
+KeGetCurrentNodeNumber (
+ void
+ );
+#line 10061 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+KeQueryLogicalProcessorRelationship (
+ PPROCESSOR_NUMBER ProcessorNumber,
+ LOGICAL_PROCESSOR_RELATIONSHIP RelationshipType,
+ PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Information,
+ PULONG Length
+ );
+#line 10074 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+LOGICAL
+KeShouldYieldProcessor (
+ void
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+KeQueryNodeActiveAffinity2 (
+ USHORT NodeNumber,
+
+ PGROUP_AFFINITY GroupAffinities,
+ USHORT GroupAffinitiesCount,
+ PUSHORT GroupAffinitiesRequired
+ );
+#line 10093 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+ULONG
+KeQueryNodeActiveProcessorCount (
+ USHORT NodeNumber
+ );
+#line 10101 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+KeSetHardwareCounterConfiguration (
+ PHARDWARE_COUNTER CounterArray,
+ ULONG Count
+ );
+#line 10111 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+KeQueryHardwareCounterConfiguration (
+ PHARDWARE_COUNTER CounterArray,
+ ULONG MaximumCount,
+ PULONG Count
+ );
+#line 10122 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+#line 10132 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+__declspec(noreturn)
+void
+ExRaiseDatatypeMisalignment (
+ void
+ );
+
+#line 10151 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+__declspec(noreturn)
+void
+ExRaiseAccessViolation (
+ void
+ );
+
+#line 10163 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+typedef struct _ZONE_SEGMENT_HEADER {
+ SINGLE_LIST_ENTRY SegmentList;
+ PVOID Reserved;
+} ZONE_SEGMENT_HEADER, *PZONE_SEGMENT_HEADER;
+
+typedef struct _ZONE_HEADER {
+ SINGLE_LIST_ENTRY FreeList;
+ SINGLE_LIST_ENTRY SegmentList;
+ ULONG BlockSize;
+ ULONG TotalSegmentSize;
+} ZONE_HEADER, *PZONE_HEADER;
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ExInitializeZone(
+ PZONE_HEADER Zone,
+ ULONG BlockSize,
+ PVOID InitialSegment,
+ ULONG InitialSegmentSize
+ );
+
+#line 10195 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ExExtendZone(
+ PZONE_HEADER Zone,
+ PVOID Segment,
+ ULONG SegmentSize
+ );
+
+#line 10209 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ExInterlockedExtendZone(
+ PZONE_HEADER Zone,
+ PVOID Segment,
+ ULONG SegmentSize,
+ PKSPIN_LOCK Lock
+ );
+
+#line 10225 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 10251 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 10287 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 10319 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 10355 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 10396 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 10429 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 10452 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef GUID UUID;
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ExUuidCreate(
+ UUID *Uuid
+ );
+
+#line 10479 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+MmIsThisAnNtAsSystem (
+ void
+ );
+#line 10600 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmMapUserAddressesToPage (
+ PVOID BaseAddress,
+ SIZE_T NumberOfBytes,
+ PVOID PageAddress
+ );
+#line 10614 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+typedef struct _PHYSICAL_MEMORY_RANGE {
+ PHYSICAL_ADDRESS BaseAddress;
+ LARGE_INTEGER NumberOfBytes;
+} PHYSICAL_MEMORY_RANGE, *PPHYSICAL_MEMORY_RANGE;
+
+
+
+
+
+#line 10626 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+#line 10631 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmAddPhysicalMemory (
+ PPHYSICAL_ADDRESS StartAddress,
+ PLARGE_INTEGER NumberOfBytes
+ );
+#line 10641 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+typedef NTSTATUS (*PMM_ROTATE_COPY_CALLBACK_FUNCTION) (
+ PMDL DestinationMdl,
+ PMDL SourceMdl,
+ PVOID Context
+ );
+
+typedef enum _MM_ROTATE_DIRECTION {
+ MmToFrameBuffer,
+ MmToFrameBufferNoCopy,
+ MmToRegularMemory,
+ MmToRegularMemoryNoCopy,
+ MmMaximumRotateDirection
+} MM_ROTATE_DIRECTION, *PMM_ROTATE_DIRECTION;
+
+
+
+
+
+NTSTATUS
+MmRotatePhysicalView (
+ PVOID VirtualAddress,
+ PSIZE_T NumberOfBytes,
+ PMDL NewMdl,
+ MM_ROTATE_DIRECTION Direction,
+ PMM_ROTATE_COPY_CALLBACK_FUNCTION CopyFunction,
+ PVOID Context
+ );
+#line 10670 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+#line 10677 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmRemovePhysicalMemory (
+ PPHYSICAL_ADDRESS StartAddress,
+ PLARGE_INTEGER NumberOfBytes
+ );
+#line 10687 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+PPHYSICAL_MEMORY_RANGE
+MmGetPhysicalMemoryRanges (
+ void
+ );
+#line 10696 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PPHYSICAL_MEMORY_RANGE
+MmGetPhysicalMemoryRangesEx (
+ PVOID PartitionObject
+ );
+
+#line 10712 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+__declspec(dllimport)
+PPHYSICAL_MEMORY_RANGE
+MmGetPhysicalMemoryRangesEx2 (
+ PVOID PartitionObject,
+ ULONG Flags
+ );
+
+
+
+
+
+
+__declspec(dllimport)
+ PVOID
+MmMapVideoDisplay (
+ PHYSICAL_ADDRESS PhysicalAddress,
+ SIZE_T NumberOfBytes,
+ MEMORY_CACHING_TYPE CacheType
+ );
+#line 10737 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+void
+MmUnmapVideoDisplay (
+ PVOID BaseAddress,
+ SIZE_T NumberOfBytes
+ );
+#line 10748 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+PHYSICAL_ADDRESS
+MmGetPhysicalAddress (
+ PVOID BaseAddress
+ );
+#line 10756 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmGetCacheAttribute (
+ PHYSICAL_ADDRESS PhysicalAddress,
+ MEMORY_CACHING_TYPE *CacheType
+ );
+
+typedef struct _MM_COPY_ADDRESS {
+ union {
+ PVOID VirtualAddress;
+ PHYSICAL_ADDRESS PhysicalAddress;
+ };
+} MM_COPY_ADDRESS, *PMMCOPY_ADDRESS;
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmCopyMemory (
+ PVOID TargetAddress,
+ MM_COPY_ADDRESS SourceAddress,
+ SIZE_T NumberOfBytes,
+ ULONG Flags,
+ PSIZE_T NumberOfBytesTransferred
+ );
+
+#line 10788 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+NTSTATUS
+MmGetCacheAttributeEx (
+ PHYSICAL_ADDRESS PhysicalAddress,
+ ULONG Flags,
+ MEMORY_CACHING_TYPE *CacheType
+ );
+
+#line 10802 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+PVOID
+MmGetVirtualForPhysical (
+ PHYSICAL_ADDRESS PhysicalAddress
+ );
+#line 10811 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+__declspec(dllimport)
+ PVOID
+MmAllocateContiguousMemory (
+ SIZE_T NumberOfBytes,
+ PHYSICAL_ADDRESS HighestAcceptableAddress
+ );
+#line 10824 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+ PVOID
+MmAllocateContiguousMemorySpecifyCache (
+ SIZE_T NumberOfBytes,
+ PHYSICAL_ADDRESS LowestAcceptableAddress,
+ PHYSICAL_ADDRESS HighestAcceptableAddress,
+ PHYSICAL_ADDRESS BoundaryAddressMultiple,
+ MEMORY_CACHING_TYPE CacheType
+ );
+#line 10838 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+typedef ULONG NODE_REQUIREMENT;
+
+
+
+
+
+#line 10850 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+ PVOID
+MmAllocateContiguousMemorySpecifyCacheNode (
+ SIZE_T NumberOfBytes,
+ PHYSICAL_ADDRESS LowestAcceptableAddress,
+ PHYSICAL_ADDRESS HighestAcceptableAddress,
+ PHYSICAL_ADDRESS BoundaryAddressMultiple,
+ MEMORY_CACHING_TYPE CacheType,
+ NODE_REQUIREMENT PreferredNode
+ );
+#line 10865 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+ PVOID
+MmAllocateContiguousNodeMemory (
+ SIZE_T NumberOfBytes,
+ PHYSICAL_ADDRESS LowestAcceptableAddress,
+ PHYSICAL_ADDRESS HighestAcceptableAddress,
+ PHYSICAL_ADDRESS BoundaryAddressMultiple,
+ ULONG Protect,
+ NODE_REQUIREMENT PreferredNode
+ );
+#line 10880 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmAllocateContiguousMemoryEx (
+ PSIZE_T NumberOfBytes,
+ PHYSICAL_ADDRESS LowestAcceptableAddress,
+ PHYSICAL_ADDRESS HighestAcceptableAddress,
+ PHYSICAL_ADDRESS BoundaryAddressMultiple,
+ NODE_REQUIREMENT PreferredNode,
+ ULONG Protect,
+ PVOID PartitionObject,
+ ULONG Tag,
+ ULONG Flags,
+ PVOID* BaseAddress
+ );
+
+#line 10902 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+void
+MmFreeContiguousMemory (
+ PVOID BaseAddress
+ );
+#line 10911 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+void
+MmFreeContiguousMemorySpecifyCache (
+ PVOID BaseAddress,
+ SIZE_T NumberOfBytes,
+ MEMORY_CACHING_TYPE CacheType
+ );
+#line 10922 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+__declspec(dllimport)
+ PVOID
+MmAllocateNonCachedMemory (
+ SIZE_T NumberOfBytes
+ );
+#line 10933 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+void
+MmFreeNonCachedMemory (
+ PVOID BaseAddress,
+ SIZE_T NumberOfBytes
+ );
+#line 10943 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+MmIsAddressValid (
+ PVOID VirtualAddress
+ );
+#line 10952 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+MmIsNonPagedSystemAddressValid (
+ PVOID VirtualAddress
+ );
+#line 10962 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+void
+MmLockPagableSectionByHandle (
+ PVOID ImageSectionHandle
+ );
+#line 10972 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 10988 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+__declspec(dllimport)
+HANDLE
+MmSecureVirtualMemory (
+ PVOID Address,
+ SIZE_T Size,
+ ULONG ProbeMode
+ );
+#line 10996 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 11016 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+__declspec(dllimport)
+HANDLE
+MmSecureVirtualMemoryEx (
+ PVOID Address,
+ SIZE_T Size,
+ ULONG ProbeMode,
+ ULONG Flags
+ );
+
+#line 11026 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+void
+MmUnsecureVirtualMemory (
+ HANDLE SecureHandle
+ );
+#line 11035 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmMapViewInSystemSpaceEx (
+ PVOID Section,
+ PVOID *MappedBase,
+ PSIZE_T ViewSize,
+ PLARGE_INTEGER SectionOffset,
+ ULONG_PTR Flags
+ );
+#line 11052 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmMapViewInSystemSpace (
+ PVOID Section,
+ PVOID *MappedBase,
+ PSIZE_T ViewSize
+ );
+#line 11065 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmUnmapViewInSystemSpace (
+ PVOID MappedBase
+ );
+#line 11075 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmMapViewInSessionSpaceEx (
+ PVOID Section,
+ PVOID *MappedBase,
+ PSIZE_T ViewSize,
+ PLARGE_INTEGER SectionOffset,
+ ULONG_PTR Flags
+ );
+#line 11089 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmMapViewInSessionSpace (
+ PVOID Section,
+ PVOID *MappedBase,
+ PSIZE_T ViewSize
+ );
+#line 11102 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmUnmapViewInSessionSpace (
+ PVOID MappedBase
+ );
+#line 11113 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmCreateMirror (
+ void
+ );
+#line 11125 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+SeSinglePrivilegeCheck(
+ LUID PrivilegeValue,
+ KPROCESSOR_MODE PreviousMode
+ );
+#line 11136 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern __declspec(dllimport) PEPROCESS PsInitialSystemProcess;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 11174 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+typedef struct _PS_CREATE_NOTIFY_INFO {
+ SIZE_T Size;
+ union {
+ ULONG Flags;
+ struct {
+ ULONG FileOpenNameAvailable : 1;
+ ULONG IsSubsystemProcess : 1;
+ ULONG Reserved : 30;
+ };
+ };
+ HANDLE ParentProcessId;
+ CLIENT_ID CreatingThreadId;
+ struct _FILE_OBJECT *FileObject;
+ PCUNICODE_STRING ImageFileName;
+ PCUNICODE_STRING CommandLine;
+ NTSTATUS CreationStatus;
+} PS_CREATE_NOTIFY_INFO, *PPS_CREATE_NOTIFY_INFO;
+
+typedef
+void
+(*PCREATE_PROCESS_NOTIFY_ROUTINE)(
+ HANDLE ParentId,
+ HANDLE ProcessId,
+ BOOLEAN Create
+ );
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PsSetCreateProcessNotifyRoutine(
+ PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine,
+ BOOLEAN Remove
+ );
+#line 11212 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+typedef
+void
+(*PCREATE_PROCESS_NOTIFY_ROUTINE_EX) (
+ PEPROCESS Process,
+ HANDLE ProcessId,
+ PPS_CREATE_NOTIFY_INFO CreateInfo
+ );
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PsSetCreateProcessNotifyRoutineEx (
+ PCREATE_PROCESS_NOTIFY_ROUTINE_EX NotifyRoutine,
+ BOOLEAN Remove
+ );
+#line 11231 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+typedef enum _PSCREATEPROCESSNOTIFYTYPE {
+ PsCreateProcessNotifySubsystems = 0
+} PSCREATEPROCESSNOTIFYTYPE;
+
+
+__declspec(dllimport)
+NTSTATUS
+PsSetCreateProcessNotifyRoutineEx2 (
+ PSCREATEPROCESSNOTIFYTYPE NotifyType,
+ PVOID NotifyInformation,
+ BOOLEAN Remove
+ );
+#line 11246 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+typedef
+void
+(*PCREATE_THREAD_NOTIFY_ROUTINE)(
+ HANDLE ProcessId,
+ HANDLE ThreadId,
+ BOOLEAN Create
+ );
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PsSetCreateThreadNotifyRoutine(
+ PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine
+ );
+#line 11264 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+typedef enum _PSCREATETHREADNOTIFYTYPE {
+ PsCreateThreadNotifyNonSystem = 0,
+ PsCreateThreadNotifySubsystems = 1
+} PSCREATETHREADNOTIFYTYPE;
+
+
+__declspec(dllimport)
+NTSTATUS
+PsSetCreateThreadNotifyRoutineEx(
+ PSCREATETHREADNOTIFYTYPE NotifyType,
+ PVOID NotifyInformation
+ );
+#line 11279 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+PsRemoveCreateThreadNotifyRoutine (
+ PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine
+ );
+#line 11287 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+typedef struct _IMAGE_INFO {
+ union {
+ ULONG Properties;
+ struct {
+ ULONG ImageAddressingMode : 8;
+ ULONG SystemModeImage : 1;
+ ULONG ImageMappedToAllPids : 1;
+ ULONG ExtendedInfoPresent : 1;
+ ULONG MachineTypeMismatch : 1;
+ ULONG ImageSignatureLevel : 4;
+ ULONG ImageSignatureType : 3;
+ ULONG ImagePartialMap : 1;
+ ULONG Reserved : 12;
+ };
+ };
+ PVOID ImageBase;
+ ULONG ImageSelector;
+ SIZE_T ImageSize;
+ ULONG ImageSectionNumber;
+} IMAGE_INFO, *PIMAGE_INFO;
+
+typedef struct _IMAGE_INFO_EX {
+ SIZE_T Size;
+ IMAGE_INFO ImageInfo;
+ struct _FILE_OBJECT *FileObject;
+} IMAGE_INFO_EX, *PIMAGE_INFO_EX;
+
+typedef
+void
+(*PLOAD_IMAGE_NOTIFY_ROUTINE)(
+ PUNICODE_STRING FullImageName,
+ HANDLE ProcessId,
+ PIMAGE_INFO ImageInfo
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PsSetLoadImageNotifyRoutine(
+ PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine
+ );
+#line 11337 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PsSetLoadImageNotifyRoutineEx(
+ PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine,
+ ULONG_PTR Flags
+ );
+
+#line 11351 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PsRemoveLoadImageNotifyRoutine(
+ PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine
+ );
+#line 11360 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+HANDLE
+PsGetCurrentProcessId(
+ void
+ );
+#line 11369 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+HANDLE
+PsGetCurrentThreadId(
+ void
+ );
+#line 11378 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+PsSetCurrentThreadPrefetching (
+ BOOLEAN Prefetching
+ );
+
+
+__declspec(dllimport)
+BOOLEAN
+PsIsCurrentThreadPrefetching (
+ void
+ );
+#line 11399 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+LONGLONG
+PsGetProcessCreateTimeQuadPart(
+ PEPROCESS Process
+ );
+#line 11409 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+ULONGLONG
+PsGetProcessStartKey(
+ PEPROCESS Process
+ );
+#line 11418 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PsGetProcessExitStatus(
+ PEPROCESS Process
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+PsGetThreadExitStatus(
+ PETHREAD Thread
+ );
+
+
+
+
+__declspec(dllimport)
+HANDLE
+PsGetProcessId(
+ PEPROCESS Process
+ );
+
+
+
+__declspec(dllimport)
+HANDLE
+PsGetThreadId(
+ PETHREAD Thread
+ );
+#line 11451 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+PVOID
+PsGetThreadProperty(
+ PETHREAD Thread,
+ ULONG_PTR Key,
+ ULONG Flags
+ );
+
+
+
+__declspec(dllimport)
+HANDLE
+PsGetThreadProcessId(
+ PETHREAD Thread
+ );
+#line 11469 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+LONGLONG
+PsGetThreadCreateTime(
+ PETHREAD Thread
+ );
+#line 11477 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+PsGetCurrentThreadTeb(
+ void
+ );
+
+#line 11489 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+typedef
+void
+(__stdcall *SILO_CONTEXT_CLEANUP_CALLBACK)(
+ PVOID SiloContext
+ );
+
+typedef
+NTSTATUS
+(__stdcall *SILO_MONITOR_CREATE_CALLBACK)(
+ PESILO Silo
+ );
+
+typedef
+void
+(__stdcall *SILO_MONITOR_TERMINATE_CALLBACK)(
+ PESILO Silo
+ );
+
+
+
+typedef struct _SILO_MONITOR_REGISTRATION {
+ UCHAR Version;
+ BOOLEAN MonitorHost;
+ BOOLEAN MonitorExistingSilos;
+ UCHAR Reserved[5];
+ union {
+ PUNICODE_STRING DriverObjectName;
+ PUNICODE_STRING ComponentName;
+ };
+ SILO_MONITOR_CREATE_CALLBACK CreateCallback;
+ SILO_MONITOR_TERMINATE_CALLBACK TerminateCallback;
+} SILO_MONITOR_REGISTRATION, *PSILO_MONITOR_REGISTRATION;
+
+__declspec(dllimport)
+NTSTATUS
+PsGetJobSilo(
+ PEJOB Job,
+ PESILO *Silo
+ );
+
+__declspec(dllimport)
+NTSTATUS
+PsGetJobServerSilo(
+ PEJOB Job,
+ PESILO *ServerSilo
+ );
+
+__declspec(dllimport)
+PESILO
+PsGetEffectiveServerSilo(
+ PESILO Silo
+ );
+
+
+__declspec(dllimport)
+PESILO
+PsAttachSiloToCurrentThread(
+ PESILO Silo
+ );
+
+
+__declspec(dllimport)
+void
+PsDetachSiloFromCurrentThread(
+ PESILO PreviousSilo
+ );
+
+__declspec(dllimport)
+BOOLEAN
+PsIsHostSilo(
+ PESILO Silo
+ );
+
+__declspec(dllimport)
+PESILO
+PsGetHostSilo(
+ void
+ );
+
+
+__declspec(dllimport)
+PESILO
+PsGetCurrentSilo(
+ void
+ );
+
+__declspec(dllimport)
+PESILO
+PsGetCurrentServerSilo(
+ void
+ );
+
+
+__declspec(dllimport)
+PUNICODE_STRING
+PsGetCurrentServerSiloName(
+ void
+ );
+
+
+__declspec(dllimport)
+BOOLEAN
+PsIsCurrentThreadInServerSilo(
+ void
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+PsAcquireSiloHardReference(
+ PESILO Silo
+ );
+
+
+__declspec(dllimport)
+void
+PsReleaseSiloHardReference(
+ PESILO Silo
+ );
+
+
+
+__declspec(dllimport)
+
+NTSTATUS
+PsAllocSiloContextSlot(
+ ULONG_PTR Reserved,
+ ULONG *ReturnedContextSlot
+ );
+
+__declspec(dllimport)
+
+NTSTATUS
+PsFreeSiloContextSlot(
+ ULONG ContextSlot
+ );
+
+__declspec(dllimport)
+
+NTSTATUS
+PsCreateSiloContext(
+ PESILO Silo,
+ ULONG Size,
+ POOL_TYPE PoolType,
+ SILO_CONTEXT_CLEANUP_CALLBACK ContextCleanupCallback,
+ PVOID *ReturnedSiloContext
+ );
+
+__declspec(dllimport)
+
+NTSTATUS
+PsInsertSiloContext(
+ PESILO Silo,
+ ULONG ContextSlot,
+ PVOID SiloContext
+ );
+
+__declspec(dllimport)
+
+NTSTATUS
+PsReplaceSiloContext(
+ PESILO Silo,
+ ULONG ContextSlot,
+ PVOID NewSiloContext,
+ PVOID *OldSiloContext
+ );
+
+__declspec(dllimport)
+
+NTSTATUS
+PsGetSiloContext(
+ PESILO Silo,
+ ULONG ContextSlot,
+ PVOID *ReturnedSiloContext
+ );
+
+__declspec(dllimport)
+
+NTSTATUS
+PsRemoveSiloContext(
+ PESILO Silo,
+ ULONG ContextSlot,
+ PVOID *RemovedSiloContext
+ );
+
+
+__declspec(dllimport)
+void
+PsReferenceSiloContext(
+ PVOID SiloContext
+ );
+
+
+__declspec(dllimport)
+void
+PsDereferenceSiloContext(
+ PVOID SiloContext
+ );
+
+__declspec(dllimport)
+
+NTSTATUS
+PsInsertPermanentSiloContext(
+ PESILO Silo,
+ ULONG ContextSlot,
+ PVOID SiloContext
+ );
+
+__declspec(dllimport)
+
+NTSTATUS
+PsMakeSiloContextPermanent(
+ PESILO Silo,
+ ULONG ContextSlot
+ );
+
+
+__declspec(dllimport)
+
+NTSTATUS
+PsGetPermanentSiloContext(
+ PESILO Silo,
+ ULONG ContextSlot,
+ PVOID *ReturnedSiloContext
+ );
+
+__declspec(dllimport)
+
+NTSTATUS
+PsRegisterSiloMonitor(
+ PSILO_MONITOR_REGISTRATION Registration,
+ PSILO_MONITOR *ReturnedMonitor
+ );
+
+__declspec(dllimport)
+
+NTSTATUS
+PsStartSiloMonitor(
+ PSILO_MONITOR Monitor
+ );
+
+__declspec(dllimport)
+ULONG
+PsGetSiloMonitorContextSlot(
+ PSILO_MONITOR Monitor
+ );
+
+__declspec(dllimport)
+void
+PsUnregisterSiloMonitor(
+ PSILO_MONITOR Monitor
+ );
+
+__declspec(dllimport)
+ULONG
+PsGetServerSiloServiceSessionId(
+ PESILO Silo
+ );
+
+__declspec(dllimport)
+ULONG
+PsGetServerSiloActiveConsoleId(
+ PESILO Silo
+ );
+
+__declspec(dllimport)
+void
+PsTerminateServerSilo(
+ PESILO ServerSilo,
+ NTSTATUS ExitStatus
+ );
+
+#line 11770 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+PESILO
+PsGetParentSilo(
+ PEJOB Job
+ );
+
+#line 11779 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+PESILO
+PsGetThreadServerSilo(
+ PETHREAD Thread
+ );
+
+__declspec(dllimport)
+GUID*
+PsGetSiloContainerId(
+ PESILO Silo
+ );
+
+#line 11796 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+typedef struct _KAFFINITY_EX *PKAFFINITY_EX;
+
+
+
+
+NTSTATUS
+PsQueryProcessAvailableCpus (
+ PEPROCESS Process,
+ PKAFFINITY_EX Affinity,
+ PULONG64 ObservedSequenceNumber,
+ PULONG64 SequenceNumber
+ );
+
+
+
+
+NTSTATUS
+PsQueryProcessAvailableCpusCount (
+ PEPROCESS Process,
+ PULONG AvailableCpuCount,
+ PULONG64 SequenceNumber
+ );
+
+
+
+
+NTSTATUS
+PsQuerySystemAvailableCpus (
+ PKAFFINITY_EX Affinity,
+ PULONG64 ObservedSequenceNumber,
+ PULONG64 SequenceNumber
+ );
+
+
+
+
+NTSTATUS
+PsQuerySystemAvailableCpusCount (
+ PULONG AvailableCpuCount,
+ PULONG64 SequenceNumber
+ );
+
+typedef
+
+void
+PS_AVAILABLE_CPUS_CHANGE_CALLBACK (
+ PVOID Parameter
+ );
+
+typedef PVOID PS_AVAILABLE_CPUS_CHANGE_REGISTRATION;
+
+
+
+NTSTATUS
+PsRegisterProcessAvailableCpusChangeNotification (
+ PEPROCESS Process,
+ PS_AVAILABLE_CPUS_CHANGE_CALLBACK* Callback,
+ PVOID Context,
+ PULONG64 ObservedSequenceNumber,
+ PS_AVAILABLE_CPUS_CHANGE_REGISTRATION* RegistrationHandle
+ );
+
+
+
+NTSTATUS
+PsRegisterSystemAvailableCpusChangeNotification (
+ PS_AVAILABLE_CPUS_CHANGE_CALLBACK* Callback,
+ PVOID Context,
+ PULONG64 ObservedSequenceNumber,
+ PS_AVAILABLE_CPUS_CHANGE_REGISTRATION* RegistrationHandle
+ );
+
+
+
+void
+PsUnregisterAvailableCpusChangeNotification (
+ PS_AVAILABLE_CPUS_CHANGE_REGISTRATION RegistrationHandle
+ );
+
+#line 11879 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 11934 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+#line 11937 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef NTSTATUS (*PIO_QUERY_DEVICE_ROUTINE)(
+ PVOID Context,
+ PUNICODE_STRING PathName,
+ INTERFACE_TYPE BusType,
+ ULONG BusNumber,
+ PKEY_VALUE_FULL_INFORMATION *BusInformation,
+ CONFIGURATION_TYPE ControllerType,
+ ULONG ControllerNumber,
+ PKEY_VALUE_FULL_INFORMATION *ControllerInformation,
+ CONFIGURATION_TYPE PeripheralType,
+ ULONG PeripheralNumber,
+ PKEY_VALUE_FULL_INFORMATION *PeripheralInformation
+ );
+
+
+
+
+
+
+typedef enum _IO_QUERY_DEVICE_DATA_FORMAT {
+ IoQueryDeviceIdentifier = 0,
+ IoQueryDeviceConfigurationData,
+ IoQueryDeviceComponentInformation,
+ IoQueryDeviceMaxData
+} IO_QUERY_DEVICE_DATA_FORMAT, *PIO_QUERY_DEVICE_DATA_FORMAT;
+
+
+
+
+
+typedef
+void
+DRIVER_REINITIALIZE (
+ struct _DRIVER_OBJECT *DriverObject,
+ PVOID Context,
+ ULONG Count
+ );
+
+typedef DRIVER_REINITIALIZE *PDRIVER_REINITIALIZE;
+
+
+typedef struct _CONTROLLER_OBJECT {
+ CSHORT Type;
+ CSHORT Size;
+ PVOID ControllerExtension;
+ KDEVICE_QUEUE DeviceWaitQueue;
+
+ ULONG Spare1;
+ LARGE_INTEGER Spare2;
+
+} CONTROLLER_OBJECT, *PCONTROLLER_OBJECT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _CONFIGURATION_INFORMATION {
+
+
+
+
+
+
+
+
+ ULONG DiskCount;
+ ULONG FloppyCount;
+ ULONG CdRomCount;
+ ULONG TapeCount;
+ ULONG ScsiPortCount;
+ ULONG SerialCount;
+ ULONG ParallelCount;
+
+
+
+
+
+
+ BOOLEAN AtDiskPrimaryAddressClaimed;
+ BOOLEAN AtDiskSecondaryAddressClaimed;
+
+
+
+
+
+
+ ULONG Version;
+
+
+
+
+
+
+
+ ULONG MediumChangerCount;
+
+} CONFIGURATION_INFORMATION, *PCONFIGURATION_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 12127 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+void
+IoAllocateController(
+ PCONTROLLER_OBJECT ControllerObject,
+ PDEVICE_OBJECT DeviceObject,
+ PDRIVER_CONTROL ExecutionRoutine,
+ PVOID Context
+ );
+#line 12140 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoAssignResources (
+ PUNICODE_STRING RegistryPath,
+ PUNICODE_STRING DriverClassName,
+ PDRIVER_OBJECT DriverObject,
+ PDEVICE_OBJECT DeviceObject,
+ PIO_RESOURCE_REQUIREMENTS_LIST RequestedResources,
+ PCM_RESOURCE_LIST *AllocatedResources
+ );
+#line 12186 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoAttachDeviceByPointer(
+ PDEVICE_OBJECT SourceDevice,
+ PDEVICE_OBJECT TargetDevice
+ );
+#line 12198 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+PCONTROLLER_OBJECT
+IoCreateController(
+ ULONG Size
+ );
+#line 12208 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+IoDeleteController(
+ PCONTROLLER_OBJECT ControllerObject
+ );
+#line 12245 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+IoFreeController(
+ PCONTROLLER_OBJECT ControllerObject
+ );
+#line 12256 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+PCONFIGURATION_INFORMATION
+IoGetConfigurationInformation( void );
+#line 12263 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+PGENERIC_MAPPING
+IoGetFileObjectGenericMapping(
+ void
+ );
+#line 12272 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+void
+IoCancelFileOpen(
+ PDEVICE_OBJECT DeviceObject,
+ PFILE_OBJECT FileObject
+ );
+#line 12282 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+PIRP
+IoMakeAssociatedIrp(
+ PIRP Irp,
+ CCHAR StackSize
+ );
+#line 12293 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+PIRP
+IoMakeAssociatedIrpEx(
+ PIRP Irp,
+ PDEVICE_OBJECT DeviceObject,
+ CCHAR StackSize
+ );
+#line 12304 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoQueryDeviceDescription(
+ PINTERFACE_TYPE BusType,
+ PULONG BusNumber,
+ PCONFIGURATION_TYPE ControllerType,
+ PULONG ControllerNumber,
+ PCONFIGURATION_TYPE PeripheralType,
+ PULONG PeripheralNumber,
+ PIO_QUERY_DEVICE_ROUTINE CalloutRoutine,
+ PVOID Context
+ );
+#line 12321 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+void
+IoRaiseHardError(
+ PIRP Irp,
+ PVPB Vpb,
+ PDEVICE_OBJECT RealDeviceObject
+ );
+#line 12333 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+IoRaiseInformationalHardError(
+ NTSTATUS ErrorStatus,
+ PUNICODE_STRING String,
+ PKTHREAD Thread
+ );
+#line 12344 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+IoSetThreadHardErrorMode(
+ BOOLEAN EnableHardErrors
+ );
+#line 12353 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+void
+IoRegisterBootDriverReinitialization(
+ PDRIVER_OBJECT DriverObject,
+ PDRIVER_REINITIALIZE DriverReinitializationRoutine,
+ PVOID Context
+ );
+#line 12364 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+void
+IoRegisterDriverReinitialization(
+ PDRIVER_OBJECT DriverObject,
+ PDRIVER_REINITIALIZE DriverReinitializationRoutine,
+ PVOID Context
+ );
+#line 12375 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoReportResourceUsage(
+ PUNICODE_STRING DriverClassName,
+ PDRIVER_OBJECT DriverObject,
+ PCM_RESOURCE_LIST DriverList,
+ ULONG DriverListSize,
+ PDEVICE_OBJECT DeviceObject,
+ PCM_RESOURCE_LIST DeviceList,
+ ULONG DeviceListSize,
+ BOOLEAN OverrideConflict,
+ PBOOLEAN ConflictDetected
+ );
+#line 12394 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+BOOLEAN
+IoTranslateBusAddress(
+ INTERFACE_TYPE InterfaceType,
+ ULONG BusNumber,
+ PHYSICAL_ADDRESS BusAddress,
+ PULONG AddressSpace,
+ PPHYSICAL_ADDRESS TranslatedAddress
+ );
+#line 12406 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+void
+IoSetHardErrorOrVerifyDevice(
+ PIRP Irp,
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 12417 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+void
+
+HalExamineMBR(
+ PDEVICE_OBJECT DeviceObject,
+ ULONG SectorSize,
+ ULONG MBRTypeIdentifier,
+ PVOID *Buffer
+ );
+#line 12430 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+
+IoReadPartitionTable(
+ PDEVICE_OBJECT DeviceObject,
+ ULONG SectorSize,
+ BOOLEAN ReturnRecognizedPartitions,
+ struct _DRIVE_LAYOUT_INFORMATION **PartitionBuffer
+ );
+#line 12445 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+
+IoSetPartitionInformation(
+ PDEVICE_OBJECT DeviceObject,
+ ULONG SectorSize,
+ ULONG PartitionNumber,
+ ULONG PartitionType
+ );
+#line 12460 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+
+IoWritePartitionTable(
+ PDEVICE_OBJECT DeviceObject,
+ ULONG SectorSize,
+ ULONG SectorsPerTrack,
+ ULONG NumberOfHeads,
+ struct _DRIVE_LAYOUT_INFORMATION *PartitionBuffer
+ );
+#line 12477 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoCreateDisk(
+ PDEVICE_OBJECT DeviceObject,
+ struct _CREATE_DISK* Disk
+ );
+#line 12486 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoReadPartitionTableEx(
+ PDEVICE_OBJECT DeviceObject,
+ struct _DRIVE_LAYOUT_INFORMATION_EX** DriveLayout
+ );
+#line 12496 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoWritePartitionTableEx(
+ PDEVICE_OBJECT DeviceObject,
+ struct _DRIVE_LAYOUT_INFORMATION_EX* DriveLayout
+ );
+#line 12506 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoSetPartitionInformationEx(
+ PDEVICE_OBJECT DeviceObject,
+ ULONG PartitionNumber,
+ struct _SET_PARTITION_INFORMATION_EX* PartitionInfo
+ );
+#line 12517 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoVerifyPartitionTable(
+ PDEVICE_OBJECT DeviceObject,
+ BOOLEAN FixErrors
+ );
+#line 12526 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+typedef struct _DISK_SIGNATURE {
+ ULONG PartitionStyle;
+ union {
+ struct {
+ ULONG Signature;
+ ULONG CheckSum;
+ } Mbr;
+
+ struct {
+ GUID DiskId;
+ } Gpt;
+ };
+} DISK_SIGNATURE, *PDISK_SIGNATURE;
+
+
+__declspec(dllimport)
+NTSTATUS
+IoReadDiskSignature(
+ PDEVICE_OBJECT DeviceObject,
+ ULONG BytesPerSector,
+ PDISK_SIGNATURE Signature
+ );
+#line 12550 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoVolumeDeviceToDosName(
+ PVOID VolumeDeviceObject,
+
+#line 12560 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+ PUNICODE_STRING DosName
+ );
+#line 12563 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoVolumeDeviceToGuidPath(
+ PVOID VolumeDeviceObject,
+
+#line 12573 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+ PUNICODE_STRING GuidPath
+ );
+#line 12576 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoVolumeDeviceToGuid(
+ PVOID VolumeDeviceObject,
+ GUID *Guid
+ );
+#line 12585 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoVolumeDeviceNameToGuid(
+ PUNICODE_STRING VolumeDeviceName,
+ GUID *Guid
+ );
+#line 12594 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoVolumeDeviceNameToGuidPath(
+ PUNICODE_STRING VolumeDeviceName,
+
+#line 12604 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+ PUNICODE_STRING GuidPath
+ );
+#line 12607 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoSetSystemPartition(
+ PUNICODE_STRING VolumeNameString
+ );
+#line 12616 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoCreateFileSpecifyDeviceObjectHint(
+ PHANDLE FileHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PLARGE_INTEGER AllocationSize,
+ ULONG FileAttributes,
+ ULONG ShareAccess,
+ ULONG Disposition,
+ ULONG CreateOptions,
+ PVOID EaBuffer,
+ ULONG EaLength,
+ CREATE_FILE_TYPE CreateFileType,
+ PVOID InternalParameters,
+ ULONG Options,
+ PVOID DeviceObject
+ );
+#line 12639 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+typedef struct _IO_FOEXT_SILO_PARAMETERS {
+
+ ULONG Length;
+ union {
+ struct {
+ ULONG HasHardReference : 1;
+ ULONG SpareFlags : 31;
+ };
+ ULONG Flags;
+ };
+ PESILO SiloContext;
+
+} IO_FOEXT_SILO_PARAMETERS, *PIO_FOEXT_SILO_PARAMETERS;
+
+PIO_FOEXT_SILO_PARAMETERS
+IoGetSiloParameters (
+ PFILE_OBJECT FileObject
+ );
+
+
+PESILO
+IoGetSilo (
+ PFILE_OBJECT FileObject
+ );
+#line 12666 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+typedef struct _TXN_PARAMETER_BLOCK {
+
+ USHORT Length;
+ USHORT TxFsContext;
+ PVOID TransactionObject;
+
+} TXN_PARAMETER_BLOCK, *PTXN_PARAMETER_BLOCK;
+
+
+
+
+
+
+
+
+
+PTXN_PARAMETER_BLOCK
+IoGetTransactionParameterBlock (
+ PFILE_OBJECT FileObject
+ );
+#line 12688 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+typedef struct _CREATE_USER_PROCESS_ECP_CONTEXT {
+
+
+
+
+ USHORT Size;
+
+
+
+
+
+ USHORT Reserved;
+
+
+
+
+
+ PACCESS_TOKEN AccessToken;
+
+} CREATE_USER_PROCESS_ECP_CONTEXT, *PCREATE_USER_PROCESS_ECP_CONTEXT;
+
+
+extern const GUID GUID_ECP_CREATE_USER_PROCESS;
+
+#line 12721 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+typedef struct _OPLOCK_KEY_ECP_CONTEXT *POPLOCK_KEY_ECP_CONTEXT;
+
+POPLOCK_KEY_ECP_CONTEXT
+IoGetOplockKeyContext (
+ PFILE_OBJECT FileObject
+ );
+#line 12730 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+typedef struct _OPLOCK_KEY_CONTEXT {
+
+ USHORT Version;
+ USHORT Flags;
+
+ GUID ParentOplockKey;
+
+ GUID TargetOplockKey;
+
+ ULONG Reserved;
+
+} OPLOCK_KEY_CONTEXT, *POPLOCK_KEY_CONTEXT;
+
+
+
+
+
+
+
+POPLOCK_KEY_CONTEXT
+IoGetOplockKeyContextEx (
+ PFILE_OBJECT FileObject
+ );
+#line 12761 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+typedef struct _IO_DRIVER_CREATE_CONTEXT {
+ CSHORT Size;
+ struct _ECP_LIST *ExtraCreateParameter;
+ PVOID DeviceObjectHint;
+ PTXN_PARAMETER_BLOCK TxnParameters;
+
+ PESILO SiloContext;
+#line 12770 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+} IO_DRIVER_CREATE_CONTEXT, *PIO_DRIVER_CREATE_CONTEXT;
+
+
+
+
+
+
+
+
+
+#line 12781 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+typedef struct _IO_FOEXT_SHADOW_FILE {
+
+
+ PFILE_OBJECT BackingFileObject;
+
+
+ PVOID BackingFltInstance;
+
+} IO_FOEXT_SHADOW_FILE, * PIO_FOEXT_SHADOW_FILE;
+
+PIO_FOEXT_SHADOW_FILE
+IoGetShadowFileInformation(
+ PFILE_OBJECT FileObject
+ );
+
+NTSTATUS
+IoSetShadowFileInformation(
+ PFILE_OBJECT FileObject,
+ PFILE_OBJECT BackingFileObject,
+ PVOID BackingFltInstance
+ );
+#line 12805 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+void
+__forceinline
+IoInitializeDriverCreateContext(
+ PIO_DRIVER_CREATE_CONTEXT DriverContext
+ )
+{
+
+ memset((DriverContext),0,(sizeof(IO_DRIVER_CREATE_CONTEXT)));
+ DriverContext->Size = sizeof(IO_DRIVER_CREATE_CONTEXT);
+
+ DriverContext->SiloContext = ((PESILO)1);
+#line 12818 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+}
+
+
+__declspec(dllimport)
+NTSTATUS
+IoCreateFileEx(
+ PHANDLE FileHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PLARGE_INTEGER AllocationSize,
+ ULONG FileAttributes,
+ ULONG ShareAccess,
+ ULONG Disposition,
+ ULONG CreateOptions,
+ PVOID EaBuffer,
+ ULONG EaLength,
+ CREATE_FILE_TYPE CreateFileType,
+ PVOID InternalParameters,
+ ULONG Options,
+ PIO_DRIVER_CREATE_CONTEXT DriverContext
+ );
+
+NTSTATUS
+IoSetIrpExtraCreateParameter(
+ PIRP Irp,
+ struct _ECP_LIST *ExtraCreateParameter
+ );
+
+void
+IoClearIrpExtraCreateParameter(
+ PIRP Irp
+ );
+
+NTSTATUS
+IoGetIrpExtraCreateParameter(
+ PIRP Irp,
+ struct _ECP_LIST **ExtraCreateParameter
+ );
+#line 12858 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoQueryInformationByName (
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID FileInformation,
+ ULONG Length,
+ FILE_INFORMATION_CLASS FileInformationClass,
+ ULONG Options,
+ PIO_DRIVER_CREATE_CONTEXT DriverContext
+ );
+#line 12872 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoAttachDeviceToDeviceStackSafe(
+ PDEVICE_OBJECT SourceDevice,
+ PDEVICE_OBJECT TargetDevice,
+ PDEVICE_OBJECT *AttachedToDeviceObject
+ );
+#line 12882 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+IoIsFileOriginRemote(
+ PFILE_OBJECT FileObject
+ );
+#line 12892 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoSetFileOrigin(
+ PFILE_OBJECT FileObject,
+ BOOLEAN Remote
+ );
+#line 12901 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+BOOLEAN
+IoIsFileObjectIgnoringSharing (
+ PFILE_OBJECT FileObject
+);
+#line 12908 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+NTSTATUS
+IoSetFileObjectIgnoreSharing (
+ PFILE_OBJECT FileObject
+);
+#line 12915 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+IO_PAGING_PRIORITY
+
+IoGetPagingIoPriority(
+ PIRP Irp
+ );
+#line 12925 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+typedef enum _BDCB_CALLBACK_TYPE {
+ BdCbStatusUpdate,
+ BdCbInitializeImage,
+} BDCB_CALLBACK_TYPE, *PBDCB_CALLBACK_TYPE;
+
+typedef enum _BDCB_CLASSIFICATION {
+ BdCbClassificationUnknownImage,
+ BdCbClassificationKnownGoodImage,
+ BdCbClassificationKnownBadImage,
+ BdCbClassificationKnownBadImageBootCritical,
+ BdCbClassificationEnd,
+} BDCB_CLASSIFICATION, *PBDCB_CLASSIFICATION;
+
+typedef enum _BDCB_STATUS_UPDATE_TYPE {
+ BdCbStatusPrepareForDependencyLoad,
+ BdCbStatusPrepareForDriverLoad,
+ BdCbStatusPrepareForUnload,
+} BDCB_STATUS_UPDATE_TYPE, *PBDCB_STATUS_UPDATE_TYPE;
+
+typedef struct _BDCB_STATUS_UPDATE_CONTEXT {
+ BDCB_STATUS_UPDATE_TYPE StatusType;
+} BDCB_STATUS_UPDATE_CONTEXT, *PBDCB_STATUS_UPDATE_CONTEXT;
+
+typedef struct _BDCB_IMAGE_INFORMATION {
+ BDCB_CLASSIFICATION Classification;
+ ULONG ImageFlags;
+ UNICODE_STRING ImageName;
+ UNICODE_STRING RegistryPath;
+ UNICODE_STRING CertificatePublisher;
+ UNICODE_STRING CertificateIssuer;
+ PVOID ImageHash;
+ PVOID CertificateThumbprint;
+ ULONG ImageHashAlgorithm;
+ ULONG ThumbprintHashAlgorithm;
+ ULONG ImageHashLength;
+ ULONG CertificateThumbprintLength;
+} BDCB_IMAGE_INFORMATION, *PBDCB_IMAGE_INFORMATION;
+
+typedef
+void
+BOOT_DRIVER_CALLBACK_FUNCTION (
+ PVOID CallbackContext,
+ BDCB_CALLBACK_TYPE Classification,
+ PBDCB_IMAGE_INFORMATION ImageInformation
+ );
+
+typedef BOOT_DRIVER_CALLBACK_FUNCTION *PBOOT_DRIVER_CALLBACK_FUNCTION;
+#line 12983 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+PVOID
+IoRegisterBootDriverCallback (
+ PBOOT_DRIVER_CALLBACK_FUNCTION CallbackFunction,
+ PVOID CallbackContext
+ );
+#line 12991 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+void
+IoUnregisterBootDriverCallback (
+ PVOID CallbackHandle
+ );
+#line 12998 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+NTSTATUS
+IoGetActivityIdIrp (
+ PIRP Irp,
+ LPGUID Guid
+ );
+#line 13006 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+NTSTATUS
+IoSetActivityIdIrp (
+ PIRP Irp,
+ LPCGUID Guid
+ );
+#line 13014 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+NTSTATUS
+IoPropagateActivityIdToThread(
+ PIRP Irp,
+ LPGUID PropagatedId,
+ LPCGUID *OriginalId
+ );
+#line 13023 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+LPCGUID
+IoSetActivityIdThread (
+ LPCGUID ActivityId
+ );
+#line 13030 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+void
+IoClearActivityIdThread (
+ LPCGUID OriginalId
+ );
+#line 13037 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+LPCGUID
+IoGetActivityIdThread (
+ void
+ );
+#line 13044 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+void
+IoTransferActivityId (
+ LPCGUID ActivityId,
+ LPCGUID RelatedActivityId
+ );
+#line 13052 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+NTSTATUS
+IoGetFsZeroingOffset (
+ PIRP Irp,
+ PULONG ZeroingOffset
+ );
+
+NTSTATUS
+IoSetFsZeroingOffsetRequired (
+ PIRP Irp
+ );
+
+NTSTATUS
+IoSetFsZeroingOffset (
+ PIRP Irp,
+ ULONG ZeroingOffset
+ );
+
+#line 13074 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+LOGICAL
+IoIsValidIrpStatus (
+ NTSTATUS Status
+ );
+#line 13084 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoIncrementKeepAliveCount(
+ PFILE_OBJECT FileObject,
+ PEPROCESS Process
+ );
+#line 13093 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoDecrementKeepAliveCount(
+ PFILE_OBJECT FileObject,
+ PEPROCESS Process
+ );
+#line 13102 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+PEPROCESS
+IoGetInitiatorProcess(
+ PFILE_OBJECT FileObject
+ );
+#line 13111 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+void
+IoSetMasterIrpStatus(
+ PIRP MasterIrp,
+ NTSTATUS Status
+ );
+#line 13120 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoQueryFullDriverPath(
+ PDRIVER_OBJECT DriverObject,
+ PUNICODE_STRING FullPath
+ );
+#line 13129 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+typedef struct _AGP_TARGET_BUS_INTERFACE_STANDARD {
+
+
+
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+
+
+
+ PGET_SET_DEVICE_DATA SetBusData;
+ PGET_SET_DEVICE_DATA GetBusData;
+ UCHAR CapabilityID;
+
+} AGP_TARGET_BUS_INTERFACE_STANDARD, *PAGP_TARGET_BUS_INTERFACE_STANDARD;
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoReportDetectedDevice(
+ PDRIVER_OBJECT DriverObject,
+ INTERFACE_TYPE LegacyBusType,
+ ULONG BusNumber,
+ ULONG SlotNumber,
+ PCM_RESOURCE_LIST ResourceList,
+ PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirements,
+ BOOLEAN ResourceAssigned,
+ PDEVICE_OBJECT *DeviceObject
+ );
+#line 13166 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoReportRootDevice(
+ PDRIVER_OBJECT DriverObject
+ );
+#line 13176 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+typedef
+
+
+NTSTATUS
+(*PGET_LOCATION_STRING) (
+ PVOID Context,
+
+
+#line 13189 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+ PZZWSTR *LocationStrings
+ );
+
+typedef struct _PNP_LOCATION_INTERFACE {
+
+
+
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+
+
+
+ PGET_LOCATION_STRING GetLocationString;
+
+} PNP_LOCATION_INTERFACE, *PPNP_LOCATION_INTERFACE;
+
+
+
+
+
+typedef enum _ARBITER_ACTION {
+ ArbiterActionTestAllocation,
+ ArbiterActionRetestAllocation,
+ ArbiterActionCommitAllocation,
+ ArbiterActionRollbackAllocation,
+ ArbiterActionQueryAllocatedResources,
+ ArbiterActionWriteReservedResources,
+ ArbiterActionQueryConflict,
+ ArbiterActionQueryArbitrate,
+ ArbiterActionAddReserved,
+ ArbiterActionBootAllocation
+} ARBITER_ACTION, *PARBITER_ACTION;
+
+typedef struct _ARBITER_CONFLICT_INFO {
+
+
+
+ PDEVICE_OBJECT OwningObject;
+
+
+
+
+ ULONGLONG Start;
+
+
+
+
+ ULONGLONG End;
+
+} ARBITER_CONFLICT_INFO, *PARBITER_CONFLICT_INFO;
+
+
+
+
+
+typedef struct _ARBITER_TEST_ALLOCATION_PARAMETERS {
+
+
+
+
+ PLIST_ENTRY ArbitrationList;
+
+
+
+
+ ULONG AllocateFromCount;
+
+
+
+
+
+ PCM_PARTIAL_RESOURCE_DESCRIPTOR AllocateFrom;
+
+} ARBITER_TEST_ALLOCATION_PARAMETERS, *PARBITER_TEST_ALLOCATION_PARAMETERS;
+
+
+typedef struct _ARBITER_RETEST_ALLOCATION_PARAMETERS {
+
+
+
+
+ PLIST_ENTRY ArbitrationList;
+
+
+
+
+ ULONG AllocateFromCount;
+
+
+
+
+
+ PCM_PARTIAL_RESOURCE_DESCRIPTOR AllocateFrom;
+
+} ARBITER_RETEST_ALLOCATION_PARAMETERS, *PARBITER_RETEST_ALLOCATION_PARAMETERS;
+
+typedef struct _ARBITER_BOOT_ALLOCATION_PARAMETERS {
+
+
+
+
+ PLIST_ENTRY ArbitrationList;
+
+} ARBITER_BOOT_ALLOCATION_PARAMETERS, *PARBITER_BOOT_ALLOCATION_PARAMETERS;
+
+
+typedef struct _ARBITER_QUERY_ALLOCATED_RESOURCES_PARAMETERS {
+
+
+
+
+ PCM_PARTIAL_RESOURCE_LIST *AllocatedResources;
+
+} ARBITER_QUERY_ALLOCATED_RESOURCES_PARAMETERS, *PARBITER_QUERY_ALLOCATED_RESOURCES_PARAMETERS;
+
+typedef struct _ARBITER_QUERY_CONFLICT_PARAMETERS {
+
+
+
+
+ PDEVICE_OBJECT PhysicalDeviceObject;
+
+
+
+
+ PIO_RESOURCE_DESCRIPTOR ConflictingResource;
+
+
+
+
+ PULONG ConflictCount;
+
+
+
+
+ PARBITER_CONFLICT_INFO *Conflicts;
+
+} ARBITER_QUERY_CONFLICT_PARAMETERS, *PARBITER_QUERY_CONFLICT_PARAMETERS;
+
+typedef struct _ARBITER_QUERY_ARBITRATE_PARAMETERS {
+
+
+
+
+
+ PLIST_ENTRY ArbitrationList;
+
+} ARBITER_QUERY_ARBITRATE_PARAMETERS, *PARBITER_QUERY_ARBITRATE_PARAMETERS;
+
+typedef struct _ARBITER_ADD_RESERVED_PARAMETERS {
+
+
+
+
+
+ PDEVICE_OBJECT ReserveDevice;
+
+} ARBITER_ADD_RESERVED_PARAMETERS, *PARBITER_ADD_RESERVED_PARAMETERS;
+
+
+typedef struct _ARBITER_PARAMETERS {
+
+ union {
+
+ ARBITER_TEST_ALLOCATION_PARAMETERS TestAllocation;
+ ARBITER_RETEST_ALLOCATION_PARAMETERS RetestAllocation;
+ ARBITER_BOOT_ALLOCATION_PARAMETERS BootAllocation;
+ ARBITER_QUERY_ALLOCATED_RESOURCES_PARAMETERS QueryAllocatedResources;
+ ARBITER_QUERY_CONFLICT_PARAMETERS QueryConflict;
+ ARBITER_QUERY_ARBITRATE_PARAMETERS QueryArbitrate;
+ ARBITER_ADD_RESERVED_PARAMETERS AddReserved;
+
+ } Parameters;
+
+} ARBITER_PARAMETERS, *PARBITER_PARAMETERS;
+
+typedef enum _ARBITER_REQUEST_SOURCE {
+
+ ArbiterRequestUndefined = -1,
+ ArbiterRequestLegacyReported,
+ ArbiterRequestHalReported,
+ ArbiterRequestLegacyAssigned,
+ ArbiterRequestPnpDetected,
+ ArbiterRequestPnpEnumerated
+
+} ARBITER_REQUEST_SOURCE;
+
+
+typedef enum _ARBITER_RESULT {
+
+ ArbiterResultUndefined = -1,
+ ArbiterResultSuccess,
+ ArbiterResultExternalConflict,
+ ArbiterResultNullRequest
+
+} ARBITER_RESULT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoReportResourceForDetection(
+ PDRIVER_OBJECT DriverObject,
+ PCM_RESOURCE_LIST DriverList,
+ ULONG DriverListSize,
+ PDEVICE_OBJECT DeviceObject,
+ PCM_RESOURCE_LIST DeviceList,
+ ULONG DeviceListSize,
+ PBOOLEAN ConflictDetected
+ );
+#line 13428 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+typedef struct _ARBITER_LIST_ENTRY {
+
+
+
+
+ LIST_ENTRY ListEntry;
+
+
+
+
+ ULONG AlternativeCount;
+
+
+
+
+
+ PIO_RESOURCE_DESCRIPTOR Alternatives;
+
+
+
+
+ PDEVICE_OBJECT PhysicalDeviceObject;
+
+
+
+
+ ARBITER_REQUEST_SOURCE RequestSource;
+
+
+
+
+ ULONG Flags;
+
+
+
+
+
+ LONG_PTR WorkSpace;
+
+
+
+
+
+ INTERFACE_TYPE InterfaceType;
+ ULONG SlotNumber;
+ ULONG BusNumber;
+
+
+
+
+
+
+ PCM_PARTIAL_RESOURCE_DESCRIPTOR Assignment;
+
+
+
+
+
+ PIO_RESOURCE_DESCRIPTOR SelectedAlternative;
+
+
+
+
+
+ ARBITER_RESULT Result;
+
+} ARBITER_LIST_ENTRY, *PARBITER_LIST_ENTRY;
+
+
+
+
+
+typedef
+NTSTATUS
+(*PARBITER_HANDLER) (
+ PVOID Context,
+ ARBITER_ACTION Action,
+ PARBITER_PARAMETERS Parameters
+ );
+
+
+
+
+
+
+
+
+typedef struct _ARBITER_INTERFACE {
+
+
+
+
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+
+
+
+ PARBITER_HANDLER ArbiterHandler;
+
+
+
+
+ ULONG Flags;
+
+} ARBITER_INTERFACE, *PARBITER_INTERFACE;
+
+
+
+
+
+typedef enum _RESOURCE_TRANSLATION_DIRECTION {
+ TranslateChildToParent,
+ TranslateParentToChild
+} RESOURCE_TRANSLATION_DIRECTION;
+
+
+
+
+
+typedef
+NTSTATUS
+(*PTRANSLATE_RESOURCE_HANDLER)(
+ PVOID Context,
+ PCM_PARTIAL_RESOURCE_DESCRIPTOR Source,
+ RESOURCE_TRANSLATION_DIRECTION Direction,
+ ULONG AlternativesCount,
+ IO_RESOURCE_DESCRIPTOR Alternatives[],
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ PCM_PARTIAL_RESOURCE_DESCRIPTOR Target
+);
+
+typedef
+NTSTATUS
+(*PTRANSLATE_RESOURCE_REQUIREMENTS_HANDLER)(
+ PVOID Context,
+ PIO_RESOURCE_DESCRIPTOR Source,
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ PULONG TargetCount,
+ PIO_RESOURCE_DESCRIPTOR *Target
+);
+
+
+
+
+
+typedef struct _TRANSLATOR_INTERFACE {
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+ PTRANSLATE_RESOURCE_HANDLER TranslateResources;
+ PTRANSLATE_RESOURCE_REQUIREMENTS_HANDLER TranslateResourceRequirements;
+} TRANSLATOR_INTERFACE, *PTRANSLATOR_INTERFACE;
+
+
+
+
+
+
+
+typedef
+BOOLEAN
+(*PHAL_RESET_DISPLAY_PARAMETERS) (
+ ULONG Columns,
+ ULONG Rows
+ );
+
+
+
+__declspec(dllimport)
+void
+HalAcquireDisplayOwnership (
+ PHAL_RESET_DISPLAY_PARAMETERS ResetDisplayParameters
+ );
+#line 13609 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+#line 13620 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+#line 13624 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+#line 13628 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 13685 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+#line 13692 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+__declspec(dllimport)
+ULONG
+HalSetBusDataByOffset (
+ BUS_DATA_TYPE BusDataType,
+ ULONG BusNumber,
+ ULONG SlotNumber,
+ PVOID Buffer,
+ ULONG Offset,
+ ULONG Length
+ );
+#line 13703 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+HalTranslateBusAddress (
+ INTERFACE_TYPE InterfaceType,
+ ULONG BusNumber,
+ PHYSICAL_ADDRESS BusAddress,
+ PULONG AddressSpace,
+ PPHYSICAL_ADDRESS TranslatedAddress
+ );
+#line 13717 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+HalAllocateCrashDumpRegisters (
+ PADAPTER_OBJECT AdapterObject,
+ PULONG NumberOfMapRegisters
+ );
+#line 13742 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+#line 13744 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+typedef enum _HAL_DMA_CRASH_DUMP_REGISTER_TYPE {
+ HalDmaCrashDumpRegisterSet1 = 0,
+ HalDmaCrashDumpRegisterSet2,
+ HalDmaCrashDumpRegisterSetMax
+} HAL_DMA_CRASH_DUMP_REGISTER_TYPE, *PHAL_DMA_CRASH_DUMP_REGISTER_TYPE;
+
+
+NTSTATUS
+HalDmaAllocateCrashDumpRegistersEx (
+ PADAPTER_OBJECT Adapter,
+ ULONG NumberOfMapRegisters,
+ HAL_DMA_CRASH_DUMP_REGISTER_TYPE Type,
+ PVOID *MapRegisterBase,
+ PULONG MapRegistersAvailable
+ );
+
+NTSTATUS
+HalDmaFreeCrashDumpRegistersEx (
+ PADAPTER_OBJECT Adapter,
+ HAL_DMA_CRASH_DUMP_REGISTER_TYPE Type
+ );
+#line 13771 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+BOOLEAN
+HalCvmDmaEnabled (
+ void
+ );
+
+#line 13780 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+#line 13782 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 13801 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+#line 13807 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+__declspec(dllimport)
+ULONG
+HalGetBusDataByOffset (
+ BUS_DATA_TYPE BusDataType,
+ ULONG BusNumber,
+ ULONG SlotNumber,
+ PVOID Buffer,
+ ULONG Offset,
+ ULONG Length
+ );
+#line 13818 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+__declspec(dllimport)
+PADAPTER_OBJECT
+HalGetAdapter (
+ PDEVICE_DESCRIPTION DeviceDescription,
+ PULONG NumberOfMapRegisters
+ );
+#line 13830 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 13844 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+typedef
+PBUS_HANDLER
+( *pHalHandlerForBus) (
+ INTERFACE_TYPE InterfaceType,
+ ULONG BusNumber
+ );
+typedef
+void
+( *pHalReferenceBusHandler) (
+ PBUS_HANDLER BusHandler
+ );
+
+
+
+
+
+typedef enum _HAL_QUERY_INFORMATION_CLASS {
+ HalInstalledBusInformation,
+ HalProfileSourceInformation,
+ HalInformationClassUnused1,
+ HalPowerInformation,
+ HalProcessorSpeedInformation,
+ HalCallbackInformation,
+ HalMapRegisterInformation,
+ HalMcaLogInformation,
+ HalFrameBufferCachingInformation,
+ HalDisplayBiosInformation,
+ HalProcessorFeatureInformation,
+ HalNumaTopologyInterface,
+ HalErrorInformation,
+ HalCmcLogInformation,
+ HalCpeLogInformation,
+ HalQueryMcaInterface,
+ HalQueryAMLIIllegalIOPortAddresses,
+ HalQueryMaxHotPlugMemoryAddress,
+ HalPartitionIpiInterface,
+ HalPlatformInformation,
+ HalQueryProfileSourceList,
+ HalInitLogInformation,
+ HalFrequencyInformation,
+ HalProcessorBrandString,
+ HalHypervisorInformation,
+ HalPlatformTimerInformation,
+ HalAcpiAuditInformation,
+ HalIrtInformation,
+ HalSecondaryInterruptInformation,
+ HalParkingPageInformation,
+ HalNumaRangeTableInformation,
+ HalChannelTopologyInformation,
+ HalExternalCacheInformation,
+ HalQueryDebuggerInformation,
+ HalFwBootPerformanceInformation,
+ HalFwS3PerformanceInformation,
+ HalGetChannelPowerInformation,
+ HalQueryStateElementInformation,
+ HalPsciInformation,
+ HalInterruptControllerInformation,
+ HalQueryIommuReservedRegionInformation,
+ HalQueryArmErrataInformation,
+ HalQueryProcessorEfficiencyInformation,
+ HalQueryAcpiWakeAlarmSystemPowerStateInformation,
+ HalQueryProfileIsTimerBasedProfiling,
+ HalQueryProfileNumberOfCounters,
+ HalQueryHyperlaunchEntrypoint,
+ HalHardwareWatchdogInformation,
+ HalDmaRemappingInformation,
+ HalQueryUnused0001,
+ HalHeterogeneousMemoryAttributesInterface,
+ HalQueryPerDeviceMsiLimitInformation,
+ HalQueryProfileCorruptionStatus,
+ HalQueryProfileCounterOwnership,
+ HalQueryMpamInformation,
+ HalAmuInformation,
+ HalQueryApHibernateResumePc,
+ HalQueryArm64PlatformInformation
+
+} HAL_QUERY_INFORMATION_CLASS, *PHAL_QUERY_INFORMATION_CLASS;
+
+
+typedef enum _HAL_SET_INFORMATION_CLASS {
+ HalProfileSourceInterval,
+ HalProfileSourceInterruptHandler,
+ HalMcaRegisterDriver,
+ HalKernelErrorHandler,
+ HalCmcRegisterDriver,
+ HalCpeRegisterDriver,
+ HalMcaLog,
+ HalCmcLog,
+ HalCpeLog,
+ HalGenerateCmcInterrupt,
+ HalProfileSourceTimerHandler,
+ HalEnlightenment,
+ HalProfileDpgoSourceInterruptHandler,
+ HalRegisterSecondaryInterruptInterface,
+ HalSetChannelPowerInformation,
+ HalI386ExceptionChainTerminatorInformation,
+ HalSetResetParkDisposition,
+ HalSetPsciSuspendMode,
+ HalSetHvciEnabled,
+ HalSetProcessorTraceInterruptHandler,
+ HalProfileSourceAdd,
+ HalProfileSourceRemove,
+ HalSetSwInterruptHandler,
+ HalSetClockTimerMinimumInterval,
+ HalRegisterPmuNotification,
+ HalUnregisterPmuNotification,
+} HAL_SET_INFORMATION_CLASS, *PHAL_SET_INFORMATION_CLASS;
+
+typedef enum _HAL_PMU_NOTIFICATION_TYPE {
+ HalPmuAvailableNotification,
+ HalPmuReleaseNotification
+} HAL_PMU_NOTIFICATION_TYPE;
+
+
+
+typedef struct HAL_PMU_NOTIFICATION {
+ USHORT Version;
+ USHORT Size;
+ HAL_PMU_NOTIFICATION_TYPE NotificationType;
+} HAL_PMU_NOTIFICATION, *PHAL_PMU_NOTIFICATION;
+
+typedef
+void
+(__stdcall HAL_PMU_NOTIFICATION_CALLBACK) (
+ PVOID Context,
+ PHAL_PMU_NOTIFICATION Notification
+ );
+
+typedef HAL_PMU_NOTIFICATION_CALLBACK *PHAL_PMU_NOTIFICATION_CALLBACK;
+
+
+
+
+typedef struct _HAL_REGISTER_PMU_NOTIFICATION_INPUT {
+ USHORT Version;
+ USHORT Size;
+ ULONG OwnerTag;
+ PHAL_PMU_NOTIFICATION_CALLBACK CallbackRoutine;
+ PVOID CallbackContext;
+} HAL_REGISTER_PMU_NOTIFICATION_INPUT, *PHAL_REGISTER_PMU_NOTIFICATION_INPUT;
+
+typedef struct _HAL_UNREGISTER_PMU_NOTIFICATION_INPUT {
+ USHORT Version;
+ USHORT Size;
+ ULONG OwnerTag;
+} HAL_UNREGISTER_PMU_NOTIFICATION_INPUT, *PHAL_UNREGISTER_PMU_NOTIFICATION_INPUT;
+
+
+
+
+typedef
+NTSTATUS
+(*pHalQuerySystemInformation)(
+ HAL_QUERY_INFORMATION_CLASS InformationClass,
+ ULONG BufferSize,
+ PVOID Buffer,
+ PULONG ReturnedLength
+ );
+
+
+typedef
+NTSTATUS
+(*pHalSetSystemInformation)(
+ HAL_SET_INFORMATION_CLASS InformationClass,
+ ULONG BufferSize,
+ PVOID Buffer
+ );
+
+
+typedef
+void
+( *pHalExamineMBR)(
+ PDEVICE_OBJECT DeviceObject,
+ ULONG SectorSize,
+ ULONG MBRTypeIdentifier,
+ PVOID *Buffer
+ );
+
+typedef
+NTSTATUS
+( *pHalIoReadPartitionTable)(
+ PDEVICE_OBJECT DeviceObject,
+ ULONG SectorSize,
+ BOOLEAN ReturnRecognizedPartitions,
+ struct _DRIVE_LAYOUT_INFORMATION **PartitionBuffer
+ );
+
+typedef
+NTSTATUS
+( *pHalIoSetPartitionInformation)(
+ PDEVICE_OBJECT DeviceObject,
+ ULONG SectorSize,
+ ULONG PartitionNumber,
+ ULONG PartitionType
+ );
+
+typedef
+NTSTATUS
+( *pHalIoWritePartitionTable)(
+ PDEVICE_OBJECT DeviceObject,
+ ULONG SectorSize,
+ ULONG SectorsPerTrack,
+ ULONG NumberOfHeads,
+ struct _DRIVE_LAYOUT_INFORMATION *PartitionBuffer
+ );
+
+typedef
+NTSTATUS
+(*pHalQueryBusSlots)(
+ PBUS_HANDLER BusHandler,
+ ULONG BufferSize,
+ PULONG SlotNumbers,
+ PULONG ReturnedLength
+ );
+
+typedef
+NTSTATUS
+(*pHalInitPnpDriver)(
+ void
+ );
+
+
+typedef struct _PM_DISPATCH_TABLE {
+ ULONG Signature;
+ ULONG Version;
+ PVOID Function[1];
+} PM_DISPATCH_TABLE, *PPM_DISPATCH_TABLE;
+
+
+
+typedef
+NTSTATUS
+(*pHalInitPowerManagement)(
+ PPM_DISPATCH_TABLE PmDriverDispatchTable,
+ PPM_DISPATCH_TABLE *PmHalDispatchTable
+ );
+
+
+typedef
+struct _DMA_ADAPTER *
+(*pHalGetDmaAdapter)(
+ PVOID PhysicalDeviceObject,
+ struct _DEVICE_DESCRIPTION *DeviceDescriptor,
+ PULONG NumberOfMapRegisters
+ );
+
+
+typedef
+NTSTATUS
+(*pHalGetInterruptTranslator)(
+ INTERFACE_TYPE ParentInterfaceType,
+ ULONG ParentBusNumber,
+ INTERFACE_TYPE BridgeInterfaceType,
+ USHORT Size,
+ USHORT Version,
+ PTRANSLATOR_INTERFACE Translator,
+ PULONG BridgeBusNumber
+ );
+
+
+typedef
+BOOLEAN
+(*pHalTranslateBusAddress)(
+ INTERFACE_TYPE InterfaceType,
+ ULONG BusNumber,
+ PHYSICAL_ADDRESS BusAddress,
+ PULONG AddressSpace,
+ PPHYSICAL_ADDRESS TranslatedAddress
+ );
+
+typedef
+NTSTATUS
+(*pHalAssignSlotResources) (
+ PUNICODE_STRING RegistryPath,
+ PUNICODE_STRING DriverClassName ,
+ PDRIVER_OBJECT DriverObject,
+ PDEVICE_OBJECT DeviceObject,
+ INTERFACE_TYPE BusType,
+ ULONG BusNumber,
+ ULONG SlotNumber,
+ PCM_RESOURCE_LIST *AllocatedResources
+ );
+
+typedef
+void
+(*pHalHaltSystem) (
+ void
+ );
+
+typedef
+BOOLEAN
+(*pHalResetDisplay) (
+ void
+ );
+
+
+
+typedef struct _MAP_REGISTER_ENTRY {
+ PVOID MapRegister;
+ BOOLEAN WriteToDevice;
+} MAP_REGISTER_ENTRY, *PMAP_REGISTER_ENTRY;
+
+
+
+
+typedef
+UCHAR
+(*pHalVectorToIDTEntry) (
+ ULONG Vector
+);
+
+typedef
+BOOLEAN
+(*pHalFindBusAddressTranslation) (
+ PHYSICAL_ADDRESS BusAddress,
+ PULONG AddressSpace,
+ PPHYSICAL_ADDRESS TranslatedAddress,
+ PULONG_PTR Context,
+ BOOLEAN NextBus
+ );
+
+typedef
+NTSTATUS
+(*pHalStartMirroring)(
+ void
+ );
+
+typedef
+NTSTATUS
+(*pHalEndMirroring)(
+ ULONG PassNumber
+ );
+
+typedef
+NTSTATUS
+(*pHalMirrorPhysicalMemory)(
+ PHYSICAL_ADDRESS PhysicalAddress,
+ LARGE_INTEGER NumberOfBytes
+ );
+
+typedef
+NTSTATUS
+(*pHalMirrorVerify)(
+ PHYSICAL_ADDRESS PhysicalAddress,
+ LARGE_INTEGER NumberOfBytes
+ );
+
+
+
+
+
+typedef struct {
+ UCHAR Type;
+ BOOLEAN Valid;
+
+ union {
+ UCHAR Reserved[2];
+
+ struct {
+ UCHAR BitWidth;
+ UCHAR AccessSize;
+ };
+ };
+
+ PUCHAR TranslatedAddress;
+ ULONG Length;
+} DEBUG_DEVICE_ADDRESS, *PDEBUG_DEVICE_ADDRESS;
+
+typedef struct {
+ PHYSICAL_ADDRESS Start;
+ PHYSICAL_ADDRESS MaxEnd;
+ PVOID VirtualAddress;
+ ULONG Length;
+ BOOLEAN Cached;
+ BOOLEAN Aligned;
+} DEBUG_MEMORY_REQUIREMENTS, *PDEBUG_MEMORY_REQUIREMENTS;
+
+typedef enum {
+ KdNameSpacePCI,
+ KdNameSpaceACPI,
+ KdNameSpaceAny,
+ KdNameSpaceNone,
+
+
+
+
+
+ KdNameSpaceMax,
+} KD_NAMESPACE_ENUM, *PKD_NAMESPACE_ENUM;
+
+typedef enum {
+ KdConfigureDeviceAndContinue,
+ KdSkipDeviceAndContinue,
+ KdConfigureDeviceAndStop,
+ KdSkipDeviceAndStop,
+} KD_CALLBACK_ACTION, *PKD_CALLBACK_ACTION;
+
+
+
+
+
+typedef struct _DEBUG_TRANSPORT_DATA {
+ ULONG HwContextSize;
+ ULONG SharedVisibleDataSize;
+ BOOLEAN UseSerialFraming;
+ BOOLEAN ValidUSBCoreId;
+ UCHAR USBCoreId;
+} DEBUG_TRANSPORT_DATA, *PDEBUG_TRANSPORT_DATA;
+
+
+
+
+
+typedef struct _DEBUG_IOMMU_EFI_DATA {
+ PVOID PciIoProtocolHandle;
+ PVOID Mapping;
+} DEBUG_EFI_IOMMU_DATA, *PDEBUG_EFI_IOMMU_DATA;
+
+
+
+
+
+
+
+
+
+
+typedef struct _DEBUG_DEVICE_DESCRIPTOR {
+ ULONG Bus;
+ ULONG Slot;
+ USHORT Segment;
+ USHORT VendorID;
+ USHORT DeviceID;
+ UCHAR BaseClass;
+ UCHAR SubClass;
+ UCHAR ProgIf;
+ union {
+ UCHAR Flags;
+ struct {
+ UCHAR DbgHalScratchAllocated : 1;
+ UCHAR DbgBarsMapped : 1;
+ UCHAR DbgScratchAllocated : 1;
+ UCHAR DbgUncachedMemory : 1;
+ UCHAR DbgSynthetic : 1;
+ };
+ };
+ BOOLEAN Initialized;
+ BOOLEAN Configured;
+ DEBUG_DEVICE_ADDRESS BaseAddress[6];
+ DEBUG_MEMORY_REQUIREMENTS Memory;
+ ULONG Dbg2TableIndex;
+ USHORT PortType;
+ USHORT PortSubtype;
+ PVOID OemData;
+ ULONG OemDataLength;
+ KD_NAMESPACE_ENUM NameSpace;
+ PWCHAR NameSpacePath;
+ ULONG NameSpacePathLength;
+ ULONG TransportType;
+ DEBUG_TRANSPORT_DATA TransportData;
+ DEBUG_EFI_IOMMU_DATA EfiIoMmuData;
+} DEBUG_DEVICE_DESCRIPTOR, *PDEBUG_DEVICE_DESCRIPTOR;
+
+
+
+typedef struct _PCI_DEBUGGING_DEVICE_IN_USE {
+ USHORT Segment;
+ ULONG Bus;
+ ULONG Slot;
+} PCI_DEBUGGING_DEVICE_IN_USE, *PPCI_DEBUGGING_DEVICE_IN_USE;
+
+typedef struct _ACPI_DEBUGGING_DEVICE_IN_USE {
+ ULONG NameSpacePathLength;
+ WCHAR NameSpacePath[1];
+} ACPI_DEBUGGING_DEVICE_IN_USE, *PACPI_DEBUGGING_DEVICE_IN_USE;
+
+typedef struct _DEBUGGING_DEVICE_IN_USE {
+ KD_NAMESPACE_ENUM NameSpace;
+ ULONG StructureLength;
+ union {
+ ACPI_DEBUGGING_DEVICE_IN_USE AcpiDevice;
+ PCI_DEBUGGING_DEVICE_IN_USE PciDevice;
+ };
+} DEBUGGING_DEVICE_IN_USE, *PDEBUGGING_DEVICE_IN_USE;
+
+typedef struct _DEBUGGING_DEVICE_IN_USE_INFORMATION {
+ ULONG DeviceCount;
+ DEBUGGING_DEVICE_IN_USE Device[1];
+} DEBUGGING_DEVICE_IN_USE_INFORMATION, *PDEBUGGING_DEVICE_IN_USE_INFORMATION;
+
+
+
+typedef
+KD_CALLBACK_ACTION
+(*PDEBUG_DEVICE_FOUND_FUNCTION) (
+ PDEBUG_DEVICE_DESCRIPTOR Device
+ );
+
+typedef
+NTSTATUS
+(*pKdEnumerateDebuggingDevices) (
+ PVOID LoaderBlock,
+ PDEBUG_DEVICE_DESCRIPTOR Device,
+ PDEBUG_DEVICE_FOUND_FUNCTION Callback
+ );
+
+typedef
+NTSTATUS
+(*pKdSetupPciDeviceForDebugging)(
+ PVOID LoaderBlock,
+ PDEBUG_DEVICE_DESCRIPTOR PciDevice
+);
+
+typedef
+NTSTATUS
+(*pKdReleasePciDeviceForDebugging)(
+ PDEBUG_DEVICE_DESCRIPTOR PciDevice
+);
+
+typedef
+NTSTATUS
+(*pKdSetupIntegratedDeviceForDebugging)(
+ PVOID LoaderBlock,
+ PDEBUG_DEVICE_DESCRIPTOR IntegratedDevice
+);
+
+typedef
+NTSTATUS
+(*pKdReleaseIntegratedDeviceForDebugging)(
+ PDEBUG_DEVICE_DESCRIPTOR IntegratedDevice
+);
+
+typedef
+PVOID
+(*pKdGetAcpiTablePhase0)(
+ struct _LOADER_PARAMETER_BLOCK *LoaderBlock,
+ ULONG Signature
+ );
+
+typedef
+void
+(*pKdCheckPowerButton)(
+ void
+ );
+
+typedef
+void
+(*pHalEndOfBoot)(
+ void
+ );
+
+typedef
+PVOID
+(*pKdMapPhysicalMemory64)(
+ PHYSICAL_ADDRESS PhysicalAddress,
+ ULONG NumberPages,
+ BOOLEAN FlushCurrentTLB
+ );
+
+typedef
+void
+(*pKdUnmapVirtualAddress)(
+ PVOID VirtualAddress,
+ ULONG NumberPages,
+ BOOLEAN FlushCurrentTLB
+ );
+
+typedef
+ULONG
+(*pKdGetPciDataByOffset)(
+ ULONG BusNumber,
+ ULONG SlotNumber,
+ PVOID Buffer,
+ ULONG Offset,
+ ULONG Length
+ );
+
+typedef
+ULONG
+(*pKdSetPciDataByOffset)(
+ ULONG BusNumber,
+ ULONG SlotNumber,
+ PVOID Buffer,
+ ULONG Offset,
+ ULONG Length
+ );
+
+typedef
+PVOID
+(*pHalGetAcpiTable)(
+ ULONG Signature,
+ PCSTR OemId,
+ PCSTR OemTableId
+ );
+
+typedef
+void
+(*PCI_ERROR_HANDLER_CALLBACK)(
+ void
+ );
+
+typedef
+void
+(*pHalSetPciErrorHandlerCallback)(
+ PCI_ERROR_HANDLER_CALLBACK Callback
+ );
+
+typedef
+void
+(*pHalGetPrmCache)(
+ PLIST_ENTRY * FirmwareList,
+ PLIST_ENTRY * UpdateList
+ );
+
+typedef
+NTSTATUS
+(*pHalInvokePrmFwHandler) (
+ LPGUID HandlerGuid,
+ PVOID ParameterBuffer,
+ PVOID ContextBuffer
+ );
+
+
+
+
+typedef struct {
+ ULONG Version;
+ pHalQuerySystemInformation HalQuerySystemInformation;
+ pHalSetSystemInformation HalSetSystemInformation;
+ pHalQueryBusSlots HalQueryBusSlots;
+ ULONG Spare1;
+ pHalExamineMBR HalExamineMBR;
+ pHalIoReadPartitionTable HalIoReadPartitionTable;
+ pHalIoSetPartitionInformation HalIoSetPartitionInformation;
+ pHalIoWritePartitionTable HalIoWritePartitionTable;
+
+ pHalHandlerForBus HalReferenceHandlerForBus;
+ pHalReferenceBusHandler HalReferenceBusHandler;
+ pHalReferenceBusHandler HalDereferenceBusHandler;
+
+ pHalInitPnpDriver HalInitPnpDriver;
+ pHalInitPowerManagement HalInitPowerManagement;
+
+ pHalGetDmaAdapter HalGetDmaAdapter;
+ pHalGetInterruptTranslator HalGetInterruptTranslator;
+
+ pHalStartMirroring HalStartMirroring;
+ pHalEndMirroring HalEndMirroring;
+ pHalMirrorPhysicalMemory HalMirrorPhysicalMemory;
+ pHalEndOfBoot HalEndOfBoot;
+ pHalMirrorVerify HalMirrorVerify;
+
+ pHalGetAcpiTable HalGetCachedAcpiTable;
+ pHalSetPciErrorHandlerCallback HalSetPciErrorHandlerCallback;
+
+ pHalGetPrmCache HalGetPrmCache;
+ pHalInvokePrmFwHandler HalInvokePrmFwHandler;
+} HAL_DISPATCH, *PHAL_DISPATCH;
+
+
+
+
+
+extern PHAL_DISPATCH HalDispatchTable;
+
+
+
+
+
+
+
+#line 14523 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _HAL_BUS_INFORMATION{
+ INTERFACE_TYPE BusType;
+ BUS_DATA_TYPE ConfigurationType;
+ ULONG BusNumber;
+ ULONG Reserved;
+} HAL_BUS_INFORMATION, *PHAL_BUS_INFORMATION;
+
+
+typedef enum _HAL_DISPLAY_BIOS_INFORMATION {
+ HalDisplayInt10Bios,
+ HalDisplayEmulatedBios,
+ HalDisplayNoBios
+} HAL_DISPLAY_BIOS_INFORMATION, *PHAL_DISPLAY_BIOS_INFORMATION;
+
+
+typedef struct _HAL_POWER_INFORMATION {
+ ULONG TBD;
+} HAL_POWER_INFORMATION, *PHAL_POWER_INFORMATION;
+
+
+typedef struct _HAL_PROCESSOR_SPEED_INFO {
+ ULONG ProcessorSpeed;
+} HAL_PROCESSOR_SPEED_INFORMATION, *PHAL_PROCESSOR_SPEED_INFORMATION;
+
+
+typedef struct _HAL_CALLBACKS {
+ PCALLBACK_OBJECT SetSystemInformation;
+ PCALLBACK_OBJECT BusCheck;
+} HAL_CALLBACKS, *PHAL_CALLBACKS;
+
+
+typedef struct _HAL_PROCESSOR_FEATURE {
+ ULONG UsableFeatureBits;
+} HAL_PROCESSOR_FEATURE;
+
+
+
+typedef
+NTSTATUS
+(*PHALIOREADWRITEHANDLER)(
+ BOOLEAN fRead,
+ ULONG dwAddr,
+ ULONG dwSize,
+ PULONG pdwData
+ );
+
+
+
+
+typedef struct _HAL_AMLI_BAD_IO_ADDRESS_LIST
+{
+ ULONG BadAddrBegin;
+ ULONG BadAddrSize;
+ ULONG OSVersionTrigger;
+ PHALIOREADWRITEHANDLER IOHandler;
+} HAL_AMLI_BAD_IO_ADDRESS_LIST, *PHAL_AMLI_BAD_IO_ADDRESS_LIST;
+
+
+
+
+
+
+
+
+typedef
+void
+(*PHALMCAINTERFACELOCK)(
+ void
+ );
+
+typedef
+void
+(*PHALMCAINTERFACEUNLOCK)(
+ void
+ );
+
+typedef
+NTSTATUS
+(*PHALMCAINTERFACEREADREGISTER)(
+ UCHAR BankNumber,
+ PVOID Exception
+ );
+
+
+typedef struct _HAL_MCA_INTERFACE {
+ PHALMCAINTERFACELOCK Lock;
+ PHALMCAINTERFACEUNLOCK Unlock;
+ PHALMCAINTERFACEREADREGISTER ReadRegister;
+} HAL_MCA_INTERFACE;
+
+typedef enum {
+ ApicDestinationModePhysical = 1,
+ ApicDestinationModeLogicalFlat,
+ ApicDestinationModeLogicalClustered,
+ ApicDestinationModeUnknown
+} HAL_APIC_DESTINATION_MODE, *PHAL_APIC_DESTINATION_MODE;
+
+
+
+
+struct _KTRAP_FRAME;
+struct _KEXCEPTION_FRAME;
+
+typedef
+ERROR_SEVERITY
+(*PDRIVER_EXCPTN_CALLBACK) (
+ PVOID Context,
+ struct _KTRAP_FRAME *TrapFrame,
+ struct _KEXCEPTION_FRAME *ExceptionFrame,
+ PMCA_EXCEPTION Exception
+);
+
+#line 14672 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 14691 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+#line 14702 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+typedef PDRIVER_EXCPTN_CALLBACK PDRIVER_MCA_EXCEPTION_CALLBACK;
+
+
+
+
+
+
+typedef struct _MCA_DRIVER_INFO {
+ PDRIVER_MCA_EXCEPTION_CALLBACK ExceptionCallback;
+ PKDEFERRED_ROUTINE DpcCallback;
+ PVOID DeviceContext;
+} MCA_DRIVER_INFO, *PMCA_DRIVER_INFO;
+
+
+
+typedef struct _HAL_ERROR_INFO {
+ ULONG Version;
+ ULONG InitMaxSize;
+ ULONG McaMaxSize;
+ ULONG McaPreviousEventsCount;
+ ULONG McaCorrectedEventsCount;
+ ULONG McaKernelDeliveryFails;
+ ULONG McaDriverDpcQueueFails;
+ ULONG McaReserved;
+ ULONG CmcMaxSize;
+ ULONG CmcPollingInterval;
+ ULONG CmcInterruptsCount;
+ ULONG CmcKernelDeliveryFails;
+ ULONG CmcDriverDpcQueueFails;
+ ULONG CmcGetStateFails;
+ ULONG CmcClearStateFails;
+ ULONG CmcReserved;
+ ULONGLONG CmcLogId;
+ ULONG CpeMaxSize;
+ ULONG CpePollingInterval;
+ ULONG CpeInterruptsCount;
+ ULONG CpeKernelDeliveryFails;
+ ULONG CpeDriverDpcQueueFails;
+ ULONG CpeGetStateFails;
+ ULONG CpeClearStateFails;
+ ULONG CpeInterruptSources;
+ ULONGLONG CpeLogId;
+ ULONGLONG KernelReserved[4];
+} HAL_ERROR_INFO, *PHAL_ERROR_INFO;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+void
+(*PDRIVER_CMC_EXCEPTION_CALLBACK) (
+ PVOID Context,
+ PCMC_EXCEPTION CmcLog
+);
+
+
+
+
+
+typedef
+void
+(*PDRIVER_CPE_EXCEPTION_CALLBACK) (
+ PVOID Context,
+ PCPE_EXCEPTION CmcLog
+);
+
+
+
+
+
+
+
+typedef struct _CMC_DRIVER_INFO {
+ PDRIVER_CMC_EXCEPTION_CALLBACK ExceptionCallback;
+ PKDEFERRED_ROUTINE DpcCallback;
+ PVOID DeviceContext;
+} CMC_DRIVER_INFO, *PCMC_DRIVER_INFO;
+
+typedef struct _CPE_DRIVER_INFO {
+ PDRIVER_CPE_EXCEPTION_CALLBACK ExceptionCallback;
+ PKDEFERRED_ROUTINE DpcCallback;
+ PVOID DeviceContext;
+} CPE_DRIVER_INFO, *PCPE_DRIVER_INFO;
+
+typedef struct _HAL_PLATFORM_INFORMATION {
+ ULONG PlatformFlags;
+} HAL_PLATFORM_INFORMATION, *PHAL_PLATFORM_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 14848 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 14958 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+NTSTATUS
+HalGetScatterGatherList (
+ PADAPTER_OBJECT DmaAdapter,
+ PDEVICE_OBJECT DeviceObject,
+ PMDL Mdl,
+ PVOID CurrentVa,
+ ULONG Length,
+ PDRIVER_LIST_CONTROL ExecutionRoutine,
+ PVOID Context,
+ BOOLEAN WriteToDevice
+ );
+#line 14975 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+void
+HalPutScatterGatherList (
+ PADAPTER_OBJECT DmaAdapter,
+ PSCATTER_GATHER_LIST ScatterGather,
+ BOOLEAN WriteToDevice
+ );
+#line 14985 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+void
+HalPutDmaAdapter(
+ PADAPTER_OBJECT DmaAdapter
+ );
+#line 14993 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+typedef struct _WHEA_ERROR_SOURCE_DESCRIPTOR *PWHEA_ERROR_SOURCE_DESCRIPTOR;
+typedef struct _WHEA_ERROR_RECORD *PWHEA_ERROR_RECORD;
+
+__declspec(dllimport)
+void
+HalBugCheckSystem (
+ PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource,
+ PWHEA_ERROR_RECORD ErrorRecord
+ );
+
+
+
+
+
+
+
+
+
+
+
+#line 15019 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+#line 15021 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+typedef enum _PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR_TYPE {
+ ResourceTypeSingle = 0,
+ ResourceTypeRange,
+ ResourceTypeExtendedCounterConfiguration,
+ ResourceTypeOverflow,
+ ResourceTypeEventBuffer,
+ ResourceTypeIdenitificationTag,
+ ResourceTypeMax
+} PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR_TYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef void (*PPHYSICAL_COUNTER_OVERFLOW_HANDLER)(
+ ULONGLONG OverflowBits,
+ HANDLE OwningHandle
+ );
+
+typedef void (*PPHYSICAL_COUNTER_EVENT_BUFFER_OVERFLOW_HANDLER)(
+ PVOID EventBuffer,
+ SIZE_T EntrySize,
+ SIZE_T NumberOfEntries,
+ HANDLE OwningHandle
+ );
+
+typedef struct _PHYSICAL_COUNTER_EVENT_BUFFER_CONFIGURATION {
+ PPHYSICAL_COUNTER_EVENT_BUFFER_OVERFLOW_HANDLER OverflowHandler;
+ ULONG CustomEventBufferEntrySize;
+ ULONG EventThreshold;
+} PHYSICAL_COUNTER_EVENT_BUFFER_CONFIGURATION, *PPHYSICAL_COUNTER_EVENT_BUFFER_CONFIGURATION;
+
+typedef struct _PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR {
+ PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR_TYPE Type;
+ ULONG Flags;
+ union {
+ ULONG CounterIndex;
+ struct {
+ ULONG Begin;
+ ULONG End;
+ } Range;
+ PPHYSICAL_COUNTER_OVERFLOW_HANDLER OverflowHandler;
+ PHYSICAL_COUNTER_EVENT_BUFFER_CONFIGURATION EventBufferConfiguration;
+ ULONG IdentificationTag;
+ } u;
+} PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR, *PPHYSICAL_COUNTER_RESOURCE_DESCRIPTOR;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _PHYSICAL_COUNTER_RESOURCE_LIST {
+ ULONG Count;
+ PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR Descriptors[1];
+} PHYSICAL_COUNTER_RESOURCE_LIST, *PPHYSICAL_COUNTER_RESOURCE_LIST;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+HalAllocateHardwareCounters (
+ PGROUP_AFFINITY GroupAffinty,
+ ULONG GroupCount,
+ PPHYSICAL_COUNTER_RESOURCE_LIST ResourceList,
+ PHANDLE CounterSetHandle
+ );
+#line 15140 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+HalFreeHardwareCounters (
+ HANDLE CounterSetHandle
+ );
+#line 15148 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlIsTotalDeviceFailure(
+ NTSTATUS Status
+ );
+
+
+#line 15163 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+typedef struct _PCI_AGP_CAPABILITY {
+
+ PCI_CAPABILITIES_HEADER Header;
+
+ USHORT Minor:4;
+ USHORT Major:4;
+ USHORT Rsvd1:8;
+
+ struct _PCI_AGP_STATUS {
+ ULONG Rate:3;
+ ULONG Agp3Mode:1;
+ ULONG FastWrite:1;
+ ULONG FourGB:1;
+ ULONG HostTransDisable:1;
+ ULONG Gart64:1;
+ ULONG ITA_Coherent:1;
+ ULONG SideBandAddressing:1;
+ ULONG CalibrationCycle:3;
+ ULONG AsyncRequestSize:3;
+ ULONG Rsvd1:1;
+ ULONG Isoch:1;
+ ULONG Rsvd2:6;
+ ULONG RequestQueueDepthMaximum:8;
+ } AGPStatus;
+
+ struct _PCI_AGP_COMMAND {
+ ULONG Rate:3;
+ ULONG Rsvd1:1;
+ ULONG FastWriteEnable:1;
+ ULONG FourGBEnable:1;
+ ULONG Rsvd2:1;
+ ULONG Gart64:1;
+ ULONG AGPEnable:1;
+ ULONG SBAEnable:1;
+ ULONG CalibrationCycle:3;
+ ULONG AsyncReqSize:3;
+ ULONG Rsvd3:8;
+ ULONG RequestQueueDepth:8;
+ } AGPCommand;
+
+} PCI_AGP_CAPABILITY, *PPCI_AGP_CAPABILITY;
+
+
+
+
+
+
+typedef enum _EXTENDED_AGP_REGISTER {
+ IsochStatus,
+ AgpControl,
+ ApertureSize,
+ AperturePageSize,
+ GartLow,
+ GartHigh,
+ IsochCommand
+} EXTENDED_AGP_REGISTER, *PEXTENDED_AGP_REGISTER;
+
+typedef struct _PCI_AGP_ISOCH_STATUS {
+ ULONG ErrorCode: 2;
+ ULONG Rsvd1: 1;
+ ULONG Isoch_L: 3;
+ ULONG Isoch_Y: 2;
+ ULONG Isoch_N: 8;
+ ULONG Rsvd2: 16;
+} PCI_AGP_ISOCH_STATUS, *PPCI_AGP_ISOCH_STATUS;
+
+typedef struct _PCI_AGP_CONTROL {
+ ULONG Rsvd1: 7;
+ ULONG GTLB_Enable: 1;
+ ULONG AP_Enable: 1;
+ ULONG CAL_Disable: 1;
+ ULONG Rsvd2: 22;
+} PCI_AGP_CONTROL, *PPCI_AGP_CONTROL;
+
+typedef struct _PCI_AGP_APERTURE_PAGE_SIZE {
+ USHORT PageSizeMask: 11;
+ USHORT Rsvd1: 1;
+ USHORT PageSizeSelect: 4;
+} PCI_AGP_APERTURE_PAGE_SIZE, *PPCI_AGP_APERTURE_PAGE_SIZE;
+
+typedef struct _PCI_AGP_ISOCH_COMMAND {
+ USHORT Rsvd1: 6;
+ USHORT Isoch_Y: 2;
+ USHORT Isoch_N: 8;
+} PCI_AGP_ISOCH_COMMAND, *PPCI_AGP_ISOCH_COMMAND;
+
+typedef struct PCI_AGP_EXTENDED_CAPABILITY {
+
+ PCI_AGP_ISOCH_STATUS IsochStatus;
+
+
+
+
+ PCI_AGP_CONTROL AgpControl;
+ USHORT ApertureSize;
+ PCI_AGP_APERTURE_PAGE_SIZE AperturePageSize;
+ ULONG GartLow;
+ ULONG GartHigh;
+
+
+
+
+ PCI_AGP_ISOCH_COMMAND IsochCommand;
+
+} PCI_AGP_EXTENDED_CAPABILITY, *PPCI_AGP_EXTENDED_CAPABILITY;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _PCIX_BRIDGE_CAPABILITY {
+
+ PCI_CAPABILITIES_HEADER Header;
+
+ union {
+ struct {
+ USHORT Bus64Bit:1;
+ USHORT Bus133MHzCapable:1;
+ USHORT SplitCompletionDiscarded:1;
+ USHORT UnexpectedSplitCompletion:1;
+ USHORT SplitCompletionOverrun:1;
+ USHORT SplitRequestDelayed:1;
+ USHORT BusModeFrequency:4;
+ USHORT Rsvd:2;
+ USHORT Version:2;
+ USHORT Bus266MHzCapable:1;
+ USHORT Bus533MHzCapable:1;
+ } ;
+ USHORT AsUSHORT;
+ } SecondaryStatus;
+
+ union {
+ struct {
+ ULONG FunctionNumber:3;
+ ULONG DeviceNumber:5;
+ ULONG BusNumber:8;
+ ULONG Device64Bit:1;
+ ULONG Device133MHzCapable:1;
+ ULONG SplitCompletionDiscarded:1;
+ ULONG UnexpectedSplitCompletion:1;
+ ULONG SplitCompletionOverrun:1;
+ ULONG SplitRequestDelayed:1;
+ ULONG Rsvd:7;
+ ULONG DIMCapable:1;
+ ULONG Device266MHzCapable:1;
+ ULONG Device533MHzCapable:1;
+ } ;
+ ULONG AsULONG;
+ } BridgeStatus;
+
+ USHORT UpstreamSplitTransactionCapacity;
+ USHORT UpstreamSplitTransactionLimit;
+
+ USHORT DownstreamSplitTransactionCapacity;
+ USHORT DownstreamSplitTransactionLimit;
+
+ union {
+ struct {
+ ULONG SelectSecondaryRegisters:1;
+ ULONG ErrorPresentInOtherBank:1;
+ ULONG AdditionalCorrectableError:1;
+ ULONG AdditionalUncorrectableError:1;
+ ULONG ErrorPhase:3;
+ ULONG ErrorCorrected:1;
+ ULONG Syndrome:8;
+ ULONG ErrorFirstCommand:4;
+ ULONG ErrorSecondCommand:4;
+ ULONG ErrorUpperAttributes:4;
+ ULONG ControlUpdateEnable:1;
+ ULONG Rsvd:1;
+ ULONG DisableSingleBitCorrection:1;
+ ULONG EccMode:1;
+ } ;
+ ULONG AsULONG;
+ } EccControlStatus;
+
+ ULONG EccFirstAddress;
+ ULONG EccSecondAddress;
+ ULONG EccAttribute;
+
+} PCIX_BRIDGE_CAPABILITY, *PPCIX_BRIDGE_CAPABILITY;
+
+
+
+
+
+
+typedef struct _PCI_SUBSYSTEM_IDS_CAPABILITY {
+
+ PCI_CAPABILITIES_HEADER Header;
+ USHORT Reserved;
+ USHORT SubVendorID;
+ USHORT SubSystemID;
+
+} PCI_SUBSYSTEM_IDS_CAPABILITY, *PPCI_SUBSYSTEM_IDS_CAPABILITY;
+
+
+
+
+
+typedef struct _PCI_ADVANCED_FEATURES_CAPABILITY {
+
+ PCI_CAPABILITIES_HEADER Header;
+ UCHAR Length;
+
+ union {
+ struct {
+ UCHAR FunctionLevelResetSupported:1;
+ UCHAR TransactionsPendingSupported:1;
+ UCHAR Rsvd:6;
+ } ;
+
+ UCHAR AsUCHAR;
+ } Capabilities;
+
+ union {
+ struct {
+ UCHAR InitiateFunctionLevelReset:1;
+ UCHAR Rsvd:7;
+ } ;
+
+ UCHAR AsUCHAR;
+ } Control;
+
+ union {
+ struct {
+ UCHAR TransactionsPending:1;
+ UCHAR Rsvd:7;
+ } ;
+
+ UCHAR AsUCHAR;
+ } Status;
+
+} PCI_ADVANCED_FEATURES_CAPABILITY, *PPCI_ADVANCED_FEATURES_CAPABILITY;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _PCI_ROOT_BUS_OSC_SUPPORT_FIELD {
+ union {
+ struct {
+ ULONG ExtendedConfigOpRegions:1;
+ ULONG ActiveStatePowerManagement:1;
+ ULONG ClockPowerManagement:1;
+ ULONG SegmentGroups:1;
+ ULONG MessageSignaledInterrupts:1;
+ ULONG OptimizedBufferFlushAndFill:1;
+ ULONG AspmOptionality:1;
+ ULONG ErrorDisconnectRecovery:1;
+ ULONG HpxDescriptorRecord:1;
+ ULONG Reserved:23;
+ } ;
+ ULONG AsULONG;
+ } u;
+} PCI_ROOT_BUS_OSC_SUPPORT_FIELD, *PPCI_ROOT_BUS_OSC_SUPPORT_FIELD;
+
+typedef struct _PCI_ROOT_BUS_OSC_CONTROL_FIELD {
+ union {
+ struct {
+ ULONG ExpressNativeHotPlug:1;
+ ULONG ShpcNativeHotPlug:1;
+ ULONG ExpressNativePME:1;
+ ULONG ExpressAdvancedErrorReporting:1;
+ ULONG ExpressCapabilityStructure:1;
+ ULONG LatencyToleranceReporting:1;
+ ULONG AllOnesMmioInvalidToDrivers:1;
+ ULONG DownstreamPortContainment:1;
+ ULONG CompletionTimeout:1;
+ ULONG FirmwareIntermediaryConfig:1;
+ ULONG Reserved:22;
+ } ;
+ ULONG AsULONG;
+ } u;
+} PCI_ROOT_BUS_OSC_CONTROL_FIELD, * PPCI_ROOT_BUS_OSC_CONTROL_FIELD;
+
+typedef enum _PCI_OSC_CONTROL_BITS {
+ PciOscControlBitExpressNativeHotPlug = 1,
+ PciOscControlBitShpcNativeHotPlug = 1<<1,
+ PciOscControlBitExpressNativePME = 1<<2,
+ PciOscControlBitExpressAdvancedErrorReporting = 1<<3,
+ PciOscControlBitExpressCapabilityStructure = 1<<4,
+ PciOscControlBitLatencyToleranceReporting = 1<<5,
+ PciOscControlBitAllOnesMmioInvalidToDrivers = 1<<6,
+ PciOscControlBitDownstreamPortContainment = 1<<7,
+ PciOscControlBitCompletionTimeout = 1<<8,
+ PciOscControlBitFirmwareIntermediaryConfig = 1<<9
+}PCI_OSC_CONTROL_BITS, *PPCI_OSC_CONTROL_BITS ;
+
+
+
+
+
+
+typedef struct _PCI_FIRMWARE_BUS_CAPS {
+ USHORT Type;
+ USHORT Length;
+ struct {
+ UCHAR SixtyFourBitDevice:1;
+ UCHAR PciXMode1EccCapable:1;
+ UCHAR DeviceIdMessagingCapable:1;
+ UCHAR ObffWakeSignalCapable:1;
+ UCHAR Reserved1:4;
+ } ;
+ UCHAR CurrentSpeedAndMode;
+ UCHAR SupportedSpeedsAndModesLowByte;
+ UCHAR SupportedSpeedsAndModesHighByte;
+ UCHAR Voltage;
+ UCHAR Reserved2[7];
+} PCI_FIRMWARE_BUS_CAPS, *PPCI_FIRMWARE_BUS_CAPS;
+
+typedef struct _PCI_FIRMWARE_BUS_CAPS_RETURN_BUFFER {
+ USHORT Version;
+ USHORT Status;
+ ULONG Length;
+ PCI_FIRMWARE_BUS_CAPS Caps;
+} PCI_FIRMWARE_BUS_CAPS_RETURN_BUFFER, *PPCI_FIRMWARE_BUS_CAPS_RETURN_BUFFER;
+
+
+
+
+
+
+
+typedef enum _PCI_HARDWARE_INTERFACE {
+
+ PciConventional,
+ PciXMode1,
+ PciXMode2,
+ PciExpress
+
+} PCI_HARDWARE_INTERFACE, *PPCI_HARDWARE_INTERFACE;
+
+
+
+typedef enum {
+
+ BusWidth32Bits,
+ BusWidth64Bits
+
+} PCI_BUS_WIDTH;
+
+typedef struct _PCI_ROOT_BUS_HARDWARE_CAPABILITY {
+
+
+
+
+
+ PCI_HARDWARE_INTERFACE SecondaryInterface;
+
+
+
+
+
+
+
+
+
+
+ struct {
+
+
+
+
+
+
+ BOOLEAN BusCapabilitiesFound;
+
+
+
+
+
+
+ ULONG CurrentSpeedAndMode;
+ ULONG SupportedSpeedsAndModes;
+
+
+
+
+
+
+ BOOLEAN DeviceIDMessagingCapable;
+
+
+
+
+
+ PCI_BUS_WIDTH SecondaryBusWidth;
+ } ;
+
+
+
+
+
+
+ PCI_ROOT_BUS_OSC_SUPPORT_FIELD OscFeatureSupport;
+ PCI_ROOT_BUS_OSC_CONTROL_FIELD OscControlRequest;
+ PCI_ROOT_BUS_OSC_CONTROL_FIELD OscControlGranted;
+
+} PCI_ROOT_BUS_HARDWARE_CAPABILITY, *PPCI_ROOT_BUS_HARDWARE_CAPABILITY;
+
+typedef struct _PCI_FPB_CAPABILITY_HEADER {
+ PCI_CAPABILITIES_HEADER Header;
+ USHORT Reserved;
+} PCI_FPB_CAPABILITY_HEADER, *PPCI_FPB_CAPABILITY_HEADER;
+
+typedef union _PCI_FPB_CAPABILITIES_REGISTER {
+
+ struct {
+ ULONG RidDecodeMechanismSupported:1;
+ ULONG MemLowDecodeMechanismSupported:1;
+ ULONG MemHighDecodeMechanismSupported:1;
+ ULONG NumSecDev:5;
+ ULONG RidVectorSizeSupported:3;
+ ULONG Rsvd0:5;
+ ULONG MemLowVectorSizeSupported:3;
+ ULONG Rsvd1:5;
+ ULONG MemHighVectorSizeSupported:3;
+ ULONG Rsvd2:5;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_FPB_CAPABILITIES_REGISTER, *PPCI_FPB_CAPABILITIES_REGISTER;
+
+typedef union _PCI_FPB_RID_VECTOR_CONTROL1_REGISTER {
+
+ struct {
+ ULONG RidDecodeMechanismEnable:1;
+ ULONG Rsvd0:3;
+ ULONG RidVectorGranularity:4;
+ ULONG Rsvd1:11;
+ ULONG RidVectorStart:13;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_FPB_RID_VECTOR_CONTROL1_REGISTER, *PPCI_FPB_RID_VECTOR_CONTROL1_REGISTER;
+
+typedef union _PCI_FPB_RID_VECTOR_CONTROL2_REGISTER {
+
+ struct {
+ ULONG Rsvd0:3;
+ ULONG RidSecondaryStart:13;
+ ULONG Rsvd1:16;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_FPB_RID_VECTOR_CONTROL2_REGISTER, *PPCI_FPB_RID_VECTOR_CONTROL2_REGISTER;
+
+typedef union _PCI_FPB_MEM_LOW_VECTOR_CONTROL_REGISTER {
+
+ struct {
+ ULONG MemLowDecodeMechanismEnable:1;
+ ULONG Rsvd0:3;
+ ULONG MemLowVectorGranularity:4;
+ ULONG Rsvd1:12;
+ ULONG MemLowVectorStart:12;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_FPB_MEM_LOW_VECTOR_CONTROL_REGISTER, *PPCI_FPB_MEM_LOW_VECTOR_CONTROL_REGISTER;
+
+typedef union _PCI_FPB_MEM_HIGH_VECTOR_CONTROL1_REGISTER {
+
+ struct {
+ ULONG MemHighDecodeMechanismEnable:1;
+ ULONG Rsvd0:3;
+ ULONG MemHighVectorGranularity:4;
+ ULONG Rsvd1:20;
+ ULONG MemHighVectorStartLower:4;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_FPB_MEM_HIGH_VECTOR_CONTROL1_REGISTER, *PPCI_FPB_MEM_HIGH_VECTOR_CONTROL1_REGISTER;
+
+typedef struct _PCI_FPB_MEM_HIGH_VECTOR_CONTROL2_REGISTER {
+ ULONG MemHighVectorStartUpper;
+} PCI_FPB_MEM_HIGH_VECTOR_CONTROL2_REGISTER, *PPCI_FPB_MEM_HIGH_VECTOR_CONTROL2_REGISTER;
+
+typedef union _PCI_FPB_VECTOR_ACCESS_CONTROL_REGISTER {
+
+ struct {
+ ULONG VectorAccessOffset:8;
+ ULONG Rsvd0:6;
+ ULONG VectorSelect:2;
+ ULONG Rsvd1:16;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_FPB_VECTOR_ACCESS_CONTROL_REGISTER, *PPCI_FPB_VECTOR_ACCESS_CONTROL_REGISTER;
+
+typedef struct _PCI_FPB_VECTOR_ACCESS_DATA_REGISTER {
+ ULONG VectorAccessData;
+} PCI_FPB_VECTOR_ACCESS_DATA_REGISTER, *PPCI_FPB_VECTOR_ACCESS_DATA_REGISTER;
+
+typedef struct _PCI_FPB_CAPABILITY {
+ PCI_FPB_CAPABILITY_HEADER Header;
+ PCI_FPB_CAPABILITIES_REGISTER CapabilitiesRegister;
+ PCI_FPB_RID_VECTOR_CONTROL1_REGISTER RidVectorControl1Register;
+ PCI_FPB_RID_VECTOR_CONTROL2_REGISTER RidVectorControl2Register;
+ PCI_FPB_MEM_LOW_VECTOR_CONTROL_REGISTER MemLowVectorControlRegister;
+ PCI_FPB_MEM_HIGH_VECTOR_CONTROL1_REGISTER MemHighVectorControl1Register;
+ PCI_FPB_MEM_HIGH_VECTOR_CONTROL2_REGISTER MemHighVectorControl2Register;
+ PCI_FPB_VECTOR_ACCESS_CONTROL_REGISTER VectorAccessControlRegister;
+ PCI_FPB_VECTOR_ACCESS_DATA_REGISTER VectorAccessDataRegister;
+} PCI_FPB_CAPABILITY, *PPCI_FPB_CAPABILITY;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _PCI_VENDOR_SPECIFIC_CAPABILITY {
+ PCI_CAPABILITIES_HEADER Header;
+ UCHAR VscLength;
+ UCHAR VendorSpecific;
+} PCI_VENDOR_SPECIFIC_CAPABILITY, *PPCI_VENDOR_SPECIFIC_CAPABILITY;
+
+
+
+
+
+
+
+typedef union _PCI_EXPRESS_CAPABILITIES_REGISTER {
+
+ struct {
+
+ USHORT CapabilityVersion:4;
+ USHORT DeviceType:4;
+ USHORT SlotImplemented:1;
+ USHORT InterruptMessageNumber:5;
+ USHORT Rsvd:2;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_CAPABILITIES_REGISTER, *PPCI_EXPRESS_CAPABILITIES_REGISTER;
+
+typedef union _PCI_EXPRESS_DEVICE_CAPABILITIES_REGISTER {
+
+ struct {
+
+ ULONG MaxPayloadSizeSupported:3;
+ ULONG PhantomFunctionsSupported:2;
+ ULONG ExtendedTagSupported:1;
+ ULONG L0sAcceptableLatency:3;
+ ULONG L1AcceptableLatency:3;
+ ULONG Undefined:3;
+ ULONG RoleBasedErrorReporting:1;
+ ULONG Rsvd1:2;
+ ULONG CapturedSlotPowerLimit:8;
+ ULONG CapturedSlotPowerLimitScale:2;
+ ULONG FunctionLevelResetCapability:1;
+ ULONG Rsvd2:3;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_DEVICE_CAPABILITIES_REGISTER, *PPCI_EXPRESS_DEVICE_CAPABILITIES_REGISTER;
+
+
+
+
+
+
+
+
+
+
+typedef union _PCI_EXPRESS_DEVICE_CONTROL_REGISTER {
+
+ struct {
+
+ USHORT CorrectableErrorEnable:1;
+ USHORT NonFatalErrorEnable:1;
+ USHORT FatalErrorEnable:1;
+ USHORT UnsupportedRequestErrorEnable:1;
+ USHORT EnableRelaxedOrder:1;
+ USHORT MaxPayloadSize:3;
+ USHORT ExtendedTagEnable:1;
+ USHORT PhantomFunctionsEnable:1;
+ USHORT AuxPowerEnable:1;
+ USHORT NoSnoopEnable:1;
+ USHORT MaxReadRequestSize:3;
+ USHORT BridgeConfigRetryEnable:1;
+ } ;
+
+
+
+
+
+ struct {
+ USHORT :15;
+ USHORT InitiateFunctionLevelReset:1;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_DEVICE_CONTROL_REGISTER, *PPCI_EXPRESS_DEVICE_CONTROL_REGISTER;
+
+
+
+
+
+
+
+
+
+typedef union _PCI_EXPRESS_DEVICE_STATUS_REGISTER {
+
+ struct {
+
+ USHORT CorrectableErrorDetected:1;
+ USHORT NonFatalErrorDetected:1;
+ USHORT FatalErrorDetected:1;
+ USHORT UnsupportedRequestDetected:1;
+ USHORT AuxPowerDetected:1;
+ USHORT TransactionsPending:1;
+ USHORT Rsvd:10;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_DEVICE_STATUS_REGISTER, *PPCI_EXPRESS_DEVICE_STATUS_REGISTER;
+
+typedef union _PCI_EXPRESS_LINK_CAPABILITIES_REGISTER {
+
+ struct {
+
+ ULONG MaximumLinkSpeed:4;
+ ULONG MaximumLinkWidth:6;
+ ULONG ActiveStatePMSupport:2;
+ ULONG L0sExitLatency:3;
+ ULONG L1ExitLatency:3;
+ ULONG ClockPowerManagement:1;
+ ULONG SurpriseDownErrorReportingCapable:1;
+ ULONG DataLinkLayerActiveReportingCapable:1;
+ ULONG LinkBandwidthNotificationCapability:1;
+ ULONG AspmOptionalityCompliance:1;
+ ULONG Rsvd:1;
+ ULONG PortNumber:8;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_LINK_CAPABILITIES_REGISTER, *PPCI_EXPRESS_LINK_CAPABILITIES_REGISTER;
+
+typedef union _PCI_EXPRESS_LINK_CONTROL_REGISTER {
+
+ struct {
+
+ USHORT ActiveStatePMControl:2;
+ USHORT Rsvd1:1;
+ USHORT ReadCompletionBoundary:1;
+ USHORT LinkDisable:1;
+ USHORT RetrainLink:1;
+ USHORT CommonClockConfig:1;
+ USHORT ExtendedSynch:1;
+ USHORT EnableClockPowerManagement:1;
+ USHORT Rsvd2:7;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_LINK_CONTROL_REGISTER, *PPCI_EXPRESS_LINK_CONTROL_REGISTER;
+
+typedef union _PCI_EXPRESS_LINK_STATUS_REGISTER {
+
+ struct {
+
+ USHORT LinkSpeed:4;
+ USHORT LinkWidth:6;
+ USHORT Undefined:1;
+ USHORT LinkTraining:1;
+ USHORT SlotClockConfig:1;
+ USHORT DataLinkLayerActive:1;
+ USHORT Rsvd:2;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_LINK_STATUS_REGISTER, *PPCI_EXPRESS_LINK_STATUS_REGISTER;
+
+typedef union _PCI_EXPRESS_SLOT_CAPABILITIES_REGISTER {
+
+ struct {
+
+ ULONG AttentionButtonPresent:1;
+ ULONG PowerControllerPresent:1;
+ ULONG MRLSensorPresent:1;
+ ULONG AttentionIndicatorPresent:1;
+ ULONG PowerIndicatorPresent:1;
+ ULONG HotPlugSurprise:1;
+ ULONG HotPlugCapable:1;
+ ULONG SlotPowerLimit:8;
+ ULONG SlotPowerLimitScale:2;
+ ULONG ElectromechanicalLockPresent:1;
+ ULONG NoCommandCompletedSupport:1;
+ ULONG PhysicalSlotNumber:13;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_SLOT_CAPABILITIES_REGISTER, *PPCI_EXPRESS_SLOT_CAPABILITIES_REGISTER;
+
+typedef union _PCI_EXPRESS_SLOT_CONTROL_REGISTER {
+
+ struct {
+
+ USHORT AttentionButtonEnable:1;
+ USHORT PowerFaultDetectEnable:1;
+ USHORT MRLSensorEnable:1;
+ USHORT PresenceDetectEnable:1;
+ USHORT CommandCompletedEnable:1;
+ USHORT HotPlugInterruptEnable:1;
+ USHORT AttentionIndicatorControl:2;
+ USHORT PowerIndicatorControl:2;
+ USHORT PowerControllerControl:1;
+ USHORT ElectromechanicalLockControl:1;
+ USHORT DataLinkStateChangeEnable:1;
+ USHORT Rsvd:3;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_SLOT_CONTROL_REGISTER, *PPCI_EXPRESS_SLOT_CONTROL_REGISTER;
+
+typedef union _PCI_EXPRESS_SLOT_STATUS_REGISTER {
+
+ struct {
+
+ USHORT AttentionButtonPressed:1;
+ USHORT PowerFaultDetected:1;
+ USHORT MRLSensorChanged:1;
+ USHORT PresenceDetectChanged:1;
+ USHORT CommandCompleted:1;
+ USHORT MRLSensorState:1;
+ USHORT PresenceDetectState:1;
+ USHORT ElectromechanicalLockEngaged:1;
+ USHORT DataLinkStateChanged:1;
+ USHORT Rsvd:7;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_SLOT_STATUS_REGISTER, *PPCI_EXPRESS_SLOT_STATUS_REGISTER;
+
+typedef union _PCI_EXPRESS_ROOT_CONTROL_REGISTER {
+
+ struct {
+
+ USHORT CorrectableSerrEnable:1;
+ USHORT NonFatalSerrEnable:1;
+ USHORT FatalSerrEnable:1;
+ USHORT PMEInterruptEnable:1;
+ USHORT CRSSoftwareVisibilityEnable:1;
+ USHORT Rsvd:11;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_ROOT_CONTROL_REGISTER, *PPCI_EXPRESS_ROOT_CONTROL_REGISTER;
+
+typedef union _PCI_EXPRESS_ROOT_CAPABILITIES_REGISTER {
+
+ struct {
+
+ USHORT CRSSoftwareVisibility:1;
+ USHORT Rsvd:15;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_ROOT_CAPABILITIES_REGISTER, *PPCI_EXPRESS_ROOT_CAPABILITIES_REGISTER;
+
+typedef union _PCI_EXPRESS_ROOT_STATUS_REGISTER {
+
+ struct {
+
+ ULONG PMERequestorId:16;
+ ULONG PMEStatus:1;
+ ULONG PMEPending:1;
+ ULONG Rsvd:14;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_ROOT_STATUS_REGISTER, *PPCI_EXPRESS_ROOT_STATUS_REGISTER;
+
+typedef union _PCI_EXPRESS_DEVICE_CAPABILITIES_2_REGISTER {
+
+ struct {
+
+ ULONG CompletionTimeoutRangesSupported:4;
+ ULONG CompletionTimeoutDisableSupported:1;
+ ULONG AriForwardingSupported:1;
+ ULONG AtomicOpRoutingSupported:1;
+ ULONG AtomicOpCompleterSupported32Bit:1;
+ ULONG AtomicOpCompleterSupported64Bit:1;
+ ULONG CASCompleterSupported128Bit:1;
+ ULONG NoROEnabledPRPRPassing:1;
+ ULONG LTRMechanismSupported:1;
+ ULONG TPHCompleterSupported:2;
+ ULONG Rsvd:4;
+ ULONG OBFFSupported:2;
+ ULONG ExtendedFmtFieldSuported:1;
+ ULONG EndEndTLPPrefixSupported:1;
+ ULONG MaxEndEndTLPPrefixes:2;
+ ULONG Rsvd2:4;
+ ULONG DmwrCompleterSupported:1;
+ ULONG DmwrLengthsSupported:2;
+ ULONG Rsvd3:1;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_DEVICE_CAPABILITIES_2_REGISTER, *PPCI_EXPRESS_DEVICE_CAPABILITIES_2_REGISTER;
+
+typedef union _PCI_EXPRESS_DEVICE_CONTROL_2_REGISTER {
+
+ struct {
+
+ USHORT CompletionTimeoutValue:4;
+ USHORT CompletionTimeoutDisable:1;
+ USHORT AriForwardingEnable:1;
+ USHORT AtomicOpRequesterEnable:1;
+ USHORT AtomicOpEgresBlocking:1;
+ USHORT IDORequestEnable:1;
+ USHORT IDOCompletionEnable:1;
+ USHORT LTRMechanismEnable:1;
+ USHORT Rsvd:2;
+ USHORT OBFFEnable:2;
+ USHORT EndEndTLPPrefixBlocking:1;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_DEVICE_CONTROL_2_REGISTER, *PPCI_EXPRESS_DEVICE_CONTROL_2_REGISTER;
+
+typedef union _PCI_EXPRESS_DEVICE_STATUS_2_REGISTER {
+
+ struct {
+
+ USHORT Rsvd:16;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_DEVICE_STATUS_2_REGISTER, *PPCI_EXPRESS_DEVICE_STATUS_2_REGISTER;
+
+typedef union _PCI_EXPRESS_LINK_CAPABILITIES_2_REGISTER {
+
+ struct {
+
+ ULONG Rsvd0:1;
+ ULONG SupportedLinkSpeedsVector:7;
+ ULONG Rsvd8_31:24;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_LINK_CAPABILITIES_2_REGISTER, *PPCI_EXPRESS_LINK_CAPABILITIES_2_REGISTER;
+
+typedef union _PCI_EXPRESS_LINK_CONTROL_2_REGISTER {
+
+ struct {
+
+ USHORT TargetLinkSpeed:4;
+ USHORT Rsvd4_15:12;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_LINK_CONTROL_2_REGISTER, *PPCI_EXPRESS_LINK_CONTROL_2_REGISTER;
+
+typedef union _PCI_EXPRESS_LINK_STATUS_2_REGISTER {
+
+ struct {
+
+ USHORT Rsvd0_15:16;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_LINK_STATUS_2_REGISTER, *PPCI_EXPRESS_LINK_STATUS_2_REGISTER;
+
+
+
+
+
+typedef struct _PCI_EXPRESS_CAPABILITY {
+
+ PCI_CAPABILITIES_HEADER Header;
+ PCI_EXPRESS_CAPABILITIES_REGISTER ExpressCapabilities;
+
+ PCI_EXPRESS_DEVICE_CAPABILITIES_REGISTER DeviceCapabilities;
+
+ PCI_EXPRESS_DEVICE_CONTROL_REGISTER DeviceControl;
+ PCI_EXPRESS_DEVICE_STATUS_REGISTER DeviceStatus;
+
+ PCI_EXPRESS_LINK_CAPABILITIES_REGISTER LinkCapabilities;
+
+ PCI_EXPRESS_LINK_CONTROL_REGISTER LinkControl;
+ PCI_EXPRESS_LINK_STATUS_REGISTER LinkStatus;
+
+ PCI_EXPRESS_SLOT_CAPABILITIES_REGISTER SlotCapabilities;
+
+ PCI_EXPRESS_SLOT_CONTROL_REGISTER SlotControl;
+ PCI_EXPRESS_SLOT_STATUS_REGISTER SlotStatus;
+
+ PCI_EXPRESS_ROOT_CONTROL_REGISTER RootControl;
+ PCI_EXPRESS_ROOT_CAPABILITIES_REGISTER RootCapabilities;
+
+ PCI_EXPRESS_ROOT_STATUS_REGISTER RootStatus;
+
+ PCI_EXPRESS_DEVICE_CAPABILITIES_2_REGISTER DeviceCapabilities2;
+ PCI_EXPRESS_DEVICE_CONTROL_2_REGISTER DeviceControl2;
+ PCI_EXPRESS_DEVICE_STATUS_2_REGISTER DeviceStatus2;
+
+ PCI_EXPRESS_LINK_CAPABILITIES_2_REGISTER LinkCapabilities2;
+ PCI_EXPRESS_LINK_CONTROL_2_REGISTER LinkControl2;
+ PCI_EXPRESS_LINK_STATUS_2_REGISTER LinkStatus2;
+
+} PCI_EXPRESS_CAPABILITY, *PPCI_EXPRESS_CAPABILITY;
+
+
+
+typedef enum {
+
+ MRLClosed = 0,
+ MRLOpen
+
+} PCI_EXPRESS_MRL_STATE;
+
+typedef enum {
+
+ SlotEmpty = 0,
+ CardPresent
+
+} PCI_EXPRESS_CARD_PRESENCE;
+
+typedef enum {
+
+ IndicatorOn = 1,
+ IndicatorBlink,
+ IndicatorOff
+
+} PCI_EXPRESS_INDICATOR_STATE;
+
+typedef enum {
+
+ PowerOn = 0,
+ PowerOff
+
+} PCI_EXPRESS_POWER_STATE;
+
+typedef enum {
+
+ NoAspmSupport = 0,
+ L0sEntrySupport = 1,
+ L1EntrySupport = 2,
+ L0sAndL1EntrySupport = 3
+
+} PCI_EXPRESS_ASPM_SUPPORT;
+
+typedef enum {
+
+ L0sAndL1EntryDisabled,
+ L0sEntryEnabled,
+ L1EntryEnabled,
+ L0sAndL1EntryEnabled
+
+} PCI_EXPRESS_ASPM_CONTROL;
+
+typedef enum {
+
+ L0s_Below64ns = 0,
+ L0s_64ns_128ns,
+ L0s_128ns_256ns,
+ L0s_256ns_512ns,
+ L0s_512ns_1us,
+ L0s_1us_2us,
+ L0s_2us_4us,
+ L0s_Above4us
+
+} PCI_EXPRESS_L0s_EXIT_LATENCY;
+
+typedef enum {
+
+ L1_Below1us = 0,
+ L1_1us_2us,
+ L1_2us_4us,
+ L1_4us_8us,
+ L1_8us_16us,
+ L1_16us_32us,
+ L1_32us_64us,
+ L1_Above64us
+
+} PCI_EXPRESS_L1_EXIT_LATENCY;
+
+typedef enum {
+
+ RCB64Bytes = 0,
+ RCB128Bytes
+
+} PCI_EXPRESS_RCB;
+
+typedef enum {
+
+ PciExpressPciPmLinkSubState_L11_BitIndex = 0,
+ PciExpressPciPmLinkSubState_L12_BitIndex,
+ PciExpressASPMLinkSubState_L11_BitIndex,
+ PciExpressASPMLinkSubState_L12_BitIndex
+
+} PCI_EXPRESS_LINK_SUBSTATE;
+
+typedef enum {
+
+ PciDeviceD3Cold_State_Disabled_BitIndex = 1,
+ PciDeviceD3Cold_State_Enabled_BitIndex,
+ PciDeviceD3Cold_State_ParentRootPortS0WakeSupported_BitIndex,
+ PciDeviceD3Cold_State_Disabled_Bridge_HackFlags_BitIndex,
+ PciDeviceD3Cold_Reason_Default_State_BitIndex = 8,
+ PciDeviceD3Cold_Reason_INF_BitIndex,
+ PciDeviceD3Cold_Reason_Interface_Api_BitIndex
+
+} PCI_DEVICE_D3COLD_STATE_REASON;
+
+
+
+typedef enum {
+
+ PciExpressEndpoint = 0,
+ PciExpressLegacyEndpoint,
+ PciExpressRootPort = 4,
+ PciExpressUpstreamSwitchPort,
+ PciExpressDownstreamSwitchPort,
+ PciExpressToPciXBridge,
+ PciXToExpressBridge,
+ PciExpressRootComplexIntegratedEndpoint,
+ PciExpressRootComplexEventCollector
+
+} PCI_EXPRESS_DEVICE_TYPE;
+
+
+
+typedef enum {
+
+ MaxPayload128Bytes = 0,
+ MaxPayload256Bytes,
+ MaxPayload512Bytes,
+ MaxPayload1024Bytes,
+ MaxPayload2048Bytes,
+ MaxPayload4096Bytes
+
+} PCI_EXPRESS_MAX_PAYLOAD_SIZE;
+
+typedef union _PCI_EXPRESS_PME_REQUESTOR_ID {
+
+ struct {
+
+ USHORT FunctionNumber:3;
+ USHORT DeviceNumber:5;
+ USHORT BusNumber:8;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_PME_REQUESTOR_ID, *PPCI_EXPRESS_PME_REQUESTOR_ID;
+
+
+
+
+
+
+
+typedef void
+(*PciPin2Line) (
+ struct _BUS_HANDLER *BusHandler,
+ struct _BUS_HANDLER *RootHandler,
+ PCI_SLOT_NUMBER SlotNumber,
+ PPCI_COMMON_CONFIG PciData
+ );
+
+typedef void
+(*PciLine2Pin) (
+ struct _BUS_HANDLER *BusHandler,
+ struct _BUS_HANDLER *RootHandler,
+ PCI_SLOT_NUMBER SlotNumber,
+ PPCI_COMMON_CONFIG PciNewData,
+ PPCI_COMMON_CONFIG PciOldData
+ );
+
+typedef void
+(*PciReadWriteConfig) (
+ struct _BUS_HANDLER *BusHandler,
+ PCI_SLOT_NUMBER Slot,
+ PVOID Buffer,
+ ULONG Offset,
+ ULONG Length
+ );
+
+
+
+
+typedef struct _PCIBUSDATA {
+ ULONG Tag;
+ ULONG Version;
+ PciReadWriteConfig ReadConfig;
+ PciReadWriteConfig WriteConfig;
+ PciPin2Line Pin2Line;
+ PciLine2Pin Line2Pin;
+ PCI_SLOT_NUMBER ParentSlot;
+ PVOID Reserved[4];
+} PCIBUSDATA, *PPCIBUSDATA;
+
+
+
+
+
+typedef union _PCI_EXPRESS_LTR_MAX_LATENCY_REGISTER {
+
+ struct {
+
+ ULONG MaxSnoopLatencyValue:10;
+ ULONG MaxSnoopLatencyScale:3;
+ ULONG Rsvd:2;
+ ULONG MaxSnoopRequirement:1;
+
+ ULONG MaxNoSnoopLatencyValue:10;
+ ULONG MaxNoSnoopLatencyScale:3;
+ ULONG Rsvd2:2;
+ ULONG MaxNoSnoopRequirement:1;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_LTR_MAX_LATENCY_REGISTER, *PPCI_EXPRESS_LTR_MAX_LATENCY_REGISTER;
+
+typedef struct _PCI_EXPRESS_LTR_CAPABILITY {
+
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+
+ PCI_EXPRESS_LTR_MAX_LATENCY_REGISTER Latency;
+
+} PCI_EXPRESS_LTR_CAPABILITY, *PPCI_EXPRESS_LTR_CAPABILITY;
+
+
+
+
+
+
+
+
+
+
+typedef union _PCI_EXPRESS_TPH_REQUESTER_CAPABILITY_REGISTER {
+
+ struct {
+
+ ULONG NoStModeSupported:1;
+ ULONG InteruptVectorModeSupported:1;
+ ULONG DeviceSpecificModeSupported:1;
+ ULONG Rsvd:5;
+ ULONG ExtendedTPHRequesterSupported:1;
+ ULONG StTableLocation:2;
+ ULONG Rsvd2:5;
+ ULONG StTableSize:11;
+ ULONG Rsvd3:5;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_TPH_REQUESTER_CAPABILITY_REGISTER, *PPCI_EXPRESS_TPH_REQUESTER_CAPABILITY_REGISTER;
+
+typedef union _PCI_EXPRESS_TPH_REQUESTER_CONTROL_REGISTER {
+
+ struct {
+
+ ULONG StModeSelect:3;
+ ULONG Rsvd:5;
+ ULONG TphRequesterEnable:2;
+ ULONG Rsvd2:22;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_TPH_REQUESTER_CONTROL_REGISTER, *PPCI_EXPRESS_TPH_REQUESTER_CONTROL_REGISTER;
+
+typedef union _PCI_EXPRESS_TPH_ST_TABLE_ENTRY {
+
+ struct {
+
+ USHORT LowerEntry:8;
+ USHORT UpperEntry:8;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_TPH_ST_TABLE_ENTRY, *PPCI_EXPRESS_TPH_ST_TABLE_ENTRY;
+
+typedef struct _PCI_EXPRESS_TPH_REQUESTER_CAPABILITY {
+
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+
+ PCI_EXPRESS_TPH_REQUESTER_CAPABILITY_REGISTER RequesterCapability;
+ PCI_EXPRESS_TPH_REQUESTER_CONTROL_REGISTER RequesterControl;
+
+} PCI_EXPRESS_TPH_REQUESTER_CAPABILITY, *PPCI_EXPRESS_TPH_REQUESTER_CAPABILITY;
+
+
+
+
+
+typedef union _PCI_EXPRESS_L1_PM_SS_CAPABILITIES_REGISTER {
+
+ struct {
+ ULONG PciPmL12Supported:1;
+ ULONG PciPmL11Supported:1;
+ ULONG AspmL12Supported:1;
+ ULONG AspmL11Supported:1;
+ ULONG L1PmSsSupported:1;
+ ULONG Rsvd:3;
+ ULONG PortCommonModeRestoreTime:8;
+ ULONG PortTPowerOnScale:2;
+ ULONG Rsvd2:1;
+ ULONG PortTPowerOnValue:5;
+ ULONG Rsvd3:8;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_L1_PM_SS_CAPABILITIES_REGISTER, *PPCI_EXPRESS_L1_PM_SS_CAPABILITIES_REGISTER;
+
+typedef union _PCI_EXPRESS_L1_PM_SS_CONTROL_1_REGISTER {
+
+ struct {
+ ULONG PciPmL12Enabled:1;
+ ULONG PciPmL11Enabled:1;
+ ULONG AspmL12Enabled:1;
+ ULONG AspmL11Enabled:1;
+ ULONG Rsvd:4;
+ ULONG CommonModeRestoreTime:8;
+ ULONG LtrL12ThresholdValue:10;
+ ULONG Rsvd2:3;
+ ULONG LtrL12ThresholdScale:3;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_L1_PM_SS_CONTROL_1_REGISTER, *PPCI_EXPRESS_L1_PM_SS_CONTROL_1_REGISTER;
+
+typedef union _PCI_EXPRESS_L1_PM_SS_CONTROL_2_REGISTER {
+
+ struct {
+
+ ULONG TPowerOnScale:2;
+ ULONG Rsvd:1;
+ ULONG TPowerOnValue:5;
+ ULONG Rsvd2:24;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_L1_PM_SS_CONTROL_2_REGISTER, *PPCI_EXPRESS_L1_PM_SS_CONTROL_2_REGISTER;
+
+typedef struct _PCI_EXPRESS_L1_PM_SS_CAPABILITY {
+
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+
+ PCI_EXPRESS_L1_PM_SS_CAPABILITIES_REGISTER L1PmSsCapabilities;
+ PCI_EXPRESS_L1_PM_SS_CONTROL_1_REGISTER L1PmSsControl1;
+ PCI_EXPRESS_L1_PM_SS_CONTROL_2_REGISTER L1PmSsControl2;
+
+} PCI_EXPRESS_L1_PM_SS_CAPABILITY, *PPCI_EXPRESS_L1_PM_SS_CAPABILITY;
+
+typedef union _PCI_EXPRESS_DPC_CAPS_REGISTER {
+
+ struct {
+ USHORT InterruptMsgNumber : 5;
+ USHORT RpExtensionsForDpc : 1;
+ USHORT PoisonedTlpEgressBlockingSupported : 1;
+ USHORT DpcSoftwareTriggeringSupported : 1;
+ USHORT RpPioLogSize : 4;
+ USHORT DlActiveErrCorSignalingSupported : 1;
+ USHORT Reserved : 3;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_DPC_CAPS_REGISTER, *PPCI_EXPRESS_DPC_CAPS_REGISTER;
+
+typedef union _PCI_EXPRESS_DPC_CONTROL_REGISTER {
+
+ struct {
+ USHORT TriggerEnable : 2;
+ USHORT CompletionControl : 1;
+ USHORT InterruptEnable : 1;
+ USHORT ErrCorEnable : 1;
+ USHORT PoisonedTlpEgressBlockingEnable : 1;
+ USHORT SoftwareTrigger : 1;
+ USHORT DlActiveErrCorEnable : 1;
+ USHORT Reserved : 8;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_DPC_CONTROL_REGISTER, *PPCI_EXPRESS_DPC_CONTROL_REGISTER;
+
+typedef union _PCI_EXPRESS_DPC_STATUS_REGISTER {
+
+ struct {
+ USHORT TriggerStatus : 1;
+ USHORT TriggerReason : 2;
+ USHORT InterruptStatus : 1;
+ USHORT RpBusy : 1;
+ USHORT TriggerReasonExtension : 2;
+ USHORT Reserved1 : 1;
+ USHORT PioFirstErrPointer : 5;
+ USHORT Reserved2 : 3;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_DPC_STATUS_REGISTER, *PPCI_EXPRESS_DPC_STATUS_REGISTER;
+
+typedef union _PCI_EXPRESS_DPC_RP_PIO_STATUS_REGISTER {
+
+ struct {
+ ULONG CfgURCpl : 1;
+ ULONG CfgCACpl : 1;
+ ULONG CfgCTO : 1;
+ ULONG Reserved1 : 5;
+ ULONG IoURCpl : 1;
+ ULONG IoCACpl : 1;
+ ULONG IoCTO : 1;
+ ULONG Reserved2 : 5;
+ ULONG MemURCpl : 1;
+ ULONG MemCACpl : 1;
+ ULONG MemCTO : 1;
+ ULONG Reserved3 : 12;
+ ULONG Reserved4 : 1;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_DPC_RP_PIO_STATUS_REGISTER,
+ *PPCI_EXPRESS_DPC_RP_PIO_STATUS_REGISTER;
+
+typedef union _PCI_EXPRESS_DPC_RP_PIO_MASK_REGISTER {
+
+ struct {
+ ULONG CfgURCpl : 1;
+ ULONG CfgCACpl : 1;
+ ULONG CfgCTO : 1;
+ ULONG Reserved1 : 5;
+ ULONG IoURCpl : 1;
+ ULONG IoCACpl : 1;
+ ULONG IoCTO : 1;
+ ULONG Reserved2 : 5;
+ ULONG MemURCpl : 1;
+ ULONG MemCACpl : 1;
+ ULONG MemCTO : 1;
+ ULONG Reserved3 : 13;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_DPC_RP_PIO_MASK_REGISTER,
+ *PPCI_EXPRESS_DPC_RP_PIO_MASK_REGISTER;
+
+typedef union _PCI_EXPRESS_DPC_RP_PIO_SEVERITY_REGISTER {
+
+ struct {
+ ULONG CfgURCpl : 1;
+ ULONG CfgCACpl : 1;
+ ULONG CfgCTO : 1;
+ ULONG Reserved1 : 5;
+ ULONG IoURCpl : 1;
+ ULONG IoCACpl : 1;
+ ULONG IoCTO : 1;
+ ULONG Reserved2 : 5;
+ ULONG MemURCpl : 1;
+ ULONG MemCACpl : 1;
+ ULONG MemCTO : 1;
+ ULONG Reserved3 : 13;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_DPC_RP_PIO_SEVERITY_REGISTER,
+ *PPCI_EXPRESS_DPC_RP_PIO_SEVERITY_REGISTER;
+
+typedef union _PCI_EXPRESS_DPC_RP_PIO_SYSERR_REGISTER {
+
+ struct {
+ ULONG CfgURCpl : 1;
+ ULONG CfgCACpl : 1;
+ ULONG CfgCTO : 1;
+ ULONG Reserved1 : 5;
+ ULONG IoURCpl : 1;
+ ULONG IoCACpl : 1;
+ ULONG IoCTO : 1;
+ ULONG Reserved2 : 5;
+ ULONG MemURCpl : 1;
+ ULONG MemCACpl : 1;
+ ULONG MemCTO : 1;
+ ULONG Reserved3 : 13;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_DPC_RP_PIO_SYSERR_REGISTER,
+ *PPCI_EXPRESS_DPC_RP_PIO_SYSERR_REGISTER;
+
+typedef union _PCI_EXPRESS_DPC_RP_PIO_EXCEPTION_REGISTER {
+
+ struct {
+ ULONG CfgURCpl : 1;
+ ULONG CfgCACpl : 1;
+ ULONG CfgCTO : 1;
+ ULONG Reserved1 : 5;
+ ULONG IoURCpl : 1;
+ ULONG IoCACpl : 1;
+ ULONG IoCTO : 1;
+ ULONG Reserved2 : 5;
+ ULONG MemURCpl : 1;
+ ULONG MemCACpl : 1;
+ ULONG MemCTO : 1;
+ ULONG Reserved3 : 13;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_DPC_RP_PIO_EXCEPTION_REGISTER,
+ *PPCI_EXPRESS_DPC_RP_PIO_EXCEPTION_REGISTER;
+
+typedef struct _PCI_EXPRESS_DPC_RP_PIO_HEADERLOG_REGISTER {
+
+ ULONG PioHeaderLogRegister[4];
+
+} PCI_EXPRESS_DPC_RP_PIO_HEADERLOG_REGISTER,
+ *PPCI_EXPRESS_DPC_RP_PIO_HEADERLOG_REGISTER;
+
+typedef union _PCI_EXPRESS_DPC_RP_PIO_IMPSPECLOG_REGISTER {
+
+ ULONG PioImpSpecLog;
+
+} PCI_EXPRESS_DPC_RP_PIO_IMPSPECLOG_REGISTER,
+ *PPCI_EXPRESS_DPC_RP_PIO_IMPSPECLOG_REGISTER;
+
+typedef struct _PCI_EXPRESS_DPC_RP_PIO_TLPPREFIXLOG_REGISTER {
+
+ ULONG PioTlpPrefixLogRegister[4];
+
+} PCI_EXPRESS_DPC_RP_PIO_TLPPREFIXLOG_REGISTER,
+ *PPCI_EXPRESS_DPC_RP_PIO_TLPPREFIXLOG_REGISTER;
+
+typedef union _PCI_EXPRESS_DPC_ERROR_SOURCE_ID {
+
+ struct {
+ USHORT Function:3;
+ USHORT Device:5;
+ USHORT Bus:8;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_DPC_ERROR_SOURCE_ID, *PPCI_EXPRESS_DPC_ERROR_SOURCE_ID;
+
+typedef struct _PCI_EXPRESS_DPC_CAPABILITY {
+
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+
+
+
+
+
+ PCI_EXPRESS_DPC_CAPS_REGISTER DpcCapabilities;
+ PCI_EXPRESS_DPC_CONTROL_REGISTER DpcControl;
+ PCI_EXPRESS_DPC_STATUS_REGISTER DpcStatus;
+ PCI_EXPRESS_DPC_ERROR_SOURCE_ID DpcErrSrcId;
+
+
+
+
+
+ PCI_EXPRESS_DPC_RP_PIO_STATUS_REGISTER RpPioStatus;
+ PCI_EXPRESS_DPC_RP_PIO_MASK_REGISTER RpPioMask;
+ PCI_EXPRESS_DPC_RP_PIO_SEVERITY_REGISTER RpPioSeverity;
+ PCI_EXPRESS_DPC_RP_PIO_SYSERR_REGISTER RpPioSysError;
+ PCI_EXPRESS_DPC_RP_PIO_EXCEPTION_REGISTER RpPioException;
+ PCI_EXPRESS_DPC_RP_PIO_HEADERLOG_REGISTER RpPioHeaderLog;
+ PCI_EXPRESS_DPC_RP_PIO_IMPSPECLOG_REGISTER RpPioImpSpecLog;
+ PCI_EXPRESS_DPC_RP_PIO_TLPPREFIXLOG_REGISTER RpPioPrefixLog;
+
+} PCI_EXPRESS_DPC_CAPABILITY, *PPCI_EXPRESS_DPC_CAPABILITY;
+
+typedef union _PCI_EXPRESS_RESIZABLE_BAR_CAPABILITY_REGISTER {
+ struct {
+ ULONG Rsvd:4;
+ ULONG SizesSupported:20;
+ ULONG Rsvd2:8;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_RESIZABLE_BAR_CAPABILITY_REGISTER, *PPCI_EXPRESS_RESIZABLE_BAR_CAPABILITY_REGISTER;
+
+typedef union _PCI_EXPRESS_RESIZABLE_BAR_CONTROL_REGISTER {
+ struct {
+
+ ULONG BarIndex:3;
+ ULONG Rsvd:2;
+ ULONG NumberOfResizableBars:3;
+ ULONG BarSize:6;
+ ULONG Rsvd2:18;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_RESIZABLE_BAR_CONTROL_REGISTER, *PPCI_EXPRESS_RESIZABLE_BAR_CONTROL_REGISTER;
+
+typedef struct _PCI_EXPRESS_RESIZABLE_BAR_ENTRY {
+ PCI_EXPRESS_RESIZABLE_BAR_CAPABILITY_REGISTER Capability;
+ PCI_EXPRESS_RESIZABLE_BAR_CONTROL_REGISTER Control;
+} PCI_EXPRESS_RESIZABLE_BAR_ENTRY, *PPCI_EXPRESS_RESIZABLE_BAR_ENTRY;
+
+typedef struct _PCI_EXPRESS_RESIZABLE_BAR_CAPABILITY {
+
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+
+ PCI_EXPRESS_RESIZABLE_BAR_ENTRY Entry[6];
+
+} PCI_EXPRESS_RESIZABLE_BAR_CAPABILITY, *PPCI_EXPRESS_RESIZABLE_BAR_CAPABILITY;
+
+
+
+
+
+typedef union _PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_1 {
+ struct {
+ ULONG DvsecVendorId:16;
+ ULONG DvsecVersion:4;
+ ULONG DvsecLength:12;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_1, *PPCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_1;
+
+typedef union _PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_2 {
+ struct {
+ USHORT DvsecId:16;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_2, *PPCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_2;
+
+typedef union _PCI_EXPRESS_USB4_DESIGNATED_VENDOR_SPECIFIC_HEADER {
+ struct {
+ USHORT PortType:3;
+ USHORT Reserved:13;
+ } ;
+
+ USHORT AsUSHORT;
+
+} PCI_EXPRESS_USB4_DESIGNATED_VENDOR_SPECIFIC_HEADER, *PPCI_EXPRESS_USB4_DESIGNATED_VENDOR_SPECIFIC_HEADER;
+
+typedef union _PCI_EXPRESS_USB4_DESIGNATED_VENDOR_SPECIFIC_PORT_ATTRIBUTES {
+
+ union {
+ struct {
+ USHORT NhiInstance:3;
+ ULONG Rsvd:29;
+ } type0;
+ struct {
+ ULONG PortNhi:3;
+ ULONG Reserved0:13;
+ ULONG PortExpandibility:2;
+ ULONG HostRouterIndication:2;
+ ULONG D3ColdWakeSupport:2;
+ ULONG Reserved:3;
+ ULONG BusNumberReservationHint:8;
+ } type1;
+
+ struct {
+ ULONG PortNhi1:3;
+ ULONG Reserved1:1;
+ ULONG PortNhi2:3;
+ ULONG Reserved2:1;
+ ULONG PortNhi3:3;
+ ULONG Reserved3:1;
+ ULONG PortNhi4:3;
+ ULONG Reserved4:1;
+ ULONG PortNhi5:3;
+ ULONG Reserved5:1;
+ ULONG PortNhi6:3;
+ ULONG Reserved6:1;
+ ULONG PortNhi7:3;
+ ULONG Reserved7:1;
+ ULONG PortNhi8:3;
+ ULONG Reserved8:1;
+ } type2;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_USB4_DESIGNATED_VENDOR_SPECIFIC_PORT_ATTRIBUTES, *PPCI_EXPRESS_USB4_DESIGNATED_VENDOR_SPECIFIC_PORT_ATTRIBUTES;
+
+typedef struct _PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_CAPABILITY {
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+ PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_1 DvsecHeader1;
+ PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_2 DvsecHeader2;
+ USHORT DvsecRegisters[1];
+
+} PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_CAPABILITY, *PPCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_CAPABILITY;
+
+typedef struct _PCI_EXPRESS_USB4_DESIGNATED_VENDOR_SPECIFIC_CAPABILITY {
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+ PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_1 DvsecHeader1;
+ PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_2 DvsecHeader2;
+ PCI_EXPRESS_USB4_DESIGNATED_VENDOR_SPECIFIC_HEADER DvsecHeader3;
+ PCI_EXPRESS_USB4_DESIGNATED_VENDOR_SPECIFIC_PORT_ATTRIBUTES PortSpecificAttributes;
+} PCI_EXPRESS_USB4_DESIGNATED_VENDOR_SPECIFIC_CAPABILITY, *PPCI_USB4_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_CAPABILITY;
+
+
+
+
+
+
+
+typedef struct _PCI_EXPRESS_LINK_CONTROL3 {
+ union {
+ struct {
+ ULONG PerformEq:1;
+ ULONG LinkEqIntEn:1;
+ ULONG Reserved:30;
+ };
+ ULONG AsULONG;
+ };
+
+} PCI_EXPRESS_LINK_CONTROL3, *PPCI_EXPRESS_LINK_CONTROL3;
+
+typedef struct _PCI_EXPRESS_LANE_ERROR_STATUS {
+ ULONG LaneBitmap;
+} PCI_EXPRESS_LANE_ERROR_STATUS, *PPCI_EXPRESS_LANE_ERROR_STATUS;
+
+typedef struct _PCI_EXPRESS_SECONDARY_CAPABILITY {
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+ PCI_EXPRESS_LINK_CONTROL3 LinkControl3;
+ PCI_EXPRESS_LANE_ERROR_STATUS LaneErrorStatus;
+} PCI_EXPRESS_SECONDARY_CAPABILITY, *PPCI_EXPRESS_SECONDARY_CAPABILITY;
+
+
+
+
+
+typedef union _PCI_EXPRESS_NPEM_CAPABILITY_REGISTER {
+ struct {
+ ULONG Capable:1;
+ ULONG ResetCapable:1;
+ ULONG OkCapable:1;
+ ULONG LocateCapable:1;
+ ULONG FailCapable:1;
+ ULONG RebuildCapable:1;
+ ULONG PFACapable:1;
+ ULONG HotSpareCapable:1;
+ ULONG InACriticalArrayCapable:1;
+ ULONG InAFailedArrayCapable:1;
+ ULONG InvalidDeviceTypeCapable:1;
+ ULONG DisabledCapable:1;
+ ULONG Rsvd:12;
+ ULONG EnclosureSpecificCapabilities:8;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_NPEM_CAPABILITY_REGISTER, *PPCI_EXPRESS_NPEM_CAPABILITY_REGISTER;
+
+typedef union _PCI_EXPRESS_NPEM_CONTROL_REGISTER {
+ struct {
+ ULONG Enable:1;
+ ULONG InitiateReset:1;
+ ULONG OkControl:1;
+ ULONG LocateControl:1;
+ ULONG FailControl:1;
+ ULONG RebuildControl:1;
+ ULONG PFAControl:1;
+ ULONG HotSpareControl:1;
+ ULONG InACriticalArrayControl:1;
+ ULONG InAFailedArrayControl:1;
+ ULONG InvalidDeviceTypeControl:1;
+ ULONG DisabledControl:1;
+ ULONG Rsvd:12;
+ ULONG EnclosureSpecificControls:8;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_NPEM_CONTROL_REGISTER, *PPCI_EXPRESS_NPEM_CONTROL_REGISTER;
+
+typedef union _PCI_EXPRESS_NPEM_STATUS_REGISTER {
+ struct {
+ ULONG CommandCompleted:1;
+ ULONG Rsvd:23;
+ ULONG EnclosureSpecificStatus:8;
+ } ;
+
+ ULONG AsULONG;
+
+} PCI_EXPRESS_NPEM_STATUS_REGISTER, *PPCI_EXPRESS_NPEM_STATUS_REGISTER;
+
+typedef struct _PCI_EXPRESS_NPEM_CAPABILITY {
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+ PCI_EXPRESS_NPEM_CAPABILITY_REGISTER Capability;
+ PCI_EXPRESS_NPEM_CONTROL_REGISTER Control;
+ PCI_EXPRESS_NPEM_STATUS_REGISTER Status;
+} PCI_EXPRESS_NPEM_CAPABILITY, *PPCI_EXPRESS_NPEM_CAPABILITY;
+
+typedef struct _PCI_EXPRESS_EVENT_COLLECTOR_ENDPOINT_ASSOCIATION_CAPABILITY {
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+ ULONG AssociationBitmap;
+} PCI_EXPRESS_EVENT_COLLECTOR_ENDPOINT_ASSOCIATION_CAPABILITY, *PPCI_EXPRESS_EVENT_COLLECTOR_ENDPOINT_ASSOCIATION_CAPABILITY;
+
+
+
+
+
+typedef union _PCI_EXPRESS_CXL_DVSEC_CAPABILITY_REGISTER_V11 {
+
+
+
+
+
+ struct {
+ USHORT CacheCapable:1;
+ USHORT IoCapable:1;
+ USHORT MemCapable:1;
+ USHORT MemHwInitMode:1;
+ USHORT HdmCount:2;
+ USHORT Reserved0:8;
+ USHORT ViralCapable:1;
+ USHORT Reserved1:1;
+ };
+
+ USHORT AsUSHORT;
+} PCI_EXPRESS_CXL_DVSEC_CAPABILITY_REGISTER_V11, *PPCI_EXPRESS_CXL_DVSEC_CAPABILITY_REGISTER_V11;
+
+typedef union _PCI_EXPRESS_CXL_DVSEC_CONTROL_REGISTER {
+ struct {
+ USHORT CacheEnable:1;
+ USHORT IoEnable:1;
+ USHORT MemEnable:1;
+ USHORT CacheSFCoverage:5;
+ USHORT CacheSFGranularity:3;
+ USHORT CacheCleanEviction:1;
+ USHORT Reserved0:2;
+ USHORT ViralEnable:1;
+ USHORT Reserved1:1;
+ };
+
+ USHORT AsUSHORT;
+} PCI_EXPRESS_CXL_DVSEC_CONTROL_REGISTER, *PPCI_EXPRESS_CXL_DVSEC_CONTROL_REGISTER;
+
+typedef union _PCI_EXPRESS_CXL_DVSEC_STATUS_REGISTER {
+ struct {
+ USHORT Reserved0:14;
+ USHORT ViralStatus:1;
+ USHORT Reserved1:1;
+ };
+
+ USHORT AsUSHORT;
+} PCI_EXPRESS_CXL_DVSEC_STATUS_REGISTER, *PPCI_EXPRESS_CXL_DVSEC_STATUS_REGISTER;
+
+typedef union _PCI_EXPRESS_CXL_DVSEC_LOCK_REGISTER {
+ struct {
+ USHORT ConfigLock:1;
+ USHORT Reserved:15;
+ };
+
+ USHORT AsUSHORT;
+} PCI_EXPRESS_CXL_DVSEC_LOCK_REGISTER, *PPCI_EXPRESS_CXL_DVSEC_LOCK_REGISTER;
+
+typedef struct _PCI_EXPRESS_CXL_DVSEC_RANGE_SIZE_HIGH_REGISTER {
+ ULONG MemSizeHigh;
+} PCI_EXPRESS_CXL_DVSEC_RANGE_SIZE_HIGH_REGISTER, *PPCI_EXPRESS_CXL_DVSEC_RANGE_SIZE_HIGH_REGISTER;
+
+typedef union _PCI_EXPRESS_CXL_DVSEC_RANGE_SIZE_LOW_REGISTER_V11 {
+
+
+
+
+
+ struct {
+ ULONG MemInfoValid:1;
+ ULONG MemActive:1;
+ ULONG MediaType:3;
+ ULONG MemClass:3;
+ ULONG DesiredInterleave:3;
+ ULONG Reserved:17;
+ ULONG MemSizeLow:4;
+ };
+
+ ULONG AsULONG;
+} PCI_EXPRESS_CXL_DVSEC_RANGE_SIZE_LOW_REGISTER_V11, *PPCI_EXPRESS_CXL_DVSEC_RANGE_SIZE_LOW_REGISTER_V11;
+
+typedef struct _PCI_EXPRESS_CXL_DVSEC_RANGE_BASE_HIGH_REGISTER {
+ ULONG MemBaseHigh;
+} PCI_EXPRESS_CXL_DVSEC_RANGE_BASE_HIGH_REGISTER, *PPCI_EXPRESS_CXL_DVSEC_RANGE_BASE_HIGH_REGISTER;
+
+typedef union _PCI_EXPRESS_CXL_DVSEC_RANGE_BASE_LOW_REGISTER {
+ struct {
+ ULONG Reserved:28;
+ ULONG MemBaseLow:4;
+ };
+
+ ULONG AsULONG;
+} PCI_EXPRESS_CXL_DVSEC_RANGE_BASE_LOW_REGISTER, *PPCI_EXPRESS_CXL_DVSEC_RANGE_BASE_LOW_REGISTER;
+
+typedef struct _PCI_EXPRESS_CXL_DVSEC_CAPABILITY {
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+ PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_1 DvsecHeader1;
+ PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_2 DvsecHeader2;
+ UCHAR Reserved[46];
+} PCI_EXPRESS_CXL_DVSEC_CAPABILITY, *PPCI_EXPRESS_CXL_DVSEC_CAPABILITY;
+
+typedef struct _PCI_EXPRESS_CXL_DVSEC_CAPABILITY_V11 {
+ PCI_EXPRESS_ENHANCED_CAPABILITY_HEADER Header;
+ PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_1 DvsecHeader1;
+ PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_2 DvsecHeader2;
+ PCI_EXPRESS_CXL_DVSEC_CAPABILITY_REGISTER_V11 Capability;
+ PCI_EXPRESS_CXL_DVSEC_CONTROL_REGISTER Control;
+ PCI_EXPRESS_CXL_DVSEC_STATUS_REGISTER Status;
+ USHORT Control2;
+ USHORT Status2;
+ PCI_EXPRESS_CXL_DVSEC_LOCK_REGISTER Lock;
+ USHORT Reserved;
+ PCI_EXPRESS_CXL_DVSEC_RANGE_SIZE_HIGH_REGISTER Range1SizeHigh;
+ PCI_EXPRESS_CXL_DVSEC_RANGE_SIZE_LOW_REGISTER_V11 Range1SizeLow;
+ PCI_EXPRESS_CXL_DVSEC_RANGE_BASE_HIGH_REGISTER Range1BaseHigh;
+ PCI_EXPRESS_CXL_DVSEC_RANGE_BASE_LOW_REGISTER Range1BaseLow;
+ PCI_EXPRESS_CXL_DVSEC_RANGE_SIZE_HIGH_REGISTER Range2SizeHigh;
+ PCI_EXPRESS_CXL_DVSEC_RANGE_SIZE_LOW_REGISTER_V11 Range2SizeLow;
+ PCI_EXPRESS_CXL_DVSEC_RANGE_BASE_HIGH_REGISTER Range2BaseHigh;
+ PCI_EXPRESS_CXL_DVSEC_RANGE_BASE_LOW_REGISTER Range2BaseLow;
+} PCI_EXPRESS_CXL_DVSEC_CAPABILITY_V11, *PPCI_EXPRESS_CXL_DVSEC_CAPABILITY_V11;
+
+typedef char __C_ASSERT__[(sizeof(PCI_EXPRESS_CXL_DVSEC_CAPABILITY) == 0x38)?1:-1];
+typedef char __C_ASSERT__[(sizeof(PCI_EXPRESS_CXL_DVSEC_CAPABILITY) == sizeof(PCI_EXPRESS_CXL_DVSEC_CAPABILITY_V11))?1:-1];
+
+
+
+
+typedef enum _PCI_LINK_WIDTH {
+ PciLinkWidth_1x = 1<<0,
+ PciLinkWidth_2x = 1<<1,
+ PciLinkWidth_4x = 1<<2,
+ PciLinkWidth_8x = 1<<3,
+ PciLinkWidth_16x = 1<<4,
+ PciLinkWidthMax = 1<<5
+} PCI_LINK_WIDTH, *PPCI_LINK_WIDTH;
+
+
+
+
+
+
+
+
+typedef enum _PCI_LINK_SPEED {
+ PciLinkSpeed2_5Gts = 0,
+ PciLinkSpeed5_0Gts,
+ PciLinkSpeed8_0Gts,
+ PciLinkSpeed16_0Gts,
+ PciLinkSpeed32_0Gts,
+ PciLinkSpeed64_0Gts,
+ PciLinkSpeedMax,
+} PCI_LINK_SPEED, *PPCI_LINK_SPEED;
+
+typedef struct _PCI_LINK_INFORMATION {
+ union {
+ struct {
+ ULONG Gts_2_5:1;
+ ULONG Gts_5_0:1;
+ ULONG Gts_8_0:1;
+ ULONG Gts_16_0:1;
+ ULONG Gts_32_0:1;
+ ULONG Gts_64_0:1;
+ ULONG Reserved:26;
+ };
+ ULONG AsULONG;
+ } AvailableLinkSpeeds;
+ USHORT LinkWidth;
+ PCI_LINK_SPEED CurrentLinkSpeed;
+} PCI_LINK_INFORMATION, *PPCI_LINK_INFORMATION;
+
+typedef
+
+
+NTSTATUS
+PCI_SET_MAX_LINK_BANDWIDTH(
+ PVOID Context,
+ ULONG TargetBandwidth,
+ BOOLEAN WaitForRetrain,
+ PBOOLEAN LinkThrottled,
+ PPCI_LINK_SPEED NewLinkSpeed
+ );
+typedef PCI_SET_MAX_LINK_BANDWIDTH *PPCI_SET_MAX_LINK_BANDWIDTH;
+
+typedef
+
+NTSTATUS PCI_GET_LINK_INFORMATION (
+ PVOID Context,
+ PPCI_LINK_INFORMATION LinkInformation
+);
+typedef PCI_GET_LINK_INFORMATION *PPCI_GET_LINK_INFORMATION;
+
+typedef struct _PCI_LINK_CONFIG_INTERFACE_V1 {
+
+
+
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+
+
+
+ PPCI_SET_MAX_LINK_BANDWIDTH SetMaximumLinkBandwidth;
+ PPCI_GET_LINK_INFORMATION GetLinkInformation;
+
+} PCI_LINK_CONFIG_INTERFACE_V1, *PPCI_LINK_CONFIG_INTERFACE_V1;
+
+
+
+
+
+
+
+
+typedef
+
+
+ULONG
+PCI_READ_WRITE_CONFIG (
+ PVOID Context,
+ ULONG BusOffset,
+ ULONG Slot,
+ PVOID Buffer,
+ ULONG Offset,
+ ULONG Length
+ );
+
+typedef PCI_READ_WRITE_CONFIG *PPCI_READ_WRITE_CONFIG;
+
+typedef
+
+
+void
+PCI_PIN_TO_LINE (
+ PVOID Context,
+ PPCI_COMMON_CONFIG PciData
+ );
+
+typedef PCI_PIN_TO_LINE *PPCI_PIN_TO_LINE;
+
+typedef
+
+
+void
+PCI_LINE_TO_PIN (
+ PVOID Context,
+ PPCI_COMMON_CONFIG PciNewData,
+ PPCI_COMMON_CONFIG PciOldData
+ );
+
+typedef PCI_LINE_TO_PIN *PPCI_LINE_TO_PIN;
+
+typedef
+
+
+void
+PCI_ROOT_BUS_CAPABILITY (
+ PVOID Context,
+ PPCI_ROOT_BUS_HARDWARE_CAPABILITY HardwareCapability
+ );
+
+typedef PCI_ROOT_BUS_CAPABILITY *PPCI_ROOT_BUS_CAPABILITY;
+
+typedef
+
+
+void
+PCI_EXPRESS_WAKE_CONTROL (
+ PVOID Context,
+ BOOLEAN EnableWake
+ );
+
+typedef PCI_EXPRESS_WAKE_CONTROL *PPCI_EXPRESS_WAKE_CONTROL;
+
+typedef
+
+
+void
+PCI_PREPARE_MULTISTAGE_RESUME (
+ PVOID Context
+ );
+
+typedef PCI_PREPARE_MULTISTAGE_RESUME *PPCI_PREPARE_MULTISTAGE_RESUME;
+
+
+typedef struct _PCI_BUS_INTERFACE_STANDARD {
+
+
+
+ USHORT Size;
+ USHORT Version;
+ PVOID Context;
+ PINTERFACE_REFERENCE InterfaceReference;
+ PINTERFACE_DEREFERENCE InterfaceDereference;
+
+
+
+ PPCI_READ_WRITE_CONFIG ReadConfig;
+ PPCI_READ_WRITE_CONFIG WriteConfig;
+ PPCI_PIN_TO_LINE PinToLine;
+ PPCI_LINE_TO_PIN LineToPin;
+ PPCI_ROOT_BUS_CAPABILITY RootBusCapability;
+ PPCI_EXPRESS_WAKE_CONTROL ExpressWakeControl;
+ PPCI_PREPARE_MULTISTAGE_RESUME PrepareMultistageResume;
+
+} PCI_BUS_INTERFACE_STANDARD, *PPCI_BUS_INTERFACE_STANDARD;
+
+
+
+
+
+
+#line 17316 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwSetInformationThread (
+ HANDLE ThreadHandle,
+ THREADINFOCLASS ThreadInformationClass,
+ PVOID ThreadInformation,
+ ULONG ThreadInformationLength
+ );
+#line 17334 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+NTSTATUS
+ZwCreateTimer (
+ PHANDLE TimerHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ TIMER_TYPE TimerType
+ );
+#line 17346 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+NTSTATUS
+ZwOpenTimer (
+ PHANDLE TimerHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes
+ );
+#line 17356 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+NTSTATUS
+ZwCancelTimer (
+ HANDLE TimerHandle,
+ PBOOLEAN CurrentState
+ );
+#line 17365 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+NTSTATUS
+ZwSetTimer (
+ HANDLE TimerHandle,
+ PLARGE_INTEGER DueTime,
+ PTIMER_APC_ROUTINE TimerApcRoutine,
+ PVOID TimerContext,
+ BOOLEAN ResumeTimer,
+ LONG Period,
+ PBOOLEAN PreviousState
+ );
+#line 17379 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+NTSTATUS
+ZwSetTimerEx (
+ HANDLE TimerHandle,
+ TIMER_SET_INFORMATION_CLASS TimerSetInformationClass,
+ PVOID TimerSetInformation,
+ ULONG TimerSetInformationLength
+ );
+#line 17390 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwQueryVolumeInformationFile(
+ HANDLE FileHandle,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID FsInformation,
+ ULONG Length,
+ FS_INFORMATION_CLASS FsInformationClass
+ );
+#line 17404 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwDeviceIoControlFile(
+ HANDLE FileHandle,
+ HANDLE Event,
+ PIO_APC_ROUTINE ApcRoutine,
+ PVOID ApcContext,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ ULONG IoControlCode,
+ PVOID InputBuffer,
+ ULONG InputBufferLength,
+ PVOID OutputBuffer,
+ ULONG OutputBufferLength
+ );
+#line 17423 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwDisplayString(
+ PUNICODE_STRING String
+ );
+#line 17433 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwPowerInformation(
+ POWER_INFORMATION_LEVEL InformationLevel,
+ PVOID InputBuffer,
+ ULONG InputBufferLength,
+ PVOID OutputBuffer,
+ ULONG OutputBufferLength
+ );
+#line 17447 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwAllocateLocallyUniqueId(
+ PLUID Luid
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwTerminateProcess (
+ HANDLE ProcessHandle,
+ NTSTATUS ExitStatus
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwOpenProcess (
+ PHANDLE ProcessHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ PCLIENT_ID ClientId
+ );
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _WHEA_ERROR_SOURCE_TYPE {
+ WheaErrSrcTypeMCE = 0x00,
+ WheaErrSrcTypeCMC = 0x01,
+ WheaErrSrcTypeCPE = 0x02,
+ WheaErrSrcTypeNMI = 0x03,
+ WheaErrSrcTypePCIe = 0x04,
+ WheaErrSrcTypeGeneric = 0x05,
+ WheaErrSrcTypeINIT = 0x06,
+ WheaErrSrcTypeBOOT = 0x07,
+ WheaErrSrcTypeSCIGeneric = 0x08,
+ WheaErrSrcTypeIPFMCA = 0x09,
+ WheaErrSrcTypeIPFCMC = 0x0a,
+ WheaErrSrcTypeIPFCPE = 0x0b,
+ WheaErrSrcTypeGenericV2 = 0x0c,
+ WheaErrSrcTypeSCIGenericV2 = 0x0d,
+ WheaErrSrcTypeBMC = 0x0e,
+ WheaErrSrcTypePMEM = 0x0f,
+ WheaErrSrcTypeDeviceDriver = 0x10,
+ WheaErrSrcTypeSea = 0x11,
+ WheaErrSrcTypeSei = 0x12,
+ WheaErrSrcTypeMax
+} WHEA_ERROR_SOURCE_TYPE, *PWHEA_ERROR_SOURCE_TYPE;
+
+
+
+
+
+
+typedef enum _WHEA_ERROR_SOURCE_STATE {
+ WheaErrSrcStateStopped = 0x01,
+ WheaErrSrcStateStarted = 0x02,
+ WheaErrSrcStateRemoved = 0x03,
+ WheaErrSrcStateRemovePending = 0x04
+} WHEA_ERROR_SOURCE_STATE, *PWHEA_ERROR_SOURCE_STATE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack1.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(disable:4103)
+
+#pragma pack(push,1)
+
+
+#line 30 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack1.h"
+
+
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack1.h"
+#line 34 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack1.h"
+#pragma external_header(pop)
+#line 17579 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+typedef
+NTSTATUS
+(_WHEA_ERROR_SOURCE_INITIALIZE_DEVICE_DRIVER)(
+ PVOID Context,
+ ULONG ErrorSourceId
+ );
+
+typedef _WHEA_ERROR_SOURCE_INITIALIZE_DEVICE_DRIVER
+ *WHEA_ERROR_SOURCE_INITIALIZE_DEVICE_DRIVER;
+
+typedef
+void
+(_WHEA_ERROR_SOURCE_UNINITIALIZE_DEVICE_DRIVER)(
+ PVOID Context
+ );
+
+typedef _WHEA_ERROR_SOURCE_UNINITIALIZE_DEVICE_DRIVER
+ *WHEA_ERROR_SOURCE_UNINITIALIZE_DEVICE_DRIVER;
+
+typedef
+NTSTATUS
+(_WHEA_ERROR_SOURCE_CORRECT_DEVICE_DRIVER)(
+ PVOID ErrorSourceDesc,
+ PULONG MaximumSectionLength
+ );
+
+typedef _WHEA_ERROR_SOURCE_CORRECT_DEVICE_DRIVER
+ *WHEA_ERROR_SOURCE_CORRECT_DEVICE_DRIVER;
+
+typedef struct _WHEA_ERROR_SOURCE_CONFIGURATION_DD {
+ WHEA_ERROR_SOURCE_INITIALIZE_DEVICE_DRIVER Initialize;
+ WHEA_ERROR_SOURCE_UNINITIALIZE_DEVICE_DRIVER Uninitialize;
+ WHEA_ERROR_SOURCE_CORRECT_DEVICE_DRIVER Correct;
+} WHEA_ERROR_SOURCE_CONFIGURATION_DD, *PWHEA_ERROR_SOURCE_CONFIGURATION_DD;
+
+typedef PVOID WHEA_ERROR_HANDLE;
+
+typedef struct _WHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER_V1 {
+ ULONG Version;
+ GUID SourceGuid;
+ USHORT LogTag;
+ UCHAR Reserved[6];
+ WHEA_ERROR_SOURCE_INITIALIZE_DEVICE_DRIVER Initialize;
+ WHEA_ERROR_SOURCE_UNINITIALIZE_DEVICE_DRIVER Uninitialize;
+} WHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER_V1,
+ *PWHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER_V1;
+
+typedef struct _WHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER {
+ ULONG Version;
+ GUID SourceGuid;
+ USHORT LogTag;
+ UCHAR Reserved[6];
+ WHEA_ERROR_SOURCE_INITIALIZE_DEVICE_DRIVER Initialize;
+ WHEA_ERROR_SOURCE_UNINITIALIZE_DEVICE_DRIVER Uninitialize;
+ ULONG MaxSectionDataLength;
+ ULONG MaxSectionsPerReport;
+ GUID CreatorId;
+ GUID PartitionId;
+} WHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER,
+ *PWHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER;
+
+typedef struct _WHEA_DRIVER_BUFFER_SET {
+ ULONG Version;
+
+ PUCHAR Data;
+ ULONG DataSize;
+ LPGUID SectionTypeGuid;
+
+ PUCHAR SectionFriendlyName;
+ PUCHAR Flags;
+} WHEA_DRIVER_BUFFER_SET, *PWHEA_DRIVER_BUFFER_SET;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef union _WHEA_NOTIFICATION_FLAGS {
+ struct {
+ USHORT PollIntervalRW:1;
+ USHORT SwitchToPollingThresholdRW:1;
+ USHORT SwitchToPollingWindowRW:1;
+ USHORT ErrorThresholdRW:1;
+ USHORT ErrorThresholdWindowRW:1;
+ USHORT Reserved:11;
+ } ;
+ USHORT AsUSHORT;
+} WHEA_NOTIFICATION_FLAGS, *PWHEA_NOTIFICATION_FLAGS;
+
+typedef union _XPF_MC_BANK_FLAGS {
+ struct {
+ UCHAR ClearOnInitializationRW:1;
+ UCHAR ControlDataRW:1;
+ UCHAR Reserved:6;
+ } ;
+ UCHAR AsUCHAR;
+} XPF_MC_BANK_FLAGS, *PXPF_MC_BANK_FLAGS;
+
+typedef union _XPF_MCE_FLAGS {
+ struct {
+ ULONG MCG_CapabilityRW:1;
+ ULONG MCG_GlobalControlRW:1;
+ ULONG Reserved:30;
+ } ;
+ ULONG AsULONG;
+} XPF_MCE_FLAGS, *PXPF_MCE_FLAGS;
+
+typedef union _AER_ROOTPORT_DESCRIPTOR_FLAGS {
+ struct {
+ USHORT UncorrectableErrorMaskRW:1;
+ USHORT UncorrectableErrorSeverityRW:1;
+ USHORT CorrectableErrorMaskRW:1;
+ USHORT AdvancedCapsAndControlRW:1;
+ USHORT RootErrorCommandRW:1;
+ USHORT Reserved:11;
+ } ;
+ USHORT AsUSHORT;
+} AER_ROOTPORT_DESCRIPTOR_FLAGS, *PAER_ROOTPORT_DESCRIPTOR_FLAGS;
+
+typedef union _AER_ENDPOINT_DESCRIPTOR_FLAGS {
+ struct {
+ USHORT UncorrectableErrorMaskRW:1;
+ USHORT UncorrectableErrorSeverityRW:1;
+ USHORT CorrectableErrorMaskRW:1;
+ USHORT AdvancedCapsAndControlRW:1;
+ USHORT Reserved:12;
+ } ;
+ USHORT AsUSHORT;
+} AER_ENDPOINT_DESCRIPTOR_FLAGS, *PAER_ENDPOINT_DESCRIPTOR_FLAGS;
+
+typedef union _AER_BRIDGE_DESCRIPTOR_FLAGS {
+ struct {
+ USHORT UncorrectableErrorMaskRW:1;
+ USHORT UncorrectableErrorSeverityRW:1;
+ USHORT CorrectableErrorMaskRW:1;
+ USHORT AdvancedCapsAndControlRW:1;
+ USHORT SecondaryUncorrectableErrorMaskRW:1;
+ USHORT SecondaryUncorrectableErrorSevRW:1;
+ USHORT SecondaryCapsAndControlRW:1;
+ USHORT Reserved:9;
+ } ;
+ USHORT AsUSHORT;
+} AER_BRIDGE_DESCRIPTOR_FLAGS, *PAER_BRIDGE_DESCRIPTOR_FLAGS;
+
+
+
+
+
+
+typedef struct _WHEA_NOTIFICATION_DESCRIPTOR {
+ UCHAR Type;
+ UCHAR Length;
+ WHEA_NOTIFICATION_FLAGS Flags;
+
+ union {
+ struct {
+ ULONG PollInterval;
+ } Polled;
+
+ struct {
+ ULONG PollInterval;
+ ULONG Vector;
+ ULONG SwitchToPollingThreshold;
+ ULONG SwitchToPollingWindow;
+ ULONG ErrorThreshold;
+ ULONG ErrorThresholdWindow;
+ } Interrupt;
+
+ struct {
+ ULONG PollInterval;
+ ULONG Vector;
+ ULONG SwitchToPollingThreshold;
+ ULONG SwitchToPollingWindow;
+ ULONG ErrorThreshold;
+ ULONG ErrorThresholdWindow;
+ } LocalInterrupt;
+
+ struct {
+ ULONG PollInterval;
+ ULONG Vector;
+ ULONG SwitchToPollingThreshold;
+ ULONG SwitchToPollingWindow;
+ ULONG ErrorThreshold;
+ ULONG ErrorThresholdWindow;
+ } Sci;
+
+ struct {
+ ULONG PollInterval;
+ ULONG Vector;
+ ULONG SwitchToPollingThreshold;
+ ULONG SwitchToPollingWindow;
+ ULONG ErrorThreshold;
+ ULONG ErrorThresholdWindow;
+ } Nmi;
+
+ struct {
+ ULONG PollInterval;
+ ULONG Vector;
+ ULONG SwitchToPollingThreshold;
+ ULONG SwitchToPollingWindow;
+ ULONG ErrorThreshold;
+ ULONG ErrorThresholdWindow;
+ } Sea;
+
+ struct {
+ ULONG PollInterval;
+ ULONG Vector;
+ ULONG SwitchToPollingThreshold;
+ ULONG SwitchToPollingWindow;
+ ULONG ErrorThreshold;
+ ULONG ErrorThresholdWindow;
+ } Sei;
+
+ struct {
+ ULONG PollInterval;
+ ULONG Vector;
+ ULONG SwitchToPollingThreshold;
+ ULONG SwitchToPollingWindow;
+ ULONG ErrorThreshold;
+ ULONG ErrorThresholdWindow;
+ } Gsiv;
+ } u;
+} WHEA_NOTIFICATION_DESCRIPTOR, *PWHEA_NOTIFICATION_DESCRIPTOR;
+
+
+
+
+
+
+
+
+typedef struct _WHEA_XPF_MC_BANK_DESCRIPTOR {
+ UCHAR BankNumber;
+ BOOLEAN ClearOnInitialization;
+ UCHAR StatusDataFormat;
+ XPF_MC_BANK_FLAGS Flags;
+ ULONG ControlMsr;
+ ULONG StatusMsr;
+ ULONG AddressMsr;
+ ULONG MiscMsr;
+ ULONGLONG ControlData;
+} WHEA_XPF_MC_BANK_DESCRIPTOR, *PWHEA_XPF_MC_BANK_DESCRIPTOR;
+
+
+
+
+
+
+
+typedef struct _WHEA_XPF_MCE_DESCRIPTOR {
+ USHORT Type;
+ UCHAR Enabled;
+ UCHAR NumberOfBanks;
+ XPF_MCE_FLAGS Flags;
+ ULONGLONG MCG_Capability;
+ ULONGLONG MCG_GlobalControl;
+ WHEA_XPF_MC_BANK_DESCRIPTOR Banks[32];
+} WHEA_XPF_MCE_DESCRIPTOR, *PWHEA_XPF_MCE_DESCRIPTOR;
+
+
+
+
+
+
+
+typedef struct _WHEA_XPF_CMC_DESCRIPTOR {
+ USHORT Type;
+ BOOLEAN Enabled;
+ UCHAR NumberOfBanks;
+ ULONG Reserved;
+ WHEA_NOTIFICATION_DESCRIPTOR Notify;
+ WHEA_XPF_MC_BANK_DESCRIPTOR Banks[32];
+} WHEA_XPF_CMC_DESCRIPTOR, *PWHEA_XPF_CMC_DESCRIPTOR;
+
+typedef struct _WHEA_PCI_SLOT_NUMBER {
+ union {
+ struct {
+ ULONG DeviceNumber:5;
+ ULONG FunctionNumber:3;
+ ULONG Reserved:24;
+ } bits;
+ ULONG AsULONG;
+ } u;
+} WHEA_PCI_SLOT_NUMBER, *PWHEA_PCI_SLOT_NUMBER;
+
+
+
+
+
+
+
+typedef struct _WHEA_XPF_NMI_DESCRIPTOR {
+ USHORT Type;
+ BOOLEAN Enabled;
+} WHEA_XPF_NMI_DESCRIPTOR, *PWHEA_XPF_NMI_DESCRIPTOR;
+
+
+
+
+
+
+
+typedef struct _WHEA_AER_ROOTPORT_DESCRIPTOR {
+ USHORT Type;
+ BOOLEAN Enabled;
+ UCHAR Reserved;
+ ULONG BusNumber;
+ WHEA_PCI_SLOT_NUMBER Slot;
+ USHORT DeviceControl;
+ AER_ROOTPORT_DESCRIPTOR_FLAGS Flags;
+ ULONG UncorrectableErrorMask;
+ ULONG UncorrectableErrorSeverity;
+ ULONG CorrectableErrorMask;
+ ULONG AdvancedCapsAndControl;
+ ULONG RootErrorCommand;
+} WHEA_AER_ROOTPORT_DESCRIPTOR, *PWHEA_AER_ROOTPORT_DESCRIPTOR;
+
+
+
+
+
+
+
+typedef struct _WHEA_AER_ENDPOINT_DESCRIPTOR {
+ USHORT Type;
+ BOOLEAN Enabled;
+ UCHAR Reserved;
+ ULONG BusNumber;
+ WHEA_PCI_SLOT_NUMBER Slot;
+ USHORT DeviceControl;
+ AER_ENDPOINT_DESCRIPTOR_FLAGS Flags;
+ ULONG UncorrectableErrorMask;
+ ULONG UncorrectableErrorSeverity;
+ ULONG CorrectableErrorMask;
+ ULONG AdvancedCapsAndControl;
+} WHEA_AER_ENDPOINT_DESCRIPTOR, *PWHEA_AER_ENDPOINT_DESCRIPTOR;
+
+
+
+
+
+
+
+typedef struct _WHEA_AER_BRIDGE_DESCRIPTOR {
+ USHORT Type;
+ BOOLEAN Enabled;
+ UCHAR Reserved;
+ ULONG BusNumber;
+ WHEA_PCI_SLOT_NUMBER Slot;
+ USHORT DeviceControl;
+ AER_BRIDGE_DESCRIPTOR_FLAGS Flags;
+ ULONG UncorrectableErrorMask;
+ ULONG UncorrectableErrorSeverity;
+ ULONG CorrectableErrorMask;
+ ULONG AdvancedCapsAndControl;
+ ULONG SecondaryUncorrectableErrorMask;
+ ULONG SecondaryUncorrectableErrorSev;
+ ULONG SecondaryCapsAndControl;
+} WHEA_AER_BRIDGE_DESCRIPTOR, *PWHEA_AER_BRIDGE_DESCRIPTOR;
+
+
+
+
+
+
+
+typedef struct _WHEA_GENERIC_ERROR_DESCRIPTOR {
+
+
+
+
+
+ USHORT Type;
+
+
+
+
+
+ UCHAR Reserved;
+
+
+
+
+
+ UCHAR Enabled;
+
+
+
+
+
+ ULONG ErrStatusBlockLength;
+
+
+
+
+
+
+ ULONG RelatedErrorSourceId;
+
+
+
+
+
+
+
+ UCHAR ErrStatusAddressSpaceID;
+ UCHAR ErrStatusAddressBitWidth;
+ UCHAR ErrStatusAddressBitOffset;
+ UCHAR ErrStatusAddressAccessSize;
+ LARGE_INTEGER ErrStatusAddress;
+
+
+
+
+
+
+ WHEA_NOTIFICATION_DESCRIPTOR Notify;
+
+} WHEA_GENERIC_ERROR_DESCRIPTOR, *PWHEA_GENERIC_ERROR_DESCRIPTOR;
+
+typedef struct _WHEA_GENERIC_ERROR_DESCRIPTOR_V2 {
+
+
+
+
+
+ USHORT Type;
+
+
+
+
+
+ UCHAR Reserved;
+
+
+
+
+
+ UCHAR Enabled;
+
+
+
+
+
+ ULONG ErrStatusBlockLength;
+
+
+
+
+
+
+ ULONG RelatedErrorSourceId;
+
+
+
+
+
+
+
+ UCHAR ErrStatusAddressSpaceID;
+ UCHAR ErrStatusAddressBitWidth;
+ UCHAR ErrStatusAddressBitOffset;
+ UCHAR ErrStatusAddressAccessSize;
+ LARGE_INTEGER ErrStatusAddress;
+
+
+
+
+
+
+ WHEA_NOTIFICATION_DESCRIPTOR Notify;
+
+
+
+
+
+
+
+ UCHAR ReadAckAddressSpaceID;
+ UCHAR ReadAckAddressBitWidth;
+ UCHAR ReadAckAddressBitOffset;
+ UCHAR ReadAckAddressAccessSize;
+ LARGE_INTEGER ReadAckAddress;
+ ULONGLONG ReadAckPreserveMask;
+ ULONGLONG ReadAckWriteMask;
+
+} WHEA_GENERIC_ERROR_DESCRIPTOR_V2, *PWHEA_GENERIC_ERROR_DESCRIPTOR_V2;
+
+typedef struct _WHEA_DEVICE_DRIVER_DESCRIPTOR {
+ USHORT Type;
+ BOOLEAN Enabled;
+ UCHAR Reserved;
+ GUID SourceGuid;
+ USHORT LogTag;
+ USHORT Reserved2;
+ ULONG PacketLength;
+ ULONG PacketCount;
+ PUCHAR PacketBuffer;
+ WHEA_ERROR_SOURCE_CONFIGURATION_DD Config;
+ GUID CreatorId;
+ GUID PartitionId;
+ ULONG MaxSectionDataLength;
+ ULONG MaxSectionsPerRecord;
+ PUCHAR PacketStateBuffer;
+ LONG OpenHandles;
+} WHEA_DEVICE_DRIVER_DESCRIPTOR, *PWHEA_DEVICE_DRIVER_DESCRIPTOR;
+
+typedef struct _WHEA_IPF_MCA_DESCRIPTOR {
+ USHORT Type;
+ UCHAR Enabled;
+ UCHAR Reserved;
+} WHEA_IPF_MCA_DESCRIPTOR, *PWHEA_IPF_MCA_DESCRIPTOR;
+
+typedef struct _WHEA_IPF_CMC_DESCRIPTOR {
+ USHORT Type;
+ UCHAR Enabled;
+ UCHAR Reserved;
+} WHEA_IPF_CMC_DESCRIPTOR, *PWHEA_IPF_CMC_DESCRIPTOR;
+
+typedef struct _WHEA_IPF_CPE_DESCRIPTOR {
+ USHORT Type;
+ UCHAR Enabled;
+ UCHAR Reserved;
+} WHEA_IPF_CPE_DESCRIPTOR, *PWHEA_IPF_CPE_DESCRIPTOR;
+
+typedef struct _WHEA_ERROR_SOURCE_DESCRIPTOR {
+ ULONG Length;
+ ULONG Version;
+ WHEA_ERROR_SOURCE_TYPE Type;
+ WHEA_ERROR_SOURCE_STATE State;
+ ULONG MaxRawDataLength;
+ ULONG NumRecordsToPreallocate;
+ ULONG MaxSectionsPerRecord;
+ ULONG ErrorSourceId;
+ ULONG PlatformErrorSourceId;
+ ULONG Flags;
+
+ union {
+ WHEA_XPF_MCE_DESCRIPTOR XpfMceDescriptor;
+ WHEA_XPF_CMC_DESCRIPTOR XpfCmcDescriptor;
+ WHEA_XPF_NMI_DESCRIPTOR XpfNmiDescriptor;
+ WHEA_IPF_MCA_DESCRIPTOR IpfMcaDescriptor;
+ WHEA_IPF_CMC_DESCRIPTOR IpfCmcDescriptor;
+ WHEA_IPF_CPE_DESCRIPTOR IpfCpeDescriptor;
+ WHEA_AER_ROOTPORT_DESCRIPTOR AerRootportDescriptor;
+ WHEA_AER_ENDPOINT_DESCRIPTOR AerEndpointDescriptor;
+ WHEA_AER_BRIDGE_DESCRIPTOR AerBridgeDescriptor;
+ WHEA_GENERIC_ERROR_DESCRIPTOR GenErrDescriptor;
+ WHEA_GENERIC_ERROR_DESCRIPTOR_V2 GenErrDescriptorV2;
+ WHEA_DEVICE_DRIVER_DESCRIPTOR DeviceDriverDescriptor;
+ } Info;
+
+} WHEA_ERROR_SOURCE_DESCRIPTOR, *PWHEA_ERROR_SOURCE_DESCRIPTOR;
+
+__inline
+BOOLEAN
+WheaIsGhesAssistSrc (
+ PWHEA_ERROR_SOURCE_DESCRIPTOR ErrSrc
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+ if ((ErrSrc->Type == WheaErrSrcTypeGeneric) &&
+ (ErrSrc->Info.GenErrDescriptor.RelatedErrorSourceId !=
+ 0xFFFF)) {
+
+ return 1;
+ }
+
+ return 0;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _IPMI_OS_SEL_RECORD_TYPE {
+ IpmiOsSelRecordTypeWhea = 0,
+ IpmiOsSelRecordTypeOther,
+ IpmiOsSelRecordTypeWheaErrorXpfMca,
+ IpmiOsSelRecordTypeWheaErrorPci,
+ IpmiOsSelRecordTypeWheaErrorNmi,
+ IpmiOsSelRecordTypeWheaErrorOther,
+ IpmiOsSelRecordTypeRaw,
+ IpmiOsSelRecordTypeDriver,
+ IpmiOsSelRecordTypeBugcheckRecovery,
+ IpmiOsSelRecordTypeBugcheckData,
+ IpmiOsSelRecordTypeMax
+} IPMI_OS_SEL_RECORD_TYPE, *PIPMI_OS_SEL_RECORD_TYPE;
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _IPMI_OS_SEL_RECORD {
+ ULONG Signature;
+ ULONG Version;
+ ULONG Length;
+ IPMI_OS_SEL_RECORD_TYPE RecordType;
+ ULONG DataLength;
+ UCHAR Data[1];
+} IPMI_OS_SEL_RECORD, *PIPMI_OS_SEL_RECORD;
+
+
+
+
+
+
+
+
+
+
+
+
+typedef union _DIMM_ADDRESS {
+
+
+
+
+
+ struct {
+ UINT64 SocketId : 4;
+ UINT64 MemoryControllerId : 2;
+ UINT64 ChannelId : 2;
+ UINT64 DimmSlot : 2;
+ UINT64 DimmRank : 2;
+ UINT64 Device : 5;
+ UINT64 ChipSelect : 3;
+ UINT64 Bank : 8;
+ UINT64 Dq : 4;
+ UINT64 Reserved : 32;
+ UINT32 Row;
+ UINT32 Column;
+ UINT64 Info;
+ } Ddr4;
+
+
+
+
+
+ struct {
+ UINT64 SocketId : 5;
+ UINT64 MemoryControllerId : 4;
+ UINT64 ChannelId : 3;
+ UINT64 SubChannelId : 2;
+ UINT64 DimmSlot : 2;
+ UINT64 DimmRank : 4;
+ UINT64 Device : 6;
+ UINT64 ChipId : 4;
+ UINT64 Bank : 8;
+ UINT64 Dq : 5;
+ UINT64 Reserved : 21;
+ UINT32 Row;
+ UINT32 Column;
+ UINT64 Info;
+ } Ddr5;
+} DIMM_ADDRESS, *PDIMM_ADDRESS;
+
+typedef enum _PAGE_OFFLINE_ERROR_TYPES {
+ BitErrorDdr4,
+ RowErrorDdr4,
+ BitErrorDdr5,
+ RowErrorDdr5
+} PAGE_OFFLINE_ERROR_TYPES, *PPAGE_OFFLINE_ERROR_TYPES;
+
+typedef union _PAGE_OFFLINE_VALID_BITS {
+ struct {
+ UINT8 PhysicalAddress: 1;
+ UINT8 MemDefect: 1;
+ UINT8 Reserved: 6;
+ };
+
+ UINT8 AsUINT8;
+} PAGE_OFFLINE_VALID_BITS, *PPAGE_OFFLINE_VALID_BITS;
+
+typedef struct _DIMM_ADDR_VALID_BITS_DDR4 {
+ UINT32 SocketId: 1;
+ UINT32 MemoryControllerId: 1;
+ UINT32 ChannelId: 1;
+ UINT32 DimmSlot: 1;
+ UINT32 DimmRank: 1;
+ UINT32 Device: 1;
+ UINT32 ChipSelect: 1;
+ UINT32 Bank: 1;
+ UINT32 Dq: 1;
+ UINT32 Row: 1;
+ UINT32 Column: 1;
+ UINT32 Info: 1;
+ UINT32 Reserved: 20;
+} DIMM_ADDR_VALID_BITS_DDR4, *PDIMM_ADDR_VALID_BITS_DDR4;
+
+typedef struct _DIMM_ADDR_VALID_BITS_DDR5 {
+ UINT32 SocketId : 1;
+ UINT32 MemoryControllerId : 1;
+ UINT32 ChannelId : 1;
+ UINT32 SubChannelId : 1;
+ UINT32 DimmSlot : 1;
+ UINT32 DimmRank : 1;
+ UINT32 Device : 1;
+ UINT32 ChipId : 1;
+ UINT32 Bank : 1;
+ UINT32 Dq : 1;
+ UINT32 Row : 1;
+ UINT32 Column : 1;
+ UINT32 Info : 1;
+ UINT32 Reserved : 19;
+} DIMM_ADDR_VALID_BITS_DDR5, *PDIMM_ADDR_VALID_BITS_DDR5;
+
+typedef union _DIMM_ADDR_VALID_BITS {
+ DIMM_ADDR_VALID_BITS_DDR4 VB_DDR4;
+ DIMM_ADDR_VALID_BITS_DDR5 VB_DDR5;
+ UINT32 AsUINT32;
+} DIMM_ADDR_VALID_BITS, *PDIMM_ADDR_VALID_BITS;
+
+typedef struct _DIMM_INFO {
+ DIMM_ADDRESS DimmAddress;
+ DIMM_ADDR_VALID_BITS ValidBits;
+} DIMM_INFO, *PDIMM_INFO;
+
+typedef struct _MEMORY_DEFECT {
+ UINT32 Version;
+ DIMM_INFO DimmInfo;
+ PAGE_OFFLINE_ERROR_TYPES ErrType;
+} MEMORY_DEFECT, * PMEMORY_DEFECT;
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(disable:4103)
+
+#pragma pack(pop)
+
+
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+
+
+#line 36 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+#line 37 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+#pragma external_header(pop)
+#line 18380 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack1.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(disable:4103)
+
+#pragma pack(push,1)
+
+
+#line 30 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack1.h"
+
+
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack1.h"
+#line 34 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack1.h"
+#pragma external_header(pop)
+#line 18451 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 18467 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+typedef union _WHEA_REVISION {
+ struct {
+ UCHAR MinorRevision;
+ UCHAR MajorRevision;
+ } ;
+ USHORT AsUSHORT;
+} WHEA_REVISION, *PWHEA_REVISION;
+
+typedef enum _WHEA_ERROR_SEVERITY {
+ WheaErrSevRecoverable = 0,
+ WheaErrSevFatal = 1,
+ WheaErrSevCorrected = 2,
+ WheaErrSevInformational = 3
+} WHEA_ERROR_SEVERITY, *PWHEA_ERROR_SEVERITY;
+
+typedef union _WHEA_TIMESTAMP {
+ struct {
+ ULONGLONG Seconds:8;
+ ULONGLONG Minutes:8;
+ ULONGLONG Hours:8;
+ ULONGLONG Precise:1;
+ ULONGLONG Reserved:7;
+ ULONGLONG Day:8;
+ ULONGLONG Month:8;
+ ULONGLONG Year:8;
+ ULONGLONG Century:8;
+ } ;
+ LARGE_INTEGER AsLARGE_INTEGER;
+} WHEA_TIMESTAMP, *PWHEA_TIMESTAMP;
+
+typedef union _WHEA_PERSISTENCE_INFO {
+ struct {
+ ULONGLONG Signature:16;
+ ULONGLONG Length:24;
+ ULONGLONG Identifier:16;
+ ULONGLONG Attributes:2;
+ ULONGLONG DoNotLog:1;
+ ULONGLONG Reserved:5;
+ } ;
+ ULONGLONG AsULONGLONG;
+} WHEA_PERSISTENCE_INFO, *PWHEA_PERSISTENCE_INFO;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef union _WHEA_ERROR_STATUS {
+ ULONGLONG ErrorStatus;
+ struct {
+ ULONGLONG Reserved1:8;
+ ULONGLONG ErrorType:8;
+ ULONGLONG Address:1;
+ ULONGLONG Control:1;
+ ULONGLONG Data:1;
+ ULONGLONG Responder:1;
+ ULONGLONG Requester:1;
+ ULONGLONG FirstError:1;
+ ULONGLONG Overflow:1;
+ ULONGLONG Reserved2:41;
+ } ;
+} WHEA_ERROR_STATUS, *PWHEA_ERROR_STATUS;
+
+
+
+typedef union _WHEA_ERROR_RECORD_HEADER_VALIDBITS {
+ struct {
+ ULONG PlatformId:1;
+ ULONG Timestamp:1;
+ ULONG PartitionId:1;
+ ULONG Reserved:29;
+ } ;
+ ULONG AsULONG;
+} WHEA_ERROR_RECORD_HEADER_VALIDBITS, *PWHEA_ERROR_RECORD_HEADER_VALIDBITS;
+
+
+
+
+
+typedef union _WHEA_ERROR_RECORD_HEADER_FLAGS {
+ struct {
+ ULONG Recovered:1;
+ ULONG PreviousError:1;
+ ULONG Simulated:1;
+ ULONG DeviceDriver:1;
+ ULONG CriticalEvent:1;
+ ULONG PersistPfn:1;
+ ULONG SectionsTruncated:1;
+ ULONG RecoveryInProgress:1;
+ ULONG Throttle:1;
+ ULONG Reserved:23;
+ } ;
+ ULONG AsULONG;
+} WHEA_ERROR_RECORD_HEADER_FLAGS, *PWHEA_ERROR_RECORD_HEADER_FLAGS;
+
+
+
+
+
+
+typedef struct _WHEA_ERROR_RECORD_HEADER {
+ ULONG Signature;
+ WHEA_REVISION Revision;
+ ULONG SignatureEnd;
+ USHORT SectionCount;
+ WHEA_ERROR_SEVERITY Severity;
+ WHEA_ERROR_RECORD_HEADER_VALIDBITS ValidBits;
+
+#line 18599 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+ ULONG Length;
+ WHEA_TIMESTAMP Timestamp;
+ GUID PlatformId;
+ GUID PartitionId;
+ GUID CreatorId;
+ GUID NotifyType;
+ ULONGLONG RecordId;
+ WHEA_ERROR_RECORD_HEADER_FLAGS Flags;
+ WHEA_PERSISTENCE_INFO PersistenceInfo;
+ union {
+ struct {
+ ULONG OsBuildNumber;
+ UCHAR Reserved2[8];
+ };
+
+ UCHAR Reserved[12];
+ };
+} WHEA_ERROR_RECORD_HEADER, *PWHEA_ERROR_RECORD_HEADER;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_HEADER *)0)->Signature)) == (0)) && ((sizeof(((WHEA_ERROR_RECORD_HEADER *)0)->Signature)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_HEADER *)0)->Revision)) == (4)) && ((sizeof(((WHEA_ERROR_RECORD_HEADER *)0)->Revision)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_HEADER *)0)->SignatureEnd)) == (6)) && ((sizeof(((WHEA_ERROR_RECORD_HEADER *)0)->SignatureEnd)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_HEADER *)0)->SectionCount)) == (10)) && ((sizeof(((WHEA_ERROR_RECORD_HEADER *)0)->SectionCount)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_HEADER *)0)->Severity)) == (12)) && ((sizeof(((WHEA_ERROR_RECORD_HEADER *)0)->Severity)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_HEADER *)0)->ValidBits)) == (16)) && ((sizeof(((WHEA_ERROR_RECORD_HEADER *)0)->ValidBits)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_HEADER *)0)->Length)) == (20)) && ((sizeof(((WHEA_ERROR_RECORD_HEADER *)0)->Length)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_HEADER *)0)->Timestamp)) == (24)) && ((sizeof(((WHEA_ERROR_RECORD_HEADER *)0)->Timestamp)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_HEADER *)0)->PlatformId)) == (32)) && ((sizeof(((WHEA_ERROR_RECORD_HEADER *)0)->PlatformId)) == (16))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_HEADER *)0)->PartitionId)) == (48)) && ((sizeof(((WHEA_ERROR_RECORD_HEADER *)0)->PartitionId)) == (16))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_HEADER *)0)->CreatorId)) == (64)) && ((sizeof(((WHEA_ERROR_RECORD_HEADER *)0)->CreatorId)) == (16))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_HEADER *)0)->NotifyType)) == (80)) && ((sizeof(((WHEA_ERROR_RECORD_HEADER *)0)->NotifyType)) == (16))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_HEADER *)0)->RecordId)) == (96)) && ((sizeof(((WHEA_ERROR_RECORD_HEADER *)0)->RecordId)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_HEADER *)0)->Flags)) == (104)) && ((sizeof(((WHEA_ERROR_RECORD_HEADER *)0)->Flags)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_HEADER *)0)->PersistenceInfo)) == (108)) && ((sizeof(((WHEA_ERROR_RECORD_HEADER *)0)->PersistenceInfo)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_HEADER *)0)->Reserved)) == (116)) && ((sizeof(((WHEA_ERROR_RECORD_HEADER *)0)->Reserved)) == (12))))?1:-1];
+
+
+
+typedef union _WHEA_ERROR_RECORD_SECTION_DESCRIPTOR_FLAGS {
+ struct {
+ ULONG Primary:1;
+ ULONG ContainmentWarning:1;
+ ULONG Reset:1;
+ ULONG ThresholdExceeded:1;
+ ULONG ResourceNotAvailable:1;
+ ULONG LatentError:1;
+ ULONG Propagated:1;
+ ULONG FruTextByPlugin:1;
+ ULONG Reserved:24;
+ } ;
+ ULONG AsULONG;
+} WHEA_ERROR_RECORD_SECTION_DESCRIPTOR_FLAGS,
+ *PWHEA_ERROR_RECORD_SECTION_DESCRIPTOR_FLAGS;
+
+
+
+
+
+
+
+
+
+
+typedef union _WHEA_ERROR_RECORD_SECTION_DESCRIPTOR_VALIDBITS {
+ struct {
+ UCHAR FRUId:1;
+ UCHAR FRUText:1;
+ UCHAR Reserved:6;
+ } ;
+ UCHAR AsUCHAR;
+} WHEA_ERROR_RECORD_SECTION_DESCRIPTOR_VALIDBITS,
+ *PWHEA_ERROR_RECORD_SECTION_DESCRIPTOR_VALIDBITS;
+
+typedef struct _WHEA_ERROR_RECORD_SECTION_DESCRIPTOR {
+ ULONG SectionOffset;
+ ULONG SectionLength;
+ WHEA_REVISION Revision;
+ WHEA_ERROR_RECORD_SECTION_DESCRIPTOR_VALIDBITS ValidBits;
+ UCHAR Reserved;
+ WHEA_ERROR_RECORD_SECTION_DESCRIPTOR_FLAGS Flags;
+ GUID SectionType;
+ GUID FRUId;
+ WHEA_ERROR_SEVERITY SectionSeverity;
+ CCHAR FRUText[20];
+} WHEA_ERROR_RECORD_SECTION_DESCRIPTOR, *PWHEA_ERROR_RECORD_SECTION_DESCRIPTOR;
+
+
+
+
+
+
+
+
+#line 18707 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_SECTION_DESCRIPTOR *)0)->SectionOffset)) == (0)) && ((sizeof(((WHEA_ERROR_RECORD_SECTION_DESCRIPTOR *)0)->SectionOffset)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_SECTION_DESCRIPTOR *)0)->SectionLength)) == (4)) && ((sizeof(((WHEA_ERROR_RECORD_SECTION_DESCRIPTOR *)0)->SectionLength)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_SECTION_DESCRIPTOR *)0)->Revision)) == (8)) && ((sizeof(((WHEA_ERROR_RECORD_SECTION_DESCRIPTOR *)0)->Revision)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_SECTION_DESCRIPTOR *)0)->ValidBits)) == (10)) && ((sizeof(((WHEA_ERROR_RECORD_SECTION_DESCRIPTOR *)0)->ValidBits)) == (1))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_SECTION_DESCRIPTOR *)0)->Reserved)) == (11)) && ((sizeof(((WHEA_ERROR_RECORD_SECTION_DESCRIPTOR *)0)->Reserved)) == (1))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_SECTION_DESCRIPTOR *)0)->Flags)) == (12)) && ((sizeof(((WHEA_ERROR_RECORD_SECTION_DESCRIPTOR *)0)->Flags)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_SECTION_DESCRIPTOR *)0)->SectionType)) == (16)) && ((sizeof(((WHEA_ERROR_RECORD_SECTION_DESCRIPTOR *)0)->SectionType)) == (16))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_SECTION_DESCRIPTOR *)0)->FRUId)) == (32)) && ((sizeof(((WHEA_ERROR_RECORD_SECTION_DESCRIPTOR *)0)->FRUId)) == (16))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_SECTION_DESCRIPTOR *)0)->SectionSeverity)) == (48)) && ((sizeof(((WHEA_ERROR_RECORD_SECTION_DESCRIPTOR *)0)->SectionSeverity)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD_SECTION_DESCRIPTOR *)0)->FRUText)) == (52)) && ((sizeof(((WHEA_ERROR_RECORD_SECTION_DESCRIPTOR *)0)->FRUText)) == (20))))?1:-1];
+
+
+
+typedef struct _WHEA_ERROR_RECORD {
+ WHEA_ERROR_RECORD_HEADER Header;
+
+ WHEA_ERROR_RECORD_SECTION_DESCRIPTOR SectionDescriptor[1];
+} WHEA_ERROR_RECORD, *PWHEA_ERROR_RECORD;
+
+
+
+
+
+
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD *)0)->Header)) == (0)) && ((sizeof(((WHEA_ERROR_RECORD *)0)->Header)) == (128))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_RECORD *)0)->SectionDescriptor)) == (128)) && ((sizeof(((WHEA_ERROR_RECORD *)0)->SectionDescriptor)) == (72))))?1:-1];
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef union _WHEA_PROCESSOR_FAMILY_INFO {
+ struct {
+ ULONG Stepping:4;
+ ULONG Model:4;
+ ULONG Family:4;
+ ULONG ProcessorType:2;
+ ULONG Reserved1:2;
+ ULONG ExtendedModel:4;
+ ULONG ExtendedFamily:8;
+ ULONG Reserved2:4;
+ ULONG NativeModelId;
+ } ;
+ ULONGLONG AsULONGLONG;
+} WHEA_PROCESSOR_FAMILY_INFO, *PWHEA_PROCESSOR_FAMILY_INFO;
+
+typedef union _WHEA_PROCESSOR_GENERIC_ERROR_SECTION_VALIDBITS {
+ struct {
+ ULONGLONG ProcessorType:1;
+ ULONGLONG InstructionSet:1;
+ ULONGLONG ErrorType:1;
+ ULONGLONG Operation:1;
+ ULONGLONG Flags:1;
+ ULONGLONG Level:1;
+ ULONGLONG CPUVersion:1;
+ ULONGLONG CPUBrandString:1;
+ ULONGLONG ProcessorId:1;
+ ULONGLONG TargetAddress:1;
+ ULONGLONG RequesterId:1;
+ ULONGLONG ResponderId:1;
+ ULONGLONG InstructionPointer:1;
+ ULONGLONG NativeModelId:1;
+ ULONGLONG Reserved:50;
+ } ;
+ ULONGLONG ValidBits;
+} WHEA_PROCESSOR_GENERIC_ERROR_SECTION_VALIDBITS,
+ *PWHEA_PROCESSOR_GENERIC_ERROR_SECTION_VALIDBITS;
+
+typedef struct _WHEA_PROCESSOR_GENERIC_ERROR_SECTION {
+ WHEA_PROCESSOR_GENERIC_ERROR_SECTION_VALIDBITS ValidBits;
+ UCHAR ProcessorType;
+ UCHAR InstructionSet;
+ UCHAR ErrorType;
+ UCHAR Operation;
+ UCHAR Flags;
+ UCHAR Level;
+ USHORT Reserved;
+ ULONGLONG CPUVersion;
+ UCHAR CPUBrandString[128];
+ ULONGLONG ProcessorId;
+ ULONGLONG TargetAddress;
+ ULONGLONG RequesterId;
+ ULONGLONG ResponderId;
+ ULONGLONG InstructionPointer;
+} WHEA_PROCESSOR_GENERIC_ERROR_SECTION, *PWHEA_PROCESSOR_GENERIC_ERROR_SECTION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 18837 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->ValidBits)) == (0)) && ((sizeof(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->ValidBits)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->ProcessorType)) == (8)) && ((sizeof(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->ProcessorType)) == (1))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->InstructionSet)) == (9)) && ((sizeof(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->InstructionSet)) == (1))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->ErrorType)) == (10)) && ((sizeof(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->ErrorType)) == (1))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->Operation)) == (11)) && ((sizeof(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->Operation)) == (1))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->Flags)) == (12)) && ((sizeof(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->Flags)) == (1))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->Level)) == (13)) && ((sizeof(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->Level)) == (1))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->Reserved)) == (14)) && ((sizeof(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->Reserved)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->CPUVersion)) == (16)) && ((sizeof(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->CPUVersion)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->CPUBrandString)) == (24)) && ((sizeof(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->CPUBrandString)) == (128))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->ProcessorId)) == (152)) && ((sizeof(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->ProcessorId)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->TargetAddress)) == (160)) && ((sizeof(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->TargetAddress)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->RequesterId)) == (168)) && ((sizeof(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->RequesterId)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->ResponderId)) == (176)) && ((sizeof(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->ResponderId)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->InstructionPointer)) == (184)) && ((sizeof(((WHEA_PROCESSOR_GENERIC_ERROR_SECTION *)0)->InstructionPointer)) == (8))))?1:-1];
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef union _WHEA_XPF_CACHE_CHECK {
+ struct {
+ ULONGLONG TransactionTypeValid:1;
+ ULONGLONG OperationValid:1;
+ ULONGLONG LevelValid:1;
+ ULONGLONG ProcessorContextCorruptValid:1;
+ ULONGLONG UncorrectedValid:1;
+ ULONGLONG PreciseIPValid:1;
+ ULONGLONG RestartableIPValid:1;
+ ULONGLONG OverflowValid:1;
+ ULONGLONG ReservedValid:8;
+
+ ULONGLONG TransactionType:2;
+ ULONGLONG Operation:4;
+ ULONGLONG Level:3;
+ ULONGLONG ProcessorContextCorrupt:1;
+ ULONGLONG Uncorrected:1;
+ ULONGLONG PreciseIP:1;
+ ULONGLONG RestartableIP:1;
+ ULONGLONG Overflow:1;
+
+ ULONGLONG Reserved:34;
+ } ;
+ ULONGLONG XpfCacheCheck;
+} WHEA_XPF_CACHE_CHECK, *PWHEA_XPF_CACHE_CHECK;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef union _WHEA_XPF_TLB_CHECK {
+ struct {
+ ULONGLONG TransactionTypeValid:1;
+ ULONGLONG OperationValid:1;
+ ULONGLONG LevelValid:1;
+ ULONGLONG ProcessorContextCorruptValid:1;
+ ULONGLONG UncorrectedValid:1;
+ ULONGLONG PreciseIPValid:1;
+ ULONGLONG RestartableIPValid:1;
+ ULONGLONG OverflowValid:1;
+ ULONGLONG ReservedValid:8;
+
+ ULONGLONG TransactionType:2;
+ ULONGLONG Operation:4;
+ ULONGLONG Level:3;
+ ULONGLONG ProcessorContextCorrupt:1;
+ ULONGLONG Uncorrected:1;
+ ULONGLONG PreciseIP:1;
+ ULONGLONG RestartableIP:1;
+ ULONGLONG Overflow:1;
+ ULONGLONG Reserved:34;
+ } ;
+ ULONGLONG XpfTLBCheck;
+} WHEA_XPF_TLB_CHECK, *PWHEA_XPF_TLB_CHECK;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef union _WHEA_XPF_BUS_CHECK {
+ struct {
+ ULONGLONG TransactionTypeValid:1;
+ ULONGLONG OperationValid:1;
+ ULONGLONG LevelValid:1;
+ ULONGLONG ProcessorContextCorruptValid:1;
+ ULONGLONG UncorrectedValid:1;
+ ULONGLONG PreciseIPValid:1;
+ ULONGLONG RestartableIPValid:1;
+ ULONGLONG OverflowValid:1;
+ ULONGLONG ParticipationValid:1;
+ ULONGLONG TimeoutValid:1;
+ ULONGLONG AddressSpaceValid:1;
+ ULONGLONG ReservedValid:5;
+
+ ULONGLONG TransactionType:2;
+ ULONGLONG Operation:4;
+ ULONGLONG Level:3;
+ ULONGLONG ProcessorContextCorrupt:1;
+ ULONGLONG Uncorrected:1;
+ ULONGLONG PreciseIP:1;
+ ULONGLONG RestartableIP:1;
+ ULONGLONG Overflow:1;
+ ULONGLONG Participation:2;
+ ULONGLONG Timeout:1;
+ ULONGLONG AddressSpace:2;
+ ULONGLONG Reserved:29;
+ } ;
+ ULONGLONG XpfBusCheck;
+} WHEA_XPF_BUS_CHECK, *PWHEA_XPF_BUS_CHECK;
+
+
+
+
+
+
+
+
+
+
+
+
+typedef union _WHEA_XPF_MS_CHECK {
+ struct {
+ ULONGLONG ErrorTypeValid:1;
+ ULONGLONG ProcessorContextCorruptValid:1;
+ ULONGLONG UncorrectedValid:1;
+ ULONGLONG PreciseIPValid:1;
+ ULONGLONG RestartableIPValid:1;
+ ULONGLONG OverflowValid:1;
+ ULONGLONG ReservedValue:10;
+
+ ULONGLONG ErrorType:3;
+ ULONGLONG ProcessorContextCorrupt:1;
+ ULONGLONG Uncorrected:1;
+ ULONGLONG PreciseIP:1;
+ ULONGLONG RestartableIP:1;
+ ULONGLONG Overflow:1;
+ ULONGLONG Reserved:40;
+ } ;
+ ULONGLONG XpfMsCheck;
+} WHEA_XPF_MS_CHECK, *PWHEA_XPF_MS_CHECK;
+
+
+
+
+
+typedef union _WHEA_XPF_PROCINFO_VALIDBITS {
+ struct {
+ ULONGLONG CheckInfo:1;
+ ULONGLONG TargetId:1;
+ ULONGLONG RequesterId:1;
+ ULONGLONG ResponderId:1;
+ ULONGLONG InstructionPointer:1;
+ ULONGLONG Reserved:59;
+ } ;
+ ULONGLONG ValidBits;
+} WHEA_XPF_PROCINFO_VALIDBITS, *PWHEA_XPF_PROCINFO_VALIDBITS;
+
+typedef struct _WHEA_XPF_PROCINFO {
+ GUID CheckInfoId;
+ WHEA_XPF_PROCINFO_VALIDBITS ValidBits;
+ union {
+ WHEA_XPF_CACHE_CHECK CacheCheck;
+ WHEA_XPF_TLB_CHECK TlbCheck;
+ WHEA_XPF_BUS_CHECK BusCheck;
+ WHEA_XPF_MS_CHECK MsCheck;
+ ULONGLONG AsULONGLONG;
+ } CheckInfo;
+ ULONGLONG TargetId;
+ ULONGLONG RequesterId;
+ ULONGLONG ResponderId;
+ ULONGLONG InstructionPointer;
+} WHEA_XPF_PROCINFO, *PWHEA_XPF_PROCINFO;
+
+
+
+
+
+typedef struct _WHEA_X86_REGISTER_STATE {
+ ULONG Eax;
+ ULONG Ebx;
+ ULONG Ecx;
+ ULONG Edx;
+ ULONG Esi;
+ ULONG Edi;
+ ULONG Ebp;
+ ULONG Esp;
+ USHORT Cs;
+ USHORT Ds;
+ USHORT Ss;
+ USHORT Es;
+ USHORT Fs;
+ USHORT Gs;
+ ULONG Eflags;
+ ULONG Eip;
+ ULONG Cr0;
+ ULONG Cr1;
+ ULONG Cr2;
+ ULONG Cr3;
+ ULONG Cr4;
+ ULONGLONG Gdtr;
+ ULONGLONG Idtr;
+ USHORT Ldtr;
+ USHORT Tr;
+} WHEA_X86_REGISTER_STATE, *PWHEA_X86_REGISTER_STATE;
+
+typedef struct __declspec(align(16)) _WHEA128A {
+ ULONGLONG Low;
+ LONGLONG High;
+} WHEA128A, *PWHEA128A;
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4324)
+#line 19109 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+#line 19110 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+typedef struct _WHEA_X64_REGISTER_STATE {
+ ULONGLONG Rax;
+ ULONGLONG Rbx;
+ ULONGLONG Rcx;
+ ULONGLONG Rdx;
+ ULONGLONG Rsi;
+ ULONGLONG Rdi;
+ ULONGLONG Rbp;
+ ULONGLONG Rsp;
+ ULONGLONG R8;
+ ULONGLONG R9;
+ ULONGLONG R10;
+ ULONGLONG R11;
+ ULONGLONG R12;
+ ULONGLONG R13;
+ ULONGLONG R14;
+ ULONGLONG R15;
+ USHORT Cs;
+ USHORT Ds;
+ USHORT Ss;
+ USHORT Es;
+ USHORT Fs;
+ USHORT Gs;
+ ULONG Reserved;
+ ULONGLONG Rflags;
+ ULONGLONG Eip;
+ ULONGLONG Cr0;
+ ULONGLONG Cr1;
+ ULONGLONG Cr2;
+ ULONGLONG Cr3;
+ ULONGLONG Cr4;
+ ULONGLONG Cr8;
+ WHEA128A Gdtr;
+ WHEA128A Idtr;
+ USHORT Ldtr;
+ USHORT Tr;
+} WHEA_X64_REGISTER_STATE, *PWHEA_X64_REGISTER_STATE;
+
+
+
+#pragma warning(pop)
+#line 19153 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+#line 19154 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct _WHEA_XPF_CONTEXT_INFO {
+ USHORT RegisterContextType;
+ USHORT RegisterDataSize;
+ ULONG MSRAddress;
+ ULONGLONG MmRegisterAddress;
+
+
+
+
+
+} WHEA_XPF_CONTEXT_INFO, *PWHEA_XPF_CONTEXT_INFO;
+
+
+
+
+
+typedef union _WHEA_XPF_PROCESSOR_ERROR_SECTION_VALIDBITS {
+ struct {
+ ULONGLONG LocalAPICId:1;
+ ULONGLONG CpuId:1;
+ ULONGLONG ProcInfoCount:6;
+ ULONGLONG ContextInfoCount:6;
+ ULONGLONG Reserved:50;
+ } ;
+ ULONGLONG ValidBits;
+} WHEA_XPF_PROCESSOR_ERROR_SECTION_VALIDBITS,
+ *PWHEA_XPF_PROCESSOR_ERROR_SECTION_VALIDBITS;
+
+typedef struct _WHEA_XPF_PROCESSOR_ERROR_SECTION {
+ WHEA_XPF_PROCESSOR_ERROR_SECTION_VALIDBITS ValidBits;
+ ULONGLONG LocalAPICId;
+ UCHAR CpuId[48];
+
+
+
+
+
+
+ UCHAR VariableInfo[1];
+} WHEA_XPF_PROCESSOR_ERROR_SECTION, *PWHEA_XPF_PROCESSOR_ERROR_SECTION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 19218 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_XPF_PROCINFO *)0)->CheckInfoId)) == (0)) && ((sizeof(((WHEA_XPF_PROCINFO *)0)->CheckInfoId)) == (16))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_XPF_PROCINFO *)0)->ValidBits)) == (16)) && ((sizeof(((WHEA_XPF_PROCINFO *)0)->ValidBits)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_XPF_PROCINFO *)0)->CheckInfo)) == (24)) && ((sizeof(((WHEA_XPF_PROCINFO *)0)->CheckInfo)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_XPF_PROCINFO *)0)->TargetId)) == (32)) && ((sizeof(((WHEA_XPF_PROCINFO *)0)->TargetId)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_XPF_PROCINFO *)0)->RequesterId)) == (40)) && ((sizeof(((WHEA_XPF_PROCINFO *)0)->RequesterId)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_XPF_PROCINFO *)0)->ResponderId)) == (48)) && ((sizeof(((WHEA_XPF_PROCINFO *)0)->ResponderId)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_XPF_PROCINFO *)0)->InstructionPointer)) == (56)) && ((sizeof(((WHEA_XPF_PROCINFO *)0)->InstructionPointer)) == (8))))?1:-1];
+
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Eax)) == (0)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Eax)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Ebx)) == (4)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Ebx)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Ecx)) == (8)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Ecx)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Edx)) == (12)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Edx)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Esi)) == (16)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Esi)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Edi)) == (20)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Edi)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Ebp)) == (24)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Ebp)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Esp)) == (28)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Esp)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Cs)) == (32)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Cs)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Ds)) == (34)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Ds)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Ss)) == (36)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Ss)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Es)) == (38)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Es)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Fs)) == (40)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Fs)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Gs)) == (42)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Gs)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Eflags)) == (44)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Eflags)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Eip)) == (48)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Eip)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Cr0)) == (52)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Cr0)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Cr1)) == (56)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Cr1)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Cr2)) == (60)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Cr2)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Cr3)) == (64)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Cr3)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Cr4)) == (68)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Cr4)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Gdtr)) == (72)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Gdtr)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Idtr)) == (80)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Idtr)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Ldtr)) == (88)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Ldtr)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X86_REGISTER_STATE *)0)->Tr)) == (90)) && ((sizeof(((WHEA_X86_REGISTER_STATE *)0)->Tr)) == (2))))?1:-1];
+
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Rax)) == (0)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Rax)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Rbx)) == (8)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Rbx)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Rcx)) == (16)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Rcx)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Rdx)) == (24)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Rdx)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Rsi)) == (32)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Rsi)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Rdi)) == (40)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Rdi)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Rbp)) == (48)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Rbp)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Rsp)) == (56)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Rsp)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->R8)) == (64)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->R8)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->R9)) == (72)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->R9)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->R10)) == (80)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->R10)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->R11)) == (88)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->R11)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->R12)) == (96)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->R12)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->R13)) == (104)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->R13)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->R14)) == (112)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->R14)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->R15)) == (120)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->R15)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Cs)) == (128)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Cs)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Ds)) == (130)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Ds)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Ss)) == (132)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Ss)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Es)) == (134)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Es)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Fs)) == (136)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Fs)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Gs)) == (138)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Gs)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Reserved)) == (140)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Reserved)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Rflags)) == (144)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Rflags)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Eip)) == (152)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Eip)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Cr0)) == (160)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Cr0)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Cr1)) == (168)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Cr1)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Cr2)) == (176)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Cr2)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Cr3)) == (184)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Cr3)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Cr4)) == (192)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Cr4)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Cr8)) == (200)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Cr8)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Gdtr)) == (208)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Gdtr)) == (16))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Idtr)) == (224)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Idtr)) == (16))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Ldtr)) == (240)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Ldtr)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_X64_REGISTER_STATE *)0)->Tr)) == (242)) && ((sizeof(((WHEA_X64_REGISTER_STATE *)0)->Tr)) == (2))))?1:-1];
+
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_XPF_CONTEXT_INFO *)0)->RegisterContextType)) == (0)) && ((sizeof(((WHEA_XPF_CONTEXT_INFO *)0)->RegisterContextType)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_XPF_CONTEXT_INFO *)0)->RegisterDataSize)) == (2)) && ((sizeof(((WHEA_XPF_CONTEXT_INFO *)0)->RegisterDataSize)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_XPF_CONTEXT_INFO *)0)->MSRAddress)) == (4)) && ((sizeof(((WHEA_XPF_CONTEXT_INFO *)0)->MSRAddress)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_XPF_CONTEXT_INFO *)0)->MmRegisterAddress)) == (8)) && ((sizeof(((WHEA_XPF_CONTEXT_INFO *)0)->MmRegisterAddress)) == (8))))?1:-1];
+
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_XPF_PROCESSOR_ERROR_SECTION *)0)->ValidBits)) == (0)) && ((sizeof(((WHEA_XPF_PROCESSOR_ERROR_SECTION *)0)->ValidBits)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_XPF_PROCESSOR_ERROR_SECTION *)0)->LocalAPICId)) == (8)) && ((sizeof(((WHEA_XPF_PROCESSOR_ERROR_SECTION *)0)->LocalAPICId)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_XPF_PROCESSOR_ERROR_SECTION *)0)->CpuId)) == (16)) && ((sizeof(((WHEA_XPF_PROCESSOR_ERROR_SECTION *)0)->CpuId)) == (48))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_XPF_PROCESSOR_ERROR_SECTION *)0)->VariableInfo)) == (64)) && ((sizeof(((WHEA_XPF_PROCESSOR_ERROR_SECTION *)0)->VariableInfo)) == (1))))?1:-1];
+
+
+
+typedef union _WHEA_MEMORY_ERROR_SECTION_VALIDBITS {
+ struct {
+ ULONGLONG ErrorStatus:1;
+ ULONGLONG PhysicalAddress:1;
+ ULONGLONG PhysicalAddressMask:1;
+ ULONGLONG Node:1;
+ ULONGLONG Card:1;
+ ULONGLONG Module:1;
+ ULONGLONG Bank:1;
+ ULONGLONG Device:1;
+ ULONGLONG Row:1;
+ ULONGLONG Column:1;
+ ULONGLONG BitPosition:1;
+ ULONGLONG RequesterId:1;
+ ULONGLONG ResponderId:1;
+ ULONGLONG TargetId:1;
+ ULONGLONG ErrorType:1;
+ ULONGLONG RankNumber:1;
+ ULONGLONG CardHandle:1;
+ ULONGLONG ModuleHandle:1;
+ ULONGLONG ExtendedRow:1;
+ ULONGLONG BankGroup:1;
+ ULONGLONG BankAddress:1;
+ ULONGLONG ChipIdentification:1;
+ ULONGLONG Reserved:42;
+ } ;
+ ULONGLONG ValidBits;
+} WHEA_MEMORY_ERROR_SECTION_VALIDBITS,
+ *PWHEA_MEMORY_ERROR_SECTION_VALIDBITS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _WHEA_MEMORY_ERROR_SECTION {
+ WHEA_MEMORY_ERROR_SECTION_VALIDBITS ValidBits;
+ WHEA_ERROR_STATUS ErrorStatus;
+ ULONGLONG PhysicalAddress;
+ ULONGLONG PhysicalAddressMask;
+ USHORT Node;
+ USHORT Card;
+ USHORT Module;
+ USHORT Bank;
+ USHORT Device;
+ USHORT Row;
+ USHORT Column;
+ USHORT BitPosition;
+ ULONGLONG RequesterId;
+ ULONGLONG ResponderId;
+ ULONGLONG TargetId;
+ UCHAR ErrorType;
+ UCHAR Extended;
+ USHORT RankNumber;
+ USHORT CardHandle;
+ USHORT ModuleHandle;
+} WHEA_MEMORY_ERROR_SECTION, *PWHEA_MEMORY_ERROR_SECTION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 19386 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_MEMORY_ERROR_SECTION *)0)->ValidBits)) == (0)) && ((sizeof(((WHEA_MEMORY_ERROR_SECTION *)0)->ValidBits)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_MEMORY_ERROR_SECTION *)0)->ErrorStatus)) == (8)) && ((sizeof(((WHEA_MEMORY_ERROR_SECTION *)0)->ErrorStatus)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_MEMORY_ERROR_SECTION *)0)->PhysicalAddress)) == (16)) && ((sizeof(((WHEA_MEMORY_ERROR_SECTION *)0)->PhysicalAddress)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_MEMORY_ERROR_SECTION *)0)->PhysicalAddressMask)) == (24)) && ((sizeof(((WHEA_MEMORY_ERROR_SECTION *)0)->PhysicalAddressMask)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_MEMORY_ERROR_SECTION *)0)->Node)) == (32)) && ((sizeof(((WHEA_MEMORY_ERROR_SECTION *)0)->Node)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_MEMORY_ERROR_SECTION *)0)->Card)) == (34)) && ((sizeof(((WHEA_MEMORY_ERROR_SECTION *)0)->Card)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_MEMORY_ERROR_SECTION *)0)->Module)) == (36)) && ((sizeof(((WHEA_MEMORY_ERROR_SECTION *)0)->Module)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_MEMORY_ERROR_SECTION *)0)->Bank)) == (38)) && ((sizeof(((WHEA_MEMORY_ERROR_SECTION *)0)->Bank)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_MEMORY_ERROR_SECTION *)0)->Device)) == (40)) && ((sizeof(((WHEA_MEMORY_ERROR_SECTION *)0)->Device)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_MEMORY_ERROR_SECTION *)0)->Row)) == (42)) && ((sizeof(((WHEA_MEMORY_ERROR_SECTION *)0)->Row)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_MEMORY_ERROR_SECTION *)0)->Column)) == (44)) && ((sizeof(((WHEA_MEMORY_ERROR_SECTION *)0)->Column)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_MEMORY_ERROR_SECTION *)0)->BitPosition)) == (46)) && ((sizeof(((WHEA_MEMORY_ERROR_SECTION *)0)->BitPosition)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_MEMORY_ERROR_SECTION *)0)->RequesterId)) == (48)) && ((sizeof(((WHEA_MEMORY_ERROR_SECTION *)0)->RequesterId)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_MEMORY_ERROR_SECTION *)0)->ResponderId)) == (56)) && ((sizeof(((WHEA_MEMORY_ERROR_SECTION *)0)->ResponderId)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_MEMORY_ERROR_SECTION *)0)->TargetId)) == (64)) && ((sizeof(((WHEA_MEMORY_ERROR_SECTION *)0)->TargetId)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_MEMORY_ERROR_SECTION *)0)->ErrorType)) == (72)) && ((sizeof(((WHEA_MEMORY_ERROR_SECTION *)0)->ErrorType)) == (1))))?1:-1];
+
+
+
+typedef enum _WHEA_MEMORY_DEFINITION {
+ WheaMemoryUndefined = 0,
+ WheaMemoryFm,
+ WheaMemoryNm,
+ WheaMemoryHbm,
+ WheaMemoryMax
+} WHEA_MEMORY_DEFINITION, *PWHEA_MEMORY_DEFINITION;
+
+typedef union _WHEA_MEMORY_ERROR_EXT_SECTION_FLAGS {
+ struct {
+ UINT64 AddressTranslationByPrmSuccess : 1;
+ UINT64 AddressTranslationByPrmFailed : 1;
+ UINT64 AddressTranslationByPrmNotSupported : 1;
+ UINT64 AddressTranslationByPluginSuccess : 1;
+ UINT64 AddressTranslationByPluginFailed : 1;
+ UINT64 AddressTranslationByPluginNotSupported : 1;
+ UINT64 Reserved : 58;
+ } ;
+
+ UINT64 AsUINT64;
+} WHEA_MEMORY_ERROR_EXT_SECTION_FLAGS, *PWHEA_MEMORY_ERROR_EXT_SECTION_FLAGS;
+
+typedef union _WHEA_MEMORY_ERROR_EXT_SECTION_INTEL_VALIDBITS {
+ struct {
+ UINT64 MemDef : 1;
+ UINT64 SystemAddress : 1;
+ UINT64 SpareSystemAddress : 1;
+ UINT64 DevicePhysicalAddress : 1;
+ UINT64 ChannelAddress : 1;
+ UINT64 RankAddress : 1;
+ UINT64 ProcessorSocketId : 1;
+ UINT64 MemoryControllerId : 1;
+ UINT64 TargetId : 1;
+ UINT64 LogicalChannelId : 1;
+ UINT64 ChannelId : 1;
+ UINT64 SubChannelId : 1;
+ UINT64 PhysicalRankId : 1;
+ UINT64 DimmSlotId : 1;
+ UINT64 DimmRankId : 1;
+ UINT64 Bank : 1;
+ UINT64 BankGroup : 1;
+ UINT64 Row : 1;
+ UINT64 Column : 1;
+ UINT64 LockStepRank : 1;
+ UINT64 LockStepPhysicalRank : 1;
+ UINT64 LockStepBank : 1;
+ UINT64 LockStepBankGroup : 1;
+ UINT64 ChipSelect : 1;
+ UINT64 Node : 1;
+ UINT64 ChipId : 1;
+ UINT64 Reserved : 38;
+ } ;
+
+ UINT64 ValidBits;
+} WHEA_MEMORY_ERROR_EXT_SECTION_INTEL_VALIDBITS,
+ *PWHEA_MEMORY_ERROR_EXT_SECTION_INTEL_VALIDBITS;
+
+typedef struct _WHEA_MEMORY_HARDWARE_ADDRESS_INTEL {
+ WHEA_MEMORY_DEFINITION MemDef;
+ UINT64 SystemAddress;
+ UINT64 SpareSystemAddress;
+ UINT64 DevicePhysicalAddress;
+ UINT64 ChannelAddress;
+ UINT64 RankAddress;
+ UINT8 ProcessorSocketId;
+ UINT8 MemoryControllerId;
+ UINT8 TargetId;
+ UINT8 LogicalChannelId;
+ UINT8 ChannelId;
+ UINT8 SubChannelId;
+ UINT8 PhysicalRankId;
+ UINT8 DimmSlotId;
+ UINT8 DimmRankId;
+ UINT8 Bank;
+ UINT8 BankGroup;
+ UINT32 Row;
+ UINT32 Column;
+ UINT8 LockStepRank;
+ UINT8 LockStepPhysicalRank;
+ UINT8 LockStepBank;
+ UINT8 LockStepBankGroup;
+ UINT8 ChipSelect;
+ UINT8 Node;
+ UINT8 ChipId;
+ UINT8 Reserved[40];
+} WHEA_MEMORY_HARDWARE_ADDRESS_INTEL, *PWHEA_MEMORY_HARDWARE_ADDRESS_INTEL;
+
+typedef struct _WHEA_MEMORY_ERROR_EXT_SECTION_INTEL {
+ WHEA_MEMORY_ERROR_EXT_SECTION_FLAGS Flags;
+ WHEA_MEMORY_ERROR_EXT_SECTION_INTEL_VALIDBITS ValidBits;
+ WHEA_MEMORY_HARDWARE_ADDRESS_INTEL HardwareAddress;
+ UINT8 Reserved[40];
+} WHEA_MEMORY_ERROR_EXT_SECTION_INTEL, *PWHEA_MEMORY_ERROR_EXT_SECTION_INTEL;
+
+
+
+
+
+
+typedef union _WHEA_PMEM_ERROR_SECTION_VALIDBITS {
+ struct {
+ ULONGLONG ErrorStatus:1;
+ ULONGLONG NFITHandle:1;
+ ULONGLONG LocationInfo:1;
+ ULONGLONG Reserved:61;
+ } ;
+ ULONGLONG ValidBits;
+} WHEA_PMEM_ERROR_SECTION_VALIDBITS,
+ *PWHEA_PMEM_ERROR_SECTION_VALIDBITS;
+
+typedef struct _WHEA_PMEM_PAGE_RANGE {
+ ULONG64 StartingPfn;
+ ULONG64 PageCount;
+ ULONG64 MarkedBadBitmap;
+} WHEA_PMEM_PAGE_RANGE, *PWHEA_PMEM_PAGE_RANGE;
+
+
+
+
+
+
+
+
+
+typedef struct _WHEA_PMEM_ERROR_SECTION {
+ WHEA_PMEM_ERROR_SECTION_VALIDBITS ValidBits;
+ UCHAR LocationInfo[64];
+ WHEA_ERROR_STATUS ErrorStatus;
+ ULONG NFITHandle;
+ ULONG PageRangeCount;
+ WHEA_PMEM_PAGE_RANGE PageRange[1];
+} WHEA_PMEM_ERROR_SECTION, *PWHEA_PMEM_ERROR_SECTION;
+
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PMEM_ERROR_SECTION *)0)->ValidBits)) == (0)) && ((sizeof(((WHEA_PMEM_ERROR_SECTION *)0)->ValidBits)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PMEM_ERROR_SECTION *)0)->LocationInfo)) == (8)) && ((sizeof(((WHEA_PMEM_ERROR_SECTION *)0)->LocationInfo)) == (64))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PMEM_ERROR_SECTION *)0)->ErrorStatus)) == (72)) && ((sizeof(((WHEA_PMEM_ERROR_SECTION *)0)->ErrorStatus)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PMEM_ERROR_SECTION *)0)->NFITHandle)) == (80)) && ((sizeof(((WHEA_PMEM_ERROR_SECTION *)0)->NFITHandle)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PMEM_ERROR_SECTION *)0)->PageRangeCount)) == (84)) && ((sizeof(((WHEA_PMEM_ERROR_SECTION *)0)->PageRangeCount)) == (4))))?1:-1];
+
+
+
+
+
+typedef struct _WHEA_PCIE_ADDRESS {
+ UINT32 Segment;
+ UINT32 Bus;
+ UINT32 Device;
+ UINT32 Function;
+} WHEA_PCIE_ADDRESS, *PWHEA_PCIE_ADDRESS;
+
+typedef union _WHEA_PCIE_CORRECTABLE_ERROR_DEVICES_VALIDBITS {
+ struct {
+ ULONGLONG Segment:1;
+ ULONGLONG Bus:1;
+ ULONGLONG Device:1;
+ ULONGLONG Function:1;
+ ULONGLONG Mask:1;
+ ULONGLONG CorrectableErrorCount:1;
+ ULONGLONG Reserved:58;
+ } ;
+ ULONGLONG ValidBits;
+} WHEA_PCIE_CORRECTABLE_ERROR_DEVICES_VALIDBITS,
+ *PWHEA_PCIE_CORRECTABLE_ERROR_DEVICES_VALIDBITS;
+
+typedef struct _WHEA_PCIE_CORRECTABLE_ERROR_DEVICES {
+ WHEA_PCIE_CORRECTABLE_ERROR_DEVICES_VALIDBITS ValidBits;
+ WHEA_PCIE_ADDRESS Address;
+ UINT32 Mask;
+ UINT32 CorrectableErrorCount
+ [32];
+} WHEA_PCIE_CORRECTABLE_ERROR_DEVICES, *PWHEA_PCIE_CORRECTABLE_ERROR_DEVICES;
+
+typedef struct _WHEA_PCIE_CORRECTABLE_ERROR_SECTION_HEADER {
+ UINT16 Version;
+ UINT16 Count;
+} WHEA_PCIE_CORRECTABLE_ERROR_SECTION_HEADER,
+ *PWHEA_PCIE_CORRECTABLE_ERROR_SECTION_HEADER;
+
+typedef struct _WHEA_PCIE_CORRECTABLE_ERROR_SECTION {
+ WHEA_PCIE_CORRECTABLE_ERROR_SECTION_HEADER Header;
+
+ WHEA_PCIE_CORRECTABLE_ERROR_DEVICES Devices[1];
+} WHEA_PCIE_CORRECTABLE_ERROR_SECTION, *PWHEA_PCIE_CORRECTABLE_ERROR_SECTION;
+
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIE_CORRECTABLE_ERROR_SECTION *)0)->Header)) == (0)) && ((sizeof(((WHEA_PCIE_CORRECTABLE_ERROR_SECTION *)0)->Header)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIE_CORRECTABLE_ERROR_SECTION *)0)->Devices)) == (4)) && ((sizeof(((WHEA_PCIE_CORRECTABLE_ERROR_SECTION *)0)->Devices)) == (156))))?1:-1];
+
+
+
+typedef union _WHEA_MEMORY_CORRECTABLE_ERROR_SECTION_VALIDBITS {
+ struct {
+ ULONGLONG SocketId:1;
+ ULONGLONG ChannelId:1;
+ ULONGLONG DimmSlot:1;
+ ULONGLONG CorrectableErrorCount:1;
+ ULONGLONG Reserved:60;
+ } ;
+ ULONGLONG ValidBits;
+} WHEA_MEMORY_CORRECTABLE_ERROR_SECTION_VALIDBITS,
+ *PWHEA_MEMORY_CORRECTABLE_ERROR_SECTION_VALIDBITS;
+
+typedef struct _WHEA_MEMORY_CORRECTABLE_ERROR_HEADER {
+ UINT16 Version;
+ UINT16 Count;
+} WHEA_MEMORY_CORRECTABLE_ERROR_HEADER, *PWHEA_MEMORY_CORRECTABLE_ERROR_HEADER;
+
+typedef struct _WHEA_MEMORY_CORRECTABLE_ERROR_DATA {
+ WHEA_MEMORY_CORRECTABLE_ERROR_SECTION_VALIDBITS ValidBits;
+ UINT32 SocketId;
+ UINT32 ChannelId;
+ UINT32 DimmSlot;
+ UINT32 CorrectableErrorCount;
+} WHEA_MEMORY_CORRECTABLE_ERROR_DATA, *PWHEA_MEMORY_CORRECTABLE_ERROR_DATA;
+
+typedef struct _WHEA_MEMORY_CORRECTABLE_ERROR_SECTION {
+ WHEA_MEMORY_CORRECTABLE_ERROR_HEADER Header;
+ WHEA_MEMORY_CORRECTABLE_ERROR_DATA Data[1];
+} WHEA_MEMORY_CORRECTABLE_ERROR_SECTION,
+ *PWHEA_MEMORY_CORRECTABLE_ERROR_SECTION;
+
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_MEMORY_CORRECTABLE_ERROR_SECTION *)0)->Header)) == (0)) && ((sizeof(((WHEA_MEMORY_CORRECTABLE_ERROR_SECTION *)0)->Header)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_MEMORY_CORRECTABLE_ERROR_SECTION *)0)->Data)) == (4)) && ((sizeof(((WHEA_MEMORY_CORRECTABLE_ERROR_SECTION *)0)->Data)) == (24))))?1:-1];
+
+
+
+typedef union _WHEA_PCIEXPRESS_ERROR_SECTION_VALIDBITS {
+ struct {
+ ULONGLONG PortType:1;
+ ULONGLONG Version:1;
+ ULONGLONG CommandStatus:1;
+ ULONGLONG DeviceId:1;
+ ULONGLONG DeviceSerialNumber:1;
+ ULONGLONG BridgeControlStatus:1;
+ ULONGLONG ExpressCapability:1;
+ ULONGLONG AerInfo:1;
+ ULONGLONG Reserved:56;
+ } ;
+ ULONGLONG ValidBits;
+} WHEA_PCIEXPRESS_ERROR_SECTION_VALIDBITS,
+ *PWHEA_PCIEXPRESS_ERROR_SECTION_VALIDBITS;
+
+typedef struct _WHEA_PCIEXPRESS_DEVICE_ID {
+ USHORT VendorID;
+ USHORT DeviceID;
+ ULONG ClassCode:24;
+ ULONG FunctionNumber:8;
+ ULONG DeviceNumber:8;
+ ULONG Segment:16;
+ ULONG PrimaryBusNumber:8;
+ ULONG SecondaryBusNumber:8;
+ ULONG Reserved1:3;
+ ULONG SlotNumber:13;
+ ULONG Reserved2:8;
+} WHEA_PCIEXPRESS_DEVICE_ID, *PWHEA_PCIEXPRESS_DEVICE_ID;
+
+typedef union _WHEA_PCIEXPRESS_VERSION {
+ struct {
+ UCHAR MinorVersion;
+ UCHAR MajorVersion;
+ USHORT Reserved;
+ } ;
+ ULONG AsULONG;
+} WHEA_PCIEXPRESS_VERSION, *PWHEA_PCIEXPRESS_VERSION;
+
+typedef union _WHEA_PCIEXPRESS_COMMAND_STATUS {
+ struct {
+ USHORT Command;
+ USHORT Status;
+ } ;
+ ULONG AsULONG;
+} WHEA_PCIEXPRESS_COMMAND_STATUS, *PWHEA_PCIEXPRESS_COMMAND_STATUS;
+
+typedef union _WHEA_PCIEXPRESS_BRIDGE_CONTROL_STATUS {
+ struct {
+ USHORT BridgeSecondaryStatus;
+ USHORT BridgeControl;
+ } ;
+ ULONG AsULONG;
+} WHEA_PCIEXPRESS_BRIDGE_CONTROL_STATUS,
+ *PWHEA_PCIEXPRESS_BRIDGE_CONTROL_STATUS;
+
+typedef enum _WHEA_PCIEXPRESS_DEVICE_TYPE {
+ WheaPciExpressEndpoint = 0,
+ WheaPciExpressLegacyEndpoint,
+ WheaPciExpressRootPort = 4,
+ WheaPciExpressUpstreamSwitchPort,
+ WheaPciExpressDownstreamSwitchPort,
+ WheaPciExpressToPciXBridge,
+ WheaPciXToExpressBridge,
+ WheaPciExpressRootComplexIntegratedEndpoint,
+ WheaPciExpressRootComplexEventCollector
+} WHEA_PCIEXPRESS_DEVICE_TYPE;
+
+typedef struct _WHEA_PCIEXPRESS_ERROR_SECTION {
+ WHEA_PCIEXPRESS_ERROR_SECTION_VALIDBITS ValidBits;
+ WHEA_PCIEXPRESS_DEVICE_TYPE PortType;
+ WHEA_PCIEXPRESS_VERSION Version;
+ WHEA_PCIEXPRESS_COMMAND_STATUS CommandStatus;
+ ULONG Reserved;
+ WHEA_PCIEXPRESS_DEVICE_ID DeviceId;
+ ULONGLONG DeviceSerialNumber;
+ WHEA_PCIEXPRESS_BRIDGE_CONTROL_STATUS BridgeControlStatus;
+ UCHAR ExpressCapability[60];
+ UCHAR AerInfo[96];
+} WHEA_PCIEXPRESS_ERROR_SECTION, *PWHEA_PCIEXPRESS_ERROR_SECTION;
+
+
+
+
+
+
+
+
+
+
+#line 19727 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIEXPRESS_ERROR_SECTION *)0)->ValidBits)) == (0)) && ((sizeof(((WHEA_PCIEXPRESS_ERROR_SECTION *)0)->ValidBits)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIEXPRESS_ERROR_SECTION *)0)->PortType)) == (8)) && ((sizeof(((WHEA_PCIEXPRESS_ERROR_SECTION *)0)->PortType)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIEXPRESS_ERROR_SECTION *)0)->Version)) == (12)) && ((sizeof(((WHEA_PCIEXPRESS_ERROR_SECTION *)0)->Version)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIEXPRESS_ERROR_SECTION *)0)->CommandStatus)) == (16)) && ((sizeof(((WHEA_PCIEXPRESS_ERROR_SECTION *)0)->CommandStatus)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIEXPRESS_ERROR_SECTION *)0)->Reserved)) == (20)) && ((sizeof(((WHEA_PCIEXPRESS_ERROR_SECTION *)0)->Reserved)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIEXPRESS_ERROR_SECTION *)0)->DeviceId)) == (24)) && ((sizeof(((WHEA_PCIEXPRESS_ERROR_SECTION *)0)->DeviceId)) == (16))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIEXPRESS_ERROR_SECTION *)0)->DeviceSerialNumber)) == (40)) && ((sizeof(((WHEA_PCIEXPRESS_ERROR_SECTION *)0)->DeviceSerialNumber)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIEXPRESS_ERROR_SECTION *)0)->BridgeControlStatus)) == (48)) && ((sizeof(((WHEA_PCIEXPRESS_ERROR_SECTION *)0)->BridgeControlStatus)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIEXPRESS_ERROR_SECTION *)0)->ExpressCapability)) == (52)) && ((sizeof(((WHEA_PCIEXPRESS_ERROR_SECTION *)0)->ExpressCapability)) == (60))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIEXPRESS_ERROR_SECTION *)0)->AerInfo)) == (112)) && ((sizeof(((WHEA_PCIEXPRESS_ERROR_SECTION *)0)->AerInfo)) == (96))))?1:-1];
+
+
+
+
+
+
+
+
+
+
+
+
+typedef union _WHEA_PCIXBUS_ERROR_SECTION_VALIDBITS {
+ struct {
+ ULONGLONG ErrorStatus:1;
+ ULONGLONG ErrorType:1;
+ ULONGLONG BusId:1;
+ ULONGLONG BusAddress:1;
+ ULONGLONG BusData:1;
+ ULONGLONG BusCommand:1;
+ ULONGLONG RequesterId:1;
+ ULONGLONG CompleterId:1;
+ ULONGLONG TargetId:1;
+ ULONGLONG Reserved:55;
+ } ;
+ ULONGLONG ValidBits;
+} WHEA_PCIXBUS_ERROR_SECTION_VALIDBITS, *PWHEA_PCIXBUS_ERROR_SECTION_VALIDBITS;
+
+typedef union _WHEA_PCIXBUS_ID {
+ struct {
+ UCHAR BusNumber;
+ UCHAR BusSegment;
+ } ;
+ USHORT AsUSHORT;
+} WHEA_PCIXBUS_ID, *PWHEA_PCIXBUS_ID;
+
+typedef union _WHEA_PCIXBUS_COMMAND {
+ struct {
+ ULONGLONG Command:56;
+ ULONGLONG PCIXCommand:1;
+ ULONGLONG Reserved:7;
+ } ;
+ ULONGLONG AsULONGLONG;
+} WHEA_PCIXBUS_COMMAND, *PWHEA_PCIXBUS_COMMAND;
+
+typedef struct _WHEA_PCIXBUS_ERROR_SECTION {
+ WHEA_PCIXBUS_ERROR_SECTION_VALIDBITS ValidBits;
+ WHEA_ERROR_STATUS ErrorStatus;
+ USHORT ErrorType;
+ WHEA_PCIXBUS_ID BusId;
+ ULONG Reserved;
+ ULONGLONG BusAddress;
+ ULONGLONG BusData;
+ WHEA_PCIXBUS_COMMAND BusCommand;
+ ULONGLONG RequesterId;
+ ULONGLONG CompleterId;
+ ULONGLONG TargetId;
+} WHEA_PCIXBUS_ERROR_SECTION, *PWHEA_PCIXBUS_ERROR_SECTION;
+
+
+
+
+
+
+
+
+
+
+#line 19812 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIXBUS_ERROR_SECTION *)0)->ValidBits)) == (0)) && ((sizeof(((WHEA_PCIXBUS_ERROR_SECTION *)0)->ValidBits)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIXBUS_ERROR_SECTION *)0)->ErrorStatus)) == (8)) && ((sizeof(((WHEA_PCIXBUS_ERROR_SECTION *)0)->ErrorStatus)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIXBUS_ERROR_SECTION *)0)->ErrorType)) == (16)) && ((sizeof(((WHEA_PCIXBUS_ERROR_SECTION *)0)->ErrorType)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIXBUS_ERROR_SECTION *)0)->BusId)) == (18)) && ((sizeof(((WHEA_PCIXBUS_ERROR_SECTION *)0)->BusId)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIXBUS_ERROR_SECTION *)0)->Reserved)) == (20)) && ((sizeof(((WHEA_PCIXBUS_ERROR_SECTION *)0)->Reserved)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIXBUS_ERROR_SECTION *)0)->BusAddress)) == (24)) && ((sizeof(((WHEA_PCIXBUS_ERROR_SECTION *)0)->BusAddress)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIXBUS_ERROR_SECTION *)0)->BusData)) == (32)) && ((sizeof(((WHEA_PCIXBUS_ERROR_SECTION *)0)->BusData)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIXBUS_ERROR_SECTION *)0)->BusCommand)) == (40)) && ((sizeof(((WHEA_PCIXBUS_ERROR_SECTION *)0)->BusCommand)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIXBUS_ERROR_SECTION *)0)->RequesterId)) == (48)) && ((sizeof(((WHEA_PCIXBUS_ERROR_SECTION *)0)->RequesterId)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIXBUS_ERROR_SECTION *)0)->CompleterId)) == (56)) && ((sizeof(((WHEA_PCIXBUS_ERROR_SECTION *)0)->CompleterId)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIXBUS_ERROR_SECTION *)0)->TargetId)) == (64)) && ((sizeof(((WHEA_PCIXBUS_ERROR_SECTION *)0)->TargetId)) == (8))))?1:-1];
+
+
+
+typedef union _WHEA_PCIXDEVICE_ERROR_SECTION_VALIDBITS {
+ struct {
+ ULONGLONG ErrorStatus:1;
+ ULONGLONG IdInfo:1;
+ ULONGLONG MemoryNumber:1;
+ ULONGLONG IoNumber:1;
+ ULONGLONG RegisterDataPairs:1;
+ ULONGLONG Reserved:59;
+ } ;
+ ULONGLONG ValidBits;
+} WHEA_PCIXDEVICE_ERROR_SECTION_VALIDBITS,
+ *PWHEA_PCIXDEVICE_ERROR_SECTION_VALIDBITS;
+
+typedef struct _WHEA_PCIXDEVICE_ID {
+ USHORT VendorId;
+ USHORT DeviceId;
+ ULONG ClassCode:24;
+ ULONG FunctionNumber:8;
+ ULONG DeviceNumber:8;
+ ULONG BusNumber:8;
+ ULONG SegmentNumber:8;
+ ULONG Reserved1:8;
+ ULONG Reserved2;
+} WHEA_PCIXDEVICE_ID, *PWHEA_PCIXDEVICE_ID;
+
+typedef struct WHEA_PCIXDEVICE_REGISTER_PAIR {
+ ULONGLONG Register;
+ ULONGLONG Data;
+} WHEA_PCIXDEVICE_REGISTER_PAIR, *PWHEA_PCIXDEVICE_REGISTER_PAIR;
+
+typedef struct _WHEA_PCIXDEVICE_ERROR_SECTION {
+ WHEA_PCIXDEVICE_ERROR_SECTION_VALIDBITS ValidBits;
+ WHEA_ERROR_STATUS ErrorStatus;
+ WHEA_PCIXDEVICE_ID IdInfo;
+ ULONG MemoryNumber;
+ ULONG IoNumber;
+ WHEA_PCIXDEVICE_REGISTER_PAIR RegisterDataPairs[1];
+} WHEA_PCIXDEVICE_ERROR_SECTION, *PWHEA_PCIXDEVICE_ERROR_SECTION;
+
+
+
+
+
+
+
+
+
+#line 19875 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIXDEVICE_ERROR_SECTION *)0)->ValidBits)) == (0)) && ((sizeof(((WHEA_PCIXDEVICE_ERROR_SECTION *)0)->ValidBits)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIXDEVICE_ERROR_SECTION *)0)->ErrorStatus)) == (8)) && ((sizeof(((WHEA_PCIXDEVICE_ERROR_SECTION *)0)->ErrorStatus)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIXDEVICE_ERROR_SECTION *)0)->IdInfo)) == (16)) && ((sizeof(((WHEA_PCIXDEVICE_ERROR_SECTION *)0)->IdInfo)) == (16))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIXDEVICE_ERROR_SECTION *)0)->MemoryNumber)) == (32)) && ((sizeof(((WHEA_PCIXDEVICE_ERROR_SECTION *)0)->MemoryNumber)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIXDEVICE_ERROR_SECTION *)0)->IoNumber)) == (36)) && ((sizeof(((WHEA_PCIXDEVICE_ERROR_SECTION *)0)->IoNumber)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_PCIXDEVICE_ERROR_SECTION *)0)->RegisterDataPairs)) == (40)) && ((sizeof(((WHEA_PCIXDEVICE_ERROR_SECTION *)0)->RegisterDataPairs)) == (16))))?1:-1];
+
+
+
+
+
+typedef struct _WHEA_FIRMWARE_ERROR_RECORD_REFERENCE {
+ UCHAR Type;
+ UCHAR Reserved[7];
+ ULONGLONG FirmwareRecordId;
+} WHEA_FIRMWARE_ERROR_RECORD_REFERENCE, *PWHEA_FIRMWARE_ERROR_RECORD_REFERENCE;
+
+
+
+
+
+
+#line 19899 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_FIRMWARE_ERROR_RECORD_REFERENCE *)0)->Type)) == (0)) && ((sizeof(((WHEA_FIRMWARE_ERROR_RECORD_REFERENCE *)0)->Type)) == (1))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_FIRMWARE_ERROR_RECORD_REFERENCE *)0)->Reserved)) == (1)) && ((sizeof(((WHEA_FIRMWARE_ERROR_RECORD_REFERENCE *)0)->Reserved)) == (7))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_FIRMWARE_ERROR_RECORD_REFERENCE *)0)->FirmwareRecordId)) == (8)) && ((sizeof(((WHEA_FIRMWARE_ERROR_RECORD_REFERENCE *)0)->FirmwareRecordId)) == (8))))?1:-1];
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef union _MCG_CAP {
+ struct {
+ ULONG64 CountField: 8;
+ ULONG64 ControlMsrPresent: 1;
+ ULONG64 ExtendedMsrsPresent: 1;
+ ULONG64 SignalingExtensionPresent: 1;
+ ULONG64 ThresholdErrorStatusPresent: 1;
+ ULONG64 Reserved: 4;
+ ULONG64 ExtendedRegisterCount: 8;
+ ULONG64 SoftwareErrorRecoverySupported: 1;
+ ULONG64 EnhancedMachineCheckCapability: 1;
+ ULONG64 ExtendedErrorLogging: 1;
+ ULONG64 LocalMachineCheckException: 1;
+ } ;
+ ULONG64 QuadPart;
+} MCG_CAP, *PMCG_CAP;
+
+typedef union _MCG_STATUS {
+ struct {
+ ULONG RestartIpValid:1;
+ ULONG ErrorIpValid:1;
+ ULONG MachineCheckInProgress:1;
+ ULONG LocalMceValid:1;
+ ULONG Reserved1:28;
+ ULONG Reserved2;
+ } ;
+ ULONGLONG QuadPart;
+} MCG_STATUS, *PMCG_STATUS;
+
+typedef struct _MCI_STATUS_BITS_COMMON {
+ ULONG64 McaErrorCode : 16;
+ ULONG64 ModelErrorCode : 16;
+ ULONG64 Reserved : 25;
+ ULONG64 ContextCorrupt : 1;
+ ULONG64 AddressValid : 1;
+ ULONG64 MiscValid : 1;
+ ULONG64 ErrorEnabled : 1;
+ ULONG64 UncorrectedError : 1;
+ ULONG64 StatusOverFlow : 1;
+ ULONG64 Valid : 1;
+} MCI_STATUS_BITS_COMMON, *PMCI_STATUS_BITS_COMMON;
+
+
+
+
+
+
+
+
+typedef struct _MCI_STATUS_AMD_BITS {
+ ULONG64 McaErrorCode : 16;
+ ULONG64 ModelErrorCode : 16;
+ ULONG64 ImplementationSpecific2 : 11;
+ ULONG64 Poison : 1;
+ ULONG64 Deferred : 1;
+ ULONG64 ImplementationSpecific1 : 12;
+ ULONG64 ContextCorrupt : 1;
+ ULONG64 AddressValid : 1;
+ ULONG64 MiscValid : 1;
+ ULONG64 ErrorEnabled : 1;
+ ULONG64 UncorrectedError : 1;
+ ULONG64 StatusOverFlow : 1;
+ ULONG64 Valid : 1;
+} MCI_STATUS_AMD_BITS, *PMCI_STATUS_AMD_BITS;
+
+
+
+
+
+
+typedef struct _MCI_STATUS_INTEL_BITS {
+ ULONG64 McaErrorCode : 16;
+ ULONG64 ModelErrorCode : 16;
+ ULONG64 OtherInfo : 5;
+ ULONG64 FirmwareUpdateError : 1;
+ ULONG64 CorrectedErrorCount : 15;
+ ULONG64 ThresholdErrorStatus : 2;
+ ULONG64 ActionRequired : 1;
+ ULONG64 Signalling : 1;
+ ULONG64 ContextCorrupt : 1;
+ ULONG64 AddressValid : 1;
+ ULONG64 MiscValid : 1;
+ ULONG64 ErrorEnabled : 1;
+ ULONG64 UncorrectedError : 1;
+ ULONG64 StatusOverFlow : 1;
+ ULONG64 Valid : 1;
+} MCI_STATUS_INTEL_BITS, *PMCI_STATUS_INTEL_BITS;
+
+
+typedef union _MCI_STATUS {
+ MCI_STATUS_BITS_COMMON CommonBits;
+ MCI_STATUS_AMD_BITS AmdBits;
+ MCI_STATUS_INTEL_BITS IntelBits;
+ ULONG64 QuadPart;
+} MCI_STATUS, *PMCI_STATUS;
+
+typedef enum _WHEA_CPU_VENDOR {
+ WheaCpuVendorOther = 0,
+ WheaCpuVendorIntel,
+ WheaCpuVendorAmd
+} WHEA_CPU_VENDOR, *PWHEA_CPU_VENDOR;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _WHEA_AMD_EXTENDED_REGISTERS {
+ ULONGLONG IPID;
+ ULONGLONG SYND;
+ ULONGLONG CONFIG;
+ ULONGLONG DESTAT;
+ ULONGLONG DEADDR;
+ ULONGLONG MISC1;
+ ULONGLONG MISC2;
+ ULONGLONG MISC3;
+ ULONGLONG MISC4;
+ ULONGLONG RasCap;
+ ULONGLONG Reserved[24 - 10];
+} WHEA_AMD_EXTENDED_REGISTERS, *PWHEA_AMD_EXTENDED_REGISTERS;
+
+typedef struct _XPF_RECOVERY_INFO {
+ struct {
+ UINT32 NotSupported : 1;
+ UINT32 Overflow : 1;
+ UINT32 ContextCorrupt : 1;
+ UINT32 RestartIpErrorIpNotValid : 1;
+ UINT32 NoRecoveryContext : 1;
+ UINT32 MiscOrAddrNotValid : 1;
+ UINT32 InvalidAddressMode : 1;
+ UINT32 HighIrql : 1;
+ UINT32 InterruptsDisabled : 1;
+ UINT32 SwapBusy : 1;
+ UINT32 StackOverflow : 1;
+ UINT32 Reserved : 21;
+ } FailureReason;
+
+ struct {
+ UINT32 RecoveryAttempted : 1;
+ UINT32 HvHandled : 1;
+ UINT32 Reserved : 30;
+ } Action;
+
+ BOOLEAN ActionRequired;
+ BOOLEAN RecoverySucceeded;
+ BOOLEAN RecoveryKernel;
+ UINT8 Reserved;
+ UINT16 Reserved2;
+ UINT16 Reserved3;
+ UINT32 Reserved4;
+} XPF_RECOVERY_INFO, *PXPF_RECOVERY_INFO;
+
+typedef struct _WHEA_XPF_MCA_SECTION {
+ ULONG VersionNumber;
+ WHEA_CPU_VENDOR CpuVendor;
+ LARGE_INTEGER Timestamp;
+ ULONG ProcessorNumber;
+ MCG_STATUS GlobalStatus;
+ ULONGLONG InstructionPointer;
+ ULONG BankNumber;
+ MCI_STATUS Status;
+ ULONGLONG Address;
+ ULONGLONG Misc;
+ ULONG ExtendedRegisterCount;
+ ULONG ApicId;
+ union {
+ ULONGLONG ExtendedRegisters[24];
+ WHEA_AMD_EXTENDED_REGISTERS AMDExtendedRegisters;
+ };
+ MCG_CAP GlobalCapability;
+
+
+
+
+
+ XPF_RECOVERY_INFO RecoveryInfo;
+
+
+
+
+
+ ULONG ExBankCount;
+ ULONG BankNumberEx[32];
+ MCI_STATUS StatusEx[32];
+ ULONGLONG AddressEx[32];
+ ULONGLONG MiscEx[32];
+} WHEA_XPF_MCA_SECTION, *PWHEA_XPF_MCA_SECTION;
+
+
+
+typedef union _WHEA_NMI_ERROR_SECTION_FLAGS {
+ struct {
+ ULONG HypervisorError:1;
+ ULONG Reserved:31;
+ } ;
+ ULONG AsULONG;
+} WHEA_NMI_ERROR_SECTION_FLAGS, *PWHEA_NMI_ERROR_SECTION_FLAGS;
+
+typedef struct _WHEA_NMI_ERROR_SECTION {
+ UCHAR Data[8];
+ WHEA_NMI_ERROR_SECTION_FLAGS Flags;
+} WHEA_NMI_ERROR_SECTION, *PWHEA_NMI_ERROR_SECTION;
+
+
+
+typedef struct _WHEA_MSR_DUMP_SECTION {
+ UCHAR MsrDumpBuffer;
+ ULONG MsrDumpLength;
+ UCHAR MsrDumpData[1];
+} WHEA_MSR_DUMP_SECTION, *PWHEA_MSR_DUMP_SECTION;
+
+
+
+typedef struct _MU_TELEMETRY_SECTION {
+ GUID ComponentID;
+ GUID SubComponentID;
+ UINT32 Reserved;
+ UINT32 ErrorStatusValue;
+ UINT64 AdditionalInfo1;
+ UINT64 AdditionalInfo2;
+} MU_TELEMETRY_SECTION, *PMU_TELEMETRY_SECTION;
+
+
+
+typedef union _WHEA_ARM_PROCESSOR_ERROR_SECTION_VALID_BITS {
+ struct {
+ ULONG MPIDR:1;
+ ULONG AffinityLevel:1;
+ ULONG RunningState:1;
+ ULONG VendorSpecificInfo:1;
+ ULONG Reserved:28;
+ } ;
+ ULONG AsULONG;
+} WHEA_ARM_PROCESSOR_ERROR_SECTION_VALID_BITS,
+ *PWHEA_ARM_PROCESSOR_ERROR_SECTION_VALID_BITS;
+
+typedef struct _WHEA_ARM_PROCESSOR_ERROR_SECTION {
+ WHEA_ARM_PROCESSOR_ERROR_SECTION_VALID_BITS ValidBits;
+ USHORT ErrorInformationStructures;
+ USHORT ContextInformationStructures;
+ ULONG SectionLength;
+ UCHAR ErrorAffinityLevel;
+ UCHAR Reserved[3];
+ ULONGLONG MPIDR_EL1;
+ ULONGLONG MIDR_EL1;
+ ULONG RunningState;
+ ULONG PSCIState;
+ UCHAR Data[1];
+} WHEA_ARM_PROCESSOR_ERROR_SECTION, *PWHEA_ARM_PROCESSOR_ERROR_SECTION;
+
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_SECTION *)0)->ValidBits)) == (0)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_SECTION *)0)->ValidBits)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_SECTION *)0)->ErrorInformationStructures)) == (4)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_SECTION *)0)->ErrorInformationStructures)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_SECTION *)0)->ContextInformationStructures)) == (6)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_SECTION *)0)->ContextInformationStructures)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_SECTION *)0)->SectionLength)) == (8)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_SECTION *)0)->SectionLength)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_SECTION *)0)->ErrorAffinityLevel)) == (12)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_SECTION *)0)->ErrorAffinityLevel)) == (1))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_SECTION *)0)->Reserved)) == (13)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_SECTION *)0)->Reserved)) == (3))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_SECTION *)0)->MPIDR_EL1)) == (16)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_SECTION *)0)->MPIDR_EL1)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_SECTION *)0)->MIDR_EL1)) == (24)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_SECTION *)0)->MIDR_EL1)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_SECTION *)0)->RunningState)) == (32)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_SECTION *)0)->RunningState)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_SECTION *)0)->PSCIState)) == (36)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_SECTION *)0)->PSCIState)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_SECTION *)0)->Data)) == (40)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_SECTION *)0)->Data)) == (1))))?1:-1];
+
+
+
+typedef enum _WHEA_RECOVERY_TYPE {
+ WheaRecoveryTypeActionRequired = 1,
+ WheaRecoveryTypeActionOptional,
+ WheaRecoveryTypeMax
+} WHEA_RECOVERY_TYPE, *PWHEA_RECOVERY_TYPE;
+
+typedef union _WHEA_RECOVERY_ACTION {
+ struct {
+ UINT64 NoneAttempted : 1;
+ UINT64 TerminateProcess : 1;
+ UINT64 ForwardedToVm : 1;
+ UINT64 MarkPageBad : 1;
+ UINT64 PoisonNotPresent :1;
+ UINT64 Reserved : 59;
+ } ;
+
+ UINT64 AsUINT64;
+} WHEA_RECOVERY_ACTION, *PWHEA_RECOVERY_ACTION;
+
+typedef enum _WHEA_RECOVERY_FAILURE_REASON {
+ WheaRecoveryFailureReasonKernelCouldNotMarkMemoryBad = 1,
+ WheaRecoveryFailureReasonKernelMarkMemoryBadTimedOut,
+ WheaRecoveryFailureReasonNoRecoveryContext,
+ WheaRecoveryFailureReasonNotContinuable,
+ WheaRecoveryFailureReasonPcc,
+ WheaRecoveryFailureReasonOverflow,
+ WheaRecoveryFailureReasonNotSupported,
+ WheaRecoveryFailureReasonMiscOrAddrNotValid,
+ WheaRecoveryFailureReasonInvalidAddressMode,
+ WheaRecoveryFailureReasonHighIrql,
+ WheaRecoveryFailureReasonInsufficientAltContextWrappers,
+ WheaRecoveryFailureReasonInterruptsDisabled,
+ WheaRecoveryFailureReasonSwapBusy,
+ WheaRecoveryFailureReasonStackOverflow,
+ WheaRecoveryFailureReasonUnexpectedFailure,
+ WheaRecoveryFailureReasonKernelWillPageFaultBCAtCurrentIrql,
+ WheaRecoveryFailureReasonFarNotValid,
+ WheaRecoveryFailureReasonMax
+} WHEA_RECOVERY_FAILURE_REASON, *PWHEA_RECOVERY_FAILURE_REASON;
+
+typedef struct _WHEA_ERROR_RECOVERY_INFO_SECTION {
+ BOOLEAN RecoveryKernel;
+ WHEA_RECOVERY_ACTION RecoveryAction;
+ WHEA_RECOVERY_TYPE RecoveryType;
+ KIRQL Irql;
+ BOOLEAN RecoverySucceeded;
+ WHEA_RECOVERY_FAILURE_REASON FailureReason;
+ CCHAR ProcessName[20];
+} WHEA_ERROR_RECOVERY_INFO_SECTION, *PWHEA_ERROR_RECOVERY_INFO_SECTION;
+
+
+
+typedef union _WHEA_ARM_PROCESSOR_ERROR_INFORMATION_VALID_BITS {
+ struct {
+ USHORT MultipleError:1;
+ USHORT Flags:1;
+ USHORT ErrorInformation:1;
+ USHORT VirtualFaultAddress:1;
+ USHORT PhysicalFaultAddress:1;
+ USHORT Reserved:11;
+ } ;
+ USHORT AsUSHORT;
+} WHEA_ARM_PROCESSOR_ERROR_INFORMATION_VALID_BITS,
+ *PWHEA_ARM_PROCESSOR_ERROR_INFORMATION_VALID_BITS;
+
+typedef union _WHEA_ARM_CACHE_ERROR_VALID_BITS {
+ struct {
+ USHORT TransactionType:1;
+ USHORT Operation:1;
+ USHORT Level:1;
+ USHORT ProcessorContextCorrupt:1;
+ USHORT Corrected:1;
+ USHORT PrecisePC:1;
+ USHORT RestartablePC:1;
+ USHORT Reserved:9;
+ } ;
+ USHORT AsUSHORT;
+} WHEA_ARM_CACHE_ERROR_VALID_BITS, *PWHEA_ARM_CACHE_ERROR_VALID_BITS;
+
+typedef struct _WHEA_ARM_CACHE_ERROR {
+ WHEA_ARM_CACHE_ERROR_VALID_BITS ValidationBit;
+ UCHAR TransactionType:2;
+ UCHAR Operation:4;
+ UCHAR Level:3;
+ UCHAR ProcessorContextCorrupt:1;
+ UCHAR Corrected:1;
+ UCHAR PrecisePC:1;
+ UCHAR RestartablePC:1;
+ ULONGLONG Reserved:35;
+} WHEA_ARM_CACHE_ERROR, *PWHEA_ARM_CACHE_ERROR;
+
+typedef union _WHEA_ARM_TLB_ERROR_VALID_BITS {
+ struct {
+ USHORT TransactionType:1;
+ USHORT Operation:1;
+ USHORT Level:1;
+ USHORT ProcessorContextCorrupt:1;
+ USHORT Corrected:1;
+ USHORT PrecisePC:1;
+ USHORT RestartablePC:1;
+ USHORT Reserved:9;
+ } ;
+ USHORT AsUSHORT;
+} WHEA_ARM_TLB_ERROR_VALID_BITS, *PWHEA_ARM_TLB_ERROR_VALID_BITS;
+
+typedef struct _WHEA_ARM_TLB_ERROR {
+ WHEA_ARM_TLB_ERROR_VALID_BITS ValidationBit;
+ UCHAR TransactionType:2;
+ UCHAR Operation:4;
+ UCHAR Level:3;
+ UCHAR ProcessorContextCorrupt:1;
+ UCHAR Corrected:1;
+ UCHAR PrecisePC:1;
+ UCHAR RestartablePC:1;
+ ULONGLONG Reserved:36;
+} WHEA_ARM_TLB_ERROR, *PWHEA_ARM_TLB_ERROR;
+
+typedef union _WHEA_ARM_BUS_ERROR_VALID_BITS {
+ struct {
+ USHORT TransactionType:1;
+ USHORT Operation:1;
+ USHORT Level:1;
+ USHORT ProcessorContextCorrupt:1;
+ USHORT Corrected:1;
+ USHORT PrecisePC:1;
+ USHORT RestartablePC:1;
+ USHORT ParticipationType:1;
+ USHORT Timeout:1;
+ USHORT AddressSpace:1;
+ USHORT MemoryAttributes:1;
+ USHORT AccessMode:1;
+ USHORT Reserved:4;
+ } ;
+ USHORT AsUSHORT;
+} WHEA_ARM_BUS_ERROR_VALID_BITS, *PWHEA_ARM_BUS_ERROR_VALID_BITS;
+
+typedef struct _WHEA_ARM_BUS_ERROR {
+ WHEA_ARM_BUS_ERROR_VALID_BITS ValidationBit;
+ UCHAR TransactionType:2;
+ UCHAR Operation:4;
+ UCHAR Level:3;
+ UCHAR ProcessorContextCorrupt:1;
+ UCHAR Corrected:1;
+ UCHAR PrecisePC:1;
+ UCHAR RestartablePC:1;
+ UCHAR ParticipationType:2;
+ UCHAR TimeOut:1;
+ UCHAR AddressSpace:2;
+ USHORT MemoryAccessAttributes:9;
+ UCHAR AccessMode:1;
+ ULONG Reserved:20;
+} WHEA_ARM_BUS_ERROR, *PWHEA_ARM_BUS_ERROR;
+
+typedef union _WHEA_ARM_PROCESSOR_ERROR {
+ WHEA_ARM_CACHE_ERROR CacheError;
+ WHEA_ARM_TLB_ERROR TlbError;
+ WHEA_ARM_BUS_ERROR BusError;
+ ULONGLONG AsULONGLONG;
+} WHEA_ARM_PROCESSOR_ERROR, *PWHEA_ARM_PROCESSOR_ERROR;
+
+typedef struct _WHEA_ARM_PROCESSOR_ERROR_INFORMATION {
+ UCHAR Version;
+ UCHAR Length;
+ WHEA_ARM_PROCESSOR_ERROR_INFORMATION_VALID_BITS ValidationBit;
+ UCHAR Type;
+ USHORT MultipleError;
+ UCHAR Flags;
+ ULONGLONG ErrorInformation;
+ ULONGLONG VirtualFaultAddress;
+ ULONGLONG PhysicalFaultAddress;
+} WHEA_ARM_PROCESSOR_ERROR_INFORMATION, *PWHEA_ARM_PROCESSOR_ERROR_INFORMATION;
+
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_INFORMATION *)0)->Version)) == (0)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_INFORMATION *)0)->Version)) == (1))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_INFORMATION *)0)->Length)) == (1)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_INFORMATION *)0)->Length)) == (1))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_INFORMATION *)0)->ValidationBit)) == (2)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_INFORMATION *)0)->ValidationBit)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_INFORMATION *)0)->Type)) == (4)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_INFORMATION *)0)->Type)) == (1))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_INFORMATION *)0)->MultipleError)) == (5)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_INFORMATION *)0)->MultipleError)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_INFORMATION *)0)->Flags)) == (7)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_INFORMATION *)0)->Flags)) == (1))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_INFORMATION *)0)->ErrorInformation)) == (8)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_INFORMATION *)0)->ErrorInformation)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_INFORMATION *)0)->VirtualFaultAddress)) == (16)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_INFORMATION *)0)->VirtualFaultAddress)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_INFORMATION *)0)->PhysicalFaultAddress)) == (24)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_INFORMATION *)0)->PhysicalFaultAddress)) == (8))))?1:-1];
+
+
+
+typedef union _WHEA_ARM_PROCESSOR_ERROR_CONTEXT_INFORMATION_HEADER_FLAGS {
+ struct {
+ ULONG ExceptionLevel:1;
+ ULONG NonSecure:1;
+ ULONG AArch64:1;
+ ULONG Reserved:29;
+ } ;
+ ULONG AsULONG;
+} WHEA_ARM_PROCESSOR_ERROR_CONTEXT_INFORMATION_HEADER_FLAGS,
+ *PWHEA_ARM_PROCESSOR_ERROR_CONTEXT_INFORMATION_HEADER_FLAGS;
+
+typedef struct _WHEA_ARMV8_AARCH32_GPRS {
+ ULONG R0;
+ ULONG R1;
+ ULONG R2;
+ ULONG R3;
+ ULONG R4;
+ ULONG R5;
+ ULONG R6;
+ ULONG R7;
+ ULONG R8;
+ ULONG R9;
+ ULONG R10;
+ ULONG R11;
+ ULONG R12;
+ ULONG R13;
+ ULONG R14;
+ ULONG R15;
+} WHEA_ARMV8_AARCH32_GPRS, *PWHEA_ARMV8_AARCH32_GPRS;
+
+typedef struct _WHEA_ARM_AARCH32_EL1_CSR {
+ ULONG DFAR;
+ ULONG DFSR;
+ ULONG IFAR;
+ ULONG ISR;
+ ULONG MAIR0;
+ ULONG MAIR1;
+ ULONG MIDR;
+ ULONG MPIDR;
+ ULONG NMRR;
+ ULONG PRRR;
+ ULONG SCTLR;
+ ULONG SPSR;
+ ULONG SPSR_abt;
+ ULONG SPSR_fiq;
+ ULONG SPSR_irq;
+ ULONG SPSR_svc;
+ ULONG SPSR_und;
+ ULONG TPIDRPRW;
+ ULONG TPIDRURO;
+ ULONG TPIDRURW;
+ ULONG TTBCR;
+ ULONG TTBR0;
+ ULONG TTBR1;
+ ULONG DACR;
+} WHEA_ARM_AARCH32_EL1_CSR, *PWHEA_ARM_AARCH32_EL1;
+
+typedef struct _WHEA_ARM_AARCH32_EL2_CSR {
+ ULONG ELR_hyp;
+ ULONG HAMAIR0;
+ ULONG HAMAIR1;
+ ULONG HCR;
+ ULONG HCR2;
+ ULONG HDFAR;
+ ULONG HIFAR;
+ ULONG HPFAR;
+ ULONG HSR;
+ ULONG HTCR;
+ ULONG HTPIDR;
+ ULONG HTTBR;
+ ULONG SPSR_hyp;
+ ULONG VTCR;
+ ULONG VTTBR;
+ ULONG DACR32_EL2;
+} WHEA_ARM_AARCH32_EL2_CSR, *PWHEA_ARM_AARCH32_EL2_CSR;
+
+typedef struct _WHEA_ARM_AARCH32_SECURE_CSR {
+ ULONG SCTLR;
+ ULONG SPSR_mon;
+} WHEA_ARM_AARCH32_SECURE_CSR, *PWHEA_ARM_AARCH32_SECURE_CSR;
+
+typedef struct _WHEA_ARMV8_AARCH64_GPRS {
+ ULONGLONG X0;
+ ULONGLONG X1;
+ ULONGLONG X2;
+ ULONGLONG X3;
+ ULONGLONG X4;
+ ULONGLONG X5;
+ ULONGLONG X6;
+ ULONGLONG X7;
+ ULONGLONG X8;
+ ULONGLONG X9;
+ ULONGLONG X10;
+ ULONGLONG X11;
+ ULONGLONG X12;
+ ULONGLONG X13;
+ ULONGLONG X14;
+ ULONGLONG X15;
+ ULONGLONG X16;
+ ULONGLONG X17;
+ ULONGLONG X18;
+ ULONGLONG X19;
+ ULONGLONG X20;
+ ULONGLONG X21;
+ ULONGLONG X22;
+ ULONGLONG X23;
+ ULONGLONG X24;
+ ULONGLONG X25;
+ ULONGLONG X26;
+ ULONGLONG X27;
+ ULONGLONG X28;
+ ULONGLONG X29;
+ ULONGLONG X30;
+ ULONGLONG SP;
+} WHEA_ARMV8_AARCH64_GPRS, *PWHEA_ARMV8_AARCH64_GPRS;
+
+typedef struct _WHEA_ARM_AARCH64_EL1_CSR {
+ ULONGLONG ELR_EL1;
+ ULONGLONG ESR_EL2;
+ ULONGLONG FAR_EL1;
+ ULONGLONG ISR_EL1;
+ ULONGLONG MAIR_EL1;
+ ULONGLONG MIDR_EL1;
+ ULONGLONG MPIDR_EL1;
+ ULONGLONG SCTLR_EL1;
+ ULONGLONG SP_EL0;
+ ULONGLONG SP_EL1;
+ ULONGLONG SPSR_EL1;
+ ULONGLONG TCR_EL1;
+ ULONGLONG TPIDR_EL0;
+ ULONGLONG TPIDR_EL1;
+ ULONGLONG TPIDRRO_EL0;
+ ULONGLONG TTBR0_EL1;
+ ULONGLONG TTBR1_EL1;
+} WHEA_ARM_AARCH64_EL1_CSR, *PWHEA_ARM_AARCH64_EL1_CSR;
+
+typedef struct _WHEA_ARM_AARCH64_EL2_CSR {
+ ULONGLONG ELR_EL2;
+ ULONGLONG ESR_EL2;
+ ULONGLONG FAR_EL2;
+ ULONGLONG HACR_EL2;
+ ULONGLONG HCR_EL2;
+ ULONGLONG HPFAR_EL2;
+ ULONGLONG MAIR_EL2;
+ ULONGLONG SCTLR_EL2;
+ ULONGLONG SP_EL2;
+ ULONGLONG SPSR_EL2;
+ ULONGLONG TCR_EL2;
+ ULONGLONG TPIDR_EL2;
+ ULONGLONG TTBR0_EL2;
+ ULONGLONG VTCR_EL2;
+ ULONGLONG VTTBR_EL2;
+} WHEA_ARM_AARCH64_EL2_CSR, *PWHEA_ARM_AARCH64_EL2_CSR;
+
+typedef struct _WHEA_ARMV8_AARCH64_EL3_CSR {
+ ULONGLONG ELR_EL3;
+ ULONGLONG ESR_EL3;
+ ULONGLONG FAR_EL3;
+ ULONGLONG MAIR_EL3;
+ ULONGLONG SCTLR_EL3;
+ ULONGLONG SP_EL3;
+ ULONGLONG SPSR_EL3;
+ ULONGLONG TCR_EL3;
+ ULONGLONG TPIDR_EL3;
+ ULONGLONG TTBR0_EL3;
+} WHEA_ARMV8_AARCH64_EL3_CSR, *PWHEA_ARMV8_AARCH64_EL3_CSR;
+
+typedef struct _WHEA_ARM_MISC_CSR {
+ USHORT MRSEncoding;
+ ULONGLONG Value;
+} WHEA_ARM_MISC_CSR, *PWHEA_ARM_MISC_CSR;
+
+typedef struct _WHEA_ARM_PROCESSOR_ERROR_CONTEXT_INFORMATION_HEADER {
+ USHORT Version;
+ USHORT RegisterContextType;
+ ULONG RegisterArraySize;
+ UCHAR RegisterArray[1];
+} WHEA_ARM_PROCESSOR_ERROR_CONTEXT_INFORMATION_HEADER,
+ *PWHEA_ARM_PROCESSOR_ERROR_CONTEXT_INFORMATION_HEADER;
+
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_CONTEXT_INFORMATION_HEADER *)0)->Version)) == (0)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_CONTEXT_INFORMATION_HEADER *)0)->Version)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_CONTEXT_INFORMATION_HEADER *)0)->RegisterContextType)) == (2)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_CONTEXT_INFORMATION_HEADER *)0)->RegisterContextType)) == (2))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_CONTEXT_INFORMATION_HEADER *)0)->RegisterArraySize)) == (4)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_CONTEXT_INFORMATION_HEADER *)0)->RegisterArraySize)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ARM_PROCESSOR_ERROR_CONTEXT_INFORMATION_HEADER *)0)->RegisterArray)) == (8)) && ((sizeof(((WHEA_ARM_PROCESSOR_ERROR_CONTEXT_INFORMATION_HEADER *)0)->RegisterArray)) == (1))))?1:-1];
+
+
+
+typedef struct _WHEA_SEA_SECTION {
+ ULONG Esr;
+ ULONG64 Far;
+ ULONG64 Par;
+ BOOLEAN WasKernel;
+} WHEA_SEA_SECTION, *PWHEA_SEA_SECTION;
+
+typedef struct _WHEA_SEI_SECTION {
+ ULONG Esr;
+ ULONG64 Far;
+} WHEA_SEI_SECTION, *PWHEA_SEI_SECTION;
+
+
+
+typedef struct _WHEA_ARM_RAS_NODE_SECTION {
+ UINT32 NodeFieldCount;
+ UINT32 NodeIndex;
+ UINT8 InterfaceType;
+ UINT8 AestNodeType;
+ UINT8 Reserved[6];
+
+ UINT64 ErrFr;
+ UINT64 ErrCtlr;
+ UINT64 ErrStatus;
+ UINT64 ErrAddr;
+ UINT64 ErrMisc0;
+ UINT64 ErrMisc1;
+ UINT64 ErrMisc2;
+ UINT64 ErrMisc3;
+} WHEA_ARM_RAS_NODE_SECTION, *PWHEA_ARM_RAS_NODE_SECTION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _WHEA_ARM_RAS_NODE_INTERFACES {
+ WheaArmRasNodeInterfaceSystemRegister = 0,
+ WheaArmRasNodeInterfaceMmio = 1
+} WHEA_ARM_RAS_NODE_INTERFACES, *PWHEA_ARM_RAS_NODE_INTERFACES;
+
+
+
+typedef enum _WHEA_PCI_RECOVERY_SIGNAL {
+ WheaPciRecoverySignalUnknown = 0,
+ WheaPciRecoverySignalAer,
+ WheaPciRecoverySignalDpc
+}WHEA_PCI_RECOVERY_SIGNAL, *PWHEA_PCI_RECOVERY_SIGNAL;
+
+typedef enum _WHEA_PCI_RECOVERY_STATUS {
+ WheaPciREcoveryStatusUnknown = 0,
+ WheaPciRecoveryStatusNoError,
+ WheaPciRecoveryStatusLinkDisableTimeout,
+ WheaPciRecoveryStatusLinkEnableTimeout,
+ WheaPciRecoveryStatusRpBusyTimeout,
+ WheaPciRecoveryStatusComplexTree,
+ WheaPciRecoveryStatusBusNotFound,
+ WheaPciRecoveryStatusDeviceNotFound,
+ WheaPciRecoveryStatusDdaAerNotRecoverable,
+ WheaPciRecoveryStatusFailedRecovery,
+}WHEA_PCI_RECOVERY_STATUS, *PWHEA_PCI_RECOVERY_STATUS;
+
+typedef struct _WHEA_PCI_RECOVERY_SECTION {
+ UINT8 SignalType;
+ BOOLEAN RecoveryAttempted;
+ UINT8 RecoveryStatus;
+} WHEA_PCI_RECOVERY_SECTION, *PWHEA_PCI_RECOVERY_SECTION;
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(disable:4103)
+
+#pragma pack(pop)
+
+
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+
+
+#line 36 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+#line 37 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+#pragma external_header(pop)
+#line 20640 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+extern const GUID CMC_NOTIFY_TYPE_GUID;
+#line 20648 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID CPE_NOTIFY_TYPE_GUID;
+#line 20653 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID MCE_NOTIFY_TYPE_GUID;
+#line 20658 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID PCIe_NOTIFY_TYPE_GUID;
+#line 20663 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID INIT_NOTIFY_TYPE_GUID;
+#line 20668 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID NMI_NOTIFY_TYPE_GUID;
+#line 20673 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID BOOT_NOTIFY_TYPE_GUID;
+#line 20678 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID SEA_NOTIFY_TYPE_GUID;
+#line 20683 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID SEI_NOTIFY_TYPE_GUID;
+#line 20688 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID PEI_NOTIFY_TYPE_GUID;
+#line 20693 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID BMC_NOTIFY_TYPE_GUID;
+#line 20698 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID SCI_NOTIFY_TYPE_GUID;
+#line 20703 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID EXTINT_NOTIFY_TYPE_GUID;
+#line 20708 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID DEVICE_DRIVER_NOTIFY_TYPE_GUID;
+#line 20713 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID CMCI_NOTIFY_TYPE_GUID;
+#line 20718 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+extern const GUID WHEA_DEVICE_ERROR_SUMMARY_GUID;
+#line 20725 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+extern const GUID PROCESSOR_GENERIC_ERROR_SECTION_GUID;
+#line 20732 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID XPF_PROCESSOR_ERROR_SECTION_GUID;
+#line 20737 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID IPF_PROCESSOR_ERROR_SECTION_GUID;
+#line 20742 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID ARM_PROCESSOR_ERROR_SECTION_GUID;
+#line 20747 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID MEMORY_ERROR_SECTION_GUID;
+#line 20752 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID PCIEXPRESS_ERROR_SECTION_GUID;
+#line 20757 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID PCIXBUS_ERROR_SECTION_GUID;
+#line 20762 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID PCIXDEVICE_ERROR_SECTION_GUID;
+#line 20767 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID FIRMWARE_ERROR_RECORD_REFERENCE_GUID;
+#line 20772 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID PMEM_ERROR_SECTION_GUID;
+#line 20777 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID MU_TELEMETRY_SECTION_GUID;
+#line 20782 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID RECOVERY_INFO_SECTION_GUID;
+#line 20787 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+extern const GUID WHEA_CACHECHECK_GUID;
+#line 20794 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID WHEA_TLBCHECK_GUID;
+#line 20799 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID WHEA_BUSCHECK_GUID;
+#line 20804 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID WHEA_MSCHECK_GUID;
+#line 20809 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID CPER_EMPTY_GUID;
+
+
+
+
+extern const GUID WHEA_RECORD_CREATOR_GUID;
+#line 20829 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+extern const GUID DEFAULT_DEVICE_DRIVER_CREATOR_GUID;
+#line 20837 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+extern const GUID GENERIC_NOTIFY_TYPE_GUID;
+#line 20845 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+extern const GUID IPF_SAL_RECORD_SECTION_GUID;
+#line 20853 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID XPF_MCA_SECTION_GUID;
+#line 20859 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID NMI_SECTION_GUID;
+#line 20865 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID GENERIC_SECTION_GUID;
+#line 20871 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID IPMI_MSR_DUMP_SECTION_GUID;
+#line 20877 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID WHEA_ERROR_PACKET_SECTION_GUID;
+#line 20883 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID WHEA_DPC_CAPABILITY_SECTION_GUID;
+#line 20889 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID PCIE_CORRECTABLE_ERROR_SUMMARY_SECTION_GUID;
+#line 20895 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID MEMORY_CORRECTABLE_ERROR_SUMMARY_SECTION_GUID;
+#line 20901 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID SEA_SECTION_GUID;
+#line 20906 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID SEI_SECTION_GUID;
+#line 20911 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID PCI_RECOVERY_SECTION_GUID;
+#line 20916 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID ARM_RAS_NODE_SECTION_GUID;
+#line 20921 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+extern const GUID MEMORY_ERROR_EXT_SECTION_INTEL_GUID;
+#line 20926 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+#line 20933 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+#line 20937 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack1.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(disable:4103)
+
+#pragma pack(push,1)
+
+
+#line 30 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack1.h"
+
+
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack1.h"
+#line 34 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack1.h"
+#pragma external_header(pop)
+#line 20939 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+#line 20943 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+typedef enum _WHEA_ERROR_TYPE {
+ WheaErrTypeProcessor = 0,
+ WheaErrTypeMemory,
+ WheaErrTypePCIExpress,
+ WheaErrTypeNMI,
+ WheaErrTypePCIXBus,
+ WheaErrTypePCIXDevice,
+ WheaErrTypeGeneric,
+ WheaErrTypePmem,
+} WHEA_ERROR_TYPE, *PWHEA_ERROR_TYPE;
+
+typedef union _WHEA_ERROR_PACKET_FLAGS {
+ struct {
+ ULONG PreviousError:1;
+ ULONG CriticalEvent:1;
+ ULONG HypervisorError:1;
+ ULONG Simulated:1;
+ ULONG PlatformPfaControl:1;
+ ULONG PlatformDirectedOffline:1;
+ ULONG AddressTranslationRequired:1;
+ ULONG AddressTranslationCompleted:1;
+ ULONG RecoveryOptional:1;
+ ULONG Reserved2:23;
+ } ;
+ ULONG AsULONG;
+} WHEA_ERROR_PACKET_FLAGS, *PWHEA_ERROR_PACKET_FLAGS;
+
+typedef enum _WHEA_ERROR_PACKET_DATA_FORMAT {
+ WheaDataFormatIPFSalRecord = 0,
+ WheaDataFormatXPFMCA,
+ WheaDataFormatMemory,
+ WheaDataFormatPCIExpress,
+ WheaDataFormatNMIPort,
+ WheaDataFormatPCIXBus,
+ WheaDataFormatPCIXDevice,
+ WheaDataFormatGeneric,
+ WheaDataFormatMax
+} WHEA_ERROR_PACKET_DATA_FORMAT, *PWHEA_ERROR_PACKET_DATA_FORMAT;
+
+typedef enum _WHEA_RAW_DATA_FORMAT {
+ WheaRawDataFormatIPFSalRecord = 0x00,
+ WheaRawDataFormatIA32MCA,
+ WheaRawDataFormatIntel64MCA,
+ WheaRawDataFormatAMD64MCA,
+ WheaRawDataFormatMemory,
+ WheaRawDataFormatPCIExpress,
+ WheaRawDataFormatNMIPort,
+ WheaRawDataFormatPCIXBus,
+ WheaRawDataFormatPCIXDevice,
+ WheaRawDataFormatGeneric,
+ WheaRawDataFormatMax
+} WHEA_RAW_DATA_FORMAT, *PWHEA_RAW_DATA_FORMAT;
+
+typedef struct _WHEA_ERROR_PACKET_V1 {
+ ULONG Signature;
+ WHEA_ERROR_PACKET_FLAGS Flags;
+ ULONG Size;
+ ULONG RawDataLength;
+ ULONGLONG Reserved1;
+ ULONGLONG Context;
+ WHEA_ERROR_TYPE ErrorType;
+ WHEA_ERROR_SEVERITY ErrorSeverity;
+ ULONG ErrorSourceId;
+ WHEA_ERROR_SOURCE_TYPE ErrorSourceType;
+ ULONG Reserved2;
+ ULONG Version;
+ ULONGLONG Cpu;
+ union {
+ WHEA_PROCESSOR_GENERIC_ERROR_SECTION ProcessorError;
+ WHEA_MEMORY_ERROR_SECTION MemoryError;
+ WHEA_NMI_ERROR_SECTION NmiError;
+ WHEA_PCIEXPRESS_ERROR_SECTION PciExpressError;
+ WHEA_PCIXBUS_ERROR_SECTION PciXBusError;
+ WHEA_PCIXDEVICE_ERROR_SECTION PciXDeviceError;
+ WHEA_PMEM_ERROR_SECTION PmemError;
+ } u;
+ WHEA_RAW_DATA_FORMAT RawDataFormat;
+ ULONG RawDataOffset;
+ UCHAR RawData[1];
+
+} WHEA_ERROR_PACKET_V1, *PWHEA_ERROR_PACKET_V1;
+
+
+
+
+typedef struct _WHEA_ERROR_PACKET_V2 {
+ ULONG Signature;
+ ULONG Version;
+ ULONG Length;
+ WHEA_ERROR_PACKET_FLAGS Flags;
+ WHEA_ERROR_TYPE ErrorType;
+ WHEA_ERROR_SEVERITY ErrorSeverity;
+ ULONG ErrorSourceId;
+ WHEA_ERROR_SOURCE_TYPE ErrorSourceType;
+ GUID NotifyType;
+ ULONGLONG Context;
+ WHEA_ERROR_PACKET_DATA_FORMAT DataFormat;
+ ULONG Reserved1;
+ ULONG DataOffset;
+ ULONG DataLength;
+ ULONG PshedDataOffset;
+ ULONG PshedDataLength;
+
+
+} WHEA_ERROR_PACKET_V2, *PWHEA_ERROR_PACKET_V2;
+
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_PACKET_V2 *)0)->Signature)) == (0)) && ((sizeof(((WHEA_ERROR_PACKET_V2 *)0)->Signature)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_PACKET_V2 *)0)->Version)) == (4)) && ((sizeof(((WHEA_ERROR_PACKET_V2 *)0)->Version)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_PACKET_V2 *)0)->Length)) == (8)) && ((sizeof(((WHEA_ERROR_PACKET_V2 *)0)->Length)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_PACKET_V2 *)0)->Flags)) == (12)) && ((sizeof(((WHEA_ERROR_PACKET_V2 *)0)->Flags)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_PACKET_V2 *)0)->ErrorType)) == (16)) && ((sizeof(((WHEA_ERROR_PACKET_V2 *)0)->ErrorType)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_PACKET_V2 *)0)->ErrorSeverity)) == (20)) && ((sizeof(((WHEA_ERROR_PACKET_V2 *)0)->ErrorSeverity)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_PACKET_V2 *)0)->ErrorSourceId)) == (24)) && ((sizeof(((WHEA_ERROR_PACKET_V2 *)0)->ErrorSourceId)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_PACKET_V2 *)0)->ErrorSourceType)) == (28)) && ((sizeof(((WHEA_ERROR_PACKET_V2 *)0)->ErrorSourceType)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_PACKET_V2 *)0)->NotifyType)) == (32)) && ((sizeof(((WHEA_ERROR_PACKET_V2 *)0)->NotifyType)) == (16))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_PACKET_V2 *)0)->Context)) == (48)) && ((sizeof(((WHEA_ERROR_PACKET_V2 *)0)->Context)) == (8))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_PACKET_V2 *)0)->DataFormat)) == (56)) && ((sizeof(((WHEA_ERROR_PACKET_V2 *)0)->DataFormat)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_PACKET_V2 *)0)->Reserved1)) == (60)) && ((sizeof(((WHEA_ERROR_PACKET_V2 *)0)->Reserved1)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_PACKET_V2 *)0)->DataOffset)) == (64)) && ((sizeof(((WHEA_ERROR_PACKET_V2 *)0)->DataOffset)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_PACKET_V2 *)0)->DataLength)) == (68)) && ((sizeof(((WHEA_ERROR_PACKET_V2 *)0)->DataLength)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_PACKET_V2 *)0)->PshedDataOffset)) == (72)) && ((sizeof(((WHEA_ERROR_PACKET_V2 *)0)->PshedDataOffset)) == (4))))?1:-1];
+typedef char __C_ASSERT__[(((((LONG)(LONG_PTR)&(((WHEA_ERROR_PACKET_V2 *)0)->PshedDataLength)) == (76)) && ((sizeof(((WHEA_ERROR_PACKET_V2 *)0)->PshedDataLength)) == (4))))?1:-1];
+
+
+
+
+
+
+
+
+typedef struct _WHEA_ERROR_PACKET_V2 WHEA_ERROR_PACKET, *PWHEA_ERROR_PACKET;
+
+
+
+
+
+
+
+
+
+#line 21087 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+typedef PCI_EXPRESS_DPC_CAPABILITY WHEA_PCI_DPC_SECTION, *PWHEA_PCI_DPC_SECTION;
+
+typedef enum _WHEA_EVENT_LOG_ENTRY_TYPE {
+ WheaEventLogEntryTypeInformational = 0,
+ WheaEventLogEntryTypeWarning,
+ WheaEventLogEntryTypeError
+} WHEA_EVENT_LOG_ENTRY_TYPE, *PWHEA_EVENT_LOG_ENTRY_TYPE;
+
+typedef enum _WHEA_EVENT_LOG_ENTRY_ID {
+ WheaEventLogEntryIdCmcPollingTimeout = 0x80000001,
+ WheaEventLogEntryIdWheaInit = 0x80000002,
+ WheaEventLogEntryIdCmcSwitchToPolling = 0x80000003,
+ WheaEventLogEntryIdDroppedCorrectedError = 0x80000004,
+ WheaEventLogEntryIdStartedReportHwError = 0x80000005,
+ WheaEventLogEntryIdPFAMemoryOfflined = 0x80000006,
+ WheaEventLogEntryIdPFAMemoryRemoveMonitor = 0x80000007,
+ WheaEventLogEntryIdPFAMemoryPolicy = 0x80000008,
+ WheaEventLogEntryIdPshedInjectError = 0x80000009,
+ WheaEventLogEntryIdOscCapabilities = 0x8000000a,
+ WheaEventLogEntryIdPshedPluginRegister = 0x8000000b,
+ WheaEventLogEntryIdAddRemoveErrorSource = 0x8000000c,
+ WheaEventLogEntryIdWorkQueueItem = 0x8000000d,
+ WheaEventLogEntryIdAttemptErrorRecovery = 0x8000000e,
+ WheaEventLogEntryIdMcaFoundErrorInBank = 0x8000000f,
+ WheaEventLogEntryIdMcaStuckErrorCheck = 0x80000010,
+ WheaEventLogEntryIdMcaErrorCleared = 0x80000011,
+ WheaEventLogEntryIdClearedPoison = 0x80000012,
+ WheaEventLogEntryIdProcessEINJ = 0x80000013,
+ WheaEventLogEntryIdProcessHEST = 0x80000014,
+ WheaEventLogEntryIdCreateGenericRecord = 0x80000015,
+ WheaEventLogEntryIdErrorRecord = 0x80000016,
+ WheaEventLogEntryIdErrorRecordLimit = 0x80000017,
+ WheaEventLogEntryIdAerNotGrantedToOs = 0x80000018,
+ WheaEventLogEntryIdErrSrcArrayInvalid = 0x80000019,
+ WheaEventLogEntryIdAcpiTimeOut = 0x8000001a,
+ WheaEventLogCmciRestart = 0x8000001b,
+ WheaEventLogCmciFinalRestart = 0x8000001c,
+ WheaEventLogEntryEtwOverFlow = 0x8000001d,
+ WheaEventLogAzccRootBusSearchErr = 0x8000001e,
+ WheaEventLogAzccRootBusList = 0x8000001f,
+ WheaEventLogEntryIdErrSrcInvalid = 0x80000020,
+ WheaEventLogEntryIdGenericErrMemMap = 0x80000021,
+ WheaEventLogEntryIdPshedCallbackCollision = 0x80000022,
+ WheaEventLogEntryIdSELBugCheckProgress = 0x80000023,
+ WheaEventLogEntryIdPshedPluginLoad = 0x80000024,
+ WheaEventLogEntryIdPshedPluginUnload = 0x80000025,
+ WheaEventLogEntryIdPshedPluginSupported = 0x80000026,
+ WheaEventLogEntryIdDeviceDriver = 0x80000027,
+ WheaEventLogEntryIdCmciImplPresent = 0x80000028,
+ WheaEventLogEntryIdCmciInitError = 0x80000029,
+ WheaEventLogEntryIdSELBugCheckRecovery = 0x8000002a,
+ WheaEventLogEntryIdDrvErrSrcInvalid = 0x8000002b,
+ WheaEventLogEntryIdDrvHandleBusy = 0x8000002c,
+ WheaEventLogEntryIdWheaHeartbeat = 0x8000002d,
+ WheaEventLogAzccRootBusPoisonSet = 0x8000002e,
+ WheaEventLogEntryIdSELBugCheckInfo = 0x8000002f,
+ WheaEventLogEntryIdErrDimmInfoMismatch = 0x80000030,
+ WheaEventLogEntryIdeDpcEnabled = 0x80000031,
+ WheaEventLogEntryPageOfflineDone = 0x80000032,
+ WheaEventLogEntryPageOfflinePendMax = 0x80000033,
+ WheaEventLogEntryIdBadPageLimitReached = 0x80000034,
+ WheaEventLogEntrySrarDetail = 0x80000035,
+ WheaEventLogEntryEarlyError = 0x80000036,
+ WheaEventLogEntryIdPcieOverrideInfo = 0x80000037,
+ WheaEventLogEntryIdReadPcieOverridesErr = 0x80000038,
+ WheaEventLogEntryIdPcieConfigInfo = 0x80000039,
+ WheaEventLogEntryIdPcieSummaryFailed = 0x80000040,
+ WheaEventLogEntryIdThrottleRegCorrupt = 0x80000041,
+ WheaEventLogEntryIdThrottleAddErrSrcFailed = 0x80000042,
+ WheaEventLogEntryIdThrottleRegDataIgnored = 0x80000043,
+ WheaEventLogEntryIdEnableKeyNotifFailed = 0x80000044,
+ WheaEventLogEntryIdKeyNotificationFailed = 0x80000045,
+ WheaEventLogEntryIdPcieRemoveDevice = 0x80000046,
+ WheaEventLogEntryIdPcieAddDevice = 0x80000047,
+ WheaEventLogEntryIdPcieSpuriousErrSource = 0x80000048,
+ WheaEventLogEntryIdMemoryAddDevice = 0x80000049,
+ WheaEventLogEntryIdMemoryRemoveDevice = 0x8000004a,
+ WheaEventLogEntryIdMemorySummaryFailed = 0x8000004b,
+ WheaEventLogEntryIdPcieDpcError = 0x8000004c,
+ WheaEventLogEntryIdCpuBusesInitFailed = 0x8000004d,
+ WheaEventLogEntryIdPshedPluginInitFailed = 0x8000004e,
+ WheaEventLogEntryIdFailedAddToDefectList = 0x8000004f,
+ WheaEventLogEntryIdDefectListFull = 0x80000050,
+ WheaEventLogEntryIdDefectListUEFIVarFailed = 0x80000051,
+ WheaEventLogEntryIdDefectListCorrupt = 0x80000052,
+ WheaEventLogEntryIdBadHestNotifyData = 0x80000053,
+ WheaEventLogEntryIdRowFailure = 0x80000054,
+ WheaEventLogEntryIdSrasTableNotFound = 0x80000055,
+ WheaEventLogEntryIdSrasTableError = 0x80000056,
+ WheaEventLogEntryIdSrasTableEntries = 0x80000057,
+ WheaEventLogEntryIdPFANotifyCallbackAction = 0x80000058,
+ WheaEventLogEntryIdSELBugCheckCpusQuiesced = 0x80000059,
+ WheaEventLogEntryIdPshedPiCpuid = 0x8000005a,
+ WheaEventLogEntryIdSrasTableBadData = 0x8000005b,
+ WheaEventLogEntryIdDriFsStatus = 0x8000005c,
+ WheaEventLogEntryIdCpusFrozen = 0x80000060,
+ WheaEventLogEntryIdCpusFrozenNoCrashDump = 0x80000061,
+ WheaEventLogEntryIdRegNotifyPolicyChange = 0x80000062,
+ WheaEventLogEntryIdRegError = 0x80000063,
+ WheaEventLogEntryIdRowOfflineEvent = 0x80000064,
+ WheaEventLogEntryIdBitOfflineEvent = 0x80000065,
+ WheaEventLogEntryIdBadGasFields = 0x80000066,
+ WheaEventLogEntryIdCrashDumpError = 0x80000067,
+ WheaEventLogEntryIdCrashDumpCheckpoint = 0x80000068,
+ WheaEventLogEntryIdCrashDumpProgressPercent = 0x80000069,
+ WheaEventLogEntryIdPreviousCrashBugCheckProgress = 0x8000006a,
+ WheaEventLogEntryIdSELBugCheckStackDump = 0x8000006b,
+ WheaEventLogEntryIdPciePromotedAerErr = 0x8000006c,
+ WheaEventLogEntryIdPshedPiTraceLog = 0x80040010
+} WHEA_EVENT_LOG_ENTRY_ID, *PWHEA_EVENT_LOG_ENTRY_ID;
+
+typedef union _WHEA_EVENT_LOG_ENTRY_FLAGS {
+ struct {
+ ULONG Reserved1:1;
+ ULONG LogInternalEtw:1;
+ ULONG LogBlackbox:1;
+ ULONG LogSel:1;
+ ULONG RawSel:1;
+ ULONG NoFormat:1;
+ ULONG Driver:1;
+ ULONG Reserved2:25;
+ } ;
+ ULONG AsULONG;
+} WHEA_EVENT_LOG_ENTRY_FLAGS, *PWHEA_EVENT_LOG_ENTRY_FLAGS;
+
+typedef struct _WHEA_EVENT_LOG_ENTRY_HEADER {
+ ULONG Signature;
+ ULONG Version;
+ ULONG Length;
+ WHEA_EVENT_LOG_ENTRY_TYPE Type;
+ ULONG OwnerTag;
+ WHEA_EVENT_LOG_ENTRY_ID Id;
+ WHEA_EVENT_LOG_ENTRY_FLAGS Flags;
+ ULONG PayloadLength;
+} WHEA_EVENT_LOG_ENTRY_HEADER, *PWHEA_EVENT_LOG_ENTRY_HEADER;
+
+typedef struct _WHEA_EVENT_LOG_ENTRY {
+ WHEA_EVENT_LOG_ENTRY_HEADER Header;
+
+} WHEA_EVENT_LOG_ENTRY, *PWHEA_EVENT_LOG_ENTRY;
+
+typedef struct _WHEAP_DEFERRED_EVENT {
+ LIST_ENTRY ListEntry;
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+} WHEAP_DEFERRED_EVENT, *PWHEAP_DEFERRED_EVENT;
+
+
+
+
+
+typedef struct _WHEAP_BAD_HEST_NOTIFY_DATA_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ USHORT SourceId;
+ USHORT Reserved;
+ WHEA_NOTIFICATION_DESCRIPTOR NotifyDesc;
+} WHEAP_BAD_HEST_NOTIFY_DATA_EVENT, *PWHEAP_BAD_HEST_NOTIFY_DATA_EVENT;
+
+typedef struct _WHEAP_STARTED_REPORT_HW_ERROR {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ PWHEA_ERROR_PACKET ErrorPacket;
+} WHEAP_STARTED_REPORT_HW_ERROR,
+ *PWHEAP_STARTED_REPORT_HW_ERROR;
+
+typedef enum _WHEA_RECOVERY_CONTEXT_ACTION_TAKEN {
+ WheaRecoveryContextActionTakenNone = 0,
+ WheaRecoveryContextActionTakenOfflineDemotion,
+ WheaRecoveryContextActionTakenPageNotReplaced,
+ WheaRecoveryContextActionTakenPageReplaced,
+ WheaRecoveryContextActionTakenMax
+} WHEA_RECOVERY_CONTEXT_ACTION_TAKEN, *PWHEA_RECOVERY_CONTEXT_ACTION_TAKEN;
+
+typedef union _WHEA_RECOVERY_CONTEXT_ACTION_TAKEN_ADDITIONAL_INFO {
+ struct {
+ ULONG64 Reserved: 64;
+ } Bits;
+
+ ULONG64 AsULONG64;
+} WHEA_RECOVERY_CONTEXT_ACTION_TAKEN_ADDITIONAL_INFO,
+ *PWHEA_RECOVERY_CONTEXT_ACTION_TAKEN_ADDITIONAL_INFO;
+
+typedef enum _WHEAP_PFA_OFFLINE_DECISION_TYPE {
+ WheapPfaOfflinePredictiveFailure = 1,
+ WheapPfaOfflineUncorrectedError = 2
+} WHEAP_PFA_OFFLINE_DECISION_TYPE, *PWHEAP_PFA_OFFLINE_DECISION_TYPE;
+
+typedef struct _WHEAP_PFA_MEMORY_OFFLINED {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ WHEAP_PFA_OFFLINE_DECISION_TYPE DecisionType;
+ BOOLEAN ImmediateSuccess;
+ ULONG Page;
+ BOOLEAN NotifyVid;
+} WHEAP_PFA_MEMORY_OFFLINED,
+ *PWHEAP_PFA_MEMORY_OFFLINED;
+
+typedef struct _WHEAP_PFA_MEMORY_OFFLINED_NOTIFY_CALLBACK_ACTION {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ ULONG Page;
+ ULONG ComponentTag;
+ NTSTATUS Status;
+ WHEA_RECOVERY_CONTEXT_ACTION_TAKEN ActionTaken;
+ WHEA_RECOVERY_CONTEXT_ACTION_TAKEN_ADDITIONAL_INFO ActionTakenAdditionalInfo;
+} WHEAP_PFA_MEMORY_OFFLINED_NOTIFY_CALLBACK_ACTION,
+ *PWHEAP_PFA_MEMORY_OFFLINED_NOTIFY_CALLBACK_ACTION;
+
+typedef struct _WHEAP_PSHED_INJECT_ERROR {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ ULONG ErrorType;
+ ULONGLONG Parameter1;
+ ULONGLONG Parameter2;
+ ULONGLONG Parameter3;
+ ULONGLONG Parameter4;
+ NTSTATUS InjectionStatus;
+ BOOLEAN InjectionAttempted;
+ BOOLEAN InjectionByPlugin;
+} WHEAP_PSHED_INJECT_ERROR,
+ *PWHEAP_PSHED_INJECT_ERROR;
+
+typedef struct _WHEAP_OSC_IMPLEMENTED {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ BOOLEAN OscImplemented;
+ BOOLEAN DebugChecked;
+} WHEAP_OSC_IMPLEMENTED,
+ *PWHEAP_OSC_IMPLEMENTED;
+
+typedef struct _WHEAP_PSHED_PLUGIN_REGISTER {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ ULONG Version;
+ ULONG Length;
+ ULONG FunctionalAreaMask;
+ NTSTATUS Status;
+} WHEAP_PSHED_PLUGIN_REGISTER,
+ *PWHEAP_PSHED_PLUGIN_REGISTER;
+
+typedef enum _WHEA_PFA_REMOVE_TRIGGER {
+ WheaPfaRemoveErrorThreshold = 1,
+ WheaPfaRemoveTimeout = 2,
+ WheaPfaRemoveCapacity = 3
+} WHEA_PFA_REMOVE_TRIGGER, *PWHEA_PFA_REMOVE_TRIGGER;
+
+typedef struct _WHEAP_PFA_MEMORY_REMOVE_MONITOR {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ WHEA_PFA_REMOVE_TRIGGER RemoveTrigger;
+ ULONG TimeInList;
+ ULONG ErrorCount ;
+ ULONG Page;
+} WHEAP_PFA_MEMORY_REMOVE_MONITOR,
+ *PWHEAP_PFA_MEMORY_REMOVE_MONITOR;
+
+typedef struct _WHEAP_PFA_MEMORY_POLICY {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ ULONG RegistryKeysPresent;
+ BOOLEAN DisableOffline;
+ BOOLEAN PersistOffline;
+ BOOLEAN PfaDisabled;
+ ULONG PageCount;
+ ULONG ErrorThreshold;
+ ULONG TimeOut;
+} WHEAP_PFA_MEMORY_POLICY,
+ *PWHEAP_PFA_MEMORY_POLICY;
+
+typedef struct _WHEAP_DROPPED_CORRECTED_ERROR_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ WHEA_ERROR_SOURCE_TYPE ErrorSourceType;
+ ULONG ErrorSourceId;
+} WHEAP_DROPPED_CORRECTED_ERROR_EVENT,
+ *PWHEAP_DROPPED_CORRECTED_ERROR_EVENT;
+
+typedef struct _WHEAP_CLEARED_POISON_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ ULONG64 PhysicalAddress;
+} WHEAP_CLEARED_POISON_EVENT, *PWHEAP_CLEARED_POISON_EVENT;
+
+typedef struct _WHEAP_ADD_REMOVE_ERROR_SOURCE_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ WHEA_ERROR_SOURCE_DESCRIPTOR Descriptor;
+ NTSTATUS Status;
+ BOOLEAN IsRemove;
+} WHEAP_ADD_REMOVE_ERROR_SOURCE_EVENT, *PWHEAP_ADD_REMOVE_ERROR_SOURCE_EVENT;
+
+typedef struct _WHEAP_ATTEMPT_RECOVERY_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ WHEA_ERROR_RECORD_HEADER ErrorHeader;
+ BOOLEAN ArchitecturalRecovery;
+ BOOLEAN PshedRecovery;
+ NTSTATUS Status;
+} WHEAP_ATTEMPT_RECOVERY_EVENT, *PWHEAP_ATTEMPT_RECOVERY_EVENT;
+
+typedef struct _WHEAP_FOUND_ERROR_IN_BANK_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ ULONG EpIndex;
+ ULONG Bank;
+ ULONG64 MciStatus;
+ ULONG ErrorType;
+} WHEAP_FOUND_ERROR_IN_BANK_EVENT, *PWHEAP_FOUND_ERROR_IN_BANK_EVENT;
+
+typedef struct _WHEAP_STUCK_ERROR_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ ULONG EpIndex;
+ ULONG Bank;
+ ULONG64 MciStatus;
+} WHEAP_STUCK_ERROR_EVENT, *PWHEAP_STUCK_ERROR_EVENT;
+
+typedef struct _WHEAP_ERROR_CLEARED_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ ULONG EpIndex;
+ ULONG Bank;
+} WHEAP_ERROR_CLEARED_EVENT, *PWHEAP_ERROR_CLEARED_EVENT;
+
+typedef struct _WHEAP_PROCESS_EINJ_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ CHAR Error[32];
+ BOOLEAN InjectionActionTableValid;
+ ULONG BeginInjectionInstructionCount;
+ ULONG GetTriggerErrorActionTableInstructionCount;
+ ULONG SetErrorTypeInstructionCount;
+ ULONG GetErrorTypeInstructionCount;
+ ULONG EndOperationInstructionCount;
+ ULONG ExecuteOperationInstructionCount;
+ ULONG CheckBusyStatusInstructionCount;
+ ULONG GetCommandStatusInstructionCount;
+ ULONG SetErrorTypeWithAddressInstructionCount;
+ ULONG GetExecuteOperationTimingsInstructionCount;
+} WHEAP_PROCESS_EINJ_EVENT, *PWHEAP_PROCESS_EINJ_EVENT;
+
+typedef struct _WHEAP_PROCESS_HEST_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ CHAR Error[32];
+ CHAR EntryType[32];
+ ULONG EntryIndex;
+ BOOLEAN HestValid;
+ ULONG CmcCount;
+ ULONG MceCount;
+ ULONG NmiCount;
+ ULONG AerRootCount;
+ ULONG AerBridgeCount;
+ ULONG AerEndPointCount;
+ ULONG GenericV1Count;
+ ULONG GenericV2Count;
+} WHEAP_PROCESS_HEST_EVENT, *PWHEAP_PROCESS_HEST_EVENT;
+
+typedef struct _WHEAP_CREATE_GENERIC_RECORD_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ CHAR Error[32];
+ ULONG EntryCount;
+ NTSTATUS Status;
+} WHEAP_CREATE_GENERIC_RECORD_EVENT, *PWHEAP_CREATE_GENERIC_RECORD_EVENT;
+
+typedef struct _WHEAP_ERROR_RECORD_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ PWHEA_ERROR_RECORD Record;
+} WHEAP_ERROR_RECORD_EVENT, *PWHEAP_ERROR_RECORD_EVENT;
+
+typedef struct _WHEAP_ERR_SRC_ARRAY_INVALID_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ ULONG ErrorSourceCount;
+ ULONG ReportedLength;
+ ULONG ExpectedLength;
+} WHEAP_ERR_SRC_ARRAY_INVALID_EVENT, *PWHEAP_ERR_SRC_ARRAY_INVALID_EVENT;
+
+typedef struct _WHEAP_ERR_SRC_INVALID_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ WHEA_ERROR_SOURCE_DESCRIPTOR ErrDescriptor;
+ CHAR Error[32];
+} WHEAP_ERR_SRC_INVALID_EVENT, *PWHEAP_ERR_SRC_INVALID_EVENT;
+
+typedef struct _WHEAP_GENERIC_ERR_MEM_MAP_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ CHAR MapReason[32];
+ ULONG64 PhysicalAddress;
+ ULONG64 Length;
+} WHEAP_GENERIC_ERR_MEM_MAP_EVENT, *PWHEAP_GENERIC_ERR_MEM_MAP_EVENT;
+
+typedef struct _WHEAP_ACPI_TIMEOUT_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ CHAR TableType[32];
+ CHAR TableRequest[32];
+} WHEAP_ACPI_TIMEOUT_EVENT, *PWHEAP_ACPI_TIMEOUT_EVENT;
+
+typedef struct _WHEAP_CMCI_RESTART_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ ULONG CmciRestoreAttempts;
+ ULONG MaxCmciRestoreLimit;
+ ULONG MaxCorrectedErrorsFound;
+ ULONG MaxCorrectedErrorLimit;
+} WHEAP_CMCI_RESTART_EVENT, *PWHEAP_CMCI_RESTART_EVENT;
+
+typedef struct _WHEA_SEL_BUGCHECK_PROGRESS {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ ULONG BugCheckCode;
+ ULONG BugCheckProgressSummary;
+} WHEA_SEL_BUGCHECK_PROGRESS, *PWHEA_SEL_BUGCHECK_PROGRESS;
+
+typedef struct _WHEA_SEL_BUGCHECK_RECOVERY_STATUS_START_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ KIRQL StartingIrql;
+} WHEA_SEL_BUGCHECK_RECOVERY_STATUS_START_EVENT,
+ *PWHEA_SEL_BUGCHECK_RECOVERY_STATUS_START_EVENT;
+
+
+
+typedef struct _WHEA_SEL_BUGCHECK_RECOVERY_STATUS_PHASE1_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ BOOLEAN Success;
+ UCHAR Version;
+ USHORT EntryCount;
+ struct {
+
+
+
+
+
+ UCHAR DumpPolicy;
+ UCHAR Reserved[3];
+ } Data;
+} WHEA_SEL_BUGCHECK_RECOVERY_STATUS_PHASE1_EVENT,
+ *PWHEA_SEL_BUGCHECK_RECOVERY_STATUS_PHASE1_EVENT;
+
+typedef struct _WHEA_SEL_BUGCHECK_RECOVERY_STATUS_PHASE2_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ ULONG BootId;
+ BOOLEAN Success;
+} WHEA_SEL_BUGCHECK_RECOVERY_STATUS_PHASE2_EVENT,
+ *PWHEA_SEL_BUGCHECK_RECOVERY_STATUS_PHASE2_EVENT;
+
+typedef struct _WHEA_SEL_BUGCHECK_RECOVERY_STATUS_MULTIPLE_BUGCHECK_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ BOOLEAN IsBugcheckOwner;
+ UCHAR RecursionCount;
+ BOOLEAN IsBugcheckRecoveryOwner;
+} WHEA_SEL_BUGCHECK_RECOVERY_STATUS_MULTIPLE_BUGCHECK_EVENT,
+ *PWHEA_SEL_BUGCHECK_RECOVERY_STATUS_MULTIPLE_BUGCHECK_EVENT;
+
+typedef struct _WHEA_PSHED_PLUGIN_LOAD_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ WCHAR PluginName[32];
+ ULONG MajorVersion;
+ ULONG MinorVersion;
+} WHEA_PSHED_PLUGIN_LOAD_EVENT, *PWHEA_PSHED_PLUGIN_LOAD_EVENT;
+
+typedef struct _WHEA_PSHED_PLUGIN_UNLOAD_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ WCHAR PluginName[32];
+} WHEA_PSHED_PLUGIN_UNLOAD_EVENT, *PWHEA_PSHED_PLUGIN_UNLOAD_EVENT;
+
+typedef enum _WHEA_PSHED_PLUGIN_ENABLE_NOTIFY_ERRORS {
+ PshedPiEnableNotifyErrorCreateNotifyEvent = 1,
+ PshedPiEnableNotifyErrorCreateSystemThread,
+ PshedPiEnableNotifyErrorMax
+} WHEA_PSHED_PLUGIN_ENABLE_NOTIFY_ERRORS,
+ *PWHEA_PSHED_PLUGIN_ENABLE_NOTIFY_ERRORS;
+
+typedef struct _WHEA_PSHED_PLUGIN_ENABLE_NOTIFY_FAILED_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ WHEA_PSHED_PLUGIN_ENABLE_NOTIFY_ERRORS EnableError;
+} WHEA_PSHED_PLUGIN_ENABLE_NOTIFY_FAILED_EVENT,
+ *PWHEA_PSHED_PLUGIN_ENABLE_NOTIFY_FAILED_EVENT;
+
+typedef struct _WHEA_PSHED_PLUGIN_PLATFORM_SUPPORT_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ WCHAR PluginName[32];
+ BOOLEAN Supported;
+} WHEA_PSHED_PLUGIN_PLATFORM_SUPPORT_EVENT,
+ *PWHEA_PSHED_PLUGIN_PLATFORM_SUPPORT_EVENT;
+
+typedef struct _WHEA_PSHED_PLUGIN_INIT_FAILED_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ NTSTATUS Status;
+} WHEA_PSHED_PLUGIN_INIT_FAILED_EVENT,
+ *PWHEA_PSHED_PLUGIN_INIT_FAILED_EVENT;
+
+typedef struct _WHEA_PSHED_PLUGIN_HEARTBEAT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+} WHEA_PSHED_PLUGIN_HEARTBEAT, *PWHEA_PSHED_PLUGIN_HEARTBEAT;
+
+typedef struct _WHEA_PSHED_PLUGIN_DIMM_MISMATCH {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ UINT16 FirmwareBank;
+ UINT16 FirmwareCol;
+ UINT16 FirmwareRow;
+ UINT16 RetryRdBank;
+ UINT16 RetryRdCol;
+ UINT16 RetryRdRow;
+ UINT16 TaBank;
+ UINT16 TaCol;
+ UINT16 TaRow;
+} WHEA_PSHED_PLUGIN_DIMM_MISMATCH, *PWHEA_PSHED_PLUGIN_DIMM_MISMATCH;
+
+typedef struct _WHEA_ETW_OVERFLOW_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ ULONGLONG RecordId;
+} WHEA_ETW_OVERFLOW_EVENT, *PWHEA_ETW_OVERFLOW_EVENT;
+
+typedef struct _WHEAP_CMCI_IMPLEMENTED_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ BOOLEAN CmciAvailable;
+} WHEAP_CMCI_IMPLEMENTED_EVENT,
+ *PWHEAP_CMCI_IMPLEMENTED_EVENT;
+
+typedef struct _WHEAP_DEVICE_DRV_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ CHAR Function[32];
+} WHEAP_DEVICE_DRV_EVENT, *PWHEAP_DEVICE_DRV_EVENT;
+
+typedef struct _WHEAP_PLUGIN_PFA_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ BOOLEAN NoFurtherPfa;
+} WHEAP_PLUGIN_PFA_EVENT, *PWHEAP_PLUGIN_PFA_EVENT;
+
+typedef struct _WHEAP_CMCI_INITERR_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ ULONGLONG Msr;
+ ULONG Type;
+ ULONG Bank;
+ ULONG EpIndex;
+} WHEAP_CMCI_INITERR_EVENT,
+ *PWHEAP_CMCI_INITERR_EVENT;
+
+typedef struct _WHEA_AZCC_ROOT_BUS_ERR_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ BOOLEAN MaxBusCountPassed;
+ BOOLEAN InvalidBusMSR;
+} WHEA_AZCC_ROOT_BUS_ERR_EVENT, *PWHEA_AZCC_ROOT_BUS_ERR_EVENT;
+
+typedef struct _WHEA_AZCC_ROOT_BUS_LIST_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ UINT32 RootBusCount;
+ UINT32 RootBuses[8];
+} WHEA_AZCC_ROOT_BUS_LIST_EVENT, *PWHEA_AZCC_ROOT_BUS_LIST_EVENT;
+
+typedef struct _WHEA_AZCC_SET_POISON_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ UINT32 Bus;
+ BOOLEAN ReadSuccess;
+ BOOLEAN WriteSuccess;
+ BOOLEAN IsEnable;
+} WHEA_AZCC_SET_POISON_EVENT, *PWHEA_AZCC_SET_POISON_EVENT;
+
+typedef struct _WHEA_OFFLINE_DONE_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ ULONG64 Address;
+} WHEA_OFFLINE_DONE_EVENT, *PWHEA_OFFLINE_DONE_EVENT;
+
+typedef enum _WHEA_BUGCHECK_RECOVERY_LOG_TYPE {
+ WheaEventBugCheckRecoveryEntry,
+ WheaEventBugCheckRecoveryReturn,
+ WheaEventBugCheckRecoveryMax,
+} WHEA_BUGCHECK_RECOVERY_LOG_TYPE, *PWHEA_BUGCHECK_RECOVERY_LOG_TYPE;
+
+typedef struct _WHEAP_EDPC_ENABLED_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ BOOLEAN eDPCEnabled;
+ BOOLEAN eDPCRecovEnabled;
+} WHEAP_EDPC_ENABLED_EVENT, *PWHEAP_EDPC_ENABLED_EVENT;
+
+typedef struct _WHEA_SRAR_DETAIL_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ UINT32 RecoveryContextFlags;
+ UINT64 RecoveryContextPa;
+ NTSTATUS PageOfflineStatus;
+ BOOLEAN KernelConsumerError;
+} WHEA_SRAR_DETAIL_EVENT, *PWHEA_SRAR_DETAIL_EVENT;
+
+typedef struct _WHEA_FAILED_ADD_DEFECT_LIST_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+} WHEA_FAILED_ADD_DEFECT_LIST_EVENT, *PWHEA_FAILED_ADD_DEFECT_LIST_EVENT;
+
+typedef struct _WHEAP_PLUGIN_DEFECT_LIST_FULL_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+} WHEAP_PLUGIN_DEFECT_LIST_FULL_EVENT,
+ *PWHEAP_PLUGIN_DEFECT_LIST_FULL_EVENT;
+
+typedef struct _WHEAP_PLUGIN_DEFECT_LIST_UEFI_VAR_FAILED {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+} WHEAP_PLUGIN_DEFECT_LIST_UEFI_VAR_FAILED,
+ *PWHEAP_PLUGIN_DEFECT_LIST_UEFI_VAR_FAILED;
+
+typedef struct _WHEAP_PLUGIN_DEFECT_LIST_CORRUPT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+} WHEAP_PLUGIN_DEFECT_LIST_CORRUPT,
+ *PWHEAP_PLUGIN_DEFECT_LIST_CORRUPT;
+
+typedef struct _WHEAP_SPURIOUS_AER_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ WHEA_ERROR_SEVERITY ErrorSeverity;
+
+
+
+
+
+
+ ULONG ErrorHandlerType;
+ ULONG SpuriousErrorSourceId;
+ ULONG RootErrorCommand;
+ ULONG RootErrorStatus;
+ ULONG DeviceAssociationBitmap;
+} WHEAP_SPURIOUS_AER_EVENT, *PWHEAP_SPURIOUS_AER_EVENT;
+
+typedef struct _WHEAP_PROMOTED_AER_ERROR_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ WHEA_ERROR_SEVERITY ErrorSeverity;
+ ULONG ErrorHandlerType;
+ ULONG ErrorSourceId;
+ ULONG RootErrorCommand;
+ ULONG RootErrorStatus;
+ ULONG DeviceAssociationBitmap;
+} WHEAP_PROMOTED_AER_ERROR_EVENT, *PWHEAP_PROMOTED_AER_ERROR_EVENT;
+
+typedef enum _WHEAP_DPC_ERROR_EVENT_TYPE {
+ WheapDpcErrNoErr = 0,
+ WheapDpcErrBusNotFound,
+ WheapDpcErrDpcedSubtree,
+ WheapDpcErrDeviceIdBad,
+ WheapDpcErrResetFailed,
+ WheapDpcErrNoChildren,
+} WHEAP_DPC_ERROR_EVENT_TYPE, *PWHEAP_DPC_ERROR_EVENT_TYPE;
+
+typedef struct _WHEAP_DPC_ERROR_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ WHEAP_DPC_ERROR_EVENT_TYPE ErrType;
+ ULONG Bus;
+ ULONG Device;
+ ULONG Function;
+ USHORT DeviceId;
+ USHORT VendorId;
+} WHEAP_DPC_ERROR_EVENT, *PWHEAP_DPC_ERROR_EVENT;
+
+typedef enum _PSHED_PI_ERR_READING_PCIE_OVERRIDES {
+ PshedPiErrReadingPcieOverridesNoErr = 0,
+ PshedPiErrReadingPcieOverridesNoMemory,
+ PshedPiErrReadingPcieOverridesQueryErr,
+ PshedPiErrReadingPcieOverridesBadSize,
+ PshedPiErrReadingPcieOverridesBadSignature,
+ PshedPiErrReadingPcieOverridesNoCapOffset,
+ PshedPiErrReadingPcieOverridesNotBinary,
+} PSHED_PI_ERR_READING_PCIE_OVERRIDES,
+ *PPSHED_PI_ERR_READING_PCIE_OVERRIDES;
+
+typedef struct _WHEAP_PCIE_OVERRIDE_INFO {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ UINT32 Segment;
+ UINT32 Bus;
+ UINT32 Device;
+ UINT32 Function;
+ UINT8 ValidBits;
+ UINT8 Reserved[3];
+ UINT32 UncorrectableErrorMask;
+ UINT32 UncorrectableErrorSeverity;
+ UINT32 CorrectableErrorMask;
+ UINT32 CapAndControl;
+} WHEAP_PCIE_OVERRIDE_INFO, *PWHEAP_PCIE_OVERRIDE_INFO;
+
+typedef struct _WHEAP_PCIE_READ_OVERRIDES_ERR {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ UINT32 FailureReason;
+ NTSTATUS FailureStatus;
+} WHEAP_PCIE_READ_OVERRIDES_ERR, *PWHEAP_PCIE_READ_OVERRIDES_ERR;
+
+typedef struct _WHEAP_PCIE_CONFIG_INFO {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ UINT32 Segment;
+ UINT32 Bus;
+ UINT32 Device;
+ UINT32 Function;
+ UINT32 Offset;
+ UINT32 Length;
+ UINT64 Value;
+ UINT8 Succeeded;
+ UINT8 Reserved[3];
+} WHEAP_PCIE_CONFIG_INFO, *PWHEAP_PCIE_CONFIG_INFO;
+
+typedef struct _WHEA_THROTTLE_PCIE_ADD_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ WHEA_PCIE_ADDRESS Address;
+ UINT32 Mask;
+ BOOLEAN Updated;
+ NTSTATUS Status;
+} WHEA_THROTTLE_PCIE_ADD_EVENT, *PWHEA_THROTTLE_PCIE_ADD_EVENT;
+
+typedef struct _WHEA_THROTTLE_MEMORY_ADD_OR_REMOVE_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ UINT32 SocketId;
+ UINT32 ChannelId;
+ UINT32 DimmSlot;
+} WHEA_THROTTLE_MEMORY_ADD_OR_REMOVE_EVENT, *PWHEA_THROTTLE_MEMORY_ADD_OR_REMOVE_EVENT;
+
+typedef struct _WHEA_THROTTLE_PCIE_REMOVE_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ WHEA_PCIE_ADDRESS Address;
+ UINT32 Mask;
+} WHEA_THROTTLE_PCIE_REMOVE_EVENT, *PWHEA_THROTTLE_PCIE_REMOVE_EVENT;
+
+typedef enum _WHEA_THROTTLE_TYPE {
+ WheaPcieThrottle = 0,
+ WheaMemoryThrottle
+} WHEA_THROTTLE_TYPE, *PWHEA_THROTTLE_TYPE;
+
+typedef struct _WHEA_THROTTLE_REGISTRY_CORRUPT_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ WHEA_THROTTLE_TYPE ThrottleType;
+} WHEA_THROTTLE_REGISTRY_CORRUPT_EVENT,
+ *PWHEA_THROTTLE_REGISTRY_CORRUPT_EVENT;
+
+typedef struct _WHEA_THROTTLE_ADD_ERR_SRC_FAILED_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+} WHEA_THROTTLE_ADD_ERR_SRC_FAILED_EVENT,
+ *PWHEA_THROTTLE_ADD_ERR_SRC_FAILED_EVENT;
+
+typedef struct _WHEA_THROTTLE_REG_DATA_IGNORED_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ WHEA_THROTTLE_TYPE ThrottleType;
+} WHEA_THROTTLE_REG_DATA_IGNORED_EVENT,
+ *PWHEA_THROTTLE_REG_DATA_IGNORED_EVENT;
+
+typedef struct _WHEA_REGISTER_KEY_NOTIFICATION_FAILED_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+} WHEA_REGISTER_KEY_NOTIFICATION_FAILED_EVENT,
+ *PWHEA_REGISTER_KEY_NOTIFICATION_FAILED_EVENT;
+
+typedef struct _WHEA_MEMORY_THROTTLE_SUMMARY_FAILED_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ NTSTATUS Status;
+} WHEA_MEMORY_THROTTLE_SUMMARY_FAILED_EVENT,
+ *PWHEA_MEMORY_THROTTLE_SUMMARY_FAILED_EVENT;
+
+typedef struct _WHEA_PSHED_PI_CPU_BUSES_INIT_FAILED_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ NTSTATUS Status;
+} WHEA_PSHED_PI_CPU_BUSES_INIT_FAILED_EVENT,
+ *PWHEA_PSHED_PI_CPU_BUSES_INIT_FAILED_EVENT;
+
+typedef struct _WHEA_PSHED_PI_TRACE_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ CCHAR Buffer[256];
+} WHEA_PSHED_PI_TRACE_EVENT, *PWHEA_PSHED_PI_TRACE_EVENT;
+
+typedef struct _WHEA_SRAS_TABLE_NOT_FOUND {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+} WHEA_SRAS_TABLE_NOT_FOUND, *PWHEA_SRAS_TABLE_NOT_FOUND;
+
+typedef struct _WHEA_SRAS_TABLE_ERROR {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+} WHEA_SRAS_TABLE_ERROR, *PWHEA_SRAS_TABLE_ERROR;
+
+typedef struct _WHEA_PSHED_PI_CPUID {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ UINT32 CpuVendor;
+ UINT32 CpuFamily;
+ UINT32 CpuModel;
+ UINT32 CpuStepping;
+ UINT32 NumBanks;
+} WHEA_PSHED_PI_CPUID, *PWHEA_PSHED_PI_CPUID;
+
+
+
+typedef struct _WHEA_ACPI_HEADER {
+ UINT32 Signature;
+ UINT32 Length;
+ UINT8 Revision;
+ UINT8 Checksum;
+ UINT8 OemId[6];
+ UINT64 OemTableId;
+ UINT32 OemRevision;
+ UINT32 CreatorId;
+ UINT32 CreatorRevision;
+} WHEA_ACPI_HEADER, *PWHEA_ACPI_HEADER;
+
+typedef struct _SIGNAL_REG_VALUE {
+ UINT8 RegName[32];
+ UINT32 MsrAddr;
+ UINT64 Value;
+} SIGNAL_REG_VALUE, *PSIGNAL_REG_VALUE;
+
+typedef struct _EFI_ACPI_RAS_SIGNAL_TABLE {
+ WHEA_ACPI_HEADER Header;
+ UINT32 NumberRecord;
+ SIGNAL_REG_VALUE Entries[1];
+} EFI_ACPI_RAS_SIGNAL_TABLE, *PEFI_ACPI_RAS_SIGNAL_TABLE;
+
+typedef struct _WHEA_SRAS_TABLE_ENTRIES_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ UINT32 LogNumber;
+ UINT32 NumberSignals;
+ UINT8 Data[1];
+} WHEA_SRAS_TABLE_ENTRIES_EVENT, *PWHEA_SRAS_TABLE_ENTRIES_EVENT;
+
+typedef struct _WHEAP_ROW_FAILURE_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ PFN_NUMBER LowOrderPage;
+ PFN_NUMBER HighOrderPage;
+} WHEAP_ROW_FAILURE_EVENT, * PWHEAP_ROW_FAILURE_EVENT;
+
+typedef struct _PSHED_MEMORY_DETAILS_VALID_BITS {
+ UINT32 DdrVersion: 1;
+ UINT32 IsClosedPaged: 1;
+ UINT32 ColsPerRow: 1;
+ UINT32 PagesPerRow: 1;
+ UINT32 SocketCnt: 1;
+ UINT32 ChaOnSktCnt: 1;
+ UINT32 DimmSlotCnt: 1;
+ UINT32 SubchannelCnt: 1;
+ UINT32 Reserved: 24;
+} PSHED_MEMORY_DETAILS_VALID_BITS, *PPSHED_MEMORY_DETAILS_VALID_BITS;
+
+typedef struct _PSHED_MEMORY_DETAILS {
+ UINT16 Version;
+ PSHED_MEMORY_DETAILS_VALID_BITS Vb;
+ UINT16 DdrVersion;
+ BOOLEAN IsClosedPaged;
+ UINT16 ColsPerRow;
+ UINT16 PagesPerRow;
+ UINT8 SocketCnt;
+ UINT8 ChaOnSktCnt;
+ UINT8 DimmSlotCnt;
+ UINT8 SubchannelCnt;
+} PSHED_MEMORY_DETAILS, *PPSHED_MEMORY_DETAILS;
+
+typedef enum _WHEA_OFFLINE_ERRS {
+ WheaOfflineNoError = 0,
+ GetMemoryDetailsErr,
+ RatFailure,
+ RatFailureFirstCol,
+ RatFailureLastCol,
+ ClosedPage,
+ BadPageRange,
+ InvalidData,
+ NotDdr,
+ UnsupportedDdrVersion,
+ IncorrectDdrVersion,
+ NoMemoryForWrapper
+} WHEA_OFFLINE_ERRS, * PWHEA_OFFLINE_ERRS;
+
+typedef struct _WHEAP_ROW_OFFLINE_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ PFN_NUMBER FirstPage;
+ PFN_NUMBER LastPage;
+ UINT32 Range;
+ NTSTATUS Status;
+ WHEA_OFFLINE_ERRS ErrorReason;
+} WHEAP_ROW_OFFLINE_EVENT, * PWHEAP_ROW_OFFLINE_EVENT;
+
+typedef struct _WHEAP_BIT_OFFLINE_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ PFN_NUMBER Page;
+ NTSTATUS Status;
+ WHEA_OFFLINE_ERRS ErrorReason;
+} WHEAP_BIT_OFFLINE_EVENT, * PWHEAP_BIT_OFFLINE_EVENT;
+
+typedef struct _WHEA_REGNOTIFY_POLICY_CHANGE_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ CCHAR PolicyName[32];
+ ULONG PolicyIndex;
+ ULONG PolicyValue;
+} WHEA_REGNOTIFY_POLICY_CHANGE_EVENT, *PWHEA_REGNOTIFY_POLICY_CHANGE_EVENT;
+
+typedef enum _WHEA_REGISTRY_ERRORS {
+ WheaRegErrNone = 0,
+ WheaRegErrFailedToCreateWheaKey,
+ WheaRegErrFailedToCreatePolicyKey,
+ WheaRegErrFailedToOpenHandle
+} WHEA_REGISTRY_ERRORS, *PWHEA_REGISTRY_ERRORS;
+
+typedef struct _WHEA_REGISTRY_ERROR_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ WHEA_REGISTRY_ERRORS RegErr;
+ UINT32 Status;
+} WHEA_REGISTRY_ERROR_EVENT, *PWHEA_REGISTRY_ERROR_EVENT;
+
+typedef struct _WHEA_CRASHDUMP_EVENT_LOG_ENTRY_WITH_STATUS {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ ULONG SourceLocationId;
+ NTSTATUS Status;
+} WHEA_CRASHDUMP_EVENT_LOG_ENTRY_WITH_STATUS, *PWHEA_CRASHDUMP_EVENT_LOG_ENTRY_WITH_STATUS;
+
+typedef struct _WHEA_CRASHDUMP_EVENT_LOG_ENTRY_ULONG1 {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ ULONG Value;
+} WHEA_CRASHDUMP_EVENT_LOG_ENTRY_ULONG1, *PWHEA_CRASHDUMP_EVENT_LOG_ENTRY_ULONG1;
+
+typedef enum _WHEA_GAS_ERRORS {
+ WheaGasErrNone = 0,
+ WheaGasErrUnexpectedAddressSpaceId,
+ WheaGasErrInvalidStructFields,
+ WheaGasErrInvalidAccessSize
+} WHEA_GAS_ERRORS, *PWHEA_GAS_ERRORS;
+
+typedef struct _WHEA_GAS_ERROR_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ WHEA_GAS_ERRORS Error;
+} WHEA_GAS_ERROR_EVENT, *PWHEA_GAS_ERROR_EVENT;
+
+
+
+
+
+
+
+
+typedef struct _WHEA_SEL_RAW_EVENT {
+ WHEA_EVENT_LOG_ENTRY WheaEventLogEntry;
+ UCHAR Payload[256];
+} WHEA_SEL_RAW_EVENT, *PWHEA_SEL_RAW_EVENT;
+
+typedef char __C_ASSERT__[((((LONG)(LONG_PTR)&(((WHEA_SEL_RAW_EVENT *)0)->Payload)) % 4) == 0)?1:-1];
+
+__inline
+void
+WheaInitEventLogEntry (
+ PWHEA_EVENT_LOG_ENTRY LogEntry,
+ WHEA_EVENT_LOG_ENTRY_TYPE Type,
+ WHEA_EVENT_LOG_ENTRY_ID Id,
+ WHEA_EVENT_LOG_ENTRY_FLAGS Flags,
+ ULONG OwnerTag,
+ ULONG PayloadLength
+ )
+{
+
+ PUCHAR PayloadData;
+
+ PayloadData = (PUCHAR)LogEntry + sizeof(WHEA_EVENT_LOG_ENTRY);
+ LogEntry->Header.Signature = 'gLhW';
+ LogEntry->Header.Version = 1;
+ LogEntry->Header.Length = sizeof(WHEA_EVENT_LOG_ENTRY) + PayloadLength;
+ LogEntry->Header.Type = Type;
+ LogEntry->Header.Id = Id;
+ LogEntry->Header.OwnerTag = OwnerTag;
+ LogEntry->Header.Flags = Flags;
+ LogEntry->Header.PayloadLength = PayloadLength;
+ return;
+}
+
+
+
+
+
+
+
+
+typedef union _WHEA_GENERIC_ERROR_BLOCKSTATUS {
+ struct {
+ ULONG UncorrectableError:1;
+ ULONG CorrectableError:1;
+ ULONG MultipleUncorrectableErrors:1;
+ ULONG MultipleCorrectableErrors:1;
+ ULONG ErrorDataEntryCount:10;
+ ULONG Reserved:18;
+ } ;
+ ULONG AsULONG;
+} WHEA_GENERIC_ERROR_BLOCKSTATUS, *PWHEA_GENERIC_ERROR_BLOCKSTATUS;
+
+typedef struct _WHEA_GENERIC_ERROR {
+ WHEA_GENERIC_ERROR_BLOCKSTATUS BlockStatus;
+ ULONG RawDataOffset;
+ ULONG RawDataLength;
+ ULONG DataLength;
+ WHEA_ERROR_SEVERITY ErrorSeverity;
+ UCHAR Data[1];
+} WHEA_GENERIC_ERROR, *PWHEA_GENERIC_ERROR;
+
+typedef struct _WHEA_GENERIC_ERROR_DATA_ENTRY_V1 {
+ GUID SectionType;
+ WHEA_ERROR_SEVERITY ErrorSeverity;
+ WHEA_REVISION Revision;
+ UCHAR ValidBits;
+ UCHAR Flags;
+ ULONG ErrorDataLength;
+ GUID FRUId;
+ UCHAR FRUText[20];
+ UCHAR Data[1];
+} WHEA_GENERIC_ERROR_DATA_ENTRY_V1, *PWHEA_GENERIC_ERROR_DATA_ENTRY_V1;
+
+
+
+typedef struct _WHEA_GENERIC_ERROR_DATA_ENTRY_V2 {
+ GUID SectionType;
+ WHEA_ERROR_SEVERITY ErrorSeverity;
+ WHEA_REVISION Revision;
+ UCHAR ValidBits;
+ UCHAR Flags;
+ ULONG ErrorDataLength;
+ GUID FRUId;
+ UCHAR FRUText[20];
+ WHEA_TIMESTAMP Timestamp;
+ UCHAR Data[1];
+} WHEA_GENERIC_ERROR_DATA_ENTRY_V2, *PWHEA_GENERIC_ERROR_DATA_ENTRY_V2;
+
+
+
+
+
+
+
+
+typedef struct _WHEA_GENERIC_ERROR_DATA_ENTRY_V2 WHEA_GENERIC_ERROR_DATA_ENTRY, *PWHEA_GENERIC_ERROR_DATA_ENTRY;
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(disable:4103)
+
+#pragma pack(pop)
+
+
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+
+
+#line 36 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+#line 37 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+#pragma external_header(pop)
+#line 22091 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+typedef
+NTSTATUS
+(_WHEA_ERROR_SOURCE_CORRECT)(
+ PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource,
+ PULONG MaximumSectionLength
+ );
+
+typedef _WHEA_ERROR_SOURCE_CORRECT *WHEA_ERROR_SOURCE_CORRECT;
+
+typedef
+NTSTATUS
+(_WHEA_ERROR_SOURCE_INITIALIZE)(
+ ULONG Phase,
+ PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource,
+ PVOID Context
+ );
+
+typedef _WHEA_ERROR_SOURCE_INITIALIZE *WHEA_ERROR_SOURCE_INITIALIZE;
+
+typedef
+NTSTATUS
+(_WHEA_ERROR_SOURCE_CREATE_RECORD)(
+ PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource,
+ PWHEA_ERROR_PACKET ErrorPacket,
+ PWHEA_ERROR_RECORD ErrorRecord,
+ ULONG BufferSize,
+ PVOID Context
+ );
+
+typedef _WHEA_ERROR_SOURCE_CREATE_RECORD *WHEA_ERROR_SOURCE_CREATE_RECORD;
+
+typedef
+NTSTATUS
+(_WHEA_ERROR_SOURCE_RECOVER)(
+ PVOID RecoveryContext,
+ PWHEA_ERROR_SEVERITY Severity
+ );
+
+typedef _WHEA_ERROR_SOURCE_RECOVER *WHEA_ERROR_SOURCE_RECOVER;
+
+typedef
+void
+(_WHEA_ERROR_SOURCE_UNINITIALIZE)(
+ PVOID Context
+ );
+
+typedef _WHEA_ERROR_SOURCE_UNINITIALIZE *WHEA_ERROR_SOURCE_UNINITIALIZE;
+
+typedef struct _WHEA_ERROR_SOURCE_CONFIGURATION {
+ ULONG Flags;
+ WHEA_ERROR_SOURCE_CORRECT Correct;
+ WHEA_ERROR_SOURCE_INITIALIZE Initialize;
+ WHEA_ERROR_SOURCE_CREATE_RECORD CreateRecord;
+ WHEA_ERROR_SOURCE_RECOVER Recover;
+ WHEA_ERROR_SOURCE_UNINITIALIZE Uninitialize;
+ PVOID Reserved;
+} WHEA_ERROR_SOURCE_CONFIGURATION, *PWHEA_ERROR_SOURCE_CONFIGURATION;
+
+__declspec(dllimport)
+NTSTATUS
+WheaAddErrorSourceDeviceDriver (
+ PVOID Context,
+ PWHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER Configuration,
+ ULONG NumberPreallocatedErrorReports
+ );
+
+__declspec(dllimport)
+NTSTATUS
+WheaAddErrorSourceDeviceDriverV1 (
+ PVOID Context,
+ PWHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER Configuration,
+ ULONG NumBuffersToPreallocate,
+ ULONG MaxDataLength
+ );
+
+__declspec(dllimport)
+NTSTATUS
+WheaRemoveErrorSourceDeviceDriver (
+ ULONG ErrorSourceId
+ );
+
+typedef union _WHEA_REPORT_HW_ERROR_DEVICE_DRIVER_FLAGS {
+ struct {
+ ULONG Reserved : 32;
+ } ;
+
+ ULONG AsULONG;
+} WHEA_REPORT_HW_ERROR_DEVICE_DRIVER_FLAGS,
+ *PWHEA_REPORT_HW_ERROR_DEVICE_DRIVER_FLAGS;
+
+
+
+typedef struct _WHEA_PACKET_LOG_DATA {
+ UCHAR LogData[36];
+ UCHAR ExtraBytes[36];
+ ULONG_PTR BcParam3;
+ ULONG_PTR BcParam4;
+ ULONG LogDataLength;
+ USHORT LogTag;
+ USHORT Reserved;
+ WHEA_REPORT_HW_ERROR_DEVICE_DRIVER_FLAGS Flags;
+} WHEA_PACKET_LOG_DATA, *PWHEA_PACKET_LOG_DATA;
+
+typedef struct _ERROR_SOURCE_INFO {
+ ULONG ErrorCount;
+ ULONG ErrorSourceId;
+} ERROR_SOURCE_INFO, *PERROR_SOURCE_INFO;
+
+__declspec(dllimport)
+NTSTATUS
+WheaReportHwErrorDeviceDriver (
+ ULONG ErrorSourceId,
+ PDEVICE_OBJECT DeviceObject,
+ PUCHAR ErrorData,
+ ULONG ErrorDataLength,
+ LPGUID SectionTypeGuid,
+ WHEA_ERROR_SEVERITY ErrorSeverity,
+ LPSTR DeviceFriendlyName
+ );
+
+__declspec(dllimport)
+WHEA_ERROR_HANDLE
+WheaCreateHwErrorReportDeviceDriver (
+ ULONG ErrorSourceId,
+ PDEVICE_OBJECT DeviceObject
+ );
+
+__declspec(dllimport)
+NTSTATUS
+WheaAddHwErrorReportSectionDeviceDriver (
+ WHEA_ERROR_HANDLE ErrorHandle,
+ ULONG SectionDataLength,
+ PWHEA_DRIVER_BUFFER_SET BufferSet
+ );
+
+__declspec(dllimport)
+NTSTATUS
+WheaHwErrorReportAbandonDeviceDriver (
+ WHEA_ERROR_HANDLE ErrorHandle
+ );
+
+__declspec(dllimport)
+NTSTATUS
+WheaHwErrorReportSubmitDeviceDriver (
+ WHEA_ERROR_HANDLE ErrorHandle
+ );
+
+__declspec(dllimport)
+NTSTATUS
+WheaHwErrorReportSetSeverityDeviceDriver (
+ WHEA_ERROR_HANDLE ErrorHandle,
+ WHEA_ERROR_SEVERITY ErrorSeverity
+ );
+
+__declspec(dllimport)
+NTSTATUS
+WheaHwErrorReportSetSectionNameDeviceDriver (
+ PWHEA_DRIVER_BUFFER_SET BufferSet,
+ ULONG NameLength,
+ PUCHAR Name
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+WheaReportHwError(
+ PWHEA_ERROR_PACKET ErrorPacket
+ );
+
+__declspec(dllimport)
+NTSTATUS
+WheaAddErrorSource(
+ PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource,
+ PVOID Context
+ );
+
+__declspec(dllimport)
+NTSTATUS
+WheaInitializeRecordHeader (
+ PWHEA_ERROR_RECORD_HEADER Header
+ );
+
+__declspec(dllimport)
+NTSTATUS
+WheaConfigureErrorSource (
+ WHEA_ERROR_SOURCE_TYPE SourceType,
+ PWHEA_ERROR_SOURCE_CONFIGURATION Configuration
+ );
+
+__declspec(dllimport)
+NTSTATUS
+WheaUnconfigureErrorSource (
+ WHEA_ERROR_SOURCE_TYPE SourceType
+ );
+
+__declspec(dllimport)
+void
+WheaRemoveErrorSource(
+ ULONG ErrorSourceId
+ );
+
+__declspec(dllimport)
+BOOLEAN
+WheaIsLogSelHandlerInitialized();
+
+__declspec(dllimport)
+void
+WheaLogInternalEvent (
+ PWHEA_EVENT_LOG_ENTRY Entry
+ );
+
+WHEA_ERROR_SOURCE_STATE
+WheaErrorSourceGetState (
+ ULONG ErrorSourceId
+ );
+
+
+
+BOOLEAN
+WheaIsCriticalState (
+ void
+ );
+
+typedef
+BOOLEAN
+(_WHEA_SIGNAL_HANDLER_OVERRIDE_CALLBACK)(
+ UINT_PTR Context
+ );
+
+typedef _WHEA_SIGNAL_HANDLER_OVERRIDE_CALLBACK
+ *WHEA_SIGNAL_HANDLER_OVERRIDE_CALLBACK;
+
+typedef struct _WHEA_ERROR_SOURCE_OVERRIDE_SETTINGS {
+ WHEA_ERROR_SOURCE_TYPE Type;
+ ULONG MaxRawDataLength;
+ ULONG NumRecordsToPreallocate;
+ ULONG MaxSectionsPerRecord;
+} WHEA_ERROR_SOURCE_OVERRIDE_SETTINGS, *PWHEA_ERROR_SOURCE_OVERRIDE_SETTINGS;
+
+BOOLEAN
+WheaSignalHandlerOverride (
+ WHEA_ERROR_SOURCE_TYPE SourceType,
+ UINT_PTR Context
+ );
+
+void
+WheaUnregisterErrorSourceOverride (
+ WHEA_ERROR_SOURCE_TYPE Type,
+ ULONG32 OverrideErrorSourceId
+ );
+
+NTSTATUS
+WheaRegisterErrorSourceOverride (
+ WHEA_ERROR_SOURCE_OVERRIDE_SETTINGS OverrideSettings,
+ PWHEA_ERROR_SOURCE_CONFIGURATION OverrideConfig,
+ WHEA_SIGNAL_HANDLER_OVERRIDE_CALLBACK OverrideCallback
+ );
+
+__declspec(dllimport)
+NTSTATUS
+WheaGetErrorSourceInfo (
+ WHEA_ERROR_SOURCE_TYPE SourceType,
+ PULONG ErrorCount,
+ PERROR_SOURCE_INFO* SourceInfo,
+ ULONG PoolTag
+ );
+
+
+typedef
+NTSTATUS
+(*PFN_WHEA_HIGH_IRQL_LOG_SEL_EVENT_HANDLER) (
+ PVOID Context,
+ PIPMI_OS_SEL_RECORD OsSelRecord
+ );
+
+__declspec(dllimport)
+BOOLEAN
+WheaHighIrqlLogSelEventHandlerRegister (
+ PFN_WHEA_HIGH_IRQL_LOG_SEL_EVENT_HANDLER Handler,
+ PVOID Context
+ );
+
+__declspec(dllimport)
+void
+WheaHighIrqlLogSelEventHandlerUnregister (
+ void
+ );
+
+
+
+
+__inline
+PWHEA_ERROR_PACKET
+WheaGetErrPacketFromErrRecord (
+ PWHEA_ERROR_RECORD Record
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+
+ PWHEA_ERROR_PACKET Packet;
+ PWHEA_ERROR_RECORD_SECTION_DESCRIPTOR Descriptor;
+ ULONG Section;
+ ULONG SizeRequired;
+
+ Packet = ((void *)0);
+ if (Record->Header.Signature != 'REPC') {
+ goto GetErrPacketFromErrRecordEnd;
+ }
+
+
+
+
+
+
+
+ SizeRequired = sizeof(WHEA_ERROR_RECORD_HEADER) +
+ (sizeof(WHEA_ERROR_RECORD_SECTION_DESCRIPTOR) *
+ Record->Header.SectionCount);
+
+ if (Record->Header.Length < SizeRequired) {
+ goto GetErrPacketFromErrRecordEnd;
+ }
+
+
+
+
+
+
+
+ Descriptor = &Record->SectionDescriptor[0];
+ for (Section = 0; Section < Record->Header.SectionCount; Section += 1) {
+
+ if (RtlCompareMemory(&Descriptor->SectionType,
+ &WHEA_ERROR_PACKET_SECTION_GUID,
+ sizeof(GUID)) == sizeof(GUID)) {
+
+ SizeRequired = Descriptor->SectionOffset +
+ Descriptor->SectionLength;
+
+ if (Record->Header.Length < SizeRequired) {
+ goto GetErrPacketFromErrRecordEnd;
+ }
+
+ Packet = (PWHEA_ERROR_PACKET)
+ (((PUCHAR)Record) + Descriptor->SectionOffset);
+
+#pragma warning(suppress: 26019)
+ if (Packet->Signature != 'AEHW') {
+ Packet = ((void *)0);
+ }
+
+ goto GetErrPacketFromErrRecordEnd;
+ }
+
+ Descriptor += 1;
+ }
+
+GetErrPacketFromErrRecordEnd:
+ return Packet;
+}
+
+
+
+
+
+
+
+
+typedef union _WHEA_ERROR_INJECTION_CAPABILITIES {
+ struct {
+ ULONG ProcessorCorrectable:1;
+ ULONG ProcessorUncorrectableNonFatal:1;
+ ULONG ProcessorUncorrectableFatal:1;
+ ULONG MemoryCorrectable:1;
+ ULONG MemoryUncorrectableNonFatal:1;
+ ULONG MemoryUncorrectableFatal:1;
+ ULONG PCIExpressCorrectable:1;
+ ULONG PCIExpressUncorrectableNonFatal:1;
+ ULONG PCIExpressUncorrectableFatal:1;
+ ULONG PlatformCorrectable:1;
+ ULONG PlatformUncorrectableNonFatal:1;
+ ULONG PlatformUncorrectableFatal:1;
+ ULONG IA64Corrected:1;
+ ULONG IA64Recoverable:1;
+ ULONG IA64Fatal:1;
+ ULONG IA64RecoverableCache:1;
+ ULONG IA64RecoverableRegFile:1;
+ ULONG Reserved:15;
+ } ;
+ ULONG AsULONG;
+} WHEA_ERROR_INJECTION_CAPABILITIES, *PWHEA_ERROR_INJECTION_CAPABILITIES;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+BOOLEAN
+(*PFN_IN_USE_PAGE_OFFLINE_NOTIFY) (
+ PFN_NUMBER Page,
+ BOOLEAN Poisoned,
+ PVOID Context,
+ PNTSTATUS CallbackStatus
+ );
+
+__declspec(dllimport)
+NTSTATUS
+WheaRegisterInUsePageOfflineNotification (
+ PFN_IN_USE_PAGE_OFFLINE_NOTIFY Callback,
+ PVOID Context
+ );
+
+__declspec(dllimport)
+NTSTATUS
+WheaUnregisterInUsePageOfflineNotification (
+ PFN_IN_USE_PAGE_OFFLINE_NOTIFY Callback
+ );
+
+__declspec(dllimport)
+BOOLEAN
+WheaGetNotifyAllOfflinesPolicy (
+ void
+ );
+
+typedef union _WHEA_IN_USE_PAGE_NOTIFY_FLAGS {
+ struct {
+ UCHAR PlatformDirected : 1;
+ UCHAR PageSwapped : 1;
+ UCHAR PageDemoted : 1;
+ UCHAR Reserved : 3;
+ UCHAR NotifyAllOfflines: 1;
+ UCHAR PageOfflined : 1;
+ } Bits;
+
+ UINT8 AsUCHAR;
+} WHEA_IN_USE_PAGE_NOTIFY_FLAGS, *PWHEA_IN_USE_PAGE_NOTIFY_FLAGS;
+
+typedef enum _WHEA_RECOVERY_CONTEXT_ERROR_TYPE {
+ WheaRecoveryContextErrorTypeMemory = 1,
+ WheaRecoveryContextErrorTypePmem,
+ WheaRecoveryContextErrorTypeMax
+} WHEA_RECOVERY_CONTEXT_ERROR_TYPE,
+ *PWHEA_RECOVERY_CONTEXT_ERROR_TYPE;
+
+
+typedef struct _WHEA_RECOVERY_CONTEXT_PAGE_INFO {
+ ULONG ComponentTag;
+ NTSTATUS PageStatus;
+ WHEA_RECOVERY_CONTEXT_ACTION_TAKEN ActionTaken;
+ WHEA_IN_USE_PAGE_NOTIFY_FLAGS NotifyFlags;
+ BOOLEAN ImmediateSuccess;
+ UINT16 Reserved;
+ WHEA_RECOVERY_CONTEXT_ACTION_TAKEN_ADDITIONAL_INFO ActionTakenAdditionalInfo;
+} WHEA_RECOVERY_CONTEXT_PAGE_INFO, *PWHEA_RECOVERY_CONTEXT_PAGE_INFO;
+
+typedef struct _WHEA_RECOVERY_CONTEXT {
+ union {
+ struct {
+ ULONG_PTR Address;
+ BOOLEAN Consumed;
+ UINT16 ErrorCode;
+ BOOLEAN ErrorIpValid;
+ BOOLEAN RestartIpValid;
+ BOOLEAN ClearPoison;
+ } MemoryError;
+
+ struct {
+ ULONG_PTR PmemErrInfo;
+ } PmemError;
+ };
+
+ UINT64 PartitionId;
+ UINT32 VpIndex;
+ WHEA_RECOVERY_CONTEXT_ERROR_TYPE ErrorType;
+ ULONG PageCount;
+ WHEA_RECOVERY_CONTEXT_PAGE_INFO PageInfo[256];
+} WHEA_RECOVERY_CONTEXT, *PWHEA_RECOVERY_CONTEXT;
+
+__declspec(dllimport)
+void
+WheaAttemptRowOffline (
+ PFN_NUMBER Page,
+ PMEMORY_DEFECT MemDefect,
+ ULONG PageCount,
+ PWHEA_RECOVERY_CONTEXT Context
+ );
+
+
+
+typedef
+NTSTATUS
+(HVL_WHEA_ERROR_NOTIFICATION) (
+ PWHEA_RECOVERY_CONTEXT RecoveryContext,
+ BOOLEAN Poisoned
+ );
+
+typedef HVL_WHEA_ERROR_NOTIFICATION *PHVL_WHEA_ERROR_NOTIFICATION;
+
+extern PHVL_WHEA_ERROR_NOTIFICATION HvlpWheaErrorNotificationCallback;
+
+__declspec(dllimport)
+NTSTATUS
+HvlRegisterWheaErrorNotification (
+ PHVL_WHEA_ERROR_NOTIFICATION Callback
+ );
+
+__declspec(dllimport)
+NTSTATUS
+HvlUnregisterWheaErrorNotification(
+ PHVL_WHEA_ERROR_NOTIFICATION Callback
+ );
+
+#line 22637 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+typedef
+NTSTATUS
+(*PSHED_PI_GET_ALL_ERROR_SOURCES) (
+ PVOID PluginContext,
+ PULONG Count,
+ PWHEA_ERROR_SOURCE_DESCRIPTOR *ErrorSrcs,
+ PULONG Length
+ );
+
+
+typedef
+NTSTATUS
+(*PSHED_PI_GET_ERROR_SOURCE_INFO) (
+ PVOID PluginContext,
+ PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource
+ );
+
+
+typedef
+NTSTATUS
+(*PSHED_PI_SET_ERROR_SOURCE_INFO) (
+ PVOID PluginContext,
+ PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource
+ );
+
+typedef
+NTSTATUS
+ (*PSHED_PI_ENABLE_ERROR_SOURCE) (
+ PVOID PluginContext,
+ PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource
+ );
+
+typedef
+NTSTATUS
+ (*PSHED_PI_DISABLE_ERROR_SOURCE) (
+ PVOID PluginContext,
+ PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource
+ );
+
+typedef
+NTSTATUS
+(*PSHED_PI_WRITE_ERROR_RECORD) (
+ PVOID PluginContext,
+ ULONG Flags,
+ ULONG RecordLength,
+ PWHEA_ERROR_RECORD ErrorRecord
+ );
+
+
+typedef
+NTSTATUS
+(*PSHED_PI_READ_ERROR_RECORD) (
+ PVOID PluginContext,
+ ULONG Flags,
+ ULONGLONG ErrorRecordId,
+ PULONGLONG NextErrorRecordId,
+ PULONG RecordLength,
+ PWHEA_ERROR_RECORD ErrorRecord
+ );
+
+typedef
+NTSTATUS
+(*PSHED_PI_CLEAR_ERROR_RECORD) (
+ PVOID PluginContext,
+ ULONG Flags,
+ ULONGLONG ErrorRecordId
+ );
+
+typedef
+NTSTATUS
+(*PSHED_PI_RETRIEVE_ERROR_INFO) (
+ PVOID PluginContext,
+ PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource,
+ ULONGLONG BufferLength,
+ PWHEA_ERROR_PACKET Packet
+ );
+
+typedef
+NTSTATUS
+(*PSHED_PI_FINALIZE_ERROR_RECORD) (
+ PVOID PluginContext,
+ PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource,
+ ULONG BufferLength,
+ PWHEA_ERROR_RECORD ErrorRecord
+ );
+
+typedef
+NTSTATUS
+(*PSHED_PI_CLEAR_ERROR_STATUS) (
+ PVOID PluginContext,
+ PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource,
+ ULONG BufferLength,
+ PWHEA_ERROR_RECORD ErrorRecord
+ );
+
+
+typedef
+NTSTATUS
+(*PSHED_PI_ATTEMPT_ERROR_RECOVERY) (
+ PVOID PluginContext,
+ ULONG BufferLength,
+ PWHEA_ERROR_RECORD ErrorRecord
+ );
+
+
+typedef
+NTSTATUS
+(*PSHED_PI_GET_INJECTION_CAPABILITIES) (
+ PVOID PluginContext,
+ PWHEA_ERROR_INJECTION_CAPABILITIES Capabilities
+ );
+
+
+typedef
+NTSTATUS
+(*PSHED_PI_INJECT_ERROR) (
+ PVOID PluginContext,
+ ULONGLONG ErrorType,
+ ULONGLONG Parameter1,
+ ULONGLONG Parameter2,
+ ULONGLONG Parameter3,
+ ULONGLONG Parameter4
+ );
+
+
+
+typedef struct _WHEA_PSHED_PLUGIN_CALLBACKS {
+ PSHED_PI_GET_ALL_ERROR_SOURCES GetAllErrorSources;
+ PVOID Reserved;
+ PSHED_PI_GET_ERROR_SOURCE_INFO GetErrorSourceInfo;
+ PSHED_PI_SET_ERROR_SOURCE_INFO SetErrorSourceInfo;
+ PSHED_PI_ENABLE_ERROR_SOURCE EnableErrorSource;
+ PSHED_PI_DISABLE_ERROR_SOURCE DisableErrorSource;
+ PSHED_PI_WRITE_ERROR_RECORD WriteErrorRecord;
+ PSHED_PI_READ_ERROR_RECORD ReadErrorRecord;
+ PSHED_PI_CLEAR_ERROR_RECORD ClearErrorRecord;
+ PSHED_PI_RETRIEVE_ERROR_INFO RetrieveErrorInfo;
+ PSHED_PI_FINALIZE_ERROR_RECORD FinalizeErrorRecord;
+ PSHED_PI_CLEAR_ERROR_STATUS ClearErrorStatus;
+ PSHED_PI_ATTEMPT_ERROR_RECOVERY AttemptRecovery;
+ PSHED_PI_GET_INJECTION_CAPABILITIES GetInjectionCapabilities;
+ PSHED_PI_INJECT_ERROR InjectError;
+} WHEA_PSHED_PLUGIN_CALLBACKS, *PWHEA_PSHED_PLUGIN_CALLBACKS;
+
+typedef struct _WHEA_PSHED_PLUGIN_REGISTRATION_PACKET_V1 {
+ ULONG Length;
+ ULONG Version;
+ PVOID Context;
+ ULONG FunctionalAreaMask;
+ ULONG Reserved;
+ WHEA_PSHED_PLUGIN_CALLBACKS Callbacks;
+} WHEA_PSHED_PLUGIN_REGISTRATION_PACKET_V1;
+
+
+
+typedef struct _WHEA_PSHED_PLUGIN_REGISTRATION_PACKET_V2 {
+ ULONG Length;
+ ULONG Version;
+ PVOID Context;
+ ULONG FunctionalAreaMask;
+ ULONG Reserved;
+ WHEA_PSHED_PLUGIN_CALLBACKS Callbacks;
+ PVOID PluginHandle;
+} WHEA_PSHED_PLUGIN_REGISTRATION_PACKET_V2;
+
+typedef WHEA_PSHED_PLUGIN_REGISTRATION_PACKET_V2
+ WHEA_PSHED_PLUGIN_REGISTRATION_PACKET;
+
+typedef WHEA_PSHED_PLUGIN_REGISTRATION_PACKET
+ *PWHEA_PSHED_PLUGIN_REGISTRATION_PACKET;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+PshedAllocateMemory (
+ ULONG Size
+ );
+#line 22848 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+void
+PshedFreeMemory (
+ PVOID Address
+ );
+#line 22857 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+PshedIsSystemWheaEnabled (
+ void
+ );
+#line 22865 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PshedRegisterPlugin (
+ PWHEA_PSHED_PLUGIN_REGISTRATION_PACKET Packet
+ );
+#line 22874 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+__declspec(dllimport)
+void
+PshedUnregisterPlugin (
+ PVOID PluginHandle
+ );
+#line 22883 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+PshedSynchronizeExecution (
+ PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource,
+ PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
+ PVOID SynchronizeContext
+ );
+#line 22893 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+extern const GUID INTEL_ADDRESS_TRANSLATION_PRM_HANDLER_GUID;
+#line 22905 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma pack(push, 1)
+typedef struct _WHEA_PRM_ADDRESS_TRANSLATION_BUFFER_INTEL {
+ UINT32 SwSmi;
+ UINT32 Command;
+ UINT32 Status;
+
+ UINT64 SystemAddress;
+ UINT64 NmSystemAddress;
+ UINT64 SpareSystemAddress;
+ UINT64 DevicePhysicalAddress;
+ UINT64 ProcessorSocketId;
+ UINT64 MemoryControllerId;
+ UINT64 NmMemoryControllerId;
+ UINT64 TargetId;
+ UINT64 LogicalChannelId;
+ UINT64 ChannelAddress;
+ UINT64 NmChannelAddress;
+ UINT64 ChannelId;
+ UINT64 NmChannelId;
+ UINT64 RankAddress;
+ UINT64 NmRankAddress;
+ UINT64 PhysicalRankId;
+ UINT64 NmPhysicalRankId;
+ UINT64 DimmSlotId;
+ UINT64 NmDimmSlotId;
+ UINT64 DimmRankId;
+ UINT64 Row;
+ UINT64 NmRow;
+ UINT64 Column;
+ UINT64 NmColumn;
+ UINT64 Bank;
+ UINT64 NmBank;
+ UINT64 BankGroup;
+ UINT64 NmBankGroup;
+ UINT64 LockStepRank;
+ UINT64 LockStepPhysicalRank;
+ UINT64 LockStepBank;
+ UINT64 LockStepBankGroup;
+ UINT64 ChipSelect;
+ UINT64 NmChipSelect;
+ UINT64 Node;
+ UINT64 ChipId;
+ UINT64 NmChipId;
+} WHEA_PRM_ADDRESS_TRANSLATION_BUFFER_INTEL, * PWHEA_PRM_ADDRESS_TRANSLATION_BUFFER_INTEL;
+#pragma pack(pop)
+
+NTSTATUS
+WheaPrmTranslatePhysicalAddress(
+ UINT64 PhysicalAddress,
+ PVOID DimmAddress
+ );
+
+NTSTATUS
+WheaPrmTranslateDimmAddress(
+ PVOID DimmAddress,
+ PUINT64 PhysicalAddress
+ );
+
+
+
+
+__inline
+BOOLEAN
+WheaIsValidErrorRecordSignature (
+ PWHEA_ERROR_RECORD Record
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+
+ BOOLEAN Valid;
+
+ if ((Record->Header.Signature == 'REPC') &&
+ (Record->Header.Revision.AsUSHORT == 0x0210) &&
+ (Record->Header.SignatureEnd == 0xFFFFFFFF)) {
+
+ Valid = 1;
+
+ } else {
+ Valid = 0;
+ }
+
+ return Valid;
+}
+
+
+
+
+__inline
+NTSTATUS
+WheaFindErrorRecordSection (
+ PWHEA_ERROR_RECORD Record,
+ const GUID *SectionType,
+ PWHEA_ERROR_RECORD_SECTION_DESCRIPTOR *SectionDescriptor,
+ PVOID *SectionData
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+
+ NTSTATUS Status;
+ PWHEA_ERROR_RECORD_SECTION_DESCRIPTOR Descriptor;
+ ULONG Index;
+ ULONG MinimumLength;
+
+ if ((Record == ((void *)0)) ||
+ (SectionType == ((void *)0)) ||
+ (SectionDescriptor == ((void *)0)) ||
+ (WheaIsValidErrorRecordSignature(Record) == 0) ||
+ (Record->Header.SectionCount == 0)) {
+
+ Status = ((NTSTATUS)0xC000000DL);
+ goto FindErrorRecordSectionEnd;
+ }
+
+
+
+
+
+
+ MinimumLength = sizeof(WHEA_ERROR_RECORD_HEADER) +
+ (Record->Header.SectionCount *
+ sizeof(WHEA_ERROR_RECORD_SECTION_DESCRIPTOR));
+
+ if (Record->Header.Length < MinimumLength) {
+ Status = ((NTSTATUS)0xC000000DL);
+ goto FindErrorRecordSectionEnd;
+ }
+
+
+
+
+
+ Descriptor = &Record->SectionDescriptor[0];
+ for (Index = 0; Index < Record->Header.SectionCount; Index += 1) {
+ if (RtlCompareMemory(&Descriptor->SectionType,
+ SectionType,
+ sizeof(GUID)) == sizeof(GUID)) {
+
+ break;
+ }
+
+ Descriptor += 1;
+ }
+
+ if (Index >= Record->Header.SectionCount) {
+ Status = ((NTSTATUS)0xC0000225L);
+ goto FindErrorRecordSectionEnd;
+ }
+
+
+
+
+
+
+ if ((Descriptor->SectionOffset + Descriptor->SectionLength) >
+ Record->Header.Length) {
+
+ Status = ((NTSTATUS)0xC000000DL);
+ goto FindErrorRecordSectionEnd;
+ }
+
+
+
+
+
+ *SectionDescriptor = Descriptor;
+ if (SectionData != ((void *)0)) {
+ *SectionData = ((PVOID)((PUCHAR)(Record) + (Descriptor->SectionOffset)));
+ }
+
+ Status = ((NTSTATUS)0x00000000L);
+
+FindErrorRecordSectionEnd:
+ return Status;
+}
+
+
+__inline
+NTSTATUS
+WheaFindNextErrorRecordSection (
+ PWHEA_ERROR_RECORD Record,
+ ULONG *Context,
+ PWHEA_ERROR_RECORD_SECTION_DESCRIPTOR *SectionDescriptor,
+ PVOID *SectionData
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+
+ NTSTATUS Status;
+ PWHEA_ERROR_RECORD_SECTION_DESCRIPTOR Descriptor;
+ ULONG Index;
+ ULONG MinimumLength;
+
+ if ((Record == ((void *)0)) ||
+ (Context == ((void *)0)) ||
+ (SectionDescriptor == ((void *)0)) ||
+ (WheaIsValidErrorRecordSignature(Record) == 0) ||
+ (Record->Header.SectionCount == 0)) {
+
+ Status = ((NTSTATUS)0xC000000DL);
+ goto FindNextErrorRecordSectionEnd;
+ }
+
+
+
+
+
+
+ MinimumLength = sizeof(WHEA_ERROR_RECORD_HEADER) +
+ (Record->Header.SectionCount *
+ sizeof(WHEA_ERROR_RECORD_SECTION_DESCRIPTOR));
+
+ if (Record->Header.Length < MinimumLength) {
+ Status = ((NTSTATUS)0xC000000DL);
+ goto FindNextErrorRecordSectionEnd;
+ }
+
+
+
+
+
+
+
+
+ Index = *Context;
+ if (Index > Record->Header.SectionCount) {
+ Status = ((NTSTATUS)0xC000000DL);
+ goto FindNextErrorRecordSectionEnd;
+ }
+
+ if (Index == Record->Header.SectionCount) {
+ Status = ((NTSTATUS)0xC0000225L);
+ goto FindNextErrorRecordSectionEnd;
+ }
+
+ Descriptor = &Record->SectionDescriptor[Index];
+
+
+
+
+
+
+ if ((Descriptor->SectionOffset + Descriptor->SectionLength) >
+ Record->Header.Length) {
+
+ Status = ((NTSTATUS)0xC000000DL);
+ goto FindNextErrorRecordSectionEnd;
+ }
+
+ *Context = Index + 1;
+ *SectionDescriptor = Descriptor;
+ if (SectionData != ((void *)0)) {
+ *SectionData = ((PVOID)((PUCHAR)(Record) + (Descriptor->SectionOffset)));
+ }
+
+ Status = ((NTSTATUS)0x00000000L);
+
+FindNextErrorRecordSectionEnd:
+ return Status;
+}
+
+__inline
+void
+WheaErrorRecordBuilderInit (
+ PWHEA_ERROR_RECORD Record,
+ UINT32 RecordLength,
+ WHEA_ERROR_SEVERITY Severity,
+ GUID Notify
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+
+ WheaInitializeRecordHeader(&Record->Header);
+ Record->Header.SectionCount = 0;
+ Record->Header.Severity = Severity;
+ Record->Header.Length = RecordLength;
+ Record->Header.NotifyType = Notify;
+ return;
+}
+
+__inline
+PVOID
+WheaErrorRecordBuilderAddSection (
+ PWHEA_ERROR_RECORD Record,
+ UINT32 MaxSectionCount,
+ UINT32 SectionLength,
+ WHEA_ERROR_RECORD_SECTION_DESCRIPTOR_FLAGS Flags,
+ GUID SectionType,
+ PVOID DescriptorOut
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+
+ UINT32 CurrentSectionCount;
+ PWHEA_ERROR_RECORD_SECTION_DESCRIPTOR Descriptor;
+ UINT32 Offset;
+ PVOID SectionData;
+
+ SectionData = ((void *)0);
+ CurrentSectionCount = Record->Header.SectionCount;
+ if (Record->Header.SectionCount == 0) {
+ Offset = sizeof(Record->Header);
+ Offset += MaxSectionCount * sizeof(*Descriptor);
+
+ } else {
+ Offset = Record->SectionDescriptor[CurrentSectionCount - 1].SectionOffset;
+ Offset += Record->SectionDescriptor[CurrentSectionCount - 1].SectionLength;
+ }
+
+ if ((Offset + SectionLength) > Record->Header.Length) {
+ goto cleanup;
+ }
+
+ SectionData = ((PVOID)((PUCHAR)(Record) + (Offset)));
+ Descriptor = &Record->SectionDescriptor[CurrentSectionCount];
+ Descriptor->SectionOffset = Offset;
+ Descriptor->SectionLength = SectionLength;
+ Descriptor->Revision.AsUSHORT =
+ 0x0300;
+
+ Descriptor->Flags = Flags;
+ Descriptor->SectionType = SectionType;
+ Descriptor->SectionSeverity = Record->Header.Severity;
+ if (DescriptorOut != ((void *)0)) {
+ memcpy((DescriptorOut),(&Descriptor),(sizeof(Descriptor)));
+ }
+
+ Record->Header.SectionCount += 1;
+ ((void) 0);
+
+ cleanup:
+
+ return SectionData;
+}
+
+__inline
+PVOID
+WheaErrorRecordBuilderAddPacket (
+ PWHEA_ERROR_RECORD Record,
+ PWHEA_ERROR_PACKET_V2 Packet,
+ UINT32 MaxSectionCount
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+ PVOID Section;
+ WHEA_ERROR_RECORD_SECTION_DESCRIPTOR_FLAGS Flags;
+
+ Flags.AsULONG = 0;
+ Section = WheaErrorRecordBuilderAddSection(Record,
+ MaxSectionCount,
+ Packet->Length,
+ Flags,
+ WHEA_ERROR_PACKET_SECTION_GUID,
+ ((void *)0));
+
+ if (Section == ((void *)0)) {
+ goto cleanup;
+ }
+
+ memcpy((Section),(Packet),(Packet->Length));
+
+cleanup:
+
+ return Section;
+}
+
+
+
+
+typedef enum _SOC_SUBSYSTEM_TYPE {
+ SOC_SUBSYS_WIRELESS_MODEM = 0,
+ SOC_SUBSYS_AUDIO_DSP = 1,
+ SOC_SUBSYS_WIRELSS_CONNECTIVITY = 2,
+ SOC_SUBSYS_SENSORS = 3,
+ SOC_SUBSYS_COMPUTE_DSP = 4,
+ SOC_SUBSYS_SECURE_PROC = 5,
+
+
+
+
+
+
+ SOC_SUBSYS_VENDOR_DEFINED = 0x10000
+} SOC_SUBSYSTEM_TYPE, *PSOC_SUBSYSTEM_TYPE;
+
+
+typedef struct _SOC_SUBSYSTEM_FAILURE_DETAILS {
+ SOC_SUBSYSTEM_TYPE SubsysType;
+ ULONG64 FirmwareVersion;
+ ULONG64 HardwareVersion;
+ ULONG UnifiedFailureRegionSize;
+ CHAR UnifiedFailureRegion[1];
+} SOC_SUBSYSTEM_FAILURE_DETAILS, *PSOC_SUBSYSTEM_FAILURE_DETAILS;
+
+
+
+
+
+
+
+
+#pragma warning(pop)
+
+
+
+
+#line 23480 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+#line 23482 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntddk.h"
+
+#line 48 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntnls.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 24 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntnls.h"
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4820)
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntnls.h"
+
+
+
+
+
+
+
+typedef struct _CPTABLEINFO {
+ USHORT CodePage;
+ USHORT MaximumCharacterSize;
+ USHORT DefaultChar;
+ USHORT UniDefaultChar;
+ USHORT TransDefaultChar;
+ USHORT TransUniDefaultChar;
+ USHORT DBCSCodePage;
+ UCHAR LeadByte[12];
+ PUSHORT MultiByteTable;
+ PVOID WideCharTable;
+ PUSHORT DBCSRanges;
+ PUSHORT DBCSOffsets;
+} CPTABLEINFO, *PCPTABLEINFO;
+
+typedef struct _NLSTABLEINFO {
+ CPTABLEINFO OemTableInfo;
+ CPTABLEINFO AnsiTableInfo;
+ PUSHORT UpperCaseTable;
+ PUSHORT LowerCaseTable;
+} NLSTABLEINFO, *PNLSTABLEINFO;
+
+typedef struct _RTL_NLS_STATE {
+ CPTABLEINFO DefaultAcpTableInfo;
+ CPTABLEINFO DefaultOemTableInfo;
+ PUSHORT ActiveCodePageData;
+ PUSHORT OemCodePageData;
+ PUSHORT LeadByteInfo;
+ PUSHORT OemLeadByteInfo;
+ PUSHORT CaseMappingData;
+ PUSHORT UnicodeUpcaseTable844;
+ PUSHORT UnicodeLowercaseTable844;
+} RTL_NLS_STATE, *PRTL_NLS_STATE;
+
+
+#pragma warning(pop)
+#line 77 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntnls.h"
+
+
+
+
+
+#line 83 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntnls.h"
+#line 51 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 63 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 67 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 71 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 75 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+typedef struct _BUS_HANDLER *PBUS_HANDLER;
+typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT;
+typedef struct _DEVICE_HANDLER_OBJECT *PDEVICE_HANDLER_OBJECT;
+typedef struct _IO_TIMER *PIO_TIMER;
+typedef struct _KINTERRUPT *PKINTERRUPT;
+typedef struct _KPROCESS *PKPROCESS ,*PRKPROCESS, *PEPROCESS;
+typedef struct _KTHREAD *PKTHREAD, *PRKTHREAD, *PETHREAD;
+typedef struct _OBJECT_TYPE *POBJECT_TYPE;
+typedef struct _PEB *PPEB;
+typedef struct _ACL *PACL;
+
+
+
+
+
+
+
+
+
+extern __declspec(dllimport) volatile CCHAR KeNumberProcessors;
+
+
+#line 103 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+#line 108 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef UNICODE_STRING LSA_UNICODE_STRING, *PLSA_UNICODE_STRING;
+typedef STRING LSA_STRING, *PLSA_STRING;
+typedef OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES;
+
+
+
+typedef struct _SID_IDENTIFIER_AUTHORITY {
+ UCHAR Value[6];
+} SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;
+#line 119 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+typedef struct _SID {
+ UCHAR Revision;
+ UCHAR SubAuthorityCount;
+ SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
+
+
+
+ ULONG SubAuthority[1];
+#line 132 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+} SID, *PISID;
+#line 134 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef union _SE_SID {
+ SID Sid;
+ UCHAR Buffer[(sizeof(SID) - sizeof(ULONG) + ((15) * sizeof(ULONG)))];
+} SE_SID, *PSE_SID;
+
+#line 169 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+typedef enum _SID_NAME_USE {
+ SidTypeUser = 1,
+ SidTypeGroup,
+ SidTypeDomain,
+ SidTypeAlias,
+ SidTypeWellKnownGroup,
+ SidTypeDeletedAccount,
+ SidTypeInvalid,
+ SidTypeUnknown,
+ SidTypeComputer,
+ SidTypeLabel,
+ SidTypeLogonSession
+} SID_NAME_USE, *PSID_NAME_USE;
+
+typedef struct _SID_AND_ATTRIBUTES {
+
+
+
+ PSID Sid;
+#line 191 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ ULONG Attributes;
+ } SID_AND_ATTRIBUTES, * PSID_AND_ATTRIBUTES;
+
+typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[1];
+typedef SID_AND_ATTRIBUTES_ARRAY *PSID_AND_ATTRIBUTES_ARRAY;
+
+
+typedef ULONG_PTR SID_HASH_ENTRY, *PSID_HASH_ENTRY;
+
+typedef struct _SID_AND_ATTRIBUTES_HASH {
+ ULONG SidCount;
+ PSID_AND_ATTRIBUTES SidAttr;
+ SID_HASH_ENTRY Hash[32];
+} SID_AND_ATTRIBUTES_HASH, *PSID_AND_ATTRIBUTES_HASH;
+
+typedef struct _ATTRIBUTES_AND_SID {
+ UINT32 Attributes;
+ ULONG SidStart;
+} ATTRIBUTES_AND_SID, *PATTRIBUTES_AND_SID;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _ACE_HEADER {
+ UCHAR AceType;
+ UCHAR AceFlags;
+ USHORT AceSize;
+} ACE_HEADER;
+typedef ACE_HEADER *PACE_HEADER;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _ACCESS_ALLOWED_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ ULONG SidStart;
+} ACCESS_ALLOWED_ACE;
+
+typedef ACCESS_ALLOWED_ACE *PACCESS_ALLOWED_ACE;
+
+typedef struct _ACCESS_DENIED_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ ULONG SidStart;
+} ACCESS_DENIED_ACE;
+typedef ACCESS_DENIED_ACE *PACCESS_DENIED_ACE;
+
+typedef struct _SYSTEM_AUDIT_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ ULONG SidStart;
+} SYSTEM_AUDIT_ACE;
+typedef SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE;
+
+typedef struct _SYSTEM_ALARM_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ ULONG SidStart;
+} SYSTEM_ALARM_ACE;
+typedef SYSTEM_ALARM_ACE *PSYSTEM_ALARM_ACE;
+
+typedef struct _SYSTEM_RESOURCE_ATTRIBUTE_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ ULONG SidStart;
+
+} SYSTEM_RESOURCE_ATTRIBUTE_ACE, *PSYSTEM_RESOURCE_ATTRIBUTE_ACE;
+
+typedef struct _SYSTEM_SCOPED_POLICY_ID_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ ULONG SidStart;
+} SYSTEM_SCOPED_POLICY_ID_ACE, *PSYSTEM_SCOPED_POLICY_ID_ACE;
+
+typedef struct _SYSTEM_MANDATORY_LABEL_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ ULONG SidStart;
+} SYSTEM_MANDATORY_LABEL_ACE, *PSYSTEM_MANDATORY_LABEL_ACE;
+
+typedef struct _SYSTEM_PROCESS_TRUST_LABEL_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ ULONG SidStart;
+} SYSTEM_PROCESS_TRUST_LABEL_ACE, *PSYSTEM_PROCESS_TRUST_LABEL_ACE;
+
+typedef struct _SYSTEM_ACCESS_FILTER_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ ULONG SidStart;
+
+} SYSTEM_ACCESS_FILTER_ACE, *PSYSTEM_ACCESS_FILTER_ACE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _SECURITY_DESCRIPTOR_RELATIVE {
+ UCHAR Revision;
+ UCHAR Sbz1;
+ SECURITY_DESCRIPTOR_CONTROL Control;
+ ULONG Owner;
+ ULONG Group;
+ ULONG Sacl;
+ ULONG Dacl;
+ } SECURITY_DESCRIPTOR_RELATIVE, *PISECURITY_DESCRIPTOR_RELATIVE;
+
+typedef struct _SECURITY_DESCRIPTOR {
+ UCHAR Revision;
+ UCHAR Sbz1;
+ SECURITY_DESCRIPTOR_CONTROL Control;
+ PSID Owner;
+ PSID Group;
+ PACL Sacl;
+ PACL Dacl;
+
+ } SECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;
+
+
+typedef struct _SECURITY_OBJECT_AI_PARAMS {
+ ULONG Size;
+ ULONG ConstraintMask;
+} SECURITY_OBJECT_AI_PARAMS, *PSECURITY_OBJECT_AI_PARAMS;
+
+
+
+
+
+
+
+
+
+
+typedef struct _OBJECT_TYPE_LIST {
+ USHORT Level;
+ USHORT Sbz;
+ GUID *ObjectType;
+} OBJECT_TYPE_LIST, *POBJECT_TYPE_LIST;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _AUDIT_EVENT_TYPE {
+ AuditEventObjectAccess,
+ AuditEventDirectoryServiceAccess
+} AUDIT_EVENT_TYPE, *PAUDIT_EVENT_TYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _ACCESS_REASON_TYPE{
+
+ AccessReasonNone = 0x00000000,
+
+
+
+
+
+
+ AccessReasonAllowedAce = 0x00010000,
+ AccessReasonDeniedAce = 0x00020000,
+
+ AccessReasonAllowedParentAce = 0x00030000,
+ AccessReasonDeniedParentAce = 0x00040000,
+
+ AccessReasonNotGrantedByCape = 0x00050000,
+ AccessReasonNotGrantedByParentCape = 0x00060000,
+
+ AccessReasonNotGrantedToAppContainer = 0x00070000,
+
+ AccessReasonMissingPrivilege = 0x00100000,
+ AccessReasonFromPrivilege = 0x00200000,
+
+
+ AccessReasonIntegrityLevel = 0x00300000,
+
+ AccessReasonOwnership = 0x00400000,
+
+ AccessReasonNullDacl = 0x00500000,
+ AccessReasonEmptyDacl = 0x00600000,
+
+ AccessReasonNoSD = 0x00700000,
+ AccessReasonNoGrant = 0x00800000,
+
+ AccessReasonTrustLabel = 0x00900000,
+
+ AccessReasonFilterAce = 0x00a00000
+}
+ACCESS_REASON_TYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef ULONG ACCESS_REASON;
+
+typedef struct _ACCESS_REASONS{
+ ACCESS_REASON Data[32];
+} ACCESS_REASONS, *PACCESS_REASONS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _SE_SECURITY_DESCRIPTOR
+{
+ ULONG Size;
+ ULONG Flags;
+ PSECURITY_DESCRIPTOR SecurityDescriptor;
+} SE_SECURITY_DESCRIPTOR, *PSE_SECURITY_DESCRIPTOR;
+
+typedef struct _SE_ACCESS_REQUEST
+{
+ ULONG Size;
+ PSE_SECURITY_DESCRIPTOR SeSecurityDescriptor;
+ ACCESS_MASK DesiredAccess;
+ ACCESS_MASK PreviouslyGrantedAccess;
+ PSID PrincipalSelfSid;
+ PGENERIC_MAPPING GenericMapping;
+ ULONG ObjectTypeListCount;
+ POBJECT_TYPE_LIST ObjectTypeList;
+} SE_ACCESS_REQUEST, *PSE_ACCESS_REQUEST;
+
+
+typedef struct _SE_ACCESS_REPLY
+{
+ ULONG Size;
+ ULONG ResultListCount;
+ PACCESS_MASK GrantedAccess;
+ PNTSTATUS AccessStatus;
+ PACCESS_REASONS AccessReason;
+ PPRIVILEGE_SET* Privileges;
+} SE_ACCESS_REPLY, *PSE_ACCESS_REPLY;
+
+
+
+typedef enum _SE_AUDIT_OPERATION
+{
+ AuditPrivilegeObject,
+ AuditPrivilegeService,
+ AuditAccessCheck,
+ AuditOpenObject,
+ AuditOpenObjectWithTransaction,
+ AuditCloseObject,
+ AuditDeleteObject,
+ AuditOpenObjectForDelete,
+ AuditOpenObjectForDeleteWithTransaction,
+ AuditCloseNonObject,
+ AuditOpenNonObject,
+ AuditObjectReference,
+ AuditHandleCreation,
+} SE_AUDIT_OPERATION, *PSE_AUDIT_OPERATION;
+
+
+
+typedef struct _SE_AUDIT_INFO
+{
+ ULONG Size;
+ AUDIT_EVENT_TYPE AuditType;
+ SE_AUDIT_OPERATION AuditOperation;
+ ULONG AuditFlags;
+ UNICODE_STRING SubsystemName;
+ UNICODE_STRING ObjectTypeName;
+ UNICODE_STRING ObjectName;
+ PVOID HandleId;
+ GUID* TransactionId;
+ LUID* OperationId;
+ BOOLEAN ObjectCreation;
+ BOOLEAN GenerateOnClose;
+} SE_AUDIT_INFO, *PSE_AUDIT_INFO;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1268 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1295 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+typedef enum _TOKEN_TYPE {
+ TokenPrimary = 1,
+ TokenImpersonation
+ } TOKEN_TYPE;
+typedef TOKEN_TYPE *PTOKEN_TYPE;
+
+
+
+
+
+
+
+typedef enum _TOKEN_ELEVATION_TYPE {
+ TokenElevationTypeDefault = 1,
+ TokenElevationTypeFull,
+ TokenElevationTypeLimited,
+} TOKEN_ELEVATION_TYPE, *PTOKEN_ELEVATION_TYPE;
+
+
+
+
+
+
+typedef enum _TOKEN_INFORMATION_CLASS {
+ TokenUser = 1,
+ TokenGroups,
+ TokenPrivileges,
+ TokenOwner,
+ TokenPrimaryGroup,
+ TokenDefaultDacl,
+ TokenSource,
+ TokenType,
+ TokenImpersonationLevel,
+ TokenStatistics,
+ TokenRestrictedSids,
+ TokenSessionId,
+ TokenGroupsAndPrivileges,
+ TokenSessionReference,
+ TokenSandBoxInert,
+ TokenAuditPolicy,
+ TokenOrigin,
+ TokenElevationType,
+ TokenLinkedToken,
+ TokenElevation,
+ TokenHasRestrictions,
+ TokenAccessInformation,
+ TokenVirtualizationAllowed,
+ TokenVirtualizationEnabled,
+ TokenIntegrityLevel,
+ TokenUIAccess,
+ TokenMandatoryPolicy,
+ TokenLogonSid,
+ TokenIsAppContainer,
+ TokenCapabilities,
+ TokenAppContainerSid,
+ TokenAppContainerNumber,
+ TokenUserClaimAttributes,
+ TokenDeviceClaimAttributes,
+ TokenRestrictedUserClaimAttributes,
+ TokenRestrictedDeviceClaimAttributes,
+ TokenDeviceGroups,
+ TokenRestrictedDeviceGroups,
+ TokenSecurityAttributes,
+ TokenIsRestricted,
+ TokenProcessTrustLevel,
+ TokenPrivateNameSpace,
+ TokenSingletonAttributes,
+ TokenBnoIsolation,
+ TokenChildProcessFlags,
+ TokenIsLessPrivilegedAppContainer,
+ TokenIsSandboxed,
+ TokenIsAppSilo,
+ TokenLoggingInformation,
+ MaxTokenInfoClass
+} TOKEN_INFORMATION_CLASS, *PTOKEN_INFORMATION_CLASS;
+
+
+
+
+
+typedef struct _TOKEN_USER {
+ SID_AND_ATTRIBUTES User;
+} TOKEN_USER, *PTOKEN_USER;
+
+
+
+typedef struct _SE_TOKEN_USER {
+ union {
+ TOKEN_USER TokenUser;
+ SID_AND_ATTRIBUTES User;
+ } ;
+
+ union {
+ SID Sid;
+ UCHAR Buffer[(sizeof(SID) - sizeof(ULONG) + ((15) * sizeof(ULONG)))];
+ } ;
+
+} SE_TOKEN_USER , PSE_TOKEN_USER;
+
+
+
+#line 1404 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+typedef struct _TOKEN_GROUPS {
+ ULONG GroupCount;
+
+
+
+ SID_AND_ATTRIBUTES Groups[1];
+#line 1413 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+} TOKEN_GROUPS, *PTOKEN_GROUPS;
+
+typedef struct _TOKEN_PRIVILEGES {
+ ULONG PrivilegeCount;
+ LUID_AND_ATTRIBUTES Privileges[1];
+} TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES;
+
+
+typedef struct _TOKEN_OWNER {
+ PSID Owner;
+} TOKEN_OWNER, *PTOKEN_OWNER;
+
+
+
+#line 1428 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef struct _TOKEN_PRIMARY_GROUP {
+ PSID PrimaryGroup;
+} TOKEN_PRIMARY_GROUP, *PTOKEN_PRIMARY_GROUP;
+
+
+typedef struct _TOKEN_DEFAULT_DACL {
+ PACL DefaultDacl;
+} TOKEN_DEFAULT_DACL, *PTOKEN_DEFAULT_DACL;
+
+typedef struct _TOKEN_USER_CLAIMS {
+ PCLAIMS_BLOB UserClaims;
+} TOKEN_USER_CLAIMS, *PTOKEN_USER_CLAIMS;
+
+typedef struct _TOKEN_DEVICE_CLAIMS {
+ PCLAIMS_BLOB DeviceClaims;
+} TOKEN_DEVICE_CLAIMS, *PTOKEN_DEVICE_CLAIMS;
+
+typedef struct _TOKEN_GROUPS_AND_PRIVILEGES {
+ ULONG SidCount;
+ ULONG SidLength;
+ PSID_AND_ATTRIBUTES Sids;
+ ULONG RestrictedSidCount;
+ ULONG RestrictedSidLength;
+ PSID_AND_ATTRIBUTES RestrictedSids;
+ ULONG PrivilegeCount;
+ ULONG PrivilegeLength;
+ PLUID_AND_ATTRIBUTES Privileges;
+ LUID AuthenticationId;
+} TOKEN_GROUPS_AND_PRIVILEGES, *PTOKEN_GROUPS_AND_PRIVILEGES;
+
+typedef struct _TOKEN_LINKED_TOKEN {
+ HANDLE LinkedToken;
+} TOKEN_LINKED_TOKEN, *PTOKEN_LINKED_TOKEN;
+
+typedef struct _TOKEN_ELEVATION {
+ ULONG TokenIsElevated;
+} TOKEN_ELEVATION, *PTOKEN_ELEVATION;
+
+typedef struct _TOKEN_MANDATORY_LABEL {
+ SID_AND_ATTRIBUTES Label;
+} TOKEN_MANDATORY_LABEL, *PTOKEN_MANDATORY_LABEL;
+
+
+
+
+
+
+
+
+
+
+#line 1481 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef struct _TOKEN_MANDATORY_POLICY {
+ ULONG Policy;
+} TOKEN_MANDATORY_POLICY, *PTOKEN_MANDATORY_POLICY;
+
+typedef PVOID PSECURITY_ATTRIBUTES_OPAQUE;
+
+typedef struct _TOKEN_ACCESS_INFORMATION {
+ PSID_AND_ATTRIBUTES_HASH SidHash;
+ PSID_AND_ATTRIBUTES_HASH RestrictedSidHash;
+ PTOKEN_PRIVILEGES Privileges;
+ LUID AuthenticationId;
+ TOKEN_TYPE TokenType;
+ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+ TOKEN_MANDATORY_POLICY MandatoryPolicy;
+ ULONG Flags;
+ ULONG AppContainerNumber;
+ PSID PackageSid;
+ PSID_AND_ATTRIBUTES_HASH CapabilitiesHash;
+ PSID TrustLevelSid;
+ PSECURITY_ATTRIBUTES_OPAQUE SecurityAttributes;
+} TOKEN_ACCESS_INFORMATION, *PTOKEN_ACCESS_INFORMATION;
+
+typedef struct _TOKEN_LOGGING_INFORMATION {
+ TOKEN_TYPE TokenType;
+ TOKEN_ELEVATION TokenElevation;
+ TOKEN_ELEVATION_TYPE TokenElevationType;
+ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+ ULONG IntegrityLevel;
+ SID_AND_ATTRIBUTES User;
+ PSID TrustLevelSid;
+ ULONG SessionId;
+ ULONG AppContainerNumber;
+ LUID AuthenticationId;
+ ULONG GroupCount;
+ ULONG GroupsLength;
+ PSID_AND_ATTRIBUTES Groups;
+} TOKEN_LOGGING_INFORMATION, *PTOKEN_LOGGING_INFORMATION;
+
+
+
+
+
+
+
+typedef struct _TOKEN_AUDIT_POLICY {
+ UCHAR PerUserPolicy[(((59)) >> 1) + 1];
+} TOKEN_AUDIT_POLICY, *PTOKEN_AUDIT_POLICY;
+
+
+
+typedef struct _TOKEN_SOURCE {
+ CHAR SourceName[8];
+ LUID SourceIdentifier;
+} TOKEN_SOURCE, *PTOKEN_SOURCE;
+
+
+typedef struct _TOKEN_STATISTICS {
+ LUID TokenId;
+ LUID AuthenticationId;
+ LARGE_INTEGER ExpirationTime;
+ TOKEN_TYPE TokenType;
+ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+ ULONG DynamicCharged;
+ ULONG DynamicAvailable;
+ ULONG GroupCount;
+ ULONG PrivilegeCount;
+ LUID ModifiedId;
+} TOKEN_STATISTICS, *PTOKEN_STATISTICS;
+
+
+
+typedef struct _TOKEN_CONTROL {
+ LUID TokenId;
+ LUID AuthenticationId;
+ LUID ModifiedId;
+ TOKEN_SOURCE TokenSource;
+} TOKEN_CONTROL, *PTOKEN_CONTROL;
+
+typedef struct _TOKEN_ORIGIN {
+ LUID OriginatingLogonSession ;
+} TOKEN_ORIGIN, * PTOKEN_ORIGIN ;
+
+
+typedef enum _MANDATORY_LEVEL {
+ MandatoryLevelUntrusted = 0,
+ MandatoryLevelLow,
+ MandatoryLevelMedium,
+ MandatoryLevelHigh,
+ MandatoryLevelSystem,
+ MandatoryLevelSecureProcess,
+ MandatoryLevelCount
+} MANDATORY_LEVEL, *PMANDATORY_LEVEL;
+
+typedef struct _TOKEN_APPCONTAINER_INFORMATION {
+ PSID TokenAppContainer;
+} TOKEN_APPCONTAINER_INFORMATION, *PTOKEN_APPCONTAINER_INFORMATION;
+
+
+
+#line 1582 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef struct _TOKEN_SID_INFORMATION {
+ PSID Sid;
+} TOKEN_SID_INFORMATION, *PTOKEN_SID_INFORMATION;
+
+typedef struct _TOKEN_BNO_ISOLATION_INFORMATION {
+ PWSTR IsolationPrefix;
+ BOOLEAN IsolationEnabled;
+} TOKEN_BNO_ISOLATION_INFORMATION, *PTOKEN_BNO_ISOLATION_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE {
+ ULONG64 Version;
+ PWSTR Name;
+} CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE, *PCLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE;
+
+
+
+
+
+
+
+
+typedef struct _CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE {
+ PVOID pValue;
+ ULONG ValueLength;
+} CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE,
+ *PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _CLAIM_SECURITY_ATTRIBUTE_V1 {
+
+
+
+
+
+
+ PWSTR Name;
+
+
+
+
+
+ USHORT ValueType;
+
+
+
+
+
+
+ USHORT Reserved;
+
+
+
+
+
+ ULONG Flags;
+
+
+
+
+
+ ULONG ValueCount;
+
+
+
+
+
+ union {
+ PLONG64 pInt64;
+ PULONG64 pUint64;
+ PWSTR *ppString;
+ PCLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE pFqbn;
+ PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE pOctetString;
+ } Values;
+} CLAIM_SECURITY_ATTRIBUTE_V1, *PCLAIM_SECURITY_ATTRIBUTE_V1;
+
+
+
+
+
+
+typedef struct _CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1 {
+
+
+
+
+
+
+ ULONG Name;
+
+
+
+
+
+ USHORT ValueType;
+
+
+
+
+
+
+ USHORT Reserved;
+
+
+
+
+
+ ULONG Flags;
+
+
+
+
+
+ ULONG ValueCount;
+
+
+
+
+
+ union {
+ ULONG pInt64[1];
+ ULONG pUint64[1];
+ ULONG ppString[1];
+ ULONG pFqbn[1];
+ ULONG pOctetString[1];
+ } Values;
+} CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1, *PCLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _CLAIM_SECURITY_ATTRIBUTES_INFORMATION {
+
+
+
+
+
+ USHORT Version;
+
+
+
+
+
+ USHORT Reserved;
+
+ ULONG AttributeCount;
+ union {
+ PCLAIM_SECURITY_ATTRIBUTE_V1 pAttributeV1;
+ } Attribute;
+} CLAIM_SECURITY_ATTRIBUTES_INFORMATION, *PCLAIM_SECURITY_ATTRIBUTES_INFORMATION;
+
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtOpenThreadToken(
+ HANDLE ThreadHandle,
+ ACCESS_MASK DesiredAccess,
+ BOOLEAN OpenAsSelf,
+ PHANDLE TokenHandle
+ );
+#line 1859 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtOpenThreadTokenEx(
+ HANDLE ThreadHandle,
+ ACCESS_MASK DesiredAccess,
+ BOOLEAN OpenAsSelf,
+ ULONG HandleAttributes,
+ PHANDLE TokenHandle
+ );
+#line 1873 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtOpenProcessToken(
+ HANDLE ProcessHandle,
+ ACCESS_MASK DesiredAccess,
+ PHANDLE TokenHandle
+ );
+#line 1886 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtOpenProcessTokenEx(
+ HANDLE ProcessHandle,
+ ACCESS_MASK DesiredAccess,
+ ULONG HandleAttributes,
+ PHANDLE TokenHandle
+ );
+#line 1899 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+NTSTATUS
+__stdcall
+NtOpenJobObjectToken(
+ HANDLE JobHandle,
+ ACCESS_MASK DesiredAccess,
+ PHANDLE TokenHandle
+ );
+#line 1910 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtDuplicateToken(
+ HANDLE ExistingTokenHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ BOOLEAN EffectiveOnly,
+ TOKEN_TYPE TokenType,
+ PHANDLE NewTokenHandle
+ );
+#line 1925 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtFilterToken (
+ HANDLE ExistingTokenHandle,
+ ULONG Flags,
+ PTOKEN_GROUPS SidsToDisable,
+ PTOKEN_PRIVILEGES PrivilegesToDelete,
+ PTOKEN_GROUPS RestrictedSids,
+ PHANDLE NewTokenHandle
+ );
+#line 1941 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtImpersonateAnonymousToken(
+ HANDLE ThreadHandle
+ );
+#line 1951 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 1956 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtQueryInformationToken (
+ HANDLE TokenHandle,
+ TOKEN_INFORMATION_CLASS TokenInformationClass,
+ PVOID TokenInformation,
+ ULONG TokenInformationLength,
+ PULONG ReturnLength
+ );
+#line 1968 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtSetInformationToken (
+ HANDLE TokenHandle,
+ TOKEN_INFORMATION_CLASS TokenInformationClass,
+ PVOID TokenInformation,
+ ULONG TokenInformationLength
+ );
+#line 1982 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtAdjustPrivilegesToken (
+ HANDLE TokenHandle,
+ BOOLEAN DisableAllPrivileges,
+ PTOKEN_PRIVILEGES NewState,
+ ULONG BufferLength,
+ PTOKEN_PRIVILEGES PreviousState,
+ PULONG ReturnLength
+ );
+#line 1998 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtAdjustGroupsToken (
+ HANDLE TokenHandle,
+ BOOLEAN ResetToDefault,
+ PTOKEN_GROUPS NewState,
+ ULONG BufferLength,
+ PTOKEN_GROUPS PreviousState,
+ PULONG ReturnLength
+ );
+#line 2014 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtPrivilegeCheck (
+ HANDLE ClientToken,
+ PPRIVILEGE_SET RequiredPrivileges,
+ PBOOLEAN Result
+ );
+#line 2026 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtAccessCheckAndAuditAlarm (
+ PUNICODE_STRING SubsystemName,
+ PVOID HandleId,
+ PUNICODE_STRING ObjectTypeName,
+ PUNICODE_STRING ObjectName,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ ACCESS_MASK DesiredAccess,
+ PGENERIC_MAPPING GenericMapping,
+ BOOLEAN ObjectCreation,
+ PACCESS_MASK GrantedAccess,
+ PNTSTATUS AccessStatus,
+ PBOOLEAN GenerateOnClose
+ );
+#line 2047 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtAccessCheckByTypeAndAuditAlarm (
+ PUNICODE_STRING SubsystemName,
+ PVOID HandleId,
+ PUNICODE_STRING ObjectTypeName,
+ PUNICODE_STRING ObjectName,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSID PrincipalSelfSid,
+ ACCESS_MASK DesiredAccess,
+ AUDIT_EVENT_TYPE AuditType,
+ ULONG Flags,
+ POBJECT_TYPE_LIST ObjectTypeList,
+ ULONG ObjectTypeListLength,
+ PGENERIC_MAPPING GenericMapping,
+ BOOLEAN ObjectCreation,
+ PACCESS_MASK GrantedAccess,
+ PNTSTATUS AccessStatus,
+ PBOOLEAN GenerateOnClose
+ );
+#line 2072 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtAccessCheckByTypeResultListAndAuditAlarm (
+ PUNICODE_STRING SubsystemName,
+ PVOID HandleId,
+ PUNICODE_STRING ObjectTypeName,
+ PUNICODE_STRING ObjectName,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSID PrincipalSelfSid,
+ ACCESS_MASK DesiredAccess,
+ AUDIT_EVENT_TYPE AuditType,
+ ULONG Flags,
+ POBJECT_TYPE_LIST ObjectTypeList,
+ ULONG ObjectTypeListLength,
+ PGENERIC_MAPPING GenericMapping,
+ BOOLEAN ObjectCreation,
+ PACCESS_MASK GrantedAccess,
+ PNTSTATUS AccessStatus,
+ PBOOLEAN GenerateOnClose
+ );
+#line 2097 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtAccessCheckByTypeResultListAndAuditAlarmByHandle (
+ PUNICODE_STRING SubsystemName,
+ PVOID HandleId,
+ HANDLE ClientToken,
+ PUNICODE_STRING ObjectTypeName,
+ PUNICODE_STRING ObjectName,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSID PrincipalSelfSid,
+ ACCESS_MASK DesiredAccess,
+ AUDIT_EVENT_TYPE AuditType,
+ ULONG Flags,
+ POBJECT_TYPE_LIST ObjectTypeList,
+ ULONG ObjectTypeListLength,
+ PGENERIC_MAPPING GenericMapping,
+ BOOLEAN ObjectCreation,
+ PACCESS_MASK GrantedAccess,
+ PNTSTATUS AccessStatus,
+ PBOOLEAN GenerateOnClose
+ );
+#line 2123 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtOpenObjectAuditAlarm (
+ PUNICODE_STRING SubsystemName,
+ PVOID HandleId,
+ PUNICODE_STRING ObjectTypeName,
+ PUNICODE_STRING ObjectName,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ HANDLE ClientToken,
+ ACCESS_MASK DesiredAccess,
+ ACCESS_MASK GrantedAccess,
+ PPRIVILEGE_SET Privileges,
+ BOOLEAN ObjectCreation,
+ BOOLEAN AccessGranted,
+ PBOOLEAN GenerateOnClose
+ );
+#line 2143 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtPrivilegeObjectAuditAlarm (
+ PUNICODE_STRING SubsystemName,
+ PVOID HandleId,
+ HANDLE ClientToken,
+ ACCESS_MASK DesiredAccess,
+ PPRIVILEGE_SET Privileges,
+ BOOLEAN AccessGranted
+ );
+#line 2157 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtCloseObjectAuditAlarm (
+ PUNICODE_STRING SubsystemName,
+ PVOID HandleId,
+ BOOLEAN GenerateOnClose
+ );
+#line 2168 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtDeleteObjectAuditAlarm (
+ PUNICODE_STRING SubsystemName,
+ PVOID HandleId,
+ BOOLEAN GenerateOnClose
+ );
+#line 2179 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtPrivilegedServiceAuditAlarm (
+ PUNICODE_STRING SubsystemName,
+ PUNICODE_STRING ServiceName,
+ HANDLE ClientToken,
+ PPRIVILEGE_SET Privileges,
+ BOOLEAN AccessGranted
+ );
+#line 2192 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+typedef
+
+
+NTSTATUS
+__stdcall
+RTL_HEAP_COMMIT_ROUTINE(
+ PVOID Base,
+ PVOID *CommitAddress,
+ PSIZE_T CommitSize
+ );
+typedef RTL_HEAP_COMMIT_ROUTINE *PRTL_HEAP_COMMIT_ROUTINE;
+
+typedef struct _RTL_HEAP_PARAMETERS {
+ ULONG Length;
+ SIZE_T SegmentReserve;
+ SIZE_T SegmentCommit;
+ SIZE_T DeCommitFreeBlockThreshold;
+ SIZE_T DeCommitTotalFreeThreshold;
+ SIZE_T MaximumAllocationSize;
+ SIZE_T VirtualMemoryThreshold;
+ SIZE_T InitialCommit;
+ SIZE_T InitialReserve;
+ PRTL_HEAP_COMMIT_ROUTINE CommitRoutine;
+ SIZE_T Reserved[ 2 ];
+} RTL_HEAP_PARAMETERS, *PRTL_HEAP_PARAMETERS;
+
+
+
+
+
+typedef enum _RTL_MEMORY_TYPE {
+ MemoryTypePaged,
+ MemoryTypeNonPaged,
+ MemoryType64KPage,
+ MemoryTypeLargePage,
+ MemoryTypeHugePage,
+ MemoryTypeCustom,
+ MemoryTypeMax
+} RTL_MEMORY_TYPE, *PRTL_MEMORY_TYPE;
+
+typedef enum _HEAP_MEMORY_INFO_CLASS {
+ HeapMemoryBasicInformation
+} HEAP_MEMORY_INFO_CLASS;
+
+typedef NTSTATUS
+ALLOCATE_VIRTUAL_MEMORY_EX_CALLBACK (
+ HANDLE CallbackContext,
+ HANDLE ProcessHandle,
+ PVOID* BaseAddress,
+ PSIZE_T RegionSize,
+ ULONG AllocationType,
+ ULONG PageProtection,
+ PMEM_EXTENDED_PARAMETER ExtendedParameters,
+ ULONG ExtendedParameterCount
+ );
+
+typedef ALLOCATE_VIRTUAL_MEMORY_EX_CALLBACK *PALLOCATE_VIRTUAL_MEMORY_EX_CALLBACK;
+
+typedef NTSTATUS
+FREE_VIRTUAL_MEMORY_EX_CALLBACK (
+ HANDLE CallbackContext,
+ HANDLE ProcessHandle,
+ PVOID *BaseAddress,
+ PSIZE_T RegionSize,
+ ULONG FreeType
+ );
+
+typedef FREE_VIRTUAL_MEMORY_EX_CALLBACK *PFREE_VIRTUAL_MEMORY_EX_CALLBACK;
+
+typedef NTSTATUS
+QUERY_VIRTUAL_MEMORY_CALLBACK (
+ HANDLE CallbackContext,
+ HANDLE ProcessHandle,
+ PVOID BaseAddress,
+ HEAP_MEMORY_INFO_CLASS MemoryInformationClass,
+ PVOID MemoryInformation,
+ SIZE_T MemoryInformationLength,
+ PSIZE_T ReturnLength
+ );
+
+typedef QUERY_VIRTUAL_MEMORY_CALLBACK *PQUERY_VIRTUAL_MEMORY_CALLBACK;
+
+typedef struct _RTL_SEGMENT_HEAP_VA_CALLBACKS {
+ HANDLE CallbackContext;
+ PALLOCATE_VIRTUAL_MEMORY_EX_CALLBACK AllocateVirtualMemory;
+ PFREE_VIRTUAL_MEMORY_EX_CALLBACK FreeVirtualMemory;
+ PQUERY_VIRTUAL_MEMORY_CALLBACK QueryVirtualMemory;
+} RTL_SEGMENT_HEAP_VA_CALLBACKS, *PRTL_SEGMENT_HEAP_VA_CALLBACKS;
+
+
+
+typedef struct _RTL_SEGMENT_HEAP_MEMORY_SOURCE {
+ ULONG Flags;
+ ULONG MemoryTypeMask;
+ ULONG NumaNode;
+ union {
+ HANDLE PartitionHandle;
+ RTL_SEGMENT_HEAP_VA_CALLBACKS *Callbacks;
+ };
+
+ SIZE_T Reserved[2];
+} RTL_SEGMENT_HEAP_MEMORY_SOURCE, *PRTL_SEGMENT_HEAP_MEMORY_SOURCE;
+
+
+
+
+
+
+typedef struct _RTL_SEGMENT_HEAP_PARAMETERS {
+ USHORT Version;
+ USHORT Size;
+ ULONG Flags;
+
+ RTL_SEGMENT_HEAP_MEMORY_SOURCE MemorySource;
+
+ SIZE_T Reserved[4];
+} RTL_SEGMENT_HEAP_PARAMETERS, *PRTL_SEGMENT_HEAP_PARAMETERS;
+
+
+
+
+
+
+
+
+typedef struct _RTL_HEAP_MEMORY_LIMIT_DATA {
+ SIZE_T CommitLimitBytes;
+ ULONG_PTR CommitLimitFailureCode;
+ SIZE_T MaxAllocationSizeBytes;
+ ULONG_PTR AllocationLimitFailureCode;
+} RTL_HEAP_MEMORY_LIMIT_DATA, *PRTL_HEAP_MEMORY_LIMIT_DATA;
+
+typedef struct _RTL_HEAP_MEMORY_LIMIT_INFO {
+ ULONG Version;
+ RTL_HEAP_MEMORY_LIMIT_DATA Data;
+} RTL_HEAP_MEMORY_LIMIT_INFO, *PRTL_HEAP_MEMORY_LIMIT_INFO;
+
+
+
+
+__declspec(dllimport)
+PVOID
+__stdcall
+RtlCreateHeap(
+ ULONG Flags,
+ PVOID HeapBase,
+ SIZE_T ReserveSize,
+ SIZE_T CommitSize,
+ PVOID Lock,
+
+#line 2345 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 2347 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ PRTL_HEAP_PARAMETERS Parameters
+ );
+#line 2350 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma region Desktop Family
+
+
+__forceinline
+ULONG
+HEAP_MAKE_TAG_FLAGS (
+ ULONG TagBase,
+ ULONG Tag
+ )
+
+{
+ return ((ULONG)((TagBase) + ((Tag) << 18)));
+}
+#line 2432 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#line 2433 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#pragma endregion
+
+
+
+
+__declspec(dllimport)
+PVOID
+__stdcall
+RtlDestroyHeap(
+ PVOID HeapHandle
+ );
+#line 2445 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+
+
+
+PVOID
+__stdcall
+RtlAllocateHeap(
+ PVOID HeapHandle,
+ ULONG Flags,
+ SIZE_T Size
+ );
+#line 2460 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+__declspec(dllimport)
+LOGICAL
+__stdcall
+RtlFreeHeap(
+ PVOID HeapHandle,
+ ULONG Flags,
+ PVOID BaseAddress
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2488 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlRandom (
+ PULONG Seed
+ );
+#line 2500 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlRandomEx (
+ PULONG Seed
+ );
+#line 2511 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlInitUnicodeStringEx(
+ PUNICODE_STRING DestinationString,
+ PCWSTR SourceString
+ );
+#line 2522 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlInitAnsiStringEx(
+ PANSI_STRING DestinationString,
+ PCSZ SourceString
+ );
+#line 2535 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlInitStringEx(
+ PSTRING DestinationString,
+ PCSZ SourceString
+ );
+#line 2546 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlInitUTF8StringEx(
+ PUTF8_STRING DestinationString,
+ PCSZ SourceString
+ );
+#line 2557 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlCreateUnicodeString(
+
+ PUNICODE_STRING DestinationString,
+ PCWSTR SourceString
+ );
+#line 2573 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlPrefixString(
+ const STRING * String1,
+ const STRING * String2,
+ BOOLEAN CaseInSensitive
+ );
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlAppendStringToString (
+ PSTRING Destination,
+ const STRING * Source
+ );
+#line 2597 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlOemStringToUnicodeString(
+
+
+ PUNICODE_STRING DestinationString,
+ PCOEM_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+#line 2613 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlUnicodeStringToOemString(
+
+
+ POEM_STRING DestinationString,
+ PCUNICODE_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+#line 2629 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlUpcaseUnicodeStringToOemString(
+
+
+ POEM_STRING DestinationString,
+ PCUNICODE_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+#line 2644 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlOemStringToCountedUnicodeString(
+
+
+ PUNICODE_STRING DestinationString,
+ PCOEM_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+#line 2659 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlUnicodeStringToCountedOemString(
+
+
+ POEM_STRING DestinationString,
+ PCUNICODE_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+#line 2674 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlUpcaseUnicodeStringToCountedOemString(
+
+
+ POEM_STRING DestinationString,
+ PCUNICODE_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+#line 2689 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlValidateUnicodeString(
+ ULONG Flags,
+ PCUNICODE_STRING String
+ );
+#line 2701 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlDuplicateUnicodeString(
+ ULONG Flags,
+ PCUNICODE_STRING StringIn,
+
+ PUNICODE_STRING StringOut
+ );
+#line 2719 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlDowncaseUnicodeString(
+
+
+ PUNICODE_STRING DestinationString,
+ PCUNICODE_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+#line 2735 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlFreeOemString(
+
+ POEM_STRING OemString
+ );
+#line 2747 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlxUnicodeStringToOemSize(
+ PCUNICODE_STRING UnicodeString
+ );
+#line 2758 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlxOemStringToUnicodeSize(
+ PCOEM_STRING OemString
+ );
+#line 2782 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlMultiByteToUnicodeN(
+ PWCH UnicodeString,
+ ULONG MaxBytesInUnicodeString,
+ PULONG BytesInUnicodeString,
+ const CHAR *MultiByteString,
+ ULONG BytesInMultiByteString
+ );
+#line 2821 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlMultiByteToUnicodeSize(
+ PULONG BytesInUnicodeString,
+ const CHAR *MultiByteString,
+ ULONG BytesInMultiByteString
+ );
+#line 2834 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlUnicodeToMultiByteSize(
+ PULONG BytesInMultiByteString,
+ PCWCH UnicodeString,
+ ULONG BytesInUnicodeString
+ );
+#line 2847 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlUnicodeToMultiByteN(
+ PCHAR MultiByteString,
+ ULONG MaxBytesInMultiByteString,
+ PULONG BytesInMultiByteString,
+ PCWCH UnicodeString,
+ ULONG BytesInUnicodeString
+ );
+#line 2862 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlUnicodeToUTF8N(
+ PCHAR UTF8StringDestination,
+ ULONG UTF8StringMaxByteCount,
+ PULONG UTF8StringActualByteCount,
+ PCWCH UnicodeStringSource,
+ ULONG UnicodeStringByteCount
+ );
+#line 2880 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlUTF8ToUnicodeN(
+ PWSTR UnicodeStringDestination,
+ ULONG UnicodeStringMaxByteCount,
+ PULONG UnicodeStringActualByteCount,
+ PCCH UTF8StringSource,
+ ULONG UTF8StringByteCount
+ );
+#line 2895 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 2900 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 2903 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlUnicodeStringToUTF8String(
+
+
+ PUTF8_STRING DestinationString,
+ PCUNICODE_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlUTF8StringToUnicodeString(
+
+
+ PUNICODE_STRING DestinationString,
+ PUTF8_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+#line 2929 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlUpcaseUnicodeToMultiByteN(
+ PCHAR MultiByteString,
+ ULONG MaxBytesInMultiByteString,
+ PULONG BytesInMultiByteString,
+ PCWCH UnicodeString,
+ ULONG BytesInUnicodeString
+ );
+#line 2944 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlOemToUnicodeN(
+ PWCH UnicodeString,
+ ULONG MaxBytesInUnicodeString,
+ PULONG BytesInUnicodeString,
+ PCCH OemString,
+ ULONG BytesInOemString
+ );
+#line 2958 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlUnicodeToOemN(
+ PCHAR OemString,
+ ULONG MaxBytesInOemString,
+ PULONG BytesInOemString,
+ PCWCH UnicodeString,
+ ULONG BytesInUnicodeString
+ );
+#line 2972 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlUpcaseUnicodeToOemN(
+ PCHAR OemString,
+ ULONG MaxBytesInOemString,
+ PULONG BytesInOemString,
+ PCWCH UnicodeString,
+ ULONG BytesInUnicodeString
+ );
+#line 2986 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlNormalizeString(
+ ULONG NormForm,
+ PCWSTR SourceString,
+ LONG SourceStringLength,
+ PWSTR DestinationString,
+ PLONG DestinationStringLength
+ );
+#line 2999 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlIsNormalizedString(
+ ULONG NormForm,
+ PCWSTR SourceString,
+ LONG SourceStringLength,
+ PBOOLEAN Normalized
+ );
+#line 3011 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlIdnToAscii(
+ ULONG Flags,
+ PCWSTR SourceString,
+ LONG SourceStringLength,
+ PWSTR DestinationString,
+ PLONG DestinationStringLength
+ );
+#line 3024 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlIdnToUnicode(
+ ULONG Flags,
+ PCWSTR SourceString,
+ LONG SourceStringLength,
+ PWSTR DestinationString,
+ PLONG DestinationStringLength
+ );
+#line 3037 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlIdnToNameprepUnicode(
+ ULONG Flags,
+ PCWSTR SourceString,
+ LONG SourceStringLength,
+ PWSTR DestinationString,
+ PLONG DestinationStringLength
+ );
+#line 3050 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+typedef
+
+
+
+PVOID
+__stdcall
+RTL_ALLOCATE_STRING_ROUTINE (
+ SIZE_T NumberOfBytes
+ );
+typedef RTL_ALLOCATE_STRING_ROUTINE *PRTL_ALLOCATE_STRING_ROUTINE;
+
+
+
+typedef
+
+
+
+PVOID
+__stdcall
+RTL_REALLOCATE_STRING_ROUTINE(
+ SIZE_T NumberOfBytes,
+ PVOID Buffer
+ );
+typedef RTL_REALLOCATE_STRING_ROUTINE *PRTL_REALLOCATE_STRING_ROUTINE;
+
+#line 3078 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef
+
+
+void
+__stdcall
+RTL_FREE_STRING_ROUTINE (
+ PVOID Buffer
+ );
+typedef RTL_FREE_STRING_ROUTINE *PRTL_FREE_STRING_ROUTINE;
+
+extern const PRTL_ALLOCATE_STRING_ROUTINE RtlAllocateStringRoutine;
+extern const PRTL_FREE_STRING_ROUTINE RtlFreeStringRoutine;
+
+
+extern const PRTL_REALLOCATE_STRING_ROUTINE RtlReallocateStringRoutine;
+#line 3095 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _GENERATE_NAME_CONTEXT {
+
+
+
+
+
+
+
+
+ USHORT Checksum;
+ BOOLEAN ChecksumInserted;
+
+ UCHAR NameLength;
+ WCHAR NameBuffer[8];
+
+ ULONG ExtensionLength;
+ WCHAR ExtensionBuffer[4];
+
+ ULONG LastIndexValue;
+
+} GENERATE_NAME_CONTEXT;
+typedef GENERATE_NAME_CONTEXT *PGENERATE_NAME_CONTEXT;
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlGenerate8dot3Name (
+ PCUNICODE_STRING Name,
+ BOOLEAN AllowExtendedCharacters,
+ PGENERATE_NAME_CONTEXT Context,
+ PUNICODE_STRING Name8dot3
+ );
+
+
+
+
+
+
+
+
+
+
+
+#line 3163 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#line 3164 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlIsNameLegalDOS8Dot3 (
+ PCUNICODE_STRING Name,
+ POEM_STRING OemName,
+ PBOOLEAN NameContainsSpaces
+ );
+#line 3177 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlIsValidOemCharacter (
+ PWCHAR Char
+ );
+#line 3188 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct _PREFIX_TABLE_ENTRY {
+ CSHORT NodeTypeCode;
+ CSHORT NameLength;
+ struct _PREFIX_TABLE_ENTRY *NextPrefixTree;
+ RTL_SPLAY_LINKS Links;
+ PSTRING Prefix;
+} PREFIX_TABLE_ENTRY;
+typedef PREFIX_TABLE_ENTRY *PPREFIX_TABLE_ENTRY;
+
+typedef struct _PREFIX_TABLE {
+ CSHORT NodeTypeCode;
+ CSHORT NameLength;
+ PPREFIX_TABLE_ENTRY NextPrefixTree;
+} PREFIX_TABLE;
+typedef PREFIX_TABLE *PPREFIX_TABLE;
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+PfxInitialize (
+ PPREFIX_TABLE PrefixTable
+ );
+#line 3227 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+PfxInsertPrefix (
+ PPREFIX_TABLE PrefixTable,
+ PSTRING Prefix,
+ PPREFIX_TABLE_ENTRY PrefixTableEntry
+ );
+#line 3239 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+PfxRemovePrefix (
+ PPREFIX_TABLE PrefixTable,
+ PPREFIX_TABLE_ENTRY PrefixTableEntry
+ );
+#line 3250 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+PPREFIX_TABLE_ENTRY
+__stdcall
+PfxFindPrefix (
+ PPREFIX_TABLE PrefixTable,
+ PSTRING FullName
+ );
+#line 3262 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+typedef struct _UNICODE_PREFIX_TABLE_ENTRY {
+ CSHORT NodeTypeCode;
+ CSHORT NameLength;
+ struct _UNICODE_PREFIX_TABLE_ENTRY *NextPrefixTree;
+ struct _UNICODE_PREFIX_TABLE_ENTRY *CaseMatch;
+ RTL_SPLAY_LINKS Links;
+ PUNICODE_STRING Prefix;
+} UNICODE_PREFIX_TABLE_ENTRY;
+typedef UNICODE_PREFIX_TABLE_ENTRY *PUNICODE_PREFIX_TABLE_ENTRY;
+
+typedef struct _UNICODE_PREFIX_TABLE {
+ CSHORT NodeTypeCode;
+ CSHORT NameLength;
+ PUNICODE_PREFIX_TABLE_ENTRY NextPrefixTree;
+ PUNICODE_PREFIX_TABLE_ENTRY LastNextEntry;
+} UNICODE_PREFIX_TABLE;
+typedef UNICODE_PREFIX_TABLE *PUNICODE_PREFIX_TABLE;
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlInitializeUnicodePrefix (
+ PUNICODE_PREFIX_TABLE PrefixTable
+ );
+#line 3295 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlInsertUnicodePrefix (
+ PUNICODE_PREFIX_TABLE PrefixTable,
+ PUNICODE_STRING Prefix,
+ PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
+ );
+#line 3307 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlRemoveUnicodePrefix (
+ PUNICODE_PREFIX_TABLE PrefixTable,
+ PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
+ );
+#line 3318 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+PUNICODE_PREFIX_TABLE_ENTRY
+__stdcall
+RtlFindUnicodePrefix (
+ PUNICODE_PREFIX_TABLE PrefixTable,
+ PCUNICODE_STRING FullName,
+ ULONG CaseInsensitiveIndex
+ );
+#line 3331 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+PUNICODE_PREFIX_TABLE_ENTRY
+__stdcall
+RtlNextUnicodePrefix (
+ PUNICODE_PREFIX_TABLE PrefixTable,
+ BOOLEAN Restart
+ );
+#line 3343 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _COMPRESSED_DATA_INFO {
+
+
+
+
+
+
+
+
+ USHORT CompressionFormatAndEngine;
+
+
+
+
+
+
+
+
+
+
+
+
+ UCHAR CompressionUnitShift;
+ UCHAR ChunkShift;
+ UCHAR ClusterShift;
+ UCHAR Reserved;
+
+
+
+
+
+
+ USHORT NumberOfChunks;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ULONG CompressedChunkSizes[1];
+
+} COMPRESSED_DATA_INFO;
+typedef COMPRESSED_DATA_INFO *PCOMPRESSED_DATA_INFO;
+
+
+
+
+
+#line 3436 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlGetCompressionWorkSpaceSize (
+ USHORT CompressionFormatAndEngine,
+ PULONG CompressBufferWorkSpaceSize,
+ PULONG CompressFragmentWorkSpaceSize
+ );
+#line 3447 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlCompressBuffer (
+ USHORT CompressionFormatAndEngine,
+ PUCHAR UncompressedBuffer,
+ ULONG UncompressedBufferSize,
+ PUCHAR CompressedBuffer,
+ ULONG CompressedBufferSize,
+ ULONG UncompressedChunkSize,
+ PULONG FinalCompressedSize,
+ PVOID WorkSpace
+ );
+#line 3463 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlDecompressBuffer (
+ USHORT CompressionFormat,
+ PUCHAR UncompressedBuffer,
+ ULONG UncompressedBufferSize,
+ PUCHAR CompressedBuffer,
+ ULONG CompressedBufferSize,
+ PULONG FinalUncompressedSize
+ );
+#line 3478 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlDecompressBufferEx (
+ USHORT CompressionFormat,
+ PUCHAR UncompressedBuffer,
+ ULONG UncompressedBufferSize,
+ PUCHAR CompressedBuffer,
+ ULONG CompressedBufferSize,
+ PULONG FinalUncompressedSize,
+ PVOID WorkSpace
+ );
+#line 3494 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlDecompressBufferEx2 (
+ USHORT CompressionFormat,
+ PUCHAR UncompressedBuffer,
+ ULONG UncompressedBufferSize,
+ PUCHAR CompressedBuffer,
+ ULONG CompressedBufferSize,
+ ULONG UncompressedChunkSize,
+ PULONG FinalUncompressedSize,
+ PVOID WorkSpace
+ );
+#line 3511 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlDecompressFragment (
+ USHORT CompressionFormat,
+ PUCHAR UncompressedFragment,
+ ULONG UncompressedFragmentSize,
+ PUCHAR CompressedBuffer,
+ ULONG CompressedBufferSize,
+ ULONG FragmentOffset,
+ PULONG FinalUncompressedSize,
+ PVOID WorkSpace
+ );
+#line 3528 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlDecompressFragmentEx (
+ USHORT CompressionFormat,
+ PUCHAR UncompressedFragment,
+ ULONG UncompressedFragmentSize,
+ PUCHAR CompressedBuffer,
+ ULONG CompressedBufferSize,
+ ULONG FragmentOffset,
+ ULONG UncompressedChunkSize,
+ PULONG FinalUncompressedSize,
+ PVOID WorkSpace
+ );
+#line 3546 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlDescribeChunk (
+ USHORT CompressionFormat,
+ PUCHAR *CompressedBuffer,
+ PUCHAR EndOfCompressedBufferPlus1,
+ PUCHAR *ChunkBuffer,
+ PULONG ChunkSize
+ );
+#line 3560 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlReserveChunk (
+ USHORT CompressionFormat,
+ PUCHAR *CompressedBuffer,
+ PUCHAR EndOfCompressedBufferPlus1,
+ PUCHAR *ChunkBuffer,
+ ULONG ChunkSize
+ );
+#line 3574 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlDecompressChunks (
+ PUCHAR UncompressedBuffer,
+ ULONG UncompressedBufferSize,
+ PUCHAR CompressedBuffer,
+ ULONG CompressedBufferSize,
+ PUCHAR CompressedTail,
+ ULONG CompressedTailSize,
+ PCOMPRESSED_DATA_INFO CompressedDataInfo
+ );
+#line 3590 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlCompressChunks (
+ PUCHAR UncompressedBuffer,
+ ULONG UncompressedBufferSize,
+ PUCHAR CompressedBuffer,
+ ULONG CompressedBufferSize,
+ PCOMPRESSED_DATA_INFO CompressedDataInfo,
+ ULONG CompressedDataInfoLength,
+ PVOID WorkSpace
+ );
+#line 3606 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+SIZE_T
+__stdcall
+RtlCompareMemoryUlong (
+ PVOID Source,
+ SIZE_T Length,
+ ULONG Pattern
+ );
+
+#line 3620 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__forceinline
+void
+RtlFillMemoryUlong (
+ PVOID Destination,
+ SIZE_T Length,
+ ULONG Pattern
+ )
+
+{
+
+ PULONG Address = (PULONG)Destination;
+
+
+
+
+
+
+ if ((Length /= 4) != 0) {
+
+
+
+
+
+
+ if (((ULONG64)Address & 4) != 0) {
+ *Address = Pattern;
+ if ((Length -= 1) == 0) {
+ return;
+ }
+
+ Address += 1;
+ }
+
+
+
+
+
+
+ __stosq((PULONG64)(Address),
+ Pattern | ((ULONG64)Pattern << 32),
+ Length / 2);
+
+ if ((Length & 1) != 0) {
+ Address[Length - 1] = Pattern;
+ }
+ }
+
+ return;
+}
+
+
+
+
+#line 3679 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3705 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlTimeToSecondsSince1980 (
+ PLARGE_INTEGER Time,
+ PULONG ElapsedSeconds
+ );
+#line 3722 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlSecondsSince1980ToTime (
+ ULONG ElapsedSeconds,
+ PLARGE_INTEGER Time
+ );
+#line 3736 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlTimeToSecondsSince1970 (
+ PLARGE_INTEGER Time,
+ PULONG ElapsedSeconds
+ );
+#line 3751 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlSecondsSince1970ToTime (
+ ULONG ElapsedSeconds,
+ PLARGE_INTEGER Time
+ );
+#line 3765 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlValidSid (
+ PSID Sid
+ );
+#line 3843 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlEqualSid (
+ PSID Sid1,
+ PSID Sid2
+ );
+#line 3854 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlEqualPrefixSid (
+ PSID Sid1,
+ PSID Sid2
+ );
+#line 3866 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlLengthRequiredSid (
+ ULONG SubAuthorityCount
+ );
+#line 3876 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+PVOID
+__stdcall
+RtlFreeSid(
+ PSID Sid
+ );
+#line 3885 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlAllocateAndInitializeSid(
+ PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
+ UCHAR SubAuthorityCount,
+ ULONG SubAuthority0,
+ ULONG SubAuthority1,
+ ULONG SubAuthority2,
+ ULONG SubAuthority3,
+ ULONG SubAuthority4,
+ ULONG SubAuthority5,
+ ULONG SubAuthority6,
+ ULONG SubAuthority7,
+ PSID *Sid
+ );
+#line 3906 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlAllocateAndInitializeSidEx(
+ PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
+ UCHAR SubAuthorityCount,
+ PULONG SubAuthorities,
+ PSID *Sid
+ );
+#line 3919 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlInitializeSid (
+ PSID Sid,
+ PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
+ UCHAR SubAuthorityCount
+ );
+#line 3931 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlInitializeSidEx (
+ PSID Sid,
+ PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
+ UCHAR SubAuthorityCount,
+ ...
+ );
+#line 3944 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+PSID_IDENTIFIER_AUTHORITY
+__stdcall
+RtlIdentifierAuthoritySid (
+ PSID Sid
+ );
+#line 3954 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+PULONG
+__stdcall
+RtlSubAuthoritySid (
+ PSID Sid,
+ ULONG SubAuthority
+ );
+#line 3964 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+PUCHAR
+__stdcall
+RtlSubAuthorityCountSid (
+ PSID Sid
+ );
+#line 3973 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+
+ULONG
+__stdcall
+RtlLengthSid (
+ PSID Sid
+ );
+#line 3985 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlCopySid (
+ ULONG DestinationSidLength,
+ PSID DestinationSid,
+ PSID SourceSid
+ );
+#line 3997 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlCreateServiceSid(
+ PUNICODE_STRING ServiceName,
+ PSID ServiceSid,
+ PULONG ServiceSidLength
+ );
+#line 4008 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlGetSaclSecurityDescriptor (
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PBOOLEAN SaclPresent,
+ PACL *Sacl,
+ PBOOLEAN SaclDefaulted
+ );
+#line 4023 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlReplaceSidInSd(
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSID OldSid,
+ PSID NewSid,
+ ULONG *NumChanges
+ );
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlCreateVirtualAccountSid (
+ PCUNICODE_STRING Name,
+ ULONG BaseSubAuthority,
+ PSID Sid,
+ PULONG SidLength
+ );
+#line 4046 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlConvertSidToUnicodeString(
+ PUNICODE_STRING UnicodeString,
+ PSID Sid,
+ BOOLEAN AllocateDestinationString
+ );
+#line 4066 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlCopyLuid (
+ PLUID DestinationLuid,
+ PLUID SourceLuid
+ );
+#line 4078 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlCreateAcl (
+ PACL Acl,
+ ULONG AclLength,
+ ULONG AclRevision
+ );
+#line 4092 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlGetAcesBufferSize (
+ PACL Acl,
+ PULONG AcesBufferSize
+ );
+#line 4105 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlAddAce (
+ PACL Acl,
+ ULONG AceRevision,
+ ULONG StartingAceIndex,
+ PVOID AceList,
+ ULONG AceListLength
+ );
+#line 4119 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlDeleteAce (
+ PACL Acl,
+ ULONG AceIndex
+ );
+#line 4130 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlGetAce (
+ PACL Acl,
+ ULONG AceIndex,
+ PVOID *Ace
+ );
+#line 4141 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlAddAccessAllowedAce (
+ PACL Acl,
+ ULONG AceRevision,
+ ACCESS_MASK AccessMask,
+ PSID Sid
+ );
+#line 4156 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlAddAccessAllowedAceEx (
+ PACL Acl,
+ ULONG AceRevision,
+ ULONG AceFlags,
+ ACCESS_MASK AccessMask,
+ PSID Sid
+ );
+#line 4172 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlCreateSecurityDescriptorRelative (
+ PISECURITY_DESCRIPTOR_RELATIVE SecurityDescriptor,
+ ULONG Revision
+ );
+#line 4184 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlGetDaclSecurityDescriptor (
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PBOOLEAN DaclPresent,
+ PACL *Dacl,
+
+
+
+ PBOOLEAN DaclDefaulted
+ );
+#line 4200 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlSetOwnerSecurityDescriptor (
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSID Owner,
+ BOOLEAN OwnerDefaulted
+ );
+#line 4212 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlSetGroupSecurityDescriptor (
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSID Group,
+ BOOLEAN GroupDefaulted
+ );
+#line 4225 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlGetGroupSecurityDescriptor (
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSID *Group,
+
+
+
+ PBOOLEAN GroupDefaulted
+ );
+#line 4240 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlAbsoluteToSelfRelativeSD (
+ PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor,
+ PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor,
+ PULONG BufferLength
+ );
+#line 4252 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlSelfRelativeToAbsoluteSD (
+ PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor,
+ PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor,
+ PULONG AbsoluteSecurityDescriptorSize,
+ PACL Dacl,
+ PULONG DaclSize,
+ PACL Sacl,
+ PULONG SaclSize,
+ PSID Owner,
+ PULONG OwnerSize,
+ PSID PrimaryGroup,
+ PULONG PrimaryGroupSize
+ );
+#line 4272 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlGetOwnerSecurityDescriptor (
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSID *Owner,
+
+
+ PBOOLEAN OwnerDefaulted
+ );
+#line 4286 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlNtStatusToDosError (
+ NTSTATUS Status
+ );
+#line 4325 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+ULONG
+__stdcall
+RtlNtStatusToDosErrorNoTeb (
+ NTSTATUS Status
+ );
+#line 4339 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlCustomCPToUnicodeN(
+ PCPTABLEINFO CustomCP,
+ PWCH UnicodeString,
+ ULONG MaxBytesInUnicodeString,
+ PULONG BytesInUnicodeString,
+ PCH CustomCPString,
+ ULONG BytesInCustomCPString
+ );
+#line 4354 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlUnicodeToCustomCPN(
+ PCPTABLEINFO CustomCP,
+ PCH CustomCPString,
+ ULONG MaxBytesInCustomCPString,
+ PULONG BytesInCustomCPString,
+ PWCH UnicodeString,
+ ULONG BytesInUnicodeString
+ );
+#line 4369 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlUpcaseUnicodeToCustomCPN(
+ PCPTABLEINFO CustomCP,
+ PCH CustomCPString,
+ ULONG MaxBytesInCustomCPString,
+ PULONG BytesInCustomCPString,
+ PWCH UnicodeString,
+ ULONG BytesInUnicodeString
+ );
+#line 4384 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlInitCodePageTable(
+ PUSHORT TableBase,
+ PCPTABLEINFO CodePageTable
+ );
+#line 4395 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlCreateSystemVolumeInformationFolder(
+ PCUNICODE_STRING VolumeRootPath
+ );
+#line 4411 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+LONG
+__stdcall
+RtlCompareAltitudes(
+ PCUNICODE_STRING Altitude1,
+ PCUNICODE_STRING Altitude2
+ );
+#line 4427 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlQueryPackageIdentity (
+ PVOID TokenObject,
+ PWSTR PackageFullName,
+ PSIZE_T PackageSize,
+ PWSTR AppId,
+ PSIZE_T AppIdSize,
+ PBOOLEAN Packaged
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlQueryPackageIdentityEx (
+ PVOID TokenObject,
+ PWSTR PackageFullName,
+ PSIZE_T PackageSize,
+ PWSTR AppId,
+ PSIZE_T AppIdSize,
+ LPGUID DynamicId,
+ PULONG64 Flags
+ );
+#line 4458 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlIsNonEmptyDirectoryReparsePointAllowed(
+ ULONG ReparseTag
+ );
+#line 4468 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlIsCloudFilesPlaceholder(
+ ULONG FileAttributes,
+ ULONG ReparseTag
+ );
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlIsPartialPlaceholder(
+ ULONG FileAttributes,
+ ULONG ReparseTag
+ );
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlIsPartialPlaceholderFileHandle(
+ HANDLE FileHandle,
+ PBOOLEAN IsPartialPlaceholder
+ );
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+RtlIsPartialPlaceholderFileInfo(
+ const void *InfoBuffer,
+ FILE_INFORMATION_CLASS InfoClass,
+ PBOOLEAN IsPartialPlaceholder
+ );
+
+#line 4509 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+CHAR
+__stdcall
+RtlQueryThreadPlaceholderCompatibilityMode(
+ void
+ );
+
+__declspec(dllimport)
+CHAR
+__stdcall
+RtlSetThreadPlaceholderCompatibilityMode(
+ CHAR Mode
+ );
+
+#line 4535 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+CHAR
+__stdcall
+RtlQueryProcessPlaceholderCompatibilityMode(
+ void
+ );
+
+__declspec(dllimport)
+CHAR
+__stdcall
+RtlSetProcessPlaceholderCompatibilityMode(
+ CHAR Mode
+ );
+
+#line 4559 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+#pragma region Application or OneCore or Games Family
+
+
+
+
+__declspec(dllimport)
+
+USHORT
+__stdcall
+RtlCaptureStackBackTrace(
+ ULONG FramesToSkip,
+ ULONG FramesToCapture,
+ PVOID* BackTrace,
+ PULONG BackTraceHash
+ );
+
+#line 4578 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlCaptureContext(
+ PCONTEXT ContextRecord
+ );
+
+#line 4589 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 4591 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family or Games Family
+
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlCaptureContext2(
+ PCONTEXT ContextRecord
+ );
+
+#line 4608 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 4610 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 4612 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#pragma endregion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 4797 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtSetInformationThread (
+ HANDLE ThreadHandle,
+ THREADINFOCLASS ThreadInformationClass,
+
+#line 4808 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 4811 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ PVOID ThreadInformation,
+ ULONG ThreadInformationLength
+ );
+
+#line 4816 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 4818 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+typedef ULONG LSA_OPERATIONAL_MODE, *PLSA_OPERATIONAL_MODE;
+
+
+
+
+
+
+typedef enum _SECURITY_LOGON_TYPE {
+ UndefinedLogonType = 0,
+ Interactive = 2,
+ Network,
+ Batch,
+ Service,
+ Proxy,
+ Unlock,
+ NetworkCleartext,
+ NewCredentials,
+
+
+ RemoteInteractive,
+ CachedInteractive,
+
+#line 4850 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+ CachedRemoteInteractive,
+ CachedUnlock
+#line 4854 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+} SECURITY_LOGON_TYPE, *PSECURITY_LOGON_TYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS
+__stdcall
+LsaRegisterLogonProcess (
+ PLSA_STRING LogonProcessName,
+ PHANDLE LsaHandle,
+ PLSA_OPERATIONAL_MODE SecurityMode
+ );
+
+
+
+
+
+
+
+
+NTSTATUS
+__stdcall
+LsaLogonUser (
+ HANDLE LsaHandle,
+ PLSA_STRING OriginName,
+ SECURITY_LOGON_TYPE LogonType,
+ ULONG AuthenticationPackage,
+ PVOID AuthenticationInformation,
+ ULONG AuthenticationInformationLength,
+ PTOKEN_GROUPS LocalGroups,
+ PTOKEN_SOURCE SourceContext,
+ PVOID *ProfileBuffer,
+ PULONG ProfileBufferLength,
+ PLUID LogonId,
+ PHANDLE Token,
+ PQUOTA_LIMITS Quotas,
+ PNTSTATUS SubStatus
+ );
+
+
+
+NTSTATUS
+__stdcall
+LsaFreeReturnBuffer (
+ PVOID Buffer
+ );
+
+
+
+
+#line 5495 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _MSV1_0_LOGON_SUBMIT_TYPE {
+ MsV1_0InteractiveLogon = 2,
+ MsV1_0Lm20Logon,
+ MsV1_0NetworkLogon,
+ MsV1_0SubAuthLogon,
+ MsV1_0WorkstationUnlockLogon = 7,
+
+ MsV1_0S4ULogon = 12,
+ MsV1_0VirtualLogon = 82,
+
+ MsV1_0NoElevationLogon = 83,
+
+ MsV1_0LuidLogon = 84,
+} MSV1_0_LOGON_SUBMIT_TYPE, *PMSV1_0_LOGON_SUBMIT_TYPE;
+
+
+
+
+
+
+typedef enum _MSV1_0_PROFILE_BUFFER_TYPE {
+ MsV1_0InteractiveProfile = 2,
+ MsV1_0Lm20LogonProfile,
+ MsV1_0SmartCardProfile
+} MSV1_0_PROFILE_BUFFER_TYPE, *PMSV1_0_PROFILE_BUFFER_TYPE;
+
+
+
+
+
+
+
+
+typedef struct _MSV1_0_INTERACTIVE_LOGON {
+ MSV1_0_LOGON_SUBMIT_TYPE MessageType;
+ UNICODE_STRING LogonDomainName;
+ UNICODE_STRING UserName;
+ UNICODE_STRING Password;
+} MSV1_0_INTERACTIVE_LOGON, *PMSV1_0_INTERACTIVE_LOGON;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _MSV1_0_INTERACTIVE_PROFILE {
+ MSV1_0_PROFILE_BUFFER_TYPE MessageType;
+ USHORT LogonCount;
+ USHORT BadPasswordCount;
+ LARGE_INTEGER LogonTime;
+ LARGE_INTEGER LogoffTime;
+ LARGE_INTEGER KickOffTime;
+ LARGE_INTEGER PasswordLastSet;
+ LARGE_INTEGER PasswordCanChange;
+ LARGE_INTEGER PasswordMustChange;
+ UNICODE_STRING LogonScript;
+ UNICODE_STRING HomeDirectory;
+ UNICODE_STRING FullName;
+ UNICODE_STRING ProfilePath;
+ UNICODE_STRING HomeDirectoryDrive;
+ UNICODE_STRING LogonServer;
+ ULONG UserFlags;
+} MSV1_0_INTERACTIVE_PROFILE, *PMSV1_0_INTERACTIVE_PROFILE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 5704 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+#line 5714 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+#line 5720 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _MSV1_0_LM20_LOGON {
+ MSV1_0_LOGON_SUBMIT_TYPE MessageType;
+ UNICODE_STRING LogonDomainName;
+ UNICODE_STRING UserName;
+ UNICODE_STRING Workstation;
+ UCHAR ChallengeToClient[8];
+ STRING CaseSensitiveChallengeResponse;
+ STRING CaseInsensitiveChallengeResponse;
+ ULONG ParameterControl;
+} MSV1_0_LM20_LOGON, * PMSV1_0_LM20_LOGON;
+
+
+
+
+
+typedef struct _MSV1_0_SUBAUTH_LOGON{
+ MSV1_0_LOGON_SUBMIT_TYPE MessageType;
+ UNICODE_STRING LogonDomainName;
+ UNICODE_STRING UserName;
+ UNICODE_STRING Workstation;
+ UCHAR ChallengeToClient[8];
+ STRING AuthenticationInfo1;
+ STRING AuthenticationInfo2;
+ ULONG ParameterControl;
+ ULONG SubAuthPackageId;
+} MSV1_0_SUBAUTH_LOGON, * PMSV1_0_SUBAUTH_LOGON;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _MSV1_0_S4U_LOGON {
+ MSV1_0_LOGON_SUBMIT_TYPE MessageType;
+ ULONG Flags;
+ UNICODE_STRING UserPrincipalName;
+ UNICODE_STRING DomainName;
+} MSV1_0_S4U_LOGON, *PMSV1_0_S4U_LOGON;
+
+#line 5784 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 5812 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+#line 5819 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct _MSV1_0_LM20_LOGON_PROFILE {
+ MSV1_0_PROFILE_BUFFER_TYPE MessageType;
+ LARGE_INTEGER KickOffTime;
+ LARGE_INTEGER LogoffTime;
+ ULONG UserFlags;
+ UCHAR UserSessionKey[16];
+ UNICODE_STRING LogonDomainName;
+ UCHAR LanmanSessionKey[8];
+ UNICODE_STRING LogonServer;
+ UNICODE_STRING UserParameters;
+} MSV1_0_LM20_LOGON_PROFILE, * PMSV1_0_LM20_LOGON_PROFILE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _MSV1_0_CREDENTIAL_KEY_TYPE
+{
+ InvalidCredKey,
+ DeprecatedIUMCredKey,
+ DomainUserCredKey,
+ LocalUserCredKey,
+ ExternallySuppliedCredKey
+} MSV1_0_CREDENTIAL_KEY_TYPE;
+
+typedef struct _MSV1_0_CREDENTIAL_KEY {
+ UCHAR Data[20];
+} MSV1_0_CREDENTIAL_KEY, *PMSV1_0_CREDENTIAL_KEY;
+
+typedef struct _MSV1_0_SUPPLEMENTAL_CREDENTIAL {
+ ULONG Version;
+ ULONG Flags;
+ UCHAR LmPassword[16];
+ UCHAR NtPassword[16];
+} MSV1_0_SUPPLEMENTAL_CREDENTIAL, *PMSV1_0_SUPPLEMENTAL_CREDENTIAL;
+
+
+typedef struct _MSV1_0_SUPPLEMENTAL_CREDENTIAL_V2 {
+ ULONG Version;
+ ULONG Flags;
+ UCHAR NtPassword[16];
+ MSV1_0_CREDENTIAL_KEY CredentialKey;
+} MSV1_0_SUPPLEMENTAL_CREDENTIAL_V2, *PMSV1_0_SUPPLEMENTAL_CREDENTIAL_V2;
+
+typedef struct _MSV1_0_SUPPLEMENTAL_CREDENTIAL_V3 {
+ ULONG Version;
+ ULONG Flags;
+ MSV1_0_CREDENTIAL_KEY_TYPE CredentialKeyType;
+ UCHAR NtPassword[16];
+ MSV1_0_CREDENTIAL_KEY CredentialKey;
+ UCHAR ShaPassword[20];
+} MSV1_0_SUPPLEMENTAL_CREDENTIAL_V3, *PMSV1_0_SUPPLEMENTAL_CREDENTIAL_V3;
+
+typedef struct _MSV1_0_IUM_SUPPLEMENTAL_CREDENTIAL {
+ ULONG Version;
+ ULONG EncryptedCredsSize;
+
+
+
+
+
+ UCHAR EncryptedCreds[1];
+#line 5913 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+} MSV1_0_IUM_SUPPLEMENTAL_CREDENTIAL, *PMSV1_0_IUM_SUPPLEMENTAL_CREDENTIAL;
+
+
+
+
+
+
+#pragma pack(push,1)
+typedef struct _MSV1_0_REMOTE_SUPPLEMENTAL_CREDENTIAL {
+ ULONG Version;
+ ULONG Flags;
+ MSV1_0_CREDENTIAL_KEY CredentialKey;
+ MSV1_0_CREDENTIAL_KEY_TYPE CredentialKeyType;
+ ULONG EncryptedCredsSize;
+ UCHAR EncryptedCreds[1];
+} MSV1_0_REMOTE_SUPPLEMENTAL_CREDENTIAL, *PMSV1_0_REMOTE_SUPPLEMENTAL_CREDENTIAL;
+#pragma pack(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 5945 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 5947 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 5964 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#line 5965 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#line 5966 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+typedef struct _MSV1_0_NTLM3_RESPONSE {
+ UCHAR Response[16];
+ UCHAR RespType;
+ UCHAR HiRespType;
+ USHORT Flags;
+ ULONG MsgWord;
+ ULONGLONG TimeStamp;
+ UCHAR ChallengeFromClient[8];
+ ULONG AvPairsOff;
+ UCHAR Buffer[1];
+} MSV1_0_NTLM3_RESPONSE, *PMSV1_0_NTLM3_RESPONSE;
+
+
+
+
+#line 5987 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef enum {
+ MsvAvEOL,
+ MsvAvNbComputerName,
+ MsvAvNbDomainName,
+ MsvAvDnsComputerName,
+ MsvAvDnsDomainName,
+
+ MsvAvDnsTreeName,
+ MsvAvFlags,
+
+ MsvAvTimestamp,
+
+
+ MsvAvRestrictions,
+ MsvAvTargetName,
+ MsvAvChannelBindings,
+#line 6005 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#line 6006 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+} MSV1_0_AVID;
+
+typedef struct _MSV1_0_AV_PAIR {
+ USHORT AvId;
+ USHORT AvLen;
+
+} MSV1_0_AV_PAIR, *PMSV1_0_AV_PAIR;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _MSV1_0_PROTOCOL_MESSAGE_TYPE {
+ MsV1_0Lm20ChallengeRequest = 0,
+ MsV1_0Lm20GetChallengeResponse,
+ MsV1_0EnumerateUsers,
+ MsV1_0GetUserInfo,
+ MsV1_0ReLogonUsers,
+ MsV1_0ChangePassword,
+ MsV1_0ChangeCachedPassword,
+ MsV1_0GenericPassthrough,
+ MsV1_0CacheLogon,
+ MsV1_0SubAuth,
+ MsV1_0DeriveCredential,
+ MsV1_0CacheLookup,
+
+ MsV1_0SetProcessOption,
+#line 6044 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+ MsV1_0ConfigLocalAliases,
+ MsV1_0ClearCachedCredentials,
+#line 6048 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+ MsV1_0LookupToken,
+#line 6051 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+ MsV1_0ValidateAuth,
+ MsV1_0CacheLookupEx,
+ MsV1_0GetCredentialKey,
+ MsV1_0SetThreadOption,
+#line 6057 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+ MsV1_0DecryptDpapiMasterKey,
+ MsV1_0GetStrongCredentialKey,
+#line 6061 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+ MsV1_0TransferCred,
+ MsV1_0ProvisionTbal,
+ MsV1_0DeleteTbalSecrets,
+#line 6066 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+} MSV1_0_PROTOCOL_MESSAGE_TYPE, *PMSV1_0_PROTOCOL_MESSAGE_TYPE;
+
+
+
+
+
+
+
+typedef struct _MSV1_0_LM20_CHALLENGE_REQUEST {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+} MSV1_0_LM20_CHALLENGE_REQUEST, *PMSV1_0_LM20_CHALLENGE_REQUEST;
+
+typedef struct _MSV1_0_LM20_CHALLENGE_RESPONSE {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+ UCHAR ChallengeToClient[8];
+} MSV1_0_LM20_CHALLENGE_RESPONSE, *PMSV1_0_LM20_CHALLENGE_RESPONSE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _MSV1_0_GETCHALLENRESP_REQUEST_V1 {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+ ULONG ParameterControl;
+ LUID LogonId;
+ UNICODE_STRING Password;
+ UCHAR ChallengeToClient[8];
+} MSV1_0_GETCHALLENRESP_REQUEST_V1, *PMSV1_0_GETCHALLENRESP_REQUEST_V1;
+
+typedef struct _MSV1_0_GETCHALLENRESP_REQUEST {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+ ULONG ParameterControl;
+ LUID LogonId;
+ UNICODE_STRING Password;
+ UCHAR ChallengeToClient[8];
+
+
+
+
+
+ UNICODE_STRING UserName;
+ UNICODE_STRING LogonDomainName;
+ UNICODE_STRING ServerName;
+} MSV1_0_GETCHALLENRESP_REQUEST, *PMSV1_0_GETCHALLENRESP_REQUEST;
+
+typedef struct _MSV1_0_GETCHALLENRESP_RESPONSE {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+ STRING CaseSensitiveChallengeResponse;
+ STRING CaseInsensitiveChallengeResponse;
+ UNICODE_STRING UserName;
+ UNICODE_STRING LogonDomainName;
+ UCHAR UserSessionKey[16];
+ UCHAR LanmanSessionKey[8];
+} MSV1_0_GETCHALLENRESP_RESPONSE, *PMSV1_0_GETCHALLENRESP_RESPONSE;
+
+
+
+
+
+typedef struct _MSV1_0_ENUMUSERS_REQUEST {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+} MSV1_0_ENUMUSERS_REQUEST, *PMSV1_0_ENUMUSERS_REQUEST;
+
+typedef struct _MSV1_0_ENUMUSERS_RESPONSE {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+ ULONG NumberOfLoggedOnUsers;
+ PLUID LogonIds;
+ PULONG EnumHandles;
+} MSV1_0_ENUMUSERS_RESPONSE, *PMSV1_0_ENUMUSERS_RESPONSE;
+
+
+
+
+
+typedef struct _MSV1_0_GETUSERINFO_REQUEST {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+ LUID LogonId;
+} MSV1_0_GETUSERINFO_REQUEST, *PMSV1_0_GETUSERINFO_REQUEST;
+
+typedef struct _MSV1_0_GETUSERINFO_RESPONSE {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+ PSID UserSid;
+ UNICODE_STRING UserName;
+ UNICODE_STRING LogonDomainName;
+ UNICODE_STRING LogonServer;
+ SECURITY_LOGON_TYPE LogonType;
+} MSV1_0_GETUSERINFO_RESPONSE, *PMSV1_0_GETUSERINFO_RESPONSE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 6200 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_ID_128 {
+ UCHAR Identifier[16];
+} FILE_ID_128, *PFILE_ID_128;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_NOTIFY_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG Action;
+ ULONG FileNameLength;
+ WCHAR FileName[1];
+} FILE_NOTIFY_INFORMATION, *PFILE_NOTIFY_INFORMATION;
+
+
+typedef struct _FILE_NOTIFY_EXTENDED_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG Action;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastModificationTime;
+ LARGE_INTEGER LastChangeTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER AllocatedLength;
+ LARGE_INTEGER FileSize;
+ ULONG FileAttributes;
+ union {
+ ULONG ReparsePointTag;
+ ULONG EaSize;
+ } ;
+ LARGE_INTEGER FileId;
+ LARGE_INTEGER ParentFileId;
+ ULONG FileNameLength;
+ WCHAR FileName[1];
+} FILE_NOTIFY_EXTENDED_INFORMATION, *PFILE_NOTIFY_EXTENDED_INFORMATION;
+#line 6456 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+typedef struct _FILE_NOTIFY_FULL_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG Action;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastModificationTime;
+ LARGE_INTEGER LastChangeTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER AllocatedLength;
+ LARGE_INTEGER FileSize;
+ ULONG FileAttributes;
+ union {
+ ULONG ReparsePointTag;
+ ULONG EaSize;
+ } ;
+ LARGE_INTEGER FileId;
+ LARGE_INTEGER ParentFileId;
+ USHORT FileNameLength;
+ UCHAR FileNameFlags;
+ UCHAR Reserved;
+ WCHAR FileName[1];
+} FILE_NOTIFY_FULL_INFORMATION, *PFILE_NOTIFY_FULL_INFORMATION;
+#line 6486 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_INFORMATION_DEFINITION {
+ FILE_INFORMATION_CLASS Class;
+ ULONG NextEntryOffset;
+ ULONG FileNameOffset;
+ ULONG FileNameLengthOffset;
+} FILE_INFORMATION_DEFINITION, *PFILE_INFORMATION_DEFINITION;
+
+
+typedef struct _FILE_DIRECTORY_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG FileIndex;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER EndOfFile;
+ LARGE_INTEGER AllocationSize;
+ ULONG FileAttributes;
+ ULONG FileNameLength;
+ WCHAR FileName[1];
+} FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
+
+
+
+
+
+
+
+
+typedef struct _FILE_FULL_DIR_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG FileIndex;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER EndOfFile;
+ LARGE_INTEGER AllocationSize;
+ ULONG FileAttributes;
+ ULONG FileNameLength;
+ ULONG EaSize;
+ WCHAR FileName[1];
+} FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION;
+
+
+
+
+
+
+
+
+typedef struct _FILE_ID_FULL_DIR_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG FileIndex;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER EndOfFile;
+ LARGE_INTEGER AllocationSize;
+ ULONG FileAttributes;
+ ULONG FileNameLength;
+ ULONG EaSize;
+ LARGE_INTEGER FileId;
+ WCHAR FileName[1];
+} FILE_ID_FULL_DIR_INFORMATION, *PFILE_ID_FULL_DIR_INFORMATION;
+
+
+
+
+
+
+
+
+typedef struct _FILE_BOTH_DIR_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG FileIndex;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER EndOfFile;
+ LARGE_INTEGER AllocationSize;
+ ULONG FileAttributes;
+ ULONG FileNameLength;
+ ULONG EaSize;
+ CCHAR ShortNameLength;
+ WCHAR ShortName[12];
+ WCHAR FileName[1];
+} FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
+
+
+
+
+
+
+
+
+typedef struct _FILE_ID_BOTH_DIR_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG FileIndex;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER EndOfFile;
+ LARGE_INTEGER AllocationSize;
+ ULONG FileAttributes;
+ ULONG FileNameLength;
+ ULONG EaSize;
+ CCHAR ShortNameLength;
+ WCHAR ShortName[12];
+ LARGE_INTEGER FileId;
+ WCHAR FileName[1];
+} FILE_ID_BOTH_DIR_INFORMATION, *PFILE_ID_BOTH_DIR_INFORMATION;
+
+
+
+
+
+
+
+
+typedef struct _FILE_NAMES_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG FileIndex;
+ ULONG FileNameLength;
+ WCHAR FileName[1];
+} FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION;
+
+
+
+
+
+
+
+
+typedef struct _FILE_ID_GLOBAL_TX_DIR_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG FileIndex;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER EndOfFile;
+ LARGE_INTEGER AllocationSize;
+ ULONG FileAttributes;
+ ULONG FileNameLength;
+ LARGE_INTEGER FileId;
+ GUID LockingTransactionId;
+ ULONG TxInfoFlags;
+ WCHAR FileName[1];
+} FILE_ID_GLOBAL_TX_DIR_INFORMATION, *PFILE_ID_GLOBAL_TX_DIR_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_ID_EXTD_DIR_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG FileIndex;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER EndOfFile;
+ LARGE_INTEGER AllocationSize;
+ ULONG FileAttributes;
+ ULONG FileNameLength;
+ ULONG EaSize;
+ ULONG ReparsePointTag;
+ FILE_ID_128 FileId;
+ WCHAR FileName[1];
+} FILE_ID_EXTD_DIR_INFORMATION, *PFILE_ID_EXTD_DIR_INFORMATION;
+
+
+
+
+
+
+
+
+typedef struct _FILE_ID_EXTD_BOTH_DIR_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG FileIndex;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER EndOfFile;
+ LARGE_INTEGER AllocationSize;
+ ULONG FileAttributes;
+ ULONG FileNameLength;
+ ULONG EaSize;
+ ULONG ReparsePointTag;
+ FILE_ID_128 FileId;
+ CCHAR ShortNameLength;
+ WCHAR ShortName[12];
+ WCHAR FileName[1];
+} FILE_ID_EXTD_BOTH_DIR_INFORMATION, *PFILE_ID_EXTD_BOTH_DIR_INFORMATION;
+
+
+
+
+
+
+
+
+typedef struct _FILE_ID_64_EXTD_DIR_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG FileIndex;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER EndOfFile;
+ LARGE_INTEGER AllocationSize;
+ ULONG FileAttributes;
+ ULONG FileNameLength;
+ ULONG EaSize;
+ ULONG ReparsePointTag;
+ LARGE_INTEGER FileId;
+ WCHAR FileName[1];
+} FILE_ID_64_EXTD_DIR_INFORMATION, *PFILE_ID_64_EXTD_DIR_INFORMATION;
+
+
+
+
+
+
+
+
+typedef struct _FILE_ID_64_EXTD_BOTH_DIR_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG FileIndex;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER EndOfFile;
+ LARGE_INTEGER AllocationSize;
+ ULONG FileAttributes;
+ ULONG FileNameLength;
+ ULONG EaSize;
+ ULONG ReparsePointTag;
+ LARGE_INTEGER FileId;
+ CCHAR ShortNameLength;
+ WCHAR ShortName[12];
+ WCHAR FileName[1];
+} FILE_ID_64_EXTD_BOTH_DIR_INFORMATION, *PFILE_ID_64_EXTD_BOTH_DIR_INFORMATION;
+
+
+
+
+
+
+
+
+typedef struct _FILE_ID_ALL_EXTD_DIR_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG FileIndex;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER EndOfFile;
+ LARGE_INTEGER AllocationSize;
+ ULONG FileAttributes;
+ ULONG FileNameLength;
+ ULONG EaSize;
+ ULONG ReparsePointTag;
+ LARGE_INTEGER FileId;
+ FILE_ID_128 FileId128;
+ WCHAR FileName[1];
+} FILE_ID_ALL_EXTD_DIR_INFORMATION, *PFILE_ID_ALL_EXTD_DIR_INFORMATION;
+
+
+
+
+
+
+
+
+typedef struct _FILE_ID_ALL_EXTD_BOTH_DIR_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG FileIndex;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER EndOfFile;
+ LARGE_INTEGER AllocationSize;
+ ULONG FileAttributes;
+ ULONG FileNameLength;
+ ULONG EaSize;
+ ULONG ReparsePointTag;
+ LARGE_INTEGER FileId;
+ FILE_ID_128 FileId128;
+ CCHAR ShortNameLength;
+ WCHAR ShortName[12];
+ WCHAR FileName[1];
+} FILE_ID_ALL_EXTD_BOTH_DIR_INFORMATION, *PFILE_ID_ALL_EXTD_BOTH_DIR_INFORMATION;
+
+
+
+
+
+
+
+
+typedef struct _FILE_OBJECTID_INFORMATION {
+ LONGLONG FileReference;
+ UCHAR ObjectId[16];
+ union {
+ struct {
+ UCHAR BirthVolumeId[16];
+ UCHAR BirthObjectId[16];
+ UCHAR DomainId[16];
+ } ;
+ UCHAR ExtendedInfo[48];
+ } ;
+} FILE_OBJECTID_INFORMATION, *PFILE_OBJECTID_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_INTERNAL_INFORMATION {
+ LARGE_INTEGER IndexNumber;
+} FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
+
+
+
+typedef struct _FILE_ID_INFORMATION {
+ ULONGLONG VolumeSerialNumber;
+ FILE_ID_128 FileId;
+} FILE_ID_INFORMATION, *PFILE_ID_INFORMATION;
+
+
+
+typedef struct _FILE_EA_INFORMATION {
+ ULONG EaSize;
+} FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
+
+
+
+typedef struct _FILE_ACCESS_INFORMATION {
+ ACCESS_MASK AccessFlags;
+} FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION;
+
+
+
+
+typedef struct _FILE_MODE_INFORMATION {
+ ULONG Mode;
+} FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 6935 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+typedef struct _FILE_ALL_INFORMATION {
+ FILE_BASIC_INFORMATION BasicInformation;
+ FILE_STANDARD_INFORMATION StandardInformation;
+ FILE_INTERNAL_INFORMATION InternalInformation;
+ FILE_EA_INFORMATION EaInformation;
+ FILE_ACCESS_INFORMATION AccessInformation;
+ FILE_POSITION_INFORMATION PositionInformation;
+ FILE_MODE_INFORMATION ModeInformation;
+ FILE_ALIGNMENT_INFORMATION AlignmentInformation;
+ FILE_NAME_INFORMATION NameInformation;
+} FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_STAT_INFORMATION {
+ LARGE_INTEGER FileId;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER AllocationSize;
+ LARGE_INTEGER EndOfFile;
+ ULONG FileAttributes;
+ ULONG ReparseTag;
+ ULONG NumberOfLinks;
+ ACCESS_MASK EffectiveAccess;
+} FILE_STAT_INFORMATION, *PFILE_STAT_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_STAT_LX_INFORMATION {
+ LARGE_INTEGER FileId;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER AllocationSize;
+ LARGE_INTEGER EndOfFile;
+ ULONG FileAttributes;
+ ULONG ReparseTag;
+ ULONG NumberOfLinks;
+ ACCESS_MASK EffectiveAccess;
+ ULONG LxFlags;
+ ULONG LxUid;
+ ULONG LxGid;
+ ULONG LxMode;
+ ULONG LxDeviceIdMajor;
+ ULONG LxDeviceIdMinor;
+} FILE_STAT_LX_INFORMATION, *PFILE_STAT_LX_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_STAT_BASIC_INFORMATION {
+ LARGE_INTEGER FileId;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER AllocationSize;
+ LARGE_INTEGER EndOfFile;
+ ULONG FileAttributes;
+ ULONG ReparseTag;
+ ULONG NumberOfLinks;
+ ULONG DeviceType;
+ ULONG DeviceCharacteristics;
+ ULONG Reserved;
+ LARGE_INTEGER VolumeSerialNumber;
+ FILE_ID_128 FileId128;
+} FILE_STAT_BASIC_INFORMATION, *PFILE_STAT_BASIC_INFORMATION;
+
+#line 7057 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_CASE_SENSITIVE_INFORMATION {
+ ULONG Flags;
+} FILE_CASE_SENSITIVE_INFORMATION, *PFILE_CASE_SENSITIVE_INFORMATION;
+
+
+
+
+
+
+
+
+
+typedef enum _FILE_KNOWN_FOLDER_TYPE {
+ KnownFolderNone = 0,
+ KnownFolderDesktop,
+ KnownFolderDocuments,
+ KnownFolderDownloads,
+ KnownFolderMusic,
+ KnownFolderPictures,
+ KnownFolderVideos,
+ KnownFolderOther,
+ KnownFolderMax = 7
+} FILE_KNOWN_FOLDER_TYPE;
+
+typedef struct _FILE_KNOWN_FOLDER_INFORMATION {
+ FILE_KNOWN_FOLDER_TYPE Type;
+} FILE_KNOWN_FOLDER_INFORMATION, *PFILE_KNOWN_FOLDER_INFORMATION;
+
+
+
+typedef struct _FILE_ALLOCATION_INFORMATION {
+ LARGE_INTEGER AllocationSize;
+} FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
+
+
+
+typedef struct _FILE_COMPRESSION_INFORMATION {
+ LARGE_INTEGER CompressedFileSize;
+ USHORT CompressionFormat;
+ UCHAR CompressionUnitShift;
+ UCHAR ChunkShift;
+ UCHAR ClusterShift;
+ UCHAR Reserved[3];
+} FILE_COMPRESSION_INFORMATION, *PFILE_COMPRESSION_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7133 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+#line 7143 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+#line 7149 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef struct _FILE_LINK_INFORMATION {
+
+ union {
+ BOOLEAN ReplaceIfExists;
+ ULONG Flags;
+ } ;
+
+
+#line 7159 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ HANDLE RootDirectory;
+ ULONG FileNameLength;
+ WCHAR FileName[1];
+} FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION;
+
+
+
+
+
+
+
+
+typedef struct _FILE_MOVE_CLUSTER_INFORMATION {
+ ULONG ClusterCount;
+ HANDLE RootDirectory;
+ ULONG FileNameLength;
+ WCHAR FileName[1];
+} FILE_MOVE_CLUSTER_INFORMATION, *PFILE_MOVE_CLUSTER_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+#line 7189 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 7193 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+#line 7201 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+#line 7207 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef struct _FILE_RENAME_INFORMATION {
+
+ union {
+ BOOLEAN ReplaceIfExists;
+ ULONG Flags;
+ } ;
+
+
+#line 7217 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ HANDLE RootDirectory;
+ ULONG FileNameLength;
+ WCHAR FileName[1];
+} FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
+
+
+
+
+
+
+
+typedef struct _FILE_STREAM_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG StreamNameLength;
+ LARGE_INTEGER StreamSize;
+ LARGE_INTEGER StreamAllocationSize;
+ WCHAR StreamName[1];
+} FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
+
+
+
+typedef struct _FILE_TRACKING_INFORMATION {
+ HANDLE DestinationFile;
+ ULONG ObjectInformationLength;
+ CHAR ObjectInformation[1];
+} FILE_TRACKING_INFORMATION, *PFILE_TRACKING_INFORMATION;
+
+
+
+typedef struct _FILE_COMPLETION_INFORMATION {
+ HANDLE Port;
+ PVOID Key;
+} FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION;
+
+
+
+typedef struct _FILE_PIPE_INFORMATION {
+ ULONG ReadMode;
+ ULONG CompletionMode;
+} FILE_PIPE_INFORMATION, *PFILE_PIPE_INFORMATION;
+
+
+
+typedef struct _FILE_PIPE_LOCAL_INFORMATION {
+ ULONG NamedPipeType;
+ ULONG NamedPipeConfiguration;
+ ULONG MaximumInstances;
+ ULONG CurrentInstances;
+ ULONG InboundQuota;
+ ULONG ReadDataAvailable;
+ ULONG OutboundQuota;
+ ULONG WriteQuotaAvailable;
+ ULONG NamedPipeState;
+ ULONG NamedPipeEnd;
+} FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION;
+
+
+
+typedef struct _FILE_PIPE_REMOTE_INFORMATION {
+ LARGE_INTEGER CollectDataTime;
+ ULONG MaximumCollectionCount;
+} FILE_PIPE_REMOTE_INFORMATION, *PFILE_PIPE_REMOTE_INFORMATION;
+
+
+
+typedef struct _FILE_MAILSLOT_QUERY_INFORMATION {
+ ULONG MaximumMessageSize;
+ ULONG MailslotQuota;
+ ULONG NextMessageSize;
+ ULONG MessagesAvailable;
+ LARGE_INTEGER ReadTimeout;
+} FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION;
+
+
+
+typedef struct _FILE_MAILSLOT_SET_INFORMATION {
+ PLARGE_INTEGER ReadTimeout;
+} FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;
+
+
+
+typedef struct _FILE_REPARSE_POINT_INFORMATION {
+ LONGLONG FileReference;
+ ULONG Tag;
+} FILE_REPARSE_POINT_INFORMATION, *PFILE_REPARSE_POINT_INFORMATION;
+
+
+
+typedef struct _FILE_LINK_ENTRY_INFORMATION {
+ ULONG NextEntryOffset;
+ LONGLONG ParentFileId;
+ ULONG FileNameLength;
+ WCHAR FileName[1];
+} FILE_LINK_ENTRY_INFORMATION, *PFILE_LINK_ENTRY_INFORMATION;
+
+typedef struct _FILE_LINKS_INFORMATION {
+ ULONG BytesNeeded;
+ ULONG EntriesReturned;
+ FILE_LINK_ENTRY_INFORMATION Entry;
+} FILE_LINKS_INFORMATION, *PFILE_LINKS_INFORMATION;
+
+
+
+typedef struct _FILE_LINK_ENTRY_FULL_ID_INFORMATION {
+ ULONG NextEntryOffset;
+ FILE_ID_128 ParentFileId;
+ ULONG FileNameLength;
+ WCHAR FileName[1];
+} FILE_LINK_ENTRY_FULL_ID_INFORMATION, *PFILE_LINK_ENTRY_FULL_ID_INFORMATION;
+
+typedef struct _FILE_LINKS_FULL_ID_INFORMATION {
+ ULONG BytesNeeded;
+ ULONG EntriesReturned;
+ FILE_LINK_ENTRY_FULL_ID_INFORMATION Entry;
+} FILE_LINKS_FULL_ID_INFORMATION, *PFILE_LINKS_FULL_ID_INFORMATION;
+
+
+
+typedef struct _FILE_NETWORK_PHYSICAL_NAME_INFORMATION {
+ ULONG FileNameLength;
+ WCHAR FileName[1];
+} FILE_NETWORK_PHYSICAL_NAME_INFORMATION, *PFILE_NETWORK_PHYSICAL_NAME_INFORMATION;
+
+
+
+typedef struct _FILE_STANDARD_LINK_INFORMATION {
+ ULONG NumberOfAccessibleLinks;
+ ULONG TotalNumberOfLinks;
+ BOOLEAN DeletePending;
+ BOOLEAN Directory;
+} FILE_STANDARD_LINK_INFORMATION, *PFILE_STANDARD_LINK_INFORMATION;
+
+
+
+typedef struct _FILE_STREAM_RESERVATION_INFORMATION {
+ LONGLONG TrackedReservation;
+ LONGLONG EnforcedReservation;
+} FILE_STREAM_RESERVATION_INFORMATION, *PFILE_STREAM_RESERVATION_INFORMATION;
+
+
+
+typedef struct _MUP_PROVIDER_INFORMATION {
+ ULONG Level;
+ PVOID Buffer;
+ PULONG BufferSize;
+} MUP_PROVIDER_INFORMATION, *PMUP_PROVIDER_INFORMATION;
+
+
+
+
+
+
+
+
+typedef struct _FILE_GET_EA_INFORMATION {
+ ULONG NextEntryOffset;
+ UCHAR EaNameLength;
+ CHAR EaName[1];
+} FILE_GET_EA_INFORMATION, *PFILE_GET_EA_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7398 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7412 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 7416 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+#line 7421 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7440 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7457 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+typedef struct _FILE_REMOTE_PROTOCOL_INFORMATION
+{
+
+ USHORT StructureVersion;
+ USHORT StructureSize;
+
+ ULONG Protocol;
+
+
+ USHORT ProtocolMajorVersion;
+ USHORT ProtocolMinorVersion;
+ USHORT ProtocolRevision;
+
+ USHORT Reserved;
+
+
+ ULONG Flags;
+
+ struct {
+ ULONG Reserved[8];
+ } GenericReserved;
+
+
+
+
+
+
+
+#line 7491 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+ union {
+
+ struct {
+
+ struct {
+ ULONG Capabilities;
+ } Server;
+
+ struct {
+ ULONG Capabilities;
+
+ ULONG ShareFlags;
+
+
+#line 7508 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+ UCHAR ShareType;
+ UCHAR Reserved0[3];
+ ULONG Reserved1;
+#line 7513 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ } Share;
+
+ } Smb2;
+
+ ULONG Reserved[16];
+
+ } ProtocolSpecific;
+
+#line 7522 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+} FILE_REMOTE_PROTOCOL_INFORMATION, *PFILE_REMOTE_PROTOCOL_INFORMATION;
+
+
+
+
+
+typedef struct _FILE_GET_QUOTA_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG SidLength;
+ SID Sid;
+} FILE_GET_QUOTA_INFORMATION, *PFILE_GET_QUOTA_INFORMATION;
+
+typedef struct _FILE_QUOTA_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG SidLength;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER QuotaUsed;
+ LARGE_INTEGER QuotaThreshold;
+ LARGE_INTEGER QuotaLimit;
+ SID Sid;
+} FILE_QUOTA_INFORMATION, *PFILE_QUOTA_INFORMATION;
+
+
+
+
+
+typedef struct _FILE_VOLUME_NAME_INFORMATION {
+ ULONG DeviceNameLength;
+ WCHAR DeviceName[1];
+} FILE_VOLUME_NAME_INFORMATION, *PFILE_VOLUME_NAME_INFORMATION;
+
+
+typedef struct _FILE_FS_ATTRIBUTE_INFORMATION {
+ ULONG FileSystemAttributes;
+ LONG MaximumComponentNameLength;
+ ULONG FileSystemNameLength;
+ WCHAR FileSystemName[1];
+} FILE_FS_ATTRIBUTE_INFORMATION, *PFILE_FS_ATTRIBUTE_INFORMATION;
+
+typedef struct _FILE_FS_DRIVER_PATH_INFORMATION {
+ BOOLEAN DriverInPath;
+ ULONG DriverNameLength;
+ WCHAR DriverName[1];
+} FILE_FS_DRIVER_PATH_INFORMATION, *PFILE_FS_DRIVER_PATH_INFORMATION;
+
+typedef struct _FILE_FS_VOLUME_FLAGS_INFORMATION {
+ ULONG Flags;
+} FILE_FS_VOLUME_FLAGS_INFORMATION, *PFILE_FS_VOLUME_FLAGS_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_FS_CONTROL_INFORMATION {
+ LARGE_INTEGER FreeSpaceStartFiltering;
+ LARGE_INTEGER FreeSpaceThreshold;
+ LARGE_INTEGER FreeSpaceStopFiltering;
+ LARGE_INTEGER DefaultQuotaThreshold;
+ LARGE_INTEGER DefaultQuotaLimit;
+ ULONG FileSystemControlFlags;
+} FILE_FS_CONTROL_INFORMATION, *PFILE_FS_CONTROL_INFORMATION;
+
+typedef struct _FILE_FS_DATA_COPY_INFORMATION {
+ ULONG NumberOfCopies;
+} FILE_FS_DATA_COPY_INFORMATION, *PFILE_FS_DATA_COPY_INFORMATION;
+
+
+
+typedef struct _FILE_FS_GUID_INFORMATION {
+ GUID FsGuid;
+} FILE_FS_GUID_INFORMATION, *PFILE_FS_GUID_INFORMATION;
+
+#line 7613 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_END_OF_FILE_INFORMATION_EX {
+ LARGE_INTEGER EndOfFile;
+ LARGE_INTEGER PagingFileSizeInMM;
+ LARGE_INTEGER PagingFileMaxSize;
+ ULONG Flags;
+} FILE_END_OF_FILE_INFORMATION_EX, *PFILE_END_OF_FILE_INFORMATION_EX;
+#line 7631 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtCreateFile (
+ PHANDLE FileHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PLARGE_INTEGER AllocationSize,
+ ULONG FileAttributes,
+ ULONG ShareAccess,
+ ULONG CreateDisposition,
+ ULONG CreateOptions,
+ PVOID EaBuffer,
+ ULONG EaLength
+ );
+#line 7651 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtDeviceIoControlFile (
+ HANDLE FileHandle,
+ HANDLE Event,
+ PIO_APC_ROUTINE ApcRoutine,
+ PVOID ApcContext,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ ULONG IoControlCode,
+ PVOID InputBuffer,
+ ULONG InputBufferLength,
+ PVOID OutputBuffer,
+ ULONG OutputBufferLength
+ );
+#line 7672 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtFsControlFile (
+ HANDLE FileHandle,
+ HANDLE Event,
+ PIO_APC_ROUTINE ApcRoutine,
+ PVOID ApcContext,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ ULONG FsControlCode,
+ PVOID InputBuffer,
+ ULONG InputBufferLength,
+ PVOID OutputBuffer,
+ ULONG OutputBufferLength
+ );
+#line 7693 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtLockFile (
+ HANDLE FileHandle,
+ HANDLE Event,
+ PIO_APC_ROUTINE ApcRoutine,
+ PVOID ApcContext,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PLARGE_INTEGER ByteOffset,
+ PLARGE_INTEGER Length,
+ ULONG Key,
+ BOOLEAN FailImmediately,
+ BOOLEAN ExclusiveLock
+ );
+#line 7711 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtOpenFile (
+ PHANDLE FileHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ ULONG ShareAccess,
+ ULONG OpenOptions
+ );
+#line 7726 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtQueryDirectoryFile (
+ HANDLE FileHandle,
+ HANDLE Event,
+ PIO_APC_ROUTINE ApcRoutine,
+ PVOID ApcContext,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID FileInformation,
+ ULONG Length,
+ FILE_INFORMATION_CLASS FileInformationClass,
+ BOOLEAN ReturnSingleEntry,
+ PUNICODE_STRING FileName,
+ BOOLEAN RestartScan
+ );
+#line 7745 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtQueryDirectoryFileEx (
+ HANDLE FileHandle,
+ HANDLE Event,
+ PIO_APC_ROUTINE ApcRoutine,
+ PVOID ApcContext,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID FileInformation,
+ ULONG Length,
+ FILE_INFORMATION_CLASS FileInformationClass,
+ ULONG QueryFlags,
+ PUNICODE_STRING FileName
+ );
+#line 7763 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtQueryInformationByName (
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID FileInformation,
+ ULONG Length,
+ FILE_INFORMATION_CLASS FileInformationClass
+ );
+#line 7776 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtQueryInformationFile (
+ HANDLE FileHandle,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID FileInformation,
+ ULONG Length,
+ FILE_INFORMATION_CLASS FileInformationClass
+ );
+#line 7792 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtQueryQuotaInformationFile (
+ HANDLE FileHandle,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID Buffer,
+ ULONG Length,
+ BOOLEAN ReturnSingleEntry,
+ PVOID SidList,
+ ULONG SidListLength,
+
+ PSID StartSid,
+ BOOLEAN RestartScan
+ );
+#line 7812 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtQueryVolumeInformationFile (
+ HANDLE FileHandle,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID FsInformation,
+ ULONG Length,
+ FS_INFORMATION_CLASS FsInformationClass
+ );
+#line 7825 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtReadFile (
+ HANDLE FileHandle,
+ HANDLE Event,
+ PIO_APC_ROUTINE ApcRoutine,
+ PVOID ApcContext,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID Buffer,
+ ULONG Length,
+ PLARGE_INTEGER ByteOffset,
+ PULONG Key
+ );
+#line 7843 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtSetInformationFile (
+ HANDLE FileHandle,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID FileInformation,
+ ULONG Length,
+ FILE_INFORMATION_CLASS FileInformationClass
+ );
+#line 7859 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtSetQuotaInformationFile (
+ HANDLE FileHandle,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID Buffer,
+ ULONG Length
+ );
+#line 7873 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtSetVolumeInformationFile (
+ HANDLE FileHandle,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID FsInformation,
+ ULONG Length,
+ FS_INFORMATION_CLASS FsInformationClass
+ );
+#line 7886 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtWriteFile (
+ HANDLE FileHandle,
+ HANDLE Event,
+ PIO_APC_ROUTINE ApcRoutine,
+ PVOID ApcContext,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID Buffer,
+ ULONG Length,
+ PLARGE_INTEGER ByteOffset,
+ PULONG Key
+ );
+#line 7904 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtUnlockFile (
+ HANDLE FileHandle,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PLARGE_INTEGER ByteOffset,
+ PLARGE_INTEGER Length,
+ ULONG Key
+ );
+#line 7917 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7962 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7975 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7988 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtFlushBuffersFileEx (
+ HANDLE FileHandle,
+ ULONG Flags,
+ PVOID Parameters,
+ ULONG ParametersSize,
+ PIO_STATUS_BLOCK IoStatusBlock
+ );
+
+#line 8005 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8083 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8126 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8173 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 8177 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+#line 8182 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 8186 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+#line 8192 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 8196 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8218 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+#line 8224 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 8228 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 8240 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8258 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+#line 8264 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+#line 8269 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+#line 8279 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+#line 8282 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+#line 8285 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 8289 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 8293 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 8297 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 8301 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+#line 8310 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+#line 8313 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+#line 8319 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+#line 8325 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+#line 8330 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+#line 8335 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 8339 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 8343 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 8347 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+#line 8358 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+#line 8363 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+#line 8369 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+#line 8377 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 8381 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 8385 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+#line 8390 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 8394 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+#line 8401 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#line 8402 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+#line 8405 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+#line 8408 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 8412 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+#line 8415 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 8419 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 8423 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 8427 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+#line 8436 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+#line 8439 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 8443 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+#line 8446 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 8450 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 8454 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+#line 8457 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+#line 8460 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _PATHNAME_BUFFER {
+
+ ULONG PathNameLength;
+ WCHAR Name[1];
+
+} PATHNAME_BUFFER, *PPATHNAME_BUFFER;
+
+
+
+
+
+
+
+typedef struct _FSCTL_QUERY_FAT_BPB_BUFFER {
+
+ UCHAR First0x24BytesOfBootSector[0x24];
+
+} FSCTL_QUERY_FAT_BPB_BUFFER, *PFSCTL_QUERY_FAT_BPB_BUFFER;
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct {
+
+ LARGE_INTEGER VolumeSerialNumber;
+ LARGE_INTEGER NumberSectors;
+ LARGE_INTEGER TotalClusters;
+ LARGE_INTEGER FreeClusters;
+ LARGE_INTEGER TotalReserved;
+ ULONG BytesPerSector;
+ ULONG BytesPerCluster;
+ ULONG BytesPerFileRecordSegment;
+ ULONG ClustersPerFileRecordSegment;
+ LARGE_INTEGER MftValidDataLength;
+ LARGE_INTEGER MftStartLcn;
+ LARGE_INTEGER Mft2StartLcn;
+ LARGE_INTEGER MftZoneStart;
+ LARGE_INTEGER MftZoneEnd;
+
+} NTFS_VOLUME_DATA_BUFFER, *PNTFS_VOLUME_DATA_BUFFER;
+
+typedef struct {
+
+ ULONG ByteCount;
+
+ USHORT MajorVersion;
+ USHORT MinorVersion;
+
+ ULONG BytesPerPhysicalSector;
+
+ USHORT LfsMajorVersion;
+ USHORT LfsMinorVersion;
+
+
+ ULONG MaxDeviceTrimExtentCount;
+ ULONG MaxDeviceTrimByteCount;
+
+ ULONG MaxVolumeTrimExtentCount;
+ ULONG MaxVolumeTrimByteCount;
+#line 8540 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+} NTFS_EXTENDED_VOLUME_DATA, *PNTFS_EXTENDED_VOLUME_DATA;
+#line 8543 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct {
+
+ ULONG ByteCount;
+ ULONG MajorVersion;
+ ULONG MinorVersion;
+
+ ULONG BytesPerPhysicalSector;
+
+ LARGE_INTEGER VolumeSerialNumber;
+ LARGE_INTEGER NumberSectors;
+ LARGE_INTEGER TotalClusters;
+ LARGE_INTEGER FreeClusters;
+ LARGE_INTEGER TotalReserved;
+ ULONG BytesPerSector;
+ ULONG BytesPerCluster;
+ LARGE_INTEGER MaximumSizeOfResidentFile;
+
+ USHORT FastTierDataFillRatio;
+ USHORT SlowTierDataFillRatio;
+
+ ULONG DestagesFastTierToSlowTierRate;
+
+ USHORT MetadataChecksumType;
+
+ UCHAR Reserved0[6];
+
+ ULONG DriverMajorVersion;
+ ULONG DriverMinorVersion;
+
+ LARGE_INTEGER Reserved[7];
+
+} REFS_VOLUME_DATA_BUFFER, *PREFS_VOLUME_DATA_BUFFER;
+
+
+
+
+#line 8590 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+typedef struct {
+
+ LARGE_INTEGER StartingLcn;
+
+} STARTING_LCN_INPUT_BUFFER, *PSTARTING_LCN_INPUT_BUFFER;
+
+
+
+
+
+typedef struct {
+
+ LARGE_INTEGER StartingLcn;
+ ULONG Flags;
+
+} STARTING_LCN_INPUT_BUFFER_EX, *PSTARTING_LCN_INPUT_BUFFER_EX;
+
+#line 8617 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef struct {
+
+ LARGE_INTEGER StartingLcn;
+ LARGE_INTEGER BitmapSize;
+ UCHAR Buffer[1];
+
+} VOLUME_BITMAP_BUFFER, *PVOLUME_BITMAP_BUFFER;
+#line 8626 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+typedef struct {
+
+ LARGE_INTEGER StartingVcn;
+
+} STARTING_VCN_INPUT_BUFFER, *PSTARTING_VCN_INPUT_BUFFER;
+
+typedef struct RETRIEVAL_POINTERS_BUFFER {
+
+ ULONG ExtentCount;
+ LARGE_INTEGER StartingVcn;
+ struct {
+ LARGE_INTEGER NextVcn;
+ LARGE_INTEGER Lcn;
+ } Extents[1];
+
+} RETRIEVAL_POINTERS_BUFFER, *PRETRIEVAL_POINTERS_BUFFER;
+#line 8651 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct RETRIEVAL_POINTERS_AND_REFCOUNT_BUFFER {
+
+ ULONG ExtentCount;
+ LARGE_INTEGER StartingVcn;
+ struct {
+ LARGE_INTEGER NextVcn;
+ LARGE_INTEGER Lcn;
+ ULONG ReferenceCount;
+ } Extents[1];
+
+} RETRIEVAL_POINTERS_AND_REFCOUNT_BUFFER, *PRETRIEVAL_POINTERS_AND_REFCOUNT_BUFFER;
+#line 8675 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct RETRIEVAL_POINTER_COUNT {
+
+ ULONG ExtentCount;
+
+} RETRIEVAL_POINTER_COUNT, *PRETRIEVAL_POINTER_COUNT;
+#line 8693 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+typedef struct {
+
+ LARGE_INTEGER FileReferenceNumber;
+
+} NTFS_FILE_RECORD_INPUT_BUFFER, *PNTFS_FILE_RECORD_INPUT_BUFFER;
+
+typedef struct {
+
+ LARGE_INTEGER FileReferenceNumber;
+ ULONG FileRecordLength;
+ UCHAR FileRecordBuffer[1];
+
+} NTFS_FILE_RECORD_OUTPUT_BUFFER, *PNTFS_FILE_RECORD_OUTPUT_BUFFER;
+#line 8716 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+typedef struct {
+
+ HANDLE FileHandle;
+ LARGE_INTEGER StartingVcn;
+ LARGE_INTEGER StartingLcn;
+ ULONG ClusterCount;
+
+} MOVE_FILE_DATA, *PMOVE_FILE_DATA;
+
+typedef struct {
+
+ HANDLE FileHandle;
+ LARGE_INTEGER SourceFileRecord;
+ LARGE_INTEGER TargetFileRecord;
+
+} MOVE_FILE_RECORD_DATA, *PMOVE_FILE_RECORD_DATA;
+
+
+
+
+
+
+
+typedef struct _MOVE_FILE_DATA32 {
+
+ UINT32 FileHandle;
+ LARGE_INTEGER StartingVcn;
+ LARGE_INTEGER StartingLcn;
+ ULONG ClusterCount;
+
+} MOVE_FILE_DATA32, *PMOVE_FILE_DATA32;
+#line 8756 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#line 8757 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+typedef struct {
+ ULONG Restart;
+ SID Sid;
+} FIND_BY_SID_DATA, *PFIND_BY_SID_DATA;
+
+typedef struct {
+ ULONG NextEntryOffset;
+ ULONG FileIndex;
+ ULONG FileNameLength;
+ WCHAR FileName[1];
+} FIND_BY_SID_OUTPUT, *PFIND_BY_SID_OUTPUT;
+
+#line 8778 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct {
+
+ ULONGLONG StartFileReferenceNumber;
+ USN LowUsn;
+ USN HighUsn;
+
+} MFT_ENUM_DATA_V0, *PMFT_ENUM_DATA_V0;
+
+typedef struct {
+
+ ULONGLONG StartFileReferenceNumber;
+ USN LowUsn;
+ USN HighUsn;
+ USHORT MinMajorVersion;
+ USHORT MaxMajorVersion;
+
+} MFT_ENUM_DATA_V1, *PMFT_ENUM_DATA_V1;
+
+
+typedef MFT_ENUM_DATA_V1 MFT_ENUM_DATA, *PMFT_ENUM_DATA;
+
+
+#line 8813 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+typedef struct {
+
+ ULONGLONG MaximumSize;
+ ULONGLONG AllocationDelta;
+
+} CREATE_USN_JOURNAL_DATA, *PCREATE_USN_JOURNAL_DATA;
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct {
+
+ USHORT MinMajorVersion;
+ USHORT MaxMajorVersion;
+
+} READ_FILE_USN_DATA, *PREAD_FILE_USN_DATA;
+
+
+
+
+
+
+
+
+typedef struct {
+
+ USN StartUsn;
+ ULONG ReasonMask;
+ ULONG ReturnOnlyOnClose;
+ ULONGLONG Timeout;
+ ULONGLONG BytesToWaitFor;
+ ULONGLONG UsnJournalID;
+
+} READ_USN_JOURNAL_DATA_V0, *PREAD_USN_JOURNAL_DATA_V0;
+
+typedef struct {
+
+ USN StartUsn;
+ ULONG ReasonMask;
+ ULONG ReturnOnlyOnClose;
+ ULONGLONG Timeout;
+ ULONGLONG BytesToWaitFor;
+ ULONGLONG UsnJournalID;
+ USHORT MinMajorVersion;
+ USHORT MaxMajorVersion;
+
+} READ_USN_JOURNAL_DATA_V1, *PREAD_USN_JOURNAL_DATA_V1;
+
+
+typedef READ_USN_JOURNAL_DATA_V1 READ_USN_JOURNAL_DATA, *PREAD_USN_JOURNAL_DATA;
+
+
+#line 8882 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+typedef struct {
+ ULONG Flags;
+ ULONG Unused;
+ ULONGLONG ChunkSize;
+ LONGLONG FileSizeThreshold;
+} USN_TRACK_MODIFIED_RANGES, *PUSN_TRACK_MODIFIED_RANGES;
+
+typedef struct {
+ USN Usn;
+} USN_RANGE_TRACK_OUTPUT, *PUSN_RANGE_TRACK_OUTPUT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct {
+
+ ULONG RecordLength;
+ USHORT MajorVersion;
+ USHORT MinorVersion;
+ ULONGLONG FileReferenceNumber;
+ ULONGLONG ParentFileReferenceNumber;
+ USN Usn;
+ LARGE_INTEGER TimeStamp;
+ ULONG Reason;
+ ULONG SourceInfo;
+ ULONG SecurityId;
+ ULONG FileAttributes;
+ USHORT FileNameLength;
+ USHORT FileNameOffset;
+ WCHAR FileName[1];
+
+} USN_RECORD_V2, *PUSN_RECORD_V2;
+
+typedef struct {
+
+ ULONG RecordLength;
+ USHORT MajorVersion;
+ USHORT MinorVersion;
+ FILE_ID_128 FileReferenceNumber;
+ FILE_ID_128 ParentFileReferenceNumber;
+ USN Usn;
+ LARGE_INTEGER TimeStamp;
+ ULONG Reason;
+ ULONG SourceInfo;
+ ULONG SecurityId;
+ ULONG FileAttributes;
+ USHORT FileNameLength;
+ USHORT FileNameOffset;
+ WCHAR FileName[1];
+
+} USN_RECORD_V3, *PUSN_RECORD_V3;
+
+typedef USN_RECORD_V2 USN_RECORD, *PUSN_RECORD;
+
+typedef struct {
+ ULONG RecordLength;
+ USHORT MajorVersion;
+ USHORT MinorVersion;
+} USN_RECORD_COMMON_HEADER, *PUSN_RECORD_COMMON_HEADER;
+
+typedef struct {
+ LONGLONG Offset;
+ LONGLONG Length;
+} USN_RECORD_EXTENT, *PUSN_RECORD_EXTENT;
+
+typedef struct {
+ USN_RECORD_COMMON_HEADER Header;
+ FILE_ID_128 FileReferenceNumber;
+ FILE_ID_128 ParentFileReferenceNumber;
+ USN Usn;
+ ULONG Reason;
+ ULONG SourceInfo;
+ ULONG RemainingExtents;
+ USHORT NumberOfExtents;
+ USHORT ExtentSize;
+ USN_RECORD_EXTENT Extents[1];
+} USN_RECORD_V4, *PUSN_RECORD_V4;
+
+typedef union {
+ USN_RECORD_COMMON_HEADER Header;
+ USN_RECORD_V2 V2;
+ USN_RECORD_V3 V3;
+ USN_RECORD_V4 V4;
+} USN_RECORD_UNION, *PUSN_RECORD_UNION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct {
+
+ ULONGLONG UsnJournalID;
+ USN FirstUsn;
+ USN NextUsn;
+ USN LowestValidUsn;
+ USN MaxUsn;
+ ULONGLONG MaximumSize;
+ ULONGLONG AllocationDelta;
+
+} USN_JOURNAL_DATA_V0, *PUSN_JOURNAL_DATA_V0;
+
+typedef struct {
+
+ ULONGLONG UsnJournalID;
+ USN FirstUsn;
+ USN NextUsn;
+ USN LowestValidUsn;
+ USN MaxUsn;
+ ULONGLONG MaximumSize;
+ ULONGLONG AllocationDelta;
+ USHORT MinSupportedMajorVersion;
+ USHORT MaxSupportedMajorVersion;
+
+} USN_JOURNAL_DATA_V1, *PUSN_JOURNAL_DATA_V1;
+
+typedef struct {
+
+ ULONGLONG UsnJournalID;
+ USN FirstUsn;
+ USN NextUsn;
+ USN LowestValidUsn;
+ USN MaxUsn;
+ ULONGLONG MaximumSize;
+ ULONGLONG AllocationDelta;
+ USHORT MinSupportedMajorVersion;
+ USHORT MaxSupportedMajorVersion;
+ ULONG Flags;
+ ULONGLONG RangeTrackChunkSize;
+ LONGLONG RangeTrackFileSizeThreshold;
+
+} USN_JOURNAL_DATA_V2, *PUSN_JOURNAL_DATA_V2;
+
+
+
+typedef USN_JOURNAL_DATA_V1 USN_JOURNAL_DATA, *PUSN_JOURNAL_DATA;
+
+
+#line 9075 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+typedef struct {
+
+ ULONGLONG UsnJournalID;
+ ULONG DeleteFlags;
+
+} DELETE_USN_JOURNAL_DATA, *PDELETE_USN_JOURNAL_DATA;
+
+
+
+
+
+
+#line 9095 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#line 9107 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#pragma warning(disable:4201)
+
+typedef struct _MARK_HANDLE_INFO {
+
+
+ union {
+ ULONG UsnSourceInfo;
+ ULONG CopyNumber;
+ } ;
+
+
+#line 9119 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+ HANDLE VolumeHandle;
+ ULONG HandleInfo;
+
+} MARK_HANDLE_INFO, *PMARK_HANDLE_INFO;
+
+
+
+
+
+
+typedef struct _MARK_HANDLE_INFO32 {
+
+
+ union {
+ ULONG UsnSourceInfo;
+ ULONG CopyNumber;
+ } ;
+
+
+#line 9140 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ UINT32 VolumeHandle;
+ ULONG HandleInfo;
+
+} MARK_HANDLE_INFO32, *PMARK_HANDLE_INFO32;
+#line 9145 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+#pragma warning(pop)
+
+
+#line 9151 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 9257 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+#line 9265 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+#line 9272 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+#line 9280 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+#line 9288 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+#line 9294 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+#line 9300 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct {
+
+ ACCESS_MASK DesiredAccess;
+ ULONG SecurityIds[1];
+
+} BULK_SECURITY_TEST_DATA, *PBULK_SECURITY_TEST_DATA;
+#line 9317 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 9331 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+typedef struct _FILE_PREFETCH {
+ ULONG Type;
+ ULONG Count;
+ ULONGLONG Prefetch[1];
+} FILE_PREFETCH, *PFILE_PREFETCH;
+
+typedef struct _FILE_PREFETCH_EX {
+ ULONG Type;
+ ULONG Count;
+ PVOID Context;
+ ULONGLONG Prefetch[1];
+} FILE_PREFETCH_EX, *PFILE_PREFETCH_EX;
+
+
+
+
+
+
+
+
+#line 9359 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+typedef struct _FILESYSTEM_STATISTICS {
+
+ USHORT FileSystemType;
+ USHORT Version;
+
+ ULONG SizeOfCompleteStructure;
+
+ ULONG UserFileReads;
+ ULONG UserFileReadBytes;
+ ULONG UserDiskReads;
+ ULONG UserFileWrites;
+ ULONG UserFileWriteBytes;
+ ULONG UserDiskWrites;
+
+ ULONG MetaDataReads;
+ ULONG MetaDataReadBytes;
+ ULONG MetaDataDiskReads;
+ ULONG MetaDataWrites;
+ ULONG MetaDataWriteBytes;
+ ULONG MetaDataDiskWrites;
+
+
+
+
+
+} FILESYSTEM_STATISTICS, *PFILESYSTEM_STATISTICS;
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FAT_STATISTICS {
+ ULONG CreateHits;
+ ULONG SuccessfulCreates;
+ ULONG FailedCreates;
+
+ ULONG NonCachedReads;
+ ULONG NonCachedReadBytes;
+ ULONG NonCachedWrites;
+ ULONG NonCachedWriteBytes;
+
+ ULONG NonCachedDiskReads;
+ ULONG NonCachedDiskWrites;
+} FAT_STATISTICS, *PFAT_STATISTICS;
+
+typedef struct _EXFAT_STATISTICS {
+ ULONG CreateHits;
+ ULONG SuccessfulCreates;
+ ULONG FailedCreates;
+
+ ULONG NonCachedReads;
+ ULONG NonCachedReadBytes;
+ ULONG NonCachedWrites;
+ ULONG NonCachedWriteBytes;
+
+ ULONG NonCachedDiskReads;
+ ULONG NonCachedDiskWrites;
+} EXFAT_STATISTICS, *PEXFAT_STATISTICS;
+
+typedef struct _NTFS_STATISTICS {
+
+ ULONG LogFileFullExceptions;
+ ULONG OtherExceptions;
+
+
+
+
+
+ ULONG MftReads;
+ ULONG MftReadBytes;
+ ULONG MftWrites;
+ ULONG MftWriteBytes;
+ struct {
+ USHORT Write;
+ USHORT Create;
+ USHORT SetInfo;
+ USHORT Flush;
+ } MftWritesUserLevel;
+
+ USHORT MftWritesFlushForLogFileFull;
+ USHORT MftWritesLazyWriter;
+ USHORT MftWritesUserRequest;
+
+ ULONG Mft2Writes;
+ ULONG Mft2WriteBytes;
+ struct {
+ USHORT Write;
+ USHORT Create;
+ USHORT SetInfo;
+ USHORT Flush;
+ } Mft2WritesUserLevel;
+
+ USHORT Mft2WritesFlushForLogFileFull;
+ USHORT Mft2WritesLazyWriter;
+ USHORT Mft2WritesUserRequest;
+
+ ULONG RootIndexReads;
+ ULONG RootIndexReadBytes;
+ ULONG RootIndexWrites;
+ ULONG RootIndexWriteBytes;
+
+ ULONG BitmapReads;
+ ULONG BitmapReadBytes;
+ ULONG BitmapWrites;
+ ULONG BitmapWriteBytes;
+
+ USHORT BitmapWritesFlushForLogFileFull;
+ USHORT BitmapWritesLazyWriter;
+ USHORT BitmapWritesUserRequest;
+
+ struct {
+ USHORT Write;
+ USHORT Create;
+ USHORT SetInfo;
+ } BitmapWritesUserLevel;
+
+ ULONG MftBitmapReads;
+ ULONG MftBitmapReadBytes;
+ ULONG MftBitmapWrites;
+ ULONG MftBitmapWriteBytes;
+
+ USHORT MftBitmapWritesFlushForLogFileFull;
+ USHORT MftBitmapWritesLazyWriter;
+ USHORT MftBitmapWritesUserRequest;
+
+ struct {
+ USHORT Write;
+ USHORT Create;
+ USHORT SetInfo;
+ USHORT Flush;
+ } MftBitmapWritesUserLevel;
+
+ ULONG UserIndexReads;
+ ULONG UserIndexReadBytes;
+ ULONG UserIndexWrites;
+ ULONG UserIndexWriteBytes;
+
+
+
+
+
+ ULONG LogFileReads;
+ ULONG LogFileReadBytes;
+ ULONG LogFileWrites;
+ ULONG LogFileWriteBytes;
+
+ struct {
+ ULONG Calls;
+ ULONG Clusters;
+ ULONG Hints;
+
+ ULONG RunsReturned;
+
+ ULONG HintsHonored;
+ ULONG HintsClusters;
+ ULONG Cache;
+ ULONG CacheClusters;
+ ULONG CacheMiss;
+ ULONG CacheMissClusters;
+ } Allocate;
+
+
+
+
+
+ ULONG DiskResourcesExhausted;
+
+
+
+
+
+} NTFS_STATISTICS, *PNTFS_STATISTICS;
+
+typedef struct _FILESYSTEM_STATISTICS_EX {
+
+ USHORT FileSystemType;
+ USHORT Version;
+
+ ULONG SizeOfCompleteStructure;
+
+ ULONGLONG UserFileReads;
+ ULONGLONG UserFileReadBytes;
+ ULONGLONG UserDiskReads;
+ ULONGLONG UserFileWrites;
+ ULONGLONG UserFileWriteBytes;
+ ULONGLONG UserDiskWrites;
+
+ ULONGLONG MetaDataReads;
+ ULONGLONG MetaDataReadBytes;
+ ULONGLONG MetaDataDiskReads;
+ ULONGLONG MetaDataWrites;
+ ULONGLONG MetaDataWriteBytes;
+ ULONGLONG MetaDataDiskWrites;
+
+
+
+
+
+} FILESYSTEM_STATISTICS_EX, *PFILESYSTEM_STATISTICS_EX;
+
+typedef struct _NTFS_STATISTICS_EX {
+
+ ULONG LogFileFullExceptions;
+ ULONG OtherExceptions;
+
+
+
+
+
+ ULONGLONG MftReads;
+ ULONGLONG MftReadBytes;
+ ULONGLONG MftWrites;
+ ULONGLONG MftWriteBytes;
+ struct {
+ ULONG Write;
+ ULONG Create;
+ ULONG SetInfo;
+ ULONG Flush;
+ } MftWritesUserLevel;
+
+ ULONG MftWritesFlushForLogFileFull;
+ ULONG MftWritesLazyWriter;
+ ULONG MftWritesUserRequest;
+
+ ULONGLONG Mft2Writes;
+ ULONGLONG Mft2WriteBytes;
+ struct {
+ ULONG Write;
+ ULONG Create;
+ ULONG SetInfo;
+ ULONG Flush;
+ } Mft2WritesUserLevel;
+
+ ULONG Mft2WritesFlushForLogFileFull;
+ ULONG Mft2WritesLazyWriter;
+ ULONG Mft2WritesUserRequest;
+
+ ULONGLONG RootIndexReads;
+ ULONGLONG RootIndexReadBytes;
+ ULONGLONG RootIndexWrites;
+ ULONGLONG RootIndexWriteBytes;
+
+ ULONGLONG BitmapReads;
+ ULONGLONG BitmapReadBytes;
+ ULONGLONG BitmapWrites;
+ ULONGLONG BitmapWriteBytes;
+
+ ULONG BitmapWritesFlushForLogFileFull;
+ ULONG BitmapWritesLazyWriter;
+ ULONG BitmapWritesUserRequest;
+
+ struct {
+ ULONG Write;
+ ULONG Create;
+ ULONG SetInfo;
+ ULONG Flush;
+ } BitmapWritesUserLevel;
+
+ ULONGLONG MftBitmapReads;
+ ULONGLONG MftBitmapReadBytes;
+ ULONGLONG MftBitmapWrites;
+ ULONGLONG MftBitmapWriteBytes;
+
+ ULONG MftBitmapWritesFlushForLogFileFull;
+ ULONG MftBitmapWritesLazyWriter;
+ ULONG MftBitmapWritesUserRequest;
+
+ struct {
+ ULONG Write;
+ ULONG Create;
+ ULONG SetInfo;
+ ULONG Flush;
+ } MftBitmapWritesUserLevel;
+
+ ULONGLONG UserIndexReads;
+ ULONGLONG UserIndexReadBytes;
+ ULONGLONG UserIndexWrites;
+ ULONGLONG UserIndexWriteBytes;
+
+
+
+
+
+ ULONGLONG LogFileReads;
+ ULONGLONG LogFileReadBytes;
+ ULONGLONG LogFileWrites;
+ ULONGLONG LogFileWriteBytes;
+
+ struct {
+ ULONG Calls;
+ ULONG RunsReturned;
+ ULONG Hints;
+ ULONG HintsHonored;
+ ULONG Cache;
+ ULONG CacheMiss;
+
+ ULONGLONG Clusters;
+ ULONGLONG HintsClusters;
+ ULONGLONG CacheClusters;
+ ULONGLONG CacheMissClusters;
+ } Allocate;
+
+
+
+
+
+ ULONG DiskResourcesExhausted;
+
+
+
+
+
+ ULONGLONG VolumeTrimCount;
+ ULONGLONG VolumeTrimTime;
+ ULONGLONG VolumeTrimByteCount;
+
+ ULONGLONG FileLevelTrimCount;
+ ULONGLONG FileLevelTrimTime;
+ ULONGLONG FileLevelTrimByteCount;
+
+ ULONGLONG VolumeTrimSkippedCount;
+ ULONGLONG VolumeTrimSkippedByteCount;
+
+
+
+
+
+ ULONGLONG NtfsFillStatInfoFromMftRecordCalledCount;
+ ULONGLONG NtfsFillStatInfoFromMftRecordBailedBecauseOfAttributeListCount;
+ ULONGLONG NtfsFillStatInfoFromMftRecordBailedBecauseOfNonResReparsePointCount;
+
+} NTFS_STATISTICS_EX, *PNTFS_STATISTICS_EX;
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#line 9722 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#pragma warning(disable:4201)
+
+typedef struct _FILE_OBJECTID_BUFFER {
+
+
+
+
+
+ UCHAR ObjectId[16];
+
+
+
+
+
+
+ union {
+ struct {
+ UCHAR BirthVolumeId[16];
+ UCHAR BirthObjectId[16];
+ UCHAR DomainId[16];
+ } ;
+ UCHAR ExtendedInfo[48];
+ } ;
+
+} FILE_OBJECTID_BUFFER, *PFILE_OBJECTID_BUFFER;
+
+
+#pragma warning(pop)
+
+
+#line 9753 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 9755 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_SET_SPARSE_BUFFER {
+ BOOLEAN SetSparse;
+} FILE_SET_SPARSE_BUFFER, *PFILE_SET_SPARSE_BUFFER;
+
+
+#line 9770 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_ZERO_DATA_INFORMATION {
+
+ LARGE_INTEGER FileOffset;
+ LARGE_INTEGER BeyondFinalZero;
+
+} FILE_ZERO_DATA_INFORMATION, *PFILE_ZERO_DATA_INFORMATION;
+
+#line 9788 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+typedef struct _FILE_ZERO_DATA_INFORMATION_EX {
+
+ LARGE_INTEGER FileOffset;
+ LARGE_INTEGER BeyondFinalZero;
+ ULONG Flags;
+
+} FILE_ZERO_DATA_INFORMATION_EX, *PFILE_ZERO_DATA_INFORMATION_EX;
+
+
+
+
+
+
+
+
+#line 9807 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_ALLOCATED_RANGE_BUFFER {
+
+ LARGE_INTEGER FileOffset;
+ LARGE_INTEGER Length;
+
+} FILE_ALLOCATED_RANGE_BUFFER, *PFILE_ALLOCATED_RANGE_BUFFER;
+
+#line 9831 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _ENCRYPTION_BUFFER {
+
+ ULONG EncryptionOperation;
+ UCHAR Private[1];
+
+} ENCRYPTION_BUFFER, *PENCRYPTION_BUFFER;
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _DECRYPTION_STATUS_BUFFER {
+
+ BOOLEAN NoEncryptedStreams;
+
+} DECRYPTION_STATUS_BUFFER, *PDECRYPTION_STATUS_BUFFER;
+
+
+
+
+
+
+
+
+
+typedef struct _REQUEST_RAW_ENCRYPTED_DATA {
+
+
+
+
+
+
+
+
+ LONGLONG FileOffset;
+ ULONG Length;
+
+} REQUEST_RAW_ENCRYPTED_DATA, *PREQUEST_RAW_ENCRYPTED_DATA;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _ENCRYPTED_DATA_INFO {
+
+
+
+
+
+
+
+
+ ULONGLONG StartingFileOffset;
+
+
+
+
+
+
+
+
+
+ ULONG OutputBufferOffset;
+
+
+
+
+
+
+
+
+
+
+ ULONG BytesWithinFileSize;
+
+
+
+
+
+
+
+
+
+
+ ULONG BytesWithinValidDataLength;
+
+
+
+
+
+
+
+
+ USHORT CompressionFormat;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UCHAR DataUnitShift;
+ UCHAR ChunkShift;
+ UCHAR ClusterShift;
+
+
+
+
+
+ UCHAR EncryptionFormat;
+
+
+
+
+
+
+ USHORT NumberOfDataBlocks;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ULONG DataBlockSize[1];
+
+} ENCRYPTED_DATA_INFO, *PENCRYPTED_DATA_INFO;
+
+#line 10037 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _EXTENDED_ENCRYPTED_DATA_INFO {
+
+
+
+
+
+
+
+
+ ULONG ExtendedCode;
+
+
+
+
+
+ ULONG Length;
+
+
+
+
+
+ ULONG Flags;
+ ULONG Reserved;
+
+} EXTENDED_ENCRYPTED_DATA_INFO, *PEXTENDED_ENCRYPTED_DATA_INFO;
+
+#line 10092 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _PLEX_READ_DATA_REQUEST {
+
+
+
+
+
+
+
+
+
+
+
+ LARGE_INTEGER ByteOffset;
+ ULONG ByteLength;
+ ULONG PlexNumber;
+
+} PLEX_READ_DATA_REQUEST, *PPLEX_READ_DATA_REQUEST;
+
+#line 10122 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _SI_COPYFILE {
+ ULONG SourceFileNameLength;
+ ULONG DestinationFileNameLength;
+ ULONG Flags;
+ WCHAR FileNameBuffer[1];
+} SI_COPYFILE, *PSI_COPYFILE;
+
+
+
+
+
+#line 10146 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_MAKE_COMPATIBLE_BUFFER {
+ BOOLEAN CloseDisc;
+} FILE_MAKE_COMPATIBLE_BUFFER, *PFILE_MAKE_COMPATIBLE_BUFFER;
+
+
+
+
+
+
+
+typedef struct _FILE_SET_DEFECT_MGMT_BUFFER {
+ BOOLEAN Disable;
+} FILE_SET_DEFECT_MGMT_BUFFER, *PFILE_SET_DEFECT_MGMT_BUFFER;
+
+
+
+
+
+
+
+typedef struct _FILE_QUERY_SPARING_BUFFER {
+ ULONG SparingUnitBytes;
+ BOOLEAN SoftwareSparing;
+ ULONG TotalSpareBlocks;
+ ULONG FreeSpareBlocks;
+} FILE_QUERY_SPARING_BUFFER, *PFILE_QUERY_SPARING_BUFFER;
+
+
+
+
+
+
+
+typedef struct _FILE_QUERY_ON_DISK_VOL_INFO_BUFFER {
+ LARGE_INTEGER DirectoryCount;
+ LARGE_INTEGER FileCount;
+ USHORT FsFormatMajVersion;
+ USHORT FsFormatMinVersion;
+ WCHAR FsFormatName[ 12];
+ LARGE_INTEGER FormatTime;
+ LARGE_INTEGER LastUpdateTime;
+ WCHAR CopyrightInfo[ 34];
+ WCHAR AbstractInfo[ 34];
+ WCHAR FormattingImplementationInfo[ 34];
+ WCHAR LastModifyingImplementationInfo[ 34];
+} FILE_QUERY_ON_DISK_VOL_INFO_BUFFER, *PFILE_QUERY_ON_DISK_VOL_INFO_BUFFER;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef ULONGLONG CLSN;
+
+typedef struct _FILE_INITIATE_REPAIR_OUTPUT_BUFFER {
+ ULONGLONG Hint1;
+ ULONGLONG Hint2;
+ CLSN Clsn;
+ NTSTATUS Status;
+} FILE_INITIATE_REPAIR_OUTPUT_BUFFER, *PFILE_INITIATE_REPAIR_OUTPUT_BUFFER;
+
+
+
+
+
+
+
+typedef enum _SHRINK_VOLUME_REQUEST_TYPES
+{
+ ShrinkPrepare = 1,
+ ShrinkCommit,
+ ShrinkAbort
+
+} SHRINK_VOLUME_REQUEST_TYPES, *PSHRINK_VOLUME_REQUEST_TYPES;
+
+typedef struct _SHRINK_VOLUME_INFORMATION
+{
+ SHRINK_VOLUME_REQUEST_TYPES ShrinkRequestType;
+ ULONGLONG Flags;
+ LONGLONG NewNumberOfSectors;
+
+} SHRINK_VOLUME_INFORMATION, *PSHRINK_VOLUME_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _TXFS_MODIFY_RM {
+
+
+
+
+
+ ULONG Flags;
+
+
+
+
+
+ ULONG LogContainerCountMax;
+
+
+
+
+
+ ULONG LogContainerCountMin;
+
+
+
+
+
+ ULONG LogContainerCount;
+
+
+
+
+
+
+
+ ULONG LogGrowthIncrement;
+
+
+
+
+
+
+ ULONG LogAutoShrinkPercentage;
+
+
+
+
+
+ ULONGLONG Reserved;
+
+
+
+
+
+
+ USHORT LoggingMode;
+
+} TXFS_MODIFY_RM,
+ *PTXFS_MODIFY_RM;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _TXFS_QUERY_RM_INFORMATION {
+
+
+
+
+
+
+ ULONG BytesRequired;
+
+
+
+
+
+ ULONGLONG TailLsn;
+
+
+
+
+
+ ULONGLONG CurrentLsn;
+
+
+
+
+
+ ULONGLONG ArchiveTailLsn;
+
+
+
+
+
+ ULONGLONG LogContainerSize;
+
+
+
+
+
+ LARGE_INTEGER HighestVirtualClock;
+
+
+
+
+
+ ULONG LogContainerCount;
+
+
+
+
+
+ ULONG LogContainerCountMax;
+
+
+
+
+
+ ULONG LogContainerCountMin;
+
+
+
+
+
+
+
+ ULONG LogGrowthIncrement;
+
+
+
+
+
+
+
+ ULONG LogAutoShrinkPercentage;
+
+
+
+
+
+
+ ULONG Flags;
+
+
+
+
+
+ USHORT LoggingMode;
+
+
+
+
+
+ USHORT Reserved;
+
+
+
+
+
+ ULONG RmState;
+
+
+
+
+
+ ULONGLONG LogCapacity;
+
+
+
+
+
+ ULONGLONG LogFree;
+
+
+
+
+
+ ULONGLONG TopsSize;
+
+
+
+
+
+ ULONGLONG TopsUsed;
+
+
+
+
+
+ ULONGLONG TransactionCount;
+
+
+
+
+
+ ULONGLONG OnePCCount;
+
+
+
+
+
+ ULONGLONG TwoPCCount;
+
+
+
+
+
+ ULONGLONG NumberLogFileFull;
+
+
+
+
+
+ ULONGLONG OldestTransactionAge;
+
+
+
+
+
+ GUID RMName;
+
+
+
+
+
+
+ ULONG TmLogPathOffset;
+
+} TXFS_QUERY_RM_INFORMATION,
+ *PTXFS_QUERY_RM_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _TXFS_ROLLFORWARD_REDO_INFORMATION {
+ LARGE_INTEGER LastVirtualClock;
+ ULONGLONG LastRedoLsn;
+ ULONGLONG HighestRecoveryLsn;
+ ULONG Flags;
+} TXFS_ROLLFORWARD_REDO_INFORMATION,
+ *PTXFS_ROLLFORWARD_REDO_INFORMATION;
+
+
+
+#pragma deprecated(TXFS_ROLLFORWARD_REDO_INFORMATION)
+#pragma deprecated(PTXFS_ROLLFORWARD_REDO_INFORMATION)
+#line 10663 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#line 10664 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _TXFS_START_RM_INFORMATION {
+
+
+
+
+
+ ULONG Flags;
+
+
+
+
+
+ ULONGLONG LogContainerSize;
+
+
+
+
+
+ ULONG LogContainerCountMin;
+
+
+
+
+
+ ULONG LogContainerCountMax;
+
+
+
+
+
+
+
+ ULONG LogGrowthIncrement;
+
+
+
+
+
+ ULONG LogAutoShrinkPercentage;
+
+
+
+
+
+
+
+ ULONG TmLogPathOffset;
+
+
+
+
+
+
+ USHORT TmLogPathLength;
+
+
+
+
+
+
+
+ USHORT LoggingMode;
+
+
+
+
+
+
+ USHORT LogPathLength;
+
+
+
+
+
+ USHORT Reserved;
+
+
+
+
+
+
+ WCHAR LogPath[1];
+
+} TXFS_START_RM_INFORMATION,
+ *PTXFS_START_RM_INFORMATION;
+
+
+
+#pragma deprecated(TXFS_START_RM_INFORMATION)
+#pragma deprecated(PTXFS_START_RM_INFORMATION)
+#line 10807 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#line 10808 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+typedef struct _TXFS_GET_METADATA_INFO_OUT {
+
+
+
+
+
+ struct {
+ LONGLONG LowPart;
+ LONGLONG HighPart;
+ } TxfFileId;
+
+
+
+
+
+ GUID LockingTransaction;
+
+
+
+
+
+ ULONGLONG LastLsn;
+
+
+
+
+
+ ULONG TransactionState;
+
+} TXFS_GET_METADATA_INFO_OUT, *PTXFS_GET_METADATA_INFO_OUT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY {
+
+
+
+
+
+
+ ULONGLONG Offset;
+
+
+
+
+
+
+ ULONG NameFlags;
+
+
+
+
+
+ LONGLONG FileId;
+
+
+
+
+
+ ULONG Reserved1;
+ ULONG Reserved2;
+ LONGLONG Reserved3;
+
+
+
+
+
+ WCHAR FileName[1];
+} TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY, *PTXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY;
+
+
+typedef struct _TXFS_LIST_TRANSACTION_LOCKED_FILES {
+
+
+
+
+
+ GUID KtmTransaction;
+
+
+
+
+
+ ULONGLONG NumberOfFiles;
+
+
+
+
+
+
+ ULONGLONG BufferSizeRequired;
+
+
+
+
+
+
+ ULONGLONG Offset;
+} TXFS_LIST_TRANSACTION_LOCKED_FILES, *PTXFS_LIST_TRANSACTION_LOCKED_FILES;
+
+
+
+
+
+
+
+typedef struct _TXFS_LIST_TRANSACTIONS_ENTRY {
+
+
+
+
+
+ GUID TransactionId;
+
+
+
+
+
+ ULONG TransactionState;
+
+
+
+
+
+ ULONG Reserved1;
+ ULONG Reserved2;
+ LONGLONG Reserved3;
+} TXFS_LIST_TRANSACTIONS_ENTRY, *PTXFS_LIST_TRANSACTIONS_ENTRY;
+
+typedef struct _TXFS_LIST_TRANSACTIONS {
+
+
+
+
+
+ ULONGLONG NumberOfTransactions;
+
+
+
+
+
+
+
+ ULONGLONG BufferSizeRequired;
+} TXFS_LIST_TRANSACTIONS, *PTXFS_LIST_TRANSACTIONS;
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#line 10988 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#pragma warning(disable:4201)
+
+typedef struct _TXFS_READ_BACKUP_INFORMATION_OUT {
+ union {
+
+
+
+
+
+ ULONG BufferLength;
+
+
+
+
+
+ UCHAR Buffer[1];
+ } ;
+} TXFS_READ_BACKUP_INFORMATION_OUT, *PTXFS_READ_BACKUP_INFORMATION_OUT;
+
+
+#pragma warning(pop)
+
+
+#line 11012 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+typedef struct _TXFS_WRITE_BACKUP_INFORMATION {
+
+
+
+
+
+
+ UCHAR Buffer[1];
+} TXFS_WRITE_BACKUP_INFORMATION, *PTXFS_WRITE_BACKUP_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+typedef struct _TXFS_GET_TRANSACTED_VERSION {
+
+
+
+
+
+
+
+ ULONG ThisBaseVersion;
+
+
+
+
+
+ ULONG LatestVersion;
+
+
+
+
+
+
+ USHORT ThisMiniVersion;
+
+
+
+
+
+
+ USHORT FirstMiniVersion;
+
+
+
+
+
+
+ USHORT LatestMiniVersion;
+
+} TXFS_GET_TRANSACTED_VERSION, *PTXFS_GET_TRANSACTED_VERSION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _TXFS_SAVEPOINT_INFORMATION {
+
+
+
+
+
+ HANDLE KtmTransaction;
+
+
+
+
+
+ ULONG ActionCode;
+
+
+
+
+
+
+
+
+
+
+
+ ULONG SavepointId;
+
+} TXFS_SAVEPOINT_INFORMATION, *PTXFS_SAVEPOINT_INFORMATION;
+
+
+
+#pragma deprecated(TXFS_SAVEPOINT_INFORMATION)
+#pragma deprecated(PTXFS_SAVEPOINT_INFORMATION)
+#line 11145 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#line 11146 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+typedef struct _TXFS_CREATE_MINIVERSION_INFO {
+
+ USHORT StructureVersion;
+
+ USHORT StructureLength;
+
+
+
+
+
+ ULONG BaseVersion;
+
+
+
+
+
+ USHORT MiniVersion;
+
+} TXFS_CREATE_MINIVERSION_INFO, *PTXFS_CREATE_MINIVERSION_INFO;
+
+
+
+#pragma deprecated(TXFS_CREATE_MINIVERSION_INFO)
+#pragma deprecated(PTXFS_CREATE_MINIVERSION_INFO)
+#line 11180 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#line 11181 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+typedef struct _TXFS_TRANSACTION_ACTIVE_INFO {
+
+
+
+
+
+ BOOLEAN TransactionsActiveAtSnapshot;
+
+} TXFS_TRANSACTION_ACTIVE_INFO, *PTXFS_TRANSACTION_ACTIVE_INFO;
+
+#line 11199 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct _BOOT_AREA_INFO {
+
+ ULONG BootSectorCount;
+ struct {
+ LARGE_INTEGER Offset;
+ } BootSectors[2];
+
+} BOOT_AREA_INFO, *PBOOT_AREA_INFO;
+
+
+
+
+
+
+
+typedef struct _RETRIEVAL_POINTER_BASE {
+
+ LARGE_INTEGER FileAreaOffset;
+} RETRIEVAL_POINTER_BASE, *PRETRIEVAL_POINTER_BASE;
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_FS_PERSISTENT_VOLUME_INFORMATION {
+
+ ULONG VolumeFlags;
+ ULONG FlagMask;
+ ULONG Version;
+ ULONG Reserved;
+
+} FILE_FS_PERSISTENT_VOLUME_INFORMATION, *PFILE_FS_PERSISTENT_VOLUME_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+#line 11257 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+#line 11268 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 11290 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+#line 11300 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+#line 11310 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+#line 11320 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 11348 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 11378 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+typedef struct _FILE_SYSTEM_RECOGNITION_INFORMATION {
+
+ CHAR FileSystem[9];
+
+} FILE_SYSTEM_RECOGNITION_INFORMATION, *PFILE_SYSTEM_RECOGNITION_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _REQUEST_OPLOCK_INPUT_BUFFER {
+
+
+
+
+
+ USHORT StructureVersion;
+
+ USHORT StructureLength;
+
+
+
+
+
+ ULONG RequestedOplockLevel;
+
+
+
+
+
+ ULONG Flags;
+
+} REQUEST_OPLOCK_INPUT_BUFFER, *PREQUEST_OPLOCK_INPUT_BUFFER;
+
+
+
+
+
+
+
+
+#line 11440 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef struct _REQUEST_OPLOCK_OUTPUT_BUFFER {
+
+
+
+
+
+ USHORT StructureVersion;
+
+ USHORT StructureLength;
+
+
+
+
+
+
+ ULONG OriginalOplockLevel;
+
+
+
+
+
+
+
+ ULONG NewOplockLevel;
+
+
+
+
+
+ ULONG Flags;
+
+
+
+
+
+
+
+ ACCESS_MASK AccessMode;
+
+ USHORT ShareMode;
+
+} REQUEST_OPLOCK_OUTPUT_BUFFER, *PREQUEST_OPLOCK_OUTPUT_BUFFER;
+
+
+
+
+
+
+
+typedef struct _VIRTUAL_STORAGE_TYPE
+{
+ ULONG DeviceId;
+ GUID VendorId;
+} VIRTUAL_STORAGE_TYPE, *PVIRTUAL_STORAGE_TYPE;
+#line 11496 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+typedef struct _STORAGE_QUERY_DEPENDENT_VOLUME_REQUEST {
+ ULONG RequestLevel;
+ ULONG RequestFlags;
+} STORAGE_QUERY_DEPENDENT_VOLUME_REQUEST, *PSTORAGE_QUERY_DEPENDENT_VOLUME_REQUEST;
+
+
+
+
+typedef struct _STORAGE_QUERY_DEPENDENT_VOLUME_LEV1_ENTRY {
+ ULONG EntryLength;
+ ULONG DependencyTypeFlags;
+ ULONG ProviderSpecificFlags;
+ VIRTUAL_STORAGE_TYPE VirtualStorageType;
+} STORAGE_QUERY_DEPENDENT_VOLUME_LEV1_ENTRY, *PSTORAGE_QUERY_DEPENDENT_VOLUME_LEV1_ENTRY;
+
+typedef struct _STORAGE_QUERY_DEPENDENT_VOLUME_LEV2_ENTRY {
+ ULONG EntryLength;
+ ULONG DependencyTypeFlags;
+ ULONG ProviderSpecificFlags;
+ VIRTUAL_STORAGE_TYPE VirtualStorageType;
+ ULONG AncestorLevel;
+ ULONG HostVolumeNameOffset;
+ ULONG HostVolumeNameSize;
+ ULONG DependentVolumeNameOffset;
+ ULONG DependentVolumeNameSize;
+ ULONG RelativePathOffset;
+ ULONG RelativePathSize;
+ ULONG DependentDeviceNameOffset;
+ ULONG DependentDeviceNameSize;
+} STORAGE_QUERY_DEPENDENT_VOLUME_LEV2_ENTRY, *PSTORAGE_QUERY_DEPENDENT_VOLUME_LEV2_ENTRY;
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4200)
+#line 11538 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+typedef struct _STORAGE_QUERY_DEPENDENT_VOLUME_RESPONSE {
+ ULONG ResponseLevel;
+ ULONG NumberEntries;
+ union {
+ STORAGE_QUERY_DEPENDENT_VOLUME_LEV1_ENTRY Lev1Depends[];
+ STORAGE_QUERY_DEPENDENT_VOLUME_LEV2_ENTRY Lev2Depends[];
+ } ;
+} STORAGE_QUERY_DEPENDENT_VOLUME_RESPONSE, *PSTORAGE_QUERY_DEPENDENT_VOLUME_RESPONSE;
+
+
+#pragma warning(pop)
+#line 11552 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 11554 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _SD_CHANGE_MACHINE_SID_INPUT {
+
+
+
+
+
+
+
+
+
+ USHORT CurrentMachineSIDOffset;
+ USHORT CurrentMachineSIDLength;
+
+
+
+
+
+
+
+
+
+ USHORT NewMachineSIDOffset;
+ USHORT NewMachineSIDLength;
+
+} SD_CHANGE_MACHINE_SID_INPUT, *PSD_CHANGE_MACHINE_SID_INPUT;
+
+typedef struct _SD_CHANGE_MACHINE_SID_OUTPUT {
+
+
+
+
+
+ ULONGLONG NumSDChangedSuccess;
+
+
+
+
+
+ ULONGLONG NumSDChangedFail;
+
+
+
+
+
+ ULONGLONG NumSDUnused;
+
+
+
+
+
+ ULONGLONG NumSDTotal;
+
+
+
+
+
+ ULONGLONG NumMftSDChangedSuccess;
+
+
+
+
+
+ ULONGLONG NumMftSDChangedFail;
+
+
+
+
+
+ ULONGLONG NumMftSDTotal;
+
+} SD_CHANGE_MACHINE_SID_OUTPUT, *PSD_CHANGE_MACHINE_SID_OUTPUT;
+
+
+
+
+
+typedef struct _SD_QUERY_STATS_INPUT {
+
+ ULONG Reserved;
+
+} SD_QUERY_STATS_INPUT, *PSD_QUERY_STATS_INPUT;
+
+typedef struct _SD_QUERY_STATS_OUTPUT {
+
+
+
+
+
+
+ ULONGLONG SdsStreamSize;
+ ULONGLONG SdsAllocationSize;
+
+
+
+
+
+
+ ULONGLONG SiiStreamSize;
+ ULONGLONG SiiAllocationSize;
+
+
+
+
+
+
+ ULONGLONG SdhStreamSize;
+ ULONGLONG SdhAllocationSize;
+
+
+
+
+
+
+ ULONGLONG NumSDTotal;
+
+
+
+
+
+
+ ULONGLONG NumSDUnused;
+
+} SD_QUERY_STATS_OUTPUT, *PSD_QUERY_STATS_OUTPUT;
+
+
+
+
+
+typedef struct _SD_ENUM_SDS_INPUT {
+
+
+
+
+
+
+
+
+
+
+
+ ULONGLONG StartingOffset;
+
+
+
+
+
+
+
+ ULONGLONG MaxSDEntriesToReturn;
+
+} SD_ENUM_SDS_INPUT, *PSD_ENUM_SDS_INPUT;
+
+typedef struct _SD_ENUM_SDS_ENTRY {
+
+
+
+
+
+ ULONG Hash;
+
+
+
+
+
+ ULONG SecurityId;
+
+
+
+
+
+
+ ULONGLONG Offset;
+
+
+
+
+
+
+ ULONG Length;
+
+
+
+
+
+ UCHAR Descriptor[1];
+
+} SD_ENUM_SDS_ENTRY, *PSD_ENUM_SDS_ENTRY;
+
+typedef struct _SD_ENUM_SDS_OUTPUT {
+
+
+
+
+
+
+
+
+
+ ULONGLONG NextOffset;
+
+
+
+
+
+ ULONGLONG NumSDEntriesReturned;
+
+
+
+
+
+ ULONGLONG NumSDBytesReturned;
+
+
+
+
+
+
+
+
+
+ SD_ENUM_SDS_ENTRY SDEntry[1];
+
+} SD_ENUM_SDS_OUTPUT, *PSD_ENUM_SDS_OUTPUT;
+
+
+
+
+
+
+#pragma warning(push)
+#line 11805 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#pragma warning(disable:4201)
+
+typedef struct _SD_GLOBAL_CHANGE_INPUT
+{
+
+
+
+
+ ULONG Flags;
+
+
+
+
+
+
+ ULONG ChangeType;
+
+ union {
+
+ SD_CHANGE_MACHINE_SID_INPUT SdChange;
+ SD_QUERY_STATS_INPUT SdQueryStats;
+ SD_ENUM_SDS_INPUT SdEnumSds;
+ } ;
+
+} SD_GLOBAL_CHANGE_INPUT, *PSD_GLOBAL_CHANGE_INPUT;
+
+typedef struct _SD_GLOBAL_CHANGE_OUTPUT
+{
+
+
+
+
+
+ ULONG Flags;
+
+
+
+
+
+ ULONG ChangeType;
+
+ union {
+
+ SD_CHANGE_MACHINE_SID_OUTPUT SdChange;
+ SD_QUERY_STATS_OUTPUT SdQueryStats;
+ SD_ENUM_SDS_OUTPUT SdEnumSds;
+ } ;
+
+} SD_GLOBAL_CHANGE_OUTPUT, *PSD_GLOBAL_CHANGE_OUTPUT;
+
+
+#pragma warning(pop)
+
+
+#line 11860 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+typedef struct _LOOKUP_STREAM_FROM_CLUSTER_INPUT {
+
+
+
+
+ ULONG Flags;
+
+
+
+
+
+
+ ULONG NumberOfClusters;
+
+
+
+
+ LARGE_INTEGER Cluster[1];
+} LOOKUP_STREAM_FROM_CLUSTER_INPUT, *PLOOKUP_STREAM_FROM_CLUSTER_INPUT;
+
+typedef struct _LOOKUP_STREAM_FROM_CLUSTER_OUTPUT {
+
+
+
+
+ ULONG Offset;
+
+
+
+
+
+
+ ULONG NumberOfMatches;
+
+
+
+
+
+ ULONG BufferSizeRequired;
+} LOOKUP_STREAM_FROM_CLUSTER_OUTPUT, *PLOOKUP_STREAM_FROM_CLUSTER_OUTPUT;
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _LOOKUP_STREAM_FROM_CLUSTER_ENTRY {
+
+
+
+
+ ULONG OffsetToNext;
+
+
+
+
+ ULONG Flags;
+
+
+
+
+ LARGE_INTEGER Reserved;
+
+
+
+
+
+ LARGE_INTEGER Cluster;
+
+
+
+
+
+
+
+ WCHAR FileName[1];
+} LOOKUP_STREAM_FROM_CLUSTER_ENTRY, *PLOOKUP_STREAM_FROM_CLUSTER_ENTRY;
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_TYPE_NOTIFICATION_INPUT {
+
+
+
+
+
+
+ ULONG Flags;
+
+
+
+
+
+ ULONG NumFileTypeIDs;
+
+
+
+
+
+ GUID FileTypeID[1];
+
+} FILE_TYPE_NOTIFICATION_INPUT, *PFILE_TYPE_NOTIFICATION_INPUT;
+
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID FILE_TYPE_NOTIFICATION_GUID_PAGE_FILE;
+extern const GUID FILE_TYPE_NOTIFICATION_GUID_HIBERNATION_FILE;
+extern const GUID FILE_TYPE_NOTIFICATION_GUID_CRASHDUMP_FILE;
+
+
+
+
+
+typedef struct _CSV_MGMT_LOCK {
+ ULONG Flags;
+}CSV_MGMT_LOCK, *PCSV_MGMT_LOCK;
+
+
+
+
+
+
+
+typedef struct _CSV_NAMESPACE_INFO {
+
+ ULONG Version;
+ ULONG DeviceNumber;
+ LARGE_INTEGER StartingOffset;
+ ULONG SectorSize;
+
+} CSV_NAMESPACE_INFO, *PCSV_NAMESPACE_INFO;
+
+
+
+
+
+
+
+
+typedef enum _CSV_CONTROL_OP {
+ CsvControlStartRedirectFile = 0x02,
+ CsvControlStopRedirectFile = 0x03,
+ CsvControlQueryRedirectState = 0x04,
+ CsvControlQueryFileRevision = 0x06,
+ CsvControlQueryMdsPath = 0x08,
+ CsvControlQueryFileRevisionFileId128 = 0x09,
+ CsvControlQueryVolumeRedirectState = 0x0a,
+ CsvControlEnableUSNRangeModificationTracking = 0x0d,
+ CsvControlMarkHandleLocalVolumeMount = 0x0e,
+ CsvControlUnmarkHandleLocalVolumeMount = 0x0f,
+ CsvControlGetCsvFsMdsPathV2 = 0x12,
+ CsvControlDisableCaching = 0x13,
+ CsvControlEnableCaching = 0x14,
+ CsvControlStartForceDFO = 0x15,
+ CsvControlStopForceDFO = 0x16,
+ CsvControlQueryMdsPathNoPause = 0x17,
+ CsvControlSetVolumeId = 0x18,
+ CsvControlQueryVolumeId = 0x19,
+} CSV_CONTROL_OP, *PCSV_CONTROL_OP;
+
+typedef struct _CSV_CONTROL_PARAM {
+ CSV_CONTROL_OP Operation;
+ LONGLONG Unused;
+} CSV_CONTROL_PARAM, *PCSV_CONTROL_PARAM;
+
+
+
+
+typedef struct _CSV_QUERY_REDIRECT_STATE {
+ ULONG MdsNodeId;
+ ULONG DsNodeId;
+ BOOLEAN FileRedirected;
+} CSV_QUERY_REDIRECT_STATE, *PCSV_QUERY_REDIRECT_STATE;
+
+
+
+
+
+
+
+typedef struct _CSV_QUERY_FILE_REVISION {
+
+
+
+ LONGLONG FileId;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LONGLONG FileRevision[3];
+
+} CSV_QUERY_FILE_REVISION, *PCSV_QUERY_FILE_REVISION;
+
+
+
+
+
+
+
+typedef struct _CSV_QUERY_FILE_REVISION_FILE_ID_128 {
+
+
+
+ FILE_ID_128 FileId;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LONGLONG FileRevision[3];
+
+} CSV_QUERY_FILE_REVISION_FILE_ID_128, *PCSV_QUERY_FILE_REVISION_FILE_ID_128;
+
+
+
+
+
+
+
+typedef struct _CSV_QUERY_MDS_PATH {
+ ULONG MdsNodeId;
+ ULONG DsNodeId;
+ ULONG PathLength;
+ WCHAR Path[1];
+} CSV_QUERY_MDS_PATH, *PCSV_QUERY_MDS_PATH;
+
+typedef enum _CSVFS_DISK_CONNECTIVITY
+{
+ CsvFsDiskConnectivityNone = 0,
+ CsvFsDiskConnectivityMdsNodeOnly = 1,
+ CsvFsDiskConnectivitySubsetOfNodes = 2,
+ CsvFsDiskConnectivityAllNodes = 3
+} CSVFS_DISK_CONNECTIVITY, *PCSVFS_DISK_CONNECTIVITY;
+
+
+
+
+typedef struct _CSV_QUERY_VOLUME_REDIRECT_STATE {
+ ULONG MdsNodeId;
+ ULONG DsNodeId;
+ BOOLEAN IsDiskConnected;
+ BOOLEAN ClusterEnableDirectIo;
+ CSVFS_DISK_CONNECTIVITY DiskConnectivity;
+} CSV_QUERY_VOLUME_REDIRECT_STATE, *PCSV_QUERY_VOLUME_REDIRECT_STATE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _CSV_QUERY_MDS_PATH_V2 {
+
+
+
+
+ LONGLONG Version;
+
+
+
+
+ ULONG RequiredSize;
+
+
+
+
+
+ ULONG MdsNodeId;
+ ULONG DsNodeId;
+
+
+
+ ULONG Flags;
+
+
+
+ CSVFS_DISK_CONNECTIVITY DiskConnectivity;
+
+
+
+ GUID VolumeId;
+
+
+
+
+
+ ULONG IpAddressOffset;
+ ULONG IpAddressLength;
+
+
+
+
+
+ ULONG PathOffset;
+ ULONG PathLength;
+
+} CSV_QUERY_MDS_PATH_V2, *PCSV_QUERY_MDS_PATH_V2;
+
+
+
+
+typedef struct _CSV_SET_VOLUME_ID {
+ GUID VolumeId;
+} CSV_SET_VOLUME_ID, *PCSV_SET_VOLUME_ID;
+
+
+
+
+typedef struct _CSV_QUERY_VOLUME_ID {
+ GUID VolumeId;
+} CSV_QUERY_VOLUME_ID, *PCSV_QUERY_VOLUME_ID;
+
+
+
+
+
+
+typedef enum _LMR_QUERY_INFO_CLASS {
+ LMRQuerySessionInfo = 1,
+} LMR_QUERY_INFO_CLASS, *PLMR_QUERY_INFO_CLASS;
+
+typedef struct _LMR_QUERY_INFO_PARAM {
+ LMR_QUERY_INFO_CLASS Operation;
+} LMR_QUERY_INFO_PARAM, *PLMR_QUERY_INFO_PARAM;
+
+
+
+
+typedef struct _LMR_QUERY_SESSION_INFO {
+ UINT64 SessionId;
+} LMR_QUERY_SESSION_INFO, *PLMR_QUERY_SESSION_INFO;
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _CSV_QUERY_VETO_FILE_DIRECT_IO_OUTPUT {
+ ULONGLONG VetoedFromAltitudeIntegral;
+ ULONGLONG VetoedFromAltitudeDecimal;
+ WCHAR Reason[256];
+} CSV_QUERY_VETO_FILE_DIRECT_IO_OUTPUT, *PCSV_QUERY_VETO_FILE_DIRECT_IO_OUTPUT;
+
+#line 12268 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+typedef enum _STORAGE_RESERVE_ID {
+
+ StorageReserveIdNone = 0,
+ StorageReserveIdHard,
+ StorageReserveIdSoft,
+ StorageReserveIdUpdateScratch,
+
+ StorageReserveIdMax
+
+} STORAGE_RESERVE_ID, *PSTORAGE_RESERVE_ID;
+#line 12286 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+typedef struct _CSV_IS_OWNED_BY_CSVFS {
+ BOOLEAN OwnedByCSVFS;
+}CSV_IS_OWNED_BY_CSVFS, *PCSV_IS_OWNED_BY_CSVFS;
+
+
+
+
+
+
+
+typedef struct _FILE_LEVEL_TRIM_RANGE {
+
+
+
+
+
+ ULONGLONG Offset;
+
+
+
+
+
+ ULONGLONG Length;
+} FILE_LEVEL_TRIM_RANGE, *PFILE_LEVEL_TRIM_RANGE;
+
+
+
+
+
+typedef struct _FILE_LEVEL_TRIM {
+
+
+
+
+
+
+ ULONG Key;
+
+
+
+
+
+ ULONG NumRanges;
+
+
+
+
+
+ FILE_LEVEL_TRIM_RANGE Ranges[1];
+
+} FILE_LEVEL_TRIM, *PFILE_LEVEL_TRIM;
+
+
+
+
+
+typedef struct _FILE_LEVEL_TRIM_OUTPUT {
+
+
+
+
+
+
+ ULONG NumRangesProcessed;
+
+} FILE_LEVEL_TRIM_OUTPUT, *PFILE_LEVEL_TRIM_OUTPUT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _QUERY_FILE_LAYOUT_FILTER_TYPE {
+
+ QUERY_FILE_LAYOUT_FILTER_TYPE_NONE = 0,
+ QUERY_FILE_LAYOUT_FILTER_TYPE_CLUSTERS = 1,
+ QUERY_FILE_LAYOUT_FILTER_TYPE_FILEID = 2,
+
+ QUERY_FILE_LAYOUT_FILTER_TYPE_STORAGE_RESERVE_ID = 3,
+#line 12476 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+ QUERY_FILE_LAYOUT_NUM_FILTER_TYPES
+
+} QUERY_FILE_LAYOUT_FILTER_TYPE;
+
+typedef struct _CLUSTER_RANGE {
+
+
+
+
+
+ LARGE_INTEGER StartingCluster;
+
+
+
+
+ LARGE_INTEGER ClusterCount;
+
+} CLUSTER_RANGE, *PCLUSTER_RANGE;
+
+typedef struct _FILE_REFERENCE_RANGE {
+
+
+
+
+
+ ULONGLONG StartingFileReferenceNumber;
+
+
+
+
+
+ ULONGLONG EndingFileReferenceNumber;
+
+} FILE_REFERENCE_RANGE, *PFILE_REFERENCE_RANGE;
+
+typedef struct _QUERY_FILE_LAYOUT_INPUT {
+
+
+
+
+
+
+
+
+
+
+
+ union {
+ ULONG FilterEntryCount;
+ ULONG NumberOfPairs;
+ } ;
+
+
+
+
+ ULONG Flags;
+
+
+
+
+
+ QUERY_FILE_LAYOUT_FILTER_TYPE FilterType;
+
+
+
+
+
+ ULONG Reserved;
+
+
+
+
+
+
+ union {
+
+
+
+
+
+
+
+#line 12560 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ CLUSTER_RANGE ClusterRanges[1];
+
+
+
+
+
+
+
+#line 12569 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ FILE_REFERENCE_RANGE FileReferenceRanges[1];
+
+
+
+
+
+
+
+
+#line 12579 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ STORAGE_RESERVE_ID StorageReserveIds[1];
+#line 12581 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+ } Filter;
+
+} QUERY_FILE_LAYOUT_INPUT, *PQUERY_FILE_LAYOUT_INPUT;
+
+
+
+
+
+
+
+typedef struct _QUERY_FILE_LAYOUT_OUTPUT {
+
+
+
+
+
+
+ ULONG FileEntryCount;
+
+
+
+
+
+ ULONG FirstFileOffset;
+
+
+
+
+
+ ULONG Flags;
+
+
+
+
+ ULONG Reserved;
+
+} QUERY_FILE_LAYOUT_OUTPUT, *PQUERY_FILE_LAYOUT_OUTPUT;
+
+typedef struct _FILE_LAYOUT_ENTRY {
+
+
+
+
+
+ ULONG Version;
+
+
+
+
+
+ ULONG NextFileOffset;
+
+
+
+
+
+ ULONG Flags;
+
+
+
+
+ ULONG FileAttributes;
+
+
+
+
+ ULONGLONG FileReferenceNumber;
+
+
+
+
+
+
+ ULONG FirstNameOffset;
+
+
+
+
+
+
+ ULONG FirstStreamOffset;
+
+
+
+
+
+
+
+ ULONG ExtraInfoOffset;
+
+
+
+
+
+
+
+#line 12679 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ULONG ExtraInfoLength;
+#line 12695 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+} FILE_LAYOUT_ENTRY, *PFILE_LAYOUT_ENTRY;
+
+
+
+
+
+
+
+
+typedef struct _FILE_LAYOUT_NAME_ENTRY {
+
+
+
+
+
+ ULONG NextNameOffset;
+
+
+
+
+ ULONG Flags;
+
+
+
+
+ ULONGLONG ParentFileReferenceNumber;
+
+
+
+
+ ULONG FileNameLength;
+
+
+
+
+ ULONG Reserved;
+
+
+
+
+
+
+ WCHAR FileName[1];
+
+} FILE_LAYOUT_NAME_ENTRY, *PFILE_LAYOUT_NAME_ENTRY;
+
+typedef struct _FILE_LAYOUT_INFO_ENTRY {
+
+
+
+
+ struct {
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ ULONG FileAttributes;
+ } BasicInformation;
+
+
+
+
+ ULONG OwnerId;
+
+
+
+
+ ULONG SecurityId;
+
+
+
+
+ USN Usn;
+
+
+
+
+
+ STORAGE_RESERVE_ID StorageReserveId;
+#line 12783 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+} FILE_LAYOUT_INFO_ENTRY, *PFILE_LAYOUT_INFO_ENTRY;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _STREAM_LAYOUT_ENTRY {
+
+
+
+
+ ULONG Version;
+
+
+
+
+ ULONG NextStreamOffset;
+
+
+
+
+ ULONG Flags;
+
+
+
+
+
+
+
+ ULONG ExtentInformationOffset;
+
+
+
+
+
+ LARGE_INTEGER AllocationSize;
+
+
+
+
+ LARGE_INTEGER EndOfFile;
+
+
+
+
+
+ ULONG StreamInformationOffset;
+
+
+
+
+ ULONG AttributeTypeCode;
+
+
+
+
+ ULONG AttributeFlags;
+
+
+
+
+ ULONG StreamIdentifierLength;
+
+
+
+
+
+
+ WCHAR StreamIdentifier[1];
+
+} STREAM_LAYOUT_ENTRY, *PSTREAM_LAYOUT_ENTRY;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _STREAM_EXTENT_ENTRY {
+
+
+
+
+ ULONG Flags;
+
+ union {
+
+
+
+
+
+
+ RETRIEVAL_POINTERS_BUFFER RetrievalPointers;
+
+ } ExtentInformation;
+
+} STREAM_EXTENT_ENTRY, *PSTREAM_EXTENT_ENTRY;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FSCTL_GET_INTEGRITY_INFORMATION_BUFFER {
+ USHORT ChecksumAlgorithm;
+ USHORT Reserved;
+ ULONG Flags;
+ ULONG ChecksumChunkSizeInBytes;
+ ULONG ClusterSizeInBytes;
+} FSCTL_GET_INTEGRITY_INFORMATION_BUFFER, *PFSCTL_GET_INTEGRITY_INFORMATION_BUFFER;
+
+typedef struct _FSCTL_SET_INTEGRITY_INFORMATION_BUFFER {
+ USHORT ChecksumAlgorithm;
+ USHORT Reserved;
+ ULONG Flags;
+} FSCTL_SET_INTEGRITY_INFORMATION_BUFFER, *PFSCTL_SET_INTEGRITY_INFORMATION_BUFFER;
+
+
+
+
+
+
+typedef struct _FSCTL_SET_INTEGRITY_INFORMATION_BUFFER_EX {
+ UCHAR EnableIntegrity;
+ UCHAR KeepIntegrityStateUnchanged;
+ USHORT Reserved;
+ ULONG Flags;
+ UCHAR Version;
+ UCHAR Reserved2[7];
+} FSCTL_SET_INTEGRITY_INFORMATION_BUFFER_EX, *PFSCTL_SET_INTEGRITY_INFORMATION_BUFFER_EX;
+#line 12956 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+typedef struct _FSCTL_OFFLOAD_READ_INPUT {
+ ULONG Size;
+ ULONG Flags;
+ ULONG TokenTimeToLive;
+ ULONG Reserved;
+ ULONGLONG FileOffset;
+ ULONGLONG CopyLength;
+} FSCTL_OFFLOAD_READ_INPUT, *PFSCTL_OFFLOAD_READ_INPUT;
+
+typedef struct _FSCTL_OFFLOAD_READ_OUTPUT {
+ ULONG Size;
+ ULONG Flags;
+ ULONGLONG TransferLength;
+ UCHAR Token[512];
+} FSCTL_OFFLOAD_READ_OUTPUT, *PFSCTL_OFFLOAD_READ_OUTPUT;
+
+
+
+
+
+
+
+
+
+
+typedef struct _FSCTL_OFFLOAD_WRITE_INPUT {
+ ULONG Size;
+ ULONG Flags;
+ ULONGLONG FileOffset;
+ ULONGLONG CopyLength;
+ ULONGLONG TransferOffset;
+ UCHAR Token[512];
+} FSCTL_OFFLOAD_WRITE_INPUT, *PFSCTL_OFFLOAD_WRITE_INPUT;
+
+typedef struct _FSCTL_OFFLOAD_WRITE_OUTPUT {
+ ULONG Size;
+ ULONG Flags;
+ ULONGLONG LengthWritten;
+} FSCTL_OFFLOAD_WRITE_OUTPUT, *PFSCTL_OFFLOAD_WRITE_OUTPUT;
+
+
+
+
+
+
+
+
+typedef struct _SET_PURGE_FAILURE_MODE_INPUT {
+ ULONG Flags;
+} SET_PURGE_FAILURE_MODE_INPUT, *PSET_PURGE_FAILURE_MODE_INPUT;
+
+
+
+
+
+
+
+
+
+typedef struct _REPAIR_COPIES_INPUT {
+
+ ULONG Size;
+
+ ULONG Flags;
+
+ LARGE_INTEGER FileOffset;
+
+ ULONG Length;
+
+ ULONG SourceCopy;
+
+ ULONG NumberOfRepairCopies;
+
+ ULONG RepairCopies[1];
+
+} REPAIR_COPIES_INPUT, *PREPAIR_COPIES_INPUT;
+
+typedef struct _REPAIR_COPIES_OUTPUT {
+
+ ULONG Size;
+
+ NTSTATUS Status;
+
+ LARGE_INTEGER ResumeFileOffset;
+
+} REPAIR_COPIES_OUTPUT, *PREPAIR_COPIES_OUTPUT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 13075 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef struct _FILE_REGION_INFO {
+ LONGLONG FileOffset;
+ LONGLONG Length;
+ ULONG Usage;
+ ULONG Reserved;
+} FILE_REGION_INFO, *PFILE_REGION_INFO;
+
+typedef struct _FILE_REGION_OUTPUT {
+ ULONG Flags;
+ ULONG TotalRegionEntryCount;
+ ULONG RegionEntryCount;
+ ULONG Reserved;
+ FILE_REGION_INFO Region[1];
+} FILE_REGION_OUTPUT, *PFILE_REGION_OUTPUT;
+
+
+
+
+
+
+typedef struct _FILE_REGION_INPUT {
+
+ LONGLONG FileOffset;
+ LONGLONG Length;
+ ULONG DesiredUsage;
+
+} FILE_REGION_INPUT, *PFILE_REGION_INPUT;
+
+#line 13105 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _WRITE_USN_REASON_INPUT {
+
+ ULONG Flags;
+ ULONG UsnReasonToWrite;
+
+} WRITE_USN_REASON_INPUT, *PWRITE_USN_REASON_INPUT;
+
+
+
+
+
+#line 13133 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _FILE_STORAGE_TIER_MEDIA_TYPE {
+
+ FileStorageTierMediaTypeUnspecified = 0,
+ FileStorageTierMediaTypeDisk = 1,
+ FileStorageTierMediaTypeSsd = 2,
+ FileStorageTierMediaTypeScm = 4,
+ FileStorageTierMediaTypeMax
+
+} FILE_STORAGE_TIER_MEDIA_TYPE, *PFILE_STORAGE_TIER_MEDIA_TYPE;
+
+typedef enum _FILE_STORAGE_TIER_CLASS {
+
+ FileStorageTierClassUnspecified = 0,
+ FileStorageTierClassCapacity,
+ FileStorageTierClassPerformance,
+ FileStorageTierClassMax
+
+} FILE_STORAGE_TIER_CLASS, *PFILE_STORAGE_TIER_CLASS;
+
+typedef struct _FILE_STORAGE_TIER {
+
+
+
+
+
+ GUID Id;
+
+
+
+
+
+ WCHAR Name[(256)];
+
+
+
+
+
+ WCHAR Description[(256)];
+
+
+
+
+
+ ULONGLONG Flags;
+
+
+
+
+
+ ULONGLONG ProvisionedCapacity;
+
+
+
+
+
+ FILE_STORAGE_TIER_MEDIA_TYPE MediaType;
+
+
+
+
+
+ FILE_STORAGE_TIER_CLASS Class;
+
+} FILE_STORAGE_TIER, *PFILE_STORAGE_TIER;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FSCTL_QUERY_STORAGE_CLASSES_OUTPUT {
+
+
+
+
+
+
+
+ ULONG Version;
+
+
+
+
+
+
+ ULONG Size;
+
+
+
+
+
+ ULONG Flags;
+
+
+
+
+
+ ULONG TotalNumberOfTiers;
+
+
+
+
+
+ ULONG NumberOfTiersReturned;
+
+
+
+
+
+ FILE_STORAGE_TIER Tiers[1];
+
+} FSCTL_QUERY_STORAGE_CLASSES_OUTPUT, *PFSCTL_QUERY_STORAGE_CLASSES_OUTPUT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _STREAM_INFORMATION_ENTRY {
+
+
+
+
+ ULONG Version;
+
+
+
+
+ ULONG Flags;
+
+
+
+
+
+ union _StreamInformation {
+
+
+
+
+
+ struct _DesiredStorageClass {
+
+
+
+
+
+ FILE_STORAGE_TIER_CLASS Class;
+
+
+
+
+
+ ULONG Flags;
+
+ } DesiredStorageClass;
+
+
+ struct _DataStream {
+
+
+
+
+
+ USHORT Length;
+
+
+
+
+
+ USHORT Flags;
+
+
+
+
+
+ ULONG Reserved;
+
+
+
+
+
+ ULONGLONG Vdl;
+
+ } DataStream;
+
+ struct _Reparse {
+
+
+
+
+
+ USHORT Length;
+
+
+
+
+
+ USHORT Flags;
+
+
+
+
+
+ ULONG ReparseDataSize;
+
+
+
+
+
+ ULONG ReparseDataOffset;
+
+ } Reparse;
+
+ struct _Ea {
+
+
+
+
+
+ USHORT Length;
+
+
+
+
+
+ USHORT Flags;
+
+
+
+
+
+ ULONG EaSize;
+
+
+
+
+
+ ULONG EaInformationOffset;
+
+ } Ea;
+#line 13423 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+ } StreamInformation;
+
+} STREAM_INFORMATION_ENTRY, *PSTREAM_INFORMATION_ENTRY;
+
+
+
+
+
+
+
+
+
+
+typedef struct _FSCTL_QUERY_REGION_INFO_INPUT {
+
+ ULONG Version;
+ ULONG Size;
+
+ ULONG Flags;
+
+ ULONG NumberOfTierIds;
+ GUID TierIds[1];
+
+} FSCTL_QUERY_REGION_INFO_INPUT, *PFSCTL_QUERY_REGION_INFO_INPUT;
+
+
+
+
+
+
+
+typedef struct _FILE_STORAGE_TIER_REGION {
+
+ GUID TierId;
+
+ ULONGLONG Offset;
+ ULONGLONG Length;
+
+} FILE_STORAGE_TIER_REGION, *PFILE_STORAGE_TIER_REGION;
+
+
+
+
+
+
+
+
+typedef struct _FSCTL_QUERY_REGION_INFO_OUTPUT {
+
+ ULONG Version;
+ ULONG Size;
+
+ ULONG Flags;
+ ULONG Reserved;
+
+ ULONGLONG Alignment;
+
+ ULONG TotalNumberOfRegions;
+ ULONG NumberOfRegionsReturned;
+
+ FILE_STORAGE_TIER_REGION Regions[1];
+
+} FSCTL_QUERY_REGION_INFO_OUTPUT, *PFSCTL_QUERY_REGION_INFO_OUTPUT;
+
+
+
+
+
+
+
+typedef struct _FILE_DESIRED_STORAGE_CLASS_INFORMATION {
+
+
+
+
+
+ FILE_STORAGE_TIER_CLASS Class;
+
+
+
+
+
+ ULONG Flags;
+
+} FILE_DESIRED_STORAGE_CLASS_INFORMATION, *PFILE_DESIRED_STORAGE_CLASS_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _DUPLICATE_EXTENTS_DATA {
+ HANDLE FileHandle;
+ LARGE_INTEGER SourceFileOffset;
+ LARGE_INTEGER TargetFileOffset;
+ LARGE_INTEGER ByteCount;
+} DUPLICATE_EXTENTS_DATA, *PDUPLICATE_EXTENTS_DATA;
+
+
+
+
+
+
+
+typedef struct _DUPLICATE_EXTENTS_DATA32 {
+ UINT32 FileHandle;
+ LARGE_INTEGER SourceFileOffset;
+ LARGE_INTEGER TargetFileOffset;
+ LARGE_INTEGER ByteCount;
+} DUPLICATE_EXTENTS_DATA32, *PDUPLICATE_EXTENTS_DATA32;
+
+#line 13544 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 13546 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+#line 13557 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef struct _DUPLICATE_EXTENTS_DATA_EX {
+ SIZE_T Size;
+ HANDLE FileHandle;
+ LARGE_INTEGER SourceFileOffset;
+ LARGE_INTEGER TargetFileOffset;
+ LARGE_INTEGER ByteCount;
+ ULONG Flags;
+} DUPLICATE_EXTENTS_DATA_EX, *PDUPLICATE_EXTENTS_DATA_EX;
+
+
+
+
+
+
+
+typedef struct _DUPLICATE_EXTENTS_DATA_EX32 {
+ ULONG32 Size;
+ ULONG32 FileHandle;
+ LARGE_INTEGER SourceFileOffset;
+ LARGE_INTEGER TargetFileOffset;
+ LARGE_INTEGER ByteCount;
+ ULONG Flags;
+} DUPLICATE_EXTENTS_DATA_EX32, *PDUPLICATE_EXTENTS_DATA_EX32;
+
+#line 13583 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 13585 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+typedef enum _DUPLICATE_EXTENTS_STATE {
+
+ FileSnapStateInactive = 0,
+ FileSnapStateSource,
+ FileSnapStateTarget,
+
+} DUPLICATE_EXTENTS_STATE, *PDUPLICATE_EXTENTS_STATE;
+
+typedef struct _ASYNC_DUPLICATE_EXTENTS_STATUS {
+
+ ULONG Version;
+
+ DUPLICATE_EXTENTS_STATE State;
+
+ ULONGLONG SourceFileOffset;
+ ULONGLONG TargetFileOffset;
+ ULONGLONG ByteCount;
+
+ ULONGLONG BytesDuplicated;
+
+} ASYNC_DUPLICATE_EXTENTS_STATUS, *PASYNC_DUPLICATE_EXTENTS_STATUS;
+
+
+
+#line 13617 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+typedef enum _REFS_SMR_VOLUME_GC_STATE {
+
+ SmrGcStateInactive = 0,
+ SmrGcStatePaused = 1,
+ SmrGcStateActive = 2,
+ SmrGcStateActiveFullSpeed = 3,
+
+} REFS_SMR_VOLUME_GC_STATE, *PREFS_SMR_VOLUME_GC_STATE;
+
+typedef struct _REFS_SMR_VOLUME_INFO_OUTPUT {
+
+ ULONG Version;
+ ULONG Flags;
+
+ LARGE_INTEGER SizeOfRandomlyWritableTier;
+ LARGE_INTEGER FreeSpaceInRandomlyWritableTier;
+ LARGE_INTEGER SizeofSMRTier;
+ LARGE_INTEGER FreeSpaceInSMRTier;
+ LARGE_INTEGER UsableFreeSpaceInSMRTier;
+
+ REFS_SMR_VOLUME_GC_STATE VolumeGcState;
+ NTSTATUS VolumeGcLastStatus;
+
+
+
+
+
+ ULONG CurrentGcBandFillPercentage;
+
+ ULONGLONG Unused[6];
+
+} REFS_SMR_VOLUME_INFO_OUTPUT, *PREFS_SMR_VOLUME_INFO_OUTPUT;
+
+
+
+
+
+
+
+typedef enum _REFS_SMR_VOLUME_GC_ACTION {
+
+ SmrGcActionStart = 1,
+ SmrGcActionStartFullSpeed = 2,
+ SmrGcActionPause = 3,
+ SmrGcActionStop = 4,
+
+} REFS_SMR_VOLUME_GC_ACTION, *PREFS_SMR_VOLUME_GC_ACTION;
+
+typedef enum _REFS_SMR_VOLUME_GC_METHOD {
+
+ SmrGcMethodCompaction = 1,
+ SmrGcMethodCompression = 2,
+ SmrGcMethodRotation = 3,
+
+} REFS_SMR_VOLUME_GC_METHOD, *PREFS_SMR_VOLUME_GC_METHOD;
+
+typedef struct _REFS_SMR_VOLUME_GC_PARAMETERS {
+
+ ULONG Version;
+ ULONG Flags;
+
+ REFS_SMR_VOLUME_GC_ACTION Action;
+ REFS_SMR_VOLUME_GC_METHOD Method;
+
+ ULONG IoGranularity;
+ ULONG CompressionFormat;
+
+ ULONGLONG Unused[8];
+
+} REFS_SMR_VOLUME_GC_PARAMETERS, *PREFS_SMR_VOLUME_GC_PARAMETERS;
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _STREAMS_QUERY_PARAMETERS_OUTPUT_BUFFER {
+
+ ULONG OptimalWriteSize;
+ ULONG StreamGranularitySize;
+ ULONG StreamIdMin;
+ ULONG StreamIdMax;
+
+} STREAMS_QUERY_PARAMETERS_OUTPUT_BUFFER, *PSTREAMS_QUERY_PARAMETERS_OUTPUT_BUFFER;
+
+
+
+
+
+
+
+
+typedef struct _STREAMS_ASSOCIATE_ID_INPUT_BUFFER {
+
+ ULONG Flags;
+ ULONG StreamId;
+
+} STREAMS_ASSOCIATE_ID_INPUT_BUFFER, *PSTREAMS_ASSOCIATE_ID_INPUT_BUFFER;
+
+
+
+
+
+typedef struct _STREAMS_QUERY_ID_OUTPUT_BUFFER {
+
+ ULONG StreamId;
+
+} STREAMS_QUERY_ID_OUTPUT_BUFFER, *PSTREAMS_QUERY_ID_OUTPUT_BUFFER;
+
+#line 13743 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+typedef struct _QUERY_BAD_RANGES_INPUT_RANGE {
+
+
+
+
+
+ ULONGLONG StartOffset;
+
+
+
+
+
+ ULONGLONG LengthInBytes;
+
+} QUERY_BAD_RANGES_INPUT_RANGE, *PQUERY_BAD_RANGES_INPUT_RANGE;
+
+
+
+
+
+
+
+typedef struct _QUERY_BAD_RANGES_INPUT {
+
+ ULONG Flags;
+
+
+
+
+
+ ULONG NumRanges;
+
+
+
+
+
+
+
+
+
+ QUERY_BAD_RANGES_INPUT_RANGE Ranges[1];
+
+} QUERY_BAD_RANGES_INPUT, *PQUERY_BAD_RANGES_INPUT;
+
+typedef struct _QUERY_BAD_RANGES_OUTPUT_RANGE {
+
+
+
+
+
+ ULONG Flags;
+
+ ULONG Reserved;
+
+
+
+
+
+ ULONGLONG StartOffset;
+
+
+
+
+
+ ULONGLONG LengthInBytes;
+
+} QUERY_BAD_RANGES_OUTPUT_RANGE, *PQUERY_BAD_RANGES_OUTPUT_RANGE;
+
+
+
+
+
+typedef struct _QUERY_BAD_RANGES_OUTPUT {
+
+ ULONG Flags;
+
+
+
+
+
+
+ ULONG NumBadRanges;
+
+
+
+
+
+
+
+
+
+ ULONGLONG NextOffsetToLookUp;
+
+
+
+
+
+
+ QUERY_BAD_RANGES_OUTPUT_RANGE BadRanges[1];
+
+} QUERY_BAD_RANGES_OUTPUT, *PQUERY_BAD_RANGES_OUTPUT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _SET_DAX_ALLOC_ALIGNMENT_HINT_INPUT {
+
+ ULONG Flags;
+
+
+
+
+
+
+
+
+
+
+ ULONG AlignmentShift;
+
+
+
+
+
+
+
+
+
+ ULONGLONG FileOffsetToAlign;
+
+
+
+
+
+
+
+
+
+ ULONG FallbackAlignmentShift;
+#line 13904 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+} SET_DAX_ALLOC_ALIGNMENT_HINT_INPUT, *PSET_DAX_ALLOC_ALIGNMENT_HINT_INPUT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 13926 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+typedef enum _VIRTUAL_STORAGE_BEHAVIOR_CODE {
+
+ VirtualStorageBehaviorUndefined = 0,
+ VirtualStorageBehaviorCacheWriteThrough = 1,
+ VirtualStorageBehaviorCacheWriteBack = 2,
+ VirtualStorageBehaviorStopIoProcessing = 3,
+ VirtualStorageBehaviorRestartIoProcessing = 4
+
+} VIRTUAL_STORAGE_BEHAVIOR_CODE, *PVIRTUAL_STORAGE_BEHAVIOR_CODE;
+
+typedef struct _VIRTUAL_STORAGE_SET_BEHAVIOR_INPUT {
+
+ ULONG Size;
+ VIRTUAL_STORAGE_BEHAVIOR_CODE BehaviorCode;
+
+} VIRTUAL_STORAGE_SET_BEHAVIOR_INPUT, *PVIRTUAL_STORAGE_SET_BEHAVIOR_INPUT;
+
+
+
+
+
+typedef struct _ENCRYPTION_KEY_CTRL_INPUT {
+
+ ULONG HeaderSize;
+
+ ULONG StructureSize;
+
+ USHORT KeyOffset;
+
+
+ USHORT KeySize;
+
+
+ ULONG DplLock;
+
+ ULONGLONG DplUserId;
+
+ ULONGLONG DplCredentialId;
+
+} ENCRYPTION_KEY_CTRL_INPUT, *PENCRYPTION_KEY_CTRL_INPUT;
+
+#line 13976 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _WOF_EXTERNAL_INFO {
+ ULONG Version;
+ ULONG Provider;
+} WOF_EXTERNAL_INFO, *PWOF_EXTERNAL_INFO;
+
+typedef struct _WOF_EXTERNAL_FILE_ID {
+ FILE_ID_128 FileId;
+} WOF_EXTERNAL_FILE_ID, *PWOF_EXTERNAL_FILE_ID;
+
+typedef struct _WOF_VERSION_INFO {
+ ULONG WofVersion;
+} WOF_VERSION_INFO, *PWOF_VERSION_INFO;
+
+
+
+
+
+
+
+#line 14009 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+typedef struct _WIM_PROVIDER_EXTERNAL_INFO {
+ ULONG Version;
+ ULONG Flags;
+ LARGE_INTEGER DataSourceId;
+ UCHAR ResourceHash[20];
+} WIM_PROVIDER_EXTERNAL_INFO, *PWIM_PROVIDER_EXTERNAL_INFO;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _WIM_PROVIDER_ADD_OVERLAY_INPUT {
+ ULONG WimType;
+ ULONG WimIndex;
+ ULONG WimFileNameOffset;
+ ULONG WimFileNameLength;
+} WIM_PROVIDER_ADD_OVERLAY_INPUT, *PWIM_PROVIDER_ADD_OVERLAY_INPUT;
+
+typedef struct _WIM_PROVIDER_UPDATE_OVERLAY_INPUT {
+ LARGE_INTEGER DataSourceId;
+ ULONG WimFileNameOffset;
+ ULONG WimFileNameLength;
+} WIM_PROVIDER_UPDATE_OVERLAY_INPUT, *PWIM_PROVIDER_UPDATE_OVERLAY_INPUT;
+
+typedef struct _WIM_PROVIDER_REMOVE_OVERLAY_INPUT {
+ LARGE_INTEGER DataSourceId;
+} WIM_PROVIDER_REMOVE_OVERLAY_INPUT, *PWIM_PROVIDER_REMOVE_OVERLAY_INPUT;
+
+typedef struct _WIM_PROVIDER_SUSPEND_OVERLAY_INPUT {
+ LARGE_INTEGER DataSourceId;
+} WIM_PROVIDER_SUSPEND_OVERLAY_INPUT, *PWIM_PROVIDER_SUSPEND_OVERLAY_INPUT;
+
+typedef struct _WIM_PROVIDER_OVERLAY_ENTRY {
+ ULONG NextEntryOffset;
+ LARGE_INTEGER DataSourceId;
+ GUID WimGuid;
+ ULONG WimFileNameOffset;
+ ULONG WimType;
+ ULONG WimIndex;
+ ULONG Flags;
+} WIM_PROVIDER_OVERLAY_ENTRY, *PWIM_PROVIDER_OVERLAY_ENTRY;
+
+#line 14067 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_PROVIDER_EXTERNAL_INFO_V0 {
+ ULONG Version;
+ ULONG Algorithm;
+} FILE_PROVIDER_EXTERNAL_INFO_V0, *PFILE_PROVIDER_EXTERNAL_INFO_V0;
+
+typedef struct _FILE_PROVIDER_EXTERNAL_INFO_V1 {
+ ULONG Version;
+ ULONG Algorithm;
+ ULONG Flags;
+} FILE_PROVIDER_EXTERNAL_INFO_V1, *PFILE_PROVIDER_EXTERNAL_INFO_V1;
+
+typedef FILE_PROVIDER_EXTERNAL_INFO_V1 FILE_PROVIDER_EXTERNAL_INFO;
+typedef PFILE_PROVIDER_EXTERNAL_INFO_V1 PFILE_PROVIDER_EXTERNAL_INFO;
+
+#line 14102 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+typedef struct _CONTAINER_VOLUME_STATE {
+ ULONG Flags;
+} CONTAINER_VOLUME_STATE, *PCONTAINER_VOLUME_STATE;
+
+
+
+
+typedef struct _CONTAINER_ROOT_INFO_INPUT {
+ ULONG Flags;
+} CONTAINER_ROOT_INFO_INPUT, *PCONTAINER_ROOT_INFO_INPUT;
+
+typedef struct _CONTAINER_ROOT_INFO_OUTPUT {
+ USHORT ContainerRootIdLength;
+ UCHAR ContainerRootId[1];
+} CONTAINER_ROOT_INFO_OUTPUT, *PCONTAINER_ROOT_INFO_OUTPUT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 14136 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+typedef struct _VIRTUALIZATION_INSTANCE_INFO_INPUT {
+ ULONG NumberOfWorkerThreads;
+ ULONG Flags;
+} VIRTUALIZATION_INSTANCE_INFO_INPUT, *PVIRTUALIZATION_INSTANCE_INFO_INPUT;
+
+
+
+typedef struct _VIRTUALIZATION_INSTANCE_INFO_INPUT_EX {
+ USHORT HeaderSize;
+ ULONG Flags;
+ ULONG NotificationInfoSize;
+ USHORT NotificationInfoOffset;
+ USHORT ProviderMajorVersion;
+} VIRTUALIZATION_INSTANCE_INFO_INPUT_EX, *PVIRTUALIZATION_INSTANCE_INFO_INPUT_EX;
+
+typedef struct _VIRTUALIZATION_INSTANCE_INFO_OUTPUT {
+ GUID VirtualizationInstanceID;
+} VIRTUALIZATION_INSTANCE_INFO_OUTPUT, *PVIRTUALIZATION_INSTANCE_INFO_OUTPUT;
+
+
+
+
+
+typedef struct _GET_FILTER_FILE_IDENTIFIER_INPUT {
+ USHORT AltitudeLength;
+ WCHAR Altitude[1];
+} GET_FILTER_FILE_IDENTIFIER_INPUT, *PGET_FILTER_FILE_IDENTIFIER_INPUT;
+
+typedef struct _GET_FILTER_FILE_IDENTIFIER_OUTPUT {
+ USHORT FilterFileIdentifierLength;
+ UCHAR FilterFileIdentifier[1];
+} GET_FILTER_FILE_IDENTIFIER_OUTPUT, *PGET_FILTER_FILE_IDENTIFIER_OUTPUT;
+
+#line 14174 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4201)
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _FS_BPIO_OPERATIONS {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FS_BPIO_OP_ENABLE = 1,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FS_BPIO_OP_DISABLE = 2,
+
+
+
+
+
+
+
+
+
+ FS_BPIO_OP_QUERY = 3,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FS_BPIO_OP_VOLUME_STACK_PAUSE = 4,
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FS_BPIO_OP_VOLUME_STACK_RESUME = 5,
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FS_BPIO_OP_STREAM_PAUSE = 6,
+
+
+
+
+
+
+
+
+
+
+
+ FS_BPIO_OP_STREAM_RESUME = 7,
+
+
+
+
+
+
+ FS_BPIO_OP_GET_INFO = 8,
+
+
+
+
+
+ FS_BPIO_OP_MAX_OPERATION
+
+} FS_BPIO_OPERATIONS;
+
+
+
+
+
+
+typedef enum _FS_BPIO_INFLAGS {
+
+ FSBPIO_INFL_None = 0,
+
+
+
+
+
+
+
+ FSBPIO_INFL_SKIP_STORAGE_STACK_QUERY = 1,
+
+} FS_BPIO_INFLAGS;
+
+
+
+
+
+
+typedef struct _FS_BPIO_INPUT {
+
+
+
+
+
+ FS_BPIO_OPERATIONS Operation;
+
+
+
+
+
+ FS_BPIO_INFLAGS InFlags;
+
+
+
+
+
+ ULONGLONG Reserved1;
+ ULONGLONG Reserved2;
+
+} FS_BPIO_INPUT, *PFS_BPIO_INPUT;
+
+
+
+
+
+
+typedef enum _FS_BPIO_OUTFLAGS {
+
+ FSBPIO_OUTFL_None = 0,
+
+
+
+
+
+ FSBPIO_OUTFL_VOLUME_STACK_BYPASS_PAUSED = 0x00000001,
+
+
+
+
+
+ FSBPIO_OUTFL_STREAM_BYPASS_PAUSED = 0x00000002,
+
+
+
+
+
+
+
+ FSBPIO_OUTFL_FILTER_ATTACH_BLOCKED = 0x00000004,
+
+
+
+
+
+
+ FSBPIO_OUTFL_COMPATIBLE_STORAGE_DRIVER = 0x00000008,
+
+} FS_BPIO_OUTFLAGS;
+
+
+
+
+
+
+
+typedef struct _FS_BPIO_RESULTS {
+
+
+
+
+
+
+
+ NTSTATUS OpStatus;
+
+
+
+
+
+
+
+
+
+
+
+ USHORT FailingDriverNameLen;
+ WCHAR FailingDriverName[32];
+
+
+
+
+
+
+
+
+
+
+
+
+ USHORT FailureReasonLen;
+ WCHAR FailureReason[128];
+
+} FS_BPIO_RESULTS, *PFS_BPIO_RESULTS;
+
+
+
+
+
+
+typedef struct _FS_BPIO_INFO {
+
+
+
+
+
+ ULONG ActiveBypassIoCount;
+
+
+
+
+
+ USHORT StorageDriverNameLen;
+ WCHAR StorageDriverName[32];
+
+} FS_BPIO_INFO, *PFS_BPIO_INFO;
+
+
+
+
+
+typedef struct _FS_BPIO_OUTPUT {
+
+
+
+
+
+
+ FS_BPIO_OPERATIONS Operation;
+
+
+
+
+
+ FS_BPIO_OUTFLAGS OutFlags;
+
+
+
+
+
+ ULONGLONG Reserved1;
+ ULONGLONG Reserved2;
+
+
+
+
+
+ union {
+ FS_BPIO_RESULTS Enable;
+ FS_BPIO_RESULTS Query;
+ FS_BPIO_RESULTS VolumeStackResume;
+ FS_BPIO_RESULTS StreamResume;
+ FS_BPIO_INFO GetInfo;
+ };
+
+} FS_BPIO_OUTPUT, *PFS_BPIO_OUTPUT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(pop)
+
+#line 14534 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+#line 14540 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#line 14559 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#pragma warning(disable:4201)
+
+
+
+
+
+
+#line 14567 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+typedef struct _REPARSE_DATA_BUFFER {
+ ULONG ReparseTag;
+ USHORT ReparseDataLength;
+ USHORT Reserved;
+
+
+ union {
+ struct {
+ USHORT SubstituteNameOffset;
+ USHORT SubstituteNameLength;
+ USHORT PrintNameOffset;
+ USHORT PrintNameLength;
+ ULONG Flags;
+ WCHAR PathBuffer[1];
+ } SymbolicLinkReparseBuffer;
+ struct {
+ USHORT SubstituteNameOffset;
+ USHORT SubstituteNameLength;
+ USHORT PrintNameOffset;
+ USHORT PrintNameLength;
+ WCHAR PathBuffer[1];
+ } MountPointReparseBuffer;
+ struct {
+ UCHAR DataBuffer[1];
+ } GenericReparseBuffer;
+ } ;
+} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
+
+
+#pragma warning(pop)
+
+
+#line 14604 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _REPARSE_GUID_DATA_BUFFER {
+ ULONG ReparseTag;
+ USHORT ReparseDataLength;
+ USHORT Reserved;
+ GUID ReparseGuid;
+ struct {
+ UCHAR DataBuffer[1];
+ } GenericReparseBuffer;
+} REPARSE_GUID_DATA_BUFFER, *PREPARSE_GUID_DATA_BUFFER;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma pack(4)
+
+typedef struct _REPARSE_INDEX_KEY {
+
+
+
+
+
+ ULONG FileReparseTag;
+
+
+
+
+
+ LARGE_INTEGER FileId;
+
+} REPARSE_INDEX_KEY, *PREPARSE_INDEX_KEY;
+
+#pragma pack()
+
+
+
+
+
+
+
+
+
+
+typedef struct _REPARSE_DATA_BUFFER_EX {
+
+ ULONG Flags;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ULONG ExistingReparseTag;
+
+
+
+
+
+
+
+
+
+
+
+
+ GUID ExistingReparseGuid;
+
+
+
+
+
+ ULONGLONG Reserved;
+
+
+
+
+
+ union {
+
+ REPARSE_DATA_BUFFER ReparseDataBuffer;
+ REPARSE_GUID_DATA_BUFFER ReparseGuidDataBuffer;
+
+ } ;
+
+} REPARSE_DATA_BUFFER_EX, *PREPARSE_DATA_BUFFER_EX;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 15618 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 15661 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+#line 15668 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#line 15669 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 15683 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+#line 15691 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef struct _SCRUB_DATA_INPUT {
+
+
+
+
+
+ ULONG Size;
+
+
+
+
+
+
+
+
+ ULONG Flags;
+
+
+
+
+
+
+
+ ULONG MaximumIos;
+
+
+
+
+
+
+
+ ULONG ObjectId[4];
+
+
+
+
+
+
+
+ ULONGLONG StartingByteOffset;
+
+ ULONGLONG ByteCount;
+
+
+
+
+
+ ULONG Reserved[36];
+
+
+
+
+
+#line 15746 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+ UCHAR ResumeContext[1040];
+
+} SCRUB_DATA_INPUT, *PSCRUB_DATA_INPUT;
+
+
+
+typedef struct _SCRUB_PARITY_EXTENT {
+
+ LONGLONG Offset;
+
+ ULONGLONG Length;
+
+} SCRUB_PARITY_EXTENT, *PSCRUB_PARITY_EXTENT;
+
+typedef struct _SCRUB_PARITY_EXTENT_DATA {
+
+
+
+
+
+ USHORT Size;
+
+
+
+
+
+ USHORT Flags;
+
+
+
+
+
+ USHORT NumberOfParityExtents;
+
+
+
+
+
+ USHORT MaximumNumberOfParityExtents;
+
+
+
+
+
+ SCRUB_PARITY_EXTENT ParityExtents[1];
+
+} SCRUB_PARITY_EXTENT_DATA, *PSCRUB_PARITY_EXTENT_DATA;
+
+#line 15802 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef struct _SCRUB_DATA_OUTPUT {
+
+
+
+
+
+ ULONG Size;
+
+
+
+
+
+
+
+
+
+ ULONG Flags;
+
+
+
+
+
+ ULONG Status;
+
+
+
+
+
+
+ ULONGLONG ErrorFileOffset;
+
+
+
+
+
+
+ ULONGLONG ErrorLength;
+
+
+
+
+
+ ULONGLONG NumberOfBytesRepaired;
+
+
+
+
+
+ ULONGLONG NumberOfBytesFailed;
+
+
+
+
+
+ ULONGLONG InternalFileReference;
+
+
+
+
+
+
+
+
+
+
+ USHORT ResumeContextLength;
+
+
+
+
+
+
+
+ USHORT ParityExtentDataOffset;
+
+
+
+
+
+
+
+ ULONGLONG NextStartingByteOffset;
+
+ ULONGLONG ValidDataLength;
+
+ ULONG Reserved[4];
+
+
+
+
+
+
+
+
+#line 15898 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+#line 15908 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+ ULONGLONG NumberOfMetadataBytesProcessed;
+
+
+
+
+
+ ULONGLONG NumberOfDataBytesProcessed;
+
+
+
+
+
+ ULONGLONG TotalNumberOfMetadataBytesInUse;
+
+
+
+
+
+ ULONGLONG TotalNumberOfDataBytesInUse;
+
+
+
+
+
+#line 15940 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+ ULONGLONG DataBytesSkippedDueToNoAllocation;
+
+
+
+
+
+ ULONGLONG DataBytesSkippedDueToInvalidRun;
+
+
+
+
+
+ ULONGLONG DataBytesSkippedDueToIntegrityStream;
+
+
+
+
+
+ ULONGLONG DataBytesSkippedDueToRegionBeingClean;
+
+
+
+
+
+ ULONGLONG DataBytesSkippedDueToLockConflict;
+
+
+
+
+
+ ULONGLONG DataBytesSkippedDueToNoScrubDataFlag;
+
+
+
+
+
+ ULONGLONG DataBytesSkippedDueToNoScrubNonIntegrityStreamFlag;
+
+
+
+
+
+ ULONGLONG DataBytesScrubbed;
+
+
+
+
+
+#line 15996 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UCHAR ResumeContext[1040];
+
+} SCRUB_DATA_OUTPUT, *PSCRUB_DATA_OUTPUT;
+
+#line 16015 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+typedef enum _SharedVirtualDiskSupportType
+{
+
+
+
+ SharedVirtualDisksUnsupported = 0,
+
+
+
+
+ SharedVirtualDisksSupported = 1,
+
+
+
+
+
+ SharedVirtualDiskSnapshotsSupported = 3,
+
+
+
+
+
+ SharedVirtualDiskCDPSnapshotsSupported = 7
+} SharedVirtualDiskSupportType;
+
+typedef enum _SharedVirtualDiskHandleState
+{
+
+
+
+ SharedVirtualDiskHandleStateNone = 0,
+
+
+
+
+
+ SharedVirtualDiskHandleStateFileShared = 1,
+
+
+
+
+
+ SharedVirtualDiskHandleStateHandleShared = 3
+} SharedVirtualDiskHandleState;
+
+
+
+
+
+typedef struct _SHARED_VIRTUAL_DISK_SUPPORT {
+
+
+
+
+ SharedVirtualDiskSupportType SharedVirtualDiskSupport;
+
+
+
+
+
+ SharedVirtualDiskHandleState HandleState;
+} SHARED_VIRTUAL_DISK_SUPPORT, *PSHARED_VIRTUAL_DISK_SUPPORT;
+
+
+
+
+
+
+
+#line 16094 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _REARRANGE_FILE_DATA {
+
+
+
+
+
+ ULONGLONG SourceStartingOffset;
+
+
+
+
+ ULONGLONG TargetOffset;
+
+
+
+
+
+ HANDLE SourceFileHandle;
+
+
+
+
+ ULONG Length;
+
+
+
+
+ ULONG Flags;
+
+} REARRANGE_FILE_DATA, *PREARRANGE_FILE_DATA;
+
+
+
+
+
+
+typedef struct _REARRANGE_FILE_DATA32 {
+
+ ULONGLONG SourceStartingOffset;
+ ULONGLONG TargetOffset;
+ UINT32 SourceFileHandle;
+ ULONG Length;
+ ULONG Flags;
+
+} REARRANGE_FILE_DATA32, *PREARRANGE_FILE_DATA32;
+#line 16151 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 16153 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _SHUFFLE_FILE_DATA {
+
+ LONGLONG StartingOffset;
+ LONGLONG Length;
+ ULONG Flags;
+
+} SHUFFLE_FILE_DATA, *PSHUFFLE_FILE_DATA;
+
+#line 16174 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_PIPE_ASSIGN_EVENT_BUFFER {
+ HANDLE EventHandle;
+ ULONG KeyValue;
+} FILE_PIPE_ASSIGN_EVENT_BUFFER, *PFILE_PIPE_ASSIGN_EVENT_BUFFER;
+
+
+
+typedef struct _FILE_PIPE_PEEK_BUFFER {
+ ULONG NamedPipeState;
+ ULONG ReadDataAvailable;
+ ULONG NumberOfMessages;
+ ULONG MessageLength;
+ CHAR Data[1];
+} FILE_PIPE_PEEK_BUFFER, *PFILE_PIPE_PEEK_BUFFER;
+
+
+
+typedef struct _FILE_PIPE_EVENT_BUFFER {
+ ULONG NamedPipeState;
+ ULONG EntryType;
+ ULONG ByteCount;
+ ULONG KeyValue;
+ ULONG NumberRequests;
+} FILE_PIPE_EVENT_BUFFER, *PFILE_PIPE_EVENT_BUFFER;
+
+
+
+typedef struct _FILE_PIPE_WAIT_FOR_BUFFER {
+ LARGE_INTEGER Timeout;
+ ULONG NameLength;
+ BOOLEAN TimeoutSpecified;
+ WCHAR Name[1];
+} FILE_PIPE_WAIT_FOR_BUFFER, *PFILE_PIPE_WAIT_FOR_BUFFER;
+
+
+
+typedef struct _FILE_PIPE_CLIENT_PROCESS_BUFFER {
+
+ PVOID ClientSession;
+ PVOID ClientProcess;
+
+
+
+#line 16302 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+} FILE_PIPE_CLIENT_PROCESS_BUFFER, *PFILE_PIPE_CLIENT_PROCESS_BUFFER;
+
+
+
+typedef struct _FILE_PIPE_CLIENT_PROCESS_BUFFER_V2 {
+ ULONGLONG ClientSession;
+
+ PVOID ClientProcess;
+
+
+#line 16313 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+} FILE_PIPE_CLIENT_PROCESS_BUFFER_V2, *PFILE_PIPE_CLIENT_PROCESS_BUFFER_V2;
+
+
+
+
+
+
+typedef struct _FILE_PIPE_CLIENT_PROCESS_BUFFER_EX {
+
+ PVOID ClientSession;
+ PVOID ClientProcess;
+
+
+
+#line 16328 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ USHORT ClientComputerNameLength;
+ WCHAR ClientComputerBuffer[15+1];
+} FILE_PIPE_CLIENT_PROCESS_BUFFER_EX, *PFILE_PIPE_CLIENT_PROCESS_BUFFER_EX;
+
+
+
+typedef struct _FILE_PIPE_SILO_ARRIVAL_INPUT {
+ HANDLE JobHandle;
+} FILE_PIPE_SILO_ARRIVAL_INPUT, *PFILE_PIPE_SILO_ARRIVAL_INPUT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_PIPE_CREATE_SYMLINK_INPUT {
+ USHORT NameOffset;
+ USHORT NameLength;
+ USHORT SubstituteNameOffset;
+ USHORT SubstituteNameLength;
+ ULONG Flags;
+} FILE_PIPE_CREATE_SYMLINK_INPUT, *PFILE_PIPE_CREATE_SYMLINK_INPUT;
+
+
+
+typedef struct _FILE_PIPE_DELETE_SYMLINK_INPUT {
+ USHORT NameOffset;
+ USHORT NameLength;
+} FILE_PIPE_DELETE_SYMLINK_INPUT, *PFILE_PIPE_DELETE_SYMLINK_INPUT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _LINK_TRACKING_INFORMATION_TYPE {
+ NtfsLinkTrackingInformation,
+ DfsLinkTrackingInformation
+} LINK_TRACKING_INFORMATION_TYPE, *PLINK_TRACKING_INFORMATION_TYPE;
+
+typedef struct _LINK_TRACKING_INFORMATION {
+ LINK_TRACKING_INFORMATION_TYPE Type;
+ UCHAR VolumeId[16];
+} LINK_TRACKING_INFORMATION, *PLINK_TRACKING_INFORMATION;
+
+
+
+
+
+typedef struct _REMOTE_LINK_TRACKING_INFORMATION_ {
+ PVOID TargetFileObject;
+ ULONG TargetLinkTrackingInformationLength;
+ UCHAR TargetLinkTrackingInformationBuffer[1];
+} REMOTE_LINK_TRACKING_INFORMATION,
+ *PREMOTE_LINK_TRACKING_INFORMATION;
+
+
+
+
+
+
+
+
+typedef struct _VCN_RANGE_INPUT_BUFFER {
+
+ LARGE_INTEGER StartingVcn;
+ LARGE_INTEGER ClusterCount;
+
+} VCN_RANGE_INPUT_BUFFER, *PVCN_RANGE_INPUT_BUFFER;
+
+typedef struct _EXTENT_READ_CACHE_INFO_BUFFER {
+
+ LARGE_INTEGER AllocatedCache;
+ LARGE_INTEGER PopulatedCache;
+ LARGE_INTEGER InErrorCache;
+
+} EXTENT_READ_CACHE_INFO_BUFFER, *PEXTENT_READ_CACHE_INFO_BUFFER;
+
+
+
+
+
+
+
+
+typedef struct _REFS_VOLUME_COUNTER_INFO_INPUT_BUFFER {
+
+ BOOLEAN ResetCounters;
+
+} REFS_VOLUME_COUNTER_INFO_INPUT_BUFFER, *PREFS_VOLUME_COUNTER_INFO_INPUT_BUFFER;
+
+typedef struct _VOLUME_REFS_INFO_BUFFER {
+
+
+
+
+
+ LARGE_INTEGER CacheSizeInBytes;
+ LARGE_INTEGER AllocatedCacheInBytes;
+ LARGE_INTEGER PopulatedCacheInBytes;
+ LARGE_INTEGER InErrorCacheInBytes;
+ LARGE_INTEGER MemoryUsedForCacheMetadata;
+ ULONG CacheLineSize;
+ LONG CacheTransactionsOutstanding;
+ LONG CacheLinesFree;
+ LONG CacheLinesInError;
+
+
+
+
+
+ LARGE_INTEGER CacheHitsInBytes;
+ LARGE_INTEGER CacheMissesInBytes;
+ LARGE_INTEGER CachePopulationUpdatesInBytes;
+ LARGE_INTEGER CacheWriteThroughUpdatesInBytes;
+ LARGE_INTEGER CacheInvalidationsInBytes;
+ LARGE_INTEGER CacheOverReadsInBytes;
+ LARGE_INTEGER MetadataWrittenBytes;
+
+ LONG CacheHitCounter;
+ LONG CacheMissCounter;
+ LONG CacheLineAllocationCounter;
+ LONG CacheInvalidationsCounter;
+ LONG CachePopulationUpdatesCounter;
+ LONG CacheWriteThroughUpdatesCounter;
+ LONG MaxCacheTransactionsOutstanding;
+
+
+
+
+ LONGLONG DataWritesReallocationCount;
+ LONGLONG DataInPlaceWriteCount;
+ LONGLONG MetadataAllocationsFastTierCount;
+ LONGLONG MetadataAllocationsSlowTierCount;
+ LONGLONG DataAllocationsFastTierCount;
+ LONGLONG DataAllocationsSlowTierCount;
+
+ LONGLONG DestagesSlowTierToFastTier;
+ LONGLONG DestagesFastTierToSlowTier;
+ LONG SlowTierDataFillRatio;
+ LONG FastTierDataFillRatio;
+ LONG SlowTierMetadataFillRatio;
+ LONG FastTierMetadataFillRatio;
+
+ LONGLONG SlowToFastDestageReadLatency;
+ LONG SlowToFastDestageReadLatencyBase;
+
+ LONGLONG SlowToFastDestageWriteLatency;
+ LONG SlowToFastDestageWriteLatencyBase;
+
+ LONGLONG FastToSlowDestageReadLatency;
+ LONG FastToSlowDestageReadLatencyBase;
+
+ LONGLONG FastToSlowDestageWriteLatency;
+ LONG FastToSlowDestageWriteLatencyBase;
+
+ LONGLONG SlowTierContainerFillRatio;
+ LONG SlowTierContainerFillRatioBase;
+
+ LONGLONG FastTierContainerFillRatio;
+ LONG FastTierContainerFillRatioBase;
+
+ LONG Unused1;
+ LONG Unused2;
+ LONG Unused3;
+ LONG Unused4;
+
+ LONGLONG TreeUpdateCount;
+ LONGLONG CheckpointCount;
+ LONGLONG LogWriteCount;
+ LONG LogFillRatio;
+
+ LONG ReadCacheInvalidationsForOverwrite;
+ LONG ReadCacheInvalidationsForReuse;
+ LONG ReadCacheInvalidationsGeneral;
+
+ LONG ReadCacheChecksOnMount;
+ LONG ReadCacheIssuesOnMount;
+
+ LONGLONG TrimLatency;
+ LONG TrimLatencyBase;
+
+ LONGLONG DataCompactionCount;
+
+ LONGLONG CompactionReadLatency;
+ LONG CompactionReadLatencyBase;
+
+ LONGLONG CompactionWriteLatency;
+ LONG CompactionWriteLatencyBase;
+
+ LARGE_INTEGER DataInPlaceWriteClusterCount;
+
+ LONG CompactionFailedDueToIneligibleContainer;
+ LONG CompactionFailedDueToMaxFragmentation;
+
+ LONGLONG CompactedContainerFillRatio;
+ LONG CompactedContainerFillRatioBase;
+
+ LONG ContainerMoveRetryCount;
+ LONG ContainerMoveFailedDueToIneligibleContainer;
+
+ LONG CompactionFailureCount;
+ LONG ContainerMoveFailureCount;
+
+ LARGE_INTEGER NumberOfDirtyMetadataPages;
+ LONG NumberOfDirtyTableListEntries;
+ LONG NumberOfDeleteQueueEntries;
+
+ LONG MAAFilteredViewSize;
+ LONG MAAFilteredViewInsertions;
+ LONG MAAFilteredViewDeletions;
+ LONG MAAFilteredViewCollisions;
+ LONG MAAFilteredViewPurges;
+ LONGLONG MAARegionsVisitedPerAllocationSum;
+ LONG MAARegionsVisitedPerAllocationBase;
+ LONG MAAMaxRegionsVisitedPerAllocation;
+
+ LONGLONG TreeUpdateLatencyExclusive;
+ LONGLONG TreeUpdateLatencyTotal;
+ LONG TreeUpdateLatencyBase;
+
+ LONGLONG CheckpointLatencyTreeUpdateExclusive;
+ LONGLONG CheckpointLatencyTreeUpdateTotal;
+ LONG CheckpointLatencyTreeUpdateBase;
+ LONGLONG CheckpointLatencyTotal;
+ LONG CheckpointLatencyTotalBase;
+
+} VOLUME_REFS_INFO_BUFFER, *PVOLUME_REFS_INFO_BUFFER;
+
+#line 16591 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+typedef struct _QUERY_DIRECT_ACCESS_EXTENTS {
+
+ LONGLONG FileOffset;
+ LONGLONG Length;
+ ULONG Flags;
+ ULONG Reserved;
+
+} QUERY_DIRECT_ACCESS_EXTENTS, *PQUERY_DIRECT_ACCESS_EXTENTS;
+
+
+
+
+#line 16611 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+typedef struct _FSCTL_GHOST_FILE_EXTENTS_INPUT_BUFFER {
+
+ LARGE_INTEGER FileOffset;
+ LARGE_INTEGER ByteCount;
+
+ GUID RecallOwnerGuid;
+
+ ULONG RecallMetadataBufferSize;
+ UCHAR RecallMetadataBuffer[1];
+
+} FSCTL_GHOST_FILE_EXTENTS_INPUT_BUFFER, *PFSCTL_GHOST_FILE_EXTENTS_INPUT_BUFFER;
+#line 16629 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+typedef struct _FSCTL_QUERY_GHOSTED_FILE_EXTENTS_INPUT_RANGE {
+
+ LARGE_INTEGER FileOffset;
+ LARGE_INTEGER ByteCount;
+
+} FSCTL_QUERY_GHOSTED_FILE_EXTENTS_INPUT_RANGE, *PFSCTL_QUERY_GHOSTED_FILE_EXTENTS_INPUT_RANGE;
+
+typedef struct _GHOSTED_FILE_EXTENT {
+
+ LARGE_INTEGER FileOffset;
+ LARGE_INTEGER ByteCount;
+
+ GUID RecallOwnerGuid;
+ ULONG NextEntryOffset;
+ ULONG RecallMetadataBufferSize;
+ UCHAR RecallMetadataBuffer[1];
+
+} GHOSTED_FILE_EXTENT, *PGHOSTED_FILE_EXTENT;
+
+typedef struct _FSCTL_QUERY_GHOSTED_FILE_EXTENTS_OUTPUT {
+
+ ULONG ExtentCount;
+ ULONG TotalExtentCount;
+ UCHAR Extents[1];
+
+} FSCTL_QUERY_GHOSTED_FILE_EXTENTS_OUTPUT, *PFSCTL_QUERY_GHOSTED_FILE_EXTENTS_OUTPUT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FSCTL_UNMAP_SPACE_INPUT_BUFFER {
+
+ LARGE_INTEGER BytesToUnmap;
+
+} FSCTL_UNMAP_SPACE_INPUT_BUFFER, *PFSCTL_UNMAP_SPACE_INPUT_BUFFER;
+
+typedef struct _FSCTL_UNMAP_SPACE_OUTPUT {
+
+ LARGE_INTEGER BytesUnmapped;
+
+} FSCTL_UNMAP_SPACE_OUTPUT, *PFSCTL_UNMAP_SPACE_OUTPUT;
+
+#line 16686 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+typedef struct _FSCTL_QUERY_VOLUME_NUMA_INFO_OUTPUT {
+
+ ULONG NumaNode;
+
+} FSCTL_QUERY_VOLUME_NUMA_INFO_OUTPUT, *PFSCTL_QUERY_VOLUME_NUMA_INFO_OUTPUT;
+
+#line 16699 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+typedef struct _REFS_DEALLOCATE_RANGES_RANGE {
+
+ ULONGLONG StartOfRange;
+ ULONGLONG CountOfRange;
+
+} REFS_DEALLOCATE_RANGES_RANGE, *PREFS_DEALLOCATE_RANGES_RANGE;
+
+typedef struct _REFS_DEALLOCATE_RANGES_INPUT_BUFFER {
+
+ ULONG RangeCount;
+ REFS_DEALLOCATE_RANGES_RANGE Ranges[1];
+
+} REFS_DEALLOCATE_RANGES_INPUT_BUFFER, *PREFS_DEALLOCATE_RANGES_INPUT_BUFFER;
+
+#line 16721 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+typedef enum _REFS_DEALLOCATE_RANGES_ALLOCATOR {
+
+ REFS_DEALLOCATE_RANGES_ALLOCATOR_NONE = 0,
+ REFS_DEALLOCATE_RANGES_ALLOCATOR_SAA = 1,
+ REFS_DEALLOCATE_RANGES_ALLOCATOR_CAA = 2,
+ REFS_DEALLOCATE_RANGES_ALLOCATOR_MAA = 3,
+
+} REFS_DEALLOCATE_RANGES_ALLOCATOR, *PREFS_DEALLOCATE_RANGES_ALLOCATOR;
+
+typedef struct _REFS_DEALLOCATE_RANGES_INPUT_BUFFER_EX {
+
+ ULONG RangeCount;
+ REFS_DEALLOCATE_RANGES_ALLOCATOR Allocator;
+ LONGLONG StreamReserveUpdateCount;
+ ULONG OffsetToRanges;
+ ULONG OffsetToLeakCounts;
+ ULONGLONG Reserved[2];
+
+} REFS_DEALLOCATE_RANGES_INPUT_BUFFER_EX, *PREFS_DEALLOCATE_RANGES_INPUT_BUFFER_EX;
+
+#line 16749 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+typedef struct _REFS_REMOVE_HARDLINK_BACKPOINTER {
+ ULONGLONG ParentDirectory;
+ ULONGLONG Reserved;
+ WCHAR FileName[1];
+} REFS_REMOVE_HARDLINK_BACKPOINTER, *PREFS_REMOVE_HARDLINK_BACKPOINTER;
+
+#line 16763 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+enum _REFS_STREAM_EXTENT_PROPERTIES {
+
+ REFS_STREAM_EXTENT_PROPERTY_VALID = 0x0010,
+ REFS_STREAM_EXTENT_PROPERTY_STREAM_RESERVED = 0x0020,
+ REFS_STREAM_EXTENT_PROPERTY_CRC32 = 0x0080,
+ REFS_STREAM_EXTENT_PROPERTY_CRC64 = 0x0100,
+ REFS_STREAM_EXTENT_PROPERTY_GHOSTED = 0x0200,
+ REFS_STREAM_EXTENT_PROPERTY_READONLY = 0x0400,
+ REFS_STREAM_EXTENT_PROPERTY_SPARSE = 0x0008,
+};
+
+typedef USHORT REFS_STREAM_EXTENT_PROPERTIES;
+typedef REFS_STREAM_EXTENT_PROPERTIES* PREFS_STREAM_EXTENT_PROPERTIES;
+
+typedef struct _REFS_STREAM_EXTENT {
+
+ LONGLONG Vcn;
+ LONGLONG Lcn;
+ LONGLONG Length;
+ REFS_STREAM_EXTENT_PROPERTIES Properties;
+
+} REFS_STREAM_EXTENT, *PREFS_STREAM_EXTENT;
+
+
+
+
+
+typedef enum _REFS_STREAM_SNAPSHOT_OPERATION {
+
+ REFS_STREAM_SNAPSHOT_OPERATION_INVALID = 0,
+ REFS_STREAM_SNAPSHOT_OPERATION_CREATE = 1,
+ REFS_STREAM_SNAPSHOT_OPERATION_LIST = 2,
+ REFS_STREAM_SNAPSHOT_OPERATION_QUERY_DELTAS = 3,
+ REFS_STREAM_SNAPSHOT_OPERATION_REVERT = 4,
+ REFS_STREAM_SNAPSHOT_OPERATION_SET_SHADOW_BTREE = 5,
+ REFS_STREAM_SNAPSHOT_OPERATION_CLEAR_SHADOW_BTREE = 6,
+ REFS_STREAM_SNAPSHOT_OPERATION_MAX = REFS_STREAM_SNAPSHOT_OPERATION_CLEAR_SHADOW_BTREE,
+
+} REFS_STREAM_SNAPSHOT_OPERATION, *PREFS_STREAM_SNAPSHOT_OPERATION;
+
+typedef struct _REFS_STREAM_SNAPSHOT_MANAGEMENT_INPUT_BUFFER {
+
+ REFS_STREAM_SNAPSHOT_OPERATION Operation;
+ USHORT SnapshotNameLength;
+ USHORT OperationInputBufferLength;
+ ULONGLONG Reserved[2];
+ USHORT NameAndInputBuffer[1];
+
+} REFS_STREAM_SNAPSHOT_MANAGEMENT_INPUT_BUFFER, *PREFS_STREAM_SNAPSHOT_MANAGEMENT_INPUT_BUFFER;
+
+typedef struct _REFS_STREAM_SNAPSHOT_LIST_OUTPUT_BUFFER_ENTRY {
+
+ ULONG NextEntryOffset;
+ USHORT SnapshotNameLength;
+ ULONGLONG SnapshotCreationTime;
+ ULONGLONG StreamSize;
+ ULONGLONG StreamAllocationSize;
+ ULONGLONG Reserved[2];
+ WCHAR SnapshotName[1];
+
+} REFS_STREAM_SNAPSHOT_LIST_OUTPUT_BUFFER_ENTRY, *PREFS_STREAM_SNAPSHOT_LIST_OUTPUT_BUFFER_ENTRY;
+
+typedef struct _REFS_STREAM_SNAPSHOT_LIST_OUTPUT_BUFFER {
+
+ ULONG EntryCount;
+ ULONG BufferSizeRequiredForQuery;
+ ULONG Reserved[2];
+ REFS_STREAM_SNAPSHOT_LIST_OUTPUT_BUFFER_ENTRY Entries[1];
+
+} REFS_STREAM_SNAPSHOT_LIST_OUTPUT_BUFFER, *PREFS_STREAM_SNAPSHOT_LIST_OUTPUT_BUFFER;
+
+typedef struct _REFS_STREAM_SNAPSHOT_QUERY_DELTAS_INPUT_BUFFER {
+
+ LONGLONG StartingVcn;
+ ULONG Flags;
+ ULONG Reserved;
+
+} REFS_STREAM_SNAPSHOT_QUERY_DELTAS_INPUT_BUFFER, *PREFS_STREAM_SNAPSHOT_QUERY_DELTAS_INPUT_BUFFER;
+
+typedef struct _REFS_STREAM_SNAPSHOT_QUERY_DELTAS_OUTPUT_BUFFER {
+
+ ULONG ExtentCount;
+ ULONG Reserved[2];
+ REFS_STREAM_EXTENT Extents[1];
+
+} REFS_STREAM_SNAPSHOT_QUERY_DELTAS_OUTPUT_BUFFER, *PREFS_STREAM_SNAPSHOT_QUERY_DELTAS_OUTPUT_BUFFER;
+
+#line 16854 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+typedef struct _DUPLICATE_CLUSTER_DATA {
+
+ LONGLONG SourceLcn;
+ LONGLONG TargetLcn;
+ LARGE_INTEGER TargetFileOffset;
+ ULONG DuplicationLimit;
+ ULONG Reserved;
+
+} DUPLICATE_CLUSTER_DATA, *PDUPLICATE_CLUSTER_DATA;
+
+
+
+
+
+enum _LCN_WEAK_REFERENCE_STATE {
+
+ LCN_WEAK_REFERENCE_VALID = 0x00000001,
+ LCN_WEAK_REFERENCE_BROKEN = 0x00000002,
+ LCN_CHECKSUM_VALID = 0x00000004,
+ LCN_IS_VALID = 0x00000008,
+ LCN_IS_STREAM_RESERVED = 0x00000010,
+ LCN_IS_READ_ONLY = 0x00000020
+};
+
+typedef ULONG LCN_WEAK_REFERENCE_STATE;
+typedef LCN_WEAK_REFERENCE_STATE *PLCN_WEAK_REFERENCE_STATE;
+
+typedef struct _LCN_WEAK_REFERENCE_BUFFER {
+
+
+
+
+
+
+ LONGLONG Lcn;
+ LONGLONG LengthInClusters;
+ ULONG ReferenceCount;
+ LCN_WEAK_REFERENCE_STATE State;
+
+} LCN_WEAK_REFERENCE_BUFFER, *PLCN_WEAK_REFERENCE_BUFFER;
+
+
+
+
+
+typedef ULONG LCN_WEAK_REFERENCE_CREATE_FLAGS;
+typedef LCN_WEAK_REFERENCE_CREATE_FLAGS *PLCN_WEAK_REFERENCE_CREATE_FLAGS;
+
+typedef struct _LCN_WEAK_REFERENCE_CREATE_INPUT_BUFFER {
+
+ LONGLONG Offset;
+ LONGLONG Length;
+ ULONG Flags;
+ ULONG Reserved;
+
+} LCN_WEAK_REFERENCE_CREATE_INPUT_BUFFER, *PLCN_WEAK_REFERENCE_CREATE_INPUT_BUFFER;
+
+typedef struct _LCN_WEAK_REFERENCE_VCN_MAPPING {
+
+ LONGLONG Vcn;
+ LONGLONG Lcn;
+ LONGLONG CountOfRange;
+
+} LCN_WEAK_REFERENCE_VCN_MAPPING, *PLCN_WEAK_REFERENCE_VCN_MAPPING;
+
+typedef struct _LCN_WEAK_REFERENCE_CREATE_OUTPUT_BUFFER {
+
+ ULONG MappingCount;
+ LCN_WEAK_REFERENCE_VCN_MAPPING VcnLcnMappings[1];
+
+} LCN_WEAK_REFERENCE_CREATE_OUTPUT_BUFFER, *PLCN_WEAK_REFERENCE_CREATE_OUTPUT_BUFFER;
+
+
+
+
+
+typedef struct _LCN_WEAK_REFERENCE_RANGE {
+
+ LONGLONG StartOfRange;
+ LONGLONG CountOfRange;
+
+} LCN_WEAK_REFERENCE_RANGE, *PLCN_WEAK_REFERENCE_RANGE;
+
+typedef struct _LCN_WEAK_REFERENCE_CLEAR_INPUT_BUFFER {
+
+ ULONG RangeCount;
+ LCN_WEAK_REFERENCE_RANGE Ranges[1];
+
+} LCN_WEAK_REFERENCE_CLEAR_INPUT_BUFFER, *PLCN_WEAK_REFERENCE_CLEAR_INPUT_BUFFER;
+
+#line 16952 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct _REFS_VOLUME_DEDUP_INFO_INPUT_BUFFER {
+
+ ULONG Version;
+
+ BOOLEAN SetDedupState;
+ BOOLEAN Enable;
+
+ BOOLEAN SetWeakRefState;
+ BOOLEAN EnableWeakRef;
+
+ BOOLEAN SetDirtyRangeTrackingState;
+ BOOLEAN EnableDirtyRangeTracking;
+
+ BOOLEAN SetWeakRefInconsistentState;
+ BOOLEAN SetWeakRefInconsistent;
+} REFS_VOLUME_DEDUP_INFO_INPUT_BUFFER, *PREFS_VOLUME_DEDUP_INFO_INPUT_BUFFER;
+
+
+
+
+
+
+
+
+typedef struct _REFS_VOLUME_DEDUP_INFO_OUTPUT_BUFFER {
+
+ ULONG Version;
+ BOOLEAN Enabled;
+ BOOLEAN EnabledWeakRef;
+ BOOLEAN EnabledDirtyRangeTracking;
+ BOOLEAN WeakRefInconsistent;
+ BOOLEAN IsClustered;
+ ULONG VolumeIdHash;
+ GUID VolumeGuid;
+ GUID VolumeUniqueGuid;
+
+} REFS_VOLUME_DEDUP_INFO_OUTPUT_BUFFER, *PREFS_VOLUME_DEDUP_INFO_OUTPUT_BUFFER;
+
+
+
+
+
+
+
+typedef struct _REFS_QUERY_VOLUME_TOTAL_SHARED_LCNS_OUTPUT_BUFFER {
+
+ ULONG Version;
+ ULONGLONG TotalSharedLcns;
+
+} REFS_QUERY_VOLUME_TOTAL_SHARED_LCNS_OUTPUT_BUFFER, *PREFS_QUERY_VOLUME_TOTAL_SHARED_LCNS_OUTPUT_BUFFER;
+
+#line 17014 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+typedef struct _SET_CACHED_RUNS_STATE_INPUT_BUFFER {
+
+ BOOLEAN Enable;
+
+} SET_CACHED_RUNS_STATE_INPUT_BUFFER, *PSET_CACHED_RUNS_STATE_INPUT_BUFFER;
+
+#line 17024 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+typedef enum _REFS_COMPRESSION_FORMATS {
+
+ REFS_COMPRESSION_FORMAT_UNCHANGED = 0,
+ REFS_COMPRESSION_FORMAT_UNKNOWN = 1,
+ REFS_COMPRESSION_FORMAT_UNCOMPRESSED = 2,
+ REFS_COMPRESSION_FORMAT_LZ4 = 3,
+ REFS_COMPRESSION_FORMAT_ZSTD = 4,
+
+} REFS_COMPRESSION_FORMATS, *PREFS_COMPRESSION_FORMATS;
+
+typedef enum _REFS_SET_VOLUME_COMPRESSION_INFO_FLAGS {
+
+ REFS_SET_VOLUME_COMPRESSION_INFO_FLAG_START_COMPRESSION = 0x00000001,
+ REFS_SET_VOLUME_COMPRESSION_INFO_FLAG_STOP_COMPRESSION = 0x00000002,
+ REFS_SET_VOLUME_COMPRESSION_INFO_FLAG_GC_ONLY = 0x00000004,
+
+ REFS_SET_VOLUME_COMPRESSION_INFO_FLAG_ENABLE_COMPRESSION = 0x00000008,
+ REFS_SET_VOLUME_COMPRESSION_INFO_FLAG_DISABLE_COMPRESSION = 0x00000010,
+#line 17050 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+ REFS_SET_VOLUME_COMPRESSION_INFO_FLAG_MAX = 0x00000010,
+
+} REFS_SET_VOLUME_COMPRESSION_INFO_FLAGS, *PREFS_SET_VOLUME_COMPRESSION_INFO_FLAGS;
+
+
+
+typedef struct _REFS_SET_VOLUME_COMPRESSION_INFO_INPUT_BUFFER {
+
+ ULONG Version;
+
+
+
+
+
+
+
+ REFS_COMPRESSION_FORMATS CompressionFormat;
+
+
+
+
+
+
+ SHORT CompressionLevel;
+
+
+
+
+
+
+ ULONG CompressionChunkSizeBytes;
+
+
+
+
+
+ ULONG Flags;
+
+
+
+
+
+ ULONG CompressionTuning;
+ ULONG RecompressionTuning;
+ ULONG DecompressionTuning;
+
+
+
+
+
+ ULONG Reserved[6];
+
+} REFS_SET_VOLUME_COMPRESSION_INFO_INPUT_BUFFER, *PREFS_SET_VOLUME_COMPRESSION_INFO_INPUT_BUFFER;
+
+
+
+
+
+typedef enum _REFS_QUERY_VOLUME_COMPRESSION_INFO_FLAGS {
+
+ REFS_QUERY_VOLUME_COMPRESSION_INFO_FLAGS_RUNNING = 0x00000001,
+ REFS_QUERY_VOLUME_COMPRESSION_INFO_FLAGS_STOPPED = 0x00000002
+
+} REFS_QUERY_VOLUME_COMPRESSION_INFO_FLAGS, *PREFS_QUERY_VOLUME_COMPRESSION_INFO_FLAGS;
+
+
+
+typedef struct _REFS_QUERY_VOLUME_COMPRESSION_INFO_OUTPUT_BUFFER {
+
+ ULONG Version;
+
+
+
+
+
+ REFS_COMPRESSION_FORMATS DefaultCompressionFormat;
+
+
+
+
+
+ SHORT DefaultCompressionLevel;
+
+
+
+
+
+ ULONG DefaultCompressionChunkSizeBytes;
+
+
+
+
+
+ ULONG VolumeClusterSizeBytes;
+
+
+
+
+
+ ULONGLONG TotalVolumeClusters;
+
+
+
+
+
+ ULONGLONG TotalAllocatedClusters;
+
+
+
+
+
+
+ ULONGLONG TotalCompressibleClustersAllocated;
+
+
+
+
+
+
+
+
+
+ ULONGLONG TotalCompressibleClustersInUse;
+
+
+
+
+
+ ULONGLONG TotalCompressedClusters;
+
+
+
+
+
+ ULONG Flags;
+
+
+
+
+
+ ULONG CompressionTuning;
+ ULONG RecompressionTuning;
+ ULONG DecompressionTuning;
+
+
+
+
+
+ NTSTATUS LastCompressionStatus;
+
+
+
+
+
+ ULONG Reserved[8];
+
+} REFS_QUERY_VOLUME_COMPRESSION_INFO_OUTPUT_BUFFER, *PREFS_QUERY_VOLUME_COMPRESSION_INFO_OUTPUT_BUFFER;
+
+#line 17210 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+typedef struct _REFS_SET_VOLUME_IO_METRICS_INFO_INPUT_BUFFER {
+
+ ULONG Version;
+
+ ULONG GlobalSecondsToTrack;
+ ULONG MetricsPeriodicitySeconds;
+ ULONG MetricsGenerationsPerContainer;
+
+ ULONG Reserved[8];
+
+} REFS_SET_VOLUME_IO_METRICS_INFO_INPUT_BUFFER, *PREFS_SET_VOLUME_IO_METRICS_INFO_INPUT_BUFFER;
+
+
+
+
+
+
+
+
+typedef enum _REFS_QUERY_VOLUME_IO_METRICS_INFO_QUERY_TYPE {
+
+ REFS_QUERY_VOLUME_IO_METRICS_INFO_QUERY_TYPE_PARAMETERS = 1,
+ REFS_QUERY_VOLUME_IO_METRICS_INFO_QUERY_TYPE_METRICS_DATA = 2,
+
+} REFS_QUERY_VOLUME_IO_METRICS_INFO_QUERY_TYPE, *PREFS_QUERY_VOLUME_IO_METRICS_INFO_QUERY_TYPE;
+
+typedef struct _REFS_QUERY_VOLUME_IO_METRICS_INFO_INPUT_BUFFER {
+
+ ULONG Version;
+ REFS_QUERY_VOLUME_IO_METRICS_INFO_QUERY_TYPE QueryType;
+ ULONG Reserved[6];
+
+ union {
+
+ ULONGLONG UnusedAlign;
+
+ struct {
+
+ ULONG Reserved[6];
+
+ } Parameters;
+
+ struct {
+
+ ULONGLONG ResumeKeyBlob[2];
+ ULONG Reserved[6];
+
+ } MetricsData;
+ };
+
+} REFS_QUERY_VOLUME_IO_METRICS_INFO_INPUT_BUFFER, *PREFS_QUERY_VOLUME_IO_METRICS_INFO_INPUT_BUFFER;
+
+typedef struct _REFS_QUERY_VOLUME_IO_METRICS_METRICS_DATA {
+
+ ULONGLONG PlaceHolder;
+
+} REFS_QUERY_VOLUME_IO_METRICS_METRICS_DATA, *PREFS_QUERY_VOLUME_IO_METRICS_METRICS_DATA;
+
+typedef struct _REFS_QUERY_VOLUME_IO_METRICS_INFO_OUTPUT_BUFFER {
+
+ ULONG Version;
+ REFS_QUERY_VOLUME_IO_METRICS_INFO_QUERY_TYPE QueryType;
+ ULONG Reserved[6];
+
+ union {
+
+ ULONGLONG UnusedAlign;
+
+ struct {
+
+ ULONG GlobalSecondsToTrack;
+ ULONG MetricsPeriodicitySeconds;
+ ULONG MetricsGenerationsPerContainer;
+ ULONG Reserved[6];
+
+ } Parameters;
+
+ struct {
+
+ ULONG EntryCount;
+ ULONGLONG ResumeKeyBlob[2];
+ ULONG Reserved[6];
+ REFS_QUERY_VOLUME_IO_METRICS_METRICS_DATA Metrics[1];
+
+ } MetricsData;
+ };
+
+} REFS_QUERY_VOLUME_IO_METRICS_INFO_OUTPUT_BUFFER, *PREFS_QUERY_VOLUME_IO_METRICS_INFO_OUTPUT_BUFFER;
+
+#line 17309 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct _REFS_SET_ROLLBACK_PROTECTION_INFO_INPUT_BUFFER {
+
+ ULONG Version;
+ BOOLEAN FailMountOnMismatch;
+ ULONG CustomPayloadLength;
+ ULONG CustomPayloadOffset;
+ BOOLEAN EnableRollbackProtection;
+
+} REFS_SET_ROLLBACK_PROTECTION_INFO_INPUT_BUFFER, *PREFS_SET_ROLLBACK_PROTECTION_INFO_INPUT_BUFFER;
+
+#line 17330 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+typedef struct _REFS_QUERY_ROLLBACK_PROTECTION_INFO_OUTPUT_BUFFER {
+
+ ULONG Version;
+ GUID VolumeGuid;
+ GUID RollbackProtectionGuid;
+ BOOLEAN FailMountOnMismatch;
+ ULONGLONG FrozenVirtualClock;
+ ULONGLONG CurrentVirtualClock;
+ USHORT ChecksumType;
+ ULONG ChecksumLength;
+ ULONG ChecksumOffset;
+ ULONG CustomPayloadLength;
+ ULONG CustomPayloadOffset;
+
+} REFS_QUERY_ROLLBACK_PROTECTION_INFO_OUTPUT_BUFFER, *PREFS_QUERY_ROLLBACK_PROTECTION_INFO_OUTPUT_BUFFER;
+
+#line 17356 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_STORAGE_RESERVE_ID_INFORMATION {
+ STORAGE_RESERVE_ID StorageReserveId;
+} FILE_STORAGE_RESERVE_ID_INFORMATION, *PFILE_STORAGE_RESERVE_ID_INFORMATION;
+
+
+#line 17378 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 17390 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 17412 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef struct _NETWORK_APP_INSTANCE_EA {
+
+
+
+
+
+
+ GUID AppInstanceID;
+
+
+
+
+
+ ULONG CsvFlags;
+
+} NETWORK_APP_INSTANCE_EA, *PNETWORK_APP_INSTANCE_EA;
+
+#line 17431 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 17433 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _SMB_SHARE_FLUSH_AND_PURGE_INPUT {
+
+ USHORT Version;
+} SMB_SHARE_FLUSH_AND_PURGE_INPUT, *PSMB_SHARE_FLUSH_AND_PURGE_INPUT;
+typedef struct _SMB_SHARE_FLUSH_AND_PURGE_INPUT const *PCSMB_SHARE_FLUSH_AND_PURGE_INPUT;
+
+typedef struct _SMB_SHARE_FLUSH_AND_PURGE_OUTPUT {
+
+ ULONG cEntriesPurged;
+} SMB_SHARE_FLUSH_AND_PURGE_OUTPUT, *PSMB_SHARE_FLUSH_AND_PURGE_OUTPUT;
+typedef struct _SMB_SHARE_FLUSH_AND_PURGE_OUTPUT const *PCSMB_SHARE_FLUSH_AND_PURGE_OUTPUT;
+
+#line 17463 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#line 17464 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtCopyFileChunk (
+ HANDLE SourceHandle,
+ HANDLE DestHandle,
+ HANDLE Event,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ ULONG Length,
+ PLARGE_INTEGER SourceOffset,
+ PLARGE_INTEGER DestOffset,
+ PULONG SourceKey,
+ PULONG DestKey,
+ ULONG Flags
+ );
+
+
+
+
+
+
+
+
+
+
+#line 17496 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 17498 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+typedef struct _SOV_RANGE_CHECK_DATA {
+
+ BOOLEAN RemoveZone;
+ ULONGLONG InRange[2];
+ GUID ZidForRemoval;
+ ULONGLONG Reserved1;
+ ULONGLONG Reserved2;
+
+} SOV_RANGE_CHECK_DATA, *PSOV_RANGE_CHECK_DATA;
+
+#line 17512 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+typedef enum _OBJECT_INFORMATION_CLASS {
+ ObjectBasicInformation = 0,
+ ObjectTypeInformation = 2
+} OBJECT_INFORMATION_CLASS;
+
+
+
+
+typedef struct _PUBLIC_OBJECT_BASIC_INFORMATION {
+ ULONG Attributes;
+ ACCESS_MASK GrantedAccess;
+ ULONG HandleCount;
+ ULONG PointerCount;
+
+ ULONG Reserved[10];
+
+} PUBLIC_OBJECT_BASIC_INFORMATION, *PPUBLIC_OBJECT_BASIC_INFORMATION;
+
+typedef struct __PUBLIC_OBJECT_TYPE_INFORMATION {
+
+ UNICODE_STRING TypeName;
+
+ ULONG Reserved [22];
+
+} PUBLIC_OBJECT_TYPE_INFORMATION, *PPUBLIC_OBJECT_TYPE_INFORMATION;
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtQueryObject (
+ HANDLE Handle,
+ OBJECT_INFORMATION_CLASS ObjectInformationClass,
+ PVOID ObjectInformation,
+ ULONG ObjectInformationLength,
+ PULONG ReturnLength
+ );
+#line 17557 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtSetSecurityObject (
+ HANDLE Handle,
+ SECURITY_INFORMATION SecurityInformation,
+ PSECURITY_DESCRIPTOR SecurityDescriptor
+ );
+#line 17570 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtQuerySecurityObject (
+ HANDLE Handle,
+ SECURITY_INFORMATION SecurityInformation,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ ULONG Length,
+ PULONG LengthNeeded
+ );
+#line 17584 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtClose (
+ HANDLE Handle
+ );
+#line 17597 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+typedef enum _MEMORY_INFORMATION_CLASS {
+ MemoryBasicInformation
+} MEMORY_INFORMATION_CLASS;
+#line 17606 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef enum _VIRTUAL_MEMORY_INFORMATION_CLASS {
+ VmPrefetchInformation
+} VIRTUAL_MEMORY_INFORMATION_CLASS;
+
+
+typedef struct _MEMORY_BASIC_INFORMATION {
+ PVOID BaseAddress;
+ PVOID AllocationBase;
+ ULONG AllocationProtect;
+
+ USHORT PartitionId;
+#line 17619 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ SIZE_T RegionSize;
+ ULONG State;
+ ULONG Protect;
+ ULONG Type;
+} MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION;
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtCreateSection (
+ PHANDLE SectionHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ PLARGE_INTEGER MaximumSize,
+ ULONG SectionPageProtection,
+ ULONG AllocationAttributes,
+ HANDLE FileHandle
+ );
+#line 17642 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtCreateSectionEx (
+ PHANDLE SectionHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ PLARGE_INTEGER MaximumSize,
+ ULONG SectionPageProtection,
+ ULONG AllocationAttributes,
+ HANDLE FileHandle,
+ PMEM_EXTENDED_PARAMETER ExtendedParameters,
+ ULONG ExtendedParameterCount
+ );
+#line 17661 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtAllocateVirtualMemory (
+ HANDLE ProcessHandle,
+ PVOID *BaseAddress,
+ ULONG_PTR ZeroBits,
+ PSIZE_T RegionSize,
+ ULONG AllocationType,
+ ULONG Protect
+ );
+#line 17678 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtFreeVirtualMemory (
+ HANDLE ProcessHandle,
+ PVOID *BaseAddress,
+ PSIZE_T RegionSize,
+ ULONG FreeType
+ );
+#line 17691 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtQueryVirtualMemory (
+ HANDLE ProcessHandle,
+ PVOID BaseAddress,
+ MEMORY_INFORMATION_CLASS MemoryInformationClass,
+ PVOID MemoryInformation,
+ SIZE_T MemoryInformationLength,
+ PSIZE_T ReturnLength
+ );
+#line 17707 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef struct _MEMORY_RANGE_ENTRY {
+ PVOID VirtualAddress;
+ SIZE_T NumberOfBytes;
+} MEMORY_RANGE_ENTRY, *PMEMORY_RANGE_ENTRY;
+
+
+
+ __declspec(dllimport)
+NTSTATUS
+__stdcall
+NtSetInformationVirtualMemory (
+ HANDLE ProcessHandle,
+ VIRTUAL_MEMORY_INFORMATION_CLASS VmInformationClass,
+ ULONG_PTR NumberOfEntries,
+ PMEMORY_RANGE_ENTRY VirtualAddresses,
+ PVOID VmInformation,
+ ULONG VmInformationLength
+ );
+#line 17727 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+#line 17735 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+typedef struct _SECURITY_CLIENT_CONTEXT {
+ SECURITY_QUALITY_OF_SERVICE SecurityQos;
+ PACCESS_TOKEN ClientToken;
+ BOOLEAN DirectlyAccessClientToken;
+ BOOLEAN DirectAccessEffectiveOnly;
+ BOOLEAN ServerIsRemote;
+ TOKEN_CONTROL ClientTokenControl;
+ } SECURITY_CLIENT_CONTEXT, *PSECURITY_CLIENT_CONTEXT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _KAPC_STATE {
+ LIST_ENTRY ApcListHead[MaximumMode];
+ struct _KPROCESS *Process;
+ union {
+ UCHAR InProgressFlags;
+ struct {
+ BOOLEAN KernelApcInProgress : 1;
+ BOOLEAN SpecialApcInProgress : 1;
+ };
+ };
+
+ BOOLEAN KernelApcPending;
+ union {
+ BOOLEAN UserApcPendingAll;
+ struct {
+ BOOLEAN SpecialUserApcPending : 1;
+ BOOLEAN UserApcPending : 1;
+ };
+ };
+} KAPC_STATE, *PKAPC_STATE, *PRKAPC_STATE;
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _KQUEUE {
+ DISPATCHER_HEADER Header;
+ LIST_ENTRY EntryListHead;
+ volatile ULONG CurrentCount;
+ ULONG MaximumCount;
+ LIST_ENTRY ThreadListHead;
+} KQUEUE, *PKQUEUE, *PRKQUEUE;
+
+
+
+
+__declspec(dllimport)
+void
+KeInitializeMutant (
+ PRKMUTANT Mutant,
+ BOOLEAN InitialOwner
+ );
+#line 17983 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+KeQueryOwnerMutant (
+ PKMUTANT Mutant,
+ PCLIENT_ID ClientId
+ );
+#line 17993 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+LONG
+KeReadStateMutant (
+ PRKMUTANT Mutant
+ );
+#line 18002 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+#line 18010 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+__declspec(dllimport)
+LONG
+KeReleaseMutant (
+ PRKMUTANT Mutant,
+ KPRIORITY Increment,
+ BOOLEAN Abandoned,
+ BOOLEAN Wait
+ );
+#line 18019 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+__declspec(dllimport)
+void
+KeInitializeQueue (
+ PRKQUEUE Queue,
+ ULONG Count
+ );
+#line 18032 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+LONG
+KeReadStateQueue (
+ PRKQUEUE Queue
+ );
+#line 18041 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+LONG
+KeInsertQueue (
+ PRKQUEUE Queue,
+ PLIST_ENTRY Entry
+ );
+#line 18052 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+LONG
+KeInsertHeadQueue (
+ PRKQUEUE Queue,
+ PLIST_ENTRY Entry
+ );
+#line 18063 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+PLIST_ENTRY
+KeRemoveQueue (
+ PRKQUEUE Queue,
+ KPROCESSOR_MODE WaitMode,
+ PLARGE_INTEGER Timeout
+ );
+#line 18076 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+__declspec(dllimport)
+ULONG
+KeRemoveQueueEx (
+ PKQUEUE Queue,
+ KPROCESSOR_MODE WaitMode,
+ BOOLEAN Alertable,
+ PLARGE_INTEGER Timeout,
+ PLIST_ENTRY *EntryArray,
+ ULONG Count
+ );
+#line 18093 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+PLIST_ENTRY
+KeRundownQueue (
+ PRKQUEUE Queue
+ );
+#line 18103 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+void
+KeAttachProcess (
+ PRKPROCESS Process
+ );
+#line 18113 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+KeDetachProcess (
+ void
+ );
+#line 18122 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+KeStackAttachProcess (
+ PRKPROCESS PROCESS,
+ PRKAPC_STATE ApcState
+ );
+#line 18132 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+KeUnstackDetachProcess (
+ PRKAPC_STATE ApcState
+ );
+#line 18141 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+#line 18149 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 18151 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+__declspec(dllimport)
+NTSTATUS
+KeExpandKernelStackAndCalloutEx (
+ PEXPAND_STACK_CALLOUT Callout,
+ PVOID Parameter,
+ SIZE_T Size,
+ BOOLEAN Wait,
+ PVOID Context
+ );
+#line 18161 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+UCHAR
+KeSetIdealProcessorThread (
+ PKTHREAD Thread,
+ UCHAR Processor
+ );
+#line 18173 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+KeSetKernelStackSwapEnable (
+ BOOLEAN Enable
+ );
+#line 18183 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+KIRQL
+
+KeAcquireQueuedSpinLock (
+ KSPIN_LOCK_QUEUE_NUMBER Number
+ );
+#line 18197 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+
+KeReleaseQueuedSpinLock (
+ KSPIN_LOCK_QUEUE_NUMBER Number,
+ KIRQL OldIrql
+ );
+#line 18210 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+LOGICAL
+
+KeTryToAcquireQueuedSpinLock (
+ KSPIN_LOCK_QUEUE_NUMBER Number,
+
+ PKIRQL OldIrql
+ );
+#line 18223 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 18240 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+KIRQL
+KeAcquireSpinLockRaiseToSynch (
+ PKSPIN_LOCK SpinLock
+ );
+#line 18253 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 18255 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+NTSTATUS
+KeGetProcessorNumberFromIndex (
+ ULONG ProcIndex,
+ PPROCESSOR_NUMBER ProcNumber
+ );
+
+ULONG
+KeGetProcessorIndexFromNumber (
+ PPROCESSOR_NUMBER ProcNumber
+ );
+
+
+
+
+
+__declspec(dllimport)
+SIZE_T
+ExQueryPoolBlockSize (
+ PVOID PoolBlock,
+ PBOOLEAN QuotaCharged
+ );
+
+#line 18281 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+PSLIST_ENTRY
+
+InterlockedPushListSList (
+ PSLIST_HEADER ListHead,
+ PSLIST_ENTRY List,
+ PSLIST_ENTRY ListEnd,
+ ULONG Count
+ );
+
+#line 18301 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 18303 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+ExAdjustLookasideDepth (
+ void
+ );
+
+#line 18318 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+typedef char __C_ASSERT__[(sizeof(ERESOURCE) == 0x68)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((ERESOURCE *)0)->ActiveCount)) == 0x18)?1:-1];
+typedef char __C_ASSERT__[(((LONG)(LONG_PTR)&(((ERESOURCE *)0)->Flag)) == 0x1a)?1:-1];
+
+
+
+
+
+
+
+#line 18335 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 18337 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+void
+ExDisableResourceBoostLite (
+ PERESOURCE Resource
+ );
+
+#line 18348 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _SE_EXPORTS {
+
+
+
+
+
+ LUID SeCreateTokenPrivilege;
+ LUID SeAssignPrimaryTokenPrivilege;
+ LUID SeLockMemoryPrivilege;
+ LUID SeIncreaseQuotaPrivilege;
+ LUID SeUnsolicitedInputPrivilege;
+ LUID SeTcbPrivilege;
+ LUID SeSecurityPrivilege;
+ LUID SeTakeOwnershipPrivilege;
+ LUID SeLoadDriverPrivilege;
+ LUID SeCreatePagefilePrivilege;
+ LUID SeIncreaseBasePriorityPrivilege;
+ LUID SeSystemProfilePrivilege;
+ LUID SeSystemtimePrivilege;
+ LUID SeProfileSingleProcessPrivilege;
+ LUID SeCreatePermanentPrivilege;
+ LUID SeBackupPrivilege;
+ LUID SeRestorePrivilege;
+ LUID SeShutdownPrivilege;
+ LUID SeDebugPrivilege;
+ LUID SeAuditPrivilege;
+ LUID SeSystemEnvironmentPrivilege;
+ LUID SeChangeNotifyPrivilege;
+ LUID SeRemoteShutdownPrivilege;
+
+
+
+
+
+
+
+ PSID SeNullSid;
+ PSID SeWorldSid;
+ PSID SeLocalSid;
+ PSID SeCreatorOwnerSid;
+ PSID SeCreatorGroupSid;
+
+
+
+
+
+
+
+ PSID SeNtAuthoritySid;
+ PSID SeDialupSid;
+ PSID SeNetworkSid;
+ PSID SeBatchSid;
+ PSID SeInteractiveSid;
+ PSID SeLocalSystemSid;
+ PSID SeAliasAdminsSid;
+ PSID SeAliasUsersSid;
+ PSID SeAliasGuestsSid;
+ PSID SeAliasPowerUsersSid;
+ PSID SeAliasAccountOpsSid;
+ PSID SeAliasSystemOpsSid;
+ PSID SeAliasPrintOpsSid;
+ PSID SeAliasBackupOpsSid;
+
+
+
+
+
+ PSID SeAuthenticatedUsersSid;
+
+ PSID SeRestrictedSid;
+ PSID SeAnonymousLogonSid;
+
+
+
+
+
+ LUID SeUndockPrivilege;
+ LUID SeSyncAgentPrivilege;
+ LUID SeEnableDelegationPrivilege;
+
+
+
+
+ PSID SeLocalServiceSid;
+ PSID SeNetworkServiceSid;
+
+
+
+
+
+ LUID SeManageVolumePrivilege;
+ LUID SeImpersonatePrivilege;
+ LUID SeCreateGlobalPrivilege;
+
+
+
+
+
+ LUID SeTrustedCredManAccessPrivilege;
+ LUID SeRelabelPrivilege;
+ LUID SeIncreaseWorkingSetPrivilege;
+
+ LUID SeTimeZonePrivilege;
+ LUID SeCreateSymbolicLinkPrivilege;
+
+
+
+
+
+ PSID SeIUserSid;
+
+
+
+
+
+ PSID SeUntrustedMandatorySid;
+ PSID SeLowMandatorySid;
+ PSID SeMediumMandatorySid;
+ PSID SeHighMandatorySid;
+ PSID SeSystemMandatorySid;
+
+ PSID SeOwnerRightsSid;
+
+
+
+
+
+ PSID SeAllAppPackagesSid;
+ PSID SeUserModeDriversSid;
+
+
+
+
+
+ PSID SeProcTrustWinTcbSid;
+
+
+
+
+
+ PSID SeTrustedInstallerSid;
+
+
+
+
+
+ LUID SeDelegateSessionUserImpersonatePrivilege;
+
+
+
+
+
+ PSID SeAppSiloSid;
+
+
+
+
+
+ PSID SeAppSiloVolumeRootMinimalCapabilitySid;
+
+
+
+
+
+ PSID SeAppSiloProfilesRootMinimalCapabilitySid;
+
+
+
+
+
+ PSID SeAppSiloPromptForAccessCapabilitySid;
+
+
+
+
+
+ PSID SeAppSiloAccessToPublisherDirectoryCapabilitySid;
+
+} SE_EXPORTS, *PSE_EXPORTS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+NTSTATUS
+SE_LOGON_SESSION_TERMINATED_ROUTINE(
+ PLUID LogonId);
+typedef SE_LOGON_SESSION_TERMINATED_ROUTINE *PSE_LOGON_SESSION_TERMINATED_ROUTINE;
+
+
+typedef
+NTSTATUS
+SE_LOGON_SESSION_TERMINATED_ROUTINE_EX(
+ PLUID LogonId,
+ PESILO pServerSilo,
+ PVOID Context);
+typedef SE_LOGON_SESSION_TERMINATED_ROUTINE_EX *PSE_LOGON_SESSION_TERMINATED_ROUTINE_EX;
+#line 18624 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+SeDeleteClientSecurity (
+ PSECURITY_CLIENT_CONTEXT ClientContext
+ );
+
+
+
+
+
+
+
+
+
+
+#line 18695 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+SeCaptureSubjectContextEx (
+ PETHREAD Thread,
+ PEPROCESS Process,
+ PSECURITY_SUBJECT_CONTEXT SubjectContext
+ );
+#line 18766 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+void
+SeCaptureSubjectContext (
+ PSECURITY_SUBJECT_CONTEXT SubjectContext
+ );
+#line 18776 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+SeLockSubjectContext(
+ PSECURITY_SUBJECT_CONTEXT SubjectContext
+ );
+#line 18784 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+SeUnlockSubjectContext(
+ PSECURITY_SUBJECT_CONTEXT SubjectContext
+ );
+#line 18792 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+SeReleaseSubjectContext (
+ PSECURITY_SUBJECT_CONTEXT SubjectContext
+ );
+#line 18800 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+NTSTATUS
+SeReportSecurityEventWithSubCategory(
+ ULONG Flags,
+ PUNICODE_STRING SourceName,
+ PSID UserSid,
+ PSE_ADT_PARAMETER_ARRAY AuditParameters,
+ ULONG AuditSubcategoryId
+ );
+
+BOOLEAN
+SeAccessCheckFromState (
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PTOKEN_ACCESS_INFORMATION PrimaryTokenInformation,
+ PTOKEN_ACCESS_INFORMATION ClientTokenInformation,
+ ACCESS_MASK DesiredAccess,
+ ACCESS_MASK PreviouslyGrantedAccess,
+ PPRIVILEGE_SET *Privileges,
+ PGENERIC_MAPPING GenericMapping,
+ KPROCESSOR_MODE AccessMode,
+ PACCESS_MASK GrantedAccess,
+ PNTSTATUS AccessStatus
+ );
+
+
+BOOLEAN
+SeAccessCheckFromStateEx (
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PACCESS_TOKEN PrimaryToken,
+ PACCESS_TOKEN ClientToken,
+ ACCESS_MASK DesiredAccess,
+ ACCESS_MASK PreviouslyGrantedAccess,
+ PPRIVILEGE_SET *Privileges,
+ PGENERIC_MAPPING GenericMapping,
+ KPROCESSOR_MODE AccessMode,
+ PACCESS_MASK GrantedAccess,
+ PNTSTATUS AccessStatus
+ );
+#line 18840 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+NTSTATUS
+SeTokenFromAccessInformation(
+ PTOKEN_ACCESS_INFORMATION AccessInformation,
+ PACCESS_TOKEN Token,
+ ULONG Length,
+ PULONG RequiredLength
+ );
+#line 18850 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+SePrivilegeCheck(
+ PPRIVILEGE_SET RequiredPrivileges,
+ PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext,
+ KPROCESSOR_MODE AccessMode
+ );
+#line 18860 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+SeFreePrivileges(
+ PPRIVILEGE_SET Privileges
+ );
+#line 18868 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+SeOpenObjectAuditAlarm (
+ PUNICODE_STRING ObjectTypeName,
+ PVOID Object,
+ PUNICODE_STRING AbsoluteObjectName,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PACCESS_STATE AccessState,
+ BOOLEAN ObjectCreated,
+ BOOLEAN AccessGranted,
+ KPROCESSOR_MODE AccessMode,
+ PBOOLEAN GenerateOnClose
+ );
+#line 18884 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+SeOpenObjectAuditAlarmWithTransaction (
+ PUNICODE_STRING ObjectTypeName,
+ PVOID Object,
+ PUNICODE_STRING AbsoluteObjectName,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PACCESS_STATE AccessState,
+ BOOLEAN ObjectCreated,
+ BOOLEAN AccessGranted,
+ KPROCESSOR_MODE AccessMode,
+ GUID *TransactionId,
+ PBOOLEAN GenerateOnClose
+ );
+#line 18901 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+SeOpenObjectForDeleteAuditAlarm (
+ PUNICODE_STRING ObjectTypeName,
+ PVOID Object,
+ PUNICODE_STRING AbsoluteObjectName,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PACCESS_STATE AccessState,
+ BOOLEAN ObjectCreated,
+ BOOLEAN AccessGranted,
+ KPROCESSOR_MODE AccessMode,
+ PBOOLEAN GenerateOnClose
+ );
+#line 18918 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+SeOpenObjectForDeleteAuditAlarmWithTransaction (
+ PUNICODE_STRING ObjectTypeName,
+ PVOID Object,
+ PUNICODE_STRING AbsoluteObjectName,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PACCESS_STATE AccessState,
+ BOOLEAN ObjectCreated,
+ BOOLEAN AccessGranted,
+ KPROCESSOR_MODE AccessMode,
+ GUID *TransactionId,
+ PBOOLEAN GenerateOnClose
+ );
+
+__declspec(dllimport)
+void
+SeExamineSacl(
+ PACL Sacl,
+ PACL ResourceSacl,
+ PACCESS_TOKEN Token,
+ ACCESS_MASK DesiredAccess,
+ BOOLEAN AccessGranted,
+ PBOOLEAN GenerateAudit,
+ PBOOLEAN GenerateAlarm
+ );
+
+#line 18948 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+SeDeleteObjectAuditAlarm(
+ PVOID Object,
+ HANDLE Handle
+ );
+#line 18957 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+SeDeleteObjectAuditAlarmWithTransaction(
+ PVOID Object,
+ HANDLE Handle,
+ GUID *TransactionId
+ );
+
+
+
+#line 18971 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+TOKEN_TYPE
+SeTokenType(
+ PACCESS_TOKEN Token
+ );
+#line 18979 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+__declspec(dllimport)
+BOOLEAN
+SeTokenIsAdmin(
+ PACCESS_TOKEN Token
+ );
+#line 18986 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+SeTokenIsRestricted(
+ PACCESS_TOKEN Token
+ );
+#line 18994 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+SeTokenIsWriteRestricted(
+ PACCESS_TOKEN Token
+ );
+#line 19002 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+SeTokenIsNoChildProcessRestrictionEnforced(
+ PACCESS_TOKEN Token,
+ PBOOLEAN UnlessSecure
+ );
+
+__declspec(dllimport)
+void
+SeTokenSetNoChildProcessRestricted(
+ PACCESS_TOKEN Token,
+ BOOLEAN UnlessSecure,
+ BOOLEAN AuditOnly
+ );
+
+
+__declspec(dllimport)
+void
+SeTokenGetNoChildProcessRestricted(
+ PACCESS_TOKEN Token,
+ PBOOLEAN Enforced,
+ PBOOLEAN UnlessSecure,
+ PBOOLEAN AuditOnly
+ );
+#line 19029 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+SeTokenSetRedirectionTrustPolicy(
+ PACCESS_TOKEN Token,
+ BOOLEAN AuditOnly
+ );
+
+__declspec(dllimport)
+void
+SeTokenGetRedirectionTrustPolicy (
+ PACCESS_TOKEN Token,
+ PBOOLEAN Enforced,
+ PBOOLEAN AuditOnly
+ );
+#line 19046 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+SeFilterToken (
+ PACCESS_TOKEN ExistingToken,
+ ULONG Flags,
+ PTOKEN_GROUPS SidsToDisable,
+ PTOKEN_PRIVILEGES PrivilegesToDelete,
+ PTOKEN_GROUPS RestrictedSids,
+ PACCESS_TOKEN * FilteredToken
+ );
+#line 19060 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+SeQueryAuthenticationIdToken(
+ PACCESS_TOKEN Token,
+ PLUID AuthenticationId
+ );
+#line 19070 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+SeQueryTokenIntegrity(
+ PACCESS_TOKEN Token,
+ PSID_AND_ATTRIBUTES IntegritySA
+ );
+#line 19082 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+SeQuerySessionIdToken(
+ PACCESS_TOKEN Token,
+ PULONG SessionId
+ );
+
+__declspec(dllimport)
+NTSTATUS
+SeQuerySessionIdTokenEx(
+ PACCESS_TOKEN Token,
+ PULONG SessionId,
+ PBOOLEAN IsServiceSession
+ );
+#line 19100 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+SeQueryServerSiloToken(
+ PACCESS_TOKEN Token,
+ PESILO *pServerSilo
+ );
+#line 19110 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+SeSetSessionIdToken(
+ PACCESS_TOKEN Token,
+ ULONG SessionId
+ );
+#line 19120 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+SeCreateClientSecurity (
+ PETHREAD ClientThread,
+ PSECURITY_QUALITY_OF_SERVICE ClientSecurityQos,
+ BOOLEAN RemoteSession,
+ PSECURITY_CLIENT_CONTEXT ClientContext
+ );
+#line 19132 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+SeImpersonateClient(
+ PSECURITY_CLIENT_CONTEXT ClientContext,
+ PETHREAD ServerThread
+ );
+#line 19142 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+SeImpersonateClientEx(
+ PSECURITY_CLIENT_CONTEXT ClientContext,
+ PETHREAD ServerThread
+ );
+#line 19152 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+SeCreateClientSecurityFromSubjectContext (
+ PSECURITY_SUBJECT_CONTEXT SubjectContext,
+ PSECURITY_QUALITY_OF_SERVICE ClientSecurityQos,
+ BOOLEAN ServerIsRemote,
+ PSECURITY_CLIENT_CONTEXT ClientContext
+ );
+#line 19163 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+SeQuerySecurityDescriptorInfo (
+ PSECURITY_INFORMATION SecurityInformation,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PULONG Length,
+ PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor
+ );
+#line 19175 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+SeSetSecurityDescriptorInfo (
+ PVOID Object,
+ PSECURITY_INFORMATION SecurityInformation,
+ PSECURITY_DESCRIPTOR ModificationDescriptor,
+ PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
+ POOL_TYPE PoolType,
+ PGENERIC_MAPPING GenericMapping
+ );
+#line 19188 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+SeSetSecurityDescriptorInfoEx (
+ PVOID Object,
+ PSECURITY_INFORMATION SecurityInformation,
+ PSECURITY_DESCRIPTOR ModificationDescriptor,
+ PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
+ ULONG AutoInheritFlags,
+ POOL_TYPE PoolType,
+ PGENERIC_MAPPING GenericMapping
+ );
+#line 19202 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+SeAppendPrivileges(
+ PACCESS_STATE AccessState,
+ PPRIVILEGE_SET Privileges
+ );
+#line 19211 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+SeAuditHardLinkCreation(
+ PUNICODE_STRING FileName,
+ PUNICODE_STRING LinkName,
+ BOOLEAN bSuccess
+ );
+#line 19221 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+SeAuditHardLinkCreationWithTransaction(
+ PUNICODE_STRING FileName,
+ PUNICODE_STRING LinkName,
+ BOOLEAN bSuccess,
+ GUID *TransactionId
+ );
+#line 19232 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+SeAuditFipsCryptoSelftests(
+ BOOLEAN bSuccess,
+ ULONG SelftestCode
+ );
+#line 19241 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+SeAuditTransactionStateChange(
+ GUID *TransactionId,
+ GUID *ResourceManagerId,
+ ULONG NewTransactionState
+ );
+#line 19251 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+SeAuditingFileEvents(
+ BOOLEAN AccessGranted,
+ PSECURITY_DESCRIPTOR SecurityDescriptor
+ );
+#line 19260 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+SeAuditingFileEventsWithContext(
+ BOOLEAN AccessGranted,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext
+ );
+#line 19270 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+SeAuditingAnyFileEventsWithContext(
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext
+ );
+#line 19279 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+ BOOLEAN
+ SeAuditingFileEventsWithContextEx(
+ BOOLEAN AccessGranted,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext,
+ PBOOLEAN StagingEnabled
+ );
+#line 19290 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+ BOOLEAN
+ SeAuditingAnyFileEventsWithContextEx(
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext,
+ PBOOLEAN StagingEnabled
+ );
+#line 19300 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+void
+SeAdjustAccessStateForTrustLabel(
+ PVOID ObjectType,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PACCESS_STATE AccessState
+ );
+#line 19309 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+void
+SeAdjustAccessStateForAccessConstraints(
+ PVOID ObjectType,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PACCESS_STATE AccessState
+ );
+#line 19318 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+BOOLEAN
+SeShouldCheckForAccessRightsFromParent(
+ PVOID ObjectType,
+ PSECURITY_DESCRIPTOR ChildDescriptor,
+ PACCESS_STATE AccessState
+ );
+#line 19327 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+SeAuditingHardLinkEvents(
+ BOOLEAN AccessGranted,
+ PSECURITY_DESCRIPTOR SecurityDescriptor
+ );
+#line 19336 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+SeAuditingHardLinkEventsWithContext(
+ BOOLEAN AccessGranted,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext
+ );
+#line 19346 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+SeAuditingFileOrGlobalEvents(
+ BOOLEAN AccessGranted,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext
+ );
+#line 19356 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+void
+SeSetAccessStateGenericMapping (
+ PACCESS_STATE AccessState,
+ PGENERIC_MAPPING GenericMapping
+ );
+#line 19364 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+SeRegisterLogonSessionTerminatedRoutine(
+ PSE_LOGON_SESSION_TERMINATED_ROUTINE CallbackRoutine
+ );
+#line 19372 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+SeUnregisterLogonSessionTerminatedRoutine(
+ PSE_LOGON_SESSION_TERMINATED_ROUTINE CallbackRoutine
+ );
+#line 19380 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+SeRegisterLogonSessionTerminatedRoutineEx(
+ PSE_LOGON_SESSION_TERMINATED_ROUTINE_EX CallbackRoutine,
+ PVOID Context
+ );
+#line 19389 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+SeUnregisterLogonSessionTerminatedRoutineEx(
+ PSE_LOGON_SESSION_TERMINATED_ROUTINE_EX CallbackRoutine,
+ PVOID Context
+ );
+#line 19398 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+SeMarkLogonSessionForTerminationNotification(
+ PLUID LogonId
+ );
+#line 19406 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+SeMarkLogonSessionForTerminationNotificationEx(
+ PLUID LogonId,
+ PESILO pServerSilo
+ );
+#line 19415 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+SeQueryInformationToken (
+ PACCESS_TOKEN Token,
+ TOKEN_INFORMATION_CLASS TokenInformationClass,
+ PVOID *TokenInformation
+ );
+#line 19439 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+NTSTATUS
+SeLocateProcessImageName(
+ PEPROCESS Process,
+ PUNICODE_STRING *pImageFileName
+ );
+
+
+
+
+
+extern __declspec(dllimport) PSE_EXPORTS SeExports;
+
+
+
+
+__declspec(dllimport)
+void
+SeExamineGlobalSacl(
+ PUNICODE_STRING ObjectType,
+ PACL ResourceSacl,
+ PACCESS_TOKEN Token,
+ ACCESS_MASK DesiredAccess,
+ BOOLEAN AccessGranted,
+ PBOOLEAN GenerateAudit,
+ PBOOLEAN GenerateAlarm
+);
+
+__declspec(dllimport)
+void
+SeMaximumAuditMaskFromGlobalSacl(
+ PUNICODE_STRING ObjectTypeName,
+ ACCESS_MASK GrantedAccess,
+ PACCESS_TOKEN Token,
+ PACCESS_MASK AuditMask
+ );
+
+#line 19478 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlIsSandboxedTokenHandle (
+ HANDLE TokenHandle,
+ KPROCESSOR_MODE PreviousMode
+ );
+
+__declspec(dllimport)
+BOOLEAN
+__stdcall
+RtlIsSandboxedToken (
+ PSECURITY_SUBJECT_CONTEXT Context,
+ KPROCESSOR_MODE PreviousMode
+ );
+#line 19497 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+SeCheckForCriticalAceRemoval(
+ PSECURITY_DESCRIPTOR CurrentDescriptor,
+ PSECURITY_DESCRIPTOR NewDescriptor,
+ PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext,
+ PBOOLEAN AceRemoved
+ );
+
+__declspec(dllimport)
+NTSTATUS
+SeAdjustObjectSecurity(
+ PUNICODE_STRING ObjectName,
+ PSECURITY_DESCRIPTOR OriginalDescriptor,
+ PSECURITY_DESCRIPTOR ProposedDescriptor,
+ PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext,
+ PSECURITY_DESCRIPTOR* AdjustedDescriptor,
+ PBOOLEAN ApplyAdjustedDescriptor
+ );
+#line 19519 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 19553 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PsAssignImpersonationToken(
+ PETHREAD Thread,
+ HANDLE Token
+ );
+#line 19568 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+PACCESS_TOKEN
+PsReferencePrimaryToken (
+ PEPROCESS Process
+ );
+#line 19577 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+PsDereferencePrimaryToken(
+ PACCESS_TOKEN PrimaryToken
+ );
+#line 19586 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+PsDereferenceImpersonationToken(
+ PACCESS_TOKEN ImpersonationToken
+ );
+#line 19595 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+PACCESS_TOKEN
+PsReferenceImpersonationToken(
+ PETHREAD Thread,
+ PBOOLEAN CopyOnOpen,
+ PBOOLEAN EffectiveOnly,
+ PSECURITY_IMPERSONATION_LEVEL ImpersonationLevel
+ );
+#line 19608 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+LARGE_INTEGER
+PsGetProcessExitTime(
+ void
+ );
+#line 19618 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+PsIsThreadTerminating(
+ PETHREAD Thread
+ );
+#line 19628 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PsImpersonateClient(
+ PETHREAD Thread,
+ PACCESS_TOKEN Token,
+ BOOLEAN CopyOnOpen,
+ BOOLEAN EffectiveOnly,
+ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
+ );
+#line 19644 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+PsDisableImpersonation(
+ PETHREAD Thread,
+ PSE_IMPERSONATION_STATE ImpersonationState
+ );
+#line 19656 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+PsRestoreImpersonation(
+ PETHREAD Thread,
+ PSE_IMPERSONATION_STATE ImpersonationState
+ );
+#line 19666 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+void
+PsRevertToSelf(
+ void
+ );
+#line 19676 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PsLookupProcessByProcessId(
+ HANDLE ProcessId,
+ PEPROCESS *Process
+ );
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PsLookupThreadByThreadId(
+ HANDLE ThreadId,
+ PETHREAD *Thread
+ );
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+PsChargePoolQuota (
+ PEPROCESS Process,
+ POOL_TYPE PoolType,
+ ULONG_PTR Amount
+ );
+#line 19711 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PsChargeProcessPoolQuota (
+ PEPROCESS Process,
+ POOL_TYPE PoolType,
+ ULONG_PTR Amount
+ );
+#line 19723 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+void
+PsReturnPoolQuota(
+ PEPROCESS Process,
+ POOL_TYPE PoolType,
+ ULONG_PTR Amount
+ );
+#line 19735 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+PEPROCESS
+PsGetThreadProcess(
+ PETHREAD Thread
+ );
+
+
+__declspec(dllimport)
+BOOLEAN
+PsIsSystemThread(
+ PETHREAD Thread
+ );
+#line 19751 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+PsUpdateDiskCounters (
+ PEPROCESS Process,
+ ULONG64 BytesRead,
+ ULONG64 BytesWritten,
+ ULONG ReadOperationCount,
+ ULONG WriteOperationCount,
+ ULONG FlushOperationCount
+ );
+#line 19764 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+PsIsDiskCountersEnabled (
+ void
+ );
+#line 19773 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+void
+DRIVER_FS_NOTIFICATION (
+ struct _DEVICE_OBJECT *DeviceObject,
+ BOOLEAN FsActive
+ );
+
+typedef DRIVER_FS_NOTIFICATION *PDRIVER_FS_NOTIFICATION;
+
+
+
+
+
+
+typedef enum _FS_FILTER_SECTION_SYNC_TYPE {
+ SyncTypeOther = 0,
+ SyncTypeCreateSection
+} FS_FILTER_SECTION_SYNC_TYPE, *PFS_FILTER_SECTION_SYNC_TYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FS_FILTER_SECTION_SYNC_OUTPUT {
+ ULONG StructureSize;
+ ULONG SizeReturned;
+ ULONG Flags;
+ ULONG DesiredReadAlignment;
+} FS_FILTER_SECTION_SYNC_OUTPUT, *PFS_FILTER_SECTION_SYNC_OUTPUT;
+
+
+
+
+
+typedef enum _FS_FILTER_STREAM_FO_NOTIFICATION_TYPE {
+ NotifyTypeCreate = 0,
+ NotifyTypeRetired
+} FS_FILTER_STREAM_FO_NOTIFICATION_TYPE, *PFS_FILTER_STREAM_FO_NOTIFICATION_TYPE;
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4324)
+#line 19860 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef struct _IRP *PIRP;
+
+typedef union _FS_FILTER_PARAMETERS {
+
+
+
+
+
+ struct {
+ PLARGE_INTEGER EndingOffset;
+ PERESOURCE *ResourceToRelease;
+ } AcquireForModifiedPageWriter;
+
+
+
+
+
+ struct {
+ PERESOURCE ResourceToRelease;
+ } ReleaseForModifiedPageWriter;
+
+
+
+
+
+ struct {
+ FS_FILTER_SECTION_SYNC_TYPE SyncType;
+ ULONG PageProtection;
+ PFS_FILTER_SECTION_SYNC_OUTPUT OutputInformation;
+ ULONG Flags;
+ ULONG AllocationAttributes;
+ } AcquireForSectionSynchronization;
+
+
+
+
+
+ struct {
+ PIRP Irp;
+ PVOID FileInformation;
+ PULONG Length;
+ FILE_INFORMATION_CLASS FileInformationClass;
+ NTSTATUS CompletionStatus;
+ } QueryOpen;
+
+
+
+
+
+ struct {
+ PVOID Argument1;
+ PVOID Argument2;
+ PVOID Argument3;
+ PVOID Argument4;
+ PVOID Argument5;
+ } Others;
+
+} FS_FILTER_PARAMETERS, *PFS_FILTER_PARAMETERS;
+
+
+#pragma warning(pop)
+#line 19923 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FS_FILTER_CALLBACK_DATA {
+
+ ULONG SizeOfFsFilterCallbackData;
+ UCHAR Operation;
+ UCHAR Reserved;
+
+ struct _DEVICE_OBJECT *DeviceObject;
+ struct _FILE_OBJECT *FileObject;
+
+ FS_FILTER_PARAMETERS Parameters;
+
+} FS_FILTER_CALLBACK_DATA, *PFS_FILTER_CALLBACK_DATA;
+
+
+
+
+
+
+
+
+
+typedef
+NTSTATUS
+(*PFS_FILTER_CALLBACK) (
+ PFS_FILTER_CALLBACK_DATA Data,
+ PVOID *CompletionContext
+ );
+
+
+
+
+
+
+typedef
+void
+(*PFS_FILTER_COMPLETION_CALLBACK) (
+ PFS_FILTER_CALLBACK_DATA Data,
+ NTSTATUS OperationStatus,
+ PVOID CompletionContext
+ );
+
+
+
+
+
+
+
+
+
+typedef struct _FS_FILTER_CALLBACKS {
+
+ ULONG SizeOfFsFilterCallbacks;
+ ULONG Reserved;
+
+ PFS_FILTER_CALLBACK PreAcquireForSectionSynchronization;
+ PFS_FILTER_COMPLETION_CALLBACK PostAcquireForSectionSynchronization;
+ PFS_FILTER_CALLBACK PreReleaseForSectionSynchronization;
+ PFS_FILTER_COMPLETION_CALLBACK PostReleaseForSectionSynchronization;
+ PFS_FILTER_CALLBACK PreAcquireForCcFlush;
+ PFS_FILTER_COMPLETION_CALLBACK PostAcquireForCcFlush;
+ PFS_FILTER_CALLBACK PreReleaseForCcFlush;
+ PFS_FILTER_COMPLETION_CALLBACK PostReleaseForCcFlush;
+ PFS_FILTER_CALLBACK PreAcquireForModifiedPageWriter;
+ PFS_FILTER_COMPLETION_CALLBACK PostAcquireForModifiedPageWriter;
+ PFS_FILTER_CALLBACK PreReleaseForModifiedPageWriter;
+ PFS_FILTER_COMPLETION_CALLBACK PostReleaseForModifiedPageWriter;
+ PFS_FILTER_CALLBACK PreQueryOpen;
+ PFS_FILTER_COMPLETION_CALLBACK PostQueryOpen;
+
+} FS_FILTER_CALLBACKS, *PFS_FILTER_CALLBACKS;
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlRegisterFileSystemFilterCallbacks (
+ struct _DRIVER_OBJECT *FilterDriverObject,
+ PFS_FILTER_CALLBACKS Callbacks
+ );
+#line 20016 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlCheckFileSystemFilterCallbacksRegistered (
+ struct _DRIVER_OBJECT *FilterDriverObject
+ );
+#line 20024 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlNotifyStreamFileObject (
+ struct _FILE_OBJECT * StreamFileObject,
+ struct _DEVICE_OBJECT *DeviceObjectHint,
+ FS_FILTER_STREAM_FO_NOTIFICATION_TYPE NotificationType,
+ BOOLEAN SafeToRecurse
+ );
+#line 20035 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern KSPIN_LOCK IoStatisticsLock;
+extern ULONG IoReadOperationCount;
+extern ULONG IoWriteOperationCount;
+extern ULONG IoOtherOperationCount;
+extern LARGE_INTEGER IoReadTransferCount;
+extern LARGE_INTEGER IoWriteTransferCount;
+extern LARGE_INTEGER IoOtherTransferCount;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+IoAcquireVpbSpinLock(
+ PKIRQL Irql
+ );
+#line 20106 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoCheckDesiredAccess(
+ PACCESS_MASK DesiredAccess,
+ ACCESS_MASK GrantedAccess
+ );
+#line 20116 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoCheckEaBufferValidity(
+ PFILE_FULL_EA_INFORMATION EaBuffer,
+ ULONG EaLength,
+ PULONG ErrorOffset
+ );
+#line 20126 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+IoCheckFileObjectOpenedAsCopyDestination(
+ PFILE_OBJECT FileObject
+ );
+
+__declspec(dllimport)
+BOOLEAN
+IoCheckFileObjectOpenedAsCopySource(
+ PFILE_OBJECT FileObject
+ );
+
+#line 20141 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoCheckFunctionAccess(
+ ACCESS_MASK GrantedAccess,
+ UCHAR MajorFunction,
+ UCHAR MinorFunction,
+ ULONG IoControlCode,
+ PVOID Arg1,
+ PVOID Arg2
+ );
+#line 20154 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoCheckQuerySetFileInformation(
+ FILE_INFORMATION_CLASS FileInformationClass,
+ ULONG Length,
+ BOOLEAN SetOperation
+ );
+#line 20164 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoCheckQuerySetVolumeInformation(
+ FS_INFORMATION_CLASS FsInformationClass,
+ ULONG Length,
+ BOOLEAN SetOperation
+ );
+#line 20174 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoCheckQuotaBufferValidity(
+ PFILE_QUOTA_INFORMATION QuotaBuffer,
+ ULONG QuotaLength,
+ PULONG ErrorOffset
+ );
+#line 20184 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+PFILE_OBJECT
+IoCreateStreamFileObject(
+ PFILE_OBJECT FileObject,
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 20195 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+PFILE_OBJECT
+IoCreateStreamFileObjectEx(
+ PFILE_OBJECT FileObject,
+ PDEVICE_OBJECT DeviceObject,
+ PHANDLE FileHandle
+ );
+#line 20206 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+PFILE_OBJECT
+IoCreateStreamFileObjectLite(
+ PFILE_OBJECT FileObject,
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 20216 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+typedef struct _IO_CREATE_STREAM_FILE_OPTIONS {
+ USHORT Size;
+ USHORT Flags;
+ PDEVICE_OBJECT TargetDeviceObject;
+} IO_CREATE_STREAM_FILE_OPTIONS, *PIO_CREATE_STREAM_FILE_OPTIONS;
+
+
+__declspec(dllimport)
+NTSTATUS
+IoCreateStreamFileObjectEx2(
+ PIO_CREATE_STREAM_FILE_OPTIONS CreateOptions,
+ PFILE_OBJECT FileObject,
+ PDEVICE_OBJECT DeviceObject,
+ PFILE_OBJECT* StreamFileObject,
+ PHANDLE FileHandle
+ );
+#line 20239 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+IoFastQueryNetworkAttributes(
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ ACCESS_MASK DesiredAccess,
+ ULONG OpenOptions,
+ PIO_STATUS_BLOCK IoStatus,
+ PFILE_NETWORK_OPEN_INFORMATION Buffer
+ );
+#line 20252 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoPageRead(
+ PFILE_OBJECT FileObject,
+ PMDL MemoryDescriptorList,
+ PLARGE_INTEGER StartingOffset,
+ PKEVENT Event,
+ PIO_STATUS_BLOCK IoStatusBlock
+ );
+#line 20264 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+PDEVICE_OBJECT
+IoGetAttachedDevice(
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 20273 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+PDEVICE_OBJECT
+IoGetAttachedDeviceReference(
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 20282 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+PDEVICE_OBJECT
+IoGetBaseFileSystemDeviceObject(
+ PFILE_OBJECT FileObject
+ );
+#line 20290 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+PCONFIGURATION_INFORMATION
+IoGetConfigurationInformation( void );
+#line 20297 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+PDEVICE_OBJECT
+IoGetDeviceToVerify(
+ PETHREAD Thread
+ );
+#line 20307 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+ULONG
+IoGetRequestorProcessId(
+ PIRP Irp
+ );
+#line 20316 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+PEPROCESS
+IoGetRequestorProcess(
+ PIRP Irp
+ );
+#line 20324 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+PIRP
+IoGetTopLevelIrp(
+ void
+ );
+#line 20334 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+IoIsOperationSynchronous(
+ PIRP Irp
+ );
+#line 20370 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+IoIsSystemThread(
+ PETHREAD Thread
+ );
+#line 20378 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+IoIsValidNameGraftingBuffer(
+ PIRP Irp,
+ PREPARSE_DATA_BUFFER ReparseBuffer
+ );
+#line 20388 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#line 20389 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoQueryFileDosDeviceName(
+ PFILE_OBJECT FileObject,
+ POBJECT_NAME_INFORMATION *ObjectNameInformation
+ );
+#line 20399 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoQueryFileInformation(
+ PFILE_OBJECT FileObject,
+ FILE_INFORMATION_CLASS FileInformationClass,
+ ULONG Length,
+ PVOID FileInformation,
+ PULONG ReturnedLength
+ );
+#line 20412 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoQueryVolumeInformation(
+ PFILE_OBJECT FileObject,
+ FS_INFORMATION_CLASS FsInformationClass,
+ ULONG Length,
+ PVOID FsInformation,
+ PULONG ReturnedLength
+ );
+#line 20424 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+IoQueueThreadIrp(
+ PIRP Irp
+ );
+#line 20432 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+IoRegisterFileSystem(
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 20443 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoRegisterFsRegistrationChange(
+ PDRIVER_OBJECT DriverObject,
+ PDRIVER_FS_NOTIFICATION DriverNotificationRoutine
+ );
+#line 20452 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoRegisterFsRegistrationChangeMountAware(
+ PDRIVER_OBJECT DriverObject,
+ PDRIVER_FS_NOTIFICATION DriverNotificationRoutine,
+ BOOLEAN SynchronizeWithMounts
+ );
+#line 20462 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+#line 20472 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoEnumerateRegisteredFiltersList(
+ PDRIVER_OBJECT *DriverObjectList,
+ ULONG DriverObjectListSize,
+ PULONG ActualNumberDriverObjects
+ );
+#line 20482 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoReplaceFileObjectName (
+ PFILE_OBJECT FileObject,
+ PWSTR NewFileName,
+ USHORT FileNameLength
+ );
+#line 20492 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+IoReleaseVpbSpinLock(
+ KIRQL Irql
+ );
+#line 20501 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+void
+IoSetDeviceToVerify(
+ PETHREAD Thread,
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 20512 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoSetInformation(
+ PFILE_OBJECT FileObject,
+ FILE_INFORMATION_CLASS FileInformationClass,
+ ULONG Length,
+ PVOID FileInformation
+ );
+#line 20524 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+IoSetTopLevelIrp(
+ PIRP Irp
+ );
+#line 20533 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+USHORT
+IoSizeOfIrpEx(
+ PDEVICE_OBJECT DeviceObject,
+ CCHAR StackSize
+ );
+#line 20569 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+IoStartNextPacket(
+ PDEVICE_OBJECT DeviceObject,
+ BOOLEAN Cancelable
+ );
+#line 20579 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+IoStartNextPacketByKey(
+ PDEVICE_OBJECT DeviceObject,
+ BOOLEAN Cancelable,
+ ULONG Key
+ );
+#line 20590 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+void
+IoStartPacket(
+ PDEVICE_OBJECT DeviceObject,
+ PIRP Irp,
+ PULONG Key,
+ PDRIVER_CANCEL CancelFunction
+ );
+#line 20603 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+void
+IoSetStartIoAttributes(
+ PDEVICE_OBJECT DeviceObject,
+ BOOLEAN DeferredStartIo,
+ BOOLEAN NonCancelable
+ );
+#line 20612 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+void
+IoStartTimer(
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 20622 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#line 20623 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+void
+IoStopTimer(
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 20633 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#line 20634 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoSynchronousPageWrite(
+ PFILE_OBJECT FileObject,
+ PMDL MemoryDescriptorList,
+ PLARGE_INTEGER StartingOffset,
+ PKEVENT Event,
+ PIO_STATUS_BLOCK IoStatusBlock
+ );
+#line 20649 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+PEPROCESS
+IoThreadToProcess(
+ PETHREAD Thread
+ );
+#line 20659 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+IoUnregisterFileSystem(
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 20668 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+IoUnregisterFsRegistrationChange(
+ PDRIVER_OBJECT DriverObject,
+ PDRIVER_FS_NOTIFICATION DriverNotificationRoutine
+ );
+#line 20677 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoVerifyVolume(
+ PDEVICE_OBJECT DeviceObject,
+ BOOLEAN AllowRawMount
+ );
+#line 20687 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+IoWriteErrorLogEntry(
+ PVOID ElEntry
+ );
+#line 20696 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoGetRequestorSessionId(
+ PIRP Irp,
+ PULONG pSessionId
+ );
+#line 20706 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoEnumerateDeviceObjectList(
+ PDRIVER_OBJECT DriverObject,
+ PDEVICE_OBJECT *DeviceObjectList,
+ ULONG DeviceObjectListSize,
+ PULONG ActualNumberDeviceObjects
+ );
+#line 20718 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+PDEVICE_OBJECT
+IoGetLowerDeviceObject(
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 20726 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+PDEVICE_OBJECT
+IoGetDeviceAttachmentBaseRef(
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 20734 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+IoGetDiskDeviceObject(
+ PDEVICE_OBJECT FileSystemDeviceObject,
+ PDEVICE_OBJECT *DiskDeviceObject
+ );
+#line 20743 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+typedef struct _IO_PRIORITY_INFO {
+ ULONG Size;
+ ULONG ThreadPriority;
+ ULONG PagePriority;
+ IO_PRIORITY_HINT IoPriority;
+} IO_PRIORITY_INFO, *PIO_PRIORITY_INFO;
+#line 20757 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+void
+__forceinline
+IoInitializePriorityInfo(
+ PIO_PRIORITY_INFO PriorityInfo
+ )
+{
+ PriorityInfo->Size = sizeof(IO_PRIORITY_INFO);
+ PriorityInfo->ThreadPriority = 0xffff;
+ PriorityInfo->IoPriority = IoPriorityNormal;
+ PriorityInfo->PagePriority = 0;
+}
+#line 20771 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+NTSTATUS
+IoRetrievePriorityInfo (
+ PIRP Irp,
+ PFILE_OBJECT FileObject,
+ PETHREAD Thread,
+ PIO_PRIORITY_INFO PriorityInfo
+ );
+#line 20781 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+NTSTATUS
+IoApplyPriorityInfoThread(
+ PIO_PRIORITY_INFO InputPriorityInfo,
+ PIO_PRIORITY_INFO OutputPriorityInfo,
+ PETHREAD Thread
+ );
+#line 20790 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+NTSTATUS
+IoGetFsZeroingOffset (
+ PIRP Irp,
+ PULONG ZeroingOffset
+ );
+
+NTSTATUS
+IoSetFsZeroingOffsetRequired (
+ PIRP Irp
+ );
+
+NTSTATUS
+IoSetFsZeroingOffset (
+ PIRP Irp,
+ ULONG ZeroingOffset
+ );
+
+#line 20811 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+NTSTATUS
+IoGetFsZeroingOffset (
+ PIRP Irp,
+ PULONG ZeroingOffset
+ );
+
+NTSTATUS
+IoSetFsZeroingOffsetRequired (
+ PIRP Irp
+ );
+
+NTSTATUS
+IoSetFsZeroingOffset (
+ PIRP Irp,
+ ULONG ZeroingOffset
+ );
+
+#line 20833 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+struct _IO_IRP_EXT_TRACK_OFFSET_HEADER;
+
+typedef void
+(*PIO_IRP_EXT_PROCESS_TRACKED_OFFSET_CALLBACK)(
+ struct _IO_IRP_EXT_TRACK_OFFSET_HEADER *SourceContext,
+ struct _IO_IRP_EXT_TRACK_OFFSET_HEADER *TargetContext,
+ LONGLONG RelativeOffset
+ );
+
+
+
+
+
+
+
+
+
+
+typedef struct _IO_IRP_EXT_TRACK_OFFSET_HEADER {
+
+ USHORT Validation;
+
+
+
+ USHORT Flags;
+
+ PIO_IRP_EXT_PROCESS_TRACKED_OFFSET_CALLBACK TrackedOffsetCallback;
+
+} IO_IRP_EXT_TRACK_OFFSET_HEADER, *PIO_IRP_EXT_TRACK_OFFSET_HEADER;
+
+
+
+
+
+
+
+
+
+
+#line 20886 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#line 20887 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+NTSTATUS
+IoGetFsTrackOffsetState(
+ PIRP Irp,
+ PIO_IRP_EXT_TRACK_OFFSET_HEADER *RetFsTrackOffsetBlob,
+ LONGLONG *RetTrackedOffset);
+
+
+NTSTATUS
+IoSetFsTrackOffsetState(
+ PIRP Irp,
+ PIO_IRP_EXT_TRACK_OFFSET_HEADER FsTrackOffsetBlob,
+ LONGLONG TrackedOffset);
+
+NTSTATUS
+IoClearFsTrackOffsetState(
+ PIRP Irp
+ );
+
+BOOLEAN
+IoIrpHasFsTrackOffsetExtensionType(
+ PIRP Irp );
+#line 20914 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _COPY_INFORMATION {
+
+
+ PFILE_OBJECT SourceFileObject;
+
+
+
+
+
+ LONGLONG SourceFileOffset;
+
+} COPY_INFORMATION, *PCOPY_INFORMATION;
+
+NTSTATUS
+IoGetCopyInformationExtension (
+ PIRP Irp,
+ PCOPY_INFORMATION CopyInformation
+ );
+
+#line 20946 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+PVOID
+PoRegisterSystemState (
+ PVOID StateHandle,
+ EXECUTION_STATE Flags
+ );
+#line 20957 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PoCreatePowerRequest (
+ PVOID *PowerRequest,
+ PDEVICE_OBJECT DeviceObject,
+ PCOUNTED_REASON_CONTEXT Context
+ );
+#line 20968 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PoSetPowerRequest (
+ PVOID PowerRequest,
+ POWER_REQUEST_TYPE Type
+ );
+#line 20978 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PoClearPowerRequest (
+ PVOID PowerRequest,
+ POWER_REQUEST_TYPE Type
+ );
+#line 20988 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+PoDeletePowerRequest (
+ PVOID PowerRequest
+ );
+#line 20997 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+void
+PoUnregisterSystemState (
+ PVOID StateHandle
+ );
+#line 21007 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+POWER_STATE
+PoSetPowerState (
+ PDEVICE_OBJECT DeviceObject,
+ POWER_STATE_TYPE Type,
+ POWER_STATE State
+ );
+#line 21019 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PoCallDriver (
+ PDEVICE_OBJECT DeviceObject,
+ PIRP Irp
+ );
+#line 21029 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+PoStartNextPowerIrp(
+ PIRP Irp
+ );
+#line 21038 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+PULONG
+PoRegisterDeviceForIdleDetection (
+ PDEVICE_OBJECT DeviceObject,
+ ULONG ConservationIdleTime,
+ ULONG PerformanceIdleTime,
+ DEVICE_POWER_STATE State
+ );
+#line 21050 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+PoSetDeviceBusyEx (
+ PULONG IdlePointer
+ );
+#line 21061 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+PoStartDeviceBusy (
+ PULONG IdlePointer
+ );
+#line 21069 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+PoEndDeviceBusy (
+ PULONG IdlePointer
+ );
+#line 21077 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+PoQueryWatchdogTime (
+ PDEVICE_OBJECT Pdo,
+ PULONG SecondsRemaining
+ );
+#line 21087 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef
+
+
+NTSTATUS
+POWER_SETTING_CALLBACK (
+ LPCGUID SettingGuid,
+ PVOID Value,
+ ULONG ValueLength,
+ PVOID Context
+);
+
+typedef POWER_SETTING_CALLBACK *PPOWER_SETTING_CALLBACK;
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PoRegisterPowerSettingCallback (
+ PDEVICE_OBJECT DeviceObject,
+ LPCGUID SettingGuid,
+ PPOWER_SETTING_CALLBACK Callback,
+ PVOID Context,
+ PVOID *Handle
+ );
+#line 21114 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PoUnregisterPowerSettingCallback (
+ PVOID Handle
+ );
+#line 21123 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+PoQueueShutdownWorkItem(
+ PWORK_QUEUE_ITEM WorkItem
+ );
+#line 21147 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+MmIsRecursiveIoFault (
+ void
+ );
+#line 21156 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+MmForceSectionClosed (
+ PSECTION_OBJECT_POINTERS SectionObjectPointer,
+ BOOLEAN DelayClose
+ );
+#line 21167 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+MmForceSectionClosedEx (
+ PSECTION_OBJECT_POINTERS SectionObjectPointer,
+ ULONG ForceCloseFlags
+ );
+#line 21182 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+ULONGLONG
+MmGetMaximumFileSectionSize (
+ void
+ );
+#line 21191 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+typedef enum _MMFLUSH_TYPE {
+ MmFlushForDelete,
+ MmFlushForWrite
+} MMFLUSH_TYPE;
+
+
+
+__declspec(dllimport)
+BOOLEAN
+MmFlushImageSection (
+ PSECTION_OBJECT_POINTERS SectionObjectPointer,
+ MMFLUSH_TYPE FlushType
+ );
+#line 21207 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+MmCanFileBeTruncated (
+ PSECTION_OBJECT_POINTERS SectionPointer,
+ PLARGE_INTEGER NewFileSize
+ );
+#line 21217 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+MmSetAddressRangeModified (
+ PVOID Address,
+ SIZE_T Length
+ );
+#line 21227 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmIsFileSectionActive (
+ PSECTION_OBJECT_POINTERS FsSectionPointer,
+ ULONG Flags,
+ PLOGICAL SectionIsActive
+ );
+
+#line 21244 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+typedef struct _READ_LIST {
+ PFILE_OBJECT FileObject;
+ ULONG NumberOfEntries;
+ LOGICAL IsImage;
+ FILE_SEGMENT_ELEMENT List[1];
+} READ_LIST, *PREAD_LIST;
+
+
+typedef union _MM_PREFETCH_FLAGS {
+ struct {
+ ULONG Priority : 3;
+ ULONG RepurposePriority : 3;
+ ULONG PriorityProtection : 1;
+ ULONG MustBeZero : 2;
+ ULONG CannotBeUsedAsFlags : 23;
+ } Flags;
+ ULONG AllFlags;
+
+} MM_PREFETCH_FLAGS, *PMM_PREFETCH_FLAGS;
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+MmPrefetchPages (
+ ULONG NumberOfLists,
+ PREAD_LIST *ReadLists
+ );
+#line 21280 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+ULONG
+MmDoesFileHaveUserWritableReferences (
+ PSECTION_OBJECT_POINTERS SectionPointer
+ );
+#line 21295 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+LOGICAL
+MmMdlPagesAreZero (
+ PMDL Mdl
+ );
+#line 21303 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+typedef struct _PHYSICAL_MEMORY_RUN {
+ PFN_NUMBER BasePage;
+ PFN_NUMBER PageCount;
+} PHYSICAL_MEMORY_RUN, *PPHYSICAL_MEMORY_RUN;
+
+typedef struct _PHYSICAL_MEMORY_DESCRIPTOR {
+ ULONG NumberOfRuns;
+ PFN_NUMBER NumberOfPages;
+ PHYSICAL_MEMORY_RUN Run[1];
+} PHYSICAL_MEMORY_DESCRIPTOR, *PPHYSICAL_MEMORY_DESCRIPTOR;
+
+typedef struct _PHYSICAL_EXTENTS_DESCRIPTOR {
+ ULONG NumberOfRuns;
+ ULONG NumberOfValidRuns;
+ PHYSICAL_MEMORY_RUN Run[1];
+} PHYSICAL_EXTENTS_DESCRIPTOR, *PPHYSICAL_EXTENTS_DESCRIPTOR;
+
+
+
+
+
+
+
+
+
+
+#line 21332 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 21336 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 21340 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+
+#line 21352 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+LARGE_INTEGER
+KeQueryPerformanceCounter (
+ PLARGE_INTEGER PerformanceFrequency
+ );
+
+
+#line 21360 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+KeStallExecutionProcessor (
+ ULONG MicroSeconds
+ );
+#line 21373 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ObInsertObject(
+ PVOID Object,
+ PACCESS_STATE PassedAccessState,
+ ACCESS_MASK DesiredAccess,
+ ULONG ObjectPointerBias,
+ PVOID *NewObject,
+ PHANDLE Handle
+ );
+#line 21388 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+ObOpenObjectByPointer(
+ PVOID Object,
+ ULONG HandleAttributes,
+ PACCESS_STATE PassedAccessState,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_TYPE ObjectType,
+ KPROCESSOR_MODE AccessMode,
+ PHANDLE Handle
+ );
+#line 21402 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+ObOpenObjectByPointerWithTag(
+ PVOID Object,
+ ULONG HandleAttributes,
+ PACCESS_STATE PassedAccessState,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_TYPE ObjectType,
+ KPROCESSOR_MODE AccessMode,
+ ULONG Tag,
+ PHANDLE Handle
+ );
+#line 21417 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+ObMakeTemporaryObject(
+ PVOID Object
+ );
+#line 21426 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+ObQueryNameString(
+ PVOID Object,
+ POBJECT_NAME_INFORMATION ObjectNameInfo,
+ ULONG Length,
+ PULONG ReturnLength
+ );
+#line 21437 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+ObIsKernelHandle (
+ HANDLE Handle
+ );
+#line 21446 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+ObQueryObjectAuditingByHandle(
+ HANDLE Handle,
+ PBOOLEAN GenerateOnClose
+ );
+#line 21455 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+IoRequestDeviceRemovalForReset(
+ PDEVICE_OBJECT PhysicalDeviceObject,
+ ULONG Flags
+ );
+#line 21476 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+typedef ULONG LBN;
+typedef LBN *PLBN;
+
+typedef ULONG VBN;
+typedef VBN *PVBN;
+
+
+
+
+
+
+
+
+typedef PVOID OPLOCK, *POPLOCK;
+
+
+
+
+
+
+typedef enum _FAST_IO_POSSIBLE {
+ FastIoIsNotPossible = 0,
+ FastIoIsPossible,
+ FastIoIsQuestionable
+} FAST_IO_POSSIBLE;
+
+
+typedef struct _FSRTL_COMMON_FCB_HEADER {
+
+ CSHORT NodeTypeCode;
+ CSHORT NodeByteSize;
+
+
+
+
+
+ UCHAR Flags;
+
+
+
+
+
+
+
+ UCHAR IsFastIoPossible;
+
+
+
+
+
+ UCHAR Flags2;
+
+
+
+
+
+ UCHAR Reserved : 4 ;
+
+
+
+
+
+ UCHAR Version : 4 ;
+
+ PERESOURCE Resource;
+
+ PERESOURCE PagingIoResource;
+
+ LARGE_INTEGER AllocationSize;
+ LARGE_INTEGER FileSize;
+ LARGE_INTEGER ValidDataLength;
+
+} FSRTL_COMMON_FCB_HEADER;
+typedef FSRTL_COMMON_FCB_HEADER *PFSRTL_COMMON_FCB_HEADER;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FSRTL_ADVANCED_FCB_HEADER {
+
+
+
+
+
+ FSRTL_COMMON_FCB_HEADER ;
+
+#line 21599 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+ PFAST_MUTEX FastMutex;
+
+
+
+
+
+
+
+ LIST_ENTRY FilterContexts;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ULONG_PTR PushLock;
+
+
+
+
+
+
+
+
+ PVOID* FileContextSupportPointer;
+#line 21646 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ union {
+
+ OPLOCK Oplock;
+ PVOID ReservedForRemote;
+
+ };
+
+#line 21673 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PVOID AePushLock;
+
+
+
+
+
+
+
+
+
+#line 21705 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+ ULONG BypassIoOpenCount;
+
+#line 21719 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+ struct _FSRTL_PER_STREAM_CONTEXT *ReservedContext;
+#line 21731 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+} FSRTL_ADVANCED_FCB_HEADER;
+typedef FSRTL_ADVANCED_FCB_HEADER *PFSRTL_ADVANCED_FCB_HEADER;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _EOF_WAIT_BLOCK {
+
+ LIST_ENTRY EofWaitLinks;
+ KEVENT Event;
+
+} EOF_WAIT_BLOCK;
+
+typedef EOF_WAIT_BLOCK *PEOF_WAIT_BLOCK;
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlCopyRead (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ BOOLEAN Wait,
+ ULONG LockKey,
+ PVOID Buffer,
+ PIO_STATUS_BLOCK IoStatus,
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 21890 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlCopyWrite (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ BOOLEAN Wait,
+ ULONG LockKey,
+ PVOID Buffer,
+ PIO_STATUS_BLOCK IoStatus,
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 21908 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+NTSTATUS
+FsRtlMdlReadEx (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ ULONG LockKey,
+ PMDL *MdlChain,
+ PIO_STATUS_BLOCK IoStatus
+ );
+#line 21923 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlMdlReadDev (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ ULONG LockKey,
+ PMDL *MdlChain,
+ PIO_STATUS_BLOCK IoStatus,
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 21940 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlMdlReadCompleteDev (
+ PFILE_OBJECT FileObject,
+ PMDL MdlChain,
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 21952 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+NTSTATUS
+FsRtlPrepareMdlWriteEx (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ ULONG LockKey,
+ PMDL *MdlChain,
+ PIO_STATUS_BLOCK IoStatus
+ );
+#line 21966 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlPrepareMdlWriteDev (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ ULONG LockKey,
+ PMDL *MdlChain,
+ PIO_STATUS_BLOCK IoStatus,
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 21983 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlMdlWriteCompleteDev (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ PMDL MdlChain,
+ PDEVICE_OBJECT DeviceObject
+ );
+#line 21997 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+typedef struct _FSRTL_AUXILIARY_BUFFER {
+
+
+
+
+
+ PVOID Buffer;
+ ULONG Length;
+
+
+
+
+
+ ULONG Flags;
+
+
+
+
+
+ PMDL Mdl;
+
+} FSRTL_AUXILIARY_BUFFER;
+typedef FSRTL_AUXILIARY_BUFFER *PFSRTL_AUXILIARY_BUFFER;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+FsRtlAcquireFileExclusive (
+ PFILE_OBJECT FileObject
+ );
+#line 22053 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlReleaseFile (
+ PFILE_OBJECT FileObject
+ );
+#line 22062 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+NTSTATUS
+FsRtlGetFileSize(
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileSize
+ );
+#line 22077 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlIsTotalDeviceFailure(
+ NTSTATUS Status
+ );
+
+
+#line 22092 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_LOCK_INFO {
+
+
+
+
+
+
+ LARGE_INTEGER StartingByte;
+ LARGE_INTEGER Length;
+ BOOLEAN ExclusiveLock;
+
+
+
+
+
+ ULONG Key;
+ PFILE_OBJECT FileObject;
+ PVOID ProcessId;
+
+
+
+
+
+ LARGE_INTEGER EndingByte;
+
+} FILE_LOCK_INFO;
+typedef FILE_LOCK_INFO *PFILE_LOCK_INFO;
+
+
+
+
+
+
+
+
+
+
+
+typedef NTSTATUS (*PCOMPLETE_LOCK_IRP_ROUTINE) (
+ PVOID Context,
+ PIRP Irp
+ );
+
+typedef void (*PUNLOCK_ROUTINE) (
+ PVOID Context,
+ PFILE_LOCK_INFO FileLockInfo
+ );
+
+
+
+
+
+
+typedef struct _FILE_LOCK {
+
+
+
+
+
+ PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine;
+
+
+
+
+
+ PUNLOCK_ROUTINE UnlockRoutine;
+
+
+
+
+
+
+
+
+ BOOLEAN FastIoIsQuestionable;
+ BOOLEAN SpareC[3];
+
+
+
+
+
+ PVOID LockInformation;
+
+
+
+
+
+ FILE_LOCK_INFO LastReturnedLockInfo;
+ PVOID LastReturnedLock;
+
+
+
+
+
+
+ LONG volatile LockRequestsInProgress;
+
+} FILE_LOCK;
+typedef FILE_LOCK *PFILE_LOCK;
+
+
+
+
+__declspec(dllimport)
+PFILE_LOCK
+FsRtlAllocateFileLock (
+ PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine,
+ PUNLOCK_ROUTINE UnlockRoutine
+ );
+#line 22212 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlFreeFileLock (
+ PFILE_LOCK FileLock
+ );
+#line 22221 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlInitializeFileLock (
+ PFILE_LOCK FileLock,
+ PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine,
+ PUNLOCK_ROUTINE UnlockRoutine
+ );
+#line 22232 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlUninitializeFileLock (
+ PFILE_LOCK FileLock
+ );
+#line 22241 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlProcessFileLock (
+ PFILE_LOCK FileLock,
+ PIRP Irp,
+ PVOID Context
+ );
+#line 22253 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlCheckLockForReadAccess (
+ PFILE_LOCK FileLock,
+ PIRP Irp
+ );
+#line 22264 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlCheckLockForWriteAccess (
+ PFILE_LOCK FileLock,
+ PIRP Irp
+ );
+#line 22275 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlCheckLockForOplockRequest (
+ PFILE_LOCK FileLock,
+ PLARGE_INTEGER AllocationSize
+ );
+#line 22286 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlFastCheckLockForRead (
+ PFILE_LOCK FileLock,
+ PLARGE_INTEGER StartingByte,
+ PLARGE_INTEGER Length,
+ ULONG Key,
+ PFILE_OBJECT FileObject,
+ PVOID ProcessId
+ );
+#line 22301 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlFastCheckLockForWrite (
+ PFILE_LOCK FileLock,
+ PLARGE_INTEGER StartingByte,
+ PLARGE_INTEGER Length,
+ ULONG Key,
+ PVOID FileObject,
+ PVOID ProcessId
+ );
+#line 22316 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+PFILE_LOCK_INFO
+FsRtlGetNextFileLock (
+ PFILE_LOCK FileLock,
+ BOOLEAN Restart
+ );
+#line 22327 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlAreThereCurrentOrInProgressFileLocks (
+ PFILE_LOCK FileLock
+ );
+#line 22336 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlAreThereWaitingFileLocks (
+ PFILE_LOCK FileLock
+ );
+#line 22345 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlFastUnlockSingle (
+ PFILE_LOCK FileLock,
+ PFILE_OBJECT FileObject,
+ LARGE_INTEGER __unaligned *FileOffset,
+ PLARGE_INTEGER Length,
+ PEPROCESS ProcessId,
+ ULONG Key,
+ PVOID Context,
+ BOOLEAN AlreadySynchronized
+ );
+#line 22361 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlFastUnlockAll (
+ PFILE_LOCK FileLock,
+ PFILE_OBJECT FileObject,
+ PEPROCESS ProcessId,
+ PVOID Context
+ );
+#line 22373 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlFastUnlockAllByKey (
+ PFILE_LOCK FileLock,
+ PFILE_OBJECT FileObject,
+ PEPROCESS ProcessId,
+ ULONG Key,
+ PVOID Context
+ );
+#line 22386 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlPrivateLock (
+ PFILE_LOCK FileLock,
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ PLARGE_INTEGER Length,
+ PEPROCESS ProcessId,
+ ULONG Key,
+ BOOLEAN FailImmediately,
+ BOOLEAN ExclusiveLock,
+ PIO_STATUS_BLOCK Iosb,
+ PIRP Irp,
+ PVOID Context,
+ BOOLEAN AlreadySynchronized
+ );
+#line 22408 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct {
+
+
+
+
+
+ FAST_MUTEX Mutex;
+
+
+
+
+
+
+ PRTL_SPLAY_LINKS Cache;
+
+
+
+
+
+ LIST_ENTRY TimerQueue;
+
+
+
+
+
+
+ USHORT NumEntries;
+
+} TUNNEL, *PTUNNEL;
+
+
+
+__declspec(dllimport)
+void
+FsRtlInitializeTunnelCache (
+ TUNNEL *Cache
+ );
+#line 22517 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlAddToTunnelCache (
+ TUNNEL *Cache,
+ ULONGLONG DirectoryKey,
+ UNICODE_STRING *ShortName,
+ UNICODE_STRING *LongName,
+ BOOLEAN KeyByShortName,
+ ULONG DataLength,
+ void *Data
+ );
+#line 22532 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlFindInTunnelCache (
+ TUNNEL *Cache,
+ ULONGLONG DirectoryKey,
+ UNICODE_STRING *Name,
+ UNICODE_STRING *ShortName,
+ UNICODE_STRING *LongName,
+ ULONG *DataLength,
+ void *Data
+ );
+#line 22553 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlAddToTunnelCacheEx (
+ TUNNEL *Cache,
+ ULONGLONG DirectoryKey,
+ UNICODE_STRING *ShortName,
+ UNICODE_STRING *LongName,
+ ULONG Flags,
+ ULONG DataLength,
+ void *Data
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlFindInTunnelCacheEx (
+ TUNNEL *Cache,
+ ULONGLONG DirectoryKey,
+ UNICODE_STRING *Name,
+ UNICODE_STRING *ShortName,
+ UNICODE_STRING *LongName,
+ ULONG Flags,
+ ULONG *DataLength,
+ void *Data
+ );
+
+
+
+
+
+
+
+
+
+#line 22610 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlDeleteKeyFromTunnelCache (
+ TUNNEL *Cache,
+ ULONGLONG DirectoryKey
+ );
+#line 22620 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlDeleteTunnelCache (
+ TUNNEL *Cache
+ );
+#line 22629 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _FSRTL_COMPARISON_RESULT {
+ LessThan = -1,
+ EqualTo = 0,
+ GreaterThan = 1
+} FSRTL_COMPARISON_RESULT;
+
+
+
+#line 22649 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+extern UCHAR const* const (*FsRtlLegalAnsiCharacterArray);
+extern PUSHORT (*NlsOemLeadByteInfo);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+FsRtlDissectDbcs (
+ ANSI_STRING Path,
+ PANSI_STRING FirstName,
+ PANSI_STRING RemainingName
+ );
+#line 22777 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlDoesDbcsContainWildCards (
+ PANSI_STRING Name
+ );
+#line 22787 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlIsDbcsInExpression (
+ PANSI_STRING Expression,
+ PANSI_STRING Name
+ );
+#line 22798 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlIsFatDbcsLegal (
+ ANSI_STRING DbcsName,
+ BOOLEAN WildCardsPermissible,
+ BOOLEAN PathNamePermissible,
+ BOOLEAN LeadingBackslashPermissible
+ );
+#line 22811 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlIsHpfsDbcsLegal (
+ ANSI_STRING DbcsName,
+ BOOLEAN WildCardsPermissible,
+ BOOLEAN PathNamePermissible,
+ BOOLEAN LeadingBackslashPermissible
+ );
+#line 22826 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlNormalizeNtstatus (
+ NTSTATUS Exception,
+ NTSTATUS GenericException
+ );
+#line 22840 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlIsNtstatusExpected (
+ NTSTATUS Exception
+ );
+#line 22849 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PERESOURCE
+FsRtlAllocateResource (
+ void
+ );
+#line 22882 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _BASE_MCB {
+ ULONG MaximumPairCount;
+ ULONG PairCount;
+ USHORT PoolType;
+ USHORT Flags;
+ PVOID Mapping;
+} BASE_MCB, *PBASE_MCB;
+
+
+
+typedef struct _LARGE_MCB {
+ PKGUARDED_MUTEX GuardedMutex;
+ BASE_MCB BaseMcb;
+} LARGE_MCB, *PLARGE_MCB;
+
+
+
+
+__declspec(dllimport)
+void
+FsRtlInitializeLargeMcb (
+ PLARGE_MCB Mcb,
+ POOL_TYPE PoolType
+ );
+#line 22920 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlUninitializeLargeMcb (
+ PLARGE_MCB Mcb
+ );
+#line 22929 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlResetLargeMcb (
+ PLARGE_MCB Mcb,
+ BOOLEAN SelfSynchronized
+ );
+#line 22939 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlTruncateLargeMcb (
+ PLARGE_MCB Mcb,
+ LONGLONG Vbn
+ );
+#line 22949 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlAddLargeMcbEntry (
+ PLARGE_MCB Mcb,
+ LONGLONG Vbn,
+ LONGLONG Lbn,
+ LONGLONG SectorCount
+ );
+#line 22962 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlRemoveLargeMcbEntry (
+ PLARGE_MCB Mcb,
+ LONGLONG Vbn,
+ LONGLONG SectorCount
+ );
+#line 22973 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlLookupLargeMcbEntry (
+ PLARGE_MCB Mcb,
+ LONGLONG Vbn,
+ PLONGLONG Lbn,
+ PLONGLONG SectorCountFromLbn,
+ PLONGLONG StartingLbn,
+ PLONGLONG SectorCountFromStartingLbn,
+ PULONG Index
+ );
+#line 22988 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlLookupLastLargeMcbEntry (
+ PLARGE_MCB Mcb,
+ PLONGLONG Vbn,
+ PLONGLONG Lbn
+ );
+#line 22999 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlLookupLastLargeMcbEntryAndIndex (
+ PLARGE_MCB OpaqueMcb,
+ PLONGLONG LargeVbn,
+ PLONGLONG LargeLbn,
+ PULONG Index
+ );
+#line 23011 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+ULONG
+FsRtlNumberOfRunsInLargeMcb (
+ PLARGE_MCB Mcb
+ );
+#line 23020 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlGetNextLargeMcbEntry (
+ PLARGE_MCB Mcb,
+ ULONG RunIndex,
+ PLONGLONG Vbn,
+ PLONGLONG Lbn,
+ PLONGLONG SectorCount
+ );
+#line 23034 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlSplitLargeMcb (
+ PLARGE_MCB Mcb,
+ LONGLONG Vbn,
+ LONGLONG Amount
+ );
+#line 23046 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+FsRtlInitializeBaseMcb (
+ PBASE_MCB Mcb,
+ POOL_TYPE PoolType
+ );
+#line 23062 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+BOOLEAN
+FsRtlInitializeBaseMcbEx (
+ PBASE_MCB Mcb,
+ POOL_TYPE PoolType,
+ USHORT Flags
+ );
+#line 23073 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlUninitializeBaseMcb (
+ PBASE_MCB Mcb
+ );
+#line 23082 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlResetBaseMcb (
+ PBASE_MCB Mcb
+ );
+#line 23091 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlTruncateBaseMcb (
+ PBASE_MCB Mcb,
+ LONGLONG Vbn
+ );
+#line 23101 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlAddBaseMcbEntry (
+ PBASE_MCB Mcb,
+ LONGLONG Vbn,
+ LONGLONG Lbn,
+ LONGLONG SectorCount
+ );
+#line 23113 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+NTSTATUS
+FsRtlAddBaseMcbEntryEx (
+ PBASE_MCB Mcb,
+ LONGLONG Vbn,
+ LONGLONG Lbn,
+ LONGLONG SectorCount
+ );
+#line 23125 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlRemoveBaseMcbEntry (
+ PBASE_MCB Mcb,
+ LONGLONG Vbn,
+ LONGLONG SectorCount
+ );
+#line 23136 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlLookupBaseMcbEntry (
+ PBASE_MCB Mcb,
+ LONGLONG Vbn,
+ PLONGLONG Lbn,
+ PLONGLONG SectorCountFromLbn,
+ PLONGLONG StartingLbn,
+ PLONGLONG SectorCountFromStartingLbn,
+ PULONG Index
+ );
+#line 23151 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlLookupLastBaseMcbEntry (
+ PBASE_MCB Mcb,
+ PLONGLONG Vbn,
+ PLONGLONG Lbn
+ );
+#line 23162 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlLookupLastBaseMcbEntryAndIndex (
+ PBASE_MCB OpaqueMcb,
+ PLONGLONG LargeVbn,
+ PLONGLONG LargeLbn,
+ PULONG Index
+ );
+#line 23174 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+ULONG
+FsRtlNumberOfRunsInBaseMcb (
+ PBASE_MCB Mcb
+ );
+#line 23183 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlGetNextBaseMcbEntry (
+ PBASE_MCB Mcb,
+ ULONG RunIndex,
+ PLONGLONG Vbn,
+ PLONGLONG Lbn,
+ PLONGLONG SectorCount
+ );
+#line 23196 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlSplitBaseMcb (
+ PBASE_MCB Mcb,
+ LONGLONG Vbn,
+ LONGLONG Amount
+ );
+#line 23207 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct _MCB {
+ LARGE_MCB DummyFieldThatSizesThisStructureCorrectly;
+} MCB;
+typedef MCB *PMCB;
+
+
+
+
+__declspec(dllimport)
+void
+FsRtlInitializeMcb (
+ PMCB Mcb,
+ POOL_TYPE PoolType
+ );
+#line 23232 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlUninitializeMcb (
+ PMCB Mcb
+ );
+#line 23241 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlTruncateMcb (
+ PMCB Mcb,
+ VBN Vbn
+ );
+#line 23251 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlAddMcbEntry (
+ PMCB Mcb,
+ VBN Vbn,
+ LBN Lbn,
+ ULONG SectorCount
+ );
+#line 23263 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlRemoveMcbEntry (
+ PMCB Mcb,
+ VBN Vbn,
+ ULONG SectorCount
+ );
+#line 23274 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlLookupMcbEntry (
+ PMCB Mcb,
+ VBN Vbn,
+ PLBN Lbn,
+ PULONG SectorCount,
+ PULONG Index
+ );
+#line 23287 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlLookupLastMcbEntry (
+ PMCB Mcb,
+ PVBN Vbn,
+ PLBN Lbn
+ );
+#line 23298 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+ULONG
+FsRtlNumberOfRunsInMcb (
+ PMCB Mcb
+ );
+#line 23307 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlGetNextMcbEntry (
+ PMCB Mcb,
+ ULONG RunIndex,
+ PVBN Vbn,
+ PLBN Lbn,
+ PULONG SectorCount
+ );
+#line 23321 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlBalanceReads (
+ PDEVICE_OBJECT TargetDevice
+ );
+#line 23338 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+typedef
+void
+(*POPLOCK_WAIT_COMPLETE_ROUTINE) (
+ PVOID Context,
+
+
+ PIRP Irp
+
+
+#line 23354 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ );
+
+typedef
+void
+(*POPLOCK_FS_PREPOST_IRP) (
+ PVOID Context,
+
+
+ PIRP Irp
+
+
+#line 23366 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ );
+
+
+
+__declspec(dllimport)
+void
+FsRtlInitializeOplock (
+ POPLOCK Oplock
+ );
+#line 23376 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlUninitializeOplock (
+ POPLOCK Oplock
+ );
+#line 23385 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlOplockFsctrl (
+ POPLOCK Oplock,
+ PIRP Irp,
+ ULONG OpenCount
+ );
+#line 23397 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlCheckOplock (
+ POPLOCK Oplock,
+ PIRP Irp,
+ PVOID Context,
+ POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine,
+ POPLOCK_FS_PREPOST_IRP PostIrpRoutine
+ );
+#line 23411 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+#line 23419 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+#line 23424 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+#line 23429 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+#line 23432 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+#line 23442 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+#line 23451 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlCheckOplockEx (
+ POPLOCK Oplock,
+ PIRP Irp,
+ ULONG Flags,
+ PVOID Context,
+ POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine,
+ POPLOCK_FS_PREPOST_IRP PostIrpRoutine
+ );
+
+#line 23467 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+NTSTATUS
+FsRtlCheckUpperOplock (
+ POPLOCK Oplock,
+ ULONG NewLowerOplockState,
+ PVOID CompletionRoutineContext,
+ POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine,
+ POPLOCK_FS_PREPOST_IRP PrePendRoutine,
+ ULONG Flags
+ );
+
+
+
+NTSTATUS
+FsRtlUpperOplockFsctrl (
+ POPLOCK Oplock,
+ PIRP Irp,
+ ULONG OpenCount,
+ ULONG LowerOplockState,
+ ULONG Flags
+ );
+#line 23493 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlOplockIsFastIoPossible (
+ POPLOCK Oplock
+ );
+#line 23503 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlCurrentBatchOplock (
+ POPLOCK Oplock
+ );
+#line 23513 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlCurrentOplock (
+ POPLOCK Oplock
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlOplockBreakToNone (
+ POPLOCK Oplock,
+ PIO_STACK_LOCATION IrpSp,
+ PIRP Irp,
+ PVOID Context,
+ POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine,
+ POPLOCK_FS_PREPOST_IRP PostIrpRoutine
+ );
+#line 23536 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+typedef struct _OPLOCK_KEY_ECP_CONTEXT {
+
+
+
+
+
+
+ GUID OplockKey;
+
+
+
+
+
+ ULONG Reserved;
+
+} OPLOCK_KEY_ECP_CONTEXT, *POPLOCK_KEY_ECP_CONTEXT;
+
+
+
+
+
+
+
+extern const GUID GUID_ECP_OPLOCK_KEY;
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlOplockIsSharedRequest(
+ PIRP Irp
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlOplockBreakH (
+ POPLOCK Oplock,
+ PIRP Irp,
+ ULONG Flags,
+ PVOID Context,
+ POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine,
+ POPLOCK_FS_PREPOST_IRP PostIrpRoutine
+ );
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlOplockBreakH2 (
+ POPLOCK Oplock,
+ PIRP Irp,
+ ULONG Flags,
+ PVOID Context,
+ POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine,
+ POPLOCK_FS_PREPOST_IRP PostIrpRoutine,
+ PACCESS_MASK GrantedAccess,
+ PUSHORT ShareAccess
+);
+#line 23604 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlCurrentOplockH (
+ POPLOCK Oplock
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlOplockBreakToNoneEx (
+ POPLOCK Oplock,
+ PIRP Irp,
+ ULONG Flags,
+ PVOID Context,
+ POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine,
+ POPLOCK_FS_PREPOST_IRP PostIrpRoutine
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlOplockFsctrlEx (
+ POPLOCK Oplock,
+ PIRP Irp,
+ ULONG OpenCount,
+ ULONG Flags
+ );
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlOplockKeysEqual (
+ PFILE_OBJECT Fo1,
+ PFILE_OBJECT Fo2
+ );
+#line 23644 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+typedef struct _DUAL_OPLOCK_KEY_ECP_CONTEXT {
+
+
+
+
+
+
+ GUID ParentOplockKey;
+
+
+
+
+
+
+ GUID TargetOplockKey;
+
+
+
+
+
+
+ BOOLEAN ParentOplockKeySet;
+
+
+
+
+
+
+ BOOLEAN TargetOplockKeySet;
+
+} DUAL_OPLOCK_KEY_ECP_CONTEXT, *PDUAL_OPLOCK_KEY_ECP_CONTEXT;
+
+
+
+
+
+
+
+extern const GUID GUID_ECP_DUAL_OPLOCK_KEY;
+
+
+#line 23692 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlNotifyVolumeEvent (
+ PFILE_OBJECT FileObject,
+ ULONG EventCode
+ );
+#line 23725 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlNotifyVolumeEventEx (
+ PFILE_OBJECT FileObject,
+ ULONG EventCode,
+ PTARGET_DEVICE_CUSTOM_NOTIFICATION Event
+ );
+#line 23736 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct _REAL_NOTIFY_SYNC *PNOTIFY_SYNC;
+
+typedef
+BOOLEAN (*PCHECK_FOR_TRAVERSE_ACCESS) (
+ PVOID NotifyContext,
+ PVOID TargetContext,
+ PSECURITY_SUBJECT_CONTEXT SubjectContext
+ );
+
+typedef
+BOOLEAN (*PFILTER_REPORT_CHANGE) (
+ PVOID NotifyContext,
+ PVOID FilterContext
+ );
+
+
+
+__declspec(dllimport)
+void
+FsRtlNotifyInitializeSync (
+ PNOTIFY_SYNC *NotifySync
+ );
+#line 23769 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlNotifyUninitializeSync (
+ PNOTIFY_SYNC *NotifySync
+ );
+#line 23778 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+FsRtlNotifyFullChangeDirectory (
+ PNOTIFY_SYNC NotifySync,
+ PLIST_ENTRY NotifyList,
+ PVOID FsContext,
+ PSTRING FullDirectoryName,
+ BOOLEAN WatchTree,
+ BOOLEAN IgnoreBuffer,
+ ULONG CompletionFilter,
+ PIRP NotifyIrp,
+ PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback,
+ PSECURITY_SUBJECT_CONTEXT SubjectContext
+ );
+#line 23798 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlNotifyFilterChangeDirectory (
+ PNOTIFY_SYNC NotifySync,
+ PLIST_ENTRY NotifyList,
+ PVOID FsContext,
+ PSTRING FullDirectoryName,
+ BOOLEAN WatchTree,
+ BOOLEAN IgnoreBuffer,
+ ULONG CompletionFilter,
+ PIRP NotifyIrp,
+ PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback,
+ PSECURITY_SUBJECT_CONTEXT SubjectContext,
+ PFILTER_REPORT_CHANGE FilterCallback
+ );
+#line 23817 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlNotifyFilterReportChange (
+ PNOTIFY_SYNC NotifySync,
+ PLIST_ENTRY NotifyList,
+ PSTRING FullTargetName,
+ USHORT TargetNameOffset,
+ PSTRING StreamName,
+ PSTRING NormalizedParentName,
+ ULONG FilterMatch,
+ ULONG Action,
+ PVOID TargetContext,
+ PVOID FilterContext
+ );
+#line 23835 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlNotifyFullReportChange (
+ PNOTIFY_SYNC NotifySync,
+ PLIST_ENTRY NotifyList,
+ PSTRING FullTargetName,
+ USHORT TargetNameOffset,
+ PSTRING StreamName,
+ PSTRING NormalizedParentName,
+ ULONG FilterMatch,
+ ULONG Action,
+ PVOID TargetContext
+ );
+#line 23852 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlNotifyCleanup (
+ PNOTIFY_SYNC NotifySync,
+ PLIST_ENTRY NotifyList,
+ PVOID FsContext
+ );
+#line 23863 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlNotifyCleanupAll (
+ PNOTIFY_SYNC NotifySync,
+ PLIST_ENTRY NotifyList
+ );
+#line 23873 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+FsRtlDissectName (
+ UNICODE_STRING Path,
+ PUNICODE_STRING FirstName,
+ PUNICODE_STRING RemainingName
+ );
+#line 23900 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlDoesNameContainWildCards (
+ PUNICODE_STRING Name
+ );
+#line 23910 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlAreNamesEqual (
+ PCUNICODE_STRING ConstantNameA,
+ PCUNICODE_STRING ConstantNameB,
+ BOOLEAN IgnoreCase,
+ PCWCH UpcaseTable
+ );
+#line 23923 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlIsNameInExpression (
+ PUNICODE_STRING Expression,
+ PUNICODE_STRING Name,
+ BOOLEAN IgnoreCase,
+ PWCH UpcaseTable
+ );
+#line 23938 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlIsNameInUnUpcasedExpression (
+ PUNICODE_STRING Expression,
+ PUNICODE_STRING Name,
+ BOOLEAN IgnoreCase,
+ PWCH UpcaseTable
+ );
+#line 23958 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+typedef
+void
+(*PFSRTL_STACK_OVERFLOW_ROUTINE) (
+ PVOID Context,
+ PKEVENT Event
+ );
+
+
+
+__declspec(dllimport)
+void
+FsRtlPostStackOverflow (
+ PVOID Context,
+ PKEVENT Event,
+ PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine
+ );
+#line 23982 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlPostPagingFileStackOverflow (
+ PVOID Context,
+ PKEVENT Event,
+ PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine
+ );
+#line 23993 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlRegisterUncProvider(
+ PHANDLE MupHandle,
+ PCUNICODE_STRING RedirectorDeviceName,
+ BOOLEAN MailslotsSupported
+ );
+#line 24010 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+typedef ULONG FSRTL_UNC_PROVIDER_FLAGS;
+
+
+
+
+
+
+
+
+
+
+
+
+#line 24031 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+NTSTATUS
+FsRtlRegisterUncProviderEx(
+ PHANDLE MupHandle,
+ PCUNICODE_STRING RedirDevName,
+ PDEVICE_OBJECT DeviceObject,
+ FSRTL_UNC_PROVIDER_FLAGS Flags
+ );
+#line 24042 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+#line 24053 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+#line 24063 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+typedef ULONG FSRTL_UNC_HARDENING_CAPABILITIES;
+
+
+
+
+
+typedef struct _FSRTL_UNC_PROVIDER_REGISTRATION {
+
+
+
+
+
+ USHORT Size;
+ USHORT Version;
+
+
+
+
+
+ union {
+ FSRTL_UNC_PROVIDER_FLAGS ProviderFlags;
+ struct {
+ ULONG MailslotsSupported : 1;
+ ULONG CscEnabled : 1;
+ ULONG DomainSvcAware : 1;
+ ULONG ContainersAware : 1;
+ } ;
+ } ;
+
+
+
+
+ union {
+ FSRTL_UNC_HARDENING_CAPABILITIES HardeningCapabilities;
+ struct {
+ ULONG SupportsMutualAuth : 1;
+ ULONG SupportsIntegrity : 1;
+ ULONG SupportsPrivacy : 1;
+ } ;
+ } ;
+
+} FSRTL_UNC_PROVIDER_REGISTRATION, *PFSRTL_UNC_PROVIDER_REGISTRATION;
+
+
+
+NTSTATUS
+FsRtlRegisterUncProviderEx2(
+ PCUNICODE_STRING RedirDevName,
+ PDEVICE_OBJECT DeviceObject,
+ const FSRTL_UNC_PROVIDER_REGISTRATION *Registration,
+ PHANDLE MupHandle
+ );
+#line 24119 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+void
+FsRtlDeregisterUncProvider(
+ HANDLE Handle
+ );
+#line 24128 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlCancellableWaitForSingleObject(
+ PVOID Object,
+ PLARGE_INTEGER Timeout,
+ PIRP Irp
+ );
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlCancellableWaitForMultipleObjects(
+ ULONG Count,
+ PVOID ObjectArray[],
+ WAIT_TYPE WaitType,
+ PLARGE_INTEGER Timeout,
+ PKWAIT_BLOCK WaitBlockArray,
+ PIRP Irp
+ );
+
+#line 24157 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlMupGetProviderInfoFromFileObject(
+ PFILE_OBJECT pFileObject,
+ ULONG Level,
+ PVOID pBuffer,
+ PULONG pBufferSize
+ );
+
+
+
+
+
+
+
+
+
+
+typedef struct _FSRTL_MUP_PROVIDER_INFO_LEVEL_1 {
+ ULONG32 ProviderId;
+
+} FSRTL_MUP_PROVIDER_INFO_LEVEL_1, *PFSRTL_MUP_PROVIDER_INFO_LEVEL_1;
+
+typedef struct _FSRTL_MUP_PROVIDER_INFO_LEVEL_2 {
+ ULONG32 ProviderId;
+ UNICODE_STRING ProviderName;
+
+} FSRTL_MUP_PROVIDER_INFO_LEVEL_2, *PFSRTL_MUP_PROVIDER_INFO_LEVEL_2;
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlMupGetProviderIdFromName(
+ PCUNICODE_STRING pProviderName,
+ PULONG32 pProviderId
+ );
+
+
+#line 24210 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FSRTL_PER_FILE_CONTEXT {
+
+
+
+
+
+ LIST_ENTRY Links;
+
+
+
+
+
+
+ PVOID OwnerId;
+
+
+
+
+
+
+ PVOID InstanceId;
+
+
+
+
+
+
+
+
+
+
+
+ PFREE_FUNCTION FreeCallback;
+
+} FSRTL_PER_FILE_CONTEXT, *PFSRTL_PER_FILE_CONTEXT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlInsertPerFileContext (
+ PVOID* PerFileContextPointer,
+ PFSRTL_PER_FILE_CONTEXT Ptr
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PFSRTL_PER_FILE_CONTEXT
+FsRtlLookupPerFileContext (
+ PVOID* PerFileContextPointer,
+ PVOID OwnerId,
+ PVOID InstanceId
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PFSRTL_PER_FILE_CONTEXT
+FsRtlRemovePerFileContext (
+ PVOID* PerFileContextPointer,
+ PVOID OwnerId,
+ PVOID InstanceId
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 24430 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+FsRtlTeardownPerFileContexts (
+ PVOID* PerFileContextPointer
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FSRTL_PER_STREAM_CONTEXT {
+
+
+
+
+
+ LIST_ENTRY Links;
+
+
+
+
+
+
+ PVOID OwnerId;
+
+
+
+
+
+
+ PVOID InstanceId;
+
+
+
+
+
+
+
+
+
+
+
+ PFREE_FUNCTION FreeCallback;
+
+} FSRTL_PER_STREAM_CONTEXT, *PFSRTL_PER_STREAM_CONTEXT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlInsertPerStreamContext (
+ PFSRTL_ADVANCED_FCB_HEADER PerStreamContext,
+ PFSRTL_PER_STREAM_CONTEXT Ptr
+ );
+#line 24548 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PFSRTL_PER_STREAM_CONTEXT
+FsRtlLookupPerStreamContextInternal (
+ PFSRTL_ADVANCED_FCB_HEADER StreamContext,
+ PVOID OwnerId,
+ PVOID InstanceId
+ );
+#line 24569 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PFSRTL_PER_STREAM_CONTEXT
+FsRtlRemovePerStreamContext (
+ PFSRTL_ADVANCED_FCB_HEADER StreamContext,
+ PVOID OwnerId,
+ PVOID InstanceId
+ );
+#line 24603 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PVOID
+FsRtlAllocateAePushLock (
+ POOL_TYPE PoolType,
+ ULONG Tag
+ );
+
+
+
+
+
+
+__declspec(dllimport)
+void
+FsRtlFreeAePushLock (
+ PVOID AePushLock
+ );
+#line 24639 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+void
+__forceinline
+FsRtlSetupAdvancedHeader(
+ PVOID AdvHdr,
+ PFAST_MUTEX FMutex )
+
+
+
+
+
+
+
+
+
+
+
+{
+ PFSRTL_ADVANCED_FCB_HEADER localAdvHdr = (PFSRTL_ADVANCED_FCB_HEADER)AdvHdr;
+
+ localAdvHdr->Flags |= (0x40);
+ localAdvHdr->Flags2 |= (0x02);
+
+
+ localAdvHdr->Version = (0x05);
+
+
+
+
+
+
+
+
+
+
+#line 24685 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+ InitializeListHead( &localAdvHdr->FilterContexts );
+
+ if (FMutex != ((void *)0)) {
+
+ localAdvHdr->FastMutex = FMutex;
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ *((PULONG_PTR)(&localAdvHdr->PushLock)) = 0;
+
+
+ localAdvHdr->FileContextSupportPointer = ((void *)0);
+#line 24711 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+ localAdvHdr->Oplock = ((void *)0);
+#line 24715 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+ localAdvHdr->AePushLock = ((void *)0);
+
+
+
+
+#line 24728 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+ localAdvHdr->BypassIoOpenCount = 0;
+#line 24732 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+ localAdvHdr->ReservedContext = ((void *)0);
+#line 24736 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+}
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+FsRtlTeardownPerStreamContexts (
+ PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader
+ );
+
+
+
+
+
+typedef void (*PFN_FSRTLTEARDOWNPERSTREAMCONTEXTS) ( PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader);
+#line 24759 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FSRTL_PER_FILEOBJECT_CONTEXT {
+
+
+
+
+ LIST_ENTRY Links;
+
+
+
+
+
+
+ PVOID OwnerId;
+
+
+
+
+
+
+ PVOID InstanceId;
+
+} FSRTL_PER_FILEOBJECT_CONTEXT, *PFSRTL_PER_FILEOBJECT_CONTEXT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlInsertPerFileObjectContext (
+ PFILE_OBJECT FileObject,
+ PFSRTL_PER_FILEOBJECT_CONTEXT Ptr
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PFSRTL_PER_FILEOBJECT_CONTEXT
+FsRtlLookupPerFileObjectContext (
+ PFILE_OBJECT FileObject,
+ PVOID OwnerId,
+ PVOID InstanceId
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PFSRTL_PER_FILEOBJECT_CONTEXT
+FsRtlRemovePerFileObjectContext (
+ PFILE_OBJECT FileObject,
+ PVOID OwnerId,
+ PVOID InstanceId
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+FsRtlIncrementCcFastReadNotPossible(
+ void
+ );
+#line 24961 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+FsRtlIncrementCcFastReadWait(
+ void
+ );
+#line 24969 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+FsRtlIncrementCcFastReadNoWait(
+ void
+ );
+#line 24977 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+FsRtlIncrementCcFastReadResourceMiss(
+ void
+ );
+#line 24985 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+FsRtlIncrementCcFastMdlReadWait(
+ void
+ );
+#line 24993 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+LOGICAL
+FsRtlIsPagingFile (
+ PFILE_OBJECT FileObject
+ );
+#line 25008 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+LOGICAL
+FsRtlIsSystemPagingFile (
+ PFILE_OBJECT FileObject
+ );
+#line 25023 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlCreateSectionForDataScan(
+ PHANDLE SectionHandle,
+ PVOID *SectionObject,
+ PLARGE_INTEGER SectionFileSize,
+ PFILE_OBJECT FileObject,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ PLARGE_INTEGER MaximumSize,
+ ULONG SectionPageProtection,
+ ULONG AllocationAttributes,
+ ULONG Flags
+ );
+#line 25050 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlValidateReparsePointBuffer (
+ ULONG BufferLength,
+ PREPARSE_DATA_BUFFER ReparseBuffer
+);
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlRemoveDotsFromPath(
+ PWSTR OriginalString,
+ USHORT PathLength,
+ USHORT *NewLength
+);
+#line 25075 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlIsNonEmptyDirectoryReparsePointAllowed(
+ ULONG ReparseTag
+);
+#line 25083 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _ECP_LIST ECP_LIST;
+typedef struct _ECP_LIST *PECP_LIST;
+#line 25099 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+typedef struct _ECP_HEADER ECP_HEADER;
+typedef struct _ECP_HEADER *PECP_HEADER;
+#line 25104 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+typedef void
+(*PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK) (
+ PVOID EcpContext,
+ LPCGUID EcpType
+ );
+#line 25116 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+typedef ULONG FSRTL_ALLOCATE_ECPLIST_FLAGS;
+
+
+
+
+
+
+#line 25136 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlAllocateExtraCreateParameterList (
+ FSRTL_ALLOCATE_ECPLIST_FLAGS Flags,
+ PECP_LIST *EcpList
+ );
+#line 25148 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+void
+FsRtlFreeExtraCreateParameterList (
+ PECP_LIST EcpList
+ );
+#line 25158 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlInitializeExtraCreateParameterList (
+ PECP_LIST EcpList
+ );
+#line 25166 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+typedef ULONG FSRTL_ALLOCATE_ECP_FLAGS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 25189 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlAllocateExtraCreateParameter (
+ LPCGUID EcpType,
+ ULONG SizeOfContext,
+ FSRTL_ALLOCATE_ECP_FLAGS Flags,
+ PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback,
+ ULONG PoolTag,
+ PVOID *EcpContext
+ );
+#line 25205 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+void
+FsRtlFreeExtraCreateParameter (
+ PVOID EcpContext
+ );
+#line 25215 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+FsRtlInitializeExtraCreateParameter(
+ PECP_HEADER Ecp,
+ ULONG EcpFlags,
+ PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback,
+ ULONG TotalSize,
+ LPCGUID EcpType,
+ PVOID ListAllocatedFrom
+ );
+#line 25228 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+typedef ULONG FSRTL_ECP_LOOKASIDE_FLAGS;
+
+
+
+
+
+
+
+#line 25243 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+FsRtlInitExtraCreateParameterLookasideList (
+ PVOID Lookaside,
+ FSRTL_ECP_LOOKASIDE_FLAGS Flags,
+ SIZE_T Size,
+ ULONG Tag
+ );
+#line 25257 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+void
+FsRtlDeleteExtraCreateParameterLookasideList (
+ PVOID Lookaside,
+ FSRTL_ECP_LOOKASIDE_FLAGS Flags
+ );
+#line 25267 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlAllocateExtraCreateParameterFromLookasideList (
+ LPCGUID EcpType,
+ ULONG SizeOfContext,
+ FSRTL_ALLOCATE_ECP_FLAGS Flags,
+ PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback,
+ PVOID LookasideList,
+ PVOID *EcpContext
+ );
+#line 25282 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlInsertExtraCreateParameter (
+ PECP_LIST EcpList,
+ PVOID EcpContext
+ );
+#line 25294 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlFindExtraCreateParameter (
+ PECP_LIST EcpList,
+ LPCGUID EcpType,
+ PVOID *EcpContext,
+ ULONG *EcpContextSize
+ );
+#line 25308 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlRemoveExtraCreateParameter (
+ PECP_LIST EcpList,
+ LPCGUID EcpType,
+ PVOID *EcpContext,
+ ULONG *EcpContextSize
+ );
+#line 25322 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlGetEcpListFromIrp (
+ PIRP Irp,
+ PECP_LIST *EcpList
+ );
+#line 25338 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlSetEcpListIntoIrp (
+ PIRP Irp,
+ PECP_LIST EcpList
+ );
+#line 25350 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlGetNextExtraCreateParameter (
+ PECP_LIST EcpList,
+ PVOID CurrentEcpContext,
+ LPGUID NextEcpType,
+ PVOID *NextEcpContext,
+ ULONG *NextEcpContextSize
+ );
+#line 25370 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+void
+FsRtlAcknowledgeEcp (
+ PVOID EcpContext
+ );
+#line 25380 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+void
+FsRtlPrepareToReuseEcp (
+ PVOID EcpContext
+ );
+#line 25388 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlIsEcpAcknowledged (
+ PVOID EcpContext
+ );
+#line 25397 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlIsEcpFromUserMode (
+ PVOID EcpContext
+ );
+#line 25407 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum {
+
+ NetworkOpenLocationAny,
+ NetworkOpenLocationRemote,
+ NetworkOpenLocationLoopback
+
+} NETWORK_OPEN_LOCATION_QUALIFIER;
+
+
+typedef enum {
+
+ NetworkOpenIntegrityAny,
+ NetworkOpenIntegrityNone,
+ NetworkOpenIntegritySigned,
+ NetworkOpenIntegrityEncrypted,
+ NetworkOpenIntegrityMaximum
+
+} NETWORK_OPEN_INTEGRITY_QUALIFIER;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef ULONG NETWORK_OPEN_IN_FLAGS;
+
+
+
+
+
+
+
+
+
+#line 25470 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 25474 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+typedef ULONG NETWORK_OPEN_OUT_FLAGS;
+
+
+
+#line 25482 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef struct _NETWORK_OPEN_ECP_CONTEXT {
+
+ USHORT Size;
+ USHORT Reserved;
+
+ struct {
+
+
+
+
+
+ struct {
+
+ NETWORK_OPEN_LOCATION_QUALIFIER Location;
+ NETWORK_OPEN_INTEGRITY_QUALIFIER Integrity;
+ NETWORK_OPEN_IN_FLAGS Flags;
+
+ } in;
+
+
+
+
+
+ struct {
+
+ NETWORK_OPEN_LOCATION_QUALIFIER Location;
+ NETWORK_OPEN_INTEGRITY_QUALIFIER Integrity;
+ NETWORK_OPEN_OUT_FLAGS Flags;
+
+ } out;
+
+ } ;
+
+} NETWORK_OPEN_ECP_CONTEXT, *PNETWORK_OPEN_ECP_CONTEXT;
+
+
+
+
+
+
+
+typedef struct _NETWORK_OPEN_ECP_CONTEXT_V0 {
+
+ USHORT Size;
+ USHORT Reserved;
+
+ struct {
+
+
+
+
+
+ struct {
+
+ NETWORK_OPEN_LOCATION_QUALIFIER Location;
+ NETWORK_OPEN_INTEGRITY_QUALIFIER Integrity;
+
+ } in;
+
+
+
+
+
+ struct {
+
+ NETWORK_OPEN_LOCATION_QUALIFIER Location;
+ NETWORK_OPEN_INTEGRITY_QUALIFIER Integrity;
+
+ } out;
+
+ } ;
+
+} NETWORK_OPEN_ECP_CONTEXT_V0, *PNETWORK_OPEN_ECP_CONTEXT_V0;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 25596 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+extern const GUID GUID_ECP_NETWORK_OPEN_CONTEXT;
+
+
+
+
+
+#line 25608 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct _NETWORK_APP_INSTANCE_ECP_CONTEXT {
+
+
+
+
+ USHORT Size;
+
+
+
+
+
+ USHORT Reserved;
+
+
+
+
+
+
+ GUID AppInstanceID;
+
+} NETWORK_APP_INSTANCE_ECP_CONTEXT, *PNETWORK_APP_INSTANCE_ECP_CONTEXT;
+
+
+
+
+
+extern const GUID GUID_ECP_NETWORK_APP_INSTANCE;
+
+#line 25647 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct _NETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT {
+
+
+
+
+ USHORT Size;
+
+
+
+
+
+ USHORT Reserved;
+
+
+
+
+
+
+
+ UINT64 VersionHigh;
+ UINT64 VersionLow;
+
+} NETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT, *PNETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT;
+
+
+
+
+
+extern const GUID GUID_ECP_NETWORK_APP_INSTANCE_VERSION;
+
+#line 25688 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _PREFETCH_OPEN_ECP_CONTEXT {
+
+ PVOID Context;
+
+} PREFETCH_OPEN_ECP_CONTEXT, *PPREFETCH_OPEN_ECP_CONTEXT;
+
+
+
+
+
+extern const GUID GUID_ECP_PREFETCH_OPEN;
+
+
+
+
+
+#line 25722 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct sockaddr_storage *PSOCKADDR_STORAGE_NFS;
+
+
+extern const GUID GUID_ECP_NFS_OPEN;
+#line 25740 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+typedef struct _NFS_OPEN_ECP_CONTEXT {
+
+
+
+
+
+ PUNICODE_STRING ExportAlias;
+
+
+
+
+
+ PSOCKADDR_STORAGE_NFS ClientSocketAddress;
+
+} NFS_OPEN_ECP_CONTEXT, *PNFS_OPEN_ECP_CONTEXT, **PPNFS_OPEN_ECP_CONTEXT;
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_ECP_SRV_OPEN;
+#line 25773 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+typedef enum _SRV_INSTANCE_TYPE {
+
+ SrvInstanceTypeUndefined = 0,
+
+
+
+
+
+ SrvInstanceTypePrimary = 1,
+
+
+
+
+
+ SrvInstanceTypeCsv = 2,
+
+
+
+
+
+
+ SrvInstanceTypeSBL = 3,
+
+
+
+
+
+ SrvInstanceTypeSR = 4,
+
+
+
+
+
+ SrvInstanceTypeVSMB = 5,
+
+} SRV_INSTANCE_TYPE, *PSRV_INSTANCE_TYPE;
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _SRV_OPEN_ECP_CONTEXT {
+
+
+
+
+
+ PUNICODE_STRING ShareName;
+
+
+
+
+
+ PSOCKADDR_STORAGE_NFS SocketAddress;
+
+
+
+
+
+ BOOLEAN OplockBlockState;
+ BOOLEAN OplockAppState;
+ BOOLEAN OplockFinalState;
+
+
+
+
+
+
+
+
+
+
+
+ USHORT Version;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SRV_INSTANCE_TYPE InstanceType;
+
+#line 25872 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+} SRV_OPEN_ECP_CONTEXT, *PSRV_OPEN_ECP_CONTEXT;
+
+
+
+
+
+#line 25880 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_ECP_RKF_BYPASS;
+#line 25896 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _RKF_BYPASS_ECP_CONTEXT {
+
+
+
+
+
+ INT Reserved;
+
+
+
+
+
+ INT Version;
+
+} RKF_BYPASS_ECP_CONTEXT, *PRKF_BYPASS_ECP_CONTEXT;
+
+
+
+
+
+#line 25930 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_ECP_IO_DEVICE_HINT;
+#line 25944 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef struct _IO_DEVICE_HINT_ECP_CONTEXT {
+ PDEVICE_OBJECT TargetDevice;
+ UNICODE_STRING RemainingName;
+} IO_DEVICE_HINT_ECP_CONTEXT, *PIO_DEVICE_HINT_ECP_CONTEXT;
+
+
+#line 25952 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_ECP_CSV_DOWN_LEVEL_OPEN;
+#line 25968 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef enum _CSV_DOWN_LEVEL_FILE_TYPE {
+
+
+
+
+
+
+ CsvDownLevelFileObject = 0,
+
+
+
+
+
+
+
+ CsvCsvFsInternalFileObject = 1,
+
+} CSV_DOWN_LEVEL_FILE_TYPE;
+
+
+
+
+
+typedef struct _CSV_DOWN_LEVEL_OPEN_ECP_CONTEXT {
+
+
+
+
+
+ ULONG Version;
+
+
+
+
+
+
+ BOOLEAN IsResume;
+
+
+
+
+
+ CSV_DOWN_LEVEL_FILE_TYPE FileType;
+
+
+
+
+
+ ULONG SourceNodeId;
+
+
+
+
+
+ ULONG DestinationNodeId;
+
+} CSV_DOWN_LEVEL_OPEN_ECP_CONTEXT, *PCSV_DOWN_LEVEL_OPEN_ECP_CONTEXT;
+
+
+
+
+
+
+
+
+extern const GUID GUID_ECP_CSV_QUERY_FILE_REVISION;
+#line 26039 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+typedef struct _CSV_QUERY_FILE_REVISION_ECP_CONTEXT {
+
+
+
+
+ LONGLONG FileId;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LONGLONG FileRevision[3];
+
+
+} CSV_QUERY_FILE_REVISION_ECP_CONTEXT, *PCSV_QUERY_FILE_REVISION_ECP_CONTEXT;
+
+
+
+
+
+
+
+
+extern const GUID GUID_ECP_CSV_QUERY_FILE_REVISION_FILE_ID_128;
+#line 26083 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef struct _CSV_QUERY_FILE_REVISION_ECP_CONTEXT_FILE_ID_128 {
+
+
+
+
+ FILE_ID_128 FileId;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LONGLONG FileRevision[3];
+
+
+} CSV_QUERY_FILE_REVISION_ECP_CONTEXT_FILE_ID_128, *PCSV_QUERY_FILE_REVISION_ECP_CONTEXT_FILE_ID_128;
+
+
+
+
+
+
+
+
+extern const GUID GUID_ECP_CSV_SET_HANDLE_PROPERTIES;
+#line 26126 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct _CSV_SET_HANDLE_PROPERTIES_ECP_CONTEXT {
+
+
+
+
+ SIZE_T Size;
+
+
+
+
+
+
+
+
+
+
+
+ ULONG PauseTimeoutInSeconds;
+
+
+
+
+
+
+
+
+ ULONG Flags;
+
+} CSV_SET_HANDLE_PROPERTIES_ECP_CONTEXT, *PCSV_SET_HANDLE_PROPERTIES_ECP_CONTEXT;
+
+#line 26167 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 26258 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+#line 26261 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 26276 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+typedef struct _OPEN_REPARSE_LIST_ENTRY {
+ LIST_ENTRY OpenReparseListEntry;
+ ULONG ReparseTag;
+ ULONG Flags;
+ GUID ReparseGuid;
+
+
+
+
+
+
+
+
+
+ USHORT Size;
+
+
+
+
+
+
+ USHORT RemainingLength;
+
+} OPEN_REPARSE_LIST_ENTRY, *POPEN_REPARSE_LIST_ENTRY;
+
+typedef struct _OPEN_REPARSE_LIST {
+ LIST_ENTRY OpenReparseList;
+} OPEN_REPARSE_LIST, *POPEN_REPARSE_LIST;
+
+extern const GUID ECP_TYPE_OPEN_REPARSE_GUID;
+#line 26314 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct _IO_STOP_ON_SYMLINK_FILTER_ECP_v0 {
+
+
+
+
+
+ struct {
+
+
+
+
+
+ ULONG ReparseCount;
+
+
+
+
+
+ ULONG RemainingPathLength;
+
+ } Out;
+
+} IO_STOP_ON_SYMLINK_FILTER_ECP_v0, *PIO_STOP_ON_SYMLINK_FILTER_ECP_v0;
+
+extern const GUID ECP_TYPE_IO_STOP_ON_SYMLINK_FILTER_GUID;
+#line 26355 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 26357 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 26359 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+extern const GUID ECP_TYPE_CLFS_CREATE_CONTAINER;
+#line 26374 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_ECP_CREATE_REDIRECTION;
+#line 26388 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+typedef struct _CREATE_REDIRECTION_ECP_CONTEXT {
+
+
+
+
+
+ USHORT Size;
+
+
+
+
+
+ USHORT Flags;
+
+
+
+
+
+ FILE_ID_128 FileId;
+
+
+
+
+
+ GUID VolumeGuid;
+
+} CREATE_REDIRECTION_ECP_CONTEXT, *PCREATE_REDIRECTION_ECP_CONTEXT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 26448 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _FILE_TIMESTAMPS {
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+} FILE_TIMESTAMPS, *PFILE_TIMESTAMPS;
+
+typedef struct _ATOMIC_CREATE_ECP_CONTEXT {
+
+
+
+
+
+ USHORT Size;
+
+
+
+
+
+ USHORT InFlags;
+
+
+
+
+
+ USHORT OutFlags;
+
+
+
+
+
+
+
+ USHORT ReparseBufferLength;
+
+
+
+
+
+ PREPARSE_DATA_BUFFER ReparseBuffer;
+
+
+
+
+
+ LONGLONG FileSize;
+
+
+
+
+
+ LONGLONG ValidDataLength;
+
+
+
+
+
+ PFILE_TIMESTAMPS FileTimestamps;
+
+
+
+
+
+ ULONG FileAttributes;
+
+
+
+
+
+ ULONG UsnSourceInfo;
+
+
+
+
+
+ USN Usn;
+
+
+
+
+
+
+ ULONG SuppressFileAttributeInheritanceMask;
+
+
+
+
+
+ ULONG InOpFlags;
+
+
+
+
+
+ ULONG OutOpFlags;
+
+
+
+
+
+ ULONG InGenFlags;
+
+
+
+
+
+ ULONG OutGenFlags;
+
+
+
+
+
+
+
+ ULONG CaseSensitiveFlagsMask;
+ ULONG InCaseSensitiveFlags;
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ULONG OutCaseSensitiveFlags;
+
+} ATOMIC_CREATE_ECP_CONTEXT, *PATOMIC_CREATE_ECP_CONTEXT;
+
+
+
+
+
+
+
+extern const GUID GUID_ECP_ATOMIC_CREATE;
+#line 26735 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 26737 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 26774 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+typedef struct _ECP_OPEN_PARAMETERS {
+
+
+
+
+
+ USHORT Size;
+
+
+
+
+
+ USHORT Reserved;
+
+
+ ULONG Flags;
+
+} ECP_OPEN_PARAMETERS, *PECP_OPEN_PARAMETERS;
+
+
+
+
+
+
+
+extern const GUID GUID_ECP_OPEN_PARAMETERS;
+#line 26806 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 26808 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PEPROCESS
+FsRtlOplockGetAnyBreakOwnerProcess (
+ POPLOCK Oplock
+ );
+
+#line 26826 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum
+{
+ OPLOCK_NOTIFY_BREAK_WAIT_INTERIM_TIMEOUT,
+ OPLOCK_NOTIFY_BREAK_WAIT_TERMINATED
+} OPLOCK_NOTIFY_REASON;
+
+typedef struct _OPLOCK_NOTIFY_PARAMS
+{
+
+
+
+
+ OPLOCK_NOTIFY_REASON NotifyReason;
+
+
+
+
+
+ PVOID NotifyContext;
+
+
+
+
+
+
+ PIRP Irp;
+
+
+
+
+
+ NTSTATUS Status;
+
+} OPLOCK_NOTIFY_PARAMS, *POPLOCK_NOTIFY_PARAMS;
+
+typedef
+NTSTATUS
+(*POPLOCK_NOTIFY_ROUTINE) (
+ POPLOCK_NOTIFY_PARAMS NotifyParams
+ );
+
+
+
+
+NTSTATUS
+FsRtlCheckOplockEx2 (
+ POPLOCK Oplock,
+ PIRP Irp,
+ ULONG Flags,
+ ULONG FlagsEx2,
+ PVOID CompletionRoutineContext,
+ POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine,
+ POPLOCK_FS_PREPOST_IRP PostIrpRoutine,
+ ULONGLONG Timeout,
+ PVOID NotifyContext,
+ POPLOCK_NOTIFY_ROUTINE NotifyRoutine
+ );
+
+#line 26900 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+NTSTATUS
+FsRtlCheckOplockForFsFilterCallback (
+ POPLOCK Oplock,
+ PVOID CallbackData,
+ ULONG Flags
+ );
+
+#line 26915 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+PLIST_ENTRY
+FsRtlGetCurrentProcessLoaderList(
+ void
+ );
+
+
+
+
+
+
+
+BOOLEAN
+FsRtlIs32BitProcess(
+ PEPROCESS Process
+ );
+
+#line 26940 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _QUERY_ON_CREATE_FILE_STAT_INFORMATION {
+
+ LARGE_INTEGER FileId;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER AllocationSize;
+ LARGE_INTEGER EndOfFile;
+ ULONG FileAttributes;
+ ULONG ReparseTag;
+ ULONG NumberOfLinks;
+
+} QUERY_ON_CREATE_FILE_STAT_INFORMATION, *PQUERY_ON_CREATE_FILE_STAT_INFORMATION;
+
+
+
+
+
+typedef struct _QUERY_ON_CREATE_FILE_LX_INFORMATION {
+
+ ACCESS_MASK EffectiveAccess;
+ ULONG LxFlags;
+ ULONG LxUid;
+ ULONG LxGid;
+ ULONG LxMode;
+ ULONG LxDeviceIdMajor;
+ ULONG LxDeviceIdMinor;
+
+} QUERY_ON_CREATE_FILE_LX_INFORMATION, *PQUERY_ON_CREATE_FILE_LX_INFORMATION;
+
+
+
+
+
+typedef struct _QUERY_ON_CREATE_EA_INFORMATION {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ULONG EaBufferSize;
+ PFILE_FULL_EA_INFORMATION EaBuffer;
+
+} QUERY_ON_CREATE_EA_INFORMATION, *PQUERY_ON_CREATE_EA_INFORMATION;
+
+
+
+
+
+typedef struct _QUERY_ON_CREATE_USN_INFORMATION {
+
+ USN Usn;
+ FILE_ID_128 FileReferenceNumber;
+
+} QUERY_ON_CREATE_USN_INFORMATION, *PQUERY_ON_CREATE_USN_INFORMATION;
+
+
+
+
+
+typedef struct _QUERY_ON_CREATE_SECURITY_INFORMATION {
+
+
+
+
+
+
+
+
+
+
+
+
+ ULONG Reserved;
+ ULONG SecurityDescriptorSize;
+ PSECURITY_DESCRIPTOR SecurityDescriptor;
+
+} QUERY_ON_CREATE_SECURITY_INFORMATION, *PQUERY_ON_CREATE_SECURITY_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _QUERY_ON_CREATE_ECP_CONTEXT {
+
+ ULONG RequestedClasses;
+ ULONG ClassesProcessed;
+ ULONG ClassesWithErrors;
+ ULONG ClassesWithNoData;
+
+ QUERY_ON_CREATE_FILE_STAT_INFORMATION StatInformation;
+ QUERY_ON_CREATE_FILE_LX_INFORMATION LxInformation;
+ QUERY_ON_CREATE_EA_INFORMATION EaInformation;
+
+
+
+
+
+
+
+
+
+
+ ULONG Reserved;
+ ULONG CommonBufferSize;
+ PVOID CommonBuffer;
+
+ QUERY_ON_CREATE_USN_INFORMATION UsnInformation;
+
+
+
+
+
+
+
+
+ SECURITY_INFORMATION SecurityInformationRequested;
+ QUERY_ON_CREATE_SECURITY_INFORMATION SecurityInformation;
+
+} QUERY_ON_CREATE_ECP_CONTEXT, *PQUERY_ON_CREATE_ECP_CONTEXT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_ECP_QUERY_ON_CREATE;
+#line 27141 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 27143 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+extern const GUID GUID_ECP_CLOUDFILES_ATTRIBUTION;
+#line 27156 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 27158 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+typedef struct _VETO_BINDING_ECP_CONTEXT {
+
+ BOOLEAN ShouldVetoBinding;
+
+} VETO_BINDING_ECP_CONTEXT, *PVETO_BINDING_ECP_CONTEXT;
+
+
+extern const GUID GUID_ECP_TYPE_VETO_BINDING;
+#line 27173 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 27175 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+typedef enum _FSRTL_CHANGE_BACKING_TYPE {
+
+ ChangeDataControlArea,
+ ChangeImageControlArea,
+ ChangeSharedCacheMap
+
+} FSRTL_CHANGE_BACKING_TYPE, *PFSRTL_CHANGE_BACKING_TYPE;
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlChangeBackingFileObject (
+ PFILE_OBJECT CurrentFileObject,
+ PFILE_OBJECT NewFileObject,
+ FSRTL_CHANGE_BACKING_TYPE ChangeBackingType,
+ ULONG Flags
+ );
+
+#line 27205 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlLogCcFlushError(
+ PUNICODE_STRING FileName,
+ PDEVICE_OBJECT DeviceObject,
+ PSECTION_OBJECT_POINTERS SectionObjectPointer,
+ NTSTATUS FlushError,
+ ULONG Flags
+ );
+
+#line 27228 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+FsRtlAreVolumeStartupApplicationsComplete(
+ void
+ );
+
+#line 27244 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+ULONG
+FsRtlQueryMaximumVirtualDiskNestingLevel (
+ void
+ );
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlGetVirtualDiskNestingLevel (
+ PDEVICE_OBJECT DeviceObject,
+ PULONG NestingLevel,
+ PULONG NestingFlags
+ );
+
+
+
+
+
+
+
+
+#line 27280 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+NTSTATUS
+FsRtlVolumeDeviceToCorrelationId (
+ PDEVICE_OBJECT VolumeDeviceObject,
+ GUID *Guid
+ );
+
+#line 27295 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+NTSTATUS
+FsRtlIssueDeviceIoControl (
+ PDEVICE_OBJECT DeviceObject,
+ ULONG IoCtl,
+ UCHAR Flags,
+ PVOID InputBuffer,
+ ULONG InputBufferLength,
+ PVOID OutputBuffer,
+ ULONG OutputBufferLength,
+ PULONG_PTR IosbInformation
+ );
+
+
+
+
+
+
+NTSTATUS
+FsRtlGetSectorSizeInformation (
+ PDEVICE_OBJECT DeviceObject,
+ PFILE_FS_SECTOR_SIZE_INFORMATION SectorSizeInfo
+ );
+
+#line 27327 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+FsRtlGetSupportedFeatures (
+ PDEVICE_OBJECT DeviceObject,
+ PULONG SupportedFeatures
+ );
+
+
+
+
+
+NTSTATUS
+FsRtlKernelFsControlFile(
+ PFILE_OBJECT FileObject,
+ ULONG FsControlCode,
+ PVOID InputBuffer,
+ ULONG InputBufferLength,
+ PVOID OutputBuffer,
+ ULONG OutputBufferLength,
+ PULONG RetOutputBufferSize
+ );
+
+NTSTATUS
+FsRtlQueryKernelEaFile(
+ PFILE_OBJECT FileObject,
+ PVOID ReturnedEaData,
+ ULONG Length,
+ BOOLEAN ReturnSingleEntry,
+ PVOID EaList,
+ ULONG EaListLength,
+ PULONG EaIndex,
+ BOOLEAN RestartScan,
+ PULONG LengthReturned
+ );
+
+NTSTATUS
+FsRtlSetKernelEaFile(
+ PFILE_OBJECT FileObject,
+ PVOID EaBuffer,
+ ULONG Length
+ );
+
+#line 27378 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+NTSTATUS
+FsRtlQueryInformationFile(
+ PFILE_OBJECT FileObject,
+ PVOID FileInformation,
+ ULONG Length,
+ FILE_INFORMATION_CLASS FileInformationClass,
+ PULONG RetFileInformationSize
+ );
+
+#line 27394 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+NTSTATUS
+FsRtlQueryCachedVdl(
+ PFILE_OBJECT FileObject,
+ PLONGLONG Vdl
+ );
+#line 27406 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+void
+FsRtlUpdateDiskCounters (
+ ULONG64 BytesRead,
+ ULONG64 BytesWritten
+ );
+#line 27418 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+void
+FsRtlDismountComplete (
+ PDEVICE_OBJECT DeviceObject,
+ NTSTATUS DismountStatus
+ );
+#line 27427 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+NTSTATUS
+FsRtlSetDriverBacking(
+ PDRIVER_OBJECT DriverObj,
+ ULONG Flags
+ );
+
+
+
+
+
+
+
+#line 27443 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+BOOLEAN
+__declspec(dllimport)
+FsRtlIsMobileOS();
+
+#line 27451 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+PFN_NUMBER
+FsRtlIsExtentDangling (
+ PFN_NUMBER StartPage,
+ PFN_NUMBER NumberOfPages,
+ ULONG Flags
+ );
+
+BOOLEAN
+FsRtlIsDaxVolume (
+ PFILE_OBJECT FileObject
+ );
+#line 27466 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _PUBLIC_BCB {
+
+
+
+
+
+
+
+ CSHORT NodeTypeCode;
+ CSHORT NodeByteSize;
+
+
+
+
+
+ ULONG MappedLength;
+ LARGE_INTEGER MappedFileOffset;
+} PUBLIC_BCB, *PPUBLIC_BCB;
+
+
+
+
+
+typedef struct _CC_FILE_SIZES {
+
+ LARGE_INTEGER AllocationSize;
+ LARGE_INTEGER FileSize;
+ LARGE_INTEGER ValidDataLength;
+
+} CC_FILE_SIZES, *PCC_FILE_SIZES;
+
+
+
+
+
+typedef struct _READ_AHEAD_PARAMETERS {
+
+ CSHORT NodeByteSize;
+
+
+
+
+
+ ULONG Granularity;
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ULONG PipelinedRequestSize;
+
+
+
+
+
+
+ ULONG ReadAheadGrowthPercentage;
+
+} READ_AHEAD_PARAMETERS, *PREAD_AHEAD_PARAMETERS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+BOOLEAN (*PACQUIRE_FOR_LAZY_WRITE) (
+ PVOID Context,
+ BOOLEAN Wait
+ );
+
+
+
+
+
+typedef
+void (*PRELEASE_FROM_LAZY_WRITE) (
+ PVOID Context
+ );
+
+
+
+
+
+typedef
+BOOLEAN (*PACQUIRE_FOR_READ_AHEAD) (
+ PVOID Context,
+ BOOLEAN Wait
+ );
+
+
+
+
+
+typedef
+void (*PRELEASE_FROM_READ_AHEAD) (
+ PVOID Context
+ );
+
+typedef struct _CACHE_MANAGER_CALLBACKS {
+
+ PACQUIRE_FOR_LAZY_WRITE AcquireForLazyWrite;
+ PRELEASE_FROM_LAZY_WRITE ReleaseFromLazyWrite;
+ PACQUIRE_FOR_READ_AHEAD AcquireForReadAhead;
+ PRELEASE_FROM_READ_AHEAD ReleaseFromReadAhead;
+
+} CACHE_MANAGER_CALLBACKS, *PCACHE_MANAGER_CALLBACKS;
+
+
+
+
+
+
+typedef
+BOOLEAN (*PACQUIRE_FOR_LAZY_WRITE_EX) (
+ PVOID Context,
+ ULONG InFlags,
+ PULONG OutFlags
+ );
+
+typedef struct _CACHE_MANAGER_CALLBACK_FUNCTIONS {
+
+ PACQUIRE_FOR_LAZY_WRITE_EX AcquireForLazyWriteEx;
+ PRELEASE_FROM_LAZY_WRITE ReleaseFromLazyWrite;
+ PACQUIRE_FOR_READ_AHEAD AcquireForReadAhead;
+ PRELEASE_FROM_READ_AHEAD ReleaseFromReadAhead;
+
+} CACHE_MANAGER_CALLBACK_FUNCTIONS, *PCACHE_MANAGER_CALLBACK_FUNCTIONS;
+
+
+typedef struct _CACHE_MANAGER_CALLBACKS_EX {
+
+
+
+
+
+ USHORT Version;
+ USHORT Size;
+
+
+
+
+
+ CACHE_MANAGER_CALLBACK_FUNCTIONS Functions;
+
+} CACHE_MANAGER_CALLBACKS_EX, *PCACHE_MANAGER_CALLBACKS_EX;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _CACHE_UNINITIALIZE_EVENT {
+ struct _CACHE_UNINITIALIZE_EVENT *Next;
+ KEVENT Event;
+} CACHE_UNINITIALIZE_EVENT, *PCACHE_UNINITIALIZE_EVENT;
+
+
+
+
+
+typedef
+void (*PDIRTY_PAGE_ROUTINE) (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ PLARGE_INTEGER OldestLsn,
+ PLARGE_INTEGER NewestLsn,
+ PVOID Context1,
+ PVOID Context2
+ );
+
+
+
+
+
+typedef
+void (*PFLUSH_TO_LSN) (
+ PVOID LogHandle,
+ LARGE_INTEGER Lsn
+ );
+
+
+
+
+
+typedef
+void (*PQUERY_LOG_USAGE) (
+ PVOID LogHandle,
+ PUSHORT PercentageFull
+ );
+
+
+
+
+
+
+typedef
+BOOLEAN (*PASYNC_READ_COMPLETION_CALLBACK) (
+ PVOID Context
+ );
+
+
+
+
+
+
+
+
+
+
+
+extern ULONG CcFastMdlReadWait;
+
+
+
+
+
+typedef struct _CC_ASYNC_READ_CONTEXT {
+
+
+
+
+
+ PASYNC_READ_COMPLETION_CALLBACK CompletionRoutine;
+
+
+
+
+
+ PVOID Context;
+
+
+
+
+
+ PMDL Mdl;
+
+
+
+
+
+
+ KPROCESSOR_MODE RequestorMode;
+
+
+
+
+
+ ULONG NestingLevel;
+
+} CC_ASYNC_READ_CONTEXT, *PCC_ASYNC_READ_CONTEXT;
+
+
+
+
+
+
+__declspec(dllimport)
+void
+CcInitializeCacheMap (
+ PFILE_OBJECT FileObject,
+ PCC_FILE_SIZES FileSizes,
+ BOOLEAN PinAccess,
+ PCACHE_MANAGER_CALLBACKS Callbacks,
+ PVOID LazyWriteContext
+ );
+#line 27802 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+CcUninitializeCacheMap (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER TruncateSize,
+ PCACHE_UNINITIALIZE_EVENT UninitializeEvent
+ );
+#line 27812 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+CcSetFileSizes (
+ PFILE_OBJECT FileObject,
+ PCC_FILE_SIZES FileSizes
+ );
+#line 27821 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+NTSTATUS
+CcSetFileSizesEx (
+ PFILE_OBJECT FileObject,
+ PCC_FILE_SIZES FileSizes
+ );
+#line 27830 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+__forceinline
+NTSTATUS
+CcSetCacheFileSizes (
+ PSECTION_OBJECT_POINTERS SectionObjectPointer,
+ PCC_FILE_SIZES FileSizes
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+
+
+
+
+
+
+ PFILE_OBJECT FileObject = ((FILE_OBJECT *)( (PCHAR)(&SectionObjectPointer) - (ULONG_PTR)(&((FILE_OBJECT *)0)->SectionObjectPointer)));
+#line 27869 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+ return CcSetFileSizesEx( FileObject, FileSizes );
+}
+
+
+
+
+
+
+__forceinline
+LONGLONG
+CcGetCacheFileSize (
+ const SECTION_OBJECT_POINTERS *SectionObjectPointer
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+ PLONGLONG cacheMapQwords = ((PLONGLONG)SectionObjectPointer->SharedCacheMap) + 1;
+
+ return *cacheMapQwords;
+}
+
+__forceinline
+void
+CcSetCacheFileSize (
+ PSECTION_OBJECT_POINTERS SectionObjectPointer,
+ LONGLONG NewFileSize
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+ PLONGLONG cacheMapQwords = ((PLONGLONG)SectionObjectPointer->SharedCacheMap) + 1;
+
+ *cacheMapQwords = NewFileSize;
+ return;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+CcPurgeCacheSection (
+ PSECTION_OBJECT_POINTERS SectionObjectPointer,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ ULONG Flags
+ );
+
+
+
+
+
+
+
+
+
+
+
+#line 27995 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+__declspec(dllimport)
+void
+CcCoherencyFlushAndPurgeCache (
+ PSECTION_OBJECT_POINTERS SectionObjectPointer,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ PIO_STATUS_BLOCK IoStatus,
+ ULONG Flags
+ );
+#line 28011 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+CcSetDirtyPageThreshold (
+ PFILE_OBJECT FileObject,
+ ULONG DirtyPageThreshold
+ );
+#line 28020 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+CcFlushCache (
+ PSECTION_OBJECT_POINTERS SectionObjectPointer,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ PIO_STATUS_BLOCK IoStatus
+ );
+#line 28031 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+LARGE_INTEGER
+CcGetFlushedValidData (
+ PSECTION_OBJECT_POINTERS SectionObjectPointer,
+ BOOLEAN BcbListHeld
+ );
+#line 28041 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+CcZeroData (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER StartOffset,
+ PLARGE_INTEGER EndOffset,
+ BOOLEAN Wait
+ );
+#line 28052 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+PVOID
+CcRemapBcb (
+ PVOID Bcb
+ );
+#line 28060 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+CcRepinBcb (
+ PVOID Bcb
+ );
+#line 28068 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+CcUnpinRepinnedBcb (
+ PVOID Bcb,
+ BOOLEAN WriteThrough,
+ PIO_STATUS_BLOCK IoStatus
+ );
+#line 28078 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+PFILE_OBJECT
+CcGetFileObjectFromSectionPtrs (
+ PSECTION_OBJECT_POINTERS SectionObjectPointer
+ );
+#line 28086 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+PFILE_OBJECT
+CcGetFileObjectFromSectionPtrsRef (
+ PSECTION_OBJECT_POINTERS SectionObjectPointer
+ );
+#line 28094 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+PFILE_OBJECT
+CcGetFileObjectFromBcb (
+ PVOID Bcb
+ );
+#line 28102 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+CcCopyWriteWontFlush (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length
+ );
+
+
+#line 28128 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+CcCanIWrite (
+ PFILE_OBJECT FileObject,
+ ULONG BytesToWrite,
+ BOOLEAN Wait,
+ UCHAR Retrying
+ );
+#line 28139 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef
+void (*PCC_POST_DEFERRED_WRITE) (
+ PVOID Context1,
+ PVOID Context2
+ );
+
+
+__declspec(dllimport)
+void
+CcDeferWrite (
+ PFILE_OBJECT FileObject,
+ PCC_POST_DEFERRED_WRITE PostRoutine,
+ PVOID Context1,
+ PVOID Context2,
+ ULONG BytesToWrite,
+ BOOLEAN Retrying
+ );
+#line 28158 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+CcCopyRead (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ BOOLEAN Wait,
+ PVOID Buffer,
+ PIO_STATUS_BLOCK IoStatus
+ );
+#line 28176 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+CcFastCopyRead (
+ PFILE_OBJECT FileObject,
+ ULONG FileOffset,
+ ULONG Length,
+ ULONG PageCount,
+ PVOID Buffer,
+ PIO_STATUS_BLOCK IoStatus
+ );
+#line 28189 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+CcCopyWrite (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ BOOLEAN Wait,
+ PVOID Buffer
+ );
+#line 28201 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+CcFastCopyWrite (
+ PFILE_OBJECT FileObject,
+ ULONG FileOffset,
+ ULONG Length,
+ PVOID Buffer
+ );
+#line 28212 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+CcMdlRead (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ PMDL *MdlChain,
+ PIO_STATUS_BLOCK IoStatus
+ );
+#line 28232 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+void
+CcMdlReadComplete (
+ PFILE_OBJECT FileObject,
+ PMDL MdlChain
+ );
+#line 28244 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+CcPrepareMdlWrite (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ PMDL *MdlChain,
+ PIO_STATUS_BLOCK IoStatus
+ );
+#line 28256 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+void
+CcMdlWriteComplete (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ PMDL MdlChain
+ );
+#line 28268 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+CcMdlWriteAbort (
+ PFILE_OBJECT FileObject,
+ PMDL MdlChain
+ );
+#line 28277 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+CcScheduleReadAhead (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length
+ );
+#line 28304 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+CcWaitForCurrentLazyWriterActivity (
+ void
+ );
+#line 28318 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+__declspec(dllimport)
+void
+CcSetReadAheadGranularity (
+ PFILE_OBJECT FileObject,
+ ULONG Granularity
+ );
+#line 28331 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+BOOLEAN
+CcCopyWriteEx (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ BOOLEAN Wait,
+ PVOID Buffer,
+ PETHREAD IoIssuerThread
+ );
+#line 28345 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+CcCopyReadEx (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ BOOLEAN Wait,
+ PVOID Buffer,
+ PIO_STATUS_BLOCK IoStatus,
+ PETHREAD IoIssuerThread
+ );
+#line 28359 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+CcAsyncCopyRead (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ BOOLEAN Wait,
+ PVOID Buffer,
+ PIO_STATUS_BLOCK IoStatus,
+ PETHREAD IoIssuerThread,
+ PCC_ASYNC_READ_CONTEXT AsyncReadContext
+ );
+#line 28374 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+CcScheduleReadAheadEx (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ PETHREAD IoIssuerThread
+ );
+#line 28385 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+CcInitializeCacheMapEx (
+ PFILE_OBJECT FileObject,
+ PCC_FILE_SIZES FileSizes,
+ BOOLEAN PinAccess,
+ PCACHE_MANAGER_CALLBACKS Callbacks,
+ PVOID LazyWriteContext,
+ ULONG Flags
+ );
+#line 28398 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+CcInitializeCacheMapEx2 (
+ PFILE_OBJECT FileObject,
+ PCC_FILE_SIZES FileSizes,
+ BOOLEAN PinAccess,
+ PCACHE_MANAGER_CALLBACKS_EX AsyncCallbacks,
+ PVOID LazyWriteContext,
+ ULONG Flags
+ );
+#line 28411 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+BOOLEAN
+CcPinRead (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ ULONG Flags,
+ PVOID *Bcb,
+ PVOID *Buffer
+ );
+#line 28545 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+CcMapData (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ ULONG Flags,
+ PVOID *Bcb,
+ PVOID *Buffer
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+#line 28570 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+CcPinMappedData (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ ULONG Flags,
+ PVOID *Bcb
+ );
+#line 28582 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+CcPreparePinWrite (
+ PFILE_OBJECT FileObject,
+ PLARGE_INTEGER FileOffset,
+ ULONG Length,
+ BOOLEAN Zero,
+ ULONG Flags,
+ PVOID *Bcb,
+ PVOID *Buffer
+ );
+#line 28596 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+CcSetDirtyPinnedData (
+ PVOID BcbVoid,
+ PLARGE_INTEGER Lsn
+ );
+#line 28605 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+CcUnpinData (
+ PVOID Bcb
+ );
+#line 28613 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+CcSetBcbOwnerPointer (
+ PVOID Bcb,
+ PVOID OwnerPointer
+ );
+#line 28622 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+CcUnpinDataForThread (
+ PVOID Bcb,
+ ERESOURCE_THREAD ResourceThreadId
+ );
+#line 28631 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+CcSetAdditionalCacheAttributes (
+ PFILE_OBJECT FileObject,
+ BOOLEAN DisableReadAhead,
+ BOOLEAN DisableWriteBehind
+ );
+#line 28641 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+CcSetAdditionalCacheAttributesEx (
+ PFILE_OBJECT FileObject,
+ ULONG Flags
+ );
+#line 28704 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+CcSetParallelFlushFile (
+ PFILE_OBJECT FileObject,
+ BOOLEAN EnableParallelFlush
+ );
+#line 28713 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+void
+CcSetLogHandleForFile (
+ PFILE_OBJECT FileObject,
+ PVOID LogHandle,
+ PFLUSH_TO_LSN FlushToLsnRoutine
+ );
+#line 28723 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+LARGE_INTEGER
+CcGetDirtyPages (
+ PVOID LogHandle,
+ PDIRTY_PAGE_ROUTINE DirtyPageRoutine,
+ PVOID Context1,
+ PVOID Context2
+ );
+#line 28735 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+CcIsThereDirtyData (
+ PVPB Vpb
+ );
+#line 28743 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+__declspec(dllimport)
+BOOLEAN
+CcIsThereDirtyDataEx (
+ PVPB Vpb,
+ PULONG NumberOfDirtyPages
+ );
+#line 28752 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+BOOLEAN
+CcIsCacheManagerCallbackNeeded (
+ NTSTATUS Status
+ );
+
+
+
+
+
+typedef struct _CC_ERROR_CALLBACK_CONTEXT {
+
+
+
+
+
+ CSHORT NodeByteSize;
+
+
+
+
+
+ NTSTATUS ErrorCode;
+
+} CC_ERROR_CALLBACK_CONTEXT, *PCC_ERROR_CALLBACK_CONTEXT;
+
+
+
+
+
+
+NTSTATUS
+CcErrorCallbackRoutine (
+ PCC_ERROR_CALLBACK_CONTEXT Context
+ );
+
+#line 28792 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct _CC_DIRTY_PAGES_INFO {
+
+ ULONG Version;
+
+
+
+
+
+
+
+
+
+
+
+ LONGLONG DirtyPageThreshold;
+ LONGLONG DirtyPageTarget;
+ LONGLONG CleanLockedCachedPagesThreshold;
+ LONGLONG CleanLockedCachedPagesTarget;
+
+
+
+
+
+
+ LONGLONG CurrentDirtyPages;
+ LONGLONG CurrentCleanLockedCachedPages;
+ LONGLONG CurrentPagesQueuedForWriting;
+
+} CC_DIRTY_PAGES_INFO, *PCC_DIRTY_PAGES_INFO;
+
+typedef
+void (*PEXTERNAL_CACHE_CALLBACK_EX) (
+ PVOID ExternalCacheContext,
+ PCC_DIRTY_PAGES_INFO DirtyPagesInfo
+ );
+
+NTSTATUS
+CcRegisterExternalCacheEx (
+ PFILE_OBJECT FileObject,
+ PEXTERNAL_CACHE_CALLBACK_EX Callback,
+ PVOID *ExternalCacheContext
+ );
+
+void
+CcUnregisterExternalCacheEx (
+ PVOID ExternalCacheContext
+ );
+
+NTSTATUS
+CcUpdateExternalCacheInfoEx (
+ PVOID ExternalCacheContext,
+ PCC_DIRTY_PAGES_INFO DirtyPagesInfo
+ );
+
+#line 28857 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+#line 28868 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+#line 28872 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef WCHAR SEC_WCHAR;
+typedef CHAR SEC_CHAR;
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _SecHandle
+{
+ ULONG_PTR dwLower ;
+ ULONG_PTR dwUpper ;
+} SecHandle, * PSecHandle ;
+
+
+#line 28895 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef SecHandle CredHandle;
+typedef PSecHandle PCredHandle;
+
+typedef SecHandle CtxtHandle;
+typedef PSecHandle PCtxtHandle;
+
+typedef LARGE_INTEGER _SECURITY_INTEGER, SECURITY_INTEGER, *PSECURITY_INTEGER;
+typedef SECURITY_INTEGER TimeStamp;
+typedef SECURITY_INTEGER * PTimeStamp;
+typedef UNICODE_STRING SECURITY_STRING, *PSECURITY_STRING;
+
+
+
+
+
+
+
+typedef struct _SecPkgInfoW
+{
+ unsigned long fCapabilities;
+ unsigned short wVersion;
+ unsigned short wRPCID;
+ unsigned long cbMaxToken;
+
+
+
+ SEC_WCHAR * Name;
+
+
+
+
+ SEC_WCHAR * Comment;
+} SecPkgInfoW, * PSecPkgInfoW;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _SecBuffer {
+ unsigned long cbBuffer;
+ unsigned long BufferType;
+
+
+
+ void * pvBuffer;
+#line 29012 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+} SecBuffer, * PSecBuffer;
+
+typedef struct _SecBufferDesc {
+ unsigned long ulVersion;
+ unsigned long cBuffers;
+
+
+
+ PSecBuffer pBuffers;
+} SecBufferDesc, * PSecBufferDesc;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _SEC_NEGOTIATION_INFO {
+ unsigned long Size;
+ unsigned long NameLength;
+ SEC_WCHAR * Name;
+ void * Reserved;
+} SEC_NEGOTIATION_INFO, * PSEC_NEGOTIATION_INFO ;
+
+typedef struct _SEC_CHANNEL_BINDINGS {
+ unsigned long dwInitiatorAddrType;
+ unsigned long cbInitiatorLength;
+ unsigned long dwInitiatorOffset;
+ unsigned long dwAcceptorAddrType;
+ unsigned long cbAcceptorLength;
+ unsigned long dwAcceptorOffset;
+ unsigned long cbApplicationDataLength;
+ unsigned long dwApplicationDataOffset;
+} SEC_CHANNEL_BINDINGS, * PSEC_CHANNEL_BINDINGS ;
+
+
+
+typedef struct _SEC_CHANNEL_BINDINGS_EX {
+ unsigned long magicNumber;
+ unsigned long flags;
+ unsigned long cbHeaderLength;
+ unsigned long cbStructureLength;
+ unsigned long dwInitiatorAddrType;
+ unsigned long cbInitiatorLength;
+ unsigned long dwInitiatorOffset;
+ unsigned long dwAcceptorAddrType;
+ unsigned long cbAcceptorLength;
+ unsigned long dwAcceptorOffset;
+ unsigned long cbApplicationDataLength;
+ unsigned long dwApplicationDataOffset;
+} SEC_CHANNEL_BINDINGS_EX, * PSEC_CHANNEL_BINDINGS_EX ;
+
+
+
+
+
+typedef struct _SEC_CHANNEL_BINDINGS_RESULT {
+ unsigned long flags;
+}SEC_CHANNEL_BINDINGS_RESULT, *PSEC_CHANNEL_BINDINGS_RESULT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _SEC_APPLICATION_PROTOCOL_NEGOTIATION_EXT
+{
+ SecApplicationProtocolNegotiationExt_None,
+ SecApplicationProtocolNegotiationExt_NPN,
+ SecApplicationProtocolNegotiationExt_ALPN
+} SEC_APPLICATION_PROTOCOL_NEGOTIATION_EXT, *PSEC_APPLICATION_PROTOCOL_NEGOTIATION_EXT;
+
+typedef struct _SEC_APPLICATION_PROTOCOL_LIST {
+ SEC_APPLICATION_PROTOCOL_NEGOTIATION_EXT ProtoNegoExt;
+ unsigned short ProtocolListSize;
+ unsigned char ProtocolList[1];
+} SEC_APPLICATION_PROTOCOL_LIST, *PSEC_APPLICATION_PROTOCOL_LIST;
+
+typedef struct _SEC_APPLICATION_PROTOCOLS {
+ unsigned long ProtocolListsSize;
+ SEC_APPLICATION_PROTOCOL_LIST ProtocolLists[1];
+} SEC_APPLICATION_PROTOCOLS, *PSEC_APPLICATION_PROTOCOLS;
+
+
+typedef struct _SEC_SRTP_PROTECTION_PROFILES {
+ unsigned short ProfilesSize;
+ unsigned short ProfilesList[1];
+} SEC_SRTP_PROTECTION_PROFILES, *PSEC_SRTP_PROTECTION_PROFILES;
+
+typedef struct _SEC_SRTP_MASTER_KEY_IDENTIFIER {
+ unsigned char MasterKeyIdentifierSize;
+ unsigned char MasterKeyIdentifier[1];
+} SEC_SRTP_MASTER_KEY_IDENTIFIER, *PSEC_SRTP_MASTER_KEY_IDENTIFIER;
+
+
+typedef struct _SEC_TOKEN_BINDING {
+ unsigned char MajorVersion;
+ unsigned char MinorVersion;
+ unsigned short KeyParametersSize;
+ unsigned char KeyParameters[1];
+} SEC_TOKEN_BINDING, *PSEC_TOKEN_BINDING;
+
+typedef struct _SEC_PRESHAREDKEY {
+ unsigned short KeySize;
+ unsigned char Key[1];
+} SEC_PRESHAREDKEY, *PSEC_PRESHAREDKEY;
+
+typedef struct _SEC_PRESHAREDKEY_IDENTITY {
+ unsigned short KeyIdentitySize;
+ unsigned char KeyIdentity[1];
+} SEC_PRESHAREDKEY_IDENTITY, *PSEC_PRESHAREDKEY_IDENTITY;
+
+typedef struct _SEC_DTLS_MTU {
+ unsigned short PathMTU;
+} SEC_DTLS_MTU, *PSEC_DTLS_MTU;
+
+typedef struct _SEC_FLAGS {
+ unsigned long long Flags;
+} SEC_FLAGS, *PSEC_FLAGS;
+
+typedef struct _SEC_CERTIFICATE_REQUEST_CONTEXT {
+ unsigned char cbCertificateRequestContext;
+ unsigned char rgCertificateRequestContext[1];
+} SEC_CERTIFICATE_REQUEST_CONTEXT, *PSEC_CERTIFICATE_REQUEST_CONTEXT;
+
+typedef struct _SEC_APP_SESSION_STATE {
+ unsigned short AppSessionStateSize;
+ unsigned char AppSessionState[1];
+} SEC_APP_SESSION_STATE, *PSEC_APP_SESSION_STATE;
+
+typedef struct _SEC_SESSION_TICKET {
+ unsigned short SessionTicketSize;
+ unsigned char SessionTicket[1];
+} SEC_SESSION_TICKET, *PSEC_SESSION_TICKET;
+
+
+
+
+
+typedef enum _SEC_TRAFFIC_SECRET_TYPE
+{
+ SecTrafficSecret_None,
+ SecTrafficSecret_Client,
+ SecTrafficSecret_Server
+} SEC_TRAFFIC_SECRET_TYPE, *PSEC_TRAFFIC_SECRET_TYPE;
+
+
+
+typedef struct _SEC_TRAFFIC_SECRETS {
+ wchar_t SymmetricAlgId[64];
+ wchar_t ChainingMode[64];
+ wchar_t HashAlgId[64];
+ unsigned short KeySize;
+ unsigned short IvSize;
+ unsigned short MsgSequenceStart;
+ unsigned short MsgSequenceEnd;
+ SEC_TRAFFIC_SECRET_TYPE TrafficSecretType;
+ unsigned short TrafficSecretSize;
+ unsigned char TrafficSecret[1];
+} SEC_TRAFFIC_SECRETS, *PSEC_TRAFFIC_SECRETS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _SecPkgCredentials_NamesW
+{
+
+
+
+ SEC_WCHAR * sUserName;
+
+} SecPkgCredentials_NamesW, * PSecPkgCredentials_NamesW;
+
+
+
+
+
+typedef struct _SecPkgCredentials_SSIProviderW
+{
+ SEC_WCHAR * sProviderName;
+ unsigned long ProviderInfoLength;
+ char * ProviderInfo;
+} SecPkgCredentials_SSIProviderW, * PSecPkgCredentials_SSIProviderW;
+#line 29425 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _SecPkgCredentials_KdcProxySettingsW
+{
+ ULONG Version;
+ ULONG Flags;
+ USHORT ProxyServerOffset;
+ USHORT ProxyServerLength;
+ USHORT ClientTlsCredOffset;
+ USHORT ClientTlsCredLength;
+} SecPkgCredentials_KdcProxySettingsW, *PSecPkgCredentials_KdcProxySettingsW;
+
+typedef struct _SecPkgCredentials_KdcNetworkSettingsW
+{
+ ULONG Version;
+ ULONG Flags;
+ USHORT ProxyServerOffset;
+ USHORT ProxyServerLength;
+ USHORT ClientTlsCredOffset;
+ USHORT ClientTlsCredLength;
+ ULONG DcDiscoveryFlags;
+} SecPkgCredentials_KdcNetworkSettingsW, *PSecPkgCredentials_KdcNetworkSettingsW;
+
+
+typedef struct _SecPkgCredentials_Cert
+{
+ unsigned long EncodedCertSize;
+ unsigned char* EncodedCert;
+} SecPkgCredentials_Cert, * PSecPkgCredentials_Cert;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _SecPkgContext_SubjectAttributes {
+ void* AttributeInfo;
+} SecPkgContext_SubjectAttributes, *PSecPkgContext_SubjectAttributes;
+
+
+
+
+
+
+
+
+typedef enum _SECPKG_CRED_CLASS {
+ SecPkgCredClass_None = 0,
+ SecPkgCredClass_Ephemeral = 10,
+ SecPkgCredClass_PersistedGeneric = 20,
+ SecPkgCredClass_PersistedSpecific = 30,
+ SecPkgCredClass_Explicit = 40,
+} SECPKG_CRED_CLASS, * PSECPKG_CRED_CLASS;
+
+typedef struct _SecPkgContext_CredInfo {
+ SECPKG_CRED_CLASS CredClass;
+ unsigned long IsPromptingNeeded;
+} SecPkgContext_CredInfo, *PSecPkgContext_CredInfo;
+
+typedef struct _SecPkgContext_NegoPackageInfo
+{
+ unsigned long PackageMask;
+} SecPkgContext_NegoPackageInfo, * PSecPkgContext_NegoPackageInfo;
+
+typedef struct _SecPkgContext_NegoStatus
+{
+ unsigned long LastStatus;
+} SecPkgContext_NegoStatus, * PSecPkgContext_NegoStatus;
+
+typedef struct _SecPkgContext_Sizes
+{
+ unsigned long cbMaxToken;
+ unsigned long cbMaxSignature;
+ unsigned long cbBlockSize;
+ unsigned long cbSecurityTrailer;
+} SecPkgContext_Sizes, * PSecPkgContext_Sizes;
+
+typedef struct _SecPkgContext_StreamSizes
+{
+ unsigned long cbHeader;
+ unsigned long cbTrailer;
+ unsigned long cbMaximumMessage;
+ unsigned long cBuffers;
+ unsigned long cbBlockSize;
+} SecPkgContext_StreamSizes, * PSecPkgContext_StreamSizes;
+
+typedef SecPkgContext_StreamSizes SecPkgContext_DatagramSizes;
+typedef PSecPkgContext_StreamSizes PSecPkgContext_DatagramSizes;
+
+typedef struct _SecPkgContext_NamesW
+{
+ SEC_WCHAR * sUserName;
+} SecPkgContext_NamesW, * PSecPkgContext_NamesW;
+
+
+
+
+typedef struct _SecPkgContext_Lifespan
+{
+ TimeStamp tsStart;
+ TimeStamp tsExpiry;
+} SecPkgContext_Lifespan, * PSecPkgContext_Lifespan;
+
+typedef struct _SecPkgContext_DceInfo
+{
+ unsigned long AuthzSvc;
+ void * pPac;
+} SecPkgContext_DceInfo, * PSecPkgContext_DceInfo;
+
+
+typedef struct _SecPkgContext_KeyInfoW
+{
+ SEC_WCHAR * sSignatureAlgorithmName;
+ SEC_WCHAR * sEncryptAlgorithmName;
+ unsigned long KeySize;
+ unsigned long SignatureAlgorithm;
+ unsigned long EncryptAlgorithm;
+} SecPkgContext_KeyInfoW, * PSecPkgContext_KeyInfoW;
+
+
+
+
+typedef struct _SecPkgContext_AuthorityW
+{
+ SEC_WCHAR * sAuthorityName;
+} SecPkgContext_AuthorityW, * PSecPkgContext_AuthorityW;
+
+
+
+
+typedef struct _SecPkgContext_ProtoInfoW
+{
+ SEC_WCHAR * sProtocolName;
+ unsigned long majorVersion;
+ unsigned long minorVersion;
+} SecPkgContext_ProtoInfoW, * PSecPkgContext_ProtoInfoW;
+
+
+
+
+typedef struct _SecPkgContext_PasswordExpiry
+{
+ TimeStamp tsPasswordExpires;
+} SecPkgContext_PasswordExpiry, * PSecPkgContext_PasswordExpiry;
+
+
+typedef struct _SecPkgContext_LogoffTime
+{
+ TimeStamp tsLogoffTime;
+} SecPkgContext_LogoffTime, * PSecPkgContext_LogoffTime;
+#line 29646 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef struct _SecPkgContext_SessionKey
+{
+ unsigned long SessionKeyLength;
+ unsigned char * SessionKey;
+} SecPkgContext_SessionKey, *PSecPkgContext_SessionKey;
+
+
+typedef struct _SecPkgContext_NegoKeys
+{
+ unsigned long KeyType;
+ unsigned short KeyLength;
+ unsigned char* KeyValue;
+ unsigned long VerifyKeyType;
+ unsigned short VerifyKeyLength;
+ unsigned char* VerifyKeyValue;
+} SecPkgContext_NegoKeys, * PSecPkgContext_NegoKeys;
+
+typedef struct _SecPkgContext_PackageInfoW
+{
+ PSecPkgInfoW PackageInfo;
+} SecPkgContext_PackageInfoW, * PSecPkgContext_PackageInfoW;
+
+
+typedef struct _SecPkgContext_UserFlags
+{
+ unsigned long UserFlags;
+} SecPkgContext_UserFlags, * PSecPkgContext_UserFlags;
+
+typedef struct _SecPkgContext_Flags
+{
+ unsigned long Flags;
+} SecPkgContext_Flags, * PSecPkgContext_Flags;
+
+
+
+typedef struct _SecPkgContext_NegotiationInfoW
+{
+ PSecPkgInfoW PackageInfo ;
+ unsigned long NegotiationState ;
+} SecPkgContext_NegotiationInfoW, * PSecPkgContext_NegotiationInfoW ;
+
+
+
+
+
+
+typedef struct _SecPkgContext_CredentialNameW
+{
+ unsigned long CredentialType;
+ SEC_WCHAR *sCredentialName;
+} SecPkgContext_CredentialNameW, * PSecPkgContext_CredentialNameW;
+
+#line 29700 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+typedef void
+(__stdcall * SEC_GET_KEY_FN) (
+ void * Arg,
+ void * Principal,
+ unsigned long KeyVer,
+ void * * Key,
+ SECURITY_STATUS * Status
+ );
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+SECURITY_STATUS __stdcall
+AcquireCredentialsHandleW(
+
+ PSECURITY_STRING pPrincipal,
+ PSECURITY_STRING pPackage,
+
+
+
+#line 29732 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ unsigned long fCredentialUse,
+ void * pvLogonId,
+ void * pAuthData,
+ SEC_GET_KEY_FN pGetKeyFn,
+ void * pvGetKeyArgument,
+ PCredHandle phCredential,
+ PTimeStamp ptsExpiry
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * ACQUIRE_CREDENTIALS_HANDLE_FN_W)(
+
+ PSECURITY_STRING,
+ PSECURITY_STRING,
+
+
+
+#line 29750 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ unsigned long,
+ void *,
+ void *,
+ SEC_GET_KEY_FN,
+ void *,
+ PCredHandle,
+ PTimeStamp);
+
+
+
+
+__declspec(dllimport)
+SECURITY_STATUS __stdcall
+FreeCredentialsHandle(
+ PCredHandle phCredential
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * FREE_CREDENTIALS_HANDLE_FN)(
+ PCredHandle );
+
+__declspec(dllimport)
+SECURITY_STATUS __stdcall
+AddCredentialsW(
+ PCredHandle hCredentials,
+
+ PSECURITY_STRING pPrincipal,
+ PSECURITY_STRING pPackage,
+
+
+
+#line 29782 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ unsigned long fCredentialUse,
+ void * pAuthData,
+ SEC_GET_KEY_FN pGetKeyFn,
+ void * pvGetKeyArgument,
+ PTimeStamp ptsExpiry
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * ADD_CREDENTIALS_FN_W)(
+ PCredHandle,
+
+ PSECURITY_STRING,
+ PSECURITY_STRING,
+
+
+
+#line 29799 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ unsigned long,
+ void *,
+ SEC_GET_KEY_FN,
+ void *,
+ PTimeStamp);
+
+SECURITY_STATUS __stdcall
+AddCredentialsA(
+ PCredHandle hCredentials,
+ LPSTR pszPrincipal,
+ LPSTR pszPackage,
+ unsigned long fCredentialUse,
+ void * pAuthData,
+ SEC_GET_KEY_FN pGetKeyFn,
+ void * pvGetKeyArgument,
+ PTimeStamp ptsExpiry
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * ADD_CREDENTIALS_FN_A)(
+ PCredHandle,
+ SEC_CHAR *,
+ SEC_CHAR *,
+ unsigned long,
+ void *,
+ SEC_GET_KEY_FN,
+ void *,
+ PTimeStamp);
+
+
+
+
+
+
+
+#line 29835 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 29837 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#pragma endregion
+
+#pragma region Desktop Family
+
+
+
+
+
+
+
+
+
+
+typedef struct _SspiAsyncContext SspiAsyncContext;
+
+
+
+
+typedef void (*SspiAsyncNotifyCallback)(
+ SspiAsyncContext* Handle,
+ PVOID CallbackData
+);
+
+
+
+
+SspiAsyncContext* SspiCreateAsyncContext();
+
+
+
+
+void SspiFreeAsyncContext(
+ SspiAsyncContext* Handle
+);
+
+
+
+
+
+
+
+NTSTATUS SspiReinitAsyncContext(
+ SspiAsyncContext* Handle
+);
+
+
+
+
+SECURITY_STATUS SspiSetAsyncNotifyCallback(
+ SspiAsyncContext* Context,
+ SspiAsyncNotifyCallback Callback,
+ void* CallbackData
+);
+
+
+
+
+
+BOOLEAN SspiAsyncContextRequiresNotify(
+ SspiAsyncContext* AsyncContext
+);
+
+
+
+
+
+SECURITY_STATUS SspiGetAsyncCallStatus(
+ SspiAsyncContext* Handle
+);
+
+SECURITY_STATUS SspiAcquireCredentialsHandleAsyncW(
+ SspiAsyncContext* AsyncContext,
+
+ PSECURITY_STRING pszPrincipal,
+ PSECURITY_STRING pszPackage,
+
+
+
+#line 29916 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ unsigned long fCredentialUse,
+ void * pvLogonId,
+ void * pAuthData,
+ SEC_GET_KEY_FN pGetKeyFn,
+ void * pvGetKeyArgument,
+ PCredHandle phCredential,
+ PTimeStamp ptsExpiry
+);
+
+SECURITY_STATUS SspiAcquireCredentialsHandleAsyncA(
+ SspiAsyncContext* AsyncContext,
+ LPSTR pszPrincipal,
+ LPSTR pszPackage,
+ unsigned long fCredentialUse,
+ void * pvLogonId,
+ void * pAuthData,
+ SEC_GET_KEY_FN pGetKeyFn,
+ void * pvGetKeyArgument,
+ PCredHandle phCredential,
+ PTimeStamp ptsExpiry
+);
+
+SECURITY_STATUS SspiInitializeSecurityContextAsyncW(
+ SspiAsyncContext* AsyncContext,
+ PCredHandle phCredential,
+ PCtxtHandle phContext,
+
+ PSECURITY_STRING pszTargetName,
+
+
+#line 29947 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ unsigned long fContextReq,
+ unsigned long Reserved1,
+ unsigned long TargetDataRep,
+ PSecBufferDesc pInput,
+ unsigned long Reserved2,
+ PCtxtHandle phNewContext,
+ PSecBufferDesc pOutput,
+ unsigned long * pfContextAttr,
+ PTimeStamp ptsExpiry
+);
+
+SECURITY_STATUS SspiInitializeSecurityContextAsyncA(
+ SspiAsyncContext* AsyncContext,
+ PCredHandle phCredential,
+ PCtxtHandle phContext,
+ LPSTR pszTargetName,
+ unsigned long fContextReq,
+ unsigned long Reserved1,
+ unsigned long TargetDataRep,
+ PSecBufferDesc pInput,
+ unsigned long Reserved2,
+ PCtxtHandle phNewContext,
+ PSecBufferDesc pOutput,
+ unsigned long * pfContextAttr,
+ PTimeStamp ptsExpiry
+);
+
+SECURITY_STATUS SspiAcceptSecurityContextAsync(
+ SspiAsyncContext* AsyncContext,
+ PCredHandle phCredential,
+ PCtxtHandle phContext,
+ PSecBufferDesc pInput,
+ unsigned long fContextReq,
+ unsigned long TargetDataRep,
+ PCtxtHandle phNewContext,
+ PSecBufferDesc pOutput,
+ unsigned long* pfContextAttr,
+ PTimeStamp ptsExpiry
+);
+
+SECURITY_STATUS SspiFreeCredentialsHandleAsync(
+ SspiAsyncContext* AsyncContext,
+ PCredHandle phCredential
+);
+
+SECURITY_STATUS SspiDeleteSecurityContextAsync(
+ SspiAsyncContext* AsyncContext,
+ PCtxtHandle phContext
+);
+
+
+
+
+
+
+
+#line 30004 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 30006 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 30008 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family or Games Family
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 30080 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+SECURITY_STATUS __stdcall
+InitializeSecurityContextW(
+ PCredHandle phCredential,
+ PCtxtHandle phContext,
+
+ PSECURITY_STRING pTargetName,
+
+
+#line 30098 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ unsigned long fContextReq,
+ unsigned long Reserved1,
+ unsigned long TargetDataRep,
+ PSecBufferDesc pInput,
+ unsigned long Reserved2,
+ PCtxtHandle phNewContext,
+ PSecBufferDesc pOutput,
+ unsigned long * pfContextAttr,
+ PTimeStamp ptsExpiry
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * INITIALIZE_SECURITY_CONTEXT_FN_W)(
+ PCredHandle,
+ PCtxtHandle,
+
+ PSECURITY_STRING,
+
+
+#line 30118 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ unsigned long,
+ unsigned long,
+ unsigned long,
+ PSecBufferDesc,
+ unsigned long,
+ PCtxtHandle,
+ PSecBufferDesc,
+ unsigned long *,
+ PTimeStamp);
+
+
+
+
+__declspec(dllimport)
+SECURITY_STATUS __stdcall
+AcceptSecurityContext(
+ PCredHandle phCredential,
+ PCtxtHandle phContext,
+ PSecBufferDesc pInput,
+ unsigned long fContextReq,
+ unsigned long TargetDataRep,
+ PCtxtHandle phNewContext,
+ PSecBufferDesc pOutput,
+ unsigned long * pfContextAttr,
+ PTimeStamp ptsExpiry
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * ACCEPT_SECURITY_CONTEXT_FN)(
+ PCredHandle,
+ PCtxtHandle,
+ PSecBufferDesc,
+ unsigned long,
+ unsigned long,
+ PCtxtHandle,
+ PSecBufferDesc,
+ unsigned long *,
+ PTimeStamp);
+
+SECURITY_STATUS __stdcall
+CompleteAuthToken(
+ PCtxtHandle phContext,
+ PSecBufferDesc pToken
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * COMPLETE_AUTH_TOKEN_FN)(
+ PCtxtHandle,
+ PSecBufferDesc);
+
+__declspec(dllimport)
+
+SECURITY_STATUS __stdcall
+ImpersonateSecurityContext(
+ PCtxtHandle phContext
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * IMPERSONATE_SECURITY_CONTEXT_FN)(
+ PCtxtHandle);
+
+
+__declspec(dllimport)
+SECURITY_STATUS __stdcall
+RevertSecurityContext(
+ PCtxtHandle phContext
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * REVERT_SECURITY_CONTEXT_FN)(
+ PCtxtHandle);
+
+
+__declspec(dllimport)
+SECURITY_STATUS __stdcall
+QuerySecurityContextToken(
+ PCtxtHandle phContext,
+ void * * Token
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * QUERY_SECURITY_CONTEXT_TOKEN_FN)(
+ PCtxtHandle, void * *);
+
+__declspec(dllimport)
+SECURITY_STATUS __stdcall
+DeleteSecurityContext(
+ PCtxtHandle phContext
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * DELETE_SECURITY_CONTEXT_FN)(
+ PCtxtHandle);
+
+__declspec(dllimport)
+SECURITY_STATUS __stdcall
+ApplyControlToken(
+ PCtxtHandle phContext,
+ PSecBufferDesc pInput
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * APPLY_CONTROL_TOKEN_FN)(
+ PCtxtHandle, PSecBufferDesc);
+
+__declspec(dllimport)
+SECURITY_STATUS __stdcall
+QueryContextAttributesW(
+ PCtxtHandle phContext,
+ unsigned long ulAttribute,
+ void * pBuffer
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * QUERY_CONTEXT_ATTRIBUTES_FN_W)(
+ PCtxtHandle,
+ unsigned long,
+ void *);
+
+SECURITY_STATUS __stdcall
+QueryContextAttributesExW(
+ PCtxtHandle phContext,
+ unsigned long ulAttribute,
+ void * pBuffer,
+ unsigned long cbBuffer
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * QUERY_CONTEXT_ATTRIBUTES_EX_FN_W)(
+ PCtxtHandle,
+ unsigned long,
+ void *,
+ unsigned long);
+
+
+
+
+
+
+
+
+SECURITY_STATUS __stdcall
+SetContextAttributesW(
+ PCtxtHandle phContext,
+ unsigned long ulAttribute,
+ void * pBuffer,
+ unsigned long cbBuffer
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * SET_CONTEXT_ATTRIBUTES_FN_W)(
+ PCtxtHandle,
+ unsigned long,
+ void *,
+ unsigned long );
+
+#line 30275 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+SECURITY_STATUS __stdcall
+QueryCredentialsAttributesW(
+ PCredHandle phCredential,
+ unsigned long ulAttribute,
+ void * pBuffer
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * QUERY_CREDENTIALS_ATTRIBUTES_FN_W)(
+ PCredHandle,
+ unsigned long,
+ void *);
+
+SECURITY_STATUS __stdcall
+QueryCredentialsAttributesExW(
+ PCredHandle phCredential,
+ unsigned long ulAttribute,
+ void * pBuffer,
+ unsigned long cbBuffer
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * QUERY_CREDENTIALS_ATTRIBUTES_EX_FN_W)(
+ PCredHandle,
+ unsigned long,
+ void *,
+ unsigned long);
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+SECURITY_STATUS __stdcall
+SetCredentialsAttributesW(
+ PCredHandle phCredential,
+ unsigned long ulAttribute,
+ void * pBuffer,
+ unsigned long cbBuffer
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * SET_CREDENTIALS_ATTRIBUTES_FN_W)(
+ PCredHandle,
+ unsigned long,
+ void *,
+ unsigned long );
+
+#line 30332 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+SECURITY_STATUS __stdcall
+FreeContextBuffer(
+ PVOID pvContextBuffer
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * FREE_CONTEXT_BUFFER_FN)(
+ PVOID
+ );
+
+SECURITY_STATUS
+__stdcall
+SecAllocateAndSetIPAddress(
+ PUCHAR lpIpAddress,
+ ULONG cchIpAddress,
+ int* FreeCallContext
+ );
+
+SECURITY_STATUS
+__stdcall
+SecAllocateAndSetCallTarget(
+ PUCHAR lpIpAddress,
+ ULONG cchIpAddress,
+ LPWSTR TargetName,
+ int* FreeCallContext
+ );
+
+void
+__stdcall
+SecFreeCallContext(
+ void
+ );
+
+
+
+
+
+
+
+__declspec(dllimport)
+SECURITY_STATUS __stdcall
+MakeSignature(
+ PCtxtHandle phContext,
+ unsigned long fQOP,
+ PSecBufferDesc pMessage,
+ unsigned long MessageSeqNo
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * MAKE_SIGNATURE_FN)(
+ PCtxtHandle,
+ unsigned long,
+ PSecBufferDesc,
+ unsigned long);
+
+
+__declspec(dllimport)
+SECURITY_STATUS __stdcall
+VerifySignature(
+ PCtxtHandle phContext,
+ PSecBufferDesc pMessage,
+ unsigned long MessageSeqNo,
+ unsigned long * pfQOP
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * VERIFY_SIGNATURE_FN)(
+ PCtxtHandle,
+ PSecBufferDesc,
+ unsigned long,
+ unsigned long *);
+
+
+
+
+
+SECURITY_STATUS __stdcall
+EncryptMessage( PCtxtHandle phContext,
+ unsigned long fQOP,
+ PSecBufferDesc pMessage,
+ unsigned long MessageSeqNo);
+
+typedef SECURITY_STATUS
+(__stdcall * ENCRYPT_MESSAGE_FN)(
+ PCtxtHandle, unsigned long, PSecBufferDesc, unsigned long);
+
+
+SECURITY_STATUS __stdcall
+DecryptMessage( PCtxtHandle phContext,
+ PSecBufferDesc pMessage,
+ unsigned long MessageSeqNo,
+ unsigned long * pfQOP);
+
+
+typedef SECURITY_STATUS
+(__stdcall * DECRYPT_MESSAGE_FN)(
+ PCtxtHandle, PSecBufferDesc, unsigned long,
+ unsigned long *);
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+SECURITY_STATUS __stdcall
+EnumerateSecurityPackagesW(
+ unsigned long * pcPackages,
+ PSecPkgInfoW * ppPackageInfo
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * ENUMERATE_SECURITY_PACKAGES_FN_W)(
+ unsigned long *,
+ PSecPkgInfoW *);
+
+
+
+
+__declspec(dllimport)
+SECURITY_STATUS __stdcall
+QuerySecurityPackageInfoW(
+
+ PSECURITY_STRING pPackageName,
+
+
+#line 30465 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ PSecPkgInfoW *ppPackageInfo
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * QUERY_SECURITY_PACKAGE_INFO_FN_W)(
+
+ PSECURITY_STRING,
+
+
+#line 30475 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ PSecPkgInfoW *);
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+SECURITY_STATUS __stdcall
+ExportSecurityContext(
+ PCtxtHandle phContext,
+ ULONG fFlags,
+ PSecBuffer pPackedContext,
+ void * * pToken
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * EXPORT_SECURITY_CONTEXT_FN)(
+ PCtxtHandle,
+ ULONG,
+ PSecBuffer,
+ void * *
+ );
+
+__declspec(dllimport)
+SECURITY_STATUS __stdcall
+ImportSecurityContextW(
+
+ PSECURITY_STRING pszPackage,
+
+
+#line 30512 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ PSecBuffer pPackedContext,
+ void * Token,
+ PCtxtHandle phContext
+ );
+
+typedef SECURITY_STATUS
+(__stdcall * IMPORT_SECURITY_CONTEXT_FN_W)(
+
+ PSECURITY_STRING,
+
+
+#line 30524 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ PSecBuffer,
+ void *,
+ PCtxtHandle
+ );
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+SecMakeSPN(
+ PUNICODE_STRING ServiceClass,
+ PUNICODE_STRING ServiceName,
+ PUNICODE_STRING InstanceName ,
+ USHORT InstancePort ,
+ PUNICODE_STRING Referrer ,
+ PUNICODE_STRING Spn,
+ PULONG Length ,
+ BOOLEAN Allocate
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+SecMakeSPNEx(
+ PUNICODE_STRING ServiceClass,
+ PUNICODE_STRING ServiceName,
+ PUNICODE_STRING InstanceName ,
+ USHORT InstancePort ,
+ PUNICODE_STRING Referrer ,
+ PUNICODE_STRING TargetInfo ,
+ PUNICODE_STRING Spn,
+ PULONG Length ,
+ BOOLEAN Allocate
+ );
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+SecMakeSPNEx2(
+ PUNICODE_STRING ServiceClass,
+ PUNICODE_STRING ServiceName,
+ PUNICODE_STRING InstanceName ,
+ USHORT InstancePort ,
+ PUNICODE_STRING Referrer ,
+ PUNICODE_STRING InTargetInfo ,
+ PUNICODE_STRING Spn,
+ PULONG TotalSize ,
+ BOOLEAN Allocate,
+ BOOLEAN IsTargetInfoMarshaled
+ );
+
+#line 30583 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+SecLookupAccountSid(
+ PSID Sid,
+ PULONG NameSize,
+ PUNICODE_STRING NameBuffer,
+ PULONG DomainSize ,
+ PUNICODE_STRING DomainBuffer ,
+ PSID_NAME_USE NameUse
+ );
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+SecLookupAccountName(
+ PUNICODE_STRING Name,
+ PULONG SidSize,
+ PSID Sid,
+ PSID_NAME_USE NameUse,
+ PULONG DomainSize ,
+ PUNICODE_STRING ReferencedDomain
+ );
+
+#line 30609 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+SecLookupWellKnownSid(
+ WELL_KNOWN_SID_TYPE SidType,
+ PSID Sid,
+ ULONG SidBufferSize,
+ PULONG SidSize
+ );
+
+#line 30623 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+#line 30626 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+typedef struct _SECURITY_FUNCTION_TABLE_W {
+ unsigned long dwVersion;
+ ENUMERATE_SECURITY_PACKAGES_FN_W EnumerateSecurityPackagesW;
+ QUERY_CREDENTIALS_ATTRIBUTES_FN_W QueryCredentialsAttributesW;
+ ACQUIRE_CREDENTIALS_HANDLE_FN_W AcquireCredentialsHandleW;
+ FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle;
+ void * Reserved2;
+ INITIALIZE_SECURITY_CONTEXT_FN_W InitializeSecurityContextW;
+ ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext;
+ COMPLETE_AUTH_TOKEN_FN CompleteAuthToken;
+ DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext;
+ APPLY_CONTROL_TOKEN_FN ApplyControlToken;
+ QUERY_CONTEXT_ATTRIBUTES_FN_W QueryContextAttributesW;
+ IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext;
+ REVERT_SECURITY_CONTEXT_FN RevertSecurityContext;
+ MAKE_SIGNATURE_FN MakeSignature;
+ VERIFY_SIGNATURE_FN VerifySignature;
+ FREE_CONTEXT_BUFFER_FN FreeContextBuffer;
+ QUERY_SECURITY_PACKAGE_INFO_FN_W QuerySecurityPackageInfoW;
+ void * Reserved3;
+ void * Reserved4;
+ EXPORT_SECURITY_CONTEXT_FN ExportSecurityContext;
+ IMPORT_SECURITY_CONTEXT_FN_W ImportSecurityContextW;
+ ADD_CREDENTIALS_FN_W AddCredentialsW ;
+ void * Reserved8;
+ QUERY_SECURITY_CONTEXT_TOKEN_FN QuerySecurityContextToken;
+ ENCRYPT_MESSAGE_FN EncryptMessage;
+ DECRYPT_MESSAGE_FN DecryptMessage;
+
+
+ SET_CONTEXT_ATTRIBUTES_FN_W SetContextAttributesW;
+#line 30664 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+ SET_CREDENTIALS_ATTRIBUTES_FN_W SetCredentialsAttributesW;
+#line 30669 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+#line 30672 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+ void * Reserved9;
+#line 30674 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+ QUERY_CONTEXT_ATTRIBUTES_EX_FN_W QueryContextAttributesExW;
+ QUERY_CREDENTIALS_ATTRIBUTES_EX_FN_W QueryCredentialsAttributesExW;
+#line 30679 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+} SecurityFunctionTableW, * PSecurityFunctionTableW;
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+PSecurityFunctionTableW __stdcall
+InitSecurityInterfaceW(
+ void
+ );
+
+typedef PSecurityFunctionTableW
+(__stdcall * INIT_SECURITY_INTERFACE_W)(void);
+
+
+
+
+
+
+
+
+
+typedef struct _SEC_WINNT_AUTH_IDENTITY_EX2 {
+ unsigned long Version;
+ unsigned short cbHeaderLength;
+ unsigned long cbStructureLength;
+ unsigned long UserOffset;
+ unsigned short UserLength;
+ unsigned long DomainOffset;
+ unsigned short DomainLength;
+ unsigned long PackedCredentialsOffset;
+ unsigned short PackedCredentialsLength;
+ unsigned long Flags;
+ unsigned long PackageListOffset;
+ unsigned short PackageListLength;
+} SEC_WINNT_AUTH_IDENTITY_EX2, *PSEC_WINNT_AUTH_IDENTITY_EX2;
+
+#line 30722 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _SEC_WINNT_AUTH_IDENTITY_W {
+ unsigned short *User;
+ unsigned long UserLength;
+ unsigned short *Domain;
+ unsigned long DomainLength;
+ unsigned short *Password;
+ unsigned long PasswordLength;
+ unsigned long Flags;
+} SEC_WINNT_AUTH_IDENTITY_W, *PSEC_WINNT_AUTH_IDENTITY_W;
+
+
+
+
+
+#line 30750 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+typedef struct _SEC_WINNT_AUTH_IDENTITY_EXW {
+ unsigned long Version;
+ unsigned long Length;
+ unsigned short *User;
+ unsigned long UserLength;
+ unsigned short *Domain;
+ unsigned long DomainLength;
+ unsigned short *Password;
+ unsigned long PasswordLength;
+ unsigned long Flags;
+ unsigned short *PackageList;
+ unsigned long PackageListLength;
+} SEC_WINNT_AUTH_IDENTITY_EXW, *PSEC_WINNT_AUTH_IDENTITY_EXW;
+
+
+
+
+#line 30777 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+typedef PVOID PSEC_WINNT_AUTH_IDENTITY_OPAQUE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+SECURITY_STATUS
+__stdcall
+SspiEncodeAuthIdentityAsStrings(
+ PSEC_WINNT_AUTH_IDENTITY_OPAQUE pAuthIdentity,
+ PCWSTR* ppszUserName,
+ PCWSTR* ppszDomainName,
+ PCWSTR* ppszPackedCredentialsString
+ );
+
+SECURITY_STATUS
+__stdcall
+SspiValidateAuthIdentity(
+ PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthData
+ );
+
+
+
+
+
+SECURITY_STATUS
+__stdcall
+SspiCopyAuthIdentity(
+ PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthData,
+ PSEC_WINNT_AUTH_IDENTITY_OPAQUE* AuthDataCopy
+ );
+
+
+
+
+
+
+void
+__stdcall
+SspiFreeAuthIdentity(
+ PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthData
+ );
+
+void
+__stdcall
+SspiZeroAuthIdentity(
+ PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthData
+ );
+
+void
+__stdcall
+SspiLocalFree(
+ PVOID DataBuffer
+ );
+
+
+
+
+
+
+SECURITY_STATUS
+__stdcall
+SspiEncodeStringsAsAuthIdentity(
+ PCWSTR pszUserName,
+ PCWSTR pszDomainName,
+ PCWSTR pszPackedCredentialsString,
+ PSEC_WINNT_AUTH_IDENTITY_OPAQUE* ppAuthIdentity
+ );
+
+SECURITY_STATUS
+__stdcall
+SspiCompareAuthIdentities(
+ PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthIdentity1,
+ PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthIdentity2,
+ PBOOLEAN SameSuppliedUser,
+ PBOOLEAN SameSuppliedIdentity
+ );
+
+
+
+
+
+
+SECURITY_STATUS
+__stdcall
+SspiMarshalAuthIdentity(
+ PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthIdentity,
+ unsigned long* AuthIdentityLength,
+ char** AuthIdentityByteArray
+ );
+
+
+
+
+
+SECURITY_STATUS
+__stdcall
+SspiUnmarshalAuthIdentity(
+ unsigned long AuthIdentityLength,
+ char* AuthIdentityByteArray,
+ PSEC_WINNT_AUTH_IDENTITY_OPAQUE* ppAuthIdentity
+ );
+
+#line 30896 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 30898 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#pragma endregion
+
+#pragma region Desktop Family
+
+
+
+
+BOOLEAN
+__stdcall
+SspiIsPromptingNeeded(
+ unsigned long ErrorOrNtStatus
+ );
+
+#line 30912 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 30914 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+SECURITY_STATUS
+__stdcall
+SspiGetTargetHostName(
+ PCWSTR pszTargetName,
+ PWSTR* pszHostName
+ );
+
+SECURITY_STATUS
+__stdcall
+SspiExcludePackage(
+ PSEC_WINNT_AUTH_IDENTITY_OPAQUE AuthIdentity,
+ PCWSTR pszPackageName,
+ PSEC_WINNT_AUTH_IDENTITY_OPAQUE* ppNewAuthIdentity
+ );
+
+#line 30937 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+
+
+
+
+#line 30948 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+typedef struct _SECURITY_USER_DATA {
+ SECURITY_STRING UserName;
+ SECURITY_STRING LogonDomainName;
+ SECURITY_STRING LogonServer;
+ PSID pSid;
+} SECURITY_USER_DATA, *PSECURITY_USER_DATA;
+
+typedef SECURITY_USER_DATA SecurityUserData, * PSecurityUserData;
+
+
+
+
+
+#line 30966 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+NTSTATUS __stdcall
+GetSecurityUserInfo(
+ PLUID LogonId,
+ ULONG Flags,
+ PSecurityUserData * UserInformation
+ );
+
+NTSTATUS __stdcall
+MapSecurityError( SECURITY_STATUS SecStatus );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _QUERY_PATH_REQUEST {
+ ULONG PathNameLength;
+ PIO_SECURITY_CONTEXT SecurityContext;
+ WCHAR FilePathName[1];
+} QUERY_PATH_REQUEST, *PQUERY_PATH_REQUEST;
+
+
+
+
+
+
+
+
+
+typedef struct _QUERY_PATH_REQUEST_EX {
+ PIO_SECURITY_CONTEXT pSecurityContext;
+ ULONG EaLength;
+ PVOID pEaBuffer;
+
+
+
+
+
+
+ UNICODE_STRING PathName;
+
+
+
+
+
+
+
+
+
+
+ UNICODE_STRING DomainServiceName;
+
+
+
+
+
+
+ PECP_LIST EcpList;
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PESILO Silo;
+
+
+
+
+
+ ULONG_PTR Reserved;
+
+
+
+
+
+
+
+
+
+#line 31079 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+} QUERY_PATH_REQUEST_EX, *PQUERY_PATH_REQUEST_EX;
+
+#line 31082 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+typedef struct _QUERY_PATH_RESPONSE {
+ ULONG LengthAccepted;
+} QUERY_PATH_RESPONSE, *PQUERY_PATH_RESPONSE;
+
+
+
+
+
+
+
+
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 31184 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#pragma endregion
+
+#line 31187 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwQueryObject(
+ HANDLE Handle,
+ OBJECT_INFORMATION_CLASS ObjectInformationClass,
+ PVOID ObjectInformation,
+ ULONG ObjectInformationLength,
+ PULONG ReturnLength
+ );
+#line 31204 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwNotifyChangeKey(
+ HANDLE KeyHandle,
+ HANDLE Event,
+ PIO_APC_ROUTINE ApcRoutine,
+ PVOID ApcContext,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ ULONG CompletionFilter,
+ BOOLEAN WatchTree,
+ PVOID Buffer,
+ ULONG BufferSize,
+ BOOLEAN Asynchronous
+ );
+#line 31223 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwCreateEvent (
+ PHANDLE EventHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ EVENT_TYPE EventType,
+ BOOLEAN InitialState
+ );
+#line 31238 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwDeleteFile(
+ POBJECT_ATTRIBUTES ObjectAttributes
+ );
+#line 31248 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwDeviceIoControlFile(
+ HANDLE FileHandle,
+ HANDLE Event,
+ PIO_APC_ROUTINE ApcRoutine,
+ PVOID ApcContext,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ ULONG IoControlCode,
+ PVOID InputBuffer,
+ ULONG InputBufferLength,
+ PVOID OutputBuffer,
+ ULONG OutputBufferLength
+ );
+#line 31268 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwQueryDirectoryFile(
+ HANDLE FileHandle,
+ HANDLE Event,
+ PIO_APC_ROUTINE ApcRoutine,
+ PVOID ApcContext,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID FileInformation,
+ ULONG Length,
+ FILE_INFORMATION_CLASS FileInformationClass,
+ BOOLEAN ReturnSingleEntry,
+ PUNICODE_STRING FileName,
+ BOOLEAN RestartScan
+ );
+#line 31288 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwQueryDirectoryFileEx (
+ HANDLE FileHandle,
+ HANDLE Event,
+ PIO_APC_ROUTINE ApcRoutine,
+ PVOID ApcContext,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID FileInformation,
+ ULONG Length,
+ FILE_INFORMATION_CLASS FileInformationClass,
+ ULONG QueryFlags,
+ PUNICODE_STRING FileName
+ );
+#line 31307 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwQueryVolumeInformationFile(
+ HANDLE FileHandle,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID FsInformation,
+ ULONG Length,
+ FS_INFORMATION_CLASS FsInformationClass
+ );
+#line 31321 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwSetVolumeInformationFile(
+ HANDLE FileHandle,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID FsInformation,
+ ULONG Length,
+ FS_INFORMATION_CLASS FsInformationClass
+ );
+#line 31335 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwFsControlFile(
+ HANDLE FileHandle,
+ HANDLE Event,
+ PIO_APC_ROUTINE ApcRoutine,
+ PVOID ApcContext,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ ULONG FsControlCode,
+ PVOID InputBuffer,
+ ULONG InputBufferLength,
+ PVOID OutputBuffer,
+ ULONG OutputBufferLength
+ );
+#line 31354 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwDuplicateObject(
+ HANDLE SourceProcessHandle,
+ HANDLE SourceHandle,
+ HANDLE TargetProcessHandle,
+ PHANDLE TargetHandle,
+ ACCESS_MASK DesiredAccess,
+ ULONG HandleAttributes,
+ ULONG Options
+ );
+#line 31373 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwOpenDirectoryObject(
+ PHANDLE DirectoryHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes
+ );
+#line 31387 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwAllocateVirtualMemory(
+ HANDLE ProcessHandle,
+ PVOID *BaseAddress,
+ ULONG_PTR ZeroBits,
+ PSIZE_T RegionSize,
+ ULONG AllocationType,
+ ULONG Protect
+ );
+#line 31405 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwAllocateVirtualMemoryEx(
+ HANDLE ProcessHandle,
+ PVOID* BaseAddress,
+ PSIZE_T RegionSize,
+ ULONG AllocationType,
+ ULONG PageProtection,
+ PMEM_EXTENDED_PARAMETER ExtendedParameters,
+ ULONG ExtendedParameterCount
+ );
+#line 31423 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwFreeVirtualMemory(
+ HANDLE ProcessHandle,
+ PVOID *BaseAddress,
+ PSIZE_T RegionSize,
+ ULONG FreeType
+ );
+#line 31438 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwQueryVirtualMemory(
+ HANDLE ProcessHandle,
+ PVOID BaseAddress,
+ MEMORY_INFORMATION_CLASS MemoryInformationClass,
+ PVOID MemoryInformation,
+ SIZE_T MemoryInformationLength,
+ PSIZE_T ReturnLength
+ );
+#line 31455 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwSetInformationVirtualMemory(
+ HANDLE ProcessHandle,
+ VIRTUAL_MEMORY_INFORMATION_CLASS VmInformationClass,
+ ULONG_PTR NumberOfEntries,
+ PMEMORY_RANGE_ENTRY VirtualAddresses,
+ PVOID VmInformation,
+ ULONG VmInformationLength
+ );
+#line 31471 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwWaitForSingleObject(
+ HANDLE Handle,
+ BOOLEAN Alertable,
+ PLARGE_INTEGER Timeout
+ );
+#line 31486 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwSetEvent (
+ HANDLE EventHandle,
+ PLONG PreviousState
+ );
+#line 31498 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwFlushVirtualMemory(
+ HANDLE ProcessHandle,
+ PVOID *BaseAddress,
+ PSIZE_T RegionSize,
+ PIO_STATUS_BLOCK IoStatus
+ );
+#line 31511 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwOpenProcessTokenEx(
+ HANDLE ProcessHandle,
+ ACCESS_MASK DesiredAccess,
+ ULONG HandleAttributes,
+ PHANDLE TokenHandle
+ );
+#line 31524 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwOpenThreadTokenEx(
+ HANDLE ThreadHandle,
+ ACCESS_MASK DesiredAccess,
+ BOOLEAN OpenAsSelf,
+ ULONG HandleAttributes,
+ PHANDLE TokenHandle
+ );
+#line 31538 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwQueryInformationToken (
+ HANDLE TokenHandle,
+ TOKEN_INFORMATION_CLASS TokenInformationClass,
+ PVOID TokenInformation,
+ ULONG TokenInformationLength,
+ PULONG ReturnLength
+ );
+#line 31553 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwSetInformationToken (
+ HANDLE TokenHandle,
+ TOKEN_INFORMATION_CLASS TokenInformationClass,
+ PVOID TokenInformation,
+ ULONG TokenInformationLength
+ );
+#line 31566 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwSetSecurityObject(
+ HANDLE Handle,
+ SECURITY_INFORMATION SecurityInformation,
+ PSECURITY_DESCRIPTOR SecurityDescriptor
+ );
+#line 31579 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwQuerySecurityObject(
+ HANDLE Handle,
+ SECURITY_INFORMATION SecurityInformation,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ ULONG Length,
+ PULONG LengthNeeded
+ );
+#line 31594 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwLockFile(
+ HANDLE FileHandle,
+ HANDLE Event,
+ PIO_APC_ROUTINE ApcRoutine,
+ PVOID ApcContext,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PLARGE_INTEGER ByteOffset,
+ PLARGE_INTEGER Length,
+ ULONG Key,
+ BOOLEAN FailImmediately,
+ BOOLEAN ExclusiveLock
+ );
+#line 31613 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwUnlockFile(
+ HANDLE FileHandle,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PLARGE_INTEGER ByteOffset,
+ PLARGE_INTEGER Length,
+ ULONG Key
+ );
+#line 31627 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwQueryQuotaInformationFile(
+ HANDLE FileHandle,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID Buffer,
+ ULONG Length,
+ BOOLEAN ReturnSingleEntry,
+ PVOID SidList,
+ ULONG SidListLength,
+ PSID StartSid,
+ BOOLEAN RestartScan
+ );
+#line 31645 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwSetQuotaInformationFile(
+ HANDLE FileHandle,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID Buffer,
+ ULONG Length
+ );
+#line 31658 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ZwFlushBuffersFile(
+ HANDLE FileHandle,
+ PIO_STATUS_BLOCK IoStatusBlock
+ );
+#line 31669 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+
+__declspec(dllimport)
+NTSTATUS
+ZwFlushBuffersFileEx(
+ HANDLE FileHandle,
+ ULONG FLags,
+ PVOID Parameters,
+ ULONG ParametersSize,
+ PIO_STATUS_BLOCK IoStatusBlock
+ );
+#line 31682 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+
+NTSTATUS
+ZwQueryEaFile (
+ HANDLE FileHandle,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID Buffer,
+ ULONG Length,
+ BOOLEAN ReturnSingleEntry,
+ PVOID EaList,
+ ULONG EaListLength,
+ PULONG EaIndex,
+ BOOLEAN RestartScan
+ );
+
+
+NTSTATUS
+ZwSetEaFile (
+ HANDLE FileHandle,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ PVOID Buffer,
+ ULONG Length
+ );
+
+
+__declspec(dllimport)
+NTSTATUS
+__stdcall
+ZwDuplicateToken(
+ HANDLE ExistingTokenHandle,
+ ACCESS_MASK DesiredAccess,
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ BOOLEAN EffectiveOnly,
+ TOKEN_TYPE TokenType,
+ PHANDLE NewTokenHandle
+ );
+
+
+
+
+
+
+
+
+#pragma warning(pop)
+
+
+
+
+#line 31732 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+
+#line 31734 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntifs.h"
+#line 36 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 14 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+#pragma region Desktop Family or AppRuntime Package
+
+
+
+
+
+
+
+#line 25 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpstypes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 15 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpstypes.h"
+
+
+
+
+#line 20 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpstypes.h"
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 23 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+
+
+
+
+#pragma once
+#line 30 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 49 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+
+
+
+
+#line 55 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+
+
+
+
+#line 61 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+#line 63 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack8.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(disable:4103)
+
+#pragma pack(push,8)
+
+
+#line 30 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack8.h"
+
+
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack8.h"
+#line 34 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack8.h"
+#pragma external_header(pop)
+#line 66 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+#line 67 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+
+
+
+
+#line 73 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+typedef void * I_RPC_HANDLE;
+
+
+
+
+typedef long RPC_STATUS;
+
+
+#line 83 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+
+
+#line 87 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 99 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+
+
+
+
+
+
+
+
+
+#line 110 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+
+
+#line 114 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+#line 116 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+
+
+
+
+#line 122 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 23 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4668)
+#pragma warning(disable:4820)
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+#pragma region Application Family or OneCore Family or Games Family
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef unsigned char * RPC_CSTR;
+
+
+
+
+#line 69 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+typedef unsigned short * RPC_WSTR;
+typedef const unsigned short * RPC_CWSTR;
+#line 72 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+typedef I_RPC_HANDLE RPC_BINDING_HANDLE;
+typedef RPC_BINDING_HANDLE handle_t;
+
+
+
+
+
+
+
+
+typedef GUID UUID;
+
+
+#line 87 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#line 88 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+#line 90 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family
+
+
+typedef struct _RPC_BINDING_VECTOR
+{
+ unsigned long Count;
+ RPC_BINDING_HANDLE BindingH[1];
+} RPC_BINDING_VECTOR;
+
+
+#line 103 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+typedef struct _UUID_VECTOR
+{
+ unsigned long Count;
+ UUID *Uuid[1];
+} UUID_VECTOR;
+
+
+#line 112 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+#line 114 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family or Games Family
+
+
+typedef void * RPC_IF_HANDLE;
+
+
+
+typedef struct _RPC_IF_ID
+{
+ UUID Uuid;
+ unsigned short VersMajor;
+ unsigned short VersMinor;
+} RPC_IF_ID;
+#line 130 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+#line 132 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 184 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+
+#line 193 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+#line 198 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+
+#line 207 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+
+typedef struct _RPC_PROTSEQ_VECTORA
+{
+ unsigned int Count;
+ unsigned char * Protseq[1];
+} RPC_PROTSEQ_VECTORA;
+
+typedef struct _RPC_PROTSEQ_VECTORW
+{
+ unsigned int Count;
+ unsigned short * Protseq[1];
+} RPC_PROTSEQ_VECTORW;
+
+
+
+
+
+#line 232 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+
+
+#line 242 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+typedef struct _RPC_POLICY {
+ unsigned int Length ;
+ unsigned long EndpointFlags ;
+ unsigned long NICFlags ;
+ } RPC_POLICY, *PRPC_POLICY ;
+
+typedef void __stdcall
+RPC_OBJECT_INQ_FN (
+ UUID * ObjectUuid,
+ UUID * TypeUuid,
+ RPC_STATUS * Status
+ );
+
+
+typedef RPC_STATUS __stdcall
+RPC_IF_CALLBACK_FN (
+ RPC_IF_HANDLE InterfaceUuid,
+ void *Context
+ ) ;
+
+typedef void __stdcall
+RPC_SECURITY_CALLBACK_FN (
+ void *Context
+ ) ;
+
+#line 268 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family or Games Family
+
+
+
+
+typedef struct
+{
+ unsigned int Count;
+ unsigned long Stats[1];
+} RPC_STATS_VECTOR;
+
+
+
+
+
+
+typedef struct
+{
+ unsigned long Count;
+ RPC_IF_ID * IfId[1];
+} RPC_IF_ID_VECTOR;
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingCopy (
+ RPC_BINDING_HANDLE SourceBinding,
+ RPC_BINDING_HANDLE * DestinationBinding
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingFree (
+ RPC_BINDING_HANDLE * Binding
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingSetOption (
+ RPC_BINDING_HANDLE hBinding,
+ unsigned long option,
+ ULONG_PTR optionValue
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingInqOption (
+ RPC_BINDING_HANDLE hBinding,
+ unsigned long option,
+ ULONG_PTR *pOptionValue
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 374 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+#line 376 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcSsGetContextBinding (
+ void *ContextHandle,
+ RPC_BINDING_HANDLE * Binding
+ );
+
+#line 391 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family
+
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingInqMaxCalls (
+ RPC_BINDING_HANDLE Binding,
+ unsigned int * MaxCalls
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingInqObject (
+ RPC_BINDING_HANDLE Binding,
+ UUID * ObjectUuid
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingReset (
+ RPC_BINDING_HANDLE Binding
+ );
+
+
+
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingSetObject (
+ RPC_BINDING_HANDLE Binding,
+ UUID * ObjectUuid
+ );
+
+#line 439 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcMgmtInqDefaultProtectLevel (
+ unsigned long AuthnSvc,
+ unsigned long *AuthnLevel
+ );
+
+#line 455 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+
+
+
+
+
+#pragma region Application Family or OneCore Family
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingToStringBindingA (
+ RPC_BINDING_HANDLE Binding,
+ RPC_CSTR * StringBinding
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingToStringBindingW (
+ RPC_BINDING_HANDLE Binding,
+ RPC_WSTR * StringBinding
+ );
+
+
+
+
+
+#line 488 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+#line 490 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+
+
+
+
+
+
+
+
+
+
+#line 503 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingVectorFree (
+ RPC_BINDING_VECTOR * * BindingVector
+ );
+
+#line 517 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 652 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+#pragma region Application Family or OneCore Family
+
+
+
+RPC_STATUS
+__stdcall
+RpcStringFreeA (
+ RPC_CSTR * String
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcStringFreeW (
+ RPC_WSTR * String
+ );
+
+
+
+
+
+#line 679 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+#line 681 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 699 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcIfInqId (
+ RPC_IF_HANDLE RpcIfHandle,
+ RPC_IF_ID * RpcIfId
+ );
+
+
+
+
+
+
+#pragma region Application Family or OneCore Family
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcNetworkIsProtseqValidA (
+ RPC_CSTR Protseq
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcNetworkIsProtseqValidW (
+ RPC_WSTR Protseq
+ );
+
+
+
+
+
+#line 739 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+#line 741 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 759 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcMgmtInqComTimeout (
+ RPC_BINDING_HANDLE Binding,
+ unsigned int * Timeout
+ );
+
+
+#pragma region Application Family or OneCore Family
+
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcMgmtSetComTimeout (
+ RPC_BINDING_HANDLE Binding,
+ unsigned int Timeout
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcMgmtSetCancelTimeout(
+ long Timeout
+ );
+
+#line 794 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcNetworkInqProtseqsA (
+ RPC_PROTSEQ_VECTORA * * ProtseqVector
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcNetworkInqProtseqsW (
+ RPC_PROTSEQ_VECTORW * * ProtseqVector
+ );
+
+
+
+
+
+#line 824 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+
+
+
+#line 835 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcObjectInqType (
+ UUID * ObjUuid,
+ UUID * TypeUuid
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcObjectSetInqFn (
+ RPC_OBJECT_INQ_FN * InquiryFn
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcObjectSetType (
+ UUID * ObjUuid,
+ UUID * TypeUuid
+ );
+
+
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcProtseqVectorFreeA (
+ RPC_PROTSEQ_VECTORA * * ProtseqVector
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcProtseqVectorFreeW (
+ RPC_PROTSEQ_VECTORW * * ProtseqVector
+ );
+
+
+
+
+
+#line 888 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+
+
+
+#line 899 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerInqBindings (
+ RPC_BINDING_VECTOR * * BindingVector
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerInqBindingsEx (
+ void * SecurityDescriptor,
+ RPC_BINDING_VECTOR * * BindingVector
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerInqIf (
+ RPC_IF_HANDLE IfSpec,
+ UUID * MgrTypeUuid,
+ void * * MgrEpv
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerListen (
+ unsigned int MinimumCallThreads,
+ unsigned int MaxCalls,
+ unsigned int DontWait
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerRegisterIf (
+ RPC_IF_HANDLE IfSpec,
+ UUID * MgrTypeUuid,
+ void * MgrEpv
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerRegisterIfEx (
+ RPC_IF_HANDLE IfSpec,
+ UUID * MgrTypeUuid,
+ void * MgrEpv,
+ unsigned int Flags,
+ unsigned int MaxCalls,
+ RPC_IF_CALLBACK_FN *IfCallback
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerRegisterIf2 (
+ RPC_IF_HANDLE IfSpec,
+ UUID * MgrTypeUuid,
+ void * MgrEpv,
+ unsigned int Flags,
+ unsigned int MaxCalls,
+ unsigned int MaxRpcSize,
+ RPC_IF_CALLBACK_FN *IfCallbackFn
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerRegisterIf3 (
+ RPC_IF_HANDLE IfSpec,
+ UUID * MgrTypeUuid,
+ void * MgrEpv,
+ unsigned int Flags,
+ unsigned int MaxCalls,
+ unsigned int MaxRpcSize,
+ RPC_IF_CALLBACK_FN *IfCallback,
+ void * SecurityDescriptor
+ );
+#line 996 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerUnregisterIf (
+ RPC_IF_HANDLE IfSpec,
+ UUID * MgrTypeUuid,
+ unsigned int WaitForCallsToComplete
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerUnregisterIfEx (
+ RPC_IF_HANDLE IfSpec,
+ UUID * MgrTypeUuid,
+ int RundownContextHandles
+ );
+#line 1019 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerUseAllProtseqs (
+ unsigned int MaxCalls,
+ void * SecurityDescriptor
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerUseAllProtseqsEx (
+ unsigned int MaxCalls,
+ void * SecurityDescriptor,
+ PRPC_POLICY Policy
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerUseAllProtseqsIf (
+ unsigned int MaxCalls,
+ RPC_IF_HANDLE IfSpec,
+ void * SecurityDescriptor
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerUseAllProtseqsIfEx (
+ unsigned int MaxCalls,
+ RPC_IF_HANDLE IfSpec,
+ void * SecurityDescriptor,
+ PRPC_POLICY Policy
+ );
+
+
+
+
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerUseProtseqA (
+ RPC_CSTR Protseq,
+ unsigned int MaxCalls,
+ void * SecurityDescriptor
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerUseProtseqExA (
+ RPC_CSTR Protseq,
+ unsigned int MaxCalls,
+ void * SecurityDescriptor,
+ PRPC_POLICY Policy
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerUseProtseqW (
+ RPC_WSTR Protseq,
+ unsigned int MaxCalls,
+ void * SecurityDescriptor
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerUseProtseqExW (
+ RPC_WSTR Protseq,
+ unsigned int MaxCalls,
+ void * SecurityDescriptor,
+ PRPC_POLICY Policy
+ );
+
+
+
+
+
+
+
+#line 1118 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1141 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerUseProtseqEpA (
+ RPC_CSTR Protseq,
+ unsigned int MaxCalls,
+ RPC_CSTR Endpoint,
+ void * SecurityDescriptor
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerUseProtseqEpExA (
+ RPC_CSTR Protseq,
+ unsigned int MaxCalls,
+ RPC_CSTR Endpoint,
+ void * SecurityDescriptor,
+ PRPC_POLICY Policy
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerUseProtseqEpW (
+ RPC_WSTR Protseq,
+ unsigned int MaxCalls,
+ RPC_WSTR Endpoint,
+ void * SecurityDescriptor
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerUseProtseqEpExW (
+ RPC_WSTR Protseq,
+ unsigned int MaxCalls,
+ RPC_WSTR Endpoint,
+ void * SecurityDescriptor,
+ PRPC_POLICY Policy
+ );
+
+
+
+
+
+
+
+#line 1199 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1224 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerUseProtseqIfA (
+ RPC_CSTR Protseq,
+ unsigned int MaxCalls,
+ RPC_IF_HANDLE IfSpec,
+ void * SecurityDescriptor
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerUseProtseqIfExA (
+ RPC_CSTR Protseq,
+ unsigned int MaxCalls,
+ RPC_IF_HANDLE IfSpec,
+ void * SecurityDescriptor,
+ PRPC_POLICY Policy
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerUseProtseqIfW (
+ RPC_WSTR Protseq,
+ unsigned int MaxCalls,
+ RPC_IF_HANDLE IfSpec,
+ void * SecurityDescriptor
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerUseProtseqIfExW (
+ RPC_WSTR Protseq,
+ unsigned int MaxCalls,
+ RPC_IF_HANDLE IfSpec,
+ void * SecurityDescriptor,
+ PRPC_POLICY Policy
+ );
+
+
+
+
+
+
+
+#line 1282 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1307 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+void
+__stdcall
+RpcServerYield (
+ void
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcMgmtStatsVectorFree (
+ RPC_STATS_VECTOR ** StatsVector
+ );
+
+#line 1324 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family
+
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcMgmtInqStats (
+ RPC_BINDING_HANDLE Binding,
+ RPC_STATS_VECTOR ** Statistics
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcMgmtIsServerListening (
+ RPC_BINDING_HANDLE Binding
+ );
+
+#line 1349 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcMgmtStopServerListening (
+ RPC_BINDING_HANDLE Binding
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcMgmtWaitServerListen (
+ void
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcMgmtSetServerStackSize (
+ unsigned long ThreadStackSize
+ );
+
+
+
+void
+__stdcall
+RpcSsDontSerializeContext (
+ void
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcMgmtEnableIdleCleanup (
+ void
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcMgmtInqIfIds (
+ RPC_BINDING_HANDLE Binding,
+ RPC_IF_ID_VECTOR * * IfIdVector
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcIfIdVectorFree (
+ RPC_IF_ID_VECTOR * * IfIdVector
+ );
+
+#line 1415 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+
+
+#pragma region Application Family or OneCore Family
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcMgmtInqServerPrincNameA (
+ RPC_BINDING_HANDLE Binding,
+ unsigned long AuthnSvc,
+ RPC_CSTR * ServerPrincName
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcMgmtInqServerPrincNameW (
+ RPC_BINDING_HANDLE Binding,
+ unsigned long AuthnSvc,
+ RPC_WSTR * ServerPrincName
+ );
+
+
+
+
+
+#line 1447 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+#line 1449 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1469 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerInqDefaultPrincNameA (
+ unsigned long AuthnSvc,
+ RPC_CSTR * PrincName
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerInqDefaultPrincNameW (
+ unsigned long AuthnSvc,
+ RPC_WSTR * PrincName
+ );
+
+
+
+
+
+#line 1498 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 1510 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+#line 1512 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family
+
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcEpResolveBinding (
+ RPC_BINDING_HANDLE Binding,
+ RPC_IF_HANDLE IfSpec
+ );
+
+#line 1528 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcNsBindingInqEntryNameA (
+ RPC_BINDING_HANDLE Binding,
+ unsigned long EntryNameSyntax,
+ RPC_CSTR * EntryName
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcNsBindingInqEntryNameW (
+ RPC_BINDING_HANDLE Binding,
+ unsigned long EntryNameSyntax,
+ RPC_WSTR * EntryName
+ );
+
+
+
+
+
+#line 1562 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1575 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+#line 1577 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family
+
+
+typedef void * RPC_AUTH_IDENTITY_HANDLE;
+typedef void * RPC_AUTHZ_HANDLE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1611 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+#line 1615 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1637 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+#line 1640 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _RPC_SECURITY_QOS {
+ unsigned long Version;
+ unsigned long Capabilities;
+ unsigned long IdentityTracking;
+ unsigned long ImpersonationType;
+} RPC_SECURITY_QOS, *PRPC_SECURITY_QOS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1942 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1964 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+#line 1970 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+#line 1976 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+#line 1982 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+#line 1988 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2031 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+#line 2033 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+
+
+#pragma region Application Family or OneCore Family
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _RPC_BINDING_HANDLE_TEMPLATE_V1_W {
+ unsigned long Version;
+ unsigned long Flags;
+ unsigned long ProtocolSequence;
+ unsigned short *NetworkAddress;
+ unsigned short *StringEndpoint;
+ union
+ {
+ unsigned short *Reserved;
+ } u1;
+ UUID ObjectUuid;
+} RPC_BINDING_HANDLE_TEMPLATE_V1_W, *PRPC_BINDING_HANDLE_TEMPLATE_V1_W;
+
+typedef struct _RPC_BINDING_HANDLE_TEMPLATE_V1_A {
+ unsigned long Version;
+ unsigned long Flags;
+ unsigned long ProtocolSequence;
+ unsigned char *NetworkAddress;
+ unsigned char *StringEndpoint;
+ union
+ {
+ unsigned char *Reserved;
+ } u1;
+ UUID ObjectUuid;
+} RPC_BINDING_HANDLE_TEMPLATE_V1_A, *PRPC_BINDING_HANDLE_TEMPLATE_V1_A;
+
+typedef struct _RPC_BINDING_HANDLE_SECURITY_V1_W {
+ unsigned long Version;
+ unsigned short *ServerPrincName;
+ unsigned long AuthnLevel;
+ unsigned long AuthnSvc;
+ SEC_WINNT_AUTH_IDENTITY_W *AuthIdentity;
+ RPC_SECURITY_QOS *SecurityQos;
+} RPC_BINDING_HANDLE_SECURITY_V1_W, *PRPC_BINDING_HANDLE_SECURITY_V1_W;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _RPC_BINDING_HANDLE_OPTIONS_V1 {
+ unsigned long Version;
+ unsigned long Flags;
+ unsigned long ComTimeout;
+ unsigned long CallTimeout;
+} RPC_BINDING_HANDLE_OPTIONS_V1, *PRPC_BINDING_HANDLE_OPTIONS_V1;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2127 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingCreateW (
+ RPC_BINDING_HANDLE_TEMPLATE_V1_W * Template,
+ RPC_BINDING_HANDLE_SECURITY_V1_W * Security,
+ RPC_BINDING_HANDLE_OPTIONS_V1 * Options,
+ RPC_BINDING_HANDLE * Binding
+ );
+
+
+
+
+
+#line 2157 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+#line 2159 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingGetTrainingContextHandle (
+ RPC_BINDING_HANDLE Binding,
+ void ** ContextHandle
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcServerInqBindingHandle (
+ RPC_BINDING_HANDLE * Binding
+ );
+
+#line 2180 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#line 2183 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+#pragma region Application Family or OneCore Family
+
+
+typedef enum _RPC_HTTP_REDIRECTOR_STAGE
+{
+ RPCHTTP_RS_REDIRECT = 1,
+ RPCHTTP_RS_ACCESS_1,
+ RPCHTTP_RS_SESSION,
+ RPCHTTP_RS_ACCESS_2,
+ RPCHTTP_RS_INTERFACE
+} RPC_HTTP_REDIRECTOR_STAGE;
+
+#line 2200 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#line 2203 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+typedef RPC_STATUS
+(__stdcall * RPC_NEW_HTTP_PROXY_CHANNEL) (
+ RPC_HTTP_REDIRECTOR_STAGE RedirectorStage,
+ RPC_WSTR ServerName,
+ RPC_WSTR ServerPort,
+ RPC_WSTR RemoteUser,
+ RPC_WSTR AuthType,
+ void * ResourceUuid,
+ void * SessionId,
+ void * Interface,
+ void * Reserved,
+ unsigned long Flags,
+ RPC_WSTR * NewServerName,
+ RPC_WSTR * NewServerPort
+ );
+
+
+
+
+
+
+
+
+
+
+#line 2234 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+typedef void
+(__stdcall * RPC_HTTP_PROXY_FREE_STRING) (
+ RPC_WSTR String
+ );
+
+#line 2241 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#line 2244 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+#pragma region Application Family or OneCore Family
+
+
+
+
+
+
+
+#line 2254 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcImpersonateClient (
+ RPC_BINDING_HANDLE BindingHandle
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcImpersonateClient2 (
+ RPC_BINDING_HANDLE BindingHandle
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcRevertToSelfEx (
+ RPC_BINDING_HANDLE BindingHandle
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcRevertToSelf (
+ void
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcImpersonateClientContainer (
+ RPC_BINDING_HANDLE BindingHandle
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcRevertContainerImpersonation (
+ void
+ );
+
+#line 2307 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+
+
+
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingInqAuthClientA (
+ RPC_BINDING_HANDLE ClientBinding,
+ RPC_AUTHZ_HANDLE * Privs,
+ RPC_CSTR * ServerPrincName,
+ unsigned long * AuthnLevel,
+ unsigned long * AuthnSvc,
+ unsigned long * AuthzSvc
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingInqAuthClientW (
+ RPC_BINDING_HANDLE ClientBinding,
+ RPC_AUTHZ_HANDLE * Privs,
+ RPC_WSTR * ServerPrincName,
+ unsigned long * AuthnLevel,
+ unsigned long * AuthnSvc,
+ unsigned long * AuthzSvc
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcBindingInqAuthClientExA (
+ RPC_BINDING_HANDLE ClientBinding,
+ RPC_AUTHZ_HANDLE * Privs,
+ RPC_CSTR * ServerPrincName,
+ unsigned long * AuthnLevel,
+ unsigned long * AuthnSvc,
+ unsigned long * AuthzSvc,
+ unsigned long Flags
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcBindingInqAuthClientExW (
+ RPC_BINDING_HANDLE ClientBinding,
+ RPC_AUTHZ_HANDLE * Privs,
+ RPC_WSTR * ServerPrincName,
+ unsigned long * AuthnLevel,
+ unsigned long * AuthnSvc,
+ unsigned long * AuthzSvc,
+ unsigned long Flags
+ );
+
+#line 2369 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingInqAuthInfoA (
+ RPC_BINDING_HANDLE Binding,
+ RPC_CSTR * ServerPrincName,
+ unsigned long * AuthnLevel,
+ unsigned long * AuthnSvc,
+ RPC_AUTH_IDENTITY_HANDLE * AuthIdentity,
+ unsigned long * AuthzSvc
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingInqAuthInfoW (
+ RPC_BINDING_HANDLE Binding,
+ RPC_WSTR * ServerPrincName,
+ unsigned long * AuthnLevel,
+ unsigned long * AuthnSvc,
+ RPC_AUTH_IDENTITY_HANDLE * AuthIdentity,
+ unsigned long * AuthzSvc
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingSetAuthInfoA (
+ RPC_BINDING_HANDLE Binding,
+ RPC_CSTR ServerPrincName,
+ unsigned long AuthnLevel,
+ unsigned long AuthnSvc,
+ RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
+ unsigned long AuthzSvc
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingSetAuthInfoExA (
+ RPC_BINDING_HANDLE Binding,
+ RPC_CSTR ServerPrincName,
+ unsigned long AuthnLevel,
+ unsigned long AuthnSvc,
+ RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
+ unsigned long AuthzSvc,
+ RPC_SECURITY_QOS * SecurityQos
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingSetAuthInfoW (
+ RPC_BINDING_HANDLE Binding,
+ RPC_WSTR ServerPrincName,
+ unsigned long AuthnLevel,
+ unsigned long AuthnSvc,
+ RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
+ unsigned long AuthzSvc
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingSetAuthInfoExW (
+ RPC_BINDING_HANDLE Binding,
+ RPC_WSTR ServerPrincName,
+ unsigned long AuthnLevel,
+ unsigned long AuthnSvc,
+ RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
+ unsigned long AuthzSvc,
+ RPC_SECURITY_QOS * SecurityQOS
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingInqAuthInfoExA (
+ RPC_BINDING_HANDLE Binding,
+ RPC_CSTR * ServerPrincName,
+ unsigned long * AuthnLevel,
+ unsigned long * AuthnSvc,
+ RPC_AUTH_IDENTITY_HANDLE * AuthIdentity,
+ unsigned long * AuthzSvc,
+ unsigned long RpcQosVersion,
+ RPC_SECURITY_QOS *SecurityQOS
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingInqAuthInfoExW (
+ RPC_BINDING_HANDLE Binding,
+ RPC_WSTR * ServerPrincName,
+ unsigned long * AuthnLevel,
+ unsigned long * AuthnSvc,
+ RPC_AUTH_IDENTITY_HANDLE * AuthIdentity,
+ unsigned long * AuthzSvc,
+ unsigned long RpcQosVersion,
+ RPC_SECURITY_QOS * SecurityQOS
+ );
+
+#line 2485 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family
+
+
+typedef void
+(__stdcall * RPC_AUTH_KEY_RETRIEVAL_FN) (
+ void * Arg,
+ RPC_WSTR ServerPrincName,
+ unsigned long KeyVer,
+ void * * Key,
+ RPC_STATUS * Status
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcServerCompleteSecurityCallback(
+ RPC_BINDING_HANDLE BindingHandle,
+ RPC_STATUS Status
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerRegisterAuthInfoA (
+ RPC_CSTR ServerPrincName,
+ unsigned long AuthnSvc,
+ RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn,
+ void * Arg
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerRegisterAuthInfoW (
+ RPC_WSTR ServerPrincName,
+ unsigned long AuthnSvc,
+ RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn,
+ void * Arg
+ );
+
+#line 2530 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2552 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+#line 2554 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2633 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+typedef struct {
+ unsigned char * UserName;
+ unsigned char * ComputerName;
+ unsigned short Privilege;
+ unsigned long AuthFlags;
+} RPC_CLIENT_INFORMATION1, * PRPC_CLIENT_INFORMATION1;
+#line 2646 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#line 2647 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingServerFromClient (
+ RPC_BINDING_HANDLE ClientBinding,
+ RPC_BINDING_HANDLE * ServerBinding
+ );
+
+#line 2658 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family
+
+
+
+__declspec(noreturn)
+void
+__stdcall
+RpcRaiseException (
+ RPC_STATUS exception
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcTestCancel(
+ void
+ );
+
+#line 2680 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerTestCancel (
+ RPC_BINDING_HANDLE BindingHandle
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcCancelThread(
+ void * Thread
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcCancelThreadEx(
+ void * Thread,
+ long Timeout
+ );
+
+#line 2710 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family
+
+
+
+
+
+RPC_STATUS
+__stdcall
+UuidCreate (
+ UUID * Uuid
+ );
+
+
+
+RPC_STATUS
+__stdcall
+UuidCreateSequential (
+ UUID * Uuid
+ );
+
+
+
+
+
+
+RPC_STATUS
+__stdcall
+UuidToStringA (
+ const UUID * Uuid,
+ RPC_CSTR * StringUuid
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+UuidFromStringA (
+ RPC_CSTR StringUuid,
+ UUID * Uuid
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+UuidToStringW (
+ const UUID * Uuid,
+ RPC_WSTR * StringUuid
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+UuidFromStringW (
+ RPC_WSTR StringUuid,
+ UUID * Uuid
+ );
+
+
+
+
+
+
+
+#line 2781 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2803 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+signed int
+__stdcall
+UuidCompare (
+ UUID * Uuid1,
+ UUID * Uuid2,
+ RPC_STATUS * Status
+ );
+
+
+
+RPC_STATUS
+__stdcall
+UuidCreateNil (
+ UUID * NilUuid
+ );
+
+
+int
+__stdcall
+UuidEqual (
+ UUID * Uuid1,
+ UUID * Uuid2,
+ RPC_STATUS * Status
+ );
+
+
+unsigned short
+__stdcall
+UuidHash (
+ UUID * Uuid,
+ RPC_STATUS * Status
+ );
+
+
+int
+__stdcall
+UuidIsNil (
+ UUID * Uuid,
+ RPC_STATUS * Status
+ );
+
+#line 2847 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcEpRegisterNoReplaceA (
+ RPC_IF_HANDLE IfSpec,
+ RPC_BINDING_VECTOR * BindingVector,
+ UUID_VECTOR * UuidVector,
+ RPC_CSTR Annotation
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcEpRegisterNoReplaceW (
+ RPC_IF_HANDLE IfSpec,
+ RPC_BINDING_VECTOR * BindingVector,
+ UUID_VECTOR * UuidVector,
+ RPC_WSTR Annotation
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcEpRegisterA (
+ RPC_IF_HANDLE IfSpec,
+ RPC_BINDING_VECTOR * BindingVector,
+ UUID_VECTOR * UuidVector,
+ RPC_CSTR Annotation
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcEpRegisterW (
+ RPC_IF_HANDLE IfSpec,
+ RPC_BINDING_VECTOR * BindingVector,
+ UUID_VECTOR * UuidVector,
+ RPC_WSTR Annotation
+ );
+
+
+
+
+
+
+
+#line 2905 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2929 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcEpUnregister(
+ RPC_IF_HANDLE IfSpec,
+ RPC_BINDING_VECTOR * BindingVector,
+ UUID_VECTOR * UuidVector
+ );
+
+#line 2942 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+
+
+
+
+#pragma region Application Family or OneCore Family
+
+
+
+
+RPC_STATUS
+__stdcall
+DceErrorInqTextA (
+ RPC_STATUS RpcStatus,
+ RPC_CSTR ErrorText
+ );
+
+
+
+RPC_STATUS
+__stdcall
+DceErrorInqTextW (
+ RPC_STATUS RpcStatus,
+ RPC_WSTR ErrorText
+ );
+
+
+
+
+
+#line 2974 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+#line 2976 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2995 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+#pragma region Desktop Family or OneCore Family
+
+
+typedef I_RPC_HANDLE * RPC_EP_INQ_HANDLE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcMgmtEpEltInqBegin (
+ RPC_BINDING_HANDLE EpBinding,
+ unsigned long InquiryType,
+ RPC_IF_ID * IfId,
+ unsigned long VersOption,
+ UUID * ObjectUuid,
+ RPC_EP_INQ_HANDLE * InquiryContext
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcMgmtEpEltInqDone (
+ RPC_EP_INQ_HANDLE * InquiryContext
+ );
+
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcMgmtEpEltInqNextA (
+ RPC_EP_INQ_HANDLE InquiryContext,
+ RPC_IF_ID * IfId,
+ RPC_BINDING_HANDLE * Binding,
+ UUID * ObjectUuid,
+ RPC_CSTR * Annotation
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcMgmtEpEltInqNextW (
+ RPC_EP_INQ_HANDLE InquiryContext,
+ RPC_IF_ID * IfId,
+ RPC_BINDING_HANDLE * Binding,
+ UUID * ObjectUuid,
+ RPC_WSTR * Annotation
+ );
+
+
+
+
+
+#line 3064 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3078 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+RPC_STATUS
+__stdcall
+RpcMgmtEpUnregister (
+ RPC_BINDING_HANDLE EpBinding,
+ RPC_IF_ID * IfId,
+ RPC_BINDING_HANDLE Binding,
+ UUID * ObjectUuid
+ );
+
+typedef int
+(__stdcall * RPC_MGMT_AUTHORIZATION_FN) (
+ RPC_BINDING_HANDLE ClientBinding,
+ unsigned long RequestedMgmtOperation,
+ RPC_STATUS * Status
+ );
+
+
+
+
+
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcMgmtSetAuthorizationFn (
+ RPC_MGMT_AUTHORIZATION_FN AuthorizationFn
+ );
+
+#line 3112 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family
+
+
+
+
+int
+__stdcall
+RpcExceptionFilter (
+ unsigned long ExceptionCode
+ );
+#line 3125 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+#line 3127 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3146 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+#line 3150 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+typedef void *RPC_INTERFACE_GROUP, **PRPC_INTERFACE_GROUP;
+
+
+typedef struct
+{
+ unsigned long Version;
+ RPC_WSTR ProtSeq;
+ RPC_WSTR Endpoint;
+ void * SecurityDescriptor;
+ unsigned long Backlog;
+} RPC_ENDPOINT_TEMPLATEW, *PRPC_ENDPOINT_TEMPLATEW;
+
+typedef struct
+{
+ unsigned long Version;
+ RPC_CSTR ProtSeq;
+ RPC_CSTR Endpoint;
+ void * SecurityDescriptor;
+ unsigned long Backlog;
+} RPC_ENDPOINT_TEMPLATEA, *PRPC_ENDPOINT_TEMPLATEA;
+
+
+
+
+
+
+
+#line 3181 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+
+
+
+#line 3192 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+typedef struct
+{
+ unsigned long Version;
+ RPC_IF_HANDLE IfSpec;
+ UUID * MgrTypeUuid;
+ void * MgrEpv;
+ unsigned int Flags;
+ unsigned int MaxCalls;
+ unsigned int MaxRpcSize;
+ RPC_IF_CALLBACK_FN *IfCallback;
+ UUID_VECTOR *UuidVector;
+ RPC_CSTR Annotation;
+ void * SecurityDescriptor;
+} RPC_INTERFACE_TEMPLATEA, *PRPC_INTERFACE_TEMPLATEA;
+
+typedef struct
+{
+ unsigned long Version;
+ RPC_IF_HANDLE IfSpec;
+ UUID * MgrTypeUuid;
+ void * MgrEpv;
+ unsigned int Flags;
+ unsigned int MaxCalls;
+ unsigned int MaxRpcSize;
+ RPC_IF_CALLBACK_FN *IfCallback;
+ UUID_VECTOR *UuidVector;
+ RPC_WSTR Annotation;
+ void * SecurityDescriptor;
+} RPC_INTERFACE_TEMPLATEW, *PRPC_INTERFACE_TEMPLATEW;
+
+
+
+
+
+
+
+#line 3231 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3250 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+typedef void __stdcall
+RPC_INTERFACE_GROUP_IDLE_CALLBACK_FN (
+ RPC_INTERFACE_GROUP IfGroup,
+ void* IdleCallbackContext,
+ unsigned long IsGroupIdle
+ );
+
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerInterfaceGroupCreateW (
+ RPC_INTERFACE_TEMPLATEW *Interfaces,
+ unsigned long NumIfs,
+ RPC_ENDPOINT_TEMPLATEW *Endpoints,
+ unsigned long NumEndpoints,
+ unsigned long IdlePeriod,
+ RPC_INTERFACE_GROUP_IDLE_CALLBACK_FN IdleCallbackFn,
+ void* IdleCallbackContext,
+ PRPC_INTERFACE_GROUP IfGroup
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+RpcServerInterfaceGroupCreateA (
+ RPC_INTERFACE_TEMPLATEA *Interfaces,
+ unsigned long NumIfs,
+ RPC_ENDPOINT_TEMPLATEA *Endpoints,
+ unsigned long NumEndpoints,
+ unsigned long IdlePeriod,
+ RPC_INTERFACE_GROUP_IDLE_CALLBACK_FN IdleCallbackFn,
+ void* IdleCallbackContext,
+ PRPC_INTERFACE_GROUP IfGroup
+ );
+
+
+
+
+
+#line 3298 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3317 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+RPC_STATUS
+__stdcall
+RpcServerInterfaceGroupClose (
+ RPC_INTERFACE_GROUP IfGroup
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcServerInterfaceGroupActivate (
+ RPC_INTERFACE_GROUP IfGroup
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcServerInterfaceGroupDeactivate (
+ RPC_INTERFACE_GROUP IfGroup,
+ unsigned long ForceDeactivation
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcServerInterfaceGroupInqBindings (
+ RPC_INTERFACE_GROUP IfGroup,
+ RPC_BINDING_VECTOR * * BindingVector
+ );
+
+#line 3349 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+#line 3352 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma endregion
+
+
+#pragma warning(pop)
+#line 3357 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 27 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4668)
+#pragma warning(disable:4820)
+#line 37 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+#pragma region Application Family or OneCore Family or Games Family
+
+
+typedef struct _RPC_VERSION {
+ unsigned short MajorVersion;
+ unsigned short MinorVersion;
+} RPC_VERSION;
+
+typedef struct _RPC_SYNTAX_IDENTIFIER {
+ GUID SyntaxGUID;
+ RPC_VERSION SyntaxVersion;
+} RPC_SYNTAX_IDENTIFIER, * PRPC_SYNTAX_IDENTIFIER;
+
+typedef struct _RPC_MESSAGE
+{
+ RPC_BINDING_HANDLE Handle;
+ unsigned long DataRepresentation;
+ void * Buffer;
+ unsigned int BufferLength;
+ unsigned int ProcNum;
+ PRPC_SYNTAX_IDENTIFIER TransferSyntax;
+ void * RpcInterfaceInformation;
+ void * ReservedForRuntime;
+ void * ManagerEpv;
+ void * ImportContext;
+ unsigned long RpcFlags;
+} RPC_MESSAGE, * PRPC_MESSAGE;
+
+#line 67 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family
+
+
+typedef RPC_STATUS
+__stdcall RPC_FORWARD_FUNCTION(
+ UUID * InterfaceId,
+ RPC_VERSION * InterfaceVersion,
+ UUID * ObjectId,
+ unsigned char * Rpcpro,
+ void * * ppDestEndpoint);
+
+enum RPC_ADDRESS_CHANGE_TYPE
+{
+ PROTOCOL_NOT_LOADED = 1,
+ PROTOCOL_LOADED,
+ PROTOCOL_ADDRESS_CHANGE
+};
+
+typedef void
+__stdcall RPC_ADDRESS_CHANGE_FN(
+ void * arg
+ );
+
+#line 93 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family or Games Family
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 110 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+#line 113 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 126 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 148 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 160 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+
+
+#line 165 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 178 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+
+typedef
+void
+(__stdcall * RPC_DISPATCH_FUNCTION) (
+ PRPC_MESSAGE Message
+ );
+
+typedef struct {
+ unsigned int DispatchTableCount;
+ RPC_DISPATCH_FUNCTION * DispatchTable;
+ LONG_PTR Reserved;
+} RPC_DISPATCH_TABLE, * PRPC_DISPATCH_TABLE;
+
+typedef struct _RPC_PROTSEQ_ENDPOINT
+{
+ unsigned char * RpcProtocolSequence;
+ unsigned char * Endpoint;
+} RPC_PROTSEQ_ENDPOINT, * PRPC_PROTSEQ_ENDPOINT;
+
+
+
+
+
+
+
+
+typedef struct _RPC_SERVER_INTERFACE
+{
+ unsigned int Length;
+ RPC_SYNTAX_IDENTIFIER InterfaceId;
+ RPC_SYNTAX_IDENTIFIER TransferSyntax;
+ PRPC_DISPATCH_TABLE DispatchTable;
+ unsigned int RpcProtseqEndpointCount;
+ PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
+ void *DefaultManagerEpv;
+ void const *InterpreterInfo;
+ unsigned int Flags ;
+} RPC_SERVER_INTERFACE, * PRPC_SERVER_INTERFACE;
+
+typedef struct _RPC_CLIENT_INTERFACE
+{
+ unsigned int Length;
+ RPC_SYNTAX_IDENTIFIER InterfaceId;
+ RPC_SYNTAX_IDENTIFIER TransferSyntax;
+ PRPC_DISPATCH_TABLE DispatchTable;
+ unsigned int RpcProtseqEndpointCount;
+ PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
+ ULONG_PTR Reserved;
+ void const * InterpreterInfo;
+ unsigned int Flags ;
+} RPC_CLIENT_INTERFACE, * PRPC_CLIENT_INTERFACE;
+
+#line 233 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcNegotiateTransferSyntax (
+ RPC_MESSAGE * Message
+ );
+#line 246 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcGetBuffer (
+ RPC_MESSAGE * Message
+ );
+
+
+RPC_STATUS
+__stdcall
+I_RpcGetBufferWithObject (
+ RPC_MESSAGE * Message,
+ UUID * ObjectUuid
+ );
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcSendReceive (
+ RPC_MESSAGE * Message
+ );
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcFreeBuffer (
+ RPC_MESSAGE * Message
+ );
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcSend (
+ PRPC_MESSAGE Message
+ );
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcReceive (
+ PRPC_MESSAGE Message,
+ unsigned int Size
+ );
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcFreePipeBuffer (
+ RPC_MESSAGE * Message
+ );
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcReallocPipeBuffer (
+ PRPC_MESSAGE Message,
+ unsigned int NewSize
+ );
+
+typedef void * I_RPC_MUTEX;
+
+
+void
+__stdcall
+I_RpcRequestMutex (
+ I_RPC_MUTEX * Mutex
+ );
+
+
+void
+__stdcall
+I_RpcClearMutex (
+ I_RPC_MUTEX Mutex
+ );
+
+
+void
+__stdcall
+I_RpcDeleteMutex (
+ I_RPC_MUTEX Mutex
+ );
+
+
+void *
+__stdcall
+I_RpcAllocate (
+ unsigned int Size
+ );
+
+
+void
+__stdcall
+I_RpcFree (
+ void * Object
+ );
+
+
+
+
+
+
+
+unsigned long
+__stdcall
+I_RpcFreeSystemHandleCollection (
+ void * CallObj,
+ unsigned long FreeFlags
+ );
+
+
+RPC_STATUS
+__stdcall
+I_RpcSetSystemHandle (
+ void * Handle,
+ unsigned char Type,
+ unsigned long AccessMask,
+ void * CallObj,
+ unsigned long * HandleIndex
+ );
+
+
+RPC_STATUS
+__stdcall
+I_RpcGetSystemHandle (
+ unsigned char* pMemory,
+ unsigned char Type,
+ unsigned long AccessMask,
+ unsigned long HandleIndex,
+ void * CallObj
+ );
+
+
+void
+__stdcall
+I_RpcFreeSystemHandle (
+ unsigned char Type,
+ void * Handle
+ );
+
+
+void
+__stdcall
+I_RpcPauseExecution (
+ unsigned long Milliseconds
+ );
+
+
+RPC_STATUS
+__stdcall
+I_RpcGetExtendedError (
+ void
+ );
+
+
+typedef enum _LRPC_SYSTEM_HANDLE_MARSHAL_DIRECTION
+{
+ MarshalDirectionMarshal,
+ MarshalDirectionUnmarshal
+}LRPC_SYSTEM_HANDLE_MARSHAL_DIRECTION;
+
+
+RPC_STATUS
+__stdcall
+I_RpcSystemHandleTypeSpecificWork (
+ void * Handle,
+ unsigned char ActualType,
+ unsigned char IdlType,
+ LRPC_SYSTEM_HANDLE_MARSHAL_DIRECTION MarshalDirection
+ );
+
+typedef
+void
+(__stdcall * PRPC_RUNDOWN) (
+ void * AssociationContext
+ );
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcMonitorAssociation (
+ RPC_BINDING_HANDLE Handle,
+ PRPC_RUNDOWN RundownRoutine,
+ void * Context
+ );
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcStopMonitorAssociation (
+ RPC_BINDING_HANDLE Handle
+ );
+
+
+RPC_BINDING_HANDLE
+__stdcall
+I_RpcGetCurrentCallHandle(
+ void
+ );
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcGetAssociationContext (
+ RPC_BINDING_HANDLE BindingHandle,
+ void * * AssociationContext
+ );
+
+
+void *
+__stdcall
+I_RpcGetServerContextList (
+ RPC_BINDING_HANDLE BindingHandle
+ );
+
+
+void
+__stdcall
+I_RpcSetServerContextList (
+ RPC_BINDING_HANDLE BindingHandle,
+ void * ServerContextList
+ );
+
+
+RPC_STATUS
+__stdcall
+I_RpcNsInterfaceExported (
+ unsigned long EntryNameSyntax,
+ unsigned short *EntryName,
+ RPC_SERVER_INTERFACE * RpcInterfaceInformation
+ );
+
+
+RPC_STATUS
+__stdcall
+I_RpcNsInterfaceUnexported (
+ unsigned long EntryNameSyntax,
+ unsigned short *EntryName,
+ RPC_SERVER_INTERFACE * RpcInterfaceInformation
+ );
+
+
+RPC_STATUS
+__stdcall
+I_RpcBindingToStaticStringBindingW (
+ RPC_BINDING_HANDLE Binding,
+ unsigned short **StringBinding
+ );
+
+
+RPC_STATUS
+__stdcall
+I_RpcBindingInqSecurityContext (
+ RPC_BINDING_HANDLE Binding,
+ void **SecurityContextHandle
+ );
+
+
+typedef struct _RPC_SEC_CONTEXT_KEY_INFO
+{
+ unsigned long EncryptAlgorithm;
+ unsigned long KeySize;
+ unsigned long SignatureAlgorithm;
+}
+RPC_SEC_CONTEXT_KEY_INFO, *PRPC_SEC_CONTEXT_KEY_INFO;
+
+
+RPC_STATUS
+__stdcall
+I_RpcBindingInqSecurityContextKeyInfo (
+ RPC_BINDING_HANDLE Binding,
+ void *KeyInfo
+ );
+
+#line 531 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+RPC_STATUS
+__stdcall
+I_RpcBindingInqWireIdForSnego (
+ RPC_BINDING_HANDLE Binding,
+ unsigned char * WireId
+ );
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcBindingInqMarshalledTargetInfo (
+ RPC_BINDING_HANDLE Binding,
+ unsigned long * MarshalledTargetInfoSize,
+ RPC_CSTR * MarshalledTargetInfo
+ );
+#line 550 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcBindingInqLocalClientPID (
+ RPC_BINDING_HANDLE Binding,
+ unsigned long *Pid
+ );
+
+
+RPC_STATUS
+__stdcall
+I_RpcBindingHandleToAsyncHandle (
+ RPC_BINDING_HANDLE Binding,
+ void **AsyncHandle
+ );
+#line 568 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcNsBindingSetEntryNameW (
+ RPC_BINDING_HANDLE Binding,
+ unsigned long EntryNameSyntax,
+ RPC_WSTR EntryName
+ );
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcNsBindingSetEntryNameA (
+ RPC_BINDING_HANDLE Binding,
+ unsigned long EntryNameSyntax,
+ RPC_CSTR EntryName
+ );
+
+
+RPC_STATUS
+__stdcall
+I_RpcServerUseProtseqEp2A (
+ RPC_CSTR NetworkAddress,
+ RPC_CSTR Protseq,
+ unsigned int MaxCalls,
+ RPC_CSTR Endpoint,
+ void * SecurityDescriptor,
+ void * Policy
+ );
+
+
+RPC_STATUS
+__stdcall
+I_RpcServerUseProtseqEp2W (
+ RPC_WSTR NetworkAddress,
+ RPC_WSTR Protseq,
+ unsigned int MaxCalls,
+ RPC_WSTR Endpoint,
+ void * SecurityDescriptor,
+ void * Policy
+ );
+
+
+RPC_STATUS
+__stdcall
+I_RpcServerUseProtseq2W (
+ RPC_WSTR NetworkAddress,
+ RPC_WSTR Protseq,
+ unsigned int MaxCalls,
+ void * SecurityDescriptor,
+ void * Policy
+ );
+
+
+RPC_STATUS
+__stdcall
+I_RpcServerUseProtseq2A (
+ RPC_CSTR NetworkAddress,
+ RPC_CSTR Protseq,
+ unsigned int MaxCalls,
+ void * SecurityDescriptor,
+ void * Policy
+ );
+
+
+
+
+
+
+
+
+
+
+#line 647 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 682 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+RPC_STATUS
+__stdcall
+I_RpcServerStartService (
+ RPC_WSTR Protseq,
+ RPC_WSTR Endpoint,
+ RPC_IF_HANDLE IfSpec
+ );
+
+
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcBindingInqDynamicEndpointW (
+ RPC_BINDING_HANDLE Binding,
+ RPC_WSTR *DynamicEndpoint
+ );
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcBindingInqDynamicEndpointA (
+ RPC_BINDING_HANDLE Binding,
+ RPC_CSTR *DynamicEndpoint
+ );
+
+
+
+
+
+#line 717 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 730 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcServerCheckClientRestriction (
+ RPC_BINDING_HANDLE Context
+ );
+#line 739 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+
+
+
+
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcBindingInqTransportType (
+ RPC_BINDING_HANDLE Binding,
+ unsigned int * Type
+ );
+
+typedef struct _RPC_TRANSFER_SYNTAX
+{
+ UUID Uuid;
+ unsigned short VersMajor;
+ unsigned short VersMinor;
+} RPC_TRANSFER_SYNTAX;
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcIfInqTransferSyntaxes (
+ RPC_IF_HANDLE RpcIfHandle,
+ RPC_TRANSFER_SYNTAX * TransferSyntaxes,
+ unsigned int TransferSyntaxSize,
+ unsigned int * TransferSyntaxCount
+ );
+
+
+
+RPC_STATUS
+__stdcall
+I_UuidCreate (
+ UUID * Uuid
+ );
+
+
+void
+__stdcall
+I_RpcUninitializeNdrOle (
+ void
+ );
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcBindingCopy (
+ RPC_BINDING_HANDLE SourceBinding,
+ RPC_BINDING_HANDLE * DestinationBinding
+ );
+
+
+RPC_STATUS
+__stdcall
+I_RpcBindingIsClientLocal (
+ RPC_BINDING_HANDLE BindingHandle,
+ unsigned int * ClientLocalFlag
+ );
+
+
+RPC_STATUS
+__stdcall
+I_RpcBindingInqConnId (
+ RPC_BINDING_HANDLE Binding,
+ void **ConnId,
+ int *pfFirstCall
+ );
+
+
+RPC_STATUS
+__stdcall
+I_RpcBindingCreateNP (
+ RPC_WSTR ServerName,
+ RPC_WSTR ServiceName,
+ RPC_WSTR NetworkOptions,
+ RPC_BINDING_HANDLE *Binding
+ );
+
+
+void
+__stdcall
+I_RpcSsDontSerializeContext (
+ void
+ );
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcLaunchDatagramReceiveThread(
+ void * pAddress
+ );
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcServerRegisterForwardFunction (
+ RPC_FORWARD_FUNCTION * pForwardFunction
+ );
+
+RPC_ADDRESS_CHANGE_FN * __stdcall
+I_RpcServerInqAddressChangeFn(
+ void
+ );
+
+RPC_STATUS __stdcall
+I_RpcServerSetAddressChangeFn(
+ RPC_ADDRESS_CHANGE_FN * pAddressChangeFn
+ );
+
+
+
+
+
+
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcServerInqLocalConnAddress (
+ RPC_BINDING_HANDLE Binding,
+ void *Buffer,
+ unsigned long *BufferSize,
+ unsigned long *AddressFormat
+ );
+
+
+RPC_STATUS
+__stdcall
+I_RpcServerInqRemoteConnAddress (
+ RPC_BINDING_HANDLE Binding,
+ void *Buffer,
+ unsigned long *BufferSize,
+ unsigned long *AddressFormat
+ );
+
+
+void
+__stdcall
+I_RpcSessionStrictContextHandle (
+ void
+ );
+
+
+RPC_STATUS
+__stdcall
+I_RpcTurnOnEEInfoPropagation (
+ void
+ );
+#line 898 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcConnectionInqSockBuffSize(
+ unsigned long * RecvBuffSize,
+ unsigned long * SendBuffSize
+ );
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcConnectionSetSockBuffSize(
+ unsigned long RecvBuffSize,
+ unsigned long SendBuffSize
+ );
+
+typedef
+void
+(*RPCLT_PDU_FILTER_FUNC) (
+ void *Buffer,
+ unsigned int BufferLength,
+ int fDatagram
+ );
+
+typedef
+void
+(__cdecl *RPC_SETFILTER_FUNC) (
+ RPCLT_PDU_FILTER_FUNC pfnFilter
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcServerStartListening(
+ void * hWnd
+ );
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcServerStopListening(
+ void
+ );
+
+typedef RPC_STATUS (*RPC_BLOCKING_FN) (
+ void * hWnd,
+ void * Context,
+ void * hSyncEvent
+ );
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcBindingSetAsync(
+ RPC_BINDING_HANDLE Binding,
+ RPC_BLOCKING_FN BlockingFn,
+ unsigned long ServerTid
+ );
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcSetThreadParams(
+ int fClientFree,
+ void *Context,
+ void * hWndClient
+ );
+
+
+unsigned int
+__stdcall
+I_RpcWindowProc(
+ void * hWnd,
+ unsigned int Message,
+ unsigned int wParam,
+ unsigned long lParam
+ );
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcServerUnregisterEndpointA (
+ RPC_CSTR Protseq,
+ RPC_CSTR Endpoint
+ );
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcServerUnregisterEndpointW (
+ RPC_WSTR Protseq,
+ RPC_WSTR Endpoint
+ );
+
+
+
+
+
+#line 1007 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+#line 1008 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+RPC_STATUS
+__stdcall
+I_RpcServerInqTransportType(
+ unsigned int * Type
+ );
+
+
+long
+__stdcall
+I_RpcMapWin32Status (
+ RPC_STATUS Status
+ );
+
+
+
+
+
+
+
+typedef struct _RPC_C_OPT_COOKIE_AUTH_DESCRIPTOR
+{
+ unsigned long BufferSize;
+ char *Buffer;
+} RPC_C_OPT_COOKIE_AUTH_DESCRIPTOR;
+
+typedef struct _RDR_CALLOUT_STATE
+{
+
+ RPC_STATUS LastError;
+ void *LastEEInfo;
+
+ RPC_HTTP_REDIRECTOR_STAGE LastCalledStage;
+
+
+ unsigned short *ServerName;
+ unsigned short *ServerPort;
+ unsigned short *RemoteUser;
+ unsigned short *AuthType;
+ unsigned char ResourceTypePresent;
+ unsigned char SessionIdPresent;
+ unsigned char InterfacePresent;
+ UUID ResourceType;
+ UUID SessionId;
+ RPC_SYNTAX_IDENTIFIER Interface;
+ void *CertContext;
+
+
+} RDR_CALLOUT_STATE;
+#line 1059 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+typedef RPC_STATUS
+(__stdcall *I_RpcProxyIsValidMachineFn)
+ (
+ RPC_WSTR Machine,
+ RPC_WSTR DotMachine,
+ unsigned long PortNumber
+ );
+
+typedef RPC_STATUS
+(__stdcall *I_RpcProxyGetClientAddressFn)
+ (
+ void *Context,
+ char *Buffer,
+ unsigned long *BufferLength
+ );
+
+typedef RPC_STATUS
+(__stdcall *I_RpcProxyGetConnectionTimeoutFn)
+ (
+ unsigned long *ConnectionTimeout
+ );
+
+
+typedef RPC_STATUS
+(__stdcall *I_RpcPerformCalloutFn)
+ (
+ void *Context,
+ RDR_CALLOUT_STATE *CallOutState,
+ RPC_HTTP_REDIRECTOR_STAGE Stage
+ );
+
+typedef void
+(__stdcall *I_RpcFreeCalloutStateFn)
+ (
+ RDR_CALLOUT_STATE *CallOutState
+ );
+
+typedef RPC_STATUS
+(__stdcall *I_RpcProxyGetClientSessionAndResourceUUID)
+ (
+ void *Context,
+ int *SessionIdPresent,
+ UUID *SessionId,
+ int *ResourceIdPresent,
+ UUID *ResourceId
+ );
+
+#line 1109 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+typedef RPC_STATUS
+(__stdcall *I_RpcProxyFilterIfFn)
+ (
+ void *Context,
+ UUID *IfUuid,
+ unsigned short IfMajorVersion,
+ int *fAllow
+ );
+
+typedef enum RpcProxyPerfCounters
+{
+ RpcCurrentUniqueUser = 1,
+ RpcBackEndConnectionAttempts,
+ RpcBackEndConnectionFailed,
+ RpcRequestsPerSecond,
+ RpcIncomingConnections,
+ RpcIncomingBandwidth,
+ RpcOutgoingBandwidth,
+ RpcAttemptedLbsDecisions,
+ RpcFailedLbsDecisions,
+ RpcAttemptedLbsMessages,
+ RpcFailedLbsMessages,
+ RpcLastCounter
+} RpcPerfCounters;
+
+typedef void
+(__stdcall *I_RpcProxyUpdatePerfCounterFn)
+ (
+ RpcPerfCounters Counter,
+ int ModifyTrend,
+ unsigned long Size
+ );
+
+ typedef void
+(__stdcall *I_RpcProxyUpdatePerfCounterBackendServerFn)
+ (
+ unsigned short* MachineName,
+ int IsConnectEvent
+ );
+
+#line 1152 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+
+
+
+typedef struct tagI_RpcProxyCallbackInterface
+{
+ I_RpcProxyIsValidMachineFn IsValidMachineFn;
+ I_RpcProxyGetClientAddressFn GetClientAddressFn;
+ I_RpcProxyGetConnectionTimeoutFn GetConnectionTimeoutFn;
+ I_RpcPerformCalloutFn PerformCalloutFn;
+ I_RpcFreeCalloutStateFn FreeCalloutStateFn;
+ I_RpcProxyGetClientSessionAndResourceUUID GetClientSessionAndResourceUUIDFn;
+
+ I_RpcProxyFilterIfFn ProxyFilterIfFn;
+ I_RpcProxyUpdatePerfCounterFn RpcProxyUpdatePerfCounterFn;
+ I_RpcProxyUpdatePerfCounterBackendServerFn RpcProxyUpdatePerfCounterBackendServerFn;
+#line 1170 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+} I_RpcProxyCallbackInterface;
+
+
+RPC_STATUS
+__stdcall
+I_RpcProxyNewConnection (
+ unsigned long ConnectionType,
+ unsigned short *ServerAddress,
+ unsigned short *ServerPort,
+ unsigned short *MinConnTimeout,
+ void *ConnectionParameter,
+ RDR_CALLOUT_STATE *CallOutState,
+ I_RpcProxyCallbackInterface *ProxyCallbackInterface
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1205 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+#line 1207 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcReplyToClientWithStatus (
+ void *ConnectionParameter,
+ RPC_STATUS RpcStatus
+ );
+
+
+void
+__stdcall
+I_RpcRecordCalloutFailure (
+ RPC_STATUS RpcStatus,
+ RDR_CALLOUT_STATE *CallOutState,
+ unsigned short *DllName
+ );
+#line 1226 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcMgmtEnableDedicatedThreadPool (
+ void
+ );
+#line 1235 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcGetDefaultSD(
+ void ** ppSecurityDescriptor
+ );
+#line 1244 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcOpenClientProcess(
+ RPC_BINDING_HANDLE Binding,
+ unsigned long DesiredAccess,
+ void** ClientProcess
+ );
+#line 1255 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcBindingIsServerLocal(
+ RPC_BINDING_HANDLE Binding,
+ unsigned int * ServerLocalFlag
+ );
+
+RPC_STATUS __stdcall
+I_RpcBindingSetPrivateOption (
+ RPC_BINDING_HANDLE hBinding,
+ unsigned long option,
+ ULONG_PTR optionValue
+ );
+
+
+
+
+
+#line 1277 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+RPC_STATUS
+__stdcall
+I_RpcServerSubscribeForDisconnectNotification (
+ RPC_BINDING_HANDLE Binding,
+ void *hEvent
+ );
+
+RPC_STATUS
+__stdcall
+I_RpcServerGetAssociationID (
+ RPC_BINDING_HANDLE Binding,
+ unsigned long *AssociationID
+ );
+
+
+long
+__stdcall
+I_RpcServerDisableExceptionFilter (
+ void
+ );
+
+#line 1301 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+RPC_STATUS
+__stdcall
+I_RpcServerSubscribeForDisconnectNotification2 (
+ RPC_BINDING_HANDLE Binding,
+ void *hEvent,
+ UUID *SubscriptionId
+ );
+
+RPC_STATUS
+__stdcall
+I_RpcServerUnsubscribeForDisconnectNotification (
+ RPC_BINDING_HANDLE Binding,
+ UUID SubscriptionId
+ );
+
+#line 1319 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+#line 1321 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+#pragma endregion
+
+
+#pragma warning(pop)
+#line 1326 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+
+
+
+
+
+
+#line 1334 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+#line 1336 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+
+#line 1338 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdcep.h"
+#pragma external_header(pop)
+#line 3359 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+
+
+
+
+
+#line 3365 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcdce.h"
+#pragma external_header(pop)
+#line 157 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+
+#line 160 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 20 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4668)
+#line 28 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 61 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+
+#line 67 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 72 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 77 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 82 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 87 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 92 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 97 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 102 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 107 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 112 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 117 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 122 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 127 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 132 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 137 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 142 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 147 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 152 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 157 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 162 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 167 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 172 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 177 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 182 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 187 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 192 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 197 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 202 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 207 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 212 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 217 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 222 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 227 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 232 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 237 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 242 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 247 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 252 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 257 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 262 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 267 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 272 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 277 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 282 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 287 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 292 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 297 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 302 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 307 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 312 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 317 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 322 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 327 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 332 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 337 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 342 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 347 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 352 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 357 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 362 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 367 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 372 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 377 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 382 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 387 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 392 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 397 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 402 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 407 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 412 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 417 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 422 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 427 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 432 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 437 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 442 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 447 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 452 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 457 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 462 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 467 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 472 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 477 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 482 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 487 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 492 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 497 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 502 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 507 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 512 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 517 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 522 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 527 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+#line 532 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 554 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+#line 556 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+#pragma endregion
+
+
+#pragma warning(pop)
+#line 561 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+
+#line 563 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcnterr.h"
+#pragma external_header(pop)
+#line 161 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+
+
+#line 165 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+#pragma region Application Family or OneCore Family
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 205 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+#pragma endregion
+
+#line 208 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 24 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack8.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(disable:4103)
+
+#pragma pack(push,8)
+
+
+#line 30 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack8.h"
+
+
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack8.h"
+#line 34 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack8.h"
+#pragma external_header(pop)
+#line 27 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+#line 28 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+
+
+
+
+
+#pragma region Application Family or OneCore Family
+
+
+
+
+
+
+
+#line 42 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\minwindef.h"
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+#pragma region Application Family or OneCore Family or Games Family
+
+
+
+
+
+
+#line 26 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\minwindef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 40 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\minwindef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 102 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\minwindef.h"
+
+
+
+
+
+
+#line 109 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\minwindef.h"
+
+
+
+#line 113 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\minwindef.h"
+#line 114 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\minwindef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 141 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\minwindef.h"
+
+
+
+
+#line 146 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\minwindef.h"
+#line 147 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\minwindef.h"
+
+
+
+
+
+
+
+
+
+typedef unsigned long DWORD;
+typedef int BOOL;
+typedef unsigned char BYTE;
+typedef unsigned short WORD;
+typedef float FLOAT;
+typedef FLOAT *PFLOAT;
+typedef BOOL *PBOOL;
+typedef BOOL *LPBOOL;
+typedef BYTE *PBYTE;
+typedef BYTE *LPBYTE;
+typedef int *PINT;
+typedef int *LPINT;
+typedef WORD *PWORD;
+typedef WORD *LPWORD;
+typedef long *LPLONG;
+typedef DWORD *PDWORD;
+typedef DWORD *LPDWORD;
+typedef void *LPVOID;
+typedef const void *LPCVOID;
+
+typedef int INT;
+typedef unsigned int UINT;
+typedef unsigned int *PUINT;
+
+
+
+
+
+
+
+typedef UINT_PTR WPARAM;
+typedef LONG_PTR LPARAM;
+typedef LONG_PTR LRESULT;
+
+
+
+
+
+
+
+
+
+
+
+#line 201 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\minwindef.h"
+
+
+
+
+
+
+
+
+typedef HANDLE *SPHANDLE;
+typedef HANDLE *LPHANDLE;
+typedef HANDLE HGLOBAL;
+typedef HANDLE HLOCAL;
+typedef HANDLE GLOBALHANDLE;
+typedef HANDLE LOCALHANDLE;
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4255)
+#line 221 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\minwindef.h"
+
+
+typedef INT_PTR ( __stdcall *FARPROC)();
+typedef INT_PTR ( __stdcall *NEARPROC)();
+typedef INT_PTR (__stdcall *PROC)();
+
+
+
+
+#line 231 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\minwindef.h"
+
+
+
+
+#line 236 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\minwindef.h"
+
+#pragma warning(pop)
+#line 239 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\minwindef.h"
+
+
+
+
+#line 244 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\minwindef.h"
+
+typedef WORD ATOM;
+
+struct HKEY__{int unused;}; typedef struct HKEY__ *HKEY;
+typedef HKEY *PHKEY;
+struct HMETAFILE__{int unused;}; typedef struct HMETAFILE__ *HMETAFILE;
+struct HINSTANCE__{int unused;}; typedef struct HINSTANCE__ *HINSTANCE;
+typedef HINSTANCE HMODULE;
+struct HRGN__{int unused;}; typedef struct HRGN__ *HRGN;
+struct HRSRC__{int unused;}; typedef struct HRSRC__ *HRSRC;
+struct HSPRITE__{int unused;}; typedef struct HSPRITE__ *HSPRITE;
+struct HLSURF__{int unused;}; typedef struct HLSURF__ *HLSURF;
+struct HSTR__{int unused;}; typedef struct HSTR__ *HSTR;
+struct HTASK__{int unused;}; typedef struct HTASK__ *HTASK;
+struct HWINSTA__{int unused;}; typedef struct HWINSTA__ *HWINSTA;
+struct HKL__{int unused;}; typedef struct HKL__ *HKL;
+
+
+typedef int HFILE;
+
+
+#line 266 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\minwindef.h"
+
+
+
+
+
+typedef struct _FILETIME {
+ DWORD dwLowDateTime;
+ DWORD dwHighDateTime;
+} FILETIME, *PFILETIME, *LPFILETIME;
+
+
+
+
+
+
+#line 282 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\minwindef.h"
+#pragma endregion
+
+#line 285 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\minwindef.h"
+
+#pragma external_header(pop)
+#line 25 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+
+
+
+
+
+
+
+
+
+
+
+#pragma region Application Family or OneCore Family or Games Family
+
+
+struct HWND__{int unused;}; typedef struct HWND__ *HWND;
+struct HHOOK__{int unused;}; typedef struct HHOOK__ *HHOOK;
+
+#line 43 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+#pragma endregion
+
+
+
+
+
+
+
+
+
+
+
+
+#line 57 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+
+#pragma region Application Family
+
+
+
+
+typedef void * HGDIOBJ;
+
+
+#line 67 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+#line 68 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+
+
+struct HACCEL__{int unused;}; typedef struct HACCEL__ *HACCEL;
+#line 72 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+
+struct HBITMAP__{int unused;}; typedef struct HBITMAP__ *HBITMAP;
+struct HBRUSH__{int unused;}; typedef struct HBRUSH__ *HBRUSH;
+#line 76 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+
+struct HCOLORSPACE__{int unused;}; typedef struct HCOLORSPACE__ *HCOLORSPACE;
+#line 79 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+
+struct HDC__{int unused;}; typedef struct HDC__ *HDC;
+#line 82 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+struct HGLRC__{int unused;}; typedef struct HGLRC__ *HGLRC;
+struct HDESK__{int unused;}; typedef struct HDESK__ *HDESK;
+struct HENHMETAFILE__{int unused;}; typedef struct HENHMETAFILE__ *HENHMETAFILE;
+
+struct HFONT__{int unused;}; typedef struct HFONT__ *HFONT;
+#line 88 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+struct HICON__{int unused;}; typedef struct HICON__ *HICON;
+
+struct HMENU__{int unused;}; typedef struct HMENU__ *HMENU;
+#line 92 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+
+struct HPALETTE__{int unused;}; typedef struct HPALETTE__ *HPALETTE;
+struct HPEN__{int unused;}; typedef struct HPEN__ *HPEN;
+#line 96 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+
+
+struct HWINEVENTHOOK__{int unused;}; typedef struct HWINEVENTHOOK__ *HWINEVENTHOOK;
+#line 100 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+
+#line 102 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+#pragma endregion
+
+
+
+
+#pragma region Application Family
+
+
+struct HMONITOR__{int unused;}; typedef struct HMONITOR__ *HMONITOR;
+
+#line 113 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+#pragma endregion
+
+#line 116 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+
+#pragma region Desktop Family
+
+
+struct HUMPD__{int unused;}; typedef struct HUMPD__ *HUMPD;
+
+#line 123 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+#pragma endregion
+
+#line 126 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+
+#pragma region Application Family
+
+
+
+typedef HICON HCURSOR;
+
+
+#line 135 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+
+typedef DWORD COLORREF;
+
+#line 139 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+#pragma endregion
+
+#pragma region Desktop Family
+
+
+typedef DWORD *LPCOLORREF;
+
+
+
+#line 149 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+#pragma endregion
+
+#pragma region Application Family or Games Family
+
+
+typedef struct tagRECT
+{
+ LONG left;
+ LONG top;
+ LONG right;
+ LONG bottom;
+} RECT, *PRECT, *NPRECT, *LPRECT;
+
+typedef const RECT * LPCRECT;
+
+typedef struct _RECTL
+{
+ LONG left;
+ LONG top;
+ LONG right;
+ LONG bottom;
+} RECTL, *PRECTL, *LPRECTL;
+
+typedef const RECTL * LPCRECTL;
+
+typedef struct tagPOINT
+{
+ LONG x;
+ LONG y;
+} POINT, *PPOINT, *NPPOINT, *LPPOINT;
+
+typedef struct _POINTL
+{
+ LONG x;
+ LONG y;
+} POINTL, *PPOINTL;
+
+typedef struct tagSIZE
+{
+ LONG cx;
+ LONG cy;
+} SIZE, *PSIZE, *LPSIZE;
+
+typedef SIZE SIZEL;
+typedef SIZE *PSIZEL, *LPSIZEL;
+
+typedef struct tagPOINTS
+{
+
+ SHORT x;
+ SHORT y;
+
+
+
+#line 204 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+} POINTS, *PPOINTS, *LPPOINTS;
+
+
+typedef struct APP_LOCAL_DEVICE_ID
+{
+ BYTE value[32];
+} APP_LOCAL_DEVICE_ID;
+
+#line 213 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+#pragma endregion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma region Desktop Family
+
+
+
+
+
+struct DPI_AWARENESS_CONTEXT__{int unused;}; typedef struct DPI_AWARENESS_CONTEXT__ *DPI_AWARENESS_CONTEXT;
+
+typedef enum DPI_AWARENESS {
+ DPI_AWARENESS_INVALID = -1,
+ DPI_AWARENESS_UNAWARE = 0,
+ DPI_AWARENESS_SYSTEM_AWARE = 1,
+ DPI_AWARENESS_PER_MONITOR_AWARE = 2
+} DPI_AWARENESS;
+
+
+
+
+
+
+
+typedef enum DPI_HOSTING_BEHAVIOR {
+ DPI_HOSTING_BEHAVIOR_INVALID = -1,
+ DPI_HOSTING_BEHAVIOR_DEFAULT = 0,
+ DPI_HOSTING_BEHAVIOR_MIXED = 1
+} DPI_HOSTING_BEHAVIOR;
+
+#line 278 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+
+#line 280 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windef.h"
+
+#pragma external_header(pop)
+#line 48 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+
+#line 50 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+
+
+#pragma warning(push)
+#pragma warning(disable:4820)
+#line 55 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+
+
+
+typedef
+enum _RPC_NOTIFICATION_TYPES
+{
+ RpcNotificationTypeNone,
+ RpcNotificationTypeEvent,
+
+
+
+
+#line 68 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+ RpcNotificationTypeCallback
+} RPC_NOTIFICATION_TYPES;
+
+
+typedef
+enum _RPC_ASYNC_EVENT {
+ RpcCallComplete,
+ RpcSendComplete,
+ RpcReceiveComplete,
+ RpcClientDisconnect,
+ RpcClientCancel
+ } RPC_ASYNC_EVENT;
+
+
+
+
+
+
+
+
+
+
+#line 91 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+
+struct _RPC_ASYNC_STATE;
+
+typedef void __stdcall
+RPCNOTIFICATION_ROUTINE (
+ struct _RPC_ASYNC_STATE *pAsync,
+ void *Context,
+ RPC_ASYNC_EVENT Event);
+typedef RPCNOTIFICATION_ROUTINE *PFN_RPCNOTIFICATION_ROUTINE;
+
+typedef union _RPC_ASYNC_NOTIFICATION_INFO {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 136 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+
+
+
+
+
+
+
+#line 144 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+
+
+
+ PKEVENT Event;
+ #line 149 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+
+
+
+
+
+
+ PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine;
+} RPC_ASYNC_NOTIFICATION_INFO, *PRPC_ASYNC_NOTIFICATION_INFO;
+
+typedef struct _RPC_ASYNC_STATE {
+ unsigned int Size;
+ unsigned long Signature;
+ long Lock;
+ unsigned long Flags;
+ void *StubInfo;
+ void *UserInfo;
+ void *RuntimeInfo;
+ RPC_ASYNC_EVENT Event;
+
+ RPC_NOTIFICATION_TYPES NotificationType;
+ RPC_ASYNC_NOTIFICATION_INFO u;
+
+ LONG_PTR Reserved[4];
+ } RPC_ASYNC_STATE, *PRPC_ASYNC_STATE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 189 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+
+
+
+RPC_STATUS
+__stdcall
+RpcAsyncInitializeHandle (
+ PRPC_ASYNC_STATE pAsync,
+ unsigned int Size
+ );
+
+
+
+RPC_STATUS
+__stdcall
+RpcAsyncGetCallStatus (
+ PRPC_ASYNC_STATE pAsync
+ ) ;
+
+
+
+RPC_STATUS
+__stdcall
+RpcAsyncCompleteCall (
+ PRPC_ASYNC_STATE pAsync,
+ void *Reply
+ ) ;
+
+
+
+RPC_STATUS
+__stdcall
+RpcAsyncAbortCall (
+ PRPC_ASYNC_STATE pAsync,
+ unsigned long ExceptionCode
+ ) ;
+
+
+
+RPC_STATUS
+__stdcall
+RpcAsyncCancelCall (
+ PRPC_ASYNC_STATE pAsync,
+ BOOL fAbort
+ ) ;
+
+
+
+
+
+
+typedef enum tagExtendedErrorParamTypes
+{
+ eeptAnsiString = 1,
+ eeptUnicodeString,
+ eeptLongVal,
+ eeptShortVal,
+ eeptPointerVal,
+ eeptNone,
+ eeptBinary
+} ExtendedErrorParamTypes;
+
+
+
+
+typedef struct tagBinaryParam
+{
+ void *Buffer;
+ short Size;
+} BinaryParam;
+
+typedef struct tagRPC_EE_INFO_PARAM
+{
+ ExtendedErrorParamTypes ParameterType;
+ union
+ {
+ LPSTR AnsiString;
+ LPWSTR UnicodeString;
+ long LVal;
+ short SVal;
+ ULONGLONG PVal;
+ BinaryParam BVal;
+ } u;
+} RPC_EE_INFO_PARAM;
+
+
+
+
+
+
+
+
+#line 281 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+
+typedef struct tagRPC_EXTENDED_ERROR_INFO
+{
+ ULONG Version;
+ LPWSTR ComputerName;
+ ULONG ProcessID;
+ union
+ {
+
+
+
+#line 293 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+ LARGE_INTEGER KernelTime;
+#line 295 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+ } u;
+ ULONG GeneratingComponent;
+ ULONG Status;
+ USHORT DetectionLocation;
+ USHORT Flags;
+ int NumberOfParameters;
+ RPC_EE_INFO_PARAM Parameters[4];
+} RPC_EXTENDED_ERROR_INFO;
+
+typedef struct tagRPC_ERROR_ENUM_HANDLE
+{
+ ULONG Signature;
+ void *CurrentPos;
+ void *Head;
+} RPC_ERROR_ENUM_HANDLE;
+
+
+RPC_STATUS
+__stdcall
+RpcErrorStartEnumeration (
+ RPC_ERROR_ENUM_HANDLE *EnumHandle
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcErrorGetNextRecord (
+ RPC_ERROR_ENUM_HANDLE *EnumHandle,
+ BOOL CopyStrings,
+ RPC_EXTENDED_ERROR_INFO *ErrorInfo
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcErrorEndEnumeration (
+ RPC_ERROR_ENUM_HANDLE *EnumHandle
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcErrorResetEnumeration (
+ RPC_ERROR_ENUM_HANDLE *EnumHandle
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcErrorGetNumberOfRecords (
+ RPC_ERROR_ENUM_HANDLE *EnumHandle,
+ int *Records
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcErrorSaveErrorInfo (
+ RPC_ERROR_ENUM_HANDLE *EnumHandle,
+ PVOID *ErrorBlob,
+ size_t *BlobSize
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcErrorLoadErrorInfo (
+ PVOID ErrorBlob,
+ size_t BlobSize,
+ RPC_ERROR_ENUM_HANDLE *EnumHandle
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcErrorAddRecord (
+ RPC_EXTENDED_ERROR_INFO *ErrorInfo
+ );
+
+
+void
+__stdcall
+RpcErrorClearInformation (
+ void
+ );
+
+#line 382 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family
+
+
+#line 388 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 694 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+
+
+
+#line 698 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family
+
+
+
+RPC_STATUS
+__stdcall
+RpcBindingBind (
+ PRPC_ASYNC_STATE pAsync,
+ RPC_BINDING_HANDLE Binding,
+ RPC_IF_HANDLE IfSpec
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcBindingUnbind (
+ RPC_BINDING_HANDLE Binding
+ );
+
+#line 720 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+
+
+#line 723 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family
+
+
+#line 729 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+
+
+
+
+RPC_STATUS __stdcall
+I_RpcAsyncSetHandle (
+ PRPC_MESSAGE Message,
+ PRPC_ASYNC_STATE pAsync
+ );
+
+
+RPC_STATUS __stdcall
+I_RpcAsyncAbortCall (
+ PRPC_ASYNC_STATE pAsync,
+ unsigned long ExceptionCode
+ ) ;
+
+
+int
+__stdcall
+I_RpcExceptionFilter (
+ unsigned long ExceptionCode
+ );
+#line 753 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+
+
+
+
+RPC_STATUS
+__stdcall
+I_RpcBindingInqClientTokenAttributes (
+ RPC_BINDING_HANDLE Binding,
+ LUID * TokenId,
+ LUID * AuthenticationId,
+ LUID * ModifiedId
+ );
+
+#line 767 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+
+
+#pragma warning(pop)
+#line 771 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+
+#line 773 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+#pragma endregion
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(disable:4103)
+
+#pragma pack(pop)
+
+
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+
+
+#line 36 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+#line 37 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+#pragma external_header(pop)
+#line 781 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+#line 782 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+
+#line 784 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcasync.h"
+
+#pragma external_header(pop)
+#line 219 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+#line 221 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(disable:4103)
+
+#pragma pack(pop)
+
+
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+
+
+#line 36 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+#line 37 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+#pragma external_header(pop)
+#line 224 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+#line 225 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+
+
+
+
+#line 231 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpc.h"
+
+#pragma external_header(pop)
+#line 22 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpstypes.h"
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4001)
+#pragma warning(disable:4255)
+#pragma warning(disable:4668)
+#pragma warning(disable:4820)
+#line 22 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+
+
+#line 30 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+
+#pragma once
+#line 38 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+#line 43 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+#line 44 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack8.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(disable:4103)
+
+#pragma pack(push,8)
+
+
+#line 30 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack8.h"
+
+
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack8.h"
+#line 34 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pshpack8.h"
+#pragma external_header(pop)
+#line 48 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+#line 52 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcsal.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+#line 143 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcsal.h"
+
+
+
+
+#line 148 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcsal.h"
+#line 149 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcsal.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(pop)
+#line 54 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+#pragma region Application Family or OneCore Family or Games Family
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 122 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+#line 125 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+
+
+
+
+
+#line 136 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+#line 142 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+#line 148 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+#line 154 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+#line 160 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+#line 166 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+#line 172 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+#line 178 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+#line 184 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+#line 190 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+#line 196 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+
+typedef unsigned char byte;
+typedef byte cs_byte;
+typedef unsigned char boolean;
+
+
+
+
+
+
+
+
+
+
+#line 216 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+#line 218 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+void * __stdcall MIDL_user_allocate( size_t size);
+void __stdcall MIDL_user_free( void * );
+
+
+
+void * __stdcall I_RpcDefaultAllocate(
+ handle_t bh, size_t size, void * (* RealAlloc)(size_t) );
+
+void __stdcall I_RpcDefaultFree(
+ handle_t bh, void *, void (*RealFree)(void *) );
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 273 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+
+
+
+
+
+
+typedef void * NDR_CCONTEXT;
+
+typedef struct _NDR_SCONTEXT
+ {
+ void * pad[2];
+ void * userContext;
+ } * NDR_SCONTEXT;
+
+
+
+
+
+typedef void (__stdcall * NDR_RUNDOWN)(void * context);
+
+typedef void (__stdcall * NDR_NOTIFY_ROUTINE)(void);
+
+typedef void (__stdcall * NDR_NOTIFY2_ROUTINE)(boolean flag);
+
+typedef struct _SCONTEXT_QUEUE {
+ unsigned long NumberOfObjects;
+ NDR_SCONTEXT * ArrayOfObjects;
+ } SCONTEXT_QUEUE, * PSCONTEXT_QUEUE;
+
+
+RPC_BINDING_HANDLE
+__stdcall
+NDRCContextBinding (
+ NDR_CCONTEXT CContext
+ );
+
+
+void
+__stdcall
+NDRCContextMarshall (
+ NDR_CCONTEXT CContext,
+ void *pBuff
+ );
+
+
+void
+__stdcall
+NDRCContextUnmarshall (
+ NDR_CCONTEXT * pCContext,
+ RPC_BINDING_HANDLE hBinding,
+ void * pBuff,
+ unsigned long DataRepresentation
+ );
+
+
+void
+__stdcall
+NDRCContextUnmarshall2 (
+ NDR_CCONTEXT * pCContext,
+ RPC_BINDING_HANDLE hBinding,
+ void * pBuff,
+ unsigned long DataRepresentation
+ );
+
+
+void
+__stdcall
+NDRSContextMarshall (
+ NDR_SCONTEXT CContext,
+ void * pBuff,
+ NDR_RUNDOWN userRunDownIn
+ );
+
+
+NDR_SCONTEXT
+__stdcall
+NDRSContextUnmarshall (
+ void * pBuff,
+ unsigned long DataRepresentation
+ );
+
+
+void
+__stdcall
+NDRSContextMarshallEx (
+ RPC_BINDING_HANDLE BindingHandle,
+ NDR_SCONTEXT CContext,
+ void * pBuff,
+ NDR_RUNDOWN userRunDownIn
+ );
+
+
+void
+__stdcall
+NDRSContextMarshall2 (
+ RPC_BINDING_HANDLE BindingHandle,
+ NDR_SCONTEXT CContext,
+ void * pBuff,
+ NDR_RUNDOWN userRunDownIn,
+ void * CtxGuard,
+ unsigned long Flags
+ );
+
+
+NDR_SCONTEXT
+__stdcall
+NDRSContextUnmarshallEx (
+ RPC_BINDING_HANDLE BindingHandle,
+ void * pBuff,
+ unsigned long DataRepresentation
+ );
+
+
+NDR_SCONTEXT
+__stdcall
+NDRSContextUnmarshall2(
+ RPC_BINDING_HANDLE BindingHandle,
+ void * pBuff,
+ unsigned long DataRepresentation,
+ void * CtxGuard,
+ unsigned long Flags
+ );
+
+
+void
+__stdcall
+RpcSsDestroyClientContext (
+ void * * ContextHandle
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 472 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+typedef unsigned long error_status_t;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+struct _MIDL_STUB_MESSAGE;
+struct _MIDL_STUB_DESC;
+struct _FULL_PTR_XLAT_TABLES;
+
+typedef unsigned char * RPC_BUFPTR;
+typedef unsigned long RPC_LENGTH;
+
+
+typedef void (__stdcall * EXPR_EVAL)( struct _MIDL_STUB_MESSAGE * );
+
+typedef const unsigned char * PFORMAT_STRING;
+
+
+
+
+typedef struct
+ {
+ long Dimension;
+
+
+ unsigned long * BufferConformanceMark;
+ unsigned long * BufferVarianceMark;
+
+
+ unsigned long * MaxCountArray;
+ unsigned long * OffsetArray;
+ unsigned long * ActualCountArray;
+ } ARRAY_INFO, *PARRAY_INFO;
+
+
+typedef struct _NDR_ASYNC_MESSAGE * PNDR_ASYNC_MESSAGE;
+typedef struct _NDR_CORRELATION_INFO *PNDR_CORRELATION_INFO;
+
+
+
+
+
+typedef const unsigned char * PFORMAT_STRING;
+typedef struct _MIDL_SYNTAX_INFO MIDL_SYNTAX_INFO, *PMIDL_SYNTAX_INFO;
+
+struct NDR_ALLOC_ALL_NODES_CONTEXT;
+struct NDR_POINTER_QUEUE_STATE;
+struct _NDR_PROC_CONTEXT;
+
+typedef struct _MIDL_STUB_MESSAGE
+ {
+
+ PRPC_MESSAGE RpcMsg;
+
+
+ unsigned char * Buffer;
+
+
+
+
+
+ unsigned char * BufferStart;
+ unsigned char * BufferEnd;
+
+
+
+
+
+
+
+
+ unsigned char * BufferMark;
+
+
+ unsigned long BufferLength;
+
+
+ unsigned long MemorySize;
+
+
+ unsigned char * Memory;
+
+
+ unsigned char IsClient;
+ unsigned char Pad;
+ unsigned short uFlags2;
+
+
+ int ReuseBuffer;
+
+
+ struct NDR_ALLOC_ALL_NODES_CONTEXT *pAllocAllNodesContext;
+ struct NDR_POINTER_QUEUE_STATE *pPointerQueueState;
+
+
+
+
+
+
+ int IgnoreEmbeddedPointers;
+
+
+
+
+
+ unsigned char * PointerBufferMark;
+
+
+
+
+ unsigned char CorrDespIncrement;
+
+ unsigned char uFlags;
+ unsigned short UniquePtrCount;
+
+
+
+
+
+ ULONG_PTR MaxCount;
+
+
+
+
+
+ unsigned long Offset;
+
+
+
+
+
+ unsigned long ActualCount;
+
+
+ void * ( __stdcall * pfnAllocate)( size_t );
+ void ( __stdcall * pfnFree)(void *);
+
+
+
+
+
+
+
+ unsigned char * StackTop;
+
+
+
+
+
+ unsigned char * pPresentedType;
+ unsigned char * pTransmitType;
+
+
+
+
+
+
+
+
+
+ handle_t SavedHandle;
+
+
+
+
+ const struct _MIDL_STUB_DESC * StubDesc;
+
+
+
+
+ struct _FULL_PTR_XLAT_TABLES * FullPtrXlatTables;
+ unsigned long FullPtrRefId;
+
+ unsigned long PointerLength;
+
+ int fInDontFree :1;
+ int fDontCallFreeInst :1;
+ int fUnused1 :1;
+ int fHasReturn :1;
+ int fHasExtensions :1;
+ int fHasNewCorrDesc :1;
+ int fIsIn :1;
+ int fIsOut :1;
+ int fIsOicf :1;
+ int fBufferValid :1;
+ int fHasMemoryValidateCallback: 1;
+ int fInFree :1;
+ int fNeedMCCP :1;
+ int fUnused2 :3;
+ int fUnused3 :16;
+
+
+ unsigned long dwDestContext;
+ void * pvDestContext;
+
+ NDR_SCONTEXT * SavedContextHandles;
+
+ long ParamNumber;
+
+ struct IRpcChannelBuffer * pRpcChannelBuffer;
+
+ PARRAY_INFO pArrayInfo;
+ unsigned long * SizePtrCountArray;
+ unsigned long * SizePtrOffsetArray;
+ unsigned long * SizePtrLengthArray;
+
+
+
+
+ void * pArgQueue;
+
+ unsigned long dwStubPhase;
+
+ void * LowStackMark;
+
+
+
+
+ PNDR_ASYNC_MESSAGE pAsyncMsg;
+ PNDR_CORRELATION_INFO pCorrInfo;
+ unsigned char * pCorrMemory;
+
+ void * pMemoryList;
+
+
+
+
+
+
+
+
+
+
+ INT_PTR pCSInfo;
+
+ unsigned char * ConformanceMark;
+ unsigned char * VarianceMark;
+
+ INT_PTR Unused;
+
+ struct _NDR_PROC_CONTEXT * pContext;
+
+
+
+
+
+
+
+
+
+
+
+ void * ContextHandleHash;
+ void * pUserMarshalList;
+ INT_PTR Reserved51_3;
+ INT_PTR Reserved51_4;
+ INT_PTR Reserved51_5;
+
+
+
+
+
+ } MIDL_STUB_MESSAGE, *PMIDL_STUB_MESSAGE;
+
+
+typedef struct _MIDL_STUB_MESSAGE MIDL_STUB_MESSAGE, *PMIDL_STUB_MESSAGE;
+
+
+
+
+typedef void *
+ ( __stdcall * GENERIC_BINDING_ROUTINE)
+ (void *);
+typedef void
+ ( __stdcall * GENERIC_UNBIND_ROUTINE)
+ (void *, unsigned char *);
+
+typedef struct _GENERIC_BINDING_ROUTINE_PAIR
+ {
+ GENERIC_BINDING_ROUTINE pfnBind;
+ GENERIC_UNBIND_ROUTINE pfnUnbind;
+ } GENERIC_BINDING_ROUTINE_PAIR, *PGENERIC_BINDING_ROUTINE_PAIR;
+
+typedef struct __GENERIC_BINDING_INFO
+ {
+ void * pObj;
+ unsigned int Size;
+ GENERIC_BINDING_ROUTINE pfnBind;
+ GENERIC_UNBIND_ROUTINE pfnUnbind;
+ } GENERIC_BINDING_INFO, *PGENERIC_BINDING_INFO;
+
+
+
+
+
+
+
+
+
+
+
+#line 857 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+typedef void ( __stdcall * XMIT_HELPER_ROUTINE)
+ ( PMIDL_STUB_MESSAGE );
+
+typedef struct _XMIT_ROUTINE_QUINTUPLE
+ {
+ XMIT_HELPER_ROUTINE pfnTranslateToXmit;
+ XMIT_HELPER_ROUTINE pfnTranslateFromXmit;
+ XMIT_HELPER_ROUTINE pfnFreeXmit;
+ XMIT_HELPER_ROUTINE pfnFreeInst;
+ } XMIT_ROUTINE_QUINTUPLE, *PXMIT_ROUTINE_QUINTUPLE;
+
+typedef unsigned long
+( __stdcall * USER_MARSHAL_SIZING_ROUTINE)
+ (unsigned long *,
+ unsigned long,
+ void * );
+
+typedef unsigned char *
+( __stdcall * USER_MARSHAL_MARSHALLING_ROUTINE)
+ (unsigned long *,
+ unsigned char * ,
+ void * );
+
+typedef unsigned char *
+( __stdcall * USER_MARSHAL_UNMARSHALLING_ROUTINE)
+ (unsigned long *,
+ unsigned char *,
+ void * );
+
+typedef void ( __stdcall * USER_MARSHAL_FREEING_ROUTINE)
+ (unsigned long *,
+ void * );
+
+typedef struct _USER_MARSHAL_ROUTINE_QUADRUPLE
+ {
+ USER_MARSHAL_SIZING_ROUTINE pfnBufferSize;
+ USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall;
+ USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall;
+ USER_MARSHAL_FREEING_ROUTINE pfnFree;
+ } USER_MARSHAL_ROUTINE_QUADRUPLE;
+
+
+
+typedef enum _USER_MARSHAL_CB_TYPE
+{
+ USER_MARSHAL_CB_BUFFER_SIZE,
+ USER_MARSHAL_CB_MARSHALL,
+ USER_MARSHAL_CB_UNMARSHALL,
+ USER_MARSHAL_CB_FREE
+} USER_MARSHAL_CB_TYPE;
+
+typedef struct _USER_MARSHAL_CB
+{
+ unsigned long Flags;
+ PMIDL_STUB_MESSAGE pStubMsg;
+ PFORMAT_STRING pReserve;
+ unsigned long Signature;
+ USER_MARSHAL_CB_TYPE CBType;
+ PFORMAT_STRING pFormat;
+ PFORMAT_STRING pTypeFormat;
+} USER_MARSHAL_CB;
+
+
+
+
+
+
+
+
+
+typedef struct _MALLOC_FREE_STRUCT
+ {
+ void * ( __stdcall * pfnAllocate)(size_t);
+ void ( __stdcall * pfnFree)(void *);
+ } MALLOC_FREE_STRUCT;
+
+typedef struct _COMM_FAULT_OFFSETS
+ {
+ short CommOffset;
+ short FaultOffset;
+ } COMM_FAULT_OFFSETS;
+
+
+
+
+
+typedef enum _IDL_CS_CONVERT
+ {
+ IDL_CS_NO_CONVERT,
+ IDL_CS_IN_PLACE_CONVERT,
+ IDL_CS_NEW_BUFFER_CONVERT
+ } IDL_CS_CONVERT;
+
+typedef void
+( __stdcall * CS_TYPE_NET_SIZE_ROUTINE)
+ (RPC_BINDING_HANDLE hBinding,
+ unsigned long ulNetworkCodeSet,
+ unsigned long ulLocalBufferSize,
+ IDL_CS_CONVERT * conversionType,
+ unsigned long * pulNetworkBufferSize,
+ error_status_t * pStatus);
+
+typedef void
+( __stdcall * CS_TYPE_LOCAL_SIZE_ROUTINE)
+ (RPC_BINDING_HANDLE hBinding,
+ unsigned long ulNetworkCodeSet,
+ unsigned long ulNetworkBufferSize,
+ IDL_CS_CONVERT * conversionType,
+ unsigned long * pulLocalBufferSize,
+ error_status_t * pStatus);
+
+typedef void
+( __stdcall * CS_TYPE_TO_NETCS_ROUTINE)
+ (RPC_BINDING_HANDLE hBinding,
+ unsigned long ulNetworkCodeSet,
+ void * pLocalData,
+ unsigned long ulLocalDataLength,
+ byte * pNetworkData,
+ unsigned long * pulNetworkDataLength,
+ error_status_t * pStatus);
+
+typedef void
+( __stdcall * CS_TYPE_FROM_NETCS_ROUTINE)
+ (RPC_BINDING_HANDLE hBinding,
+ unsigned long ulNetworkCodeSet,
+ byte * pNetworkData,
+ unsigned long ulNetworkDataLength,
+ unsigned long ulLocalBufferSize,
+ void * pLocalData,
+ unsigned long * pulLocalDataLength,
+ error_status_t * pStatus);
+
+typedef void
+( __stdcall * CS_TAG_GETTING_ROUTINE)
+ (RPC_BINDING_HANDLE hBinding,
+ int fServerSide,
+ unsigned long * pulSendingTag,
+ unsigned long * pulDesiredReceivingTag,
+ unsigned long * pulReceivingTag,
+ error_status_t * pStatus);
+
+void __stdcall
+RpcCsGetTags(
+ RPC_BINDING_HANDLE hBinding,
+ int fServerSide,
+ unsigned long * pulSendingTag,
+ unsigned long * pulDesiredReceivingTag,
+ unsigned long * pulReceivingTag,
+ error_status_t * pStatus);
+
+typedef struct _NDR_CS_SIZE_CONVERT_ROUTINES
+ {
+ CS_TYPE_NET_SIZE_ROUTINE pfnNetSize;
+ CS_TYPE_TO_NETCS_ROUTINE pfnToNetCs;
+ CS_TYPE_LOCAL_SIZE_ROUTINE pfnLocalSize;
+ CS_TYPE_FROM_NETCS_ROUTINE pfnFromNetCs;
+ } NDR_CS_SIZE_CONVERT_ROUTINES;
+
+typedef struct _NDR_CS_ROUTINES
+ {
+ NDR_CS_SIZE_CONVERT_ROUTINES *pSizeConvertRoutines;
+ CS_TAG_GETTING_ROUTINE *pTagGettingRoutines;
+ } NDR_CS_ROUTINES;
+
+typedef struct _NDR_EXPR_DESC
+{
+ const unsigned short * pOffset;
+ PFORMAT_STRING pFormatExpr;
+} NDR_EXPR_DESC;
+
+
+
+
+typedef struct _MIDL_STUB_DESC
+ {
+ void * RpcInterfaceInformation;
+
+ void * ( __stdcall * pfnAllocate)(size_t);
+ void ( __stdcall * pfnFree)(void *);
+
+ union
+ {
+ handle_t * pAutoHandle;
+ handle_t * pPrimitiveHandle;
+ PGENERIC_BINDING_INFO pGenericBindingInfo;
+ } IMPLICIT_HANDLE_INFO;
+
+ const NDR_RUNDOWN * apfnNdrRundownRoutines;
+ const GENERIC_BINDING_ROUTINE_PAIR * aGenericBindingRoutinePairs;
+ const EXPR_EVAL * apfnExprEval;
+ const XMIT_ROUTINE_QUINTUPLE * aXmitQuintuple;
+
+ const unsigned char * pFormatTypes;
+
+ int fCheckBounds;
+
+
+ unsigned long Version;
+
+ MALLOC_FREE_STRUCT * pMallocFreeStruct;
+
+ long MIDLVersion;
+
+ const COMM_FAULT_OFFSETS * CommFaultOffsets;
+
+
+ const USER_MARSHAL_ROUTINE_QUADRUPLE * aUserMarshalQuadruple;
+
+
+ const NDR_NOTIFY_ROUTINE * NotifyRoutineTable;
+
+
+
+
+
+ ULONG_PTR mFlags;
+
+
+ const NDR_CS_ROUTINES * CsRoutineTables;
+
+ void * ProxyServerInfo;
+ const NDR_EXPR_DESC * pExprInfo;
+
+
+
+ } MIDL_STUB_DESC;
+
+
+typedef const MIDL_STUB_DESC * PMIDL_STUB_DESC;
+
+typedef void * PMIDL_XMIT_TYPE;
+
+
+
+
+
+
+
+#pragma warning(push)
+#line 1098 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+#pragma warning( disable:4200 )
+#line 1100 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+typedef struct _MIDL_FORMAT_STRING
+ {
+ short Pad;
+ unsigned char Format[];
+ } MIDL_FORMAT_STRING;
+
+
+#pragma warning(pop)
+
+
+#line 1111 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+#line 1112 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+#line 1113 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+typedef void ( __stdcall * STUB_THUNK)( PMIDL_STUB_MESSAGE );
+
+
+typedef long ( __stdcall * SERVER_ROUTINE)();
+
+
+#line 1124 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+typedef struct _MIDL_METHOD_PROPERTY
+{
+ unsigned long Id;
+ ULONG_PTR Value;
+} MIDL_METHOD_PROPERTY, *PMIDL_METHOD_PROPERTY;
+
+typedef struct _MIDL_METHOD_PROPERTY_MAP
+{
+ unsigned long Count;
+ const MIDL_METHOD_PROPERTY *Properties;
+} MIDL_METHOD_PROPERTY_MAP, *PMIDL_METHOD_PROPERTY_MAP;
+
+typedef struct _MIDL_INTERFACE_METHOD_PROPERTIES
+{
+ unsigned short MethodCount;
+ const MIDL_METHOD_PROPERTY_MAP* const *MethodProperties;
+} MIDL_INTERFACE_METHOD_PROPERTIES;
+
+
+
+
+typedef struct _MIDL_SERVER_INFO_
+ {
+ PMIDL_STUB_DESC pStubDesc;
+ const SERVER_ROUTINE * DispatchTable;
+ PFORMAT_STRING ProcString;
+ const unsigned short * FmtStringOffset;
+ const STUB_THUNK * ThunkTable;
+ PRPC_SYNTAX_IDENTIFIER pTransferSyntax;
+ ULONG_PTR nCount;
+ PMIDL_SYNTAX_INFO pSyntaxInfo;
+ } MIDL_SERVER_INFO, *PMIDL_SERVER_INFO;
+
+
+
+
+
+
+typedef struct _MIDL_STUBLESS_PROXY_INFO
+ {
+ PMIDL_STUB_DESC pStubDesc;
+ PFORMAT_STRING ProcFormatString;
+ const unsigned short * FormatStringOffset;
+ PRPC_SYNTAX_IDENTIFIER pTransferSyntax;
+ ULONG_PTR nCount;
+ PMIDL_SYNTAX_INFO pSyntaxInfo;
+ } MIDL_STUBLESS_PROXY_INFO;
+
+typedef MIDL_STUBLESS_PROXY_INFO * PMIDL_STUBLESS_PROXY_INFO;
+
+
+
+
+typedef struct _MIDL_SYNTAX_INFO
+{
+RPC_SYNTAX_IDENTIFIER TransferSyntax;
+RPC_DISPATCH_TABLE * DispatchTable;
+PFORMAT_STRING ProcString;
+const unsigned short * FmtStringOffset;
+PFORMAT_STRING TypeString;
+const void * aUserMarshalQuadruple;
+const MIDL_INTERFACE_METHOD_PROPERTIES *pMethodProperties;
+ULONG_PTR pReserved2;
+} MIDL_SYNTAX_INFO, *PMIDL_SYNTAX_INFO;
+
+typedef unsigned short * PARAM_OFFSETTABLE, *PPARAM_OFFSETTABLE;
+
+
+
+
+
+typedef union _CLIENT_CALL_RETURN
+ {
+ void * Pointer;
+ LONG_PTR Simple;
+ } CLIENT_CALL_RETURN;
+
+
+typedef enum
+ {
+ XLAT_SERVER = 1,
+ XLAT_CLIENT
+ } XLAT_SIDE;
+
+typedef struct _FULL_PTR_XLAT_TABLES
+{
+ void * RefIdToPointer;
+ void * PointerToRefId;
+ unsigned long NextRefId;
+ XLAT_SIDE XlatSide;
+} FULL_PTR_XLAT_TABLES, *PFULL_PTR_XLAT_TABLES;
+
+
+
+
+
+typedef enum _system_handle_t
+{
+ SYSTEM_HANDLE_FILE = 0,
+ SYSTEM_HANDLE_SEMAPHORE = 1,
+ SYSTEM_HANDLE_EVENT = 2,
+ SYSTEM_HANDLE_MUTEX = 3,
+ SYSTEM_HANDLE_PROCESS = 4,
+ SYSTEM_HANDLE_TOKEN = 5,
+ SYSTEM_HANDLE_SECTION = 6,
+ SYSTEM_HANDLE_REG_KEY = 7,
+ SYSTEM_HANDLE_THREAD = 8,
+ SYSTEM_HANDLE_COMPOSITION_OBJECT = 9,
+ SYSTEM_HANDLE_SOCKET = 10,
+ SYSTEM_HANDLE_JOB = 11,
+ SYSTEM_HANDLE_PIPE = 12,
+ SYSTEM_HANDLE_MAX = 12,
+ SYSTEM_HANDLE_INVALID = 0xFF,
+} system_handle_t;
+
+
+
+
+
+enum {
+ MidlInterceptionInfoVersionOne = 1
+};
+
+enum {
+ MidlWinrtTypeSerializationInfoVersionOne = 1
+};
+
+
+
+typedef struct _MIDL_INTERCEPTION_INFO
+{
+ unsigned long Version;
+ PFORMAT_STRING ProcString;
+ const unsigned short *ProcFormatOffsetTable;
+ unsigned long ProcCount;
+ PFORMAT_STRING TypeString;
+} MIDL_INTERCEPTION_INFO, *PMIDL_INTERCEPTION_INFO;
+
+typedef struct _MIDL_WINRT_TYPE_SERIALIZATION_INFO
+{
+ unsigned long Version;
+ PFORMAT_STRING TypeFormatString;
+ unsigned short FormatStringSize;
+ unsigned short TypeOffset;
+ PMIDL_STUB_DESC StubDesc;
+} MIDL_WINRT_TYPE_SERIALIZATION_INFO, *PMIDL_WINRT_TYPE_SERIALIZATION_INFO;
+
+
+
+
+
+RPC_STATUS __stdcall
+NdrClientGetSupportedSyntaxes(
+ RPC_CLIENT_INTERFACE * pInf,
+ unsigned long * pCount,
+ MIDL_SYNTAX_INFO ** pArr );
+
+
+RPC_STATUS __stdcall
+NdrServerGetSupportedSyntaxes(
+ RPC_SERVER_INTERFACE * pInf,
+ unsigned long * pCount,
+ MIDL_SYNTAX_INFO ** pArr,
+ unsigned long * pPreferSyntaxIndex);
+
+
+
+
+#pragma warning(push)
+
+#pragma warning(disable:28740)
+
+
+void
+__stdcall
+NdrSimpleTypeMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ unsigned char FormatChar
+ );
+
+
+unsigned char *
+__stdcall
+NdrPointerMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+unsigned char *
+__stdcall
+NdrCsArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+unsigned char *
+__stdcall
+NdrCsTagMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+unsigned char *
+__stdcall
+NdrSimpleStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+unsigned char *
+__stdcall
+NdrConformantStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+unsigned char *
+__stdcall
+NdrConformantVaryingStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+unsigned char *
+__stdcall
+NdrComplexStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+unsigned char *
+__stdcall
+NdrFixedArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+unsigned char *
+__stdcall
+NdrConformantArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+unsigned char *
+__stdcall
+NdrConformantVaryingArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+unsigned char *
+__stdcall
+NdrVaryingArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+unsigned char *
+__stdcall
+NdrComplexArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+unsigned char *
+__stdcall
+NdrNonConformantStringMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+unsigned char *
+__stdcall
+NdrConformantStringMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+unsigned char *
+__stdcall
+NdrEncapsulatedUnionMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+unsigned char *
+__stdcall
+NdrNonEncapsulatedUnionMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+unsigned char *
+__stdcall
+NdrByteCountPointerMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+unsigned char *
+__stdcall
+NdrXmitOrRepAsMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+unsigned char *
+__stdcall
+NdrUserMarshalMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+unsigned char *
+__stdcall
+NdrInterfacePointerMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+void
+__stdcall
+NdrClientContextMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_CCONTEXT ContextHandle,
+ int fCheck
+ );
+
+
+void
+__stdcall
+NdrServerContextMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_SCONTEXT ContextHandle,
+ NDR_RUNDOWN RundownRoutine
+ );
+
+
+void
+__stdcall
+NdrServerContextNewMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_SCONTEXT ContextHandle,
+ NDR_RUNDOWN RundownRoutine,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+
+
+void
+__stdcall
+NdrSimpleTypeUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ unsigned char FormatChar
+ );
+
+
+unsigned char *
+__stdcall
+NdrCsArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char ** ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+
+unsigned char *
+__stdcall
+NdrCsTagUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char ** ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+
+unsigned char *
+__stdcall
+NdrRangeUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char ** ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+
+void
+__stdcall
+NdrCorrelationInitialize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ void * pMemory,
+ unsigned long CacheSize,
+ unsigned long flags
+ );
+
+
+void
+__stdcall
+NdrCorrelationPass(
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+
+void
+__stdcall
+NdrCorrelationFree(
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+
+unsigned char *
+__stdcall
+NdrPointerUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+
+
+
+unsigned char *
+__stdcall
+NdrSimpleStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+
+unsigned char *
+__stdcall
+NdrConformantStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+
+unsigned char *
+__stdcall
+NdrConformantVaryingStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+
+unsigned char *
+__stdcall
+NdrComplexStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+
+
+
+unsigned char *
+__stdcall
+NdrFixedArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+
+unsigned char *
+__stdcall
+NdrConformantArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+
+unsigned char *
+__stdcall
+NdrConformantVaryingArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+
+unsigned char *
+__stdcall
+NdrVaryingArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+
+unsigned char *
+__stdcall
+NdrComplexArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+
+
+
+unsigned char *
+__stdcall
+NdrNonConformantStringUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+
+unsigned char *
+__stdcall
+NdrConformantStringUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+
+
+
+unsigned char *
+__stdcall
+NdrEncapsulatedUnionUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+
+unsigned char *
+__stdcall
+NdrNonEncapsulatedUnionUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+
+
+
+unsigned char *
+__stdcall
+NdrByteCountPointerUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+
+
+
+unsigned char *
+__stdcall
+NdrXmitOrRepAsUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+
+
+
+unsigned char *
+__stdcall
+NdrUserMarshalUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+
+
+
+unsigned char *
+__stdcall
+NdrInterfacePointerUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+
+
+
+void
+__stdcall
+NdrClientContextUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_CCONTEXT * pContextHandle,
+ RPC_BINDING_HANDLE BindHandle
+ );
+
+
+NDR_SCONTEXT
+__stdcall
+NdrServerContextUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+
+
+
+NDR_SCONTEXT
+__stdcall
+NdrContextHandleInitialize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+NDR_SCONTEXT
+__stdcall
+NdrServerContextNewUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+
+
+void
+__stdcall
+NdrPointerBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+void
+__stdcall
+NdrCsArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+void
+__stdcall
+NdrCsTagBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+void
+__stdcall
+NdrSimpleStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+void
+__stdcall
+NdrConformantStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+void
+__stdcall
+NdrConformantVaryingStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+void
+__stdcall
+NdrComplexStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+void
+__stdcall
+NdrFixedArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+void
+__stdcall
+NdrConformantArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+void
+__stdcall
+NdrConformantVaryingArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+void
+__stdcall
+NdrVaryingArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+void
+__stdcall
+NdrComplexArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+void
+__stdcall
+NdrConformantStringBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+void
+__stdcall
+NdrNonConformantStringBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+void
+__stdcall
+NdrEncapsulatedUnionBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+void
+__stdcall
+NdrNonEncapsulatedUnionBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+void
+__stdcall
+NdrByteCountPointerBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+void
+__stdcall
+NdrXmitOrRepAsBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+void
+__stdcall
+NdrUserMarshalBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+void
+__stdcall
+NdrInterfacePointerBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+void
+__stdcall
+NdrContextHandleSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+
+
+unsigned long
+__stdcall
+NdrPointerMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+unsigned long
+__stdcall
+NdrContextHandleMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+
+unsigned long
+__stdcall
+NdrCsArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+unsigned long
+__stdcall
+NdrCsTagMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+unsigned long
+__stdcall
+NdrSimpleStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+unsigned long
+__stdcall
+NdrConformantStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+unsigned long
+__stdcall
+NdrConformantVaryingStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+unsigned long
+__stdcall
+NdrComplexStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+unsigned long
+__stdcall
+NdrFixedArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+unsigned long
+__stdcall
+NdrConformantArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+unsigned long
+__stdcall
+NdrConformantVaryingArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+unsigned long
+__stdcall
+NdrVaryingArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+unsigned long
+__stdcall
+NdrComplexArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+unsigned long
+__stdcall
+NdrConformantStringMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+unsigned long
+__stdcall
+NdrNonConformantStringMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+unsigned long
+__stdcall
+NdrEncapsulatedUnionMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+unsigned long
+__stdcall
+NdrNonEncapsulatedUnionMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+unsigned long
+__stdcall
+NdrXmitOrRepAsMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+unsigned long
+__stdcall
+NdrUserMarshalMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+unsigned long
+__stdcall
+NdrInterfacePointerMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+
+
+void
+__stdcall
+NdrPointerFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+void
+__stdcall
+NdrCsArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+void
+__stdcall
+NdrSimpleStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+void
+__stdcall
+NdrConformantStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+void
+__stdcall
+NdrConformantVaryingStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+void
+__stdcall
+NdrComplexStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+void
+__stdcall
+NdrFixedArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+void
+__stdcall
+NdrConformantArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+void
+__stdcall
+NdrConformantVaryingArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+void
+__stdcall
+NdrVaryingArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+void
+__stdcall
+NdrComplexArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+void
+__stdcall
+NdrEncapsulatedUnionFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+void
+__stdcall
+NdrNonEncapsulatedUnionFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+void
+__stdcall
+NdrByteCountPointerFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+void
+__stdcall
+NdrXmitOrRepAsFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+void
+__stdcall
+NdrUserMarshalFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+void
+__stdcall
+NdrInterfacePointerFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+
+
+void
+__stdcall
+NdrConvert2(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat,
+ long NumberParams
+ );
+
+
+void
+__stdcall
+NdrConvert(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+unsigned char *
+__stdcall
+NdrUserMarshalSimpleTypeConvert(
+ unsigned long * pFlags,
+ unsigned char * pBuffer,
+ unsigned char FormatChar
+ );
+
+
+
+
+
+
+void
+__stdcall
+NdrClientInitializeNew(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ unsigned int ProcNum
+ );
+
+
+unsigned char *
+__stdcall
+NdrServerInitializeNew(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor
+ );
+
+
+void
+__stdcall
+NdrServerInitializePartial(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ unsigned long RequestedBufferSize
+ );
+
+
+void
+__stdcall
+NdrClientInitialize(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ unsigned int ProcNum
+ );
+
+
+unsigned char *
+__stdcall
+NdrServerInitialize(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor
+ );
+
+
+unsigned char *
+__stdcall
+NdrServerInitializeUnmarshall (
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ PRPC_MESSAGE pRpcMsg
+ );
+
+
+void
+__stdcall
+NdrServerInitializeMarshall (
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+
+unsigned char *
+__stdcall
+NdrGetBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned long BufferLength,
+ RPC_BINDING_HANDLE Handle
+ );
+
+
+unsigned char *
+__stdcall
+NdrNsGetBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned long BufferLength,
+ RPC_BINDING_HANDLE Handle
+ );
+
+
+unsigned char *
+__stdcall
+NdrSendReceive(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pBufferEnd
+ );
+
+
+unsigned char *
+__stdcall
+NdrNsSendReceive(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char * pBufferEnd,
+ RPC_BINDING_HANDLE * pAutoHandle
+ );
+
+
+void
+__stdcall
+NdrFreeBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+
+HRESULT
+__stdcall
+NdrGetDcomProtocolVersion(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ RPC_VERSION * pVersion );
+
+#pragma warning(pop)
+
+
+
+
+
+
+
+CLIENT_CALL_RETURN __cdecl
+NdrClientCall2(
+ PMIDL_STUB_DESC pStubDescriptor,
+ PFORMAT_STRING pFormat,
+ ...
+ );
+
+CLIENT_CALL_RETURN __cdecl
+NdrClientCall(
+ PMIDL_STUB_DESC pStubDescriptor,
+ PFORMAT_STRING pFormat,
+ ...
+ );
+
+CLIENT_CALL_RETURN __cdecl
+NdrAsyncClientCall(
+ PMIDL_STUB_DESC pStubDescriptor,
+ PFORMAT_STRING pFormat,
+ ...
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2612 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+#line 2614 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family
+
+
+CLIENT_CALL_RETURN __cdecl
+NdrDcomAsyncClientCall(
+ PMIDL_STUB_DESC pStubDescriptor,
+ PFORMAT_STRING pFormat,
+ ...
+ );
+
+
+
+
+
+
+
+
+
+
+#line 2636 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+#line 2638 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family
+
+
+
+typedef enum {
+ STUB_UNMARSHAL,
+ STUB_CALL_SERVER,
+ STUB_MARSHAL,
+ STUB_CALL_SERVER_NO_HRESULT
+}STUB_PHASE;
+
+typedef enum {
+ PROXY_CALCSIZE,
+ PROXY_GETBUFFER,
+ PROXY_MARSHAL,
+ PROXY_SENDRECEIVE,
+ PROXY_UNMARSHAL
+}PROXY_PHASE;
+
+struct IRpcStubBuffer;
+
+
+
+
+void
+__stdcall
+NdrAsyncServerCall(
+ PRPC_MESSAGE pRpcMsg
+ );
+
+
+
+long
+__stdcall
+NdrAsyncStubCall(
+ struct IRpcStubBuffer * pThis,
+ struct IRpcChannelBuffer * pChannel,
+ PRPC_MESSAGE pRpcMsg,
+ unsigned long * pdwStubPhase
+ );
+
+#line 2682 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+long
+__stdcall
+NdrDcomAsyncStubCall(
+ struct IRpcStubBuffer * pThis,
+ struct IRpcChannelBuffer * pChannel,
+ PRPC_MESSAGE pRpcMsg,
+ unsigned long * pdwStubPhase
+ );
+
+#line 2699 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family or Games Family
+
+
+
+long
+__stdcall
+NdrStubCall2(
+ void * pThis,
+ void * pChannel,
+ PRPC_MESSAGE pRpcMsg,
+ unsigned long * pdwStubPhase
+ );
+
+
+void
+__stdcall
+NdrServerCall2(
+ PRPC_MESSAGE pRpcMsg
+ );
+
+
+long
+__stdcall
+NdrStubCall (
+ void * pThis,
+ void * pChannel,
+ PRPC_MESSAGE pRpcMsg,
+ unsigned long * pdwStubPhase
+ );
+
+
+void
+__stdcall
+NdrServerCall(
+ PRPC_MESSAGE pRpcMsg
+ );
+
+
+int
+__stdcall
+NdrServerUnmarshall(
+ void * pChannel,
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ PFORMAT_STRING pFormat,
+ void * pParamList
+ );
+
+
+void
+__stdcall
+NdrServerMarshall(
+ void * pThis,
+ void * pChannel,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+
+
+
+RPC_STATUS
+__stdcall
+NdrMapCommAndFaultStatus(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned long * pCommStatus,
+ unsigned long * pFaultStatus,
+ RPC_STATUS Status
+ );
+
+
+
+
+
+
+
+typedef void * RPC_SS_THREAD_HANDLE;
+
+typedef void * __stdcall
+RPC_CLIENT_ALLOC (
+ size_t Size
+ );
+
+typedef void __stdcall
+RPC_CLIENT_FREE (
+ void * Ptr
+ );
+
+
+
+
+
+
+void *
+__stdcall
+RpcSsAllocate (
+ size_t Size
+ );
+
+
+void
+__stdcall
+RpcSsDisableAllocate (
+ void
+ );
+
+
+void
+__stdcall
+RpcSsEnableAllocate (
+ void
+ );
+
+
+void
+__stdcall
+RpcSsFree (
+ void * NodeToFree
+ );
+
+
+RPC_SS_THREAD_HANDLE
+__stdcall
+RpcSsGetThreadHandle (
+ void
+ );
+
+
+void
+__stdcall
+RpcSsSetClientAllocFree (
+ RPC_CLIENT_ALLOC * ClientAlloc,
+ RPC_CLIENT_FREE * ClientFree
+ );
+
+
+void
+__stdcall
+RpcSsSetThreadHandle (
+ RPC_SS_THREAD_HANDLE Id
+ );
+
+
+void
+__stdcall
+RpcSsSwapClientAllocFree (
+ RPC_CLIENT_ALLOC * ClientAlloc,
+ RPC_CLIENT_FREE * ClientFree,
+ RPC_CLIENT_ALLOC * * OldClientAlloc,
+ RPC_CLIENT_FREE * * OldClientFree
+ );
+
+
+
+
+
+
+void *
+__stdcall
+RpcSmAllocate (
+ size_t Size,
+ RPC_STATUS * pStatus
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcSmClientFree (
+ void * pNodeToFree
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcSmDestroyClientContext (
+ void * * ContextHandle
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcSmDisableAllocate (
+ void
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcSmEnableAllocate (
+ void
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcSmFree (
+ void * NodeToFree
+ );
+
+
+RPC_SS_THREAD_HANDLE
+__stdcall
+RpcSmGetThreadHandle (
+ RPC_STATUS * pStatus
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcSmSetClientAllocFree (
+ RPC_CLIENT_ALLOC * ClientAlloc,
+ RPC_CLIENT_FREE * ClientFree
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcSmSetThreadHandle (
+ RPC_SS_THREAD_HANDLE Id
+ );
+
+
+RPC_STATUS
+__stdcall
+RpcSmSwapClientAllocFree (
+ RPC_CLIENT_ALLOC * ClientAlloc,
+ RPC_CLIENT_FREE * ClientFree,
+ RPC_CLIENT_ALLOC * * OldClientAlloc,
+ RPC_CLIENT_FREE * * OldClientFree
+ );
+
+
+
+
+
+
+void
+__stdcall
+NdrRpcSsEnableAllocate(
+ PMIDL_STUB_MESSAGE pMessage );
+
+
+void
+__stdcall
+NdrRpcSsDisableAllocate(
+ PMIDL_STUB_MESSAGE pMessage );
+
+
+void
+__stdcall
+NdrRpcSmSetClientToOsf(
+ PMIDL_STUB_MESSAGE pMessage );
+
+
+void *
+__stdcall
+NdrRpcSmClientAllocate (
+ size_t Size
+ );
+
+
+void
+__stdcall
+NdrRpcSmClientFree (
+ void * NodeToFree
+ );
+
+
+void *
+__stdcall
+NdrRpcSsDefaultAllocate (
+ size_t Size
+ );
+
+
+void
+__stdcall
+NdrRpcSsDefaultFree (
+ void * NodeToFree
+ );
+
+
+
+
+
+
+
+
+
+
+PFULL_PTR_XLAT_TABLES
+__stdcall
+NdrFullPointerXlatInit(
+ unsigned long NumberOfPointers,
+ XLAT_SIDE XlatSide
+ );
+
+
+void
+__stdcall
+NdrFullPointerXlatFree(
+ PFULL_PTR_XLAT_TABLES pXlatTables
+ );
+
+
+
+void *
+__stdcall
+NdrAllocate(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ size_t Len
+ );
+
+
+void
+__stdcall
+NdrClearOutParameters(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat,
+ void * ArgAddr
+ );
+
+
+
+
+
+
+
+void *
+__stdcall
+NdrOleAllocate (
+ size_t Size
+ );
+
+
+void
+__stdcall
+NdrOleFree (
+ void * NodeToFree
+ );
+
+
+
+
+
+#line 3048 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3081 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+#line 3083 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+#line 3084 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+#line 3089 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+#line 3091 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+#line 3092 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+
+
+
+#line 3101 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+
+
+
+
+#line 3111 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+#line 3117 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+#line 3119 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+
+
+
+typedef struct _NDR_USER_MARSHAL_INFO_LEVEL1
+{
+ void * Buffer;
+ unsigned long BufferSize;
+ void *(__stdcall * pfnAllocate)(size_t);
+ void (__stdcall * pfnFree)(void *);
+ struct IRpcChannelBuffer * pRpcChannelBuffer;
+ ULONG_PTR Reserved[5];
+} NDR_USER_MARSHAL_INFO_LEVEL1;
+
+
+
+#pragma warning(push)
+#line 3138 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+#pragma warning(disable:4201)
+#line 3140 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+typedef struct _NDR_USER_MARSHAL_INFO
+{
+ unsigned long InformationLevel;
+ union {
+ NDR_USER_MARSHAL_INFO_LEVEL1 Level1;
+ } ;
+} NDR_USER_MARSHAL_INFO;
+
+
+
+#pragma warning(pop)
+
+
+#line 3155 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+#line 3156 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+RPC_STATUS
+__stdcall
+NdrGetUserMarshalInfo (
+ unsigned long * pFlags,
+ unsigned long InformationLevel,
+ NDR_USER_MARSHAL_INFO * pMarshalInfo
+ );
+
+
+
+
+RPC_STATUS __stdcall
+NdrCreateServerInterfaceFromStub(
+ struct IRpcStubBuffer* pStub,
+ RPC_SERVER_INTERFACE *pServerIf );
+
+
+
+
+CLIENT_CALL_RETURN __cdecl
+NdrClientCall3(
+ MIDL_STUBLESS_PROXY_INFO *pProxyInfo,
+ unsigned long nProcNum,
+ void * pReturnValue,
+ ...
+ );
+
+CLIENT_CALL_RETURN __cdecl
+Ndr64AsyncClientCall(
+ MIDL_STUBLESS_PROXY_INFO *pProxyInfo,
+ unsigned long nProcNum,
+ void * pReturnValue,
+ ...
+ );
+
+#line 3194 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family
+
+
+CLIENT_CALL_RETURN __cdecl
+Ndr64DcomAsyncClientCall(
+ MIDL_STUBLESS_PROXY_INFO *pProxyInfo,
+ unsigned long nProcNum,
+ void * pReturnValue,
+ ...
+ );
+
+
+void
+__stdcall
+Ndr64AsyncServerCall(
+ PRPC_MESSAGE pRpcMsg
+ );
+
+#line 3215 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family
+
+
+struct IRpcStubBuffer;
+
+
+void
+__stdcall
+Ndr64AsyncServerCall64(
+ PRPC_MESSAGE pRpcMsg
+ );
+
+
+void
+__stdcall
+Ndr64AsyncServerCallAll(
+ PRPC_MESSAGE pRpcMsg
+ );
+
+
+long
+__stdcall
+Ndr64AsyncStubCall(
+ struct IRpcStubBuffer * pThis,
+ struct IRpcChannelBuffer * pChannel,
+ PRPC_MESSAGE pRpcMsg,
+ unsigned long * pdwStubPhase
+ );
+
+#line 3247 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+long
+__stdcall
+Ndr64DcomAsyncStubCall(
+ struct IRpcStubBuffer * pThis,
+ struct IRpcChannelBuffer * pChannel,
+ PRPC_MESSAGE pRpcMsg,
+ unsigned long * pdwStubPhase
+ );
+
+#line 3264 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family
+
+
+
+long
+__stdcall
+NdrStubCall3 (
+ void * pThis,
+ void * pChannel,
+ PRPC_MESSAGE pRpcMsg,
+ unsigned long * pdwStubPhase
+ );
+
+
+void
+__stdcall
+NdrServerCallAll(
+ PRPC_MESSAGE pRpcMsg
+ );
+
+
+void
+__stdcall
+NdrServerCallNdr64(
+ PRPC_MESSAGE pRpcMsg
+ );
+
+
+
+void
+__stdcall
+NdrServerCall3(
+ PRPC_MESSAGE pRpcMsg
+ );
+
+
+
+
+void
+__stdcall
+NdrPartialIgnoreClientMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ void * pMemory
+ );
+
+
+void
+__stdcall
+NdrPartialIgnoreServerUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ void ** ppMemory
+ );
+
+
+void
+__stdcall
+NdrPartialIgnoreClientBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ void * pMemory
+ );
+
+
+void
+__stdcall
+NdrPartialIgnoreServerInitialize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ void ** ppMemory,
+ PFORMAT_STRING pFormat
+ );
+
+
+void __stdcall
+RpcUserFree( handle_t AsyncHandle, void * pBuffer );
+
+#line 3341 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+#pragma endregion
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(disable:4103)
+
+#pragma pack(pop)
+
+
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+
+
+#line 36 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+#line 37 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\poppack.h"
+#pragma external_header(pop)
+#line 3348 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+#line 3350 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+
+
+#pragma warning(pop)
+#line 3354 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\rpcndr.h"
+#pragma external_header(pop)
+#line 23 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpstypes.h"
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 35 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpstypes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwptypes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 35 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwptypes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 35 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypesbase.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 35 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypesbase.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 58 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+
+
+
+
+
+
+
+
+#line 67 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(pop)
+#line 49 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypesbase.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 67 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypesbase.h"
+
+#pragma warning(push)
+#pragma warning(disable:4820)
+#line 71 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypesbase.h"
+
+
+extern RPC_IF_HANDLE __MIDL_itf_wtypesbase_0000_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_wtypesbase_0000_0000_v0_0_s_ifspec;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 124 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypesbase.h"
+
+typedef WCHAR OLECHAR;
+
+typedef OLECHAR *LPOLESTR;
+
+typedef const OLECHAR *LPCOLESTR;
+
+
+
+
+
+
+
+
+
+#line 140 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypesbase.h"
+
+
+
+
+
+
+
+
+
+
+typedef unsigned char UCHAR;
+
+typedef short SHORT;
+
+typedef unsigned short USHORT;
+
+typedef DWORD ULONG;
+
+typedef double DOUBLE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 190 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypesbase.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _SYSTEMTIME
+ {
+ WORD wYear;
+ WORD wMonth;
+ WORD wDayOfWeek;
+ WORD wDay;
+ WORD wHour;
+ WORD wMinute;
+ WORD wSecond;
+ WORD wMilliseconds;
+ } SYSTEMTIME;
+
+typedef struct _SYSTEMTIME *PSYSTEMTIME;
+
+typedef struct _SYSTEMTIME *LPSYSTEMTIME;
+
+#line 223 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypesbase.h"
+
+
+typedef struct _SECURITY_ATTRIBUTES
+ {
+ DWORD nLength;
+ LPVOID lpSecurityDescriptor;
+ BOOL bInheritHandle;
+ } SECURITY_ATTRIBUTES;
+
+typedef struct _SECURITY_ATTRIBUTES *PSECURITY_ATTRIBUTES;
+
+typedef struct _SECURITY_ATTRIBUTES *LPSECURITY_ATTRIBUTES;
+
+#line 237 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypesbase.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 270 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypesbase.h"
+typedef struct _COAUTHIDENTITY
+ {
+ USHORT *User;
+ ULONG UserLength;
+ USHORT *Domain;
+ ULONG DomainLength;
+ USHORT *Password;
+ ULONG PasswordLength;
+ ULONG Flags;
+ } COAUTHIDENTITY;
+
+typedef struct _COAUTHINFO
+ {
+ DWORD dwAuthnSvc;
+ DWORD dwAuthzSvc;
+ LPWSTR pwszServerPrincName;
+ DWORD dwAuthnLevel;
+ DWORD dwImpersonationLevel;
+ COAUTHIDENTITY *pAuthIdentityData;
+ DWORD dwCapabilities;
+ } COAUTHINFO;
+
+typedef LONG SCODE;
+
+typedef SCODE *PSCODE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 324 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypesbase.h"
+typedef
+enum tagMEMCTX
+ {
+ MEMCTX_TASK = 1,
+ MEMCTX_SHARED = 2,
+ MEMCTX_MACSYSTEM = 3,
+ MEMCTX_UNKNOWN = -1,
+ MEMCTX_SAME = -2
+ } MEMCTX;
+
+
+
+
+#line 338 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypesbase.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 356 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypesbase.h"
+
+
+
+
+
+
+
+
+#line 365 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypesbase.h"
+typedef
+enum tagCLSCTX
+ {
+ CLSCTX_INPROC_SERVER = 0x1,
+ CLSCTX_INPROC_HANDLER = 0x2,
+ CLSCTX_LOCAL_SERVER = 0x4,
+ CLSCTX_INPROC_SERVER16 = 0x8,
+ CLSCTX_REMOTE_SERVER = 0x10,
+ CLSCTX_INPROC_HANDLER16 = 0x20,
+ CLSCTX_RESERVED1 = 0x40,
+ CLSCTX_RESERVED2 = 0x80,
+ CLSCTX_RESERVED3 = 0x100,
+ CLSCTX_RESERVED4 = 0x200,
+ CLSCTX_NO_CODE_DOWNLOAD = 0x400,
+ CLSCTX_RESERVED5 = 0x800,
+ CLSCTX_NO_CUSTOM_MARSHAL = 0x1000,
+ CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000,
+ CLSCTX_NO_FAILURE_LOG = 0x4000,
+ CLSCTX_DISABLE_AAA = 0x8000,
+ CLSCTX_ENABLE_AAA = 0x10000,
+ CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000,
+ CLSCTX_ACTIVATE_X86_SERVER = 0x40000,
+ CLSCTX_ACTIVATE_32_BIT_SERVER = CLSCTX_ACTIVATE_X86_SERVER,
+ CLSCTX_ACTIVATE_64_BIT_SERVER = 0x80000,
+ CLSCTX_ENABLE_CLOAKING = 0x100000,
+ CLSCTX_APPCONTAINER = 0x400000,
+ CLSCTX_ACTIVATE_AAA_AS_IU = 0x800000,
+ CLSCTX_RESERVED6 = 0x1000000,
+ CLSCTX_ACTIVATE_ARM32_SERVER = 0x2000000,
+ CLSCTX_ALLOW_LOWER_TRUST_REGISTRATION = 0x4000000,
+ CLSCTX_PS_DLL = 0x80000000
+ } CLSCTX;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+enum tagMSHLFLAGS
+ {
+ MSHLFLAGS_NORMAL = 0,
+ MSHLFLAGS_TABLESTRONG = 1,
+ MSHLFLAGS_TABLEWEAK = 2,
+ MSHLFLAGS_NOPING = 4,
+ MSHLFLAGS_RESERVED1 = 8,
+ MSHLFLAGS_RESERVED2 = 16,
+ MSHLFLAGS_RESERVED3 = 32,
+ MSHLFLAGS_RESERVED4 = 64
+ } MSHLFLAGS;
+
+typedef
+enum tagMSHCTX
+ {
+ MSHCTX_LOCAL = 0,
+ MSHCTX_NOSHAREDMEM = 1,
+ MSHCTX_DIFFERENTMACHINE = 2,
+ MSHCTX_INPROC = 3,
+ MSHCTX_CROSSCTX = 4,
+ MSHCTX_CONTAINER = 5
+ } MSHCTX;
+
+typedef struct _BYTE_BLOB
+ {
+ ULONG clSize;
+ byte abData[ 1 ];
+ } BYTE_BLOB;
+
+typedef BYTE_BLOB *UP_BYTE_BLOB;
+
+typedef struct _WORD_BLOB
+ {
+ ULONG clSize;
+ unsigned short asData[ 1 ];
+ } WORD_BLOB;
+
+typedef WORD_BLOB *UP_WORD_BLOB;
+
+typedef struct _DWORD_BLOB
+ {
+ ULONG clSize;
+ ULONG alData[ 1 ];
+ } DWORD_BLOB;
+
+typedef DWORD_BLOB *UP_DWORD_BLOB;
+
+typedef struct _FLAGGED_BYTE_BLOB
+ {
+ ULONG fFlags;
+ ULONG clSize;
+ byte abData[ 1 ];
+ } FLAGGED_BYTE_BLOB;
+
+typedef FLAGGED_BYTE_BLOB *UP_FLAGGED_BYTE_BLOB;
+
+typedef struct _FLAGGED_WORD_BLOB
+ {
+ ULONG fFlags;
+ ULONG clSize;
+ unsigned short asData[ 1 ];
+ } FLAGGED_WORD_BLOB;
+
+typedef FLAGGED_WORD_BLOB *UP_FLAGGED_WORD_BLOB;
+
+typedef struct _BYTE_SIZEDARR
+ {
+ ULONG clSize;
+ byte *pData;
+ } BYTE_SIZEDARR;
+
+typedef struct _SHORT_SIZEDARR
+ {
+ ULONG clSize;
+ unsigned short *pData;
+ } WORD_SIZEDARR;
+
+typedef struct _LONG_SIZEDARR
+ {
+ ULONG clSize;
+ ULONG *pData;
+ } DWORD_SIZEDARR;
+
+typedef struct _HYPER_SIZEDARR
+ {
+ ULONG clSize;
+ __int64 *pData;
+ } HYPER_SIZEDARR;
+
+
+
+extern RPC_IF_HANDLE IWinTypesBase_v0_1_c_ifspec;
+extern RPC_IF_HANDLE IWinTypesBase_v0_1_s_ifspec;
+#line 515 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypesbase.h"
+
+
+
+
+typedef boolean BOOLEAN;
+
+
+
+
+
+typedef struct tagBLOB
+ {
+ ULONG cbSize;
+ BYTE *pBlobData;
+ } BLOB;
+
+typedef struct tagBLOB *LPBLOB;
+
+#line 534 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypesbase.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(pop)
+#line 568 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypesbase.h"
+
+
+extern RPC_IF_HANDLE __MIDL_itf_wtypesbase_0000_0001_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_wtypesbase_0000_0001_v0_0_s_ifspec;
+
+
+
+
+
+
+
+
+
+#line 582 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypesbase.h"
+
+
+#pragma external_header(pop)
+#line 48 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 66 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+
+#pragma warning(push)
+#pragma warning(disable:4820)
+#line 70 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+
+
+extern RPC_IF_HANDLE __MIDL_itf_wtypes_0000_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_wtypes_0000_0000_v0_0_s_ifspec;
+
+
+
+
+
+
+
+typedef struct tagRemHGLOBAL
+ {
+ LONG fNullHGlobal;
+ ULONG cbData;
+ byte data[ 1 ];
+ } RemHGLOBAL;
+
+typedef struct tagRemHMETAFILEPICT
+ {
+ LONG mm;
+ LONG xExt;
+ LONG yExt;
+ ULONG cbData;
+ byte data[ 1 ];
+ } RemHMETAFILEPICT;
+
+typedef struct tagRemHENHMETAFILE
+ {
+ ULONG cbData;
+ byte data[ 1 ];
+ } RemHENHMETAFILE;
+
+typedef struct tagRemHBITMAP
+ {
+ ULONG cbData;
+ byte data[ 1 ];
+ } RemHBITMAP;
+
+typedef struct tagRemHPALETTE
+ {
+ ULONG cbData;
+ byte data[ 1 ];
+ } RemHPALETTE;
+
+typedef struct tagRemBRUSH
+ {
+ ULONG cbData;
+ byte data[ 1 ];
+ } RemHBRUSH;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 293 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+
+
+typedef struct tagPALETTEENTRY
+ {
+ BYTE peRed;
+ BYTE peGreen;
+ BYTE peBlue;
+ BYTE peFlags;
+ } PALETTEENTRY;
+
+typedef struct tagPALETTEENTRY *PPALETTEENTRY;
+
+typedef struct tagPALETTEENTRY *LPPALETTEENTRY;
+
+#line 308 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+
+
+typedef struct tagLOGPALETTE
+ {
+ WORD palVersion;
+ WORD palNumEntries;
+ PALETTEENTRY palPalEntry[ 1 ];
+ } LOGPALETTE;
+
+typedef struct tagLOGPALETTE *PLOGPALETTE;
+
+typedef struct tagLOGPALETTE *LPLOGPALETTE;
+
+#line 322 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 344 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+
+
+
+
+#line 349 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+
+
+
+#line 353 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+typedef
+enum tagDVASPECT
+ {
+ DVASPECT_CONTENT = 1,
+ DVASPECT_THUMBNAIL = 2,
+ DVASPECT_ICON = 4,
+ DVASPECT_DOCPRINT = 8
+ } DVASPECT;
+
+typedef
+enum tagSTGC
+ {
+ STGC_DEFAULT = 0,
+ STGC_OVERWRITE = 1,
+ STGC_ONLYIFCURRENT = 2,
+ STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4,
+ STGC_CONSOLIDATE = 8
+ } STGC;
+
+typedef
+enum tagSTGMOVE
+ {
+ STGMOVE_MOVE = 0,
+ STGMOVE_COPY = 1,
+ STGMOVE_SHALLOWCOPY = 2
+ } STGMOVE;
+
+typedef
+enum tagSTATFLAG
+ {
+ STATFLAG_DEFAULT = 0,
+ STATFLAG_NONAME = 1,
+ STATFLAG_NOOPEN = 2
+ } STATFLAG;
+
+typedef void *HCONTEXT;
+
+
+
+typedef DWORD LCID;
+
+#line 395 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+
+
+typedef USHORT LANGID;
+
+#line 400 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+
+
+
+
+
+
+typedef struct _userCLIPFORMAT
+ {
+ LONG fContext;
+ union __MIDL_IWinTypes_0001
+ {
+ DWORD dwValue;
+ wchar_t *pwszName;
+ } u;
+ } userCLIPFORMAT;
+
+typedef userCLIPFORMAT *wireCLIPFORMAT;
+
+typedef WORD CLIPFORMAT;
+
+typedef struct _GDI_NONREMOTE
+ {
+ LONG fContext;
+ union __MIDL_IWinTypes_0002
+ {
+ LONG hInproc;
+ DWORD_BLOB *hRemote;
+ } u;
+ } GDI_NONREMOTE;
+
+typedef struct _userHGLOBAL
+ {
+ LONG fContext;
+ union __MIDL_IWinTypes_0003
+ {
+ LONG hInproc;
+ FLAGGED_BYTE_BLOB *hRemote;
+ __int64 hInproc64;
+ } u;
+ } userHGLOBAL;
+
+typedef userHGLOBAL *wireHGLOBAL;
+
+typedef struct _userHMETAFILE
+ {
+ LONG fContext;
+ union __MIDL_IWinTypes_0004
+ {
+ LONG hInproc;
+ BYTE_BLOB *hRemote;
+ __int64 hInproc64;
+ } u;
+ } userHMETAFILE;
+
+typedef struct _remoteMETAFILEPICT
+ {
+ LONG mm;
+ LONG xExt;
+ LONG yExt;
+ userHMETAFILE *hMF;
+ } remoteMETAFILEPICT;
+
+typedef struct _userHMETAFILEPICT
+ {
+ LONG fContext;
+ union __MIDL_IWinTypes_0005
+ {
+ LONG hInproc;
+ remoteMETAFILEPICT *hRemote;
+ __int64 hInproc64;
+ } u;
+ } userHMETAFILEPICT;
+
+typedef struct _userHENHMETAFILE
+ {
+ LONG fContext;
+ union __MIDL_IWinTypes_0006
+ {
+ LONG hInproc;
+ BYTE_BLOB *hRemote;
+ __int64 hInproc64;
+ } u;
+ } userHENHMETAFILE;
+
+typedef struct _userBITMAP
+ {
+ LONG bmType;
+ LONG bmWidth;
+ LONG bmHeight;
+ LONG bmWidthBytes;
+ WORD bmPlanes;
+ WORD bmBitsPixel;
+ ULONG cbSize;
+ byte pBuffer[ 1 ];
+ } userBITMAP;
+
+typedef struct _userHBITMAP
+ {
+ LONG fContext;
+ union __MIDL_IWinTypes_0007
+ {
+ LONG hInproc;
+ userBITMAP *hRemote;
+ __int64 hInproc64;
+ } u;
+ } userHBITMAP;
+
+typedef struct _userHPALETTE
+ {
+ LONG fContext;
+ union __MIDL_IWinTypes_0008
+ {
+ LONG hInproc;
+ LOGPALETTE *hRemote;
+ __int64 hInproc64;
+ } u;
+ } userHPALETTE;
+
+typedef struct _RemotableHandle
+ {
+ LONG fContext;
+ union __MIDL_IWinTypes_0009
+ {
+ LONG hInproc;
+ LONG hRemote;
+ } u;
+ } RemotableHandle;
+
+typedef RemotableHandle *wireHWND;
+
+typedef RemotableHandle *wireHMENU;
+
+typedef RemotableHandle *wireHACCEL;
+
+typedef RemotableHandle *wireHBRUSH;
+
+typedef RemotableHandle *wireHFONT;
+
+typedef RemotableHandle *wireHDC;
+
+typedef RemotableHandle *wireHICON;
+
+typedef RemotableHandle *wireHRGN;
+
+typedef RemotableHandle *wireHMONITOR;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 571 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+
+
+typedef struct tagTEXTMETRICW
+ {
+ LONG tmHeight;
+ LONG tmAscent;
+ LONG tmDescent;
+ LONG tmInternalLeading;
+ LONG tmExternalLeading;
+ LONG tmAveCharWidth;
+ LONG tmMaxCharWidth;
+ LONG tmWeight;
+ LONG tmOverhang;
+ LONG tmDigitizedAspectX;
+ LONG tmDigitizedAspectY;
+ WCHAR tmFirstChar;
+ WCHAR tmLastChar;
+ WCHAR tmDefaultChar;
+ WCHAR tmBreakChar;
+ BYTE tmItalic;
+ BYTE tmUnderlined;
+ BYTE tmStruckOut;
+ BYTE tmPitchAndFamily;
+ BYTE tmCharSet;
+ } TEXTMETRICW;
+
+typedef struct tagTEXTMETRICW *PTEXTMETRICW;
+
+typedef struct tagTEXTMETRICW *LPTEXTMETRICW;
+
+#line 602 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef userHBITMAP *wireHBITMAP;
+
+typedef userHPALETTE *wireHPALETTE;
+
+typedef userHENHMETAFILE *wireHENHMETAFILE;
+
+typedef userHMETAFILE *wireHMETAFILE;
+
+typedef userHMETAFILEPICT *wireHMETAFILEPICT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 646 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+typedef void *HMETAFILEPICT;
+
+
+
+extern RPC_IF_HANDLE IWinTypes_v0_1_c_ifspec;
+extern RPC_IF_HANDLE IWinTypes_v0_1_s_ifspec;
+#line 653 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+
+
+
+
+
+
+#pragma warning(push)
+#line 661 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+#pragma warning(disable:4201)
+#line 663 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+typedef double DATE;
+
+
+
+
+
+
+
+
+
+
+
+
+#line 677 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+
+typedef union tagCY {
+ struct {
+ ULONG Lo;
+ LONG Hi;
+ } ;
+ LONGLONG int64;
+} CY;
+#line 686 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+#line 687 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+typedef CY *LPCY;
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 702 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+
+typedef struct tagDEC {
+ USHORT wReserved;
+ union {
+ struct {
+ BYTE scale;
+ BYTE sign;
+ } ;
+ USHORT signscale;
+ } ;
+ ULONG Hi32;
+ union {
+ struct {
+ ULONG Lo32;
+ ULONG Mid32;
+ } ;
+ ULONGLONG Lo64;
+ } ;
+} DECIMAL;
+
+
+
+#line 725 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+typedef DECIMAL *LPDECIMAL;
+
+
+
+#pragma warning(pop)
+
+
+#line 733 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+#line 734 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+typedef FLAGGED_WORD_BLOB *wireBSTR;
+
+
+typedef OLECHAR *BSTR;
+
+
+
+#line 742 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+typedef BSTR *LPBSTR;
+
+
+typedef short VARIANT_BOOL;
+
+
+
+
+
+
+typedef struct tagBSTRBLOB
+ {
+ ULONG cbSize;
+ BYTE *pData;
+ } BSTRBLOB;
+
+typedef struct tagBSTRBLOB *LPBSTRBLOB;
+
+#line 761 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+
+
+typedef struct tagCLIPDATA
+ {
+ ULONG cbSize;
+ LONG ulClipFmt;
+ BYTE *pClipData;
+ } CLIPDATA;
+
+
+
+typedef unsigned short VARTYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+enum VARENUM
+ {
+ VT_EMPTY = 0,
+ VT_NULL = 1,
+ VT_I2 = 2,
+ VT_I4 = 3,
+ VT_R4 = 4,
+ VT_R8 = 5,
+ VT_CY = 6,
+ VT_DATE = 7,
+ VT_BSTR = 8,
+ VT_DISPATCH = 9,
+ VT_ERROR = 10,
+ VT_BOOL = 11,
+ VT_VARIANT = 12,
+ VT_UNKNOWN = 13,
+ VT_DECIMAL = 14,
+ VT_I1 = 16,
+ VT_UI1 = 17,
+ VT_UI2 = 18,
+ VT_UI4 = 19,
+ VT_I8 = 20,
+ VT_UI8 = 21,
+ VT_INT = 22,
+ VT_UINT = 23,
+ VT_VOID = 24,
+ VT_HRESULT = 25,
+ VT_PTR = 26,
+ VT_SAFEARRAY = 27,
+ VT_CARRAY = 28,
+ VT_USERDEFINED = 29,
+ VT_LPSTR = 30,
+ VT_LPWSTR = 31,
+ VT_RECORD = 36,
+ VT_INT_PTR = 37,
+ VT_UINT_PTR = 38,
+ VT_FILETIME = 64,
+ VT_BLOB = 65,
+ VT_STREAM = 66,
+ VT_STORAGE = 67,
+ VT_STREAMED_OBJECT = 68,
+ VT_STORED_OBJECT = 69,
+ VT_BLOB_OBJECT = 70,
+ VT_CF = 71,
+ VT_CLSID = 72,
+ VT_VERSIONED_STREAM = 73,
+ VT_BSTR_BLOB = 0xfff,
+ VT_VECTOR = 0x1000,
+ VT_ARRAY = 0x2000,
+ VT_BYREF = 0x4000,
+ VT_RESERVED = 0x8000,
+ VT_ILLEGAL = 0xffff,
+ VT_ILLEGALMASKED = 0xfff,
+ VT_TYPEMASK = 0xfff
+ } ;
+typedef ULONG PROPID;
+
+
+
+typedef struct _tagpropertykey
+ {
+ GUID fmtid;
+ DWORD pid;
+ } PROPERTYKEY;
+
+#line 899 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+typedef struct tagCSPLATFORM
+ {
+ DWORD dwPlatformId;
+ DWORD dwVersionHi;
+ DWORD dwVersionLo;
+ DWORD dwProcessorArch;
+ } CSPLATFORM;
+
+typedef struct tagQUERYCONTEXT
+ {
+ DWORD dwContext;
+ CSPLATFORM Platform;
+ LCID Locale;
+ DWORD dwVersionHi;
+ DWORD dwVersionLo;
+ } QUERYCONTEXT;
+
+typedef
+enum tagTYSPEC
+ {
+ TYSPEC_CLSID = 0,
+ TYSPEC_FILEEXT = ( TYSPEC_CLSID + 1 ) ,
+ TYSPEC_MIMETYPE = ( TYSPEC_FILEEXT + 1 ) ,
+ TYSPEC_FILENAME = ( TYSPEC_MIMETYPE + 1 ) ,
+ TYSPEC_PROGID = ( TYSPEC_FILENAME + 1 ) ,
+ TYSPEC_PACKAGENAME = ( TYSPEC_PROGID + 1 ) ,
+ TYSPEC_OBJECTID = ( TYSPEC_PACKAGENAME + 1 )
+ } TYSPEC;
+
+typedef struct __MIDL___MIDL_itf_wtypes_0000_0001_0001
+ {
+ DWORD tyspec;
+ union __MIDL___MIDL_itf_wtypes_0000_0001_0005
+ {
+ CLSID clsid;
+ LPOLESTR pFileExt;
+ LPOLESTR pMimeType;
+ LPOLESTR pProgId;
+ LPOLESTR pFileName;
+ struct
+ {
+ LPOLESTR pPackageName;
+ GUID PolicyId;
+ } ByName;
+ struct
+ {
+ GUID ObjectId;
+ GUID PolicyId;
+ } ByObjectId;
+ } tagged_union;
+ } uCLSSPEC;
+
+
+#pragma warning(pop)
+#line 954 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+
+
+extern RPC_IF_HANDLE __MIDL_itf_wtypes_0000_0001_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_wtypes_0000_0001_v0_0_s_ifspec;
+
+
+
+
+
+
+
+
+
+#line 968 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\wtypes.h"
+
+
+#pragma external_header(pop)
+#line 48 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwptypes.h"
+
+
+
+
+
+
+
+
+
+
+#pragma region Desktop Family or AppRuntime Package
+
+
+
+#pragma warning(push)
+#line 64 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwptypes.h"
+#pragma warning(disable:4201)
+#line 66 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwptypes.h"
+
+
+
+
+
+
+
+
+
+
+typedef
+enum FWP_DIRECTION_
+ {
+ FWP_DIRECTION_OUTBOUND = 0,
+ FWP_DIRECTION_INBOUND = ( FWP_DIRECTION_OUTBOUND + 1 ) ,
+ FWP_DIRECTION_MAX = ( FWP_DIRECTION_INBOUND + 1 )
+ } FWP_DIRECTION;
+
+typedef
+enum FWP_IP_VERSION_
+ {
+ FWP_IP_VERSION_V4 = 0,
+ FWP_IP_VERSION_V6 = ( FWP_IP_VERSION_V4 + 1 ) ,
+ FWP_IP_VERSION_NONE = ( FWP_IP_VERSION_V6 + 1 ) ,
+ FWP_IP_VERSION_MAX = ( FWP_IP_VERSION_NONE + 1 )
+ } FWP_IP_VERSION;
+
+typedef
+enum FWP_NE_FAMILY_
+ {
+ FWP_AF_INET = FWP_IP_VERSION_V4,
+ FWP_AF_INET6 = FWP_IP_VERSION_V6,
+ FWP_AF_ETHER = FWP_IP_VERSION_NONE,
+ FWP_AF_NONE = ( FWP_AF_ETHER + 1 )
+ } FWP_AF;
+
+typedef
+enum FWP_ETHER_ENCAP_METHOD_
+ {
+ FWP_ETHER_ENCAP_METHOD_ETHER_V2 = 0,
+ FWP_ETHER_ENCAP_METHOD_SNAP = 1,
+ FWP_ETHER_ENCAP_METHOD_SNAP_W_OUI_ZERO = 3
+ } FWP_ETHER_ENCAP_METHOD;
+
+typedef
+enum FWP_DATA_TYPE_
+ {
+ FWP_EMPTY = 0,
+ FWP_UINT8 = ( FWP_EMPTY + 1 ) ,
+ FWP_UINT16 = ( FWP_UINT8 + 1 ) ,
+ FWP_UINT32 = ( FWP_UINT16 + 1 ) ,
+ FWP_UINT64 = ( FWP_UINT32 + 1 ) ,
+ FWP_INT8 = ( FWP_UINT64 + 1 ) ,
+ FWP_INT16 = ( FWP_INT8 + 1 ) ,
+ FWP_INT32 = ( FWP_INT16 + 1 ) ,
+ FWP_INT64 = ( FWP_INT32 + 1 ) ,
+ FWP_FLOAT = ( FWP_INT64 + 1 ) ,
+ FWP_DOUBLE = ( FWP_FLOAT + 1 ) ,
+ FWP_BYTE_ARRAY16_TYPE = ( FWP_DOUBLE + 1 ) ,
+ FWP_BYTE_BLOB_TYPE = ( FWP_BYTE_ARRAY16_TYPE + 1 ) ,
+ FWP_SID = ( FWP_BYTE_BLOB_TYPE + 1 ) ,
+ FWP_SECURITY_DESCRIPTOR_TYPE = ( FWP_SID + 1 ) ,
+ FWP_TOKEN_INFORMATION_TYPE = ( FWP_SECURITY_DESCRIPTOR_TYPE + 1 ) ,
+ FWP_TOKEN_ACCESS_INFORMATION_TYPE = ( FWP_TOKEN_INFORMATION_TYPE + 1 ) ,
+ FWP_UNICODE_STRING_TYPE = ( FWP_TOKEN_ACCESS_INFORMATION_TYPE + 1 ) ,
+ FWP_BYTE_ARRAY6_TYPE = ( FWP_UNICODE_STRING_TYPE + 1 ) ,
+ FWP_SINGLE_DATA_TYPE_MAX = 0xff,
+ FWP_V4_ADDR_MASK = ( FWP_SINGLE_DATA_TYPE_MAX + 1 ) ,
+ FWP_V6_ADDR_MASK = ( FWP_V4_ADDR_MASK + 1 ) ,
+ FWP_RANGE_TYPE = ( FWP_V6_ADDR_MASK + 1 ) ,
+ FWP_DATA_TYPE_MAX = ( FWP_RANGE_TYPE + 1 )
+ } FWP_DATA_TYPE;
+
+
+typedef struct FWP_BYTE_ARRAY6_
+ {
+ UINT8 byteArray6[ 6 ];
+ } FWP_BYTE_ARRAY6;
+
+
+typedef struct FWP_BYTE_ARRAY16_
+ {
+ UINT8 byteArray16[ 16 ];
+ } FWP_BYTE_ARRAY16;
+
+typedef struct FWP_BYTE_BLOB_
+ {
+ UINT32 size;
+ UINT8 *data;
+ } FWP_BYTE_BLOB;
+
+typedef struct FWP_TOKEN_INFORMATION_
+ {
+ ULONG sidCount;
+ PSID_AND_ATTRIBUTES sids;
+ ULONG restrictedSidCount;
+ PSID_AND_ATTRIBUTES restrictedSids;
+ } FWP_TOKEN_INFORMATION;
+
+typedef struct FWP_VALUE0_
+ {
+ FWP_DATA_TYPE type;
+ union
+ {
+
+ UINT8 uint8;
+ UINT16 uint16;
+ UINT32 uint32;
+ UINT64 *uint64;
+ INT8 int8;
+ INT16 int16;
+ INT32 int32;
+ INT64 *int64;
+ float float32;
+ double *double64;
+ FWP_BYTE_ARRAY16 *byteArray16;
+ FWP_BYTE_BLOB *byteBlob;
+ SID *sid;
+ FWP_BYTE_BLOB *sd;
+ FWP_TOKEN_INFORMATION *tokenInformation;
+ FWP_BYTE_BLOB *tokenAccessInformation;
+ LPWSTR unicodeString;
+ FWP_BYTE_ARRAY6 *byteArray6;
+ } ;
+ } FWP_VALUE0;
+
+typedef
+enum FWP_MATCH_TYPE_
+ {
+ FWP_MATCH_EQUAL = 0,
+ FWP_MATCH_GREATER = ( FWP_MATCH_EQUAL + 1 ) ,
+ FWP_MATCH_LESS = ( FWP_MATCH_GREATER + 1 ) ,
+ FWP_MATCH_GREATER_OR_EQUAL = ( FWP_MATCH_LESS + 1 ) ,
+ FWP_MATCH_LESS_OR_EQUAL = ( FWP_MATCH_GREATER_OR_EQUAL + 1 ) ,
+ FWP_MATCH_RANGE = ( FWP_MATCH_LESS_OR_EQUAL + 1 ) ,
+ FWP_MATCH_FLAGS_ALL_SET = ( FWP_MATCH_RANGE + 1 ) ,
+ FWP_MATCH_FLAGS_ANY_SET = ( FWP_MATCH_FLAGS_ALL_SET + 1 ) ,
+ FWP_MATCH_FLAGS_NONE_SET = ( FWP_MATCH_FLAGS_ANY_SET + 1 ) ,
+ FWP_MATCH_EQUAL_CASE_INSENSITIVE = ( FWP_MATCH_FLAGS_NONE_SET + 1 ) ,
+ FWP_MATCH_NOT_EQUAL = ( FWP_MATCH_EQUAL_CASE_INSENSITIVE + 1 ) ,
+ FWP_MATCH_PREFIX = ( FWP_MATCH_NOT_EQUAL + 1 ) ,
+ FWP_MATCH_NOT_PREFIX = ( FWP_MATCH_PREFIX + 1 ) ,
+ FWP_MATCH_TYPE_MAX = ( FWP_MATCH_NOT_PREFIX + 1 )
+ } FWP_MATCH_TYPE;
+
+typedef struct FWP_V4_ADDR_AND_MASK_
+ {
+ UINT32 addr;
+ UINT32 mask;
+ } FWP_V4_ADDR_AND_MASK;
+
+
+typedef struct FWP_V6_ADDR_AND_MASK_
+ {
+ UINT8 addr[ 16 ];
+ UINT8 prefixLength;
+ } FWP_V6_ADDR_AND_MASK;
+
+typedef struct FWP_RANGE0_
+ {
+ FWP_VALUE0 valueLow;
+ FWP_VALUE0 valueHigh;
+ } FWP_RANGE0;
+
+
+
+typedef struct FWP_CONDITION_VALUE0_
+ {
+ FWP_DATA_TYPE type;
+ union
+ {
+
+ UINT8 uint8;
+ UINT16 uint16;
+ UINT32 uint32;
+ UINT64 *uint64;
+ INT8 int8;
+ INT16 int16;
+ INT32 int32;
+ INT64 *int64;
+ float float32;
+ double *double64;
+ FWP_BYTE_ARRAY16 *byteArray16;
+ FWP_BYTE_BLOB *byteBlob;
+ SID *sid;
+ FWP_BYTE_BLOB *sd;
+ FWP_TOKEN_INFORMATION *tokenInformation;
+ FWP_BYTE_BLOB *tokenAccessInformation;
+ LPWSTR unicodeString;
+ FWP_BYTE_ARRAY6 *byteArray6;
+ FWP_V4_ADDR_AND_MASK *v4AddrMask;
+ FWP_V6_ADDR_AND_MASK *v6AddrMask;
+ FWP_RANGE0 *rangeValue;
+ } ;
+ } FWP_CONDITION_VALUE0;
+
+typedef
+enum FWP_NETWORK_CONNECTION_POLICY_SETTING_TYPE_
+ {
+ FWP_NETWORK_CONNECTION_POLICY_SOURCE_ADDRESS = 0,
+ FWP_NETWORK_CONNECTION_POLICY_NEXT_HOP_INTERFACE = ( FWP_NETWORK_CONNECTION_POLICY_SOURCE_ADDRESS + 1 ) ,
+ FWP_NETWORK_CONNECTION_POLICY_NEXT_HOP = ( FWP_NETWORK_CONNECTION_POLICY_NEXT_HOP_INTERFACE + 1 ) ,
+ FWP_NETWORK_CONNECTION_POLICY_MAX = ( FWP_NETWORK_CONNECTION_POLICY_NEXT_HOP + 1 )
+ } FWP_NETWORK_CONNECTION_POLICY_SETTING_TYPE;
+
+typedef
+enum FWP_CLASSIFY_OPTION_TYPE_
+ {
+ FWP_CLASSIFY_OPTION_MULTICAST_STATE = 0,
+ FWP_CLASSIFY_OPTION_LOOSE_SOURCE_MAPPING = ( FWP_CLASSIFY_OPTION_MULTICAST_STATE + 1 ) ,
+ FWP_CLASSIFY_OPTION_UNICAST_LIFETIME = ( FWP_CLASSIFY_OPTION_LOOSE_SOURCE_MAPPING + 1 ) ,
+ FWP_CLASSIFY_OPTION_MCAST_BCAST_LIFETIME = ( FWP_CLASSIFY_OPTION_UNICAST_LIFETIME + 1 ) ,
+ FWP_CLASSIFY_OPTION_SECURE_SOCKET_SECURITY_FLAGS = ( FWP_CLASSIFY_OPTION_MCAST_BCAST_LIFETIME + 1 ) ,
+ FWP_CLASSIFY_OPTION_SECURE_SOCKET_AUTHIP_MM_POLICY_KEY = ( FWP_CLASSIFY_OPTION_SECURE_SOCKET_SECURITY_FLAGS + 1 ) ,
+ FWP_CLASSIFY_OPTION_SECURE_SOCKET_AUTHIP_QM_POLICY_KEY = ( FWP_CLASSIFY_OPTION_SECURE_SOCKET_AUTHIP_MM_POLICY_KEY + 1 ) ,
+ FWP_CLASSIFY_OPTION_LOCAL_ONLY_MAPPING = ( FWP_CLASSIFY_OPTION_SECURE_SOCKET_AUTHIP_QM_POLICY_KEY + 1 ) ,
+ FWP_CLASSIFY_OPTION_MAX = ( FWP_CLASSIFY_OPTION_LOCAL_ONLY_MAPPING + 1 )
+ } FWP_CLASSIFY_OPTION_TYPE;
+
+
+
+
+
+
+
+
+
+typedef
+enum FWP_VSWITCH_NETWORK_TYPE_
+ {
+ FWP_VSWITCH_NETWORK_TYPE_UNKNOWN = 0,
+ FWP_VSWITCH_NETWORK_TYPE_PRIVATE = ( FWP_VSWITCH_NETWORK_TYPE_UNKNOWN + 1 ) ,
+ FWP_VSWITCH_NETWORK_TYPE_INTERNAL = ( FWP_VSWITCH_NETWORK_TYPE_PRIVATE + 1 ) ,
+ FWP_VSWITCH_NETWORK_TYPE_EXTERNAL = ( FWP_VSWITCH_NETWORK_TYPE_INTERNAL + 1 )
+ } FWP_VSWITCH_NETWORK_TYPE;
+
+#line 303 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwptypes.h"
+
+
+
+typedef UINT32 FWP_ACTION_TYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 343 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwptypes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 368 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwptypes.h"
+#line 369 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwptypes.h"
+#line 370 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwptypes.h"
+typedef
+enum FWP_FILTER_ENUM_TYPE_
+ {
+ FWP_FILTER_ENUM_FULLY_CONTAINED = 0,
+ FWP_FILTER_ENUM_OVERLAPPING = ( FWP_FILTER_ENUM_FULLY_CONTAINED + 1 ) ,
+ FWP_FILTER_ENUM_TYPE_MAX = ( FWP_FILTER_ENUM_OVERLAPPING + 1 )
+ } FWP_FILTER_ENUM_TYPE;
+
+
+
+
+
+
+
+
+
+#line 387 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwptypes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 404 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwptypes.h"
+#line 405 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwptypes.h"
+#line 406 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwptypes.h"
+#line 407 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwptypes.h"
+#line 408 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwptypes.h"
+typedef struct FWPM_DISPLAY_DATA0_
+ {
+ wchar_t *name;
+ wchar_t *description;
+ } FWPM_DISPLAY_DATA0;
+
+
+
+#pragma warning(pop)
+
+
+#line 420 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwptypes.h"
+#line 421 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwptypes.h"
+
+typedef struct IPSEC_VIRTUAL_IF_TUNNEL_INFO0_
+ {
+ UINT64 virtualIfTunnelId;
+ UINT64 trafficSelectorId;
+ } IPSEC_VIRTUAL_IF_TUNNEL_INFO0;
+
+#line 429 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwptypes.h"
+#line 430 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwptypes.h"
+#pragma endregion
+
+
+extern RPC_IF_HANDLE __MIDL_itf_fwptypes_0000_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_fwptypes_0000_0000_v0_0_s_ifspec;
+
+
+
+
+
+
+
+
+
+#line 445 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwptypes.h"
+
+
+#pragma external_header(pop)
+#line 48 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpstypes.h"
+
+
+
+
+
+
+
+
+
+
+#pragma region Desktop Family or AppRuntime Package
+
+
+
+#pragma warning(push)
+#line 64 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpstypes.h"
+#pragma warning(disable:4201)
+#line 66 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpstypes.h"
+typedef struct FWPS_FILTER_CONDITION0_
+ {
+ UINT16 fieldId;
+ UINT16 reserved;
+ FWP_MATCH_TYPE matchType;
+ FWP_CONDITION_VALUE0 conditionValue;
+ } FWPS_FILTER_CONDITION0;
+
+typedef struct FWPS_ACTION0_
+ {
+ FWP_ACTION_TYPE type;
+ UINT32 calloutId;
+ } FWPS_ACTION0;
+
+
+
+
+
+
+
+
+
+typedef struct FWPM_PROVIDER_CONTEXT0_ FWPM_PROVIDER_CONTEXT0;
+
+typedef struct FWPS_FILTER0_
+ {
+ UINT64 filterId;
+ FWP_VALUE0 weight;
+ UINT16 subLayerWeight;
+ UINT16 flags;
+ UINT32 numFilterConditions;
+ FWPS_FILTER_CONDITION0 *filterCondition;
+ FWPS_ACTION0 action;
+ UINT64 context;
+ FWPM_PROVIDER_CONTEXT0 *providerContext;
+ } FWPS_FILTER0;
+
+
+typedef struct FWPM_PROVIDER_CONTEXT1_ FWPM_PROVIDER_CONTEXT1;
+
+typedef struct FWPS_FILTER1_
+ {
+ UINT64 filterId;
+ FWP_VALUE0 weight;
+ UINT16 subLayerWeight;
+ UINT16 flags;
+ UINT32 numFilterConditions;
+ FWPS_FILTER_CONDITION0 *filterCondition;
+ FWPS_ACTION0 action;
+ UINT64 context;
+ FWPM_PROVIDER_CONTEXT1 *providerContext;
+ } FWPS_FILTER1;
+
+#line 120 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpstypes.h"
+
+typedef struct FWPM_PROVIDER_CONTEXT2_ FWPM_PROVIDER_CONTEXT2;
+
+typedef struct FWPS_FILTER2_
+ {
+ UINT64 filterId;
+ FWP_VALUE0 weight;
+ UINT16 subLayerWeight;
+ UINT16 flags;
+ UINT32 numFilterConditions;
+ FWPS_FILTER_CONDITION0 *filterCondition;
+ FWPS_ACTION0 action;
+ UINT64 context;
+ FWPM_PROVIDER_CONTEXT2 *providerContext;
+ } FWPS_FILTER2;
+
+#line 137 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpstypes.h"
+
+typedef struct FWPM_PROVIDER_CONTEXT3_ FWPM_PROVIDER_CONTEXT3;
+
+typedef struct FWPS_FILTER3_
+ {
+ UINT64 filterId;
+ FWP_VALUE0 weight;
+ UINT16 subLayerWeight;
+ UINT16 flags;
+ UINT32 numFilterConditions;
+ FWPS_FILTER_CONDITION0 *filterCondition;
+ FWPS_ACTION0 action;
+ UINT64 context;
+ FWPM_PROVIDER_CONTEXT3 *providerContext;
+ } FWPS_FILTER3;
+
+#line 154 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpstypes.h"
+typedef struct FWPS_INCOMING_VALUE0_
+ {
+ FWP_VALUE0 value;
+ } FWPS_INCOMING_VALUE0;
+
+typedef struct FWPS_INCOMING_VALUES0_
+ {
+ UINT16 layerId;
+ UINT32 valueCount;
+ FWPS_INCOMING_VALUE0 *incomingValue;
+ } FWPS_INCOMING_VALUES0;
+
+typedef
+enum FWPS_DISCARD_MODULE0_
+ {
+ FWPS_DISCARD_MODULE_NETWORK = 0,
+ FWPS_DISCARD_MODULE_TRANSPORT = ( FWPS_DISCARD_MODULE_NETWORK + 1 ) ,
+ FWPS_DISCARD_MODULE_GENERAL = ( FWPS_DISCARD_MODULE_TRANSPORT + 1 ) ,
+ FWPS_DISCARD_MODULE_MAX = ( FWPS_DISCARD_MODULE_GENERAL + 1 )
+ } FWPS_DISCARD_MODULE0;
+
+typedef
+enum FWPS_GENERAL_DISCARD_REASON_
+ {
+ FWPS_DISCARD_FIREWALL_POLICY = 0,
+ FWPS_DISCARD_IPSEC = ( FWPS_DISCARD_FIREWALL_POLICY + 1 ) ,
+ FWPS_GENERAL_DISCARD_REASON_MAX = ( FWPS_DISCARD_IPSEC + 1 )
+ } FWPS_GENERAL_DISCARD_REASON;
+
+typedef struct FWPS_DISCARD_METADATA0_
+ {
+ FWPS_DISCARD_MODULE0 discardModule;
+ UINT32 discardReason;
+ UINT64 filterId;
+ } FWPS_DISCARD_METADATA0;
+
+typedef struct FWPS_INBOUND_FRAGMENT_METADATA0_
+ {
+ UINT32 fragmentIdentification;
+ UINT16 fragmentOffset;
+ ULONG fragmentLength;
+ } FWPS_INBOUND_FRAGMENT_METADATA0;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 213 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpstypes.h"
+#line 214 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpstypes.h"
+#line 215 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpstypes.h"
+
+
+
+
+
+
+typedef struct FWPS_CLASSIFY_OUT0_
+ {
+ FWP_ACTION_TYPE actionType;
+ UINT64 outContext;
+ UINT64 filterId;
+ UINT32 rights;
+ UINT32 flags;
+ UINT32 reserved;
+ } FWPS_CLASSIFY_OUT0;
+
+typedef
+enum FWPS_CALLOUT_NOTIFY_TYPE_
+ {
+ FWPS_CALLOUT_NOTIFY_ADD_FILTER = 0,
+ FWPS_CALLOUT_NOTIFY_DELETE_FILTER = ( FWPS_CALLOUT_NOTIFY_ADD_FILTER + 1 ) ,
+ FWPS_CALLOUT_NOTIFY_ADD_FILTER_POST_COMMIT = ( FWPS_CALLOUT_NOTIFY_DELETE_FILTER + 1 ) ,
+ FWPS_CALLOUT_NOTIFY_TYPE_MAX = ( FWPS_CALLOUT_NOTIFY_ADD_FILTER_POST_COMMIT + 1 )
+ } FWPS_CALLOUT_NOTIFY_TYPE;
+
+
+
+typedef struct FWPS_ALE_ENDPOINT_PROPERTIES0_
+ {
+ UINT64 endpointId;
+ FWP_IP_VERSION ipVersion;
+ union
+ {
+ UINT32 localV4Address;
+ UINT8 localV6Address[ 16 ];
+ } ;
+ union
+ {
+ UINT32 remoteV4Address;
+ UINT8 remoteV6Address[ 16 ];
+ } ;
+ UINT8 ipProtocol;
+ UINT16 localPort;
+ UINT16 remotePort;
+ UINT64 localTokenModifiedId;
+ UINT64 mmSaId;
+ UINT64 qmSaId;
+ UINT32 ipsecStatus;
+ UINT32 flags;
+ FWP_BYTE_BLOB appId;
+ } FWPS_ALE_ENDPOINT_PROPERTIES0;
+
+typedef struct FWPS_ALE_ENDPOINT_ENUM_TEMPLATE0_
+ {
+ FWP_CONDITION_VALUE0 localSubNet;
+ FWP_CONDITION_VALUE0 remoteSubNet;
+ FWP_CONDITION_VALUE0 ipProtocol;
+ FWP_CONDITION_VALUE0 localPort;
+ FWP_CONDITION_VALUE0 remotePort;
+ } FWPS_ALE_ENDPOINT_ENUM_TEMPLATE0;
+
+#line 277 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpstypes.h"
+
+
+#pragma warning(pop)
+
+
+#line 283 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpstypes.h"
+#line 284 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpstypes.h"
+#line 285 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpstypes.h"
+#pragma endregion
+
+
+extern RPC_IF_HANDLE __MIDL_itf_fwpstypes_0000_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_fwpstypes_0000_0000_v0_0_s_ifspec;
+
+
+
+
+
+
+
+
+
+#line 300 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpstypes.h"
+
+
+#pragma external_header(pop)
+#line 27 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 116 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+#line 126 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+#line 129 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+#line 130 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\netpnp.h"
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+typedef enum _NET_PNP_EVENT_CODE
+{
+ NetEventSetPower,
+ NetEventQueryPower,
+ NetEventQueryRemoveDevice,
+ NetEventCancelRemoveDevice,
+ NetEventReconfigure,
+ NetEventBindList,
+ NetEventBindsComplete,
+ NetEventPnPCapabilities,
+ NetEventPause,
+ NetEventRestart,
+ NetEventPortActivation,
+ NetEventPortDeactivation,
+ NetEventIMReEnableDevice,
+ NetEventNDKEnable,
+ NetEventNDKDisable,
+ NetEventFilterPreDetach,
+ NetEventBindFailed,
+ NetEventSwitchActivate,
+ NetEventAllowBindsAbove,
+ NetEventInhibitBindsAbove,
+ NetEventAllowStart,
+ NetEventRequirePause,
+ NetEventUploadGftFlowEntries,
+ NetEventMaximum
+} NET_PNP_EVENT_CODE, *PNET_PNP_EVENT_CODE;
+
+
+
+
+typedef struct _NET_PNP_EVENT
+{
+
+
+
+ NET_PNP_EVENT_CODE NetEvent;
+
+
+
+
+ PVOID Buffer;
+
+
+
+
+ ULONG BufferLength;
+
+
+
+
+
+
+
+ ULONG_PTR NdisReserved[4];
+ ULONG_PTR TransportReserved[4];
+ ULONG_PTR TdiReserved[4];
+ ULONG_PTR TdiClientReserved[4];
+} NET_PNP_EVENT, *PNET_PNP_EVENT;
+
+
+
+
+typedef enum _NET_DEVICE_POWER_STATE
+{
+ NetDeviceStateUnspecified = 0,
+ NetDeviceStateD0,
+ NetDeviceStateD1,
+ NetDeviceStateD2,
+ NetDeviceStateD3,
+ NetDeviceStateMaximum
+} NET_DEVICE_POWER_STATE, *PNET_DEVICE_POWER_STATE;
+
+#line 87 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\netpnp.h"
+#line 148 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 220 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netevent.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7325 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netevent.h"
+
+#pragma external_header(pop)
+#line 227 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+#pragma warning(push)
+
+
+#pragma warning(disable:4201)
+#pragma warning(disable:4214)
+
+
+
+
+
+
+
+
+
+#line 244 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+typedef UNICODE_STRING NDIS_STRING, *PNDIS_STRING;
+typedef PCUNICODE_STRING PCNDIS_STRING;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 281 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\types.h"
+
+
+#pragma once
+
+#pragma region App, Games, or System family
+
+
+
+
+
+typedef PVOID NDIS_HANDLE, *PNDIS_HANDLE;
+
+typedef int NDIS_STATUS, *PNDIS_STATUS;
+
+
+
+#line 18 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\types.h"
+
+
+
+#line 22 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\types.h"
+#pragma endregion
+#pragma external_header(pop)
+#line 284 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+#line 293 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+#line 308 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 531 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+#line 537 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 552 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 557 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 562 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 567 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 572 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 577 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 582 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 587 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 592 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 597 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 602 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 607 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 612 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 617 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 622 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 627 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 632 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 637 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 651 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 664 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+#line 667 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+#line 670 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 765 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 783 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+#line 790 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+#line 816 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+#line 817 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+#line 824 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+#line 850 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 853 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 855 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 902 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 914 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+#line 917 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+#line 925 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 927 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+#line 928 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+#line 937 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 939 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+#line 940 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+#line 949 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 951 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+#line 952 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+#pragma once
+
+
+
+#line 10 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+#line 16 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+#line 22 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+#line 28 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+#line 34 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+#line 40 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+#line 46 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+#line 52 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+#line 58 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+#line 64 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+#line 70 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+#line 76 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+#line 82 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+#line 88 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+#line 94 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+#line 100 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+#line 106 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+
+
+
+#line 113 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+
+
+#line 119 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+
+
+#line 125 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+
+
+#line 131 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+
+
+#line 137 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+
+
+#line 143 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+
+
+#line 149 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+
+
+#line 155 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+
+
+#line 161 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+
+
+#line 167 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+
+
+#line 173 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+
+
+#line 179 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+
+
+#line 185 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+
+
+#line 191 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+
+
+#line 197 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+
+
+#line 203 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\version.h"
+
+
+
+
+#pragma external_header(pop)
+#line 955 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 972 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 66 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+#pragma region App Family or OneCore Family or Games Family
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4820)
+
+#line 78 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+#pragma warning(disable:4201)
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ifdef.h"
+
+
+
+
+#pragma once
+
+
+#pragma region Desktop Application or OneCore Family or Games Family
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipifcons.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 20 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipifcons.h"
+
+
+#pragma region Application Family or OneCore Family or Games Family
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef ULONG IFTYPE;
+
+
+
+
+
+
+
+typedef enum _IF_ACCESS_TYPE {
+ IF_ACCESS_LOOPBACK = 1,
+ IF_ACCESS_BROADCAST = 2,
+ IF_ACCESS_POINT_TO_POINT = 3,
+ IF_ACCESS_POINTTOPOINT = 3,
+ IF_ACCESS_POINT_TO_MULTI_POINT = 4,
+ IF_ACCESS_POINTTOMULTIPOINT = 4,
+} IF_ACCESS_TYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _INTERNAL_IF_OPER_STATUS {
+ IF_OPER_STATUS_NON_OPERATIONAL = 0,
+ IF_OPER_STATUS_UNREACHABLE = 1,
+ IF_OPER_STATUS_DISCONNECTED = 2,
+ IF_OPER_STATUS_CONNECTING = 3,
+ IF_OPER_STATUS_CONNECTED = 4,
+ IF_OPER_STATUS_OPERATIONAL = 5,
+} INTERNAL_IF_OPER_STATUS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 357 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipifcons.h"
+#pragma endregion
+
+#line 360 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipifcons.h"
+#pragma external_header(pop)
+#line 19 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ifdef.h"
+
+
+
+
+typedef UINT32 NET_IF_COMPARTMENT_ID, *PNET_IF_COMPARTMENT_ID;
+
+
+
+
+
+
+
+typedef GUID NET_IF_NETWORK_GUID, *PNET_IF_NETWORK_GUID;
+
+typedef enum _NET_IF_OPER_STATUS
+{
+ NET_IF_OPER_STATUS_UP = 1,
+ NET_IF_OPER_STATUS_DOWN = 2,
+ NET_IF_OPER_STATUS_TESTING = 3,
+ NET_IF_OPER_STATUS_UNKNOWN = 4,
+ NET_IF_OPER_STATUS_DORMANT = 5,
+ NET_IF_OPER_STATUS_NOT_PRESENT = 6,
+ NET_IF_OPER_STATUS_LOWER_LAYER_DOWN = 7
+} NET_IF_OPER_STATUS, *PNET_IF_OPER_STATUS;
+
+typedef ULONG32 NET_IF_OBJECT_ID, *PNET_IF_OBJECT_ID;
+
+typedef enum _NET_IF_ADMIN_STATUS
+{
+ NET_IF_ADMIN_STATUS_UP = 1,
+ NET_IF_ADMIN_STATUS_DOWN = 2,
+ NET_IF_ADMIN_STATUS_TESTING = 3
+} NET_IF_ADMIN_STATUS, *PNET_IF_ADMIN_STATUS;
+
+
+
+
+
+
+
+
+
+
+typedef UINT32 NET_IF_COMPARTMENT_SCOPE, *PNET_IF_COMPARTMENT_SCOPE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef char __C_ASSERT__[((0x07ffffff) < (0x0fffffff))?1:-1];
+#line 95 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ifdef.h"
+
+typedef enum _NET_IF_RCV_ADDRESS_TYPE
+{
+ NET_IF_RCV_ADDRESS_TYPE_OTHER = 1,
+ NET_IF_RCV_ADDRESS_TYPE_VOLATILE = 2,
+ NET_IF_RCV_ADDRESS_TYPE_NON_VOLATILE = 3
+} NET_IF_RCV_ADDRESS_TYPE, *PNET_IF_RCV_ADDRESS_TYPE;
+
+typedef struct _NET_IF_RCV_ADDRESS_LH
+{
+ NET_IF_RCV_ADDRESS_TYPE ifRcvAddressType;
+ USHORT ifRcvAddressLength;
+ USHORT ifRcvAddressOffset;
+} NET_IF_RCV_ADDRESS_LH, *PNET_IF_RCV_ADDRESS_LH;
+
+typedef struct _NET_IF_ALIAS_LH
+{
+ USHORT ifAliasLength;
+ USHORT ifAliasOffset;
+} NET_IF_ALIAS_LH, *PNET_IF_ALIAS_LH;
+
+#pragma warning(push)
+#pragma warning(disable:4214)
+typedef union _NET_LUID_LH
+{
+ ULONG64 Value;
+ struct
+ {
+ ULONG64 Reserved:24;
+ ULONG64 NetLuidIndex:24;
+ ULONG64 IfType:16;
+ }Info;
+} NET_LUID_LH, *PNET_LUID_LH;
+#pragma warning(pop)
+
+
+typedef NET_IF_RCV_ADDRESS_LH NET_IF_RCV_ADDRESS;
+typedef NET_IF_RCV_ADDRESS* PNET_IF_RCV_ADDRESS;
+
+typedef NET_IF_ALIAS_LH NET_IF_ALIAS;
+typedef NET_IF_ALIAS* PNET_IF_ALIAS;
+#line 137 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ifdef.h"
+
+
+
+
+typedef NET_LUID_LH NET_LUID;
+typedef NET_LUID* PNET_LUID;
+
+
+
+
+
+
+
+typedef NET_LUID IF_LUID, *PIF_LUID;
+
+
+typedef ULONG NET_IFINDEX, *PNET_IFINDEX;
+typedef UINT16 NET_IFTYPE, *PNET_IFTYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 172 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ifdef.h"
+
+typedef NET_IFINDEX IF_INDEX, *PIF_INDEX;
+
+
+typedef enum _NET_IF_CONNECTION_TYPE
+{
+ NET_IF_CONNECTION_DEDICATED = 1,
+ NET_IF_CONNECTION_PASSIVE = 2,
+ NET_IF_CONNECTION_DEMAND = 3,
+ NET_IF_CONNECTION_MAXIMUM = 4
+} NET_IF_CONNECTION_TYPE, *PNET_IF_CONNECTION_TYPE;
+
+
+
+
+
+typedef enum {
+ TUNNEL_TYPE_NONE = 0,
+ TUNNEL_TYPE_OTHER = 1,
+ TUNNEL_TYPE_DIRECT = 2,
+ TUNNEL_TYPE_6TO4 = 11,
+ TUNNEL_TYPE_ISATAP = 13,
+ TUNNEL_TYPE_TEREDO = 14,
+ TUNNEL_TYPE_IPHTTPS = 15,
+} TUNNEL_TYPE, *PTUNNEL_TYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _NET_IF_ACCESS_TYPE
+{
+ NET_IF_ACCESS_LOOPBACK = 1,
+ NET_IF_ACCESS_BROADCAST = 2,
+ NET_IF_ACCESS_POINT_TO_POINT = 3,
+ NET_IF_ACCESS_POINT_TO_MULTI_POINT = 4,
+ NET_IF_ACCESS_MAXIMUM = 5
+} NET_IF_ACCESS_TYPE, *PNET_IF_ACCESS_TYPE;
+
+
+
+
+
+typedef enum _NET_IF_DIRECTION_TYPE
+{
+ NET_IF_DIRECTION_SENDRECEIVE,
+ NET_IF_DIRECTION_SENDONLY,
+ NET_IF_DIRECTION_RECEIVEONLY,
+ NET_IF_DIRECTION_MAXIMUM
+} NET_IF_DIRECTION_TYPE, *PNET_IF_DIRECTION_TYPE;
+
+
+typedef enum _NET_IF_MEDIA_CONNECT_STATE
+{
+ MediaConnectStateUnknown,
+ MediaConnectStateConnected,
+ MediaConnectStateDisconnected
+} NET_IF_MEDIA_CONNECT_STATE, *PNET_IF_MEDIA_CONNECT_STATE;
+
+
+
+
+
+
+typedef enum _NET_IF_MEDIA_DUPLEX_STATE
+{
+ MediaDuplexStateUnknown,
+ MediaDuplexStateHalf,
+ MediaDuplexStateFull
+} NET_IF_MEDIA_DUPLEX_STATE, *PNET_IF_MEDIA_DUPLEX_STATE;
+
+
+
+
+
+
+
+typedef struct _NET_PHYSICAL_LOCATION_LH
+{
+ ULONG BusNumber;
+ ULONG SlotNumber;
+ ULONG FunctionNumber;
+} NET_PHYSICAL_LOCATION_LH, *PNET_PHYSICAL_LOCATION_LH;
+
+
+
+
+
+
+typedef struct _IF_COUNTED_STRING_LH
+{
+
+ USHORT Length;
+ WCHAR String[256 + 1];
+} IF_COUNTED_STRING_LH, *PIF_COUNTED_STRING_LH;
+
+
+
+typedef struct _IF_PHYSICAL_ADDRESS_LH
+{
+
+ USHORT Length;
+ UCHAR Address[32];
+} IF_PHYSICAL_ADDRESS_LH, *PIF_PHYSICAL_ADDRESS_LH;
+
+
+typedef NET_PHYSICAL_LOCATION_LH NET_PHYSICAL_LOCATION;
+typedef NET_PHYSICAL_LOCATION* PNET_PHYSICAL_LOCATION;
+
+typedef IF_COUNTED_STRING_LH IF_COUNTED_STRING;
+typedef IF_COUNTED_STRING* PIF_COUNTED_STRING;
+
+typedef IF_PHYSICAL_ADDRESS_LH IF_PHYSICAL_ADDRESS;
+typedef IF_PHYSICAL_ADDRESS* PIF_PHYSICAL_ADDRESS;
+#line 303 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ifdef.h"
+
+
+
+
+
+
+
+
+
+
+typedef enum _IF_ADMINISTRATIVE_STATE {
+ IF_ADMINISTRATIVE_DISABLED,
+ IF_ADMINISTRATIVE_ENABLED,
+ IF_ADMINISTRATIVE_DEMANDDIAL,
+} IF_ADMINISTRATIVE_STATE, *PIF_ADMINISTRATIVE_STATE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum {
+ IfOperStatusUp = 1,
+ IfOperStatusDown,
+ IfOperStatusTesting,
+ IfOperStatusUnknown,
+ IfOperStatusDormant,
+ IfOperStatusNotPresent,
+ IfOperStatusLowerLayerDown
+} IF_OPER_STATUS;
+
+typedef struct _NDIS_INTERFACE_INFORMATION
+{
+
+
+
+ NET_IF_OPER_STATUS ifOperStatus;
+ ULONG ifOperStatusFlags;
+ NET_IF_MEDIA_CONNECT_STATE MediaConnectState;
+ NET_IF_MEDIA_DUPLEX_STATE MediaDuplexState;
+ ULONG ifMtu;
+ BOOLEAN ifPromiscuousMode;
+ BOOLEAN ifDeviceWakeUpEnable;
+ ULONG64 XmitLinkSpeed;
+ ULONG64 RcvLinkSpeed;
+
+ ULONG64 ifLastChange;
+ ULONG64 ifCounterDiscontinuityTime;
+ ULONG64 ifInUnknownProtos;
+
+
+
+
+ ULONG64 ifInDiscards;
+ ULONG64 ifInErrors;
+ ULONG64 ifHCInOctets;
+ ULONG64 ifHCInUcastPkts;
+ ULONG64 ifHCInMulticastPkts;
+ ULONG64 ifHCInBroadcastPkts;
+ ULONG64 ifHCOutOctets;
+ ULONG64 ifHCOutUcastPkts;
+ ULONG64 ifHCOutMulticastPkts;
+ ULONG64 ifHCOutBroadcastPkts;
+ ULONG64 ifOutErrors;
+ ULONG64 ifOutDiscards;
+ ULONG64 ifHCInUcastOctets;
+ ULONG64 ifHCInMulticastOctets;
+ ULONG64 ifHCInBroadcastOctets;
+ ULONG64 ifHCOutUcastOctets;
+ ULONG64 ifHCOutMulticastOctets;
+ ULONG64 ifHCOutBroadcastOctets;
+ NET_IF_COMPARTMENT_ID CompartmentId;
+ ULONG SupportedStatistics;
+}NDIS_INTERFACE_INFORMATION, *PNDIS_INTERFACE_INFORMATION;
+
+
+
+
+
+#line 391 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ifdef.h"
+#pragma endregion
+
+#line 394 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ifdef.h"
+
+#pragma external_header(pop)
+#line 87 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\devpkey.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma region Desktop Family or OneCore Family or Games Family
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\devpropdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma region Desktop Family or OneCore Family or Games Family
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 203 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\devpropdef.h"
+
+
+
+
+#line 208 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\devpropdef.h"
+
+#line 210 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\devpropdef.h"
+#pragma endregion
+#pragma external_header(pop)
+#line 29 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\devpkey.h"
+
+
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_NAME;
+
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_Device_DeviceDesc;
+extern const DEVPROPKEY DEVPKEY_Device_HardwareIds;
+extern const DEVPROPKEY DEVPKEY_Device_CompatibleIds;
+extern const DEVPROPKEY DEVPKEY_Device_Service;
+extern const DEVPROPKEY DEVPKEY_Device_Class;
+extern const DEVPROPKEY DEVPKEY_Device_ClassGuid;
+extern const DEVPROPKEY DEVPKEY_Device_Driver;
+extern const DEVPROPKEY DEVPKEY_Device_ConfigFlags;
+extern const DEVPROPKEY DEVPKEY_Device_Manufacturer;
+extern const DEVPROPKEY DEVPKEY_Device_FriendlyName;
+extern const DEVPROPKEY DEVPKEY_Device_LocationInfo;
+extern const DEVPROPKEY DEVPKEY_Device_PDOName;
+extern const DEVPROPKEY DEVPKEY_Device_Capabilities;
+extern const DEVPROPKEY DEVPKEY_Device_UINumber;
+extern const DEVPROPKEY DEVPKEY_Device_UpperFilters;
+extern const DEVPROPKEY DEVPKEY_Device_LowerFilters;
+extern const DEVPROPKEY DEVPKEY_Device_BusTypeGuid;
+extern const DEVPROPKEY DEVPKEY_Device_LegacyBusType;
+extern const DEVPROPKEY DEVPKEY_Device_BusNumber;
+extern const DEVPROPKEY DEVPKEY_Device_EnumeratorName;
+extern const DEVPROPKEY DEVPKEY_Device_Security;
+extern const DEVPROPKEY DEVPKEY_Device_SecuritySDS;
+extern const DEVPROPKEY DEVPKEY_Device_DevType;
+extern const DEVPROPKEY DEVPKEY_Device_Exclusive;
+extern const DEVPROPKEY DEVPKEY_Device_Characteristics;
+extern const DEVPROPKEY DEVPKEY_Device_Address;
+extern const DEVPROPKEY DEVPKEY_Device_UINumberDescFormat;
+extern const DEVPROPKEY DEVPKEY_Device_PowerData;
+extern const DEVPROPKEY DEVPKEY_Device_RemovalPolicy;
+extern const DEVPROPKEY DEVPKEY_Device_RemovalPolicyDefault;
+extern const DEVPROPKEY DEVPKEY_Device_RemovalPolicyOverride;
+extern const DEVPROPKEY DEVPKEY_Device_InstallState;
+extern const DEVPROPKEY DEVPKEY_Device_LocationPaths;
+extern const DEVPROPKEY DEVPKEY_Device_BaseContainerId;
+
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_Device_InstanceId;
+
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_Device_DevNodeStatus;
+extern const DEVPROPKEY DEVPKEY_Device_ProblemCode;
+
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_Device_EjectionRelations;
+extern const DEVPROPKEY DEVPKEY_Device_RemovalRelations;
+extern const DEVPROPKEY DEVPKEY_Device_PowerRelations;
+extern const DEVPROPKEY DEVPKEY_Device_BusRelations;
+extern const DEVPROPKEY DEVPKEY_Device_Parent;
+extern const DEVPROPKEY DEVPKEY_Device_Children;
+extern const DEVPROPKEY DEVPKEY_Device_Siblings;
+extern const DEVPROPKEY DEVPKEY_Device_TransportRelations;
+
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_Device_ProblemStatus;
+
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_Device_Reported;
+extern const DEVPROPKEY DEVPKEY_Device_Legacy;
+
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_Device_ContainerId;
+extern const DEVPROPKEY DEVPKEY_Device_InLocalMachineContainer;
+
+
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_Device_Model;
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_Device_ModelId;
+extern const DEVPROPKEY DEVPKEY_Device_FriendlyNameAttributes;
+extern const DEVPROPKEY DEVPKEY_Device_ManufacturerAttributes;
+extern const DEVPROPKEY DEVPKEY_Device_PresenceNotForDevice;
+extern const DEVPROPKEY DEVPKEY_Device_SignalStrength;
+extern const DEVPROPKEY DEVPKEY_Device_IsAssociateableByUserAction;
+extern const DEVPROPKEY DEVPKEY_Device_ShowInUninstallUI;
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_Device_CompanionApps;
+extern const DEVPROPKEY DEVPKEY_Device_PrimaryCompanionApp;
+
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_Device_Numa_Proximity_Domain;
+extern const DEVPROPKEY DEVPKEY_Device_DHP_Rebalance_Policy;
+extern const DEVPROPKEY DEVPKEY_Device_Numa_Node;
+extern const DEVPROPKEY DEVPKEY_Device_BusReportedDeviceDesc;
+extern const DEVPROPKEY DEVPKEY_Device_IsPresent;
+extern const DEVPROPKEY DEVPKEY_Device_HasProblem;
+extern const DEVPROPKEY DEVPKEY_Device_ConfigurationId;
+extern const DEVPROPKEY DEVPKEY_Device_ReportedDeviceIdsHash;
+extern const DEVPROPKEY DEVPKEY_Device_PhysicalDeviceLocation;
+extern const DEVPROPKEY DEVPKEY_Device_BiosDeviceName;
+extern const DEVPROPKEY DEVPKEY_Device_DriverProblemDesc;
+extern const DEVPROPKEY DEVPKEY_Device_DebuggerSafe;
+extern const DEVPROPKEY DEVPKEY_Device_PostInstallInProgress;
+extern const DEVPROPKEY DEVPKEY_Device_Stack;
+extern const DEVPROPKEY DEVPKEY_Device_ExtendedConfigurationIds;
+extern const DEVPROPKEY DEVPKEY_Device_IsRebootRequired;
+extern const DEVPROPKEY DEVPKEY_Device_FirmwareDate;
+extern const DEVPROPKEY DEVPKEY_Device_FirmwareVersion;
+extern const DEVPROPKEY DEVPKEY_Device_FirmwareRevision;
+extern const DEVPROPKEY DEVPKEY_Device_DependencyProviders;
+extern const DEVPROPKEY DEVPKEY_Device_DependencyDependents;
+extern const DEVPROPKEY DEVPKEY_Device_SoftRestartSupported;
+extern const DEVPROPKEY DEVPKEY_Device_ExtendedAddress;
+extern const DEVPROPKEY DEVPKEY_Device_AssignedToGuest;
+extern const DEVPROPKEY DEVPKEY_Device_CreatorProcessId;
+extern const DEVPROPKEY DEVPKEY_Device_FirmwareVendor;
+
+extern const DEVPROPKEY DEVPKEY_Device_SessionId;
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_Device_InstallDate;
+extern const DEVPROPKEY DEVPKEY_Device_FirstInstallDate;
+extern const DEVPROPKEY DEVPKEY_Device_LastArrivalDate;
+extern const DEVPROPKEY DEVPKEY_Device_LastRemovalDate;
+
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_Device_DriverDate;
+extern const DEVPROPKEY DEVPKEY_Device_DriverVersion;
+extern const DEVPROPKEY DEVPKEY_Device_DriverDesc;
+extern const DEVPROPKEY DEVPKEY_Device_DriverInfPath;
+extern const DEVPROPKEY DEVPKEY_Device_DriverInfSection;
+extern const DEVPROPKEY DEVPKEY_Device_DriverInfSectionExt;
+extern const DEVPROPKEY DEVPKEY_Device_MatchingDeviceId;
+extern const DEVPROPKEY DEVPKEY_Device_DriverProvider;
+extern const DEVPROPKEY DEVPKEY_Device_DriverPropPageProvider;
+extern const DEVPROPKEY DEVPKEY_Device_DriverCoInstallers;
+extern const DEVPROPKEY DEVPKEY_Device_ResourcePickerTags;
+extern const DEVPROPKEY DEVPKEY_Device_ResourcePickerExceptions;
+extern const DEVPROPKEY DEVPKEY_Device_DriverRank;
+extern const DEVPROPKEY DEVPKEY_Device_DriverLogoLevel;
+
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_Device_NoConnectSound;
+extern const DEVPROPKEY DEVPKEY_Device_GenericDriverInstalled;
+extern const DEVPROPKEY DEVPKEY_Device_AdditionalSoftwareRequested;
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_Device_SafeRemovalRequired;
+extern const DEVPROPKEY DEVPKEY_Device_SafeRemovalRequiredOverride;
+
+
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_DrvPkg_Model;
+extern const DEVPROPKEY DEVPKEY_DrvPkg_VendorWebSite;
+extern const DEVPROPKEY DEVPKEY_DrvPkg_DetailedDescription;
+extern const DEVPROPKEY DEVPKEY_DrvPkg_DocumentationLink;
+extern const DEVPROPKEY DEVPKEY_DrvPkg_Icon;
+extern const DEVPROPKEY DEVPKEY_DrvPkg_BrandingIcon;
+
+
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_DeviceClass_UpperFilters;
+extern const DEVPROPKEY DEVPKEY_DeviceClass_LowerFilters;
+extern const DEVPROPKEY DEVPKEY_DeviceClass_Security;
+extern const DEVPROPKEY DEVPKEY_DeviceClass_SecuritySDS;
+extern const DEVPROPKEY DEVPKEY_DeviceClass_DevType;
+extern const DEVPROPKEY DEVPKEY_DeviceClass_Exclusive;
+extern const DEVPROPKEY DEVPKEY_DeviceClass_Characteristics;
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_DeviceClass_Name;
+extern const DEVPROPKEY DEVPKEY_DeviceClass_ClassName;
+extern const DEVPROPKEY DEVPKEY_DeviceClass_Icon;
+extern const DEVPROPKEY DEVPKEY_DeviceClass_ClassInstaller;
+extern const DEVPROPKEY DEVPKEY_DeviceClass_PropPageProvider;
+extern const DEVPROPKEY DEVPKEY_DeviceClass_NoInstallClass;
+extern const DEVPROPKEY DEVPKEY_DeviceClass_NoDisplayClass;
+extern const DEVPROPKEY DEVPKEY_DeviceClass_SilentInstall;
+extern const DEVPROPKEY DEVPKEY_DeviceClass_NoUseClass;
+extern const DEVPROPKEY DEVPKEY_DeviceClass_DefaultService;
+extern const DEVPROPKEY DEVPKEY_DeviceClass_IconPath;
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_DeviceClass_DHPRebalanceOptOut;
+
+extern const DEVPROPKEY DEVPKEY_DeviceClass_ClassCoInstallers;
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_DeviceInterface_FriendlyName;
+extern const DEVPROPKEY DEVPKEY_DeviceInterface_Enabled;
+extern const DEVPROPKEY DEVPKEY_DeviceInterface_ClassGuid;
+extern const DEVPROPKEY DEVPKEY_DeviceInterface_ReferenceString;
+extern const DEVPROPKEY DEVPKEY_DeviceInterface_Restricted;
+extern const DEVPROPKEY DEVPKEY_DeviceInterface_UnrestrictedAppCapabilities;
+extern const DEVPROPKEY DEVPKEY_DeviceInterface_SchematicName;
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_DeviceInterfaceClass_DefaultInterface;
+extern const DEVPROPKEY DEVPKEY_DeviceInterfaceClass_Name;
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_Address;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_DiscoveryMethod;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsEncrypted;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsAuthenticated;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsConnected;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsPaired;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_Icon;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_Version;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_Last_Seen;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_Last_Connected;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsShowInDisconnectedState;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsLocalMachine;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_MetadataPath;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsMetadataSearchInProgress;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_MetadataChecksum;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsNotInterestingForDisplay;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_LaunchDeviceStageOnDeviceConnect;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_LaunchDeviceStageFromExplorer;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_BaselineExperienceId;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsDeviceUniquelyIdentifiable;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_AssociationArray;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_DeviceDescription1;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_DeviceDescription2;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_HasProblem;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsSharedDevice;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsNetworkDevice;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsDefaultDevice;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_MetadataCabinet;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_RequiresPairingElevation;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_ExperienceId;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_Category;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_Category_Desc_Singular;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_Category_Desc_Plural;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_Category_Icon;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_CategoryGroup_Desc;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_CategoryGroup_Icon;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_PrimaryCategory;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_UnpairUninstall;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_RequiresUninstallElevation;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_DeviceFunctionSubRank;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_AlwaysShowDeviceAsConnected;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_ConfigFlags;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_PrivilegedPackageFamilyNames;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_CustomPrivilegedPackageFamilyNames;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsRebootRequired;
+
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_FriendlyName;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_Manufacturer;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_ModelName;
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_ModelNumber;
+
+extern const DEVPROPKEY DEVPKEY_DeviceContainer_InstallInProgress;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const DEVPROPKEY DEVPKEY_DevQuery_ObjectType;
+
+#line 360 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\devpkey.h"
+#pragma endregion
+
+#pragma external_header(pop)
+#line 88 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pciprop.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma region Desktop Family
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciRootBus_SecondaryInterface);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciRootBus_CurrentSpeedAndMode);
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciRootBus_SupportedSpeedsAndModes);
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciRootBus_DeviceIDMessagingCapable);
+
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciRootBus_SecondaryBusWidth);
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciRootBus_ExtendedConfigAvailable);
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciRootBus_ExtendedPCIConfigOpRegionSupport);
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciRootBus_ASPMSupport);
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciRootBus_ClockPowerManagementSupport);
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciRootBus_PCISegmentGroupsSupport);
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciRootBus_MSISupport);
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciRootBus_PCIExpressNativeHotPlugControl);
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciRootBus_SHPCNativeHotPlugControl);
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciRootBus_PCIExpressNativePMEControl);
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciRootBus_PCIExpressAERControl);
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciRootBus_PCIExpressCapabilityControl);
+
+
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciRootBus_NativePciExpressControl);
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciRootBus_SystemMsiSupport);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_DeviceType);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_CurrentSpeedAndMode);
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_BaseClass);
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_SubClass);
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_ProgIf);
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_CurrentPayloadSize);
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_MaxPayloadSize);
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_MaxReadRequestSize);
+
+
+
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_CurrentLinkSpeed);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_CurrentLinkWidth);
+
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_MaxLinkSpeed);
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_MaxLinkWidth);
+
+
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_ExpressSpecVersion);
+
+
+
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_InterruptSupport);
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_InterruptMessageMaximum);
+
+
+
+
+
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_BarTypes);
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_AERCapabilityPresent);
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_FirmwareErrorHandling);
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_Uncorrectable_Error_Mask);
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_Uncorrectable_Error_Severity);
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_Correctable_Error_Mask);
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_ECRC_Errors);
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_Error_Reporting);
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_RootError_Reporting);
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_S0WakeupSupported);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_SriovSupport);
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_Label_Id);
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_Label_String);
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_AcsSupport);
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_AriSupport);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_AcsCompatibleUpHierarchy);
+
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_AcsCapabilityRegister);
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_AtsSupport);
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_RequiresReservedMemoryRegion);
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_AtomicsSupported);
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_SupportedLinkSubState);
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_OnPostPath);
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_D3ColdSupport);
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_SerialNumber);
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_UsbDvsecPortType);
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_UsbDvsecPortSpecificAttributes);
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_UsbComponentRelation);
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_UsbHostRouterName);
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_ParentSerialNumber);
+
+
+
+
+
+
+extern const DEVPROPKEY (DEVPKEY_PciDevice_IsTunneledDevice);
+
+#line 603 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pciprop.h"
+#pragma endregion
+
+#line 606 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\pciprop.h"
+#pragma external_header(pop)
+#line 89 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+#line 90 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\ioctltypes.h"
+
+
+#pragma once
+
+#pragma region App, Games, or System family
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 31 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\ioctltypes.h"
+#pragma endregion
+
+#pragma external_header(pop)
+#line 96 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\oidtypes.h"
+
+
+#pragma once
+
+#pragma region App, Games, or System family
+
+
+
+
+
+
+
+
+
+typedef ULONG NDIS_OID, *PNDIS_OID;
+
+
+
+
+
+
+
+typedef enum _NDIS_REQUEST_TYPE
+{
+ NdisRequestQueryInformation,
+ NdisRequestSetInformation,
+ NdisRequestQueryStatistics,
+
+ NdisRequestOpen,
+ NdisRequestClose,
+ NdisRequestSend,
+ NdisRequestTransferData,
+ NdisRequestReset,
+ NdisRequestGeneric1,
+ NdisRequestGeneric2,
+ NdisRequestGeneric3,
+ NdisRequestGeneric4,
+#line 39 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\oidtypes.h"
+
+ NdisRequestMethod = 12,
+#line 42 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\oidtypes.h"
+} NDIS_REQUEST_TYPE, *PNDIS_REQUEST_TYPE;
+
+
+
+
+
+#line 49 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\oidtypes.h"
+#pragma endregion
+
+#pragma external_header(pop)
+#line 143 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+typedef struct _NDIS_STATISTICS_VALUE
+{
+ NDIS_OID Oid;
+ ULONG DataLength;
+
+ UCHAR Data[1];
+} NDIS_STATISTICS_VALUE;
+
+typedef NDIS_STATISTICS_VALUE __unaligned *PNDIS_STATISTICS_VALUE;
+
+
+typedef struct _NDIS_STATISTICS_VALUE_EX
+{
+ NDIS_OID Oid;
+ ULONG DataLength;
+ ULONG Length;
+
+ UCHAR Data[1];
+} NDIS_STATISTICS_VALUE_EX;
+
+typedef NDIS_STATISTICS_VALUE_EX __unaligned *PNDIS_STATISTICS_VALUE_EX;
+#line 172 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+typedef struct _NDIS_VAR_DATA_DESC
+{
+ USHORT Length;
+ USHORT MaximumLength;
+ ULONG_PTR Offset;
+} NDIS_VAR_DATA_DESC, *PNDIS_VAR_DATA_DESC;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 236 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+#line 242 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 246 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+#line 256 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+#line 262 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 266 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 270 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\objectheader.h"
+
+
+#pragma once
+
+#pragma region App, Games, or System family
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(default:4820)
+
+typedef struct _NDIS_OBJECT_HEADER
+{
+ UCHAR
+ Type;
+
+ UCHAR
+ Revision;
+
+ USHORT
+ Size;
+
+} NDIS_OBJECT_HEADER, *PNDIS_OBJECT_HEADER;
+
+
+typedef char __C_ASSERT__[(sizeof(NDIS_OBJECT_HEADER) == 4)?1:-1];
+#line 30 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\objectheader.h"
+
+#pragma warning(pop)
+
+
+
+
+
+#line 38 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\objectheader.h"
+#pragma endregion
+#pragma external_header(pop)
+#line 276 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_STATISTICS_INFO
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG SupportedStatistics;
+ ULONG64 ifInDiscards;
+ ULONG64 ifInErrors;
+ ULONG64 ifHCInOctets;
+ ULONG64 ifHCInUcastPkts;
+ ULONG64 ifHCInMulticastPkts;
+ ULONG64 ifHCInBroadcastPkts;
+ ULONG64 ifHCOutOctets;
+ ULONG64 ifHCOutUcastPkts;
+ ULONG64 ifHCOutMulticastPkts;
+ ULONG64 ifHCOutBroadcastPkts;
+ ULONG64 ifOutErrors;
+ ULONG64 ifOutDiscards;
+ ULONG64 ifHCInUcastOctets;
+ ULONG64 ifHCInMulticastOctets;
+ ULONG64 ifHCInBroadcastOctets;
+ ULONG64 ifHCOutUcastOctets;
+ ULONG64 ifHCOutMulticastOctets;
+ ULONG64 ifHCOutBroadcastOctets;
+
+}NDIS_STATISTICS_INFO, *PNDIS_STATISTICS_INFO;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 356 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+typedef enum _NDIS_INTERRUPT_MODERATION
+{
+ NdisInterruptModerationUnknown,
+ NdisInterruptModerationNotSupported,
+ NdisInterruptModerationEnabled,
+ NdisInterruptModerationDisabled
+} NDIS_INTERRUPT_MODERATION, *PNDIS_INTERRUPT_MODERATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_INTERRUPT_MODERATION_PARAMETERS
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG Flags;
+ NDIS_INTERRUPT_MODERATION InterruptModeration;
+}NDIS_INTERRUPT_MODERATION_PARAMETERS, *PNDIS_INTERRUPT_MODERATION_PARAMETERS;
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG Flags;
+ ULONG TimeoutArrayLength;
+ ULONG TimeoutArray[1];
+}NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES, *PNDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES;
+
+
+
+
+
+
+
+
+
+
+
+
+#line 421 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+typedef struct _NDIS_PCI_DEVICE_CUSTOM_PROPERTIES
+{
+ NDIS_OBJECT_HEADER Header;
+ UINT32 DeviceType;
+ UINT32 CurrentSpeedAndMode;
+ UINT32 CurrentPayloadSize;
+ UINT32 MaxPayloadSize;
+ UINT32 MaxReadRequestSize;
+ UINT32 CurrentLinkSpeed;
+ UINT32 CurrentLinkWidth;
+ UINT32 MaxLinkSpeed;
+ UINT32 MaxLinkWidth;
+
+ UINT32 PciExpressVersion;
+ UINT32 InterruptType;
+ UINT32 MaxInterruptMessages;
+#line 439 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+} NDIS_PCI_DEVICE_CUSTOM_PROPERTIES, *PNDIS_PCI_DEVICE_CUSTOM_PROPERTIES;
+
+
+
+
+
+
+
+#line 448 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+#line 450 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 537 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+#line 542 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 558 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 603 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 622 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 644 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+#line 651 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 663 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+#line 674 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+#line 685 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+#line 692 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+#line 697 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+#line 702 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 706 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 722 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 794 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+#line 805 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 857 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 895 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _NDIS_802_11_STATUS_TYPE
+{
+ Ndis802_11StatusType_Authentication,
+ Ndis802_11StatusType_MediaStreamMode,
+ Ndis802_11StatusType_PMKID_CandidateList,
+ Ndis802_11StatusTypeMax
+} NDIS_802_11_STATUS_TYPE, *PNDIS_802_11_STATUS_TYPE;
+
+typedef UCHAR NDIS_802_11_MAC_ADDRESS[6];
+
+typedef struct _NDIS_802_11_STATUS_INDICATION
+{
+ NDIS_802_11_STATUS_TYPE StatusType;
+} NDIS_802_11_STATUS_INDICATION, *PNDIS_802_11_STATUS_INDICATION;
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_802_11_AUTHENTICATION_REQUEST
+{
+ ULONG Length;
+ NDIS_802_11_MAC_ADDRESS Bssid;
+ ULONG Flags;
+} NDIS_802_11_AUTHENTICATION_REQUEST, *PNDIS_802_11_AUTHENTICATION_REQUEST;
+
+
+typedef struct _PMKID_CANDIDATE {
+ NDIS_802_11_MAC_ADDRESS BSSID;
+ ULONG Flags;
+} PMKID_CANDIDATE, *PPMKID_CANDIDATE;
+
+typedef struct _NDIS_802_11_PMKID_CANDIDATE_LIST
+{
+ ULONG Version;
+ ULONG NumCandidates;
+ PMKID_CANDIDATE CandidateList[1];
+} NDIS_802_11_PMKID_CANDIDATE_LIST, *PNDIS_802_11_PMKID_CANDIDATE_LIST;
+
+
+
+
+
+typedef enum _NDIS_802_11_NETWORK_TYPE
+{
+ Ndis802_11FH,
+ Ndis802_11DS,
+ Ndis802_11OFDM5,
+ Ndis802_11OFDM24,
+ Ndis802_11Automode,
+ Ndis802_11NetworkTypeMax
+} NDIS_802_11_NETWORK_TYPE, *PNDIS_802_11_NETWORK_TYPE;
+
+typedef struct _NDIS_802_11_NETWORK_TYPE_LIST
+{
+ ULONG NumberOfItems;
+ NDIS_802_11_NETWORK_TYPE NetworkType [1];
+} NDIS_802_11_NETWORK_TYPE_LIST, *PNDIS_802_11_NETWORK_TYPE_LIST;
+
+typedef enum _NDIS_802_11_POWER_MODE
+{
+ Ndis802_11PowerModeCAM,
+ Ndis802_11PowerModeMAX_PSP,
+ Ndis802_11PowerModeFast_PSP,
+ Ndis802_11PowerModeMax
+} NDIS_802_11_POWER_MODE, *PNDIS_802_11_POWER_MODE;
+
+typedef ULONG NDIS_802_11_TX_POWER_LEVEL;
+
+
+
+
+typedef LONG NDIS_802_11_RSSI;
+
+typedef struct _NDIS_802_11_CONFIGURATION_FH
+{
+ ULONG Length;
+ ULONG HopPattern;
+ ULONG HopSet;
+ ULONG DwellTime;
+} NDIS_802_11_CONFIGURATION_FH, *PNDIS_802_11_CONFIGURATION_FH;
+
+typedef struct _NDIS_802_11_CONFIGURATION
+{
+ ULONG Length;
+ ULONG BeaconPeriod;
+ ULONG ATIMWindow;
+ ULONG DSConfig;
+ NDIS_802_11_CONFIGURATION_FH FHConfig;
+} NDIS_802_11_CONFIGURATION, *PNDIS_802_11_CONFIGURATION;
+
+typedef struct _NDIS_802_11_STATISTICS
+{
+ ULONG Length;
+ LARGE_INTEGER TransmittedFragmentCount;
+ LARGE_INTEGER MulticastTransmittedFrameCount;
+ LARGE_INTEGER FailedCount;
+ LARGE_INTEGER RetryCount;
+ LARGE_INTEGER MultipleRetryCount;
+ LARGE_INTEGER RTSSuccessCount;
+ LARGE_INTEGER RTSFailureCount;
+ LARGE_INTEGER ACKFailureCount;
+ LARGE_INTEGER FrameDuplicateCount;
+ LARGE_INTEGER ReceivedFragmentCount;
+ LARGE_INTEGER MulticastReceivedFrameCount;
+ LARGE_INTEGER FCSErrorCount;
+ LARGE_INTEGER TKIPLocalMICFailures;
+ LARGE_INTEGER TKIPICVErrorCount;
+ LARGE_INTEGER TKIPCounterMeasuresInvoked;
+ LARGE_INTEGER TKIPReplays;
+ LARGE_INTEGER CCMPFormatErrors;
+ LARGE_INTEGER CCMPReplays;
+ LARGE_INTEGER CCMPDecryptErrors;
+ LARGE_INTEGER FourWayHandshakeFailures;
+ LARGE_INTEGER WEPUndecryptableCount;
+ LARGE_INTEGER WEPICVErrorCount;
+ LARGE_INTEGER DecryptSuccessCount;
+ LARGE_INTEGER DecryptFailureCount;
+} NDIS_802_11_STATISTICS, *PNDIS_802_11_STATISTICS;
+
+typedef ULONG NDIS_802_11_KEY_INDEX;
+typedef ULONGLONG NDIS_802_11_KEY_RSC;
+
+
+typedef struct _NDIS_802_11_KEY
+{
+ ULONG Length;
+ ULONG KeyIndex;
+ ULONG KeyLength;
+ NDIS_802_11_MAC_ADDRESS BSSID;
+ NDIS_802_11_KEY_RSC KeyRSC;
+ UCHAR KeyMaterial[1];
+} NDIS_802_11_KEY, *PNDIS_802_11_KEY;
+
+typedef struct _NDIS_802_11_REMOVE_KEY
+{
+ ULONG Length;
+ ULONG KeyIndex;
+ NDIS_802_11_MAC_ADDRESS BSSID;
+} NDIS_802_11_REMOVE_KEY, *PNDIS_802_11_REMOVE_KEY;
+
+typedef struct _NDIS_802_11_WEP
+{
+ ULONG Length;
+ ULONG KeyIndex;
+
+ ULONG KeyLength;
+ UCHAR KeyMaterial[1];
+} NDIS_802_11_WEP, *PNDIS_802_11_WEP;
+
+
+typedef enum _NDIS_802_11_NETWORK_INFRASTRUCTURE
+{
+ Ndis802_11IBSS,
+ Ndis802_11Infrastructure,
+ Ndis802_11AutoUnknown,
+ Ndis802_11InfrastructureMax
+} NDIS_802_11_NETWORK_INFRASTRUCTURE, *PNDIS_802_11_NETWORK_INFRASTRUCTURE;
+
+
+typedef enum _NDIS_802_11_AUTHENTICATION_MODE
+{
+ Ndis802_11AuthModeOpen,
+ Ndis802_11AuthModeShared,
+ Ndis802_11AuthModeAutoSwitch,
+ Ndis802_11AuthModeWPA,
+ Ndis802_11AuthModeWPAPSK,
+ Ndis802_11AuthModeWPANone,
+ Ndis802_11AuthModeWPA2,
+ Ndis802_11AuthModeWPA2PSK,
+ Ndis802_11AuthModeWPA3,
+
+ Ndis802_11AuthModeWPA3Ent192 = Ndis802_11AuthModeWPA3,
+#line 1469 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+ Ndis802_11AuthModeWPA3SAE,
+
+
+#line 1473 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+ Ndis802_11AuthModeWPA3Ent,
+#line 1476 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+ Ndis802_11AuthModeMax
+} NDIS_802_11_AUTHENTICATION_MODE, *PNDIS_802_11_AUTHENTICATION_MODE;
+
+typedef UCHAR NDIS_802_11_RATES[8];
+typedef UCHAR NDIS_802_11_RATES_EX[16];
+
+typedef struct _NDIS_802_11_SSID
+{
+ ULONG SsidLength;
+
+ UCHAR Ssid[32];
+} NDIS_802_11_SSID, *PNDIS_802_11_SSID;
+
+
+typedef struct _NDIS_WLAN_BSSID
+{
+ ULONG Length;
+ NDIS_802_11_MAC_ADDRESS MacAddress;
+ UCHAR Reserved[2];
+ NDIS_802_11_SSID Ssid;
+ ULONG Privacy;
+ NDIS_802_11_RSSI Rssi;
+
+ NDIS_802_11_NETWORK_TYPE NetworkTypeInUse;
+ NDIS_802_11_CONFIGURATION Configuration;
+ NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode;
+ NDIS_802_11_RATES SupportedRates;
+} NDIS_WLAN_BSSID, *PNDIS_WLAN_BSSID;
+
+typedef struct _NDIS_802_11_BSSID_LIST
+{
+ ULONG NumberOfItems;
+ NDIS_WLAN_BSSID Bssid[1];
+} NDIS_802_11_BSSID_LIST, *PNDIS_802_11_BSSID_LIST;
+
+
+typedef struct _NDIS_WLAN_BSSID_EX
+{
+ ULONG Length;
+ NDIS_802_11_MAC_ADDRESS MacAddress;
+ UCHAR Reserved[2];
+ NDIS_802_11_SSID Ssid;
+ ULONG Privacy;
+ NDIS_802_11_RSSI Rssi;
+
+ NDIS_802_11_NETWORK_TYPE NetworkTypeInUse;
+ NDIS_802_11_CONFIGURATION Configuration;
+ NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode;
+ NDIS_802_11_RATES_EX SupportedRates;
+ ULONG IELength;
+ UCHAR IEs[1];
+} NDIS_WLAN_BSSID_EX, *PNDIS_WLAN_BSSID_EX;
+
+typedef struct _NDIS_802_11_BSSID_LIST_EX
+{
+ ULONG NumberOfItems;
+ NDIS_WLAN_BSSID_EX Bssid[1];
+} NDIS_802_11_BSSID_LIST_EX, *PNDIS_802_11_BSSID_LIST_EX;
+
+typedef struct _NDIS_802_11_FIXED_IEs
+{
+ UCHAR Timestamp[8];
+ USHORT BeaconInterval;
+ USHORT Capabilities;
+} NDIS_802_11_FIXED_IEs, *PNDIS_802_11_FIXED_IEs;
+
+typedef struct _NDIS_802_11_VARIABLE_IEs
+{
+ UCHAR ElementID;
+ UCHAR Length;
+ UCHAR data[1];
+} NDIS_802_11_VARIABLE_IEs, *PNDIS_802_11_VARIABLE_IEs;
+
+typedef ULONG NDIS_802_11_FRAGMENTATION_THRESHOLD;
+
+typedef ULONG NDIS_802_11_RTS_THRESHOLD;
+
+typedef ULONG NDIS_802_11_ANTENNA;
+
+typedef enum _NDIS_802_11_PRIVACY_FILTER
+{
+ Ndis802_11PrivFilterAcceptAll,
+ Ndis802_11PrivFilter8021xWEP
+} NDIS_802_11_PRIVACY_FILTER, *PNDIS_802_11_PRIVACY_FILTER;
+
+
+
+typedef enum _NDIS_802_11_WEP_STATUS
+{
+ Ndis802_11WEPEnabled,
+ Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled,
+ Ndis802_11WEPDisabled,
+ Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled,
+ Ndis802_11WEPKeyAbsent,
+ Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent,
+ Ndis802_11WEPNotSupported,
+ Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported,
+ Ndis802_11Encryption2Enabled,
+ Ndis802_11Encryption2KeyAbsent,
+ Ndis802_11Encryption3Enabled,
+ Ndis802_11Encryption3KeyAbsent
+} NDIS_802_11_WEP_STATUS, *PNDIS_802_11_WEP_STATUS,
+ NDIS_802_11_ENCRYPTION_STATUS, *PNDIS_802_11_ENCRYPTION_STATUS;
+
+typedef enum _NDIS_802_11_RELOAD_DEFAULTS
+{
+ Ndis802_11ReloadWEPKeys
+} NDIS_802_11_RELOAD_DEFAULTS, *PNDIS_802_11_RELOAD_DEFAULTS;
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_802_11_AI_REQFI
+{
+ USHORT Capabilities;
+ USHORT ListenInterval;
+ NDIS_802_11_MAC_ADDRESS CurrentAPAddress;
+} NDIS_802_11_AI_REQFI, *PNDIS_802_11_AI_REQFI;
+
+typedef struct _NDIS_802_11_AI_RESFI
+{
+ USHORT Capabilities;
+ USHORT StatusCode;
+ USHORT AssociationId;
+} NDIS_802_11_AI_RESFI, *PNDIS_802_11_AI_RESFI;
+
+typedef struct _NDIS_802_11_ASSOCIATION_INFORMATION
+{
+ ULONG Length;
+ USHORT AvailableRequestFixedIEs;
+ NDIS_802_11_AI_REQFI RequestFixedIEs;
+ ULONG RequestIELength;
+ ULONG OffsetRequestIEs;
+ USHORT AvailableResponseFixedIEs;
+ NDIS_802_11_AI_RESFI ResponseFixedIEs;
+ ULONG ResponseIELength;
+ ULONG OffsetResponseIEs;
+} NDIS_802_11_ASSOCIATION_INFORMATION, *PNDIS_802_11_ASSOCIATION_INFORMATION;
+
+typedef struct _NDIS_802_11_AUTHENTICATION_EVENT
+{
+ NDIS_802_11_STATUS_INDICATION Status;
+ NDIS_802_11_AUTHENTICATION_REQUEST Request[1];
+} NDIS_802_11_AUTHENTICATION_EVENT, *PNDIS_802_11_AUTHENTICATION_EVENT;
+
+typedef struct _NDIS_802_11_TEST
+{
+ ULONG Length;
+ ULONG Type;
+ union
+ {
+ NDIS_802_11_AUTHENTICATION_EVENT AuthenticationEvent;
+ NDIS_802_11_RSSI RssiTrigger;
+ };
+} NDIS_802_11_TEST, *PNDIS_802_11_TEST;
+
+
+typedef enum _NDIS_802_11_MEDIA_STREAM_MODE
+{
+ Ndis802_11MediaStreamOff,
+ Ndis802_11MediaStreamOn,
+} NDIS_802_11_MEDIA_STREAM_MODE, *PNDIS_802_11_MEDIA_STREAM_MODE;
+
+
+typedef UCHAR NDIS_802_11_PMKID_VALUE[16];
+
+typedef struct _BSSID_INFO
+{
+ NDIS_802_11_MAC_ADDRESS BSSID;
+ NDIS_802_11_PMKID_VALUE PMKID;
+} BSSID_INFO, *PBSSID_INFO;
+
+typedef struct _NDIS_802_11_PMKID
+{
+ ULONG Length;
+ ULONG BSSIDInfoCount;
+ BSSID_INFO BSSIDInfo[1];
+} NDIS_802_11_PMKID, *PNDIS_802_11_PMKID;
+
+typedef struct _NDIS_802_11_AUTHENTICATION_ENCRYPTION
+{
+ NDIS_802_11_AUTHENTICATION_MODE AuthModeSupported;
+ NDIS_802_11_ENCRYPTION_STATUS EncryptStatusSupported;
+} NDIS_802_11_AUTHENTICATION_ENCRYPTION, *PNDIS_802_11_AUTHENTICATION_ENCRYPTION;
+
+typedef struct _NDIS_802_11_CAPABILITY
+{
+ ULONG Length;
+ ULONG Version;
+ ULONG NoOfPMKIDs;
+ ULONG NoOfAuthEncryptPairsSupported;
+ NDIS_802_11_AUTHENTICATION_ENCRYPTION AuthenticationEncryptionSupported[1];
+} NDIS_802_11_CAPABILITY, *PNDIS_802_11_CAPABILITY;
+
+typedef struct _NDIS_802_11_NON_BCAST_SSID_LIST
+{
+ ULONG NumberOfItems;
+ NDIS_802_11_SSID Non_Bcast_Ssid[1];
+} NDIS_802_11_NON_BCAST_SSID_LIST, *PNDIS_802_11_NON_BCAST_SSID_LIST;
+
+
+typedef enum _NDIS_802_11_RADIO_STATUS
+{
+ Ndis802_11RadioStatusOn,
+ Ndis802_11RadioStatusHardwareOff,
+ Ndis802_11RadioStatusSoftwareOff,
+ Ndis802_11RadioStatusHardwareSoftwareOff,
+ Ndis802_11RadioStatusMax
+}
+NDIS_802_11_RADIO_STATUS, *PNDIS_802_11_RADIO_STATUS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1804 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+#line 1813 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+#line 1815 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1854 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1889 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+#line 1895 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1910 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+#line 1916 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1968 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2008 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+#line 2011 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2037 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2075 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+typedef struct NDIS_CO_DEVICE_PROFILE
+{
+ NDIS_VAR_DATA_DESC DeviceDescription;
+ NDIS_VAR_DATA_DESC DevSpecificInfo;
+
+ ULONG ulTAPISupplementaryPassThru;
+ ULONG ulAddressModes;
+ ULONG ulNumAddresses;
+ ULONG ulBearerModes;
+ ULONG ulMaxTxRate;
+ ULONG ulMinTxRate;
+ ULONG ulMaxRxRate;
+ ULONG ulMinRxRate;
+ ULONG ulMediaModes;
+
+
+
+
+ ULONG ulGenerateToneModes;
+ ULONG ulGenerateToneMaxNumFreq;
+ ULONG ulGenerateDigitModes;
+ ULONG ulMonitorToneMaxNumFreq;
+ ULONG ulMonitorToneMaxNumEntries;
+ ULONG ulMonitorDigitModes;
+ ULONG ulGatherDigitsMinTimeout;
+ ULONG ulGatherDigitsMaxTimeout;
+
+ ULONG ulDevCapFlags;
+ ULONG ulMaxNumActiveCalls;
+ ULONG ulAnswerMode;
+
+
+
+
+ ULONG ulUUIAcceptSize;
+ ULONG ulUUIAnswerSize;
+ ULONG ulUUIMakeCallSize;
+ ULONG ulUUIDropSize;
+ ULONG ulUUISendUserUserInfoSize;
+ ULONG ulUUICallInfoSize;
+
+} NDIS_CO_DEVICE_PROFILE, *PNDIS_CO_DEVICE_PROFILE;
+
+
+
+
+
+typedef ULONG IPAddr, IPMask;
+#line 2132 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+typedef ULONG SPI_TYPE;
+
+typedef enum _OFFLOAD_OPERATION_E
+{
+ AUTHENTICATE = 1,
+ ENCRYPT
+}
+ OFFLOAD_OPERATION_E;
+
+typedef struct _OFFLOAD_ALGO_INFO
+{
+ ULONG algoIdentifier;
+ ULONG algoKeylen;
+ ULONG algoRounds;
+}
+ OFFLOAD_ALGO_INFO,
+ *POFFLOAD_ALGO_INFO;
+
+typedef enum _OFFLOAD_CONF_ALGO
+{
+ OFFLOAD_IPSEC_CONF_NONE,
+ OFFLOAD_IPSEC_CONF_DES,
+ OFFLOAD_IPSEC_CONF_RESERVED,
+ OFFLOAD_IPSEC_CONF_3_DES,
+ OFFLOAD_IPSEC_CONF_MAX
+}
+ OFFLOAD_CONF_ALGO;
+
+typedef enum _OFFLOAD_INTEGRITY_ALGO
+{
+ OFFLOAD_IPSEC_INTEGRITY_NONE,
+ OFFLOAD_IPSEC_INTEGRITY_MD5,
+ OFFLOAD_IPSEC_INTEGRITY_SHA,
+ OFFLOAD_IPSEC_INTEGRITY_MAX
+}
+ OFFLOAD_INTEGRITY_ALGO;
+
+typedef struct _OFFLOAD_SECURITY_ASSOCIATION
+{
+ OFFLOAD_OPERATION_E Operation;
+ SPI_TYPE SPI;
+ OFFLOAD_ALGO_INFO IntegrityAlgo;
+ OFFLOAD_ALGO_INFO ConfAlgo;
+ OFFLOAD_ALGO_INFO Reserved;
+}
+ OFFLOAD_SECURITY_ASSOCIATION,
+ *POFFLOAD_SECURITY_ASSOCIATION;
+
+
+
+
+
+
+typedef struct _OFFLOAD_IPSEC_ADD_SA
+{
+ IPAddr SrcAddr;
+ IPMask SrcMask;
+ IPAddr DestAddr;
+ IPMask DestMask;
+ ULONG Protocol;
+ USHORT SrcPort;
+ USHORT DestPort;
+ IPAddr SrcTunnelAddr;
+ IPAddr DestTunnelAddr;
+ USHORT Flags;
+ SHORT NumSAs;
+ OFFLOAD_SECURITY_ASSOCIATION SecAssoc[3];
+ HANDLE OffloadHandle;
+ ULONG KeyLen;
+ UCHAR KeyMat[1];
+} OFFLOAD_IPSEC_ADD_SA, *POFFLOAD_IPSEC_ADD_SA;
+
+typedef struct _OFFLOAD_IPSEC_DELETE_SA
+{
+ HANDLE OffloadHandle;
+} OFFLOAD_IPSEC_DELETE_SA, *POFFLOAD_IPSEC_DELETE_SA;
+
+
+typedef enum _UDP_ENCAP_TYPE
+{
+ OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_IKE,
+ OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_OTHER
+} UDP_ENCAP_TYPE, * PUDP_ENCAP_TYPE;
+
+
+typedef struct _OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY
+{
+ UDP_ENCAP_TYPE UdpEncapType;
+ USHORT DstEncapPort;
+} OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY, * POFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY;
+
+
+typedef struct _OFFLOAD_IPSEC_ADD_UDPESP_SA
+{
+ IPAddr SrcAddr;
+ IPMask SrcMask;
+ IPAddr DstAddr;
+ IPMask DstMask;
+ ULONG Protocol;
+ USHORT SrcPort;
+ USHORT DstPort;
+ IPAddr SrcTunnelAddr;
+ IPAddr DstTunnelAddr;
+ USHORT Flags;
+ SHORT NumSAs;
+ OFFLOAD_SECURITY_ASSOCIATION SecAssoc[3];
+ HANDLE OffloadHandle;
+ OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY EncapTypeEntry;
+ HANDLE EncapTypeEntryOffldHandle;
+ ULONG KeyLen;
+ UCHAR KeyMat[1];
+} OFFLOAD_IPSEC_ADD_UDPESP_SA, * POFFLOAD_IPSEC_ADD_UDPESP_SA;
+
+
+typedef struct _OFFLOAD_IPSEC_DELETE_UDPESP_SA
+{
+ HANDLE OffloadHandle;
+ HANDLE EncapTypeEntryOffldHandle;
+} OFFLOAD_IPSEC_DELETE_UDPESP_SA, * POFFLOAD_IPSEC_DELETE_UDPESP_SA;
+
+
+
+
+
+
+
+typedef ULONG NDIS_VLAN_ID;
+
+
+
+
+typedef enum _NDIS_MEDIUM
+{
+ NdisMedium802_3,
+ NdisMedium802_5,
+ NdisMediumFddi,
+ NdisMediumWan,
+ NdisMediumLocalTalk,
+ NdisMediumDix,
+ NdisMediumArcnetRaw,
+ NdisMediumArcnet878_2,
+ NdisMediumAtm,
+ NdisMediumWirelessWan,
+ NdisMediumIrda,
+ NdisMediumBpc,
+ NdisMediumCoWan,
+ NdisMedium1394,
+ NdisMediumInfiniBand,
+
+ NdisMediumTunnel,
+ NdisMediumNative802_11,
+ NdisMediumLoopback,
+#line 2285 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+ NdisMediumWiMAX,
+ NdisMediumIP,
+#line 2290 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+ NdisMediumMax
+} NDIS_MEDIUM, *PNDIS_MEDIUM;
+
+
+
+
+
+typedef enum _NDIS_PHYSICAL_MEDIUM
+{
+ NdisPhysicalMediumUnspecified,
+ NdisPhysicalMediumWirelessLan,
+ NdisPhysicalMediumCableModem,
+ NdisPhysicalMediumPhoneLine,
+ NdisPhysicalMediumPowerLine,
+ NdisPhysicalMediumDSL,
+ NdisPhysicalMediumFibreChannel,
+ NdisPhysicalMedium1394,
+ NdisPhysicalMediumWirelessWan,
+ NdisPhysicalMediumNative802_11,
+ NdisPhysicalMediumBluetooth,
+ NdisPhysicalMediumInfiniband,
+ NdisPhysicalMediumWiMax,
+ NdisPhysicalMediumUWB,
+ NdisPhysicalMedium802_3,
+ NdisPhysicalMedium802_5,
+ NdisPhysicalMediumIrda,
+ NdisPhysicalMediumWiredWAN,
+ NdisPhysicalMediumWiredCoWan,
+ NdisPhysicalMediumOther,
+ NdisPhysicalMediumNative802_15_4,
+ NdisPhysicalMediumMax
+} NDIS_PHYSICAL_MEDIUM, *PNDIS_PHYSICAL_MEDIUM;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _TRANSPORT_HEADER_OFFSET
+{
+ USHORT ProtocolType;
+ USHORT HeaderOffset;
+} TRANSPORT_HEADER_OFFSET, *PTRANSPORT_HEADER_OFFSET;
+
+
+
+
+
+typedef struct _NETWORK_ADDRESS
+{
+ USHORT AddressLength;
+ USHORT AddressType;
+ UCHAR Address[1];
+} NETWORK_ADDRESS, *PNETWORK_ADDRESS;
+
+
+
+
+typedef struct _NETWORK_ADDRESS_LIST
+{
+ LONG AddressCount;
+ USHORT AddressType;
+ NETWORK_ADDRESS Address[1];
+} NETWORK_ADDRESS_LIST, *PNETWORK_ADDRESS_LIST;
+
+
+
+
+typedef struct _NETWORK_ADDRESS_IP
+{
+ USHORT sin_port;
+ ULONG in_addr;
+ UCHAR sin_zero[8];
+} NETWORK_ADDRESS_IP, *PNETWORK_ADDRESS_IP;
+
+
+
+
+
+
+typedef struct _NETWORK_ADDRESS_IP6 {
+ USHORT sin6_port;
+ ULONG sin6_flowinfo;
+ USHORT sin6_addr[8];
+ ULONG sin6_scope_id;
+} NETWORK_ADDRESS_IP6, *PNETWORK_ADDRESS_IP6;
+
+
+
+
+
+
+typedef struct _NETWORK_ADDRESS_IPX
+{
+ ULONG NetworkAddress;
+ UCHAR NodeAddress[6];
+ USHORT Socket;
+} NETWORK_ADDRESS_IPX, *PNETWORK_ADDRESS_IPX;
+
+
+
+
+
+
+
+typedef enum _NDIS_HARDWARE_STATUS
+{
+ NdisHardwareStatusReady,
+ NdisHardwareStatusInitializing,
+ NdisHardwareStatusReset,
+ NdisHardwareStatusClosing,
+ NdisHardwareStatusNotReady
+} NDIS_HARDWARE_STATUS, *PNDIS_HARDWARE_STATUS;
+
+
+
+
+
+typedef struct _GEN_GET_TIME_CAPS
+{
+ ULONG Flags;
+ ULONG ClockPrecision;
+} GEN_GET_TIME_CAPS, *PGEN_GET_TIME_CAPS;
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _GEN_GET_NETCARD_TIME
+{
+ ULONGLONG ReadTime;
+} GEN_GET_NETCARD_TIME, *PGEN_GET_NETCARD_TIME;
+
+
+
+
+typedef struct _NDIS_PM_PACKET_PATTERN
+{
+ ULONG Priority;
+ ULONG Reserved;
+ ULONG MaskSize;
+ ULONG PatternOffset;
+
+ ULONG PatternSize;
+ ULONG PatternFlags;
+} NDIS_PM_PACKET_PATTERN, *PNDIS_PM_PACKET_PATTERN;
+
+
+
+
+
+typedef enum _NDIS_DEVICE_POWER_STATE
+{
+ NdisDeviceStateUnspecified = 0,
+ NdisDeviceStateD0,
+ NdisDeviceStateD1,
+ NdisDeviceStateD2,
+ NdisDeviceStateD3,
+ NdisDeviceStateMaximum
+} NDIS_DEVICE_POWER_STATE, *PNDIS_DEVICE_POWER_STATE;
+
+
+
+
+typedef struct _NDIS_PM_WAKE_UP_CAPABILITIES
+{
+ NDIS_DEVICE_POWER_STATE MinMagicPacketWakeUp;
+ NDIS_DEVICE_POWER_STATE MinPatternWakeUp;
+ NDIS_DEVICE_POWER_STATE MinLinkChangeWakeUp;
+} NDIS_PM_WAKE_UP_CAPABILITIES, *PNDIS_PM_WAKE_UP_CAPABILITIES;
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_PNP_CAPABILITIES
+{
+ ULONG Flags;
+ NDIS_PM_WAKE_UP_CAPABILITIES WakeUpCapabilities;
+} NDIS_PNP_CAPABILITIES, *PNDIS_PNP_CAPABILITIES;
+
+
+
+
+typedef enum _NDIS_FDDI_ATTACHMENT_TYPE
+{
+ NdisFddiTypeIsolated = 1,
+ NdisFddiTypeLocalA,
+ NdisFddiTypeLocalB,
+ NdisFddiTypeLocalAB,
+ NdisFddiTypeLocalS,
+ NdisFddiTypeWrapA,
+ NdisFddiTypeWrapB,
+ NdisFddiTypeWrapAB,
+ NdisFddiTypeWrapS,
+ NdisFddiTypeCWrapA,
+ NdisFddiTypeCWrapB,
+ NdisFddiTypeCWrapS,
+ NdisFddiTypeThrough
+} NDIS_FDDI_ATTACHMENT_TYPE, *PNDIS_FDDI_ATTACHMENT_TYPE;
+
+
+
+
+
+typedef enum _NDIS_FDDI_RING_MGT_STATE
+{
+ NdisFddiRingIsolated = 1,
+ NdisFddiRingNonOperational,
+ NdisFddiRingOperational,
+ NdisFddiRingDetect,
+ NdisFddiRingNonOperationalDup,
+ NdisFddiRingOperationalDup,
+ NdisFddiRingDirected,
+ NdisFddiRingTrace
+} NDIS_FDDI_RING_MGT_STATE, *PNDIS_FDDI_RING_MGT_STATE;
+
+
+
+
+
+typedef enum _NDIS_FDDI_LCONNECTION_STATE
+{
+ NdisFddiStateOff = 1,
+ NdisFddiStateBreak,
+ NdisFddiStateTrace,
+ NdisFddiStateConnect,
+ NdisFddiStateNext,
+ NdisFddiStateSignal,
+ NdisFddiStateJoin,
+ NdisFddiStateVerify,
+ NdisFddiStateActive,
+ NdisFddiStateMaintenance
+} NDIS_FDDI_LCONNECTION_STATE, *PNDIS_FDDI_LCONNECTION_STATE;
+
+
+
+
+
+
+
+typedef enum _NDIS_WAN_MEDIUM_SUBTYPE
+{
+ NdisWanMediumHub,
+ NdisWanMediumX_25,
+ NdisWanMediumIsdn,
+ NdisWanMediumSerial,
+ NdisWanMediumFrameRelay,
+ NdisWanMediumAtm,
+ NdisWanMediumSonet,
+ NdisWanMediumSW56K,
+ NdisWanMediumPPTP,
+ NdisWanMediumL2TP,
+ NdisWanMediumIrda,
+ NdisWanMediumParallel,
+ NdisWanMediumPppoe,
+
+ NdisWanMediumSSTP,
+ NdisWanMediumAgileVPN,
+#line 2575 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+ NdisWanMediumGre,
+#line 2578 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+ NdisWanMediumSubTypeMax
+} NDIS_WAN_MEDIUM_SUBTYPE, *PNDIS_WAN_MEDIUM_SUBTYPE;
+
+
+
+
+
+typedef enum _NDIS_WAN_HEADER_FORMAT
+{
+ NdisWanHeaderNative,
+ NdisWanHeaderEthernet
+} NDIS_WAN_HEADER_FORMAT, *PNDIS_WAN_HEADER_FORMAT;
+
+
+
+
+
+typedef enum _NDIS_WAN_QUALITY
+{
+ NdisWanRaw,
+ NdisWanErrorControl,
+ NdisWanReliable
+} NDIS_WAN_QUALITY, *PNDIS_WAN_QUALITY;
+
+
+
+
+
+typedef struct _NDIS_WAN_PROTOCOL_CAPS
+{
+ ULONG Flags;
+ ULONG Reserved;
+} NDIS_WAN_PROTOCOL_CAPS, *PNDIS_WAN_PROTOCOL_CAPS;
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _NDIS_802_5_RING_STATE
+{
+ NdisRingStateOpened = 1,
+ NdisRingStateClosed,
+ NdisRingStateOpening,
+ NdisRingStateClosing,
+ NdisRingStateOpenFailure,
+ NdisRingStateRingFailure
+} NDIS_802_5_RING_STATE, *PNDIS_802_5_RING_STATE;
+
+
+
+
+typedef enum _NDIS_MEDIA_STATE
+{
+ NdisMediaStateConnected,
+ NdisMediaStateDisconnected
+} NDIS_MEDIA_STATE, *PNDIS_MEDIA_STATE;
+
+
+
+
+typedef ULONG Priority_802_3;
+
+
+
+
+
+
+
+typedef struct _NDIS_CO_LINK_SPEED
+{
+ ULONG Outbound;
+ ULONG Inbound;
+} NDIS_CO_LINK_SPEED, *PNDIS_CO_LINK_SPEED;
+
+
+
+
+
+
+
+typedef struct _NDIS_LINK_SPEED
+{
+ ULONG64 XmitLinkSpeed;
+ ULONG64 RcvLinkSpeed;
+} NDIS_LINK_SPEED, *PNDIS_LINK_SPEED;
+
+
+
+
+
+
+#line 2676 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+#pragma region Desktop Family
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4820)
+#line 29 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+
+
+
+
+#pragma warning(disable:4201)
+
+
+
+
+#pragma warning(disable:4214)
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\WlanTypes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma region Desktop Family
+
+
+
+typedef enum _DOT11_BSS_TYPE {
+ dot11_BSS_type_infrastructure = 1,
+ dot11_BSS_type_independent = 2,
+ dot11_BSS_type_any = 3
+} DOT11_BSS_TYPE, * PDOT11_BSS_TYPE;
+
+
+typedef struct _DOT11_SSID {
+
+
+#line 34 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\WlanTypes.h"
+ ULONG uSSIDLength;
+ UCHAR ucSSID[32];
+} DOT11_SSID, * PDOT11_SSID;
+
+
+
+
+
+
+
+typedef enum _DOT11_AUTH_ALGORITHM {
+#line 46 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\WlanTypes.h"
+ DOT11_AUTH_ALGO_80211_OPEN = 1,
+ DOT11_AUTH_ALGO_80211_SHARED_KEY = 2,
+ DOT11_AUTH_ALGO_WPA = 3,
+ DOT11_AUTH_ALGO_WPA_PSK = 4,
+ DOT11_AUTH_ALGO_WPA_NONE = 5,
+ DOT11_AUTH_ALGO_RSNA = 6,
+ DOT11_AUTH_ALGO_RSNA_PSK = 7,
+ DOT11_AUTH_ALGO_WPA3 = 8,
+
+ DOT11_AUTH_ALGO_WPA3_ENT_192 = DOT11_AUTH_ALGO_WPA3,
+#line 57 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\WlanTypes.h"
+ DOT11_AUTH_ALGO_WPA3_SAE = 9,
+
+ DOT11_AUTH_ALGO_OWE = 10,
+#line 61 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\WlanTypes.h"
+
+ DOT11_AUTH_ALGO_WPA3_ENT = 11,
+#line 64 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\WlanTypes.h"
+ DOT11_AUTH_ALGO_IHV_START = 0x80000000,
+ DOT11_AUTH_ALGO_IHV_END = 0xffffffff
+} DOT11_AUTH_ALGORITHM, * PDOT11_AUTH_ALGORITHM;
+
+
+
+
+
+
+
+
+
+
+
+#line 79 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\WlanTypes.h"
+
+
+
+#line 83 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\WlanTypes.h"
+
+
+#line 86 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\WlanTypes.h"
+
+
+
+
+
+typedef enum _DOT11_CIPHER_ALGORITHM {
+#line 93 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\WlanTypes.h"
+ DOT11_CIPHER_ALGO_NONE = 0x00,
+ DOT11_CIPHER_ALGO_WEP40 = 0x01,
+ DOT11_CIPHER_ALGO_TKIP = 0x02,
+ DOT11_CIPHER_ALGO_CCMP = 0x04,
+ DOT11_CIPHER_ALGO_WEP104 = 0x05,
+ DOT11_CIPHER_ALGO_BIP = 0x06,
+ DOT11_CIPHER_ALGO_GCMP = 0x08,
+ DOT11_CIPHER_ALGO_GCMP_256 = 0x09,
+ DOT11_CIPHER_ALGO_CCMP_256 = 0x0a,
+ DOT11_CIPHER_ALGO_BIP_GMAC_128 = 0x0b,
+ DOT11_CIPHER_ALGO_BIP_GMAC_256 = 0x0c,
+ DOT11_CIPHER_ALGO_BIP_CMAC_256 = 0x0d,
+ DOT11_CIPHER_ALGO_WPA_USE_GROUP = 0x100,
+ DOT11_CIPHER_ALGO_RSN_USE_GROUP = 0x100,
+ DOT11_CIPHER_ALGO_WEP = 0x101,
+ DOT11_CIPHER_ALGO_IHV_START = 0x80000000,
+ DOT11_CIPHER_ALGO_IHV_END = 0xffffffff
+} DOT11_CIPHER_ALGORITHM, * PDOT11_CIPHER_ALGORITHM;
+
+typedef struct DOT11_AUTH_CIPHER_PAIR {
+ DOT11_AUTH_ALGORITHM AuthAlgoId;
+ DOT11_CIPHER_ALGORITHM CipherAlgoId;
+} DOT11_AUTH_CIPHER_PAIR, * PDOT11_AUTH_CIPHER_PAIR;
+
+
+
+
+typedef struct _DOT11_OI {
+ USHORT OILength;
+ UCHAR OI[5];
+} DOT11_OI, *PDOT11_OI;
+
+
+
+
+typedef struct DOT11_ACCESSNETWORKOPTIONS {
+ UINT8 AccessNetworkType;
+ UINT8 Internet;
+ UINT8 ASRA;
+ UINT8 ESR;
+ UINT8 UESA;
+} DOT11_ACCESSNETWORKOPTIONS, *PDOT11_ACCESSNETWORKOPTIONS;
+
+typedef struct DOT11_VENUEINFO {
+ UINT8 VenueGroup;
+ UINT8 VenueType;
+} DOT11_VENUEINFO, *PDOT11_VENUEINFO;
+
+
+#line 143 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\WlanTypes.h"
+#pragma endregion
+
+#line 146 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\WlanTypes.h"
+#pragma external_header(pop)
+#line 45 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+
+
+
+
+
+
+
+ typedef UCHAR DOT11_MAC_ADDRESS[6];
+ typedef DOT11_MAC_ADDRESS * PDOT11_MAC_ADDRESS;
+#line 55 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+
+
+typedef struct DOT11_BSSID_LIST {
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+
+
+
+ DOT11_MAC_ADDRESS BSSIDs[1];
+#line 67 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+} DOT11_BSSID_LIST, * PDOT11_BSSID_LIST;
+
+
+typedef UCHAR DOT11_HESSID[6];
+typedef DOT11_HESSID* PDOT11_HESSID;
+
+
+
+
+
+typedef enum _DOT11_PHY_TYPE {
+#line 79 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+ dot11_phy_type_unknown = 0,
+ dot11_phy_type_any = dot11_phy_type_unknown,
+ dot11_phy_type_fhss = 1,
+ dot11_phy_type_dsss = 2,
+ dot11_phy_type_irbaseband = 3,
+ dot11_phy_type_ofdm = 4,
+ dot11_phy_type_hrdsss = 5,
+ dot11_phy_type_erp = 6,
+ dot11_phy_type_ht = 7,
+ dot11_phy_type_vht = 8,
+ dot11_phy_type_dmg = 9,
+ dot11_phy_type_he = 10,
+ dot11_phy_type_eht = 11,
+ dot11_phy_type_IHV_start = 0x80000000,
+ dot11_phy_type_IHV_end = 0xffffffff
+} DOT11_PHY_TYPE, * PDOT11_PHY_TYPE;
+
+
+typedef struct _DOT11_RATE_SET {
+ ULONG uRateSetLength;
+ UCHAR ucRateSet[126];
+} DOT11_RATE_SET, * PDOT11_RATE_SET;
+
+typedef UCHAR DOT11_COUNTRY_OR_REGION_STRING[3];
+typedef DOT11_COUNTRY_OR_REGION_STRING * PDOT11_COUNTRY_OR_REGION_STRING;
+
+typedef UCHAR DOT11_DIALOG_TOKEN;
+typedef UCHAR DOT11_WFD_STATUS_CODE;
+typedef UCHAR DOT11_WFD_MINOR_REASON_CODE;
+
+typedef UCHAR DOT11_WFD_SERVICE_HASH[6];
+
+
+
+
+
+
+
+typedef struct _DOT11_WFD_SESSION_INFO {
+ USHORT uSessionInfoLength;
+ UCHAR ucSessionInfo[144];
+} DOT11_WFD_SESSION_INFO, *PDOT11_WFD_SESSION_INFO;
+
+
+
+
+#line 126 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+
+
+
+
+
+#line 132 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 213 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef struct _DOT11_OFFLOAD_CAPABILITY {
+ ULONG uReserved;
+ ULONG uFlags;
+ ULONG uSupportedWEPAlgorithms;
+ ULONG uNumOfReplayWindows;
+ ULONG uMaxWEPKeyMappingLength;
+ ULONG uSupportedAuthAlgorithms;
+ ULONG uMaxAuthKeyMappingLength;
+ } DOT11_OFFLOAD_CAPABILITY, * PDOT11_OFFLOAD_CAPABILITY;
+
+
+ typedef struct _DOT11_CURRENT_OFFLOAD_CAPABILITY {
+ ULONG uReserved;
+ ULONG uFlags;
+ } DOT11_CURRENT_OFFLOAD_CAPABILITY, * PDOT11_CURRENT_OFFLOAD_CAPABILITY;
+
+
+
+
+
+
+
+ typedef enum _DOT11_OFFLOAD_TYPE {
+ dot11_offload_type_wep = 1,
+ dot11_offload_type_auth = 2
+ } DOT11_OFFLOAD_TYPE, * PDOT11_OFFLOAD_TYPE;
+ typedef struct _DOT11_IV48_COUNTER {
+ ULONG uIV32Counter;
+ USHORT usIV16Counter;
+ } DOT11_IV48_COUNTER, * PDOT11_IV48_COUNTER;
+ typedef struct _DOT11_WEP_OFFLOAD {
+ ULONG uReserved;
+ HANDLE hOffloadContext;
+ HANDLE hOffload;
+ DOT11_OFFLOAD_TYPE dot11OffloadType;
+ ULONG dwAlgorithm;
+ BOOLEAN bRowIsOutbound;
+ BOOLEAN bUseDefault;
+ ULONG uFlags;
+ UCHAR ucMacAddress[6];
+ ULONG uNumOfRWsOnPeer;
+ ULONG uNumOfRWsOnMe;
+ DOT11_IV48_COUNTER dot11IV48Counters[16];
+ USHORT usDot11RWBitMaps[16];
+ USHORT usKeyLength;
+ UCHAR ucKey[1];
+ } DOT11_WEP_OFFLOAD, * PDOT11_WEP_OFFLOAD;
+
+
+ typedef struct _DOT11_WEP_UPLOAD {
+ ULONG uReserved;
+ DOT11_OFFLOAD_TYPE dot11OffloadType;
+ HANDLE hOffload;
+ ULONG uNumOfRWsUsed;
+ DOT11_IV48_COUNTER dot11IV48Counters[16];
+ USHORT usDot11RWBitMaps[16];
+ } DOT11_WEP_UPLOAD, * PDOT11_WEP_UPLOAD;
+
+
+ typedef enum _DOT11_KEY_DIRECTION {
+ dot11_key_direction_both = 1,
+ dot11_key_direction_inbound = 2,
+ dot11_key_direction_outbound = 3
+ } DOT11_KEY_DIRECTION, * PDOT11_KEY_DIRECTION;
+ typedef struct _DOT11_DEFAULT_WEP_OFFLOAD {
+ ULONG uReserved;
+ HANDLE hOffloadContext;
+ HANDLE hOffload;
+ ULONG dwIndex;
+ DOT11_OFFLOAD_TYPE dot11OffloadType;
+ ULONG dwAlgorithm;
+ ULONG uFlags;
+ DOT11_KEY_DIRECTION dot11KeyDirection;
+ UCHAR ucMacAddress[6];
+ ULONG uNumOfRWsOnMe;
+ DOT11_IV48_COUNTER dot11IV48Counters[16];
+ USHORT usDot11RWBitMaps[16];
+ USHORT usKeyLength;
+ UCHAR ucKey[1];
+ } DOT11_DEFAULT_WEP_OFFLOAD, * PDOT11_DEFAULT_WEP_OFFLOAD;
+
+
+ typedef struct _DOT11_DEFAULT_WEP_UPLOAD {
+ ULONG uReserved;
+ DOT11_OFFLOAD_TYPE dot11OffloadType;
+ HANDLE hOffload;
+ ULONG uNumOfRWsUsed;
+ DOT11_IV48_COUNTER dot11IV48Counters[16];
+ USHORT usDot11RWBitMaps[16];
+ } DOT11_DEFAULT_WEP_UPLOAD, * PDOT11_DEFAULT_WEP_UPLOAD;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef struct _DOT11_OPERATION_MODE_CAPABILITY {
+ ULONG uReserved;
+ ULONG uMajorVersion;
+ ULONG uMinorVersion;
+ ULONG uNumOfTXBuffers;
+ ULONG uNumOfRXBuffers;
+ ULONG uOpModeCapability;
+ } DOT11_OPERATION_MODE_CAPABILITY, * PDOT11_OPERATION_MODE_CAPABILITY;
+
+
+ typedef struct _DOT11_CURRENT_OPERATION_MODE {
+ ULONG uReserved;
+ ULONG uCurrentOpMode;
+ } DOT11_CURRENT_OPERATION_MODE, * PDOT11_CURRENT_OPERATION_MODE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef enum _DOT11_SCAN_TYPE {
+ dot11_scan_type_active = 1,
+ dot11_scan_type_passive = 2,
+ dot11_scan_type_auto = 3,
+ dot11_scan_type_forced = 0x80000000
+ } DOT11_SCAN_TYPE, * PDOT11_SCAN_TYPE;
+ typedef struct _DOT11_SCAN_REQUEST {
+ DOT11_BSS_TYPE dot11BSSType;
+ DOT11_MAC_ADDRESS dot11BSSID;
+ DOT11_SSID dot11SSID;
+ DOT11_SCAN_TYPE dot11ScanType;
+ BOOLEAN bRestrictedScan;
+ BOOLEAN bUseRequestIE;
+ ULONG uRequestIDsOffset;
+ ULONG uNumOfRequestIDs;
+ ULONG uPhyTypesOffset;
+ ULONG uNumOfPhyTypes;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ UCHAR ucBuffer[1];
+ } DOT11_SCAN_REQUEST, * PDOT11_SCAN_REQUEST;
+
+
+ typedef enum _CH_DESCRIPTION_TYPE {
+ ch_description_type_logical = 1,
+ ch_description_type_center_frequency = 2,
+ ch_description_type_phy_specific
+ } CH_DESCRIPTION_TYPE, * PCH_DESCRIPTION_TYPE;
+ typedef struct _DOT11_PHY_TYPE_INFO {
+ DOT11_PHY_TYPE dot11PhyType;
+ BOOLEAN bUseParameters;
+ ULONG uProbeDelay;
+ ULONG uMinChannelTime;
+ ULONG uMaxChannelTime;
+ CH_DESCRIPTION_TYPE ChDescriptionType;
+ ULONG uChannelListSize;
+ UCHAR ucChannelListBuffer[1];
+ } DOT11_PHY_TYPE_INFO, * PDOT11_PHY_TYPE_INFO;
+
+ typedef struct _DOT11_SCAN_REQUEST_V2 {
+ DOT11_BSS_TYPE dot11BSSType;
+ DOT11_MAC_ADDRESS dot11BSSID;
+ DOT11_SCAN_TYPE dot11ScanType;
+ BOOLEAN bRestrictedScan;
+ ULONG udot11SSIDsOffset;
+ ULONG uNumOfdot11SSIDs;
+ BOOLEAN bUseRequestIE;
+ ULONG uRequestIDsOffset;
+ ULONG uNumOfRequestIDs;
+ ULONG uPhyTypeInfosOffset;
+ ULONG uNumOfPhyTypeInfos;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ UCHAR ucBuffer[1];
+ } DOT11_SCAN_REQUEST_V2, * PDOT11_SCAN_REQUEST_V2;
+
+
+ typedef struct DOT11_PHY_TYPE_LIST {
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ DOT11_PHY_TYPE dot11PhyType[1];
+ } DOT11_PHY_TYPE_LIST, * PDOT11_PHY_TYPE_LIST;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef struct _DOT11_BSS_DESCRIPTION {
+ ULONG uReserved;
+ DOT11_MAC_ADDRESS dot11BSSID;
+ DOT11_BSS_TYPE dot11BSSType;
+ USHORT usBeaconPeriod;
+ ULONGLONG ullTimestamp;
+ USHORT usCapabilityInformation;
+ ULONG uBufferLength;
+
+
+
+ UCHAR ucBuffer[1];
+#line 524 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+ } DOT11_BSS_DESCRIPTION, * PDOT11_BSS_DESCRIPTION;
+ typedef struct _DOT11_JOIN_REQUEST {
+ ULONG uJoinFailureTimeout;
+ DOT11_RATE_SET OperationalRateSet;
+ ULONG uChCenterFrequency;
+ DOT11_BSS_DESCRIPTION dot11BSSDescription;
+ } DOT11_JOIN_REQUEST, * PDOT11_JOIN_REQUEST;
+
+
+ typedef struct _DOT11_START_REQUEST {
+ ULONG uStartFailureTimeout;
+ DOT11_RATE_SET OperationalRateSet;
+ ULONG uChCenterFrequency;
+ DOT11_BSS_DESCRIPTION dot11BSSDescription;
+ } DOT11_START_REQUEST, * PDOT11_START_REQUEST;
+
+
+typedef enum _DOT11_UPDATE_IE_OP {
+ dot11_update_ie_op_create_replace = 1,
+ dot11_update_ie_op_delete = 2,
+} DOT11_UPDATE_IE_OP, * PDOT11_UPDATE_IE_OP;
+
+typedef struct _DOT11_UPDATE_IE {
+ DOT11_UPDATE_IE_OP dot11UpdateIEOp;
+ ULONG uBufferLength;
+ UCHAR ucBuffer[1];
+} DOT11_UPDATE_IE, * PDOT11_UPDATE_IE;
+
+
+ typedef enum _DOT11_RESET_TYPE {
+ dot11_reset_type_phy = 1,
+ dot11_reset_type_mac = 2,
+ dot11_reset_type_phy_and_mac = 3
+ } DOT11_RESET_TYPE, * PDOT11_RESET_TYPE;
+ typedef struct _DOT11_RESET_REQUEST {
+ DOT11_RESET_TYPE dot11ResetType;
+ DOT11_MAC_ADDRESS dot11MacAddress;
+ BOOLEAN bSetDefaultMIB;
+ } DOT11_RESET_REQUEST, * PDOT11_RESET_REQUEST;
+
+
+
+
+
+
+
+
+
+ typedef struct _DOT11_OPTIONAL_CAPABILITY {
+ ULONG uReserved;
+ BOOLEAN bDot11PCF;
+ BOOLEAN bDot11PCFMPDUTransferToPC;
+ BOOLEAN bStrictlyOrderedServiceClass;
+ } DOT11_OPTIONAL_CAPABILITY, * PDOT11_OPTIONAL_CAPABILITY;
+
+
+ typedef struct _DOT11_CURRENT_OPTIONAL_CAPABILITY {
+ ULONG uReserved;
+ BOOLEAN bDot11CFPollable;
+ BOOLEAN bDot11PCF;
+ BOOLEAN bDot11PCFMPDUTransferToPC;
+ BOOLEAN bStrictlyOrderedServiceClass;
+ } DOT11_CURRENT_OPTIONAL_CAPABILITY, * PDOT11_CURRENT_OPTIONAL_CAPABILITY;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef enum _DOT11_POWER_MODE {
+ dot11_power_mode_unknown = 0,
+ dot11_power_mode_active = 1,
+ dot11_power_mode_powersave = 2
+ } DOT11_POWER_MODE, * PDOT11_POWER_MODE;
+
+
+
+
+ typedef struct _DOT11_POWER_MGMT_MODE {
+ DOT11_POWER_MODE dot11PowerMode;
+ ULONG uPowerSaveLevel;
+ USHORT usListenInterval;
+ USHORT usAID;
+ BOOLEAN bReceiveDTIMs;
+ } DOT11_POWER_MGMT_MODE, * PDOT11_POWER_MGMT_MODE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef struct _DOT11_COUNTERS_ENTRY {
+ ULONG uTransmittedFragmentCount;
+ ULONG uMulticastTransmittedFrameCount;
+ ULONG uFailedCount;
+ ULONG uRetryCount;
+ ULONG uMultipleRetryCount;
+ ULONG uFrameDuplicateCount;
+ ULONG uRTSSuccessCount;
+ ULONG uRTSFailureCount;
+ ULONG uACKFailureCount;
+ ULONG uReceivedFragmentCount;
+ ULONG uMulticastReceivedFrameCount;
+ ULONG uFCSErrorCount;
+ ULONG uTransmittedFrameCount;
+ } DOT11_COUNTERS_ENTRY, * PDOT11_COUNTERS_ENTRY;
+
+
+
+
+
+
+ typedef struct _DOT11_SUPPORTED_PHY_TYPES {
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ DOT11_PHY_TYPE dot11PHYType[1];
+ } DOT11_SUPPORTED_PHY_TYPES, * PDOT11_SUPPORTED_PHY_TYPES;
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef enum _DOT11_TEMP_TYPE {
+ dot11_temp_type_unknown = 0,
+ dot11_temp_type_1 = 1,
+ dot11_temp_type_2 = 2
+ } DOT11_TEMP_TYPE, * PDOT11_TEMP_TYPE;
+
+
+
+
+
+
+
+
+
+ typedef enum _DOT11_DIVERSITY_SUPPORT {
+ dot11_diversity_support_unknown = 0,
+ dot11_diversity_support_fixedlist = 1,
+ dot11_diversity_support_notsupported = 2,
+ dot11_diversity_support_dynamic = 3
+ } DOT11_DIVERSITY_SUPPORT, * PDOT11_DIVERSITY_SUPPORT;
+
+
+
+
+
+
+
+
+
+ typedef struct _DOT11_SUPPORTED_POWER_LEVELS {
+ ULONG uNumOfSupportedPowerLevels;
+ ULONG uTxPowerLevelValues[8];
+ } DOT11_SUPPORTED_POWER_LEVELS, * PDOT11_SUPPORTED_POWER_LEVELS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef struct _DOT11_REG_DOMAIN_VALUE {
+ ULONG uRegDomainsSupportIndex;
+ ULONG uRegDomainsSupportValue;
+ } DOT11_REG_DOMAIN_VALUE, * PDOT11_REG_DOMAIN_VALUE;
+ typedef struct _DOT11_REG_DOMAINS_SUPPORT_VALUE {
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ DOT11_REG_DOMAIN_VALUE dot11RegDomainValue[1];
+ } DOT11_REG_DOMAINS_SUPPORT_VALUE, * PDOT11_REG_DOMAINS_SUPPORT_VALUE;
+
+
+
+
+
+
+ typedef struct _DOT11_SUPPORTED_ANTENNA {
+ ULONG uAntennaListIndex;
+ BOOLEAN bSupportedAntenna;
+ } DOT11_SUPPORTED_ANTENNA, * PDOT11_SUPPORTED_ANTENNA;
+ typedef struct _DOT11_SUPPORTED_ANTENNA_LIST {
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ DOT11_SUPPORTED_ANTENNA dot11SupportedAntenna[1];
+ } DOT11_SUPPORTED_ANTENNA_LIST, * PDOT11_SUPPORTED_ANTENNA_LIST;
+
+
+
+
+
+ typedef struct _DOT11_DIVERSITY_SELECTION_RX {
+ ULONG uAntennaListIndex;
+ BOOLEAN bDiversitySelectionRX;
+ } DOT11_DIVERSITY_SELECTION_RX, * PDOT11_DIVERSITY_SELECTION_RX;
+ typedef struct _DOT11_DIVERSITY_SELECTION_RX_LIST {
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ DOT11_DIVERSITY_SELECTION_RX dot11DiversitySelectionRx[1];
+ } DOT11_DIVERSITY_SELECTION_RX_LIST, * PDOT11_DIVERSITY_SELECTION_RX_LIST;
+
+
+
+
+
+
+
+
+ typedef struct _DOT11_SUPPORTED_DATA_RATES_VALUE {
+ UCHAR ucSupportedTxDataRatesValue[8];
+ UCHAR ucSupportedRxDataRatesValue[8];
+ } DOT11_SUPPORTED_DATA_RATES_VALUE, * PDOT11_SUPPORTED_DATA_RATES_VALUE;
+
+ typedef struct _DOT11_SUPPORTED_DATA_RATES_VALUE_V2 {
+ UCHAR ucSupportedTxDataRatesValue[255];
+ UCHAR ucSupportedRxDataRatesValue[255];
+ } DOT11_SUPPORTED_DATA_RATES_VALUE_V2, * PDOT11_SUPPORTED_DATA_RATES_VALUE_V2;
+
+
+ typedef DOT11_SUPPORTED_DATA_RATES_VALUE_V2
+ DOT11_SUPPORTED_DATA_RATES_VALUE_V1, * PDOT11_SUPPORTED_DATA_RATES_VALUE_V1;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _DOT11_MULTI_DOMAIN_CAPABILITY_ENTRY {
+ ULONG uMultiDomainCapabilityIndex;
+ ULONG uFirstChannelNumber;
+ ULONG uNumberOfChannels;
+ LONG lMaximumTransmitPowerLevel;
+} DOT11_MULTI_DOMAIN_CAPABILITY_ENTRY, *PDOT11_MULTI_DOMAIN_CAPABILITY_ENTRY;
+typedef struct _DOT11_MD_CAPABILITY_ENTRY_LIST {
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ DOT11_MULTI_DOMAIN_CAPABILITY_ENTRY dot11MDCapabilityEntry[1];
+} DOT11_MD_CAPABILITY_ENTRY_LIST, *PDOT11_MD_CAPABILITY_ENTRY_LIST;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef enum _DOT11_HOP_ALGO_ADOPTED {
+ dot11_hop_algo_current = 0,
+ dot11_hop_algo_hop_index = 1,
+ dot11_hop_algo_hcc = 2
+ } DOT11_HOP_ALGO_ADOPTED, * PDOT11_HOP_ALGO_ADOPTED;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _DOT11_HOPPING_PATTERN_ENTRY {
+ ULONG uHoppingPatternIndex;
+ ULONG uRandomTableFieldNumber;
+} DOT11_HOPPING_PATTERN_ENTRY, *PDOT11_HOPPING_PATTERN_ENTRY;
+typedef struct _DOT11_HOPPING_PATTERN_ENTRY_LIST {
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ DOT11_HOPPING_PATTERN_ENTRY dot11HoppingPatternEntry[1];
+} DOT11_HOPPING_PATTERN_ENTRY_LIST, *PDOT11_HOPPING_PATTERN_ENTRY_LIST;
+
+
+
+
+
+
+
+
+
+
+typedef struct _DOT11_WPA_TSC {
+ ULONG uReserved;
+ DOT11_OFFLOAD_TYPE dot11OffloadType;
+ HANDLE hOffload;
+ DOT11_IV48_COUNTER dot11IV48Counter;
+} DOT11_WPA_TSC, * PDOT11_WPA_TSC;
+
+
+
+
+
+
+typedef struct _DOT11_RSSI_RANGE {
+ DOT11_PHY_TYPE dot11PhyType;
+ ULONG uRSSIMin;
+ ULONG uRSSIMax;
+} DOT11_RSSI_RANGE, * PDOT11_RSSI_RANGE;
+
+
+
+
+
+typedef struct _DOT11_NIC_SPECIFIC_EXTENSION {
+ ULONG uBufferLength;
+ ULONG uTotalBufferLength;
+ UCHAR ucBuffer[1];
+} DOT11_NIC_SPECIFIC_EXTENSION, * PDOT11_NIC_SPECIFIC_EXTENSION;
+
+
+
+
+
+
+ typedef struct _DOT11_AP_JOIN_REQUEST {
+ ULONG uJoinFailureTimeout;
+ DOT11_RATE_SET OperationalRateSet;
+ ULONG uChCenterFrequency;
+ DOT11_BSS_DESCRIPTION dot11BSSDescription;
+ } DOT11_AP_JOIN_REQUEST, * PDOT11_AP_JOIN_REQUEST;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef struct _DOT11_RECV_SENSITIVITY {
+ UCHAR ucDataRate;
+ LONG lRSSIMin;
+ LONG lRSSIMax;
+ } DOT11_RECV_SENSITIVITY, * PDOT11_RECV_SENSITIVITY;
+
+ typedef struct _DOT11_RECV_SENSITIVITY_LIST {
+ union {
+ DOT11_PHY_TYPE dot11PhyType;
+ ULONG uPhyId;
+ };
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ DOT11_RECV_SENSITIVITY dot11RecvSensitivity[1];
+ } DOT11_RECV_SENSITIVITY_LIST, * PDOT11_RECV_SENSITIVITY_LIST;
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef enum _DOT11_AC_PARAM {
+ dot11_AC_param_BE = 0,
+ dot11_AC_param_BK = 1,
+ dot11_AC_param_VI = 2,
+ dot11_AC_param_VO = 3,
+ dot11_AC_param_max
+ } DOT11_AC_PARAM, * PDOT11_AC_PARAM;
+ typedef struct _DOT11_WME_AC_PARAMETERS {
+ UCHAR ucAccessCategoryIndex;
+ UCHAR ucAIFSN;
+ UCHAR ucECWmin;
+ UCHAR ucECWmax;
+ USHORT usTXOPLimit;
+ } DOT11_WME_AC_PARAMETERS, * PDOT11_WME_AC_PARAMETERS;
+ typedef struct _DOT11_WME_AC_PARAMTERS_LIST {
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ DOT11_WME_AC_PARAMETERS dot11WMEACParameters[1];
+ } DOT11_WME_AC_PARAMETERS_LIST, * PDOT11_WME_AC_PARAMETERS_LIST;
+
+
+ typedef struct _DOT11_WME_UPDATE_IE {
+ ULONG uParamElemMinBeaconIntervals;
+ ULONG uWMEInfoElemOffset;
+ ULONG uWMEInfoElemLength;
+ ULONG uWMEParamElemOffset;
+ ULONG uWMEParamElemLength;
+ UCHAR ucBuffer[1];
+ } DOT11_WME_UPDATE_IE, * PDOT11_WME_UPDATE_IE;
+
+
+
+
+
+
+
+
+ typedef struct _DOT11_QOS_TX_DURATION {
+ ULONG uNominalMSDUSize;
+ ULONG uMinPHYRate;
+ ULONG uDuration;
+ } DOT11_QOS_TX_DURATION, * PDOT11_QOS_TX_DURATION;
+
+
+ typedef struct _DOT11_QOS_TX_MEDIUM_TIME {
+ DOT11_MAC_ADDRESS dot11PeerAddress;
+ UCHAR ucQoSPriority;
+ ULONG uMediumTimeAdmited;
+ } DOT11_QOS_TX_MEDIUM_TIME, * PDOT11_QOS_TX_MEDIUM_TIME;
+
+
+
+
+
+ typedef struct _DOT11_SUPPORTED_OFDM_FREQUENCY {
+ ULONG uCenterFrequency;
+ } DOT11_SUPPORTED_OFDM_FREQUENCY, * PDOT11_SUPPORTED_OFDM_FREQUENCY;
+ typedef struct _DOT11_SUPPORTED_OFDM_FREQUENCY_LIST {
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ DOT11_SUPPORTED_OFDM_FREQUENCY dot11SupportedOFDMFrequency[1];
+ } DOT11_SUPPORTED_OFDM_FREQUENCY_LIST, * PDOT11_SUPPORTED_OFDM_FREQUENCY_LIST;
+
+
+ typedef struct _DOT11_SUPPORTED_DSSS_CHANNEL {
+ ULONG uChannel;
+ } DOT11_SUPPORTED_DSSS_CHANNEL, * PDOT11_SUPPORTED_DSSS_CHANNEL;
+ typedef struct _DOT11_SUPPORTED_DSSS_CHANNEL_LIST {
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ DOT11_SUPPORTED_DSSS_CHANNEL dot11SupportedDSSSChannel[1];
+ } DOT11_SUPPORTED_DSSS_CHANNEL_LIST, * PDOT11_SUPPORTED_DSSS_CHANNEL_LIST;
+
+
+
+
+
+
+typedef struct DOT11_BYTE_ARRAY {
+ NDIS_OBJECT_HEADER Header;
+ ULONG uNumOfBytes;
+ ULONG uTotalNumOfBytes;
+ UCHAR ucBuffer[1];
+} DOT11_BYTE_ARRAY, * PDOT11_BYTE_ARRAY;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef union DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO {
+ ULONG uChCenterFrequency;
+ struct {
+ ULONG uHopPattern;
+ ULONG uHopSet;
+ ULONG uDwellTime;
+ } FHSS;
+ } DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO, * PDOT11_BSS_ENTRY_PHY_SPECIFIC_INFO;
+
+ typedef struct DOT11_BSS_ENTRY {
+ ULONG uPhyId;
+ DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO PhySpecificInfo;
+ DOT11_MAC_ADDRESS dot11BSSID;
+ DOT11_BSS_TYPE dot11BSSType;
+ LONG lRSSI;
+ ULONG uLinkQuality;
+ BOOLEAN bInRegDomain;
+ USHORT usBeaconPeriod;
+ ULONGLONG ullTimestamp;
+ ULONGLONG ullHostTimestamp;
+ USHORT usCapabilityInformation;
+ ULONG uBufferLength;
+ UCHAR ucBuffer[1];
+ } DOT11_BSS_ENTRY, * PDOT11_BSS_ENTRY;
+#line 1230 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef struct DOT11_SSID_LIST {
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+
+
+
+ DOT11_SSID SSIDs[1];
+#line 1253 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+ } DOT11_SSID_LIST, * PDOT11_SSID_LIST;
+
+
+
+ typedef struct DOT11_MAC_ADDRESS_LIST {
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ DOT11_MAC_ADDRESS MacAddrs[1];
+ } DOT11_MAC_ADDRESS_LIST, * PDOT11_MAC_ADDRESS_LIST;
+
+
+
+
+
+
+
+
+ typedef UCHAR DOT11_PMKID_VALUE[16];
+ typedef struct DOT11_PMKID_ENTRY {
+ DOT11_MAC_ADDRESS BSSID;
+ DOT11_PMKID_VALUE PMKID;
+ ULONG uFlags;
+ } DOT11_PMKID_ENTRY, *PDOT11_PMKID_ENTRY;
+ typedef struct DOT11_PMKID_LIST {
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ DOT11_PMKID_ENTRY PMKIDs[1];
+ } DOT11_PMKID_LIST, * PDOT11_PMKID_LIST;
+
+
+
+
+
+
+
+
+
+
+ typedef struct DOT11_PHY_FRAME_STATISTICS {
+
+ ULONGLONG ullTransmittedFrameCount;
+ ULONGLONG ullMulticastTransmittedFrameCount;
+ ULONGLONG ullFailedCount;
+ ULONGLONG ullRetryCount;
+ ULONGLONG ullMultipleRetryCount;
+ ULONGLONG ullMaxTXLifetimeExceededCount;
+
+
+ ULONGLONG ullTransmittedFragmentCount;
+ ULONGLONG ullRTSSuccessCount;
+ ULONGLONG ullRTSFailureCount;
+ ULONGLONG ullACKFailureCount;
+
+
+ ULONGLONG ullReceivedFrameCount;
+ ULONGLONG ullMulticastReceivedFrameCount;
+ ULONGLONG ullPromiscuousReceivedFrameCount;
+ ULONGLONG ullMaxRXLifetimeExceededCount;
+
+
+ ULONGLONG ullFrameDuplicateCount;
+ ULONGLONG ullReceivedFragmentCount;
+ ULONGLONG ullPromiscuousReceivedFragmentCount;
+ ULONGLONG ullFCSErrorCount;
+ } DOT11_PHY_FRAME_STATISTICS, * PDOT11_PHY_FRAME_STATISTICS;
+ typedef struct DOT11_MAC_FRAME_STATISTICS {
+ ULONGLONG ullTransmittedFrameCount;
+ ULONGLONG ullReceivedFrameCount;
+ ULONGLONG ullTransmittedFailureFrameCount;
+ ULONGLONG ullReceivedFailureFrameCount;
+
+ ULONGLONG ullWEPExcludedCount;
+ ULONGLONG ullTKIPLocalMICFailures;
+ ULONGLONG ullTKIPReplays;
+ ULONGLONG ullTKIPICVErrorCount;
+ ULONGLONG ullCCMPReplays;
+ ULONGLONG ullCCMPDecryptErrors;
+ ULONGLONG ullWEPUndecryptableCount;
+ ULONGLONG ullWEPICVErrorCount;
+ ULONGLONG ullDecryptSuccessCount;
+ ULONGLONG ullDecryptFailureCount;
+ } DOT11_MAC_FRAME_STATISTICS, * PDOT11_MAC_FRAME_STATISTICS;
+ typedef struct DOT11_STATISTICS {
+
+ NDIS_OBJECT_HEADER Header;
+ ULONGLONG ullFourWayHandshakeFailures;
+ ULONGLONG ullTKIPCounterMeasuresInvoked;
+ ULONGLONG ullReserved;
+
+ DOT11_MAC_FRAME_STATISTICS MacUcastCounters;
+ DOT11_MAC_FRAME_STATISTICS MacMcastCounters;
+ DOT11_PHY_FRAME_STATISTICS PhyCounters[1];
+ } DOT11_STATISTICS, * PDOT11_STATISTICS;
+
+
+
+ typedef struct DOT11_PRIVACY_EXEMPTION {
+ USHORT usEtherType;
+
+
+
+
+
+ USHORT usExemptionActionType;
+
+
+
+
+ USHORT usExemptionPacketType;
+ } DOT11_PRIVACY_EXEMPTION, *PDOT11_PRIVACY_EXEMPTION;
+ typedef struct DOT11_PRIVACY_EXEMPTION_LIST {
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+
+
+
+ DOT11_PRIVACY_EXEMPTION PrivacyExemptionEntries[1];
+#line 1377 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+ } DOT11_PRIVACY_EXEMPTION_LIST, * PDOT11_PRIVACY_EXEMPTION_LIST;
+
+
+ typedef struct DOT11_AUTH_ALGORITHM_LIST {
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ DOT11_AUTH_ALGORITHM AlgorithmIds[1];
+ } DOT11_AUTH_ALGORITHM_LIST, * PDOT11_AUTH_ALGORITHM_LIST;
+
+
+ typedef struct DOT11_AUTH_CIPHER_PAIR_LIST {
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ DOT11_AUTH_CIPHER_PAIR AuthCipherPairs[1];
+ } DOT11_AUTH_CIPHER_PAIR_LIST, * PDOT11_AUTH_CIPHER_PAIR_LIST;
+
+
+
+ typedef struct DOT11_CIPHER_ALGORITHM_LIST {
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ DOT11_CIPHER_ALGORITHM AlgorithmIds[1];
+ } DOT11_CIPHER_ALGORITHM_LIST, * PDOT11_CIPHER_ALGORITHM_LIST;
+
+
+
+
+
+
+
+
+
+
+ typedef struct DOT11_CIPHER_DEFAULT_KEY_VALUE {
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG uKeyIndex;
+ DOT11_CIPHER_ALGORITHM AlgorithmId;
+ DOT11_MAC_ADDRESS MacAddr;
+ BOOLEAN bDelete;
+ BOOLEAN bStatic;
+ USHORT usKeyLength;
+
+
+
+ UCHAR ucKey[1];
+#line 1430 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+ } DOT11_CIPHER_DEFAULT_KEY_VALUE, * PDOT11_CIPHER_DEFAULT_KEY_VALUE;
+ typedef struct DOT11_KEY_ALGO_TKIP_MIC {
+ UCHAR ucIV48Counter[6];
+ ULONG ulTKIPKeyLength;
+ ULONG ulMICKeyLength;
+ UCHAR ucTKIPMICKeys[1];
+ } DOT11_KEY_ALGO_TKIP_MIC, * PDOT11_KEY_ALGO_TKIP_MIC;
+ typedef struct DOT11_KEY_ALGO_CCMP {
+ UCHAR ucIV48Counter[6];
+ ULONG ulCCMPKeyLength;
+ UCHAR ucCCMPKey[1];
+ } DOT11_KEY_ALGO_CCMP, * PDOT11_KEY_ALGO_CCMP;
+ typedef struct DOT11_KEY_ALGO_GCMP {
+ UCHAR ucIV48Counter[6];
+ ULONG ulGCMPKeyLength;
+ UCHAR ucGCMPKey[1];
+ } DOT11_KEY_ALGO_GCMP, * PDOT11_KEY_ALGO_GCMP;
+ typedef struct DOT11_KEY_ALGO_GCMP_256 {
+ UCHAR ucIV48Counter[6];
+ ULONG ulGCMP256KeyLength;
+ UCHAR ucGCMP256Key[1];
+ } DOT11_KEY_ALGO_GCMP_256, * PDOT11_KEY_ALGO_GCMP_256;
+ typedef struct DOT11_KEY_ALGO_BIP {
+ UCHAR ucIPN[6];
+ ULONG ulBIPKeyLength;
+ UCHAR ucBIPKey[1];
+ } DOT11_KEY_ALGO_BIP, * PDOT11_KEY_ALGO_BIP;
+ typedef struct DOT11_KEY_ALGO_BIP_GMAC_256 {
+ UCHAR ucIPN[6];
+ ULONG ulBIPGmac256KeyLength;
+ UCHAR ucBIPGmac256Key[1];
+ } DOT11_KEY_ALGO_BIP_GMAC_256, * PDOT11_KEY_ALGO_BIP_GMAC_256;
+
+
+
+
+ typedef enum DOT11_DIRECTION {
+ DOT11_DIR_INBOUND = 1,
+ DOT11_DIR_OUTBOUND,
+ DOT11_DIR_BOTH
+ } DOT11_DIRECTION, * PDOT11_DIRECTION;
+
+ typedef struct DOT11_CIPHER_KEY_MAPPING_KEY_VALUE {
+ DOT11_MAC_ADDRESS PeerMacAddr;
+ DOT11_CIPHER_ALGORITHM AlgorithmId;
+ DOT11_DIRECTION Direction;
+ BOOLEAN bDelete;
+ BOOLEAN bStatic;
+ USHORT usKeyLength;
+
+
+
+ UCHAR ucKey[1];
+#line 1484 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+ } DOT11_CIPHER_KEY_MAPPING_KEY_VALUE, * PDOT11_CIPHER_KEY_MAPPING_KEY_VALUE;
+
+
+ typedef enum _DOT11_ASSOCIATION_STATE {
+ dot11_assoc_state_zero = 0,
+ dot11_assoc_state_unauth_unassoc = 1,
+ dot11_assoc_state_auth_unassoc = 2,
+ dot11_assoc_state_auth_assoc = 3
+ } DOT11_ASSOCIATION_STATE, * PDOT11_ASSOCIATION_STATE;
+ typedef struct _DOT11_ASSOCIATION_INFO_EX {
+ DOT11_MAC_ADDRESS PeerMacAddress;
+ DOT11_MAC_ADDRESS BSSID;
+ USHORT usCapabilityInformation;
+ USHORT usListenInterval;
+ UCHAR ucPeerSupportedRates[255];
+ USHORT usAssociationID;
+ DOT11_ASSOCIATION_STATE dot11AssociationState;
+ DOT11_POWER_MODE dot11PowerMode;
+ LARGE_INTEGER liAssociationUpTime;
+ ULONGLONG ullNumOfTxPacketSuccesses;
+ ULONGLONG ullNumOfTxPacketFailures;
+ ULONGLONG ullNumOfRxPacketSuccesses;
+ ULONGLONG ullNumOfRxPacketFailures;
+ } DOT11_ASSOCIATION_INFO_EX, * PDOT11_ASSOCIATION_INFO_EX;
+ typedef struct DOT11_ASSOCIATION_INFO_LIST {
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ DOT11_ASSOCIATION_INFO_EX dot11AssocInfo[1];
+ } DOT11_ASSOCIATION_INFO_LIST, * PDOT11_ASSOCIATION_INFO_LIST;
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef struct DOT11_PHY_ID_LIST {
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ ULONG dot11PhyId[1];
+ } DOT11_PHY_ID_LIST, * PDOT11_PHY_ID_LIST;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef struct DOT11_EXTSTA_CAPABILITY {
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG uScanSSIDListSize;
+ ULONG uDesiredBSSIDListSize;
+ ULONG uDesiredSSIDListSize;
+ ULONG uExcludedMacAddressListSize;
+ ULONG uPrivacyExemptionListSize;
+ ULONG uKeyMappingTableSize;
+ ULONG uDefaultKeyTableSize;
+ ULONG uWEPKeyValueMaxLength;
+ ULONG uPMKIDCacheSize;
+ ULONG uMaxNumPerSTADefaultKeyTables;
+ } DOT11_EXTSTA_CAPABILITY, * PDOT11_EXTSTA_CAPABILITY;
+
+
+
+ typedef struct DOT11_DATA_RATE_MAPPING_ENTRY {
+ UCHAR ucDataRateIndex;
+ UCHAR ucDataRateFlag;
+ USHORT usDataRateValue;
+ } DOT11_DATA_RATE_MAPPING_ENTRY, * PDOT11_DATA_RATE_MAPPING_ENTRY;
+ typedef struct _DOT11_DATA_RATE_MAPPING_TABLE {
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG uDataRateMappingLength;
+
+ DOT11_DATA_RATE_MAPPING_ENTRY DataRateMappingEntries[126];
+ } DOT11_DATA_RATE_MAPPING_TABLE, * PDOT11_DATA_RATE_MAPPING_TABLE;
+
+
+
+
+ typedef struct DOT11_COUNTRY_OR_REGION_STRING_LIST {
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ DOT11_COUNTRY_OR_REGION_STRING CountryOrRegionStrings[1];
+ } DOT11_COUNTRY_OR_REGION_STRING_LIST, * PDOT11_COUNTRY_OR_REGION_STRING_LIST;
+
+
+
+
+
+
+ typedef struct DOT11_PORT_STATE_NOTIFICATION {
+
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS PeerMac;
+ BOOLEAN bOpen;
+ } DOT11_PORT_STATE_NOTIFICATION, * PDOT11_PORT_STATE_NOTIFICATION;
+
+
+
+ typedef struct DOT11_IBSS_PARAMS {
+
+ NDIS_OBJECT_HEADER Header;
+ BOOLEAN bJoinOnly;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ } DOT11_IBSS_PARAMS, * PDOT11_IBSS_PARAMS;
+
+
+ typedef struct DOT11_QOS_PARAMS {
+
+ NDIS_OBJECT_HEADER Header;
+
+
+
+
+
+
+
+ UCHAR ucEnabledQoSProtocolFlags;
+ } DOT11_QOS_PARAMS, * PDOT11_QOS_PARAMS;
+
+
+
+
+
+
+
+
+
+ typedef struct DOT11_ASSOCIATION_PARAMS {
+
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS BSSID;
+ ULONG uAssocRequestIEsOffset;
+ ULONG uAssocRequestIEsLength;
+ } DOT11_ASSOCIATION_PARAMS, *PDOT11_ASSOCIATION_PARAMS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _DOT11_FRAGMENT_DESCRIPTOR {
+ ULONG uOffset;
+ ULONG uLength;
+} DOT11_FRAGMENT_DESCRIPTOR, * PDOT11_FRAGMENT_DESCRIPTOR;
+
+typedef struct _DOT11_PER_MSDU_COUNTERS {
+ ULONG uTransmittedFragmentCount;
+ ULONG uRetryCount;
+ ULONG uRTSSuccessCount;
+ ULONG uRTSFailureCount;
+ ULONG uACKFailureCount;
+} DOT11_PER_MSDU_COUNTERS, * PDOT11_PER_MSDU_COUNTERS;
+
+ typedef struct DOT11_PHY_ATTRIBUTES DOT11_PHY_ATTRIBUTES, * PDOT11_PHY_ATTRIBUTES;
+
+ typedef struct DOT11_HRDSSS_PHY_ATTRIBUTES {
+ BOOLEAN bShortPreambleOptionImplemented;
+ BOOLEAN bPBCCOptionImplemented;
+ BOOLEAN bChannelAgilityPresent;
+ ULONG uHRCCAModeSupported;
+ } DOT11_HRDSSS_PHY_ATTRIBUTES, * PDOT11_HRDSSS_PHY_ATTRIBUTES;
+
+ typedef struct DOT11_OFDM_PHY_ATTRIBUTES {
+ ULONG uFrequencyBandsSupported;
+ } DOT11_OFDM_PHY_ATTRIBUTES, * PDOT11_OFDM_PHY_ATTRIBUTES;
+
+ typedef struct DOT11_ERP_PHY_ATTRIBUTES {
+
+
+
+ DOT11_HRDSSS_PHY_ATTRIBUTES;
+ #line 1706 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+ BOOLEAN bERPPBCCOptionImplemented;
+ BOOLEAN bDSSSOFDMOptionImplemented;
+ BOOLEAN bShortSlotTimeOptionImplemented;
+ } DOT11_ERP_PHY_ATTRIBUTES, * PDOT11_ERP_PHY_ATTRIBUTES;
+
+ struct DOT11_PHY_ATTRIBUTES {
+
+ NDIS_OBJECT_HEADER Header;
+
+ DOT11_PHY_TYPE PhyType;
+ BOOLEAN bHardwarePhyState;
+ BOOLEAN bSoftwarePhyState;
+
+ BOOLEAN bCFPollable;
+ ULONG uMPDUMaxLength;
+ DOT11_TEMP_TYPE TempType;
+ DOT11_DIVERSITY_SUPPORT DiversitySupport;
+
+
+
+ union {
+
+
+
+ DOT11_HRDSSS_PHY_ATTRIBUTES HRDSSSAttributes;
+
+
+
+
+ DOT11_OFDM_PHY_ATTRIBUTES OFDMAttributes;
+
+
+
+
+ DOT11_ERP_PHY_ATTRIBUTES ERPAttributes;
+
+
+
+
+
+
+
+
+
+
+
+
+
+ };
+ #line 1756 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+ ULONG uNumberSupportedPowerLevels;
+ ULONG TxPowerLevels[8];
+
+ ULONG uNumDataRateMappingEntries;
+ DOT11_DATA_RATE_MAPPING_ENTRY DataRateMappingEntries[126];
+
+ DOT11_SUPPORTED_DATA_RATES_VALUE_V2 SupportedDataRatesValue;
+ };
+
+
+
+
+
+typedef struct DOT11_EXTSTA_ATTRIBUTES DOT11_EXTSTA_ATTRIBUTES, * PDOT11_EXTSTA_ATTRIBUTES;
+struct DOT11_EXTSTA_ATTRIBUTES {
+
+
+
+
+
+ NDIS_OBJECT_HEADER Header;
+
+ ULONG uScanSSIDListSize;
+ ULONG uDesiredBSSIDListSize;
+ ULONG uDesiredSSIDListSize;
+ ULONG uExcludedMacAddressListSize;
+ ULONG uPrivacyExemptionListSize;
+ ULONG uKeyMappingTableSize;
+ ULONG uDefaultKeyTableSize;
+ ULONG uWEPKeyValueMaxLength;
+ ULONG uPMKIDCacheSize;
+ ULONG uMaxNumPerSTADefaultKeyTables;
+
+ BOOLEAN bStrictlyOrderedServiceClassImplemented;
+
+
+
+
+ UCHAR ucSupportedQoSProtocolFlags;
+
+ BOOLEAN bSafeModeImplemented;
+
+
+ ULONG uNumSupportedCountryOrRegionStrings;
+
+
+
+ PDOT11_COUNTRY_OR_REGION_STRING pSupportedCountryOrRegionStrings;
+
+
+ ULONG uInfraNumSupportedUcastAlgoPairs;
+
+
+
+ PDOT11_AUTH_CIPHER_PAIR pInfraSupportedUcastAlgoPairs;
+
+ ULONG uInfraNumSupportedMcastAlgoPairs;
+
+
+
+ PDOT11_AUTH_CIPHER_PAIR pInfraSupportedMcastAlgoPairs;
+
+
+ ULONG uAdhocNumSupportedUcastAlgoPairs;
+
+
+
+ PDOT11_AUTH_CIPHER_PAIR pAdhocSupportedUcastAlgoPairs;
+
+ ULONG uAdhocNumSupportedMcastAlgoPairs;
+
+
+
+ PDOT11_AUTH_CIPHER_PAIR pAdhocSupportedMcastAlgoPairs;
+ BOOLEAN bAutoPowerSaveMode;
+ ULONG uMaxNetworkOffloadListSize;
+
+
+ BOOLEAN bMFPCapable;
+ ULONG uInfraNumSupportedMcastMgmtAlgoPairs;
+
+
+
+ PDOT11_AUTH_CIPHER_PAIR pInfraSupportedMcastMgmtAlgoPairs;
+
+
+ BOOLEAN bNeighborReportSupported;
+ BOOLEAN bAPChannelReportSupported;
+
+
+ BOOLEAN bActionFramesSupported;
+ BOOLEAN bANQPQueryOffloadSupported;
+ BOOLEAN bHESSIDConnectionSupported;
+};
+
+
+
+ typedef struct _DOT11_SEND_CONTEXT {
+
+ NDIS_OBJECT_HEADER Header;
+ PVOID pvReserved;
+ ULONG uFlags;
+ ULONG uPSLifetime;
+ ULONG uDelayedSleepValue;
+ UCHAR ucTXDataRates[8];
+ BOOLEAN bIndicateAssociatedACKs;
+ BOOLEAN bIndicateTXStatus;
+ UCHAR ucPriority;
+ BOOLEAN bDontFragment;
+ ULONG dwExtendedStatus;
+ HANDLE hIntegrityOffload;
+ HANDLE hWEPOffload;
+ UCHAR ucWPAMSDUPriority;
+ UCHAR ucNumOfRWsOnPeer;
+ USHORT usAID;
+ PDOT11_PER_MSDU_COUNTERS pDot11PerMSDUCounters;
+ } DOT11_SEND_CONTEXT, * PDOT11_SEND_CONTEXT;
+
+
+
+
+
+
+
+
+
+
+ typedef struct _DOT11_SEND_EXTENSION_INFO {
+ ULONG uVersion;
+ NDIS_OBJECT_HEADER Header;
+ PVOID pvReserved;
+ ULONG uFlags;
+ ULONG uPSLifetime;
+ ULONG uDelayedSleepValue;
+ UCHAR ucTXDataRates[8];
+ BOOLEAN bIndicateAssociatedACKs;
+ BOOLEAN bIndicateTXStatus;
+ UCHAR ucPriority;
+ BOOLEAN bDontFragment;
+ ULONG dwExtendedStatus;
+ HANDLE hIntegrityOffload;
+ HANDLE hWEPOffload;
+ UCHAR ucWPAMSDUPriority;
+ UCHAR ucNumOfRWsOnPeer;
+ USHORT usAID;
+ PDOT11_PER_MSDU_COUNTERS pDot11PerMSDUCounters;
+ USHORT usNumberOfFragments;
+ DOT11_FRAGMENT_DESCRIPTOR Dot11FragmentDescriptors[1];
+ } DOT11_SEND_EXTENSION_INFO, * PDOT11_SEND_EXTENSION_INFO;
+
+ typedef enum _DOT11_ACK_POLICY {
+ dot11_ack_policy_none = 0,
+ dot11_ack_policy_acknowledge = 1,
+ dot11_ack_policy_do_not_acknowledge = 2,
+ } DOT11_ACK_POLICY, * PDOT11_ACK_POLICY;
+
+
+ typedef struct _DOT11_SEND_EXTENSION_INFO_V2 {
+ UCHAR ucQoSPriority:4;
+ UCHAR ucAckPolicy:4;
+ USHORT usExtendedTXDataRatesOffset;
+ UCHAR ucNumOfExtendedTXDataRates;
+ UCHAR ucBuffer[1];
+ } DOT11_SEND_EXTENSION_INFO_V2, * PDOT11_SEND_EXTENSION_INFO_V2;
+
+
+
+
+
+
+ typedef struct _DOT11_RECV_CONTEXT {
+
+ NDIS_OBJECT_HEADER Header;
+ PVOID pvReserved;
+ DOT11_PHY_TYPE dot11PhyType;
+ ULONG uChCenterFrequency;
+ LONG lRSSI;
+ ULONG uRSSI;
+ UCHAR ucPriority;
+ UCHAR ucDataRate;
+ UCHAR ucPeerMacAddress[6];
+ ULONG dwExtendedStatus;
+ HANDLE hWEPOffloadContext;
+ HANDLE hAuthOffloadContext;
+ USHORT usWEPAppliedMask;
+ USHORT usWPAMSDUPriority;
+ DOT11_IV48_COUNTER dot11LowestIV48Counter;
+ USHORT usDot11LeftRWBitMap;
+ DOT11_IV48_COUNTER dot11HighestIV48Counter;
+ USHORT usDot11RightRWBitMap;
+ USHORT usNumberOfMPDUsReceived;
+ } DOT11_RECV_CONTEXT, * PDOT11_RECV_CONTEXT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2006 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _DOT11_STATUS_INDICATION {
+ ULONG uStatusType;
+ NDIS_STATUS ndisStatus;
+} DOT11_STATUS_INDICATION, * PDOT11_STATUS_INDICATION;
+
+
+
+
+
+
+
+
+
+typedef struct DOT11_MPDU_MAX_LENGTH_INDICATION {
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG uPhyId;
+ ULONG uMPDUMaxLength;
+} DOT11_MPDU_MAX_LENGTH_INDICATION, * PDOT11_MPDU_MAX_LENGTH_INDICATION;
+
+typedef struct DOT11_ASSOCIATION_START_PARAMETERS {
+
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS MacAddr;
+ DOT11_SSID SSID;
+ ULONG uIHVDataOffset, uIHVDataSize;
+} DOT11_ASSOCIATION_START_PARAMETERS, * PDOT11_ASSOCIATION_START_PARAMETERS;
+
+
+
+typedef struct DOT11_ENCAP_ENTRY {
+ USHORT usEtherType;
+ USHORT usEncapType;
+} DOT11_ENCAP_ENTRY, * PDOT11_ENCAP_ENTRY;
+
+typedef enum DOT11_DS_INFO {
+ DOT11_DS_CHANGED,
+ DOT11_DS_UNCHANGED,
+ DOT11_DS_UNKNOWN
+} DOT11_DS_INFO, * PDOT11_DS_INFO;
+
+
+
+
+typedef ULONG DOT11_ASSOC_STATUS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct DOT11_ASSOCIATION_COMPLETION_PARAMETERS {
+
+
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS MacAddr;
+
+ DOT11_ASSOC_STATUS uStatus;
+
+ BOOLEAN bReAssocReq;
+ BOOLEAN bReAssocResp;
+ ULONG uAssocReqOffset, uAssocReqSize;
+ ULONG uAssocRespOffset, uAssocRespSize;
+ ULONG uBeaconOffset, uBeaconSize;
+ ULONG uIHVDataOffset, uIHVDataSize;
+
+
+
+ DOT11_AUTH_ALGORITHM AuthAlgo;
+ DOT11_CIPHER_ALGORITHM UnicastCipher;
+ DOT11_CIPHER_ALGORITHM MulticastCipher;
+ ULONG uActivePhyListOffset, uActivePhyListSize;
+ BOOLEAN bFourAddressSupported;
+ BOOLEAN bPortAuthorized;
+
+
+
+ UCHAR ucActiveQoSProtocol;
+
+ DOT11_DS_INFO DSInfo;
+ ULONG uEncapTableOffset, uEncapTableSize;
+
+
+
+ DOT11_CIPHER_ALGORITHM MulticastMgmtCipher;
+ ULONG uAssocComebackTime;
+#line 2220 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+} DOT11_ASSOCIATION_COMPLETION_PARAMETERS, * PDOT11_ASSOCIATION_COMPLETION_PARAMETERS;
+
+typedef struct DOT11_CONNECTION_START_PARAMETERS {
+
+ NDIS_OBJECT_HEADER Header;
+ DOT11_BSS_TYPE BSSType;
+
+ DOT11_MAC_ADDRESS AdhocBSSID;
+ DOT11_SSID AdhocSSID;
+} DOT11_CONNECTION_START_PARAMETERS, * PDOT11_CONNECTION_START_PARAMETERS;
+
+
+
+
+
+
+
+
+
+typedef struct DOT11_CONNECTION_COMPLETION_PARAMETERS {
+
+ NDIS_OBJECT_HEADER Header;
+ DOT11_ASSOC_STATUS uStatus;
+} DOT11_CONNECTION_COMPLETION_PARAMETERS, * PDOT11_CONNECTION_COMPLETION_PARAMETERS;
+
+
+
+
+
+
+typedef struct DOT11_ROAMING_START_PARAMETERS {
+
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS AdhocBSSID;
+ DOT11_SSID AdhocSSID;
+ DOT11_ASSOC_STATUS uRoamingReason;
+} DOT11_ROAMING_START_PARAMETERS, * PDOT11_ROAMING_START_PARAMETERS;
+
+typedef struct DOT11_ROAMING_COMPLETION_PARAMETERS {
+
+ NDIS_OBJECT_HEADER Header;
+ DOT11_ASSOC_STATUS uStatus;
+} DOT11_ROAMING_COMPLETION_PARAMETERS, * PDOT11_ROAMING_COMPLETION_PARAMETERS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct DOT11_DISASSOCIATION_PARAMETERS {
+
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS MacAddr;
+ DOT11_ASSOC_STATUS uReason;
+ ULONG uIHVDataOffset, uIHVDataSize;
+} DOT11_DISASSOCIATION_PARAMETERS, * PDOT11_DISASSOCIATION_PARAMETERS;
+
+typedef struct DOT11_TKIPMIC_FAILURE_PARAMETERS {
+
+ NDIS_OBJECT_HEADER Header;
+ BOOLEAN bDefaultKeyFailure;
+ ULONG uKeyIndex;
+ DOT11_MAC_ADDRESS PeerMac;
+} DOT11_TKIPMIC_FAILURE_PARAMETERS, * PDOT11_TKIPMIC_FAILURE_PARAMETERS;
+
+typedef struct DOT11_PMKID_CANDIDATE_LIST_PARAMETERS {
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG uCandidateListSize;
+ ULONG uCandidateListOffset;
+} DOT11_PMKID_CANDIDATE_LIST_PARAMETERS, * PDOT11_PMKID_CANDIDATE_LIST_PARAMETERS;
+
+typedef struct DOT11_BSSID_CANDIDATE {
+ DOT11_MAC_ADDRESS BSSID;
+
+
+ ULONG uFlags;
+} DOT11_BSSID_CANDIDATE, *PDOT11_BSSID_CANDIDATE;
+
+typedef struct DOT11_PHY_STATE_PARAMETERS {
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG uPhyId;
+ BOOLEAN bHardwarePhyState;
+ BOOLEAN bSoftwarePhyState;
+} DOT11_PHY_STATE_PARAMETERS, * PDOT11_PHY_STATE_PARAMETERS;
+
+typedef struct DOT11_LINK_QUALITY_ENTRY {
+ DOT11_MAC_ADDRESS PeerMacAddr;
+ UCHAR ucLinkQuality;
+} DOT11_LINK_QUALITY_ENTRY, *PDOT11_LINK_QUALITY_ENTRY;
+
+typedef struct DOT11_LINK_QUALITY_PARAMETERS {
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG uLinkQualityListSize;
+ ULONG uLinkQualityListOffset;
+} DOT11_LINK_QUALITY_PARAMETERS, * PDOT11_LINK_QUALITY_PARAMETERS;
+
+
+
+typedef struct DOT11_EXTSTA_SEND_CONTEXT {
+
+ NDIS_OBJECT_HEADER Header;
+ USHORT usExemptionActionType;
+ ULONG uPhyId;
+ ULONG uDelayedSleepValue;
+
+
+
+
+
+ PVOID pvMediaSpecificInfo;
+#line 2347 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+
+ ULONG uSendFlags;
+} DOT11_EXTSTA_SEND_CONTEXT, * PDOT11_EXTSTA_SEND_CONTEXT;
+
+
+
+
+
+typedef struct DOT11_EXTSTA_RECV_CONTEXT {
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG uReceiveFlags;
+ ULONG uPhyId;
+ ULONG uChCenterFrequency;
+ USHORT usNumberOfMPDUsReceived;
+ LONG lRSSI;
+ UCHAR ucDataRate;
+
+ ULONG uSizeMediaSpecificInfo;
+
+
+
+
+
+ PVOID pvMediaSpecificInfo;
+#line 2373 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+
+ ULONGLONG ullTimestamp;
+
+} DOT11_EXTSTA_RECV_CONTEXT, * PDOT11_EXTSTA_RECV_CONTEXT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID GUID_NWF_OFFLOAD_CAPABILITY;
+extern const GUID GUID_NWF_CURRENT_OFFLOAD_CAPABILITY;
+extern const GUID GUID_NWF_WEP_OFFLOAD;
+extern const GUID GUID_NWF_WEP_UPLOAD;
+extern const GUID GUID_NWF_DEFAULT_WEP_OFFLOAD;
+extern const GUID GUID_NWF_DEFAULT_WEP_UPLOAD;
+extern const GUID GUID_NWF_MPDU_MAX_LENGTH;
+extern const GUID GUID_NWF_OPERATION_MODE_CAPABILITY;
+extern const GUID GUID_NWF_CURRENT_OPERATION_MODE;
+extern const GUID GUID_NWF_CURRENT_PACKET_FILTER;
+extern const GUID GUID_NWF_ATIM_WINDOW;
+extern const GUID GUID_NWF_SCAN_REQUEST;
+extern const GUID GUID_NWF_CURRENT_PHY_TYPE;
+extern const GUID GUID_NWF_JOIN_REQUEST;
+extern const GUID GUID_NWF_START_REQUEST;
+extern const GUID GUID_NWF_UPDATE_IE;
+extern const GUID GUID_NWF_RESET_REQUEST;
+extern const GUID GUID_NWF_NIC_POWER_STATE;
+extern const GUID GUID_NWF_OPTIONAL_CAPABILITY;
+extern const GUID GUID_NWF_CURRENT_OPTIONAL_CAPABILITY;
+extern const GUID GUID_NWF_STATION_ID;
+extern const GUID GUID_NWF_MEDIUM_OCCUPANCY_LIMIT;
+extern const GUID GUID_NWF_CF_POLLABLE;
+extern const GUID GUID_NWF_CFP_PERIOD;
+extern const GUID GUID_NWF_CFP_MAX_DURATION;
+extern const GUID GUID_NWF_POWER_MGMT_MODE;
+extern const GUID GUID_NWF_OPERATIONAL_RATE_SET;
+extern const GUID GUID_NWF_BEACON_PERIOD;
+extern const GUID GUID_NWF_DTIM_PERIOD;
+extern const GUID GUID_NWF_WEP_ICV_ERROR_COUNT;
+extern const GUID GUID_NWF_MAC_ADDRESS;
+extern const GUID GUID_NWF_RTS_THRESHOLD;
+extern const GUID GUID_NWF_SHORT_RETRY_LIMIT;
+extern const GUID GUID_NWF_LONG_RETRY_LIMIT;
+extern const GUID GUID_NWF_FRAGMENTATION_THRESHOLD;
+extern const GUID GUID_NWF_MAX_TRANSMIT_MSDU_LIFETIME;
+extern const GUID GUID_NWF_MAX_RECEIVE_LIFETIME;
+extern const GUID GUID_NWF_COUNTERS_ENTRY;
+extern const GUID GUID_NWF_SUPPORTED_PHY_TYPES;
+extern const GUID GUID_NWF_CURRENT_REG_DOMAIN;
+extern const GUID GUID_NWF_TEMP_TYPE;
+extern const GUID GUID_NWF_CURRENT_TX_ANTENNA;
+extern const GUID GUID_NWF_DIVERSITY_SUPPORT;
+extern const GUID GUID_NWF_CURRENT_RX_ANTENNA;
+extern const GUID GUID_NWF_SUPPORTED_POWER_LEVELS;
+extern const GUID GUID_NWF_CURRENT_TX_POWER_LEVEL;
+extern const GUID GUID_NWF_HOP_TIME;
+extern const GUID GUID_NWF_CURRENT_CHANNEL_NUMBER;
+extern const GUID GUID_NWF_MAX_DWELL_TIME;
+extern const GUID GUID_NWF_CURRENT_DWELL_TIME;
+extern const GUID GUID_NWF_CURRENT_SET;
+extern const GUID GUID_NWF_CURRENT_PATTERN;
+extern const GUID GUID_NWF_CURRENT_INDEX;
+extern const GUID GUID_NWF_CURRENT_CHANNEL;
+extern const GUID GUID_NWF_CCA_MODE_SUPPORTED;
+extern const GUID GUID_NWF_CURRENT_CCA_MODE;
+extern const GUID GUID_NWF_ED_THRESHOLD;
+extern const GUID GUID_NWF_CCA_WATCHDOG_TIMER_MAX;
+extern const GUID GUID_NWF_CCA_WATCHDOG_COUNT_MAX;
+extern const GUID GUID_NWF_CCA_WATCHDOG_TIMER_MIN;
+extern const GUID GUID_NWF_CCA_WATCHDOG_COUNT_MIN;
+extern const GUID GUID_NWF_REG_DOMAINS_SUPPORT_VALUE;
+extern const GUID GUID_NWF_SUPPORTED_TX_ANTENNA;
+extern const GUID GUID_NWF_SUPPORTED_RX_ANTENNA;
+extern const GUID GUID_NWF_DIVERSITY_SELECTION_RX;
+extern const GUID GUID_NWF_SUPPORTED_DATA_RATES_VALUE;
+extern const GUID GUID_NWF_CURRENT_FREQUENCY;
+extern const GUID GUID_NWF_TI_THRESHOLD;
+extern const GUID GUID_NWF_FREQUENCY_BANDS_SUPPORTED;
+extern const GUID GUID_NWF_SHORT_PREAMBLE_OPTION_IMPLEMENTED;
+extern const GUID GUID_NWF_PBCC_OPTION_IMPLEMENTED;
+extern const GUID GUID_NWF_CHANNEL_AGILITY_PRESENT;
+extern const GUID GUID_NWF_CHANNEL_AGILITY_ENABLED;
+extern const GUID GUID_NWF_HR_CCA_MODE_SUPPORTED;
+extern const GUID GUID_NWF_MULTI_DOMAIN_CAPABILITY_IMPLEMENTED;
+extern const GUID GUID_NWF_MULTI_DOMAIN_CAPABILITY_ENABLED;
+extern const GUID GUID_NWF_COUNTRY_STRING;
+extern const GUID GUID_NWF_MULTI_DOMAIN_CAPABILITY;
+extern const GUID GUID_NWF_EHCC_PRIME_RADIX;
+extern const GUID GUID_NWF_EHCC_NUMBER_OF_CHANNELS_FAMILY_INDEX;
+extern const GUID GUID_NWF_EHCC_CAPABILITY_IMPLEMENTED;
+extern const GUID GUID_NWF_EHCC_CAPABILITY_ENABLED;
+extern const GUID GUID_NWF_HOP_ALGORITHM_ADOPTED;
+extern const GUID GUID_NWF_RANDOM_TABLE_FLAG;
+extern const GUID GUID_NWF_NUMBER_OF_HOPPING_SETS;
+extern const GUID GUID_NWF_HOP_MODULUS;
+extern const GUID GUID_NWF_HOP_OFFSET;
+extern const GUID GUID_NWF_HOPPING_PATTERN;
+extern const GUID GUID_NWF_RANDOM_TABLE_FIELD_NUMBER;
+extern const GUID GUID_NWF_WPA_TSC;
+extern const GUID GUID_NWF_RSSI_RANGE;
+extern const GUID GUID_NWF_RF_USAGE;
+extern const GUID GUID_NWF_NIC_SPECIFIC_EXTENSION;
+extern const GUID GUID_NWF_AP_JOIN_REQUEST;
+extern const GUID GUID_NWF_ERP_PBCC_OPTION_IMPLEMENTED;
+extern const GUID GUID_NWF_ERP_PBCC_OPTION_ENABLED;
+extern const GUID GUID_NWF_DSSS_OFDM_OPTION_IMPLEMENTED;
+extern const GUID GUID_NWF_DSSS_OFDM_OPTION_ENABLED;
+extern const GUID GUID_NWF_SHORT_SLOT_TIME_OPTION_IMPLEMENTED;
+extern const GUID GUID_NWF_SHORT_SLOT_TIME_OPTION_ENABLED;
+extern const GUID GUID_NWF_MAX_MAC_ADDRESS_STATES;
+extern const GUID GUID_NWF_RECV_SENSITIVITY_LIST;
+extern const GUID GUID_NWF_WME_IMPLEMENTED;
+extern const GUID GUID_NWF_WME_ENABLED;
+extern const GUID GUID_NWF_WME_AC_PARAMETERS;
+extern const GUID GUID_NWF_WME_UPDATE_IE;
+extern const GUID GUID_NWF_QOS_TX_QUEUES_SUPPORTED;
+extern const GUID GUID_NWF_QOS_TX_DURATION;
+extern const GUID GUID_NWF_QOS_TX_MEDIUM_TIME;
+extern const GUID GUID_NWF_SUPPORTED_OFDM_FREQUENCY_LIST;
+extern const GUID GUID_NWF_SUPPORTED_DSSS_CHANNEL_LIST;
+extern const GUID GUID_NWF_AUTO_CONFIG_ENABLED;
+extern const GUID GUID_NWF_ENUM_BSS_LIST;
+extern const GUID GUID_NWF_FLUSH_BSS_LIST;
+extern const GUID GUID_NWF_POWER_MGMT_REQUEST;
+extern const GUID GUID_NWF_DESIRED_SSID_LIST;
+extern const GUID GUID_NWF_EXCLUDED_MAC_ADDRESS_LIST;
+extern const GUID GUID_NWF_DESIRED_BSSID_LIST;
+extern const GUID GUID_NWF_DESIRED_BSS_TYPE;
+extern const GUID GUID_NWF_PMKID_LIST;
+extern const GUID GUID_NWF_CONNECT_REQUEST;
+extern const GUID GUID_NWF_EXCLUDE_UNENCRYPTED;
+extern const GUID GUID_NWF_STATISTICS;
+extern const GUID GUID_NWF_PRIVACY_EXEMPTION_LIST;
+extern const GUID GUID_NWF_ENABLED_AUTHENTICATION_ALGORITHM;
+extern const GUID GUID_NWF_SUPPORTED_UNICAST_ALGORITHM_PAIR;
+extern const GUID GUID_NWF_ENABLED_UNICAST_CIPHER_ALGORITHM;
+extern const GUID GUID_NWF_SUPPORTED_MULTICAST_ALGORITHM_PAIR;
+extern const GUID GUID_NWF_ENABLED_MULTICAST_CIPHER_ALGORITHM;
+extern const GUID GUID_NWF_CIPHER_DEFAULT_KEY_ID;
+extern const GUID GUID_NWF_CIPHER_DEFAULT_KEY;
+extern const GUID GUID_NWF_CIPHER_KEY_MAPPING_KEY;
+extern const GUID GUID_NWF_ENUM_ASSOCIATION_INFO;
+extern const GUID GUID_NWF_DISCONNECT_REQUEST;
+extern const GUID GUID_NWF_UNICAST_USE_GROUP_ENABLED;
+extern const GUID GUID_NWF_PHY_STATE;
+extern const GUID GUID_NWF_DESIRED_PHY_LIST;
+extern const GUID GUID_NWF_CURRENT_PHY_ID;
+extern const GUID GUID_NWF_MEDIA_STREAMING_ENABLED;
+extern const GUID GUID_NWF_UNREACHABLE_DETECTION_THRESHOLD;
+extern const GUID GUID_NWF_ACTIVE_PHY_LIST;
+extern const GUID GUID_NWF_EXTSTA_CAPABILITY;
+extern const GUID GUID_NWF_DATA_RATE_MAPPING_TABLE;
+extern const GUID GUID_NWF_SUPPORTED_COUNTRY_OR_REGION_STRING;
+extern const GUID GUID_NWF_DESIRED_COUNTRY_OR_REGION_STRING;
+extern const GUID GUID_NWF_PORT_STATE_NOTIFICATION;
+extern const GUID GUID_NWF_IBSS_PARAMS;
+extern const GUID GUID_NWF_QOS_PARAMS;
+extern const GUID GUID_NWF_SAFE_MODE_ENABLED;
+extern const GUID GUID_NWF_HIDDEN_NETWORK_ENABLED;
+extern const GUID GUID_NWF_ASSOCIATION_PARAMS;
+
+extern const GUID GUID_NWF_CURRENT_ADDRESS;
+extern const GUID GUID_NWF_PERMANENT_ADDRESS;
+extern const GUID GUID_NWF_MULTICAST_LIST;
+extern const GUID GUID_NWF_MAXIMUM_LIST_SIZE;
+
+#line 2562 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+
+
+
+
+
+
+
+
+
+
+typedef
+struct _DOT11_EXTAP_ATTRIBUTES
+{
+ NDIS_OBJECT_HEADER Header;
+
+ ULONG uScanSSIDListSize;
+ ULONG uDesiredSSIDListSize;
+ ULONG uPrivacyExemptionListSize;
+ ULONG uAssociationTableSize;
+ ULONG uDefaultKeyTableSize;
+ ULONG uWEPKeyValueMaxLength;
+ BOOLEAN bStrictlyOrderedServiceClassImplemented;
+
+
+ ULONG uNumSupportedCountryOrRegionStrings;
+
+
+
+ PDOT11_COUNTRY_OR_REGION_STRING pSupportedCountryOrRegionStrings;
+
+
+
+
+ ULONG uInfraNumSupportedUcastAlgoPairs;
+
+
+
+ PDOT11_AUTH_CIPHER_PAIR pInfraSupportedUcastAlgoPairs;
+
+
+
+ ULONG uInfraNumSupportedMcastAlgoPairs;
+
+
+
+ PDOT11_AUTH_CIPHER_PAIR pInfraSupportedMcastAlgoPairs;
+
+}
+DOT11_EXTAP_ATTRIBUTES, *PDOT11_EXTAP_ATTRIBUTES;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_INCOMING_ASSOC_STARTED_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS PeerMacAddr;
+ }
+ DOT11_INCOMING_ASSOC_STARTED_PARAMETERS, *PDOT11_INCOMING_ASSOC_STARTED_PARAMETERS;
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_INCOMING_ASSOC_REQUEST_RECEIVED_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS PeerMacAddr;
+ BOOLEAN bReAssocReq;
+ ULONG uAssocReqOffset;
+ ULONG uAssocReqSize;
+ }
+ DOT11_INCOMING_ASSOC_REQUEST_RECEIVED_PARAMETERS, *PDOT11_INCOMING_ASSOC_REQUEST_RECEIVED_PARAMETERS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS PeerMacAddr;
+
+ ULONG uStatus;
+ UCHAR ucErrorSource;
+
+ BOOLEAN bReAssocReq;
+ BOOLEAN bReAssocResp;
+
+ ULONG uAssocReqOffset;
+ ULONG uAssocReqSize;
+
+ ULONG uAssocRespOffset;
+ ULONG uAssocRespSize;
+
+
+
+
+ DOT11_AUTH_ALGORITHM AuthAlgo;
+ DOT11_CIPHER_ALGORITHM UnicastCipher;
+ DOT11_CIPHER_ALGORITHM MulticastCipher;
+ ULONG uActivePhyListOffset;
+ ULONG uActivePhyListSize;
+
+ ULONG uBeaconOffset;
+ ULONG uBeaconSize;
+ }
+ DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS, *PDOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS;
+
+
+
+
+
+ typedef
+ struct _DOT11_STOP_AP_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ ULONG ulReason;
+ }
+ DOT11_STOP_AP_PARAMETERS, *PDOT11_STOP_AP_PARAMETERS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+struct _DOT11_PHY_FREQUENCY_ADOPTED_PARAMETERS
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG ulPhyId;
+ union
+ {
+ ULONG ulChannel;
+ ULONG ulFrequency;
+ };
+}
+DOT11_PHY_FREQUENCY_ADOPTED_PARAMETERS, *PDOT11_PHY_FREQUENCY_ADOPTED_PARAMETERS;
+
+
+
+
+
+
+ typedef
+ struct _DOT11_CAN_SUSTAIN_AP_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ ULONG ulReason;
+ }
+ DOT11_CAN_SUSTAIN_AP_PARAMETERS, *PDOT11_CAN_SUSTAIN_AP_PARAMETERS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_AVAILABLE_CHANNEL_LIST
+ {
+ NDIS_OBJECT_HEADER Header;
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ ULONG uChannelNumber[1];
+ }
+ DOT11_AVAILABLE_CHANNEL_LIST, *PDOT11_AVAILABLE_CHANNEL_LIST;
+
+
+
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_AVAILABLE_FREQUENCY_LIST
+ {
+ NDIS_OBJECT_HEADER Header;
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ ULONG uFrequencyValue[1];
+ }
+ DOT11_AVAILABLE_FREQUENCY_LIST, *PDOT11_AVAILABLE_FREQUENCY_LIST;
+
+
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_DISASSOCIATE_PEER_REQUEST
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS PeerMacAddr;
+ USHORT usReason;
+
+ }
+ DOT11_DISASSOCIATE_PEER_REQUEST, *PDOT11_DISASSOCIATE_PEER_REQUEST;
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_INCOMING_ASSOC_DECISION
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS PeerMacAddr;
+ BOOLEAN bAccept;
+ USHORT usReasonCode;
+ ULONG uAssocResponseIEsOffset;
+ ULONG uAssocResponseIEsLength;
+ }
+ DOT11_INCOMING_ASSOC_DECISION, *PDOT11_INCOMING_ASSOC_DECISION;
+
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_INCOMING_ASSOC_DECISION_V2
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS PeerMacAddr;
+ BOOLEAN bAccept;
+ USHORT usReasonCode;
+ ULONG uAssocResponseIEsOffset;
+ ULONG uAssocResponseIEsLength;
+ DOT11_WFD_STATUS_CODE WFDStatus;
+ }
+ DOT11_INCOMING_ASSOC_DECISION_V2, *PDOT11_INCOMING_ASSOC_DECISION_V2;
+
+
+
+#line 2874 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+
+
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_ADDITIONAL_IE
+ {
+ NDIS_OBJECT_HEADER Header;
+ ULONG uBeaconIEsOffset;
+ ULONG uBeaconIEsLength;
+ ULONG uResponseIEsOffset;
+ ULONG uResponseIEsLength;
+ }
+ DOT11_ADDITIONAL_IE, *PDOT11_ADDITIONAL_IE;
+
+
+
+
+
+
+
+
+
+typedef
+struct DOT11_EXTSTA_SEND_CONTEXT
+DOT11_EXTAP_SEND_CONTEXT, *PDOT11_EXTAP_SEND_CONTEXT;
+
+
+
+
+
+
+
+
+
+typedef
+struct DOT11_EXTSTA_RECV_CONTEXT
+DOT11_EXTAP_RECV_CONTEXT, *PDOT11_EXTAP_RECV_CONTEXT;
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_PEER_STATISTICS
+ {
+ ULONGLONG ullDecryptSuccessCount;
+ ULONGLONG ullDecryptFailureCount;
+ ULONGLONG ullTxPacketSuccessCount;
+ ULONGLONG ullTxPacketFailureCount;
+ ULONGLONG ullRxPacketSuccessCount;
+ ULONGLONG ullRxPacketFailureCount;
+ }
+ DOT11_PEER_STATISTICS, *PDOT11_PEER_STATISTICS;
+
+ typedef
+ struct _DOT11_PEER_INFO
+ {
+ DOT11_MAC_ADDRESS MacAddress;
+ USHORT usCapabilityInformation;
+ DOT11_AUTH_ALGORITHM AuthAlgo;
+ DOT11_CIPHER_ALGORITHM UnicastCipherAlgo;
+ DOT11_CIPHER_ALGORITHM MulticastCipherAlgo;
+ BOOLEAN bWpsEnabled;
+ USHORT usListenInterval;
+ UCHAR ucSupportedRates[255];
+ USHORT usAssociationID;
+ DOT11_ASSOCIATION_STATE AssociationState;
+ DOT11_POWER_MODE PowerMode;
+ LARGE_INTEGER liAssociationUpTime;
+ DOT11_PEER_STATISTICS Statistics;
+ }
+ DOT11_PEER_INFO, *PDOT11_PEER_INFO;
+
+
+
+ typedef
+ struct _DOT11_PEER_INFO_LIST
+ {
+ NDIS_OBJECT_HEADER Header;
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ DOT11_PEER_INFO PeerInfo[1];
+ }
+ DOT11_PEER_INFO_LIST, *PDOT11_PEER_INFO_LIST;
+
+
+
+
+
+#line 2972 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+
+
+
+
+ typedef
+ struct _DOT11_VWIFI_COMBINATION
+ {
+ NDIS_OBJECT_HEADER Header;
+ ULONG uNumInfrastructure;
+ ULONG uNumAdhoc;
+ ULONG uNumSoftAP;
+ }
+ DOT11_VWIFI_COMBINATION, * PDOT11_VWIFI_COMBINATION;
+
+
+
+
+ typedef
+ struct _DOT11_VWIFI_COMBINATION_V2
+ {
+ NDIS_OBJECT_HEADER Header;
+ ULONG uNumInfrastructure;
+ ULONG uNumAdhoc;
+ ULONG uNumSoftAP;
+ ULONG uNumVirtualStation;
+ }
+ DOT11_VWIFI_COMBINATION_V2, * PDOT11_VWIFI_COMBINATION_V2;
+
+
+
+
+
+
+ typedef
+ struct _DOT11_VWIFI_COMBINATION_V3
+ {
+ NDIS_OBJECT_HEADER Header;
+ ULONG uNumInfrastructure;
+ ULONG uNumAdhoc;
+ ULONG uNumSoftAP;
+ ULONG uNumVirtualStation;
+ ULONG uNumWFDGroup;
+ }
+ DOT11_VWIFI_COMBINATION_V3, * PDOT11_VWIFI_COMBINATION_V3;
+
+
+
+#line 3020 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+
+
+ typedef
+ struct DOT11_VWIFI_ATTRIBUTES
+ {
+ NDIS_OBJECT_HEADER Header;
+ ULONG uTotalNumOfEntries;
+
+
+
+ DOT11_VWIFI_COMBINATION Combinations[1];
+ #line 3032 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+ }
+ DOT11_VWIFI_ATTRIBUTES, * PDOT11_VWIFI_ATTRIBUTES;
+
+
+
+
+
+
+
+
+
+ typedef struct _DOT11_MAC_PARAMETERS{
+ NDIS_OBJECT_HEADER Header;
+ ULONG uOpmodeMask;
+ } DOT11_MAC_PARAMETERS, *PDOT11_MAC_PARAMETERS;
+
+
+
+ typedef struct DOT11_MAC_INFO
+ {
+ ULONG uReserved;
+ ULONG uNdisPortNumber;
+ DOT11_MAC_ADDRESS MacAddr;
+ } DOT11_MAC_INFO, * PDOT11_MAC_INFO;
+
+
+
+
+
+
+
+#line 3064 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+
+
+
+
+
+
+ typedef
+ struct _DOT11_WFD_ATTRIBUTES
+ {
+ NDIS_OBJECT_HEADER Header;
+ ULONG uNumConcurrentGORole;
+ ULONG uNumConcurrentClientRole;
+ ULONG WPSVersionsSupported;
+
+
+ BOOLEAN bServiceDiscoverySupported;
+ BOOLEAN bClientDiscoverabilitySupported;
+ BOOLEAN bInfrastructureManagementSupported;
+
+ ULONG uMaxSecondaryDeviceTypeListSize;
+
+ DOT11_MAC_ADDRESS DeviceAddress;
+ ULONG uInterfaceAddressListCount;
+ PDOT11_MAC_ADDRESS pInterfaceAddressList;
+
+ ULONG uNumSupportedCountryOrRegionStrings;
+
+
+
+ PDOT11_COUNTRY_OR_REGION_STRING pSupportedCountryOrRegionStrings;
+
+
+ ULONG uDiscoveryFilterListSize;
+
+
+ ULONG uGORoleClientTableSize;
+
+
+ }DOT11_WFD_ATTRIBUTES, *PDOT11_WFD_ATTRIBUTES;
+
+
+
+
+
+typedef UCHAR DOT11_WFD_GROUP_CAPABILITY;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _DOT11_WFD_DEVICE_TYPE
+{
+ USHORT CategoryID;
+ USHORT SubCategoryID;
+ UCHAR OUI[4];
+} DOT11_WFD_DEVICE_TYPE, * PDOT11_WFD_DEVICE_TYPE;
+
+
+
+typedef struct _DOT11_WPS_DEVICE_NAME {
+
+
+#line 3182 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+ ULONG uDeviceNameLength;
+ UCHAR ucDeviceName[32];
+} DOT11_WPS_DEVICE_NAME, * PDOT11_WPS_DEVICE_NAME;
+
+
+
+typedef
+struct _DOT11_WFD_CONFIGURATION_TIMEOUT
+{
+ UCHAR GOTimeout;
+ UCHAR ClientTimeout;
+} DOT11_WFD_CONFIGURATION_TIMEOUT, * PDOT11_WFD_CONFIGURATION_TIMEOUT;
+
+
+
+typedef
+struct _DOT11_WFD_GROUP_ID
+{
+ DOT11_MAC_ADDRESS DeviceAddress;
+ DOT11_SSID SSID;
+} DOT11_WFD_GROUP_ID, * PDOT11_WFD_GROUP_ID;
+
+
+
+typedef
+struct _DOT11_WFD_GO_INTENT
+{
+ UCHAR TieBreaker:1;
+ UCHAR Intent:7;
+} DOT11_WFD_GO_INTENT, * PDOT11_WFD_GO_INTENT;
+
+
+
+typedef
+struct _DOT11_WFD_CHANNEL
+{
+ DOT11_COUNTRY_OR_REGION_STRING CountryRegionString;
+ UCHAR OperatingClass;
+ UCHAR ChannelNumber;
+} DOT11_WFD_CHANNEL, * PDOT11_WFD_CHANNEL;
+
+
+
+typedef enum _DOT11_WPS_CONFIG_METHOD
+{
+ DOT11_WPS_CONFIG_METHOD_NULL = 0,
+ DOT11_WPS_CONFIG_METHOD_DISPLAY = 0x0008,
+ DOT11_WPS_CONFIG_METHOD_NFC_TAG = 0x0020,
+ DOT11_WPS_CONFIG_METHOD_NFC_INTERFACE = 0x0040,
+ DOT11_WPS_CONFIG_METHOD_PUSHBUTTON = 0x0080,
+ DOT11_WPS_CONFIG_METHOD_KEYPAD = 0x0100,
+ DOT11_WPS_CONFIG_METHOD_WFDS_DEFAULT = 0x1000
+} DOT11_WPS_CONFIG_METHOD, *PDOT11_WPS_CONFIG_METHOD;
+
+
+typedef enum _DOT11_WPS_DEVICE_PASSWORD_ID
+{
+ DOT11_WPS_PASSWORD_ID_DEFAULT = 0x0000,
+ DOT11_WPS_PASSWORD_ID_USER_SPECIFIED = 0x0001,
+ DOT11_WPS_PASSWORD_ID_MACHINE_SPECIFIED = 0x0002,
+ DOT11_WPS_PASSWORD_ID_REKEY = 0x0003,
+ DOT11_WPS_PASSWORD_ID_PUSHBUTTON = 0x0004,
+ DOT11_WPS_PASSWORD_ID_REGISTRAR_SPECIFIED = 0x0005,
+
+ DOT11_WPS_PASSWORD_ID_NFC_CONNECTION_HANDOVER = 0x0007,
+ DOT11_WPS_PASSWORD_ID_WFD_SERVICES = 0x0008,
+
+ DOT11_WPS_PASSWORD_ID_OOB_RANGE_MIN = 0x0010,
+ DOT11_WPS_PASSWORD_ID_OOB_RANGE_MAX = 0xFFFF,
+
+} DOT11_WPS_DEVICE_PASSWORD_ID, *PDOT11_WPS_DEVICE_PASSWORD_ID;
+
+
+
+typedef struct _WFDSVC_CONNECTION_CAPABILITY
+{
+ BOOLEAN bNew;
+ BOOLEAN bClient;
+ BOOLEAN bGO;
+} WFDSVC_CONNECTION_CAPABILITY, *PWFDSVC_CONNECTION_CAPABILITY;
+
+
+
+
+
+
+typedef struct _DOT11_WFD_SERVICE_HASH_LIST
+{
+ USHORT ServiceHashCount;
+
+
+
+ DOT11_WFD_SERVICE_HASH ServiceHash[1];
+#line 3276 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+} DOT11_WFD_SERVICE_HASH_LIST, *PDOT11_WFD_SERVICE_HASH_LIST;
+
+
+typedef struct _DOT11_WFD_ADVERTISEMENT_ID {
+ ULONG AdvertisementID;
+ DOT11_MAC_ADDRESS ServiceAddress;
+} DOT11_WFD_ADVERTISEMENT_ID, *PDOT11_WFD_ADVERTISEMENT_ID;
+
+
+typedef struct _DOT11_WFD_SESSION_ID {
+ ULONG SessionID;
+ DOT11_MAC_ADDRESS SessionAddress;
+} DOT11_WFD_SESSION_ID, *PDOT11_WFD_SESSION_ID;
+
+
+typedef struct _DOT11_WFD_ADVERTISED_SERVICE_DESCRIPTOR {
+ ULONG AdvertisementID;
+ USHORT ConfigMethods;
+
+
+#line 3297 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+ UCHAR ServiceNameLength;
+ UCHAR ServiceName[255];
+} DOT11_WFD_ADVERTISED_SERVICE_DESCRIPTOR, *PDOT11_WFD_ADVERTISED_SERVICE_DESCRIPTOR;
+
+typedef struct _DOT11_WFD_ADVERTISED_SERVICE_LIST
+{
+ USHORT ServiceCount;
+
+
+
+ DOT11_WFD_ADVERTISED_SERVICE_DESCRIPTOR AdvertisedService[1];
+#line 3309 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+} DOT11_WFD_ADVERTISED_SERVICE_LIST, *PDOT11_WFD_ADVERTISED_SERVICE_LIST;
+
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_WFD_DISCOVER_COMPLETE_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ NDIS_STATUS Status;
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ ULONG uListOffset;
+ ULONG uListLength;
+ } DOT11_WFD_DISCOVER_COMPLETE_PARAMETERS, * PDOT11_WFD_DISCOVER_COMPLETE_PARAMETERS;
+
+
+
+
+
+
+ typedef
+ struct _DOT11_GO_NEGOTIATION_REQUEST_SEND_COMPLETE_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS PeerDeviceAddress;
+ DOT11_DIALOG_TOKEN DialogToken;
+ NDIS_STATUS Status;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ } DOT11_GO_NEGOTIATION_REQUEST_SEND_COMPLETE_PARAMETERS, * PDOT11_GO_NEGOTIATION_REQUEST_SEND_COMPLETE_PARAMETERS;
+
+
+
+
+
+
+ typedef
+ struct _DOT11_RECEIVED_GO_NEGOTIATION_REQUEST_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS PeerDeviceAddress;
+ DOT11_DIALOG_TOKEN DialogToken;
+ PVOID RequestContext;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ } DOT11_RECEIVED_GO_NEGOTIATION_REQUEST_PARAMETERS, * PDOT11_RECEIVED_GO_NEGOTIATION_REQUEST_PARAMETERS;
+
+
+
+
+
+
+ typedef
+ struct _DOT11_GO_NEGOTIATION_RESPONSE_SEND_COMPLETE_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS PeerDeviceAddress;
+ DOT11_DIALOG_TOKEN DialogToken;
+ NDIS_STATUS Status;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ } DOT11_GO_NEGOTIATION_RESPONSE_SEND_COMPLETE_PARAMETERS, * PDOT11_GO_NEGOTIATION_RESPONSE_SEND_COMPLETE_PARAMETERS;
+
+
+
+
+
+
+ typedef
+ struct _DOT11_RECEIVED_GO_NEGOTIATION_RESPONSE_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS PeerDeviceAddress;
+ DOT11_DIALOG_TOKEN DialogToken;
+ PVOID ResponseContext;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ } DOT11_RECEIVED_GO_NEGOTIATION_RESPONSE_PARAMETERS, * PDOT11_RECEIVED_GO_NEGOTIATION_RESPONSE_PARAMETERS;
+
+
+
+
+
+
+ typedef
+ struct _DOT11_GO_NEGOTIATION_CONFIRMATION_SEND_COMPLETE_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS PeerDeviceAddress;
+ DOT11_DIALOG_TOKEN DialogToken;
+ NDIS_STATUS Status;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ } DOT11_GO_NEGOTIATION_CONFIRMATION_SEND_COMPLETE_PARAMETERS, * PDOT11_GO_NEGOTIATION_CONFIRMATION_SEND_COMPLETE_PARAMETERS;
+
+
+
+
+
+
+ typedef
+ struct _DOT11_RECEIVED_GO_NEGOTIATION_CONFIRMATION_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS PeerDeviceAddress;
+ DOT11_DIALOG_TOKEN DialogToken;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ } DOT11_RECEIVED_GO_NEGOTIATION_CONFIRMATION_PARAMETERS, * PDOT11_RECEIVED_GO_NEGOTIATION_CONFIRMATION_PARAMETERS;
+
+
+
+
+
+
+ typedef
+ struct _DOT11_INVITATION_REQUEST_SEND_COMPLETE_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS PeerDeviceAddress;
+ DOT11_MAC_ADDRESS ReceiverAddress;
+ DOT11_DIALOG_TOKEN DialogToken;
+ NDIS_STATUS Status;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ } DOT11_INVITATION_REQUEST_SEND_COMPLETE_PARAMETERS, * PDOT11_INVITATION_REQUEST_SEND_COMPLETE_PARAMETERS;
+
+
+
+
+
+
+ typedef
+ struct _DOT11_RECEIVED_INVITATION_REQUEST_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS TransmitterDeviceAddress;
+ DOT11_MAC_ADDRESS BSSID;
+ DOT11_DIALOG_TOKEN DialogToken;
+ PVOID RequestContext;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ } DOT11_RECEIVED_INVITATION_REQUEST_PARAMETERS, * PDOT11_RECEIVED_INVITATION_REQUEST_PARAMETERS;
+
+
+
+
+
+
+ typedef
+ struct _DOT11_INVITATION_RESPONSE_SEND_COMPLETE_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS ReceiverDeviceAddress;
+ DOT11_DIALOG_TOKEN DialogToken;
+ NDIS_STATUS Status;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ } DOT11_INVITATION_RESPONSE_SEND_COMPLETE_PARAMETERS, * PDOT11_INVITATION_RESPONSE_SEND_COMPLETE_PARAMETERS;
+
+
+
+
+
+
+ typedef
+ struct _DOT11_RECEIVED_INVITATION_RESPONSE_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS TransmitterDeviceAddress;
+ DOT11_MAC_ADDRESS BSSID;
+ DOT11_DIALOG_TOKEN DialogToken;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ } DOT11_RECEIVED_INVITATION_RESPONSE_PARAMETERS, * PDOT11_RECEIVED_INVITATION_RESPONSE_PARAMETERS;
+
+
+
+
+
+
+ typedef
+ struct _DOT11_PROVISION_DISCOVERY_REQUEST_SEND_COMPLETE_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS PeerDeviceAddress;
+ DOT11_MAC_ADDRESS ReceiverAddress;
+ DOT11_DIALOG_TOKEN DialogToken;
+ NDIS_STATUS Status;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ } DOT11_PROVISION_DISCOVERY_REQUEST_SEND_COMPLETE_PARAMETERS, * PDOT11_PROVISION_DISCOVERY_REQUEST_SEND_COMPLETE_PARAMETERS;
+
+
+
+
+
+
+ typedef
+ struct _DOT11_RECEIVED_PROVISION_DISCOVERY_REQUEST_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS TransmitterDeviceAddress;
+ DOT11_MAC_ADDRESS BSSID;
+ DOT11_DIALOG_TOKEN DialogToken;
+ PVOID RequestContext;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ } DOT11_RECEIVED_PROVISION_DISCOVERY_REQUEST_PARAMETERS, * PDOT11_RECEIVED_PROVISION_DISCOVERY_REQUEST_PARAMETERS;
+
+
+
+
+
+
+ typedef
+ struct _DOT11_PROVISION_DISCOVERY_RESPONSE_SEND_COMPLETE_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS ReceiverDeviceAddress;
+ DOT11_DIALOG_TOKEN DialogToken;
+ NDIS_STATUS Status;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ } DOT11_PROVISION_DISCOVERY_RESPONSE_SEND_COMPLETE_PARAMETERS, * PDOT11_PROVISION_DISCOVERY_RESPONSE_SEND_COMPLETE_PARAMETERS;
+
+
+
+
+
+
+ typedef
+ struct _DOT11_RECEIVED_PROVISION_DISCOVERY_RESPONSE_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS TransmitterDeviceAddress;
+ DOT11_MAC_ADDRESS BSSID;
+ DOT11_DIALOG_TOKEN DialogToken;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ } DOT11_RECEIVED_PROVISION_DISCOVERY_RESPONSE_PARAMETERS, * PDOT11_RECEIVED_PROVISION_DISCOVERY_RESPONSE_PARAMETERS;
+
+
+
+
+
+
+
+
+
+
+
+ typedef enum _DOT11_ANQP_QUERY_RESULT
+ {
+ dot11_ANQP_query_result_success = 0,
+ dot11_ANQP_query_result_failure = 1,
+ dot11_ANQP_query_result_timed_out = 2,
+ dot11_ANQP_query_result_resources = 3,
+ dot11_ANQP_query_result_advertisement_protocol_not_supported_on_remote = 4,
+ dot11_ANQP_query_result_gas_protocol_failure = 5,
+ dot11_ANQP_query_result_advertisement_server_not_responding = 6,
+ dot11_ANQP_query_result_access_issues = 7
+ } DOT11_ANQP_QUERY_RESULT, *PDOT11_ANQP_QUERY_RESULT;
+
+ typedef
+ struct _DOT11_ANQP_QUERY_COMPLETE_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_ANQP_QUERY_RESULT Status;
+ HANDLE hContext;
+ ULONG uResponseLength;
+ } DOT11_ANQP_QUERY_COMPLETE_PARAMETERS, * PDOT11_ANQP_QUERY_COMPLETE_PARAMETERS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_WFD_DEVICE_CAPABILITY_CONFIG
+ {
+ NDIS_OBJECT_HEADER Header;
+ BOOLEAN bServiceDiscoveryEnabled;
+ BOOLEAN bClientDiscoverabilityEnabled;
+ BOOLEAN bConcurrentOperationSupported;
+ BOOLEAN bInfrastructureManagementEnabled;
+ BOOLEAN bDeviceLimitReached;
+ BOOLEAN bInvitationProcedureEnabled;
+ ULONG WPSVersionsEnabled;
+ } DOT11_WFD_DEVICE_CAPABILITY_CONFIG, * PDOT11_WFD_DEVICE_CAPABILITY_CONFIG;
+
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_WFD_GROUP_OWNER_CAPABILITY_CONFIG
+ {
+ NDIS_OBJECT_HEADER Header;
+ BOOLEAN bPersistentGroupEnabled;
+ BOOLEAN bIntraBSSDistributionSupported;
+ BOOLEAN bCrossConnectionSupported;
+ BOOLEAN bPersistentReconnectSupported;
+ BOOLEAN bGroupFormationEnabled;
+ ULONG uMaximumGroupLimit;
+ } DOT11_WFD_GROUP_OWNER_CAPABILITY_CONFIG, *PDOT11_WFD_GROUP_OWNER_CAPABILITY_CONFIG;
+
+
+
+
+
+ typedef
+ struct _DOT11_WFD_GROUP_OWNER_CAPABILITY_CONFIG_V2
+ {
+ NDIS_OBJECT_HEADER Header;
+ BOOLEAN bPersistentGroupEnabled;
+ BOOLEAN bIntraBSSDistributionSupported;
+ BOOLEAN bCrossConnectionSupported;
+ BOOLEAN bPersistentReconnectSupported;
+ BOOLEAN bGroupFormationEnabled;
+ ULONG uMaximumGroupLimit;
+ BOOLEAN bEapolKeyIpAddressAllocationSupported;
+ } DOT11_WFD_GROUP_OWNER_CAPABILITY_CONFIG_V2, *PDOT11_WFD_GROUP_OWNER_CAPABILITY_CONFIG_V2;
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_WFD_DEVICE_INFO
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS DeviceAddress;
+ USHORT ConfigMethods;
+ DOT11_WFD_DEVICE_TYPE PrimaryDeviceType;
+ DOT11_WPS_DEVICE_NAME DeviceName;
+ } DOT11_WFD_DEVICE_INFO, *PDOT11_WFD_DEVICE_INFO;
+
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_WFD_SECONDARY_DEVICE_TYPE_LIST {
+ NDIS_OBJECT_HEADER Header;
+ ULONG uNumOfEntries;
+ ULONG uTotalNumOfEntries;
+ DOT11_WFD_DEVICE_TYPE SecondaryDeviceTypes[1];
+ } DOT11_WFD_SECONDARY_DEVICE_TYPE_LIST, * PDOT11_WFD_SECONDARY_DEVICE_TYPE_LIST;
+
+
+
+
+
+
+
+ typedef enum _DOT11_WFD_DISCOVER_TYPE
+ {
+ dot11_wfd_discover_type_scan_only = 1,
+ dot11_wfd_discover_type_find_only = 2,
+ dot11_wfd_discover_type_auto = 3,
+ dot11_wfd_discover_type_scan_social_channels = 4,
+ dot11_wfd_discover_type_forced = 0x80000000
+
+ } DOT11_WFD_DISCOVER_TYPE, *PDOT11_WFD_DISCOVER_TYPE;
+
+ typedef enum _DOT11_WFD_SCAN_TYPE
+ {
+ dot11_wfd_scan_type_active = 1,
+ dot11_wfd_scan_type_passive = 2,
+ dot11_wfd_scan_type_auto = 3
+
+ } DOT11_WFD_SCAN_TYPE, *PDOT11_WFD_SCAN_TYPE;
+
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_WFD_DISCOVER_DEVICE_FILTER
+ {
+ DOT11_MAC_ADDRESS DeviceID;
+ UCHAR ucBitmask;
+ DOT11_SSID GroupSSID;
+ } DOT11_WFD_DISCOVER_DEVICE_FILTER, *PDOT11_WFD_DISCOVER_DEVICE_FILTER;
+
+
+
+ typedef
+ struct _DOT11_WFD_DISCOVER_REQUEST
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_WFD_DISCOVER_TYPE DiscoverType;
+ DOT11_WFD_SCAN_TYPE ScanType;
+ ULONG uDiscoverTimeout;
+ ULONG uDeviceFilterListOffset;
+ ULONG uNumDeviceFilters;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ BOOLEAN bForceScanLegacyNetworks;
+ } DOT11_WFD_DISCOVER_REQUEST, *PDOT11_WFD_DISCOVER_REQUEST;
+
+
+
+
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_WFD_DEVICE_ENTRY
+ {
+ ULONG uPhyId;
+ DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO PhySpecificInfo;
+ DOT11_MAC_ADDRESS dot11BSSID;
+ DOT11_BSS_TYPE dot11BSSType;
+ DOT11_MAC_ADDRESS TransmitterAddress;
+ LONG lRSSI;
+ ULONG uLinkQuality;
+ USHORT usBeaconPeriod;
+ ULONGLONG ullTimestamp;
+ ULONGLONG ullBeaconHostTimestamp;
+ ULONGLONG ullProbeResponseHostTimestamp;
+ USHORT usCapabilityInformation;
+ ULONG uBeaconIEsOffset;
+ ULONG uBeaconIEsLength;
+ ULONG uProbeResponseIEsOffset;
+ ULONG uProbeResponseIEsLength;
+ } DOT11_WFD_DEVICE_ENTRY, *PDOT11_WFD_DEVICE_ENTRY;
+
+#line 3767 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_WFD_ADDITIONAL_IE
+ {
+ NDIS_OBJECT_HEADER Header;
+ ULONG uBeaconIEsOffset;
+ ULONG uBeaconIEsLength;
+ ULONG uProbeResponseIEsOffset;
+ ULONG uProbeResponseIEsLength;
+ ULONG uDefaultRequestIEsOffset;
+ ULONG uDefaultRequestIEsLength;
+
+ } DOT11_WFD_ADDITIONAL_IE,
+ *PDOT11_WFD_ADDITIONAL_IE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_SEND_GO_NEGOTIATION_REQUEST_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS PeerDeviceAddress;
+ DOT11_DIALOG_TOKEN DialogToken;
+ ULONG uSendTimeout;
+ DOT11_WFD_GO_INTENT GroupOwnerIntent;
+ DOT11_WFD_CONFIGURATION_TIMEOUT MinimumConfigTimeout;
+ DOT11_MAC_ADDRESS IntendedInterfaceAddress;
+ DOT11_WFD_GROUP_CAPABILITY GroupCapability;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ } DOT11_SEND_GO_NEGOTIATION_REQUEST_PARAMETERS, * PDOT11_SEND_GO_NEGOTIATION_REQUEST_PARAMETERS;
+
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_SEND_GO_NEGOTIATION_RESPONSE_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS PeerDeviceAddress;
+ DOT11_DIALOG_TOKEN DialogToken;
+ PVOID RequestContext;
+ ULONG uSendTimeout;
+ DOT11_WFD_STATUS_CODE Status;
+ DOT11_WFD_GO_INTENT GroupOwnerIntent;
+ DOT11_WFD_CONFIGURATION_TIMEOUT MinimumConfigTimeout;
+ DOT11_MAC_ADDRESS IntendedInterfaceAddress;
+ DOT11_WFD_GROUP_CAPABILITY GroupCapability;
+ DOT11_WFD_GROUP_ID GroupID;
+ BOOLEAN bUseGroupID;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ } DOT11_SEND_GO_NEGOTIATION_RESPONSE_PARAMETERS, * PDOT11_SEND_GO_NEGOTIATION_RESPONSE_PARAMETERS;
+
+
+
+
+
+
+
+
+ typedef struct _DOT11_SEND_GO_NEGOTIATION_CONFIRMATION_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS PeerDeviceAddress;
+ DOT11_DIALOG_TOKEN DialogToken;
+ PVOID ResponseContext;
+ ULONG uSendTimeout;
+ DOT11_WFD_STATUS_CODE Status;
+ DOT11_WFD_GROUP_CAPABILITY GroupCapability;
+ DOT11_WFD_GROUP_ID GroupID;
+ BOOLEAN bUseGroupID;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ } DOT11_SEND_GO_NEGOTIATION_CONFIRMATION_PARAMETERS, * PDOT11_SEND_GO_NEGOTIATION_CONFIRMATION_PARAMETERS;
+
+
+
+
+
+
+ typedef
+ struct _DOT11_WFD_INVITATION_FLAGS
+ {
+ UCHAR InvitationType:1;
+ UCHAR Reserved:7;
+ } DOT11_WFD_INVITATION_FLAGS, * PDOT11_WFD_INVITATION_FLAGS;
+
+
+ typedef
+ struct _DOT11_SEND_INVITATION_REQUEST_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_DIALOG_TOKEN DialogToken;
+ DOT11_MAC_ADDRESS PeerDeviceAddress;
+ ULONG uSendTimeout;
+ DOT11_WFD_CONFIGURATION_TIMEOUT MinimumConfigTimeout;
+ DOT11_WFD_INVITATION_FLAGS InvitationFlags;
+ DOT11_MAC_ADDRESS GroupBSSID;
+ BOOLEAN bUseGroupBSSID;
+ DOT11_WFD_CHANNEL OperatingChannel;
+ BOOLEAN bUseSpecifiedOperatingChannel;
+ DOT11_WFD_GROUP_ID GroupID;
+ BOOLEAN bLocalGO;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ } DOT11_SEND_INVITATION_REQUEST_PARAMETERS, * PDOT11_SEND_INVITATION_REQUEST_PARAMETERS;
+
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_SEND_INVITATION_RESPONSE_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS ReceiverDeviceAddress;
+ DOT11_DIALOG_TOKEN DialogToken;
+ PVOID RequestContext;
+ ULONG uSendTimeout;
+ DOT11_WFD_STATUS_CODE Status;
+ DOT11_WFD_CONFIGURATION_TIMEOUT MinimumConfigTimeout;
+ DOT11_MAC_ADDRESS GroupBSSID;
+ BOOLEAN bUseGroupBSSID;
+ DOT11_WFD_CHANNEL OperatingChannel;
+ BOOLEAN bUseSpecifiedOperatingChannel;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ } DOT11_SEND_INVITATION_RESPONSE_PARAMETERS, * PDOT11_SEND_INVITATION_RESPONSE_PARAMETERS;
+
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_SEND_PROVISION_DISCOVERY_REQUEST_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_DIALOG_TOKEN DialogToken;
+ DOT11_MAC_ADDRESS PeerDeviceAddress;
+ ULONG uSendTimeout;
+ DOT11_WFD_GROUP_CAPABILITY GroupCapability;
+ DOT11_WFD_GROUP_ID GroupID;
+ BOOLEAN bUseGroupID;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ } DOT11_SEND_PROVISION_DISCOVERY_REQUEST_PARAMETERS, * PDOT11_SEND_PROVISION_DISCOVERY_REQUEST_PARAMETERS;
+
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_SEND_PROVISION_DISCOVERY_RESPONSE_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MAC_ADDRESS ReceiverDeviceAddress;
+ DOT11_DIALOG_TOKEN DialogToken;
+ PVOID RequestContext;
+ ULONG uSendTimeout;
+ ULONG uIEsOffset;
+ ULONG uIEsLength;
+ } DOT11_SEND_PROVISION_DISCOVERY_RESPONSE_PARAMETERS, * PDOT11_SEND_PROVISION_DISCOVERY_RESPONSE_PARAMETERS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_WFD_DEVICE_LISTEN_CHANNEL
+ {
+ NDIS_OBJECT_HEADER Header;
+ UCHAR ChannelNumber;
+ } DOT11_WFD_DEVICE_LISTEN_CHANNEL, *PDOT11_WFD_DEVICE_LISTEN_CHANNEL;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_WFD_GROUP_START_PARAMETERS {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_WFD_CHANNEL AdvertisedOperatingChannel;
+ } DOT11_WFD_GROUP_START_PARAMETERS, * PDOT11_WFD_GROUP_START_PARAMETERS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef
+ struct _DOT11_WFD_GROUP_JOIN_PARAMETERS {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_WFD_CHANNEL GOOperatingChannel;
+ ULONG GOConfigTime;
+ BOOLEAN bInGroupFormation;
+ BOOLEAN bWaitForWPSReady;
+ } DOT11_WFD_GROUP_JOIN_PARAMETERS, * PDOT11_WFD_GROUP_JOIN_PARAMETERS;
+
+
+
+
+
+#line 4100 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+
+
+
+
+
+
+
+
+
+ typedef struct _DOT11_POWER_MGMT_AUTO_MODE_ENABLED_INFO {
+ NDIS_OBJECT_HEADER Header;
+ BOOLEAN bEnabled;
+ } DOT11_POWER_MGMT_AUTO_MODE_ENABLED_INFO, * PDOT11_POWER_MGMT_AUTO_MODE_ENABLED_INFO;
+
+
+
+ typedef enum _DOT11_POWER_MODE_REASON {
+ dot11_power_mode_reason_no_change =0,
+ dot11_power_mode_reason_noncompliant_AP =1,
+ dot11_power_mode_reason_legacy_WFD_device =2,
+ dot11_power_mode_reason_compliant_AP =3,
+ dot11_power_mode_reason_compliant_WFD_device=4,
+ dot11_power_mode_reason_others =5
+ } DOT11_POWER_MODE_REASON;
+
+
+
+ typedef struct _DOT11_POWER_MGMT_MODE_STATUS_INFO {
+ NDIS_OBJECT_HEADER Header;
+ DOT11_POWER_MODE PowerSaveMode;
+ ULONG uPowerSaveLevel;
+ DOT11_POWER_MODE_REASON Reason;
+ } DOT11_POWER_MGMT_MODE_STATUS_INFO, * PDOT11_POWER_MGMT_MODE_STATUSINFO;
+
+
+
+
+
+
+ typedef struct DOT11_CHANNEL_HINT {
+ DOT11_PHY_TYPE Dot11PhyType;
+ ULONG uChannelNumber;
+ } DOT11_CHANNEL_HINT, * PDOT11_CHANNEL_HINT;
+
+ typedef struct DOT11_OFFLOAD_NETWORK {
+ DOT11_SSID Ssid;
+ DOT11_CIPHER_ALGORITHM UnicastCipher;
+ DOT11_AUTH_ALGORITHM AuthAlgo;
+ DOT11_CHANNEL_HINT Dot11ChannelHints[4];
+ } DOT11_OFFLOAD_NETWORK, * PDOT11_OFFLOAD_NETWORK;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ typedef struct _DOT11_OFFLOAD_NETWORK_LIST_INFO {
+ NDIS_OBJECT_HEADER Header;
+ ULONG ulFlags;
+ ULONG FastScanPeriod;
+ ULONG FastScanIterations;
+ ULONG SlowScanPeriod;
+ ULONG uNumOfEntries;
+ DOT11_OFFLOAD_NETWORK offloadNetworkList[1];
+ } DOT11_OFFLOAD_NETWORK_LIST_INFO, * PDOT11_OFFLOAD_NETWORK_LIST_INFO;
+
+#line 4177 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+
+
+
+
+ typedef
+ struct _DOT11_OFFLOAD_NETWORK_STATUS_PARAMETERS
+ {
+ NDIS_OBJECT_HEADER Header;
+ NDIS_STATUS Status;
+ } DOT11_OFFLOAD_NETWORK_STATUS_PARAMETERS, * PDOT11_OFFLOAD_NETWORK_STATUS_PARAMETERS;
+
+
+
+
+
+
+
+
+
+ typedef enum _DOT11_MANUFACTURING_TEST_TYPE {
+ dot11_manufacturing_test_unknown = 0,
+ dot11_manufacturing_test_self_start = 1,
+ dot11_manufacturing_test_self_query_result = 2,
+ dot11_manufacturing_test_rx = 3,
+ dot11_manufacturing_test_tx = 4,
+ dot11_manufacturing_test_query_adc = 5,
+ dot11_manufacturing_test_set_data = 6,
+ dot11_manufacturing_test_query_data = 7,
+ dot11_manufacturing_test_sleep = 8,
+ dot11_manufacturing_test_awake = 9,
+ dot11_manufacturing_test_IHV_start = 0x80000000,
+ dot11_manufacturing_test_IHV_end = 0xffffffff
+ } DOT11_MANUFACTURING_TEST_TYPE, * PDOT11_MANUFACTURING_TEST_TYPE;
+
+ typedef struct _DOT11_MANUFACTURING_TEST {
+ DOT11_MANUFACTURING_TEST_TYPE dot11ManufacturingTestType;
+ ULONG uBufferLength;
+ UCHAR ucBuffer[1];
+ } DOT11_MANUFACTURING_TEST, * PDOT11_MANUFACTURING_TEST;
+
+
+
+ typedef enum DOT11_MANUFACTURING_SELF_TEST_TYPE {
+ DOT11_MANUFACTURING_SELF_TEST_TYPE_INTERFACE = 1,
+ DOT11_MANUFACTURING_SELF_TEST_TYPE_RF_INTERFACE,
+ DOT11_MANUFACTURING_SELF_TEST_TYPE_BT_COEXISTENCE
+ } DOT11_MANUFACTURING_SELF_TEST_TYPE, * PDOT11_MANUFACTURING_SELF_TEST_TYPE;
+
+ typedef struct _DOT11_MANUFACTURING_SELF_TEST_SET_PARAMS {
+ DOT11_MANUFACTURING_SELF_TEST_TYPE SelfTestType;
+ ULONG uTestID;
+ ULONG uPinBitMask;
+ PVOID pvContext;
+ ULONG uBufferLength;
+ UCHAR ucBufferIn[1];
+ } DOT11_MANUFACTURING_SELF_TEST_SET_PARAMS, *PDOT11_MANUFACTURING_SELF_TEST_SET_PARAMS;
+
+ typedef struct _DOT11_MANUFACTURING_SELF_TEST_QUERY_RESULTS {
+ DOT11_MANUFACTURING_SELF_TEST_TYPE SelfTestType;
+ ULONG uTestID;
+ BOOLEAN bResult;
+ ULONG uPinFailedBitMask;
+ PVOID pvContext;
+ ULONG uBytesWrittenOut;
+ UCHAR ucBufferOut[1];
+ } DOT11_MANUFACTURING_SELF_TEST_QUERY_RESULTS, *PDOT11_MANUFACTURING_SELF_TEST_QUERY_RESULTS;
+
+
+ typedef enum DOT11_BAND {
+ dot11_band_2p4g = 1,
+ dot11_band_4p9g,
+ dot11_band_5g
+ } DOT11_BAND, * PDOT11_BAND;
+
+
+ typedef struct _DOT11_MANUFACTURING_FUNCTIONAL_TEST_RX {
+ BOOLEAN bEnabled;
+ DOT11_BAND Dot11Band;
+ ULONG uChannel;
+ LONG PowerLevel;
+ } DOT11_MANUFACTURING_FUNCTIONAL_TEST_RX, * PDOT11_MANUFACTURING_FUNCTIONAL_TEST_RX;
+
+
+ typedef struct _DOT11_MANUFACTURING_FUNCTIONAL_TEST_TX {
+ BOOLEAN bEnable;
+ BOOLEAN bOpenLoop;
+ DOT11_BAND Dot11Band;
+ ULONG uChannel;
+ ULONG uSetPowerLevel;
+ LONG ADCPowerLevel;
+ } DOT11_MANUFACTURING_FUNCTIONAL_TEST_TX, * PDOT11_MANUFACTURING_FUNCTIONAL_TEST_TX;
+
+
+ typedef struct _DOT11_MANUFACTURING_FUNCTIONAL_TEST_QUERY_ADC {
+ DOT11_BAND Dot11Band;
+ ULONG uChannel;
+ LONG ADCPowerLevel;
+ } DOT11_MANUFACTURING_FUNCTIONAL_TEST_QUERY_ADC, * PDOT11_MANUFACTURING_FUNCTIONAL_TEST_QUERY_ADC;
+
+
+
+ typedef struct _DOT11_MANUFACTURING_TEST_SET_DATA {
+ ULONG uKey;
+ ULONG uOffset;
+ ULONG uBufferLength;
+ UCHAR ucBufferIn[1];
+ } DOT11_MANUFACTURING_TEST_SET_DATA, * PDOT11_MANUFACTURING_TEST_SET_DATA;
+
+
+
+ typedef struct _DOT11_MANUFACTURING_TEST_QUERY_DATA {
+ ULONG uKey;
+ ULONG uOffset;
+ ULONG uBufferLength;
+ ULONG uBytesRead;
+ UCHAR ucBufferOut[1];
+ } DOT11_MANUFACTURING_TEST_QUERY_DATA, * PDOT11_MANUFACTURING_TEST_QUERY_DATA;
+
+
+
+ typedef struct _DOT11_MANUFACTURING_TEST_SLEEP {
+ ULONG uSleepTime;
+ PVOID pvContext;
+ } DOT11_MANUFACTURING_TEST_SLEEP, * PDOT11_MANUFACTURING_TEST_SLEEP;
+
+
+
+
+
+
+ typedef enum _DOT11_MANUFACTURING_CALLBACK_TYPE {
+ dot11_manufacturing_callback_unknown = 0,
+ dot11_manufacturing_callback_self_test_complete = 1,
+ dot11_manufacturing_callback_sleep_complete = 2,
+ dot11_manufacturing_callback_IHV_start = 0x80000000,
+ dot11_manufacturing_callback_IHV_end = 0xffffffff
+ } DOT11_MANUFACTURING_CALLBACK_TYPE, * PDOT11_MANUFACTURING_CALLBACK_TYPE;
+
+ typedef struct DOT11_MANUFACTURING_CALLBACK_PARAMETERS
+ {
+
+ NDIS_OBJECT_HEADER Header;
+ DOT11_MANUFACTURING_CALLBACK_TYPE dot11ManufacturingCallbackType;
+ ULONG uStatus;
+ PVOID pvContext;
+ } DOT11_MANUFACTURING_CALLBACK_PARAMETERS, * PDOT11_MANUFACTURING_CALLBACK_PARAMETERS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(pop)
+#line 4345 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+
+
+#line 4348 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+#pragma endregion
+
+#line 4351 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\windot11.h"
+#pragma external_header(pop)
+#line 2683 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+#line 2684 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+#line 2685 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_GUID
+{
+ GUID Guid;
+ union
+ {
+ NDIS_OID Oid;
+ NDIS_STATUS Status;
+ };
+ ULONG Size;
+
+
+
+ ULONG Flags;
+} NDIS_GUID, *PNDIS_GUID;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_IRDA_PACKET_INFO
+{
+ ULONG ExtraBOFs;
+ ULONG MinTurnAroundTime;
+} NDIS_IRDA_PACKET_INFO, *PNDIS_IRDA_PACKET_INFO;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef IF_COUNTED_STRING NDIS_IF_COUNTED_STRING, *PNDIS_IF_COUNTED_STRING;
+
+
+typedef IF_PHYSICAL_ADDRESS NDIS_IF_PHYSICAL_ADDRESS, *PNDIS_IF_PHYSICAL_ADDRESS;
+
+
+
+
+typedef NET_IF_MEDIA_CONNECT_STATE NDIS_MEDIA_CONNECT_STATE, *PNDIS_MEDIA_CONNECT_STATE;
+
+
+
+
+typedef NET_IF_MEDIA_DUPLEX_STATE NDIS_MEDIA_DUPLEX_STATE, *PNDIS_MEDIA_DUPLEX_STATE;
+
+typedef enum _NDIS_SUPPORTED_PAUSE_FUNCTIONS
+{
+ NdisPauseFunctionsUnsupported,
+ NdisPauseFunctionsSendOnly,
+ NdisPauseFunctionsReceiveOnly,
+ NdisPauseFunctionsSendAndReceive,
+ NdisPauseFunctionsUnknown
+} NDIS_SUPPORTED_PAUSE_FUNCTIONS, *PNDIS_SUPPORTED_PAUSE_FUNCTIONS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_LINK_STATE
+{
+ NDIS_OBJECT_HEADER Header;
+ NDIS_MEDIA_CONNECT_STATE MediaConnectState;
+ NDIS_MEDIA_DUPLEX_STATE MediaDuplexState;
+ ULONG64 XmitLinkSpeed;
+ ULONG64 RcvLinkSpeed;
+ NDIS_SUPPORTED_PAUSE_FUNCTIONS PauseFunctions;
+ ULONG AutoNegotiationFlags;
+} NDIS_LINK_STATE, *PNDIS_LINK_STATE;
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_LINK_PARAMETERS
+{
+ NDIS_OBJECT_HEADER Header;
+ NDIS_MEDIA_DUPLEX_STATE MediaDuplexState;
+ ULONG64 XmitLinkSpeed;
+ ULONG64 RcvLinkSpeed;
+ NDIS_SUPPORTED_PAUSE_FUNCTIONS PauseFunctions;
+ ULONG AutoNegotiationFlags;
+} NDIS_LINK_PARAMETERS, *PNDIS_LINK_PARAMETERS;
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_OPER_STATE
+{
+ NDIS_OBJECT_HEADER Header;
+ NET_IF_OPER_STATUS OperationalStatus;
+ ULONG OperationalStatusFlags;
+} NDIS_OPER_STATE, *PNDIS_OPER_STATE;
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_IP_OPER_STATUS
+{
+ ULONG AddressFamily;
+ NET_IF_OPER_STATUS OperationalStatus;
+ ULONG OperationalStatusFlags;
+} NDIS_IP_OPER_STATUS, *PNDIS_IP_OPER_STATUS;
+
+
+
+
+
+
+
+
+typedef struct _NDIS_IP_OPER_STATUS_INFO
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG Flags;
+ ULONG NumberofAddressFamiliesReturned;
+ NDIS_IP_OPER_STATUS IpOperationalStatus[32];
+} NDIS_IP_OPER_STATUS_INFO, *PNDIS_IP_OPER_STATUS_INFO;
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_IP_OPER_STATE
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG Flags;
+ NDIS_IP_OPER_STATUS IpOperationalStatus;
+} NDIS_IP_OPER_STATE, *PNDIS_IP_OPER_STATE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2998 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3016 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3032 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+#line 3043 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 3047 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 3051 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 3055 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+#line 3062 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+typedef struct _NDIS_OFFLOAD_PARAMETERS
+{
+ NDIS_OBJECT_HEADER Header;
+
+ UCHAR IPv4Checksum;
+ UCHAR TCPIPv4Checksum;
+ UCHAR UDPIPv4Checksum;
+
+ UCHAR TCPIPv6Checksum;
+ UCHAR UDPIPv6Checksum;
+
+ UCHAR LsoV1;
+ UCHAR IPsecV1;
+
+ UCHAR LsoV2IPv4;
+ UCHAR LsoV2IPv6;
+
+ UCHAR TcpConnectionIPv4;
+ UCHAR TcpConnectionIPv6;
+
+ ULONG Flags;
+
+
+
+
+#line 3089 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3102 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 3114 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+#line 3122 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+} NDIS_OFFLOAD_PARAMETERS, *PNDIS_OFFLOAD_PARAMETERS;
+
+
+
+
+
+#line 3129 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 3133 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 3137 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 3141 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\offloadtypes.h"
+
+
+#pragma once
+
+#pragma region App, Games, or System family
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 31 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\offloadtypes.h"
+#pragma endregion
+
+#pragma external_header(pop)
+#line 3143 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+#pragma warning(push)
+#pragma warning(disable:4214)
+
+
+
+
+
+typedef struct _NDIS_TCP_LARGE_SEND_OFFLOAD_V1
+{
+
+ struct
+ {
+ ULONG Encapsulation;
+ ULONG MaxOffLoadSize;
+ ULONG MinSegmentCount;
+ ULONG TcpOptions:2;
+ ULONG IpOptions:2;
+ } IPv4;
+
+} NDIS_TCP_LARGE_SEND_OFFLOAD_V1, *PNDIS_TCP_LARGE_SEND_OFFLOAD_V1;
+
+
+
+
+
+
+typedef struct _NDIS_TCP_IP_CHECKSUM_OFFLOAD
+{
+
+ struct
+ {
+ ULONG Encapsulation;
+ ULONG IpOptionsSupported:2;
+ ULONG TcpOptionsSupported:2;
+ ULONG TcpChecksum:2;
+ ULONG UdpChecksum:2;
+ ULONG IpChecksum:2;
+ } IPv4Transmit;
+
+ struct
+ {
+ ULONG Encapsulation;
+ ULONG IpOptionsSupported:2;
+ ULONG TcpOptionsSupported:2;
+ ULONG TcpChecksum:2;
+ ULONG UdpChecksum:2;
+ ULONG IpChecksum:2;
+ } IPv4Receive;
+
+
+ struct
+ {
+ ULONG Encapsulation;
+ ULONG IpExtensionHeadersSupported:2;
+ ULONG TcpOptionsSupported:2;
+ ULONG TcpChecksum:2;
+ ULONG UdpChecksum:2;
+
+ } IPv6Transmit;
+
+ struct
+ {
+ ULONG Encapsulation;
+ ULONG IpExtensionHeadersSupported:2;
+ ULONG TcpOptionsSupported:2;
+ ULONG TcpChecksum:2;
+ ULONG UdpChecksum:2;
+
+ } IPv6Receive;
+
+} NDIS_TCP_IP_CHECKSUM_OFFLOAD, *PNDIS_TCP_IP_CHECKSUM_OFFLOAD;
+
+
+
+
+
+
+typedef struct _NDIS_IPSEC_OFFLOAD_V1
+{
+ struct
+ {
+ ULONG Encapsulation;
+ ULONG AhEspCombined;
+ ULONG TransportTunnelCombined;
+ ULONG IPv4Options;
+ ULONG Flags;
+ } Supported;
+
+ struct
+ {
+ ULONG Md5:2;
+ ULONG Sha_1:2;
+ ULONG Transport:2;
+ ULONG Tunnel:2;
+ ULONG Send:2;
+ ULONG Receive:2;
+ } IPv4AH;
+
+ struct
+ {
+ ULONG Des:2;
+ ULONG Reserved:2;
+ ULONG TripleDes:2;
+ ULONG NullEsp:2;
+ ULONG Transport:2;
+ ULONG Tunnel:2;
+ ULONG Send:2;
+ ULONG Receive:2;
+ } IPv4ESP;
+
+} NDIS_IPSEC_OFFLOAD_V1, *PNDIS_IPSEC_OFFLOAD_V1;
+
+
+
+
+
+typedef struct _NDIS_TCP_LARGE_SEND_OFFLOAD_V2
+{
+ struct
+ {
+ ULONG Encapsulation;
+ ULONG MaxOffLoadSize;
+ ULONG MinSegmentCount;
+ }IPv4;
+
+ struct
+ {
+ ULONG Encapsulation;
+ ULONG MaxOffLoadSize;
+ ULONG MinSegmentCount;
+ ULONG IpExtensionHeadersSupported:2;
+ ULONG TcpOptionsSupported:2;
+ }IPv6;
+
+} NDIS_TCP_LARGE_SEND_OFFLOAD_V2, *PNDIS_TCP_LARGE_SEND_OFFLOAD_V2;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3334 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+#pragma warning(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3386 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3418 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3436 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3471 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+#line 3481 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+#line 3491 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 3495 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 3499 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 3503 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 3507 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 3511 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+typedef struct _NDIS_OFFLOAD
+{
+ NDIS_OBJECT_HEADER Header;
+
+
+
+
+ NDIS_TCP_IP_CHECKSUM_OFFLOAD Checksum;
+
+
+
+
+ NDIS_TCP_LARGE_SEND_OFFLOAD_V1 LsoV1;
+
+
+
+
+ NDIS_IPSEC_OFFLOAD_V1 IPsecV1;
+
+
+
+
+ NDIS_TCP_LARGE_SEND_OFFLOAD_V2 LsoV2;
+
+ ULONG Flags;
+
+
+
+
+
+
+#line 3544 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 3556 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 3568 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+#line 3576 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+#line 3583 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+} NDIS_OFFLOAD, *PNDIS_OFFLOAD;
+
+
+
+
+
+#line 3591 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 3595 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 3599 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 3603 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 3607 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 3611 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+typedef struct _NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1
+{
+ struct
+ {
+ ULONG Encapsulation;
+ ULONG MaxOffLoadSize;
+ ULONG MinSegmentCount;
+ ULONG TcpOptions;
+ ULONG IpOptions;
+ } IPv4;
+
+} NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1, *PNDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1;
+
+typedef struct _NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD
+{
+
+ struct
+ {
+ ULONG Encapsulation;
+ ULONG IpOptionsSupported;
+ ULONG TcpOptionsSupported;
+ ULONG TcpChecksum;
+ ULONG UdpChecksum;
+ ULONG IpChecksum;
+ } IPv4Transmit;
+
+ struct
+ {
+ ULONG Encapsulation;
+ ULONG IpOptionsSupported;
+ ULONG TcpOptionsSupported;
+ ULONG TcpChecksum;
+ ULONG UdpChecksum;
+ ULONG IpChecksum;
+ } IPv4Receive;
+
+
+ struct
+ {
+ ULONG Encapsulation;
+ ULONG IpExtensionHeadersSupported;
+ ULONG TcpOptionsSupported;
+ ULONG TcpChecksum;
+ ULONG UdpChecksum;
+
+ } IPv6Transmit;
+
+ struct
+ {
+ ULONG Encapsulation;
+ ULONG IpExtensionHeadersSupported;
+ ULONG TcpOptionsSupported;
+ ULONG TcpChecksum;
+ ULONG UdpChecksum;
+
+ } IPv6Receive;
+
+} NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD, *PNDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD;
+
+typedef struct _NDIS_WMI_IPSEC_OFFLOAD_V1
+{
+ struct
+ {
+ ULONG Encapsulation;
+ ULONG AhEspCombined;
+ ULONG TransportTunnelCombined;
+ ULONG IPv4Options;
+ ULONG Flags;
+ } Supported;
+
+ struct
+ {
+ ULONG Md5;
+ ULONG Sha_1;
+ ULONG Transport;
+ ULONG Tunnel;
+ ULONG Send;
+ ULONG Receive;
+ } IPv4AH;
+
+ struct
+ {
+ ULONG Des;
+ ULONG Reserved;
+ ULONG TripleDes;
+ ULONG NullEsp;
+ ULONG Transport;
+ ULONG Tunnel;
+ ULONG Send;
+ ULONG Receive;
+ } IPv4ESP;
+
+} NDIS_WMI_IPSEC_OFFLOAD_V1, *PNDIS_WMI_IPSEC_OFFLOAD_V1;
+
+typedef struct _NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2
+{
+ struct
+ {
+ ULONG Encapsulation;
+ ULONG MaxOffLoadSize;
+ ULONG MinSegmentCount;
+ }IPv4;
+
+ struct
+ {
+ ULONG Encapsulation;
+ ULONG MaxOffLoadSize;
+ ULONG MinSegmentCount;
+ ULONG IpExtensionHeadersSupported;
+ ULONG TcpOptionsSupported;
+ }IPv6;
+
+} NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2, *PNDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2;
+
+
+typedef struct _NDIS_WMI_OFFLOAD
+{
+
+
+
+
+
+ NDIS_OBJECT_HEADER Header;
+
+
+
+
+ NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD Checksum;
+
+
+
+
+ NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1 LsoV1;
+
+
+
+
+ NDIS_WMI_IPSEC_OFFLOAD_V1 IPsecV1;
+
+
+
+ NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2 LsoV2;
+
+ ULONG Flags;
+
+
+
+
+
+
+#line 3768 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3781 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+#line 3788 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+} NDIS_WMI_OFFLOAD, *PNDIS_WMI_OFFLOAD;
+
+
+
+
+
+#line 3796 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 3800 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 3804 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+#pragma warning(push)
+#pragma warning(disable:4214)
+
+
+
+
+
+
+
+
+
+
+#line 3819 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+typedef struct _NDIS_TCP_CONNECTION_OFFLOAD
+{
+
+
+
+
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG Encapsulation;
+ ULONG SupportIPv4:2;
+ ULONG SupportIPv6:2;
+ ULONG SupportIPv6ExtensionHeaders:2;
+ ULONG SupportSack:2;
+
+
+#line 3836 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+ ULONG TcpConnectionOffloadCapacity;
+ ULONG Flags;
+} NDIS_TCP_CONNECTION_OFFLOAD, *PNDIS_TCP_CONNECTION_OFFLOAD;
+
+
+
+
+#line 3844 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+#pragma warning(pop)
+
+typedef struct _NDIS_WMI_TCP_CONNECTION_OFFLOAD
+{
+
+
+
+
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG Encapsulation;
+ ULONG SupportIPv4;
+ ULONG SupportIPv6;
+ ULONG SupportIPv6ExtensionHeaders;
+ ULONG SupportSack;
+ ULONG TcpConnectionOffloadCapacity;
+ ULONG Flags;
+} NDIS_WMI_TCP_CONNECTION_OFFLOAD, *PNDIS_WMI_TCP_CONNECTION_OFFLOAD;
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\ndisport.h"
+
+
+
+
+
+#pragma once
+
+#pragma region App, Games, or System family
+
+
+
+
+
+
+
+typedef ULONG NDIS_PORT_NUMBER, *PNDIS_PORT_NUMBER;
+
+
+
+
+
+
+
+
+typedef enum _NDIS_PORT_TYPE
+{
+ NdisPortTypeUndefined,
+ NdisPortTypeBridge,
+ NdisPortTypeRasConnection,
+ NdisPortType8021xSupplicant,
+
+
+#line 34 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\ndisport.h"
+ NdisPortTypeMax,
+} NDIS_PORT_TYPE, *PNDIS_PORT_TYPE;
+
+
+
+#line 40 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\ndisport.h"
+#pragma endregion
+
+#pragma external_header(pop)
+#line 3867 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+typedef enum _NDIS_PORT_AUTHORIZATION_STATE
+{
+ NdisPortAuthorizationUnknown,
+ NdisPortAuthorized,
+ NdisPortUnauthorized,
+ NdisPortReauthorizing
+} NDIS_PORT_AUTHORIZATION_STATE, *PNDIS_PORT_AUTHORIZATION_STATE;
+
+
+
+
+
+
+
+typedef enum _NDIS_PORT_CONTROL_STATE
+{
+ NdisPortControlStateUnknown,
+ NdisPortControlStateControlled,
+ NdisPortControlStateUncontrolled
+} NDIS_PORT_CONTROL_STATE, *PNDIS_PORT_CONTROL_STATE;
+
+
+
+typedef NDIS_PORT_CONTROL_STATE NDIS_PORT_CONTROLL_STATE;
+typedef PNDIS_PORT_CONTROL_STATE PNDIS_PORT_CONTROLL_STATE;
+#line 3898 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+typedef struct _NDIS_PORT_AUTHENTICATION_PARAMETERS
+{
+ NDIS_OBJECT_HEADER Header;
+ NDIS_PORT_CONTROL_STATE SendControlState;
+ NDIS_PORT_CONTROL_STATE RcvControlState;
+ NDIS_PORT_AUTHORIZATION_STATE SendAuthorizationState;
+ NDIS_PORT_AUTHORIZATION_STATE RcvAuthorizationState;
+}NDIS_PORT_AUTHENTICATION_PARAMETERS, *PNDIS_PORT_AUTHENTICATION_PARAMETERS;
+
+
+
+
+typedef enum _NDIS_NETWORK_CHANGE_TYPE
+{
+ NdisPossibleNetworkChange = 1,
+ NdisDefinitelyNetworkChange,
+ NdisNetworkChangeFromMediaConnect,
+ NdisNetworkChangeMax
+} NDIS_NETWORK_CHANGE_TYPE, *PNDIS_NETWORK_CHANGE_TYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_WMI_METHOD_HEADER
+{
+ NDIS_OBJECT_HEADER Header;
+ NDIS_PORT_NUMBER PortNumber;
+ NET_LUID NetLuid;
+ ULONG64 RequestId;
+ ULONG Timeout;
+ UCHAR Padding[4];
+} NDIS_WMI_METHOD_HEADER, *PNDIS_WMI_METHOD_HEADER;
+
+
+
+
+
+
+typedef struct _NDIS_WMI_SET_HEADER
+{
+ NDIS_OBJECT_HEADER Header;
+ NDIS_PORT_NUMBER PortNumber;
+ NET_LUID NetLuid;
+ ULONG64 RequestId;
+ ULONG Timeout;
+ UCHAR Padding[4];
+} NDIS_WMI_SET_HEADER, *PNDIS_WMI_SET_HEADER;
+
+
+
+
+
+
+typedef struct _NDIS_WMI_EVENT_HEADER
+{
+ NDIS_OBJECT_HEADER Header;
+ NET_IFINDEX IfIndex;
+ NET_LUID NetLuid;
+ ULONG64 RequestId;
+ NDIS_PORT_NUMBER PortNumber;
+ ULONG DeviceNameLength;
+ ULONG DeviceNameOffset;
+ UCHAR Padding[4];
+} NDIS_WMI_EVENT_HEADER, *PNDIS_WMI_EVENT_HEADER;
+
+
+
+
+
+
+typedef struct _NDIS_WMI_ENUM_ADAPTER
+{
+ NDIS_OBJECT_HEADER Header;
+ NET_IFINDEX IfIndex;
+ NET_LUID NetLuid;
+ USHORT DeviceNameLength;
+ CHAR DeviceName[1];
+}NDIS_WMI_ENUM_ADAPTER, *PNDIS_WMI_ENUM_ADAPTER;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 4071 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+typedef struct NDIS_WMI_OUTPUT_INFO
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG Flags;
+ UCHAR SupportedRevision;
+ ULONG DataOffset;
+
+} NDIS_WMI_OUTPUT_INFO, *PNDIS_WMI_OUTPUT_INFO;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 5506 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+#line 5514 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 5518 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 5534 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 5546 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+#line 5550 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+#line 5553 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+typedef ULONG NDIS_RSS_CAPS_FLAGS;
+
+
+
+
+typedef struct _NDIS_RECEIVE_SCALE_CAPABILITIES
+{
+ NDIS_OBJECT_HEADER Header;
+ NDIS_RSS_CAPS_FLAGS CapabilitiesFlags;
+ ULONG NumberOfInterruptMessages;
+ ULONG NumberOfReceiveQueues;
+
+
+#line 5570 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+} NDIS_RECEIVE_SCALE_CAPABILITIES, *PNDIS_RECEIVE_SCALE_CAPABILITIES;
+
+
+
+
+
+
+
+
+#line 5580 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+#line 5585 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\hashtypes.h"
+
+
+#pragma once
+
+#pragma region App, Games, or System family
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 35 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\hashtypes.h"
+
+
+
+
+typedef ULONG NDIS_HASH_FLAGS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 83 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\hashtypes.h"
+
+
+
+#line 87 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\hashtypes.h"
+#pragma endregion
+
+#pragma external_header(pop)
+#line 5587 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 5599 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 5613 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+#line 5619 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+typedef struct _NDIS_RECEIVE_SCALE_PARAMETERS
+{
+ NDIS_OBJECT_HEADER Header;
+
+
+ USHORT Flags;
+
+
+ USHORT BaseCpuNumber;
+
+
+ ULONG HashInformation;
+
+
+ USHORT IndirectionTableSize;
+
+ ULONG IndirectionTableOffset;
+
+
+ USHORT HashSecretKeySize;
+
+ ULONG HashSecretKeyOffset;
+
+
+
+
+
+#line 5648 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+#line 5656 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+} NDIS_RECEIVE_SCALE_PARAMETERS, *PNDIS_RECEIVE_SCALE_PARAMETERS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 5679 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 5692 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 5817 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_RECEIVE_HASH_PARAMETERS
+{
+ NDIS_OBJECT_HEADER Header;
+
+
+ ULONG Flags;
+
+
+ ULONG HashInformation;
+
+
+ USHORT HashSecretKeySize;
+
+
+ ULONG HashSecretKeyOffset;
+} NDIS_RECEIVE_HASH_PARAMETERS, *PNDIS_RECEIVE_HASH_PARAMETERS;
+
+
+
+
+
+typedef enum _NDIS_PROCESSOR_VENDOR
+{
+ NdisProcessorVendorUnknown,
+ NdisProcessorVendorGenuinIntel,
+ NdisProcessorVendorGenuineIntel = NdisProcessorVendorGenuinIntel,
+ NdisProcessorVendorAuthenticAMD
+} NDIS_PROCESSOR_VENDOR, *PNDIS_PROCESSOR_VENDOR;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 6051 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8430 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+typedef struct _NDIS_PORT_STATE
+{
+ NDIS_OBJECT_HEADER Header;
+ NDIS_MEDIA_CONNECT_STATE MediaConnectState;
+ ULONG64 XmitLinkSpeed;
+ ULONG64 RcvLinkSpeed;
+ NET_IF_DIRECTION_TYPE Direction;
+ NDIS_PORT_CONTROL_STATE SendControlState;
+ NDIS_PORT_CONTROL_STATE RcvControlState;
+ NDIS_PORT_AUTHORIZATION_STATE SendAuthorizationState;
+ NDIS_PORT_AUTHORIZATION_STATE RcvAuthorizationState;
+ ULONG Flags;
+}NDIS_PORT_STATE, *PNDIS_PORT_STATE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_PORT_CHARACTERISTICS
+{
+ NDIS_OBJECT_HEADER Header;
+ NDIS_PORT_NUMBER PortNumber;
+ ULONG Flags;
+ NDIS_PORT_TYPE Type;
+ NDIS_MEDIA_CONNECT_STATE MediaConnectState;
+ ULONG64 XmitLinkSpeed;
+ ULONG64 RcvLinkSpeed;
+ NET_IF_DIRECTION_TYPE Direction;
+ NDIS_PORT_CONTROL_STATE SendControlState;
+ NDIS_PORT_CONTROL_STATE RcvControlState;
+ NDIS_PORT_AUTHORIZATION_STATE SendAuthorizationState;
+ NDIS_PORT_AUTHORIZATION_STATE RcvAuthorizationState;
+} NDIS_PORT_CHARACTERISTICS, *PNDIS_PORT_CHARACTERISTICS;
+
+
+
+
+
+
+
+
+typedef struct _NDIS_PORT NDIS_PORT, *PNDIS_PORT;
+
+struct _NDIS_PORT
+{
+ PNDIS_PORT Next;
+ PVOID NdisReserved;
+ PVOID MiniportReserved;
+ PVOID ProtocolReserved;
+ NDIS_PORT_CHARACTERISTICS PortCharacteristics;
+};
+
+
+
+
+
+
+typedef struct _NDIS_PORT_ARRAY
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG NumberOfPorts;
+ ULONG OffsetFirstPort;
+ ULONG ElementSize;
+ NDIS_PORT_CHARACTERISTICS Ports[1];
+}NDIS_PORT_ARRAY, *PNDIS_PORT_ARRAY;
+
+
+
+
+
+#line 8519 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+#line 8521 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 10737 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 10756 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+typedef struct _NDIS_TIMESTAMP_CAPABILITY_FLAGS
+{
+ BOOLEAN PtpV2OverUdpIPv4EventMsgReceiveHw;
+ BOOLEAN PtpV2OverUdpIPv4AllMsgReceiveHw;
+ BOOLEAN PtpV2OverUdpIPv4EventMsgTransmitHw;
+ BOOLEAN PtpV2OverUdpIPv4AllMsgTransmitHw;
+ BOOLEAN PtpV2OverUdpIPv6EventMsgReceiveHw;
+ BOOLEAN PtpV2OverUdpIPv6AllMsgReceiveHw;
+ BOOLEAN PtpV2OverUdpIPv6EventMsgTransmitHw;
+ BOOLEAN PtpV2OverUdpIPv6AllMsgTransmitHw;
+ BOOLEAN AllReceiveHw;
+ BOOLEAN AllTransmitHw;
+ BOOLEAN TaggedTransmitHw;
+ BOOLEAN AllReceiveSw;
+ BOOLEAN AllTransmitSw;
+ BOOLEAN TaggedTransmitSw;
+} NDIS_TIMESTAMP_CAPABILITY_FLAGS, *PNDIS_TIMESTAMP_CAPABILITY_FLAGS;
+
+typedef struct _NDIS_TIMESTAMP_CAPABILITIES
+{
+ NDIS_OBJECT_HEADER Header;
+
+ ULONG64 HardwareClockFrequencyHz;
+ BOOLEAN CrossTimestamp;
+ ULONG64 Reserved1;
+ ULONG64 Reserved2;
+ NDIS_TIMESTAMP_CAPABILITY_FLAGS TimestampFlags;
+
+} NDIS_TIMESTAMP_CAPABILITIES, *PNDIS_TIMESTAMP_CAPABILITIES;
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_HARDWARE_CROSSTIMESTAMP
+{
+ NDIS_OBJECT_HEADER Header;
+
+ ULONG Flags;
+ ULONG64 SystemTimestamp1;
+ ULONG64 HardwareClockTimestamp;
+ ULONG64 SystemTimestamp2;
+
+} NDIS_HARDWARE_CROSSTIMESTAMP, *PNDIS_HARDWARE_CROSSTIMESTAMP;
+
+
+
+
+
+
+
+#line 10820 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+
+
+
+
+
+
+
+#pragma warning(pop)
+
+
+
+#line 10834 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+
+#line 10837 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+#pragma endregion
+
+#line 10840 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ntddndis.h"
+
+#pragma external_header(pop)
+#line 1059 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+typedef CM_MCA_POS_DATA NDIS_MCA_POS_DATA, *PNDIS_MCA_POS_DATA;
+typedef CM_EISA_SLOT_INFORMATION NDIS_EISA_SLOT_INFORMATION, *PNDIS_EISA_SLOT_INFORMATION;
+typedef CM_EISA_FUNCTION_INFORMATION NDIS_EISA_FUNCTION_INFORMATION, *PNDIS_EISA_FUNCTION_INFORMATION;
+
+
+
+
+
+
+#line 1073 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+typedef struct _NDIS_GENERIC_OBJECT
+{
+ NDIS_OBJECT_HEADER Header;
+ PVOID Caller;
+ PVOID CallersCaller;
+ PDRIVER_OBJECT DriverObject;
+} NDIS_GENERIC_OBJECT, *PNDIS_GENERIC_OBJECT;
+
+
+
+PNDIS_GENERIC_OBJECT
+NdisAllocateGenericObject(
+ PDRIVER_OBJECT DriverObject,
+ ULONG Tag,
+ USHORT Size
+ );
+
+
+
+void
+NdisFreeGenericObject(
+ PNDIS_GENERIC_OBJECT NdisObject
+ );
+
+#line 1100 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1158 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_SPIN_LOCK
+{
+ KSPIN_LOCK SpinLock;
+ KIRQL OldIrql;
+} NDIS_SPIN_LOCK, * PNDIS_SPIN_LOCK;
+
+
+
+
+
+typedef struct _NDIS_EVENT
+{
+ KEVENT Event;
+} NDIS_EVENT, *PNDIS_EVENT;
+
+
+struct _NDIS_WORK_ITEM;
+typedef
+
+
+void NDIS_PROC_CALLBACK(
+ struct _NDIS_WORK_ITEM * WorkItem,
+ PVOID Context);
+typedef NDIS_PROC_CALLBACK *NDIS_PROC;
+
+
+
+
+typedef struct _NDIS_WORK_ITEM
+{
+ PVOID Context;
+ NDIS_PROC Routine;
+ UCHAR WrapperReserved[8*sizeof(PVOID)];
+} NDIS_WORK_ITEM, *PNDIS_WORK_ITEM;
+
+
+
+typedef KINTERRUPT_MODE NDIS_INTERRUPT_MODE, *PNDIS_INTERRUPT_MODE;
+
+
+
+
+
+
+
+
+
+typedef enum _NDIS_PARAMETER_TYPE
+{
+ NdisParameterInteger,
+ NdisParameterHexInteger,
+ NdisParameterString,
+ NdisParameterMultiString,
+ NdisParameterBinary
+} NDIS_PARAMETER_TYPE, *PNDIS_PARAMETER_TYPE;
+
+typedef struct
+{
+ USHORT Length;
+
+
+ PVOID Buffer;
+} BINARY_DATA;
+
+
+
+
+typedef struct _NDIS_CONFIGURATION_PARAMETER
+{
+ NDIS_PARAMETER_TYPE ParameterType;
+ union
+ {
+ ULONG IntegerData;
+ NDIS_STRING StringData;
+ BINARY_DATA BinaryData;
+ } ParameterData;
+} NDIS_CONFIGURATION_PARAMETER, *PNDIS_CONFIGURATION_PARAMETER;
+
+
+
+
+
+typedef enum _NDIS_PROCESSOR_TYPE
+{
+ NdisProcessorX86,
+ NdisProcessorMips,
+ NdisProcessorAlpha,
+ NdisProcessorPpc,
+ NdisProcessorAmd64,
+ NdisProcessorIA64,
+ NdisProcessorArm,
+ NdisProcessorArm64
+} NDIS_PROCESSOR_TYPE, *PNDIS_PROCESSOR_TYPE;
+
+
+
+
+typedef enum _NDIS_ENVIRONMENT_TYPE
+{
+ NdisEnvironmentWindows,
+ NdisEnvironmentWindowsNt
+} NDIS_ENVIRONMENT_TYPE, *PNDIS_ENVIRONMENT_TYPE;
+
+
+
+
+
+
+typedef enum _NDIS_INTERFACE_TYPE
+{
+ NdisInterfaceInternal = Internal,
+ NdisInterfaceIsa = Isa,
+ NdisInterfaceEisa = Eisa,
+ NdisInterfaceMca = MicroChannel,
+ NdisInterfaceTurboChannel = TurboChannel,
+ NdisInterfacePci = PCIBus,
+ NdisInterfacePcMcia = PCMCIABus,
+ NdisInterfaceCBus = CBus,
+ NdisInterfaceMPIBus = MPIBus,
+ NdisInterfaceMPSABus = MPSABus,
+ NdisInterfaceProcessorInternal = ProcessorInternal,
+ NdisInterfaceInternalPowerBus = InternalPowerBus,
+ NdisInterfacePNPISABus = PNPISABus,
+ NdisInterfacePNPBus = PNPBus,
+ NdisInterfaceUSB,
+ NdisInterfaceIrda,
+ NdisInterface1394,
+ NdisMaximumInterfaceType
+} NDIS_INTERFACE_TYPE, *PNDIS_INTERFACE_TYPE;
+
+
+
+
+
+typedef CM_PARTIAL_RESOURCE_LIST NDIS_RESOURCE_LIST, *PNDIS_RESOURCE_LIST;
+
+
+
+
+
+
+typedef struct _NDIS_WAN_LINE_UP
+{
+ ULONG LinkSpeed;
+ ULONG MaximumTotalSize;
+ NDIS_WAN_QUALITY Quality;
+ USHORT SendWindow;
+ UCHAR RemoteAddress[6];
+ UCHAR LocalAddress[6];
+ ULONG ProtocolBufferLength;
+ PUCHAR ProtocolBuffer;
+ USHORT ProtocolType;
+ NDIS_STRING DeviceName;
+} NDIS_WAN_LINE_UP, *PNDIS_WAN_LINE_UP;
+
+
+
+
+
+
+typedef struct _NDIS_WAN_LINE_DOWN
+{
+ UCHAR RemoteAddress[6];
+ UCHAR LocalAddress[6];
+} NDIS_WAN_LINE_DOWN, *PNDIS_WAN_LINE_DOWN;
+
+
+
+
+
+typedef struct _NDIS_WAN_FRAGMENT
+{
+ UCHAR RemoteAddress[6];
+ UCHAR LocalAddress[6];
+} NDIS_WAN_FRAGMENT, *PNDIS_WAN_FRAGMENT;
+
+
+
+
+
+typedef struct _NDIS_WAN_GET_STATS
+{
+ UCHAR LocalAddress[6];
+ ULONG BytesSent;
+ ULONG BytesRcvd;
+ ULONG FramesSent;
+ ULONG FramesRcvd;
+ ULONG CRCErrors;
+ ULONG TimeoutErrors;
+ ULONG AlignmentErrors;
+ ULONG SerialOverrunErrors;
+ ULONG FramingErrors;
+ ULONG BufferOverrunErrors;
+ ULONG BytesTransmittedUncompressed;
+ ULONG BytesReceivedUncompressed;
+ ULONG BytesTransmittedCompressed;
+ ULONG BytesReceivedCompressed;
+} NDIS_WAN_GET_STATS, *PNDIS_WAN_GET_STATS;
+
+
+
+
+
+typedef MDL NDIS_BUFFER, *PNDIS_BUFFER;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1427 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+typedef enum _NDIS_CLASS_ID
+{
+ NdisClass802_3Priority,
+ NdisClassWirelessWanMbxMailbox,
+ NdisClassIrdaPacketInfo,
+ NdisClassAtmAALInfo
+
+} NDIS_CLASS_ID;
+
+typedef struct _MEDIA_SPECIFIC_INFORMATION
+{
+ UINT NextEntryOffset;
+ NDIS_CLASS_ID ClassId;
+ UINT Size;
+ UCHAR ClassInformation[1];
+
+} MEDIA_SPECIFIC_INFORMATION, *PMEDIA_SPECIFIC_INFORMATION;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1571 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+typedef enum _NDIS_PER_PACKET_INFO
+{
+ TcpIpChecksumPacketInfo,
+ IpSecPacketInfo,
+ TcpLargeSendPacketInfo,
+ ClassificationHandlePacketInfo,
+ NdisReserved,
+ ScatterGatherListPacketInfo,
+ Ieee8021QInfo,
+ OriginalPacketInfo,
+ PacketCancelId,
+ OriginalNetBufferList,
+ CachedNetBufferList,
+ ShortPacketPaddingInfo,
+ MaxPerPacketInfo
+} NDIS_PER_PACKET_INFO, *PNDIS_PER_PACKET_INFO;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1638 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+typedef struct _NDIS_TCP_IP_CHECKSUM_PACKET_INFO
+{
+ union
+ {
+ struct
+ {
+ ULONG NdisPacketChecksumV4:1;
+ ULONG NdisPacketChecksumV6:1;
+ ULONG NdisPacketTcpChecksum:1;
+ ULONG NdisPacketUdpChecksum:1;
+ ULONG NdisPacketIpChecksum:1;
+ } Transmit;
+
+ struct
+ {
+ ULONG NdisPacketTcpChecksumFailed:1;
+ ULONG NdisPacketUdpChecksumFailed:1;
+ ULONG NdisPacketIpChecksumFailed:1;
+ ULONG NdisPacketTcpChecksumSucceeded:1;
+ ULONG NdisPacketUdpChecksumSucceeded:1;
+ ULONG NdisPacketIpChecksumSucceeded:1;
+ ULONG NdisPacketLoopback:1;
+ } Receive;
+
+ ULONG Value;
+ };
+} NDIS_TCP_IP_CHECKSUM_PACKET_INFO, *PNDIS_TCP_IP_CHECKSUM_PACKET_INFO;
+
+
+
+
+
+typedef struct _NDIS_PACKET_8021Q_INFO
+{
+ union
+ {
+ struct
+ {
+ UINT32 UserPriority:3;
+ UINT32 CanonicalFormatId:1;
+ UINT32 VlanId:12;
+ UINT32 Reserved:16;
+ } TagHeader;
+
+ PVOID Value;
+ };
+} NDIS_PACKET_8021Q_INFO, *PNDIS_PACKET_8021Q_INFO;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1753 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1797 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+typedef ULONG NDIS_AF, *PNDIS_AF;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct
+{
+ NDIS_AF AddressFamily;
+ ULONG MajorVersion;
+ ULONG MinorVersion;
+} CO_ADDRESS_FAMILY, *PCO_ADDRESS_FAMILY;
+
+
+
+
+typedef struct
+{
+ ULONG SapType;
+ ULONG SapLength;
+ UCHAR Sap[1];
+} CO_SAP, *PCO_SAP;
+
+
+
+
+
+typedef PHYSICAL_ADDRESS NDIS_PHYSICAL_ADDRESS, *PNDIS_PHYSICAL_ADDRESS;
+typedef struct _NDIS_PHYSICAL_ADDRESS_UNIT
+{
+ NDIS_PHYSICAL_ADDRESS PhysicalAddress;
+ UINT Length;
+} NDIS_PHYSICAL_ADDRESS_UNIT, *PNDIS_PHYSICAL_ADDRESS_UNIT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _REFERENCE
+{
+ KSPIN_LOCK SpinLock;
+ USHORT ReferenceCount;
+ BOOLEAN Closing;
+} REFERENCE, * PREFERENCE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma deprecated(NDIS_OPEN_RECEIVE_NOT_REENTRANT)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1993 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+#line 1997 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2010 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 2015 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2035 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+#line 2043 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2147 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 2159 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+#line 2163 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+#line 2172 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+#line 2181 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+#line 2189 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+#line 2195 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+#line 2202 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 2207 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+#line 2214 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+#line 2225 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+#line 2234 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 2239 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\status.h"
+
+
+#pragma once
+
+#pragma region App, Games, or System family
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 75 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\status.h"
+#pragma endregion
+
+#pragma external_header(pop)
+#line 2241 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2290 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+#line 2298 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+#line 2308 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+#line 2315 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2337 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+#line 2344 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+#line 2352 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+void
+__inline
+NdisAllocateSpinLock( PNDIS_SPIN_LOCK SpinLock)
+{
+ KeInitializeSpinLock(&SpinLock->SpinLock);
+}
+
+
+void
+__inline
+NdisFreeSpinLock( PNDIS_SPIN_LOCK SpinLock)
+{
+
+ (SpinLock);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef union _NDIS_RW_LOCK_REFCOUNT
+{
+ ULONG RefCount;
+ UCHAR cacheLine[16];
+} NDIS_RW_LOCK_REFCOUNT;
+
+typedef struct _NDIS_RW_LOCK
+{
+ union
+ {
+ struct
+ {
+ KSPIN_LOCK SpinLock;
+ PVOID Context;
+ };
+ UCHAR Reserved[16];
+ };
+
+ union
+ {
+ NDIS_RW_LOCK_REFCOUNT RefCount[64];
+ ULONG RefCountEx[sizeof(NDIS_RW_LOCK_REFCOUNT)/sizeof(ULONG)
+ * 64];
+ struct
+ {
+ KSPIN_LOCK RefCountLock;
+ volatile ULONG SharedRefCount;
+ volatile BOOLEAN WriterWaiting;
+ };
+ };
+} NDIS_RW_LOCK, *PNDIS_RW_LOCK;
+
+typedef struct _LOCK_STATE
+{
+ USHORT LockState;
+ KIRQL OldIrql;
+} LOCK_STATE, *PLOCK_STATE;
+
+
+
+void
+NdisInitializeReadWriteLock(
+ PNDIS_RW_LOCK Lock
+ );
+
+
+
+
+
+void
+NdisAcquireReadWriteLock(
+ PNDIS_RW_LOCK Lock,
+ BOOLEAN fWrite,
+
+
+ PLOCK_STATE LockState
+ );
+
+
+
+
+void
+NdisReleaseReadWriteLock(
+ PNDIS_RW_LOCK Lock,
+
+ PLOCK_STATE LockState
+ );
+
+
+
+
+
+void
+NdisDprAcquireReadWriteLock(
+ PNDIS_RW_LOCK Lock,
+ BOOLEAN fWrite,
+
+ PLOCK_STATE LockState
+ );
+
+
+
+void
+NdisDprReleaseReadWriteLock(
+ PNDIS_RW_LOCK Lock,
+
+ PLOCK_STATE LockState
+ );
+
+#line 2529 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+#line 2530 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2593 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+void
+NdisGetCurrentProcessorCpuUsage(
+ PULONG pCpuUsage
+ );
+
+
+
+void
+NdisGetCurrentProcessorCounts(
+ PULONG pIdleCount,
+ PULONG pKernelAndUser,
+ PULONG pIndex
+ );
+
+#line 2632 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2647 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2680 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+void
+NdisOpenConfigurationKeyByName(
+
+ PNDIS_STATUS Status,
+ NDIS_HANDLE ConfigurationHandle,
+ PNDIS_STRING SubKeyName,
+ PNDIS_HANDLE SubKeyHandle
+ );
+
+
+
+
+
+void
+NdisOpenConfigurationKeyByIndex(
+
+ PNDIS_STATUS Status,
+ NDIS_HANDLE ConfigurationHandle,
+ ULONG Index,
+ PNDIS_STRING KeyName,
+ PNDIS_HANDLE KeyHandle
+ );
+
+
+
+
+void
+NdisReadConfiguration(
+
+ PNDIS_STATUS Status,
+ PNDIS_CONFIGURATION_PARAMETER *ParameterValue,
+ NDIS_HANDLE ConfigurationHandle,
+ PNDIS_STRING Keyword,
+ NDIS_PARAMETER_TYPE ParameterType
+ );
+
+
+
+
+void
+NdisWriteConfiguration(
+
+ PNDIS_STATUS Status,
+ NDIS_HANDLE ConfigurationHandle,
+ PNDIS_STRING Keyword,
+ PNDIS_CONFIGURATION_PARAMETER ParameterValue
+ );
+
+
+
+void
+NdisCloseConfiguration(
+ NDIS_HANDLE ConfigurationHandle
+ );
+
+
+
+
+
+void
+NdisReadNetworkAddress(
+
+ PNDIS_STATUS Status,
+ PVOID *NetworkAddress,
+ PUINT NetworkAddressLength,
+ NDIS_HANDLE ConfigurationHandle
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2803 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2841 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+void
+NdisCopyBuffer(
+ PNDIS_STATUS Status,
+ PNDIS_BUFFER * Buffer,
+ NDIS_HANDLE PoolHandle,
+ PVOID MemoryDescriptor,
+ UINT Offset,
+ UINT Length
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2888 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3022 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3035 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3115 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3335 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3367 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3409 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+NDIS_STATUS
+NdisAllocateMemoryWithTag(
+
+
+ PVOID * VirtualAddress,
+ UINT Length,
+ ULONG Tag
+ );
+
+
+#line 3424 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 3426 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 3428 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+void
+NdisFreeMemory(
+
+ PVOID VirtualAddress,
+ UINT Length,
+
+ UINT MemoryFlags
+ );
+
+
+
+
+
+
+
+
+
+
+#line 3448 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+void
+NdisInitializeEvent(
+ PNDIS_EVENT Event
+);
+
+
+
+void
+NdisSetEvent(
+ PNDIS_EVENT Event
+);
+
+
+
+void
+NdisResetEvent(
+ PNDIS_EVENT Event
+);
+
+
+
+
+BOOLEAN
+NdisWaitEvent(
+ PNDIS_EVENT Event,
+ UINT MsToWait
+);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3513 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+void
+NdisOpenFile(
+ PNDIS_STATUS Status,
+ PNDIS_HANDLE FileHandle,
+ PUINT FileLength,
+ PNDIS_STRING FileName,
+ NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress
+ );
+
+
+
+void
+NdisCloseFile(
+ NDIS_HANDLE FileHandle
+ );
+
+
+
+void
+NdisMapFile(
+ PNDIS_STATUS Status,
+ PVOID * MappedBuffer,
+ NDIS_HANDLE FileHandle
+ );
+
+
+
+void
+NdisUnmapFile(
+ NDIS_HANDLE FileHandle
+ );
+
+#line 3557 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 3559 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ULONG
+NdisGetSharedDataAlignment(
+ void
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3660 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3685 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3761 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3786 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3810 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3829 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3847 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3860 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 3862 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3875 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 3877 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3890 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 3892 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+void __cdecl
+NdisWriteErrorLogEntry(
+ NDIS_HANDLE NdisAdapterHandle,
+ ULONG ErrorCode,
+ ULONG NumberOfErrorValues,
+ ...
+ );
+
+
+
+
+void
+NdisInitializeString(
+
+ PNDIS_STRING Destination,
+ PUCHAR Source
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_WRAPPER_HANDLE NDIS_WRAPPER_HANDLE, *PNDIS_WRAPPER_HANDLE;
+typedef struct _NDIS_PROTOCOL_BLOCK NDIS_PROTOCOL_BLOCK, *PNDIS_PROTOCOL_BLOCK;
+typedef struct _NDIS_OPEN_BLOCK NDIS_OPEN_BLOCK, *PNDIS_OPEN_BLOCK;
+typedef struct _NDIS_M_DRIVER_BLOCK NDIS_M_DRIVER_BLOCK, *PNDIS_M_DRIVER_BLOCK;
+typedef struct _NDIS_MINIPORT_BLOCK NDIS_MINIPORT_BLOCK,*PNDIS_MINIPORT_BLOCK;
+typedef struct _CO_CALL_PARAMETERS CO_CALL_PARAMETERS, *PCO_CALL_PARAMETERS;
+typedef struct _CO_MEDIA_PARAMETERS CO_MEDIA_PARAMETERS, *PCO_MEDIA_PARAMETERS;
+typedef struct _NDIS_CALL_MANAGER_CHARACTERISTICS *PNDIS_CALL_MANAGER_CHARACTERISTICS;
+typedef struct _NDIS_OFFLOAD NDIS_OFFLOAD, *PNDIS_OFFLOAD;
+typedef struct _NDIS_AF_LIST NDIS_AF_LIST, *PNDIS_AF_LIST;
+typedef struct _X_FILTER ETH_FILTER, *PETH_FILTER;
+typedef struct _X_FILTER TR_FILTER, *PTR_FILTER;
+typedef struct _X_FILTER NULL_FILTER, *PNULL_FILTER;
+
+
+
+typedef USHORT NET_FRAME_TYPE, *PNET_FRAME_TYPE;
+
+#line 3978 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+typedef
+
+
+
+void
+(NDIS_TIMER_FUNCTION) (
+ PVOID SystemSpecific1,
+ PVOID FunctionContext,
+ PVOID SystemSpecific2,
+ PVOID SystemSpecific3
+ );
+typedef NDIS_TIMER_FUNCTION (*PNDIS_TIMER_FUNCTION);
+
+typedef struct _NDIS_TIMER
+{
+ KTIMER Timer;
+ KDPC Dpc;
+} NDIS_TIMER, *PNDIS_TIMER;
+
+
+
+
+#line 4008 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+void
+NdisInitializeTimer(
+ PNDIS_TIMER Timer,
+ PNDIS_TIMER_FUNCTION TimerFunction,
+
+ PVOID FunctionContext
+ );
+
+
+
+#line 4021 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+void
+NdisCancelTimer(
+ PNDIS_TIMER Timer,
+
+ PBOOLEAN TimerCancelled
+ );
+
+
+
+#line 4033 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+void
+NdisSetTimer(
+ PNDIS_TIMER Timer,
+ UINT MillisecondsToDelay
+ );
+
+
+
+#line 4044 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+void
+NdisSetPeriodicTimer(
+ PNDIS_TIMER NdisTimer,
+ UINT MillisecondsPeriod
+ );
+
+
+
+#line 4054 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+void
+NdisSetTimerEx(
+ PNDIS_TIMER NdisTimer,
+ UINT MillisecondsToDelay,
+
+ PVOID FunctionContext
+ );
+
+
+
+
+
+
+
+
+
+CCHAR
+NdisSystemProcessorCount(
+ void
+ );
+
+#line 4079 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+PVOID
+NdisGetRoutineAddress(
+ PNDIS_STRING NdisRoutineName
+ );
+
+
+
+UINT
+NdisGetVersion(
+ void
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__forceinline
+void
+NdisInitializeNPagedLookasideList(
+ PNPAGED_LOOKASIDE_LIST Lookaside,
+ PALLOCATE_FUNCTION Allocate,
+ PFREE_FUNCTION Free,
+ ULONG Flags,
+ SIZE_T Size,
+ ULONG Tag,
+ USHORT Depth
+ )
+{
+
+
+
+ UINT Version;
+
+ Version = NdisGetVersion();
+
+ if (Version >= ((6 << 16) | 30))
+ {
+ Flags |= 512;
+ }
+
+#line 4137 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+ ExInitializeNPagedLookasideList(
+ Lookaside,
+ Allocate,
+ Free,
+ Flags,
+ Size,
+ Tag,
+ Depth);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 4168 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+#line 4178 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 4180 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+typedef struct _NDIS_RESTART_ATTRIBUTES NDIS_RESTART_ATTRIBUTES, *PNDIS_RESTART_ATTRIBUTES;
+
+typedef struct _NDIS_RESTART_ATTRIBUTES
+{
+ PNDIS_RESTART_ATTRIBUTES Next;
+ NDIS_OID Oid;
+ ULONG DataLength;
+ __declspec(align(16)) UCHAR Data[1];
+}NDIS_RESTART_ATTRIBUTES, *PNDIS_RESTART_ATTRIBUTES;
+
+
+
+
+
+
+typedef
+
+
+NDIS_STATUS
+(SET_OPTIONS)(
+ NDIS_HANDLE NdisDriverHandle,
+ NDIS_HANDLE DriverContext
+ );
+
+typedef SET_OPTIONS (*SET_OPTIONS_HANDLER);
+typedef SET_OPTIONS (MINIPORT_SET_OPTIONS);
+typedef SET_OPTIONS (PROTOCOL_SET_OPTIONS);
+typedef SET_OPTIONS (FILTER_SET_OPTIONS);
+
+#line 4217 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 4267 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+#line 4278 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+typedef KMUTEX NDIS_MUTEX, *PNDIS_MUTEX;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ULONG
+NdisSystemActiveProcessorCount(
+ PKAFFINITY ActiveProcessors
+ );
+
+#line 4310 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 4376 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+typedef struct _NDIS_CONFIGURATION_OBJECT
+{
+ NDIS_OBJECT_HEADER Header;
+ NDIS_HANDLE NdisHandle;
+ ULONG Flags;
+} NDIS_CONFIGURATION_OBJECT, *PNDIS_CONFIGURATION_OBJECT;
+
+
+
+
+
+
+
+NDIS_STATUS
+NdisOpenConfigurationEx(
+ PNDIS_CONFIGURATION_OBJECT ConfigObject,
+
+ PNDIS_HANDLE ConfigurationHandle
+ );
+
+
+
+
+
+PVOID
+NdisAllocateMemoryWithTagPriority(
+ NDIS_HANDLE NdisHandle,
+ UINT Length,
+ ULONG Tag,
+ EX_POOL_PRIORITY Priority
+ );
+
+
+typedef struct _NDIS_DRIVER_OPTIONAL_HANDLERS
+{
+ NDIS_OBJECT_HEADER Header;
+} NDIS_DRIVER_OPTIONAL_HANDLERS, *PNDIS_DRIVER_OPTIONAL_HANDLERS;
+
+
+
+NDIS_STATUS
+NdisSetOptionalHandlers(
+ NDIS_HANDLE NdisHandle,
+ PNDIS_DRIVER_OPTIONAL_HANDLERS OptionalHandlers
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 4444 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+typedef struct _NET_PNP_EVENT_NOTIFICATION
+{
+
+
+
+
+
+
+ NDIS_OBJECT_HEADER Header;
+
+ NDIS_PORT_NUMBER PortNumber;
+
+ NET_PNP_EVENT NetPnPEvent;
+ ULONG Flags;
+
+
+
+
+#line 4464 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+} NET_PNP_EVENT_NOTIFICATION, *PNET_PNP_EVENT_NOTIFICATION;
+
+
+
+
+
+
+
+#line 4474 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\oidrequest.h"
+
+
+#pragma once
+
+#pragma region App, Games, or System family
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\nicswitchtypes.h"
+
+
+#pragma once
+
+#pragma region App, Games, or System family
+
+
+
+
+
+
+
+typedef ULONG NDIS_NIC_SWITCH_ID, *PNDIS_NIC_SWITCH_ID;
+
+
+
+#line 18 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\nicswitchtypes.h"
+
+
+
+#line 22 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ndis\\nicswitchtypes.h"
+#pragma endregion
+
+#pragma external_header(pop)
+#line 15 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\oidrequest.h"
+
+
+
+
+
+
+typedef unsigned int UINT;
+
+typedef struct _NDIS_OID_REQUEST
+{
+
+
+
+
+
+ NDIS_OBJECT_HEADER Header;
+ NDIS_REQUEST_TYPE RequestType;
+ NDIS_PORT_NUMBER PortNumber;
+
+
+ UINT Timeout;
+
+ PVOID RequestId;
+ NDIS_HANDLE RequestHandle;
+
+ union _REQUEST_DATA
+ {
+ NDIS_OID Oid;
+
+ struct _QUERY
+ {
+ NDIS_OID Oid;
+ PVOID InformationBuffer;
+ UINT InformationBufferLength;
+ UINT BytesWritten;
+ UINT BytesNeeded;
+ } QUERY_INFORMATION;
+
+ struct _SET
+ {
+ NDIS_OID Oid;
+ PVOID InformationBuffer;
+ UINT InformationBufferLength;
+ UINT BytesRead;
+ UINT BytesNeeded;
+ } SET_INFORMATION;
+
+ struct _METHOD
+ {
+ NDIS_OID Oid;
+ PVOID InformationBuffer;
+ ULONG InputBufferLength;
+ ULONG OutputBufferLength;
+ ULONG MethodId;
+ UINT BytesWritten;
+ UINT BytesRead;
+ UINT BytesNeeded;
+ } METHOD_INFORMATION;
+ } DATA;
+
+ UCHAR NdisReserved[16 * sizeof(PVOID)];
+ UCHAR MiniportReserved[2 * sizeof(PVOID)];
+ UCHAR SourceReserved[2 * sizeof(PVOID)];
+
+ UCHAR SupportedRevision;
+ UCHAR Reserved1;
+ USHORT Reserved2;
+
+
+
+
+
+
+
+#line 90 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\oidrequest.h"
+
+} NDIS_OID_REQUEST, *PNDIS_OID_REQUEST;
+
+
+
+
+
+
+
+
+
+
+
+#line 104 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\oidrequest.h"
+
+
+
+#line 108 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\oidrequest.h"
+#pragma endregion
+
+#line 4476 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_STATUS_INDICATION
+{
+ NDIS_OBJECT_HEADER Header;
+ NDIS_HANDLE SourceHandle;
+ NDIS_PORT_NUMBER PortNumber;
+ NDIS_STATUS StatusCode;
+ ULONG Flags;
+ NDIS_HANDLE DestinationHandle;
+ PVOID RequestId;
+ PVOID StatusBuffer;
+ ULONG StatusBufferSize;
+ GUID Guid;
+ PVOID NdisReserved[4];
+}NDIS_STATUS_INDICATION, *PNDIS_STATUS_INDICATION;
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_TIMER_CHARACTERISTICS
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG AllocationTag;
+ PNDIS_TIMER_FUNCTION TimerFunction;
+ PVOID FunctionContext;
+} NDIS_TIMER_CHARACTERISTICS, *PNDIS_TIMER_CHARACTERISTICS;
+
+
+
+
+
+
+
+
+
+
+
+#line 4542 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+#line 4552 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+typedef struct _NDIS_RESTART_GENERAL_ATTRIBUTES
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG MtuSize;
+ ULONG64 MaxXmitLinkSpeed;
+ ULONG64 MaxRcvLinkSpeed;
+ ULONG LookaheadSize;
+ ULONG MacOptions;
+ ULONG SupportedPacketFilters;
+ ULONG MaxMulticastListSize;
+ PNDIS_RECEIVE_SCALE_CAPABILITIES RecvScaleCapabilities;
+ NET_IF_ACCESS_TYPE AccessType;
+ ULONG Flags;
+ NET_IF_CONNECTION_TYPE ConnectionType;
+ ULONG SupportedStatistics;
+ ULONG DataBackFillSize;
+ ULONG ContextBackFillSize;
+ PNDIS_OID SupportedOidList;
+ ULONG SupportedOidListLength;
+
+
+#line 4575 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+}NDIS_RESTART_GENERAL_ATTRIBUTES, *PNDIS_RESTART_GENERAL_ATTRIBUTES;
+
+
+
+
+
+
+
+#line 4584 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+NDIS_STATUS
+NdisAllocateTimerObject(
+ NDIS_HANDLE NdisHandle,
+ PNDIS_TIMER_CHARACTERISTICS TimerCharacteristics,
+
+ PNDIS_HANDLE pTimerObject
+ );
+
+
+
+BOOLEAN
+NdisSetTimerObject(
+ NDIS_HANDLE TimerObject,
+ LARGE_INTEGER DueTime,
+ LONG MillisecondsPeriod,
+ PVOID FunctionContext
+ );
+
+
+
+
+
+
+
+
+
+
+BOOLEAN
+NdisCancelTimerObject(
+ NDIS_HANDLE TimerObject
+ );
+
+
+
+void
+NdisFreeTimerObject(
+ NDIS_HANDLE TimerObject
+ );
+
+
+NDIS_STATUS
+NdisAllocateCloneOidRequest(
+ NDIS_HANDLE SourceHandle,
+ PNDIS_OID_REQUEST OidRequest,
+ UINT PoolTag,
+ PNDIS_OID_REQUEST* ClonedOidRequest
+ );
+
+
+void
+NdisFreeCloneOidRequest(
+ NDIS_HANDLE SourceHandle,
+ PNDIS_OID_REQUEST Request
+ );
+
+
+
+void
+NdisGetSystemUpTimeEx(
+ PLARGE_INTEGER pSystemUpTime
+ );
+
+
+
+typedef struct _NDIS_PROCESSOR_INFO
+{
+ ULONG CpuNumber;
+ ULONG PhysicalPackageId;
+ ULONG CoreId;
+ ULONG HyperThreadID;
+}NDIS_PROCESSOR_INFO, *PNDIS_PROCESSOR_INFO;
+
+
+
+typedef struct _NDIS_SYSTEM_PROCESSOR_INFO
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG Flags;
+ NDIS_PROCESSOR_VENDOR ProcessorVendor;
+ ULONG NumPhysicalPackages;
+ ULONG NumCores;
+ ULONG NumCoresPerPhysicalPackage;
+ ULONG MaxHyperThreadingCpusPerCore;
+ ULONG RssBaseCpu;
+ ULONG RssCpuCount;
+ PUCHAR RssProcessors;
+ NDIS_PROCESSOR_INFO CpuInfo[64];
+}NDIS_SYSTEM_PROCESSOR_INFO, *PNDIS_SYSTEM_PROCESSOR_INFO;
+
+
+
+
+
+
+NDIS_STATUS
+NdisGetProcessorInformation(
+ PNDIS_SYSTEM_PROCESSOR_INFO SystemProcessorInfo
+ );
+
+#line 4688 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 4711 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 4727 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 4739 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+#line 4750 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+typedef struct _NDIS_FILTER_INTERFACE
+{
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG Flags;
+ ULONG FilterType;
+ ULONG FilterRunType;
+ NET_IFINDEX IfIndex;
+ NET_LUID NetLuid;
+ NDIS_STRING FilterClass;
+ NDIS_STRING FilterInstanceName;
+} NDIS_FILTER_INTERFACE, *PNDIS_FILTER_INTERFACE;
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_ENUM_FILTERS
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG Flags;
+ ULONG NumberOfFilters;
+ ULONG OffsetFirstFilter;
+
+ NDIS_FILTER_INTERFACE Filter[1];
+} NDIS_ENUM_FILTERS, *PNDIS_ENUM_FILTERS;
+
+
+
+
+
+
+NDIS_STATUS
+NdisEnumerateFilterModules(
+ NDIS_HANDLE NdisHandle,
+
+ PVOID InterfaceBuffer,
+ ULONG InterfaceBufferLength,
+ PULONG BytesNeeded,
+ PULONG BytesWritten
+ );
+
+
+
+
+
+
+
+
+typedef struct _NDIS_DEVICE_OBJECT_ATTRIBUTES
+{
+ NDIS_OBJECT_HEADER Header;
+ PNDIS_STRING DeviceName;
+ PNDIS_STRING SymbolicName;
+ PDRIVER_DISPATCH* MajorFunctions;
+ ULONG ExtensionSize;
+ PCUNICODE_STRING DefaultSDDLString;
+ LPCGUID DeviceClassGuid;
+} NDIS_DEVICE_OBJECT_ATTRIBUTES, *PNDIS_DEVICE_OBJECT_ATTRIBUTES;
+
+
+
+
+
+
+NDIS_STATUS
+NdisRegisterDeviceEx(
+ NDIS_HANDLE NdisHandle,
+ PNDIS_DEVICE_OBJECT_ATTRIBUTES DeviceObjectAttributes,
+ PDEVICE_OBJECT * pDeviceObject,
+ PNDIS_HANDLE NdisDeviceHandle
+ );
+
+
+
+void
+NdisDeregisterDeviceEx(
+ NDIS_HANDLE NdisDeviceHandle
+ );
+
+
+
+PVOID
+NdisGetDeviceReservedExtension(
+ PDEVICE_OBJECT DeviceObject
+ );
+
+
+
+
+
+
+typedef struct _NDIS_DRIVER_WRAPPER_HANDLE
+{
+
+
+
+
+
+
+ NDIS_OBJECT_HEADER Header;
+ NDIS_HANDLE NdisWrapperHandle;
+
+} NDIS_DRIVER_WRAPPER_HANDLE, *PNDIS_DRIVER_WRAPPER_HANDLE;
+
+
+
+
+#line 4866 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+#line 4867 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 5088 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 5141 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+#line 5145 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+#pragma warning(pop)
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 6407 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+#pragma once
+
+#pragma warning(push)
+
+#pragma warning(disable:4201)
+#pragma warning(disable:4214)
+
+
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbl.h"
+
+
+#pragma once
+
+#pragma region System Family (kernel drivers) with Desktop Family for compat
+
+
+
+
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblinfo.h"
+
+
+#pragma once
+
+#pragma region System Family (kernel drivers) with Desktop Family for compat
+
+
+
+
+
+
+
+
+typedef enum _NDIS_NET_BUFFER_LIST_INFO
+{
+ TcpIpChecksumNetBufferListInfo,
+ TcpOffloadBytesTransferred = TcpIpChecksumNetBufferListInfo,
+ IPsecOffloadV1NetBufferListInfo,
+
+
+#line 22 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblinfo.h"
+ TcpLargeSendNetBufferListInfo,
+ TcpReceiveNoPush = TcpLargeSendNetBufferListInfo,
+ ClassificationHandleNetBufferListInfo,
+ Ieee8021QNetBufferListInfo,
+ NetBufferListCancelId,
+ MediaSpecificInformation,
+ NetBufferListFrameType,
+ NetBufferListProtocolId = NetBufferListFrameType,
+ NetBufferListHashValue,
+ NetBufferListHashInfo,
+ WfpNetBufferListInfo,
+
+
+
+#line 37 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblinfo.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 95 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblinfo.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 134 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblinfo.h"
+
+
+
+
+#line 139 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblinfo.h"
+
+ MaxNetBufferListInfo
+} NDIS_NET_BUFFER_LIST_INFO, *PNDIS_NET_BUFFER_LIST_INFO;
+
+
+
+#line 146 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblinfo.h"
+#pragma endregion
+
+#line 12 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbl.h"
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4201)
+
+typedef struct _NET_BUFFER NET_BUFFER, *PNET_BUFFER;
+typedef struct _NET_BUFFER_LIST_CONTEXT NET_BUFFER_LIST_CONTEXT, *PNET_BUFFER_LIST_CONTEXT;
+typedef struct _NET_BUFFER_LIST NET_BUFFER_LIST, *PNET_BUFFER_LIST;
+
+typedef struct _SCATTER_GATHER_LIST SCATTER_GATHER_LIST;
+typedef struct _MDL MDL;
+
+
+
+
+
+
+
+
+typedef union _NET_BUFFER_DATA_LENGTH
+{
+ ULONG DataLength;
+ SIZE_T stDataLength;
+} NET_BUFFER_DATA_LENGTH, *PNET_BUFFER_DATA_LENGTH;
+
+typedef struct _NET_BUFFER_DATA
+{
+ NET_BUFFER *Next;
+ MDL *CurrentMdl;
+ ULONG CurrentMdlOffset;
+
+
+
+ NET_BUFFER_DATA_LENGTH;
+#line 49 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbl.h"
+ MDL *MdlChain;
+ ULONG DataOffset;
+} NET_BUFFER_DATA, *PNET_BUFFER_DATA;
+
+typedef union _NET_BUFFER_HEADER
+{
+
+
+
+ NET_BUFFER_DATA;
+#line 60 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbl.h"
+ SLIST_HEADER Link;
+
+} NET_BUFFER_HEADER, *PNET_BUFFER_HEADER;
+
+#line 65 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbl.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 86 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbl.h"
+
+
+
+
+
+typedef struct _NET_BUFFER
+{
+ union
+ {
+ struct
+ {
+ NET_BUFFER *Next;
+ MDL *CurrentMdl;
+ ULONG CurrentMdlOffset;
+ union
+ {
+ ULONG DataLength;
+ SIZE_T stDataLength;
+ };
+
+ MDL *MdlChain;
+ ULONG DataOffset;
+ };
+
+ SLIST_HEADER Link;
+
+
+
+ NET_BUFFER_HEADER NetBufferHeader;
+#line 116 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbl.h"
+ };
+
+ USHORT ChecksumBias;
+ USHORT Reserved;
+ NDIS_HANDLE NdisPoolHandle;
+ __declspec(align(16)) PVOID NdisReserved[2];
+ __declspec(align(16)) PVOID ProtocolReserved[6];
+ __declspec(align(16)) PVOID MiniportReserved[4];
+ PHYSICAL_ADDRESS DataPhysicalAddress;
+
+
+
+
+
+
+#line 132 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbl.h"
+} NET_BUFFER, *PNET_BUFFER;
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4200)
+
+typedef struct _NET_BUFFER_LIST_CONTEXT
+{
+ NET_BUFFER_LIST_CONTEXT *Next;
+ USHORT Size;
+ USHORT Offset;
+ __declspec(align(16)) UCHAR ContextData[];
+} NET_BUFFER_LIST_CONTEXT, *PNET_BUFFER_LIST_CONTEXT;
+
+#pragma warning(pop)
+
+
+
+typedef struct _NET_BUFFER_LIST_DATA
+{
+ NET_BUFFER_LIST *Next;
+ NET_BUFFER *FirstNetBuffer;
+} NET_BUFFER_LIST_DATA, *PNET_BUFFER_LIST_DATA;
+
+typedef union _NET_BUFFER_LIST_HEADER
+{
+
+
+
+ NET_BUFFER_LIST_DATA;
+#line 166 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbl.h"
+ SLIST_HEADER Link;
+} NET_BUFFER_LIST_HEADER, *PNET_BUFFER_LIST_HEADER;
+
+#line 170 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbl.h"
+
+typedef struct _NET_BUFFER_LIST
+{
+ union
+ {
+ struct
+ {
+ NET_BUFFER_LIST *Next;
+ NET_BUFFER *FirstNetBuffer;
+ };
+
+ SLIST_HEADER Link;
+
+
+
+ NET_BUFFER_LIST_HEADER NetBufferListHeader;
+#line 187 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbl.h"
+ };
+
+ NET_BUFFER_LIST_CONTEXT *Context;
+ NET_BUFFER_LIST *ParentNetBufferList;
+ NDIS_HANDLE NdisPoolHandle;
+ __declspec(align(16)) PVOID NdisReserved[2];
+ __declspec(align(16)) PVOID ProtocolReserved[4];
+ __declspec(align(16)) PVOID MiniportReserved[2];
+ PVOID Scratch;
+ NDIS_HANDLE SourceHandle;
+ ULONG NblFlags;
+ LONG ChildRefCount;
+ ULONG Flags;
+
+ union
+ {
+ NDIS_STATUS Status;
+ ULONG NdisReserved2;
+ };
+
+ PVOID NetBufferListInfo[MaxNetBufferListInfo];
+} NET_BUFFER_LIST, *PNET_BUFFER_LIST;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 224 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbl.h"
+
+
+
+
+#line 229 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbl.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 248 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbl.h"
+
+
+
+
+
+
+#line 255 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbl.h"
+
+
+
+
+#pragma warning(pop)
+
+#line 262 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbl.h"
+#pragma endregion
+
+
+#line 6422 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblaccessors.h"
+
+
+#pragma once
+
+#pragma region System Family (kernel drivers) with Desktop Family for compat
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 35 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblaccessors.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 47 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblaccessors.h"
+
+#line 49 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblaccessors.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 75 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblaccessors.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 121 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblaccessors.h"
+
+
+
+
+
+
+
+
+
+
+#line 132 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblaccessors.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 179 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblaccessors.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 208 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblaccessors.h"
+
+
+
+
+
+
+#line 215 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblaccessors.h"
+#pragma endregion
+
+#line 6424 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbl8021q.h"
+
+
+#pragma once
+
+#pragma region System Family (kernel drivers) with Desktop Family for compat
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_NET_BUFFER_LIST_8021Q_INFO
+{
+ union
+ {
+ struct
+ {
+ UINT32 UserPriority :3;
+ UINT32 CanonicalFormatId :1;
+ UINT32 VlanId :12;
+ UINT32 Reserved :16;
+ } TagHeader;
+
+ struct
+ {
+ UINT32 UserPriority :3;
+ UINT32 CanonicalFormatId :1;
+ UINT32 VlanId :12;
+ UINT32 WMMInfo :4;
+ UINT32 Reserved :12;
+
+ } WLanTagHeader;
+
+ PVOID Value;
+ };
+} NDIS_NET_BUFFER_LIST_8021Q_INFO, *PNDIS_NET_BUFFER_LIST_8021Q_INFO;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 73 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbl8021q.h"
+
+
+
+#line 77 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbl8021q.h"
+#pragma endregion
+
+#line 6433 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+typedef struct _NDIS_NET_BUFFER_LIST_MEDIA_SPECIFIC_INFO
+{
+ union
+ {
+ PVOID MediaSpecificInfo;
+ PVOID NativeWifiSpecificInfo;
+
+ PVOID Value;
+ };
+
+} NDIS_NET_BUFFER_LIST_MEDIA_SPECIFIC_INFO, *PNDIS_NET_BUFFER_LIST_MEDIA_SPECIFIC_INFO;
+
+typedef struct _NDIS_NBL_MEDIA_MEDIA_SPECIFIC_INFORMATION NDIS_NBL_MEDIA_SPECIFIC_INFORMATION, *PNDIS_NBL_MEDIA_SPECIFIC_INFORMATION;
+
+
+struct _NDIS_NBL_MEDIA_MEDIA_SPECIFIC_INFORMATION
+{
+ PNDIS_NBL_MEDIA_SPECIFIC_INFORMATION NextEntry;
+ ULONG Tag;
+ __declspec(align(16)) UCHAR Data[1];
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 6765 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 6860 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblhash.h"
+
+
+#pragma once
+
+#pragma region System Family (kernel drivers) with Desktop Family for compat
+
+
+
+
+
+
+
+
+
+
+
+
+
+void
+inline
+NET_BUFFER_LIST_SET_HASH_TYPE(
+ NET_BUFFER_LIST *Nbl,
+ ULONG HashType
+ )
+{
+ ((Nbl)->NetBufferListInfo[(NetBufferListHashInfo)]) =
+ ULongToPtr(((PtrToUlong(((Nbl)->NetBufferListInfo[(NetBufferListHashInfo)])) & ~0x00FFFF00) | (HashType & 0x00FFFF00)));
+}
+
+void
+inline
+NET_BUFFER_LIST_SET_HASH_FUNCTION(
+ NET_BUFFER_LIST *Nbl,
+ ULONG HashFunction
+ )
+{
+ ((Nbl)->NetBufferListInfo[(NetBufferListHashInfo)]) =
+ ULongToPtr(((PtrToUlong(((Nbl)->NetBufferListInfo[(NetBufferListHashInfo)])) & ~0x000000FF) | ((HashFunction) & 0x000000FF)));
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 95 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblhash.h"
+
+
+
+#line 99 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblhash.h"
+#pragma endregion
+
+#line 6886 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 6935 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbltimestamp.h"
+
+
+#pragma once
+
+#pragma region System Family (kernel drivers) with Desktop Family for compat
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 102 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbltimestamp.h"
+
+
+
+#line 106 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbltimestamp.h"
+#pragma endregion
+
+#line 6937 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblapi.h"
+
+
+#pragma once
+
+#pragma region System Family (kernel drivers) with Desktop Family for compat
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 26 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblapi.h"
+
+typedef struct _NET_BUFFER_LIST_POOL_PARAMETERS
+{
+
+
+
+
+
+ NDIS_OBJECT_HEADER Header;
+ UCHAR ProtocolId;
+ BOOLEAN fAllocateNetBuffer;
+ USHORT ContextSize;
+ ULONG PoolTag;
+ ULONG DataSize;
+
+
+#line 43 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblapi.h"
+} NET_BUFFER_LIST_POOL_PARAMETERS, *PNET_BUFFER_LIST_POOL_PARAMETERS;
+
+
+
+
+
+
+
+#line 52 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblapi.h"
+
+
+
+
+__declspec(dllimport)
+NDIS_HANDLE
+NdisAllocateNetBufferListPool(
+ NDIS_HANDLE NdisHandle,
+ NET_BUFFER_LIST_POOL_PARAMETERS const *Parameters
+ );
+
+
+__declspec(dllimport)
+void
+NdisFreeNetBufferListPool(
+ NDIS_HANDLE PoolHandle
+ );
+
+
+
+
+__declspec(dllimport)
+NET_BUFFER_LIST *
+NdisAllocateNetBufferList(
+ NDIS_HANDLE PoolHandle,
+ USHORT ContextSize,
+ USHORT ContextBackFill
+ );
+
+
+
+
+__declspec(dllimport)
+NET_BUFFER_LIST *
+NdisAllocateNetBufferAndNetBufferList(
+ NDIS_HANDLE PoolHandle,
+ USHORT ContextSize,
+ USHORT ContextBackFill,
+ MDL *MdlChain,
+ ULONG DataOffset,
+ SIZE_T DataLength
+ );
+
+
+__declspec(dllimport)
+void
+NdisFreeNetBufferList(
+ NET_BUFFER_LIST *NetBufferList
+ );
+
+
+__declspec(dllimport)
+NDIS_HANDLE
+NdisGetPoolFromNetBufferList(
+ NET_BUFFER_LIST const *NetBufferList
+ );
+
+
+
+
+
+
+
+
+
+
+#line 119 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblapi.h"
+
+typedef struct _NET_BUFFER_POOL_PARAMETERS
+{
+
+
+
+
+
+ NDIS_OBJECT_HEADER Header;
+ ULONG PoolTag;
+ ULONG DataSize;
+
+
+#line 133 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblapi.h"
+} NET_BUFFER_POOL_PARAMETERS, *PNET_BUFFER_POOL_PARAMETERS;
+
+
+
+
+
+
+
+#line 142 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblapi.h"
+
+
+
+
+__declspec(dllimport)
+NDIS_HANDLE
+NdisAllocateNetBufferPool(
+ NDIS_HANDLE NdisHandle,
+ NET_BUFFER_POOL_PARAMETERS const *Parameters
+ );
+
+
+__declspec(dllimport)
+void
+NdisFreeNetBufferPool(
+ NDIS_HANDLE PoolHandle
+ );
+
+
+
+
+__declspec(dllimport)
+NET_BUFFER *
+NdisAllocateNetBuffer(
+ NDIS_HANDLE PoolHandle,
+ MDL *MdlChain,
+ ULONG DataOffset,
+ SIZE_T DataLength
+ );
+
+
+
+
+__declspec(dllimport)
+NET_BUFFER *
+NdisAllocateNetBufferMdlAndData(
+ NDIS_HANDLE PoolHandle
+ );
+
+
+__declspec(dllimport)
+void
+NdisFreeNetBuffer(
+ NET_BUFFER *NetBuffer
+ );
+
+
+__declspec(dllimport)
+NDIS_HANDLE
+NdisGetPoolFromNetBuffer(
+ NET_BUFFER const *NetBuffer
+ );
+
+
+
+
+
+typedef
+
+
+
+MDL *
+NET_BUFFER_ALLOCATE_MDL(
+ ULONG *BufferSize
+ );
+
+typedef NET_BUFFER_ALLOCATE_MDL *NET_BUFFER_ALLOCATE_MDL_HANDLER;
+
+typedef
+
+
+
+void
+NET_BUFFER_FREE_MDL(
+ MDL *Mdl
+ );
+
+typedef NET_BUFFER_FREE_MDL *NET_BUFFER_FREE_MDL_HANDLER;
+
+
+
+
+
+
+
+__declspec(dllimport)
+NDIS_STATUS
+NdisRetreatNetBufferDataStart(
+ NET_BUFFER *NetBuffer,
+ ULONG DataOffsetDelta,
+ ULONG DataBackFill,
+ NET_BUFFER_ALLOCATE_MDL *AllocateMdlHandler
+ );
+
+
+__declspec(dllimport)
+void
+NdisAdvanceNetBufferDataStart(
+ NET_BUFFER *NetBuffer,
+ ULONG DataOffsetDelta,
+ BOOLEAN FreeMdl,
+ NET_BUFFER_FREE_MDL *FreeMdlHandler
+ );
+
+
+__declspec(dllimport)
+NDIS_STATUS
+NdisRetreatNetBufferListDataStart(
+ NET_BUFFER_LIST *NetBufferList,
+ ULONG DataOffsetDelta,
+ ULONG DataBackFill,
+ NET_BUFFER_ALLOCATE_MDL *AllocateMdlHandler,
+ NET_BUFFER_FREE_MDL *FreeMdlHandler
+ );
+
+
+__declspec(dllimport)
+void
+NdisAdvanceNetBufferListDataStart(
+ NET_BUFFER_LIST *NetBufferList,
+ ULONG DataOffsetDelta,
+ BOOLEAN FreeMdl,
+ NET_BUFFER_FREE_MDL *FreeMdlMdlHandler
+ );
+
+
+__declspec(dllimport)
+void
+NdisAdjustNetBufferCurrentMdl(
+ NET_BUFFER *NetBuffer
+ );
+
+
+
+
+
+
+
+__declspec(dllimport)
+NDIS_STATUS
+NdisAllocateNetBufferListContext(
+ NET_BUFFER_LIST *NetBufferList,
+ USHORT ContextSize,
+ USHORT ContextBackFill,
+ ULONG PoolTag
+ );
+
+
+
+__declspec(dllimport)
+void
+NdisFreeNetBufferListContext(
+ NET_BUFFER_LIST *NetBufferList,
+ USHORT ContextSize
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+#line 310 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblapi.h"
+
+
+
+
+__declspec(dllimport)
+NET_BUFFER_LIST *
+NdisAllocateCloneNetBufferList(
+ NET_BUFFER_LIST *OriginalNetBufferList,
+ NDIS_HANDLE NetBufferListPoolHandle,
+ NDIS_HANDLE NetBufferPoolHandle,
+ ULONG AllocateCloneFlags
+ );
+
+
+__declspec(dllimport)
+void
+NdisFreeCloneNetBufferList(
+ NET_BUFFER_LIST *CloneNetBufferList,
+ ULONG FreeCloneFlags
+ );
+
+
+
+
+__declspec(dllimport)
+NET_BUFFER_LIST *
+NdisAllocateFragmentNetBufferList(
+ NET_BUFFER_LIST *OriginalNetBufferList,
+ NDIS_HANDLE NetBufferListPool,
+ NDIS_HANDLE NetBufferPool,
+ ULONG StartOffset,
+ ULONG MaximumLength,
+ ULONG DataOffsetDelta,
+ ULONG DataBackFill,
+ ULONG AllocateFragmentFlags
+ );
+
+
+__declspec(dllimport)
+void
+NdisFreeFragmentNetBufferList(
+ NET_BUFFER_LIST *FragmentNetBufferList,
+ ULONG DataOffsetDelta,
+ ULONG FreeFragmentFlags
+ );
+
+
+
+
+__declspec(dllimport)
+NET_BUFFER_LIST *
+NdisAllocateReassembledNetBufferList(
+ NET_BUFFER_LIST *FragmentNetBufferList,
+ NDIS_HANDLE NetBufferAndNetBufferListPoolHandle,
+ ULONG StartOffset,
+ ULONG DataOffsetDelta,
+ ULONG DataBackFill,
+ ULONG AllocateReassembleFlags
+ );
+
+
+__declspec(dllimport)
+void
+NdisFreeReassembledNetBufferList(
+ NET_BUFFER_LIST *ReassembledNetBufferList,
+ ULONG DataOffsetDelta,
+ ULONG FreeReassembleFlags
+ );
+
+
+
+
+
+
+__declspec(dllimport)
+UCHAR
+NdisGetNetBufferListProtocolId(
+ NET_BUFFER_LIST const *NetBufferList
+ );
+
+
+__declspec(dllimport)
+void
+NdisCopySendNetBufferListInfo(
+ NET_BUFFER_LIST *DestNetBufferList,
+ NET_BUFFER_LIST const *SrcNetBufferList
+ );
+
+
+__declspec(dllimport)
+void
+NdisCopyReceiveNetBufferListInfo(
+ NET_BUFFER_LIST *DestNetBufferList,
+ NET_BUFFER_LIST const *SrcNetBufferList
+ );
+
+
+
+
+
+
+
+
+#line 417 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblapi.h"
+
+__declspec(dllimport)
+PVOID
+NdisGetDataBuffer(
+ NET_BUFFER *NetBuffer,
+ ULONG BytesNeeded,
+
+ PVOID Storage,
+ ULONG AlignMultiple,
+ ULONG AlignOffset
+ );
+
+
+__declspec(dllimport)
+NDIS_STATUS
+NdisCopyFromNetBufferToNetBuffer(
+ NET_BUFFER *Destination,
+ ULONG DestinationOffset,
+ ULONG BytesToCopy,
+ NET_BUFFER const *Source,
+ ULONG SourceOffset,
+ ULONG *BytesCopied
+ );
+
+
+__declspec(dllimport)
+ULONG
+NdisQueryNetBufferPhysicalCount(
+ NET_BUFFER *NetBuffer
+ );
+
+
+
+#line 451 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblapi.h"
+#pragma endregion
+#line 6938 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\mdlapi.h"
+
+
+#pragma once
+
+#pragma region System Family (kernel drivers) with Desktop Family for compat
+
+
+
+
+
+
+
+typedef struct _MDL MDL;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 70 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\mdlapi.h"
+
+
+
+
+__declspec(dllimport)
+MDL *
+NdisAllocateMdl(
+ NDIS_HANDLE NdisHandle,
+ PVOID VirtualAddress,
+ ULONG Length
+ );
+
+
+__declspec(dllimport)
+void
+NdisFreeMdl(
+ MDL *Mdl
+ );
+
+
+
+#line 92 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\mdlapi.h"
+#pragma endregion
+
+#line 6939 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblsend.h"
+
+
+#pragma once
+
+#pragma region System Family (kernel drivers) with Desktop Family for compat
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 32 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblsend.h"
+
+
+
+#line 36 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblsend.h"
+
+
+
+
+
+
+
+
+
+
+#line 47 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblsend.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 64 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblsend.h"
+
+
+#line 67 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblsend.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 79 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblsend.h"
+
+
+
+
+#line 84 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblsend.h"
+#pragma endregion
+
+
+#line 6941 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblreceive.h"
+
+
+#pragma once
+
+#pragma region System Family (kernel drivers) with Desktop Family for compat
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 37 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblreceive.h"
+
+
+
+#line 41 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblreceive.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 57 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblreceive.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 73 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblreceive.h"
+
+
+#line 76 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblreceive.h"
+
+
+
+
+
+
+
+
+
+#line 86 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblreceive.h"
+
+
+
+
+#line 91 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblreceive.h"
+#pragma endregion
+
+
+#line 6942 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+#line 6945 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#pragma warning(pop)
+
+
+
+
+
+#pragma once
+#pragma warning(push)
+
+#pragma warning(disable:4201)
+#pragma warning(disable:4214)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 6994 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+typedef struct _NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO
+{
+ union
+ {
+ struct
+ {
+ NDIS_HANDLE OffloadHandle;
+
+ } Transmit;
+
+ struct
+ {
+ USHORT SaDeleteReq:1;
+ USHORT CryptoDone:1;
+ USHORT NextCryptoDone:1;
+ USHORT Pad:13;
+ USHORT CryptoStatus;
+ } Receive;
+ };
+} NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO, *PNDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO;
+#line 7017 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7183 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbllso.h"
+
+
+#pragma once
+
+#pragma region System Family (kernel drivers) with Desktop Family for compat
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO
+{
+ union
+ {
+ struct
+ {
+ ULONG Unused :30;
+ ULONG Type :1;
+ ULONG Reserved2 :1;
+ } Transmit;
+
+ struct
+ {
+ ULONG MSS :20;
+ ULONG TcpHeaderOffset :10;
+ ULONG Type :1;
+ ULONG Reserved2 :1;
+ } LsoV1Transmit;
+
+ struct
+ {
+ ULONG TcpPayload :30;
+ ULONG Type :1;
+ ULONG Reserved2 :1;
+ } LsoV1TransmitComplete;
+
+ struct
+ {
+ ULONG MSS :20;
+ ULONG TcpHeaderOffset :10;
+ ULONG Type :1;
+ ULONG IPVersion :1;
+ } LsoV2Transmit;
+
+ struct
+ {
+ ULONG Reserved :30;
+ ULONG Type :1;
+ ULONG Reserved2 :1;
+ } LsoV2TransmitComplete;
+
+ PVOID Value;
+ };
+} NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO, *PNDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 94 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbllso.h"
+
+
+
+#line 98 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbllso.h"
+#pragma endregion
+
+#line 7201 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblchecksum.h"
+
+
+#pragma once
+
+#pragma region System Family (kernel drivers) with Desktop Family for compat
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO
+{
+ union
+ {
+ struct
+ {
+ ULONG IsIPv4 :1;
+ ULONG IsIPv6 :1;
+ ULONG TcpChecksum :1;
+ ULONG UdpChecksum :1;
+ ULONG IpHeaderChecksum :1;
+ ULONG Reserved :11;
+ ULONG TcpHeaderOffset :10;
+ } Transmit;
+
+ struct
+ {
+ ULONG TcpChecksumFailed :1;
+ ULONG UdpChecksumFailed :1;
+ ULONG IpChecksumFailed :1;
+ ULONG TcpChecksumSucceeded :1;
+ ULONG UdpChecksumSucceeded :1;
+ ULONG IpChecksumSucceeded :1;
+ ULONG Loopback :1;
+
+
+
+#line 44 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblchecksum.h"
+ } Receive;
+
+ PVOID Value;
+ };
+} NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO, *PNDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO;
+
+
+
+#line 53 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nblchecksum.h"
+#pragma endregion
+
+#line 7202 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7229 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\encapsulationconfig.h"
+
+
+#pragma once
+
+#pragma region System Family (kernel drivers) with Desktop Family for compat
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_OFFLOAD_ENCAPSULATION
+{
+
+
+
+
+
+ NDIS_OBJECT_HEADER Header;
+
+ struct
+ {
+
+
+
+
+
+ ULONG Enabled;
+
+
+
+
+
+
+ ULONG EncapsulationType;
+
+
+
+
+
+ ULONG HeaderSize;
+ } IPv4;
+
+ struct
+ {
+
+
+
+
+
+ ULONG Enabled;
+
+
+
+
+
+ ULONG EncapsulationType;
+
+
+
+
+
+ ULONG HeaderSize;
+ } IPv6;
+
+} NDIS_OFFLOAD_ENCAPSULATION, *PNDIS_OFFLOAD_ENCAPSULATION;
+
+
+
+
+
+
+#line 86 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\encapsulationconfig.h"
+#pragma endregion
+
+#line 7231 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7495 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 7497 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbluso.h"
+
+
+#pragma once
+
+#pragma region System Family (kernel drivers) with Desktop Family for compat
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 57 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbluso.h"
+
+
+
+#line 61 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbluso.h"
+#pragma endregion
+
+#line 7499 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbluro.h"
+
+
+#pragma once
+
+#pragma region System Family (kernel drivers) with Desktop Family for compat
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 130 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbluro.h"
+
+
+
+#line 134 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\nbluro.h"
+#pragma endregion
+
+#line 7500 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#pragma warning(pop)
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7713 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7770 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+typedef
+
+
+NDIS_STATUS
+(PROTOCOL_CO_OID_REQUEST)(
+ NDIS_HANDLE ProtocolAfContext,
+ NDIS_HANDLE ProtocolVcContext,
+ NDIS_HANDLE ProtocolPartyContext,
+ PNDIS_OID_REQUEST OidRequest
+ );
+
+typedef PROTOCOL_CO_OID_REQUEST (*CO_OID_REQUEST_HANDLER);
+
+typedef
+
+
+void
+(PROTOCOL_CO_OID_REQUEST_COMPLETE)(
+ NDIS_HANDLE ProtocolAfContext,
+ NDIS_HANDLE ProtocolVcContext,
+ NDIS_HANDLE ProtocolPartyContext,
+ PNDIS_OID_REQUEST OidRequest,
+ NDIS_STATUS Status
+ );
+
+typedef PROTOCOL_CO_OID_REQUEST_COMPLETE (*CO_OID_REQUEST_COMPLETE_HANDLER);
+
+#line 7800 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+typedef
+
+
+NDIS_STATUS
+(PROTOCOL_CO_CREATE_VC)(
+ NDIS_HANDLE ProtocolAfContext,
+ NDIS_HANDLE NdisVcHandle,
+ PNDIS_HANDLE ProtocolVcContext
+ );
+
+typedef PROTOCOL_CO_CREATE_VC (*CO_CREATE_VC_HANDLER);
+
+typedef
+
+
+NDIS_STATUS
+(PROTOCOL_CO_DELETE_VC)(
+ NDIS_HANDLE ProtocolVcContext
+ );
+
+typedef PROTOCOL_CO_DELETE_VC (*CO_DELETE_VC_HANDLER);
+
+typedef
+
+
+void
+(PROTOCOL_CO_AF_REGISTER_NOTIFY)(
+ NDIS_HANDLE ProtocolBindingContext,
+ PCO_ADDRESS_FAMILY AddressFamily
+ );
+typedef PROTOCOL_CO_AF_REGISTER_NOTIFY (*CO_AF_REGISTER_NOTIFY_HANDLER);
+
+
+typedef PROTOCOL_CO_AF_REGISTER_NOTIFY PROTCOL_CO_AF_REGISTER_NOTIFY;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7922 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+typedef
+
+
+void
+(PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS)(
+ NDIS_HANDLE ProtocolBindingContext,
+ NDIS_HANDLE ProtocolVcContext,
+ PNET_BUFFER_LIST NetBufferLists,
+ ULONG NumberOfNetBufferLists,
+ ULONG ReceiveFlags
+ );
+
+typedef PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS (*CO_RECEIVE_NET_BUFFER_LISTS_HANDLER);
+
+typedef
+
+
+void
+(PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE)(
+ NDIS_HANDLE ProtocolVcContext,
+ PNET_BUFFER_LIST NetBufferLists,
+ ULONG SendCompleteFlags
+ );
+
+typedef PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE (*CO_SEND_NET_BUFFER_LISTS_COMPLETE_HANDLER);
+
+typedef
+
+
+void
+(PROTOCOL_CO_STATUS_EX)(
+ NDIS_HANDLE ProtocolBindingContext,
+ NDIS_HANDLE ProtocolVcContext,
+ PNDIS_STATUS_INDICATION StatusIndication
+ );
+
+typedef PROTOCOL_CO_STATUS_EX (*CO_STATUS_HANDLER_EX);
+
+
+
+
+typedef
+
+
+NDIS_STATUS
+(PROTOCOL_CL_NOTIFY_CLOSE_AF)(
+ NDIS_HANDLE ClientAfContext
+ );
+
+typedef PROTOCOL_CL_NOTIFY_CLOSE_AF (*CL_NOTIFY_CLOSE_AF_HANDLER);
+
+typedef
+
+
+void
+(PROTOCOL_CL_OPEN_AF_COMPLETE_EX)(
+ NDIS_HANDLE ProtocolAfContext,
+ NDIS_HANDLE NdisAfHandle,
+ NDIS_STATUS Status
+ );
+
+typedef PROTOCOL_CL_OPEN_AF_COMPLETE_EX (*CL_OPEN_AF_COMPLETE_HANDLER_EX);
+
+
+
+
+
+typedef
+
+
+void
+(PROTOCOL_CM_NOTIFY_CLOSE_AF_COMPLETE)(
+ NDIS_HANDLE CallMgrAfContext,
+ NDIS_STATUS Status
+ );
+
+typedef PROTOCOL_CM_NOTIFY_CLOSE_AF_COMPLETE (*CM_NOTIFY_CLOSE_AF_COMPLETE_HANDLER);
+
+
+
+void
+NdisDeregisterProtocolDriver(
+ NDIS_HANDLE NdisProtocolHandle
+ );
+
+
+#line 8016 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8105 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+void
+NdisReEnumerateProtocolBindings(
+ NDIS_HANDLE NdisProtocolHandle
+ );
+
+
+
+NDIS_STATUS
+NdisWriteEventLogEntry(
+
+ PVOID LogHandle,
+ NDIS_STATUS EventCode,
+ ULONG UniqueEventValue,
+ USHORT NumStrings,
+ PVOID StringsList,
+ ULONG DataSize,
+
+ PVOID Data
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8144 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+void
+NdisCompleteNetPnPEvent(
+ NDIS_HANDLE NdisBindingHandle,
+ PNET_PNP_EVENT_NOTIFICATION NetPnPEventNotification,
+ NDIS_STATUS Status
+ );
+#line 8155 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+NDIS_STATUS
+NdisQueryAdapterInstanceName(
+ PNDIS_STRING pAdapterInstanceName,
+ NDIS_HANDLE NdisBindingHandle
+ );
+
+
+
+
+NDIS_STATUS
+NdisQueryBindInstanceName(
+ PNDIS_STRING pAdapterInstanceName,
+ NDIS_HANDLE BindingContext
+ );
+
+
+
+
+
+typedef
+NTSTATUS
+(*TDI_REGISTER_CALLBACK)(
+ PUNICODE_STRING DeviceName,
+ HANDLE * TdiHandle
+ );
+
+typedef
+NTSTATUS
+(*TDI_PNP_HANDLER)(
+ PUNICODE_STRING UpperComponent,
+ PUNICODE_STRING LowerComponent,
+ PUNICODE_STRING BindList,
+ PVOID ReconfigBuffer,
+ UINT ReconfigBufferSize,
+ UINT Operation
+ );
+
+
+void
+NdisRegisterTdiCallBack(
+ TDI_REGISTER_CALLBACK RegisterCallback,
+ TDI_PNP_HANDLER PnPHandler
+ );
+
+
+void
+NdisDeregisterTdiCallBack(
+ void
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8312 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8343 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+#line 8351 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8380 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8402 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8435 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+UCHAR
+NdisGeneratePartialCancelId(
+ void
+ );
+
+
+
+
+
+
+
+typedef
+
+
+void
+(PROTOCOL_OID_REQUEST_COMPLETE)(
+ NDIS_HANDLE ProtocolBindingContext,
+ PNDIS_OID_REQUEST OidRequest,
+ NDIS_STATUS Status
+ );
+
+typedef PROTOCOL_OID_REQUEST_COMPLETE (*OID_REQUEST_COMPLETE_HANDLER);
+
+typedef
+
+
+void
+(PROTOCOL_RECEIVE_NET_BUFFER_LISTS)(
+ NDIS_HANDLE ProtocolBindingContext,
+ PNET_BUFFER_LIST NetBufferLists,
+ NDIS_PORT_NUMBER PortNumber,
+ ULONG NumberOfNetBufferLists,
+ ULONG ReceiveFlags
+ );
+
+typedef PROTOCOL_RECEIVE_NET_BUFFER_LISTS (*RECEIVE_NET_BUFFER_LISTS_HANDLER);
+
+typedef
+
+
+void
+(PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE)(
+ NDIS_HANDLE ProtocolBindingContext,
+ PNET_BUFFER_LIST NetBufferList,
+ ULONG SendCompleteFlags
+ );
+
+typedef PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE (*SEND_NET_BUFFER_LISTS_COMPLETE_HANDLER);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8504 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+#line 8513 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+#line 8517 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+#line 8521 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+typedef struct _NDIS_BIND_PARAMETERS
+{
+ NDIS_OBJECT_HEADER Header;
+ PNDIS_STRING ProtocolSection;
+ PNDIS_STRING AdapterName;
+ PDEVICE_OBJECT PhysicalDeviceObject;
+ NDIS_MEDIUM MediaType;
+ ULONG MtuSize;
+ ULONG64 MaxXmitLinkSpeed;
+ ULONG64 XmitLinkSpeed;
+ ULONG64 MaxRcvLinkSpeed;
+ ULONG64 RcvLinkSpeed;
+ NDIS_MEDIA_CONNECT_STATE MediaConnectState;
+ NDIS_MEDIA_DUPLEX_STATE MediaDuplexState;
+ ULONG LookaheadSize;
+ PNDIS_PNP_CAPABILITIES PowerManagementCapabilities;
+ ULONG SupportedPacketFilters;
+ ULONG MaxMulticastListSize;
+ USHORT MacAddressLength;
+ UCHAR CurrentMacAddress[32];
+ NDIS_PHYSICAL_MEDIUM PhysicalMediumType;
+ PNDIS_RECEIVE_SCALE_CAPABILITIES RcvScaleCapabilities;
+ NET_LUID BoundIfNetluid;
+ NET_IFINDEX BoundIfIndex;
+ NET_LUID LowestIfNetluid;
+ NET_IFINDEX LowestIfIndex;
+ NET_IF_ACCESS_TYPE AccessType;
+ NET_IF_DIRECTION_TYPE DirectionType;
+ NET_IF_CONNECTION_TYPE ConnectionType;
+ NET_IFTYPE IfType;
+ BOOLEAN IfConnectorPresent;
+ PNDIS_PORT ActivePorts;
+ ULONG DataBackFillSize;
+ ULONG ContextBackFillSize;
+ ULONG MacOptions;
+ NET_IF_COMPARTMENT_ID CompartmentId;
+ PNDIS_OFFLOAD DefaultOffloadConfiguration;
+ PNDIS_TCP_CONNECTION_OFFLOAD TcpConnectionOffloadCapabilities;
+ PNDIS_STRING BoundAdapterName;
+
+
+#line 8564 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 8569 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+#line 8575 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+}NDIS_BIND_PARAMETERS, *PNDIS_BIND_PARAMETERS;
+
+
+
+
+
+
+
+#line 8584 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 8589 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 8594 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+typedef
+
+
+NDIS_STATUS
+(PROTOCOL_BIND_ADAPTER_EX)(
+ NDIS_HANDLE ProtocolDriverContext,
+ NDIS_HANDLE BindContext,
+ PNDIS_BIND_PARAMETERS BindParameters
+ );
+
+typedef PROTOCOL_BIND_ADAPTER_EX (*BIND_HANDLER_EX);
+
+typedef
+
+
+NDIS_STATUS
+(PROTOCOL_UNBIND_ADAPTER_EX)(
+ NDIS_HANDLE UnbindContext,
+ NDIS_HANDLE ProtocolBindingContext
+ );
+
+typedef PROTOCOL_UNBIND_ADAPTER_EX (*UNBIND_HANDLER_EX);
+
+typedef
+
+
+void
+(PROTOCOL_OPEN_ADAPTER_COMPLETE_EX)(
+ NDIS_HANDLE ProtocolBindingContext,
+ NDIS_STATUS Status
+ );
+
+typedef PROTOCOL_OPEN_ADAPTER_COMPLETE_EX (*OPEN_ADAPTER_COMPLETE_HANDLER_EX);
+
+typedef
+
+
+void
+(PROTOCOL_CLOSE_ADAPTER_COMPLETE_EX)(
+ NDIS_HANDLE ProtocolBindingContext
+ );
+
+typedef PROTOCOL_CLOSE_ADAPTER_COMPLETE_EX (*CLOSE_ADAPTER_COMPLETE_HANDLER_EX);
+
+typedef
+
+
+void
+(PROTOCOL_STATUS_EX)(
+ NDIS_HANDLE ProtocolBindingContext,
+ PNDIS_STATUS_INDICATION StatusIndication
+ );
+
+typedef PROTOCOL_STATUS_EX (*STATUS_HANDLER_EX);
+
+typedef
+
+
+NDIS_STATUS
+(PROTOCOL_NET_PNP_EVENT)(
+ NDIS_HANDLE ProtocolBindingContext,
+ PNET_PNP_EVENT_NOTIFICATION NetPnPEventNotification
+ );
+
+typedef PROTOCOL_NET_PNP_EVENT (*NET_PNP_EVENT_HANDLER);
+
+typedef
+
+
+void
+(PROTOCOL_UNINSTALL)(
+ void
+ );
+typedef PROTOCOL_UNINSTALL (*UNINSTALL_PROTOCOL_HANDLER);
+
+
+
+
+typedef struct _NDIS_PROTOCOL_CO_CHARACTERISTICS
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG Flags;
+ CO_STATUS_HANDLER_EX CoStatusHandlerEx;
+ CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler;
+ CO_RECEIVE_NET_BUFFER_LISTS_HANDLER CoReceiveNetBufferListsHandler;
+ CO_SEND_NET_BUFFER_LISTS_COMPLETE_HANDLER CoSendNetBufferListsCompleteHandler;
+} NDIS_PROTOCOL_CO_CHARACTERISTICS, *PNDIS_PROTOCOL_CO_CHARACTERISTICS;
+
+
+
+
+
+
+
+
+
+
+#line 8693 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+#line 8696 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+#line 8702 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+typedef struct _NDIS_PROTOCOL_DRIVER_CHARACTERISTICS
+{
+ NDIS_OBJECT_HEADER Header;
+ UCHAR MajorNdisVersion;
+ UCHAR MinorNdisVersion;
+ UCHAR MajorDriverVersion;
+ UCHAR MinorDriverVersion;
+ ULONG Flags;
+ NDIS_STRING Name;
+ SET_OPTIONS_HANDLER SetOptionsHandler;
+ BIND_HANDLER_EX BindAdapterHandlerEx;
+ UNBIND_HANDLER_EX UnbindAdapterHandlerEx;
+ OPEN_ADAPTER_COMPLETE_HANDLER_EX OpenAdapterCompleteHandlerEx;
+ CLOSE_ADAPTER_COMPLETE_HANDLER_EX CloseAdapterCompleteHandlerEx;
+ NET_PNP_EVENT_HANDLER NetPnPEventHandler;
+ UNINSTALL_PROTOCOL_HANDLER UninstallHandler;
+ OID_REQUEST_COMPLETE_HANDLER OidRequestCompleteHandler;
+ STATUS_HANDLER_EX StatusHandlerEx;
+ RECEIVE_NET_BUFFER_LISTS_HANDLER ReceiveNetBufferListsHandler;
+ SEND_NET_BUFFER_LISTS_COMPLETE_HANDLER SendNetBufferListsCompleteHandler;
+
+
+#line 8726 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+} NDIS_PROTOCOL_DRIVER_CHARACTERISTICS, *PNDIS_PROTOCOL_DRIVER_CHARACTERISTICS;
+
+
+
+
+
+
+
+#line 8735 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 8737 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8761 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+NDIS_STATUS
+NdisRegisterProtocolDriver(
+ NDIS_HANDLE ProtocolDriverContext,
+ PNDIS_PROTOCOL_DRIVER_CHARACTERISTICS ProtocolCharacteristics,
+ PNDIS_HANDLE NdisProtocolHandle
+ );
+
+
+
+void
+NdisSendNetBufferLists(
+ NDIS_HANDLE NdisBindingHandle,
+ PNET_BUFFER_LIST NetBufferLists,
+ NDIS_PORT_NUMBER PortNumber,
+ ULONG SendFlags
+ );
+
+
+
+void
+NdisReturnNetBufferLists(
+ NDIS_HANDLE NdisBindingHandle,
+ PNET_BUFFER_LIST NetBufferLists,
+ ULONG ReturnFlags
+ );
+
+
+
+void
+NdisCancelSendNetBufferLists(
+ NDIS_HANDLE NdisBindingHandle,
+
+ PVOID CancelId
+ );
+
+
+
+
+NDIS_STATUS
+NdisOidRequest(
+ NDIS_HANDLE NdisBindingHandle,
+ PNDIS_OID_REQUEST OidRequest
+ );
+
+
+
+void
+NdisCancelOidRequest(
+ NDIS_HANDLE NdisBindingHandle,
+
+ PVOID RequestId
+ );
+
+
+
+NDIS_STATUS
+NdisUnbindAdapter(
+ NDIS_HANDLE NdisBindingHandle
+ );
+
+
+
+
+
+
+
+typedef struct _NDIS_OPEN_PARAMETERS
+{
+ NDIS_OBJECT_HEADER Header;
+ PNDIS_STRING AdapterName;
+ PNDIS_MEDIUM MediumArray;
+ UINT MediumArraySize;
+ PUINT SelectedMediumIndex;
+ PNET_FRAME_TYPE FrameTypeArray;
+ UINT FrameTypeArraySize;
+} NDIS_OPEN_PARAMETERS, *PNDIS_OPEN_PARAMETERS;
+
+
+
+
+
+
+
+
+
+
+
+NDIS_STATUS
+NdisOpenAdapterEx(
+ NDIS_HANDLE NdisProtocolHandle,
+ NDIS_HANDLE ProtocolBindingContext,
+ PNDIS_OPEN_PARAMETERS OpenParameters,
+ NDIS_HANDLE BindContext,
+ PNDIS_HANDLE NdisBindingHandle
+ );
+
+
+
+void
+NdisCompleteBindAdapterEx(
+ NDIS_HANDLE BindAdapterContext,
+ NDIS_STATUS Status
+ );
+
+
+
+
+NDIS_STATUS
+NdisCloseAdapterEx(
+ NDIS_HANDLE NdisBindingHandle
+ );
+
+
+
+void
+NdisCompleteUnbindAdapterEx(
+ NDIS_HANDLE UnbindContext
+ );
+
+
+
+
+
+typedef struct _NDIS_PROTOCOL_PAUSE_PARAMETERS
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG Flags;
+ ULONG PauseReason;
+} NDIS_PROTOCOL_PAUSE_PARAMETERS, *PNDIS_PROTOCOL_PAUSE_PARAMETERS;
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_PROTOCOL_RESTART_PARAMETERS
+{
+ NDIS_OBJECT_HEADER Header;
+ PUCHAR FilterModuleNameBuffer;
+ ULONG FilterModuleNameBufferLength;
+ PNDIS_RESTART_ATTRIBUTES RestartAttributes;
+ NET_IFINDEX BoundIfIndex;
+ NET_LUID BoundIfNetluid;
+ ULONG Flags;
+} NDIS_PROTOCOL_RESTART_PARAMETERS, *PNDIS_PROTOCOL_RESTART_PARAMETERS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8941 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 8962 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+#line 8973 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 8975 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 9053 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+#line 9054 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+#pragma once
+#line 9064 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\xfilter.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef ULONG TR_FUNCTIONAL_ADDRESS;
+typedef ULONG TR_GROUP_ADDRESS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 269 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\xfilter.h"
+#line 9066 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+#pragma warning(push)
+#line 9071 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+#pragma warning(disable:4201)
+#pragma warning(disable:4214)
+#line 9074 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+typedef PVOID NDIS_MINIPORT_DRIVER_CONTEXT;;
+
+
+typedef PVOID NDIS_MINIPORT_DRIVER_HANDLE;;
+
+
+
+typedef PVOID NDIS_MINIPORT_ADAPTER_CONTEXT;;
+
+
+typedef PVOID NDIS_MINIPORT_ADAPTER_HANDLE;;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 9276 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+typedef
+
+
+NDIS_STATUS
+(MINIPORT_CO_CREATE_VC)(
+ NDIS_HANDLE MiniportAdapterContext,
+ NDIS_HANDLE NdisVcHandle,
+ PNDIS_HANDLE MiniportVcContext
+ );
+
+typedef MINIPORT_CO_CREATE_VC (*W_CO_CREATE_VC_HANDLER);
+
+typedef
+
+
+NDIS_STATUS
+(MINIPORT_CO_DELETE_VC)(
+ NDIS_HANDLE MiniportVcContext
+ );
+
+typedef MINIPORT_CO_DELETE_VC (*W_CO_DELETE_VC_HANDLER);
+
+typedef
+
+
+NDIS_STATUS
+(MINIPORT_CO_ACTIVATE_VC)(
+ NDIS_HANDLE MiniportVcContext,
+ PCO_CALL_PARAMETERS CallParameters
+ );
+
+typedef MINIPORT_CO_ACTIVATE_VC (*W_CO_ACTIVATE_VC_HANDLER);
+
+typedef
+
+
+NDIS_STATUS
+(MINIPORT_CO_DEACTIVATE_VC)(
+ NDIS_HANDLE MiniportVcContext
+ );
+typedef MINIPORT_CO_DEACTIVATE_VC (*W_CO_DEACTIVATE_VC_HANDLER);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 9342 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+typedef
+
+
+void
+(MINIPORT_CO_SEND_NET_BUFFER_LISTS)(
+ NDIS_HANDLE MiniportVcContext,
+ PNET_BUFFER_LIST NetBufferLists,
+ ULONG SendFlags
+ );
+
+typedef MINIPORT_CO_SEND_NET_BUFFER_LISTS (*W_CO_SEND_NET_BUFFER_LISTS_HANDLER);
+
+typedef
+
+
+NDIS_STATUS
+(MINIPORT_CO_OID_REQUEST)(
+ NDIS_HANDLE MiniportAdapterContext,
+ NDIS_HANDLE MiniportVcContext ,
+ PNDIS_OID_REQUEST NdisRequest
+ );
+
+typedef MINIPORT_CO_OID_REQUEST (*W_CO_OID_REQUEST_HANDLER);
+
+#line 9375 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+typedef enum _NDIS_DEVICE_PNP_EVENT
+{
+ NdisDevicePnPEventQueryRemoved,
+ NdisDevicePnPEventRemoved,
+ NdisDevicePnPEventSurpriseRemoved,
+ NdisDevicePnPEventQueryStopped,
+ NdisDevicePnPEventStopped,
+ NdisDevicePnPEventPowerProfileChanged,
+
+ NdisDevicePnPEventFilterListChanged,
+#line 9387 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+ NdisDevicePnPEventMaximum
+} NDIS_DEVICE_PNP_EVENT, *PNDIS_DEVICE_PNP_EVENT;
+
+
+
+
+typedef enum _NDIS_POWER_PROFILE
+{
+ NdisPowerProfileBattery,
+ NdisPowerProfileAcOnLine
+} NDIS_POWER_PROFILE, *PNDIS_POWER_PROFILE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 9473 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+typedef
+
+
+BOOLEAN
+(MINIPORT_ISR)(
+ NDIS_HANDLE MiniportInterruptContext,
+ PBOOLEAN QueueDefaultInterruptDpc,
+ PULONG TargetProcessors
+ );
+
+typedef MINIPORT_ISR (*MINIPORT_ISR_HANDLER);
+
+typedef
+
+
+void
+(MINIPORT_INTERRUPT_DPC)(
+ NDIS_HANDLE MiniportInterruptContext,
+ PVOID MiniportDpcContext,
+ PVOID ReceiveThrottleParameters,
+ PVOID NdisReserved2
+ );
+
+typedef MINIPORT_INTERRUPT_DPC (*MINIPORT_INTERRUPT_DPC_HANDLER);
+
+
+
+
+
+
+
+
+
+
+
+#line 9511 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+typedef
+
+
+void
+(MINIPORT_DISABLE_INTERRUPT)(
+ NDIS_HANDLE MiniportInterruptContext
+ );
+
+typedef MINIPORT_DISABLE_INTERRUPT (*MINIPORT_DISABLE_INTERRUPT_HANDLER);
+
+typedef
+
+
+void
+(MINIPORT_ENABLE_INTERRUPT)(
+ NDIS_HANDLE MiniportInterruptContext
+ );
+
+typedef MINIPORT_ENABLE_INTERRUPT (*MINIPORT_ENABLE_INTERRUPT_HANDLER);
+
+
+
+typedef
+
+
+BOOLEAN
+(MINIPORT_MESSAGE_INTERRUPT)(
+ NDIS_HANDLE MiniportInterruptContext,
+ ULONG MessageId,
+ PBOOLEAN QueueDefaultInterruptDpc,
+ PULONG TargetProcessors
+ );
+
+typedef MINIPORT_MESSAGE_INTERRUPT (*MINIPORT_MSI_ISR_HANDLER);
+
+typedef
+
+
+void
+(MINIPORT_MESSAGE_INTERRUPT_DPC)(
+ NDIS_HANDLE MiniportInterruptContext,
+ ULONG MessageId,
+ PVOID MiniportDpcContext,
+
+
+
+#line 9560 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+ PULONG NdisReserved1,
+ PULONG NdisReserved2
+#line 9563 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+ );
+
+typedef MINIPORT_MESSAGE_INTERRUPT_DPC (*MINIPORT_MSI_INTERRUPT_DPC_HANDLER);
+
+typedef
+
+
+void
+(MINIPORT_DISABLE_MESSAGE_INTERRUPT)(
+ NDIS_HANDLE MiniportInterruptContext,
+ ULONG MessageId
+ );
+
+typedef MINIPORT_DISABLE_MESSAGE_INTERRUPT (*MINIPORT_DISABLE_MSI_INTERRUPT_HANDLER);
+
+typedef
+
+
+void
+(MINIPORT_ENABLE_MESSAGE_INTERRUPT)(
+ NDIS_HANDLE MiniportInterruptContext,
+ ULONG MessageId
+ );
+typedef MINIPORT_ENABLE_MESSAGE_INTERRUPT (*MINIPORT_ENABLE_MSI_INTERRUPT_HANDLER);
+
+typedef
+
+
+BOOLEAN
+(MINIPORT_SYNCHRONIZE_INTERRUPT)(
+ NDIS_HANDLE SynchronizeContext
+ );
+typedef MINIPORT_SYNCHRONIZE_INTERRUPT (*MINIPORT_SYNCHRONIZE_INTERRUPT_HANDLER);
+typedef MINIPORT_SYNCHRONIZE_INTERRUPT (MINIPORT_SYNCHRONIZE_MESSAGE_INTERRUPT);
+typedef MINIPORT_SYNCHRONIZE_MESSAGE_INTERRUPT (*MINIPORT_SYNCHRONIZE_MSI_INTERRUPT_HANDLER);
+
+typedef enum _NDIS_INTERRUPT_TYPE
+{
+ NDIS_CONNECT_LINE_BASED = 1,
+ NDIS_CONNECT_MESSAGE_BASED
+} NDIS_INTERRUPT_TYPE, *PNDIS_INTERRUPT_TYPE;
+
+
+
+typedef struct _NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS
+{
+ NDIS_OBJECT_HEADER Header;
+ MINIPORT_ISR_HANDLER InterruptHandler;
+ MINIPORT_INTERRUPT_DPC_HANDLER InterruptDpcHandler;
+ MINIPORT_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler;
+ MINIPORT_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler;
+ BOOLEAN MsiSupported;
+ BOOLEAN MsiSyncWithAllMessages;
+ MINIPORT_MSI_ISR_HANDLER MessageInterruptHandler;
+ MINIPORT_MSI_INTERRUPT_DPC_HANDLER MessageInterruptDpcHandler;
+ MINIPORT_DISABLE_MSI_INTERRUPT_HANDLER DisableMessageInterruptHandler;
+ MINIPORT_ENABLE_MSI_INTERRUPT_HANDLER EnableMessageInterruptHandler;
+ NDIS_INTERRUPT_TYPE InterruptType;
+ PIO_INTERRUPT_MESSAGE_INFO MessageInfoTable;
+} NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS, *PNDIS_MINIPORT_INTERRUPT_CHARACTERISTICS;
+
+
+
+
+typedef
+
+
+NDIS_STATUS
+(MINIPORT_ADD_DEVICE)(
+ NDIS_HANDLE NdisMiniportHandle,
+ NDIS_HANDLE MiniportDriverContext
+ );
+
+typedef MINIPORT_ADD_DEVICE (*MINIPORT_ADD_DEVICE_HANDLER);
+
+typedef
+
+
+void
+(MINIPORT_REMOVE_DEVICE)(
+ NDIS_HANDLE MiniportAddDeviceContext
+ );
+
+typedef MINIPORT_REMOVE_DEVICE (*MINIPORT_REMOVE_DEVICE_HANDLER);
+
+typedef
+NDIS_STATUS
+(MINIPORT_PNP_IRP)(
+ NDIS_HANDLE MiniportAddDeviceContext,
+ PIRP Irp
+ );
+
+typedef MINIPORT_PNP_IRP (*MINIPORT_PNP_IRP_HANDLER);
+
+typedef MINIPORT_PNP_IRP (MINIPORT_START_DEVICE);
+typedef MINIPORT_PNP_IRP (* MINIPORT_START_DEVICE_HANDLER);
+typedef MINIPORT_PNP_IRP (MINIPORT_FILTER_RESOURCE_REQUIREMENTS);
+typedef MINIPORT_PNP_IRP (*MINIPORT_FILTER_RESOURCE_REQUIREMENTS_HANDLER);
+
+
+
+typedef struct _NDIS_MINIPORT_PNP_CHARACTERISTICS
+{
+ NDIS_OBJECT_HEADER Header;
+ MINIPORT_ADD_DEVICE_HANDLER MiniportAddDeviceHandler;
+ MINIPORT_REMOVE_DEVICE_HANDLER MiniportRemoveDeviceHandler;
+ MINIPORT_FILTER_RESOURCE_REQUIREMENTS_HANDLER MiniportFilterResourceRequirementsHandler;
+ MINIPORT_START_DEVICE_HANDLER MiniportStartDeviceHandler;
+ ULONG Flags;
+} NDIS_MINIPORT_PNP_CHARACTERISTICS, *PNDIS_MINIPORT_PNP_CHARACTERISTICS;
+
+
+
+
+
+
+
+NDIS_STATUS
+NdisMRegisterInterruptEx(
+ NDIS_HANDLE MiniportAdapterHandle,
+ NDIS_HANDLE MiniportInterruptContext,
+ PNDIS_MINIPORT_INTERRUPT_CHARACTERISTICS MiniportInterruptCharacteristics,
+ PNDIS_HANDLE NdisInterruptHandle
+ );
+
+
+
+void
+NdisMDeregisterInterruptEx(
+ NDIS_HANDLE NdisInterruptHandle
+ );
+
+
+BOOLEAN
+NdisMSynchronizeWithInterruptEx(
+ NDIS_HANDLE NdisInterruptHandle,
+ ULONG MessageId,
+
+
+#line 9703 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+ PVOID SynchronizeFunction,
+#line 9705 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+ PVOID SynchronizeContext
+ );
+
+
+
+
+
+ULONG
+NdisMQueueDpc(
+ NDIS_HANDLE NdisInterruptHandle,
+ ULONG MessageId,
+ ULONG TargetProcessors,
+
+ PVOID MiniportDpcContext
+ );
+
+#line 9723 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 9737 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+#line 9741 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 9843 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+typedef struct _NDIS_MINIPORT_TIMER
+{
+ KTIMER Timer;
+ KDPC Dpc;
+ PNDIS_TIMER_FUNCTION MiniportTimerFunction;
+ PVOID MiniportTimerContext;
+ PNDIS_MINIPORT_BLOCK Miniport;
+ struct _NDIS_MINIPORT_TIMER *NextTimer;
+} NDIS_MINIPORT_TIMER, *PNDIS_MINIPORT_TIMER;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 9999 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+typedef
+
+
+void
+(MINIPORT_PROCESS_SG_LIST)(
+ PDEVICE_OBJECT pDO,
+ PVOID Reserved,
+ PSCATTER_GATHER_LIST pSGL,
+ PVOID Context
+ );
+
+typedef MINIPORT_PROCESS_SG_LIST (*MINIPORT_PROCESS_SG_LIST_HANDLER);
+
+
+
+
+typedef
+
+
+void
+(MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE)(
+ NDIS_HANDLE MiniportAdapterContext,
+ PVOID VirtualAddress,
+ PNDIS_PHYSICAL_ADDRESS PhysicalAddress,
+ ULONG Length,
+ PVOID Context
+ );
+typedef MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE (*MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE_HANDLER);
+
+
+
+NDIS_STATUS
+NdisMAllocateSharedMemoryAsyncEx(
+ NDIS_HANDLE MiniportDmaHandle,
+ ULONG Length,
+ BOOLEAN Cached,
+ PVOID Context
+ );
+
+#line 10042 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+NDIS_STATUS
+NdisMAllocateSharedMemoryAsync(
+ NDIS_HANDLE MiniportAdapterHandle,
+ ULONG Length,
+ BOOLEAN Cached,
+ PVOID Context
+ );
+
+#line 10056 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+typedef struct _NDIS_DMA_DESCRIPTION
+{
+ BOOLEAN DemandMode;
+ BOOLEAN AutoInitialize;
+ BOOLEAN DmaChannelSpecified;
+ DMA_WIDTH DmaWidth;
+ DMA_SPEED DmaSpeed;
+ ULONG DmaPort;
+ ULONG DmaChannel;
+} NDIS_DMA_DESCRIPTION, *PNDIS_DMA_DESCRIPTION;
+
+
+
+
+typedef struct _NDIS_DMA_BLOCK
+{
+ PVOID MapRegisterBase;
+ KEVENT AllocationEvent;
+ PVOID SystemAdapterObject;
+ PVOID Miniport;
+ BOOLEAN InProgress;
+} NDIS_DMA_BLOCK, *PNDIS_DMA_BLOCK;
+
+
+
+void
+NdisSetupDmaTransfer(
+ PNDIS_STATUS Status,
+ NDIS_HANDLE NdisDmaHandle,
+ PNDIS_BUFFER Buffer,
+ ULONG Offset,
+ ULONG Length,
+ BOOLEAN WriteToDevice
+ );
+
+
+void
+NdisCompleteDmaTransfer(
+ PNDIS_STATUS Status,
+ NDIS_HANDLE NdisDmaHandle,
+ PNDIS_BUFFER Buffer,
+ ULONG Offset,
+ ULONG Length,
+ BOOLEAN WriteToDevice
+ );
+
+
+
+NDIS_STATUS
+NdisMRegisterDmaChannel(
+ PNDIS_HANDLE MiniportDmaHandle,
+ NDIS_HANDLE MiniportAdapterHandle,
+ UINT DmaChannel,
+ BOOLEAN Dma32BitAddresses,
+ PNDIS_DMA_DESCRIPTION DmaDescription,
+ ULONG MaximumLength
+ );
+
+
+
+
+void
+NdisMDeregisterDmaChannel(
+ NDIS_HANDLE MiniportDmaHandle
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ULONG
+NdisMReadDmaCounter(
+ NDIS_HANDLE MiniportDmaHandle
+ );
+
+
+
+
+
+
+
+void
+NdisUpdateSharedMemory(
+ NDIS_HANDLE NdisAdapterHandle,
+ ULONG Length,
+ PVOID VirtualAddress,
+ NDIS_PHYSICAL_ADDRESS PhysicalAddress
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+#line 10191 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+#line 10194 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+#line 10203 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+typedef struct _NDIS_SG_DMA_DESCRIPTION
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG Flags;
+ ULONG MaximumPhysicalMapping;
+ MINIPORT_PROCESS_SG_LIST_HANDLER ProcessSGListHandler;
+ MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE_HANDLER SharedMemAllocateCompleteHandler;
+ ULONG ScatterGatherListSize;
+
+
+
+#line 10216 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+} NDIS_SG_DMA_DESCRIPTION, *PNDIS_SG_DMA_DESCRIPTION;
+
+
+
+
+
+
+
+#line 10225 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+typedef struct _NDIS_MINIPORT_INIT_PARAMETERS
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG Flags;
+ PNDIS_RESOURCE_LIST AllocatedResources;
+ NDIS_HANDLE IMDeviceInstanceContext;
+ NDIS_HANDLE MiniportAddDeviceContext;
+ NET_IFINDEX IfIndex;
+ NET_LUID NetLuid;
+ PNDIS_PORT_AUTHENTICATION_PARAMETERS DefaultPortAuthStates;
+ PNDIS_PCI_DEVICE_CUSTOM_PROPERTIES PciDeviceCustomProperties;
+} NDIS_MINIPORT_INIT_PARAMETERS, *PNDIS_MINIPORT_INIT_PARAMETERS;
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_MINIPORT_RESTART_PARAMETERS
+{
+ NDIS_OBJECT_HEADER Header;
+ PNDIS_RESTART_ATTRIBUTES RestartAttributes;
+ ULONG Flags;
+} NDIS_MINIPORT_RESTART_PARAMETERS, *PNDIS_MINIPORT_RESTART_PARAMETERS;
+
+
+
+
+
+
+
+
+#line 10264 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+typedef struct _NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES
+{
+ NDIS_OBJECT_HEADER Header;
+ NDIS_HANDLE MiniportAdapterContext;
+ ULONG AttributeFlags;
+ UINT CheckForHangTimeInSeconds;
+ NDIS_INTERFACE_TYPE InterfaceType;
+} NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES, *PNDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES;
+
+
+
+
+
+
+
+#line 10281 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES
+{
+ NDIS_OBJECT_HEADER Header;
+ NDIS_HANDLE MiniportAddDeviceContext;
+ ULONG Flags;
+
+} NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES,
+ *PNDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES;
+
+
+
+
+
+
+
+
+#line 10331 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+typedef struct _NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG Flags;
+ NDIS_MEDIUM MediaType;
+ NDIS_PHYSICAL_MEDIUM PhysicalMediumType;
+ ULONG MtuSize;
+ ULONG64 MaxXmitLinkSpeed;
+ ULONG64 XmitLinkSpeed;
+ ULONG64 MaxRcvLinkSpeed;
+ ULONG64 RcvLinkSpeed;
+ NDIS_MEDIA_CONNECT_STATE MediaConnectState;
+ NDIS_MEDIA_DUPLEX_STATE MediaDuplexState;
+ ULONG LookaheadSize;
+ PNDIS_PNP_CAPABILITIES PowerManagementCapabilities;
+ ULONG MacOptions;
+ ULONG SupportedPacketFilters;
+ ULONG MaxMulticastListSize;
+ USHORT MacAddressLength;
+ UCHAR PermanentMacAddress[32];
+ UCHAR CurrentMacAddress[32];
+ PNDIS_RECEIVE_SCALE_CAPABILITIES RecvScaleCapabilities;
+ NET_IF_ACCESS_TYPE AccessType;
+ NET_IF_DIRECTION_TYPE DirectionType;
+ NET_IF_CONNECTION_TYPE ConnectionType;
+ NET_IFTYPE IfType;
+ BOOLEAN IfConnectorPresent;
+ ULONG SupportedStatistics;
+ ULONG SupportedPauseFunctions;
+ ULONG DataBackFillSize;
+ ULONG ContextBackFillSize;
+
+ PNDIS_OID SupportedOidList;
+ ULONG SupportedOidListLength;
+ ULONG AutoNegotiationFlags;
+
+
+#line 10370 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+} NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES, *PNDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES;
+
+
+
+
+
+
+
+#line 10379 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 10460 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+typedef struct _NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES
+{
+ NDIS_OBJECT_HEADER Header;
+ PNDIS_OFFLOAD DefaultOffloadConfiguration;
+ PNDIS_OFFLOAD HardwareOffloadCapabilities;
+ PNDIS_TCP_CONNECTION_OFFLOAD DefaultTcpConnectionOffloadConfiguration;
+ PNDIS_TCP_CONNECTION_OFFLOAD TcpConnectionOffloadHardwareCapabilities;
+} NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES, *PNDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES;
+
+
+
+
+
+
+
+
+
+
+typedef struct _NDIS_MINIPORT_ADAPTER_NATIVE_802_11_ATTRIBUTES
+{
+ NDIS_OBJECT_HEADER Header;
+
+ ULONG OpModeCapability;
+ ULONG NumOfTXBuffers;
+ ULONG NumOfRXBuffers;
+ BOOLEAN MultiDomainCapabilityImplemented;
+ ULONG NumSupportedPhys;
+
+
+
+ PDOT11_PHY_ATTRIBUTES SupportedPhyAttributes;
+
+
+ PDOT11_EXTSTA_ATTRIBUTES ExtSTAAttributes;
+
+
+
+
+
+
+
+#line 10508 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 10513 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+}NDIS_MINIPORT_ADAPTER_NATIVE_802_11_ATTRIBUTES,
+ *PNDIS_MINIPORT_ADAPTER_NATIVE_802_11_ATTRIBUTES;
+
+
+
+
+
+
+
+
+
+#line 10526 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 10560 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 10618 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+typedef union _NDIS_MINIPORT_ADAPTER_ATTRIBUTES
+{
+ NDIS_OBJECT_HEADER Header;
+ NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES AddDeviceRegistrationAttributes;
+ NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES RegistrationAttributes;
+ NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES GeneralAttributes;
+ NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES OffloadAttributes;
+ NDIS_MINIPORT_ADAPTER_NATIVE_802_11_ATTRIBUTES Native_802_11_Attributes;
+
+
+#line 10630 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+#line 10633 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+#line 10636 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+} NDIS_MINIPORT_ADAPTER_ATTRIBUTES, *PNDIS_MINIPORT_ADAPTER_ATTRIBUTES;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 10657 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+NDIS_STATUS
+NdisMSetMiniportAttributes(
+ NDIS_HANDLE NdisMiniportHandle,
+
+ PNDIS_MINIPORT_ADAPTER_ATTRIBUTES MiniportAttributes
+ );
+
+typedef
+
+
+NDIS_STATUS
+(MINIPORT_INITIALIZE)(
+ NDIS_HANDLE NdisMiniportHandle,
+ NDIS_HANDLE MiniportDriverContext,
+ PNDIS_MINIPORT_INIT_PARAMETERS MiniportInitParameters
+ );
+
+typedef MINIPORT_INITIALIZE (*MINIPORT_INITIALIZE_HANDLER);
+
+typedef enum _NDIS_HALT_ACTION
+{
+ NdisHaltDeviceDisabled,
+ NdisHaltDeviceInstanceDeInitialized,
+ NdisHaltDevicePoweredDown,
+ NdisHaltDeviceSurpriseRemoved,
+ NdisHaltDeviceFailed,
+ NdisHaltDeviceInitializationFailed,
+ NdisHaltDeviceStopped
+} NDIS_HALT_ACTION, *PNDIS_HALT_ACTION;
+
+typedef
+
+
+void
+(MINIPORT_HALT)(
+ NDIS_HANDLE MiniportAdapterContext,
+ NDIS_HALT_ACTION HaltAction
+ );
+
+typedef MINIPORT_HALT (*MINIPORT_HALT_HANDLER);
+
+
+
+
+typedef struct _NDIS_MINIPORT_PAUSE_PARAMETERS
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG Flags;
+ ULONG PauseReason;
+} NDIS_MINIPORT_PAUSE_PARAMETERS, *PNDIS_MINIPORT_PAUSE_PARAMETERS;
+
+
+
+
+typedef
+
+
+NDIS_STATUS
+(MINIPORT_PAUSE)(
+ NDIS_HANDLE MiniportAdapterContext,
+ PNDIS_MINIPORT_PAUSE_PARAMETERS PauseParameters
+ );
+
+typedef MINIPORT_PAUSE (*MINIPORT_PAUSE_HANDLER);
+
+typedef
+
+
+NDIS_STATUS
+(MINIPORT_RESTART)(
+ NDIS_HANDLE MiniportAdapterContext,
+ PNDIS_MINIPORT_RESTART_PARAMETERS RestartParameters
+ );
+
+typedef MINIPORT_RESTART (*MINIPORT_RESTART_HANDLER);
+
+typedef
+
+
+NDIS_STATUS
+(MINIPORT_OID_REQUEST) (
+ NDIS_HANDLE MiniportAdapterContext,
+ PNDIS_OID_REQUEST OidRequest
+ );
+
+typedef MINIPORT_OID_REQUEST (*MINIPORT_OID_REQUEST_HANDLER);
+
+typedef
+
+
+void
+(MINIPORT_UNLOAD) (
+ PDRIVER_OBJECT DriverObject
+ );
+typedef MINIPORT_UNLOAD (*MINIPORT_DRIVER_UNLOAD);
+
+
+
+
+typedef enum _NDIS_SHUTDOWN_ACTION {
+ NdisShutdownPowerOff,
+ NdisShutdownBugCheck
+} NDIS_SHUTDOWN_ACTION, PNDIS_SHUTDOWN_ACTION;
+
+typedef
+
+
+
+void
+(MINIPORT_SHUTDOWN) (
+ NDIS_HANDLE MiniportAdapterContext,
+ NDIS_SHUTDOWN_ACTION ShutdownAction
+ );
+
+typedef MINIPORT_SHUTDOWN (*MINIPORT_SHUTDOWN_HANDLER);
+
+
+
+
+typedef struct _NET_DEVICE_PNP_EVENT
+{
+ NDIS_OBJECT_HEADER Header;
+ NDIS_PORT_NUMBER PortNumber;
+ NDIS_DEVICE_PNP_EVENT DevicePnPEvent;
+ PVOID InformationBuffer;
+ ULONG InformationBufferLength;
+ UCHAR NdisReserved[2 * sizeof(PVOID)];
+
+} NET_DEVICE_PNP_EVENT, *PNET_DEVICE_PNP_EVENT;
+
+
+
+
+typedef
+
+
+void
+(MINIPORT_DEVICE_PNP_EVENT_NOTIFY)(
+ NDIS_HANDLE MiniportAdapterContext,
+ PNET_DEVICE_PNP_EVENT NetDevicePnPEvent
+ );
+
+typedef MINIPORT_DEVICE_PNP_EVENT_NOTIFY (*MINIPORT_DEVICE_PNP_EVENT_NOTIFY_HANDLER);
+
+typedef
+
+
+void
+(MINIPORT_CANCEL_SEND)(
+ NDIS_HANDLE MiniportAdapterContext,
+ PVOID CancelId
+ );
+
+typedef MINIPORT_CANCEL_SEND (*MINIPORT_CANCEL_SEND_HANDLER);
+
+typedef
+
+
+BOOLEAN
+(MINIPORT_CHECK_FOR_HANG)(
+ NDIS_HANDLE MiniportAdapterContext
+ );
+
+typedef MINIPORT_CHECK_FOR_HANG (*MINIPORT_CHECK_FOR_HANG_HANDLER);
+
+typedef
+
+
+NDIS_STATUS
+(MINIPORT_RESET)(
+ NDIS_HANDLE MiniportAdapterContext,
+ PBOOLEAN AddressingReset
+ );
+
+typedef MINIPORT_RESET (*MINIPORT_RESET_HANDLER);
+
+typedef
+
+
+void
+(MINIPORT_CANCEL_OID_REQUEST)(
+ NDIS_HANDLE MiniportAdapterContext,
+ PVOID RequestId
+ );
+
+typedef MINIPORT_CANCEL_OID_REQUEST (*MINIPORT_CANCEL_OID_REQUEST_HANDLER);
+
+typedef
+
+
+void
+(MINIPORT_SEND_NET_BUFFER_LISTS)(
+ NDIS_HANDLE MiniportAdapterContext,
+ PNET_BUFFER_LIST NetBufferList,
+ NDIS_PORT_NUMBER PortNumber,
+ ULONG SendFlags
+ );
+
+typedef MINIPORT_SEND_NET_BUFFER_LISTS (*MINIPORT_SEND_NET_BUFFER_LISTS_HANDLER);
+
+typedef
+
+
+void
+(MINIPORT_RETURN_NET_BUFFER_LISTS)(
+ NDIS_HANDLE MiniportAdapterContext,
+ PNET_BUFFER_LIST NetBufferLists,
+ ULONG ReturnFlags
+ );
+
+typedef MINIPORT_RETURN_NET_BUFFER_LISTS (*MINIPORT_RETURN_NET_BUFFER_LISTS_HANDLER);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 10906 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 10921 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+#line 10932 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+#line 10939 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+#line 10943 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+typedef struct _NDIS_MINIPORT_DRIVER_CHARACTERISTICS
+{
+ NDIS_OBJECT_HEADER Header;
+ UCHAR MajorNdisVersion;
+ UCHAR MinorNdisVersion;
+ UCHAR MajorDriverVersion;
+ UCHAR MinorDriverVersion;
+ ULONG Flags;
+ SET_OPTIONS_HANDLER SetOptionsHandler;
+ MINIPORT_INITIALIZE_HANDLER InitializeHandlerEx;
+ MINIPORT_HALT_HANDLER HaltHandlerEx;
+ MINIPORT_DRIVER_UNLOAD UnloadHandler;
+ MINIPORT_PAUSE_HANDLER PauseHandler;
+ MINIPORT_RESTART_HANDLER RestartHandler;
+ MINIPORT_OID_REQUEST_HANDLER OidRequestHandler;
+ MINIPORT_SEND_NET_BUFFER_LISTS_HANDLER SendNetBufferListsHandler;
+ MINIPORT_RETURN_NET_BUFFER_LISTS_HANDLER ReturnNetBufferListsHandler;
+ MINIPORT_CANCEL_SEND_HANDLER CancelSendHandler;
+ MINIPORT_CHECK_FOR_HANG_HANDLER CheckForHangHandlerEx;
+ MINIPORT_RESET_HANDLER ResetHandlerEx;
+ MINIPORT_DEVICE_PNP_EVENT_NOTIFY_HANDLER DevicePnPEventNotifyHandler;
+ MINIPORT_SHUTDOWN_HANDLER ShutdownHandlerEx;
+ MINIPORT_CANCEL_OID_REQUEST_HANDLER CancelOidRequestHandler;
+
+
+
+#line 10971 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+#line 10974 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+} NDIS_MINIPORT_DRIVER_CHARACTERISTICS, *PNDIS_MINIPORT_DRIVER_CHARACTERISTICS;
+
+
+
+
+
+
+
+#line 10983 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 10988 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+typedef struct _NDIS_MINIPORT_CO_CHARACTERISTICS
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG Flags;
+ W_CO_CREATE_VC_HANDLER CoCreateVcHandler;
+ W_CO_DELETE_VC_HANDLER CoDeleteVcHandler;
+ W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler;
+ W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler;
+ W_CO_SEND_NET_BUFFER_LISTS_HANDLER CoSendNetBufferListsHandler;
+ W_CO_OID_REQUEST_HANDLER CoOidRequestHandler;
+
+} NDIS_MINIPORT_CO_CHARACTERISTICS, *PNDIS_MINIPORT_CO_CHARACTERISTICS;
+
+
+
+
+
+
+void
+NdisMIndicateStatusEx(
+ NDIS_HANDLE MiniportAdapterHandle,
+ PNDIS_STATUS_INDICATION StatusIndication
+ );
+
+
+void
+NdisMCoOidRequestComplete(
+ NDIS_HANDLE MiniportAdapterHandle,
+ NDIS_HANDLE NdisMiniportVcHandle,
+ PNDIS_OID_REQUEST Request,
+ NDIS_STATUS Status
+ );
+
+
+
+NDIS_STATUS
+NdisMCmOidRequest(
+ NDIS_HANDLE NdisAfHandle,
+ NDIS_HANDLE NdisVcHandle,
+ NDIS_HANDLE NdisPartyHandle,
+ PNDIS_OID_REQUEST NdisOidRequest
+ );
+
+
+
+void
+NdisMCoIndicateStatusEx(
+ NDIS_HANDLE MiniportAdapterHandle,
+ NDIS_HANDLE NdisVcHandle,
+ PNDIS_STATUS_INDICATION StatusIndication
+ );
+
+#line 11048 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#pragma warning(push)
+#pragma warning(disable : 4201)
+
+
+
+
+typedef struct
+{
+ union
+ {
+ PETH_FILTER EthDB;
+ PNULL_FILTER NullDB;
+ };
+ PTR_FILTER TrDB;
+
+ PVOID YYYDB;
+
+ PVOID XXXDB;
+} FILTERDBS, *PFILTERDBS;
+
+#pragma warning(pop)
+
+
+
+
+
+
+
+
+
+
+#line 11081 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 11297 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 11299 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 11372 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+void
+NdisIMAssociateMiniport(
+ NDIS_HANDLE DriverHandle,
+ NDIS_HANDLE ProtocolHandle
+ );
+
+
+
+
+typedef UCHAR NDIS_DMA_SIZE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 11422 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+NDIS_STATUS
+NdisMRegisterIoPortRange(
+ PVOID * PortOffset,
+ NDIS_HANDLE MiniportAdapterHandle,
+ UINT InitialPort,
+ UINT NumberOfPorts
+ );
+
+
+
+void
+NdisMDeregisterIoPortRange(
+ NDIS_HANDLE MiniportAdapterHandle,
+ UINT InitialPort,
+ UINT NumberOfPorts,
+ PVOID PortOffset
+ );
+
+
+
+
+NDIS_STATUS
+NdisMMapIoSpace(
+ PVOID * VirtualAddress,
+ NDIS_HANDLE MiniportAdapterHandle,
+ NDIS_PHYSICAL_ADDRESS PhysicalAddress,
+ UINT Length
+ );
+
+
+
+void
+NdisMUnmapIoSpace(
+ NDIS_HANDLE MiniportAdapterHandle,
+ PVOID VirtualAddress,
+ UINT Length
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 11548 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+void
+NdisMSetPeriodicTimer(
+ PNDIS_MINIPORT_TIMER Timer,
+ UINT MillisecondPeriod
+ );
+
+
+
+void
+NdisMInitializeTimer(
+ PNDIS_MINIPORT_TIMER Timer,
+ NDIS_HANDLE MiniportAdapterHandle,
+ PNDIS_TIMER_FUNCTION TimerFunction,
+ PVOID FunctionContext
+ );
+
+
+
+void
+NdisMCancelTimer(
+ PNDIS_MINIPORT_TIMER Timer,
+
+ PBOOLEAN TimerCancelled
+ );
+
+
+
+void
+NdisMSleep(
+ ULONG MicrosecondsToSleep
+ );
+
+
+
+
+ULONG
+NdisMGetDmaAlignment(
+ NDIS_HANDLE MiniportAdapterHandle
+ );
+
+
+
+
+
+
+void
+NdisMAllocateSharedMemory(
+ NDIS_HANDLE MiniportAdapterHandle,
+ ULONG Length,
+ BOOLEAN Cached,
+
+ PVOID * VirtualAddress,
+
+ PNDIS_PHYSICAL_ADDRESS PhysicalAddress
+ );
+
+
+
+
+
+void
+NdisMFreeSharedMemory(
+ NDIS_HANDLE MiniportAdapterHandle,
+ ULONG Length,
+ BOOLEAN Cached,
+ PVOID VirtualAddress,
+ NDIS_PHYSICAL_ADDRESS PhysicalAddress
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 11658 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+NDIS_STATUS
+NdisIMInitializeDeviceInstanceEx(
+ NDIS_HANDLE DriverHandle,
+ PNDIS_STRING DriverInstance,
+ NDIS_HANDLE DeviceContext
+ );
+
+
+
+NDIS_STATUS
+NdisIMCancelInitializeDeviceInstance(
+ NDIS_HANDLE DriverHandle,
+ PNDIS_STRING DeviceInstance
+ );
+
+
+
+
+
+
+
+
+
+#line 11685 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+NDIS_HANDLE
+NdisIMGetBindingContext(
+ NDIS_HANDLE NdisBindingHandle
+ );
+
+
+
+NDIS_STATUS
+NdisIMDeInitializeDeviceInstance(
+ NDIS_HANDLE NdisMiniportHandle
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 11774 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+NDIS_STATUS
+NdisMRemoveMiniport(
+ NDIS_HANDLE MiniportHandle
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 12077 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+NDIS_STATUS
+NdisMCreateLog(
+ NDIS_HANDLE MiniportAdapterHandle,
+ UINT Size,
+ PNDIS_HANDLE LogHandle
+ );
+
+
+
+void
+NdisMCloseLog(
+ NDIS_HANDLE LogHandle
+ );
+
+
+
+NDIS_STATUS
+NdisMWriteLogData(
+ NDIS_HANDLE LogHandle,
+
+ PVOID LogBuffer,
+ UINT LogBufferSize
+ );
+
+
+
+void
+NdisMFlushLog(
+ NDIS_HANDLE LogHandle
+ );
+
+
+
+void
+NdisMGetDeviceProperty(
+ NDIS_HANDLE MiniportAdapterHandle,
+ PDEVICE_OBJECT* PhysicalDeviceObject,
+ PDEVICE_OBJECT* FunctionalDeviceObject,
+ PDEVICE_OBJECT* NextDeviceObject,
+
+ PCM_RESOURCE_LIST* AllocatedResources,
+
+ PCM_RESOURCE_LIST* AllocatedResourcesTranslated
+ );
+
+
+
+
+
+
+NDIS_STATUS
+NdisMQueryAdapterInstanceName(
+ PNDIS_STRING pAdapterInstanceName,
+ NDIS_HANDLE MiniportHandle
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 12209 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+void
+NdisMCoActivateVcComplete(
+ NDIS_STATUS Status,
+ NDIS_HANDLE NdisVcHandle,
+ PCO_CALL_PARAMETERS CallParameters
+ );
+
+
+
+void
+NdisMCoDeactivateVcComplete(
+ NDIS_STATUS Status,
+ NDIS_HANDLE NdisVcHandle
+ );
+
+
+NDIS_STATUS
+NdisMCmRegisterAddressFamily(
+ NDIS_HANDLE MiniportAdapterHandle,
+ PCO_ADDRESS_FAMILY AddressFamily,
+ PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics,
+ UINT SizeOfCmCharacteristics
+ );
+
+
+
+NDIS_STATUS
+NdisMCmCreateVc(
+ NDIS_HANDLE MiniportAdapterHandle,
+ NDIS_HANDLE NdisAfHandle,
+ NDIS_HANDLE MiniportVcContext,
+ PNDIS_HANDLE NdisVcHandle
+ );
+
+
+
+NDIS_STATUS
+NdisMCmDeleteVc(
+ NDIS_HANDLE NdisVcHandle
+ );
+
+
+
+
+NDIS_STATUS
+NdisMCmActivateVc(
+ NDIS_HANDLE NdisVcHandle,
+ PCO_CALL_PARAMETERS CallParameters
+ );
+
+
+
+NDIS_STATUS
+NdisMCmDeactivateVc(
+ NDIS_HANDLE NdisVcHandle
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 12284 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 12299 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NDIS_STATUS
+NdisMRegisterScatterGatherDma(
+ NDIS_HANDLE MiniportAdapterHandle,
+ PNDIS_SG_DMA_DESCRIPTION DmaDescription,
+ PNDIS_HANDLE NdisMiniportDmaHandle
+ );
+
+
+
+void
+NdisMDeregisterScatterGatherDma(
+ NDIS_HANDLE NdisMiniportDmaHandle
+ );
+
+
+
+
+
+
+
+
+
+
+NDIS_STATUS
+NdisMAllocateNetBufferSGList(
+ NDIS_HANDLE NdisMiniportDmaHandle,
+ PNET_BUFFER NetBuffer,
+
+ PVOID Context,
+ ULONG Flags,
+
+ PVOID ScatterGatherListBuffer,
+ ULONG ScatterGatherListBufferSize
+ );
+
+
+
+void
+NdisMFreeNetBufferSGList(
+ NDIS_HANDLE NdisMiniportDmaHandle,
+ PSCATTER_GATHER_LIST pSGL,
+ PNET_BUFFER NetBuffer
+ );
+
+
+
+
+
+NDIS_STATUS
+NdisMRegisterMiniportDriver(
+ PDRIVER_OBJECT DriverObject,
+ PUNICODE_STRING RegistryPath,
+ NDIS_HANDLE MiniportDriverContext,
+ PNDIS_MINIPORT_DRIVER_CHARACTERISTICS MiniportDriverCharacteristics,
+ PNDIS_HANDLE NdisMiniportDriverHandle
+ );
+
+
+
+void
+NdisMDeregisterMiniportDriver(
+ NDIS_HANDLE NdisMiniportDriverHandle
+ );
+
+
+
+
+void
+NdisMPauseComplete(
+ NDIS_HANDLE MiniportAdapterHandle
+ );
+
+
+void
+NdisMRestartComplete(
+ NDIS_HANDLE MiniportAdapterHandle,
+ NDIS_STATUS Status
+ );
+
+
+
+void
+NdisMOidRequestComplete(
+ NDIS_HANDLE MiniportAdapterHandle,
+ PNDIS_OID_REQUEST OidRequest,
+ NDIS_STATUS Status
+ );
+
+
+
+
+void
+NdisMSendNetBufferListsComplete(
+ NDIS_HANDLE MiniportAdapterHandle,
+ PNET_BUFFER_LIST NetBufferList,
+ ULONG SendCompleteFlags
+ );
+
+
+
+void
+NdisMIndicateReceiveNetBufferLists(
+ NDIS_HANDLE MiniportAdapterHandle,
+ PNET_BUFFER_LIST NetBufferList,
+ NDIS_PORT_NUMBER PortNumber,
+ ULONG NumberOfNetBufferLists,
+ ULONG ReceiveFlags
+ );
+
+
+
+
+
+
+
+
+
+NDIS_HANDLE
+NdisAllocateIoWorkItem(
+ NDIS_HANDLE NdisObjectHandle
+ );
+
+typedef
+
+
+
+void
+(NDIS_IO_WORKITEM_FUNCTION)(
+ PVOID WorkItemContext,
+ NDIS_HANDLE NdisIoWorkItemHandle
+ );
+typedef NDIS_IO_WORKITEM_FUNCTION (*NDIS_IO_WORKITEM_ROUTINE);
+
+
+
+void
+NdisQueueIoWorkItem(
+ NDIS_HANDLE NdisIoWorkItemHandle,
+ NDIS_IO_WORKITEM_ROUTINE Routine,
+ PVOID WorkItemContext
+ );
+
+
+
+void
+NdisFreeIoWorkItem(
+ NDIS_HANDLE NdisIoWorkItemHandle
+ );
+
+
+
+
+
+
+void
+NdisMCoSendNetBufferListsComplete(
+ NDIS_HANDLE NdisVcHandle,
+ PNET_BUFFER_LIST NetBufferLists,
+ ULONG SendCompleteFlags
+ );
+
+
+void
+NdisMCoIndicateReceiveNetBufferLists(
+ NDIS_HANDLE NdisVcHandle,
+ PNET_BUFFER_LIST NetBufferLists,
+ ULONG NumberOfNetBufferLists,
+ ULONG CoReceiveFlags
+ );
+
+
+
+
+NDIS_STATUS
+NdisMNetPnPEvent(
+ NDIS_HANDLE MiniportAdapterHandle,
+ PNET_PNP_EVENT_NOTIFICATION NetPnPEventNotification
+ );
+
+
+
+
+#line 12663 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+void
+NdisMResetComplete(
+ NDIS_HANDLE MiniportAdapterHandle,
+ NDIS_STATUS Status,
+ BOOLEAN AddressingReset
+ );
+
+
+
+
+ULONG
+NdisMGetBusData(
+ NDIS_HANDLE NdisMiniportHandle,
+ ULONG WhichSpace,
+ ULONG Offset,
+ PVOID Buffer,
+ ULONG Length
+ );
+
+
+
+ULONG
+NdisMSetBusData(
+ NDIS_HANDLE NdisMiniportHandle,
+ ULONG WhichSpace,
+ ULONG Offset,
+ PVOID Buffer,
+ ULONG Length
+ );
+
+
+
+
+
+
+
+
+NDIS_STATUS
+NdisMAllocatePort(
+ NDIS_HANDLE NdisMiniportHandle,
+ PNDIS_PORT_CHARACTERISTICS PortCharacteristics
+ );
+
+
+
+NDIS_STATUS
+NdisMFreePort(
+ NDIS_HANDLE NdisMiniportHandle,
+ NDIS_PORT_NUMBER PortNumber
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 13314 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 13316 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+#pragma warning(pop)
+
+
+
+
+#line 13325 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+#line 13326 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#pragma once
+
+typedef struct _CO_CALL_PARAMETERS CO_CALL_PARAMETERS, *PCO_CALL_PARAMETERS;
+typedef struct _CO_MEDIA_PARAMETERS CO_MEDIA_PARAMETERS, *PCO_MEDIA_PARAMETERS;
+
+
+
+
+typedef
+
+
+void
+(PROTOCOL_CL_OPEN_AF_COMPLETE)(
+ NDIS_STATUS Status,
+ NDIS_HANDLE ProtocolAfContext,
+ NDIS_HANDLE NdisAfHandle
+ );
+
+typedef PROTOCOL_CL_OPEN_AF_COMPLETE (*CL_OPEN_AF_COMPLETE_HANDLER);
+
+typedef
+
+
+void
+(PROTOCOL_CL_CLOSE_AF_COMPLETE)(
+ NDIS_STATUS Status,
+ NDIS_HANDLE ProtocolAfContext
+ );
+
+typedef PROTOCOL_CL_CLOSE_AF_COMPLETE (*CL_CLOSE_AF_COMPLETE_HANDLER);
+
+typedef
+
+
+void
+(PROTOCOL_CL_REGISTER_SAP_COMPLETE)(
+ NDIS_STATUS Status,
+ NDIS_HANDLE ProtocolSapContext,
+ PCO_SAP Sap,
+ NDIS_HANDLE NdisSapHandle
+ );
+
+typedef PROTOCOL_CL_REGISTER_SAP_COMPLETE (*CL_REG_SAP_COMPLETE_HANDLER);
+
+typedef
+
+
+void
+(PROTOCOL_CL_DEREGISTER_SAP_COMPLETE)(
+ NDIS_STATUS Status,
+ NDIS_HANDLE ProtocolSapContext
+ );
+
+typedef PROTOCOL_CL_DEREGISTER_SAP_COMPLETE (*CL_DEREG_SAP_COMPLETE_HANDLER);
+
+typedef
+
+
+void
+(PROTOCOL_CL_MAKE_CALL_COMPLETE)(
+ NDIS_STATUS Status,
+ NDIS_HANDLE ProtocolVcContext,
+ NDIS_HANDLE NdisPartyHandle,
+ PCO_CALL_PARAMETERS CallParameters
+ );
+
+typedef PROTOCOL_CL_MAKE_CALL_COMPLETE (*CL_MAKE_CALL_COMPLETE_HANDLER);
+
+typedef
+
+
+void
+(PROTOCOL_CL_CLOSE_CALL_COMPLETE)(
+ NDIS_STATUS Status,
+ NDIS_HANDLE ProtocolVcContext,
+ NDIS_HANDLE ProtocolPartyContext
+ );
+
+typedef PROTOCOL_CL_CLOSE_CALL_COMPLETE (*CL_CLOSE_CALL_COMPLETE_HANDLER);
+
+typedef
+
+
+void
+(PROTOCOL_CL_ADD_PARTY_COMPLETE)(
+ NDIS_STATUS Status,
+ NDIS_HANDLE ProtocolPartyContext,
+ NDIS_HANDLE NdisPartyHandle,
+ PCO_CALL_PARAMETERS CallParameters
+ );
+
+typedef PROTOCOL_CL_ADD_PARTY_COMPLETE (*CL_ADD_PARTY_COMPLETE_HANDLER);
+
+typedef
+
+
+void
+(PROTOCOL_CL_DROP_PARTY_COMPLETE)(
+ NDIS_STATUS Status,
+ NDIS_HANDLE ProtocolPartyContext
+ );
+
+typedef PROTOCOL_CL_DROP_PARTY_COMPLETE (*CL_DROP_PARTY_COMPLETE_HANDLER);
+
+typedef
+
+
+NDIS_STATUS
+(PROTOCOL_CL_INCOMING_CALL)(
+ NDIS_HANDLE ProtocolSapContext,
+ NDIS_HANDLE ProtocolVcContext,
+ PCO_CALL_PARAMETERS CallParameters
+ );
+
+typedef PROTOCOL_CL_INCOMING_CALL (*CL_INCOMING_CALL_HANDLER);
+
+typedef
+
+
+void
+(PROTOCOL_CL_CALL_CONNECTED)(
+ NDIS_HANDLE ProtocolVcContext
+ );
+
+typedef PROTOCOL_CL_CALL_CONNECTED (*CL_CALL_CONNECTED_HANDLER);
+
+typedef
+
+
+void
+(PROTOCOL_CL_INCOMING_CLOSE_CALL)(
+ NDIS_STATUS CloseStatus,
+ NDIS_HANDLE ProtocolVcContext,
+ PVOID CloseData,
+ UINT Size
+ );
+
+typedef PROTOCOL_CL_INCOMING_CLOSE_CALL (*CL_INCOMING_CLOSE_CALL_HANDLER);
+
+typedef
+
+
+void
+(PROTOCOL_CL_INCOMING_DROP_PARTY)(
+ NDIS_STATUS DropStatus,
+ NDIS_HANDLE ProtocolPartyContext,
+ PVOID CloseData,
+ UINT Size
+ );
+
+typedef PROTOCOL_CL_INCOMING_DROP_PARTY (*CL_INCOMING_DROP_PARTY_HANDLER);
+
+typedef
+
+
+void
+(PROTOCOL_CL_MODIFY_CALL_QOS_COMPLETE)(
+ NDIS_STATUS Status,
+ NDIS_HANDLE ProtocolVcContext,
+ PCO_CALL_PARAMETERS CallParameters
+ );
+
+typedef PROTOCOL_CL_MODIFY_CALL_QOS_COMPLETE (*CL_MODIFY_CALL_QOS_COMPLETE_HANDLER);
+
+typedef
+
+
+void
+(PROTOCOL_CL_INCOMING_CALL_QOS_CHANGE)(
+ NDIS_HANDLE ProtocolVcContext,
+ PCO_CALL_PARAMETERS CallParameters
+ );
+typedef PROTOCOL_CL_INCOMING_CALL_QOS_CHANGE (*CL_INCOMING_CALL_QOS_CHANGE_HANDLER);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 13534 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+typedef
+
+
+NDIS_STATUS
+(PROTOCOL_CM_OPEN_AF)(
+ NDIS_HANDLE CallMgrBindingContext,
+ PCO_ADDRESS_FAMILY AddressFamily,
+ NDIS_HANDLE NdisAfHandle,
+ PNDIS_HANDLE CallMgrAfContext
+ );
+
+typedef PROTOCOL_CM_OPEN_AF (*CM_OPEN_AF_HANDLER);
+
+typedef
+
+
+NDIS_STATUS
+(PROTOCOL_CM_CLOSE_AF)(
+ NDIS_HANDLE CallMgrAfContext
+ );
+
+typedef PROTOCOL_CM_CLOSE_AF (*CM_CLOSE_AF_HANDLER);
+
+typedef
+
+
+NDIS_STATUS
+(PROTOCOL_CM_REG_SAP)(
+ NDIS_HANDLE CallMgrAfContext,
+ PCO_SAP Sap,
+ NDIS_HANDLE NdisSapHandle,
+ PNDIS_HANDLE CallMgrSapContext
+ );
+
+typedef PROTOCOL_CM_REG_SAP (*CM_REG_SAP_HANDLER);
+
+typedef
+
+
+NDIS_STATUS
+(PROTOCOL_CM_DEREGISTER_SAP)(
+ NDIS_HANDLE CallMgrSapContext
+ );
+
+typedef PROTOCOL_CM_DEREGISTER_SAP (*CM_DEREG_SAP_HANDLER);
+
+typedef
+
+
+NDIS_STATUS
+(PROTOCOL_CM_MAKE_CALL)(
+ NDIS_HANDLE CallMgrVcContext,
+ PCO_CALL_PARAMETERS CallParameters,
+ NDIS_HANDLE NdisPartyHandle,
+ PNDIS_HANDLE CallMgrPartyContext
+ );
+
+typedef PROTOCOL_CM_MAKE_CALL (*CM_MAKE_CALL_HANDLER);
+
+typedef
+
+
+NDIS_STATUS
+(PROTOCOL_CM_CLOSE_CALL)(
+ NDIS_HANDLE CallMgrVcContext,
+ NDIS_HANDLE CallMgrPartyContext,
+ PVOID CloseData,
+ UINT Size
+ );
+
+typedef PROTOCOL_CM_CLOSE_CALL (*CM_CLOSE_CALL_HANDLER);
+
+typedef
+
+
+NDIS_STATUS
+(PROTOCOL_CM_MODIFY_QOS_CALL)(
+ NDIS_HANDLE CallMgrVcContext,
+ PCO_CALL_PARAMETERS CallParameters
+ );
+
+typedef PROTOCOL_CM_MODIFY_QOS_CALL (*CM_MODIFY_CALL_QOS_HANDLER);
+
+typedef
+
+
+void
+(PROTOCOL_CM_INCOMING_CALL_COMPLETE)(
+ NDIS_STATUS Status,
+ NDIS_HANDLE CallMgrVcContext,
+ PCO_CALL_PARAMETERS CallParameters
+ );
+
+typedef PROTOCOL_CM_INCOMING_CALL_COMPLETE (*CM_INCOMING_CALL_COMPLETE_HANDLER);
+
+typedef
+
+
+void
+(PROTOCOL_CM_ACTIVATE_VC_COMPLETE)(
+ NDIS_STATUS Status,
+ NDIS_HANDLE CallMgrVcContext,
+ PCO_CALL_PARAMETERS CallParameters
+ );
+
+typedef PROTOCOL_CM_ACTIVATE_VC_COMPLETE (*CM_ACTIVATE_VC_COMPLETE_HANDLER);
+
+typedef
+
+
+void
+(PROTOCOL_CM_DEACTIVATE_VC_COMPLETE)(
+ NDIS_STATUS Status,
+ NDIS_HANDLE CallMgrVcContext
+ );
+
+typedef PROTOCOL_CM_DEACTIVATE_VC_COMPLETE (*CM_DEACTIVATE_VC_COMPLETE_HANDLER);
+
+typedef
+
+
+NDIS_STATUS
+(PROTOCOL_CM_ADD_PARTY)(
+ NDIS_HANDLE CallMgrVcContext,
+ PCO_CALL_PARAMETERS CallParameters,
+ NDIS_HANDLE NdisPartyHandle,
+ PNDIS_HANDLE CallMgrPartyContext
+ );
+
+typedef PROTOCOL_CM_ADD_PARTY (*CM_ADD_PARTY_HANDLER);
+
+typedef
+
+
+NDIS_STATUS
+(PROTOCOL_CM_DROP_PARTY)(
+ NDIS_HANDLE CallMgrPartyContext,
+ PVOID CloseData,
+ UINT Size
+ );
+
+typedef PROTOCOL_CM_DROP_PARTY (*CM_DROP_PARTY_HANDLER);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 13710 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct _CO_ADDRESS
+{
+ ULONG AddressSize;
+ UCHAR Address[1];
+} CO_ADDRESS, *PCO_ADDRESS;
+
+
+
+
+typedef struct _CO_ADDRESS_LIST
+{
+ ULONG NumberOfAddressesAvailable;
+ ULONG NumberOfAddresses;
+ CO_ADDRESS AddressList;
+} CO_ADDRESS_LIST, *PCO_ADDRESS_LIST;
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\qos.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+#pragma region Desktop Family
+
+
+
+
+
+
+
+typedef ULONG SERVICETYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _flowspec
+{
+ ULONG TokenRate;
+ ULONG TokenBucketSize;
+ ULONG PeakBandwidth;
+ ULONG Latency;
+ ULONG DelayVariation;
+ SERVICETYPE ServiceType;
+ ULONG MaxSduSize;
+ ULONG MinimumPolicedSize;
+
+} FLOWSPEC, *PFLOWSPEC, * LPFLOWSPEC;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct {
+
+ ULONG ObjectType;
+ ULONG ObjectLength;
+
+
+} QOS_OBJECT_HDR, *LPQOS_OBJECT_HDR;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _QOS_SD_MODE {
+
+ QOS_OBJECT_HDR ObjectHdr;
+ ULONG ShapeDiscardMode;
+
+} QOS_SD_MODE, *LPQOS_SD_MODE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _QOS_SHAPING_RATE {
+
+ QOS_OBJECT_HDR ObjectHdr;
+ ULONG ShapingRate;
+
+} QOS_SHAPING_RATE, *LPQOS_SHAPING_RATE;
+
+
+
+#line 216 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\qos.h"
+#pragma endregion
+
+#line 219 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\qos.h"
+#pragma external_header(pop)
+#line 13740 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+typedef struct _CO_SPECIFIC_PARAMETERS
+{
+ ULONG ParamType;
+ ULONG Length;
+ UCHAR Parameters[1];
+} CO_SPECIFIC_PARAMETERS, *PCO_SPECIFIC_PARAMETERS;
+
+typedef struct _CO_CALL_MANAGER_PARAMETERS
+{
+ FLOWSPEC Transmit;
+ FLOWSPEC Receive;
+ CO_SPECIFIC_PARAMETERS CallMgrSpecific;
+} CO_CALL_MANAGER_PARAMETERS, *PCO_CALL_MANAGER_PARAMETERS;
+
+
+
+
+
+
+typedef struct _CO_MEDIA_PARAMETERS
+{
+ ULONG Flags;
+ ULONG ReceivePriority;
+ ULONG ReceiveSizeHint;
+ CO_SPECIFIC_PARAMETERS __declspec(align(8)) MediaSpecific;
+} CO_MEDIA_PARAMETERS, *PCO_MEDIA_PARAMETERS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _CO_CALL_PARAMETERS
+{
+ ULONG Flags;
+ PCO_CALL_MANAGER_PARAMETERS CallMgrParameters;
+ PCO_MEDIA_PARAMETERS MediaParameters;
+} CO_CALL_PARAMETERS, *PCO_CALL_PARAMETERS;
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _CO_PVC
+{
+ NDIS_HANDLE NdisAfHandle;
+ CO_SPECIFIC_PARAMETERS PvcParameters;
+} CO_PVC,*PCO_PVC;
+
+
+
+
+
+
+
+
+
+
+NDIS_STATUS
+NdisCoAssignInstanceName(
+ NDIS_HANDLE NdisVcHandle,
+ PNDIS_STRING BaseInstanceName,
+ PNDIS_STRING VcInstanceName
+ );
+
+
+
+
+
+
+
+
+
+
+
+#line 13842 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+NDIS_STATUS
+NdisCoCreateVc(
+ NDIS_HANDLE NdisBindingHandle,
+ NDIS_HANDLE NdisAfHandle,
+ NDIS_HANDLE ProtocolVcContext,
+ PNDIS_HANDLE NdisVcHandle
+ );
+
+
+
+
+NDIS_STATUS
+NdisCoDeleteVc(
+ NDIS_HANDLE NdisVcHandle
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 13888 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+typedef struct _VAR_STRING
+{
+ ULONG ulTotalSize;
+ ULONG ulNeededSize;
+ ULONG ulUsedSize;
+
+ ULONG ulStringFormat;
+ ULONG ulStringSize;
+ ULONG ulStringOffset;
+
+} VAR_STRING, *PVAR_STRING;
+
+#line 13905 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+#line 13916 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+NDIS_STATUS
+NdisCoGetTapiCallId(
+ NDIS_HANDLE NdisVcHandle,
+ PVAR_STRING TapiCallId
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 13945 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+NDIS_STATUS
+NdisClCloseAddressFamily(
+ NDIS_HANDLE NdisAfHandle
+ );
+
+
+
+
+NDIS_STATUS
+NdisClRegisterSap(
+ NDIS_HANDLE NdisAfHandle,
+ NDIS_HANDLE ProtocolSapContext,
+ PCO_SAP Sap,
+ PNDIS_HANDLE NdisSapHandle
+ );
+
+
+
+
+NDIS_STATUS
+NdisClDeregisterSap(
+ NDIS_HANDLE NdisSapHandle
+ );
+
+
+
+
+NDIS_STATUS
+NdisClMakeCall(
+ NDIS_HANDLE NdisVcHandle,
+ PCO_CALL_PARAMETERS CallParameters,
+ NDIS_HANDLE ProtocolPartyContext,
+ PNDIS_HANDLE NdisPartyHandle
+ );
+
+
+
+
+NDIS_STATUS
+NdisClCloseCall(
+ NDIS_HANDLE NdisVcHandle,
+ NDIS_HANDLE NdisPartyHandle,
+ PVOID Buffer,
+ UINT Size
+ );
+
+
+
+
+NDIS_STATUS
+NdisClModifyCallQoS(
+ NDIS_HANDLE NdisVcHandle,
+ PCO_CALL_PARAMETERS CallParameters
+ );
+
+
+
+
+void
+NdisClIncomingCallComplete(
+ NDIS_STATUS Status,
+ NDIS_HANDLE NdisVcHandle,
+ PCO_CALL_PARAMETERS CallParameters
+ );
+
+
+
+
+NDIS_STATUS
+NdisClAddParty(
+ NDIS_HANDLE NdisVcHandle,
+ NDIS_HANDLE ProtocolPartyContext,
+ PCO_CALL_PARAMETERS CallParameters,
+ PNDIS_HANDLE NdisPartyHandle
+ );
+
+
+
+
+NDIS_STATUS
+NdisClDropParty(
+ NDIS_HANDLE NdisPartyHandle,
+ PVOID Buffer,
+ UINT Size
+ );
+
+
+
+
+
+NDIS_STATUS
+NdisClGetProtocolVcContextFromTapiCallId(
+ UNICODE_STRING TapiCallId,
+ PNDIS_HANDLE ProtocolVcContext
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 14062 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+void
+NdisCmOpenAddressFamilyComplete(
+ NDIS_STATUS Status,
+ NDIS_HANDLE NdisAfHandle,
+ NDIS_HANDLE CallMgrAfContext
+ );
+
+
+
+
+void
+NdisCmCloseAddressFamilyComplete(
+ NDIS_STATUS Status,
+ NDIS_HANDLE NdisAfHandle
+ );
+
+
+
+
+void
+NdisCmRegisterSapComplete(
+ NDIS_STATUS Status,
+ NDIS_HANDLE NdisSapHandle,
+ NDIS_HANDLE CallMgrSapContext
+ );
+
+
+
+
+void
+NdisCmDeregisterSapComplete(
+ NDIS_STATUS Status,
+ NDIS_HANDLE NdisSapHandle
+ );
+
+
+
+
+NDIS_STATUS
+NdisCmActivateVc(
+ NDIS_HANDLE NdisVcHandle,
+ PCO_CALL_PARAMETERS CallParameters
+ );
+
+
+
+
+NDIS_STATUS
+NdisCmDeactivateVc(
+ NDIS_HANDLE NdisVcHandle
+ );
+
+
+
+void
+NdisCmMakeCallComplete(
+ NDIS_STATUS Status,
+ NDIS_HANDLE NdisVcHandle,
+ NDIS_HANDLE NdisPartyHandle,
+ NDIS_HANDLE CallMgrPartyContext,
+ PCO_CALL_PARAMETERS CallParameters
+ );
+
+
+
+void
+NdisCmCloseCallComplete(
+ NDIS_STATUS Status,
+ NDIS_HANDLE NdisVcHandle,
+ NDIS_HANDLE NdisPartyHandle
+ );
+
+
+
+
+void
+NdisCmAddPartyComplete(
+ NDIS_STATUS Status,
+ NDIS_HANDLE NdisPartyHandle,
+ NDIS_HANDLE CallMgrPartyContext,
+ PCO_CALL_PARAMETERS CallParameters
+ );
+
+
+
+
+void
+NdisCmDropPartyComplete(
+ NDIS_STATUS Status,
+ NDIS_HANDLE NdisPartyHandle
+ );
+
+
+
+
+NDIS_STATUS
+NdisCmDispatchIncomingCall(
+ NDIS_HANDLE NdisSapHandle,
+ NDIS_HANDLE NdisVcHandle,
+ PCO_CALL_PARAMETERS CallParameters
+ );
+
+
+
+
+void
+NdisCmDispatchCallConnected(
+ NDIS_HANDLE NdisVcHandle
+ );
+
+
+
+
+void
+NdisCmModifyCallQoSComplete(
+ NDIS_STATUS Status,
+ NDIS_HANDLE NdisVcHandle,
+ PCO_CALL_PARAMETERS CallParameters
+ );
+
+
+
+
+void
+NdisCmDispatchIncomingCallQoSChange(
+ NDIS_HANDLE NdisVcHandle,
+ PCO_CALL_PARAMETERS CallParameters
+ );
+
+
+
+
+void
+NdisCmDispatchIncomingCloseCall(
+ NDIS_STATUS CloseStatus,
+ NDIS_HANDLE NdisVcHandle,
+ PVOID Buffer,
+ UINT Size
+ );
+
+
+
+
+void
+NdisCmDispatchIncomingDropParty(
+ NDIS_STATUS DropStatus,
+ NDIS_HANDLE NdisPartyHandle,
+ PVOID Buffer,
+ UINT Size
+ );
+
+
+
+
+
+
+
+
+typedef struct _NDIS_CO_CLIENT_OPTIONAL_HANDLERS
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG Reserved;
+
+ CO_CREATE_VC_HANDLER ClCreateVcHandler;
+ CO_DELETE_VC_HANDLER ClDeleteVcHandler;
+ CO_OID_REQUEST_HANDLER ClOidRequestHandler;
+ CO_OID_REQUEST_COMPLETE_HANDLER ClOidRequestCompleteHandler;
+ CL_OPEN_AF_COMPLETE_HANDLER_EX ClOpenAfCompleteHandlerEx;
+ CL_CLOSE_AF_COMPLETE_HANDLER ClCloseAfCompleteHandler;
+ CL_REG_SAP_COMPLETE_HANDLER ClRegisterSapCompleteHandler;
+ CL_DEREG_SAP_COMPLETE_HANDLER ClDeregisterSapCompleteHandler;
+ CL_MAKE_CALL_COMPLETE_HANDLER ClMakeCallCompleteHandler;
+ CL_MODIFY_CALL_QOS_COMPLETE_HANDLER ClModifyCallQoSCompleteHandler;
+ CL_CLOSE_CALL_COMPLETE_HANDLER ClCloseCallCompleteHandler;
+ CL_ADD_PARTY_COMPLETE_HANDLER ClAddPartyCompleteHandler;
+ CL_DROP_PARTY_COMPLETE_HANDLER ClDropPartyCompleteHandler;
+ CL_INCOMING_CALL_HANDLER ClIncomingCallHandler;
+ CL_INCOMING_CALL_QOS_CHANGE_HANDLER ClIncomingCallQoSChangeHandler;
+ CL_INCOMING_CLOSE_CALL_HANDLER ClIncomingCloseCallHandler;
+ CL_INCOMING_DROP_PARTY_HANDLER ClIncomingDropPartyHandler;
+ CL_CALL_CONNECTED_HANDLER ClCallConnectedHandler;
+ CL_NOTIFY_CLOSE_AF_HANDLER ClNotifyCloseAfHandler;
+}NDIS_CO_CLIENT_OPTIONAL_HANDLERS, *PNDIS_CO_CLIENT_OPTIONAL_HANDLERS;
+
+
+
+
+
+
+typedef struct _NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG Reserved;
+ CO_CREATE_VC_HANDLER CmCreateVcHandler;
+ CO_DELETE_VC_HANDLER CmDeleteVcHandler;
+ CM_OPEN_AF_HANDLER CmOpenAfHandler;
+ CM_CLOSE_AF_HANDLER CmCloseAfHandler;
+ CM_REG_SAP_HANDLER CmRegisterSapHandler;
+ CM_DEREG_SAP_HANDLER CmDeregisterSapHandler;
+ CM_MAKE_CALL_HANDLER CmMakeCallHandler;
+ CM_CLOSE_CALL_HANDLER CmCloseCallHandler;
+ CM_INCOMING_CALL_COMPLETE_HANDLER CmIncomingCallCompleteHandler;
+ CM_ADD_PARTY_HANDLER CmAddPartyHandler;
+ CM_DROP_PARTY_HANDLER CmDropPartyHandler;
+ CM_ACTIVATE_VC_COMPLETE_HANDLER CmActivateVcCompleteHandler;
+ CM_DEACTIVATE_VC_COMPLETE_HANDLER CmDeactivateVcCompleteHandler;
+ CM_MODIFY_CALL_QOS_HANDLER CmModifyCallQoSHandler;
+ CO_OID_REQUEST_HANDLER CmOidRequestHandler;
+ CO_OID_REQUEST_COMPLETE_HANDLER CmOidRequestCompleteHandler;
+ CM_NOTIFY_CLOSE_AF_COMPLETE_HANDLER CmNotifyCloseAfCompleteHandler;
+
+} NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS, *PNDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS;
+
+
+
+
+
+
+void
+NdisCoSendNetBufferLists(
+ NDIS_HANDLE NdisVcHandle,
+ PNET_BUFFER_LIST NetBufferLists,
+ ULONG SendFlags
+ );
+
+
+
+
+NDIS_STATUS
+NdisCoOidRequest(
+ NDIS_HANDLE NdisBindingHandle,
+ NDIS_HANDLE NdisAfHandle,
+ NDIS_HANDLE NdisVcHandle,
+ NDIS_HANDLE NdisPartyHandle,
+ PNDIS_OID_REQUEST OidRequest
+ );
+
+
+
+void
+NdisCoOidRequestComplete(
+ NDIS_HANDLE NdisAfHandle,
+ NDIS_HANDLE NdisVcHandle,
+ NDIS_HANDLE NdisPartyHandle,
+ PNDIS_OID_REQUEST OidRequest,
+ NDIS_STATUS Status
+ );
+
+
+
+
+NDIS_STATUS
+NdisClOpenAddressFamilyEx (
+ NDIS_HANDLE NdisBindingHandle,
+ PCO_ADDRESS_FAMILY AddressFamily,
+ NDIS_HANDLE ClientAfContext,
+ PNDIS_HANDLE NdisAfHandle
+ );
+
+
+
+
+NDIS_STATUS
+NdisCmRegisterAddressFamilyEx(
+ NDIS_HANDLE NdisBindingHandle,
+ PCO_ADDRESS_FAMILY AddressFamily
+ );
+
+
+
+
+NDIS_STATUS
+NdisMCmRegisterAddressFamilyEx(
+ NDIS_HANDLE MiniportAdapterHandle,
+ PCO_ADDRESS_FAMILY AddressFamily
+ );
+
+
+
+
+NDIS_STATUS
+NdisCmNotifyCloseAddressFamily (
+ NDIS_HANDLE NdisAfHandle
+ );
+
+
+
+void
+NdisClNotifyCloseAddressFamilyComplete (
+ NDIS_HANDLE NdisAfHandle,
+ NDIS_STATUS Status
+ );
+
+
+#line 14360 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 14390 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+#line 14394 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+#line 14398 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+typedef struct _NDIS_FILTER_ATTACH_PARAMETERS
+{
+ NDIS_OBJECT_HEADER Header;
+ NET_IFINDEX IfIndex;
+ NET_LUID NetLuid;
+ PNDIS_STRING FilterModuleGuidName;
+ NET_IFINDEX BaseMiniportIfIndex;
+ PNDIS_STRING BaseMiniportInstanceName;
+ PNDIS_STRING BaseMiniportName;
+ NDIS_MEDIA_CONNECT_STATE MediaConnectState;
+ NET_IF_MEDIA_DUPLEX_STATE MediaDuplexState;
+ ULONG64 XmitLinkSpeed;
+ ULONG64 RcvLinkSpeed;
+ NDIS_MEDIUM MiniportMediaType;
+ NDIS_PHYSICAL_MEDIUM MiniportPhysicalMediaType;
+ NDIS_HANDLE MiniportMediaSpecificAttributes;
+ PNDIS_OFFLOAD DefaultOffloadConfiguration;
+ USHORT MacAddressLength;
+ UCHAR CurrentMacAddress[32];
+ NET_LUID BaseMiniportNetLuid;
+ NET_IFINDEX LowerIfIndex;
+ NET_LUID LowerIfNetLuid;
+ ULONG Flags;
+
+
+#line 14425 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+#line 14431 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+#line 14437 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+} NDIS_FILTER_ATTACH_PARAMETERS, *PNDIS_FILTER_ATTACH_PARAMETERS;
+
+
+
+
+
+
+
+#line 14446 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 14451 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 14456 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+typedef
+
+
+NDIS_STATUS
+(FILTER_ATTACH)(
+ NDIS_HANDLE NdisFilterHandle,
+ NDIS_HANDLE FilterDriverContext,
+ PNDIS_FILTER_ATTACH_PARAMETERS AttachParameters
+ );
+
+typedef FILTER_ATTACH (*FILTER_ATTACH_HANDLER);
+
+typedef
+
+
+void
+(FILTER_DETACH)(
+ NDIS_HANDLE FilterModuleContext
+ );
+
+typedef FILTER_DETACH (*FILTER_DETACH_HANDLER);
+
+typedef
+
+
+NDIS_STATUS
+(FILTER_SET_MODULE_OPTIONS)(
+ NDIS_HANDLE FilterModuleContext
+ );
+
+typedef FILTER_SET_MODULE_OPTIONS (*FILTER_SET_FILTER_MODULE_OPTIONS_HANDLER);
+
+
+
+
+
+
+
+typedef struct _NDIS_FILTER_RESTART_PARAMETERS
+{
+ NDIS_OBJECT_HEADER Header;
+ NDIS_MEDIUM MiniportMediaType;
+ NDIS_PHYSICAL_MEDIUM MiniportPhysicalMediaType;
+ PNDIS_RESTART_ATTRIBUTES RestartAttributes;
+ NET_IFINDEX LowerIfIndex;
+ NET_LUID LowerIfNetLuid;
+ ULONG Flags;
+} NDIS_FILTER_RESTART_PARAMETERS, *PNDIS_FILTER_RESTART_PARAMETERS;
+
+
+
+
+typedef
+
+
+NDIS_STATUS
+(FILTER_RESTART)(
+ NDIS_HANDLE FilterModuleContext,
+ PNDIS_FILTER_RESTART_PARAMETERS RestartParameters
+ );
+typedef FILTER_RESTART (*FILTER_RESTART_HANDLER);
+
+
+
+typedef struct _NDIS_FILTER_PAUSE_PARAMETERS
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG Flags;
+ ULONG PauseReason;
+} NDIS_FILTER_PAUSE_PARAMETERS, *PNDIS_FILTER_PAUSE_PARAMETERS;
+
+
+
+
+typedef
+
+
+NDIS_STATUS
+(FILTER_PAUSE)(
+ NDIS_HANDLE FilterModuleContext,
+ PNDIS_FILTER_PAUSE_PARAMETERS PauseParameters
+ );
+
+typedef FILTER_PAUSE (*FILTER_PAUSE_HANDLER);
+
+
+
+
+typedef
+
+
+NDIS_STATUS
+(FILTER_OID_REQUEST)(
+ NDIS_HANDLE FilterModuleContext,
+ PNDIS_OID_REQUEST OidRequest
+ );
+
+typedef FILTER_OID_REQUEST (*FILTER_OID_REQUEST_HANDLER);
+
+typedef
+
+
+void
+(FILTER_CANCEL_OID_REQUEST)(
+ NDIS_HANDLE FilterModuleContext,
+ PVOID RequestId
+ );
+
+typedef FILTER_CANCEL_OID_REQUEST (*FILTER_CANCEL_OID_REQUEST_HANDLER);
+
+typedef
+
+
+void
+(FILTER_SEND_NET_BUFFER_LISTS)(
+ NDIS_HANDLE FilterModuleContext,
+ PNET_BUFFER_LIST NetBufferList,
+ NDIS_PORT_NUMBER PortNumber,
+ ULONG SendFlags
+ );
+
+typedef FILTER_SEND_NET_BUFFER_LISTS (*FILTER_SEND_NET_BUFFER_LISTS_HANDLER);
+
+typedef
+
+
+void
+(FILTER_CANCEL_SEND_NET_BUFFER_LISTS)(
+ NDIS_HANDLE FilterModuleContext,
+ PVOID CancelId
+ );
+
+typedef FILTER_CANCEL_SEND_NET_BUFFER_LISTS (*FILTER_CANCEL_SEND_HANDLER);
+
+typedef
+
+
+void
+(FILTER_RETURN_NET_BUFFER_LISTS)(
+ NDIS_HANDLE FilterModuleContext,
+ PNET_BUFFER_LIST NetBufferLists,
+ ULONG ReturnFlags
+ );
+
+typedef FILTER_RETURN_NET_BUFFER_LISTS (*FILTER_RETURN_NET_BUFFER_LISTS_HANDLER);
+
+typedef
+
+
+void
+(FILTER_SEND_NET_BUFFER_LISTS_COMPLETE)(
+ NDIS_HANDLE FilterModuleContext,
+ PNET_BUFFER_LIST NetBufferList,
+ ULONG SendCompleteFlags
+ );
+
+typedef FILTER_SEND_NET_BUFFER_LISTS_COMPLETE (*FILTER_SEND_NET_BUFFER_LISTS_COMPLETE_HANDLER);
+
+typedef
+
+
+void
+(FILTER_RECEIVE_NET_BUFFER_LISTS)(
+ NDIS_HANDLE FilterModuleContext,
+ PNET_BUFFER_LIST NetBufferLists,
+ NDIS_PORT_NUMBER PortNumber,
+ ULONG NumberOfNetBufferLists,
+ ULONG ReceiveFlags
+ );
+
+typedef FILTER_RECEIVE_NET_BUFFER_LISTS (*FILTER_RECEIVE_NET_BUFFER_LISTS_HANDLER);
+
+typedef
+
+
+void
+(FILTER_DEVICE_PNP_EVENT_NOTIFY)(
+ NDIS_HANDLE FilterModuleContext,
+ PNET_DEVICE_PNP_EVENT NetDevicePnPEvent
+ );
+
+typedef FILTER_DEVICE_PNP_EVENT_NOTIFY (*FILTER_DEVICE_PNP_EVENT_NOTIFY_HANDLER);
+
+typedef
+
+
+NDIS_STATUS
+(FILTER_NET_PNP_EVENT)(
+ NDIS_HANDLE FilterModuleContext,
+ PNET_PNP_EVENT_NOTIFICATION NetPnPEventNotification
+ );
+
+typedef FILTER_NET_PNP_EVENT (*FILTER_NET_PNP_EVENT_HANDLER);
+
+typedef
+
+
+void
+(FILTER_STATUS)(
+ NDIS_HANDLE FilterModuleContext,
+ PNDIS_STATUS_INDICATION StatusIndication
+ );
+
+typedef FILTER_STATUS (*FILTER_STATUS_HANDLER);
+
+typedef
+
+
+void
+(FILTER_OID_REQUEST_COMPLETE)(
+ NDIS_HANDLE FilterModuleContext,
+ PNDIS_OID_REQUEST OidRequest,
+ NDIS_STATUS Status
+ );
+
+typedef FILTER_OID_REQUEST_COMPLETE (*FILTER_OID_REQUEST_COMPLETE_HANDLER);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 14711 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 14742 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+typedef struct _NDIS_FILTER_PARTIAL_CHARACTERISTICS
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG Flags;
+ FILTER_SEND_NET_BUFFER_LISTS_HANDLER SendNetBufferListsHandler;
+ FILTER_SEND_NET_BUFFER_LISTS_COMPLETE_HANDLER SendNetBufferListsCompleteHandler;
+ FILTER_CANCEL_SEND_HANDLER CancelSendNetBufferListsHandler;
+ FILTER_RECEIVE_NET_BUFFER_LISTS_HANDLER ReceiveNetBufferListsHandler;
+ FILTER_RETURN_NET_BUFFER_LISTS_HANDLER ReturnNetBufferListsHandler;
+} NDIS_FILTER_PARTIAL_CHARACTERISTICS, *PNDIS_FILTER_PARTIAL_CHARACTERISTICS;
+
+
+
+
+
+
+
+
+
+
+
+#line 14767 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+#line 14770 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+#line 14777 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+#line 14781 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+typedef struct _NDIS_FILTER_DRIVER_CHARACTERISTICS
+{
+ NDIS_OBJECT_HEADER Header;
+ UCHAR MajorNdisVersion;
+ UCHAR MinorNdisVersion;
+ UCHAR MajorDriverVersion;
+ UCHAR MinorDriverVersion;
+ ULONG Flags;
+ NDIS_STRING FriendlyName;
+ NDIS_STRING UniqueName;
+ NDIS_STRING ServiceName;
+ SET_OPTIONS_HANDLER SetOptionsHandler;
+ FILTER_SET_FILTER_MODULE_OPTIONS_HANDLER SetFilterModuleOptionsHandler;
+ FILTER_ATTACH_HANDLER AttachHandler;
+ FILTER_DETACH_HANDLER DetachHandler;
+ FILTER_RESTART_HANDLER RestartHandler;
+ FILTER_PAUSE_HANDLER PauseHandler;
+ FILTER_SEND_NET_BUFFER_LISTS_HANDLER SendNetBufferListsHandler;
+ FILTER_SEND_NET_BUFFER_LISTS_COMPLETE_HANDLER SendNetBufferListsCompleteHandler;
+ FILTER_CANCEL_SEND_HANDLER CancelSendNetBufferListsHandler;
+ FILTER_RECEIVE_NET_BUFFER_LISTS_HANDLER ReceiveNetBufferListsHandler;
+ FILTER_RETURN_NET_BUFFER_LISTS_HANDLER ReturnNetBufferListsHandler;
+ FILTER_OID_REQUEST_HANDLER OidRequestHandler;
+ FILTER_OID_REQUEST_COMPLETE_HANDLER OidRequestCompleteHandler;
+ FILTER_CANCEL_OID_REQUEST_HANDLER CancelOidRequestHandler;
+ FILTER_DEVICE_PNP_EVENT_NOTIFY_HANDLER DevicePnPEventNotifyHandler;
+ FILTER_NET_PNP_EVENT_HANDLER NetPnPEventHandler;
+ FILTER_STATUS_HANDLER StatusHandler;
+
+
+
+
+#line 14815 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+#line 14819 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+} NDIS_FILTER_DRIVER_CHARACTERISTICS, *PNDIS_FILTER_DRIVER_CHARACTERISTICS;
+
+
+
+
+
+
+#line 14827 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 14832 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+typedef struct _NDIS_FILTER_ATTRIBUTES
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG Flags;
+} NDIS_FILTER_ATTRIBUTES, *PNDIS_FILTER_ATTRIBUTES;
+
+
+
+
+
+
+NDIS_STATUS
+NdisFRegisterFilterDriver(
+ PDRIVER_OBJECT DriverObject,
+ NDIS_HANDLE FilterDriverContext,
+ PNDIS_FILTER_DRIVER_CHARACTERISTICS FilterDriverCharacteristics,
+ PNDIS_HANDLE NdisFilterDriverHandle
+ );
+
+
+
+
+void
+NdisFDeregisterFilterDriver(
+ NDIS_HANDLE NdisFilterDriverHandle
+ );
+
+
+
+NDIS_STATUS
+NdisFSetAttributes(
+ NDIS_HANDLE NdisFilterHandle,
+ NDIS_HANDLE FilterModuleContext,
+ PNDIS_FILTER_ATTRIBUTES FilterAttributes
+ );
+
+
+
+NDIS_STATUS
+NdisFRestartFilter(
+ NDIS_HANDLE NdisFilterHandle
+ );
+
+
+
+void
+NdisFSendNetBufferLists(
+ NDIS_HANDLE NdisFilterHandle,
+ PNET_BUFFER_LIST NetBufferList,
+ NDIS_PORT_NUMBER PortNumber,
+ ULONG SendFlags
+ );
+
+
+
+void
+NdisFReturnNetBufferLists(
+ NDIS_HANDLE NdisFilterHandle,
+ PNET_BUFFER_LIST NetBufferLists,
+ ULONG ReturnFlags
+ );
+
+
+
+void
+NdisFSendNetBufferListsComplete(
+ NDIS_HANDLE NdisFilterHandle,
+ PNET_BUFFER_LIST NetBufferList,
+ ULONG SendCompleteFlags
+ );
+
+
+
+void
+NdisFIndicateReceiveNetBufferLists(
+ NDIS_HANDLE NdisFilterHandle,
+ PNET_BUFFER_LIST NetBufferLists,
+ NDIS_PORT_NUMBER PortNumber,
+ ULONG NumberOfNetBufferLists,
+ ULONG ReceiveFlags
+ );
+
+
+
+NDIS_STATUS
+NdisFOidRequest(
+ NDIS_HANDLE NdisFilterHandle,
+ PNDIS_OID_REQUEST OidRequest
+ );
+
+
+
+void
+NdisFOidRequestComplete(
+ NDIS_HANDLE NdisFilterHandle,
+ PNDIS_OID_REQUEST OidRequest,
+ NDIS_STATUS Status
+ );
+
+
+
+void
+NdisFIndicateStatus(
+ NDIS_HANDLE NdisFilterHandle,
+ PNDIS_STATUS_INDICATION StatusIndication
+ );
+
+
+
+
+void
+NdisFRestartComplete(
+ NDIS_HANDLE NdisFilterHandle,
+ NDIS_STATUS Status
+ );
+
+
+
+void
+NdisFPauseComplete(
+ NDIS_HANDLE NdisFilterHandle
+ );
+
+
+
+
+void
+NdisFDevicePnPEventNotify(
+ NDIS_HANDLE NdisFilterHandle,
+ PNET_DEVICE_PNP_EVENT NetDevicePnPEvent
+ );
+
+
+
+NDIS_STATUS
+NdisFNetPnPEvent(
+ NDIS_HANDLE NdisFilterHandle,
+ PNET_PNP_EVENT_NOTIFICATION NetPnPEventNotification
+ );
+
+
+
+
+void
+NdisFCancelSendNetBufferLists(
+ NDIS_HANDLE NdisFilterHandle,
+ PVOID CancelId
+ );
+
+
+
+void
+NdisFCancelOidRequest(
+ NDIS_HANDLE NdisFilterHandle,
+ PVOID RequestId
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 15019 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 15032 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+
+
+
+
+
+
+#line 15043 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#line 15048 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 15050 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+typedef
+
+
+NDIS_STATUS
+(IF_QUERY_OBJECT)(
+ NDIS_HANDLE ProviderIfContext,
+ NET_IF_OBJECT_ID ObjectId,
+ PULONG pOutputBufferLength,
+
+ PVOID pOutputBuffer
+ );
+
+typedef IF_QUERY_OBJECT *IFP_QUERY_OBJECT;
+
+typedef
+
+
+NDIS_STATUS
+(IF_SET_OBJECT)(
+ NDIS_HANDLE ProviderIfContext,
+ NET_IF_OBJECT_ID ObjectId,
+ ULONG InputBufferLength,
+
+ PVOID pInputBuffer
+ );
+
+typedef IF_SET_OBJECT *IFP_SET_OBJECT;
+
+typedef struct _NDIS_IF_PROVIDER_CHARACTERISTICS
+{
+ NDIS_OBJECT_HEADER Header;
+
+
+
+
+ IFP_QUERY_OBJECT QueryObjectHandler;
+ IFP_SET_OBJECT SetObjectHandler;
+
+ PVOID Reserved1;
+ PVOID Reserved2;
+
+} NDIS_IF_PROVIDER_CHARACTERISTICS, *PNDIS_IF_PROVIDER_CHARACTERISTICS;
+
+
+
+
+
+
+
+typedef struct _NET_IF_INFORMATION
+{
+ NDIS_OBJECT_HEADER Header;
+ ULONG Flags;
+ NET_PHYSICAL_LOCATION PhysicalLocation;
+ ULONG WanTunnelType;
+ ULONG PortNumber;
+ NET_IF_ACCESS_TYPE AccessType;
+ NET_IF_DIRECTION_TYPE DirectionType;
+ NET_IF_CONNECTION_TYPE ConnectionType;
+ BOOLEAN ifConnectorPresent;
+ USHORT PhysAddressLength;
+ USHORT PhysAddressOffset;
+ USHORT PermanentPhysAddressOffset;
+
+
+
+ USHORT FriendlyNameLength;
+ USHORT FriendlyNameOffset;
+ GUID InterfaceGuid;
+ NET_IF_NETWORK_GUID NetworkGuid;
+ ULONG SupportedStatistics;
+ NDIS_MEDIUM MediaType;
+ NDIS_PHYSICAL_MEDIUM PhysicalMediumType;
+} NET_IF_INFORMATION, *PNET_IF_INFORMATION;
+
+
+
+
+
+
+
+NDIS_STATUS
+NdisIfRegisterProvider(
+ PNDIS_IF_PROVIDER_CHARACTERISTICS ProviderCharacteristics,
+ NDIS_HANDLE IfProviderContext,
+ PNDIS_HANDLE pNdisIfProviderHandle
+ );
+
+
+
+void
+NdisIfDeregisterProvider(
+ NDIS_HANDLE NdisProviderHandle
+ );
+
+
+
+NDIS_STATUS
+NdisIfAllocateNetLuidIndex(
+ NET_IFTYPE ifType,
+ PUINT32 pNetLuidIndex
+ );
+
+
+
+NDIS_STATUS
+NdisIfFreeNetLuidIndex(
+ NET_IFTYPE ifType,
+ UINT32 NetLuidIndex
+ );
+
+
+
+NDIS_STATUS
+NdisIfRegisterInterface(
+ NDIS_HANDLE NdisProviderHandle,
+ NET_LUID NetLuid,
+ NDIS_HANDLE ProviderIfContext,
+ PNET_IF_INFORMATION pIfInfo,
+ PNET_IFINDEX pfIndex
+ );
+
+
+
+void
+NdisIfDeregisterInterface(
+ NET_IFINDEX ifIndex
+ );
+
+
+
+NDIS_STATUS
+NdisIfGetInterfaceIndexFromNetLuid(
+ NET_LUID NetLuid,
+ PNET_IFINDEX pIfIndex
+ );
+
+
+
+NDIS_STATUS
+NdisIfGetNetLuidFromInterfaceIndex(
+ NET_IFINDEX ifIndex,
+ PNET_LUID pNetLuid
+ );
+
+
+
+NDIS_STATUS
+NdisIfQueryBindingIfIndex(
+ NDIS_HANDLE NdisBindingHandle,
+ PNET_IFINDEX pBoundIfIndex,
+ PNET_LUID pBoundIfNetLuid,
+ PNET_IFINDEX pLowestIfIndex,
+ PNET_LUID pLowestIfNetLuid
+ );
+
+
+
+NDIS_STATUS
+NdisIfAddIfStackEntry(
+ NET_IFINDEX HigherLayerIfIndex,
+ NET_IFINDEX LowerLayerIfIndex
+ );
+
+
+
+void
+NdisIfDeleteIfStackEntry(
+ NET_IFINDEX HigherLayerIfIndex,
+ NET_IFINDEX LowerLayerIfIndex
+ );
+
+#line 15235 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\monitor.h"
+
+
+#pragma once
+
+#pragma region System or Desktop App families
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 104 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\monitor.h"
+#line 105 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis\\monitor.h"
+
+#pragma endregion
+#line 15237 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+
+
+#line 15241 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ndis.h"
+
+#line 28 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 32 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+
+#line 38 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+#line 40 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+#line 41 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+
+
+
+#line 49 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+#pragma warning(push)
+#pragma warning(disable:4201)
+#pragma warning(disable:4214)
+
+
+
+
+
+
+
+#line 61 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+
+
+
+#line 69 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+#line 71 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\inaddr.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+#pragma region Desktop Family or OneCore Family or Games Family
+
+
+
+
+
+
+typedef struct in_addr {
+ union {
+ struct { UCHAR s_b1,s_b2,s_b3,s_b4; } S_un_b;
+ struct { USHORT s_w1,s_w2; } S_un_w;
+ ULONG S_addr;
+ } S_un;
+
+
+
+
+
+
+} IN_ADDR, *PIN_ADDR, *LPIN_ADDR;
+
+#line 40 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\inaddr.h"
+#pragma endregion
+
+#line 43 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\inaddr.h"
+#pragma external_header(pop)
+#line 73 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+#pragma region Desktop Family or OneCore Family or Games Family
+
+
+
+
+typedef USHORT ADDRESS_FAMILY;
+#line 83 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+#pragma endregion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 130 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+
+
+
+#line 138 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+#line 142 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+#line 146 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+#line 149 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+#line 150 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+#line 151 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+#line 153 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 222 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma region Desktop Family or OneCore Family or Games Family
+
+
+
+
+typedef struct sockaddr {
+
+
+
+#line 245 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+ ADDRESS_FAMILY sa_family;
+#line 247 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+ CHAR sa_data[14];
+} SOCKADDR, *PSOCKADDR, *LPSOCKADDR;
+
+
+
+
+
+
+
+
+typedef struct _SOCKET_ADDRESS {
+ LPSOCKADDR lpSockaddr;
+
+
+
+
+
+
+
+
+ INT iSockaddrLength;
+} SOCKET_ADDRESS, *PSOCKET_ADDRESS, *LPSOCKET_ADDRESS;
+#line 271 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+#pragma endregion
+
+
+
+
+typedef struct _SOCKET_ADDRESS_LIST {
+ INT iAddressCount;
+ SOCKET_ADDRESS Address[1];
+} SOCKET_ADDRESS_LIST, *PSOCKET_ADDRESS_LIST, *LPSOCKET_ADDRESS_LIST;
+
+
+
+
+
+
+
+#line 288 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+typedef struct _CSADDR_INFO {
+ SOCKET_ADDRESS LocalAddr ;
+ SOCKET_ADDRESS RemoteAddr ;
+ INT iSocketType ;
+ INT iProtocol ;
+} CSADDR_INFO, *PCSADDR_INFO, * LPCSADDR_INFO ;
+#line 299 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 323 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+typedef struct sockaddr_storage {
+ ADDRESS_FAMILY ss_family;
+
+ CHAR __ss_pad1[((sizeof(__int64)) - sizeof(USHORT))];
+
+
+
+ __int64 __ss_align;
+ CHAR __ss_pad2[(128 - (sizeof(USHORT) + ((sizeof(__int64)) - sizeof(USHORT)) + (sizeof(__int64))))];
+
+
+
+} SOCKADDR_STORAGE_LH, *PSOCKADDR_STORAGE_LH, *LPSOCKADDR_STORAGE_LH;
+
+#pragma region Desktop Family
+
+typedef struct sockaddr_storage_xp {
+ short ss_family;
+
+ CHAR __ss_pad1[((sizeof(__int64)) - sizeof(USHORT))];
+
+
+
+ __int64 __ss_align;
+ CHAR __ss_pad2[(128 - (sizeof(USHORT) + ((sizeof(__int64)) - sizeof(USHORT)) + (sizeof(__int64))))];
+
+
+
+} SOCKADDR_STORAGE_XP, *PSOCKADDR_STORAGE_XP, *LPSOCKADDR_STORAGE_XP;
+#line 354 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+#pragma endregion
+
+
+typedef SOCKADDR_STORAGE_LH SOCKADDR_STORAGE;
+typedef SOCKADDR_STORAGE *PSOCKADDR_STORAGE, *LPSOCKADDR_STORAGE;
+
+
+
+#line 363 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+typedef struct _SOCKET_PROCESSOR_AFFINITY {
+ PROCESSOR_NUMBER Processor;
+ USHORT NumaNodeId;
+ USHORT Reserved;
+} SOCKET_PROCESSOR_AFFINITY, *PSOCKET_PROCESSOR_AFFINITY;
+#line 371 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 388 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 417 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+#line 422 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum {
+
+ IPPROTO_HOPOPTS = 0,
+#line 442 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+ IPPROTO_ICMP = 1,
+ IPPROTO_IGMP = 2,
+ IPPROTO_GGP = 3,
+
+ IPPROTO_IPV4 = 4,
+#line 448 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+ IPPROTO_ST = 5,
+#line 451 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+ IPPROTO_TCP = 6,
+
+ IPPROTO_CBT = 7,
+ IPPROTO_EGP = 8,
+ IPPROTO_IGP = 9,
+#line 457 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+ IPPROTO_PUP = 12,
+ IPPROTO_UDP = 17,
+ IPPROTO_IDP = 22,
+
+ IPPROTO_RDP = 27,
+#line 463 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+ IPPROTO_IPV6 = 41,
+ IPPROTO_ROUTING = 43,
+ IPPROTO_FRAGMENT = 44,
+ IPPROTO_ESP = 50,
+ IPPROTO_AH = 51,
+ IPPROTO_ICMPV6 = 58,
+ IPPROTO_NONE = 59,
+ IPPROTO_DSTOPTS = 60,
+#line 474 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+ IPPROTO_ND = 77,
+
+ IPPROTO_ICLFXBM = 78,
+#line 479 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+ IPPROTO_PIM = 103,
+ IPPROTO_PGM = 113,
+ IPPROTO_L2TP = 115,
+ IPPROTO_SCTP = 132,
+#line 485 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+ IPPROTO_RAW = 255,
+
+ IPPROTO_MAX = 256,
+
+
+
+ IPPROTO_RESERVED_RAW = 257,
+ IPPROTO_RESERVED_IPSEC = 258,
+ IPPROTO_RESERVED_IPSECOFFLOAD = 259,
+ IPPROTO_RESERVED_WNV = 260,
+ IPPROTO_RESERVED_MAX = 261
+} IPPROTO, *PIPROTO;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 568 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma region Desktop Family or OneCore Family or Games Family
+
+
+
+
+
+typedef enum {
+ ScopeLevelInterface = 1,
+ ScopeLevelLink = 2,
+ ScopeLevelSubnet = 3,
+ ScopeLevelAdmin = 4,
+ ScopeLevelSite = 5,
+ ScopeLevelOrganization = 8,
+ ScopeLevelGlobal = 14,
+ ScopeLevelCount = 16
+} SCOPE_LEVEL;
+
+typedef struct {
+ union {
+ struct {
+ ULONG Zone : 28;
+ ULONG Level : 4;
+ } ;
+ ULONG Value;
+ } ;
+} SCOPE_ID, *PSCOPE_ID;
+
+
+
+
+
+
+
+typedef struct sockaddr_in {
+
+
+
+#line 643 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+ ADDRESS_FAMILY sin_family;
+#line 645 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+ USHORT sin_port;
+ IN_ADDR sin_addr;
+ CHAR sin_zero[8];
+} SOCKADDR_IN, *PSOCKADDR_IN;
+
+#line 652 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+#pragma endregion
+
+
+
+
+
+
+
+
+
+
+typedef struct sockaddr_dl {
+ ADDRESS_FAMILY sdl_family;
+ UCHAR sdl_data[8];
+ UCHAR sdl_zero[4];
+} SOCKADDR_DL, *PSOCKADDR_DL;
+
+#line 670 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _WSABUF {
+ ULONG len;
+ CHAR *buf;
+} WSABUF, * LPWSABUF;
+
+
+
+
+
+typedef struct _WSAMSG {
+ LPSOCKADDR name;
+ INT namelen;
+ LPWSABUF lpBuffers;
+
+
+ ULONG dwBufferCount;
+
+
+#line 708 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+ WSABUF Control;
+
+
+ ULONG dwFlags;
+
+
+#line 716 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+} WSAMSG, *PWSAMSG, * LPWSAMSG;
+
+
+
+
+
+
+#line 725 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+typedef struct cmsghdr {
+ SIZE_T cmsg_len;
+ INT cmsg_level;
+ INT cmsg_type;
+
+} WSACMSGHDR, *PWSACMSGHDR, *LPWSACMSGHDR;
+
+
+typedef WSACMSGHDR CMSGHDR, *PCMSGHDR;
+#line 736 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 753 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 774 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 802 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 839 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 856 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct addrinfo
+{
+ int ai_flags;
+ int ai_family;
+ int ai_socktype;
+ int ai_protocol;
+ size_t ai_addrlen;
+ char * ai_canonname;
+ struct sockaddr * ai_addr;
+ struct addrinfo * ai_next;
+}
+ADDRINFOA, *PADDRINFOA;
+
+typedef struct addrinfoW
+{
+ int ai_flags;
+ int ai_family;
+ int ai_socktype;
+ int ai_protocol;
+ size_t ai_addrlen;
+ PWSTR ai_canonname;
+ struct sockaddr * ai_addr;
+ struct addrinfoW * ai_next;
+}
+ADDRINFOW, *PADDRINFOW;
+
+
+
+#pragma region App Family or OneCore Family or Games Family
+
+typedef struct __declspec(deprecated("Use " "ADDRINFOEXW" " instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings")) addrinfoexA
+{
+ int ai_flags;
+ int ai_family;
+ int ai_socktype;
+ int ai_protocol;
+ size_t ai_addrlen;
+ char *ai_canonname;
+ struct sockaddr *ai_addr;
+ void *ai_blob;
+ size_t ai_bloblen;
+ LPGUID ai_provider;
+ struct addrinfoexA *ai_next;
+} ADDRINFOEXA, *PADDRINFOEXA, *LPADDRINFOEXA;
+#line 955 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+#pragma endregion
+
+typedef struct addrinfoexW
+{
+ int ai_flags;
+ int ai_family;
+ int ai_socktype;
+ int ai_protocol;
+ size_t ai_addrlen;
+ PWSTR ai_canonname;
+ struct sockaddr *ai_addr;
+ void *ai_blob;
+ size_t ai_bloblen;
+ LPGUID ai_provider;
+ struct addrinfoexW *ai_next;
+} ADDRINFOEXW, *PADDRINFOEXW, *LPADDRINFOEXW;
+
+#line 973 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+
+
+
+
+
+#pragma region Desktop Family
+
+typedef struct __declspec(deprecated("Use " "ADDRINFOEX2W" " instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings")) addrinfoex2A
+{
+ int ai_flags;
+ int ai_family;
+ int ai_socktype;
+ int ai_protocol;
+ size_t ai_addrlen;
+ char *ai_canonname;
+ struct sockaddr *ai_addr;
+ void *ai_blob;
+ size_t ai_bloblen;
+ LPGUID ai_provider;
+ struct addrinfoex2A *ai_next;
+ int ai_version;
+ char *ai_fqdn;
+} ADDRINFOEX2A, *PADDRINFOEX2A, *LPADDRINFOEX2A;
+#line 1001 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+#pragma endregion
+
+typedef struct addrinfoex2W
+{
+ int ai_flags;
+ int ai_family;
+ int ai_socktype;
+ int ai_protocol;
+ size_t ai_addrlen;
+ PWSTR ai_canonname;
+ struct sockaddr *ai_addr;
+ void *ai_blob;
+ size_t ai_bloblen;
+ LPGUID ai_provider;
+ struct addrinfoex2W *ai_next;
+ int ai_version;
+ PWSTR ai_fqdn;
+} ADDRINFOEX2W, *PADDRINFOEX2W, *LPADDRINFOEX2W;
+
+typedef struct addrinfoex3
+{
+ int ai_flags;
+ int ai_family;
+ int ai_socktype;
+ int ai_protocol;
+ size_t ai_addrlen;
+ PWSTR ai_canonname;
+ struct sockaddr *ai_addr;
+ void *ai_blob;
+ size_t ai_bloblen;
+ LPGUID ai_provider;
+ struct addrinfoex3 *ai_next;
+ int ai_version;
+ PWSTR ai_fqdn;
+ int ai_interfaceindex;
+} ADDRINFOEX3, *PADDRINFOEX3, *LPADDRINFOEX3;
+
+typedef struct addrinfoex4
+{
+ int ai_flags;
+ int ai_family;
+ int ai_socktype;
+ int ai_protocol;
+ size_t ai_addrlen;
+ PWSTR ai_canonname;
+ struct sockaddr *ai_addr;
+ void *ai_blob;
+ size_t ai_bloblen;
+ GUID *ai_provider;
+ struct addrinfoex4 *ai_next;
+ int ai_version;
+ PWSTR ai_fqdn;
+ int ai_interfaceindex;
+ HANDLE ai_resolutionhandle;
+} ADDRINFOEX4, *PADDRINFOEX4, *LPADDRINFOEX4;
+
+typedef struct addrinfoex5
+{
+ int ai_flags;
+ int ai_family;
+ int ai_socktype;
+ int ai_protocol;
+ size_t ai_addrlen;
+ PWSTR ai_canonname;
+ struct sockaddr *ai_addr;
+ void *ai_blob;
+ size_t ai_bloblen;
+ GUID *ai_provider;
+ struct addrinfoex5 *ai_next;
+ int ai_version;
+ PWSTR ai_fqdn;
+ int ai_interfaceindex;
+ HANDLE ai_resolutionhandle;
+ unsigned int ai_ttl;
+} ADDRINFOEX5, *PADDRINFOEX5, *LPADDRINFOEX5;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct addrinfo_dns_server
+{
+ unsigned int ai_servertype;
+ unsigned __int64 ai_flags;
+ unsigned int ai_addrlen;
+ struct sockaddr *ai_addr;
+
+ union
+ {
+ PWSTR ai_template;
+ };
+} ADDRINFO_DNS_SERVER;
+
+
+
+
+
+
+
+
+
+typedef struct addrinfoex6
+{
+ int ai_flags;
+ int ai_family;
+ int ai_socktype;
+ int ai_protocol;
+ size_t ai_addrlen;
+ PWSTR ai_canonname;
+ struct sockaddr *ai_addr;
+ void *ai_blob;
+ size_t ai_bloblen;
+ GUID *ai_provider;
+ struct addrinfoex5 *ai_next;
+ int ai_version;
+ PWSTR ai_fqdn;
+ int ai_interfaceindex;
+ HANDLE ai_resolutionhandle;
+ unsigned int ai_ttl;
+ unsigned int ai_numservers;
+ ADDRINFO_DNS_SERVER *ai_servers;
+ ULONG64 ai_responseflags;
+} ADDRINFOEX6, *PADDRINFOEX6;
+
+#line 1139 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1163 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+#line 1167 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 1179 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(pop)
+
+
+
+
+#line 1207 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2def.h"
+#pragma external_header(pop)
+#line 29 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2ipdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 37 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2ipdef.h"
+
+
+#pragma region Desktop Family or OneCore Family or Games Family
+
+
+
+
+#line 45 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2ipdef.h"
+#pragma endregion
+
+#pragma warning(push)
+#pragma warning(disable:4201)
+#pragma warning(disable:4127)
+
+
+
+
+
+
+
+
+#line 59 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2ipdef.h"
+
+
+
+
+
+#line 65 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2ipdef.h"
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\in6addr.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+#pragma region Desktop Family or OneCore Family or Games Family
+
+
+
+
+
+
+typedef struct in6_addr {
+ union {
+ UCHAR Byte[16];
+ USHORT Word[8];
+ } u;
+} IN6_ADDR, *PIN6_ADDR, *LPIN6_ADDR;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 48 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\in6addr.h"
+#pragma endregion
+
+#line 51 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\in6addr.h"
+#pragma external_header(pop)
+#line 67 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2ipdef.h"
+
+
+
+
+
+struct sockaddr_in6_old {
+ SHORT sin6_family;
+ USHORT sin6_port;
+ ULONG sin6_flowinfo;
+ IN6_ADDR sin6_addr;
+};
+
+typedef union sockaddr_gen {
+ struct sockaddr Address;
+ struct sockaddr_in AddressIn;
+ struct sockaddr_in6_old AddressIn6;
+} sockaddr_gen;
+
+
+
+
+
+typedef struct _INTERFACE_INFO {
+ ULONG iiFlags;
+ sockaddr_gen iiAddress;
+ sockaddr_gen iiBroadcastAddress;
+ sockaddr_gen iiNetmask;
+} INTERFACE_INFO, *LPINTERFACE_INFO;
+
+
+
+
+
+typedef struct _INTERFACE_INFO_EX {
+ ULONG iiFlags;
+ SOCKET_ADDRESS iiAddress;
+ SOCKET_ADDRESS iiBroadcastAddress;
+ SOCKET_ADDRESS iiNetmask;
+} INTERFACE_INFO_EX, *LPINTERFACE_INFO_EX;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _PMTUD_STATE {
+ IP_PMTUDISC_NOT_SET,
+ IP_PMTUDISC_DO,
+ IP_PMTUDISC_DONT,
+ IP_PMTUDISC_PROBE,
+ IP_PMTUDISC_MAX
+} PMTUD_STATE, *PPMTUD_STATE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma region Desktop Family or OneCore Family or Games Family
+
+typedef struct sockaddr_in6 {
+ ADDRESS_FAMILY sin6_family;
+ USHORT sin6_port;
+ ULONG sin6_flowinfo;
+ IN6_ADDR sin6_addr;
+ union {
+ ULONG sin6_scope_id;
+ SCOPE_ID sin6_scope_struct;
+ };
+} SOCKADDR_IN6_LH, *PSOCKADDR_IN6_LH, *LPSOCKADDR_IN6_LH;
+
+typedef struct sockaddr_in6_w2ksp1 {
+ short sin6_family;
+ USHORT sin6_port;
+ ULONG sin6_flowinfo;
+ struct in6_addr sin6_addr;
+ ULONG sin6_scope_id;
+} SOCKADDR_IN6_W2KSP1, *PSOCKADDR_IN6_W2KSP1, *LPSOCKADDR_IN6_W2KSP1;
+
+
+typedef SOCKADDR_IN6_LH SOCKADDR_IN6;
+typedef SOCKADDR_IN6_LH *PSOCKADDR_IN6;
+typedef SOCKADDR_IN6_LH *LPSOCKADDR_IN6;
+
+
+
+
+
+
+
+
+#line 223 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2ipdef.h"
+
+typedef union _SOCKADDR_INET {
+ SOCKADDR_IN Ipv4;
+ SOCKADDR_IN6 Ipv6;
+ ADDRESS_FAMILY si_family;
+} SOCKADDR_INET, *PSOCKADDR_INET;
+
+
+
+
+typedef struct _sockaddr_in6_pair
+{
+ PSOCKADDR_IN6 SourceAddress;
+ PSOCKADDR_IN6 DestinationAddress;
+} SOCKADDR_IN6_PAIR, *PSOCKADDR_IN6_PAIR;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const SCOPE_ID scopeid_unspecified;
+
+extern const IN_ADDR in4addr_any;
+extern const IN_ADDR in4addr_loopback;
+extern const IN_ADDR in4addr_broadcast;
+extern const IN_ADDR in4addr_allnodesonlink;
+extern const IN_ADDR in4addr_allroutersonlink;
+extern const IN_ADDR in4addr_alligmpv3routersonlink;
+extern const IN_ADDR in4addr_allteredohostsonlink;
+extern const IN_ADDR in4addr_linklocalprefix;
+extern const IN_ADDR in4addr_multicastprefix;
+
+extern const IN6_ADDR in6addr_any;
+extern const IN6_ADDR in6addr_loopback;
+extern const IN6_ADDR in6addr_allnodesonnode;
+extern const IN6_ADDR in6addr_allnodesonlink;
+extern const IN6_ADDR in6addr_allroutersonlink;
+extern const IN6_ADDR in6addr_allmldv2routersonlink;
+extern const IN6_ADDR in6addr_teredoinitiallinklocaladdress;
+extern const IN6_ADDR in6addr_linklocalprefix;
+extern const IN6_ADDR in6addr_multicastprefix;
+extern const IN6_ADDR in6addr_solicitednodemulticastprefix;
+extern const IN6_ADDR in6addr_v4mappedprefix;
+extern const IN6_ADDR in6addr_6to4prefix;
+extern const IN6_ADDR in6addr_teredoprefix;
+extern const IN6_ADDR in6addr_teredoprefix_old;
+
+
+
+
+
+
+
+__inline
+BOOLEAN
+IN6_ADDR_EQUAL(const IN6_ADDR *x, const IN6_ADDR *y)
+{
+ __int64 __unaligned *a;
+ __int64 __unaligned *b;
+
+ a = (__int64 __unaligned *)x;
+ b = (__int64 __unaligned *)y;
+
+ return (BOOLEAN)((a[1] == b[1]) && (a[0] == b[0]));
+}
+
+
+
+
+
+
+__inline
+BOOLEAN
+IN6_IS_ADDR_UNSPECIFIED(const IN6_ADDR *a)
+{
+
+
+
+
+ return (BOOLEAN)((a->u.Word[0] == 0) &&
+ (a->u.Word[1] == 0) &&
+ (a->u.Word[2] == 0) &&
+ (a->u.Word[3] == 0) &&
+ (a->u.Word[4] == 0) &&
+ (a->u.Word[5] == 0) &&
+ (a->u.Word[6] == 0) &&
+ (a->u.Word[7] == 0));
+}
+
+__inline
+BOOLEAN
+IN6_IS_ADDR_LOOPBACK(const IN6_ADDR *a)
+{
+
+
+
+
+ return (BOOLEAN)((a->u.Word[0] == 0) &&
+ (a->u.Word[1] == 0) &&
+ (a->u.Word[2] == 0) &&
+ (a->u.Word[3] == 0) &&
+ (a->u.Word[4] == 0) &&
+ (a->u.Word[5] == 0) &&
+ (a->u.Word[6] == 0) &&
+ (a->u.Word[7] == 0x0100));
+}
+
+__inline
+BOOLEAN
+IN6_IS_ADDR_MULTICAST(const IN6_ADDR *a)
+{
+ return (BOOLEAN)(a->u.Byte[0] == 0xff);
+}
+
+
+
+
+
+__inline
+BOOLEAN
+IN6_IS_ADDR_EUI64(const IN6_ADDR *a)
+{
+
+
+
+ return (BOOLEAN)(((a->u.Byte[0] & 0xe0) != 0) &&
+ !IN6_IS_ADDR_MULTICAST(a));
+}
+
+
+
+
+
+__inline
+BOOLEAN
+IN6_IS_ADDR_SUBNET_ROUTER_ANYCAST(const IN6_ADDR *a)
+{
+ return (BOOLEAN)(IN6_IS_ADDR_EUI64(a) &&
+ (a->u.Word[4] == 0) &&
+ (a->u.Word[5] == 0) &&
+ (a->u.Word[6] == 0) &&
+ (a->u.Word[7] == 0));
+}
+
+
+
+
+
+
+
+
+
+__inline
+BOOLEAN
+IN6_IS_ADDR_SUBNET_RESERVED_ANYCAST(const IN6_ADDR *a)
+{
+ return (BOOLEAN)(IN6_IS_ADDR_EUI64(a) &&
+ (a->u.Word[4] == 0xfffd) &&
+ (a->u.Word[5] == 0xffff) &&
+ (a->u.Word[6] == 0xffff) &&
+ ((a->u.Word[7] & 0x80ff) == 0x80ff));
+}
+
+
+
+
+
+__inline
+BOOLEAN
+IN6_IS_ADDR_ANYCAST(const IN6_ADDR *a)
+{
+ return (IN6_IS_ADDR_SUBNET_RESERVED_ANYCAST(a) ||
+ IN6_IS_ADDR_SUBNET_ROUTER_ANYCAST(a));
+}
+
+__inline
+BOOLEAN
+IN6_IS_ADDR_LINKLOCAL(const IN6_ADDR *a)
+{
+ return (BOOLEAN)((a->u.Byte[0] == 0xfe) &&
+ ((a->u.Byte[1] & 0xc0) == 0x80));
+}
+
+__inline
+BOOLEAN
+IN6_IS_ADDR_SITELOCAL(const IN6_ADDR *a)
+{
+ return (BOOLEAN)((a->u.Byte[0] == 0xfe) &&
+ ((a->u.Byte[1] & 0xc0) == 0xc0));
+}
+
+__inline
+BOOLEAN
+IN6_IS_ADDR_GLOBAL(const IN6_ADDR *a)
+{
+
+
+
+
+
+
+ ULONG High = (a->u.Byte[0] & 0xf0u);
+ return (BOOLEAN)((High != 0) && (High != 0xf0));
+}
+
+__inline
+BOOLEAN
+IN6_IS_ADDR_V4MAPPED(const IN6_ADDR *a)
+{
+ return (BOOLEAN)((a->u.Word[0] == 0) &&
+ (a->u.Word[1] == 0) &&
+ (a->u.Word[2] == 0) &&
+ (a->u.Word[3] == 0) &&
+ (a->u.Word[4] == 0) &&
+ (a->u.Word[5] == 0xffff));
+}
+
+__inline
+BOOLEAN
+IN6_IS_ADDR_V4COMPAT(const IN6_ADDR *a)
+{
+ return (BOOLEAN)((a->u.Word[0] == 0) &&
+ (a->u.Word[1] == 0) &&
+ (a->u.Word[2] == 0) &&
+ (a->u.Word[3] == 0) &&
+ (a->u.Word[4] == 0) &&
+ (a->u.Word[5] == 0) &&
+ !((a->u.Word[6] == 0) &&
+ (a->u.Byte[14] == 0) &&
+ ((a->u.Byte[15] == 0) || (a->u.Byte[15] == 1))));
+}
+
+__inline
+BOOLEAN
+IN6_IS_ADDR_V4TRANSLATED(const IN6_ADDR *a)
+{
+ return (BOOLEAN)((a->u.Word[0] == 0) &&
+ (a->u.Word[1] == 0) &&
+ (a->u.Word[2] == 0) &&
+ (a->u.Word[3] == 0) &&
+ (a->u.Word[4] == 0xffff) &&
+ (a->u.Word[5] == 0));
+}
+
+__inline
+BOOLEAN
+IN6_IS_ADDR_MC_NODELOCAL(const IN6_ADDR *a)
+{
+ return (BOOLEAN)(IN6_IS_ADDR_MULTICAST(a) &&
+ ((a->u.Byte[1] & 0xf) == 1));
+}
+
+__inline
+BOOLEAN
+IN6_IS_ADDR_MC_LINKLOCAL(const IN6_ADDR *a)
+{
+ return (BOOLEAN)(IN6_IS_ADDR_MULTICAST(a) &&
+ ((a->u.Byte[1] & 0xf) == 2));
+}
+
+__inline
+BOOLEAN
+IN6_IS_ADDR_MC_SITELOCAL(const IN6_ADDR *a)
+{
+ return (BOOLEAN)(IN6_IS_ADDR_MULTICAST(a) &&
+ ((a->u.Byte[1] & 0xf) == 5));
+}
+
+__inline
+BOOLEAN
+IN6_IS_ADDR_MC_ORGLOCAL(const IN6_ADDR *a)
+{
+ return (BOOLEAN)(IN6_IS_ADDR_MULTICAST(a) &&
+ ((a->u.Byte[1] & 0xf) == 8));
+}
+
+__inline
+BOOLEAN
+IN6_IS_ADDR_MC_GLOBAL(const IN6_ADDR *a)
+{
+ return (BOOLEAN)(IN6_IS_ADDR_MULTICAST(a) &&
+ ((a->u.Byte[1] & 0xf) == 0xe));
+}
+
+__inline
+void
+IN6_SET_ADDR_UNSPECIFIED(PIN6_ADDR a)
+{
+
+
+
+
+ memset(a->u.Byte, 0, sizeof(IN6_ADDR));
+}
+
+__inline
+void
+IN6_SET_ADDR_LOOPBACK(PIN6_ADDR a)
+{
+
+
+
+
+ memset(a->u.Byte, 0, sizeof(IN6_ADDR));
+ a->u.Byte[15] = 1;
+}
+
+__inline
+void
+IN6ADDR_SETANY(PSOCKADDR_IN6 a)
+{
+ a->sin6_family = 23;
+ a->sin6_port = 0;
+ a->sin6_flowinfo = 0;
+ IN6_SET_ADDR_UNSPECIFIED(&a->sin6_addr);
+ a->sin6_scope_id = 0;
+}
+
+__inline
+void
+IN6ADDR_SETLOOPBACK(PSOCKADDR_IN6 a)
+{
+ a->sin6_family = 23;
+ a->sin6_port = 0;
+ a->sin6_flowinfo = 0;
+ IN6_SET_ADDR_LOOPBACK(&a->sin6_addr);
+ a->sin6_scope_id = 0;
+}
+
+__inline
+BOOLEAN
+IN6ADDR_ISANY(const SOCKADDR_IN6 *a)
+{
+ ((void) 0);
+ return IN6_IS_ADDR_UNSPECIFIED(&a->sin6_addr);
+}
+
+__inline
+BOOLEAN
+IN6ADDR_ISLOOPBACK(const SOCKADDR_IN6 *a)
+{
+ ((void) 0);
+ return IN6_IS_ADDR_LOOPBACK(&a->sin6_addr);
+}
+
+__inline
+BOOLEAN
+IN6ADDR_ISEQUAL(const SOCKADDR_IN6 *a, const SOCKADDR_IN6 *b)
+{
+ ((void) 0);
+ return (BOOLEAN)(a->sin6_scope_id == b->sin6_scope_id &&
+ IN6_ADDR_EQUAL(&a->sin6_addr, &b->sin6_addr));
+}
+
+__inline
+BOOLEAN
+IN6ADDR_ISUNSPECIFIED(const SOCKADDR_IN6 *a)
+{
+ ((void) 0);
+ return (BOOLEAN)(a->sin6_scope_id == 0 &&
+ IN6_IS_ADDR_UNSPECIFIED(&a->sin6_addr));
+}
+
+#line 683 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2ipdef.h"
+
+#line 685 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2ipdef.h"
+
+#line 687 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2ipdef.h"
+#pragma endregion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 719 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2ipdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum {
+ MCAST_INCLUDE = 0,
+ MCAST_EXCLUDE
+} MULTICAST_MODE_TYPE;
+
+
+
+
+typedef struct ip_mreq {
+ IN_ADDR imr_multiaddr;
+ IN_ADDR imr_interface;
+} IP_MREQ, *PIP_MREQ;
+
+
+
+
+
+typedef struct ip_mreq_source {
+ IN_ADDR imr_multiaddr;
+ IN_ADDR imr_sourceaddr;
+ IN_ADDR imr_interface;
+} IP_MREQ_SOURCE, *PIP_MREQ_SOURCE;
+
+
+
+
+typedef struct ip_msfilter {
+ IN_ADDR imsf_multiaddr;
+ IN_ADDR imsf_interface;
+ MULTICAST_MODE_TYPE imsf_fmode;
+ ULONG imsf_numsrc;
+ IN_ADDR imsf_slist[1];
+} IP_MSFILTER, *PIP_MSFILTER;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 827 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2ipdef.h"
+
+#line 829 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2ipdef.h"
+
+
+
+
+typedef struct ipv6_mreq {
+ IN6_ADDR ipv6mr_multiaddr;
+ ULONG ipv6mr_interface;
+} IPV6_MREQ, *PIPV6_MREQ;
+
+
+
+
+
+
+typedef struct group_req {
+ ULONG gr_interface;
+ SOCKADDR_STORAGE gr_group;
+} GROUP_REQ, *PGROUP_REQ;
+
+
+
+
+
+typedef struct group_source_req {
+ ULONG gsr_interface;
+ SOCKADDR_STORAGE gsr_group;
+ SOCKADDR_STORAGE gsr_source;
+} GROUP_SOURCE_REQ, *PGROUP_SOURCE_REQ;
+
+
+
+
+
+typedef struct group_filter {
+ ULONG gf_interface;
+ SOCKADDR_STORAGE gf_group;
+ MULTICAST_MODE_TYPE gf_fmode;
+ ULONG gf_numsrc;
+ SOCKADDR_STORAGE gf_slist[1];
+} GROUP_FILTER, *PGROUP_FILTER;
+
+
+
+
+#line 874 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2ipdef.h"
+
+
+
+
+typedef struct in_pktinfo {
+ IN_ADDR ipi_addr;
+ ULONG ipi_ifindex;
+} IN_PKTINFO, *PIN_PKTINFO;
+
+
+typedef char __C_ASSERT__[(sizeof(IN_PKTINFO) == 8)?1:-1];
+#line 886 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2ipdef.h"
+
+
+
+
+typedef struct in6_pktinfo {
+ IN6_ADDR ipi6_addr;
+ ULONG ipi6_ifindex;
+} IN6_PKTINFO, *PIN6_PKTINFO;
+
+
+typedef char __C_ASSERT__[(sizeof(IN6_PKTINFO) == 20)?1:-1];
+#line 898 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2ipdef.h"
+
+
+
+
+typedef struct in_pktinfo_ex {
+ IN_PKTINFO pkt_info;
+ SCOPE_ID scope_id;
+} IN_PKTINFO_EX, *PIN_PKTINFO_EX;
+
+
+typedef char __C_ASSERT__[(sizeof(IN_PKTINFO_EX) == 12)?1:-1];
+#line 910 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2ipdef.h"
+
+
+
+
+typedef struct in6_pktinfo_ex {
+ IN6_PKTINFO pkt_info;
+ SCOPE_ID scope_id;
+} IN6_PKTINFO_EX, *PIN6_PKTINFO_EX;
+
+
+typedef char __C_ASSERT__[(sizeof(IN6_PKTINFO_EX) == 24)?1:-1];
+#line 922 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2ipdef.h"
+
+
+
+
+typedef struct in_recverr {
+ IPPROTO protocol;
+ ULONG info;
+ UINT8 type;
+ UINT8 code;
+} IN_RECVERR, *PIN_RECVERR;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct icmp_error_info {
+ SOCKADDR_INET srcaddress;
+ IPPROTO protocol;
+ UINT8 type;
+ UINT8 code;
+} ICMP_ERROR_INFO, *PICMP_ERROR_INFO;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(pop)
+
+#pragma region Desktop Family or OneCore Family or Games Family
+
+
+
+
+#line 1027 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2ipdef.h"
+#pragma endregion
+
+#line 1030 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ws2ipdef.h"
+#pragma external_header(pop)
+#line 30 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+#pragma region Application Family or OneCore Family or Games Family
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:4201)
+#pragma warning(disable:4214)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\nldef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+#pragma region Application Family or OneCore Family or Games Family
+
+
+
+typedef enum {
+
+
+
+
+ IpPrefixOriginOther = 0,
+ IpPrefixOriginManual,
+ IpPrefixOriginWellKnown,
+ IpPrefixOriginDhcp,
+ IpPrefixOriginRouterAdvertisement,
+ IpPrefixOriginUnchanged = 1 << 4
+} NL_PREFIX_ORIGIN;
+
+
+
+
+
+
+
+
+
+
+typedef enum {
+
+
+
+ NlsoOther = 0,
+ NlsoManual,
+ NlsoWellKnown,
+ NlsoDhcp,
+ NlsoLinkLayerAddress,
+ NlsoRandom,
+
+
+
+
+
+ IpSuffixOriginOther = 0,
+ IpSuffixOriginManual,
+ IpSuffixOriginWellKnown,
+ IpSuffixOriginDhcp,
+ IpSuffixOriginLinkLayerAddress,
+ IpSuffixOriginRandom,
+ IpSuffixOriginUnchanged = 1 << 4
+} NL_SUFFIX_ORIGIN;
+
+typedef enum {
+
+
+
+ NldsInvalid,
+ NldsTentative,
+ NldsDuplicate,
+ NldsDeprecated,
+ NldsPreferred,
+
+
+
+
+ IpDadStateInvalid = 0,
+ IpDadStateTentative,
+ IpDadStateDuplicate,
+ IpDadStateDeprecated,
+ IpDadStatePreferred,
+} NL_DAD_STATE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum {
+
+
+
+ RouteProtocolOther = 1,
+ RouteProtocolLocal = 2,
+ RouteProtocolNetMgmt = 3,
+ RouteProtocolIcmp = 4,
+ RouteProtocolEgp = 5,
+ RouteProtocolGgp = 6,
+ RouteProtocolHello = 7,
+ RouteProtocolRip = 8,
+ RouteProtocolIsIs = 9,
+ RouteProtocolEsIs = 10,
+ RouteProtocolCisco = 11,
+ RouteProtocolBbn = 12,
+ RouteProtocolOspf = 13,
+ RouteProtocolBgp = 14,
+ RouteProtocolIdpr = 15,
+ RouteProtocolEigrp = 16,
+ RouteProtocolDvmrp = 17,
+ RouteProtocolRpl = 18,
+ RouteProtocolDhcp = 19,
+
+ MIB_IPPROTO_OTHER = 1, PROTO_IP_OTHER = 1,
+ MIB_IPPROTO_LOCAL = 2, PROTO_IP_LOCAL = 2,
+ MIB_IPPROTO_NETMGMT = 3, PROTO_IP_NETMGMT = 3,
+ MIB_IPPROTO_ICMP = 4, PROTO_IP_ICMP = 4,
+ MIB_IPPROTO_EGP = 5, PROTO_IP_EGP = 5,
+ MIB_IPPROTO_GGP = 6, PROTO_IP_GGP = 6,
+ MIB_IPPROTO_HELLO = 7, PROTO_IP_HELLO = 7,
+ MIB_IPPROTO_RIP = 8, PROTO_IP_RIP = 8,
+ MIB_IPPROTO_IS_IS = 9, PROTO_IP_IS_IS = 9,
+ MIB_IPPROTO_ES_IS = 10, PROTO_IP_ES_IS = 10,
+ MIB_IPPROTO_CISCO = 11, PROTO_IP_CISCO = 11,
+ MIB_IPPROTO_BBN = 12, PROTO_IP_BBN = 12,
+ MIB_IPPROTO_OSPF = 13, PROTO_IP_OSPF = 13,
+ MIB_IPPROTO_BGP = 14, PROTO_IP_BGP = 14,
+ MIB_IPPROTO_IDPR = 15, PROTO_IP_IDPR = 15,
+ MIB_IPPROTO_EIGRP = 16, PROTO_IP_EIGRP = 16,
+ MIB_IPPROTO_DVMRP = 17, PROTO_IP_DVMRP = 17,
+ MIB_IPPROTO_RPL = 18, PROTO_IP_RPL = 18,
+ MIB_IPPROTO_DHCP = 19, PROTO_IP_DHCP = 19,
+
+
+
+
+ MIB_IPPROTO_NT_AUTOSTATIC = 10002, PROTO_IP_NT_AUTOSTATIC = 10002,
+ MIB_IPPROTO_NT_STATIC = 10006, PROTO_IP_NT_STATIC = 10006,
+ MIB_IPPROTO_NT_STATIC_NON_DOD = 10007, PROTO_IP_NT_STATIC_NON_DOD = 10007,
+
+} NL_ROUTE_PROTOCOL, *PNL_ROUTE_PROTOCOL;
+
+typedef enum {
+ NlatUnspecified,
+ NlatUnicast,
+ NlatAnycast,
+ NlatMulticast,
+ NlatBroadcast,
+ NlatInvalid
+} NL_ADDRESS_TYPE, *PNL_ADDRESS_TYPE;
+
+
+
+
+
+
+
+typedef enum _NL_ROUTE_ORIGIN {
+ NlroManual,
+ NlroWellKnown,
+ NlroDHCP,
+ NlroRouterAdvertisement,
+ Nlro6to4,
+} NL_ROUTE_ORIGIN, *PNL_ROUTE_ORIGIN;
+
+
+
+
+
+
+
+
+typedef enum _NL_NEIGHBOR_STATE {
+ NlnsUnreachable,
+ NlnsIncomplete,
+ NlnsProbe,
+ NlnsDelay,
+ NlnsStale,
+ NlnsReachable,
+ NlnsPermanent,
+ NlnsMaximum,
+} NL_NEIGHBOR_STATE, *PNL_NEIGHBOR_STATE;
+
+typedef enum _NL_LINK_LOCAL_ADDRESS_BEHAVIOR{
+ LinkLocalAlwaysOff = 0,
+ LinkLocalDelayed,
+
+
+ LinkLocalAlwaysOn,
+ LinkLocalUnchanged = -1
+} NL_LINK_LOCAL_ADDRESS_BEHAVIOR;
+
+#pragma warning(push)
+#pragma warning(disable:4214)
+
+typedef struct _NL_INTERFACE_OFFLOAD_ROD {
+ BOOLEAN NlChecksumSupported : 1;
+ BOOLEAN NlOptionsSupported : 1;
+ BOOLEAN TlDatagramChecksumSupported : 1;
+ BOOLEAN TlStreamChecksumSupported : 1;
+ BOOLEAN TlStreamOptionsSupported : 1;
+ BOOLEAN FastPathCompatible : 1;
+ BOOLEAN TlLargeSendOffloadSupported : 1;
+ BOOLEAN TlGiantSendOffloadSupported : 1;
+} NL_INTERFACE_OFFLOAD_ROD, *PNL_INTERFACE_OFFLOAD_ROD;
+
+#pragma warning(pop)
+
+typedef enum _NL_ROUTER_DISCOVERY_BEHAVIOR {
+ RouterDiscoveryDisabled = 0,
+ RouterDiscoveryEnabled,
+ RouterDiscoveryDhcp,
+ RouterDiscoveryUnchanged = -1
+} NL_ROUTER_DISCOVERY_BEHAVIOR;
+
+typedef enum _NL_BANDWIDTH_FLAG {
+ NlbwDisabled = 0,
+ NlbwEnabled,
+ NlbwUnchanged = -1
+} NL_BANDWIDTH_FLAG, *PNL_BANDWIDTH_FLAG;
+
+typedef struct _NL_PATH_BANDWIDTH_ROD {
+ ULONG64 Bandwidth;
+ ULONG64 Instability;
+ BOOLEAN BandwidthPeaked;
+} NL_PATH_BANDWIDTH_ROD, *PNL_PATH_BANDWIDTH_ROD;
+
+typedef enum _NL_NETWORK_CATEGORY {
+ NetworkCategoryPublic,
+ NetworkCategoryPrivate,
+ NetworkCategoryDomainAuthenticated,
+ NetworkCategoryUnchanged = -1,
+ NetworkCategoryUnknown = -1
+} NL_NETWORK_CATEGORY, *PNL_NETWORK_CATEGORY;
+
+typedef enum _NL_INTERFACE_NETWORK_CATEGORY_STATE {
+ NlincCategoryUnknown = 0,
+ NlincPublic = 1,
+ NlincPrivate = 2,
+ NlincDomainAuthenticated = 3,
+ NlincCategoryStateMax
+} NL_INTERFACE_NETWORK_CATEGORY_STATE,
+*PNL_INTERFACE_NETWORK_CATEGORY_STATE;
+
+typedef enum _NL_NETWORK_CONNECTIVITY_LEVEL_HINT {
+ NetworkConnectivityLevelHintUnknown = 0,
+ NetworkConnectivityLevelHintNone,
+ NetworkConnectivityLevelHintLocalAccess,
+ NetworkConnectivityLevelHintInternetAccess,
+ NetworkConnectivityLevelHintConstrainedInternetAccess,
+ NetworkConnectivityLevelHintHidden,
+} NL_NETWORK_CONNECTIVITY_LEVEL_HINT;
+
+typedef enum _NL_NETWORK_CONNECTIVITY_COST_HINT {
+ NetworkConnectivityCostHintUnknown = 0,
+ NetworkConnectivityCostHintUnrestricted,
+ NetworkConnectivityCostHintFixed,
+ NetworkConnectivityCostHintVariable,
+} NL_NETWORK_CONNECTIVITY_COST_HINT;
+
+typedef struct _NL_NETWORK_CONNECTIVITY_HINT {
+ NL_NETWORK_CONNECTIVITY_LEVEL_HINT ConnectivityLevel;
+
+
+
+
+ NL_NETWORK_CONNECTIVITY_COST_HINT ConnectivityCost;
+ BOOLEAN ApproachingDataLimit;
+ BOOLEAN OverDataLimit;
+ BOOLEAN Roaming;
+} NL_NETWORK_CONNECTIVITY_HINT;
+
+
+
+typedef struct _NL_BANDWIDTH_INFORMATION {
+ ULONG64 Bandwidth;
+ ULONG64 Instability;
+ BOOLEAN BandwidthPeaked;
+} NL_BANDWIDTH_INFORMATION, *PNL_BANDWIDTH_INFORMATION;
+
+#line 303 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\nldef.h"
+#pragma endregion
+
+#line 306 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\nldef.h"
+
+#pragma external_header(pop)
+#line 102 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 114 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+
+
+
+typedef enum _MIB_NOTIFICATION_TYPE {
+
+
+
+ MibParameterNotification,
+
+
+
+ MibAddInstance,
+
+
+
+ MibDeleteInstance,
+
+
+
+ MibInitialNotification,
+} MIB_NOTIFICATION_TYPE, *PMIB_NOTIFICATION_TYPE;
+
+#line 137 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+#pragma endregion
+
+
+
+
+
+
+
+
+
+
+
+#pragma region Application Family or OneCore Family or Games Family
+
+
+
+
+typedef struct _MIB_IF_ROW2 {
+
+
+
+ NET_LUID InterfaceLuid;
+ NET_IFINDEX InterfaceIndex;
+
+
+
+
+ GUID InterfaceGuid;
+ WCHAR Alias[256 + 1];
+ WCHAR Description[256 + 1];
+ ULONG PhysicalAddressLength;
+ UCHAR PhysicalAddress[32];
+ UCHAR PermanentPhysicalAddress[32];
+
+ ULONG Mtu;
+ IFTYPE Type;
+ TUNNEL_TYPE TunnelType;
+ NDIS_MEDIUM MediaType;
+ NDIS_PHYSICAL_MEDIUM PhysicalMediumType;
+ NET_IF_ACCESS_TYPE AccessType;
+ NET_IF_DIRECTION_TYPE DirectionType;
+ struct {
+ BOOLEAN HardwareInterface : 1;
+ BOOLEAN FilterInterface : 1;
+ BOOLEAN ConnectorPresent : 1;
+ BOOLEAN NotAuthenticated : 1;
+ BOOLEAN NotMediaConnected : 1;
+ BOOLEAN Paused : 1;
+ BOOLEAN LowPower : 1;
+ BOOLEAN EndPointInterface : 1;
+ } InterfaceAndOperStatusFlags;
+
+ IF_OPER_STATUS OperStatus;
+ NET_IF_ADMIN_STATUS AdminStatus;
+ NET_IF_MEDIA_CONNECT_STATE MediaConnectState;
+ NET_IF_NETWORK_GUID NetworkGuid;
+ NET_IF_CONNECTION_TYPE ConnectionType;
+
+
+
+
+ ULONG64 TransmitLinkSpeed;
+ ULONG64 ReceiveLinkSpeed;
+
+ ULONG64 InOctets;
+ ULONG64 InUcastPkts;
+ ULONG64 InNUcastPkts;
+ ULONG64 InDiscards;
+ ULONG64 InErrors;
+ ULONG64 InUnknownProtos;
+ ULONG64 InUcastOctets;
+ ULONG64 InMulticastOctets;
+ ULONG64 InBroadcastOctets;
+ ULONG64 OutOctets;
+ ULONG64 OutUcastPkts;
+ ULONG64 OutNUcastPkts;
+ ULONG64 OutDiscards;
+ ULONG64 OutErrors;
+ ULONG64 OutUcastOctets;
+ ULONG64 OutMulticastOctets;
+ ULONG64 OutBroadcastOctets;
+ ULONG64 OutQLen;
+} MIB_IF_ROW2, *PMIB_IF_ROW2;
+
+typedef struct _MIB_IF_TABLE2 {
+ ULONG NumEntries;
+ MIB_IF_ROW2 Table[1];
+} MIB_IF_TABLE2, *PMIB_IF_TABLE2;
+
+
+
+
+NTSTATUS __stdcall
+GetIfEntry2(
+ PMIB_IF_ROW2 Row
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 261 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family or Games Family
+
+
+
+
+typedef enum _MIB_IF_ENTRY_LEVEL {
+ MibIfEntryNormal = 0,
+ MibIfEntryNormalWithoutStatistics = 2
+} MIB_IF_ENTRY_LEVEL, *PMIB_IF_ENTRY_LEVEL;
+
+
+
+
+NTSTATUS __stdcall
+GetIfEntry2Ex(
+ MIB_IF_ENTRY_LEVEL Level,
+ PMIB_IF_ROW2 Row
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 314 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+
+
+
+
+NTSTATUS __stdcall
+GetIfTable2(
+ PMIB_IF_TABLE2 *Table
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _MIB_IF_TABLE_LEVEL {
+ MibIfTableNormal,
+ MibIfTableRaw,
+
+ MibIfTableNormalWithoutStatistics
+ #line 351 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+} MIB_IF_TABLE_LEVEL, *PMIB_IF_TABLE_LEVEL;
+
+
+
+
+NTSTATUS __stdcall
+GetIfTable2Ex(
+ MIB_IF_TABLE_LEVEL Level,
+ PMIB_IF_TABLE2 *Table
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _MIB_IPINTERFACE_ROW {
+
+
+
+ ADDRESS_FAMILY Family;
+ NET_LUID InterfaceLuid;
+ NET_IFINDEX InterfaceIndex;
+
+
+
+
+
+
+
+
+ ULONG MaxReassemblySize;
+ ULONG64 InterfaceIdentifier;
+ ULONG MinRouterAdvertisementInterval;
+ ULONG MaxRouterAdvertisementInterval;
+
+
+
+
+ BOOLEAN AdvertisingEnabled;
+ BOOLEAN ForwardingEnabled;
+ BOOLEAN WeakHostSend;
+ BOOLEAN WeakHostReceive;
+ BOOLEAN UseAutomaticMetric;
+ BOOLEAN UseNeighborUnreachabilityDetection;
+ BOOLEAN ManagedAddressConfigurationSupported;
+ BOOLEAN OtherStatefulConfigurationSupported;
+ BOOLEAN AdvertiseDefaultRoute;
+
+ NL_ROUTER_DISCOVERY_BEHAVIOR RouterDiscoveryBehavior;
+ ULONG DadTransmits;
+ ULONG BaseReachableTime;
+ ULONG RetransmitTime;
+ ULONG PathMtuDiscoveryTimeout;
+
+ NL_LINK_LOCAL_ADDRESS_BEHAVIOR LinkLocalAddressBehavior;
+ ULONG LinkLocalAddressTimeout;
+ ULONG ZoneIndices[ScopeLevelCount];
+ ULONG SitePrefixLength;
+ ULONG Metric;
+ ULONG NlMtu;
+
+
+
+
+ BOOLEAN Connected;
+ BOOLEAN SupportsWakeUpPatterns;
+ BOOLEAN SupportsNeighborDiscovery;
+ BOOLEAN SupportsRouterDiscovery;
+
+ ULONG ReachableTime;
+
+ NL_INTERFACE_OFFLOAD_ROD TransmitOffload;
+ NL_INTERFACE_OFFLOAD_ROD ReceiveOffload;
+
+
+
+
+
+ BOOLEAN DisableDefaultRoutes;
+} MIB_IPINTERFACE_ROW, *PMIB_IPINTERFACE_ROW;
+
+typedef struct _MIB_IPINTERFACE_TABLE {
+ ULONG NumEntries;
+ MIB_IPINTERFACE_ROW Table[1];
+} MIB_IPINTERFACE_TABLE, *PMIB_IPINTERFACE_TABLE;
+
+typedef struct _MIB_IFSTACK_ROW {
+ NET_IFINDEX HigherLayerInterfaceIndex;
+ NET_IFINDEX LowerLayerInterfaceIndex;
+} MIB_IFSTACK_ROW, *PMIB_IFSTACK_ROW;
+
+typedef struct _MIB_INVERTEDIFSTACK_ROW {
+ NET_IFINDEX LowerLayerInterfaceIndex;
+ NET_IFINDEX HigherLayerInterfaceIndex;
+} MIB_INVERTEDIFSTACK_ROW, *PMIB_INVERTEDIFSTACK_ROW;
+
+typedef struct _MIB_IFSTACK_TABLE {
+ ULONG NumEntries;
+ MIB_IFSTACK_ROW Table[1];
+} MIB_IFSTACK_TABLE, *PMIB_IFSTACK_TABLE;
+
+typedef struct _MIB_INVERTEDIFSTACK_TABLE {
+ ULONG NumEntries;
+ MIB_INVERTEDIFSTACK_ROW Table[1];
+} MIB_INVERTEDIFSTACK_TABLE, *PMIB_INVERTEDIFSTACK_TABLE;
+
+typedef
+void
+(__stdcall *PIPINTERFACE_CHANGE_CALLBACK) (
+ PVOID CallerContext,
+ PMIB_IPINTERFACE_ROW Row ,
+ MIB_NOTIFICATION_TYPE NotificationType
+ );
+
+typedef struct _MIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES {
+ NL_BANDWIDTH_INFORMATION InboundBandwidthInformation;
+ NL_BANDWIDTH_INFORMATION OutboundBandwidthInformation;
+} MIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES,
+ *PMIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES;
+
+
+
+
+NTSTATUS __stdcall
+GetIfStackTable(
+ PMIB_IFSTACK_TABLE *Table
+ );
+
+
+
+
+NTSTATUS __stdcall
+GetInvertedIfStackTable(
+ PMIB_INVERTEDIFSTACK_TABLE *Table
+ );
+
+
+
+
+NTSTATUS __stdcall
+GetIpInterfaceEntry(
+ PMIB_IPINTERFACE_ROW Row
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+GetIpInterfaceTable(
+ ADDRESS_FAMILY Family,
+ PMIB_IPINTERFACE_TABLE *Table
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+void
+__stdcall
+InitializeIpInterfaceEntry(
+ PMIB_IPINTERFACE_ROW Row
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+NotifyIpInterfaceChange(
+ ADDRESS_FAMILY Family,
+ PIPINTERFACE_CHANGE_CALLBACK Callback,
+ PVOID CallerContext,
+ BOOLEAN InitialNotification,
+ HANDLE *NotificationHandle
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+SetIpInterfaceEntry(
+ PMIB_IPINTERFACE_ROW Row
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+GetIpNetworkConnectionBandwidthEstimates(
+ NET_IFINDEX InterfaceIndex,
+ ADDRESS_FAMILY AddressFamily,
+ PMIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES BandwidthEstimates
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 743 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family or Games Family
+
+
+
+
+
+typedef struct _MIB_UNICASTIPADDRESS_ROW {
+
+
+
+ SOCKADDR_INET Address;
+ NET_LUID InterfaceLuid;
+ NET_IFINDEX InterfaceIndex;
+
+
+
+
+ NL_PREFIX_ORIGIN PrefixOrigin;
+ NL_SUFFIX_ORIGIN SuffixOrigin;
+ ULONG ValidLifetime;
+ ULONG PreferredLifetime;
+ UINT8 OnLinkPrefixLength;
+ BOOLEAN SkipAsSource;
+
+
+
+
+ NL_DAD_STATE DadState;
+ SCOPE_ID ScopeId;
+ LARGE_INTEGER CreationTimeStamp;
+} MIB_UNICASTIPADDRESS_ROW, *PMIB_UNICASTIPADDRESS_ROW;
+
+typedef struct _MIB_UNICASTIPADDRESS_TABLE {
+ ULONG NumEntries;
+ MIB_UNICASTIPADDRESS_ROW Table[1];
+} MIB_UNICASTIPADDRESS_TABLE, *PMIB_UNICASTIPADDRESS_TABLE;
+
+typedef
+void
+(__stdcall *PUNICAST_IPADDRESS_CHANGE_CALLBACK) (
+ PVOID CallerContext,
+ PMIB_UNICASTIPADDRESS_ROW Row,
+ MIB_NOTIFICATION_TYPE NotificationType
+ );
+
+#line 791 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family or Games Family
+
+
+
+
+
+NTSTATUS __stdcall
+CreateUnicastIpAddressEntry(
+ const MIB_UNICASTIPADDRESS_ROW *Row
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+DeleteUnicastIpAddressEntry(
+ const MIB_UNICASTIPADDRESS_ROW *Row
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+GetUnicastIpAddressEntry(
+ PMIB_UNICASTIPADDRESS_ROW Row
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 898 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family or Games Family
+
+
+
+
+
+NTSTATUS __stdcall
+GetUnicastIpAddressTable(
+ ADDRESS_FAMILY Family,
+ PMIB_UNICASTIPADDRESS_TABLE *Table
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 944 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family or Games Family
+
+
+
+
+void
+__stdcall
+InitializeUnicastIpAddressEntry(
+ PMIB_UNICASTIPADDRESS_ROW Row
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 981 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family or Games Family
+
+
+
+
+
+NTSTATUS __stdcall
+NotifyUnicastIpAddressChange(
+ ADDRESS_FAMILY Family,
+ PUNICAST_IPADDRESS_CHANGE_CALLBACK Callback,
+ PVOID CallerContext,
+ BOOLEAN InitialNotification,
+ HANDLE *NotificationHandle
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+void
+(__stdcall *PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK) (
+ PVOID CallerContext,
+ PMIB_UNICASTIPADDRESS_TABLE AddressTable
+ );
+
+
+
+
+NTSTATUS __stdcall
+NotifyStableUnicastIpAddressTable(
+ ADDRESS_FAMILY Family,
+ PMIB_UNICASTIPADDRESS_TABLE* Table,
+ PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK CallerCallback,
+ PVOID CallerContext,
+ HANDLE *NotificationHandle
+ );
+
+#line 1058 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family or Games Family
+
+
+
+
+
+NTSTATUS __stdcall
+SetUnicastIpAddressEntry(
+ const MIB_UNICASTIPADDRESS_ROW *Row
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _MIB_ANYCASTIPADDRESS_ROW {
+
+
+
+ SOCKADDR_INET Address;
+ NET_LUID InterfaceLuid;
+ NET_IFINDEX InterfaceIndex;
+
+
+
+
+ SCOPE_ID ScopeId;
+} MIB_ANYCASTIPADDRESS_ROW, *PMIB_ANYCASTIPADDRESS_ROW;
+
+typedef struct _MIB_ANYCASTIPADDRESS_TABLE {
+ ULONG NumEntries;
+ MIB_ANYCASTIPADDRESS_ROW Table[1];
+} MIB_ANYCASTIPADDRESS_TABLE, *PMIB_ANYCASTIPADDRESS_TABLE;
+
+
+
+
+NTSTATUS __stdcall
+CreateAnycastIpAddressEntry(
+ const MIB_ANYCASTIPADDRESS_ROW *Row
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+DeleteAnycastIpAddressEntry(
+ const MIB_ANYCASTIPADDRESS_ROW *Row
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+GetAnycastIpAddressEntry(
+ PMIB_ANYCASTIPADDRESS_ROW Row
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+GetAnycastIpAddressTable(
+ ADDRESS_FAMILY Family,
+ PMIB_ANYCASTIPADDRESS_TABLE *Table
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _MIB_MULTICASTIPADDRESS_ROW {
+
+
+
+ SOCKADDR_INET Address;
+ NET_IFINDEX InterfaceIndex;
+ NET_LUID InterfaceLuid;
+
+
+
+
+ SCOPE_ID ScopeId;
+} MIB_MULTICASTIPADDRESS_ROW, *PMIB_MULTICASTIPADDRESS_ROW;
+
+typedef struct _MIB_MULTICASTIPADDRESS_TABLE {
+ ULONG NumEntries;
+ MIB_MULTICASTIPADDRESS_ROW Table[1];
+} MIB_MULTICASTIPADDRESS_TABLE, *PMIB_MULTICASTIPADDRESS_TABLE;
+
+
+
+
+NTSTATUS __stdcall
+GetMulticastIpAddressEntry(
+ PMIB_MULTICASTIPADDRESS_ROW Row
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+GetMulticastIpAddressTable(
+ ADDRESS_FAMILY Family,
+ PMIB_MULTICASTIPADDRESS_TABLE *Table
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1360 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family or Games Family
+
+
+typedef struct _IP_ADDRESS_PREFIX {
+ SOCKADDR_INET Prefix;
+ UINT8 PrefixLength;
+} IP_ADDRESS_PREFIX, *PIP_ADDRESS_PREFIX;
+
+typedef struct _MIB_IPFORWARD_ROW2 {
+
+
+
+ NET_LUID InterfaceLuid;
+ NET_IFINDEX InterfaceIndex;
+ IP_ADDRESS_PREFIX DestinationPrefix;
+ SOCKADDR_INET NextHop;
+
+
+
+
+ UCHAR SitePrefixLength;
+ ULONG ValidLifetime;
+ ULONG PreferredLifetime;
+ ULONG Metric;
+ NL_ROUTE_PROTOCOL Protocol;
+
+ BOOLEAN Loopback;
+ BOOLEAN AutoconfigureAddress;
+ BOOLEAN Publish;
+ BOOLEAN Immortal;
+
+
+
+
+ ULONG Age;
+ NL_ROUTE_ORIGIN Origin;
+} MIB_IPFORWARD_ROW2, *PMIB_IPFORWARD_ROW2;
+
+typedef struct _MIB_IPFORWARD_TABLE2 {
+ ULONG NumEntries;
+ MIB_IPFORWARD_ROW2 Table[1];
+} MIB_IPFORWARD_TABLE2, *PMIB_IPFORWARD_TABLE2;
+
+#line 1406 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family or Games Family
+
+
+typedef
+void
+(__stdcall *PIPFORWARD_CHANGE_CALLBACK) (
+ PVOID CallerContext,
+ PMIB_IPFORWARD_ROW2 Row,
+ MIB_NOTIFICATION_TYPE NotificationType
+ );
+
+
+
+
+NTSTATUS __stdcall
+CreateIpForwardEntry2(
+ const MIB_IPFORWARD_ROW2 *Row
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+DeleteIpForwardEntry2(
+ const MIB_IPFORWARD_ROW2 *Row
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1489 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family or Games Family
+
+
+
+
+
+NTSTATUS __stdcall
+GetBestRoute2(
+ NET_LUID *InterfaceLuid,
+ NET_IFINDEX InterfaceIndex,
+ const SOCKADDR_INET *SourceAddress,
+ const SOCKADDR_INET *DestinationAddress,
+ ULONG AddressSortOptions,
+ PMIB_IPFORWARD_ROW2 BestRoute,
+ SOCKADDR_INET *BestSourceAddress
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1546 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family or Games Family
+
+
+
+
+
+NTSTATUS __stdcall
+GetIpForwardEntry2(
+ PMIB_IPFORWARD_ROW2 Row
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1588 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family or Games Family
+
+
+
+
+
+NTSTATUS __stdcall
+GetIpForwardTable2(
+ ADDRESS_FAMILY Family,
+ PMIB_IPFORWARD_TABLE2 *Table
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1633 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family or Games Family
+
+
+
+
+void
+__stdcall
+InitializeIpForwardEntry(
+ PMIB_IPFORWARD_ROW2 Row
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+NotifyRouteChange2(
+ ADDRESS_FAMILY AddressFamily,
+ PIPFORWARD_CHANGE_CALLBACK Callback,
+ PVOID CallerContext,
+ BOOLEAN InitialNotification,
+ HANDLE *NotificationHandle
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+SetIpForwardEntry2(
+ const MIB_IPFORWARD_ROW2 *Route
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _MIB_IPPATH_ROW {
+
+
+
+
+ SOCKADDR_INET Source;
+ SOCKADDR_INET Destination;
+ NET_LUID InterfaceLuid;
+ NET_IFINDEX InterfaceIndex;
+
+
+
+
+
+
+
+ SOCKADDR_INET CurrentNextHop;
+
+
+
+
+ ULONG PathMtu;
+
+
+
+
+ ULONG RttMean;
+
+
+
+
+ ULONG RttDeviation;
+ union {
+ ULONG LastReachable;
+ ULONG LastUnreachable;
+ };
+ BOOLEAN IsReachable;
+
+
+
+
+ ULONG64 LinkTransmitSpeed;
+ ULONG64 LinkReceiveSpeed;
+
+} MIB_IPPATH_ROW, *PMIB_IPPATH_ROW;
+
+typedef struct _MIB_IPPATH_TABLE {
+ ULONG NumEntries;
+ MIB_IPPATH_ROW Table[1];
+} MIB_IPPATH_TABLE, *PMIB_IPPATH_TABLE;
+
+
+
+
+
+NTSTATUS __stdcall
+FlushIpPathTable(
+ ADDRESS_FAMILY Family
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+GetIpPathEntry(
+ PMIB_IPPATH_ROW Row
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+GetIpPathTable(
+ ADDRESS_FAMILY Family,
+ PMIB_IPPATH_TABLE *Table
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _MIB_IPNET_ROW2 {
+
+
+
+ SOCKADDR_INET Address;
+ NET_IFINDEX InterfaceIndex;
+ NET_LUID InterfaceLuid;
+
+
+
+
+ UCHAR PhysicalAddress[32];
+
+
+
+
+ ULONG PhysicalAddressLength;
+ NL_NEIGHBOR_STATE State;
+
+ union {
+ struct {
+ BOOLEAN IsRouter : 1;
+ BOOLEAN IsUnreachable : 1;
+ };
+ UCHAR Flags;
+ };
+
+ union {
+ ULONG LastReachable;
+ ULONG LastUnreachable;
+ } ReachabilityTime;
+} MIB_IPNET_ROW2, *PMIB_IPNET_ROW2;
+
+typedef struct _MIB_IPNET_TABLE2 {
+ ULONG NumEntries;
+ MIB_IPNET_ROW2 Table[1];
+} MIB_IPNET_TABLE2, *PMIB_IPNET_TABLE2;
+
+
+
+
+NTSTATUS __stdcall
+CreateIpNetEntry2(
+ const MIB_IPNET_ROW2 *Row
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+DeleteIpNetEntry2(
+ const MIB_IPNET_ROW2 *Row
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+FlushIpNetTable2(
+ ADDRESS_FAMILY Family,
+ NET_IFINDEX InterfaceIndex
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+GetIpNetEntry2(
+ PMIB_IPNET_ROW2 Row
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+GetIpNetTable2(
+ ADDRESS_FAMILY Family,
+ PMIB_IPNET_TABLE2 *Table
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+ResolveIpNetEntry2(
+ PMIB_IPNET_ROW2 Row,
+ const SOCKADDR_INET *SourceAddress
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+SetIpNetEntry2(
+ PMIB_IPNET_ROW2 Row
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2206 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family
+
+
+
+
+
+
+
+typedef
+void
+(__stdcall *PTEREDO_PORT_CHANGE_CALLBACK) (
+ PVOID CallerContext,
+ USHORT Port,
+ MIB_NOTIFICATION_TYPE NotificationType
+ );
+
+
+
+
+NTSTATUS __stdcall
+NotifyTeredoPortChange(
+ PTEREDO_PORT_CHANGE_CALLBACK Callback,
+ PVOID CallerContext,
+ BOOLEAN InitialNotification,
+ HANDLE *NotificationHandle
+ );
+
+
+
+
+NTSTATUS __stdcall
+GetTeredoPort(
+ USHORT *Port
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma deprecated(NotifyTeredoPortChange)
+#pragma deprecated(GetTeredoPort)
+
+#line 2271 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+
+
+
+
+
+#line 2277 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family or Games Family
+
+
+
+
+NTSTATUS __stdcall
+CancelMibChangeNotify2(
+ HANDLE NotificationHandle
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+void
+__stdcall
+FreeMibTable(
+ PVOID Memory
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2334 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+#pragma endregion
+
+#pragma region Desktop Family or OneCore Family or Games Family
+
+
+
+
+
+NTSTATUS __stdcall
+CreateSortedAddressPairs(
+ const PSOCKADDR_IN6 SourceAddressList,
+ ULONG SourceAddressCount,
+ const PSOCKADDR_IN6 DestinationAddressList,
+ ULONG DestinationAddressCount,
+ ULONG AddressSortOptions,
+
+ PSOCKADDR_IN6_PAIR *SortedAddressPairList,
+ ULONG *SortedAddressPairCount
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2397 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+#pragma endregion
+
+#line 2400 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+
+#pragma region Desktop Family or OneCore Family or Games Family
+
+
+
+
+
+NTSTATUS __stdcall
+ConvertCompartmentGuidToId(
+ const GUID *CompartmentGuid,
+ PNET_IF_COMPARTMENT_ID CompartmentId
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+ConvertCompartmentIdToGuid(
+ NET_IF_COMPARTMENT_ID CompartmentId,
+ GUID *CompartmentGuid
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+ConvertInterfaceNameToLuidA(
+ const CHAR *InterfaceName,
+ NET_LUID *InterfaceLuid
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+ConvertInterfaceNameToLuidW(
+ const WCHAR *InterfaceName,
+ NET_LUID *InterfaceLuid
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+ConvertInterfaceLuidToNameA(
+ const NET_LUID *InterfaceLuid,
+ PSTR InterfaceName,
+ SIZE_T Length
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+ConvertInterfaceLuidToNameW(
+ const NET_LUID *InterfaceLuid,
+ PWSTR InterfaceName,
+ SIZE_T Length
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+ConvertInterfaceLuidToIndex(
+ const NET_LUID *InterfaceLuid,
+ PNET_IFINDEX InterfaceIndex
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+ConvertInterfaceIndexToLuid(
+ NET_IFINDEX InterfaceIndex,
+ PNET_LUID InterfaceLuid
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+ConvertInterfaceLuidToAlias(
+ const NET_LUID *InterfaceLuid,
+ PWSTR InterfaceAlias,
+ SIZE_T Length
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+ConvertInterfaceAliasToLuid(
+ const WCHAR *InterfaceAlias,
+ PNET_LUID InterfaceLuid
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+ConvertInterfaceLuidToGuid(
+ const NET_LUID *InterfaceLuid,
+ GUID *InterfaceGuid
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+ConvertInterfaceGuidToLuid(
+ const GUID *InterfaceGuid,
+ PNET_LUID InterfaceLuid
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NET_IFINDEX
+__stdcall
+if_nametoindex(
+ PCSTR InterfaceName
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+PCHAR
+__stdcall
+if_indextoname(
+ NET_IFINDEX InterfaceIndex,
+ PCHAR InterfaceName
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NET_IF_COMPARTMENT_ID
+__stdcall
+GetCurrentThreadCompartmentId(
+ void
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+SetCurrentThreadCompartmentId(
+ NET_IF_COMPARTMENT_ID CompartmentId
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+void
+__stdcall
+GetCurrentThreadCompartmentScope(
+ PNET_IF_COMPARTMENT_SCOPE CompartmentScope,
+ PNET_IF_COMPARTMENT_ID CompartmentId
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+SetCurrentThreadCompartmentScope(
+ NET_IF_COMPARTMENT_SCOPE CompartmentScope
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NET_IF_COMPARTMENT_ID
+__stdcall
+GetJobCompartmentId(
+ HANDLE JobHandle
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+SetJobCompartmentId(
+ HANDLE JobHandle,
+ NET_IF_COMPARTMENT_ID CompartmentId
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NET_IF_COMPARTMENT_ID
+__stdcall
+GetSessionCompartmentId(
+ ULONG SessionId
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+SetSessionCompartmentId(
+ ULONG SessionId,
+ NET_IF_COMPARTMENT_ID CompartmentId
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NET_IF_COMPARTMENT_ID
+__stdcall
+GetDefaultCompartmentId(
+ void
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+GetNetworkInformation(
+ const NET_IF_NETWORK_GUID *NetworkGuid,
+ PNET_IF_COMPARTMENT_ID CompartmentId,
+ PULONG SiteId,
+ PWCHAR NetworkName,
+ ULONG Length
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+SetNetworkInformation(
+ const NET_IF_NETWORK_GUID *NetworkGuid,
+ NET_IF_COMPARTMENT_ID CompartmentId,
+ const WCHAR *NetworkName
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(pop)
+
+
+NTSTATUS __stdcall
+ConvertLengthToIpv4Mask(
+ ULONG MaskLength,
+ PULONG Mask
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+ConvertIpv4MaskToLength(
+ ULONG Mask,
+ PUINT8 MaskLength
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _DNS_SETTINGS
+{
+ ULONG Version;
+ ULONG64 Flags;
+ PWSTR Hostname;
+ PWSTR Domain;
+ PWSTR SearchList;
+} DNS_SETTINGS;
+
+typedef struct _DNS_SETTINGS2
+{
+ ULONG Version;
+ ULONG64 Flags;
+ PWSTR Hostname;
+ PWSTR Domain;
+ PWSTR SearchList;
+ ULONG64 SettingFlags;
+} DNS_SETTINGS2;
+
+typedef struct _DNS_DOH_SERVER_SETTINGS
+{
+
+
+
+ PWSTR Template;
+#line 3237 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+ ULONG64 Flags;
+} DNS_DOH_SERVER_SETTINGS;
+
+typedef enum _DNS_SERVER_PROPERTY_TYPE
+{
+ DnsServerInvalidProperty = 0,
+ DnsServerDohProperty,
+} DNS_SERVER_PROPERTY_TYPE;
+
+
+
+
+
+
+
+typedef union _DNS_SERVER_PROPERTY_TYPES
+{
+ DNS_DOH_SERVER_SETTINGS *DohSettings;
+} DNS_SERVER_PROPERTY_TYPES;
+#line 3257 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+
+typedef struct _DNS_SERVER_PROPERTY
+{
+ ULONG Version;
+ ULONG ServerIndex;
+ DNS_SERVER_PROPERTY_TYPE Type;
+
+
+
+ DNS_SERVER_PROPERTY_TYPES Property;
+#line 3268 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+} DNS_SERVER_PROPERTY;
+
+typedef struct _DNS_INTERFACE_SETTINGS
+{
+ ULONG Version;
+ ULONG64 Flags;
+ PWSTR Domain;
+ PWSTR NameServer;
+ PWSTR SearchList;
+ ULONG RegistrationEnabled;
+ ULONG RegisterAdapterName;
+ ULONG EnableLLMNR;
+ ULONG QueryAdapterName;
+ PWSTR ProfileNameServer;
+} DNS_INTERFACE_SETTINGS;
+
+typedef struct _DNS_INTERFACE_SETTINGS_EX
+{
+ DNS_INTERFACE_SETTINGS SettingsV1;
+ ULONG DisableUnconstrainedQueries;
+ PWSTR SupplementalSearchList;
+} DNS_INTERFACE_SETTINGS_EX;
+
+typedef struct _DNS_INTERFACE_SETTINGS3
+{
+ ULONG Version;
+ ULONG64 Flags;
+ PWSTR Domain;
+ PWSTR NameServer;
+ PWSTR SearchList;
+ ULONG RegistrationEnabled;
+ ULONG RegisterAdapterName;
+ ULONG EnableLLMNR;
+ ULONG QueryAdapterName;
+ PWSTR ProfileNameServer;
+ ULONG DisableUnconstrainedQueries;
+ PWSTR SupplementalSearchList;
+ ULONG cServerProperties;
+ DNS_SERVER_PROPERTY *ServerProperties;
+ ULONG cProfileServerProperties;
+ DNS_SERVER_PROPERTY *ProfileServerProperties;
+} DNS_INTERFACE_SETTINGS3;
+
+typedef struct _DNS_INTERFACE_SETTINGS4
+{
+ ULONG Version;
+ ULONG64 Flags;
+ PWSTR Domain;
+ PWSTR NameServer;
+ PWSTR SearchList;
+ ULONG RegistrationEnabled;
+ ULONG RegisterAdapterName;
+ ULONG EnableLLMNR;
+ ULONG QueryAdapterName;
+ PWSTR ProfileNameServer;
+ ULONG DisableUnconstrainedQueries;
+ PWSTR SupplementalSearchList;
+ ULONG cServerProperties;
+ DNS_SERVER_PROPERTY *ServerProperties;
+ ULONG cProfileServerProperties;
+ DNS_SERVER_PROPERTY *ProfileServerProperties;
+ ULONG EncryptedDnsAdapterFlags;
+} DNS_INTERFACE_SETTINGS4;
+
+NTSTATUS __stdcall
+GetDnsSettings(
+ DNS_SETTINGS *Settings
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+void
+__stdcall
+FreeDnsSettings(
+ DNS_SETTINGS *Settings
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+SetDnsSettings(
+ const DNS_SETTINGS *Settings
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+GetInterfaceDnsSettings(
+ GUID Interface,
+ DNS_INTERFACE_SETTINGS *Settings
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+void
+__stdcall
+FreeInterfaceDnsSettings(
+ DNS_INTERFACE_SETTINGS *Settings
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+SetInterfaceDnsSettings(
+ GUID Interface,
+ const DNS_INTERFACE_SETTINGS *Settings
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+GetNetworkConnectivityHint(
+ NL_NETWORK_CONNECTIVITY_HINT *ConnectivityHint
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS __stdcall
+GetNetworkConnectivityHintForInterface(
+ NET_IFINDEX InterfaceIndex,
+ NL_NETWORK_CONNECTIVITY_HINT *ConnectivityHint
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+void
+(__stdcall *PNETWORK_CONNECTIVITY_HINT_CHANGE_CALLBACK) (
+ PVOID CallerContext,
+ NL_NETWORK_CONNECTIVITY_HINT ConnectivityHint
+ );
+
+
+
+
+NTSTATUS __stdcall
+NotifyNetworkConnectivityHintChange(
+ PNETWORK_CONNECTIVITY_HINT_CHANGE_CALLBACK Callback,
+ PVOID CallerContext,
+ BOOLEAN InitialNotification,
+ PHANDLE NotificationHandle
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3589 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+#pragma endregion
+
+#pragma region Application Family or OneCore Family or Games Family
+
+
+
+
+
+
+
+
+
+#line 3602 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+#pragma endregion
+
+#line 3605 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\netioapi.h"
+#pragma external_header(pop)
+#line 31 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma region Desktop Family
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 46 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 77 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+#line 87 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+#line 92 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+#line 103 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+#line 108 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+#line 112 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 126 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+#line 134 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 152 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+#line 161 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 181 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+#line 189 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+#line 195 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+#line 198 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+#line 202 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+#line 209 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+#line 219 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+#line 226 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+#line 231 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+#line 236 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+#line 241 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+#line 246 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+#line 251 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 270 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+#line 277 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+#line 281 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+#line 284 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+#line 287 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 312 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 324 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+#line 329 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 341 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 355 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+#line 359 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+#line 369 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+#line 379 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+#line 383 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 440 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 508 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+#line 513 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+#line 520 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 533 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+#line 537 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+#line 543 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+#line 550 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+#line 561 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+#line 566 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+#line 574 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+#line 582 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 599 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 619 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+#line 628 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+#line 634 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+#line 645 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 667 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+#line 678 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 697 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+#line 707 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+
+#line 720 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+#line 731 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 747 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 778 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+#line 789 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 808 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+#line 820 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+#line 825 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 841 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+#pragma endregion
+
+#line 844 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+#line 845 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+#pragma external_header(pop)
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 74 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+#line 76 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+
+
+
+typedef enum FWPS_BUILTIN_LAYERS_
+{
+
+ FWPS_LAYER_INBOUND_IPPACKET_V4,
+ FWPS_LAYER_INBOUND_IPPACKET_V4_DISCARD,
+ FWPS_LAYER_INBOUND_IPPACKET_V6,
+ FWPS_LAYER_INBOUND_IPPACKET_V6_DISCARD,
+ FWPS_LAYER_OUTBOUND_IPPACKET_V4,
+ FWPS_LAYER_OUTBOUND_IPPACKET_V4_DISCARD,
+ FWPS_LAYER_OUTBOUND_IPPACKET_V6,
+ FWPS_LAYER_OUTBOUND_IPPACKET_V6_DISCARD,
+ FWPS_LAYER_IPFORWARD_V4,
+ FWPS_LAYER_IPFORWARD_V4_DISCARD,
+ FWPS_LAYER_IPFORWARD_V6,
+ FWPS_LAYER_IPFORWARD_V6_DISCARD,
+ FWPS_LAYER_INBOUND_TRANSPORT_V4,
+ FWPS_LAYER_INBOUND_TRANSPORT_V4_DISCARD,
+ FWPS_LAYER_INBOUND_TRANSPORT_V6,
+ FWPS_LAYER_INBOUND_TRANSPORT_V6_DISCARD,
+ FWPS_LAYER_OUTBOUND_TRANSPORT_V4,
+ FWPS_LAYER_OUTBOUND_TRANSPORT_V4_DISCARD,
+ FWPS_LAYER_OUTBOUND_TRANSPORT_V6,
+ FWPS_LAYER_OUTBOUND_TRANSPORT_V6_DISCARD,
+ FWPS_LAYER_STREAM_V4,
+ FWPS_LAYER_STREAM_V4_DISCARD,
+ FWPS_LAYER_STREAM_V6,
+ FWPS_LAYER_STREAM_V6_DISCARD,
+ FWPS_LAYER_DATAGRAM_DATA_V4,
+ FWPS_LAYER_DATAGRAM_DATA_V4_DISCARD,
+ FWPS_LAYER_DATAGRAM_DATA_V6,
+ FWPS_LAYER_DATAGRAM_DATA_V6_DISCARD,
+ FWPS_LAYER_INBOUND_ICMP_ERROR_V4,
+ FWPS_LAYER_INBOUND_ICMP_ERROR_V4_DISCARD,
+ FWPS_LAYER_INBOUND_ICMP_ERROR_V6,
+ FWPS_LAYER_INBOUND_ICMP_ERROR_V6_DISCARD,
+ FWPS_LAYER_OUTBOUND_ICMP_ERROR_V4,
+ FWPS_LAYER_OUTBOUND_ICMP_ERROR_V4_DISCARD,
+ FWPS_LAYER_OUTBOUND_ICMP_ERROR_V6,
+ FWPS_LAYER_OUTBOUND_ICMP_ERROR_V6_DISCARD,
+ FWPS_LAYER_ALE_RESOURCE_ASSIGNMENT_V4,
+ FWPS_LAYER_ALE_RESOURCE_ASSIGNMENT_V4_DISCARD,
+ FWPS_LAYER_ALE_RESOURCE_ASSIGNMENT_V6,
+ FWPS_LAYER_ALE_RESOURCE_ASSIGNMENT_V6_DISCARD,
+ FWPS_LAYER_ALE_AUTH_LISTEN_V4,
+ FWPS_LAYER_ALE_AUTH_LISTEN_V4_DISCARD,
+ FWPS_LAYER_ALE_AUTH_LISTEN_V6,
+ FWPS_LAYER_ALE_AUTH_LISTEN_V6_DISCARD,
+ FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_V4,
+ FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_V4_DISCARD,
+ FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_V6,
+ FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_V6_DISCARD,
+ FWPS_LAYER_ALE_AUTH_CONNECT_V4,
+ FWPS_LAYER_ALE_AUTH_CONNECT_V4_DISCARD,
+ FWPS_LAYER_ALE_AUTH_CONNECT_V6,
+ FWPS_LAYER_ALE_AUTH_CONNECT_V6_DISCARD,
+ FWPS_LAYER_ALE_FLOW_ESTABLISHED_V4,
+ FWPS_LAYER_ALE_FLOW_ESTABLISHED_V4_DISCARD,
+ FWPS_LAYER_ALE_FLOW_ESTABLISHED_V6,
+ FWPS_LAYER_ALE_FLOW_ESTABLISHED_V6_DISCARD,
+
+ FWPS_LAYER_INBOUND_MAC_FRAME_ETHERNET,
+ FWPS_LAYER_OUTBOUND_MAC_FRAME_ETHERNET,
+
+
+
+#line 149 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_LAYER_INBOUND_MAC_FRAME_NATIVE,
+ FWPS_LAYER_OUTBOUND_MAC_FRAME_NATIVE,
+#line 152 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_LAYER_NAME_RESOLUTION_CACHE_V4,
+ FWPS_LAYER_NAME_RESOLUTION_CACHE_V6,
+ FWPS_LAYER_ALE_RESOURCE_RELEASE_V4,
+ FWPS_LAYER_ALE_RESOURCE_RELEASE_V6,
+ FWPS_LAYER_ALE_ENDPOINT_CLOSURE_V4,
+ FWPS_LAYER_ALE_ENDPOINT_CLOSURE_V6,
+ FWPS_LAYER_ALE_CONNECT_REDIRECT_V4,
+ FWPS_LAYER_ALE_CONNECT_REDIRECT_V6,
+ FWPS_LAYER_ALE_BIND_REDIRECT_V4,
+ FWPS_LAYER_ALE_BIND_REDIRECT_V6,
+ FWPS_LAYER_STREAM_PACKET_V4,
+ FWPS_LAYER_STREAM_PACKET_V6,
+
+ FWPS_LAYER_INGRESS_VSWITCH_ETHERNET,
+ FWPS_LAYER_EGRESS_VSWITCH_ETHERNET,
+ FWPS_LAYER_INGRESS_VSWITCH_TRANSPORT_V4,
+ FWPS_LAYER_INGRESS_VSWITCH_TRANSPORT_V6,
+ FWPS_LAYER_EGRESS_VSWITCH_TRANSPORT_V4,
+ FWPS_LAYER_EGRESS_VSWITCH_TRANSPORT_V6,
+
+ FWPS_LAYER_INBOUND_TRANSPORT_FAST,
+ FWPS_LAYER_OUTBOUND_TRANSPORT_FAST,
+ FWPS_LAYER_INBOUND_MAC_FRAME_NATIVE_FAST,
+ FWPS_LAYER_OUTBOUND_MAC_FRAME_NATIVE_FAST,
+
+ FWPS_LAYER_INBOUND_RESERVED2,
+
+ FWPS_LAYER_RESERVED_LAYER_9,
+ FWPS_LAYER_RESERVED_LAYER_10,
+
+ FWPS_LAYER_OUTBOUND_NETWORK_CONNECTION_POLICY_V4,
+ FWPS_LAYER_OUTBOUND_NETWORK_CONNECTION_POLICY_V6,
+#line 185 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 186 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 187 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 188 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 189 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 190 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_LAYER_IPSEC_KM_DEMUX_V4,
+ FWPS_LAYER_IPSEC_KM_DEMUX_V6,
+ FWPS_LAYER_IPSEC_V4,
+ FWPS_LAYER_IPSEC_V6,
+ FWPS_LAYER_IKEEXT_V4,
+ FWPS_LAYER_IKEEXT_V6,
+ FWPS_LAYER_RPC_UM,
+ FWPS_LAYER_RPC_EPMAP,
+ FWPS_LAYER_RPC_EP_ADD,
+ FWPS_LAYER_RPC_PROXY_CONN,
+ FWPS_LAYER_RPC_PROXY_IF,
+
+ FWPS_LAYER_KM_AUTHORIZATION,
+#line 205 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_BUILTIN_LAYER_MAX,
+} FWPS_BUILTIN_LAYERS;
+
+
+
+
+
+
+
+
+
+typedef enum FWPS_FIELDS_INBOUND_IPPACKET_V4_
+{
+ FWPS_FIELD_INBOUND_IPPACKET_V4_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_INBOUND_IPPACKET_V4_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_INBOUND_IPPACKET_V4_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_INBOUND_IPPACKET_V4_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_INBOUND_IPPACKET_V4_INTERFACE_INDEX,
+ FWPS_FIELD_INBOUND_IPPACKET_V4_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_INBOUND_IPPACKET_V4_FLAGS,
+ FWPS_FIELD_INBOUND_IPPACKET_V4_INTERFACE_TYPE,
+ FWPS_FIELD_INBOUND_IPPACKET_V4_TUNNEL_TYPE,
+
+ FWPS_FIELD_INBOUND_IPPACKET_V4_COMPARTMENT_ID,
+#line 230 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_INBOUND_IPPACKET_V4_MAX
+} FWPS_FIELDS_INBOUND_IPPACKET_V4;
+
+typedef enum FWPS_FIELDS_INBOUND_IPPACKET_V6_
+{
+ FWPS_FIELD_INBOUND_IPPACKET_V6_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_INBOUND_IPPACKET_V6_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_INBOUND_IPPACKET_V6_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_INBOUND_IPPACKET_V6_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_INBOUND_IPPACKET_V6_INTERFACE_INDEX,
+ FWPS_FIELD_INBOUND_IPPACKET_V6_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_INBOUND_IPPACKET_V6_FLAGS,
+ FWPS_FIELD_INBOUND_IPPACKET_V6_INTERFACE_TYPE,
+ FWPS_FIELD_INBOUND_IPPACKET_V6_TUNNEL_TYPE,
+
+ FWPS_FIELD_INBOUND_IPPACKET_V6_COMPARTMENT_ID,
+#line 247 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_INBOUND_IPPACKET_V6_MAX
+} FWPS_FIELDS_INBOUND_IPPACKET_V6;
+
+typedef enum FWPS_FIELDS_OUTBOUND_IPPACKET_V4_
+{
+ FWPS_FIELD_OUTBOUND_IPPACKET_V4_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_OUTBOUND_IPPACKET_V4_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_OUTBOUND_IPPACKET_V4_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_OUTBOUND_IPPACKET_V4_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_OUTBOUND_IPPACKET_V4_INTERFACE_INDEX,
+ FWPS_FIELD_OUTBOUND_IPPACKET_V4_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_OUTBOUND_IPPACKET_V4_FLAGS,
+ FWPS_FIELD_OUTBOUND_IPPACKET_V4_INTERFACE_TYPE,
+ FWPS_FIELD_OUTBOUND_IPPACKET_V4_TUNNEL_TYPE,
+
+ FWPS_FIELD_OUTBOUND_IPPACKET_V4_COMPARTMENT_ID,
+#line 264 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_OUTBOUND_IPPACKET_V4_MAX
+} FWPS_FIELDS_OUTBOUND_IPPACKET_V4;
+
+typedef enum FWPS_FIELDS_OUTBOUND_IPPACKET_V6_
+{
+ FWPS_FIELD_OUTBOUND_IPPACKET_V6_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_OUTBOUND_IPPACKET_V6_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_OUTBOUND_IPPACKET_V6_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_OUTBOUND_IPPACKET_V6_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_OUTBOUND_IPPACKET_V6_INTERFACE_INDEX,
+ FWPS_FIELD_OUTBOUND_IPPACKET_V6_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_OUTBOUND_IPPACKET_V6_FLAGS,
+ FWPS_FIELD_OUTBOUND_IPPACKET_V6_INTERFACE_TYPE,
+ FWPS_FIELD_OUTBOUND_IPPACKET_V6_TUNNEL_TYPE,
+
+ FWPS_FIELD_OUTBOUND_IPPACKET_V6_COMPARTMENT_ID,
+#line 281 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_OUTBOUND_IPPACKET_V6_MAX
+} FWPS_FIELDS_OUTBOUND_IPPACKET_V6;
+
+typedef enum FWPS_FIELDS_IPFORWARD_V4_
+{
+ FWPS_FIELD_IPFORWARD_V4_IP_SOURCE_ADDRESS,
+ FWPS_FIELD_IPFORWARD_V4_IP_DESTINATION_ADDRESS,
+ FWPS_FIELD_IPFORWARD_V4_IP_DESTINATION_ADDRESS_TYPE,
+ FWPS_FIELD_IPFORWARD_V4_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_IPFORWARD_V4_IP_FORWARD_INTERFACE,
+ FWPS_FIELD_IPFORWARD_V4_SOURCE_INTERFACE_INDEX,
+ FWPS_FIELD_IPFORWARD_V4_SOURCE_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_IPFORWARD_V4_DESTINATION_INTERFACE_INDEX,
+ FWPS_FIELD_IPFORWARD_V4_DESTINATION_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_IPFORWARD_V4_FLAGS,
+
+ FWPS_FIELD_IPFORWARD_V4_IP_PHYSICAL_ARRIVAL_INTERFACE,
+ FWPS_FIELD_IPFORWARD_V4_ARRIVAL_INTERFACE_PROFILE_ID,
+ FWPS_FIELD_IPFORWARD_V4_IP_PHYSICAL_NEXTHOP_INTERFACE,
+ FWPS_FIELD_IPFORWARD_V4_NEXTHOP_INTERFACE_PROFILE_ID,
+
+ FWPS_FIELD_IPFORWARD_V4_COMPARTMENT_ID,
+#line 304 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 305 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_IPFORWARD_V4_MAX
+} FWPS_FIELDS_IPFORWARD_V4;
+
+typedef enum FWPS_FIELDS_IPFORWARD_V6_
+{
+ FWPS_FIELD_IPFORWARD_V6_IP_SOURCE_ADDRESS,
+ FWPS_FIELD_IPFORWARD_V6_IP_DESTINATION_ADDRESS,
+ FWPS_FIELD_IPFORWARD_V6_IP_DESTINATION_ADDRESS_TYPE,
+ FWPS_FIELD_IPFORWARD_V6_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_IPFORWARD_V6_IP_FORWARD_INTERFACE,
+ FWPS_FIELD_IPFORWARD_V6_SOURCE_INTERFACE_INDEX,
+ FWPS_FIELD_IPFORWARD_V6_SOURCE_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_IPFORWARD_V6_DESTINATION_INTERFACE_INDEX,
+ FWPS_FIELD_IPFORWARD_V6_DESTINATION_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_IPFORWARD_V6_FLAGS,
+
+ FWPS_FIELD_IPFORWARD_V6_IP_PHYSICAL_ARRIVAL_INTERFACE,
+ FWPS_FIELD_IPFORWARD_V6_ARRIVAL_INTERFACE_PROFILE_ID,
+ FWPS_FIELD_IPFORWARD_V6_IP_PHYSICAL_NEXTHOP_INTERFACE,
+ FWPS_FIELD_IPFORWARD_V6_NEXTHOP_INTERFACE_PROFILE_ID,
+
+ FWPS_FIELD_IPFORWARD_V6_COMPARTMENT_ID,
+#line 328 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 329 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_IPFORWARD_V6_MAX
+} FWPS_FIELDS_IPFORWARD_V6;
+
+typedef enum FWPS_FIELDS_INBOUND_TRANSPORT_V4_
+{
+ FWPS_FIELD_INBOUND_TRANSPORT_V4_IP_PROTOCOL,
+ FWPS_FIELD_INBOUND_TRANSPORT_V4_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_INBOUND_TRANSPORT_V4_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_INBOUND_TRANSPORT_V4_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_INBOUND_TRANSPORT_V4_IP_LOCAL_PORT,
+ FWPS_FIELD_INBOUND_TRANSPORT_V4_IP_REMOTE_PORT,
+ FWPS_FIELD_INBOUND_TRANSPORT_V4_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_INBOUND_TRANSPORT_V4_INTERFACE_INDEX,
+ FWPS_FIELD_INBOUND_TRANSPORT_V4_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_INBOUND_TRANSPORT_V4_FLAGS,
+ FWPS_FIELD_INBOUND_TRANSPORT_V4_INTERFACE_TYPE,
+ FWPS_FIELD_INBOUND_TRANSPORT_V4_TUNNEL_TYPE,
+
+ FWPS_FIELD_INBOUND_TRANSPORT_V4_PROFILE_ID,
+
+ FWPS_FIELD_INBOUND_TRANSPORT_V4_IPSEC_SECURITY_REALM_ID,
+
+ FWPS_FIELD_INBOUND_TRANSPORT_V4_COMPARTMENT_ID,
+#line 353 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 354 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 355 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_INBOUND_TRANSPORT_V4_MAX
+} FWPS_FIELDS_INBOUND_TRANSPORT_V4;
+
+
+typedef enum FWPS_FIELDS_INBOUND_TRANSPORT_FAST
+{
+ FWPS_FIELD_INBOUND_TRANSPORT_FAST_MAX
+} FWPS_FIELDS_INBOUND_TRANSPORT_FAST;
+
+typedef enum FWPS_FIELDS_OUTBOUND_TRANSPORT_FAST
+{
+ FWPS_FIELD_OUTBOUND_TRANSPORT_FAST_MAX
+} FWPS_FIELDS_OUTBOUND_TRANSPORT_FAST;
+#line 369 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+
+
+
+typedef enum FWPS_FIELDS_INBOUND_TRANSPORT_V6_
+{
+ FWPS_FIELD_INBOUND_TRANSPORT_V6_IP_PROTOCOL,
+ FWPS_FIELD_INBOUND_TRANSPORT_V6_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_INBOUND_TRANSPORT_V6_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_INBOUND_TRANSPORT_V6_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_INBOUND_TRANSPORT_V6_IP_LOCAL_PORT,
+ FWPS_FIELD_INBOUND_TRANSPORT_V6_IP_REMOTE_PORT,
+ FWPS_FIELD_INBOUND_TRANSPORT_V6_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_INBOUND_TRANSPORT_V6_INTERFACE_INDEX,
+ FWPS_FIELD_INBOUND_TRANSPORT_V6_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_INBOUND_TRANSPORT_V6_FLAGS,
+ FWPS_FIELD_INBOUND_TRANSPORT_V6_INTERFACE_TYPE,
+ FWPS_FIELD_INBOUND_TRANSPORT_V6_TUNNEL_TYPE,
+
+ FWPS_FIELD_INBOUND_TRANSPORT_V6_PROFILE_ID,
+
+ FWPS_FIELD_INBOUND_TRANSPORT_V6_IPSEC_SECURITY_REALM_ID,
+
+ FWPS_FIELD_INBOUND_TRANSPORT_V6_COMPARTMENT_ID,
+#line 397 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 398 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 399 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_INBOUND_TRANSPORT_V6_MAX
+} FWPS_FIELDS_INBOUND_TRANSPORT_V6;
+
+
+
+
+
+
+
+typedef enum FWPS_FIELDS_OUTBOUND_TRANSPORT_V4_
+{
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V4_IP_PROTOCOL,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V4_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V4_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V4_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V4_IP_LOCAL_PORT,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V4_IP_REMOTE_PORT,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V4_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V4_INTERFACE_INDEX,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V4_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V4_IP_DESTINATION_ADDRESS_TYPE,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V4_FLAGS,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V4_INTERFACE_TYPE,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V4_TUNNEL_TYPE,
+
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V4_PROFILE_ID,
+
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V4_IPSEC_SECURITY_REALM_ID,
+
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V4_COMPARTMENT_ID,
+#line 430 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 431 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 432 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V4_MAX
+} FWPS_FIELDS_OUTBOUND_TRANSPORT_V4;
+
+
+
+
+
+
+
+typedef enum FWPS_FIELDS_OUTBOUND_TRANSPORT_V6_
+{
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V6_IP_PROTOCOL,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V6_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V6_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V6_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V6_IP_LOCAL_PORT,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V6_IP_REMOTE_PORT,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V6_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V6_INTERFACE_INDEX,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V6_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V6_IP_DESTINATION_ADDRESS_TYPE,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V6_FLAGS,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V6_INTERFACE_TYPE,
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V6_TUNNEL_TYPE,
+
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V6_PROFILE_ID,
+
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V6_IPSEC_SECURITY_REALM_ID,
+
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V6_COMPARTMENT_ID,
+#line 463 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 464 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 465 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_OUTBOUND_TRANSPORT_V6_MAX
+} FWPS_FIELDS_OUTBOUND_TRANSPORT_V6;
+
+
+
+
+
+
+
+typedef enum FWPS_FIELDS_STREAM_V4_
+{
+ FWPS_FIELD_STREAM_V4_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_STREAM_V4_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_STREAM_V4_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_STREAM_V4_IP_LOCAL_PORT,
+ FWPS_FIELD_STREAM_V4_IP_REMOTE_PORT,
+ FWPS_FIELD_STREAM_V4_DIRECTION,
+
+ FWPS_FIELD_STREAM_V4_FLAGS,
+
+ FWPS_FIELD_STREAM_V4_COMPARTMENT_ID,
+#line 487 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 488 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_STREAM_V4_MAX
+} FWPS_FIELDS_STREAM_V4;
+
+typedef enum FWPS_FIELDS_STREAM_V6_
+{
+ FWPS_FIELD_STREAM_V6_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_STREAM_V6_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_STREAM_V6_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_STREAM_V6_IP_LOCAL_PORT,
+ FWPS_FIELD_STREAM_V6_IP_REMOTE_PORT,
+ FWPS_FIELD_STREAM_V6_DIRECTION,
+
+ FWPS_FIELD_STREAM_V6_FLAGS,
+
+ FWPS_FIELD_STREAM_V6_COMPARTMENT_ID,
+#line 504 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 505 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_STREAM_V6_MAX
+} FWPS_FIELDS_STREAM_V6;
+
+typedef enum FWPS_FIELDS_DATAGRAM_DATA_V4_
+{
+ FWPS_FIELD_DATAGRAM_DATA_V4_IP_PROTOCOL,
+ FWPS_FIELD_DATAGRAM_DATA_V4_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_DATAGRAM_DATA_V4_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_DATAGRAM_DATA_V4_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_DATAGRAM_DATA_V4_IP_LOCAL_PORT,
+ FWPS_FIELD_DATAGRAM_DATA_V4_IP_REMOTE_PORT,
+ FWPS_FIELD_DATAGRAM_DATA_V4_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_DATAGRAM_DATA_V4_INTERFACE_INDEX,
+ FWPS_FIELD_DATAGRAM_DATA_V4_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_DATAGRAM_DATA_V4_DIRECTION,
+ FWPS_FIELD_DATAGRAM_DATA_V4_FLAGS,
+ FWPS_FIELD_DATAGRAM_DATA_V4_INTERFACE_TYPE,
+ FWPS_FIELD_DATAGRAM_DATA_V4_TUNNEL_TYPE,
+
+ FWPS_FIELD_DATAGRAM_DATA_V4_COMPARTMENT_ID,
+#line 526 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_DATAGRAM_DATA_V4_MAX
+} FWPS_FIELDS_DATAGRAM_DATA_V4;
+
+
+
+
+
+
+
+
+typedef enum FWPS_FIELDS_DATAGRAM_DATA_V6_
+{
+ FWPS_FIELD_DATAGRAM_DATA_V6_IP_PROTOCOL,
+ FWPS_FIELD_DATAGRAM_DATA_V6_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_DATAGRAM_DATA_V6_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_DATAGRAM_DATA_V6_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_DATAGRAM_DATA_V6_IP_LOCAL_PORT,
+ FWPS_FIELD_DATAGRAM_DATA_V6_IP_REMOTE_PORT,
+ FWPS_FIELD_DATAGRAM_DATA_V6_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_DATAGRAM_DATA_V6_INTERFACE_INDEX,
+ FWPS_FIELD_DATAGRAM_DATA_V6_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_DATAGRAM_DATA_V6_DIRECTION,
+ FWPS_FIELD_DATAGRAM_DATA_V6_FLAGS,
+ FWPS_FIELD_DATAGRAM_DATA_V6_INTERFACE_TYPE,
+ FWPS_FIELD_DATAGRAM_DATA_V6_TUNNEL_TYPE,
+
+ FWPS_FIELD_DATAGRAM_DATA_V6_COMPARTMENT_ID,
+#line 554 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_DATAGRAM_DATA_V6_MAX
+} FWPS_FIELDS_DATAGRAM_DATA_V6;
+
+
+
+
+
+
+
+
+typedef enum FWPS_FIELDS_STREAM_PACKET_V4_
+{
+ FWPS_FIELD_STREAM_PACKET_V4_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_STREAM_PACKET_V4_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_STREAM_PACKET_V4_IP_LOCAL_PORT,
+ FWPS_FIELD_STREAM_PACKET_V4_IP_REMOTE_PORT,
+ FWPS_FIELD_STREAM_PACKET_V4_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_STREAM_PACKET_V4_INTERFACE_INDEX,
+ FWPS_FIELD_STREAM_PACKET_V4_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_STREAM_PACKET_V4_DIRECTION,
+ FWPS_FIELD_STREAM_PACKET_V4_FLAGS,
+ FWPS_FIELD_STREAM_PACKET_V4_INTERFACE_TYPE,
+ FWPS_FIELD_STREAM_PACKET_V4_TUNNEL_TYPE,
+
+ FWPS_FIELD_STREAM_PACKET_V4_COMPARTMENT_ID,
+#line 580 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_STREAM_PACKET_V4_MAX
+} FWPS_FIELDS_STREAM_PACKET_V4;
+
+typedef enum FWPS_FIELDS_STREAM_PACKET_V6_
+{
+ FWPS_FIELD_STREAM_PACKET_V6_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_STREAM_PACKET_V6_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_STREAM_PACKET_V6_IP_LOCAL_PORT,
+ FWPS_FIELD_STREAM_PACKET_V6_IP_REMOTE_PORT,
+ FWPS_FIELD_STREAM_PACKET_V6_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_STREAM_PACKET_V6_INTERFACE_INDEX,
+ FWPS_FIELD_STREAM_PACKET_V6_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_STREAM_PACKET_V6_DIRECTION,
+ FWPS_FIELD_STREAM_PACKET_V6_FLAGS,
+ FWPS_FIELD_STREAM_PACKET_V6_INTERFACE_TYPE,
+ FWPS_FIELD_STREAM_PACKET_V6_TUNNEL_TYPE,
+
+ FWPS_FIELD_STREAM_PACKET_V6_COMPARTMENT_ID,
+#line 599 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_STREAM_PACKET_V6_MAX
+} FWPS_FIELDS_STREAM_PACKET_V6;
+#line 602 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+typedef enum FWPS_FIELDS_INBOUND_ICMP_ERROR_V4_
+{
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V4_EMBEDDED_PROTOCOL,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V4_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V4_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V4_EMBEDDED_REMOTE_ADDRESS,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V4_EMBEDDED_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V4_EMBEDDED_LOCAL_PORT,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V4_EMBEDDED_REMOTE_PORT,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V4_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V4_ICMP_TYPE,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V4_ICMP_CODE,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V4_INTERFACE_INDEX,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V4_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V4_INTERFACE_TYPE,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V4_TUNNEL_TYPE,
+
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V4_IP_ARRIVAL_INTERFACE,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V4_ARRIVAL_INTERFACE_INDEX,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V4_ARRIVAL_INTERFACE_TYPE,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V4_ARRIVAL_TUNNEL_TYPE,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V4_FLAGS,
+
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V4_ARRIVAL_INTERFACE_PROFILE_ID,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V4_INTERFACE_QUARANTINE_EPOCH,
+
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V4_COMPARTMENT_ID,
+#line 631 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 632 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 633 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V4_MAX
+} FWPS_FIELDS_INBOUND_ICMP_ERROR_V4;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 651 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+typedef enum FWPS_FIELDS_INBOUND_ICMP_ERROR_V6_
+{
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V6_EMBEDDED_PROTOCOL,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V6_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V6_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V6_EMBEDDED_REMOTE_ADDRESS,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V6_EMBEDDED_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V6_EMBEDDED_LOCAL_PORT,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V6_EMBEDDED_REMOTE_PORT,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V6_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V6_ICMP_TYPE,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V6_ICMP_CODE,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V6_INTERFACE_INDEX,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V6_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V6_INTERFACE_TYPE,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V6_TUNNEL_TYPE,
+
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V6_IP_ARRIVAL_INTERFACE,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V6_ARRIVAL_INTERFACE_INDEX,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V6_ARRIVAL_INTERFACE_TYPE,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V6_ARRIVAL_TUNNEL_TYPE,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V6_FLAGS,
+
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V6_ARRIVAL_INTERFACE_PROFILE_ID,
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V6_INTERFACE_QUARANTINE_EPOCH,
+
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V6_COMPARTMENT_ID,
+#line 680 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 681 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 682 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_INBOUND_ICMP_ERROR_V6_MAX
+} FWPS_FIELDS_INBOUND_ICMP_ERROR_V6;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 700 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+typedef enum FWPS_FIELDS_OUTBOUND_ICMP_ERROR_V4_
+{
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V4_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V4_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V4_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V4_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V4_ICMP_TYPE,
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V4_ICMP_CODE,
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V4_INTERFACE_INDEX,
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V4_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V4_INTERFACE_TYPE,
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V4_TUNNEL_TYPE,
+
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V4_FLAGS,
+
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V4_NEXTHOP_INTERFACE_PROFILE_ID,
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V4_INTERFACE_QUARANTINE_EPOCH,
+
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V4_COMPARTMENT_ID,
+#line 721 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 722 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 723 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V4_MAX
+} FWPS_FIELDS_OUTBOUND_ICMP_ERROR_V4;
+
+typedef enum FWPS_FIELDS_OUTBOUND_ICMP_ERROR_V6_
+{
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V6_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V6_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V6_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V6_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V6_IP_LOCAL_PORT,
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V6_IP_REMOTE_PORT,
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V6_INTERFACE_INDEX,
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V6_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V6_INTERFACE_TYPE,
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V6_TUNNEL_TYPE,
+
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V6_FLAGS,
+
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V6_NEXTHOP_INTERFACE_PROFILE_ID,
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V6_INTERFACE_QUARANTINE_EPOCH,
+
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V6_COMPARTMENT_ID,
+#line 746 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 747 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 748 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_OUTBOUND_ICMP_ERROR_V6_MAX
+} FWPS_FIELDS_OUTBOUND_ICMP_ERROR_V6;
+
+
+
+
+
+
+
+typedef enum FWPS_FIELDS_ALE_RESOURCE_ASSIGNMENT_V4_
+{
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_ALE_APP_ID,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_ALE_USER_ID,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_IP_LOCAL_PORT,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_IP_PROTOCOL,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_ALE_PROMISCUOUS_MODE,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_FLAGS,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_INTERFACE_TYPE,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_TUNNEL_TYPE,
+
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_LOCAL_INTERFACE_PROFILE_ID,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_SIO_FIREWALL_SOCKET_PROPERTY,
+#line 774 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_ALE_PACKAGE_ID,
+
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_ALE_SECURITY_ATTRIBUTE_FQBN_VALUE,
+
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_COMPARTMENT_ID,
+#line 781 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 782 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 783 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_RESERVED_0,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_RESERVED_1,
+#line 790 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_PACKAGE_FAMILY_NAME,
+#line 793 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_MAX
+} FWPS_FIELDS_ALE_RESOURCE_ASSIGNMENT_V4;
+
+typedef enum FWPS_FIELDS_ALE_RESOURCE_ASSIGNMENT_V6_
+{
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_ALE_APP_ID,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_ALE_USER_ID,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_IP_LOCAL_PORT,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_IP_PROTOCOL,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_ALE_PROMISCUOUS_MODE,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_FLAGS,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_INTERFACE_TYPE,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_TUNNEL_TYPE,
+
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_LOCAL_INTERFACE_PROFILE_ID,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_SIO_FIREWALL_SOCKET_PROPERTY,
+#line 813 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_ALE_PACKAGE_ID,
+
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_ALE_SECURITY_ATTRIBUTE_FQBN_VALUE,
+
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_COMPARTMENT_ID,
+#line 820 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 821 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 822 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_RESERVED_0,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_RESERVED_1,
+#line 829 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_PACKAGE_FAMILY_NAME,
+#line 832 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_MAX
+} FWPS_FIELDS_ALE_RESOURCE_ASSIGNMENT_V6;
+
+
+
+typedef enum FWPS_FIELDS_ALE_RESOURCE_RELEASE_V4_
+{
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V4_ALE_APP_ID,
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V4_ALE_USER_ID,
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V4_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V4_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V4_IP_LOCAL_PORT,
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V4_IP_PROTOCOL,
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V4_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V4_FLAGS,
+
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V4_ALE_PACKAGE_ID,
+
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V4_ALE_SECURITY_ATTRIBUTE_FQBN_VALUE,
+
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V4_COMPARTMENT_ID,
+#line 854 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 855 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 856 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V4_PACKAGE_FAMILY_NAME,
+#line 859 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V4_MAX
+} FWPS_FIELDS_ALE_RESOURCE_RELEASE_V4;
+
+typedef enum FWPS_FIELDS_ALE_RESOURCE_RELEASE_V6_
+{
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V6_ALE_APP_ID,
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V6_ALE_USER_ID,
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V6_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V6_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V6_IP_LOCAL_PORT,
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V6_IP_PROTOCOL,
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V6_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V6_FLAGS,
+
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V6_ALE_PACKAGE_ID,
+
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V6_ALE_SECURITY_ATTRIBUTE_FQBN_VALUE,
+
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V6_COMPARTMENT_ID,
+#line 879 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 880 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 881 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V6_PACKAGE_FAMILY_NAME,
+#line 884 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V6_MAX
+} FWPS_FIELDS_ALE_RESOURCE_RELEASE_V6;
+
+typedef enum FWPS_FIELDS_ALE_ENDPOINT_CLOSURE_V4_
+{
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V4_ALE_APP_ID,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V4_ALE_USER_ID,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V4_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V4_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V4_IP_LOCAL_PORT,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V4_IP_PROTOCOL,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V4_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V4_IP_REMOTE_PORT,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V4_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V4_FLAGS,
+
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V4_ALE_PACKAGE_ID,
+
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V4_ALE_SECURITY_ATTRIBUTE_FQBN_VALUE,
+
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V4_COMPARTMENT_ID,
+#line 906 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 907 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 908 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V4_PACKAGE_FAMILY_NAME,
+#line 911 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V4_MAX
+} FWPS_FIELDS_ALE_ENDPOINT_CLOSURE_V4;
+
+typedef enum FWPS_FIELDS_ALE_ENDPOINT_CLOSURE_V6_
+{
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V6_ALE_APP_ID,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V6_ALE_USER_ID,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V6_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V6_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V6_IP_LOCAL_PORT,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V6_IP_PROTOCOL,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V6_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V6_IP_REMOTE_PORT,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V6_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V6_FLAGS,
+
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V6_ALE_PACKAGE_ID,
+
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V6_ALE_SECURITY_ATTRIBUTE_FQBN_VALUE,
+
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V6_COMPARTMENT_ID,
+#line 933 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 934 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 935 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V6_PACKAGE_FAMILY_NAME,
+#line 938 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V6_MAX
+} FWPS_FIELDS_ALE_ENDPOINT_CLOSURE_V6;
+
+#line 942 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+typedef enum FWPS_FIELDS_ALE_AUTH_LISTEN_V4_
+{
+ FWPS_FIELD_ALE_AUTH_LISTEN_V4_ALE_APP_ID,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V4_ALE_USER_ID,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V4_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V4_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V4_IP_LOCAL_PORT,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V4_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V4_FLAGS,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V4_INTERFACE_TYPE,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V4_TUNNEL_TYPE,
+
+ FWPS_FIELD_ALE_AUTH_LISTEN_V4_LOCAL_INTERFACE_PROFILE_ID,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V4_SIO_FIREWALL_SOCKET_PROPERTY,
+#line 958 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_FIELD_ALE_AUTH_LISTEN_V4_ALE_PACKAGE_ID,
+
+ FWPS_FIELD_ALE_AUTH_LISTEN_V4_ALE_SECURITY_ATTRIBUTE_FQBN_VALUE,
+
+ FWPS_FIELD_ALE_AUTH_LISTEN_V4_COMPARTMENT_ID,
+#line 965 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 966 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 967 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_FIELD_ALE_AUTH_LISTEN_V4_PACKAGE_FAMILY_NAME,
+#line 970 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_ALE_AUTH_LISTEN_V4_MAX
+} FWPS_FIELDS_ALE_AUTH_LISTEN_V4;
+
+typedef enum FWPS_FIELDS_ALE_AUTH_LISTEN_V6_
+{
+ FWPS_FIELD_ALE_AUTH_LISTEN_V6_ALE_APP_ID,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V6_ALE_USER_ID,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V6_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V6_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V6_IP_LOCAL_PORT,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V6_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V6_FLAGS,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V6_INTERFACE_TYPE,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V6_TUNNEL_TYPE,
+
+ FWPS_FIELD_ALE_AUTH_LISTEN_V6_LOCAL_INTERFACE_PROFILE_ID,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V6_SIO_FIREWALL_SOCKET_PROPERTY,
+#line 988 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_FIELD_ALE_AUTH_LISTEN_V6_ALE_PACKAGE_ID,
+
+ FWPS_FIELD_ALE_AUTH_LISTEN_V6_ALE_SECURITY_ATTRIBUTE_FQBN_VALUE,
+
+ FWPS_FIELD_ALE_AUTH_LISTEN_V6_COMPARTMENT_ID,
+#line 995 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 996 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 997 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_FIELD_ALE_AUTH_LISTEN_V6_PACKAGE_FAMILY_NAME,
+#line 1000 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_ALE_AUTH_LISTEN_V6_MAX
+} FWPS_FIELDS_ALE_AUTH_LISTEN_V6;
+
+typedef enum FWPS_FIELDS_ALE_AUTH_RECV_ACCEPT_V4_
+{
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_ALE_APP_ID,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_ALE_USER_ID,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_IP_LOCAL_PORT,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_IP_PROTOCOL,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_IP_REMOTE_PORT,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_ALE_REMOTE_USER_ID,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_ALE_REMOTE_MACHINE_ID,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_FLAGS,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_SIO_FIREWALL_SYSTEM_PORT,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_NAP_CONTEXT,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_INTERFACE_TYPE,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_TUNNEL_TYPE,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_INTERFACE_INDEX,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_SUB_INTERFACE_INDEX,
+
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_IP_ARRIVAL_INTERFACE,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_ARRIVAL_INTERFACE_TYPE,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_ARRIVAL_TUNNEL_TYPE,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_ARRIVAL_INTERFACE_INDEX,
+
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_NEXTHOP_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_IP_NEXTHOP_INTERFACE,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_NEXTHOP_INTERFACE_TYPE,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_NEXTHOP_TUNNEL_TYPE,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_NEXTHOP_INTERFACE_INDEX,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_ORIGINAL_PROFILE_ID,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_CURRENT_PROFILE_ID,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_REAUTHORIZE_REASON,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_ORIGINAL_ICMP_TYPE,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_INTERFACE_QUARANTINE_EPOCH,
+
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_ALE_PACKAGE_ID,
+
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_ALE_SECURITY_ATTRIBUTE_FQBN_VALUE,
+
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_COMPARTMENT_ID,
+#line 1046 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1047 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1048 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1049 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1050 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_RESERVED_0,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_RESERVED_1,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_RESERVED_2,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_RESERVED_3,
+#line 1059 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_PACKAGE_FAMILY_NAME,
+#line 1062 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_MAX
+} FWPS_FIELDS_ALE_AUTH_RECV_ACCEPT_V4;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1089 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1090 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+typedef enum FWPS_FIELDS_ALE_AUTH_RECV_ACCEPT_V6_
+{
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_ALE_APP_ID,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_ALE_USER_ID,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_IP_LOCAL_PORT,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_IP_PROTOCOL,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_IP_REMOTE_PORT,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_ALE_REMOTE_USER_ID,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_ALE_REMOTE_MACHINE_ID,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_FLAGS,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_SIO_FIREWALL_SYSTEM_PORT,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_NAP_CONTEXT,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_INTERFACE_TYPE,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_TUNNEL_TYPE,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_INTERFACE_INDEX,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_SUB_INTERFACE_INDEX,
+
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_IP_ARRIVAL_INTERFACE,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_ARRIVAL_INTERFACE_TYPE,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_ARRIVAL_TUNNEL_TYPE,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_ARRIVAL_INTERFACE_INDEX,
+
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_NEXTHOP_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_IP_NEXTHOP_INTERFACE,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_NEXTHOP_INTERFACE_TYPE,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_NEXTHOP_TUNNEL_TYPE,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_NEXTHOP_INTERFACE_INDEX,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_ORIGINAL_PROFILE_ID,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_CURRENT_PROFILE_ID,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_REAUTHORIZE_REASON,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_ORIGINAL_ICMP_TYPE,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_INTERFACE_QUARANTINE_EPOCH,
+
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_ALE_PACKAGE_ID,
+
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_ALE_SECURITY_ATTRIBUTE_FQBN_VALUE,
+
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_COMPARTMENT_ID,
+#line 1135 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1136 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1137 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1138 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1139 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_RESERVED_0,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_RESERVED_1,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_RESERVED_2,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_RESERVED_3,
+#line 1148 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_PACKAGE_FAMILY_NAME,
+#line 1151 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_MAX
+} FWPS_FIELDS_ALE_AUTH_RECV_ACCEPT_V6;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1179 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+#line 1181 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+typedef enum FWPS_FIELDS_ALE_BIND_REDIRECT_V4_
+{
+ FWPS_FIELD_ALE_BIND_REDIRECT_V4_ALE_APP_ID,
+ FWPS_FIELD_ALE_BIND_REDIRECT_V4_ALE_USER_ID,
+ FWPS_FIELD_ALE_BIND_REDIRECT_V4_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_ALE_BIND_REDIRECT_V4_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_BIND_REDIRECT_V4_IP_LOCAL_PORT,
+ FWPS_FIELD_ALE_BIND_REDIRECT_V4_IP_PROTOCOL,
+ FWPS_FIELD_ALE_BIND_REDIRECT_V4_FLAGS,
+
+ FWPS_FIELD_ALE_BIND_REDIRECT_V4_ALE_PACKAGE_ID,
+
+ FWPS_FIELD_ALE_BIND_REDIRECT_V4_ALE_SECURITY_ATTRIBUTE_FQBN_VALUE,
+
+ FWPS_FIELD_ALE_BIND_REDIRECT_V4_COMPARTMENT_ID,
+#line 1200 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1201 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1202 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_FIELD_ALE_BIND_REDIRECT_V4_PACKAGE_FAMILY_NAME,
+#line 1205 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_ALE_BIND_REDIRECT_V4_MAX
+} FWPS_FIELDS_ALE_BIND_REDIRECT_V4;
+
+typedef enum FWPS_FIELDS_ALE_BIND_REDIRECT_V6_
+{
+ FWPS_FIELD_ALE_BIND_REDIRECT_V6_ALE_APP_ID,
+ FWPS_FIELD_ALE_BIND_REDIRECT_V6_ALE_USER_ID,
+ FWPS_FIELD_ALE_BIND_REDIRECT_V6_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_ALE_BIND_REDIRECT_V6_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_BIND_REDIRECT_V6_IP_LOCAL_PORT,
+ FWPS_FIELD_ALE_BIND_REDIRECT_V6_IP_PROTOCOL,
+ FWPS_FIELD_ALE_BIND_REDIRECT_V6_FLAGS,
+
+ FWPS_FIELD_ALE_BIND_REDIRECT_V6_ALE_PACKAGE_ID,
+
+ FWPS_FIELD_ALE_BIND_REDIRECT_V6_ALE_SECURITY_ATTRIBUTE_FQBN_VALUE,
+
+ FWPS_FIELD_ALE_BIND_REDIRECT_V6_COMPARTMENT_ID,
+#line 1224 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1225 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1226 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_FIELD_ALE_BIND_REDIRECT_V6_PACKAGE_FAMILY_NAME,
+#line 1229 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_ALE_BIND_REDIRECT_V6_MAX
+} FWPS_FIELDS_ALE_BIND_REDIRECT_V6;
+
+typedef enum FWPS_FIELDS_ALE_CONNECT_REDIRECT_V4_
+{
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V4_ALE_APP_ID,
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V4_ALE_USER_ID,
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V4_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V4_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V4_IP_LOCAL_PORT,
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V4_IP_PROTOCOL,
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V4_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V4_IP_DESTINATION_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V4_IP_REMOTE_PORT,
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V4_FLAGS,
+
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V4_ALE_ORIGINAL_APP_ID,
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V4_ALE_PACKAGE_ID,
+
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V4_ALE_SECURITY_ATTRIBUTE_FQBN_VALUE,
+
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V4_COMPARTMENT_ID,
+#line 1252 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1253 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1254 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V4_PACKAGE_FAMILY_NAME,
+#line 1257 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V4_MAX
+} FWPS_FIELDS_ALE_CONNECT_REDIRECT_V4;
+
+
+
+
+
+
+
+typedef enum FWPS_FIELDS_ALE_CONNECT_REDIRECT_V6_
+{
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V6_ALE_APP_ID,
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V6_ALE_USER_ID,
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V6_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V6_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V6_IP_LOCAL_PORT,
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V6_IP_PROTOCOL,
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V6_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V6_IP_DESTINATION_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V6_IP_REMOTE_PORT,
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V6_FLAGS,
+
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V6_ALE_ORIGINAL_APP_ID,
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V6_ALE_PACKAGE_ID,
+
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V6_ALE_SECURITY_ATTRIBUTE_FQBN_VALUE,
+
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V6_COMPARTMENT_ID,
+#line 1286 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1287 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1288 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V6_PACKAGE_FAMILY_NAME,
+#line 1291 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_ALE_CONNECT_REDIRECT_V6_MAX
+} FWPS_FIELDS_ALE_CONNECT_REDIRECT_V6;
+
+
+
+
+
+
+
+#line 1301 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+typedef enum FWPS_FIELDS_ALE_AUTH_CONNECT_V4_
+{
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_ALE_APP_ID,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_ALE_USER_ID,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_IP_LOCAL_PORT,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_IP_PROTOCOL,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_IP_REMOTE_PORT,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_ALE_REMOTE_USER_ID,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_ALE_REMOTE_MACHINE_ID,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_IP_DESTINATION_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_FLAGS,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_INTERFACE_TYPE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_TUNNEL_TYPE,
+
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_INTERFACE_INDEX,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_SUB_INTERFACE_INDEX,
+
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_IP_ARRIVAL_INTERFACE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_ARRIVAL_INTERFACE_TYPE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_ARRIVAL_TUNNEL_TYPE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_ARRIVAL_INTERFACE_INDEX,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_NEXTHOP_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_IP_NEXTHOP_INTERFACE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_NEXTHOP_INTERFACE_TYPE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_NEXTHOP_TUNNEL_TYPE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_NEXTHOP_INTERFACE_INDEX,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_ORIGINAL_PROFILE_ID,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_CURRENT_PROFILE_ID,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_REAUTHORIZE_REASON,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_PEER_NAME,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_ORIGINAL_ICMP_TYPE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_INTERFACE_QUARANTINE_EPOCH,
+
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_ALE_ORIGINAL_APP_ID,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_ALE_PACKAGE_ID,
+
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_ALE_SECURITY_ATTRIBUTE_FQBN_VALUE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_ALE_EFFECTIVE_NAME,
+
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_COMPARTMENT_ID,
+#line 1347 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1348 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1349 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1350 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1351 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_RESERVED_0,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_RESERVED_1,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_RESERVED_2,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_RESERVED_3,
+#line 1360 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_PACKAGE_FAMILY_NAME,
+#line 1363 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_MAX
+} FWPS_FIELDS_ALE_AUTH_CONNECT_V4;
+
+
+
+
+
+
+
+typedef enum FWPS_FIELDS_ALE_AUTH_CONNECT_V6_
+{
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_ALE_APP_ID,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_ALE_USER_ID,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_IP_LOCAL_PORT,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_IP_PROTOCOL,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_IP_REMOTE_PORT,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_ALE_REMOTE_USER_ID,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_ALE_REMOTE_MACHINE_ID,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_IP_DESTINATION_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_FLAGS,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_INTERFACE_TYPE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_TUNNEL_TYPE,
+
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_INTERFACE_INDEX,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_SUB_INTERFACE_INDEX,
+
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_IP_ARRIVAL_INTERFACE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_ARRIVAL_INTERFACE_TYPE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_ARRIVAL_TUNNEL_TYPE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_ARRIVAL_INTERFACE_INDEX,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_NEXTHOP_SUB_INTERFACE_INDEX,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_IP_NEXTHOP_INTERFACE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_NEXTHOP_INTERFACE_TYPE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_NEXTHOP_TUNNEL_TYPE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_NEXTHOP_INTERFACE_INDEX,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_ORIGINAL_PROFILE_ID,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_CURRENT_PROFILE_ID,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_REAUTHORIZE_REASON,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_PEER_NAME,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_ORIGINAL_ICMP_TYPE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_INTERFACE_QUARANTINE_EPOCH,
+
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_ALE_ORIGINAL_APP_ID,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_ALE_PACKAGE_ID,
+
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_ALE_SECURITY_ATTRIBUTE_FQBN_VALUE,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_ALE_EFFECTIVE_NAME,
+
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_COMPARTMENT_ID,
+#line 1417 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1418 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1419 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1420 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1421 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_RESERVED_0,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_RESERVED_1,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_RESERVED_2,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_RESERVED_3,
+#line 1430 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_PACKAGE_FAMILY_NAME,
+#line 1433 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_MAX
+} FWPS_FIELDS_ALE_AUTH_CONNECT_V6;
+
+
+
+
+
+
+
+typedef enum FWPS_FIELDS_ALE_FLOW_ESTABLISHED_V4_
+{
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_ALE_APP_ID,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_ALE_USER_ID,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_LOCAL_PORT,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_PROTOCOL,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_REMOTE_PORT,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_ALE_REMOTE_USER_ID,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_ALE_REMOTE_MACHINE_ID,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_DESTINATION_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_DIRECTION,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_INTERFACE_TYPE,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_TUNNEL_TYPE,
+
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_FLAGS,
+
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_ALE_ORIGINAL_APP_ID,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_ALE_PACKAGE_ID,
+
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_ALE_SECURITY_ATTRIBUTE_FQBN_VALUE,
+
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_COMPARTMENT_ID,
+#line 1469 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1470 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1471 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1472 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_RESERVED_0,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_RESERVED_1,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_RESERVED_2,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_RESERVED_3,
+#line 1481 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_PACKAGE_FAMILY_NAME,
+#line 1484 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_MAX
+} FWPS_FIELDS_ALE_FLOW_ESTABLISHED_V4;
+
+
+
+
+
+
+
+typedef enum FWPS_FIELDS_ALE_FLOW_ESTABLISHED_V6_
+{
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_ALE_APP_ID,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_ALE_USER_ID,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_IP_LOCAL_PORT,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_IP_PROTOCOL,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_IP_REMOTE_PORT,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_ALE_REMOTE_USER_ID,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_ALE_REMOTE_MACHINE_ID,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_IP_DESTINATION_ADDRESS_TYPE,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_DIRECTION,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_INTERFACE_TYPE,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_TUNNEL_TYPE,
+
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_FLAGS,
+
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_ALE_ORIGINAL_APP_ID,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_ALE_PACKAGE_ID,
+
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_ALE_SECURITY_ATTRIBUTE_FQBN_VALUE,
+
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_COMPARTMENT_ID,
+#line 1520 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1521 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1522 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1523 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_RESERVED_0,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_RESERVED_1,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_RESERVED_2,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_RESERVED_3,
+#line 1532 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_PACKAGE_FAMILY_NAME,
+#line 1535 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_MAX
+} FWPS_FIELDS_ALE_FLOW_ESTABLISHED_V6;
+
+
+
+
+
+
+
+
+
+typedef enum FWPS_FIELDS_NAME_RESOLUTION_CACHE_V4_
+{
+ FWPS_FIELD_NAME_RESOLUTION_CACHE_V4_ALE_USER_ID,
+ FWPS_FIELD_NAME_RESOLUTION_CACHE_V4_ALE_APP_ID,
+ FWPS_FIELD_NAME_RESOLUTION_CACHE_V4_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_NAME_RESOLUTION_CACHE_V4_PEER_NAME,
+
+ FWPS_FIELD_NAME_RESOLUTION_CACHE_V4_COMPARTMENT_ID,
+#line 1555 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_NAME_RESOLUTION_CACHE_V4_MAX
+} FWPS_FIELDS_NAME_RESOLUTION_CACHE_V4;
+
+typedef enum FWPS_FIELDS_NAME_RESOLUTION_CACHE_V6_
+{
+ FWPS_FIELD_NAME_RESOLUTION_CACHE_V6_ALE_USER_ID,
+ FWPS_FIELD_NAME_RESOLUTION_CACHE_V6_ALE_APP_ID,
+ FWPS_FIELD_NAME_RESOLUTION_CACHE_V6_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_NAME_RESOLUTION_CACHE_V6_PEER_NAME,
+
+ FWPS_FIELD_NAME_RESOLUTION_CACHE_V6_COMPARTMENT_ID,
+#line 1567 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_NAME_RESOLUTION_CACHE_V6_MAX
+} FWPS_FIELDS_NAME_RESOLUTION_CACHE_V6;
+
+
+
+typedef enum FWPS_FIELDS_INBOUND_MAC_FRAME_ETHERNET_
+{
+ FWPS_FIELD_INBOUND_MAC_FRAME_ETHERNET_INTERFACE_MAC_ADDRESS,
+ FWPS_FIELD_INBOUND_MAC_FRAME_ETHERNET_MAC_LOCAL_ADDRESS,
+ FWPS_FIELD_INBOUND_MAC_FRAME_ETHERNET_MAC_REMOTE_ADDRESS,
+ FWPS_FIELD_INBOUND_MAC_FRAME_ETHERNET_MAC_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_INBOUND_MAC_FRAME_ETHERNET_MAC_REMOTE_ADDRESS_TYPE,
+ FWPS_FIELD_INBOUND_MAC_FRAME_ETHERNET_ETHER_TYPE,
+ FWPS_FIELD_INBOUND_MAC_FRAME_ETHERNET_VLAN_ID,
+ FWPS_FIELD_INBOUND_MAC_FRAME_ETHERNET_INTERFACE,
+ FWPS_FIELD_INBOUND_MAC_FRAME_ETHERNET_INTERFACE_INDEX,
+ FWPS_FIELD_INBOUND_MAC_FRAME_ETHERNET_NDIS_PORT,
+ FWPS_FIELD_INBOUND_MAC_FRAME_ETHERNET_L2_FLAGS,
+
+ FWPS_FIELD_INBOUND_MAC_FRAME_ETHERNET_COMPARTMENT_ID,
+#line 1588 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_INBOUND_MAC_FRAME_ETHERNET_MAX
+} FWPS_FIELDS_INBOUND_MAC_FRAME_ETHERNET;
+
+
+typedef enum FWPS_FIELDS_OUTBOUND_MAC_FRAME_ETHERNET_
+{
+ FWPS_FIELD_OUTBOUND_MAC_FRAME_ETHERNET_INTERFACE_MAC_ADDRESS,
+ FWPS_FIELD_OUTBOUND_MAC_FRAME_ETHERNET_MAC_LOCAL_ADDRESS,
+ FWPS_FIELD_OUTBOUND_MAC_FRAME_ETHERNET_MAC_REMOTE_ADDRESS,
+ FWPS_FIELD_OUTBOUND_MAC_FRAME_ETHERNET_MAC_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_OUTBOUND_MAC_FRAME_ETHERNET_MAC_REMOTE_ADDRESS_TYPE,
+ FWPS_FIELD_OUTBOUND_MAC_FRAME_ETHERNET_ETHER_TYPE,
+ FWPS_FIELD_OUTBOUND_MAC_FRAME_ETHERNET_VLAN_ID,
+ FWPS_FIELD_OUTBOUND_MAC_FRAME_ETHERNET_INTERFACE,
+ FWPS_FIELD_OUTBOUND_MAC_FRAME_ETHERNET_INTERFACE_INDEX,
+ FWPS_FIELD_OUTBOUND_MAC_FRAME_ETHERNET_NDIS_PORT,
+ FWPS_FIELD_OUTBOUND_MAC_FRAME_ETHERNET_L2_FLAGS,
+
+ FWPS_FIELD_OUTBOUND_MAC_FRAME_ETHERNET_COMPARTMENT_ID,
+#line 1608 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_OUTBOUND_MAC_FRAME_ETHERNET_MAX
+} FWPS_FIELDS_OUTBOUND_MAC_FRAME_ETHERNET;
+
+
+typedef enum FWPS_FIELDS_INBOUND_MAC_FRAME_NATIVE_
+{
+ FWPS_FIELD_INBOUND_MAC_FRAME_NATIVE_NDIS_MEDIA_TYPE,
+ FWPS_FIELD_INBOUND_MAC_FRAME_NATIVE_NDIS_PHYSICAL_MEDIA_TYPE,
+ FWPS_FIELD_INBOUND_MAC_FRAME_NATIVE_INTERFACE,
+ FWPS_FIELD_INBOUND_MAC_FRAME_NATIVE_INTERFACE_TYPE,
+ FWPS_FIELD_INBOUND_MAC_FRAME_NATIVE_INTERFACE_INDEX,
+ FWPS_FIELD_INBOUND_MAC_FRAME_NATIVE_NDIS_PORT,
+ FWPS_FIELD_INBOUND_MAC_FRAME_NATIVE_L2_FLAGS,
+
+ FWPS_FIELD_INBOUND_MAC_FRAME_NATIVE_COMPARTMENT_ID,
+#line 1624 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_INBOUND_MAC_FRAME_NATIVE_MAX
+} FWPS_FIELDS_INBOUND_MAC_FRAME_NATIVE;
+
+
+typedef enum FWPS_FIELDS_INBOUND_MAC_FRAME_NATIVE_FAST_
+{
+ FWPS_FIELD_INBOUND_MAC_FRAME_NATIVE_FAST_MAX
+} FWPS_FIELDS_INBOUND_MAC_FRAME_NATIVE_FAST;
+#line 1633 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+typedef enum FWPS_FIELDS_OUTBOUND_MAC_FRAME_NATIVE_
+{
+ FWPS_FIELD_OUTBOUND_MAC_FRAME_NATIVE_NDIS_MEDIA_TYPE,
+ FWPS_FIELD_OUTBOUND_MAC_FRAME_NATIVE_NDIS_PHYSICAL_MEDIA_TYPE,
+ FWPS_FIELD_OUTBOUND_MAC_FRAME_NATIVE_INTERFACE,
+ FWPS_FIELD_OUTBOUND_MAC_FRAME_NATIVE_INTERFACE_TYPE,
+ FWPS_FIELD_OUTBOUND_MAC_FRAME_NATIVE_INTERFACE_INDEX,
+ FWPS_FIELD_OUTBOUND_MAC_FRAME_NATIVE_NDIS_PORT,
+ FWPS_FIELD_OUTBOUND_MAC_FRAME_NATIVE_L2_FLAGS,
+
+ FWPS_FIELD_OUTBOUND_MAC_FRAME_NATIVE_COMPARTMENT_ID,
+#line 1646 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_OUTBOUND_MAC_FRAME_NATIVE_MAX
+} FWPS_FIELDS_OUTBOUND_MAC_FRAME_NATIVE;
+
+
+typedef enum FWPS_FIELDS_OUTBOUND_MAC_FRAME_NATIVE_FAST
+{
+ FWPS_FIELD_OUTBOUND_MAC_FRAME_NATIVE_FAST_MAX
+} FWPS_FIELDS_OUTBOUND_MAC_FRAME_NATIVE_FAST;
+#line 1655 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+typedef enum FWPS_FIELDS_INGRESS_VSWITCH_ETHERNET_
+{
+ FWPS_FIELD_INGRESS_VSWITCH_ETHERNET_MAC_SOURCE_ADDRESS,
+ FWPS_FIELD_INGRESS_VSWITCH_ETHERNET_MAC_SOURCE_ADDRESS_TYPE,
+ FWPS_FIELD_INGRESS_VSWITCH_ETHERNET_MAC_DESTINATION_ADDRESS,
+ FWPS_FIELD_INGRESS_VSWITCH_ETHERNET_MAC_DESTINATION_ADDRESS_TYPE,
+ FWPS_FIELD_INGRESS_VSWITCH_ETHERNET_ETHER_TYPE,
+ FWPS_FIELD_INGRESS_VSWITCH_ETHERNET_VLAN_ID,
+ FWPS_FIELD_INGRESS_VSWITCH_ETHERNET_VSWITCH_TENANT_NETWORK_ID,
+ FWPS_FIELD_INGRESS_VSWITCH_ETHERNET_VSWITCH_ID,
+ FWPS_FIELD_INGRESS_VSWITCH_ETHERNET_VSWITCH_NETWORK_TYPE,
+ FWPS_FIELD_INGRESS_VSWITCH_ETHERNET_VSWITCH_SOURCE_INTERFACE_ID,
+ FWPS_FIELD_INGRESS_VSWITCH_ETHERNET_VSWITCH_SOURCE_INTERFACE_TYPE,
+ FWPS_FIELD_INGRESS_VSWITCH_ETHERNET_VSWITCH_SOURCE_VM_ID,
+ FWPS_FIELD_INGRESS_VSWITCH_ETHERNET_L2_FLAGS,
+
+ FWPS_FIELD_INGRESS_VSWITCH_ETHERNET_COMPARTMENT_ID,
+#line 1674 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_INGRESS_VSWITCH_ETHERNET_MAX
+} FWPS_FIELDS_INGRESS_VSWITCH_ETHERNET;
+
+typedef enum FWPS_FIELDS_EGRESS_VSWITCH_ETHERNET_
+{
+ FWPS_FIELD_EGRESS_VSWITCH_ETHERNET_MAC_SOURCE_ADDRESS,
+ FWPS_FIELD_EGRESS_VSWITCH_ETHERNET_MAC_SOURCE_ADDRESS_TYPE,
+ FWPS_FIELD_EGRESS_VSWITCH_ETHERNET_MAC_DESTINATION_ADDRESS,
+ FWPS_FIELD_EGRESS_VSWITCH_ETHERNET_MAC_DESTINATION_ADDRESS_TYPE,
+ FWPS_FIELD_EGRESS_VSWITCH_ETHERNET_ETHER_TYPE,
+ FWPS_FIELD_EGRESS_VSWITCH_ETHERNET_VLAN_ID,
+ FWPS_FIELD_EGRESS_VSWITCH_ETHERNET_VSWITCH_TENANT_NETWORK_ID,
+ FWPS_FIELD_EGRESS_VSWITCH_ETHERNET_VSWITCH_ID,
+ FWPS_FIELD_EGRESS_VSWITCH_ETHERNET_VSWITCH_NETWORK_TYPE,
+ FWPS_FIELD_EGRESS_VSWITCH_ETHERNET_VSWITCH_SOURCE_INTERFACE_ID,
+ FWPS_FIELD_EGRESS_VSWITCH_ETHERNET_VSWITCH_SOURCE_INTERFACE_TYPE,
+ FWPS_FIELD_EGRESS_VSWITCH_ETHERNET_VSWITCH_SOURCE_VM_ID,
+ FWPS_FIELD_EGRESS_VSWITCH_ETHERNET_VSWITCH_DESTINATION_INTERFACE_ID,
+ FWPS_FIELD_EGRESS_VSWITCH_ETHERNET_VSWITCH_DESTINATION_INTERFACE_TYPE,
+ FWPS_FIELD_EGRESS_VSWITCH_ETHERNET_VSWITCH_DESTINATION_VM_ID,
+ FWPS_FIELD_EGRESS_VSWITCH_ETHERNET_L2_FLAGS,
+
+ FWPS_FIELD_EGRESS_VSWITCH_ETHERNET_COMPARTMENT_ID,
+#line 1698 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_EGRESS_VSWITCH_ETHERNET_MAX
+} FWPS_FIELDS_EGRESS_VSWITCH_ETHERNET;
+
+typedef enum FWPS_FIELDS_INGRESS_VSWITCH_TRANSPORT_V4_
+{
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V4_IP_SOURCE_ADDRESS,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V4_IP_DESTINATION_ADDRESS,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V4_IP_PROTOCOL,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V4_IP_SOURCE_PORT,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V4_IP_DESTINATION_PORT,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V4_VLAN_ID,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V4_VSWITCH_TENANT_NETWORK_ID,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V4_VSWITCH_ID,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V4_VSWITCH_NETWORK_TYPE,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V4_VSWITCH_SOURCE_INTERFACE_ID,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V4_VSWITCH_SOURCE_INTERFACE_TYPE,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V4_VSWITCH_SOURCE_VM_ID,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V4_L2_FLAGS,
+
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V4_COMPARTMENT_ID,
+#line 1719 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V4_MAX
+} FWPS_FIELDS_INGRESS_VSWITCH_TRANSPORT_V4;
+
+
+
+
+
+
+
+typedef enum FWPS_FIELDS_INGRESS_VSWITCH_TRANSPORT_V6_
+{
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V6_IP_SOURCE_ADDRESS,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V6_IP_DESTINATION_ADDRESS,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V6_IP_PROTOCOL,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V6_IP_SOURCE_PORT,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V6_IP_DESTINATION_PORT,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V6_VLAN_ID,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V6_VSWITCH_TENANT_NETWORK_ID,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V6_VSWITCH_ID,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V6_VSWITCH_NETWORK_TYPE,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V6_VSWITCH_SOURCE_INTERFACE_ID,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V6_VSWITCH_SOURCE_INTERFACE_TYPE,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V6_VSWITCH_SOURCE_VM_ID,
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V6_L2_FLAGS,
+
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V6_COMPARTMENT_ID,
+#line 1746 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_INGRESS_VSWITCH_TRANSPORT_V6_MAX
+} FWPS_FIELDS_INGRESS_VSWITCH_TRANSPORT_V6;
+
+
+
+
+
+
+
+typedef enum FWPS_FIELDS_EGRESS_VSWITCH_TRANSPORT_V4_
+{
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V4_IP_SOURCE_ADDRESS,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V4_IP_DESTINATION_ADDRESS,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V4_IP_PROTOCOL,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V4_IP_SOURCE_PORT,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V4_IP_DESTINATION_PORT,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V4_VLAN_ID,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V4_VSWITCH_TENANT_NETWORK_ID,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V4_VSWITCH_ID,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V4_VSWITCH_NETWORK_TYPE,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V4_VSWITCH_SOURCE_INTERFACE_ID,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V4_VSWITCH_SOURCE_INTERFACE_TYPE,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V4_VSWITCH_SOURCE_VM_ID,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V4_VSWITCH_DESTINATION_INTERFACE_ID,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V4_VSWITCH_DESTINATION_INTERFACE_TYPE,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V4_VSWITCH_DESTINATION_VM_ID,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V4_L2_FLAGS,
+
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V4_COMPARTMENT_ID,
+#line 1776 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V4_MAX
+} FWPS_FIELDS_EGRESS_VSWITCH_TRANSPORT_V4;
+
+
+
+
+
+
+
+typedef enum FWPS_FIELDS_EGRESS_VSWITCH_TRANSPORT_V6_
+{
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V6_IP_SOURCE_ADDRESS,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V6_IP_DESTINATION_ADDRESS,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V6_IP_PROTOCOL,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V6_IP_SOURCE_PORT,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V6_IP_DESTINATION_PORT,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V6_VLAN_ID,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V6_VSWITCH_TENANT_NETWORK_ID,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V6_VSWITCH_ID,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V6_VSWITCH_NETWORK_TYPE,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V6_VSWITCH_SOURCE_INTERFACE_ID,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V6_VSWITCH_SOURCE_INTERFACE_TYPE,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V6_VSWITCH_SOURCE_VM_ID,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V6_VSWITCH_DESTINATION_INTERFACE_ID,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V6_VSWITCH_DESTINATION_INTERFACE_TYPE,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V6_VSWITCH_DESTINATION_VM_ID,
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V6_L2_FLAGS,
+
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V6_COMPARTMENT_ID,
+#line 1806 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_EGRESS_VSWITCH_TRANSPORT_V6_MAX
+} FWPS_FIELDS_EGRESS_VSWITCH_TRANSPORT_V6;
+
+
+
+
+
+
+
+#line 1816 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1817 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+typedef enum FWPS_FIELDS_IPSEC_KM_DEMUX_V4_
+{
+ FWPS_FIELD_IPSEC_KM_DEMUX_V4_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_IPSEC_KM_DEMUX_V4_IP_REMOTE_ADDRESS,
+
+ FWPS_FIELD_IPSEC_KM_DEMUX_V4_QM_MODE,
+ FWPS_FIELD_IPSEC_KM_DEMUX_V4_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_IPSEC_KM_DEMUX_V4_CURRENT_PROFILE_ID,
+
+ FWPS_FIELD_KM_DEMUX_V4_IPSEC_SECURITY_REALM_ID,
+#line 1829 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1830 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_IPSEC_KM_DEMUX_V4_MAX
+} FWPS_FIELDS_IPSEC_KM_DEMUX_V4;
+
+typedef enum FWPS_FIELDS_IPSEC_KM_DEMUX_V6_
+{
+ FWPS_FIELD_IPSEC_KM_DEMUX_V6_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_IPSEC_KM_DEMUX_V6_IP_REMOTE_ADDRESS,
+
+ FWPS_FIELD_IPSEC_KM_DEMUX_V6_QM_MODE,
+ FWPS_FIELD_IPSEC_KM_DEMUX_V6_IP_LOCAL_INTERFACE,
+ FWPS_FIELD_IPSEC_KM_DEMUX_V6_CURRENT_PROFILE_ID,
+
+ FWPS_FIELD_KM_DEMUX_V6_IPSEC_SECURITY_REALM_ID,
+#line 1844 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1845 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_IPSEC_KM_DEMUX_V6_MAX
+} FWPS_FIELDS_IPSEC_KM_DEMUX_V6;
+
+typedef enum FWPS_FIELDS_IPSEC_V4_
+{
+ FWPS_FIELD_IPSEC_V4_IP_PROTOCOL,
+ FWPS_FIELD_IPSEC_V4_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_IPSEC_V4_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_IPSEC_V4_IP_LOCAL_PORT,
+ FWPS_FIELD_IPSEC_V4_IP_REMOTE_PORT,
+ FWPS_FIELD_IPSEC_V4_IP_LOCAL_INTERFACE,
+
+ FWPS_FIELD_IPSEC_V4_PROFILE_ID,
+
+ FWPS_FIELD_IPSEC_V4_IPSEC_SECURITY_REALM_ID,
+#line 1861 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1862 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_IPSEC_V4_MAX
+} FWPS_FIELDS_IPSEC_V4;
+
+typedef enum FWPS_FIELDS_IPSEC_V6_
+{
+ FWPS_FIELD_IPSEC_V6_IP_PROTOCOL,
+ FWPS_FIELD_IPSEC_V6_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_IPSEC_V6_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_IPSEC_V6_IP_LOCAL_PORT,
+ FWPS_FIELD_IPSEC_V6_IP_REMOTE_PORT,
+ FWPS_FIELD_IPSEC_V6_IP_LOCAL_INTERFACE,
+
+ FWPS_FIELD_IPSEC_V6_PROFILE_ID,
+
+ FWPS_FIELD_IPSEC_V6_IPSEC_SECURITY_REALM_ID,
+#line 1878 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1879 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_IPSEC_V6_MAX
+} FWPS_FIELDS_IPSEC_V6;
+
+typedef enum FWPS_FIELDS_IKEEXT_V4_
+{
+ FWPS_FIELD_IKEEXT_V4_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_IKEEXT_V4_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_IKEEXT_V4_IP_LOCAL_INTERFACE,
+
+ FWPS_FIELD_IKEEXT_V4_PROFILE_ID,
+
+ FWPS_FIELD_IKEEXT_V4_IPSEC_SECURITY_REALM_ID,
+#line 1892 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1893 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_IKEEXT_V4_MAX
+} FWPS_FIELDS_IKEEXT_V4;
+
+typedef enum FWPS_FIELDS_IKEEXT_V6_
+{
+ FWPS_FIELD_IKEEXT_V6_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_IKEEXT_V6_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_IKEEXT_V6_IP_LOCAL_INTERFACE,
+
+ FWPS_FIELD_IKEEXT_V6_PROFILE_ID,
+
+ FWPS_FIELD_IKEEXT_V6_IPSEC_SECURITY_REALM_ID,
+#line 1906 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 1907 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_IKEEXT_V6_MAX
+} FWPS_FIELDS_IKEEXT_V6;
+
+typedef enum FWPS_FIELDS_RPC_UM_
+{
+ FWPS_FIELD_RPC_UM_REMOTE_USER_TOKEN,
+ FWPS_FIELD_RPC_UM_IF_UUID,
+ FWPS_FIELD_RPC_UM_IF_VERSION,
+ FWPS_FIELD_RPC_UM_IF_FLAG,
+ FWPS_FIELD_RPC_UM_DCOM_APP_ID,
+ FWPS_FIELD_RPC_UM_IMAGE_NAME,
+ FWPS_FIELD_RPC_UM_PROTOCOL,
+ FWPS_FIELD_RPC_UM_AUTH_TYPE,
+ FWPS_FIELD_RPC_UM_AUTH_LEVEL,
+ FWPS_FIELD_RPC_UM_SEC_ENCRYPT_ALGORITHM,
+ FWPS_FIELD_RPC_UM_SEC_KEY_SIZE,
+ FWPS_FIELD_RPC_UM_LOCAL_ADDR_V4,
+ FWPS_FIELD_RPC_UM_LOCAL_ADDR_V6,
+ FWPS_FIELD_RPC_UM_LOCAL_PORT,
+ FWPS_FIELD_RPC_UM_PIPE,
+ FWPS_FIELD_RPC_UM_REMOTE_ADDR_V4,
+ FWPS_FIELD_RPC_UM_REMOTE_ADDR_V6,
+
+ FWPS_FIELD_RPC_UM_RPC_OPNUM,
+#line 1932 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_FIELD_RPC_UM_MAX
+} FWPS_FIELDS_RPC_UM;
+
+typedef enum FWPS_FIELDS_RPC_EPMAP_
+{
+ FWPS_FIELD_RPC_EPMAP_REMOTE_USER_TOKEN,
+ FWPS_FIELD_RPC_EPMAP_IF_UUID,
+ FWPS_FIELD_RPC_EPMAP_IF_VERSION,
+ FWPS_FIELD_RPC_EPMAP_PROTOCOL,
+ FWPS_FIELD_RPC_EPMAP_AUTH_TYPE,
+ FWPS_FIELD_RPC_EPMAP_AUTH_LEVEL,
+ FWPS_FIELD_RPC_EPMAP_SEC_ENCRYPT_ALGORITHM,
+ FWPS_FIELD_RPC_EPMAP_SEC_KEY_SIZE,
+ FWPS_FIELD_RPC_EPMAP_LOCAL_ADDR_V4,
+ FWPS_FIELD_RPC_EPMAP_LOCAL_ADDR_V6,
+ FWPS_FIELD_RPC_EPMAP_LOCAL_PORT,
+ FWPS_FIELD_RPC_EPMAP_PIPE,
+ FWPS_FIELD_RPC_EPMAP_REMOTE_ADDR_V4,
+ FWPS_FIELD_RPC_EPMAP_REMOTE_ADDR_V6,
+ FWPS_FIELD_RPC_EPMAP_MAX
+} FWPS_FIELDS_RPC_EPMAP;
+
+typedef enum FWPS_FIELDS_RPC_EP_ADD_
+{
+ FWPS_FIELD_RPC_EP_ADD_PROCESS_WITH_RPC_IF_UUID,
+ FWPS_FIELD_RPC_EP_ADD_PROTOCOL,
+ FWPS_FIELD_RPC_EP_ADD_EP_VALUE,
+ FWPS_FIELD_RPC_EP_ADD_EP_FLAGS,
+ FWPS_FIELD_RPC_EP_ADD_MAX
+} FWPS_FIELDS_RPC_EP_ADD;
+
+typedef enum FWPS_FIELDS_RPC_PROXY_CONN_
+{
+ FWPS_FIELD_RPC_PROXY_CONN_CLIENT_TOKEN,
+ FWPS_FIELD_RPC_PROXY_CONN_SERVER_NAME,
+ FWPS_FIELD_RPC_PROXY_CONN_SERVER_PORT,
+ FWPS_FIELD_RPC_PROXY_CONN_PROXY_AUTH_TYPE,
+ FWPS_FIELD_RPC_PROXY_CONN_CLIENT_CERT_KEY_LENGTH,
+ FWPS_FIELD_RPC_PROXY_CONN_CLIENT_CERT_OID,
+ FWPS_FIELD_RPC_PROXY_CONN_MAX
+} FWPS_FIELDS_RPC_PROXY_CONN;
+
+typedef enum FWPS_FIELDS_RPC_PROXY_IF_
+{
+ FWPS_FIELD_RPC_PROXY_IF_CLIENT_TOKEN,
+ FWPS_FIELD_RPC_PROXY_IF_IF_UUID,
+ FWPS_FIELD_RPC_PROXY_IF_IF_VERSION,
+ FWPS_FIELD_RPC_PROXY_IF_SERVER_NAME,
+ FWPS_FIELD_RPC_PROXY_IF_SERVER_PORT,
+ FWPS_FIELD_RPC_PROXY_IF_PROXY_AUTH_TYPE,
+ FWPS_FIELD_RPC_PROXY_IF_CLIENT_CERT_KEY_LENGTH,
+ FWPS_FIELD_RPC_PROXY_IF_CLIENT_CERT_OID,
+ FWPS_FIELD_RPC_PROXY_IF_MAX
+} FWPS_FIELDS_RPC_PROXY_IF_IF;
+
+
+
+typedef enum FWPS_FIELDS_KM_AUTHORIZATION_
+{
+ FWPS_FIELD_KM_AUTHORIZATION_REMOTE_ID,
+ FWPS_FIELD_KM_AUTHORIZATION_AUTHENTICATION_TYPE,
+ FWPS_FIELD_KM_AUTHORIZATION_KM_TYPE,
+ FWPS_FIELD_KM_AUTHORIZATION_DIRECTION,
+ FWPS_FIELD_KM_AUTHORIZATION_KM_MODE,
+ FWPS_FIELD_KM_AUTHORIZATION_IPSEC_POLICY_KEY,
+ FWPS_FIELD_KM_AUTHORIZATION_NAP_CONTEXT,
+ FWPS_FIELD_KM_AUTHORIZATION_MAX,
+} FWPS_FIELDS_KM_AUTHORIZATION;
+
+#line 2002 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+typedef enum FWPS_FIELDS_INBOUND_RESERVED2_
+{
+ FWPS_FIELD_INBOUND_RESERVED2_RESERVED0,
+ FWPS_FIELD_INBOUND_RESERVED2_RESERVED1,
+ FWPS_FIELD_INBOUND_RESERVED2_RESERVED2,
+ FWPS_FIELD_INBOUND_RESERVED2_RESERVED3,
+ FWPS_FIELD_INBOUND_RESERVED2_RESERVED4,
+ FWPS_FIELD_INBOUND_RESERVED2_RESERVED5,
+ FWPS_FIELD_INBOUND_RESERVED2_RESERVED6,
+ FWPS_FIELD_INBOUND_RESERVED2_RESERVED7,
+ FWPS_FIELD_INBOUND_RESERVED2_RESERVED8,
+ FWPS_FIELD_INBOUND_RESERVED2_RESERVED9,
+ FWPS_FIELD_INBOUND_RESERVED2_RESERVED10,
+ FWPS_FIELD_INBOUND_RESERVED2_RESERVED11,
+ FWPS_FIELD_INBOUND_RESERVED2_RESERVED12,
+
+
+
+ FWPS_FIELD_INBOUND_RESERVED2_RESERVED13,
+ FWPS_FIELD_INBOUND_RESERVED2_RESERVED14,
+ FWPS_FIELD_INBOUND_RESERVED2_RESERVED15,
+
+#line 2028 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ FWPS_FIELD_INBOUND_RESERVED2_MAX,
+} FWPS_FIELDS_INBOUND_RESERVED2;
+
+#line 2033 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+typedef enum FWPS_FIELDS_OUTBOUND_NETWORK_CONNECTION_POLICY_V4_
+{
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V4_ALE_APP_ID,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V4_ALE_USER_ID,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V4_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V4_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V4_IP_LOCAL_PORT,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V4_IP_PROTOCOL,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V4_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V4_IP_DESTINATION_ADDRESS_TYPE,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V4_IP_REMOTE_PORT,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V4_FLAGS,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V4_ALE_ORIGINAL_APP_ID,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V4_ALE_PACKAGE_ID,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V4_ALE_SECURITY_ATTRIBUTE_FQBN_VALUE,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V4_COMPARTMENT_ID,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V4_MAX
+} FWPS_FIELDS_OUTBOUND_NETWORK_POLICY_V4;
+
+
+
+
+
+
+
+typedef enum FWPS_FIELDS_OUTBOUND_NETWORK_CONNECTION_POLICY_V6_
+{
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V6_ALE_APP_ID,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V6_ALE_USER_ID,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V6_IP_LOCAL_ADDRESS,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V6_IP_LOCAL_ADDRESS_TYPE,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V6_IP_LOCAL_PORT,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V6_IP_PROTOCOL,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V6_IP_REMOTE_ADDRESS,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V6_IP_DESTINATION_ADDRESS_TYPE,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V6_IP_REMOTE_PORT,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V6_FLAGS,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V6_ALE_ORIGINAL_APP_ID,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V6_ALE_PACKAGE_ID,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V6_ALE_SECURITY_ATTRIBUTE_FQBN_VALUE,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V6_COMPARTMENT_ID,
+ FWPS_FIELD_OUTBOUND_NETWORK_CONNECTION_POLICY_V6_MAX
+} FWPS_FIELDS_OUTBOUND_NETWORK_POLICY_V6;
+
+
+
+
+
+
+
+#line 2087 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum {
+ InetDiscardSourceUnspecified = 0,
+ InetDiscardDestinationMulticast = 1,
+ InetDiscardHeaderInvalid = 2,
+ InetDiscardChecksumInvalid = 3,
+ InetDiscardEndpointNotFound = 4,
+ InetDiscardConnectedPath = 5,
+ InetDiscardSessionState = 6,
+ InetDiscardReceiveInspection = 7,
+ InetDiscardAckInvalid = 8,
+ InetDiscardExpectedSyn = 9,
+ InetDiscardRst = 10,
+ InetDiscardSynRcvdSyn = 11,
+ InetDiscardSimultaneousConnect = 12,
+ InetDiscardPawsFailed = 13,
+ InetDiscardLandAttack = 14,
+ InetDiscardMissedReset = 15,
+ InetDiscardOutsideWindow = 16,
+ InetDiscardDuplicateSegment = 17,
+ InetDiscardClosedWindow = 18,
+ InetDiscardTcbRemoved = 19,
+ InetDiscardFinWait2 = 20,
+ InetDiscardReassemblyConflict = 21,
+ InetDiscardFinReceived = 22,
+ InetDiscardListenerInvalidFlags = 23,
+ InetDiscardUrgentDeliveryAllocationFailure = 24,
+ InetDiscardTcbNotInTcbTable = 25,
+ InetDiscardTimeWaitTcbReceivedRstOutsideWindow = 26,
+ InetDiscardTimeWaitTcbSynAndOtherFlags = 27,
+ InetDiscardTimeWaitTcb = 28,
+ InetDiscardSynAckWithFastopenCookieRequest = 29,
+ InetDiscardPauseAccept = 30,
+ InetDiscardSynAttack = 31,
+ InetDiscardAcceptInspection = 32,
+ InetDiscardAcceptRedirection = 33,
+ InetDiscardReasonMaxEnumValue
+} INET_DISCARD_REASON, *PINET_DISCARD_REASON;
+
+#line 2142 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+
+typedef enum {
+
+
+
+ IpDiscardBadSourceAddress = 1,
+ IpDiscardNotLocallyDestined,
+ IpDiscardProtocolUnreachable,
+ IpDiscardPortUnreachable,
+ IpDiscardBadLength,
+ IpDiscardMalformedHeader,
+ IpDiscardNoRoute,
+ IpDiscardBeyondScope,
+ IpDiscardInspectionDrop,
+ IpDiscardTooManyDecapsulations,
+ IpDiscardAdministrativelyProhibited,
+ IpDiscardBadChecksum,
+ IpDiscardFirstFragmentIncomplete,
+ IpDiscardHeaderNotContiguous,
+ IpDiscardHeaderNotAligned,
+
+ IpDiscardReceivePathMax = 127,
+
+
+
+
+ IpDiscardHopLimitExceeded,
+ IpDiscardAddressUnreachable,
+ IpDiscardRscPacket,
+ IpDiscardSourceViolation,
+ IpDiscardForwardPathMax = 255,
+
+
+
+
+ IpDiscardArbitrationUnhandled,
+ IpDiscardInspectionAbsorb,
+
+
+
+
+ IpDiscardDontFragmentMtuExceeded,
+ IpDiscardBufferLengthExceeded,
+ IpDiscardAddressResolutionTimeout,
+ IpDiscardAddressResolutionFailure,
+ IpDiscardIpsecFailure,
+ IpDiscardExtensionHeadersFailure,
+ IpDiscardAllocationFailure,
+
+
+
+
+ IpDiscardIpsnpiClientDrop,
+
+ IpDiscardUnsupportedOffload,
+ IpDiscardRoutingFailure,
+ IpDiscardAncillaryDataFailure,
+ IpDiscardRawDataFailure,
+ IpDiscardSessionStateFailure,
+
+ IpDiscardIpsnpiAllocationFailure,
+ IpDiscardIpsnpiModifiedButNotForwarded,
+ IpDiscardIpsnpiNoNextHop,
+ IpDiscardIpsnpiNoCompartment,
+ IpDiscardIpsnpiNoInterface,
+ IpDiscardIpsnpiNoSubInterface,
+ IpDiscardIpsnpiInterfaceDisabled,
+ IpDiscardIpsnpiSegmentationFailed,
+ IpDiscardIpsnpiNoEthernetHeader,
+ IpDiscardIpsnpiUnexpectedFragment,
+ IpDiscardIpsnpiUnsupportedInterfaceType,
+ IpDiscardIpsnpiInvalidLsoInfo,
+ IpDiscardIpsnpiInvalidUsoInfo,
+
+ IpDiscardInternalError,
+ IpDiscardAdministrativelyConfigured,
+ IpDiscardBadOption,
+ IpDiscardLoopbackDisallowed,
+ IpDiscardSmallerScope,
+ IpDiscardQueueFull,
+ IpDiscardInterfaceDisabled,
+ IpDiscardNlClientDiscard,
+
+ IpDiscardIpsnpiUroSegmentSizeExceedsMtu,
+ IpDiscardSwUsoFailure,
+
+ IpDiscardMax
+} IP_DISCARD_REASON, *PIP_DISCARD_REASON;
+
+#line 2236 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2294 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 2295 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 2296 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+#line 2300 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+
+
+
+
+typedef struct FWPS_INCOMING_METADATA_VALUES0_
+{
+
+ UINT32 currentMetadataValues;
+
+ UINT32 flags;
+
+ UINT64 reserved;
+
+ FWPS_DISCARD_METADATA0 discardMetadata;
+
+ UINT64 flowHandle;
+
+ UINT32 ipHeaderSize;
+
+ UINT32 transportHeaderSize;
+
+ FWP_BYTE_BLOB* processPath;
+
+ UINT64 token;
+
+ UINT64 processId;
+
+ UINT32 sourceInterfaceIndex;
+ UINT32 destinationInterfaceIndex;
+
+ ULONG compartmentId;
+
+ FWPS_INBOUND_FRAGMENT_METADATA0 fragmentMetadata;
+
+ ULONG pathMtu;
+
+ HANDLE completionHandle;
+
+ UINT64 transportEndpointHandle;
+
+ SCOPE_ID remoteScopeId;
+
+ WSACMSGHDR* controlData;
+ ULONG controlDataLength;
+
+ FWP_DIRECTION packetDirection;
+
+
+ PVOID headerIncludeHeader;
+ ULONG headerIncludeHeaderLength;
+
+ IP_ADDRESS_PREFIX destinationPrefix;
+ UINT16 frameLength;
+ UINT64 parentEndpointHandle;
+ UINT32 icmpIdAndSequence;
+
+ DWORD localRedirectTargetPID;
+
+ SOCKADDR* originalDestination;
+
+ HANDLE redirectRecords;
+
+ UINT32 currentL2MetadataValues;
+
+ UINT32 l2Flags;
+ UINT32 ethernetMacHeaderSize;
+ UINT32 wiFiOperationMode;
+
+
+
+
+
+#line 2377 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ UINT32 padding0;
+ USHORT padding1;
+ UINT32 padding2;
+#line 2381 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ HANDLE vSwitchPacketContext;
+#line 2383 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 2384 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 2385 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+ PVOID subProcessTag;
+
+ UINT64 reserved1;
+#line 2390 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+} FWPS_INCOMING_METADATA_VALUES0;
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2405 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+typedef void (__stdcall *FWPS_CALLOUT_CLASSIFY_FN0)(
+ const FWPS_INCOMING_VALUES0* inFixedValues,
+ const FWPS_INCOMING_METADATA_VALUES0* inMetaValues,
+ void* layerData,
+ const FWPS_FILTER0* filter,
+ UINT64 flowContext,
+ FWPS_CLASSIFY_OUT0* classifyOut
+ );
+
+
+
+
+typedef void (__stdcall *FWPS_CALLOUT_CLASSIFY_FN1)(
+ const FWPS_INCOMING_VALUES0* inFixedValues,
+ const FWPS_INCOMING_METADATA_VALUES0* inMetaValues,
+ void* layerData,
+ const void* classifyContext,
+ const FWPS_FILTER1* filter,
+ UINT64 flowContext,
+ FWPS_CLASSIFY_OUT0* classifyOut
+ );
+#line 2429 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+typedef void (__stdcall *FWPS_CALLOUT_CLASSIFY_FN2)(
+ const FWPS_INCOMING_VALUES0* inFixedValues,
+ const FWPS_INCOMING_METADATA_VALUES0* inMetaValues,
+ void* layerData,
+ const void* classifyContext,
+ const FWPS_FILTER2* filter,
+ UINT64 flowContext,
+ FWPS_CLASSIFY_OUT0* classifyOut
+ );
+#line 2443 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+typedef void (__stdcall *FWPS_CALLOUT_CLASSIFY_FN3)(
+ const FWPS_INCOMING_VALUES0* inFixedValues,
+ const FWPS_INCOMING_METADATA_VALUES0* inMetaValues,
+ void* layerData,
+ const void* classifyContext,
+ const FWPS_FILTER3* filter,
+ UINT64 flowContext,
+ FWPS_CLASSIFY_OUT0* classifyOut
+ );
+#line 2457 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+typedef NTSTATUS (__stdcall *FWPS_CALLOUT_NOTIFY_FN0)(
+ FWPS_CALLOUT_NOTIFY_TYPE notifyType,
+ const GUID* filterKey,
+ FWPS_FILTER0* filter
+ );
+
+
+
+
+typedef NTSTATUS (__stdcall *FWPS_CALLOUT_NOTIFY_FN1)(
+ FWPS_CALLOUT_NOTIFY_TYPE notifyType,
+ const GUID* filterKey,
+ FWPS_FILTER1* filter
+ );
+#line 2476 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+typedef NTSTATUS (__stdcall *FWPS_CALLOUT_NOTIFY_FN2)(
+ FWPS_CALLOUT_NOTIFY_TYPE notifyType,
+ const GUID* filterKey,
+ FWPS_FILTER2* filter
+ );
+#line 2486 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+typedef NTSTATUS (__stdcall *FWPS_CALLOUT_NOTIFY_FN3)(
+ FWPS_CALLOUT_NOTIFY_TYPE notifyType,
+ const GUID* filterKey,
+ FWPS_FILTER3* filter
+ );
+#line 2496 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+typedef void (__stdcall *FWPS_CALLOUT_FLOW_DELETE_NOTIFY_FN0)(
+ UINT16 layerId,
+ UINT32 calloutId,
+ UINT64 flowContext
+ );
+
+
+typedef void (__stdcall *FWPS_CALLOUT_BOOTTIME_CALLOUT_DELETE_NOTIFY_FN0)(
+ UINT32 calloutId
+ );
+
+
+
+
+typedef struct FWPS_CALLOUT0_
+{
+
+
+ GUID calloutKey;
+
+ UINT32 flags;
+
+ FWPS_CALLOUT_CLASSIFY_FN0 classifyFn;
+
+ FWPS_CALLOUT_NOTIFY_FN0 notifyFn;
+
+ FWPS_CALLOUT_FLOW_DELETE_NOTIFY_FN0 flowDeleteFn;
+} FWPS_CALLOUT0;
+
+
+
+typedef struct FWPS_CALLOUT1_
+{
+
+
+ GUID calloutKey;
+
+ UINT32 flags;
+
+ FWPS_CALLOUT_CLASSIFY_FN1 classifyFn;
+
+ FWPS_CALLOUT_NOTIFY_FN1 notifyFn;
+
+ FWPS_CALLOUT_FLOW_DELETE_NOTIFY_FN0 flowDeleteFn;
+} FWPS_CALLOUT1;
+#line 2545 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+typedef struct FWPS_CALLOUT2_
+{
+
+
+ GUID calloutKey;
+
+ UINT32 flags;
+
+ FWPS_CALLOUT_CLASSIFY_FN2 classifyFn;
+
+ FWPS_CALLOUT_NOTIFY_FN2 notifyFn;
+
+ FWPS_CALLOUT_FLOW_DELETE_NOTIFY_FN0 flowDeleteFn;
+} FWPS_CALLOUT2;
+#line 2563 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+typedef struct FWPS_CALLOUT3_
+{
+
+
+ GUID calloutKey;
+
+ UINT32 flags;
+
+ FWPS_CALLOUT_CLASSIFY_FN3 classifyFn;
+
+ FWPS_CALLOUT_NOTIFY_FN3 notifyFn;
+
+ FWPS_CALLOUT_FLOW_DELETE_NOTIFY_FN0 flowDeleteFn;
+} FWPS_CALLOUT3;
+
+#line 2583 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+
+NTSTATUS
+__stdcall
+FwpsCalloutRegister0(
+ void* deviceObject,
+ const FWPS_CALLOUT0* callout,
+ UINT32* calloutId
+ );
+
+
+
+
+
+NTSTATUS
+__stdcall
+FwpsCalloutRegister1(
+ void* deviceObject,
+ const FWPS_CALLOUT1* callout,
+ UINT32* calloutId
+ );
+#line 2608 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+
+NTSTATUS
+__stdcall
+FwpsCalloutRegister2(
+ void* deviceObject,
+ const FWPS_CALLOUT2* callout,
+ UINT32* calloutId
+ );
+#line 2621 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+
+NTSTATUS
+__stdcall
+FwpsCalloutRegister3(
+ void* deviceObject,
+ const FWPS_CALLOUT3* callout,
+ UINT32* calloutId
+ );
+#line 2634 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+NTSTATUS
+__stdcall
+FwpsCalloutUnregisterById0( const UINT32 calloutId);
+
+
+NTSTATUS
+__stdcall
+FwpsCalloutUnregisterByKey0( const GUID* calloutKey);
+
+
+
+NTSTATUS
+__stdcall
+FwpsFlowAssociateContext0(
+ UINT64 flowId,
+ UINT16 layerId,
+ UINT32 calloutId,
+ UINT64 flowContext
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpsFlowRemoveContext0(
+ UINT64 flowId,
+ UINT16 layerId,
+ UINT32 calloutId
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpsFlowAbort0(
+ UINT64 flowId
+ );
+#line 2674 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+
+
+
+
+typedef struct FWPS_PACKET_LIST_INBOUND_IPSEC_INFORMATION0_
+{
+ unsigned isSecure:1;
+ unsigned isTransportMode:1;
+ unsigned isTunnelMode:1;
+ unsigned isTransportModeVerified:1;
+ unsigned isTunnelModeVerified:1;
+ unsigned isDeTunneled:1;
+} FWPS_PACKET_LIST_INBOUND_IPSEC_INFORMATION0;
+
+typedef struct FWPS_PACKET_LIST_OUTBOUND_IPSEC_INFORMATION0_
+{
+ unsigned isIPsecPolicyMatch:1;
+ unsigned isTransportPolicyMatch:1;
+ unsigned isTunnelPolicyMatch:1;
+ unsigned isTunnelIPinIP:1;
+} FWPS_PACKET_LIST_OUTBOUND_IPSEC_INFORMATION0;
+
+#pragma warning(push)
+#pragma warning(disable:4201)
+
+typedef struct FWPS_PACKET_LIST_IPSEC_INFORMATION0_
+{
+ union
+ {
+ FWPS_PACKET_LIST_INBOUND_IPSEC_INFORMATION0 inbound;
+ FWPS_PACKET_LIST_OUTBOUND_IPSEC_INFORMATION0 outbound;
+ UINT32 flags;
+ };
+} FWPS_PACKET_LIST_IPSEC_INFORMATION0;
+
+#pragma warning(pop)
+
+typedef struct FWPS_PACKET_LIST_FWP_INFORMATION0_
+{
+ unsigned isReinjected:1;
+} FWPS_PACKET_LIST_FWP_INFORMATION0;
+
+
+
+
+
+
+
+
+
+
+typedef struct FWPS_PACKET_LIST_INFORMATION0_
+{
+ FWPS_PACKET_LIST_IPSEC_INFORMATION0 ipsecInformation;
+ FWPS_PACKET_LIST_FWP_INFORMATION0 fwpInformation;
+} FWPS_PACKET_LIST_INFORMATION0;
+
+
+NTSTATUS
+__stdcall
+FwpsGetPacketListSecurityInformation0(
+ NET_BUFFER_LIST* packetList,
+ UINT32 queryFlags,
+ FWPS_PACKET_LIST_INFORMATION0* packetInformation
+ );
+
+
+
+
+
+
+
+
+NTSTATUS
+__stdcall
+FwpsPendOperation0(
+ HANDLE completionHandle,
+ HANDLE* completionContext
+ );
+
+
+void
+__stdcall
+FwpsCompleteOperation0(
+ HANDLE completionContext,
+ PNET_BUFFER_LIST netBufferList
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS
+__stdcall
+FwpsAcquireClassifyHandle0(
+ void* classifyContext,
+ UINT32 flags,
+ UINT64* classifyHandle
+ );
+
+
+void
+__stdcall
+FwpsReleaseClassifyHandle0(
+ UINT64 classifyHandle
+ );
+
+
+NTSTATUS
+__stdcall
+FwpsPendClassify0(
+ UINT64 classifyHandle,
+ UINT64 filterId,
+ UINT32 flags,
+ FWPS_CLASSIFY_OUT0* classifyOut
+ );
+
+
+void
+__stdcall
+FwpsCompleteClassify0(
+ UINT64 classifyHandle,
+ UINT32 flags,
+ const FWPS_CLASSIFY_OUT0* classifyOut
+ );
+
+
+NTSTATUS
+__stdcall
+FwpsAcquireWritableLayerDataPointer0(
+ UINT64 classifyHandle,
+ UINT64 filterId,
+ UINT32 flags,
+ PVOID* writableLayerData,
+ FWPS_CLASSIFY_OUT0* classifyOut
+ );
+
+
+void
+__stdcall
+FwpsApplyModifiedLayerData0(
+ UINT64 classifyHandle,
+ PVOID modifiedLayerData,
+ UINT32 flags
+ );
+
+
+
+
+
+
+
+
+
+
+typedef struct _FWPS_CONNECT_REQUEST0
+{
+
+
+
+ SOCKADDR_STORAGE localAddressAndPort;
+ SOCKADDR_STORAGE remoteAddressAndPort;
+ UINT64 portReservationToken;
+
+
+
+
+
+
+ DWORD localRedirectTargetPID;
+
+
+
+
+ struct _FWPS_CONNECT_REQUEST0* previousVersion;
+ UINT64 modifierFilterId;
+
+
+
+
+ HANDLE localRedirectHandle;
+
+
+
+
+
+ void* localRedirectContext;
+ SIZE_T localRedirectContextSize;
+#line 2874 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+} FWPS_CONNECT_REQUEST0;
+
+
+
+
+typedef struct _FWPS_BIND_REQUEST0
+{
+
+
+
+ SOCKADDR_STORAGE localAddressAndPort;
+ UINT64 portReservationToken;
+
+
+
+
+ struct _FWPS_BIND_REQUEST0* previousVersion;
+ UINT64 modifierFilterId;
+} FWPS_BIND_REQUEST0;
+
+#line 2895 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+typedef struct _FWPS_CONNECTION_POLICY0
+{
+
+
+
+
+ SOCKADDR_STORAGE localAddress;
+ SOCKADDR_STORAGE nextHopAddress;
+ IF_LUID interfaceLuid;
+
+} FWPS_CONNECTION_POLICY0;
+
+
+
+
+
+
+
+
+NTSTATUS
+__stdcall
+FwpsClassifyOptionSet0(
+ const FWPS_INCOMING_METADATA_VALUES0* inMetadataValues,
+ const FWP_CLASSIFY_OPTION_TYPE option,
+ const FWP_VALUE0* newValue
+ );
+
+
+
+
+
+
+
+typedef struct FWPS_TRANSPORT_SEND_PARAMS0_
+{
+ UCHAR* remoteAddress;
+ SCOPE_ID remoteScopeId;
+ WSACMSGHDR* controlData ;
+ ULONG controlDataLength ;
+} FWPS_TRANSPORT_SEND_PARAMS0;
+
+
+
+
+typedef struct FWPS_TRANSPORT_SEND_PARAMS1_
+{
+ UCHAR* remoteAddress;
+ SCOPE_ID remoteScopeId;
+ WSACMSGHDR* controlData ;
+ ULONG controlDataLength ;
+ UCHAR* headerIncludeHeader ;
+ ULONG headerIncludeHeaderLength ;
+} FWPS_TRANSPORT_SEND_PARAMS1;
+
+#line 2954 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+
+
+
+
+
+NTSTATUS
+__stdcall
+FwpsInjectionHandleCreate0(
+ ADDRESS_FAMILY addressFamily,
+ UINT32 flags,
+ HANDLE* injectionHandle
+ );
+
+
+NTSTATUS
+__stdcall
+FwpsInjectionHandleDestroy0( HANDLE injectionHandle);
+
+typedef void (__stdcall *FWPS_INJECT_COMPLETE0)(
+ void* context,
+ NET_BUFFER_LIST* netBufferList,
+ BOOLEAN dispatchLevel
+ );
+
+
+NTSTATUS
+__stdcall
+FwpsAllocateNetBufferAndNetBufferList0(
+ NDIS_HANDLE poolHandle,
+ USHORT contextSize,
+ USHORT contextBackFill,
+ MDL* mdlChain,
+ ULONG dataOffset,
+ SIZE_T dataLength,
+ NET_BUFFER_LIST** netBufferList
+ );
+
+
+void
+__stdcall
+FwpsFreeNetBufferList0(
+ NET_BUFFER_LIST* netBufferList
+ );
+
+
+NTSTATUS
+__stdcall
+FwpsAllocateCloneNetBufferList0(
+ NET_BUFFER_LIST* originalNetBufferList,
+ NDIS_HANDLE netBufferListPoolHandle,
+ NDIS_HANDLE netBufferPoolHandle,
+ ULONG allocateCloneFlags,
+ NET_BUFFER_LIST** netBufferList
+ );
+
+
+NTSTATUS
+__stdcall
+FwpsAllocateDeepCloneNetBufferList0(
+ NET_BUFFER_LIST* originalNetBufferList,
+ NDIS_HANDLE netBufferListPoolHandle,
+ NDIS_HANDLE netBufferPoolHandle,
+ NET_BUFFER_LIST** netBufferList
+ );
+
+
+void
+__stdcall
+FwpsFreeCloneNetBufferList0(
+ NET_BUFFER_LIST* netBufferList,
+ ULONG freeCloneFlags
+ );
+
+
+
+
+NTSTATUS
+__stdcall
+FwpsReassembleForwardFragmentGroup0(
+ ADDRESS_FAMILY addressFamily,
+ NET_BUFFER_LIST* fragmentGroupNblChain,
+ NDIS_HANDLE netBufferAndNetBufferListPoolHandle,
+ ULONG dataBackFill,
+ ULONG flags,
+ NET_BUFFER_LIST** reassembledNbl
+ );
+
+#line 3046 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+#line 3050 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+NTSTATUS
+__stdcall
+FwpsInjectNetworkSendAsync0(
+ HANDLE injectionHandle,
+ HANDLE injectionContext,
+ UINT32 flags,
+ COMPARTMENT_ID compartmentId,
+ NET_BUFFER_LIST* netBufferList,
+ FWPS_INJECT_COMPLETE0 completionFn,
+ HANDLE completionContext
+ );
+
+
+NTSTATUS
+__stdcall
+FwpsInjectForwardAsync0(
+ HANDLE injectionHandle,
+ HANDLE injectionContext,
+ UINT32 flags,
+ ADDRESS_FAMILY addressFamily,
+ COMPARTMENT_ID compartmentId,
+ IF_INDEX interfaceIndex,
+ NET_BUFFER_LIST* netBufferList,
+ FWPS_INJECT_COMPLETE0 completionFn,
+ HANDLE completionContext
+ );
+
+
+
+
+
+#line 3084 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+NTSTATUS
+__stdcall
+FwpsConstructIpHeaderForTransportPacket0(
+ NET_BUFFER_LIST* netBufferList,
+ ULONG headerIncludeHeaderLength,
+ ADDRESS_FAMILY addressFamily,
+ const UCHAR* sourceAddress,
+ const UCHAR* remoteAddress,
+ IPPROTO nextProtocol,
+ UINT64 endpointHandle,
+ const WSACMSGHDR* controlData,
+ ULONG controlDataLength,
+ UINT32 flags,
+ PVOID reserved,
+ IF_INDEX interfaceIndex,
+ IF_INDEX subInterfaceIndex
+ );
+
+#line 3107 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+NTSTATUS
+__stdcall
+FwpsInjectTransportSendAsync0(
+ HANDLE injectionHandle,
+ HANDLE injectionContext,
+ UINT64 endpointHandle,
+ UINT32 flags,
+ FWPS_TRANSPORT_SEND_PARAMS0* sendArgs,
+ ADDRESS_FAMILY addressFamily,
+ COMPARTMENT_ID compartmentId,
+ NET_BUFFER_LIST* netBufferList,
+ FWPS_INJECT_COMPLETE0 completionFn,
+ HANDLE completionContext
+ );
+
+
+
+
+NTSTATUS
+__stdcall
+FwpsInjectTransportSendAsync1(
+ HANDLE injectionHandle,
+ HANDLE injectionContext,
+ UINT64 endpointHandle,
+ UINT32 flags,
+ FWPS_TRANSPORT_SEND_PARAMS1* sendArgs,
+ ADDRESS_FAMILY addressFamily,
+ COMPARTMENT_ID compartmentId,
+ NET_BUFFER_LIST* netBufferList,
+ FWPS_INJECT_COMPLETE0 completionFn,
+ HANDLE completionContext
+ );
+
+#line 3143 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+NTSTATUS
+__stdcall
+FwpsInjectTransportReceiveAsync0(
+ HANDLE injectionHandle,
+ HANDLE injectionContext,
+ PVOID reserved,
+ UINT32 flags,
+ ADDRESS_FAMILY addressFamily,
+ COMPARTMENT_ID compartmentId,
+ IF_INDEX interfaceIndex,
+ IF_INDEX subInterfaceIndex,
+ NET_BUFFER_LIST* netBufferList,
+ FWPS_INJECT_COMPLETE0 completionFn,
+ HANDLE completionContext
+ );
+
+
+NTSTATUS
+__stdcall
+FwpsInjectNetworkReceiveAsync0(
+ HANDLE injectionHandle,
+ HANDLE injectionContext,
+ UINT32 flags,
+ COMPARTMENT_ID compartmentId,
+ IF_INDEX interfaceIndex,
+ IF_INDEX subInterfaceIndex,
+ NET_BUFFER_LIST* netBufferList,
+ FWPS_INJECT_COMPLETE0 completionFn,
+ HANDLE completionContext
+ );
+
+
+
+
+
+
+NTSTATUS
+__stdcall
+FwpsInjectMacReceiveAsync0(
+ HANDLE injectionHandle,
+ HANDLE injectionContext,
+ UINT32 flags,
+ UINT16 layerId,
+ IF_INDEX interfaceIndex,
+ NDIS_PORT_NUMBER NdisPortNumber,
+ NET_BUFFER_LIST* netBufferLists,
+ FWPS_INJECT_COMPLETE0 completionFn,
+ HANDLE completionContext
+ );
+
+
+
+
+NTSTATUS
+__stdcall
+FwpsInjectMacSendAsync0(
+ HANDLE injectionHandle,
+ HANDLE injectionContext,
+ UINT32 flags,
+ UINT16 layerId,
+ IF_INDEX interfaceIndex,
+ NDIS_PORT_NUMBER NdisPortNumber,
+ NET_BUFFER_LIST* netBufferLists,
+ FWPS_INJECT_COMPLETE0 completionFn,
+ HANDLE completionContext
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3245 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 3246 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+void
+__stdcall
+FwpsReferenceNetBufferList0(
+ NET_BUFFER_LIST* netBufferList,
+ BOOLEAN intendToModify
+ );
+
+
+void
+__stdcall
+FwpsDereferenceNetBufferList0(
+ NET_BUFFER_LIST* netBufferList,
+ BOOLEAN dispatchLevel
+ );
+
+
+
+
+
+
+
+typedef enum FWPS_PACKET_INJECTION_STATE_
+{
+
+ FWPS_PACKET_NOT_INJECTED,
+
+ FWPS_PACKET_INJECTED_BY_SELF,
+
+ FWPS_PACKET_INJECTED_BY_OTHER,
+
+
+ FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF,
+ FWPS_PACKET_INJECTION_STATE_MAX
+} FWPS_PACKET_INJECTION_STATE;
+
+
+FWPS_PACKET_INJECTION_STATE
+__stdcall
+FwpsQueryPacketInjectionState0(
+ HANDLE injectionHandle,
+ const NET_BUFFER_LIST* netBufferList,
+ HANDLE* injectionContext
+ );
+
+
+typedef enum FWPS_CONNECTION_REDIRECT_STATE_
+{
+
+ FWPS_CONNECTION_NOT_REDIRECTED,
+
+ FWPS_CONNECTION_REDIRECTED_BY_SELF,
+
+ FWPS_CONNECTION_REDIRECTED_BY_OTHER,
+
+
+ FWPS_CONNECTION_PREVIOUSLY_REDIRECTED_BY_SELF,
+ FWPS_CONNECTION_REDIRECT_STATE_MAX
+} FWPS_CONNECTION_REDIRECT_STATE;
+
+
+NTSTATUS
+__stdcall
+FwpsRedirectHandleCreate0(
+ const GUID* providerGuid,
+ UINT32 flags,
+ HANDLE* redirectHandle
+ );
+
+
+void
+__stdcall
+FwpsRedirectHandleDestroy0( HANDLE redirectHandle);
+
+
+
+FWPS_CONNECTION_REDIRECT_STATE
+__stdcall
+FwpsQueryConnectionRedirectState0(
+ HANDLE redirectRecords,
+ HANDLE redirectHandle,
+ void** redirectContext
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpsQueryConnectionSioFormatRedirectRecords0(
+ HANDLE RedirectRecords,
+ PVOID OutputBuffer,
+ SIZE_T OutputBufferLength,
+ PSIZE_T BytesTransferred
+ );
+
+
+#line 3344 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+
+
+
+
+
+typedef enum FWPS_NET_BUFFER_LIST_EVENT_TYPE0_
+{
+ FWPS_NET_BUFFER_LIST_ENTERED_NETIO,
+ FWPS_NET_BUFFER_LIST_CLONED_BY_NETIO,
+ FWPS_NET_BUFFER_LIST_CLONED_VIA_WFP_API,
+ FWPS_NET_BUFFER_LIST_DUPLICATED_BY_NETIO,
+ FWPS_NET_BUFFER_LIST_EXIT_NETIO,
+ FWPS_NET_BUFFER_LIST_CONTEXT_REMOVED,
+ FWPS_NET_BUFFER_LIST_NDIS_SEND_COMPLETE,
+ FWPS_NET_BUFFER_LIST_NDIS_RECV_COMPLETE
+
+ ,
+
+ FWPS_NET_BUFFER_LIST_NDIS_ETHERNET_SEND_COMPLETE = FWPS_NET_BUFFER_LIST_NDIS_SEND_COMPLETE,
+ FWPS_NET_BUFFER_LIST_NDIS_ETHERNET_RECV_COMPLETE = FWPS_NET_BUFFER_LIST_NDIS_RECV_COMPLETE,
+ FWPS_NET_BUFFER_LIST_NDIS_NATIVE_SEND_COMPLETE,
+ FWPS_NET_BUFFER_LIST_NDIS_NATIVE_RECV_COMPLETE,
+ FWPS_NET_BUFFER_LIST_NDIS_VSWITCH_INGRESS_COMPLETE,
+ FWPS_NET_BUFFER_LIST_NDIS_VSWITCH_EGRESS_COMPLETE,
+ FWPS_NET_BUFFER_LIST_CLONED_BY_NDIS
+
+
+ ,
+ FWPS_NET_BUFFER_LIST_REASSEMBLED_FRAGMENT,
+ FWPS_NET_BUFFER_LIST_REASSEMBLY_COMPLETE
+
+#line 3380 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+} FWPS_NET_BUFFER_LIST_EVENT_TYPE0;
+
+typedef void (__stdcall *FWPS_NET_BUFFER_LIST_NOTIFY_FN0)(
+ FWPS_NET_BUFFER_LIST_EVENT_TYPE0 eventType,
+ NET_BUFFER_LIST* netBufferList,
+ NET_BUFFER_LIST* newNetBufferList,
+ UINT16 layerId,
+ UINT64 context,
+ UINT64 contextTag
+ );
+
+
+UINT64
+__stdcall
+FwpsNetBufferListGetTagForContext0();
+
+
+
+
+NTSTATUS
+__stdcall
+FwpsNetBufferListAssociateContext0(
+ NET_BUFFER_LIST* netBufferList,
+ UINT16 layerId,
+
+ UINT64 context,
+ UINT64 contextTag,
+ GUID* providerGuid,
+ void* deviceObject,
+ FWPS_NET_BUFFER_LIST_NOTIFY_FN0 notifyFn,
+ UINT32 flags
+ );
+
+
+
+
+
+typedef NTSTATUS (__stdcall *FWPS_NET_BUFFER_LIST_NOTIFY_FN1)(
+ FWPS_NET_BUFFER_LIST_EVENT_TYPE0 eventType,
+
+ NET_BUFFER_LIST* netBufferList,
+ NET_BUFFER_LIST* newNetBufferList,
+ UINT16 layerId,
+ UINT64 context,
+ UINT64 contextTag
+ );
+
+
+NTSTATUS
+__stdcall
+FwpsNetBufferListAssociateContext1(
+ NET_BUFFER_LIST* netBufferList,
+ UINT16 layerId,
+
+ UINT64 context,
+ UINT64 contextTag,
+ GUID* providerGuid,
+ void* deviceObject,
+ FWPS_NET_BUFFER_LIST_NOTIFY_FN1 notifyFn,
+ UINT32 flags
+ );
+
+#line 3443 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+NTSTATUS
+__stdcall
+FwpsNetBufferListRetrieveContext0(
+ NET_BUFFER_LIST* netBufferList,
+ UINT64 contextTag,
+ BOOLEAN removeContext,
+ UINT32 flags,
+ UINT64* context
+ );
+
+
+NTSTATUS
+__stdcall
+FwpsNetBufferListRemoveContext0(
+ NET_BUFFER_LIST* netBufferList,
+ UINT64 contextTag,
+ UINT32 flags
+ );
+
+#line 3465 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3615 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+#line 3617 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct FWPS_STREAM_DATA_OFFSET0_
+{
+
+ NET_BUFFER_LIST* netBufferList;
+
+ NET_BUFFER* netBuffer;
+
+ MDL* mdl;
+
+ UINT32 mdlOffset;
+
+ UINT32 netBufferOffset;
+
+ SIZE_T streamDataOffset;
+} FWPS_STREAM_DATA_OFFSET0;
+
+
+
+
+
+
+
+
+
+#line 3659 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+
+
+
+
+
+
+typedef struct FWPS_STREAM_DATA0_
+{
+ UINT32 flags;
+ FWPS_STREAM_DATA_OFFSET0 dataOffset;
+ SIZE_T dataLength;
+
+ NET_BUFFER_LIST* netBufferListChain;
+} FWPS_STREAM_DATA0;
+
+typedef enum FWPS_STREAM_ACTION_TYPE_
+{
+ FWPS_STREAM_ACTION_NONE,
+ FWPS_STREAM_ACTION_NEED_MORE_DATA,
+ FWPS_STREAM_ACTION_DROP_CONNECTION,
+ FWPS_STREAM_ACTION_DEFER,
+
+ FWPS_STREAM_ACTION_ALLOW_CONNECTION,
+#line 3687 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+ FWPS_STREAM_ACTION_TYPE_MAX
+} FWPS_STREAM_ACTION_TYPE;
+
+typedef struct FWPS_STREAM_CALLOUT_IO_PACKET0_
+{
+ FWPS_STREAM_DATA0* streamData;
+ SIZE_T missedBytes;
+ UINT32 countBytesRequired;
+ SIZE_T countBytesEnforced;
+ FWPS_STREAM_ACTION_TYPE streamAction;
+} FWPS_STREAM_CALLOUT_IO_PACKET0;
+
+
+NTSTATUS
+__stdcall
+FwpsStreamInjectAsync0(
+ HANDLE injectionHandle,
+ HANDLE injectionContext,
+ UINT32 flags,
+ UINT64 flowId,
+ UINT32 calloutId,
+ UINT16 layerId,
+ UINT32 streamFlags,
+ NET_BUFFER_LIST* netBufferList,
+ SIZE_T dataLength,
+ FWPS_INJECT_COMPLETE0 completionFn,
+ HANDLE completionContext
+ );
+
+
+NTSTATUS
+__stdcall
+FwpsStreamContinue0(
+ UINT64 flowId,
+ UINT32 calloutId,
+ UINT16 layerId,
+ UINT32 streamFlags
+ );
+
+
+void
+__stdcall
+FwpsCopyStreamDataToBuffer0(
+ const FWPS_STREAM_DATA0* calloutStreamData,
+ PVOID buffer,
+ SIZE_T bytesToCopy,
+ SIZE_T* bytesCopied
+ );
+
+
+NTSTATUS
+__stdcall
+FwpsCloneStreamData0(
+ FWPS_STREAM_DATA0* calloutStreamData,
+ NDIS_HANDLE netBufferListPoolHandle,
+ NDIS_HANDLE netBufferPoolHandle,
+ ULONG allocateCloneFlags,
+ NET_BUFFER_LIST** netBufferListChain
+ );
+
+
+void
+__stdcall
+FwpsDiscardClonedStreamData0(
+ NET_BUFFER_LIST* netBufferListChain,
+ UINT32 allocateCloneFlags,
+ BOOLEAN dispatchLevel
+ );
+
+
+
+
+
+
+
+
+
+NTSTATUS
+__stdcall
+FwpsVirtualIfTunnelInfoGet0(
+ const FWPS_INCOMING_METADATA_VALUES0* metadata,
+ IPSEC_VIRTUAL_IF_TUNNEL_INFO0* virtualIfTunnelInfo
+ );
+
+NTSTATUS
+__stdcall
+FwpsVirtualIfTunnelInfoSet0(
+ NET_BUFFER_LIST* netBufferList,
+ const IPSEC_VIRTUAL_IF_TUNNEL_INFO0* virtualIfTunnelInfo
+ );
+
+#line 3779 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS
+__stdcall
+FwpsOpenToken0(
+ HANDLE engineHandle,
+ LUID modifiedId,
+ DWORD desiredAccess,
+ HANDLE* accessToken
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpsAleEndpointGetById0(
+ HANDLE engineHandle,
+ UINT64 endpointId,
+ FWPS_ALE_ENDPOINT_PROPERTIES0** properties
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpsAleEndpointCreateEnumHandle0(
+ HANDLE engineHandle,
+ const FWPS_ALE_ENDPOINT_ENUM_TEMPLATE0* enumTemplate,
+ HANDLE* enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpsAleEndpointEnum0(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+ FWPS_ALE_ENDPOINT_PROPERTIES0*** entries,
+ UINT32* numEntriesReturned
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpsAleEndpointDestroyEnumHandle0(
+ HANDLE engineHandle,
+ HANDLE enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpsAleEndpointGetSecurityInfo0(
+ HANDLE engineHandle,
+ SECURITY_INFORMATION securityInfo,
+ PSID* sidOwner,
+ PSID* sidGroup,
+ PACL* dacl,
+ PACL* sacl,
+ PSECURITY_DESCRIPTOR* securityDescriptor
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpsAleEndpointSetSecurityInfo0(
+ HANDLE engineHandle,
+ SECURITY_INFORMATION securityInfo,
+ const SID* sidOwner,
+ const SID* sidGroup,
+ const ACL* dacl,
+ const ACL* sacl
+ );
+
+#line 3869 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+
+
+
+#line 3874 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+
+#line 3876 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#pragma endregion
+
+#line 3879 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpsk.h"
+#line 38 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+
+
+
+
+#pragma region Desktop Family or AppRuntime Package
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const GUID FWPM_LAYER_INBOUND_IPPACKET_V4;
+#line 31 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_INBOUND_IPPACKET_V4_DISCARD;
+#line 40 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_INBOUND_IPPACKET_V6;
+#line 49 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_INBOUND_IPPACKET_V6_DISCARD;
+#line 58 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_OUTBOUND_IPPACKET_V4;
+#line 67 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_OUTBOUND_IPPACKET_V4_DISCARD;
+#line 76 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_OUTBOUND_IPPACKET_V6;
+#line 85 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_OUTBOUND_IPPACKET_V6_DISCARD;
+#line 94 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_IPFORWARD_V4;
+#line 103 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_IPFORWARD_V4_DISCARD;
+#line 112 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_IPFORWARD_V6;
+#line 121 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_IPFORWARD_V6_DISCARD;
+#line 130 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_INBOUND_TRANSPORT_V4;
+#line 139 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_INBOUND_TRANSPORT_V4_DISCARD;
+#line 148 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_INBOUND_TRANSPORT_V6;
+#line 157 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_INBOUND_TRANSPORT_V6_DISCARD;
+#line 166 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_OUTBOUND_TRANSPORT_V4;
+#line 175 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_OUTBOUND_TRANSPORT_V4_DISCARD;
+#line 184 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_OUTBOUND_TRANSPORT_V6;
+#line 193 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_OUTBOUND_TRANSPORT_V6_DISCARD;
+#line 202 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_STREAM_V4;
+#line 211 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_STREAM_V4_DISCARD;
+#line 220 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_STREAM_V6;
+#line 229 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_STREAM_V6_DISCARD;
+#line 238 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_DATAGRAM_DATA_V4;
+#line 247 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_DATAGRAM_DATA_V4_DISCARD;
+#line 256 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_DATAGRAM_DATA_V6;
+#line 265 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_DATAGRAM_DATA_V6_DISCARD;
+#line 274 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_INBOUND_ICMP_ERROR_V4;
+#line 283 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_INBOUND_ICMP_ERROR_V4_DISCARD;
+#line 292 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_INBOUND_ICMP_ERROR_V6;
+#line 301 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_INBOUND_ICMP_ERROR_V6_DISCARD;
+#line 310 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_OUTBOUND_ICMP_ERROR_V4;
+#line 319 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_OUTBOUND_ICMP_ERROR_V4_DISCARD;
+#line 328 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_OUTBOUND_ICMP_ERROR_V6;
+#line 337 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_OUTBOUND_ICMP_ERROR_V6_DISCARD;
+#line 346 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V4;
+#line 355 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V4_DISCARD;
+#line 364 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V6;
+#line 373 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V6_DISCARD;
+#line 382 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_AUTH_LISTEN_V4;
+#line 391 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_AUTH_LISTEN_V4_DISCARD;
+#line 400 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_AUTH_LISTEN_V6;
+#line 409 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_AUTH_LISTEN_V6_DISCARD;
+#line 418 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4;
+#line 427 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4_DISCARD;
+#line 436 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6;
+#line 445 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6_DISCARD;
+#line 454 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_AUTH_CONNECT_V4;
+#line 463 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_AUTH_CONNECT_V4_DISCARD;
+#line 472 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_AUTH_CONNECT_V6;
+#line 481 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_AUTH_CONNECT_V6_DISCARD;
+#line 490 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_FLOW_ESTABLISHED_V4;
+#line 499 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_FLOW_ESTABLISHED_V4_DISCARD;
+#line 508 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_FLOW_ESTABLISHED_V6;
+#line 517 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_FLOW_ESTABLISHED_V6_DISCARD;
+#line 526 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_LAYER_INBOUND_MAC_FRAME_ETHERNET;
+#line 537 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_OUTBOUND_MAC_FRAME_ETHERNET;
+#line 546 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_INBOUND_MAC_FRAME_NATIVE;
+#line 555 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_OUTBOUND_MAC_FRAME_NATIVE;
+#line 564 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_INGRESS_VSWITCH_ETHERNET;
+#line 573 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_EGRESS_VSWITCH_ETHERNET;
+#line 582 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_INGRESS_VSWITCH_TRANSPORT_V4;
+#line 591 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_INGRESS_VSWITCH_TRANSPORT_V6;
+#line 600 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_EGRESS_VSWITCH_TRANSPORT_V4;
+#line 609 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_EGRESS_VSWITCH_TRANSPORT_V6;
+#line 618 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 620 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+extern const GUID FWPM_LAYER_INBOUND_TRANSPORT_FAST;
+#line 630 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_OUTBOUND_TRANSPORT_FAST;
+#line 639 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_INBOUND_MAC_FRAME_NATIVE_FAST;
+#line 648 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_OUTBOUND_MAC_FRAME_NATIVE_FAST;
+#line 657 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+#line 660 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_IPSEC_KM_DEMUX_V4;
+#line 669 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_IPSEC_KM_DEMUX_V6;
+#line 678 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_IPSEC_V4;
+#line 687 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_IPSEC_V6;
+#line 696 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_IKEEXT_V4;
+#line 705 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_IKEEXT_V6;
+#line 714 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_RPC_UM;
+#line 723 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_RPC_EPMAP;
+#line 732 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_RPC_EP_ADD;
+#line 741 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_RPC_PROXY_CONN;
+#line 750 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_RPC_PROXY_IF;
+#line 759 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_LAYER_KM_AUTHORIZATION;
+#line 770 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_NAME_RESOLUTION_CACHE_V4;
+#line 779 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_NAME_RESOLUTION_CACHE_V6;
+#line 788 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_RESOURCE_RELEASE_V4;
+#line 797 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_RESOURCE_RELEASE_V6;
+#line 806 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_ENDPOINT_CLOSURE_V4;
+#line 815 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_ENDPOINT_CLOSURE_V6;
+#line 824 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_CONNECT_REDIRECT_V4;
+#line 833 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_CONNECT_REDIRECT_V6;
+#line 842 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_BIND_REDIRECT_V4;
+#line 851 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_ALE_BIND_REDIRECT_V6;
+#line 860 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_STREAM_PACKET_V4;
+#line 869 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_STREAM_PACKET_V6;
+#line 878 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 880 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_LAYER_INBOUND_RESERVED2;
+#line 891 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 893 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+extern const GUID FWPM_LAYER_OUTBOUND_NETWORK_CONNECTION_POLICY_V4;
+#line 905 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_LAYER_OUTBOUND_NETWORK_CONNECTION_POLICY_V6;
+#line 914 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 916 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+
+
+
+
+extern const GUID FWPM_SUBLAYER_RPC_AUDIT;
+#line 932 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_SUBLAYER_IPSEC_TUNNEL;
+#line 941 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_SUBLAYER_UNIVERSAL;
+#line 950 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_SUBLAYER_LIPS;
+#line 959 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_SUBLAYER_SECURE_SOCKET;
+#line 968 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_SUBLAYER_TCP_CHIMNEY_OFFLOAD;
+#line 977 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_SUBLAYER_INSPECTION;
+#line 986 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_SUBLAYER_TEREDO;
+#line 995 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+
+extern const GUID FWPM_SUBLAYER_IPSEC_FORWARD_OUTBOUND_TUNNEL;
+#line 1008 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 1010 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_SUBLAYER_IPSEC_DOSP;
+#line 1021 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 1023 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_SUBLAYER_TCP_TEMPLATES;
+#line 1034 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_SUBLAYER_IPSEC_SECURITY_REALM;
+#line 1045 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 1047 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_SUBLAYER_MPSSVC_WSH;
+#line 1056 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_SUBLAYER_MPSSVC_WF;
+#line 1065 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_SUBLAYER_MPSSVC_QUARANTINE;
+#line 1074 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_SUBLAYER_MPSSVC_EDP;
+#line 1083 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_SUBLAYER_MPSSVC_TENANT_RESTRICTIONS;
+#line 1092 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_SUBLAYER_MPSSVC_APP_ISOLATION;
+#line 1101 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 1103 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+
+
+
+
+extern const GUID FWPM_CONDITION_ALE_PACKAGE_FAMILY_NAME;
+#line 1119 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 1121 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_CONDITION_INTERFACE_MAC_ADDRESS;
+#line 1132 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_MAC_LOCAL_ADDRESS;
+#line 1141 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_MAC_REMOTE_ADDRESS;
+#line 1150 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_ETHER_TYPE;
+#line 1159 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+extern const GUID FWPM_CONDITION_VLAN_ID;
+#line 1169 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_VSWITCH_TENANT_NETWORK_ID;
+#line 1178 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_NDIS_PORT;
+#line 1187 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_NDIS_MEDIA_TYPE;
+#line 1196 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_NDIS_PHYSICAL_MEDIA_TYPE;
+#line 1205 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_L2_FLAGS;
+#line 1214 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_MAC_LOCAL_ADDRESS_TYPE;
+#line 1223 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_MAC_REMOTE_ADDRESS_TYPE;
+#line 1232 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_CONDITION_ALE_PACKAGE_ID;
+#line 1243 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_MAC_SOURCE_ADDRESS;
+#line 1252 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_MAC_DESTINATION_ADDRESS;
+#line 1261 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_MAC_SOURCE_ADDRESS_TYPE;
+#line 1270 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_MAC_DESTINATION_ADDRESS_TYPE;
+#line 1279 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_IP_SOURCE_PORT;
+#line 1288 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_CONDITION_IP_DESTINATION_PORT;
+#line 1299 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_CONDITION_VSWITCH_ID;
+#line 1310 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_VSWITCH_NETWORK_TYPE;
+#line 1319 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_VSWITCH_SOURCE_INTERFACE_ID;
+#line 1328 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_VSWITCH_DESTINATION_INTERFACE_ID;
+#line 1337 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_VSWITCH_SOURCE_VM_ID;
+#line 1346 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_VSWITCH_DESTINATION_VM_ID;
+#line 1355 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_VSWITCH_SOURCE_INTERFACE_TYPE;
+#line 1364 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_VSWITCH_DESTINATION_INTERFACE_TYPE;
+#line 1373 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_CONDITION_ALE_SECURITY_ATTRIBUTE_FQBN_VALUE;
+#line 1384 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_IPSEC_SECURITY_REALM_ID;
+#line 1393 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_ALE_EFFECTIVE_NAME;
+#line 1402 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 1404 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+#line 1405 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_IP_LOCAL_ADDRESS;
+#line 1414 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_IP_REMOTE_ADDRESS;
+#line 1423 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_IP_SOURCE_ADDRESS;
+#line 1432 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_IP_DESTINATION_ADDRESS;
+#line 1441 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE;
+#line 1450 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_IP_DESTINATION_ADDRESS_TYPE;
+#line 1459 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_CONDITION_IP_NEXTHOP_ADDRESS;
+#line 1470 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 1472 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_IP_LOCAL_INTERFACE;
+#line 1481 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+extern const GUID FWPM_CONDITION_IP_ARRIVAL_INTERFACE;
+#line 1493 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_ARRIVAL_INTERFACE_TYPE;
+#line 1502 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_ARRIVAL_TUNNEL_TYPE;
+#line 1511 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_ARRIVAL_INTERFACE_INDEX;
+#line 1520 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_CONDITION_NEXTHOP_SUB_INTERFACE_INDEX;
+#line 1531 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_IP_NEXTHOP_INTERFACE;
+#line 1540 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_NEXTHOP_INTERFACE_TYPE;
+#line 1549 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_NEXTHOP_TUNNEL_TYPE;
+#line 1558 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_NEXTHOP_INTERFACE_INDEX;
+#line 1567 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_ORIGINAL_PROFILE_ID;
+#line 1576 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_CURRENT_PROFILE_ID;
+#line 1585 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_LOCAL_INTERFACE_PROFILE_ID;
+#line 1594 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_ARRIVAL_INTERFACE_PROFILE_ID;
+#line 1603 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_NEXTHOP_INTERFACE_PROFILE_ID;
+#line 1612 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+extern const GUID FWPM_CONDITION_REAUTHORIZE_REASON;
+#line 1622 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_ORIGINAL_ICMP_TYPE;
+#line 1631 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_IP_PHYSICAL_ARRIVAL_INTERFACE;
+#line 1640 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_IP_PHYSICAL_NEXTHOP_INTERFACE;
+#line 1649 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_INTERFACE_QUARANTINE_EPOCH;
+#line 1658 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 1660 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 1662 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_INTERFACE_TYPE;
+#line 1671 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+#line 1677 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_TUNNEL_TYPE;
+#line 1686 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+#line 1692 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_IP_FORWARD_INTERFACE;
+#line 1701 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_IP_PROTOCOL;
+#line 1710 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_IP_LOCAL_PORT;
+#line 1719 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_CONDITION_IP_REMOTE_PORT;
+#line 1730 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_CONDITION_EMBEDDED_LOCAL_ADDRESS_TYPE;
+#line 1741 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_EMBEDDED_REMOTE_ADDRESS;
+#line 1750 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_EMBEDDED_PROTOCOL;
+#line 1759 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_EMBEDDED_LOCAL_PORT;
+#line 1768 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_EMBEDDED_REMOTE_PORT;
+#line 1777 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_FLAGS;
+#line 1786 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_DIRECTION;
+#line 1795 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_INTERFACE_INDEX;
+#line 1804 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+#line 1810 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_SUB_INTERFACE_INDEX;
+#line 1819 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+
+#line 1826 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_SOURCE_INTERFACE_INDEX;
+#line 1835 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_SOURCE_SUB_INTERFACE_INDEX;
+#line 1844 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_DESTINATION_INTERFACE_INDEX;
+#line 1853 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_DESTINATION_SUB_INTERFACE_INDEX;
+#line 1862 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_ALE_APP_ID;
+#line 1871 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_CONDITION_ALE_ORIGINAL_APP_ID;
+#line 1882 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 1884 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_ALE_USER_ID;
+#line 1893 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_ALE_REMOTE_USER_ID;
+#line 1902 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_ALE_REMOTE_MACHINE_ID;
+#line 1911 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_ALE_PROMISCUOUS_MODE;
+#line 1920 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_ALE_SIO_FIREWALL_SYSTEM_PORT;
+#line 1929 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+
+extern const GUID FWPM_CONDITION_ALE_REAUTH_REASON;
+#line 1942 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 1944 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_ALE_NAP_CONTEXT;
+#line 1953 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+extern const GUID FWPM_CONDITION_KM_AUTH_NAP_CONTEXT;
+#line 1963 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+#line 1964 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_REMOTE_USER_TOKEN;
+#line 1973 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RPC_IF_UUID;
+#line 1982 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RPC_IF_VERSION;
+#line 1991 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RPC_IF_FLAG;
+#line 2000 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_DCOM_APP_ID;
+#line 2009 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_IMAGE_NAME;
+#line 2018 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RPC_PROTOCOL;
+#line 2027 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RPC_AUTH_TYPE;
+#line 2036 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RPC_AUTH_LEVEL;
+#line 2045 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_SEC_ENCRYPT_ALGORITHM;
+#line 2054 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_SEC_KEY_SIZE;
+#line 2063 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_IP_LOCAL_ADDRESS_V4;
+#line 2072 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_IP_LOCAL_ADDRESS_V6;
+#line 2081 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_PIPE;
+#line 2090 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_IP_REMOTE_ADDRESS_V4;
+#line 2099 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_IP_REMOTE_ADDRESS_V6;
+#line 2108 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RPC_OPNUM;
+#line 2117 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_PROCESS_WITH_RPC_IF_UUID;
+#line 2126 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RPC_EP_VALUE;
+#line 2135 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RPC_EP_FLAGS;
+#line 2144 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_CLIENT_TOKEN;
+#line 2153 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RPC_SERVER_NAME;
+#line 2162 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RPC_SERVER_PORT;
+#line 2171 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RPC_PROXY_AUTH_TYPE;
+#line 2180 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_CLIENT_CERT_KEY_LENGTH;
+#line 2189 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_CLIENT_CERT_OID;
+#line 2198 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_NET_EVENT_TYPE;
+#line 2207 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+extern const GUID FWPM_CONDITION_PEER_NAME;
+#line 2217 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_REMOTE_ID;
+#line 2226 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_AUTHENTICATION_TYPE;
+#line 2235 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_KM_TYPE;
+#line 2244 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_KM_MODE;
+#line 2253 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_IPSEC_POLICY_KEY;
+#line 2262 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+extern const GUID FWPM_CONDITION_QM_MODE;
+#line 2272 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 2274 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+#line 2275 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_CONDITION_COMPARTMENT_ID;
+#line 2286 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 2288 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_CONDITION_RESERVED0;
+#line 2299 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RESERVED1;
+#line 2308 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RESERVED2;
+#line 2317 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RESERVED3;
+#line 2326 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RESERVED4;
+#line 2335 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RESERVED5;
+#line 2344 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RESERVED6;
+#line 2353 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RESERVED7;
+#line 2362 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RESERVED8;
+#line 2371 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RESERVED9;
+#line 2380 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RESERVED10;
+#line 2389 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RESERVED11;
+#line 2398 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RESERVED12;
+#line 2407 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_CONDITION_RESERVED13;
+#line 2418 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RESERVED14;
+#line 2427 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CONDITION_RESERVED15;
+#line 2436 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 2438 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 2440 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+
+
+
+extern const GUID FWPM_PROVIDER_IKEEXT;
+#line 2455 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+extern const GUID FWPM_PROVIDER_IPSEC_DOSP_CONFIG;
+#line 2465 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+#line 2466 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_PROVIDER_TCP_CHIMNEY_OFFLOAD;
+#line 2475 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+extern const GUID FWPM_PROVIDER_TCP_TEMPLATES;
+#line 2485 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_PROVIDER_MPSSVC_WSH;
+#line 2494 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_PROVIDER_MPSSVC_WF;
+#line 2503 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_PROVIDER_MPSSVC_EDP;
+#line 2512 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_PROVIDER_MPSSVC_TENANT_RESTRICTIONS;
+#line 2521 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_PROVIDER_MPSSVC_APP_ISOLATION;
+#line 2530 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+#line 2531 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+
+
+
+extern const GUID FWPM_CALLOUT_IPSEC_INBOUND_TRANSPORT_V4;
+#line 2546 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_IPSEC_INBOUND_TRANSPORT_V6;
+#line 2555 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_IPSEC_OUTBOUND_TRANSPORT_V4;
+#line 2564 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_IPSEC_OUTBOUND_TRANSPORT_V6;
+#line 2573 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_IPSEC_INBOUND_TUNNEL_V4;
+#line 2582 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_IPSEC_INBOUND_TUNNEL_V6;
+#line 2591 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_IPSEC_OUTBOUND_TUNNEL_V4;
+#line 2600 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_IPSEC_OUTBOUND_TUNNEL_V6;
+#line 2609 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_IPSEC_FORWARD_INBOUND_TUNNEL_V4;
+#line 2618 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_IPSEC_FORWARD_INBOUND_TUNNEL_V6;
+#line 2627 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_IPSEC_FORWARD_OUTBOUND_TUNNEL_V4;
+#line 2636 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_IPSEC_FORWARD_OUTBOUND_TUNNEL_V6;
+#line 2645 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_IPSEC_INBOUND_INITIATE_SECURE_V4;
+#line 2654 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_IPSEC_INBOUND_INITIATE_SECURE_V6;
+#line 2663 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_IPSEC_INBOUND_TUNNEL_ALE_ACCEPT_V4;
+#line 2672 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_IPSEC_INBOUND_TUNNEL_ALE_ACCEPT_V6;
+#line 2681 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_IPSEC_ALE_CONNECT_V4;
+#line 2690 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_IPSEC_ALE_CONNECT_V6;
+#line 2699 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_CALLOUT_IPSEC_DOSP_FORWARD_V6;
+#line 2710 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_IPSEC_DOSP_FORWARD_V4;
+#line 2719 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 2721 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_WFP_TRANSPORT_LAYER_V4_SILENT_DROP;
+#line 2730 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_WFP_TRANSPORT_LAYER_V6_SILENT_DROP;
+#line 2739 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_TCP_CHIMNEY_CONNECT_LAYER_V4;
+#line 2748 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_TCP_CHIMNEY_CONNECT_LAYER_V6;
+#line 2757 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_TCP_CHIMNEY_ACCEPT_LAYER_V4;
+#line 2766 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_TCP_CHIMNEY_ACCEPT_LAYER_V6;
+#line 2775 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_SET_OPTIONS_AUTH_CONNECT_LAYER_V4;
+#line 2784 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_SET_OPTIONS_AUTH_CONNECT_LAYER_V6;
+#line 2793 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_CALLOUT_SET_OPTIONS_AUTH_RECV_ACCEPT_LAYER_V4;
+#line 2804 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_SET_OPTIONS_AUTH_RECV_ACCEPT_LAYER_V6;
+#line 2813 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_RESERVED_AUTH_CONNECT_LAYER_V4;
+#line 2822 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_RESERVED_AUTH_CONNECT_LAYER_V6;
+#line 2831 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 2833 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_TEREDO_ALE_RESOURCE_ASSIGNMENT_V6;
+#line 2842 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+extern const GUID FWPM_CALLOUT_EDGE_TRAVERSAL_ALE_RESOURCE_ASSIGNMENT_V4;
+#line 2854 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_TEREDO_ALE_LISTEN_V6;
+#line 2863 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+extern const GUID FWPM_CALLOUT_EDGE_TRAVERSAL_ALE_LISTEN_V4;
+#line 2875 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_CALLOUT_TCP_TEMPLATES_CONNECT_LAYER_V4;
+#line 2886 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_TCP_TEMPLATES_CONNECT_LAYER_V6;
+#line 2895 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_TCP_TEMPLATES_ACCEPT_LAYER_V4;
+#line 2904 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_TCP_TEMPLATES_ACCEPT_LAYER_V6;
+#line 2913 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 2915 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_CALLOUT_POLICY_SILENT_MODE_AUTH_CONNECT_LAYER_V4;
+#line 2926 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_POLICY_SILENT_MODE_AUTH_CONNECT_LAYER_V6;
+#line 2935 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_POLICY_SILENT_MODE_AUTH_RECV_ACCEPT_LAYER_V4;
+#line 2944 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_POLICY_SILENT_MODE_AUTH_RECV_ACCEPT_LAYER_V6;
+#line 2953 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 2955 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_CALLOUT_HTTP_TEMPLATE_SSL_HANDSHAKE;
+#line 2966 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 2968 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+extern const GUID FWPM_CALLOUT_OUTBOUND_NETWORK_CONNECTION_POLICY_LAYER_V4;
+#line 2979 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_OUTBOUND_NETWORK_CONNECTION_POLICY_LAYER_V6;
+#line 2988 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 2990 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+
+
+
+extern const GUID FWPM_CALLOUT_BUILT_IN_RESERVED_1;
+#line 3004 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_BUILT_IN_RESERVED_2;
+#line 3012 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_BUILT_IN_RESERVED_3;
+#line 3020 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_CALLOUT_BUILT_IN_RESERVED_4;
+#line 3028 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+#line 3029 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+
+
+
+extern const GUID FWPM_PROVIDER_CONTEXT_SECURE_SOCKET_AUTHIP;
+#line 3044 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_PROVIDER_CONTEXT_SECURE_SOCKET_IPSEC;
+#line 3053 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+
+
+
+
+extern const GUID FWPM_KEYING_MODULE_IKE;
+#line 3069 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_KEYING_MODULE_AUTHIP;
+#line 3078 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+extern const GUID FWPM_KEYING_MODULE_IKEV2;
+#line 3087 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 35 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 35 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma region Desktop Family or AppRuntime Package
+
+#pragma once
+#pragma warning(push)
+#pragma warning(disable:4668)
+#pragma once
+#pragma region Input Buffer SAL 1 compatibility macros
+#pragma endregion Input Buffer SAL 1 compatibility macros
+#pragma once
+#pragma once
+#pragma warning(pop)
+
+
+#pragma warning(push)
+#line 73 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+#pragma warning(disable:4201)
+#line 75 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+typedef struct IPSEC_V4_UDP_ENCAPSULATION0_ IPSEC_V4_UDP_ENCAPSULATION0;
+
+typedef
+enum IKEEXT_KEY_MODULE_TYPE_
+ {
+ IKEEXT_KEY_MODULE_IKE = 0,
+ IKEEXT_KEY_MODULE_AUTHIP = ( IKEEXT_KEY_MODULE_IKE + 1 ) ,
+ IKEEXT_KEY_MODULE_IKEV2 = ( IKEEXT_KEY_MODULE_AUTHIP + 1 ) ,
+ IKEEXT_KEY_MODULE_MAX = ( IKEEXT_KEY_MODULE_IKEV2 + 1 )
+ } IKEEXT_KEY_MODULE_TYPE;
+
+typedef
+enum IKEEXT_AUTHENTICATION_METHOD_TYPE_
+ {
+ IKEEXT_PRESHARED_KEY = 0,
+ IKEEXT_CERTIFICATE = ( IKEEXT_PRESHARED_KEY + 1 ) ,
+ IKEEXT_KERBEROS = ( IKEEXT_CERTIFICATE + 1 ) ,
+ IKEEXT_ANONYMOUS = ( IKEEXT_KERBEROS + 1 ) ,
+ IKEEXT_SSL = ( IKEEXT_ANONYMOUS + 1 ) ,
+ IKEEXT_NTLM_V2 = ( IKEEXT_SSL + 1 ) ,
+ IKEEXT_IPV6_CGA = ( IKEEXT_NTLM_V2 + 1 ) ,
+ IKEEXT_CERTIFICATE_ECDSA_P256 = ( IKEEXT_IPV6_CGA + 1 ) ,
+ IKEEXT_CERTIFICATE_ECDSA_P384 = ( IKEEXT_CERTIFICATE_ECDSA_P256 + 1 ) ,
+ IKEEXT_SSL_ECDSA_P256 = ( IKEEXT_CERTIFICATE_ECDSA_P384 + 1 ) ,
+ IKEEXT_SSL_ECDSA_P384 = ( IKEEXT_SSL_ECDSA_P256 + 1 ) ,
+ IKEEXT_EAP = ( IKEEXT_SSL_ECDSA_P384 + 1 ) ,
+ IKEEXT_RESERVED = ( IKEEXT_EAP + 1 ) ,
+ IKEEXT_AUTHENTICATION_METHOD_TYPE_MAX = ( IKEEXT_RESERVED + 1 )
+ } IKEEXT_AUTHENTICATION_METHOD_TYPE;
+
+typedef
+enum IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE_
+ {
+ IKEEXT_IMPERSONATION_NONE = 0,
+ IKEEXT_IMPERSONATION_SOCKET_PRINCIPAL = ( IKEEXT_IMPERSONATION_NONE + 1 ) ,
+ IKEEXT_IMPERSONATION_MAX = ( IKEEXT_IMPERSONATION_SOCKET_PRINCIPAL + 1 )
+ } IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE;
+
+typedef struct IKEEXT_PRESHARED_KEY_AUTHENTICATION0__
+ {
+ FWP_BYTE_BLOB presharedKey;
+ } IKEEXT_PRESHARED_KEY_AUTHENTICATION0;
+
+
+
+
+typedef struct IKEEXT_PRESHARED_KEY_AUTHENTICATION1__
+ {
+ FWP_BYTE_BLOB presharedKey;
+ UINT32 flags;
+ } IKEEXT_PRESHARED_KEY_AUTHENTICATION1;
+
+#line 128 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+
+
+
+
+
+
+
+
+
+
+#line 139 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+typedef struct IKEEXT_CERT_ROOT_CONFIG0_
+ {
+ FWP_BYTE_BLOB certData;
+ UINT32 flags;
+ } IKEEXT_CERT_ROOT_CONFIG0;
+
+
+
+
+
+
+
+
+#line 153 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+
+
+#line 156 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+typedef
+enum IKEEXT_CERT_CONFIG_TYPE_
+ {
+ IKEEXT_CERT_CONFIG_EXPLICIT_TRUST_LIST = 0,
+ IKEEXT_CERT_CONFIG_ENTERPRISE_STORE = ( IKEEXT_CERT_CONFIG_EXPLICIT_TRUST_LIST + 1 ) ,
+ IKEEXT_CERT_CONFIG_TRUSTED_ROOT_STORE = ( IKEEXT_CERT_CONFIG_ENTERPRISE_STORE + 1 ) ,
+ IKEEXT_CERT_CONFIG_UNSPECIFIED = ( IKEEXT_CERT_CONFIG_TRUSTED_ROOT_STORE + 1 ) ,
+ IKEEXT_CERT_CONFIG_TYPE_MAX = ( IKEEXT_CERT_CONFIG_UNSPECIFIED + 1 )
+ } IKEEXT_CERT_CONFIG_TYPE;
+
+typedef struct IKEEXT_CERTIFICATE_AUTHENTICATION0_
+ {
+ IKEEXT_CERT_CONFIG_TYPE inboundConfigType;
+ union
+ {
+ struct
+ {
+ UINT32 inboundRootArraySize;
+ IKEEXT_CERT_ROOT_CONFIG0 *inboundRootArray;
+ } ;
+ IKEEXT_CERT_ROOT_CONFIG0 *inboundEnterpriseStoreConfig;
+ IKEEXT_CERT_ROOT_CONFIG0 *inboundTrustedRootStoreConfig;
+ } ;
+ IKEEXT_CERT_CONFIG_TYPE outboundConfigType;
+ union
+ {
+ struct
+ {
+ UINT32 outboundRootArraySize;
+ IKEEXT_CERT_ROOT_CONFIG0 *outboundRootArray;
+ } ;
+ IKEEXT_CERT_ROOT_CONFIG0 *outboundEnterpriseStoreConfig;
+ IKEEXT_CERT_ROOT_CONFIG0 *outboundTrustedRootStoreConfig;
+ } ;
+ UINT32 flags;
+ } IKEEXT_CERTIFICATE_AUTHENTICATION0;
+
+
+typedef struct IKEEXT_CERTIFICATE_AUTHENTICATION1_
+ {
+ IKEEXT_CERT_CONFIG_TYPE inboundConfigType;
+ union
+ {
+ struct
+ {
+ UINT32 inboundRootArraySize;
+ IKEEXT_CERT_ROOT_CONFIG0 *inboundRootArray;
+ } ;
+ IKEEXT_CERT_ROOT_CONFIG0 *inboundEnterpriseStoreConfig;
+ IKEEXT_CERT_ROOT_CONFIG0 *inboundTrustedRootStoreConfig;
+
+ } ;
+ IKEEXT_CERT_CONFIG_TYPE outboundConfigType;
+ union
+ {
+ struct
+ {
+ UINT32 outboundRootArraySize;
+ IKEEXT_CERT_ROOT_CONFIG0 *outboundRootArray;
+ } ;
+ IKEEXT_CERT_ROOT_CONFIG0 *outboundEnterpriseStoreConfig;
+ IKEEXT_CERT_ROOT_CONFIG0 *outboundTrustedRootStoreConfig;
+
+ } ;
+ UINT32 flags;
+ FWP_BYTE_BLOB localCertLocationUrl;
+ } IKEEXT_CERTIFICATE_AUTHENTICATION1;
+
+#line 225 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+
+typedef
+enum IKEEXT_CERT_CRITERIA_NAME_TYPE_
+ {
+ IKEEXT_CERT_CRITERIA_DNS = 0,
+ IKEEXT_CERT_CRITERIA_UPN = ( IKEEXT_CERT_CRITERIA_DNS + 1 ) ,
+ IKEEXT_CERT_CRITERIA_RFC822 = ( IKEEXT_CERT_CRITERIA_UPN + 1 ) ,
+ IKEEXT_CERT_CRITERIA_CN = ( IKEEXT_CERT_CRITERIA_RFC822 + 1 ) ,
+ IKEEXT_CERT_CRITERIA_OU = ( IKEEXT_CERT_CRITERIA_CN + 1 ) ,
+ IKEEXT_CERT_CRITERIA_O = ( IKEEXT_CERT_CRITERIA_OU + 1 ) ,
+ IKEEXT_CERT_CRITERIA_DC = ( IKEEXT_CERT_CRITERIA_O + 1 ) ,
+ IKEEXT_CERT_CRITERIA_NAME_TYPE_MAX = ( IKEEXT_CERT_CRITERIA_DC + 1 )
+ } IKEEXT_CERT_CRITERIA_NAME_TYPE;
+
+typedef struct IKEEXT_CERT_EKUS0_
+ {
+ ULONG numEku;
+ LPSTR *eku;
+ } IKEEXT_CERT_EKUS0;
+
+typedef struct IKEEXT_CERT_NAME0_
+ {
+ IKEEXT_CERT_CRITERIA_NAME_TYPE nameType;
+ LPWSTR certName;
+ } IKEEXT_CERT_NAME0;
+
+typedef struct IKEEXT_CERTIFICATE_CRITERIA0_
+ {
+ FWP_BYTE_BLOB certData;
+ FWP_BYTE_BLOB certHash;
+ IKEEXT_CERT_EKUS0 *eku;
+ IKEEXT_CERT_NAME0 *name;
+ UINT32 flags;
+ } IKEEXT_CERTIFICATE_CRITERIA0;
+
+typedef struct IKEEXT_CERTIFICATE_AUTHENTICATION2_
+ {
+ IKEEXT_CERT_CONFIG_TYPE inboundConfigType;
+ union
+ {
+ struct
+ {
+ UINT32 inboundRootArraySize;
+ IKEEXT_CERTIFICATE_CRITERIA0 *inboundRootCriteria;
+ } ;
+ struct
+ {
+ UINT32 inboundEnterpriseStoreArraySize;
+ IKEEXT_CERTIFICATE_CRITERIA0 *inboundEnterpriseStoreCriteria;
+ } ;
+ struct
+ {
+ UINT32 inboundRootStoreArraySize;
+ IKEEXT_CERTIFICATE_CRITERIA0 *inboundTrustedRootStoreCriteria;
+ } ;
+
+ } ;
+ IKEEXT_CERT_CONFIG_TYPE outboundConfigType;
+ union
+ {
+ struct
+ {
+ UINT32 outboundRootArraySize;
+ IKEEXT_CERTIFICATE_CRITERIA0 *outboundRootCriteria;
+ } ;
+ struct
+ {
+ UINT32 outboundEnterpriseStoreArraySize;
+ IKEEXT_CERTIFICATE_CRITERIA0 *outboundEnterpriseStoreCriteria;
+ } ;
+ struct
+ {
+ UINT32 outboundRootStoreArraySize;
+ IKEEXT_CERTIFICATE_CRITERIA0 *outboundTrustedRootStoreCriteria;
+ } ;
+
+ } ;
+ UINT32 flags;
+ FWP_BYTE_BLOB localCertLocationUrl;
+ } IKEEXT_CERTIFICATE_AUTHENTICATION2;
+
+#line 307 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+typedef struct IKEEXT_IPV6_CGA_AUTHENTICATION0_
+ {
+ wchar_t *keyContainerName;
+ wchar_t *cspName;
+ UINT32 cspType;
+ FWP_BYTE_ARRAY16 cgaModifier;
+ BYTE cgaCollisionCount;
+ } IKEEXT_IPV6_CGA_AUTHENTICATION0;
+
+
+
+typedef struct IKEEXT_KERBEROS_AUTHENTICATION0__
+ {
+ UINT32 flags;
+ } IKEEXT_KERBEROS_AUTHENTICATION0;
+
+
+
+typedef struct IKEEXT_KERBEROS_AUTHENTICATION1__
+ {
+ UINT32 flags;
+ wchar_t *proxyServer;
+ } IKEEXT_KERBEROS_AUTHENTICATION1;
+
+#line 332 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+
+typedef struct IKEEXT_RESERVED_AUTHENTICATION0__
+ {
+ UINT32 flags;
+ } IKEEXT_RESERVED_AUTHENTICATION0;
+
+
+typedef struct IKEEXT_NTLM_V2_AUTHENTICATION0__
+ {
+ UINT32 flags;
+ } IKEEXT_NTLM_V2_AUTHENTICATION0;
+
+
+
+
+typedef struct IKEEXT_EAP_AUTHENTICATION0__
+ {
+ UINT32 flags;
+ } IKEEXT_EAP_AUTHENTICATION0;
+
+#line 353 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+typedef struct IKEEXT_AUTHENTICATION_METHOD0_
+ {
+ IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType;
+ union
+ {
+ IKEEXT_PRESHARED_KEY_AUTHENTICATION0 presharedKeyAuthentication;
+ IKEEXT_CERTIFICATE_AUTHENTICATION0 certificateAuthentication;
+ IKEEXT_KERBEROS_AUTHENTICATION0 kerberosAuthentication;
+ IKEEXT_NTLM_V2_AUTHENTICATION0 ntlmV2Authentication;
+
+ IKEEXT_CERTIFICATE_AUTHENTICATION0 sslAuthentication;
+ IKEEXT_IPV6_CGA_AUTHENTICATION0 cgaAuthentication;
+ } ;
+ } IKEEXT_AUTHENTICATION_METHOD0;
+
+
+typedef struct IKEEXT_AUTHENTICATION_METHOD1_
+ {
+ IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType;
+ union
+ {
+ IKEEXT_PRESHARED_KEY_AUTHENTICATION1 presharedKeyAuthentication;
+ IKEEXT_CERTIFICATE_AUTHENTICATION1 certificateAuthentication;
+ IKEEXT_KERBEROS_AUTHENTICATION0 kerberosAuthentication;
+ IKEEXT_NTLM_V2_AUTHENTICATION0 ntlmV2Authentication;
+
+ IKEEXT_CERTIFICATE_AUTHENTICATION1 sslAuthentication;
+ IKEEXT_IPV6_CGA_AUTHENTICATION0 cgaAuthentication;
+ IKEEXT_EAP_AUTHENTICATION0 eapAuthentication;
+ } ;
+ } IKEEXT_AUTHENTICATION_METHOD1;
+
+#line 386 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+
+typedef struct IKEEXT_AUTHENTICATION_METHOD2_
+ {
+ IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType;
+ union
+ {
+ IKEEXT_PRESHARED_KEY_AUTHENTICATION1 presharedKeyAuthentication;
+ IKEEXT_CERTIFICATE_AUTHENTICATION2 certificateAuthentication;
+ IKEEXT_KERBEROS_AUTHENTICATION1 kerberosAuthentication;
+ IKEEXT_RESERVED_AUTHENTICATION0 reservedAuthentication;
+ IKEEXT_NTLM_V2_AUTHENTICATION0 ntlmV2Authentication;
+
+ IKEEXT_CERTIFICATE_AUTHENTICATION2 sslAuthentication;
+ IKEEXT_IPV6_CGA_AUTHENTICATION0 cgaAuthentication;
+ IKEEXT_EAP_AUTHENTICATION0 eapAuthentication;
+ } ;
+ } IKEEXT_AUTHENTICATION_METHOD2;
+
+#line 405 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+typedef
+enum IKEEXT_CIPHER_TYPE_
+ {
+ IKEEXT_CIPHER_DES = 0,
+ IKEEXT_CIPHER_3DES = ( IKEEXT_CIPHER_DES + 1 ) ,
+ IKEEXT_CIPHER_AES_128 = ( IKEEXT_CIPHER_3DES + 1 ) ,
+ IKEEXT_CIPHER_AES_192 = ( IKEEXT_CIPHER_AES_128 + 1 ) ,
+ IKEEXT_CIPHER_AES_256 = ( IKEEXT_CIPHER_AES_192 + 1 ) ,
+ IKEEXT_CIPHER_AES_GCM_128_16ICV = ( IKEEXT_CIPHER_AES_256 + 1 ) ,
+ IKEEXT_CIPHER_AES_GCM_256_16ICV = ( IKEEXT_CIPHER_AES_GCM_128_16ICV + 1 ) ,
+ IKEEXT_CIPHER_TYPE_MAX = ( IKEEXT_CIPHER_AES_GCM_256_16ICV + 1 )
+ } IKEEXT_CIPHER_TYPE;
+
+typedef struct IKEEXT_CIPHER_ALGORITHM0_
+ {
+ IKEEXT_CIPHER_TYPE algoIdentifier;
+ UINT32 keyLen;
+ UINT32 rounds;
+ } IKEEXT_CIPHER_ALGORITHM0;
+
+typedef
+enum IKEEXT_INTEGRITY_TYPE_
+ {
+ IKEEXT_INTEGRITY_MD5 = 0,
+ IKEEXT_INTEGRITY_SHA1 = ( IKEEXT_INTEGRITY_MD5 + 1 ) ,
+ IKEEXT_INTEGRITY_SHA_256 = ( IKEEXT_INTEGRITY_SHA1 + 1 ) ,
+ IKEEXT_INTEGRITY_SHA_384 = ( IKEEXT_INTEGRITY_SHA_256 + 1 ) ,
+ IKEEXT_INTEGRITY_TYPE_MAX = ( IKEEXT_INTEGRITY_SHA_384 + 1 )
+ } IKEEXT_INTEGRITY_TYPE;
+
+typedef struct IKEEXT_INTEGRITY_ALGORITHM0_
+ {
+ IKEEXT_INTEGRITY_TYPE algoIdentifier;
+ } IKEEXT_INTEGRITY_ALGORITHM0;
+
+typedef
+enum IKEEXT_DH_GROUP_
+ {
+ IKEEXT_DH_GROUP_NONE = 0,
+ IKEEXT_DH_GROUP_1 = ( IKEEXT_DH_GROUP_NONE + 1 ) ,
+ IKEEXT_DH_GROUP_2 = ( IKEEXT_DH_GROUP_1 + 1 ) ,
+ IKEEXT_DH_GROUP_14 = ( IKEEXT_DH_GROUP_2 + 1 ) ,
+ IKEEXT_DH_GROUP_2048 = IKEEXT_DH_GROUP_14,
+ IKEEXT_DH_ECP_256 = ( IKEEXT_DH_GROUP_2048 + 1 ) ,
+ IKEEXT_DH_ECP_384 = ( IKEEXT_DH_ECP_256 + 1 ) ,
+ IKEEXT_DH_GROUP_24 = ( IKEEXT_DH_ECP_384 + 1 ) ,
+ IKEEXT_DH_GROUP_MAX = ( IKEEXT_DH_GROUP_24 + 1 )
+ } IKEEXT_DH_GROUP;
+
+typedef struct IKEEXT_PROPOSAL0_
+ {
+ IKEEXT_CIPHER_ALGORITHM0 cipherAlgorithm;
+ IKEEXT_INTEGRITY_ALGORITHM0 integrityAlgorithm;
+ UINT32 maxLifetimeSeconds;
+ IKEEXT_DH_GROUP dhGroup;
+ UINT32 quickModeLimit;
+ } IKEEXT_PROPOSAL0;
+
+
+
+
+
+
+
+
+
+
+typedef struct IKEEXT_POLICY0_
+ {
+ UINT32 softExpirationTime;
+ UINT32 numAuthenticationMethods;
+ IKEEXT_AUTHENTICATION_METHOD0 *authenticationMethods;
+ IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType;
+ UINT32 numIkeProposals;
+ IKEEXT_PROPOSAL0 *ikeProposals;
+ UINT32 flags;
+ UINT32 maxDynamicFilters;
+ } IKEEXT_POLICY0;
+
+
+typedef struct IKEEXT_POLICY1_
+ {
+ UINT32 softExpirationTime;
+ UINT32 numAuthenticationMethods;
+ IKEEXT_AUTHENTICATION_METHOD1 *authenticationMethods;
+ IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType;
+ UINT32 numIkeProposals;
+ IKEEXT_PROPOSAL0 *ikeProposals;
+ UINT32 flags;
+ UINT32 maxDynamicFilters;
+ UINT32 retransmitDurationSecs;
+ } IKEEXT_POLICY1;
+
+#line 499 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+
+typedef struct IKEEXT_POLICY2_
+ {
+ UINT32 softExpirationTime;
+ UINT32 numAuthenticationMethods;
+ IKEEXT_AUTHENTICATION_METHOD2 *authenticationMethods;
+ IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType;
+ UINT32 numIkeProposals;
+ IKEEXT_PROPOSAL0 *ikeProposals;
+ UINT32 flags;
+ UINT32 maxDynamicFilters;
+ UINT32 retransmitDurationSecs;
+ } IKEEXT_POLICY2;
+
+#line 514 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+typedef struct IKEEXT_EM_POLICY0_
+ {
+ UINT32 numAuthenticationMethods;
+ IKEEXT_AUTHENTICATION_METHOD0 *authenticationMethods;
+ IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType;
+ } IKEEXT_EM_POLICY0;
+
+
+typedef struct IKEEXT_EM_POLICY1_
+ {
+ UINT32 numAuthenticationMethods;
+ IKEEXT_AUTHENTICATION_METHOD1 *authenticationMethods;
+ IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType;
+ } IKEEXT_EM_POLICY1;
+
+#line 530 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+
+typedef struct IKEEXT_EM_POLICY2_
+ {
+ UINT32 numAuthenticationMethods;
+ IKEEXT_AUTHENTICATION_METHOD2 *authenticationMethods;
+ IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE initiatorImpersonationType;
+ } IKEEXT_EM_POLICY2;
+
+#line 539 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+
+typedef struct IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS0_
+ {
+ UINT32 currentActiveMainModes;
+ UINT32 totalMainModesStarted;
+ UINT32 totalSuccessfulMainModes;
+ UINT32 totalFailedMainModes;
+ UINT32 totalResponderMainModes;
+ UINT32 currentNewResponderMainModes;
+ UINT32 currentActiveQuickModes;
+ UINT32 totalQuickModesStarted;
+ UINT32 totalSuccessfulQuickModes;
+ UINT32 totalFailedQuickModes;
+ UINT32 totalAcquires;
+ UINT32 totalReinitAcquires;
+ UINT32 currentActiveExtendedModes;
+ UINT32 totalExtendedModesStarted;
+ UINT32 totalSuccessfulExtendedModes;
+ UINT32 totalFailedExtendedModes;
+ UINT32 totalImpersonationExtendedModes;
+ UINT32 totalImpersonationMainModes;
+ } IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS0;
+
+
+typedef struct IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1_
+ {
+ UINT32 currentActiveMainModes;
+ UINT32 totalMainModesStarted;
+ UINT32 totalSuccessfulMainModes;
+ UINT32 totalFailedMainModes;
+ UINT32 totalResponderMainModes;
+ UINT32 currentNewResponderMainModes;
+ UINT32 currentActiveQuickModes;
+ UINT32 totalQuickModesStarted;
+ UINT32 totalSuccessfulQuickModes;
+ UINT32 totalFailedQuickModes;
+ UINT32 totalAcquires;
+ UINT32 totalReinitAcquires;
+ UINT32 currentActiveExtendedModes;
+ UINT32 totalExtendedModesStarted;
+ UINT32 totalSuccessfulExtendedModes;
+ UINT32 totalFailedExtendedModes;
+ UINT32 totalImpersonationExtendedModes;
+ UINT32 totalImpersonationMainModes;
+ } IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1;
+
+#line 586 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+typedef struct IKEEXT_KEYMODULE_STATISTICS0_
+ {
+ IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS0 v4Statistics;
+ IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS0 v6Statistics;
+ UINT32 errorFrequencyTable[ 97 ];
+ UINT32 mainModeNegotiationTime;
+ UINT32 quickModeNegotiationTime;
+ UINT32 extendedModeNegotiationTime;
+ } IKEEXT_KEYMODULE_STATISTICS0;
+
+
+typedef struct IKEEXT_KEYMODULE_STATISTICS1_
+ {
+ IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1 v4Statistics;
+ IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1 v6Statistics;
+ UINT32 errorFrequencyTable[ 97 ];
+ UINT32 mainModeNegotiationTime;
+ UINT32 quickModeNegotiationTime;
+ UINT32 extendedModeNegotiationTime;
+ } IKEEXT_KEYMODULE_STATISTICS1;
+
+#line 608 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+typedef struct IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0_
+ {
+ UINT32 totalSocketReceiveFailures;
+ UINT32 totalSocketSendFailures;
+ } IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0;
+
+
+typedef struct IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1_
+ {
+ UINT32 totalSocketReceiveFailures;
+ UINT32 totalSocketSendFailures;
+ } IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1;
+
+#line 622 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+typedef struct IKEEXT_COMMON_STATISTICS0_
+ {
+ IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 v4Statistics;
+ IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 v6Statistics;
+ UINT32 totalPacketsReceived;
+ UINT32 totalInvalidPacketsReceived;
+ UINT32 currentQueuedWorkitems;
+ } IKEEXT_COMMON_STATISTICS0;
+
+
+typedef struct IKEEXT_COMMON_STATISTICS1_
+ {
+ IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1 v4Statistics;
+ IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1 v6Statistics;
+ UINT32 totalPacketsReceived;
+ UINT32 totalInvalidPacketsReceived;
+ UINT32 currentQueuedWorkitems;
+ } IKEEXT_COMMON_STATISTICS1;
+
+#line 642 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+typedef struct IKEEXT_STATISTICS0_
+ {
+ IKEEXT_KEYMODULE_STATISTICS0 ikeStatistics;
+ IKEEXT_KEYMODULE_STATISTICS0 authipStatistics;
+ IKEEXT_COMMON_STATISTICS0 commonStatistics;
+ } IKEEXT_STATISTICS0;
+
+
+typedef struct IKEEXT_STATISTICS1_
+ {
+ IKEEXT_KEYMODULE_STATISTICS1 ikeStatistics;
+ IKEEXT_KEYMODULE_STATISTICS1 authipStatistics;
+ IKEEXT_KEYMODULE_STATISTICS1 ikeV2Statistics;
+ IKEEXT_COMMON_STATISTICS1 commonStatistics;
+ } IKEEXT_STATISTICS1;
+
+#line 659 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+typedef struct IKEEXT_TRAFFIC0_
+ {
+ FWP_IP_VERSION ipVersion;
+ union
+ {
+ UINT32 localV4Address;
+ UINT8 localV6Address[ 16 ];
+ } ;
+ union
+ {
+ UINT32 remoteV4Address;
+ UINT8 remoteV6Address[ 16 ];
+ } ;
+ UINT64 authIpFilterId;
+ } IKEEXT_TRAFFIC0;
+
+typedef UINT64 IKEEXT_COOKIE;
+
+typedef struct IKEEXT_COOKIE_PAIR0_
+ {
+ IKEEXT_COOKIE initiator;
+ IKEEXT_COOKIE responder;
+ } IKEEXT_COOKIE_PAIR0;
+
+
+typedef struct IKEEXT_CERTIFICATE_CREDENTIAL0_
+ {
+ FWP_BYTE_BLOB subjectName;
+ FWP_BYTE_BLOB certHash;
+ UINT32 flags;
+ } IKEEXT_CERTIFICATE_CREDENTIAL0;
+
+typedef struct IKEEXT_NAME_CREDENTIAL0_
+ {
+ wchar_t *principalName;
+ } IKEEXT_NAME_CREDENTIAL0;
+
+typedef struct IKEEXT_CREDENTIAL0_
+ {
+ IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType;
+ IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE impersonationType;
+ union
+ {
+ IKEEXT_PRESHARED_KEY_AUTHENTICATION0 *presharedKey;
+ IKEEXT_CERTIFICATE_CREDENTIAL0 *certificate;
+ IKEEXT_NAME_CREDENTIAL0 *name;
+
+ } ;
+ } IKEEXT_CREDENTIAL0;
+
+typedef struct IKEEXT_CREDENTIAL_PAIR0_
+ {
+ IKEEXT_CREDENTIAL0 localCredentials;
+ IKEEXT_CREDENTIAL0 peerCredentials;
+ } IKEEXT_CREDENTIAL_PAIR0;
+
+typedef struct IKEEXT_CREDENTIALS0_
+ {
+ UINT32 numCredentials;
+ IKEEXT_CREDENTIAL_PAIR0 *credentials;
+ } IKEEXT_CREDENTIALS0;
+
+typedef struct IKEEXT_SA_DETAILS0_
+ {
+ UINT64 saId;
+ IKEEXT_KEY_MODULE_TYPE keyModuleType;
+ FWP_IP_VERSION ipVersion;
+ union
+ {
+ IPSEC_V4_UDP_ENCAPSULATION0 *v4UdpEncapsulation;
+
+ } ;
+ IKEEXT_TRAFFIC0 ikeTraffic;
+ IKEEXT_PROPOSAL0 ikeProposal;
+ IKEEXT_COOKIE_PAIR0 cookiePair;
+ IKEEXT_CREDENTIALS0 ikeCredentials;
+ GUID ikePolicyKey;
+ UINT64 virtualIfTunnelId;
+ } IKEEXT_SA_DETAILS0;
+
+
+typedef struct IKEEXT_CERTIFICATE_CREDENTIAL1_
+ {
+ FWP_BYTE_BLOB subjectName;
+ FWP_BYTE_BLOB certHash;
+ UINT32 flags;
+ FWP_BYTE_BLOB certificate;
+ } IKEEXT_CERTIFICATE_CREDENTIAL1;
+
+typedef struct IKEEXT_CREDENTIAL1_
+ {
+ IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType;
+ IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE impersonationType;
+ union
+ {
+ IKEEXT_PRESHARED_KEY_AUTHENTICATION1 *presharedKey;
+ IKEEXT_CERTIFICATE_CREDENTIAL1 *certificate;
+ IKEEXT_NAME_CREDENTIAL0 *name;
+
+ } ;
+ } IKEEXT_CREDENTIAL1;
+
+typedef struct IKEEXT_CREDENTIAL_PAIR1_
+ {
+ IKEEXT_CREDENTIAL1 localCredentials;
+ IKEEXT_CREDENTIAL1 peerCredentials;
+ } IKEEXT_CREDENTIAL_PAIR1;
+
+typedef struct IKEEXT_CREDENTIALS1_
+ {
+ UINT32 numCredentials;
+ IKEEXT_CREDENTIAL_PAIR1 *credentials;
+ } IKEEXT_CREDENTIALS1;
+
+typedef struct IKEEXT_SA_DETAILS1_
+ {
+ UINT64 saId;
+ IKEEXT_KEY_MODULE_TYPE keyModuleType;
+ FWP_IP_VERSION ipVersion;
+ union
+ {
+ IPSEC_V4_UDP_ENCAPSULATION0 *v4UdpEncapsulation;
+
+ } ;
+ IKEEXT_TRAFFIC0 ikeTraffic;
+ IKEEXT_PROPOSAL0 ikeProposal;
+ IKEEXT_COOKIE_PAIR0 cookiePair;
+ IKEEXT_CREDENTIALS1 ikeCredentials;
+ GUID ikePolicyKey;
+ UINT64 virtualIfTunnelId;
+ FWP_BYTE_BLOB correlationKey;
+ } IKEEXT_SA_DETAILS1;
+
+#line 793 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+
+typedef struct IKEEXT_CREDENTIAL2_
+ {
+ IKEEXT_AUTHENTICATION_METHOD_TYPE authenticationMethodType;
+ IKEEXT_AUTHENTICATION_IMPERSONATION_TYPE impersonationType;
+ union
+ {
+ IKEEXT_PRESHARED_KEY_AUTHENTICATION1 *presharedKey;
+ IKEEXT_CERTIFICATE_CREDENTIAL1 *certificate;
+ IKEEXT_NAME_CREDENTIAL0 *name;
+
+ } ;
+ } IKEEXT_CREDENTIAL2;
+
+typedef struct IKEEXT_CREDENTIAL_PAIR2_
+ {
+ IKEEXT_CREDENTIAL2 localCredentials;
+ IKEEXT_CREDENTIAL2 peerCredentials;
+ } IKEEXT_CREDENTIAL_PAIR2;
+
+typedef struct IKEEXT_CREDENTIALS2_
+ {
+ UINT32 numCredentials;
+ IKEEXT_CREDENTIAL_PAIR2 *credentials;
+ } IKEEXT_CREDENTIALS2;
+
+typedef struct IKEEXT_SA_DETAILS2_
+ {
+ UINT64 saId;
+ IKEEXT_KEY_MODULE_TYPE keyModuleType;
+ FWP_IP_VERSION ipVersion;
+ union
+ {
+ IPSEC_V4_UDP_ENCAPSULATION0 *v4UdpEncapsulation;
+
+ } ;
+ IKEEXT_TRAFFIC0 ikeTraffic;
+ IKEEXT_PROPOSAL0 ikeProposal;
+ IKEEXT_COOKIE_PAIR0 cookiePair;
+ IKEEXT_CREDENTIALS2 ikeCredentials;
+ GUID ikePolicyKey;
+ UINT64 virtualIfTunnelId;
+ FWP_BYTE_BLOB correlationKey;
+ } IKEEXT_SA_DETAILS2;
+
+#line 839 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+typedef struct IKEEXT_SA_ENUM_TEMPLATE0_
+ {
+ FWP_CONDITION_VALUE0 localSubNet;
+ FWP_CONDITION_VALUE0 remoteSubNet;
+ FWP_BYTE_BLOB localMainModeCertHash;
+ } IKEEXT_SA_ENUM_TEMPLATE0;
+
+typedef
+enum IKEEXT_MM_SA_STATE_
+ {
+ IKEEXT_MM_SA_STATE_NONE = 0,
+ IKEEXT_MM_SA_STATE_SA_SENT = ( IKEEXT_MM_SA_STATE_NONE + 1 ) ,
+ IKEEXT_MM_SA_STATE_SSPI_SENT = ( IKEEXT_MM_SA_STATE_SA_SENT + 1 ) ,
+ IKEEXT_MM_SA_STATE_FINAL = ( IKEEXT_MM_SA_STATE_SSPI_SENT + 1 ) ,
+ IKEEXT_MM_SA_STATE_FINAL_SENT = ( IKEEXT_MM_SA_STATE_FINAL + 1 ) ,
+ IKEEXT_MM_SA_STATE_COMPLETE = ( IKEEXT_MM_SA_STATE_FINAL_SENT + 1 ) ,
+ IKEEXT_MM_SA_STATE_MAX = ( IKEEXT_MM_SA_STATE_COMPLETE + 1 )
+ } IKEEXT_MM_SA_STATE;
+
+typedef
+enum IKEEXT_QM_SA_STATE_
+ {
+ IKEEXT_QM_SA_STATE_NONE = 0,
+ IKEEXT_QM_SA_STATE_INITIAL = ( IKEEXT_QM_SA_STATE_NONE + 1 ) ,
+ IKEEXT_QM_SA_STATE_FINAL = ( IKEEXT_QM_SA_STATE_INITIAL + 1 ) ,
+ IKEEXT_QM_SA_STATE_COMPLETE = ( IKEEXT_QM_SA_STATE_FINAL + 1 ) ,
+ IKEEXT_QM_SA_STATE_MAX = ( IKEEXT_QM_SA_STATE_COMPLETE + 1 )
+ } IKEEXT_QM_SA_STATE;
+
+typedef
+enum IKEEXT_EM_SA_STATE_
+ {
+ IKEEXT_EM_SA_STATE_NONE = 0,
+ IKEEXT_EM_SA_STATE_SENT_ATTS = ( IKEEXT_EM_SA_STATE_NONE + 1 ) ,
+ IKEEXT_EM_SA_STATE_SSPI_SENT = ( IKEEXT_EM_SA_STATE_SENT_ATTS + 1 ) ,
+ IKEEXT_EM_SA_STATE_AUTH_COMPLETE = ( IKEEXT_EM_SA_STATE_SSPI_SENT + 1 ) ,
+ IKEEXT_EM_SA_STATE_FINAL = ( IKEEXT_EM_SA_STATE_AUTH_COMPLETE + 1 ) ,
+ IKEEXT_EM_SA_STATE_COMPLETE = ( IKEEXT_EM_SA_STATE_FINAL + 1 ) ,
+ IKEEXT_EM_SA_STATE_MAX = ( IKEEXT_EM_SA_STATE_COMPLETE + 1 )
+ } IKEEXT_EM_SA_STATE;
+
+typedef
+enum IKEEXT_SA_ROLE_
+ {
+ IKEEXT_SA_ROLE_INITIATOR = 0,
+ IKEEXT_SA_ROLE_RESPONDER = ( IKEEXT_SA_ROLE_INITIATOR + 1 ) ,
+ IKEEXT_SA_ROLE_MAX = ( IKEEXT_SA_ROLE_RESPONDER + 1 )
+ } IKEEXT_SA_ROLE;
+
+
+
+#pragma warning(pop)
+
+
+#line 894 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+#line 895 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+#line 896 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+#pragma endregion
+
+
+extern RPC_IF_HANDLE __MIDL_itf_iketypes_0000_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_iketypes_0000_0000_v0_0_s_ifspec;
+
+
+
+
+
+
+
+
+
+#line 911 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\iketypes.h"
+
+
+#pragma external_header(pop)
+#line 49 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 35 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma region Desktop Family or AppRuntime Package
+
+
+
+#pragma warning(push)
+#line 65 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+#pragma warning(disable:4201)
+#line 67 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+typedef struct FWPM_FILTER0_ FWPM_FILTER0;
+
+typedef struct FWPM_DISPLAY_DATA0_ FWPM_DISPLAY_DATA0;
+
+typedef struct IPSEC_SA_LIFETIME0_
+ {
+ UINT32 lifetimeSeconds;
+ UINT32 lifetimeKilobytes;
+ UINT32 lifetimePackets;
+ } IPSEC_SA_LIFETIME0;
+
+typedef
+enum IPSEC_TRANSFORM_TYPE_
+ {
+ IPSEC_TRANSFORM_AH = 1,
+ IPSEC_TRANSFORM_ESP_AUTH = ( IPSEC_TRANSFORM_AH + 1 ) ,
+ IPSEC_TRANSFORM_ESP_CIPHER = ( IPSEC_TRANSFORM_ESP_AUTH + 1 ) ,
+ IPSEC_TRANSFORM_ESP_AUTH_AND_CIPHER = ( IPSEC_TRANSFORM_ESP_CIPHER + 1 ) ,
+ IPSEC_TRANSFORM_ESP_AUTH_FW = ( IPSEC_TRANSFORM_ESP_AUTH_AND_CIPHER + 1 ) ,
+ IPSEC_TRANSFORM_TYPE_MAX = ( IPSEC_TRANSFORM_ESP_AUTH_FW + 1 )
+ } IPSEC_TRANSFORM_TYPE;
+
+typedef
+enum IPSEC_AUTH_TYPE_
+ {
+ IPSEC_AUTH_MD5 = 0,
+ IPSEC_AUTH_SHA_1 = ( IPSEC_AUTH_MD5 + 1 ) ,
+ IPSEC_AUTH_SHA_256 = ( IPSEC_AUTH_SHA_1 + 1 ) ,
+ IPSEC_AUTH_AES_128 = ( IPSEC_AUTH_SHA_256 + 1 ) ,
+ IPSEC_AUTH_AES_192 = ( IPSEC_AUTH_AES_128 + 1 ) ,
+ IPSEC_AUTH_AES_256 = ( IPSEC_AUTH_AES_192 + 1 ) ,
+ IPSEC_AUTH_MAX = ( IPSEC_AUTH_AES_256 + 1 )
+ } IPSEC_AUTH_TYPE;
+
+typedef UINT8 IPSEC_AUTH_CONFIG;
+
+
+
+
+
+
+
+
+typedef struct IPSEC_AUTH_TRANSFORM_ID0_
+ {
+ IPSEC_AUTH_TYPE authType;
+ IPSEC_AUTH_CONFIG authConfig;
+ } IPSEC_AUTH_TRANSFORM_ID0;
+
+typedef GUID IPSEC_CRYPTO_MODULE_ID;
+
+typedef struct IPSEC_AUTH_TRANSFORM0_
+ {
+ IPSEC_AUTH_TRANSFORM_ID0 authTransformId;
+ IPSEC_CRYPTO_MODULE_ID *cryptoModuleId;
+ } IPSEC_AUTH_TRANSFORM0;
+
+typedef
+enum IPSEC_CIPHER_TYPE_
+ {
+ IPSEC_CIPHER_TYPE_DES = 1,
+ IPSEC_CIPHER_TYPE_3DES = ( IPSEC_CIPHER_TYPE_DES + 1 ) ,
+ IPSEC_CIPHER_TYPE_AES_128 = ( IPSEC_CIPHER_TYPE_3DES + 1 ) ,
+ IPSEC_CIPHER_TYPE_AES_192 = ( IPSEC_CIPHER_TYPE_AES_128 + 1 ) ,
+ IPSEC_CIPHER_TYPE_AES_256 = ( IPSEC_CIPHER_TYPE_AES_192 + 1 ) ,
+ IPSEC_CIPHER_TYPE_MAX = ( IPSEC_CIPHER_TYPE_AES_256 + 1 )
+ } IPSEC_CIPHER_TYPE;
+
+typedef UINT8 IPSEC_CIPHER_CONFIG;
+
+
+
+
+
+
+
+
+
+
+typedef struct IPSEC_CIPHER_TRANSFORM_ID0_
+ {
+ IPSEC_CIPHER_TYPE cipherType;
+ IPSEC_CIPHER_CONFIG cipherConfig;
+ } IPSEC_CIPHER_TRANSFORM_ID0;
+
+typedef struct IPSEC_CIPHER_TRANSFORM0_
+ {
+ IPSEC_CIPHER_TRANSFORM_ID0 cipherTransformId;
+ IPSEC_CRYPTO_MODULE_ID *cryptoModuleId;
+ } IPSEC_CIPHER_TRANSFORM0;
+
+typedef struct IPSEC_AUTH_AND_CIPHER_TRANSFORM0_
+ {
+ IPSEC_AUTH_TRANSFORM0 authTransform;
+ IPSEC_CIPHER_TRANSFORM0 cipherTransform;
+ } IPSEC_AUTH_AND_CIPHER_TRANSFORM0;
+
+typedef struct IPSEC_SA_TRANSFORM0_
+ {
+ IPSEC_TRANSFORM_TYPE ipsecTransformType;
+ union
+ {
+ IPSEC_AUTH_TRANSFORM0 *ahTransform;
+ IPSEC_AUTH_TRANSFORM0 *espAuthTransform;
+ IPSEC_CIPHER_TRANSFORM0 *espCipherTransform;
+ IPSEC_AUTH_AND_CIPHER_TRANSFORM0 *espAuthAndCipherTransform;
+ IPSEC_AUTH_TRANSFORM0 *espAuthFwTransform;
+ } ;
+ } IPSEC_SA_TRANSFORM0;
+
+
+typedef
+enum IPSEC_PFS_GROUP_
+ {
+ IPSEC_PFS_NONE = 0,
+ IPSEC_PFS_1 = ( IPSEC_PFS_NONE + 1 ) ,
+ IPSEC_PFS_2 = ( IPSEC_PFS_1 + 1 ) ,
+ IPSEC_PFS_2048 = ( IPSEC_PFS_2 + 1 ) ,
+ IPSEC_PFS_14 = IPSEC_PFS_2048,
+ IPSEC_PFS_ECP_256 = ( IPSEC_PFS_14 + 1 ) ,
+ IPSEC_PFS_ECP_384 = ( IPSEC_PFS_ECP_256 + 1 ) ,
+ IPSEC_PFS_MM = ( IPSEC_PFS_ECP_384 + 1 ) ,
+ IPSEC_PFS_24 = ( IPSEC_PFS_MM + 1 ) ,
+ IPSEC_PFS_MAX = ( IPSEC_PFS_24 + 1 )
+ } IPSEC_PFS_GROUP;
+
+typedef struct IPSEC_PROPOSAL0_
+ {
+ IPSEC_SA_LIFETIME0 lifetime;
+ UINT32 numSaTransforms;
+ IPSEC_SA_TRANSFORM0 *saTransforms;
+ IPSEC_PFS_GROUP pfsGroup;
+ } IPSEC_PROPOSAL0;
+
+typedef struct IPSEC_SA_IDLE_TIMEOUT0_
+ {
+ UINT32 idleTimeoutSeconds;
+ UINT32 idleTimeoutSecondsFailOver;
+ } IPSEC_SA_IDLE_TIMEOUT0;
+
+typedef struct IPSEC_TRAFFIC_SELECTOR0_
+ {
+ UINT8 protocolId;
+ UINT16 portStart;
+ UINT16 portEnd;
+ FWP_IP_VERSION ipVersion;
+ union
+ {
+ UINT32 startV4Address;
+ UINT8 startV6Address[ 16 ];
+ } ;
+ union
+ {
+ UINT32 endV4Address;
+ UINT8 endV6Address[ 16 ];
+ } ;
+ } IPSEC_TRAFFIC_SELECTOR0;
+
+typedef struct IPSEC_TRAFFIC_SELECTOR_POLICY0_
+ {
+ UINT32 flags;
+ UINT32 numLocalTrafficSelectors;
+ IPSEC_TRAFFIC_SELECTOR0 *localTrafficSelectors;
+ UINT32 numRemoteTrafficSelectors;
+ IPSEC_TRAFFIC_SELECTOR0 *remoteTrafficSelectors;
+ } IPSEC_TRAFFIC_SELECTOR_POLICY0;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 248 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+
+
+
+
+#line 253 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+
+
+#line 256 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+
+
+
+
+typedef struct IPSEC_TRANSPORT_POLICY0_
+ {
+ UINT32 numIpsecProposals;
+ IPSEC_PROPOSAL0 *ipsecProposals;
+ UINT32 flags;
+ UINT32 ndAllowClearTimeoutSeconds;
+ IPSEC_SA_IDLE_TIMEOUT0 saIdleTimeout;
+ IKEEXT_EM_POLICY0 *emPolicy;
+ } IPSEC_TRANSPORT_POLICY0;
+
+
+typedef struct IPSEC_TRANSPORT_POLICY1_
+ {
+ UINT32 numIpsecProposals;
+ IPSEC_PROPOSAL0 *ipsecProposals;
+ UINT32 flags;
+ UINT32 ndAllowClearTimeoutSeconds;
+ IPSEC_SA_IDLE_TIMEOUT0 saIdleTimeout;
+ IKEEXT_EM_POLICY1 *emPolicy;
+ } IPSEC_TRANSPORT_POLICY1;
+
+#line 282 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+
+typedef struct IPSEC_TRANSPORT_POLICY2_
+ {
+ UINT32 numIpsecProposals;
+ IPSEC_PROPOSAL0 *ipsecProposals;
+ UINT32 flags;
+ UINT32 ndAllowClearTimeoutSeconds;
+ IPSEC_SA_IDLE_TIMEOUT0 saIdleTimeout;
+ IKEEXT_EM_POLICY2 *emPolicy;
+ } IPSEC_TRANSPORT_POLICY2;
+
+#line 294 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+typedef struct IPSEC_TUNNEL_ENDPOINTS0_
+ {
+ FWP_IP_VERSION ipVersion;
+ union
+ {
+ UINT32 localV4Address;
+ UINT8 localV6Address[ 16 ];
+ } ;
+ union
+ {
+ UINT32 remoteV4Address;
+ UINT8 remoteV6Address[ 16 ];
+ } ;
+ } IPSEC_TUNNEL_ENDPOINTS0;
+
+
+typedef struct IPSEC_TUNNEL_ENDPOINT0_
+ {
+ FWP_IP_VERSION ipVersion;
+ union
+ {
+ UINT32 v4Address;
+ UINT8 v6Address[ 16 ];
+ } ;
+ } IPSEC_TUNNEL_ENDPOINT0;
+
+typedef struct IPSEC_TUNNEL_ENDPOINTS2_
+ {
+ FWP_IP_VERSION ipVersion;
+ union
+ {
+ UINT32 localV4Address;
+ UINT8 localV6Address[ 16 ];
+ } ;
+ union
+ {
+ UINT32 remoteV4Address;
+ UINT8 remoteV6Address[ 16 ];
+ } ;
+ UINT64 localIfLuid;
+ wchar_t *remoteFqdn;
+ UINT32 numAddresses;
+ IPSEC_TUNNEL_ENDPOINT0 *remoteAddresses;
+ } IPSEC_TUNNEL_ENDPOINTS2;
+
+#line 340 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+
+typedef struct IPSEC_TUNNEL_ENDPOINTS1_
+ {
+ FWP_IP_VERSION ipVersion;
+ union
+ {
+ UINT32 localV4Address;
+ UINT8 localV6Address[ 16 ];
+ } ;
+ union
+ {
+ UINT32 remoteV4Address;
+ UINT8 remoteV6Address[ 16 ];
+ } ;
+ UINT64 localIfLuid;
+ } IPSEC_TUNNEL_ENDPOINTS1;
+
+#line 358 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+typedef struct IPSEC_TUNNEL_POLICY0_
+ {
+ UINT32 flags;
+ UINT32 numIpsecProposals;
+ IPSEC_PROPOSAL0 *ipsecProposals;
+ IPSEC_TUNNEL_ENDPOINTS0 tunnelEndpoints;
+ IPSEC_SA_IDLE_TIMEOUT0 saIdleTimeout;
+ IKEEXT_EM_POLICY0 *emPolicy;
+ } IPSEC_TUNNEL_POLICY0;
+
+
+typedef struct IPSEC_TUNNEL_POLICY1_
+ {
+ UINT32 flags;
+ UINT32 numIpsecProposals;
+ IPSEC_PROPOSAL0 *ipsecProposals;
+ IPSEC_TUNNEL_ENDPOINTS1 tunnelEndpoints;
+ IPSEC_SA_IDLE_TIMEOUT0 saIdleTimeout;
+ IKEEXT_EM_POLICY1 *emPolicy;
+ } IPSEC_TUNNEL_POLICY1;
+
+#line 380 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+
+typedef struct IPSEC_TUNNEL_POLICY2_
+ {
+ UINT32 flags;
+ UINT32 numIpsecProposals;
+ IPSEC_PROPOSAL0 *ipsecProposals;
+ IPSEC_TUNNEL_ENDPOINTS2 tunnelEndpoints;
+ IPSEC_SA_IDLE_TIMEOUT0 saIdleTimeout;
+ IKEEXT_EM_POLICY2 *emPolicy;
+ UINT32 fwdPathSaLifetime;
+ } IPSEC_TUNNEL_POLICY2;
+
+#line 393 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+
+typedef struct IPSEC_TUNNEL_POLICY3_
+ {
+ UINT32 flags;
+ UINT32 numIpsecProposals;
+ IPSEC_PROPOSAL0 *ipsecProposals;
+ IPSEC_TUNNEL_ENDPOINTS2 tunnelEndpoints;
+ IPSEC_SA_IDLE_TIMEOUT0 saIdleTimeout;
+ IKEEXT_EM_POLICY2 *emPolicy;
+ UINT32 fwdPathSaLifetime;
+ UINT32 compartmentId;
+ UINT32 numTrafficSelectorPolicy;
+ IPSEC_TRAFFIC_SELECTOR_POLICY0 *trafficSelectorPolicies;
+ } IPSEC_TUNNEL_POLICY3;
+
+#line 409 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+typedef struct IPSEC_KEYING_POLICY0_
+ {
+ UINT32 numKeyMods;
+ GUID *keyModKeys;
+ } IPSEC_KEYING_POLICY0;
+
+
+
+typedef struct IPSEC_KEYING_POLICY1_
+ {
+ UINT32 numKeyMods;
+ GUID *keyModKeys;
+ UINT32 flags;
+ } IPSEC_KEYING_POLICY1;
+
+#line 425 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+typedef struct IPSEC_AGGREGATE_SA_STATISTICS0_
+ {
+ UINT32 activeSas;
+ UINT32 pendingSaNegotiations;
+ UINT32 totalSasAdded;
+ UINT32 totalSasDeleted;
+ UINT32 successfulRekeys;
+ UINT32 activeTunnels;
+ UINT32 offloadedSas;
+ } IPSEC_AGGREGATE_SA_STATISTICS0;
+
+typedef struct IPSEC_ESP_DROP_PACKET_STATISTICS0_
+ {
+ UINT32 invalidSpisOnInbound;
+ UINT32 decryptionFailuresOnInbound;
+ UINT32 authenticationFailuresOnInbound;
+ UINT32 replayCheckFailuresOnInbound;
+ UINT32 saNotInitializedOnInbound;
+ } IPSEC_ESP_DROP_PACKET_STATISTICS0;
+
+typedef struct IPSEC_AH_DROP_PACKET_STATISTICS0_
+ {
+ UINT32 invalidSpisOnInbound;
+ UINT32 authenticationFailuresOnInbound;
+ UINT32 replayCheckFailuresOnInbound;
+ UINT32 saNotInitializedOnInbound;
+ } IPSEC_AH_DROP_PACKET_STATISTICS0;
+
+typedef struct IPSEC_AGGREGATE_DROP_PACKET_STATISTICS0_
+ {
+ UINT32 invalidSpisOnInbound;
+ UINT32 decryptionFailuresOnInbound;
+ UINT32 authenticationFailuresOnInbound;
+ UINT32 udpEspValidationFailuresOnInbound;
+ UINT32 replayCheckFailuresOnInbound;
+ UINT32 invalidClearTextInbound;
+ UINT32 saNotInitializedOnInbound;
+ UINT32 receiveOverIncorrectSaInbound;
+ UINT32 secureReceivesNotMatchingFilters;
+ } IPSEC_AGGREGATE_DROP_PACKET_STATISTICS0;
+
+
+typedef struct IPSEC_AGGREGATE_DROP_PACKET_STATISTICS1_
+ {
+ UINT32 invalidSpisOnInbound;
+ UINT32 decryptionFailuresOnInbound;
+ UINT32 authenticationFailuresOnInbound;
+ UINT32 udpEspValidationFailuresOnInbound;
+ UINT32 replayCheckFailuresOnInbound;
+ UINT32 invalidClearTextInbound;
+ UINT32 saNotInitializedOnInbound;
+ UINT32 receiveOverIncorrectSaInbound;
+ UINT32 secureReceivesNotMatchingFilters;
+ UINT32 totalDropPacketsInbound;
+ } IPSEC_AGGREGATE_DROP_PACKET_STATISTICS1;
+
+#line 482 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+typedef struct IPSEC_TRAFFIC_STATISTICS0_
+ {
+ UINT64 encryptedByteCount;
+ UINT64 authenticatedAHByteCount;
+ UINT64 authenticatedESPByteCount;
+ UINT64 transportByteCount;
+ UINT64 tunnelByteCount;
+ UINT64 offloadByteCount;
+ } IPSEC_TRAFFIC_STATISTICS0;
+
+
+typedef struct IPSEC_TRAFFIC_STATISTICS1_
+ {
+ UINT64 encryptedByteCount;
+ UINT64 authenticatedAHByteCount;
+ UINT64 authenticatedESPByteCount;
+ UINT64 transportByteCount;
+ UINT64 tunnelByteCount;
+ UINT64 offloadByteCount;
+ UINT64 totalSuccessfulPackets;
+ } IPSEC_TRAFFIC_STATISTICS1;
+
+#line 505 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+typedef struct IPSEC_STATISTICS0_
+ {
+ IPSEC_AGGREGATE_SA_STATISTICS0 aggregateSaStatistics;
+ IPSEC_ESP_DROP_PACKET_STATISTICS0 espDropPacketStatistics;
+ IPSEC_AH_DROP_PACKET_STATISTICS0 ahDropPacketStatistics;
+ IPSEC_AGGREGATE_DROP_PACKET_STATISTICS0 aggregateDropPacketStatistics;
+ IPSEC_TRAFFIC_STATISTICS0 inboundTrafficStatistics;
+ IPSEC_TRAFFIC_STATISTICS0 outboundTrafficStatistics;
+ } IPSEC_STATISTICS0;
+
+
+typedef struct IPSEC_STATISTICS1_
+ {
+ IPSEC_AGGREGATE_SA_STATISTICS0 aggregateSaStatistics;
+ IPSEC_ESP_DROP_PACKET_STATISTICS0 espDropPacketStatistics;
+ IPSEC_AH_DROP_PACKET_STATISTICS0 ahDropPacketStatistics;
+ IPSEC_AGGREGATE_DROP_PACKET_STATISTICS1 aggregateDropPacketStatistics;
+ IPSEC_TRAFFIC_STATISTICS1 inboundTrafficStatistics;
+ IPSEC_TRAFFIC_STATISTICS1 outboundTrafficStatistics;
+ } IPSEC_STATISTICS1;
+
+#line 527 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+typedef UINT32 IPSEC_SA_SPI;
+
+typedef struct IPSEC_SA_AUTH_INFORMATION0_
+ {
+ IPSEC_AUTH_TRANSFORM0 authTransform;
+ FWP_BYTE_BLOB authKey;
+ } IPSEC_SA_AUTH_INFORMATION0;
+
+typedef struct IPSEC_SA_CIPHER_INFORMATION0_
+ {
+ IPSEC_CIPHER_TRANSFORM0 cipherTransform;
+ FWP_BYTE_BLOB cipherKey;
+ } IPSEC_SA_CIPHER_INFORMATION0;
+
+typedef struct IPSEC_SA_AUTH_AND_CIPHER_INFORMATION0_
+ {
+ IPSEC_SA_CIPHER_INFORMATION0 saCipherInformation;
+ IPSEC_SA_AUTH_INFORMATION0 saAuthInformation;
+ } IPSEC_SA_AUTH_AND_CIPHER_INFORMATION0;
+
+typedef struct IPSEC_SA0_
+ {
+ IPSEC_SA_SPI spi;
+ IPSEC_TRANSFORM_TYPE saTransformType;
+ union
+ {
+ IPSEC_SA_AUTH_INFORMATION0 *ahInformation;
+ IPSEC_SA_AUTH_INFORMATION0 *espAuthInformation;
+ IPSEC_SA_CIPHER_INFORMATION0 *espCipherInformation;
+ IPSEC_SA_AUTH_AND_CIPHER_INFORMATION0 *espAuthAndCipherInformation;
+ IPSEC_SA_AUTH_INFORMATION0 *espAuthFwInformation;
+ } ;
+ } IPSEC_SA0;
+
+typedef struct IPSEC_KEYMODULE_STATE0_
+ {
+ GUID keyModuleKey;
+ FWP_BYTE_BLOB stateBlob;
+ } IPSEC_KEYMODULE_STATE0;
+
+typedef UINT64 IPSEC_TOKEN_HANDLE;
+
+typedef
+enum IPSEC_TOKEN_TYPE_
+ {
+ IPSEC_TOKEN_TYPE_MACHINE = 0,
+ IPSEC_TOKEN_TYPE_IMPERSONATION = ( IPSEC_TOKEN_TYPE_MACHINE + 1 ) ,
+ IPSEC_TOKEN_TYPE_MAX = ( IPSEC_TOKEN_TYPE_IMPERSONATION + 1 )
+ } IPSEC_TOKEN_TYPE;
+
+typedef
+enum IPSEC_TOKEN_PRINCIPAL_
+ {
+ IPSEC_TOKEN_PRINCIPAL_LOCAL = 0,
+ IPSEC_TOKEN_PRINCIPAL_PEER = ( IPSEC_TOKEN_PRINCIPAL_LOCAL + 1 ) ,
+ IPSEC_TOKEN_PRINCIPAL_MAX = ( IPSEC_TOKEN_PRINCIPAL_PEER + 1 )
+ } IPSEC_TOKEN_PRINCIPAL;
+
+typedef
+enum IPSEC_TOKEN_MODE_
+ {
+ IPSEC_TOKEN_MODE_MAIN = 0,
+ IPSEC_TOKEN_MODE_EXTENDED = ( IPSEC_TOKEN_MODE_MAIN + 1 ) ,
+ IPSEC_TOKEN_MODE_MAX = ( IPSEC_TOKEN_MODE_EXTENDED + 1 )
+ } IPSEC_TOKEN_MODE;
+
+typedef struct IPSEC_TOKEN0_
+ {
+ IPSEC_TOKEN_TYPE type;
+ IPSEC_TOKEN_PRINCIPAL principal;
+ IPSEC_TOKEN_MODE mode;
+ IPSEC_TOKEN_HANDLE token;
+ } IPSEC_TOKEN0;
+
+typedef struct IPSEC_ID0_
+ {
+ wchar_t *mmTargetName;
+ wchar_t *emTargetName;
+ UINT32 numTokens;
+ IPSEC_TOKEN0 *tokens;
+ UINT64 explicitCredentials;
+ UINT64 logonId;
+ } IPSEC_ID0;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 625 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+
+
+
+
+
+
+#line 632 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+
+
+
+
+
+#line 638 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+
+
+#line 641 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+
+
+#line 644 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+
+
+
+
+typedef struct IPSEC_SA_BUNDLE0_
+ {
+ UINT32 flags;
+ IPSEC_SA_LIFETIME0 lifetime;
+ UINT32 idleTimeoutSeconds;
+ UINT32 ndAllowClearTimeoutSeconds;
+ IPSEC_ID0 *ipsecId;
+ UINT32 napContext;
+ UINT32 qmSaId;
+ UINT32 numSAs;
+ IPSEC_SA0 *saList;
+ IPSEC_KEYMODULE_STATE0 *keyModuleState;
+ FWP_IP_VERSION ipVersion;
+ union
+ {
+ UINT32 peerV4PrivateAddress;
+
+ } ;
+ UINT64 mmSaId;
+ IPSEC_PFS_GROUP pfsGroup;
+ } IPSEC_SA_BUNDLE0;
+
+
+typedef struct IPSEC_SA_BUNDLE1_
+ {
+ UINT32 flags;
+ IPSEC_SA_LIFETIME0 lifetime;
+ UINT32 idleTimeoutSeconds;
+ UINT32 ndAllowClearTimeoutSeconds;
+ IPSEC_ID0 *ipsecId;
+ UINT32 napContext;
+ UINT32 qmSaId;
+ UINT32 numSAs;
+ IPSEC_SA0 *saList;
+ IPSEC_KEYMODULE_STATE0 *keyModuleState;
+ FWP_IP_VERSION ipVersion;
+ union
+ {
+ UINT32 peerV4PrivateAddress;
+
+ } ;
+ UINT64 mmSaId;
+ IPSEC_PFS_GROUP pfsGroup;
+ GUID saLookupContext;
+ UINT64 qmFilterId;
+ } IPSEC_SA_BUNDLE1;
+
+#line 696 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+typedef
+enum IPSEC_TRAFFIC_TYPE_
+ {
+ IPSEC_TRAFFIC_TYPE_TRANSPORT = 0,
+ IPSEC_TRAFFIC_TYPE_TUNNEL = ( IPSEC_TRAFFIC_TYPE_TRANSPORT + 1 ) ,
+ IPSEC_TRAFFIC_TYPE_MAX = ( IPSEC_TRAFFIC_TYPE_TUNNEL + 1 )
+ } IPSEC_TRAFFIC_TYPE;
+
+typedef struct IPSEC_TRAFFIC0_
+ {
+ FWP_IP_VERSION ipVersion;
+ union
+ {
+ UINT32 localV4Address;
+ UINT8 localV6Address[ 16 ];
+ } ;
+ union
+ {
+ UINT32 remoteV4Address;
+ UINT8 remoteV6Address[ 16 ];
+ } ;
+ IPSEC_TRAFFIC_TYPE trafficType;
+ union
+ {
+ UINT64 ipsecFilterId;
+ UINT64 tunnelPolicyId;
+ } ;
+ UINT16 remotePort;
+ } IPSEC_TRAFFIC0;
+
+
+typedef struct IPSEC_TRAFFIC1_
+ {
+ FWP_IP_VERSION ipVersion;
+ union
+ {
+ UINT32 localV4Address;
+ UINT8 localV6Address[ 16 ];
+ } ;
+ union
+ {
+ UINT32 remoteV4Address;
+ UINT8 remoteV6Address[ 16 ];
+ } ;
+ IPSEC_TRAFFIC_TYPE trafficType;
+ union
+ {
+ UINT64 ipsecFilterId;
+ UINT64 tunnelPolicyId;
+ } ;
+ UINT16 remotePort;
+ UINT16 localPort;
+ UINT8 ipProtocol;
+ UINT64 localIfLuid;
+ UINT32 realIfProfileId;
+ } IPSEC_TRAFFIC1;
+
+#line 754 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+typedef struct IPSEC_V4_UDP_ENCAPSULATION0_
+ {
+ UINT16 localUdpEncapPort;
+ UINT16 remoteUdpEncapPort;
+ } IPSEC_V4_UDP_ENCAPSULATION0;
+
+typedef struct IPSEC_GETSPI0_
+ {
+ IPSEC_TRAFFIC0 inboundIpsecTraffic;
+ FWP_IP_VERSION ipVersion;
+ union
+ {
+ IPSEC_V4_UDP_ENCAPSULATION0 *inboundUdpEncapsulation;
+
+ } ;
+ IPSEC_CRYPTO_MODULE_ID *rngCryptoModuleID;
+ } IPSEC_GETSPI0;
+
+
+typedef struct IPSEC_GETSPI1_
+ {
+ IPSEC_TRAFFIC1 inboundIpsecTraffic;
+ FWP_IP_VERSION ipVersion;
+ union
+ {
+ IPSEC_V4_UDP_ENCAPSULATION0 *inboundUdpEncapsulation;
+
+ } ;
+ IPSEC_CRYPTO_MODULE_ID *rngCryptoModuleID;
+ } IPSEC_GETSPI1;
+
+#line 786 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+typedef struct IPSEC_SA_DETAILS0_
+ {
+ FWP_IP_VERSION ipVersion;
+ FWP_DIRECTION saDirection;
+ IPSEC_TRAFFIC0 traffic;
+ IPSEC_SA_BUNDLE0 saBundle;
+ union
+ {
+ IPSEC_V4_UDP_ENCAPSULATION0 *udpEncapsulation;
+
+ } ;
+ FWPM_FILTER0 *transportFilter;
+ } IPSEC_SA_DETAILS0;
+
+
+typedef struct IPSEC_SA_DETAILS1_
+ {
+ FWP_IP_VERSION ipVersion;
+ FWP_DIRECTION saDirection;
+ IPSEC_TRAFFIC1 traffic;
+ IPSEC_SA_BUNDLE1 saBundle;
+ union
+ {
+ IPSEC_V4_UDP_ENCAPSULATION0 *udpEncapsulation;
+
+ } ;
+ FWPM_FILTER0 *transportFilter;
+ IPSEC_VIRTUAL_IF_TUNNEL_INFO0 virtualIfTunnelInfo;
+ } IPSEC_SA_DETAILS1;
+
+#line 817 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+typedef struct IPSEC_SA_CONTEXT0_
+ {
+ UINT64 saContextId;
+ IPSEC_SA_DETAILS0 *inboundSa;
+ IPSEC_SA_DETAILS0 *outboundSa;
+ } IPSEC_SA_CONTEXT0;
+
+
+typedef struct IPSEC_SA_CONTEXT1_
+ {
+ UINT64 saContextId;
+ IPSEC_SA_DETAILS1 *inboundSa;
+ IPSEC_SA_DETAILS1 *outboundSa;
+ } IPSEC_SA_CONTEXT1;
+
+#line 833 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+typedef struct IPSEC_SA_CONTEXT_ENUM_TEMPLATE0_
+ {
+ FWP_CONDITION_VALUE0 localSubNet;
+ FWP_CONDITION_VALUE0 remoteSubNet;
+ } IPSEC_SA_CONTEXT_ENUM_TEMPLATE0;
+
+typedef struct IPSEC_SA_ENUM_TEMPLATE0_
+ {
+ FWP_DIRECTION saDirection;
+ } IPSEC_SA_ENUM_TEMPLATE0;
+
+typedef struct IPSEC_SA_CONTEXT_SUBSCRIPTION0_
+ {
+ IPSEC_SA_CONTEXT_ENUM_TEMPLATE0 *enumTemplate;
+ UINT32 flags;
+ GUID sessionKey;
+ } IPSEC_SA_CONTEXT_SUBSCRIPTION0;
+
+typedef
+enum IPSEC_SA_CONTEXT_EVENT_TYPE0_
+ {
+ IPSEC_SA_CONTEXT_EVENT_ADD = 1,
+ IPSEC_SA_CONTEXT_EVENT_DELETE = ( IPSEC_SA_CONTEXT_EVENT_ADD + 1 ) ,
+ IPSEC_SA_CONTEXT_EVENT_MAX = ( IPSEC_SA_CONTEXT_EVENT_DELETE + 1 )
+ } IPSEC_SA_CONTEXT_EVENT_TYPE0;
+
+typedef struct IPSEC_SA_CONTEXT_CHANGE0_
+ {
+ IPSEC_SA_CONTEXT_EVENT_TYPE0 changeType;
+ UINT64 saContextId;
+ } IPSEC_SA_CONTEXT_CHANGE0;
+
+typedef
+enum IPSEC_FAILURE_POINT_
+ {
+ IPSEC_FAILURE_NONE = 0,
+ IPSEC_FAILURE_ME = ( IPSEC_FAILURE_NONE + 1 ) ,
+ IPSEC_FAILURE_PEER = ( IPSEC_FAILURE_ME + 1 ) ,
+ IPSEC_FAILURE_POINT_MAX = ( IPSEC_FAILURE_PEER + 1 )
+ } IPSEC_FAILURE_POINT;
+
+typedef struct IPSEC_ADDRESS_INFO0_
+ {
+ UINT32 numV4Addresses;
+ UINT32 *v4Addresses;
+ UINT32 numV6Addresses;
+ FWP_BYTE_ARRAY16 *v6Addresses;
+ } IPSEC_ADDRESS_INFO0;
+
+
+
+
+
+
+
+
+
+
+typedef struct IPSEC_DOSP_OPTIONS0_
+ {
+ UINT32 stateIdleTimeoutSeconds;
+ UINT32 perIPRateLimitQueueIdleTimeoutSeconds;
+ UINT8 ipV6IPsecUnauthDscp;
+ UINT32 ipV6IPsecUnauthRateLimitBytesPerSec;
+ UINT32 ipV6IPsecUnauthPerIPRateLimitBytesPerSec;
+ UINT8 ipV6IPsecAuthDscp;
+ UINT32 ipV6IPsecAuthRateLimitBytesPerSec;
+ UINT8 icmpV6Dscp;
+ UINT32 icmpV6RateLimitBytesPerSec;
+ UINT8 ipV6FilterExemptDscp;
+ UINT32 ipV6FilterExemptRateLimitBytesPerSec;
+ UINT8 defBlockExemptDscp;
+ UINT32 defBlockExemptRateLimitBytesPerSec;
+ UINT32 maxStateEntries;
+ UINT32 maxPerIPRateLimitQueues;
+ UINT32 flags;
+ UINT32 numPublicIFLuids;
+ UINT64 *publicIFLuids;
+ UINT32 numInternalIFLuids;
+ UINT64 *internalIFLuids;
+ FWP_V6_ADDR_AND_MASK publicV6AddrMask;
+ FWP_V6_ADDR_AND_MASK internalV6AddrMask;
+ } IPSEC_DOSP_OPTIONS0;
+
+typedef struct IPSEC_DOSP_STATISTICS0_
+ {
+ UINT64 totalStateEntriesCreated;
+ UINT64 currentStateEntries;
+ UINT64 totalInboundAllowedIPv6IPsecUnauthPkts;
+ UINT64 totalInboundRatelimitDiscardedIPv6IPsecUnauthPkts;
+ UINT64 totalInboundPerIPRatelimitDiscardedIPv6IPsecUnauthPkts;
+ UINT64 totalInboundOtherDiscardedIPv6IPsecUnauthPkts;
+ UINT64 totalInboundAllowedIPv6IPsecAuthPkts;
+ UINT64 totalInboundRatelimitDiscardedIPv6IPsecAuthPkts;
+ UINT64 totalInboundOtherDiscardedIPv6IPsecAuthPkts;
+ UINT64 totalInboundAllowedICMPv6Pkts;
+ UINT64 totalInboundRatelimitDiscardedICMPv6Pkts;
+ UINT64 totalInboundAllowedIPv6FilterExemptPkts;
+ UINT64 totalInboundRatelimitDiscardedIPv6FilterExemptPkts;
+ UINT64 totalInboundDiscardedIPv6FilterBlockPkts;
+ UINT64 totalInboundAllowedDefBlockExemptPkts;
+ UINT64 totalInboundRatelimitDiscardedDefBlockExemptPkts;
+ UINT64 totalInboundDiscardedDefBlockPkts;
+ UINT64 currentInboundIPv6IPsecUnauthPerIPRateLimitQueues;
+ } IPSEC_DOSP_STATISTICS0;
+
+typedef struct IPSEC_DOSP_STATE0_
+ {
+ UINT8 publicHostV6Addr[ 16 ];
+ UINT8 internalHostV6Addr[ 16 ];
+ UINT64 totalInboundIPv6IPsecAuthPackets;
+ UINT64 totalOutboundIPv6IPsecAuthPackets;
+ UINT32 durationSecs;
+ } IPSEC_DOSP_STATE0;
+
+typedef struct IPSEC_DOSP_STATE_ENUM_TEMPLATE0_
+ {
+ FWP_V6_ADDR_AND_MASK publicV6AddrMask;
+ FWP_V6_ADDR_AND_MASK internalV6AddrMask;
+ } IPSEC_DOSP_STATE_ENUM_TEMPLATE0;
+
+#line 955 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+
+
+typedef struct _IPSEC_KEY_MANAGER0
+ {
+ GUID keyManagerKey;
+ FWPM_DISPLAY_DATA0 displayData;
+ UINT32 flags;
+ UINT8 keyDictationTimeoutHint;
+ } IPSEC_KEY_MANAGER0;
+
+#line 966 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+
+
+#pragma warning(pop)
+
+
+#line 972 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+#line 973 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+#line 974 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+#pragma endregion
+
+
+extern RPC_IF_HANDLE __MIDL_itf_ipsectypes_0000_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_ipsectypes_0000_0000_v0_0_s_ifspec;
+
+
+
+
+
+
+
+
+
+#line 989 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\ipsectypes.h"
+
+
+#pragma external_header(pop)
+#line 50 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+
+
+
+
+
+
+
+
+
+
+#pragma region Desktop Family or AppRuntime Package
+
+
+
+#pragma warning(push)
+#line 66 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+#pragma warning(disable:4201)
+#line 68 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+
+
+typedef
+enum __MIDL___MIDL_itf_fwpmtypes_0000_0000_0001
+ {
+ DlUnicast = 0,
+ DlMulticast = ( DlUnicast + 1 ) ,
+ DlBroadcast = ( DlMulticast + 1 )
+ } DL_ADDRESS_TYPE;
+
+typedef enum __MIDL___MIDL_itf_fwpmtypes_0000_0000_0001 *PDL_ADDRESS_TYPE;
+
+#line 81 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+typedef
+enum FWPM_CHANGE_TYPE_
+ {
+ FWPM_CHANGE_ADD = 1,
+ FWPM_CHANGE_DELETE = ( FWPM_CHANGE_ADD + 1 ) ,
+ FWPM_CHANGE_TYPE_MAX = ( FWPM_CHANGE_DELETE + 1 )
+ } FWPM_CHANGE_TYPE;
+
+
+
+typedef
+enum FWPM_SERVICE_STATE_
+ {
+ FWPM_SERVICE_STOPPED = 0,
+ FWPM_SERVICE_START_PENDING = ( FWPM_SERVICE_STOPPED + 1 ) ,
+ FWPM_SERVICE_STOP_PENDING = ( FWPM_SERVICE_START_PENDING + 1 ) ,
+ FWPM_SERVICE_RUNNING = ( FWPM_SERVICE_STOP_PENDING + 1 ) ,
+ FWPM_SERVICE_STATE_MAX = ( FWPM_SERVICE_RUNNING + 1 )
+ } FWPM_SERVICE_STATE;
+
+
+
+
+
+
+
+
+#line 109 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+
+
+
+
+typedef
+enum FWPM_ENGINE_OPTION_
+ {
+ FWPM_ENGINE_COLLECT_NET_EVENTS = 0,
+ FWPM_ENGINE_NET_EVENT_MATCH_ANY_KEYWORDS = ( FWPM_ENGINE_COLLECT_NET_EVENTS + 1 ) ,
+ FWPM_ENGINE_NAME_CACHE = ( FWPM_ENGINE_NET_EVENT_MATCH_ANY_KEYWORDS + 1 ) ,
+ FWPM_ENGINE_MONITOR_IPSEC_CONNECTIONS = ( FWPM_ENGINE_NAME_CACHE + 1 ) ,
+ FWPM_ENGINE_PACKET_QUEUING = ( FWPM_ENGINE_MONITOR_IPSEC_CONNECTIONS + 1 ) ,
+ FWPM_ENGINE_TXN_WATCHDOG_TIMEOUT_IN_MSEC = ( FWPM_ENGINE_PACKET_QUEUING + 1 ) ,
+ FWPM_ENGINE_OPTION_MAX = ( FWPM_ENGINE_TXN_WATCHDOG_TIMEOUT_IN_MSEC + 1 )
+ } FWPM_ENGINE_OPTION;
+
+
+
+
+#line 129 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+typedef struct FWPM_SESSION0_
+ {
+ GUID sessionKey;
+ FWPM_DISPLAY_DATA0 displayData;
+ UINT32 flags;
+ UINT32 txnWaitTimeoutInMSec;
+ DWORD processId;
+ SID *sid;
+ wchar_t *username;
+ BOOL kernelMode;
+ } FWPM_SESSION0;
+
+typedef struct FWPM_SESSION_ENUM_TEMPLATE0_
+ {
+ UINT64 reserved;
+ } FWPM_SESSION_ENUM_TEMPLATE0;
+
+
+
+typedef struct FWPM_PROVIDER0_
+ {
+ GUID providerKey;
+ FWPM_DISPLAY_DATA0 displayData;
+ UINT32 flags;
+ FWP_BYTE_BLOB providerData;
+ wchar_t *serviceName;
+ } FWPM_PROVIDER0;
+
+typedef struct FWPM_PROVIDER_ENUM_TEMPLATE0_
+ {
+ UINT64 reserved;
+ } FWPM_PROVIDER_ENUM_TEMPLATE0;
+
+typedef struct FWPM_PROVIDER_CHANGE0_
+ {
+ FWPM_CHANGE_TYPE changeType;
+ GUID providerKey;
+ } FWPM_PROVIDER_CHANGE0;
+
+typedef struct FWPM_PROVIDER_SUBSCRIPTION0_
+ {
+ FWPM_PROVIDER_ENUM_TEMPLATE0 *enumTemplate;
+ UINT32 flags;
+ GUID sessionKey;
+ } FWPM_PROVIDER_SUBSCRIPTION0;
+
+
+
+
+#line 179 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+typedef struct FWPM_CLASSIFY_OPTION0_
+ {
+ FWP_CLASSIFY_OPTION_TYPE type;
+ FWP_VALUE0 value;
+ } FWPM_CLASSIFY_OPTION0;
+
+typedef struct FWPM_CLASSIFY_OPTIONS0_
+ {
+ UINT32 numOptions;
+ FWPM_CLASSIFY_OPTION0 *options;
+ } FWPM_CLASSIFY_OPTIONS0;
+
+typedef struct FWPM_NETWORK_CONNECTION_POLICY_SETTING0_
+ {
+ FWP_NETWORK_CONNECTION_POLICY_SETTING_TYPE type;
+ FWP_VALUE0 value;
+ } FWPM_NETWORK_CONNECTION_POLICY_SETTING0;
+
+typedef struct FWPM_NETWORK_CONNECTION_POLICY_SETTINGS0_
+ {
+ UINT32 numSettings;
+ FWPM_NETWORK_CONNECTION_POLICY_SETTING0 *settings;
+ } FWPM_NETWORK_CONNECTION_POLICY_SETTINGS0;
+
+typedef
+enum FWPM_PROVIDER_CONTEXT_TYPE_
+ {
+ FWPM_IPSEC_KEYING_CONTEXT = 0,
+ FWPM_IPSEC_IKE_QM_TRANSPORT_CONTEXT = ( FWPM_IPSEC_KEYING_CONTEXT + 1 ) ,
+ FWPM_IPSEC_IKE_QM_TUNNEL_CONTEXT = ( FWPM_IPSEC_IKE_QM_TRANSPORT_CONTEXT + 1 ) ,
+ FWPM_IPSEC_AUTHIP_QM_TRANSPORT_CONTEXT = ( FWPM_IPSEC_IKE_QM_TUNNEL_CONTEXT + 1 ) ,
+ FWPM_IPSEC_AUTHIP_QM_TUNNEL_CONTEXT = ( FWPM_IPSEC_AUTHIP_QM_TRANSPORT_CONTEXT + 1 ) ,
+ FWPM_IPSEC_IKE_MM_CONTEXT = ( FWPM_IPSEC_AUTHIP_QM_TUNNEL_CONTEXT + 1 ) ,
+ FWPM_IPSEC_AUTHIP_MM_CONTEXT = ( FWPM_IPSEC_IKE_MM_CONTEXT + 1 ) ,
+ FWPM_CLASSIFY_OPTIONS_CONTEXT = ( FWPM_IPSEC_AUTHIP_MM_CONTEXT + 1 ) ,
+ FWPM_GENERAL_CONTEXT = ( FWPM_CLASSIFY_OPTIONS_CONTEXT + 1 ) ,
+ FWPM_IPSEC_IKEV2_QM_TUNNEL_CONTEXT = ( FWPM_GENERAL_CONTEXT + 1 ) ,
+ FWPM_IPSEC_IKEV2_MM_CONTEXT = ( FWPM_IPSEC_IKEV2_QM_TUNNEL_CONTEXT + 1 ) ,
+ FWPM_IPSEC_DOSP_CONTEXT = ( FWPM_IPSEC_IKEV2_MM_CONTEXT + 1 ) ,
+ FWPM_IPSEC_IKEV2_QM_TRANSPORT_CONTEXT = ( FWPM_IPSEC_DOSP_CONTEXT + 1 ) ,
+ FWPM_NETWORK_CONNECTION_POLICY_CONTEXT = ( FWPM_IPSEC_IKEV2_QM_TRANSPORT_CONTEXT + 1 ) ,
+ FWPM_PROVIDER_CONTEXT_TYPE_MAX = ( FWPM_NETWORK_CONNECTION_POLICY_CONTEXT + 1 )
+ } FWPM_PROVIDER_CONTEXT_TYPE;
+
+typedef struct FWPM_PROVIDER_CONTEXT0_
+ {
+ GUID providerContextKey;
+ FWPM_DISPLAY_DATA0 displayData;
+ UINT32 flags;
+ GUID *providerKey;
+ FWP_BYTE_BLOB providerData;
+ FWPM_PROVIDER_CONTEXT_TYPE type;
+ union
+ {
+ IPSEC_KEYING_POLICY0 *keyingPolicy;
+ IPSEC_TRANSPORT_POLICY0 *ikeQmTransportPolicy;
+ IPSEC_TUNNEL_POLICY0 *ikeQmTunnelPolicy;
+ IPSEC_TRANSPORT_POLICY0 *authipQmTransportPolicy;
+ IPSEC_TUNNEL_POLICY0 *authipQmTunnelPolicy;
+ IKEEXT_POLICY0 *ikeMmPolicy;
+ IKEEXT_POLICY0 *authIpMmPolicy;
+ FWP_BYTE_BLOB *dataBuffer;
+ FWPM_CLASSIFY_OPTIONS0 *classifyOptions;
+
+ } ;
+ UINT64 providerContextId;
+ } FWPM_PROVIDER_CONTEXT0;
+
+
+typedef struct FWPM_PROVIDER_CONTEXT1_
+ {
+ GUID providerContextKey;
+ FWPM_DISPLAY_DATA0 displayData;
+ UINT32 flags;
+ GUID *providerKey;
+ FWP_BYTE_BLOB providerData;
+ FWPM_PROVIDER_CONTEXT_TYPE type;
+ union
+ {
+ IPSEC_KEYING_POLICY0 *keyingPolicy;
+ IPSEC_TRANSPORT_POLICY1 *ikeQmTransportPolicy;
+ IPSEC_TUNNEL_POLICY1 *ikeQmTunnelPolicy;
+ IPSEC_TRANSPORT_POLICY1 *authipQmTransportPolicy;
+ IPSEC_TUNNEL_POLICY1 *authipQmTunnelPolicy;
+ IKEEXT_POLICY1 *ikeMmPolicy;
+ IKEEXT_POLICY1 *authIpMmPolicy;
+ FWP_BYTE_BLOB *dataBuffer;
+ FWPM_CLASSIFY_OPTIONS0 *classifyOptions;
+ IPSEC_TUNNEL_POLICY1 *ikeV2QmTunnelPolicy;
+ IKEEXT_POLICY1 *ikeV2MmPolicy;
+ IPSEC_DOSP_OPTIONS0 *idpOptions;
+ } ;
+ UINT64 providerContextId;
+ } FWPM_PROVIDER_CONTEXT1;
+
+#line 275 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+
+typedef struct FWPM_PROVIDER_CONTEXT2_
+ {
+ GUID providerContextKey;
+ FWPM_DISPLAY_DATA0 displayData;
+ UINT32 flags;
+ GUID *providerKey;
+ FWP_BYTE_BLOB providerData;
+ FWPM_PROVIDER_CONTEXT_TYPE type;
+ union
+ {
+ IPSEC_KEYING_POLICY1 *keyingPolicy;
+ IPSEC_TRANSPORT_POLICY2 *ikeQmTransportPolicy;
+ IPSEC_TUNNEL_POLICY2 *ikeQmTunnelPolicy;
+ IPSEC_TRANSPORT_POLICY2 *authipQmTransportPolicy;
+ IPSEC_TUNNEL_POLICY2 *authipQmTunnelPolicy;
+ IKEEXT_POLICY2 *ikeMmPolicy;
+ IKEEXT_POLICY2 *authIpMmPolicy;
+ FWP_BYTE_BLOB *dataBuffer;
+ FWPM_CLASSIFY_OPTIONS0 *classifyOptions;
+ IPSEC_TUNNEL_POLICY2 *ikeV2QmTunnelPolicy;
+ IPSEC_TRANSPORT_POLICY2 *ikeV2QmTransportPolicy;
+ IKEEXT_POLICY2 *ikeV2MmPolicy;
+ IPSEC_DOSP_OPTIONS0 *idpOptions;
+ } ;
+ UINT64 providerContextId;
+ } FWPM_PROVIDER_CONTEXT2;
+
+#line 304 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+
+typedef struct FWPM_PROVIDER_CONTEXT3_
+ {
+ GUID providerContextKey;
+ FWPM_DISPLAY_DATA0 displayData;
+ UINT32 flags;
+ GUID *providerKey;
+ FWP_BYTE_BLOB providerData;
+ FWPM_PROVIDER_CONTEXT_TYPE type;
+ union
+ {
+ IPSEC_KEYING_POLICY1 *keyingPolicy;
+ IPSEC_TRANSPORT_POLICY2 *ikeQmTransportPolicy;
+ IPSEC_TUNNEL_POLICY3 *ikeQmTunnelPolicy;
+ IPSEC_TRANSPORT_POLICY2 *authipQmTransportPolicy;
+ IPSEC_TUNNEL_POLICY3 *authipQmTunnelPolicy;
+ IKEEXT_POLICY2 *ikeMmPolicy;
+ IKEEXT_POLICY2 *authIpMmPolicy;
+ FWP_BYTE_BLOB *dataBuffer;
+ FWPM_CLASSIFY_OPTIONS0 *classifyOptions;
+ IPSEC_TUNNEL_POLICY3 *ikeV2QmTunnelPolicy;
+ IPSEC_TRANSPORT_POLICY2 *ikeV2QmTransportPolicy;
+ IKEEXT_POLICY2 *ikeV2MmPolicy;
+ IPSEC_DOSP_OPTIONS0 *idpOptions;
+ FWPM_NETWORK_CONNECTION_POLICY_SETTINGS0 *networkConnectionPolicy;
+ } ;
+ UINT64 providerContextId;
+ } FWPM_PROVIDER_CONTEXT3;
+
+#line 334 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+typedef struct FWPM_PROVIDER_CONTEXT_ENUM_TEMPLATE0_
+ {
+ GUID *providerKey;
+ FWPM_PROVIDER_CONTEXT_TYPE providerContextType;
+ } FWPM_PROVIDER_CONTEXT_ENUM_TEMPLATE0;
+
+typedef struct FWPM_PROVIDER_CONTEXT_CHANGE0_
+ {
+ FWPM_CHANGE_TYPE changeType;
+ GUID providerContextKey;
+ UINT64 providerContextId;
+ } FWPM_PROVIDER_CONTEXT_CHANGE0;
+
+typedef struct FWPM_PROVIDER_CONTEXT_SUBSCRIPTION0_
+ {
+ FWPM_PROVIDER_CONTEXT_ENUM_TEMPLATE0 *enumTemplate;
+ UINT32 flags;
+ GUID sessionKey;
+ } FWPM_PROVIDER_CONTEXT_SUBSCRIPTION0;
+
+
+typedef struct FWPM_SUBLAYER0_
+ {
+ GUID subLayerKey;
+ FWPM_DISPLAY_DATA0 displayData;
+ UINT32 flags;
+ GUID *providerKey;
+ FWP_BYTE_BLOB providerData;
+ UINT16 weight;
+ } FWPM_SUBLAYER0;
+
+typedef struct FWPM_SUBLAYER_ENUM_TEMPLATE0_
+ {
+ GUID *providerKey;
+ } FWPM_SUBLAYER_ENUM_TEMPLATE0;
+
+typedef struct FWPM_SUBLAYER_CHANGE0_
+ {
+ FWPM_CHANGE_TYPE changeType;
+ GUID subLayerKey;
+ } FWPM_SUBLAYER_CHANGE0;
+
+typedef struct FWPM_SUBLAYER_SUBSCRIPTION0_
+ {
+ FWPM_SUBLAYER_ENUM_TEMPLATE0 *enumTemplate;
+ UINT32 flags;
+ GUID sessionKey;
+ } FWPM_SUBLAYER_SUBSCRIPTION0;
+
+
+
+
+
+typedef
+enum FWPM_FIELD_TYPE_
+ {
+ FWPM_FIELD_RAW_DATA = 0,
+ FWPM_FIELD_IP_ADDRESS = ( FWPM_FIELD_RAW_DATA + 1 ) ,
+ FWPM_FIELD_FLAGS = ( FWPM_FIELD_IP_ADDRESS + 1 ) ,
+ FWPM_FIELD_TYPE_MAX = ( FWPM_FIELD_FLAGS + 1 )
+ } FWPM_FIELD_TYPE;
+
+typedef struct FWPM_FIELD0_
+ {
+ GUID *fieldKey;
+ FWPM_FIELD_TYPE type;
+ FWP_DATA_TYPE dataType;
+ } FWPM_FIELD0;
+
+typedef struct FWPM_LAYER0_
+ {
+ GUID layerKey;
+ FWPM_DISPLAY_DATA0 displayData;
+ UINT32 flags;
+ UINT32 numFields;
+ FWPM_FIELD0 *field;
+ GUID defaultSubLayerKey;
+ UINT16 layerId;
+ } FWPM_LAYER0;
+
+typedef struct FWPM_LAYER_ENUM_TEMPLATE0_
+ {
+ UINT64 reserved;
+ } FWPM_LAYER_ENUM_TEMPLATE0;
+
+
+
+
+typedef struct FWPM_CALLOUT0_
+ {
+ GUID calloutKey;
+ FWPM_DISPLAY_DATA0 displayData;
+ UINT32 flags;
+ GUID *providerKey;
+ FWP_BYTE_BLOB providerData;
+ GUID applicableLayer;
+ UINT32 calloutId;
+ } FWPM_CALLOUT0;
+
+typedef struct FWPM_CALLOUT_ENUM_TEMPLATE0_
+ {
+ GUID *providerKey;
+ GUID layerKey;
+ } FWPM_CALLOUT_ENUM_TEMPLATE0;
+
+typedef struct FWPM_CALLOUT_CHANGE0_
+ {
+ FWPM_CHANGE_TYPE changeType;
+ GUID calloutKey;
+ UINT32 calloutId;
+ } FWPM_CALLOUT_CHANGE0;
+
+typedef struct FWPM_CALLOUT_SUBSCRIPTION0_
+ {
+ FWPM_CALLOUT_ENUM_TEMPLATE0 *enumTemplate;
+ UINT32 flags;
+ GUID sessionKey;
+ } FWPM_CALLOUT_SUBSCRIPTION0;
+
+typedef struct FWPM_ACTION0_
+ {
+ FWP_ACTION_TYPE type;
+ union
+ {
+ GUID filterType;
+ GUID calloutKey;
+ } ;
+ } FWPM_ACTION0;
+
+typedef struct FWPM_FILTER_CONDITION0_
+ {
+ GUID fieldKey;
+ FWP_MATCH_TYPE matchType;
+ FWP_CONDITION_VALUE0 conditionValue;
+ } FWPM_FILTER_CONDITION0;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct FWPM_FILTER0_
+ {
+ GUID filterKey;
+ FWPM_DISPLAY_DATA0 displayData;
+ UINT32 flags;
+ GUID *providerKey;
+ FWP_BYTE_BLOB providerData;
+ GUID layerKey;
+ GUID subLayerKey;
+ FWP_VALUE0 weight;
+ UINT32 numFilterConditions;
+ FWPM_FILTER_CONDITION0 *filterCondition;
+ FWPM_ACTION0 action;
+ union
+ {
+ UINT64 rawContext;
+ GUID providerContextKey;
+ } ;
+ GUID *reserved;
+ UINT64 filterId;
+ FWP_VALUE0 effectiveWeight;
+ } FWPM_FILTER0;
+
+typedef struct FWPM_FILTER_ENUM_TEMPLATE0_
+ {
+ GUID *providerKey;
+ GUID layerKey;
+ FWP_FILTER_ENUM_TYPE enumType;
+ UINT32 flags;
+ FWPM_PROVIDER_CONTEXT_ENUM_TEMPLATE0 *providerContextTemplate;
+ UINT32 numFilterConditions;
+ FWPM_FILTER_CONDITION0 *filterCondition;
+ UINT32 actionMask;
+ GUID *calloutKey;
+ } FWPM_FILTER_ENUM_TEMPLATE0;
+
+typedef struct FWPM_FILTER_CHANGE0_
+ {
+ FWPM_CHANGE_TYPE changeType;
+ GUID filterKey;
+ UINT64 filterId;
+ } FWPM_FILTER_CHANGE0;
+
+typedef struct FWPM_FILTER_SUBSCRIPTION0_
+ {
+ FWPM_FILTER_ENUM_TEMPLATE0 *enumTemplate;
+ UINT32 flags;
+ GUID sessionKey;
+ } FWPM_FILTER_SUBSCRIPTION0;
+
+typedef struct FWPM_LAYER_STATISTICS0_
+ {
+ GUID layerId;
+ UINT32 classifyPermitCount;
+ UINT32 classifyBlockCount;
+ UINT32 classifyVetoCount;
+ UINT32 numCacheEntries;
+ } FWPM_LAYER_STATISTICS0;
+
+typedef struct FWPM_STATISTICS0_
+ {
+ UINT32 numLayerStatistics;
+ FWPM_LAYER_STATISTICS0 *layerStatistics;
+ UINT32 inboundAllowedConnectionsV4;
+ UINT32 inboundBlockedConnectionsV4;
+ UINT32 outboundAllowedConnectionsV4;
+ UINT32 outboundBlockedConnectionsV4;
+ UINT32 inboundAllowedConnectionsV6;
+ UINT32 inboundBlockedConnectionsV6;
+ UINT32 outboundAllowedConnectionsV6;
+ UINT32 outboundBlockedConnectionsV6;
+ UINT32 inboundActiveConnectionsV4;
+ UINT32 outboundActiveConnectionsV4;
+ UINT32 inboundActiveConnectionsV6;
+ UINT32 outboundActiveConnectionsV6;
+ UINT64 reauthDirInbound;
+ UINT64 reauthDirOutbound;
+ UINT64 reauthFamilyV4;
+ UINT64 reauthFamilyV6;
+ UINT64 reauthProtoOther;
+ UINT64 reauthProtoIPv4;
+ UINT64 reauthProtoIPv6;
+ UINT64 reauthProtoICMP;
+ UINT64 reauthProtoICMP6;
+ UINT64 reauthProtoUDP;
+ UINT64 reauthProtoTCP;
+ UINT64 reauthReasonPolicyChange;
+ UINT64 reauthReasonNewArrivalInterface;
+ UINT64 reauthReasonNewNextHopInterface;
+ UINT64 reauthReasonProfileCrossing;
+ UINT64 reauthReasonClassifyCompletion;
+ UINT64 reauthReasonIPSecPropertiesChanged;
+ UINT64 reauthReasonMidStreamInspection;
+ UINT64 reauthReasonSocketPropertyChanged;
+ UINT64 reauthReasonNewInboundMCastBCastPacket;
+ UINT64 reauthReasonEDPPolicyChanged;
+ UINT64 reauthReasonProxyHandleChanged;
+ } FWPM_STATISTICS0;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct FWPM_NET_EVENT_HEADER0_
+ {
+ FILETIME timeStamp;
+ UINT32 flags;
+ FWP_IP_VERSION ipVersion;
+ UINT8 ipProtocol;
+ union
+ {
+ UINT32 localAddrV4;
+ FWP_BYTE_ARRAY16 localAddrV6;
+ } ;
+ union
+ {
+ UINT32 remoteAddrV4;
+ FWP_BYTE_ARRAY16 remoteAddrV6;
+ } ;
+ UINT16 localPort;
+ UINT16 remotePort;
+ UINT32 scopeId;
+ FWP_BYTE_BLOB appId;
+ SID *userId;
+ } FWPM_NET_EVENT_HEADER0;
+
+typedef struct FWPM_NET_EVENT_HEADER1_
+ {
+ FILETIME timeStamp;
+ UINT32 flags;
+ FWP_IP_VERSION ipVersion;
+ UINT8 ipProtocol;
+ union
+ {
+ UINT32 localAddrV4;
+ FWP_BYTE_ARRAY16 localAddrV6;
+
+ } ;
+ union
+ {
+ UINT32 remoteAddrV4;
+ FWP_BYTE_ARRAY16 remoteAddrV6;
+
+ } ;
+ UINT16 localPort;
+ UINT16 remotePort;
+ UINT32 scopeId;
+ FWP_BYTE_BLOB appId;
+ SID *userId;
+ union
+ {
+ struct
+ {
+ FWP_AF reserved1;
+ union
+ {
+ struct
+ {
+ FWP_BYTE_ARRAY6 reserved2;
+ FWP_BYTE_ARRAY6 reserved3;
+ UINT32 reserved4;
+ UINT32 reserved5;
+ UINT16 reserved6;
+ UINT32 reserved7;
+ UINT32 reserved8;
+ UINT16 reserved9;
+ UINT64 reserved10;
+ } ;
+ } ;
+ } ;
+
+ } ;
+ } FWPM_NET_EVENT_HEADER1;
+
+
+typedef struct FWPM_NET_EVENT_HEADER2_
+ {
+ FILETIME timeStamp;
+ UINT32 flags;
+ FWP_IP_VERSION ipVersion;
+ UINT8 ipProtocol;
+ union
+ {
+ UINT32 localAddrV4;
+ FWP_BYTE_ARRAY16 localAddrV6;
+
+ } ;
+ union
+ {
+ UINT32 remoteAddrV4;
+ FWP_BYTE_ARRAY16 remoteAddrV6;
+
+ } ;
+ UINT16 localPort;
+ UINT16 remotePort;
+ UINT32 scopeId;
+ FWP_BYTE_BLOB appId;
+ SID *userId;
+ FWP_AF addressFamily;
+ SID *packageSid;
+ } FWPM_NET_EVENT_HEADER2;
+
+#line 698 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+
+typedef struct FWPM_NET_EVENT_HEADER3_
+ {
+ FILETIME timeStamp;
+ UINT32 flags;
+ FWP_IP_VERSION ipVersion;
+ UINT8 ipProtocol;
+ union
+ {
+ UINT32 localAddrV4;
+ FWP_BYTE_ARRAY16 localAddrV6;
+
+ } ;
+ union
+ {
+ UINT32 remoteAddrV4;
+ FWP_BYTE_ARRAY16 remoteAddrV6;
+
+ } ;
+ UINT16 localPort;
+ UINT16 remotePort;
+ UINT32 scopeId;
+ FWP_BYTE_BLOB appId;
+ SID *userId;
+ FWP_AF addressFamily;
+ SID *packageSid;
+ wchar_t *enterpriseId;
+ UINT64 policyFlags;
+ FWP_BYTE_BLOB effectiveName;
+ } FWPM_NET_EVENT_HEADER3;
+
+#line 730 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+typedef
+enum FWPM_NET_EVENT_TYPE_
+ {
+ FWPM_NET_EVENT_TYPE_IKEEXT_MM_FAILURE = 0,
+ FWPM_NET_EVENT_TYPE_IKEEXT_QM_FAILURE = ( FWPM_NET_EVENT_TYPE_IKEEXT_MM_FAILURE + 1 ) ,
+ FWPM_NET_EVENT_TYPE_IKEEXT_EM_FAILURE = ( FWPM_NET_EVENT_TYPE_IKEEXT_QM_FAILURE + 1 ) ,
+ FWPM_NET_EVENT_TYPE_CLASSIFY_DROP = ( FWPM_NET_EVENT_TYPE_IKEEXT_EM_FAILURE + 1 ) ,
+ FWPM_NET_EVENT_TYPE_IPSEC_KERNEL_DROP = ( FWPM_NET_EVENT_TYPE_CLASSIFY_DROP + 1 ) ,
+ FWPM_NET_EVENT_TYPE_IPSEC_DOSP_DROP = ( FWPM_NET_EVENT_TYPE_IPSEC_KERNEL_DROP + 1 ) ,
+ FWPM_NET_EVENT_TYPE_CLASSIFY_ALLOW = ( FWPM_NET_EVENT_TYPE_IPSEC_DOSP_DROP + 1 ) ,
+ FWPM_NET_EVENT_TYPE_CAPABILITY_DROP = ( FWPM_NET_EVENT_TYPE_CLASSIFY_ALLOW + 1 ) ,
+ FWPM_NET_EVENT_TYPE_CAPABILITY_ALLOW = ( FWPM_NET_EVENT_TYPE_CAPABILITY_DROP + 1 ) ,
+ FWPM_NET_EVENT_TYPE_CLASSIFY_DROP_MAC = ( FWPM_NET_EVENT_TYPE_CAPABILITY_ALLOW + 1 ) ,
+ FWPM_NET_EVENT_TYPE_LPM_PACKET_ARRIVAL = ( FWPM_NET_EVENT_TYPE_CLASSIFY_DROP_MAC + 1 ) ,
+ FWPM_NET_EVENT_TYPE_MAX = ( FWPM_NET_EVENT_TYPE_LPM_PACKET_ARRIVAL + 1 )
+ } FWPM_NET_EVENT_TYPE;
+
+
+
+
+typedef struct FWPM_NET_EVENT_IKEEXT_MM_FAILURE0_
+ {
+ UINT32 failureErrorCode;
+ IPSEC_FAILURE_POINT failurePoint;
+ UINT32 flags;
+ IKEEXT_KEY_MODULE_TYPE keyingModuleType;
+ IKEEXT_MM_SA_STATE mmState;
+ IKEEXT_SA_ROLE saRole;
+ IKEEXT_AUTHENTICATION_METHOD_TYPE mmAuthMethod;
+ UINT8 endCertHash[ 20 ];
+ UINT64 mmId;
+ UINT64 mmFilterId;
+ } FWPM_NET_EVENT_IKEEXT_MM_FAILURE0;
+
+
+typedef struct FWPM_NET_EVENT_IKEEXT_MM_FAILURE1_
+ {
+ UINT32 failureErrorCode;
+ IPSEC_FAILURE_POINT failurePoint;
+ UINT32 flags;
+ IKEEXT_KEY_MODULE_TYPE keyingModuleType;
+ IKEEXT_MM_SA_STATE mmState;
+ IKEEXT_SA_ROLE saRole;
+ IKEEXT_AUTHENTICATION_METHOD_TYPE mmAuthMethod;
+ UINT8 endCertHash[ 20 ];
+ UINT64 mmId;
+ UINT64 mmFilterId;
+ wchar_t *localPrincipalNameForAuth;
+ wchar_t *remotePrincipalNameForAuth;
+ UINT32 numLocalPrincipalGroupSids;
+ LPWSTR *localPrincipalGroupSids;
+ UINT32 numRemotePrincipalGroupSids;
+ LPWSTR *remotePrincipalGroupSids;
+ } FWPM_NET_EVENT_IKEEXT_MM_FAILURE1;
+
+#line 786 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+
+typedef struct FWPM_NET_EVENT_IKEEXT_MM_FAILURE2_
+ {
+ UINT32 failureErrorCode;
+ IPSEC_FAILURE_POINT failurePoint;
+ UINT32 flags;
+ IKEEXT_KEY_MODULE_TYPE keyingModuleType;
+ IKEEXT_MM_SA_STATE mmState;
+ IKEEXT_SA_ROLE saRole;
+ IKEEXT_AUTHENTICATION_METHOD_TYPE mmAuthMethod;
+ UINT8 endCertHash[ 20 ];
+ UINT64 mmId;
+ UINT64 mmFilterId;
+ wchar_t *localPrincipalNameForAuth;
+ wchar_t *remotePrincipalNameForAuth;
+ UINT32 numLocalPrincipalGroupSids;
+ LPWSTR *localPrincipalGroupSids;
+ UINT32 numRemotePrincipalGroupSids;
+ LPWSTR *remotePrincipalGroupSids;
+ GUID *providerContextKey;
+ } FWPM_NET_EVENT_IKEEXT_MM_FAILURE2;
+
+#line 809 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+typedef struct FWPM_NET_EVENT_IKEEXT_QM_FAILURE0_
+ {
+ UINT32 failureErrorCode;
+ IPSEC_FAILURE_POINT failurePoint;
+ IKEEXT_KEY_MODULE_TYPE keyingModuleType;
+ IKEEXT_QM_SA_STATE qmState;
+ IKEEXT_SA_ROLE saRole;
+ IPSEC_TRAFFIC_TYPE saTrafficType;
+ union
+ {
+
+ FWP_CONDITION_VALUE0 localSubNet;
+ } ;
+ union
+ {
+
+ FWP_CONDITION_VALUE0 remoteSubNet;
+ } ;
+ UINT64 qmFilterId;
+ } FWPM_NET_EVENT_IKEEXT_QM_FAILURE0;
+
+
+typedef struct FWPM_NET_EVENT_IKEEXT_QM_FAILURE1_
+ {
+ UINT32 failureErrorCode;
+ IPSEC_FAILURE_POINT failurePoint;
+ IKEEXT_KEY_MODULE_TYPE keyingModuleType;
+ IKEEXT_QM_SA_STATE qmState;
+ IKEEXT_SA_ROLE saRole;
+ IPSEC_TRAFFIC_TYPE saTrafficType;
+ union
+ {
+
+ FWP_CONDITION_VALUE0 localSubNet;
+ } ;
+ union
+ {
+
+ FWP_CONDITION_VALUE0 remoteSubNet;
+ } ;
+ UINT64 qmFilterId;
+ UINT64 mmSaLuid;
+ GUID mmProviderContextKey;
+ } FWPM_NET_EVENT_IKEEXT_QM_FAILURE1;
+
+#line 855 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+
+
+typedef struct FWPM_NET_EVENT_IKEEXT_EM_FAILURE0_
+ {
+ UINT32 failureErrorCode;
+ IPSEC_FAILURE_POINT failurePoint;
+ UINT32 flags;
+ IKEEXT_EM_SA_STATE emState;
+ IKEEXT_SA_ROLE saRole;
+ IKEEXT_AUTHENTICATION_METHOD_TYPE emAuthMethod;
+ UINT8 endCertHash[ 20 ];
+ UINT64 mmId;
+ UINT64 qmFilterId;
+ } FWPM_NET_EVENT_IKEEXT_EM_FAILURE0;
+
+
+typedef struct FWPM_NET_EVENT_IKEEXT_EM_FAILURE1_
+ {
+ UINT32 failureErrorCode;
+ IPSEC_FAILURE_POINT failurePoint;
+ UINT32 flags;
+ IKEEXT_EM_SA_STATE emState;
+ IKEEXT_SA_ROLE saRole;
+ IKEEXT_AUTHENTICATION_METHOD_TYPE emAuthMethod;
+ UINT8 endCertHash[ 20 ];
+ UINT64 mmId;
+ UINT64 qmFilterId;
+ wchar_t *localPrincipalNameForAuth;
+ wchar_t *remotePrincipalNameForAuth;
+ UINT32 numLocalPrincipalGroupSids;
+ LPWSTR *localPrincipalGroupSids;
+ UINT32 numRemotePrincipalGroupSids;
+ LPWSTR *remotePrincipalGroupSids;
+ IPSEC_TRAFFIC_TYPE saTrafficType;
+ } FWPM_NET_EVENT_IKEEXT_EM_FAILURE1;
+
+#line 892 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+typedef struct FWPM_NET_EVENT_CLASSIFY_DROP0_
+ {
+ UINT64 filterId;
+ UINT16 layerId;
+ } FWPM_NET_EVENT_CLASSIFY_DROP0;
+
+typedef struct FWPM_NET_EVENT_CLASSIFY_DROP1_
+ {
+ UINT64 filterId;
+ UINT16 layerId;
+ UINT32 reauthReason;
+ UINT32 originalProfile;
+ UINT32 currentProfile;
+ UINT32 msFwpDirection;
+ BOOL isLoopback;
+ } FWPM_NET_EVENT_CLASSIFY_DROP1;
+
+
+typedef struct FWPM_NET_EVENT_CLASSIFY_DROP2_
+ {
+ UINT64 filterId;
+ UINT16 layerId;
+ UINT32 reauthReason;
+ UINT32 originalProfile;
+ UINT32 currentProfile;
+ UINT32 msFwpDirection;
+ BOOL isLoopback;
+ FWP_BYTE_BLOB vSwitchId;
+ UINT32 vSwitchSourcePort;
+ UINT32 vSwitchDestinationPort;
+ } FWPM_NET_EVENT_CLASSIFY_DROP2;
+
+typedef struct FWPM_NET_EVENT_CLASSIFY_DROP_MAC0_
+ {
+ FWP_BYTE_ARRAY6 localMacAddr;
+ FWP_BYTE_ARRAY6 remoteMacAddr;
+ UINT32 mediaType;
+ UINT32 ifType;
+ UINT16 etherType;
+ UINT32 ndisPortNumber;
+ UINT32 reserved;
+ UINT16 vlanTag;
+ UINT64 ifLuid;
+ UINT64 filterId;
+ UINT16 layerId;
+ UINT32 reauthReason;
+ UINT32 originalProfile;
+ UINT32 currentProfile;
+ UINT32 msFwpDirection;
+ BOOL isLoopback;
+ FWP_BYTE_BLOB vSwitchId;
+ UINT32 vSwitchSourcePort;
+ UINT32 vSwitchDestinationPort;
+ } FWPM_NET_EVENT_CLASSIFY_DROP_MAC0;
+
+#line 948 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+
+typedef struct FWPM_NET_EVENT_CLASSIFY_ALLOW0
+ {
+ UINT64 filterId;
+ UINT16 layerId;
+ UINT32 reauthReason;
+ UINT32 originalProfile;
+ UINT32 currentProfile;
+ UINT32 msFwpDirection;
+ BOOL isLoopback;
+ } FWPM_NET_EVENT_CLASSIFY_ALLOW0;
+
+#line 961 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+typedef struct FWPM_NET_EVENT_IPSEC_KERNEL_DROP0_
+ {
+ INT32 failureStatus;
+ FWP_DIRECTION direction;
+ IPSEC_SA_SPI spi;
+ UINT64 filterId;
+ UINT16 layerId;
+ } FWPM_NET_EVENT_IPSEC_KERNEL_DROP0;
+
+typedef struct FWPM_NET_EVENT_IPSEC_DOSP_DROP0_
+ {
+ FWP_IP_VERSION ipVersion;
+ union
+ {
+ UINT32 publicHostV4Addr;
+ UINT8 publicHostV6Addr[ 16 ];
+ } ;
+ union
+ {
+ UINT32 internalHostV4Addr;
+ UINT8 internalHostV6Addr[ 16 ];
+ } ;
+ INT32 failureStatus;
+ FWP_DIRECTION direction;
+ } FWPM_NET_EVENT_IPSEC_DOSP_DROP0;
+
+
+typedef
+enum FWPM_APPC_NETWORK_CAPABILITY_TYPE_
+ {
+ FWPM_APPC_NETWORK_CAPABILITY_INTERNET_CLIENT = 0,
+ FWPM_APPC_NETWORK_CAPABILITY_INTERNET_CLIENT_SERVER = ( FWPM_APPC_NETWORK_CAPABILITY_INTERNET_CLIENT + 1 ) ,
+ FWPM_APPC_NETWORK_CAPABILITY_INTERNET_PRIVATE_NETWORK = ( FWPM_APPC_NETWORK_CAPABILITY_INTERNET_CLIENT_SERVER + 1 )
+ } FWPM_APPC_NETWORK_CAPABILITY_TYPE;
+
+typedef struct FWPM_NET_EVENT_CAPABILITY_DROP0_
+ {
+ FWPM_APPC_NETWORK_CAPABILITY_TYPE networkCapabilityId;
+ UINT64 filterId;
+ BOOL isLoopback;
+ } FWPM_NET_EVENT_CAPABILITY_DROP0;
+
+typedef struct FWPM_NET_EVENT_CAPABILITY_ALLOW0_
+ {
+ FWPM_APPC_NETWORK_CAPABILITY_TYPE networkCapabilityId;
+ UINT64 filterId;
+ BOOL isLoopback;
+ } FWPM_NET_EVENT_CAPABILITY_ALLOW0;
+
+#line 1011 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+
+typedef struct FWPM_NET_EVENT_LPM_PACKET_ARRIVAL0_
+ {
+ IPSEC_SA_SPI spi;
+ } FWPM_NET_EVENT_LPM_PACKET_ARRIVAL0;
+
+#line 1018 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+typedef struct FWPM_NET_EVENT0_
+ {
+ FWPM_NET_EVENT_HEADER0 header;
+ FWPM_NET_EVENT_TYPE type;
+ union
+ {
+ FWPM_NET_EVENT_IKEEXT_MM_FAILURE0 *ikeMmFailure;
+ FWPM_NET_EVENT_IKEEXT_QM_FAILURE0 *ikeQmFailure;
+ FWPM_NET_EVENT_IKEEXT_EM_FAILURE0 *ikeEmFailure;
+ FWPM_NET_EVENT_CLASSIFY_DROP0 *classifyDrop;
+ FWPM_NET_EVENT_IPSEC_KERNEL_DROP0 *ipsecDrop;
+ FWPM_NET_EVENT_IPSEC_DOSP_DROP0 *idpDrop;
+ } ;
+ } FWPM_NET_EVENT0;
+
+
+typedef struct FWPM_NET_EVENT1_
+ {
+ FWPM_NET_EVENT_HEADER1 header;
+ FWPM_NET_EVENT_TYPE type;
+ union
+ {
+ FWPM_NET_EVENT_IKEEXT_MM_FAILURE1 *ikeMmFailure;
+ FWPM_NET_EVENT_IKEEXT_QM_FAILURE0 *ikeQmFailure;
+ FWPM_NET_EVENT_IKEEXT_EM_FAILURE1 *ikeEmFailure;
+ FWPM_NET_EVENT_CLASSIFY_DROP1 *classifyDrop;
+ FWPM_NET_EVENT_IPSEC_KERNEL_DROP0 *ipsecDrop;
+ FWPM_NET_EVENT_IPSEC_DOSP_DROP0 *idpDrop;
+ } ;
+ } FWPM_NET_EVENT1;
+
+#line 1050 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+
+typedef struct FWPM_NET_EVENT2_
+ {
+ FWPM_NET_EVENT_HEADER2 header;
+ FWPM_NET_EVENT_TYPE type;
+ union
+ {
+ FWPM_NET_EVENT_IKEEXT_MM_FAILURE1 *ikeMmFailure;
+ FWPM_NET_EVENT_IKEEXT_QM_FAILURE0 *ikeQmFailure;
+ FWPM_NET_EVENT_IKEEXT_EM_FAILURE1 *ikeEmFailure;
+ FWPM_NET_EVENT_CLASSIFY_DROP2 *classifyDrop;
+ FWPM_NET_EVENT_IPSEC_KERNEL_DROP0 *ipsecDrop;
+ FWPM_NET_EVENT_IPSEC_DOSP_DROP0 *idpDrop;
+ FWPM_NET_EVENT_CLASSIFY_ALLOW0 *classifyAllow;
+ FWPM_NET_EVENT_CAPABILITY_DROP0 *capabilityDrop;
+ FWPM_NET_EVENT_CAPABILITY_ALLOW0 *capabilityAllow;
+ FWPM_NET_EVENT_CLASSIFY_DROP_MAC0 *classifyDropMac;
+ } ;
+ } FWPM_NET_EVENT2;
+
+#line 1071 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+
+typedef struct FWPM_NET_EVENT3_
+ {
+ FWPM_NET_EVENT_HEADER3 header;
+ FWPM_NET_EVENT_TYPE type;
+ union
+ {
+ FWPM_NET_EVENT_IKEEXT_MM_FAILURE1 *ikeMmFailure;
+ FWPM_NET_EVENT_IKEEXT_QM_FAILURE0 *ikeQmFailure;
+ FWPM_NET_EVENT_IKEEXT_EM_FAILURE1 *ikeEmFailure;
+ FWPM_NET_EVENT_CLASSIFY_DROP2 *classifyDrop;
+ FWPM_NET_EVENT_IPSEC_KERNEL_DROP0 *ipsecDrop;
+ FWPM_NET_EVENT_IPSEC_DOSP_DROP0 *idpDrop;
+ FWPM_NET_EVENT_CLASSIFY_ALLOW0 *classifyAllow;
+ FWPM_NET_EVENT_CAPABILITY_DROP0 *capabilityDrop;
+ FWPM_NET_EVENT_CAPABILITY_ALLOW0 *capabilityAllow;
+ FWPM_NET_EVENT_CLASSIFY_DROP_MAC0 *classifyDropMac;
+ } ;
+ } FWPM_NET_EVENT3;
+
+#line 1092 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+
+typedef struct FWPM_NET_EVENT4_
+ {
+ FWPM_NET_EVENT_HEADER3 header;
+ FWPM_NET_EVENT_TYPE type;
+ union
+ {
+ FWPM_NET_EVENT_IKEEXT_MM_FAILURE2 *ikeMmFailure;
+ FWPM_NET_EVENT_IKEEXT_QM_FAILURE1 *ikeQmFailure;
+ FWPM_NET_EVENT_IKEEXT_EM_FAILURE1 *ikeEmFailure;
+ FWPM_NET_EVENT_CLASSIFY_DROP2 *classifyDrop;
+ FWPM_NET_EVENT_IPSEC_KERNEL_DROP0 *ipsecDrop;
+ FWPM_NET_EVENT_IPSEC_DOSP_DROP0 *idpDrop;
+ FWPM_NET_EVENT_CLASSIFY_ALLOW0 *classifyAllow;
+ FWPM_NET_EVENT_CAPABILITY_DROP0 *capabilityDrop;
+ FWPM_NET_EVENT_CAPABILITY_ALLOW0 *capabilityAllow;
+ FWPM_NET_EVENT_CLASSIFY_DROP_MAC0 *classifyDropMac;
+ } ;
+ } FWPM_NET_EVENT4;
+
+#line 1113 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+
+typedef struct FWPM_NET_EVENT5_
+ {
+ FWPM_NET_EVENT_HEADER3 header;
+ FWPM_NET_EVENT_TYPE type;
+ union
+ {
+ FWPM_NET_EVENT_IKEEXT_MM_FAILURE2 *ikeMmFailure;
+ FWPM_NET_EVENT_IKEEXT_QM_FAILURE1 *ikeQmFailure;
+ FWPM_NET_EVENT_IKEEXT_EM_FAILURE1 *ikeEmFailure;
+ FWPM_NET_EVENT_CLASSIFY_DROP2 *classifyDrop;
+ FWPM_NET_EVENT_IPSEC_KERNEL_DROP0 *ipsecDrop;
+ FWPM_NET_EVENT_IPSEC_DOSP_DROP0 *idpDrop;
+ FWPM_NET_EVENT_CLASSIFY_ALLOW0 *classifyAllow;
+ FWPM_NET_EVENT_CAPABILITY_DROP0 *capabilityDrop;
+ FWPM_NET_EVENT_CAPABILITY_ALLOW0 *capabilityAllow;
+ FWPM_NET_EVENT_CLASSIFY_DROP_MAC0 *classifyDropMac;
+ FWPM_NET_EVENT_LPM_PACKET_ARRIVAL0 *lpmPacketArrival;
+ } ;
+ } FWPM_NET_EVENT5;
+
+#line 1135 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+typedef struct FWPM_NET_EVENT_ENUM_TEMPLATE0_
+ {
+ FILETIME startTime;
+ FILETIME endTime;
+ UINT32 numFilterConditions;
+ FWPM_FILTER_CONDITION0 *filterCondition;
+ } FWPM_NET_EVENT_ENUM_TEMPLATE0;
+
+typedef struct FWPM_NET_EVENT_SUBSCRIPTION0_
+ {
+ FWPM_NET_EVENT_ENUM_TEMPLATE0 *enumTemplate;
+ UINT32 flags;
+ GUID sessionKey;
+ } FWPM_NET_EVENT_SUBSCRIPTION0;
+
+
+typedef
+enum FWPM_SYSTEM_PORT_TYPE_
+ {
+ FWPM_SYSTEM_PORT_RPC_EPMAP = 0,
+ FWPM_SYSTEM_PORT_TEREDO = ( FWPM_SYSTEM_PORT_RPC_EPMAP + 1 ) ,
+ FWPM_SYSTEM_PORT_IPHTTPS_IN = ( FWPM_SYSTEM_PORT_TEREDO + 1 ) ,
+ FWPM_SYSTEM_PORT_IPHTTPS_OUT = ( FWPM_SYSTEM_PORT_IPHTTPS_IN + 1 ) ,
+ FWPM_SYSTEM_PORT_TYPE_MAX = ( FWPM_SYSTEM_PORT_IPHTTPS_OUT + 1 )
+ } FWPM_SYSTEM_PORT_TYPE;
+
+typedef struct FWPM_SYSTEM_PORTS_BY_TYPE0_
+ {
+ FWPM_SYSTEM_PORT_TYPE type;
+ UINT32 numPorts;
+ UINT16 *ports;
+ } FWPM_SYSTEM_PORTS_BY_TYPE0;
+
+typedef struct FWPM_SYSTEM_PORTS0_
+ {
+ UINT32 numTypes;
+ FWPM_SYSTEM_PORTS_BY_TYPE0 *types;
+ } FWPM_SYSTEM_PORTS0;
+
+#line 1175 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+
+typedef struct FWPM_CONNECTION0_
+ {
+ UINT64 connectionId;
+ FWP_IP_VERSION ipVersion;
+ union
+ {
+ UINT32 localV4Address;
+ UINT8 localV6Address[ 16 ];
+ } ;
+ union
+ {
+ UINT32 remoteV4Address;
+ UINT8 remoteV6Address[ 16 ];
+ } ;
+ GUID *providerKey;
+ IPSEC_TRAFFIC_TYPE ipsecTrafficModeType;
+ IKEEXT_KEY_MODULE_TYPE keyModuleType;
+ IKEEXT_PROPOSAL0 mmCrypto;
+ IKEEXT_CREDENTIAL2 mmPeer;
+ IKEEXT_CREDENTIAL2 emPeer;
+ UINT64 bytesTransferredIn;
+ UINT64 bytesTransferredOut;
+ UINT64 bytesTransferredTotal;
+ FILETIME startSysTime;
+ } FWPM_CONNECTION0;
+
+
+typedef struct FWPM_CONNECTION_ENUM_TEMPLATE0_
+ {
+ UINT64 connectionId;
+ UINT32 flags;
+ } FWPM_CONNECTION_ENUM_TEMPLATE0;
+
+typedef struct FWPM_CONNECTION_SUBSCRIPTION0_
+ {
+ FWPM_CONNECTION_ENUM_TEMPLATE0 *enumTemplate;
+ UINT32 flags;
+ GUID sessionKey;
+ } FWPM_CONNECTION_SUBSCRIPTION0;
+
+typedef
+enum FWPM_CONNECTION_EVENT_TYPE_
+ {
+ FWPM_CONNECTION_EVENT_ADD = 0,
+ FWPM_CONNECTION_EVENT_DELETE = ( FWPM_CONNECTION_EVENT_ADD + 1 ) ,
+ FWPM_CONNECTION_EVENT_MAX = ( FWPM_CONNECTION_EVENT_DELETE + 1 )
+ } FWPM_CONNECTION_EVENT_TYPE;
+
+typedef
+enum FWPM_VSWITCH_EVENT_TYPE_
+ {
+ FWPM_VSWITCH_EVENT_FILTER_ADD_TO_INCOMPLETE_LAYER = 0,
+ FWPM_VSWITCH_EVENT_FILTER_ENGINE_NOT_IN_REQUIRED_POSITION = ( FWPM_VSWITCH_EVENT_FILTER_ADD_TO_INCOMPLETE_LAYER + 1 ) ,
+ FWPM_VSWITCH_EVENT_ENABLED_FOR_INSPECTION = ( FWPM_VSWITCH_EVENT_FILTER_ENGINE_NOT_IN_REQUIRED_POSITION + 1 ) ,
+ FWPM_VSWITCH_EVENT_DISABLED_FOR_INSPECTION = ( FWPM_VSWITCH_EVENT_ENABLED_FOR_INSPECTION + 1 ) ,
+ FWPM_VSWITCH_EVENT_FILTER_ENGINE_REORDER = ( FWPM_VSWITCH_EVENT_DISABLED_FOR_INSPECTION + 1 ) ,
+ FWPM_VSWITCH_EVENT_MAX = ( FWPM_VSWITCH_EVENT_FILTER_ENGINE_REORDER + 1 )
+ } FWPM_VSWITCH_EVENT_TYPE;
+
+typedef struct FWPM_VSWITCH_EVENT0_
+ {
+ FWPM_VSWITCH_EVENT_TYPE eventType;
+ wchar_t *vSwitchId;
+ union
+ {
+
+ struct
+ {
+ ULONG numvSwitchFilterExtensions;
+ LPWSTR *vSwitchFilterExtensions;
+ } positionInfo;
+ struct
+ {
+ BOOL inRequiredPosition;
+ ULONG numvSwitchFilterExtensions;
+ LPWSTR *vSwitchFilterExtensions;
+ } reorderInfo;
+ } ;
+ } FWPM_VSWITCH_EVENT0;
+
+typedef struct FWPM_VSWITCH_EVENT_SUBSCRIPTION0_
+ {
+ UINT32 flags;
+ GUID sessionKey;
+ } FWPM_VSWITCH_EVENT_SUBSCRIPTION0;
+
+#line 1263 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+
+
+#pragma warning(pop)
+
+
+#line 1269 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+#line 1270 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+#line 1271 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+#pragma endregion
+
+
+extern RPC_IF_HANDLE __MIDL_itf_fwpmtypes_0000_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_fwpmtypes_0000_0000_v0_0_s_ifspec;
+
+
+
+
+
+
+
+
+
+#line 1286 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpmtypes.h"
+
+
+#pragma external_header(pop)
+#line 3098 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 845 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\fwpvi.h"
+
+#pragma external_header(pop)
+#line 3099 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+static const IPSEC_AUTH_TRANSFORM_ID0 IPSEC_AUTH_TRANSFORM_ID_HMAC_MD5_96 =
+{
+ IPSEC_AUTH_MD5,
+ (0)
+};
+
+static const IPSEC_AUTH_TRANSFORM_ID0 IPSEC_AUTH_TRANSFORM_ID_HMAC_SHA_1_96 =
+{
+ IPSEC_AUTH_SHA_1,
+ (1)
+};
+
+
+
+static const IPSEC_AUTH_TRANSFORM_ID0 IPSEC_AUTH_TRANSFORM_ID_HMAC_SHA_256_128 =
+{
+ IPSEC_AUTH_SHA_256,
+ (2)
+};
+
+static const IPSEC_AUTH_TRANSFORM_ID0 IPSEC_AUTH_TRANSFORM_ID_GCM_AES_128 =
+{
+ IPSEC_AUTH_AES_128,
+ (3)
+};
+
+static const IPSEC_AUTH_TRANSFORM_ID0 IPSEC_AUTH_TRANSFORM_ID_GCM_AES_192 =
+{
+ IPSEC_AUTH_AES_192,
+ (4)
+};
+
+static const IPSEC_AUTH_TRANSFORM_ID0 IPSEC_AUTH_TRANSFORM_ID_GCM_AES_256 =
+{
+ IPSEC_AUTH_AES_256,
+ (5)
+};
+
+#line 3172 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+static const IPSEC_CIPHER_TRANSFORM_ID0 IPSEC_CIPHER_TRANSFORM_ID_CBC_DES =
+{
+ IPSEC_CIPHER_TYPE_DES,
+ (1)
+};
+
+static const IPSEC_CIPHER_TRANSFORM_ID0 IPSEC_CIPHER_TRANSFORM_ID_CBC_3DES =
+{
+ IPSEC_CIPHER_TYPE_3DES,
+ (2)
+};
+
+static const IPSEC_CIPHER_TRANSFORM_ID0 IPSEC_CIPHER_TRANSFORM_ID_AES_128 =
+{
+ IPSEC_CIPHER_TYPE_AES_128,
+ (3)
+};
+
+static const IPSEC_CIPHER_TRANSFORM_ID0 IPSEC_CIPHER_TRANSFORM_ID_AES_192 =
+{
+ IPSEC_CIPHER_TYPE_AES_192,
+ (4)
+};
+
+static const IPSEC_CIPHER_TRANSFORM_ID0 IPSEC_CIPHER_TRANSFORM_ID_AES_256 =
+{
+ IPSEC_CIPHER_TYPE_AES_256,
+ (5)
+};
+
+
+
+static const IPSEC_CIPHER_TRANSFORM_ID0 IPSEC_CIPHER_TRANSFORM_ID_GCM_AES_128 =
+{
+ IPSEC_CIPHER_TYPE_AES_128,
+ (6)
+};
+
+static const IPSEC_CIPHER_TRANSFORM_ID0 IPSEC_CIPHER_TRANSFORM_ID_GCM_AES_192 =
+{
+ IPSEC_CIPHER_TYPE_AES_192,
+ (7)
+};
+
+static const IPSEC_CIPHER_TRANSFORM_ID0 IPSEC_CIPHER_TRANSFORM_ID_GCM_AES_256 =
+{
+ IPSEC_CIPHER_TYPE_AES_256,
+ (8)
+};
+
+#line 3228 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3243 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+
+
+#line 3251 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+#line 3252 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 3266 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+void __stdcall FwpmFreeMemory0( void** p);
+
+
+
+
+
+
+
+
+typedef void (__stdcall *FWPM_SERVICE_STATE_CHANGE_CALLBACK0)(
+ void* context,
+ FWPM_SERVICE_STATE newState
+ );
+
+FWPM_SERVICE_STATE __stdcall FwpmBfeStateGet0(void);
+
+
+NTSTATUS
+__stdcall
+FwpmBfeStateSubscribeChanges0(
+ void* deviceObject,
+ FWPM_SERVICE_STATE_CHANGE_CALLBACK0 callback,
+ void* context,
+ HANDLE* changeHandle
+ );
+
+
+NTSTATUS
+__stdcall
+FwpmBfeStateUnsubscribeChanges0(
+ HANDLE changeHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmEngineOpen0(
+ const wchar_t* serverName,
+ UINT32 authnService,
+ SEC_WINNT_AUTH_IDENTITY_W* authIdentity,
+ const FWPM_SESSION0* session,
+ HANDLE* engineHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmEngineClose0( HANDLE engineHandle);
+
+
+
+NTSTATUS
+__stdcall
+FwpmEngineGetOption0(
+ HANDLE engineHandle,
+ FWPM_ENGINE_OPTION option,
+ FWP_VALUE0** value
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmEngineSetOption0(
+ HANDLE engineHandle,
+ FWPM_ENGINE_OPTION option,
+ const FWP_VALUE0* newValue
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmEngineGetSecurityInfo0(
+ HANDLE engineHandle,
+ SECURITY_INFORMATION securityInfo,
+ PSID* sidOwner,
+ PSID* sidGroup,
+ PACL* dacl,
+ PACL* sacl,
+ PSECURITY_DESCRIPTOR* securityDescriptor
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmEngineSetSecurityInfo0(
+ HANDLE engineHandle,
+ SECURITY_INFORMATION securityInfo,
+ const SID* sidOwner,
+ const SID* sidGroup,
+ const ACL* dacl,
+ const ACL* sacl
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmSessionCreateEnumHandle0(
+ HANDLE engineHandle,
+ const FWPM_SESSION_ENUM_TEMPLATE0* enumTemplate,
+ HANDLE* enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmSessionEnum0(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+ FWPM_SESSION0*** entries,
+ UINT32* numEntriesReturned
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmSessionDestroyEnumHandle0(
+ HANDLE engineHandle,
+ HANDLE enumHandle
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmTransactionBegin0(
+ HANDLE engineHandle,
+ UINT32 flags
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmTransactionCommit0( HANDLE engineHandle);
+
+
+
+NTSTATUS
+__stdcall
+FwpmTransactionAbort0( HANDLE engineHandle);
+
+
+
+
+
+
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderAdd0(
+ HANDLE engineHandle,
+ const FWPM_PROVIDER0* provider,
+ PSECURITY_DESCRIPTOR sd
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderDeleteByKey0(
+ HANDLE engineHandle,
+ const GUID* key
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderGetByKey0(
+ HANDLE engineHandle,
+ const GUID* key,
+ FWPM_PROVIDER0** provider
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderCreateEnumHandle0(
+ HANDLE engineHandle,
+ const FWPM_PROVIDER_ENUM_TEMPLATE0* enumTemplate,
+ HANDLE* enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderEnum0(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+ FWPM_PROVIDER0*** entries,
+ UINT32* numEntriesReturned
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderDestroyEnumHandle0(
+ HANDLE engineHandle,
+ HANDLE enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderGetSecurityInfoByKey0(
+ HANDLE engineHandle,
+ const GUID* key,
+ SECURITY_INFORMATION securityInfo,
+ PSID* sidOwner,
+ PSID* sidGroup,
+ PACL* dacl,
+ PACL* sacl,
+ PSECURITY_DESCRIPTOR* securityDescriptor
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderSetSecurityInfoByKey0(
+ HANDLE engineHandle,
+ const GUID* key,
+ SECURITY_INFORMATION securityInfo,
+ const SID* sidOwner,
+ const SID* sidGroup,
+ const ACL* dacl,
+ const ACL* sacl
+ );
+
+
+
+
+
+
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderContextAdd0(
+ HANDLE engineHandle,
+ const FWPM_PROVIDER_CONTEXT0* providerContext,
+ PSECURITY_DESCRIPTOR sd,
+ UINT64* id
+ );
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderContextAdd1(
+ HANDLE engineHandle,
+ const FWPM_PROVIDER_CONTEXT1* providerContext,
+ PSECURITY_DESCRIPTOR sd,
+ UINT64* id
+ );
+#line 3622 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderContextAdd2(
+ HANDLE engineHandle,
+ const FWPM_PROVIDER_CONTEXT2* providerContext,
+ PSECURITY_DESCRIPTOR sd,
+ UINT64* id
+ );
+#line 3635 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderContextAdd3(
+ HANDLE engineHandle,
+ const FWPM_PROVIDER_CONTEXT3* providerContext,
+ PSECURITY_DESCRIPTOR sd,
+ UINT64* id
+ );
+#line 3648 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderContextDeleteById0(
+ HANDLE engineHandle,
+ UINT64 id
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderContextDeleteByKey0(
+ HANDLE engineHandle,
+ const GUID* key
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderContextGetById0(
+ HANDLE engineHandle,
+ UINT64 id,
+ FWPM_PROVIDER_CONTEXT0** providerContext
+ );
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderContextGetById1(
+ HANDLE engineHandle,
+ UINT64 id,
+ FWPM_PROVIDER_CONTEXT1** providerContext
+ );
+#line 3689 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderContextGetById2(
+ HANDLE engineHandle,
+ UINT64 id,
+ FWPM_PROVIDER_CONTEXT2** providerContext
+ );
+#line 3701 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderContextGetById3(
+ HANDLE engineHandle,
+ UINT64 id,
+ FWPM_PROVIDER_CONTEXT3** providerContext
+ );
+#line 3713 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderContextGetByKey0(
+ HANDLE engineHandle,
+ const GUID* key,
+ FWPM_PROVIDER_CONTEXT0** providerContext
+ );
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderContextGetByKey1(
+ HANDLE engineHandle,
+ const GUID* key,
+ FWPM_PROVIDER_CONTEXT1** providerContext
+ );
+#line 3736 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderContextGetByKey2(
+ HANDLE engineHandle,
+ const GUID* key,
+ FWPM_PROVIDER_CONTEXT2** providerContext
+ );
+#line 3748 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderContextGetByKey3(
+ HANDLE engineHandle,
+ const GUID* key,
+ FWPM_PROVIDER_CONTEXT3** providerContext
+ );
+#line 3760 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderContextCreateEnumHandle0(
+ HANDLE engineHandle,
+ const FWPM_PROVIDER_CONTEXT_ENUM_TEMPLATE0* enumTemplate,
+ HANDLE* enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderContextEnum0(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+
+ FWPM_PROVIDER_CONTEXT0*** entries,
+ UINT32* numEntriesReturned
+ );
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderContextEnum1(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+
+ FWPM_PROVIDER_CONTEXT1*** entries,
+ UINT32* numEntriesReturned
+ );
+#line 3798 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderContextEnum2(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+
+ FWPM_PROVIDER_CONTEXT2*** entries,
+ UINT32* numEntriesReturned
+ );
+#line 3813 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderContextEnum3(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+
+ FWPM_PROVIDER_CONTEXT3*** entries,
+ UINT32* numEntriesReturned
+ );
+
+#line 3829 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderContextDestroyEnumHandle0(
+ HANDLE engineHandle,
+ HANDLE enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderContextGetSecurityInfoByKey0(
+ HANDLE engineHandle,
+ const GUID* key,
+ SECURITY_INFORMATION securityInfo,
+ PSID* sidOwner,
+ PSID* sidGroup,
+ PACL* dacl,
+ PACL* sacl,
+ PSECURITY_DESCRIPTOR* securityDescriptor
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmProviderContextSetSecurityInfoByKey0(
+ HANDLE engineHandle,
+ const GUID* key,
+ SECURITY_INFORMATION securityInfo,
+ const SID* sidOwner,
+ const SID* sidGroup,
+ const ACL* dacl,
+ const ACL* sacl
+ );
+
+
+
+
+
+
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmSubLayerAdd0(
+ HANDLE engineHandle,
+ const FWPM_SUBLAYER0* subLayer,
+ PSECURITY_DESCRIPTOR sd
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmSubLayerDeleteByKey0(
+ HANDLE engineHandle,
+ const GUID* key
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmSubLayerGetByKey0(
+ HANDLE engineHandle,
+ const GUID* key,
+ FWPM_SUBLAYER0** subLayer
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmSubLayerCreateEnumHandle0(
+ HANDLE engineHandle,
+ const FWPM_SUBLAYER_ENUM_TEMPLATE0* enumTemplate,
+ HANDLE* enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmSubLayerEnum0(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+ FWPM_SUBLAYER0*** entries,
+ UINT32* numEntriesReturned
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmSubLayerDestroyEnumHandle0(
+ HANDLE engineHandle,
+ HANDLE enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmSubLayerGetSecurityInfoByKey0(
+ HANDLE engineHandle,
+ const GUID* key,
+ SECURITY_INFORMATION securityInfo,
+ PSID* sidOwner,
+ PSID* sidGroup,
+ PACL* dacl,
+ PACL* sacl,
+ PSECURITY_DESCRIPTOR* securityDescriptor
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmSubLayerSetSecurityInfoByKey0(
+ HANDLE engineHandle,
+ const GUID* key,
+ SECURITY_INFORMATION securityInfo,
+ const SID* sidOwner,
+ const SID* sidGroup,
+ const ACL* dacl,
+ const ACL* sacl
+ );
+
+
+
+
+
+
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmLayerGetById0(
+ HANDLE engineHandle,
+ UINT16 id,
+ FWPM_LAYER0** layer
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmLayerGetByKey0(
+ HANDLE engineHandle,
+ const GUID* key,
+ FWPM_LAYER0** layer
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmLayerCreateEnumHandle0(
+ HANDLE engineHandle,
+ const FWPM_LAYER_ENUM_TEMPLATE0* enumTemplate,
+ HANDLE* enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmLayerEnum0(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+ FWPM_LAYER0*** entries,
+ UINT32* numEntriesReturned
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmLayerDestroyEnumHandle0(
+ HANDLE engineHandle,
+ HANDLE enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmLayerGetSecurityInfoByKey0(
+ HANDLE engineHandle,
+ const GUID* key,
+ SECURITY_INFORMATION securityInfo,
+ PSID* sidOwner,
+ PSID* sidGroup,
+ PACL* dacl,
+ PACL* sacl,
+ PSECURITY_DESCRIPTOR* securityDescriptor
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmLayerSetSecurityInfoByKey0(
+ HANDLE engineHandle,
+ const GUID* key,
+ SECURITY_INFORMATION securityInfo,
+ const SID* sidOwner,
+ const SID* sidGroup,
+ const ACL* dacl,
+ const ACL* sacl
+ );
+
+
+
+
+
+
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmCalloutAdd0(
+ HANDLE engineHandle,
+ const FWPM_CALLOUT0* callout,
+ PSECURITY_DESCRIPTOR sd,
+ UINT32* id
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmCalloutDeleteById0(
+ HANDLE engineHandle,
+ UINT32 id
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmCalloutDeleteByKey0(
+ HANDLE engineHandle,
+ const GUID* key
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmCalloutGetById0(
+ HANDLE engineHandle,
+ UINT32 id,
+ FWPM_CALLOUT0** callout
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmCalloutGetByKey0(
+ HANDLE engineHandle,
+ const GUID* key,
+ FWPM_CALLOUT0** callout
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmCalloutCreateEnumHandle0(
+ HANDLE engineHandle,
+ const FWPM_CALLOUT_ENUM_TEMPLATE0* enumTemplate,
+ HANDLE* enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmCalloutEnum0(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+ FWPM_CALLOUT0*** entries,
+ UINT32* numEntriesReturned
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmCalloutDestroyEnumHandle0(
+ HANDLE engineHandle,
+ HANDLE enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmCalloutGetSecurityInfoByKey0(
+ HANDLE engineHandle,
+ const GUID* key,
+ SECURITY_INFORMATION securityInfo,
+ PSID* sidOwner,
+ PSID* sidGroup,
+ PACL* dacl,
+ PACL* sacl,
+ PSECURITY_DESCRIPTOR* securityDescriptor
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmCalloutSetSecurityInfoByKey0(
+ HANDLE engineHandle,
+ const GUID* key,
+ SECURITY_INFORMATION securityInfo,
+ const SID* sidOwner,
+ const SID* sidGroup,
+ const ACL* dacl,
+ const ACL* sacl
+ );
+
+
+
+
+
+
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmFilterAdd0(
+ HANDLE engineHandle,
+ const FWPM_FILTER0* filter,
+ PSECURITY_DESCRIPTOR sd,
+ UINT64* id
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmFilterDeleteById0(
+ HANDLE engineHandle,
+ UINT64 id
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmFilterDeleteByKey0(
+ HANDLE engineHandle,
+ const GUID* key
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmFilterGetById0(
+ HANDLE engineHandle,
+ UINT64 id,
+ FWPM_FILTER0** filter
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmFilterGetByKey0(
+ HANDLE engineHandle,
+ const GUID* key,
+ FWPM_FILTER0** filter
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmFilterCreateEnumHandle0(
+ HANDLE engineHandle,
+ const FWPM_FILTER_ENUM_TEMPLATE0* enumTemplate,
+ HANDLE* enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmFilterEnum0(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+ FWPM_FILTER0*** entries,
+ UINT32* numEntriesReturned
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmFilterDestroyEnumHandle0(
+ HANDLE engineHandle,
+ HANDLE enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmFilterGetSecurityInfoByKey0(
+ HANDLE engineHandle,
+ const GUID* key,
+ SECURITY_INFORMATION securityInfo,
+ PSID* sidOwner,
+ PSID* sidGroup,
+ PACL* dacl,
+ PACL* sacl,
+ PSECURITY_DESCRIPTOR* securityDescriptor
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmFilterSetSecurityInfoByKey0(
+ HANDLE engineHandle,
+ const GUID* key,
+ SECURITY_INFORMATION securityInfo,
+ const SID* sidOwner,
+ const SID* sidGroup,
+ const ACL* dacl,
+ const ACL* sacl
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+#line 4295 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+#line 4300 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+NTSTATUS
+__stdcall
+FwpmIPsecTunnelAdd0(
+ HANDLE engineHandle,
+ UINT32 flags,
+ const FWPM_PROVIDER_CONTEXT0* mainModePolicy,
+ const FWPM_PROVIDER_CONTEXT0* tunnelPolicy,
+ UINT32 numFilterConditions,
+
+ const FWPM_FILTER_CONDITION0* filterConditions,
+ PSECURITY_DESCRIPTOR sd
+ );
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmIPsecTunnelAdd1(
+ HANDLE engineHandle,
+ UINT32 flags,
+ const FWPM_PROVIDER_CONTEXT1* mainModePolicy,
+ const FWPM_PROVIDER_CONTEXT1* tunnelPolicy,
+ UINT32 numFilterConditions,
+
+ const FWPM_FILTER_CONDITION0* filterConditions,
+ const GUID* keyModKey,
+ PSECURITY_DESCRIPTOR sd
+ );
+#line 4333 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmIPsecTunnelAdd2(
+ HANDLE engineHandle,
+ UINT32 flags,
+ const FWPM_PROVIDER_CONTEXT2* mainModePolicy,
+ const FWPM_PROVIDER_CONTEXT2* tunnelPolicy,
+ UINT32 numFilterConditions,
+
+ const FWPM_FILTER_CONDITION0* filterConditions,
+ const GUID* keyModKey,
+ PSECURITY_DESCRIPTOR sd
+ );
+#line 4351 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmIPsecTunnelAdd3(
+ HANDLE engineHandle,
+ UINT32 flags,
+ const FWPM_PROVIDER_CONTEXT3* mainModePolicy,
+ const FWPM_PROVIDER_CONTEXT3* tunnelPolicy,
+ UINT32 numFilterConditions,
+
+ const FWPM_FILTER_CONDITION0* filterConditions,
+ const GUID* keyModKey,
+ PSECURITY_DESCRIPTOR sd
+ );
+
+#line 4370 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+NTSTATUS
+__stdcall
+FwpmIPsecTunnelDeleteByKey0(
+ HANDLE engineHandle,
+ const GUID* key
+ );
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS
+__stdcall
+IPsecGetStatistics0(
+ HANDLE engineHandle,
+ IPSEC_STATISTICS0* ipsecStatistics
+ );
+
+
+
+
+NTSTATUS
+__stdcall
+IPsecGetStatistics1(
+ HANDLE engineHandle,
+ IPSEC_STATISTICS1* ipsecStatistics
+ );
+#line 4407 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaContextCreate0(
+ HANDLE engineHandle,
+ const IPSEC_TRAFFIC0* outboundTraffic,
+ UINT64* inboundFilterId,
+ UINT64* id
+ );
+
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaContextCreate1(
+ HANDLE engineHandle,
+ const IPSEC_TRAFFIC1* outboundTraffic,
+ const IPSEC_VIRTUAL_IF_TUNNEL_INFO0* virtualIfTunnelInfo,
+ UINT64* inboundFilterId,
+ UINT64* id
+ );
+#line 4432 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaContextDeleteById0(
+ HANDLE engineHandle,
+ UINT64 id
+ );
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaContextGetById0(
+ HANDLE engineHandle,
+ UINT64 id,
+ IPSEC_SA_CONTEXT0** saContext
+ );
+
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaContextGetById1(
+ HANDLE engineHandle,
+ UINT64 id,
+ IPSEC_SA_CONTEXT1** saContext
+ );
+#line 4463 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaContextGetSpi0(
+ HANDLE engineHandle,
+ UINT64 id,
+ const IPSEC_GETSPI0* getSpi,
+ IPSEC_SA_SPI* inboundSpi
+ );
+
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaContextGetSpi1(
+ HANDLE engineHandle,
+ UINT64 id,
+ const IPSEC_GETSPI1* getSpi,
+ IPSEC_SA_SPI* inboundSpi
+ );
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaContextSetSpi0(
+ HANDLE engineHandle,
+ UINT64 id,
+ const IPSEC_GETSPI1* getSpi,
+ IPSEC_SA_SPI inboundSpi
+ );
+#line 4498 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaContextAddInbound0(
+ HANDLE engineHandle,
+ UINT64 id,
+ const IPSEC_SA_BUNDLE0* inboundBundle
+ );
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaContextAddOutbound0(
+ HANDLE engineHandle,
+ UINT64 id,
+ const IPSEC_SA_BUNDLE0* outboundBundle
+ );
+
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaContextAddInbound1(
+ HANDLE engineHandle,
+ UINT64 id,
+ const IPSEC_SA_BUNDLE1* inboundBundle
+ );
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaContextAddOutbound1(
+ HANDLE engineHandle,
+ UINT64 id,
+ const IPSEC_SA_BUNDLE1* outboundBundle
+ );
+#line 4540 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaContextExpire0(
+ HANDLE engineHandle,
+ UINT64 id
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaContextUpdate0(
+ HANDLE engineHandle,
+ UINT64 flags,
+ const IPSEC_SA_CONTEXT1* newValues
+ );
+#line 4572 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaContextCreateEnumHandle0(
+ HANDLE engineHandle,
+ const IPSEC_SA_CONTEXT_ENUM_TEMPLATE0* enumTemplate,
+ HANDLE* enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaContextEnum0(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+ IPSEC_SA_CONTEXT0*** entries,
+ UINT32* numEntriesReturned
+ );
+
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaContextEnum1(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+ IPSEC_SA_CONTEXT1*** entries,
+ UINT32* numEntriesReturned
+ );
+#line 4608 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaContextDestroyEnumHandle0(
+ HANDLE engineHandle,
+ HANDLE enumHandle
+ );
+
+
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaCreateEnumHandle0(
+ HANDLE engineHandle,
+ const IPSEC_SA_ENUM_TEMPLATE0* enumTemplate,
+ HANDLE* enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaEnum0(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+ IPSEC_SA_DETAILS0*** entries,
+ UINT32* numEntriesReturned
+ );
+
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaEnum1(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+ IPSEC_SA_DETAILS1*** entries,
+ UINT32* numEntriesReturned
+ );
+#line 4655 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaDestroyEnumHandle0(
+ HANDLE engineHandle,
+ HANDLE enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaDbGetSecurityInfo0(
+ HANDLE engineHandle,
+ SECURITY_INFORMATION securityInfo,
+ PSID* sidOwner,
+ PSID* sidGroup,
+ PACL* dacl,
+ PACL* sacl,
+ PSECURITY_DESCRIPTOR* securityDescriptor
+ );
+
+
+
+NTSTATUS
+__stdcall
+IPsecSaDbSetSecurityInfo0(
+ HANDLE engineHandle,
+ SECURITY_INFORMATION securityInfo,
+ const SID* sidOwner,
+ const SID* sidGroup,
+ const ACL* dacl,
+ const ACL* sacl
+ );
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS
+__stdcall
+IPsecDospGetStatistics0(
+ HANDLE engineHandle,
+ IPSEC_DOSP_STATISTICS0* idpStatistics
+ );
+
+
+
+NTSTATUS
+__stdcall
+IPsecDospStateCreateEnumHandle0(
+ HANDLE engineHandle,
+ const IPSEC_DOSP_STATE_ENUM_TEMPLATE0* enumTemplate,
+ HANDLE* enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+IPsecDospStateEnum0(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+ IPSEC_DOSP_STATE0*** entries,
+ UINT32* numEntries
+ );
+
+
+
+NTSTATUS
+__stdcall
+IPsecDospStateDestroyEnumHandle0(
+ HANDLE engineHandle,
+ HANDLE enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+IPsecDospGetSecurityInfo0(
+ HANDLE engineHandle,
+ SECURITY_INFORMATION securityInfo,
+ PSID* sidOwner,
+ PSID* sidGroup,
+ PACL* dacl,
+ PACL* sacl,
+ PSECURITY_DESCRIPTOR* securityDescriptor
+ );
+
+
+
+NTSTATUS
+__stdcall
+IPsecDospSetSecurityInfo0(
+ HANDLE engineHandle,
+ SECURITY_INFORMATION securityInfo,
+ const SID* sidOwner,
+ const SID* sidGroup,
+ const ACL* dacl,
+ const ACL* sacl
+ );
+
+#line 4768 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+
+
+
+
+
+NTSTATUS
+__stdcall
+IkeextGetStatistics0(
+ HANDLE engineHandle,
+ IKEEXT_STATISTICS0* ikeextStatistics
+ );
+
+
+
+
+NTSTATUS
+__stdcall
+IkeextGetStatistics1(
+ HANDLE engineHandle,
+ IKEEXT_STATISTICS1* ikeextStatistics
+ );
+#line 4795 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+NTSTATUS
+__stdcall
+IkeextSaDeleteById0(
+ HANDLE engineHandle,
+ UINT64 id
+ );
+
+
+
+NTSTATUS
+__stdcall
+IkeextSaGetById0(
+ HANDLE engineHandle,
+ UINT64 id,
+ IKEEXT_SA_DETAILS0** sa
+ );
+
+
+
+
+NTSTATUS
+__stdcall
+IkeextSaGetById1(
+ HANDLE engineHandle,
+ UINT64 id,
+ GUID* saLookupContext,
+ IKEEXT_SA_DETAILS1** sa
+ );
+#line 4827 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+NTSTATUS
+__stdcall
+IkeextSaGetById2(
+ HANDLE engineHandle,
+ UINT64 id,
+ GUID* saLookupContext,
+ IKEEXT_SA_DETAILS2** sa
+ );
+#line 4840 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+NTSTATUS
+__stdcall
+IkeextSaCreateEnumHandle0(
+ HANDLE engineHandle,
+ const IKEEXT_SA_ENUM_TEMPLATE0* enumTemplate,
+ HANDLE* enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+IkeextSaEnum0(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+ IKEEXT_SA_DETAILS0*** entries,
+ UINT32* numEntriesReturned
+ );
+
+
+
+
+NTSTATUS
+__stdcall
+IkeextSaEnum1(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+ IKEEXT_SA_DETAILS1*** entries,
+ UINT32* numEntriesReturned
+ );
+#line 4876 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+NTSTATUS
+__stdcall
+IkeextSaEnum2(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+ IKEEXT_SA_DETAILS2*** entries,
+ UINT32* numEntriesReturned
+ );
+#line 4890 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+NTSTATUS
+__stdcall
+IkeextSaDestroyEnumHandle0(
+ HANDLE engineHandle,
+ HANDLE enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+IkeextSaDbGetSecurityInfo0(
+ HANDLE engineHandle,
+ SECURITY_INFORMATION securityInfo,
+ PSID* sidOwner,
+ PSID* sidGroup,
+ PACL* dacl,
+ PACL* sacl,
+ PSECURITY_DESCRIPTOR* securityDescriptor
+ );
+
+
+
+NTSTATUS
+__stdcall
+IkeextSaDbSetSecurityInfo0(
+ HANDLE engineHandle,
+ SECURITY_INFORMATION securityInfo,
+ const SID* sidOwner,
+ const SID* sidGroup,
+ const ACL* dacl,
+ const ACL* sacl
+ );
+
+
+
+
+
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmNetEventCreateEnumHandle0(
+ HANDLE engineHandle,
+ const FWPM_NET_EVENT_ENUM_TEMPLATE0* enumTemplate,
+ HANDLE* enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmNetEventEnum0(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+ FWPM_NET_EVENT0*** entries,
+ UINT32* numEntriesReturned
+ );
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmNetEventEnum1(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+ FWPM_NET_EVENT1*** entries,
+ UINT32* numEntriesReturned
+ );
+#line 4969 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmNetEventEnum2(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+ FWPM_NET_EVENT2*** entries,
+ UINT32* numEntriesReturned
+ );
+#line 4983 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmNetEventEnum3(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+ FWPM_NET_EVENT3*** entries,
+ UINT32* numEntriesReturned
+ );
+#line 4997 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmNetEventEnum4(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+ FWPM_NET_EVENT4*** entries,
+ UINT32* numEntriesReturned
+ );
+#line 5011 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmNetEventEnum5(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+ FWPM_NET_EVENT5*** entries,
+ UINT32* numEntriesReturned
+ );
+#line 5025 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+NTSTATUS
+__stdcall
+FwpmNetEventDestroyEnumHandle0(
+ HANDLE engineHandle,
+ HANDLE enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmNetEventsGetSecurityInfo0(
+ HANDLE engineHandle,
+ SECURITY_INFORMATION securityInfo,
+ PSID* sidOwner,
+ PSID* sidGroup,
+ PACL* dacl,
+ PACL* sacl,
+ PSECURITY_DESCRIPTOR* securityDescriptor
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmNetEventsSetSecurityInfo0(
+ HANDLE engineHandle,
+ SECURITY_INFORMATION securityInfo,
+ const SID* sidOwner,
+ const SID* sidGroup,
+ const ACL* dacl,
+ const ACL* sacl
+ );
+
+#line 5063 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+#line 5066 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+#line 5069 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+#line 5072 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+#line 5075 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmConnectionGetById0(
+ HANDLE engineHandle,
+ UINT64 id,
+ FWPM_CONNECTION0** connection
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmConnectionEnum0(
+ HANDLE engineHandle,
+ HANDLE enumHandle,
+ UINT32 numEntriesRequested,
+ FWPM_CONNECTION0*** entries,
+ UINT32 *numEntriesReturned
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmConnectionCreateEnumHandle0(
+ HANDLE engineHandle,
+ const FWPM_CONNECTION_ENUM_TEMPLATE0 *enumTemplate,
+ HANDLE *enumHandle
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmConnectionDestroyEnumHandle0(
+ HANDLE engineHandle,
+ HANDLE enumHandle
+ );
+#line 5121 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmConnectionGetSecurityInfo0(
+ HANDLE engineHandle,
+ SECURITY_INFORMATION securityInfo,
+ PSID* sidOwner,
+ PSID* sidGroup,
+ PACL* dacl,
+ PACL* sacl,
+ PSECURITY_DESCRIPTOR* securityDescriptor
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmConnectionSetSecurityInfo0(
+ HANDLE engineHandle,
+ SECURITY_INFORMATION securityInfo,
+ const SID* sidOwner,
+ const SID* sidGroup,
+ const ACL* dacl,
+ const ACL* sacl
+ );
+
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmvSwitchEventsGetSecurityInfo0(
+ HANDLE engineHandle,
+ SECURITY_INFORMATION securityInfo,
+ PSID* sidOwner,
+ PSID* sidGroup,
+ PACL* dacl,
+ PACL* sacl,
+ PSECURITY_DESCRIPTOR* securityDescriptor
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmvSwitchEventsSetSecurityInfo0(
+ HANDLE engineHandle,
+ SECURITY_INFORMATION securityInfo,
+ const SID* sidOwner,
+ const SID* sidGroup,
+ const ACL* dacl,
+ const ACL* sacl
+ );
+#line 5179 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+
+
+
+
+
+
+NTSTATUS
+__stdcall
+FwpmConnectionPolicyAdd0(
+ HANDLE engineHandle,
+ const FWPM_PROVIDER_CONTEXT3* connectionPolicy,
+ FWP_IP_VERSION ipVersion,
+ UINT64 weight,
+ UINT32 numFilterConditions,
+
+ const FWPM_FILTER_CONDITION0* filterConditions,
+ PSECURITY_DESCRIPTOR sd
+ );
+
+
+
+NTSTATUS
+__stdcall
+FwpmConnectionPolicyDeleteByKey0(
+ HANDLE engineHandle,
+ const GUID* key
+ );
+#line 5211 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+
+
+
+#line 5216 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+#line 5217 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+#line 5218 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+
+#line 5220 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\fwpmk.h"
+#pragma endregion
+
+#line 39 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #line 40 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 41 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef void (*WDFFUNC) (void);
+extern const WDFFUNC *WdfFunctions_01033;
+extern WDFFUNC WdfDriverMiniportUnloadOverride;
+
+__pragma(warning(disable: 28110 28111 28161 28162)) typedef int __prefast_analysis_mode_flag2;
+
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdftypes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef UCHAR BYTE;
+#line 59 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdftypes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 81 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdftypes.h"
+
+
+
+
+
+typedef enum _WDF_TRI_STATE {
+ WdfFalse = 0,
+ WdfTrue = 1,
+ WdfUseDefault = 2,
+} WDF_TRI_STATE, *PWDF_TRI_STATE;
+
+
+
+typedef size_t* WDF_STRUCT_INFO;
+
+typedef PVOID WDFCONTEXT;
+
+
+
+#line 101 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdftypes.h"
+
+#line 103 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdftypes.h"
+
+
+
+
+typedef struct WDFDEVICE_INIT *PWDFDEVICE_INIT;
+typedef struct WDFCXDEVICE_INIT *PWDFCXDEVICE_INIT;
+
+typedef struct _WDF_OBJECT_ATTRIBUTES *PWDF_OBJECT_ATTRIBUTES;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef HANDLE WDFOBJECT, *PWDFOBJECT;
+
+
+
+
+struct WDFDRIVER__{int unused;}; typedef struct WDFDRIVER__ *WDFDRIVER;
+struct WDFDEVICE__{int unused;}; typedef struct WDFDEVICE__ *WDFDEVICE;
+
+struct WDFWMIPROVIDER__{int unused;}; typedef struct WDFWMIPROVIDER__ *WDFWMIPROVIDER;
+struct WDFWMIINSTANCE__{int unused;}; typedef struct WDFWMIINSTANCE__ *WDFWMIINSTANCE;
+
+struct WDFQUEUE__{int unused;}; typedef struct WDFQUEUE__ *WDFQUEUE;
+struct WDFREQUEST__{int unused;}; typedef struct WDFREQUEST__ *WDFREQUEST;
+struct WDFFILEOBJECT__{int unused;}; typedef struct WDFFILEOBJECT__ *WDFFILEOBJECT;
+struct WDFDPC__{int unused;}; typedef struct WDFDPC__ *WDFDPC;
+struct WDFTIMER__{int unused;}; typedef struct WDFTIMER__ *WDFTIMER;
+struct WDFWORKITEM__{int unused;}; typedef struct WDFWORKITEM__ *WDFWORKITEM;
+struct WDFINTERRUPT__{int unused;}; typedef struct WDFINTERRUPT__ *WDFINTERRUPT;
+
+
+
+
+struct WDFWAITLOCK__{int unused;}; typedef struct WDFWAITLOCK__ *WDFWAITLOCK;
+struct WDFSPINLOCK__{int unused;}; typedef struct WDFSPINLOCK__ *WDFSPINLOCK;
+
+struct WDFMEMORY__{int unused;}; typedef struct WDFMEMORY__ *WDFMEMORY;
+struct WDFLOOKASIDE__{int unused;}; typedef struct WDFLOOKASIDE__ *WDFLOOKASIDE;
+
+
+
+
+struct WDFIOTARGET__{int unused;}; typedef struct WDFIOTARGET__ *WDFIOTARGET;
+struct WDFUSBDEVICE__{int unused;}; typedef struct WDFUSBDEVICE__ *WDFUSBDEVICE;
+struct WDFUSBINTERFACE__{int unused;}; typedef struct WDFUSBINTERFACE__ *WDFUSBINTERFACE;
+struct WDFUSBPIPE__{int unused;}; typedef struct WDFUSBPIPE__ *WDFUSBPIPE;
+
+
+struct WDFDMAENABLER__{int unused;}; typedef struct WDFDMAENABLER__ *WDFDMAENABLER;
+struct WDFDMATRANSACTION__{int unused;}; typedef struct WDFDMATRANSACTION__ *WDFDMATRANSACTION;
+struct WDFCOMMONBUFFER__{int unused;}; typedef struct WDFCOMMONBUFFER__ *WDFCOMMONBUFFER;
+
+
+
+
+struct WDFKEY__{int unused;}; typedef struct WDFKEY__ *WDFKEY;
+struct WDFSTRING__{int unused;}; typedef struct WDFSTRING__ *WDFSTRING;
+struct WDFCOLLECTION__{int unused;}; typedef struct WDFCOLLECTION__ *WDFCOLLECTION;
+struct WDFCHILDLIST__{int unused;}; typedef struct WDFCHILDLIST__ *WDFCHILDLIST;
+
+struct WDFIORESREQLIST__{int unused;}; typedef struct WDFIORESREQLIST__ *WDFIORESREQLIST;
+struct WDFIORESLIST__{int unused;}; typedef struct WDFIORESLIST__ *WDFIORESLIST;
+struct WDFCMRESLIST__{int unused;}; typedef struct WDFCMRESLIST__ *WDFCMRESLIST;
+
+
+
+
+
+
+struct WDFCOMPANIONTARGET__{int unused;}; typedef struct WDFCOMPANIONTARGET__ *WDFCOMPANIONTARGET;
+
+
+
+#line 190 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdftypes.h"
+
+
+
+
+#line 195 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdftypes.h"
+
+
+#line 70 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfglobals.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _WDF_DRIVER_GLOBALS {
+
+
+ WDFDRIVER Driver;
+
+
+ ULONG DriverFlags;
+
+
+
+ ULONG DriverTag;
+
+ CHAR DriverName[(32)];
+
+
+
+
+ BOOLEAN DisplaceDriverUnload;
+
+} WDF_DRIVER_GLOBALS, *PWDF_DRIVER_GLOBALS;
+
+
+
+
+
+
+
+
+
+
+
+#line 85 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfglobals.h"
+
+#line 71 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdffuncenum.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern PWDF_DRIVER_GLOBALS WdfDriverGlobals;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 51 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdffuncenum.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 69 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdffuncenum.h"
+
+
+
+
+
+
+
+
+
+
+
+
+extern BOOLEAN WdfClientVersionHigherThanFramework;
+
+
+
+
+
+
+
+
+
+extern ULONG WdfFunctionCount;
+
+
+
+
+
+
+
+
+
+extern ULONG WdfStructureCount;
+extern WDF_STRUCT_INFO WdfStructures;
+
+
+
+
+__declspec(selectany)
+ULONG WdfMinimumVersionRequired =
+
+
+#line 112 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdffuncenum.h"
+
+#line 114 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdffuncenum.h"
+ (ULONG)(-1)
+ #line 116 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdffuncenum.h"
+ ;
+
+#line 119 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdffuncenum.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 180 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdffuncenum.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 194 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdffuncenum.h"
+
+typedef enum _WDFFUNCENUM {
+
+ WdfChildListCreateTableIndex = 0,
+ WdfChildListGetDeviceTableIndex = 1,
+ WdfChildListRetrievePdoTableIndex = 2,
+ WdfChildListRetrieveAddressDescriptionTableIndex = 3,
+ WdfChildListBeginScanTableIndex = 4,
+ WdfChildListEndScanTableIndex = 5,
+ WdfChildListBeginIterationTableIndex = 6,
+ WdfChildListRetrieveNextDeviceTableIndex = 7,
+ WdfChildListEndIterationTableIndex = 8,
+ WdfChildListAddOrUpdateChildDescriptionAsPresentTableIndex = 9,
+ WdfChildListUpdateChildDescriptionAsMissingTableIndex = 10,
+ WdfChildListUpdateAllChildDescriptionsAsPresentTableIndex = 11,
+ WdfChildListRequestChildEjectTableIndex = 12,
+ WdfCollectionCreateTableIndex = 13,
+ WdfCollectionGetCountTableIndex = 14,
+ WdfCollectionAddTableIndex = 15,
+ WdfCollectionRemoveTableIndex = 16,
+ WdfCollectionRemoveItemTableIndex = 17,
+ WdfCollectionGetItemTableIndex = 18,
+ WdfCollectionGetFirstItemTableIndex = 19,
+ WdfCollectionGetLastItemTableIndex = 20,
+ WdfCommonBufferCreateTableIndex = 21,
+ WdfCommonBufferGetAlignedVirtualAddressTableIndex = 22,
+ WdfCommonBufferGetAlignedLogicalAddressTableIndex = 23,
+ WdfCommonBufferGetLengthTableIndex = 24,
+ WdfControlDeviceInitAllocateTableIndex = 25,
+ WdfControlDeviceInitSetShutdownNotificationTableIndex = 26,
+ WdfControlFinishInitializingTableIndex = 27,
+ WdfDeviceGetDeviceStateTableIndex = 28,
+ WdfDeviceSetDeviceStateTableIndex = 29,
+ WdfWdmDeviceGetWdfDeviceHandleTableIndex = 30,
+ WdfDeviceWdmGetDeviceObjectTableIndex = 31,
+ WdfDeviceWdmGetAttachedDeviceTableIndex = 32,
+ WdfDeviceWdmGetPhysicalDeviceTableIndex = 33,
+ WdfDeviceWdmDispatchPreprocessedIrpTableIndex = 34,
+ WdfDeviceAddDependentUsageDeviceObjectTableIndex = 35,
+ WdfDeviceAddRemovalRelationsPhysicalDeviceTableIndex = 36,
+ WdfDeviceRemoveRemovalRelationsPhysicalDeviceTableIndex = 37,
+ WdfDeviceClearRemovalRelationsDevicesTableIndex = 38,
+ WdfDeviceGetDriverTableIndex = 39,
+ WdfDeviceRetrieveDeviceNameTableIndex = 40,
+ WdfDeviceAssignMofResourceNameTableIndex = 41,
+ WdfDeviceGetIoTargetTableIndex = 42,
+ WdfDeviceGetDevicePnpStateTableIndex = 43,
+ WdfDeviceGetDevicePowerStateTableIndex = 44,
+ WdfDeviceGetDevicePowerPolicyStateTableIndex = 45,
+ WdfDeviceAssignS0IdleSettingsTableIndex = 46,
+ WdfDeviceAssignSxWakeSettingsTableIndex = 47,
+ WdfDeviceOpenRegistryKeyTableIndex = 48,
+ WdfDeviceSetSpecialFileSupportTableIndex = 49,
+ WdfDeviceSetCharacteristicsTableIndex = 50,
+ WdfDeviceGetCharacteristicsTableIndex = 51,
+ WdfDeviceGetAlignmentRequirementTableIndex = 52,
+ WdfDeviceSetAlignmentRequirementTableIndex = 53,
+ WdfDeviceInitFreeTableIndex = 54,
+ WdfDeviceInitSetPnpPowerEventCallbacksTableIndex = 55,
+ WdfDeviceInitSetPowerPolicyEventCallbacksTableIndex = 56,
+ WdfDeviceInitSetPowerPolicyOwnershipTableIndex = 57,
+ WdfDeviceInitRegisterPnpStateChangeCallbackTableIndex = 58,
+ WdfDeviceInitRegisterPowerStateChangeCallbackTableIndex = 59,
+ WdfDeviceInitRegisterPowerPolicyStateChangeCallbackTableIndex = 60,
+ WdfDeviceInitSetIoTypeTableIndex = 61,
+ WdfDeviceInitSetExclusiveTableIndex = 62,
+ WdfDeviceInitSetPowerNotPageableTableIndex = 63,
+ WdfDeviceInitSetPowerPageableTableIndex = 64,
+ WdfDeviceInitSetPowerInrushTableIndex = 65,
+ WdfDeviceInitSetDeviceTypeTableIndex = 66,
+ WdfDeviceInitAssignNameTableIndex = 67,
+ WdfDeviceInitAssignSDDLStringTableIndex = 68,
+ WdfDeviceInitSetDeviceClassTableIndex = 69,
+ WdfDeviceInitSetCharacteristicsTableIndex = 70,
+ WdfDeviceInitSetFileObjectConfigTableIndex = 71,
+ WdfDeviceInitSetRequestAttributesTableIndex = 72,
+ WdfDeviceInitAssignWdmIrpPreprocessCallbackTableIndex = 73,
+ WdfDeviceInitSetIoInCallerContextCallbackTableIndex = 74,
+ WdfDeviceCreateTableIndex = 75,
+ WdfDeviceSetStaticStopRemoveTableIndex = 76,
+ WdfDeviceCreateDeviceInterfaceTableIndex = 77,
+ WdfDeviceSetDeviceInterfaceStateTableIndex = 78,
+ WdfDeviceRetrieveDeviceInterfaceStringTableIndex = 79,
+ WdfDeviceCreateSymbolicLinkTableIndex = 80,
+ WdfDeviceQueryPropertyTableIndex = 81,
+ WdfDeviceAllocAndQueryPropertyTableIndex = 82,
+ WdfDeviceSetPnpCapabilitiesTableIndex = 83,
+ WdfDeviceSetPowerCapabilitiesTableIndex = 84,
+ WdfDeviceSetBusInformationForChildrenTableIndex = 85,
+ WdfDeviceIndicateWakeStatusTableIndex = 86,
+ WdfDeviceSetFailedTableIndex = 87,
+ WdfDeviceStopIdleNoTrackTableIndex = 88,
+ WdfDeviceResumeIdleNoTrackTableIndex = 89,
+ WdfDeviceGetFileObjectTableIndex = 90,
+ WdfDeviceEnqueueRequestTableIndex = 91,
+ WdfDeviceGetDefaultQueueTableIndex = 92,
+ WdfDeviceConfigureRequestDispatchingTableIndex = 93,
+ WdfDmaEnablerCreateTableIndex = 94,
+ WdfDmaEnablerGetMaximumLengthTableIndex = 95,
+ WdfDmaEnablerGetMaximumScatterGatherElementsTableIndex = 96,
+ WdfDmaEnablerSetMaximumScatterGatherElementsTableIndex = 97,
+ WdfDmaTransactionCreateTableIndex = 98,
+ WdfDmaTransactionInitializeTableIndex = 99,
+ WdfDmaTransactionInitializeUsingRequestTableIndex = 100,
+ WdfDmaTransactionExecuteTableIndex = 101,
+ WdfDmaTransactionReleaseTableIndex = 102,
+ WdfDmaTransactionDmaCompletedTableIndex = 103,
+ WdfDmaTransactionDmaCompletedWithLengthTableIndex = 104,
+ WdfDmaTransactionDmaCompletedFinalTableIndex = 105,
+ WdfDmaTransactionGetBytesTransferredTableIndex = 106,
+ WdfDmaTransactionSetMaximumLengthTableIndex = 107,
+ WdfDmaTransactionGetRequestTableIndex = 108,
+ WdfDmaTransactionGetCurrentDmaTransferLengthTableIndex = 109,
+ WdfDmaTransactionGetDeviceTableIndex = 110,
+ WdfDpcCreateTableIndex = 111,
+ WdfDpcEnqueueTableIndex = 112,
+ WdfDpcCancelTableIndex = 113,
+ WdfDpcGetParentObjectTableIndex = 114,
+ WdfDpcWdmGetDpcTableIndex = 115,
+ WdfDriverCreateTableIndex = 116,
+ WdfDriverGetRegistryPathTableIndex = 117,
+ WdfDriverWdmGetDriverObjectTableIndex = 118,
+ WdfDriverOpenParametersRegistryKeyTableIndex = 119,
+ WdfWdmDriverGetWdfDriverHandleTableIndex = 120,
+ WdfDriverRegisterTraceInfoTableIndex = 121,
+ WdfDriverRetrieveVersionStringTableIndex = 122,
+ WdfDriverIsVersionAvailableTableIndex = 123,
+ WdfFdoInitWdmGetPhysicalDeviceTableIndex = 124,
+ WdfFdoInitOpenRegistryKeyTableIndex = 125,
+ WdfFdoInitQueryPropertyTableIndex = 126,
+ WdfFdoInitAllocAndQueryPropertyTableIndex = 127,
+ WdfFdoInitSetEventCallbacksTableIndex = 128,
+ WdfFdoInitSetFilterTableIndex = 129,
+ WdfFdoInitSetDefaultChildListConfigTableIndex = 130,
+ WdfFdoQueryForInterfaceTableIndex = 131,
+ WdfFdoGetDefaultChildListTableIndex = 132,
+ WdfFdoAddStaticChildTableIndex = 133,
+ WdfFdoLockStaticChildListForIterationTableIndex = 134,
+ WdfFdoRetrieveNextStaticChildTableIndex = 135,
+ WdfFdoUnlockStaticChildListFromIterationTableIndex = 136,
+ WdfFileObjectGetFileNameTableIndex = 137,
+ WdfFileObjectGetFlagsTableIndex = 138,
+ WdfFileObjectGetDeviceTableIndex = 139,
+ WdfFileObjectWdmGetFileObjectTableIndex = 140,
+ WdfInterruptCreateTableIndex = 141,
+ WdfInterruptQueueDpcForIsrTableIndex = 142,
+ WdfInterruptSynchronizeTableIndex = 143,
+ WdfInterruptAcquireLockTableIndex = 144,
+ WdfInterruptReleaseLockTableIndex = 145,
+ WdfInterruptEnableTableIndex = 146,
+ WdfInterruptDisableTableIndex = 147,
+ WdfInterruptWdmGetInterruptTableIndex = 148,
+ WdfInterruptGetInfoTableIndex = 149,
+ WdfInterruptSetPolicyTableIndex = 150,
+ WdfInterruptGetDeviceTableIndex = 151,
+ WdfIoQueueCreateTableIndex = 152,
+ WdfIoQueueGetStateTableIndex = 153,
+ WdfIoQueueStartTableIndex = 154,
+ WdfIoQueueStopTableIndex = 155,
+ WdfIoQueueStopSynchronouslyTableIndex = 156,
+ WdfIoQueueGetDeviceTableIndex = 157,
+ WdfIoQueueRetrieveNextRequestTableIndex = 158,
+ WdfIoQueueRetrieveRequestByFileObjectTableIndex = 159,
+ WdfIoQueueFindRequestTableIndex = 160,
+ WdfIoQueueRetrieveFoundRequestTableIndex = 161,
+ WdfIoQueueDrainSynchronouslyTableIndex = 162,
+ WdfIoQueueDrainTableIndex = 163,
+ WdfIoQueuePurgeSynchronouslyTableIndex = 164,
+ WdfIoQueuePurgeTableIndex = 165,
+ WdfIoQueueReadyNotifyTableIndex = 166,
+ WdfIoTargetCreateTableIndex = 167,
+ WdfIoTargetOpenTableIndex = 168,
+ WdfIoTargetCloseForQueryRemoveTableIndex = 169,
+ WdfIoTargetCloseTableIndex = 170,
+ WdfIoTargetStartTableIndex = 171,
+ WdfIoTargetStopTableIndex = 172,
+ WdfIoTargetGetStateTableIndex = 173,
+ WdfIoTargetGetDeviceTableIndex = 174,
+ WdfIoTargetQueryTargetPropertyTableIndex = 175,
+ WdfIoTargetAllocAndQueryTargetPropertyTableIndex = 176,
+ WdfIoTargetQueryForInterfaceTableIndex = 177,
+ WdfIoTargetWdmGetTargetDeviceObjectTableIndex = 178,
+ WdfIoTargetWdmGetTargetPhysicalDeviceTableIndex = 179,
+ WdfIoTargetWdmGetTargetFileObjectTableIndex = 180,
+ WdfIoTargetWdmGetTargetFileHandleTableIndex = 181,
+ WdfIoTargetSendReadSynchronouslyTableIndex = 182,
+ WdfIoTargetFormatRequestForReadTableIndex = 183,
+ WdfIoTargetSendWriteSynchronouslyTableIndex = 184,
+ WdfIoTargetFormatRequestForWriteTableIndex = 185,
+ WdfIoTargetSendIoctlSynchronouslyTableIndex = 186,
+ WdfIoTargetFormatRequestForIoctlTableIndex = 187,
+ WdfIoTargetSendInternalIoctlSynchronouslyTableIndex = 188,
+ WdfIoTargetFormatRequestForInternalIoctlTableIndex = 189,
+ WdfIoTargetSendInternalIoctlOthersSynchronouslyTableIndex = 190,
+ WdfIoTargetFormatRequestForInternalIoctlOthersTableIndex = 191,
+ WdfMemoryCreateTableIndex = 192,
+ WdfMemoryCreatePreallocatedTableIndex = 193,
+ WdfMemoryGetBufferTableIndex = 194,
+ WdfMemoryAssignBufferTableIndex = 195,
+ WdfMemoryCopyToBufferTableIndex = 196,
+ WdfMemoryCopyFromBufferTableIndex = 197,
+ WdfLookasideListCreateTableIndex = 198,
+ WdfMemoryCreateFromLookasideTableIndex = 199,
+ WdfDeviceMiniportCreateTableIndex = 200,
+ WdfDriverMiniportUnloadTableIndex = 201,
+ WdfObjectGetTypedContextWorkerTableIndex = 202,
+ WdfObjectAllocateContextTableIndex = 203,
+ WdfObjectContextGetObjectTableIndex = 204,
+ WdfObjectReferenceActualTableIndex = 205,
+ WdfObjectDereferenceActualTableIndex = 206,
+ WdfObjectCreateTableIndex = 207,
+ WdfObjectDeleteTableIndex = 208,
+ WdfObjectQueryTableIndex = 209,
+ WdfPdoInitAllocateTableIndex = 210,
+ WdfPdoInitSetEventCallbacksTableIndex = 211,
+ WdfPdoInitAssignDeviceIDTableIndex = 212,
+ WdfPdoInitAssignInstanceIDTableIndex = 213,
+ WdfPdoInitAddHardwareIDTableIndex = 214,
+ WdfPdoInitAddCompatibleIDTableIndex = 215,
+ WdfPdoInitAddDeviceTextTableIndex = 216,
+ WdfPdoInitSetDefaultLocaleTableIndex = 217,
+ WdfPdoInitAssignRawDeviceTableIndex = 218,
+ WdfPdoMarkMissingTableIndex = 219,
+ WdfPdoRequestEjectTableIndex = 220,
+ WdfPdoGetParentTableIndex = 221,
+ WdfPdoRetrieveIdentificationDescriptionTableIndex = 222,
+ WdfPdoRetrieveAddressDescriptionTableIndex = 223,
+ WdfPdoUpdateAddressDescriptionTableIndex = 224,
+ WdfPdoAddEjectionRelationsPhysicalDeviceTableIndex = 225,
+ WdfPdoRemoveEjectionRelationsPhysicalDeviceTableIndex = 226,
+ WdfPdoClearEjectionRelationsDevicesTableIndex = 227,
+ WdfDeviceAddQueryInterfaceTableIndex = 228,
+ WdfRegistryOpenKeyTableIndex = 229,
+ WdfRegistryCreateKeyTableIndex = 230,
+ WdfRegistryCloseTableIndex = 231,
+ WdfRegistryWdmGetHandleTableIndex = 232,
+ WdfRegistryRemoveKeyTableIndex = 233,
+ WdfRegistryRemoveValueTableIndex = 234,
+ WdfRegistryQueryValueTableIndex = 235,
+ WdfRegistryQueryMemoryTableIndex = 236,
+ WdfRegistryQueryMultiStringTableIndex = 237,
+ WdfRegistryQueryUnicodeStringTableIndex = 238,
+ WdfRegistryQueryStringTableIndex = 239,
+ WdfRegistryQueryULongTableIndex = 240,
+ WdfRegistryAssignValueTableIndex = 241,
+ WdfRegistryAssignMemoryTableIndex = 242,
+ WdfRegistryAssignMultiStringTableIndex = 243,
+ WdfRegistryAssignUnicodeStringTableIndex = 244,
+ WdfRegistryAssignStringTableIndex = 245,
+ WdfRegistryAssignULongTableIndex = 246,
+ WdfRequestCreateTableIndex = 247,
+ WdfRequestCreateFromIrpTableIndex = 248,
+ WdfRequestReuseTableIndex = 249,
+ WdfRequestChangeTargetTableIndex = 250,
+ WdfRequestFormatRequestUsingCurrentTypeTableIndex = 251,
+ WdfRequestWdmFormatUsingStackLocationTableIndex = 252,
+ WdfRequestSendTableIndex = 253,
+ WdfRequestGetStatusTableIndex = 254,
+ WdfRequestMarkCancelableTableIndex = 255,
+ WdfRequestUnmarkCancelableTableIndex = 256,
+ WdfRequestIsCanceledTableIndex = 257,
+ WdfRequestCancelSentRequestTableIndex = 258,
+ WdfRequestIsFrom32BitProcessTableIndex = 259,
+ WdfRequestSetCompletionRoutineTableIndex = 260,
+ WdfRequestGetCompletionParamsTableIndex = 261,
+ WdfRequestAllocateTimerTableIndex = 262,
+ WdfRequestCompleteTableIndex = 263,
+ WdfRequestCompleteWithPriorityBoostTableIndex = 264,
+ WdfRequestCompleteWithInformationTableIndex = 265,
+ WdfRequestGetParametersTableIndex = 266,
+ WdfRequestRetrieveInputMemoryTableIndex = 267,
+ WdfRequestRetrieveOutputMemoryTableIndex = 268,
+ WdfRequestRetrieveInputBufferTableIndex = 269,
+ WdfRequestRetrieveOutputBufferTableIndex = 270,
+ WdfRequestRetrieveInputWdmMdlTableIndex = 271,
+ WdfRequestRetrieveOutputWdmMdlTableIndex = 272,
+ WdfRequestRetrieveUnsafeUserInputBufferTableIndex = 273,
+ WdfRequestRetrieveUnsafeUserOutputBufferTableIndex = 274,
+ WdfRequestSetInformationTableIndex = 275,
+ WdfRequestGetInformationTableIndex = 276,
+ WdfRequestGetFileObjectTableIndex = 277,
+ WdfRequestProbeAndLockUserBufferForReadTableIndex = 278,
+ WdfRequestProbeAndLockUserBufferForWriteTableIndex = 279,
+ WdfRequestGetRequestorModeTableIndex = 280,
+ WdfRequestForwardToIoQueueTableIndex = 281,
+ WdfRequestGetIoQueueTableIndex = 282,
+ WdfRequestRequeueTableIndex = 283,
+ WdfRequestStopAcknowledgeTableIndex = 284,
+ WdfRequestWdmGetIrpTableIndex = 285,
+ WdfIoResourceRequirementsListSetSlotNumberTableIndex = 286,
+ WdfIoResourceRequirementsListSetInterfaceTypeTableIndex = 287,
+ WdfIoResourceRequirementsListAppendIoResListTableIndex = 288,
+ WdfIoResourceRequirementsListInsertIoResListTableIndex = 289,
+ WdfIoResourceRequirementsListGetCountTableIndex = 290,
+ WdfIoResourceRequirementsListGetIoResListTableIndex = 291,
+ WdfIoResourceRequirementsListRemoveTableIndex = 292,
+ WdfIoResourceRequirementsListRemoveByIoResListTableIndex = 293,
+ WdfIoResourceListCreateTableIndex = 294,
+ WdfIoResourceListAppendDescriptorTableIndex = 295,
+ WdfIoResourceListInsertDescriptorTableIndex = 296,
+ WdfIoResourceListUpdateDescriptorTableIndex = 297,
+ WdfIoResourceListGetCountTableIndex = 298,
+ WdfIoResourceListGetDescriptorTableIndex = 299,
+ WdfIoResourceListRemoveTableIndex = 300,
+ WdfIoResourceListRemoveByDescriptorTableIndex = 301,
+ WdfCmResourceListAppendDescriptorTableIndex = 302,
+ WdfCmResourceListInsertDescriptorTableIndex = 303,
+ WdfCmResourceListGetCountTableIndex = 304,
+ WdfCmResourceListGetDescriptorTableIndex = 305,
+ WdfCmResourceListRemoveTableIndex = 306,
+ WdfCmResourceListRemoveByDescriptorTableIndex = 307,
+ WdfStringCreateTableIndex = 308,
+ WdfStringGetUnicodeStringTableIndex = 309,
+ WdfObjectAcquireLockTableIndex = 310,
+ WdfObjectReleaseLockTableIndex = 311,
+ WdfWaitLockCreateTableIndex = 312,
+ WdfWaitLockAcquireTableIndex = 313,
+ WdfWaitLockReleaseTableIndex = 314,
+ WdfSpinLockCreateTableIndex = 315,
+ WdfSpinLockAcquireTableIndex = 316,
+ WdfSpinLockReleaseTableIndex = 317,
+ WdfTimerCreateTableIndex = 318,
+ WdfTimerStartTableIndex = 319,
+ WdfTimerStopTableIndex = 320,
+ WdfTimerGetParentObjectTableIndex = 321,
+ WdfUsbTargetDeviceCreateTableIndex = 322,
+ WdfUsbTargetDeviceRetrieveInformationTableIndex = 323,
+ WdfUsbTargetDeviceGetDeviceDescriptorTableIndex = 324,
+ WdfUsbTargetDeviceRetrieveConfigDescriptorTableIndex = 325,
+ WdfUsbTargetDeviceQueryStringTableIndex = 326,
+ WdfUsbTargetDeviceAllocAndQueryStringTableIndex = 327,
+ WdfUsbTargetDeviceFormatRequestForStringTableIndex = 328,
+ WdfUsbTargetDeviceGetNumInterfacesTableIndex = 329,
+ WdfUsbTargetDeviceSelectConfigTableIndex = 330,
+ WdfUsbTargetDeviceWdmGetConfigurationHandleTableIndex = 331,
+ WdfUsbTargetDeviceRetrieveCurrentFrameNumberTableIndex = 332,
+ WdfUsbTargetDeviceSendControlTransferSynchronouslyTableIndex = 333,
+ WdfUsbTargetDeviceFormatRequestForControlTransferTableIndex = 334,
+ WdfUsbTargetDeviceIsConnectedSynchronousTableIndex = 335,
+ WdfUsbTargetDeviceResetPortSynchronouslyTableIndex = 336,
+ WdfUsbTargetDeviceCyclePortSynchronouslyTableIndex = 337,
+ WdfUsbTargetDeviceFormatRequestForCyclePortTableIndex = 338,
+ WdfUsbTargetDeviceSendUrbSynchronouslyTableIndex = 339,
+ WdfUsbTargetDeviceFormatRequestForUrbTableIndex = 340,
+ WdfUsbTargetPipeGetInformationTableIndex = 341,
+ WdfUsbTargetPipeIsInEndpointTableIndex = 342,
+ WdfUsbTargetPipeIsOutEndpointTableIndex = 343,
+ WdfUsbTargetPipeGetTypeTableIndex = 344,
+ WdfUsbTargetPipeSetNoMaximumPacketSizeCheckTableIndex = 345,
+ WdfUsbTargetPipeWriteSynchronouslyTableIndex = 346,
+ WdfUsbTargetPipeFormatRequestForWriteTableIndex = 347,
+ WdfUsbTargetPipeReadSynchronouslyTableIndex = 348,
+ WdfUsbTargetPipeFormatRequestForReadTableIndex = 349,
+ WdfUsbTargetPipeConfigContinuousReaderTableIndex = 350,
+ WdfUsbTargetPipeAbortSynchronouslyTableIndex = 351,
+ WdfUsbTargetPipeFormatRequestForAbortTableIndex = 352,
+ WdfUsbTargetPipeResetSynchronouslyTableIndex = 353,
+ WdfUsbTargetPipeFormatRequestForResetTableIndex = 354,
+ WdfUsbTargetPipeSendUrbSynchronouslyTableIndex = 355,
+ WdfUsbTargetPipeFormatRequestForUrbTableIndex = 356,
+ WdfUsbInterfaceGetInterfaceNumberTableIndex = 357,
+ WdfUsbInterfaceGetNumEndpointsTableIndex = 358,
+ WdfUsbInterfaceGetDescriptorTableIndex = 359,
+ WdfUsbInterfaceSelectSettingTableIndex = 360,
+ WdfUsbInterfaceGetEndpointInformationTableIndex = 361,
+ WdfUsbTargetDeviceGetInterfaceTableIndex = 362,
+ WdfUsbInterfaceGetConfiguredSettingIndexTableIndex = 363,
+ WdfUsbInterfaceGetNumConfiguredPipesTableIndex = 364,
+ WdfUsbInterfaceGetConfiguredPipeTableIndex = 365,
+ WdfUsbTargetPipeWdmGetPipeHandleTableIndex = 366,
+ WdfVerifierDbgBreakPointTableIndex = 367,
+ WdfVerifierKeBugCheckTableIndex = 368,
+ WdfWmiProviderCreateTableIndex = 369,
+ WdfWmiProviderGetDeviceTableIndex = 370,
+ WdfWmiProviderIsEnabledTableIndex = 371,
+ WdfWmiProviderGetTracingHandleTableIndex = 372,
+ WdfWmiInstanceCreateTableIndex = 373,
+ WdfWmiInstanceRegisterTableIndex = 374,
+ WdfWmiInstanceDeregisterTableIndex = 375,
+ WdfWmiInstanceGetDeviceTableIndex = 376,
+ WdfWmiInstanceGetProviderTableIndex = 377,
+ WdfWmiInstanceFireEventTableIndex = 378,
+ WdfWorkItemCreateTableIndex = 379,
+ WdfWorkItemEnqueueTableIndex = 380,
+ WdfWorkItemGetParentObjectTableIndex = 381,
+ WdfWorkItemFlushTableIndex = 382,
+ WdfCommonBufferCreateWithConfigTableIndex = 383,
+ WdfDmaEnablerGetFragmentLengthTableIndex = 384,
+ WdfDmaEnablerWdmGetDmaAdapterTableIndex = 385,
+ WdfUsbInterfaceGetNumSettingsTableIndex = 386,
+ WdfDeviceRemoveDependentUsageDeviceObjectTableIndex = 387,
+ WdfDeviceGetSystemPowerActionTableIndex = 388,
+ WdfInterruptSetExtendedPolicyTableIndex = 389,
+ WdfIoQueueAssignForwardProgressPolicyTableIndex = 390,
+ WdfPdoInitAssignContainerIDTableIndex = 391,
+ WdfPdoInitAllowForwardingRequestToParentTableIndex = 392,
+ WdfRequestMarkCancelableExTableIndex = 393,
+ WdfRequestIsReservedTableIndex = 394,
+ WdfRequestForwardToParentDeviceIoQueueTableIndex = 395,
+ WdfCxDeviceInitAllocateTableIndex = 396,
+ WdfCxDeviceInitAssignWdmIrpPreprocessCallbackTableIndex = 397,
+ WdfCxDeviceInitSetIoInCallerContextCallbackTableIndex = 398,
+ WdfCxDeviceInitSetRequestAttributesTableIndex = 399,
+ WdfCxDeviceInitSetFileObjectConfigTableIndex = 400,
+ WdfDeviceWdmDispatchIrpTableIndex = 401,
+ WdfDeviceWdmDispatchIrpToIoQueueTableIndex = 402,
+ WdfDeviceInitSetRemoveLockOptionsTableIndex = 403,
+ WdfDeviceConfigureWdmIrpDispatchCallbackTableIndex = 404,
+ WdfDmaEnablerConfigureSystemProfileTableIndex = 405,
+ WdfDmaTransactionInitializeUsingOffsetTableIndex = 406,
+ WdfDmaTransactionGetTransferInfoTableIndex = 407,
+ WdfDmaTransactionSetChannelConfigurationCallbackTableIndex = 408,
+ WdfDmaTransactionSetTransferCompleteCallbackTableIndex = 409,
+ WdfDmaTransactionSetImmediateExecutionTableIndex = 410,
+ WdfDmaTransactionAllocateResourcesTableIndex = 411,
+ WdfDmaTransactionSetDeviceAddressOffsetTableIndex = 412,
+ WdfDmaTransactionFreeResourcesTableIndex = 413,
+ WdfDmaTransactionCancelTableIndex = 414,
+ WdfDmaTransactionWdmGetTransferContextTableIndex = 415,
+ WdfInterruptQueueWorkItemForIsrTableIndex = 416,
+ WdfInterruptTryToAcquireLockTableIndex = 417,
+ WdfIoQueueStopAndPurgeTableIndex = 418,
+ WdfIoQueueStopAndPurgeSynchronouslyTableIndex = 419,
+ WdfIoTargetPurgeTableIndex = 420,
+ WdfUsbTargetDeviceCreateWithParametersTableIndex = 421,
+ WdfUsbTargetDeviceQueryUsbCapabilityTableIndex = 422,
+ WdfUsbTargetDeviceCreateUrbTableIndex = 423,
+ WdfUsbTargetDeviceCreateIsochUrbTableIndex = 424,
+ WdfDeviceWdmAssignPowerFrameworkSettingsTableIndex = 425,
+ WdfDmaTransactionStopSystemTransferTableIndex = 426,
+ WdfCxVerifierKeBugCheckTableIndex = 427,
+ WdfInterruptReportActiveTableIndex = 428,
+ WdfInterruptReportInactiveTableIndex = 429,
+ WdfDeviceInitSetReleaseHardwareOrderOnFailureTableIndex = 430,
+ WdfGetTriageInfoTableIndex = 431,
+ WdfDeviceInitSetIoTypeExTableIndex = 432,
+ WdfDeviceQueryPropertyExTableIndex = 433,
+ WdfDeviceAllocAndQueryPropertyExTableIndex = 434,
+ WdfDeviceAssignPropertyTableIndex = 435,
+ WdfFdoInitQueryPropertyExTableIndex = 436,
+ WdfFdoInitAllocAndQueryPropertyExTableIndex = 437,
+ WdfDeviceStopIdleActualTableIndex = 438,
+ WdfDeviceResumeIdleActualTableIndex = 439,
+ WdfDeviceGetSelfIoTargetTableIndex = 440,
+ WdfDeviceInitAllowSelfIoTargetTableIndex = 441,
+ WdfIoTargetSelfAssignDefaultIoQueueTableIndex = 442,
+ WdfDeviceOpenDevicemapKeyTableIndex = 443,
+ WdfDmaTransactionSetSingleTransferRequirementTableIndex = 444,
+ WdfCxDeviceInitSetPnpPowerEventCallbacksTableIndex = 445,
+ WdfFileObjectGetInitiatorProcessIdTableIndex = 446,
+ WdfRequestGetRequestorProcessIdTableIndex = 447,
+ WdfDeviceRetrieveCompanionTargetTableIndex = 448,
+ WdfCompanionTargetSendTaskSynchronouslyTableIndex = 449,
+ WdfCompanionTargetWdmGetCompanionProcessTableIndex = 450,
+ WdfDriverOpenPersistentStateRegistryKeyTableIndex = 451,
+ WdfDriverErrorReportApiMissingTableIndex = 452,
+ WdfPdoInitRemovePowerDependencyOnParentTableIndex = 453,
+ WdfCxDeviceInitAllocateContextTableIndex = 454,
+ WdfCxDeviceInitGetTypedContextWorkerTableIndex = 455,
+ WdfCxDeviceInitSetPowerPolicyEventCallbacksTableIndex = 456,
+ WdfDeviceSetDeviceInterfaceStateExTableIndex = 457,
+ WdfFunctionTableNumEntries = 458,
+} WDFFUNCENUM;
+
+typedef enum _WDFSTRUCTENUM {
+
+ INDEX_WDF_CHILD_ADDRESS_DESCRIPTION_HEADER = 0,
+ INDEX_WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER = 1,
+ INDEX_WDF_CHILD_LIST_CONFIG = 2,
+ INDEX_WDF_CHILD_LIST_ITERATOR = 3,
+ INDEX_WDF_CHILD_RETRIEVE_INFO = 4,
+ INDEX_WDF_CLASS_BIND_INFO = 5,
+ INDEX_WDF_CLASS_BIND_INFO2 = 6,
+ INDEX_WDF_CLASS_EXTENSION_DESCRIPTOR = 7,
+ INDEX_WDF_CLASS_LIBRARY_INFO = 8,
+ INDEX_WDF_CLASS_VERSION = 9,
+ INDEX_WDF_COMMON_BUFFER_CONFIG = 10,
+ INDEX_WDF_CUSTOM_TYPE_CONTEXT = 11,
+ INDEX_WDF_DEVICE_PNP_CAPABILITIES = 12,
+ INDEX_WDF_DEVICE_PNP_NOTIFICATION_DATA = 13,
+ INDEX_WDF_DEVICE_POWER_CAPABILITIES = 14,
+ INDEX_WDF_DEVICE_POWER_NOTIFICATION_DATA = 15,
+ INDEX_WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS = 16,
+ INDEX_WDF_DEVICE_POWER_POLICY_NOTIFICATION_DATA = 17,
+ INDEX_WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS = 18,
+ INDEX_WDF_DEVICE_PROPERTY_DATA = 19,
+ INDEX_WDF_DEVICE_STATE = 20,
+ INDEX_WDF_DMA_ENABLER_CONFIG = 21,
+ INDEX_WDF_DMA_SYSTEM_PROFILE_CONFIG = 22,
+ INDEX_WDF_DPC_CONFIG = 23,
+ INDEX_WDF_DRIVER_CONFIG = 24,
+ INDEX_WDF_DRIVER_GLOBALS = 25,
+ INDEX_WDF_DRIVER_VERSION_AVAILABLE_PARAMS = 26,
+ INDEX_WDF_FDO_EVENT_CALLBACKS = 27,
+ INDEX_WDF_FILEOBJECT_CONFIG = 28,
+ INDEX_WDF_INTERRUPT_CONFIG = 29,
+ INDEX_WDF_INTERRUPT_EXTENDED_POLICY = 30,
+ INDEX_WDF_INTERRUPT_INFO = 31,
+ INDEX_WDF_IO_FORWARD_PROGRESS_RESERVED_POLICY_SETTINGS = 32,
+ INDEX_WDF_IO_QUEUE_CONFIG = 33,
+ INDEX_WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY = 34,
+ INDEX_WDF_IO_TARGET_OPEN_PARAMS = 35,
+ INDEX_WDF_IO_TYPE_CONFIG = 36,
+ INDEX_WDF_MEMORY_DESCRIPTOR = 37,
+ INDEX_WDF_OBJECT_ATTRIBUTES = 38,
+ INDEX_WDF_OBJECT_CONTEXT_TYPE_INFO = 39,
+ INDEX_WDF_PDO_EVENT_CALLBACKS = 40,
+ INDEX_WDF_PNPPOWER_EVENT_CALLBACKS = 41,
+ INDEX_WDF_POWER_FRAMEWORK_SETTINGS = 42,
+ INDEX_WDF_POWER_POLICY_EVENT_CALLBACKS = 43,
+ INDEX_WDF_POWER_ROUTINE_TIMED_OUT_DATA = 44,
+ INDEX_WDF_QUERY_INTERFACE_CONFIG = 45,
+ INDEX_WDF_QUEUE_FATAL_ERROR_DATA = 46,
+ INDEX_WDF_REMOVE_LOCK_OPTIONS = 47,
+ INDEX_WDF_REQUEST_COMPLETION_PARAMS = 48,
+ INDEX_WDF_REQUEST_FATAL_ERROR_INFORMATION_LENGTH_MISMATCH_DATA = 49,
+ INDEX_WDF_REQUEST_FORWARD_OPTIONS = 50,
+ INDEX_WDF_REQUEST_PARAMETERS = 51,
+ INDEX_WDF_REQUEST_REUSE_PARAMS = 52,
+ INDEX_WDF_REQUEST_SEND_OPTIONS = 53,
+ INDEX_WDF_TASK_SEND_OPTIONS = 54,
+ INDEX_WDF_TIMER_CONFIG = 55,
+ INDEX_WDF_TRIAGE_INFO = 56,
+ INDEX_WDF_USB_CONTINUOUS_READER_CONFIG = 57,
+ INDEX_WDF_USB_DEVICE_CREATE_CONFIG = 58,
+ INDEX_WDF_USB_DEVICE_INFORMATION = 59,
+ INDEX_WDF_USB_DEVICE_SELECT_CONFIG_PARAMS = 60,
+ INDEX_WDF_USB_INTERFACE_SELECT_SETTING_PARAMS = 61,
+ INDEX_WDF_USB_INTERFACE_SETTING_PAIR = 62,
+ INDEX_WDF_USB_PIPE_INFORMATION = 63,
+ INDEX_WDF_USB_REQUEST_COMPLETION_PARAMS = 64,
+ INDEX_WDF_WMI_INSTANCE_CONFIG = 65,
+ INDEX_WDF_WMI_PROVIDER_CONFIG = 66,
+ INDEX_WDF_WORKITEM_CONFIG = 67,
+ INDEX_WDFCONTEXT_TRIAGE_INFO = 68,
+ INDEX_WDFCONTEXTTYPE_TRIAGE_INFO = 69,
+ INDEX_WDFCX_FILEOBJECT_CONFIG = 70,
+ INDEX_WDFCX_PNPPOWER_EVENT_CALLBACKS = 71,
+ INDEX_WDFDEVICE_TRIAGE_INFO = 72,
+ INDEX_WDFFWDPROGRESS_TRIAGE_INFO = 73,
+ INDEX_WDFIRP_TRIAGE_INFO = 74,
+ INDEX_WDFIRPQUEUE_TRIAGE_INFO = 75,
+ INDEX_WDFMEMORY_OFFSET = 76,
+ INDEX_WDFOBJECT_TRIAGE_INFO = 77,
+ INDEX_WDFQUEUE_TRIAGE_INFO = 78,
+ INDEX_WDFREQUEST_TRIAGE_INFO = 79,
+ INDEX_WDFCX_POWER_POLICY_EVENT_CALLBACKS = 80,
+ WDF_STRUCTURE_TABLE_NUM_ENTRIES = 81,
+} WDFSTRUCTENUM;
+
+
+
+#line 747 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdffuncenum.h"
+
+#line 72 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfstatus.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 273 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfstatus.h"
+#line 73 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfassert.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__declspec(dllimport)
+void
+__stdcall
+RtlAssert(
+ PVOID FailedAssertion,
+ PVOID FileName,
+ ULONG LineNumber,
+ PSTR Message
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 103 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfassert.h"
+
+
+
+#line 107 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfassert.h"
+
+#line 74 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfverifier.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+void
+(__stdcall *PFN_WDFVERIFIERDBGBREAKPOINT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals
+ );
+
+__forceinline
+void
+WdfVerifierDbgBreakPoint(
+ )
+{
+ ((PFN_WDFVERIFIERDBGBREAKPOINT) WdfFunctions_01033[WdfVerifierDbgBreakPointTableIndex])(WdfDriverGlobals);
+}
+
+
+
+
+typedef
+
+void
+(__stdcall *PFN_WDFVERIFIERKEBUGCHECK)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ ULONG BugCheckCode,
+
+ ULONG_PTR BugCheckParameter1,
+
+ ULONG_PTR BugCheckParameter2,
+
+ ULONG_PTR BugCheckParameter3,
+
+ ULONG_PTR BugCheckParameter4
+ );
+
+
+__forceinline
+void
+WdfVerifierKeBugCheck(
+
+ ULONG BugCheckCode,
+
+ ULONG_PTR BugCheckParameter1,
+
+ ULONG_PTR BugCheckParameter2,
+
+ ULONG_PTR BugCheckParameter3,
+
+ ULONG_PTR BugCheckParameter4
+ )
+{
+ ((PFN_WDFVERIFIERKEBUGCHECK) WdfFunctions_01033[WdfVerifierKeBugCheckTableIndex])(WdfDriverGlobals, BugCheckCode, BugCheckParameter1, BugCheckParameter2, BugCheckParameter3, BugCheckParameter4);
+}
+
+
+
+
+typedef
+
+PVOID
+(__stdcall *PFN_WDFGETTRIAGEINFO)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals
+ );
+
+__forceinline
+PVOID
+WdfGetTriageInfo(
+ )
+{
+ return ((PFN_WDFGETTRIAGEINFO) WdfFunctions_01033[WdfGetTriageInfoTableIndex])(WdfDriverGlobals);
+}
+
+
+
+#line 134 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfverifier.h"
+
+
+
+
+#line 139 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfverifier.h"
+
+
+#line 75 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfpool.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 56 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfpool.h"
+
+
+
+
+#line 61 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfpool.h"
+
+#line 76 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfobject.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _WDF_EXECUTION_LEVEL {
+ WdfExecutionLevelInvalid = 0x00,
+ WdfExecutionLevelInheritFromParent,
+ WdfExecutionLevelPassive,
+ WdfExecutionLevelDispatch,
+} WDF_EXECUTION_LEVEL;
+
+
+
+
+typedef enum _WDF_SYNCHRONIZATION_SCOPE {
+ WdfSynchronizationScopeInvalid = 0x00,
+ WdfSynchronizationScopeInheritFromParent,
+ WdfSynchronizationScopeDevice,
+ WdfSynchronizationScopeQueue,
+ WdfSynchronizationScopeNone,
+} WDF_SYNCHRONIZATION_SCOPE;
+
+
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_OBJECT_CONTEXT_CLEANUP(
+
+ WDFOBJECT Object
+ );
+
+typedef EVT_WDF_OBJECT_CONTEXT_CLEANUP *PFN_WDF_OBJECT_CONTEXT_CLEANUP;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_OBJECT_CONTEXT_DESTROY(
+
+ WDFOBJECT Object
+ );
+
+typedef EVT_WDF_OBJECT_CONTEXT_DESTROY *PFN_WDF_OBJECT_CONTEXT_DESTROY;
+
+
+typedef const struct _WDF_OBJECT_CONTEXT_TYPE_INFO *PCWDF_OBJECT_CONTEXT_TYPE_INFO;
+
+typedef struct _WDF_OBJECT_ATTRIBUTES {
+
+
+
+ ULONG Size;
+
+
+
+
+ PFN_WDF_OBJECT_CONTEXT_CLEANUP EvtCleanupCallback;
+
+
+
+
+
+ PFN_WDF_OBJECT_CONTEXT_DESTROY EvtDestroyCallback;
+
+
+
+
+ WDF_EXECUTION_LEVEL ExecutionLevel;
+
+
+
+
+ WDF_SYNCHRONIZATION_SCOPE SynchronizationScope;
+
+
+
+
+ WDFOBJECT ParentObject;
+
+
+
+
+
+ size_t ContextSizeOverride;
+
+
+
+
+ PCWDF_OBJECT_CONTEXT_TYPE_INFO ContextTypeInfo;
+
+} WDF_OBJECT_ATTRIBUTES, *PWDF_OBJECT_ATTRIBUTES;
+
+void
+__forceinline
+WDF_OBJECT_ATTRIBUTES_INIT(
+ PWDF_OBJECT_ATTRIBUTES Attributes
+ )
+{
+ memset((Attributes),0,(sizeof(WDF_OBJECT_ATTRIBUTES)));
+ Attributes->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_OBJECT_ATTRIBUTES < WdfStructureCount) ? WdfStructures[INDEX_WDF_OBJECT_ATTRIBUTES] : (size_t)(-1) ) : sizeof(WDF_OBJECT_ATTRIBUTES) );
+ Attributes->ExecutionLevel = WdfExecutionLevelInheritFromParent;
+ Attributes->SynchronizationScope = WdfSynchronizationScopeInheritFromParent;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+PCWDF_OBJECT_CONTEXT_TYPE_INFO
+(__cdecl *PFN_GET_UNIQUE_CONTEXT_TYPE)(
+ void
+ );
+
+
+
+
+typedef struct _WDF_OBJECT_CONTEXT_TYPE_INFO {
+
+
+
+ ULONG Size;
+
+
+
+
+ LPCSTR ContextName;
+
+
+
+
+
+
+ size_t ContextSize;
+
+
+
+
+
+
+ PCWDF_OBJECT_CONTEXT_TYPE_INFO UniqueType;
+
+
+
+
+
+
+
+ PFN_GET_UNIQUE_CONTEXT_TYPE EvtDriverGetUniqueContextType;
+
+} WDF_OBJECT_CONTEXT_TYPE_INFO, *PWDF_OBJECT_CONTEXT_TYPE_INFO;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 312 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfobject.h"
+
+#pragma section(".kmdftypeinit$b", read, write)
+#pragma section(".data")
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _WDF_CUSTOM_TYPE_CONTEXT {
+ ULONG Size;
+ ULONG_PTR Data;
+} WDF_CUSTOM_TYPE_CONTEXT, *PWDF_CUSTOM_TYPE_CONTEXT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+
+PVOID
+( *PFN_WDFOBJECTGETTYPEDCONTEXTWORKER)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFOBJECT Handle,
+
+ PCWDF_OBJECT_CONTEXT_TYPE_INFO TypeInfo
+ );
+
+
+
+
+
+
+
+__forceinline
+PVOID
+WdfObjectGetTypedContextWorker(
+
+ WDFOBJECT Handle,
+
+ PCWDF_OBJECT_CONTEXT_TYPE_INFO TypeInfo
+ )
+{
+ return ((PFN_WDFOBJECTGETTYPEDCONTEXTWORKER) WdfFunctions_01033[WdfObjectGetTypedContextWorkerTableIndex])(WdfDriverGlobals, Handle, TypeInfo);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFOBJECTALLOCATECONTEXT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFOBJECT Handle,
+
+ PWDF_OBJECT_ATTRIBUTES ContextAttributes,
+
+ PVOID* Context
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfObjectAllocateContext(
+
+ WDFOBJECT Handle,
+
+ PWDF_OBJECT_ATTRIBUTES ContextAttributes,
+
+ PVOID* Context
+ )
+{
+ return ((PFN_WDFOBJECTALLOCATECONTEXT) WdfFunctions_01033[WdfObjectAllocateContextTableIndex])(WdfDriverGlobals, Handle, ContextAttributes, Context);
+}
+
+
+
+
+typedef
+
+
+WDFOBJECT
+( *PFN_WDFOBJECTCONTEXTGETOBJECT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PVOID ContextPointer
+ );
+
+
+
+
+
+
+
+
+
+
+
+__forceinline
+WDFOBJECT
+WdfObjectContextGetObject(
+
+ PVOID ContextPointer
+ )
+{
+ return ((PFN_WDFOBJECTCONTEXTGETOBJECT) WdfFunctions_01033[WdfObjectContextGetObjectTableIndex])(WdfDriverGlobals, ContextPointer);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFOBJECTREFERENCEACTUAL)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFOBJECT Handle,
+
+ PVOID Tag,
+
+ LONG Line,
+
+ PCCH File
+ );
+
+
+__forceinline
+void
+WdfObjectReferenceActual(
+
+ WDFOBJECT Handle,
+
+ PVOID Tag,
+
+ LONG Line,
+
+ PCCH File
+ )
+{
+ ((PFN_WDFOBJECTREFERENCEACTUAL) WdfFunctions_01033[WdfObjectReferenceActualTableIndex])(WdfDriverGlobals, Handle, Tag, Line, File);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFOBJECTDEREFERENCEACTUAL)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFOBJECT Handle,
+
+ PVOID Tag,
+
+ LONG Line,
+
+ PCCH File
+ );
+
+
+__forceinline
+void
+WdfObjectDereferenceActual(
+
+ WDFOBJECT Handle,
+
+ PVOID Tag,
+
+ LONG Line,
+
+ PCCH File
+ )
+{
+ ((PFN_WDFOBJECTDEREFERENCEACTUAL) WdfFunctions_01033[WdfObjectDereferenceActualTableIndex])(WdfDriverGlobals, Handle, Tag, Line, File);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFOBJECTCREATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+ WDFOBJECT* Object
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfObjectCreate(
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+ WDFOBJECT* Object
+ )
+{
+ return ((PFN_WDFOBJECTCREATE) WdfFunctions_01033[WdfObjectCreateTableIndex])(WdfDriverGlobals, Attributes, Object);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFOBJECTDELETE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFOBJECT Object
+ );
+
+
+__forceinline
+void
+WdfObjectDelete(
+
+ WDFOBJECT Object
+ )
+{
+ ((PFN_WDFOBJECTDELETE) WdfFunctions_01033[WdfObjectDeleteTableIndex])(WdfDriverGlobals, Object);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFOBJECTQUERY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFOBJECT Object,
+
+ const GUID* Guid,
+
+ ULONG QueryBufferLength,
+
+ PVOID QueryBuffer
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfObjectQuery(
+
+ WDFOBJECT Object,
+
+ const GUID* Guid,
+
+ ULONG QueryBufferLength,
+
+ PVOID QueryBuffer
+ )
+{
+ return ((PFN_WDFOBJECTQUERY) WdfFunctions_01033[WdfObjectQueryTableIndex])(WdfDriverGlobals, Object, Guid, QueryBufferLength, QueryBuffer);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 860 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfobject.h"
+
+
+
+
+#line 865 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfobject.h"
+
+#line 79 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfsync.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFOBJECTACQUIRELOCK)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+
+
+ WDFOBJECT Object
+ );
+
+
+__forceinline
+void
+WdfObjectAcquireLock(
+
+
+
+ WDFOBJECT Object
+ )
+{
+ ((PFN_WDFOBJECTACQUIRELOCK) WdfFunctions_01033[WdfObjectAcquireLockTableIndex])(WdfDriverGlobals, Object);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFOBJECTRELEASELOCK)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+
+
+ WDFOBJECT Object
+ );
+
+
+__forceinline
+void
+WdfObjectReleaseLock(
+
+
+
+ WDFOBJECT Object
+ )
+{
+ ((PFN_WDFOBJECTRELEASELOCK) WdfFunctions_01033[WdfObjectReleaseLockTableIndex])(WdfDriverGlobals, Object);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFWAITLOCKCREATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDF_OBJECT_ATTRIBUTES LockAttributes,
+
+ WDFWAITLOCK* Lock
+ );
+
+
+
+
+
+
+
+__forceinline
+NTSTATUS
+WdfWaitLockCreate(
+
+ PWDF_OBJECT_ATTRIBUTES LockAttributes,
+
+ WDFWAITLOCK* Lock
+ )
+{
+ return ((PFN_WDFWAITLOCKCREATE) WdfFunctions_01033[WdfWaitLockCreateTableIndex])(WdfDriverGlobals, LockAttributes, Lock);
+}
+
+
+
+
+typedef
+
+
+
+
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFWAITLOCKACQUIRE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+
+ WDFWAITLOCK Lock,
+
+ PLONGLONG Timeout
+ );
+
+
+
+
+
+
+
+__forceinline
+NTSTATUS
+WdfWaitLockAcquire(
+
+
+ WDFWAITLOCK Lock,
+
+ PLONGLONG Timeout
+ )
+{
+ return ((PFN_WDFWAITLOCKACQUIRE) WdfFunctions_01033[WdfWaitLockAcquireTableIndex])(WdfDriverGlobals, Lock, Timeout);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFWAITLOCKRELEASE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+
+
+ WDFWAITLOCK Lock
+ );
+
+
+__forceinline
+void
+WdfWaitLockRelease(
+
+
+
+ WDFWAITLOCK Lock
+ )
+{
+ ((PFN_WDFWAITLOCKRELEASE) WdfFunctions_01033[WdfWaitLockReleaseTableIndex])(WdfDriverGlobals, Lock);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFSPINLOCKCREATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDF_OBJECT_ATTRIBUTES SpinLockAttributes,
+
+ WDFSPINLOCK* SpinLock
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfSpinLockCreate(
+
+ PWDF_OBJECT_ATTRIBUTES SpinLockAttributes,
+
+ WDFSPINLOCK* SpinLock
+ )
+{
+ return ((PFN_WDFSPINLOCKCREATE) WdfFunctions_01033[WdfSpinLockCreateTableIndex])(WdfDriverGlobals, SpinLockAttributes, SpinLock);
+}
+
+
+
+
+typedef
+
+
+
+void
+(__stdcall *PFN_WDFSPINLOCKACQUIRE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+
+
+
+ WDFSPINLOCK SpinLock
+ );
+
+
+
+__forceinline
+void
+WdfSpinLockAcquire(
+
+
+
+
+ WDFSPINLOCK SpinLock
+ )
+{
+ ((PFN_WDFSPINLOCKACQUIRE) WdfFunctions_01033[WdfSpinLockAcquireTableIndex])(WdfDriverGlobals, SpinLock);
+}
+
+
+
+
+typedef
+
+
+
+void
+(__stdcall *PFN_WDFSPINLOCKRELEASE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+
+
+
+ WDFSPINLOCK SpinLock
+ );
+
+
+
+__forceinline
+void
+WdfSpinLockRelease(
+
+
+
+
+ WDFSPINLOCK SpinLock
+ )
+{
+ ((PFN_WDFSPINLOCKRELEASE) WdfFunctions_01033[WdfSpinLockReleaseTableIndex])(WdfDriverGlobals, SpinLock);
+}
+
+
+
+#line 317 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfsync.h"
+
+
+
+
+#line 322 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfsync.h"
+
+#line 82 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfcore.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+LONGLONG
+__forceinline
+WDF_REL_TIMEOUT_IN_SEC(
+ ULONGLONG Time
+ )
+{
+ return Time * -1 * ((LONGLONG) 1 * 10 * 1000 * 1000);
+}
+
+LONGLONG
+__forceinline
+WDF_ABS_TIMEOUT_IN_SEC(
+ ULONGLONG Time
+ )
+{
+ return Time * 1 * ((LONGLONG) 1 * 10 * 1000 * 1000);
+}
+
+LONGLONG
+__forceinline
+WDF_REL_TIMEOUT_IN_MS(
+ ULONGLONG Time
+ )
+{
+ return Time * -1 * ((LONGLONG) 1 * 10 * 1000);
+}
+
+LONGLONG
+__forceinline
+WDF_ABS_TIMEOUT_IN_MS(
+ ULONGLONG Time
+ )
+{
+ return Time * 1 * ((LONGLONG) 1 * 10 * 1000);
+}
+
+LONGLONG
+__forceinline
+WDF_REL_TIMEOUT_IN_US(
+ ULONGLONG Time
+ )
+{
+ return Time * -1 * ((LONGLONG) 1 * 10);
+}
+
+LONGLONG
+__forceinline
+WDF_ABS_TIMEOUT_IN_US(
+ ULONGLONG Time
+ )
+{
+ return Time * 1 * ((LONGLONG) 1 * 10);
+}
+
+
+
+
+size_t
+__forceinline
+WDF_ALIGN_SIZE_DOWN(
+ size_t Length,
+ size_t AlignTo
+ )
+{
+ return Length & ~(AlignTo - 1);
+}
+
+size_t
+__forceinline
+WDF_ALIGN_SIZE_UP(
+ size_t Length,
+ size_t AlignTo
+ )
+{
+ return WDF_ALIGN_SIZE_DOWN(Length + AlignTo - 1, AlignTo);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 167 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfcore.h"
+
+
+
+#line 171 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfcore.h"
+
+
+
+
+#line 176 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfcore.h"
+
+#line 84 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfdriver.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _WDF_DRIVER_INIT_FLAGS {
+ WdfDriverInitNonPnpDriver = 0x00000001,
+ WdfDriverInitNoDispatchOverride = 0x00000002,
+ WdfVerifyOn = 0x00000004,
+ WdfVerifierOn = 0x00000008,
+ WdfDriverInitCompanion = 0x00000010,
+} WDF_DRIVER_INIT_FLAGS;
+
+
+
+
+
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DRIVER_DEVICE_ADD(
+
+ WDFDRIVER Driver,
+
+ PWDFDEVICE_INIT DeviceInit
+ );
+
+typedef EVT_WDF_DRIVER_DEVICE_ADD *PFN_WDF_DRIVER_DEVICE_ADD;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_DRIVER_UNLOAD(
+
+ WDFDRIVER Driver
+ );
+
+typedef EVT_WDF_DRIVER_UNLOAD *PFN_WDF_DRIVER_UNLOAD;
+
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_TRACE_CALLBACK(
+
+ UCHAR minorFunction,
+
+ PVOID dataPath,
+
+ ULONG bufferLength,
+
+ PVOID buffer,
+
+ PVOID context,
+
+ PULONG size
+ );
+
+typedef EVT_WDF_TRACE_CALLBACK *PFN_WDF_TRACE_CALLBACK;
+
+typedef struct _WDF_DRIVER_CONFIG {
+
+
+
+ ULONG Size;
+
+
+
+
+ PFN_WDF_DRIVER_DEVICE_ADD EvtDriverDeviceAdd;
+
+ PFN_WDF_DRIVER_UNLOAD EvtDriverUnload;
+
+
+
+
+ ULONG DriverInitFlags;
+
+
+
+
+
+ ULONG DriverPoolTag;
+
+} WDF_DRIVER_CONFIG, *PWDF_DRIVER_CONFIG;
+
+void
+__forceinline
+WDF_DRIVER_CONFIG_INIT(
+ PWDF_DRIVER_CONFIG Config,
+ PFN_WDF_DRIVER_DEVICE_ADD EvtDriverDeviceAdd
+ )
+{
+ memset((Config),0,(sizeof(WDF_DRIVER_CONFIG)));
+
+ Config->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_DRIVER_CONFIG < WdfStructureCount) ? WdfStructures[INDEX_WDF_DRIVER_CONFIG] : (size_t)(-1) ) : sizeof(WDF_DRIVER_CONFIG) );
+ Config->EvtDriverDeviceAdd = EvtDriverDeviceAdd;
+}
+
+typedef struct _WDF_DRIVER_VERSION_AVAILABLE_PARAMS {
+
+
+
+ ULONG Size;
+
+
+
+
+ ULONG MajorVersion;
+
+
+
+
+ ULONG MinorVersion;
+
+} WDF_DRIVER_VERSION_AVAILABLE_PARAMS, *PWDF_DRIVER_VERSION_AVAILABLE_PARAMS;
+
+void
+__forceinline
+WDF_DRIVER_VERSION_AVAILABLE_PARAMS_INIT(
+ PWDF_DRIVER_VERSION_AVAILABLE_PARAMS Params,
+ ULONG MajorVersion,
+ ULONG MinorVersion
+ )
+{
+ memset((Params),0,(sizeof(WDF_DRIVER_VERSION_AVAILABLE_PARAMS)));
+
+ Params->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_DRIVER_VERSION_AVAILABLE_PARAMS < WdfStructureCount) ? WdfStructures[INDEX_WDF_DRIVER_VERSION_AVAILABLE_PARAMS] : (size_t)(-1) ) : sizeof(WDF_DRIVER_VERSION_AVAILABLE_PARAMS) );
+ Params->MajorVersion = MajorVersion;
+ Params->MinorVersion = MinorVersion;
+}
+
+WDFDRIVER
+__forceinline
+WdfGetDriver(
+ void
+ )
+{
+ return WdfDriverGlobals->Driver;
+}
+
+
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDRIVERCREATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PDRIVER_OBJECT DriverObject,
+
+ PCUNICODE_STRING RegistryPath,
+
+ PWDF_OBJECT_ATTRIBUTES DriverAttributes,
+
+ PWDF_DRIVER_CONFIG DriverConfig,
+
+ WDFDRIVER* Driver
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDriverCreate(
+
+ PDRIVER_OBJECT DriverObject,
+
+ PCUNICODE_STRING RegistryPath,
+
+ PWDF_OBJECT_ATTRIBUTES DriverAttributes,
+
+ PWDF_DRIVER_CONFIG DriverConfig,
+
+ WDFDRIVER* Driver
+ )
+{
+ return ((PFN_WDFDRIVERCREATE) WdfFunctions_01033[WdfDriverCreateTableIndex])(WdfDriverGlobals, DriverObject, RegistryPath, DriverAttributes, DriverConfig, Driver);
+}
+
+
+
+
+typedef
+
+
+PWSTR
+(__stdcall *PFN_WDFDRIVERGETREGISTRYPATH)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDRIVER Driver
+ );
+
+
+__forceinline
+PWSTR
+WdfDriverGetRegistryPath(
+
+ WDFDRIVER Driver
+ )
+{
+ return ((PFN_WDFDRIVERGETREGISTRYPATH) WdfFunctions_01033[WdfDriverGetRegistryPathTableIndex])(WdfDriverGlobals, Driver);
+}
+
+
+
+
+typedef
+
+
+PDRIVER_OBJECT
+(__stdcall *PFN_WDFDRIVERWDMGETDRIVEROBJECT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDRIVER Driver
+ );
+
+
+__forceinline
+PDRIVER_OBJECT
+WdfDriverWdmGetDriverObject(
+
+ WDFDRIVER Driver
+ )
+{
+ return ((PFN_WDFDRIVERWDMGETDRIVEROBJECT) WdfFunctions_01033[WdfDriverWdmGetDriverObjectTableIndex])(WdfDriverGlobals, Driver);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDRIVEROPENPARAMETERSREGISTRYKEY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDRIVER Driver,
+
+ ACCESS_MASK DesiredAccess,
+
+ PWDF_OBJECT_ATTRIBUTES KeyAttributes,
+
+ WDFKEY* Key
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDriverOpenParametersRegistryKey(
+
+ WDFDRIVER Driver,
+
+ ACCESS_MASK DesiredAccess,
+
+ PWDF_OBJECT_ATTRIBUTES KeyAttributes,
+
+ WDFKEY* Key
+ )
+{
+ return ((PFN_WDFDRIVEROPENPARAMETERSREGISTRYKEY) WdfFunctions_01033[WdfDriverOpenParametersRegistryKeyTableIndex])(WdfDriverGlobals, Driver, DesiredAccess, KeyAttributes, Key);
+}
+
+
+
+
+typedef
+
+
+WDFDRIVER
+(__stdcall *PFN_WDFWDMDRIVERGETWDFDRIVERHANDLE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PDRIVER_OBJECT DriverObject
+ );
+
+
+__forceinline
+WDFDRIVER
+WdfWdmDriverGetWdfDriverHandle(
+
+ PDRIVER_OBJECT DriverObject
+ )
+{
+ return ((PFN_WDFWDMDRIVERGETWDFDRIVERHANDLE) WdfFunctions_01033[WdfWdmDriverGetWdfDriverHandleTableIndex])(WdfDriverGlobals, DriverObject);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDRIVERREGISTERTRACEINFO)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PDRIVER_OBJECT DriverObject,
+
+ PFN_WDF_TRACE_CALLBACK EvtTraceCallback,
+
+ PVOID ControlBlock
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDriverRegisterTraceInfo(
+
+ PDRIVER_OBJECT DriverObject,
+
+ PFN_WDF_TRACE_CALLBACK EvtTraceCallback,
+
+ PVOID ControlBlock
+ )
+{
+ return ((PFN_WDFDRIVERREGISTERTRACEINFO) WdfFunctions_01033[WdfDriverRegisterTraceInfoTableIndex])(WdfDriverGlobals, DriverObject, EvtTraceCallback, ControlBlock);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDRIVERRETRIEVEVERSIONSTRING)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDRIVER Driver,
+
+ WDFSTRING String
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDriverRetrieveVersionString(
+
+ WDFDRIVER Driver,
+
+ WDFSTRING String
+ )
+{
+ return ((PFN_WDFDRIVERRETRIEVEVERSIONSTRING) WdfFunctions_01033[WdfDriverRetrieveVersionStringTableIndex])(WdfDriverGlobals, Driver, String);
+}
+
+
+
+
+typedef
+
+
+
+BOOLEAN
+(__stdcall *PFN_WDFDRIVERISVERSIONAVAILABLE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDRIVER Driver,
+
+ PWDF_DRIVER_VERSION_AVAILABLE_PARAMS VersionAvailableParams
+ );
+
+
+
+__forceinline
+BOOLEAN
+WdfDriverIsVersionAvailable(
+
+ WDFDRIVER Driver,
+
+ PWDF_DRIVER_VERSION_AVAILABLE_PARAMS VersionAvailableParams
+ )
+{
+ return ((PFN_WDFDRIVERISVERSIONAVAILABLE) WdfFunctions_01033[WdfDriverIsVersionAvailableTableIndex])(WdfDriverGlobals, Driver, VersionAvailableParams);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDRIVERERRORREPORTAPIMISSING)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDRIVER Driver,
+
+ PCWSTR FrameworkExtensionName,
+
+ ULONG ApiIndex,
+
+ BOOLEAN DoesApiReturnNtstatus
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDriverErrorReportApiMissing(
+
+ WDFDRIVER Driver,
+
+ PCWSTR FrameworkExtensionName,
+
+ ULONG ApiIndex,
+
+ BOOLEAN DoesApiReturnNtstatus
+ )
+{
+ return ((PFN_WDFDRIVERERRORREPORTAPIMISSING) WdfFunctions_01033[WdfDriverErrorReportApiMissingTableIndex])(WdfDriverGlobals, Driver, FrameworkExtensionName, ApiIndex, DoesApiReturnNtstatus);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDRIVEROPENPERSISTENTSTATEREGISTRYKEY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDRIVER Driver,
+
+ ACCESS_MASK DesiredAccess,
+
+ PWDF_OBJECT_ATTRIBUTES KeyAttributes,
+
+ WDFKEY* Key
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDriverOpenPersistentStateRegistryKey(
+
+ WDFDRIVER Driver,
+
+ ACCESS_MASK DesiredAccess,
+
+ PWDF_OBJECT_ATTRIBUTES KeyAttributes,
+
+ WDFKEY* Key
+ )
+{
+ return ((PFN_WDFDRIVEROPENPERSISTENTSTATEREGISTRYKEY) WdfFunctions_01033[WdfDriverOpenPersistentStateRegistryKeyTableIndex])(WdfDriverGlobals, Driver, DesiredAccess, KeyAttributes, Key);
+}
+
+
+
+
+#line 540 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfdriver.h"
+
+
+
+
+#line 545 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfdriver.h"
+
+#line 86 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\WdfQueryInterface.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_PROCESS_QUERY_INTERFACE_REQUEST(
+
+ WDFDEVICE Device,
+
+ LPGUID InterfaceType,
+
+ PINTERFACE ExposedInterface,
+
+ PVOID ExposedInterfaceSpecificData
+ );
+
+typedef EVT_WDF_DEVICE_PROCESS_QUERY_INTERFACE_REQUEST *PFN_WDF_DEVICE_PROCESS_QUERY_INTERFACE_REQUEST;
+
+typedef struct _WDF_QUERY_INTERFACE_CONFIG {
+
+
+
+ ULONG Size;
+
+
+
+
+
+ PINTERFACE Interface;
+
+
+
+
+ const GUID * InterfaceType;
+
+
+
+
+
+ BOOLEAN SendQueryToParentStack;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PFN_WDF_DEVICE_PROCESS_QUERY_INTERFACE_REQUEST EvtDeviceProcessQueryInterfaceRequest;
+
+
+
+
+
+
+
+
+
+
+ BOOLEAN ImportInterface;
+
+} WDF_QUERY_INTERFACE_CONFIG, *PWDF_QUERY_INTERFACE_CONFIG;
+
+void
+__forceinline
+WDF_QUERY_INTERFACE_CONFIG_INIT(
+ PWDF_QUERY_INTERFACE_CONFIG InterfaceConfig,
+ PINTERFACE Interface,
+ const GUID* InterfaceType,
+ PFN_WDF_DEVICE_PROCESS_QUERY_INTERFACE_REQUEST EvtDeviceProcessQueryInterfaceRequest
+ )
+{
+ memset((InterfaceConfig),0,(sizeof(WDF_QUERY_INTERFACE_CONFIG)));
+
+ InterfaceConfig->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_QUERY_INTERFACE_CONFIG < WdfStructureCount) ? WdfStructures[INDEX_WDF_QUERY_INTERFACE_CONFIG] : (size_t)(-1) ) : sizeof(WDF_QUERY_INTERFACE_CONFIG) );
+ InterfaceConfig->Interface = Interface;
+ InterfaceConfig->InterfaceType = InterfaceType;
+ InterfaceConfig->EvtDeviceProcessQueryInterfaceRequest =
+ EvtDeviceProcessQueryInterfaceRequest;
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEADDQUERYINTERFACE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PWDF_QUERY_INTERFACE_CONFIG InterfaceConfig
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceAddQueryInterface(
+
+ WDFDEVICE Device,
+
+ PWDF_QUERY_INTERFACE_CONFIG InterfaceConfig
+ )
+{
+ return ((PFN_WDFDEVICEADDQUERYINTERFACE) WdfFunctions_01033[WdfDeviceAddQueryInterfaceTableIndex])(WdfDriverGlobals, Device, InterfaceConfig);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+void
+__forceinline
+WdfDeviceInterfaceReferenceNoOp(
+ PVOID Context
+ )
+{
+ (Context);
+}
+
+void
+__forceinline
+WdfDeviceInterfaceDereferenceNoOp(
+ PVOID Context
+ )
+{
+ (Context);
+}
+
+#line 210 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\WdfQueryInterface.h"
+
+
+
+
+
+#line 216 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\WdfQueryInterface.h"
+
+#line 89 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfmemory.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _WDF_MEMORY_DESCRIPTOR_TYPE {
+ WdfMemoryDescriptorTypeInvalid = 0,
+ WdfMemoryDescriptorTypeBuffer,
+ WdfMemoryDescriptorTypeMdl,
+ WdfMemoryDescriptorTypeHandle,
+} WDF_MEMORY_DESCRIPTOR_TYPE;
+
+
+
+typedef struct _WDFMEMORY_OFFSET {
+
+
+
+ size_t BufferOffset;
+
+
+
+
+
+
+ size_t BufferLength;
+
+} WDFMEMORY_OFFSET, *PWDFMEMORY_OFFSET;
+
+typedef struct _WDF_MEMORY_DESCRIPTOR {
+ WDF_MEMORY_DESCRIPTOR_TYPE Type;
+
+ union {
+ struct {
+ PVOID Buffer;
+
+ ULONG Length;
+ } BufferType;
+
+ struct {
+ PMDL Mdl;
+
+ ULONG BufferLength;
+ } MdlType;
+
+ struct {
+ WDFMEMORY Memory;
+ PWDFMEMORY_OFFSET Offsets;
+ } HandleType;
+ } u;
+
+} WDF_MEMORY_DESCRIPTOR, *PWDF_MEMORY_DESCRIPTOR;
+
+void
+__forceinline
+WDF_MEMORY_DESCRIPTOR_INIT_BUFFER(
+ PWDF_MEMORY_DESCRIPTOR Descriptor,
+ PVOID Buffer,
+ ULONG BufferLength
+ )
+{
+ memset((Descriptor),0,(sizeof(WDF_MEMORY_DESCRIPTOR)));
+
+ Descriptor->Type = WdfMemoryDescriptorTypeBuffer;
+ Descriptor->u.BufferType.Buffer = Buffer;
+ Descriptor->u.BufferType.Length = BufferLength;
+}
+
+void
+__forceinline
+WDF_MEMORY_DESCRIPTOR_INIT_HANDLE(
+ PWDF_MEMORY_DESCRIPTOR Descriptor,
+ WDFMEMORY Memory,
+ PWDFMEMORY_OFFSET Offsets
+ )
+{
+ memset((Descriptor),0,(sizeof(WDF_MEMORY_DESCRIPTOR)));
+
+ Descriptor->Type = WdfMemoryDescriptorTypeHandle;
+ Descriptor->u.HandleType.Memory = Memory;
+ Descriptor->u.HandleType.Offsets = Offsets;
+}
+
+
+void
+__forceinline
+WDF_MEMORY_DESCRIPTOR_INIT_MDL(
+ PWDF_MEMORY_DESCRIPTOR Descriptor,
+ PMDL Mdl,
+ ULONG BufferLength
+ )
+{
+ memset((Descriptor),0,(sizeof(WDF_MEMORY_DESCRIPTOR)));
+
+ Descriptor->Type = WdfMemoryDescriptorTypeMdl;
+ Descriptor->u.MdlType.Mdl = Mdl;
+ Descriptor->u.MdlType.BufferLength = BufferLength;
+}
+
+
+
+
+typedef
+
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFMEMORYCREATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+
+ POOL_TYPE PoolType,
+
+ ULONG PoolTag,
+
+
+ size_t BufferSize,
+
+ WDFMEMORY* Memory,
+
+ PVOID* Buffer
+ );
+
+
+
+
+
+
+
+
+__forceinline
+NTSTATUS
+WdfMemoryCreate(
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+
+ POOL_TYPE PoolType,
+
+ ULONG PoolTag,
+
+
+ size_t BufferSize,
+
+ WDFMEMORY* Memory,
+
+ PVOID* Buffer
+ )
+{
+ return ((PFN_WDFMEMORYCREATE) WdfFunctions_01033[WdfMemoryCreateTableIndex])(WdfDriverGlobals, Attributes, PoolType, PoolTag, BufferSize, Memory, Buffer);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFMEMORYCREATEPREALLOCATED)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+ PVOID Buffer,
+
+
+ size_t BufferSize,
+
+ WDFMEMORY* Memory
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfMemoryCreatePreallocated(
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+ PVOID Buffer,
+
+
+ size_t BufferSize,
+
+ WDFMEMORY* Memory
+ )
+{
+ return ((PFN_WDFMEMORYCREATEPREALLOCATED) WdfFunctions_01033[WdfMemoryCreatePreallocatedTableIndex])(WdfDriverGlobals, Attributes, Buffer, BufferSize, Memory);
+}
+
+
+
+
+typedef
+
+
+PVOID
+(__stdcall *PFN_WDFMEMORYGETBUFFER)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFMEMORY Memory,
+
+ size_t* BufferSize
+ );
+
+
+__forceinline
+PVOID
+WdfMemoryGetBuffer(
+
+ WDFMEMORY Memory,
+
+ size_t* BufferSize
+ )
+{
+ return ((PFN_WDFMEMORYGETBUFFER) WdfFunctions_01033[WdfMemoryGetBufferTableIndex])(WdfDriverGlobals, Memory, BufferSize);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFMEMORYASSIGNBUFFER)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFMEMORY Memory,
+
+ PVOID Buffer,
+
+
+ size_t BufferSize
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfMemoryAssignBuffer(
+
+ WDFMEMORY Memory,
+
+ PVOID Buffer,
+
+
+ size_t BufferSize
+ )
+{
+ return ((PFN_WDFMEMORYASSIGNBUFFER) WdfFunctions_01033[WdfMemoryAssignBufferTableIndex])(WdfDriverGlobals, Memory, Buffer, BufferSize);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFMEMORYCOPYTOBUFFER)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFMEMORY SourceMemory,
+
+ size_t SourceOffset,
+
+ PVOID Buffer,
+
+
+ size_t NumBytesToCopyTo
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfMemoryCopyToBuffer(
+
+ WDFMEMORY SourceMemory,
+
+ size_t SourceOffset,
+
+ PVOID Buffer,
+
+
+ size_t NumBytesToCopyTo
+ )
+{
+ return ((PFN_WDFMEMORYCOPYTOBUFFER) WdfFunctions_01033[WdfMemoryCopyToBufferTableIndex])(WdfDriverGlobals, SourceMemory, SourceOffset, Buffer, NumBytesToCopyTo);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFMEMORYCOPYFROMBUFFER)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFMEMORY DestinationMemory,
+
+ size_t DestinationOffset,
+
+ PVOID Buffer,
+
+
+ size_t NumBytesToCopyFrom
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfMemoryCopyFromBuffer(
+
+ WDFMEMORY DestinationMemory,
+
+ size_t DestinationOffset,
+
+ PVOID Buffer,
+
+
+ size_t NumBytesToCopyFrom
+ )
+{
+ return ((PFN_WDFMEMORYCOPYFROMBUFFER) WdfFunctions_01033[WdfMemoryCopyFromBufferTableIndex])(WdfDriverGlobals, DestinationMemory, DestinationOffset, Buffer, NumBytesToCopyFrom);
+}
+
+
+
+
+typedef
+
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFLOOKASIDELISTCREATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDF_OBJECT_ATTRIBUTES LookasideAttributes,
+
+
+ size_t BufferSize,
+
+
+ POOL_TYPE PoolType,
+
+ PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
+
+ ULONG PoolTag,
+
+ WDFLOOKASIDE* Lookaside
+ );
+
+
+
+
+__forceinline
+NTSTATUS
+WdfLookasideListCreate(
+
+ PWDF_OBJECT_ATTRIBUTES LookasideAttributes,
+
+
+ size_t BufferSize,
+
+
+ POOL_TYPE PoolType,
+
+ PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
+
+ ULONG PoolTag,
+
+ WDFLOOKASIDE* Lookaside
+ )
+{
+ return ((PFN_WDFLOOKASIDELISTCREATE) WdfFunctions_01033[WdfLookasideListCreateTableIndex])(WdfDriverGlobals, LookasideAttributes, BufferSize, PoolType, MemoryAttributes, PoolTag, Lookaside);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFMEMORYCREATEFROMLOOKASIDE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFLOOKASIDE Lookaside,
+
+ WDFMEMORY* Memory
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfMemoryCreateFromLookaside(
+
+ WDFLOOKASIDE Lookaside,
+
+ WDFMEMORY* Memory
+ )
+{
+ return ((PFN_WDFMEMORYCREATEFROMLOOKASIDE) WdfFunctions_01033[WdfMemoryCreateFromLookasideTableIndex])(WdfDriverGlobals, Lookaside, Memory);
+}
+
+
+
+#line 479 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfmemory.h"
+
+
+
+
+#line 484 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfmemory.h"
+
+#line 90 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfchildlist.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _WDF_CHILD_LIST_RETRIEVE_DEVICE_STATUS {
+ WdfChildListRetrieveDeviceUndefined = 0,
+ WdfChildListRetrieveDeviceSuccess,
+ WdfChildListRetrieveDeviceNotYetCreated,
+ WdfChildListRetrieveDeviceNoSuchDevice,
+} WDF_CHILD_LIST_RETRIEVE_DEVICE_STATUS, *PWDF_CHILD_LIST_RETRIEVE_DEVICE_STATUS;
+
+typedef enum _WDF_RETRIEVE_CHILD_FLAGS {
+ WdfRetrieveUnspecified = 0x0000,
+ WdfRetrievePresentChildren = 0x0001,
+ WdfRetrieveMissingChildren = 0x0002,
+ WdfRetrievePendingChildren = 0x0004,
+ WdfRetrieveAddedChildren = (WdfRetrievePresentChildren | WdfRetrievePendingChildren),
+ WdfRetrieveAllChildren = (WdfRetrievePresentChildren | WdfRetrievePendingChildren | WdfRetrieveMissingChildren),
+} WDF_RETRIEVE_CHILD_FLAGS;
+
+
+
+typedef struct _WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER {
+
+
+
+
+
+
+ ULONG IdentificationDescriptionSize;
+} WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER,
+ *PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER;
+
+void
+__forceinline
+WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER_INIT(
+ PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER Header,
+ ULONG IdentificationDescriptionSize
+ )
+{
+ memset((Header),0,(IdentificationDescriptionSize));
+ Header->IdentificationDescriptionSize = IdentificationDescriptionSize;
+}
+
+typedef struct _WDF_CHILD_ADDRESS_DESCRIPTION_HEADER {
+
+
+
+
+
+
+ ULONG AddressDescriptionSize;
+} WDF_CHILD_ADDRESS_DESCRIPTION_HEADER,
+ *PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER;
+
+void
+__forceinline
+WDF_CHILD_ADDRESS_DESCRIPTION_HEADER_INIT(
+ PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER Header,
+ ULONG AddressDescriptionSize
+ )
+{
+ memset((Header),0,(AddressDescriptionSize));
+ Header->AddressDescriptionSize = AddressDescriptionSize;
+}
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_CHILD_LIST_CREATE_DEVICE(
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription,
+
+ PWDFDEVICE_INIT ChildInit
+ );
+
+typedef EVT_WDF_CHILD_LIST_CREATE_DEVICE *PFN_WDF_CHILD_LIST_CREATE_DEVICE;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_CHILD_LIST_SCAN_FOR_CHILDREN(
+
+ WDFCHILDLIST ChildList
+ );
+
+typedef EVT_WDF_CHILD_LIST_SCAN_FOR_CHILDREN *PFN_WDF_CHILD_LIST_SCAN_FOR_CHILDREN;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COPY(
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER SourceIdentificationDescription,
+
+ PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER DestinationIdentificationDescription
+ );
+
+typedef EVT_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COPY *PFN_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COPY;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_DUPLICATE(
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER SourceIdentificationDescription,
+
+ PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER DestinationIdentificationDescription
+ );
+
+typedef EVT_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_DUPLICATE *PFN_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_DUPLICATE;
+
+typedef
+
+
+
+BOOLEAN
+__stdcall
+EVT_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COMPARE(
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER FirstIdentificationDescription,
+
+ PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER SecondIdentificationDescription
+ );
+
+typedef EVT_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COMPARE *PFN_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COMPARE;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_CLEANUP(
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription
+ );
+
+typedef EVT_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_CLEANUP *PFN_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_CLEANUP;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_COPY(
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER SourceAddressDescription,
+
+ PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER DestinationAddressDescription
+ );
+
+typedef EVT_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_COPY *PFN_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_COPY;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_DUPLICATE(
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER SourceAddressDescription,
+
+ PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER DestinationAddressDescription
+ );
+
+typedef EVT_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_DUPLICATE *PFN_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_DUPLICATE;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_CLEANUP(
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription
+ );
+
+typedef EVT_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_CLEANUP *PFN_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_CLEANUP;
+
+typedef
+
+
+
+BOOLEAN
+__stdcall
+EVT_WDF_CHILD_LIST_DEVICE_REENUMERATED(
+
+ WDFCHILDLIST ChildList,
+
+ WDFDEVICE OldDevice,
+
+ PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER OldAddressDescription,
+
+ PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER NewAddressDescription
+ );
+
+typedef EVT_WDF_CHILD_LIST_DEVICE_REENUMERATED *PFN_WDF_CHILD_LIST_DEVICE_REENUMERATED;
+
+typedef struct _WDF_CHILD_RETRIEVE_INFO {
+
+
+
+ ULONG Size;
+
+
+
+
+ PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription;
+
+
+
+
+ PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription;
+
+
+
+
+ WDF_CHILD_LIST_RETRIEVE_DEVICE_STATUS Status;
+
+
+
+
+
+ PFN_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COMPARE EvtChildListIdentificationDescriptionCompare;
+
+} WDF_CHILD_RETRIEVE_INFO, *PWDF_CHILD_RETRIEVE_INFO;
+
+void
+__forceinline
+WDF_CHILD_RETRIEVE_INFO_INIT(
+ PWDF_CHILD_RETRIEVE_INFO Info,
+ PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription
+ )
+{
+ memset((Info),0,(sizeof(WDF_CHILD_RETRIEVE_INFO)));
+
+ Info->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_CHILD_RETRIEVE_INFO < WdfStructureCount) ? WdfStructures[INDEX_WDF_CHILD_RETRIEVE_INFO] : (size_t)(-1) ) : sizeof(WDF_CHILD_RETRIEVE_INFO) );
+ Info->IdentificationDescription = IdentificationDescription;
+}
+
+typedef struct _WDF_CHILD_LIST_CONFIG {
+
+
+
+ ULONG Size;
+
+
+
+
+
+ ULONG IdentificationDescriptionSize;
+
+
+
+
+
+ ULONG AddressDescriptionSize;
+
+
+
+
+
+ PFN_WDF_CHILD_LIST_CREATE_DEVICE EvtChildListCreateDevice;
+
+
+
+
+
+
+ PFN_WDF_CHILD_LIST_SCAN_FOR_CHILDREN EvtChildListScanForChildren;
+
+
+
+
+
+
+
+ PFN_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COPY EvtChildListIdentificationDescriptionCopy;
+
+
+
+
+
+
+ PFN_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_DUPLICATE EvtChildListIdentificationDescriptionDuplicate;
+
+
+
+
+
+
+ PFN_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_CLEANUP EvtChildListIdentificationDescriptionCleanup;
+
+
+
+
+
+
+
+
+ PFN_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COMPARE EvtChildListIdentificationDescriptionCompare;
+
+
+
+
+
+
+
+ PFN_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_COPY EvtChildListAddressDescriptionCopy;
+
+
+
+
+
+
+ PFN_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_DUPLICATE EvtChildListAddressDescriptionDuplicate;
+
+
+
+
+
+
+ PFN_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_CLEANUP EvtChildListAddressDescriptionCleanup;
+
+
+
+
+
+
+ PFN_WDF_CHILD_LIST_DEVICE_REENUMERATED EvtChildListDeviceReenumerated;
+
+} WDF_CHILD_LIST_CONFIG, *PWDF_CHILD_LIST_CONFIG;
+
+void
+__forceinline
+WDF_CHILD_LIST_CONFIG_INIT(
+ PWDF_CHILD_LIST_CONFIG Config,
+ ULONG IdentificationDescriptionSize,
+ PFN_WDF_CHILD_LIST_CREATE_DEVICE EvtChildListCreateDevice
+ )
+{
+ memset((Config),0,(sizeof(WDF_CHILD_LIST_CONFIG)));
+
+ Config->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_CHILD_LIST_CONFIG < WdfStructureCount) ? WdfStructures[INDEX_WDF_CHILD_LIST_CONFIG] : (size_t)(-1) ) : sizeof(WDF_CHILD_LIST_CONFIG) );
+ Config->IdentificationDescriptionSize = IdentificationDescriptionSize;
+ Config->EvtChildListCreateDevice = EvtChildListCreateDevice;
+}
+
+typedef struct _WDF_CHILD_LIST_ITERATOR {
+
+
+
+ ULONG Size;
+
+
+
+
+
+
+ ULONG Flags;
+
+
+
+
+ PVOID Reserved[4];
+
+} WDF_CHILD_LIST_ITERATOR, *PWDF_CHILD_LIST_ITERATOR;
+
+void
+__forceinline
+WDF_CHILD_LIST_ITERATOR_INIT(
+ PWDF_CHILD_LIST_ITERATOR Iterator,
+ ULONG Flags
+ )
+{
+ memset((Iterator),0,(sizeof(WDF_CHILD_LIST_ITERATOR)));
+
+ Iterator->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_CHILD_LIST_ITERATOR < WdfStructureCount) ? WdfStructures[INDEX_WDF_CHILD_LIST_ITERATOR] : (size_t)(-1) ) : sizeof(WDF_CHILD_LIST_ITERATOR) );
+ Iterator->Flags = Flags;
+}
+
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFCHILDLISTCREATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PWDF_CHILD_LIST_CONFIG Config,
+
+ PWDF_OBJECT_ATTRIBUTES ChildListAttributes,
+
+ WDFCHILDLIST* ChildList
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfChildListCreate(
+
+ WDFDEVICE Device,
+
+ PWDF_CHILD_LIST_CONFIG Config,
+
+ PWDF_OBJECT_ATTRIBUTES ChildListAttributes,
+
+ WDFCHILDLIST* ChildList
+ )
+{
+ return ((PFN_WDFCHILDLISTCREATE) WdfFunctions_01033[WdfChildListCreateTableIndex])(WdfDriverGlobals, Device, Config, ChildListAttributes, ChildList);
+}
+
+
+
+
+typedef
+
+
+WDFDEVICE
+(__stdcall *PFN_WDFCHILDLISTGETDEVICE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCHILDLIST ChildList
+ );
+
+
+__forceinline
+WDFDEVICE
+WdfChildListGetDevice(
+
+ WDFCHILDLIST ChildList
+ )
+{
+ return ((PFN_WDFCHILDLISTGETDEVICE) WdfFunctions_01033[WdfChildListGetDeviceTableIndex])(WdfDriverGlobals, ChildList);
+}
+
+
+
+
+typedef
+
+
+
+WDFDEVICE
+(__stdcall *PFN_WDFCHILDLISTRETRIEVEPDO)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_RETRIEVE_INFO RetrieveInfo
+ );
+
+
+
+__forceinline
+WDFDEVICE
+WdfChildListRetrievePdo(
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_RETRIEVE_INFO RetrieveInfo
+ )
+{
+ return ((PFN_WDFCHILDLISTRETRIEVEPDO) WdfFunctions_01033[WdfChildListRetrievePdoTableIndex])(WdfDriverGlobals, ChildList, RetrieveInfo);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFCHILDLISTRETRIEVEADDRESSDESCRIPTION)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription,
+
+ PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfChildListRetrieveAddressDescription(
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription,
+
+ PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription
+ )
+{
+ return ((PFN_WDFCHILDLISTRETRIEVEADDRESSDESCRIPTION) WdfFunctions_01033[WdfChildListRetrieveAddressDescriptionTableIndex])(WdfDriverGlobals, ChildList, IdentificationDescription, AddressDescription);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFCHILDLISTBEGINSCAN)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCHILDLIST ChildList
+ );
+
+
+__forceinline
+void
+WdfChildListBeginScan(
+
+ WDFCHILDLIST ChildList
+ )
+{
+ ((PFN_WDFCHILDLISTBEGINSCAN) WdfFunctions_01033[WdfChildListBeginScanTableIndex])(WdfDriverGlobals, ChildList);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFCHILDLISTENDSCAN)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCHILDLIST ChildList
+ );
+
+
+__forceinline
+void
+WdfChildListEndScan(
+
+ WDFCHILDLIST ChildList
+ )
+{
+ ((PFN_WDFCHILDLISTENDSCAN) WdfFunctions_01033[WdfChildListEndScanTableIndex])(WdfDriverGlobals, ChildList);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFCHILDLISTBEGINITERATION)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_LIST_ITERATOR Iterator
+ );
+
+
+__forceinline
+void
+WdfChildListBeginIteration(
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_LIST_ITERATOR Iterator
+ )
+{
+ ((PFN_WDFCHILDLISTBEGINITERATION) WdfFunctions_01033[WdfChildListBeginIterationTableIndex])(WdfDriverGlobals, ChildList, Iterator);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFCHILDLISTRETRIEVENEXTDEVICE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_LIST_ITERATOR Iterator,
+
+ WDFDEVICE* Device,
+
+ PWDF_CHILD_RETRIEVE_INFO Info
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfChildListRetrieveNextDevice(
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_LIST_ITERATOR Iterator,
+
+ WDFDEVICE* Device,
+
+ PWDF_CHILD_RETRIEVE_INFO Info
+ )
+{
+ return ((PFN_WDFCHILDLISTRETRIEVENEXTDEVICE) WdfFunctions_01033[WdfChildListRetrieveNextDeviceTableIndex])(WdfDriverGlobals, ChildList, Iterator, Device, Info);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFCHILDLISTENDITERATION)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_LIST_ITERATOR Iterator
+ );
+
+
+__forceinline
+void
+WdfChildListEndIteration(
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_LIST_ITERATOR Iterator
+ )
+{
+ ((PFN_WDFCHILDLISTENDITERATION) WdfFunctions_01033[WdfChildListEndIterationTableIndex])(WdfDriverGlobals, ChildList, Iterator);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFCHILDLISTADDORUPDATECHILDDESCRIPTIONASPRESENT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription,
+
+ PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfChildListAddOrUpdateChildDescriptionAsPresent(
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription,
+
+ PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription
+ )
+{
+ return ((PFN_WDFCHILDLISTADDORUPDATECHILDDESCRIPTIONASPRESENT) WdfFunctions_01033[WdfChildListAddOrUpdateChildDescriptionAsPresentTableIndex])(WdfDriverGlobals, ChildList, IdentificationDescription, AddressDescription);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFCHILDLISTUPDATECHILDDESCRIPTIONASMISSING)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfChildListUpdateChildDescriptionAsMissing(
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription
+ )
+{
+ return ((PFN_WDFCHILDLISTUPDATECHILDDESCRIPTIONASMISSING) WdfFunctions_01033[WdfChildListUpdateChildDescriptionAsMissingTableIndex])(WdfDriverGlobals, ChildList, IdentificationDescription);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFCHILDLISTUPDATEALLCHILDDESCRIPTIONSASPRESENT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCHILDLIST ChildList
+ );
+
+
+__forceinline
+void
+WdfChildListUpdateAllChildDescriptionsAsPresent(
+
+ WDFCHILDLIST ChildList
+ )
+{
+ ((PFN_WDFCHILDLISTUPDATEALLCHILDDESCRIPTIONSASPRESENT) WdfFunctions_01033[WdfChildListUpdateAllChildDescriptionsAsPresentTableIndex])(WdfDriverGlobals, ChildList);
+}
+
+
+
+
+typedef
+
+
+BOOLEAN
+(__stdcall *PFN_WDFCHILDLISTREQUESTCHILDEJECT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription
+ );
+
+
+__forceinline
+BOOLEAN
+WdfChildListRequestChildEject(
+
+ WDFCHILDLIST ChildList,
+
+ PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription
+ )
+{
+ return ((PFN_WDFCHILDLISTREQUESTCHILDEJECT) WdfFunctions_01033[WdfChildListRequestChildEjectTableIndex])(WdfDriverGlobals, ChildList, IdentificationDescription);
+}
+
+
+
+#line 862 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfchildlist.h"
+
+
+
+
+
+#line 868 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfchildlist.h"
+
+#line 91 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdffileobject.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+
+PUNICODE_STRING
+(__stdcall *PFN_WDFFILEOBJECTGETFILENAME)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFFILEOBJECT FileObject
+ );
+
+
+__forceinline
+PUNICODE_STRING
+WdfFileObjectGetFileName(
+
+ WDFFILEOBJECT FileObject
+ )
+{
+ return ((PFN_WDFFILEOBJECTGETFILENAME) WdfFunctions_01033[WdfFileObjectGetFileNameTableIndex])(WdfDriverGlobals, FileObject);
+}
+
+
+
+
+typedef
+
+
+ULONG
+(__stdcall *PFN_WDFFILEOBJECTGETFLAGS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFFILEOBJECT FileObject
+ );
+
+
+__forceinline
+ULONG
+WdfFileObjectGetFlags(
+
+ WDFFILEOBJECT FileObject
+ )
+{
+ return ((PFN_WDFFILEOBJECTGETFLAGS) WdfFunctions_01033[WdfFileObjectGetFlagsTableIndex])(WdfDriverGlobals, FileObject);
+}
+
+
+
+
+typedef
+
+
+WDFDEVICE
+(__stdcall *PFN_WDFFILEOBJECTGETDEVICE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFFILEOBJECT FileObject
+ );
+
+
+__forceinline
+WDFDEVICE
+WdfFileObjectGetDevice(
+
+ WDFFILEOBJECT FileObject
+ )
+{
+ return ((PFN_WDFFILEOBJECTGETDEVICE) WdfFunctions_01033[WdfFileObjectGetDeviceTableIndex])(WdfDriverGlobals, FileObject);
+}
+
+
+
+
+typedef
+
+
+ULONG
+(__stdcall *PFN_WDFFILEOBJECTGETINITIATORPROCESSID)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFFILEOBJECT FileObject
+ );
+
+
+__forceinline
+ULONG
+WdfFileObjectGetInitiatorProcessId(
+
+ WDFFILEOBJECT FileObject
+ )
+{
+ return ((PFN_WDFFILEOBJECTGETINITIATORPROCESSID) WdfFunctions_01033[WdfFileObjectGetInitiatorProcessIdTableIndex])(WdfDriverGlobals, FileObject);
+}
+
+
+
+
+typedef
+
+
+PFILE_OBJECT
+(__stdcall *PFN_WDFFILEOBJECTWDMGETFILEOBJECT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFFILEOBJECT FileObject
+ );
+
+
+__forceinline
+PFILE_OBJECT
+WdfFileObjectWdmGetFileObject(
+
+ WDFFILEOBJECT FileObject
+ )
+{
+ return ((PFN_WDFFILEOBJECTWDMGETFILEOBJECT) WdfFunctions_01033[WdfFileObjectWdmGetFileObjectTableIndex])(WdfDriverGlobals, FileObject);
+}
+
+
+
+
+
+#line 185 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdffileobject.h"
+
+
+
+
+#line 190 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdffileobject.h"
+
+#line 92 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfdevice.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\devpropdef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma region Desktop Family or OneCore Family or Games Family
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 203 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\devpropdef.h"
+
+
+
+
+#line 208 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\devpropdef.h"
+
+#line 210 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\devpropdef.h"
+#pragma endregion
+#pragma external_header(pop)
+#line 49 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfdevice.h"
+
+
+
+
+
+
+typedef enum _WDF_DEVICE_STATE_FLAGS {
+ WdfDevStateNP = 0x8000,
+} WDF_DEVICE_STATE_FLAGS;
+
+
+
+
+typedef enum _WDF_DEVICE_PNP_STATE {
+ WdfDevStatePnpInvalid = 0x00,
+ WdfDevStatePnpObjectCreated = 0x100,
+ WdfDevStatePnpCheckForDevicePresence = 0x101,
+ WdfDevStatePnpEjectFailed = 0x102,
+ WdfDevStatePnpEjectHardware = 0x103,
+ WdfDevStatePnpEjectedWaitingForRemove = 0x104,
+ WdfDevStatePnpInit = 0x105,
+ WdfDevStatePnpInitStarting = 0x106,
+ WdfDevStatePnpInitSurpriseRemoved = 0x107,
+ WdfDevStatePnpHardwareAvailable = 0x108,
+ WdfDevStatePnpEnableInterfaces = 0x109,
+ WdfDevStatePnpHardwareAvailablePowerPolicyFailed = 0x10A,
+ WdfDevStatePnpQueryRemoveAskDriver = 0x10B,
+ WdfDevStatePnpQueryRemovePending = 0x10C,
+ WdfDevStatePnpQueryRemoveStaticCheck = 0x10D,
+ WdfDevStatePnpQueriedRemoving = 0x10E,
+ WdfDevStatePnpQueryStopAskDriver = 0x10F,
+ WdfDevStatePnpQueryStopPending = 0x110,
+ WdfDevStatePnpQueryStopStaticCheck = 0x111,
+ WdfDevStatePnpQueryCanceled = 0x112,
+ WdfDevStatePnpRemoved = 0x113,
+ WdfDevStatePnpPdoRemoved = 0x114,
+ WdfDevStatePnpRemovedPdoWait = 0x115,
+ WdfDevStatePnpRemovedPdoSurpriseRemoved = 0x116,
+ WdfDevStatePnpRemovingDisableInterfaces = 0x117,
+ WdfDevStatePnpRestarting = 0x118,
+ WdfDevStatePnpStarted = 0x119,
+ WdfDevStatePnpStartedCancelStop = 0x11A,
+ WdfDevStatePnpStartedCancelRemove = 0x11B,
+ WdfDevStatePnpStartedRemoving = 0x11C,
+ WdfDevStatePnpStartingFromStopped = 0x11D,
+ WdfDevStatePnpStopped = 0x11E,
+ WdfDevStatePnpStoppedWaitForStartCompletion = 0x11F,
+ WdfDevStatePnpStartedStopping = 0x120,
+ WdfDevStatePnpSurpriseRemove = 0x121,
+ WdfDevStatePnpInitQueryRemove = 0x122,
+ WdfDevStatePnpInitQueryRemoveCanceled = 0x123,
+ WdfDevStatePnpFdoRemoved = 0x124,
+ WdfDevStatePnpRemovedWaitForChildren = 0x125,
+ WdfDevStatePnpQueriedSurpriseRemove = 0x126,
+ WdfDevStatePnpSurpriseRemoveIoStarted = 0x127,
+ WdfDevStatePnpFailedPowerDown = 0x128,
+ WdfDevStatePnpFailedIoStarting = 0x129,
+ WdfDevStatePnpFailedOwnHardware = 0x12A,
+ WdfDevStatePnpFailed = 0x12B,
+ WdfDevStatePnpFailedSurpriseRemoved = 0x12C,
+ WdfDevStatePnpFailedStarted = 0x12D,
+ WdfDevStatePnpFailedWaitForRemove = 0x12E,
+ WdfDevStatePnpFailedInit = 0x12F,
+ WdfDevStatePnpPdoInitFailed = 0x130,
+ WdfDevStatePnpRestart = 0x131,
+ WdfDevStatePnpRestartReleaseHardware = 0x132,
+ WdfDevStatePnpRestartHardwareAvailable = 0x133,
+ WdfDevStatePnpPdoRestart = 0x134,
+ WdfDevStatePnpFinal = 0x135,
+ WdfDevStatePnpRemovedChildrenRemoved = 0x136,
+ WdfDevStatePnpQueryRemoveEnsureDeviceAwake = 0x137,
+ WdfDevStatePnpQueryStopEnsureDeviceAwake = 0x138,
+ WdfDevStatePnpFailedPowerPolicyRemoved = 0x139,
+ WdfDevStatePnpNull = 0x13A,
+} WDF_DEVICE_PNP_STATE, *PWDF_DEVICE_PNP_STATE;
+
+
+
+
+typedef enum _WDF_DEVICE_POWER_STATE {
+ WdfDevStatePowerInvalid = 0x00,
+ WdfDevStatePowerObjectCreated = 0x300,
+ WdfDevStatePowerCheckDeviceType = 0x301,
+ WdfDevStatePowerCheckDeviceTypeNP = 0x302 | WdfDevStateNP,
+ WdfDevStatePowerCheckParentState = 0x303,
+ WdfDevStatePowerCheckParentStateNP = 0x304 | WdfDevStateNP,
+ WdfDevStatePowerEnablingWakeAtBus = 0x305,
+ WdfDevStatePowerEnablingWakeAtBusNP = 0x306 | WdfDevStateNP,
+ WdfDevStatePowerD0 = 0x307,
+ WdfDevStatePowerD0NP = 0x308 | WdfDevStateNP,
+ WdfDevStatePowerD0BusWakeOwner = 0x309,
+ WdfDevStatePowerD0BusWakeOwnerNP = 0x30A | WdfDevStateNP,
+ WdfDevStatePowerD0ArmedForWake = 0x30B,
+ WdfDevStatePowerD0ArmedForWakeNP = 0x30C | WdfDevStateNP,
+ WdfDevStatePowerD0DisarmingWakeAtBus = 0x30D,
+ WdfDevStatePowerD0DisarmingWakeAtBusNP = 0x30E | WdfDevStateNP,
+ WdfDevStatePowerD0Starting = 0x30F,
+ WdfDevStatePowerD0StartingConnectInterrupt = 0x310,
+ WdfDevStatePowerD0StartingDmaEnable = 0x311,
+ WdfDevStatePowerD0StartingStartSelfManagedIo = 0x312,
+ WdfDevStatePowerDecideD0State = 0x313,
+ WdfDevStatePowerGotoD3Stopped = 0x314,
+ WdfDevStatePowerStopped = 0x315,
+ WdfDevStatePowerStartingCheckDeviceType = 0x316,
+ WdfDevStatePowerStartingChild = 0x317,
+ WdfDevStatePowerDxDisablingWakeAtBus = 0x318,
+ WdfDevStatePowerDxDisablingWakeAtBusNP = 0x319 | WdfDevStateNP,
+ WdfDevStatePowerGotoDx = 0x31A,
+ WdfDevStatePowerGotoDxNP = 0x31B | WdfDevStateNP,
+ WdfDevStatePowerGotoDxIoStopped = 0x31C,
+ WdfDevStatePowerGotoDxIoStoppedNP = 0x31D | WdfDevStateNP,
+ WdfDevStatePowerGotoDxNPFailed = 0x31E | WdfDevStateNP,
+ WdfDevStatePowerDx = 0x31F,
+ WdfDevStatePowerDxNP = 0x320 | WdfDevStateNP,
+ WdfDevStatePowerGotoDxArmedForWake = 0x321,
+ WdfDevStatePowerGotoDxArmedForWakeNP = 0x322 | WdfDevStateNP,
+ WdfDevStatePowerGotoDxIoStoppedArmedForWake = 0x323,
+ WdfDevStatePowerGotoDxIoStoppedArmedForWakeNP = 0x324 | WdfDevStateNP,
+ WdfDevStatePowerDxArmedForWake = 0x325,
+ WdfDevStatePowerDxArmedForWakeNP = 0x326 | WdfDevStateNP,
+ WdfDevStatePowerCheckParentStateArmedForWake = 0x327,
+ WdfDevStatePowerCheckParentStateArmedForWakeNP = 0x328 | WdfDevStateNP,
+ WdfDevStatePowerWaitForParentArmedForWake = 0x329,
+ WdfDevStatePowerWaitForParentArmedForWakeNP = 0x32A | WdfDevStateNP,
+ WdfDevStatePowerStartSelfManagedIo = 0x32B,
+ WdfDevStatePowerStartSelfManagedIoNP = 0x32C | WdfDevStateNP,
+ WdfDevStatePowerStartSelfManagedIoFailed = 0x32D,
+ WdfDevStatePowerStartSelfManagedIoFailedNP = 0x32E | WdfDevStateNP,
+ WdfDevStatePowerWaitForParent = 0x32F,
+ WdfDevStatePowerWaitForParentNP = 0x330 | WdfDevStateNP,
+ WdfDevStatePowerWakePending = 0x331,
+ WdfDevStatePowerWakePendingNP = 0x332 | WdfDevStateNP,
+ WdfDevStatePowerWaking = 0x333,
+ WdfDevStatePowerWakingNP = 0x334 | WdfDevStateNP,
+ WdfDevStatePowerWakingConnectInterrupt = 0x335,
+ WdfDevStatePowerWakingConnectInterruptNP = 0x336 | WdfDevStateNP,
+ WdfDevStatePowerWakingConnectInterruptFailed = 0x337,
+ WdfDevStatePowerWakingConnectInterruptFailedNP = 0x338 | WdfDevStateNP,
+ WdfDevStatePowerWakingDmaEnable = 0x339,
+ WdfDevStatePowerWakingDmaEnableNP = 0x33A | WdfDevStateNP,
+ WdfDevStatePowerWakingDmaEnableFailed = 0x33B,
+ WdfDevStatePowerWakingDmaEnableFailedNP = 0x33C | WdfDevStateNP,
+ WdfDevStatePowerReportPowerUpFailedDerefParent = 0x33D,
+ WdfDevStatePowerReportPowerUpFailed = 0x33E,
+ WdfDevStatePowerPowerFailedPowerDown = 0x33F,
+ WdfDevStatePowerReportPowerDownFailed = 0x340,
+ WdfDevStatePowerInitialConnectInterruptFailed = 0x341,
+ WdfDevStatePowerInitialDmaEnableFailed = 0x342,
+ WdfDevStatePowerInitialSelfManagedIoFailed = 0x343,
+ WdfDevStatePowerInitialPowerUpFailedDerefParent = 0x344,
+ WdfDevStatePowerInitialPowerUpFailed = 0x345,
+ WdfDevStatePowerDxStoppedDisarmWake = 0x346,
+ WdfDevStatePowerDxStoppedDisarmWakeNP = 0x347 | WdfDevStateNP,
+ WdfDevStatePowerGotoDxStoppedDisableInterruptNP = 0x348 | WdfDevStateNP,
+ WdfDevStatePowerGotoDxStopped = 0x349,
+ WdfDevStatePowerDxStopped = 0x34A,
+ WdfDevStatePowerGotoStopped = 0x34B,
+ WdfDevStatePowerStoppedCompleteDx = 0x34C,
+ WdfDevStatePowerDxStoppedDecideDxState = 0x34D,
+ WdfDevStatePowerDxStoppedArmForWake = 0x34E,
+ WdfDevStatePowerDxStoppedArmForWakeNP = 0x34F | WdfDevStateNP,
+ WdfDevStatePowerFinalPowerDownFailed = 0x350,
+ WdfDevStatePowerFinal = 0x351,
+ WdfDevStatePowerGotoImplicitD3DisarmWakeAtBus = 0x352,
+ WdfDevStatePowerUpFailed = 0x353,
+ WdfDevStatePowerUpFailedDerefParent = 0x354,
+ WdfDevStatePowerGotoDxFailed = 0x355,
+ WdfDevStatePowerGotoDxStoppedDisableInterrupt = 0x356,
+ WdfDevStatePowerUpFailedNP = 0x357 | WdfDevStateNP,
+ WdfDevStatePowerUpFailedDerefParentNP = 0x358 | WdfDevStateNP,
+ WdfDevStatePowerNotifyingD0ExitToWakeInterrupts = 0x359,
+ WdfDevStatePowerNotifyingD0EntryToWakeInterrupts = 0x35A,
+ WdfDevStatePowerNotifyingD0ExitToWakeInterruptsNP = 0x35B | WdfDevStateNP,
+ WdfDevStatePowerNotifyingD0EntryToWakeInterruptsNP = 0x35C | WdfDevStateNP,
+ WdfDevStatePowerInitialPowerUpFailedPowerDown = 0x35D,
+ WdfDevStatePowerUpFailedPowerDown = 0x35E,
+ WdfDevStatePowerUpFailedPowerDownNP = 0x35F | WdfDevStateNP,
+ WdfDevStatePowerInitialSelfManagedIoFailedStarted = 0x360,
+ WdfDevStatePowerStartSelfManagedIoFailedStarted = 0x361,
+ WdfDevStatePowerStartSelfManagedIoFailedStartedNP = 0x362 | WdfDevStateNP,
+ WdfDevStatePowerWakingPostHardwareEnabled = 0x363,
+ WdfDevStatePowerWakingPostHardwareEnabledNP = 0x364 | WdfDevStateNP,
+ WdfDevStatePowerWakingPostHardwareEnabledFailed = 0x365,
+ WdfDevStatePowerWakingPostHardwareEnabledFailedNP = 0x366 | WdfDevStateNP,
+ WdfDevStatePowerD0StartingPostHardwareEnabled = 0x367,
+ WdfDevStatePowerInitialPostHardwareEnabledFailed = 0x368,
+ WdfDevStatePowerNull = 0x369,
+} WDF_DEVICE_POWER_STATE, *PWDF_DEVICE_POWER_STATE;
+
+
+
+
+
+typedef enum _WDF_DEVICE_POWER_POLICY_STATE {
+ WdfDevStatePwrPolInvalid = 0x00,
+ WdfDevStatePwrPolObjectCreated = 0x500,
+ WdfDevStatePwrPolStarting = 0x501,
+ WdfDevStatePwrPolStartingSucceeded = 0x502,
+ WdfDevStatePwrPolStartingFailed = 0x503,
+ WdfDevStatePwrPolStartingDecideS0Wake = 0x504,
+ WdfDevStatePwrPolStartedIdleCapable = 0x505,
+ WdfDevStatePwrPolTimerExpiredNoWake = 0x506,
+ WdfDevStatePwrPolTimerExpiredNoWakeCompletePowerDown = 0x507,
+ WdfDevStatePwrPolWaitingUnarmed = 0x508,
+ WdfDevStatePwrPolWaitingUnarmedQueryIdle = 0x509,
+ WdfDevStatePwrPolS0NoWakePowerUp = 0x50A,
+ WdfDevStatePwrPolS0NoWakeCompletePowerUp = 0x50B,
+ WdfDevStatePwrPolSystemSleepFromDeviceWaitingUnarmed = 0x50C,
+ WdfDevStatePwrPolSystemSleepNeedWake = 0x50D,
+ WdfDevStatePwrPolSystemSleepNeedWakeCompletePowerUp = 0x50E,
+ WdfDevStatePwrPolSystemSleepPowerRequestFailed = 0x50F,
+ WdfDevStatePwrPolCheckPowerPageable = 0x510,
+ WdfDevStatePwrPolSleepingWakeWakeArrived = 0x511,
+ WdfDevStatePwrPolSleepingWakeRevertArmWake = 0x512,
+ WdfDevStatePwrPolSystemAsleepWakeArmed = 0x513,
+ WdfDevStatePwrPolSystemWakeDeviceWakeEnabled = 0x514,
+ WdfDevStatePwrPolSystemWakeDeviceWakeEnabledWakeCanceled = 0x515,
+ WdfDevStatePwrPolSystemWakeDeviceWakeDisarm = 0x516,
+ WdfDevStatePwrPolSystemWakeDeviceWakeTriggered = 0x517,
+ WdfDevStatePwrPolSystemWakeDeviceWakeTriggeredS0 = 0x518,
+ WdfDevStatePwrPolSystemWakeDeviceWokeDisarm = 0x519,
+ WdfDevStatePwrPolSleepingWakeWakeArrivedNP = 0x51A | WdfDevStateNP,
+ WdfDevStatePwrPolSleepingWakeRevertArmWakeNP = 0x51B | WdfDevStateNP,
+ WdfDevStatePwrPolSleepingWakePowerDownFailed = 0x51C,
+ WdfDevStatePwrPolSleepingWakePowerDownFailedWakeCanceled = 0x51D,
+ WdfDevStatePwrPolSystemAsleepWakeArmedNP = 0x51E | WdfDevStateNP,
+ WdfDevStatePwrPolSystemWakeDeviceWakeEnabledNP = 0x51F | WdfDevStateNP,
+ WdfDevStatePwrPolSystemWakeDeviceWakeEnabledWakeCanceledNP = 0x520 | WdfDevStateNP,
+ WdfDevStatePwrPolSystemWakeDeviceWakeDisarmNP = 0x521 | WdfDevStateNP,
+ WdfDevStatePwrPolSystemWakeDeviceWakeTriggeredNP = 0x522 | WdfDevStateNP,
+ WdfDevStatePwrPolSystemWakeDeviceWakeTriggeredS0NP = 0x523 | WdfDevStateNP,
+ WdfDevStatePwrPolSystemWakeDeviceWokeDisarmNP = 0x524 | WdfDevStateNP,
+ WdfDevStatePwrPolSystemWakeDeviceWakeCompletePowerUp = 0x525,
+ WdfDevStatePwrPolSleeping = 0x526,
+ WdfDevStatePwrPolSleepingNoWakePowerDown = 0x527,
+ WdfDevStatePwrPolSleepingNoWakeCompletePowerDown = 0x528,
+ WdfDevStatePwrPolSleepingNoWakeDxRequestFailed = 0x529,
+ WdfDevStatePwrPolSleepingWakePowerDown = 0x52A,
+ WdfDevStatePwrPolSleepingSendWake = 0x52B,
+ WdfDevStatePwrPolSystemAsleepNoWake = 0x52C,
+ WdfDevStatePwrPolSystemWakeDeviceWakeDisabled = 0x52D,
+ WdfDevStatePwrPolSystemWakeDeviceToD0 = 0x52E,
+ WdfDevStatePwrPolSystemWakeDeviceToD0CompletePowerUp = 0x52F,
+ WdfDevStatePwrPolSystemWakeQueryIdle = 0x530,
+ WdfDevStatePwrPolStartedWakeCapable = 0x531,
+ WdfDevStatePwrPolTimerExpiredDecideUsbSS = 0x532,
+ WdfDevStatePwrPolTimerExpiredWakeCapablePowerDown = 0x533,
+ WdfDevStatePwrPolTimerExpiredWakeCapableSendWake = 0x534,
+ WdfDevStatePwrPolTimerExpiredWakeCapableUsbSS = 0x535,
+ WdfDevStatePwrPolTimerExpiredWakeCapableWakeArrived = 0x536,
+ WdfDevStatePwrPolTimerExpiredWakeCapableCancelWake = 0x537,
+ WdfDevStatePwrPolTimerExpiredWakeCapableWakeCanceled = 0x538,
+ WdfDevStatePwrPolTimerExpiredWakeCapableCleanup = 0x539,
+ WdfDevStatePwrPolTimerExpiredWakeCapableDxAllocFailed = 0x53A,
+ WdfDevStatePwrPolTimerExpiredWakeCompletedPowerDown = 0x53B,
+ WdfDevStatePwrPolTimerExpiredWakeCompletedPowerUp = 0x53C,
+ WdfDevStatePwrPolWaitingArmedUsbSS = 0x53D,
+ WdfDevStatePwrPolWaitingArmed = 0x53E,
+ WdfDevStatePwrPolWaitingArmedQueryIdle = 0x53F,
+ WdfDevStatePwrPolIoPresentArmed = 0x540,
+ WdfDevStatePwrPolIoPresentArmedWakeCanceled = 0x541,
+ WdfDevStatePwrPolS0WakeDisarm = 0x542,
+ WdfDevStatePwrPolS0WakeCompletePowerUp = 0x543,
+ WdfDevStatePwrPolTimerExpiredWakeSucceeded = 0x544,
+ WdfDevStatePwrPolTimerExpiredWakeCompletedDisarm = 0x545,
+ WdfDevStatePwrPolTimerExpiredWakeCapableWakeSucceeded = 0x546,
+ WdfDevStatePwrPolTimerExpiredWakeCapableWakeFailed = 0x547,
+ WdfDevStatePwrPolWakeFailedUsbSS = 0x548,
+ WdfDevStatePwrPolTimerExpiredWakeCapablePowerDownFailedCancelWake = 0x549,
+ WdfDevStatePwrPolTimerExpiredWakeCapablePowerDownFailedWakeCanceled = 0x54A,
+ WdfDevStatePwrPolTimerExpiredWakeCapablePowerDownFailedUsbSS = 0x54B,
+ WdfDevStatePwrPolCancelingWakeForSystemSleep = 0x54C,
+ WdfDevStatePwrPolCancelingWakeForSystemSleepWakeCanceled = 0x54D,
+ WdfDevStatePwrPolDisarmingWakeForSystemSleepCompletePowerUp = 0x54E,
+ WdfDevStatePwrPolPowerUpForSystemSleepFailed = 0x54F,
+ WdfDevStatePwrPolWokeFromS0UsbSS = 0x550,
+ WdfDevStatePwrPolWokeFromS0 = 0x551,
+ WdfDevStatePwrPolWokeFromS0NotifyDriver = 0x552,
+ WdfDevStatePwrPolStoppingResetDevice = 0x553,
+ WdfDevStatePwrPolStoppingResetDeviceCompletePowerUp = 0x554,
+ WdfDevStatePwrPolStoppingResetDeviceFailed = 0x555,
+ WdfDevStatePwrPolStoppingD0 = 0x556,
+ WdfDevStatePwrPolStoppingD0Failed = 0x557,
+ WdfDevStatePwrPolStoppingDisarmWake = 0x558,
+ WdfDevStatePwrPolStoppingDisarmWakeCancelWake = 0x559,
+ WdfDevStatePwrPolStoppingDisarmWakeWakeCanceled = 0x55A,
+ WdfDevStatePwrPolStopping = 0x55B,
+ WdfDevStatePwrPolStoppingFailed = 0x55C,
+ WdfDevStatePwrPolStoppingSendStatus = 0x55D,
+ WdfDevStatePwrPolStoppingCancelTimer = 0x55E,
+ WdfDevStatePwrPolStoppingWaitForIdleTimeout = 0x55F,
+ WdfDevStatePwrPolStoppingCancelUsbSS = 0x560,
+ WdfDevStatePwrPolStoppingWaitForUsbSSCompletion = 0x561,
+ WdfDevStatePwrPolStoppingCancelWake = 0x562,
+ WdfDevStatePwrPolStopped = 0x563,
+ WdfDevStatePwrPolCancelUsbSS = 0x564,
+ WdfDevStatePwrPolStarted = 0x565,
+ WdfDevStatePwrPolStartedCancelTimer = 0x566,
+ WdfDevStatePwrPolStartedWaitForIdleTimeout = 0x567,
+ WdfDevStatePwrPolStartedWakeCapableCancelTimerForSleep = 0x568,
+ WdfDevStatePwrPolStartedWakeCapableWaitForIdleTimeout = 0x569,
+ WdfDevStatePwrPolStartedWakeCapableSleepingUsbSS = 0x56A,
+ WdfDevStatePwrPolStartedIdleCapableCancelTimerForSleep = 0x56B,
+ WdfDevStatePwrPolStartedIdleCapableWaitForIdleTimeout = 0x56C,
+ WdfDevStatePwrPolDeviceD0PowerRequestFailed = 0x56D,
+ WdfDevStatePwrPolDevicePowerRequestFailed = 0x56E,
+ WdfDevStatePwrPolGotoDx = 0x56F,
+ WdfDevStatePwrPolGotoDxInDx = 0x570,
+ WdfDevStatePwrPolDx = 0x571,
+ WdfDevStatePwrPolGotoD0 = 0x572,
+ WdfDevStatePwrPolGotoD0InD0 = 0x573,
+ WdfDevStatePwrPolFinal = 0x574,
+ WdfDevStatePwrPolSleepingPowerDownNotProcessed = 0x575,
+ WdfDevStatePwrPolTimerExpiredWakeCapablePowerDownNotProcessed = 0x576,
+ WdfDevStatePwrPolTimerExpiredNoWakePowerDownNotProcessed = 0x577,
+ WdfDevStatePwrPolTimerExpiredNoWakePoweredDownDisableIdleTimer = 0x578,
+ WdfDevStatePwrPolStoppingWaitingForImplicitPowerDown = 0x579,
+ WdfDevStatePwrPolStoppingPoweringUp = 0x57A,
+ WdfDevStatePwrPolStoppingPoweringDown = 0x57B,
+ WdfDevStatePwrPolPowerUpForSystemSleepNotSeen = 0x57C,
+ WdfDevStatePwrPolWaitingArmedStoppingCancelUsbSS = 0x57D,
+ WdfDevStatePwrPolWaitingArmedWakeFailedCancelUsbSS = 0x57E,
+ WdfDevStatePwrPolWaitingArmedIoPresentCancelUsbSS = 0x57F,
+ WdfDevStatePwrPolWaitingArmedWakeSucceededCancelUsbSS = 0x580,
+ WdfDevStatePwrPolCancelingUsbSSForSystemSleep = 0x581,
+ WdfDevStatePwrPolStoppingD0CancelUsbSS = 0x582,
+ WdfDevStatePwrPolStartingPoweredUp = 0x583,
+ WdfDevStatePwrPolIdleCapableDeviceIdle = 0x584,
+ WdfDevStatePwrPolDeviceIdleReturnToActive = 0x585,
+ WdfDevStatePwrPolDeviceIdleSleeping = 0x586,
+ WdfDevStatePwrPolDeviceIdleStopping = 0x587,
+ WdfDevStatePwrPolTimerExpiredNoWakeUndoPowerDown = 0x588,
+ WdfDevStatePwrPolWakeCapableDeviceIdle = 0x589,
+ WdfDevStatePwrPolWakeCapableUsbSSCompleted = 0x58A,
+ WdfDevStatePwrPolTimerExpiredWakeCapableUndoPowerDown = 0x58B,
+ WdfDevStatePwrPolTimerExpiredWakeCompletedHardwareStarted = 0x58C,
+ WdfDevStatePwrPolStoppedRemoving = 0x58D,
+ WdfDevStatePwrPolRemoved = 0x58E,
+ WdfDevStatePwrPolRestarting = 0x58F,
+ WdfDevStatePwrPolRestartingFailed = 0x590,
+ WdfDevStatePwrPolStartingPoweredUpFailed = 0x591,
+ WdfDevStatePwrPolTimerExpiredNoWakeReturnToActive = 0x592,
+ WdfDevStatePwrPolWaitingArmedWakeInterruptFired = 0x593,
+ WdfDevStatePwrPolSystemWakeDeviceWakeInterruptFired = 0x594,
+ WdfDevStatePwrPolSystemWakeDeviceWakeInterruptFiredNP = 0x595 | WdfDevStateNP,
+ WdfDevStatePwrPolTimerExpiredWakeCapableWakeInterruptArrived = 0x596,
+ WdfDevStatePwrPolTimerExpiredWakeCapablePowerDownFailedWakeInterruptArrived = 0x597,
+ WdfDevStatePwrPolWaitingArmedWakeInterruptFiredDuringPowerDown = 0x598,
+ WdfDevStatePwrPolStartedNotIdleCapableDirectedDown = 0x599,
+ WdfDevStatePwrPolStartedIdleCapableTimerCanceledForSleep = 0x59A,
+ WdfDevStatePwrPolTimerExpiredNoWakeUndoPowerDownWaitForDirectedUp = 0x59B,
+ WdfDevStatePwrPolIdleCapableTimerNotExpiredDirectedDown = 0x59C,
+ WdfDevStatePwrPolIdleCapableDirectedDownTriggerDPNR = 0x59D,
+ WdfDevStatePwrPolWaitingUnarmedDirectedDown = 0x59E,
+ WdfDevStatePwrPolIdleCapableDirectedDownTriggerDPR = 0x59F,
+ WdfDevStatePwrPolStartedWakeCapableTimerCanceledForSleep = 0x5A0,
+ WdfDevStatePwrPolWakeCapableTimerNotExpiredDirectedDown = 0x5A1,
+ WdfDevStatePwrPolWakeCapableDirectedDownTriggerDPNR = 0x5A2,
+ WdfDevStatePwrPolTimerExpiredWakeCompletedPowerDownWaitForDirectedUp = 0x5A3,
+ WdfDevStatePwrPolTimerExpiredWakeCompletedPowerDownDirectedTriggerDPR = 0x5A4,
+ WdfDevStatePwrPolTimerExpiredWakeCapableUndoPowerDownWaitForDirectedUp = 0x5A5,
+ WdfDevStatePwrPolWakeCapableUsbSSCompletedUndoWaitForDirectedUp = 0x5A6,
+ WdfDevStatePwrPolTimerExpiredWakeCapableUsbSSDirectedDown = 0x5A7,
+ WdfDevStatePwrPolWaitingArmedWakeInterruptFiredDuringPowerDownCheckDirected = 0x5A8,
+ WdfDevStatePwrPolTimerExpiredWakeCompletedPowerDownCheckDirected = 0x5A9,
+ WdfDevStatePwrPolTimerExpiredWakeCapableWakeSucceededCheckDirected = 0x5AA,
+ WdfDevStatePwrPolTimerExpiredWakeCapableWakeSucceededWaitForDirectedUp = 0x5AB,
+ WdfDevStatePwrPolTimerExpiredWakeCapableWakeSucceededTriggerDPR = 0x5AC,
+ WdfDevStatePwrPolTimerExpiredWakeCapableWakeFailedCheckDirected = 0x5AD,
+ WdfDevStatePwrPolTimerExpiredWakeCapableWakeFailedWaitForDirectedUp = 0x5AE,
+ WdfDevStatePwrPolTimerExpiredWakeCapableWakeFailedTriggerDPR = 0x5AF,
+ WdfDevStatePwrPolWaitingArmedDirectedDownWakeInterruptFiredTriggerDPR = 0x5B0,
+ WdfDevStatePwrPolWaitingArmedDirectedDownWakeInterruptFired = 0x5B1,
+ WdfDevStatePwrPolWaitingArmedDirectedDown = 0x5B2,
+ WdfDevStatePwrPolWaitingArmedDirectedDownWakeSucceededCancelUsbSS = 0x5B3,
+ WdfDevStatePwrPolWaitingArmedDirectedDownWakeFailedCancelUsbSS = 0x5B4,
+ WdfDevStatePwrPolWaitingArmedDirectedDownTriggerDPR = 0x5B5,
+ WdfDevStatePwrPolWaitingArmedDirectedDownWakeSucceededTriggerDPR = 0x5B6,
+ WdfDevStatePwrPolWaitingArmedDirectedDownUsbSSCompleted = 0x5B7,
+ WdfDevStatePwrPolWaitingArmedDirectedDownUsbSSCompletedTriggerDPR = 0x5B8,
+ WdfDevStatePwrPolWaitingArmedDirectedDownWakeFailedCancelUsbSSTriggerDPR = 0x5B9,
+ WdfDevStatePwrPolUsbSSCancelled = 0x5BA,
+ WdfDevStatePwrPolTimerExpiredWakeCapableRevertArmWake = 0x5BB,
+ WdfDevStatePwrPolSleepingWakeCancelWake = 0x5BC,
+ WdfDevStatePwrPolSleepingWakeCancelWakeNP = 0x5BD | WdfDevStateNP,
+ WdfDevStatePwrPolSystemWakeDeviceD0PowerRequestFailed = 0x5BE,
+ WdfDevStatePwrPolSystemWakeDevicePowerRequestFailed = 0x5BF,
+ WdfDevStatePwrPolNull = 0x5C0,
+} WDF_DEVICE_POWER_POLICY_STATE, *PWDF_DEVICE_POWER_POLICY_STATE;
+
+
+
+typedef enum _WDF_STATE_NOTIFICATION_TYPE {
+ StateNotificationInvalid = 0x0000,
+ StateNotificationEnterState = 0x0001,
+ StateNotificationPostProcessState = 0x0002,
+ StateNotificationLeaveState = 0x0004,
+ StateNotificationAllStates = StateNotificationEnterState | StateNotificationPostProcessState | StateNotificationLeaveState,
+} WDF_STATE_NOTIFICATION_TYPE;
+
+typedef enum _WDF_POWER_POLICY_S0_IDLE_CAPABILITIES {
+ IdleCapsInvalid = 0,
+ IdleCannotWakeFromS0,
+ IdleCanWakeFromS0,
+ IdleUsbSelectiveSuspend,
+} WDF_POWER_POLICY_S0_IDLE_CAPABILITIES;
+
+typedef enum _WDF_POWER_POLICY_S0_IDLE_USER_CONTROL {
+ IdleUserControlInvalid = 0,
+ IdleDoNotAllowUserControl,
+ IdleAllowUserControl,
+} WDF_POWER_POLICY_S0_IDLE_USER_CONTROL;
+
+typedef enum _WDF_POWER_POLICY_IDLE_TIMEOUT_CONSTANTS {
+ IdleTimeoutDefaultConstant = 0,
+} WDF_POWER_POLICY_IDLE_TIMEOUT_CONSTANTS;
+
+typedef enum _WDF_POWER_POLICY_SX_WAKE_USER_CONTROL {
+ WakeUserControlInvalid = 0,
+ WakeDoNotAllowUserControl,
+ WakeAllowUserControl,
+} WDF_POWER_POLICY_SX_WAKE_USER_CONTROL;
+
+typedef enum _WDF_POWER_DEVICE_STATE {
+ WdfPowerDeviceInvalid = 0,
+ WdfPowerDeviceD0,
+ WdfPowerDeviceD1,
+ WdfPowerDeviceD2,
+ WdfPowerDeviceD3,
+ WdfPowerDeviceD3Final,
+ WdfPowerDevicePrepareForHibernation,
+ WdfPowerDeviceMaximum,
+} WDF_POWER_DEVICE_STATE, *PWDF_POWER_DEVICE_STATE;
+
+
+
+typedef enum _WDF_DISPATCH_IRP_TO_IO_QUEUE_FLAGS {
+ WDF_DISPATCH_IRP_TO_IO_QUEUE_NO_FLAGS = 0x00000000,
+ WDF_DISPATCH_IRP_TO_IO_QUEUE_INVOKE_INCALLERCTX_CALLBACK = 0x00000001,
+ WDF_DISPATCH_IRP_TO_IO_QUEUE_PREPROCESSED_IRP = 0x00000002,
+} WDF_DISPATCH_IRP_TO_IO_QUEUE_FLAGS;
+
+typedef enum _WDF_SPECIAL_FILE_TYPE {
+ WdfSpecialFileUndefined = 0,
+ WdfSpecialFilePaging = 1,
+ WdfSpecialFileHibernation,
+ WdfSpecialFileDump,
+ WdfSpecialFileBoot,
+ WdfSpecialFilePostDisplay,
+ WdfSpecialFileGuestAssigned,
+ WdfSpecialFileMax,
+} WDF_SPECIAL_FILE_TYPE, *PWDF_SPECIAL_FILE_TYPE;
+
+typedef enum _WDF_DEVICE_IO_TYPE {
+ WdfDeviceIoUndefined = 0,
+ WdfDeviceIoNeither,
+ WdfDeviceIoBuffered,
+ WdfDeviceIoDirect,
+ WdfDeviceIoBufferedOrDirect = 4,
+ WdfDeviceIoMaximum,
+} WDF_DEVICE_IO_TYPE, *PWDF_DEVICE_IO_TYPE;
+
+typedef enum _WDF_FILEOBJECT_CLASS {
+ WdfFileObjectInvalid = 0,
+ WdfFileObjectNotRequired = 1,
+ WdfFileObjectWdfCanUseFsContext = 2,
+ WdfFileObjectWdfCanUseFsContext2 = 3,
+ WdfFileObjectWdfCannotUseFsContexts = 4,
+ WdfFileObjectCanBeOptional = 0x80000000,
+} WDF_FILEOBJECT_CLASS, *PWDF_FILEOBJECT_CLASS;
+
+typedef enum _WDF_DEVICE_FAILED_ACTION {
+ WdfDeviceFailedUndefined = 0,
+ WdfDeviceFailedAttemptRestart,
+ WdfDeviceFailedNoRestart,
+} WDF_DEVICE_FAILED_ACTION;
+
+typedef enum _WDF_RELEASE_HARDWARE_ORDER_ON_FAILURE {
+ WdfReleaseHardwareOrderOnFailureInvalid = 0,
+ WdfReleaseHardwareOrderOnFailureEarly,
+ WdfReleaseHardwareOrderOnFailureAfterDescendants,
+} WDF_RELEASE_HARDWARE_ORDER_ON_FAILURE, *PWDF_RELEASE_HARDWARE_ORDER_ON_FAILURE;
+
+
+
+
+
+
+
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdmsec.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const UNICODE_STRING SDDL_DEVOBJ_KERNEL_ONLY;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const UNICODE_STRING SDDL_DEVOBJ_SYS_ALL;
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const UNICODE_STRING SDDL_DEVOBJ_SYS_ALL_ADM_ALL;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const UNICODE_STRING SDDL_DEVOBJ_SYS_ALL_ADM_RX;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const UNICODE_STRING SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_R;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const UNICODE_STRING SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_R_RES_R;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const UNICODE_STRING SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_RW_RES_R;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern const UNICODE_STRING SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_RWX_RES_RWX;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS
+WdmlibIoCreateDeviceSecure(
+ PDRIVER_OBJECT DriverObject,
+ ULONG DeviceExtensionSize,
+ PUNICODE_STRING DeviceName,
+ ULONG DeviceType,
+ ULONG DeviceCharacteristics,
+ BOOLEAN Exclusive,
+ PCUNICODE_STRING DefaultSDDLString,
+ LPCGUID DeviceClassGuid,
+
+
+#line 402 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdmsec.h"
+ PDEVICE_OBJECT *DeviceObject
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS
+WdmlibRtlInitUnicodeStringEx(
+ PUNICODE_STRING DestinationString,
+ PCWSTR SourceString
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+NTSTATUS
+WdmlibIoValidateDeviceIoControlAccess(
+ PIRP Irp,
+ ULONG RequiredAccess
+ );
+
+
+
+
+
+#line 444 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\wdmsec.h"
+
+#line 540 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfdevice.h"
+#line 541 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfdevice.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _WDF_REQUEST_TYPE WDF_REQUEST_TYPE;
+
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_DEVICE_FILE_CREATE(
+
+ WDFDEVICE Device,
+
+ WDFREQUEST Request,
+
+ WDFFILEOBJECT FileObject
+ );
+
+typedef EVT_WDF_DEVICE_FILE_CREATE *PFN_WDF_DEVICE_FILE_CREATE;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_FILE_CLOSE(
+
+ WDFFILEOBJECT FileObject
+ );
+
+typedef EVT_WDF_FILE_CLOSE *PFN_WDF_FILE_CLOSE;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_FILE_CLEANUP(
+
+ WDFFILEOBJECT FileObject
+ );
+
+typedef EVT_WDF_FILE_CLEANUP *PFN_WDF_FILE_CLEANUP;
+
+typedef struct _WDF_FILEOBJECT_CONFIG {
+
+
+
+ ULONG Size;
+
+
+
+
+ PFN_WDF_DEVICE_FILE_CREATE EvtDeviceFileCreate;
+
+
+
+
+ PFN_WDF_FILE_CLOSE EvtFileClose;
+
+
+
+
+ PFN_WDF_FILE_CLEANUP EvtFileCleanup;
+
+
+
+
+
+
+
+
+
+
+
+
+ WDF_TRI_STATE AutoForwardCleanupClose;
+
+
+
+
+
+
+ WDF_FILEOBJECT_CLASS FileObjectClass;
+
+} WDF_FILEOBJECT_CONFIG, *PWDF_FILEOBJECT_CONFIG;
+
+void
+__forceinline
+WDF_FILEOBJECT_CONFIG_INIT(
+ PWDF_FILEOBJECT_CONFIG FileEventCallbacks,
+ PFN_WDF_DEVICE_FILE_CREATE EvtDeviceFileCreate,
+ PFN_WDF_FILE_CLOSE EvtFileClose,
+ PFN_WDF_FILE_CLEANUP EvtFileCleanup
+ )
+{
+ FileEventCallbacks->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_FILEOBJECT_CONFIG < WdfStructureCount) ? WdfStructures[INDEX_WDF_FILEOBJECT_CONFIG] : (size_t)(-1) ) : sizeof(WDF_FILEOBJECT_CONFIG) );
+
+ FileEventCallbacks->EvtDeviceFileCreate = EvtDeviceFileCreate;
+ FileEventCallbacks->EvtFileClose = EvtFileClose;
+ FileEventCallbacks->EvtFileCleanup = EvtFileCleanup;
+
+ FileEventCallbacks->FileObjectClass = WdfFileObjectWdfCannotUseFsContexts;
+ FileEventCallbacks->AutoForwardCleanupClose = WdfUseDefault;
+}
+
+typedef struct _WDF_DEVICE_PNP_NOTIFICATION_DATA {
+
+
+
+ WDF_STATE_NOTIFICATION_TYPE Type;
+
+ union {
+ struct {
+
+
+
+ WDF_DEVICE_PNP_STATE CurrentState;
+
+
+
+
+ WDF_DEVICE_PNP_STATE NewState;
+ } EnterState;
+
+ struct {
+
+
+
+ WDF_DEVICE_PNP_STATE CurrentState;
+ } PostProcessState;
+
+
+ struct {
+
+
+
+ WDF_DEVICE_PNP_STATE CurrentState;
+
+
+
+
+ WDF_DEVICE_PNP_STATE NewState;
+ } LeaveState;
+ } Data;
+} WDF_DEVICE_PNP_NOTIFICATION_DATA;
+
+typedef const WDF_DEVICE_PNP_NOTIFICATION_DATA* PCWDF_DEVICE_PNP_NOTIFICATION_DATA;
+
+typedef struct _WDF_DEVICE_POWER_NOTIFICATION_DATA {
+
+
+
+ WDF_STATE_NOTIFICATION_TYPE Type;
+
+ union {
+ struct {
+
+
+
+ WDF_DEVICE_POWER_STATE CurrentState;
+
+
+
+
+ WDF_DEVICE_POWER_STATE NewState;
+ } EnterState;
+
+ struct {
+
+
+
+ WDF_DEVICE_POWER_STATE CurrentState;
+ } PostProcessState;
+
+
+ struct {
+
+
+
+ WDF_DEVICE_POWER_STATE CurrentState;
+
+
+
+
+ WDF_DEVICE_POWER_STATE NewState;
+ } LeaveState;
+ } Data;
+} WDF_DEVICE_POWER_NOTIFICATION_DATA;
+
+typedef const WDF_DEVICE_POWER_NOTIFICATION_DATA* PCWDF_DEVICE_POWER_NOTIFICATION_DATA;
+
+typedef struct _WDF_DEVICE_POWER_POLICY_NOTIFICATION_DATA {
+
+
+
+ WDF_STATE_NOTIFICATION_TYPE Type;
+
+ union {
+ struct {
+
+
+
+ WDF_DEVICE_POWER_POLICY_STATE CurrentState;
+
+
+
+
+ WDF_DEVICE_POWER_POLICY_STATE NewState;
+ } EnterState;
+
+ struct {
+
+
+
+ WDF_DEVICE_POWER_POLICY_STATE CurrentState;
+ } PostProcessState;
+
+
+ struct {
+
+
+
+ WDF_DEVICE_POWER_POLICY_STATE CurrentState;
+
+
+
+
+ WDF_DEVICE_POWER_POLICY_STATE NewState;
+ } LeaveState;
+ } Data;
+} WDF_DEVICE_POWER_POLICY_NOTIFICATION_DATA;
+
+typedef const WDF_DEVICE_POWER_POLICY_NOTIFICATION_DATA* PCWDF_DEVICE_POWER_POLICY_NOTIFICATION_DATA;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_DEVICE_PNP_STATE_CHANGE_NOTIFICATION(
+
+ WDFDEVICE Device,
+
+ PCWDF_DEVICE_PNP_NOTIFICATION_DATA NotificationData
+ );
+
+typedef EVT_WDF_DEVICE_PNP_STATE_CHANGE_NOTIFICATION *PFN_WDF_DEVICE_PNP_STATE_CHANGE_NOTIFICATION;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_DEVICE_POWER_STATE_CHANGE_NOTIFICATION(
+
+ WDFDEVICE Device,
+
+ PCWDF_DEVICE_POWER_NOTIFICATION_DATA NotificationData
+ );
+
+typedef EVT_WDF_DEVICE_POWER_STATE_CHANGE_NOTIFICATION *PFN_WDF_DEVICE_POWER_STATE_CHANGE_NOTIFICATION;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_DEVICE_POWER_POLICY_STATE_CHANGE_NOTIFICATION(
+
+ WDFDEVICE Device,
+
+ PCWDF_DEVICE_POWER_POLICY_NOTIFICATION_DATA NotificationData
+ );
+
+typedef EVT_WDF_DEVICE_POWER_POLICY_STATE_CHANGE_NOTIFICATION *PFN_WDF_DEVICE_POWER_POLICY_STATE_CHANGE_NOTIFICATION;
+
+
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_D0_ENTRY(
+
+ WDFDEVICE Device,
+
+ WDF_POWER_DEVICE_STATE PreviousState
+ );
+
+typedef EVT_WDF_DEVICE_D0_ENTRY *PFN_WDF_DEVICE_D0_ENTRY;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_D0_ENTRY_POST_INTERRUPTS_ENABLED(
+
+ WDFDEVICE Device,
+
+ WDF_POWER_DEVICE_STATE PreviousState
+ );
+
+typedef EVT_WDF_DEVICE_D0_ENTRY_POST_INTERRUPTS_ENABLED *PFN_WDF_DEVICE_D0_ENTRY_POST_INTERRUPTS_ENABLED;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_D0_ENTRY_POST_HARDWARE_ENABLED(
+
+ WDFDEVICE Device,
+
+ WDF_POWER_DEVICE_STATE PreviousState
+ );
+
+typedef EVT_WDF_DEVICE_D0_ENTRY_POST_HARDWARE_ENABLED *PFN_WDF_DEVICE_D0_ENTRY_POST_HARDWARE_ENABLED;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_D0_EXIT(
+
+ WDFDEVICE Device,
+
+ WDF_POWER_DEVICE_STATE TargetState
+ );
+
+typedef EVT_WDF_DEVICE_D0_EXIT *PFN_WDF_DEVICE_D0_EXIT;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_D0_EXIT_PRE_INTERRUPTS_DISABLED(
+
+ WDFDEVICE Device,
+
+ WDF_POWER_DEVICE_STATE TargetState
+ );
+
+typedef EVT_WDF_DEVICE_D0_EXIT_PRE_INTERRUPTS_DISABLED *PFN_WDF_DEVICE_D0_EXIT_PRE_INTERRUPTS_DISABLED;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_D0_EXIT_PRE_HARDWARE_DISABLED(
+
+ WDFDEVICE Device,
+
+ WDF_POWER_DEVICE_STATE TargetState
+ );
+
+typedef EVT_WDF_DEVICE_D0_EXIT_PRE_HARDWARE_DISABLED *PFN_WDF_DEVICE_D0_EXIT_PRE_HARDWARE_DISABLED;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_PREPARE_HARDWARE(
+
+ WDFDEVICE Device,
+
+ WDFCMRESLIST ResourcesRaw,
+
+ WDFCMRESLIST ResourcesTranslated
+ );
+
+typedef EVT_WDF_DEVICE_PREPARE_HARDWARE *PFN_WDF_DEVICE_PREPARE_HARDWARE;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_RELEASE_HARDWARE(
+
+ WDFDEVICE Device,
+
+ WDFCMRESLIST ResourcesTranslated
+ );
+
+typedef EVT_WDF_DEVICE_RELEASE_HARDWARE *PFN_WDF_DEVICE_RELEASE_HARDWARE;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_DEVICE_SELF_MANAGED_IO_CLEANUP(
+
+ WDFDEVICE Device
+ );
+
+typedef EVT_WDF_DEVICE_SELF_MANAGED_IO_CLEANUP *PFN_WDF_DEVICE_SELF_MANAGED_IO_CLEANUP;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_DEVICE_SELF_MANAGED_IO_FLUSH(
+
+ WDFDEVICE Device
+ );
+
+typedef EVT_WDF_DEVICE_SELF_MANAGED_IO_FLUSH *PFN_WDF_DEVICE_SELF_MANAGED_IO_FLUSH;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_SELF_MANAGED_IO_INIT(
+
+ WDFDEVICE Device
+ );
+
+typedef EVT_WDF_DEVICE_SELF_MANAGED_IO_INIT *PFN_WDF_DEVICE_SELF_MANAGED_IO_INIT;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_SELF_MANAGED_IO_SUSPEND(
+
+ WDFDEVICE Device
+ );
+
+typedef EVT_WDF_DEVICE_SELF_MANAGED_IO_SUSPEND *PFN_WDF_DEVICE_SELF_MANAGED_IO_SUSPEND;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_SELF_MANAGED_IO_RESTART(
+
+ WDFDEVICE Device
+ );
+
+typedef EVT_WDF_DEVICE_SELF_MANAGED_IO_RESTART *PFN_WDF_DEVICE_SELF_MANAGED_IO_RESTART;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_QUERY_STOP(
+
+ WDFDEVICE Device
+ );
+
+typedef EVT_WDF_DEVICE_QUERY_STOP *PFN_WDF_DEVICE_QUERY_STOP;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_QUERY_REMOVE(
+
+ WDFDEVICE Device
+ );
+
+typedef EVT_WDF_DEVICE_QUERY_REMOVE *PFN_WDF_DEVICE_QUERY_REMOVE;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_DEVICE_SURPRISE_REMOVAL(
+
+ WDFDEVICE Device
+ );
+
+typedef EVT_WDF_DEVICE_SURPRISE_REMOVAL *PFN_WDF_DEVICE_SURPRISE_REMOVAL;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_DEVICE_USAGE_NOTIFICATION(
+
+ WDFDEVICE Device,
+
+ WDF_SPECIAL_FILE_TYPE NotificationType,
+
+ BOOLEAN IsInNotificationPath
+ );
+
+typedef EVT_WDF_DEVICE_USAGE_NOTIFICATION *PFN_WDF_DEVICE_USAGE_NOTIFICATION;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_USAGE_NOTIFICATION_EX(
+
+ WDFDEVICE Device,
+
+ WDF_SPECIAL_FILE_TYPE NotificationType,
+
+ BOOLEAN IsInNotificationPath
+ );
+
+typedef EVT_WDF_DEVICE_USAGE_NOTIFICATION_EX *PFN_WDF_DEVICE_USAGE_NOTIFICATION_EX;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_DEVICE_RELATIONS_QUERY(
+
+ WDFDEVICE Device,
+
+ DEVICE_RELATION_TYPE RelationType
+ );
+
+typedef EVT_WDF_DEVICE_RELATIONS_QUERY *PFN_WDF_DEVICE_RELATIONS_QUERY;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_ARM_WAKE_FROM_S0(
+
+ WDFDEVICE Device
+ );
+
+typedef EVT_WDF_DEVICE_ARM_WAKE_FROM_S0 *PFN_WDF_DEVICE_ARM_WAKE_FROM_S0;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_ARM_WAKE_FROM_SX(
+
+ WDFDEVICE Device
+ );
+
+typedef EVT_WDF_DEVICE_ARM_WAKE_FROM_SX *PFN_WDF_DEVICE_ARM_WAKE_FROM_SX;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_ARM_WAKE_FROM_SX_WITH_REASON(
+
+ WDFDEVICE Device,
+
+ BOOLEAN DeviceWakeEnabled,
+
+ BOOLEAN ChildrenArmedForWake
+ );
+
+typedef EVT_WDF_DEVICE_ARM_WAKE_FROM_SX_WITH_REASON *PFN_WDF_DEVICE_ARM_WAKE_FROM_SX_WITH_REASON;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_DEVICE_DISARM_WAKE_FROM_S0(
+
+ WDFDEVICE Device
+ );
+
+typedef EVT_WDF_DEVICE_DISARM_WAKE_FROM_S0 *PFN_WDF_DEVICE_DISARM_WAKE_FROM_S0;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_DEVICE_DISARM_WAKE_FROM_SX(
+
+ WDFDEVICE Device
+ );
+
+typedef EVT_WDF_DEVICE_DISARM_WAKE_FROM_SX *PFN_WDF_DEVICE_DISARM_WAKE_FROM_SX;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_DEVICE_WAKE_FROM_S0_TRIGGERED(
+
+ WDFDEVICE Device
+ );
+
+typedef EVT_WDF_DEVICE_WAKE_FROM_S0_TRIGGERED *PFN_WDF_DEVICE_WAKE_FROM_S0_TRIGGERED;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_DEVICE_WAKE_FROM_SX_TRIGGERED(
+
+ WDFDEVICE Device
+ );
+
+typedef EVT_WDF_DEVICE_WAKE_FROM_SX_TRIGGERED *PFN_WDF_DEVICE_WAKE_FROM_SX_TRIGGERED;
+
+typedef struct _WDF_PNPPOWER_EVENT_CALLBACKS {
+
+
+
+ ULONG Size;
+
+ PFN_WDF_DEVICE_D0_ENTRY EvtDeviceD0Entry;
+ PFN_WDF_DEVICE_D0_ENTRY_POST_INTERRUPTS_ENABLED EvtDeviceD0EntryPostInterruptsEnabled;
+ PFN_WDF_DEVICE_D0_EXIT EvtDeviceD0Exit;
+ PFN_WDF_DEVICE_D0_EXIT_PRE_INTERRUPTS_DISABLED EvtDeviceD0ExitPreInterruptsDisabled;
+ PFN_WDF_DEVICE_PREPARE_HARDWARE EvtDevicePrepareHardware;
+ PFN_WDF_DEVICE_RELEASE_HARDWARE EvtDeviceReleaseHardware;
+ PFN_WDF_DEVICE_SELF_MANAGED_IO_CLEANUP EvtDeviceSelfManagedIoCleanup;
+ PFN_WDF_DEVICE_SELF_MANAGED_IO_FLUSH EvtDeviceSelfManagedIoFlush;
+ PFN_WDF_DEVICE_SELF_MANAGED_IO_INIT EvtDeviceSelfManagedIoInit;
+ PFN_WDF_DEVICE_SELF_MANAGED_IO_SUSPEND EvtDeviceSelfManagedIoSuspend;
+ PFN_WDF_DEVICE_SELF_MANAGED_IO_RESTART EvtDeviceSelfManagedIoRestart;
+ PFN_WDF_DEVICE_SURPRISE_REMOVAL EvtDeviceSurpriseRemoval;
+ PFN_WDF_DEVICE_QUERY_REMOVE EvtDeviceQueryRemove;
+ PFN_WDF_DEVICE_QUERY_STOP EvtDeviceQueryStop;
+ PFN_WDF_DEVICE_USAGE_NOTIFICATION EvtDeviceUsageNotification;
+ PFN_WDF_DEVICE_RELATIONS_QUERY EvtDeviceRelationsQuery;
+ PFN_WDF_DEVICE_USAGE_NOTIFICATION_EX EvtDeviceUsageNotificationEx;
+} WDF_PNPPOWER_EVENT_CALLBACKS, *PWDF_PNPPOWER_EVENT_CALLBACKS;
+
+typedef struct _WDF_POWER_POLICY_EVENT_CALLBACKS {
+
+
+
+ ULONG Size;
+
+ PFN_WDF_DEVICE_ARM_WAKE_FROM_S0 EvtDeviceArmWakeFromS0;
+ PFN_WDF_DEVICE_DISARM_WAKE_FROM_S0 EvtDeviceDisarmWakeFromS0;
+ PFN_WDF_DEVICE_WAKE_FROM_S0_TRIGGERED EvtDeviceWakeFromS0Triggered;
+
+ PFN_WDF_DEVICE_ARM_WAKE_FROM_SX EvtDeviceArmWakeFromSx;
+ PFN_WDF_DEVICE_DISARM_WAKE_FROM_SX EvtDeviceDisarmWakeFromSx;
+ PFN_WDF_DEVICE_WAKE_FROM_SX_TRIGGERED EvtDeviceWakeFromSxTriggered;
+
+ PFN_WDF_DEVICE_ARM_WAKE_FROM_SX_WITH_REASON EvtDeviceArmWakeFromSxWithReason;
+
+} WDF_POWER_POLICY_EVENT_CALLBACKS, *PWDF_POWER_POLICY_EVENT_CALLBACKS;
+
+void
+__forceinline
+WDF_POWER_POLICY_EVENT_CALLBACKS_INIT(
+ PWDF_POWER_POLICY_EVENT_CALLBACKS Callbacks
+ )
+{
+ memset((Callbacks),0,(sizeof(WDF_POWER_POLICY_EVENT_CALLBACKS)));
+
+ Callbacks->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_POWER_POLICY_EVENT_CALLBACKS < WdfStructureCount) ? WdfStructures[INDEX_WDF_POWER_POLICY_EVENT_CALLBACKS] : (size_t)(-1) ) : sizeof(WDF_POWER_POLICY_EVENT_CALLBACKS) );
+}
+
+void
+__forceinline
+WDF_PNPPOWER_EVENT_CALLBACKS_INIT(
+ PWDF_PNPPOWER_EVENT_CALLBACKS Callbacks
+ )
+{
+ memset((Callbacks),0,(sizeof(WDF_PNPPOWER_EVENT_CALLBACKS)));
+ Callbacks->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_PNPPOWER_EVENT_CALLBACKS < WdfStructureCount) ? WdfStructures[INDEX_WDF_PNPPOWER_EVENT_CALLBACKS] : (size_t)(-1) ) : sizeof(WDF_PNPPOWER_EVENT_CALLBACKS) );
+}
+
+
+ULONG
+__forceinline
+WdfDevStateNormalize(
+ ULONG State
+ )
+{
+ return State & ~WdfDevStateNP;
+}
+
+
+BOOLEAN
+__forceinline
+WdfDevStateIsNP(
+ ULONG State
+ )
+{
+ return (State & WdfDevStateNP) ? 1 : 0;
+}
+
+typedef enum _WDF_POWER_POLICY_IDLE_TIMEOUT_TYPE {
+ DriverManagedIdleTimeout = 0,
+ SystemManagedIdleTimeout = 1,
+ SystemManagedIdleTimeoutWithHint = 2
+} WDF_POWER_POLICY_IDLE_TIMEOUT_TYPE, *PWDF_POWER_POLICY_IDLE_TIMEOUT_TYPE;
+
+typedef struct _WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS {
+
+
+
+ ULONG Size;
+
+
+
+
+
+ WDF_POWER_POLICY_S0_IDLE_CAPABILITIES IdleCaps;
+
+
+
+
+
+ DEVICE_POWER_STATE DxState;
+
+
+
+
+
+ ULONG IdleTimeout;
+
+
+
+
+
+ WDF_POWER_POLICY_S0_IDLE_USER_CONTROL UserControlOfIdleSettings;
+
+
+
+
+
+
+
+
+
+
+ WDF_TRI_STATE Enabled;
+
+
+
+
+
+
+
+ WDF_TRI_STATE PowerUpIdleDeviceOnSystemWake;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WDF_POWER_POLICY_IDLE_TIMEOUT_TYPE IdleTimeoutType;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WDF_TRI_STATE ExcludeD3Cold;
+
+} WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS, *PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS;
+
+void
+__forceinline
+WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT(
+ PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings,
+ WDF_POWER_POLICY_S0_IDLE_CAPABILITIES IdleCaps
+ )
+{
+ memset((Settings),0,(sizeof(WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS)));
+
+ Settings->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS < WdfStructureCount) ? WdfStructures[INDEX_WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS] : (size_t)(-1) ) : sizeof(WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS) );
+
+ Settings->IdleTimeout = ((ULONG) IdleTimeoutDefaultConstant);
+ Settings->UserControlOfIdleSettings = IdleAllowUserControl;
+ Settings->Enabled = WdfUseDefault;
+ Settings->PowerUpIdleDeviceOnSystemWake = WdfUseDefault;
+ Settings->IdleTimeoutType = DriverManagedIdleTimeout;
+ Settings->ExcludeD3Cold = WdfUseDefault;
+
+ Settings->IdleCaps = IdleCaps;
+
+ switch (IdleCaps) {
+ case IdleUsbSelectiveSuspend:
+ case IdleCanWakeFromS0:
+ Settings->DxState = PowerDeviceMaximum;
+ break;
+
+ case IdleCannotWakeFromS0:
+ Settings->DxState = PowerDeviceD3;
+ break;
+ }
+}
+
+typedef struct _WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS {
+
+
+
+ ULONG Size;
+
+
+
+
+
+ DEVICE_POWER_STATE DxState;
+
+
+
+
+
+ WDF_POWER_POLICY_SX_WAKE_USER_CONTROL UserControlOfWakeSettings;
+
+
+
+
+
+
+
+
+
+
+
+
+ WDF_TRI_STATE Enabled;
+
+
+
+
+
+
+
+
+ BOOLEAN ArmForWakeIfChildrenAreArmedForWake;
+
+
+
+
+
+
+
+ BOOLEAN IndicateChildWakeOnParentWake;
+
+} WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS, *PWDF_DEVICE_POWER_POLICY_WAKE_SETTINGS;
+
+void
+__forceinline
+WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS_INIT(
+ PWDF_DEVICE_POWER_POLICY_WAKE_SETTINGS Settings
+ )
+{
+ memset((Settings),0,(sizeof(WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS)));
+
+ Settings->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS < WdfStructureCount) ? WdfStructures[INDEX_WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS] : (size_t)(-1) ) : sizeof(WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS) );
+
+ Settings->Enabled = WdfUseDefault;
+ Settings->DxState = PowerDeviceMaximum;
+ Settings->UserControlOfWakeSettings = WakeAllowUserControl;
+}
+
+typedef struct _WDF_DEVICE_STATE {
+
+
+
+ ULONG Size;
+
+
+
+
+ WDF_TRI_STATE Disabled;
+
+
+
+
+
+ WDF_TRI_STATE DontDisplayInUI;
+
+
+
+
+
+
+ WDF_TRI_STATE Failed;
+
+
+
+
+ WDF_TRI_STATE NotDisableable;
+
+
+
+
+
+ WDF_TRI_STATE Removed;
+
+
+
+
+
+
+ WDF_TRI_STATE ResourcesChanged;
+
+
+
+
+
+ WDF_TRI_STATE AssignedToGuest;
+
+} WDF_DEVICE_STATE, *PWDF_DEVICE_STATE;
+
+void
+__forceinline
+WDF_DEVICE_STATE_INIT(
+ PWDF_DEVICE_STATE PnpDeviceState
+ )
+{
+ memset((PnpDeviceState),0,(sizeof(WDF_DEVICE_STATE)));
+
+ PnpDeviceState->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_DEVICE_STATE < WdfStructureCount) ? WdfStructures[INDEX_WDF_DEVICE_STATE] : (size_t)(-1) ) : sizeof(WDF_DEVICE_STATE) );
+
+
+
+
+ PnpDeviceState->Disabled = WdfUseDefault;
+ PnpDeviceState->DontDisplayInUI = WdfUseDefault;
+ PnpDeviceState->Failed = WdfUseDefault;
+ PnpDeviceState->NotDisableable = WdfUseDefault;
+ PnpDeviceState->Removed = WdfUseDefault;
+ PnpDeviceState->ResourcesChanged = WdfUseDefault;
+ PnpDeviceState->AssignedToGuest = WdfUseDefault;
+}
+
+typedef struct _WDF_DEVICE_PNP_CAPABILITIES {
+
+
+
+ ULONG Size;
+
+
+
+
+
+ WDF_TRI_STATE LockSupported;
+ WDF_TRI_STATE EjectSupported;
+ WDF_TRI_STATE Removable;
+ WDF_TRI_STATE DockDevice;
+ WDF_TRI_STATE UniqueID;
+ WDF_TRI_STATE SilentInstall;
+ WDF_TRI_STATE SurpriseRemovalOK;
+ WDF_TRI_STATE HardwareDisabled;
+ WDF_TRI_STATE NoDisplayInUI;
+
+
+
+
+ ULONG Address;
+ ULONG UINumber;
+
+} WDF_DEVICE_PNP_CAPABILITIES, *PWDF_DEVICE_PNP_CAPABILITIES;
+
+void
+__forceinline
+WDF_DEVICE_PNP_CAPABILITIES_INIT(
+ PWDF_DEVICE_PNP_CAPABILITIES Caps
+ )
+{
+ memset((Caps),0,(sizeof(WDF_DEVICE_PNP_CAPABILITIES)));
+
+ Caps->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_DEVICE_PNP_CAPABILITIES < WdfStructureCount) ? WdfStructures[INDEX_WDF_DEVICE_PNP_CAPABILITIES] : (size_t)(-1) ) : sizeof(WDF_DEVICE_PNP_CAPABILITIES) );
+
+ Caps->LockSupported = WdfUseDefault;
+ Caps->EjectSupported = WdfUseDefault;
+ Caps->Removable = WdfUseDefault;
+ Caps->DockDevice = WdfUseDefault;
+ Caps->UniqueID = WdfUseDefault;
+ Caps->SilentInstall = WdfUseDefault;
+ Caps->SurpriseRemovalOK = WdfUseDefault;
+ Caps->HardwareDisabled = WdfUseDefault;
+ Caps->NoDisplayInUI = WdfUseDefault;
+
+ Caps->Address = (ULONG) -1;
+ Caps->UINumber = (ULONG) -1;
+}
+
+typedef struct _WDF_DEVICE_POWER_CAPABILITIES {
+
+
+
+ ULONG Size;
+
+ WDF_TRI_STATE DeviceD1;
+ WDF_TRI_STATE DeviceD2;
+
+ WDF_TRI_STATE WakeFromD0;
+ WDF_TRI_STATE WakeFromD1;
+ WDF_TRI_STATE WakeFromD2;
+ WDF_TRI_STATE WakeFromD3;
+
+
+
+
+ DEVICE_POWER_STATE DeviceState[PowerSystemMaximum];
+
+
+
+
+
+ DEVICE_POWER_STATE DeviceWake;
+ SYSTEM_POWER_STATE SystemWake;
+
+
+
+
+ ULONG D1Latency;
+ ULONG D2Latency;
+ ULONG D3Latency;
+
+
+
+
+
+
+
+ DEVICE_POWER_STATE IdealDxStateForSx;
+
+} WDF_DEVICE_POWER_CAPABILITIES, *PWDF_DEVICE_POWER_CAPABILITIES;
+
+void
+__forceinline
+WDF_DEVICE_POWER_CAPABILITIES_INIT(
+ PWDF_DEVICE_POWER_CAPABILITIES Caps
+ )
+{
+ ULONG i;
+
+ memset((Caps),0,(sizeof(WDF_DEVICE_POWER_CAPABILITIES)));
+
+ Caps->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_DEVICE_POWER_CAPABILITIES < WdfStructureCount) ? WdfStructures[INDEX_WDF_DEVICE_POWER_CAPABILITIES] : (size_t)(-1) ) : sizeof(WDF_DEVICE_POWER_CAPABILITIES) );
+
+ Caps->DeviceD1 = WdfUseDefault;
+ Caps->DeviceD2 = WdfUseDefault;
+
+ Caps->WakeFromD0 = WdfUseDefault;
+ Caps->WakeFromD1 = WdfUseDefault;
+ Caps->WakeFromD2 = WdfUseDefault;
+ Caps->WakeFromD3 = WdfUseDefault;
+
+ for (i = 0; i < sizeof(Caps->DeviceState)/sizeof(Caps->DeviceState[1]); i++) {
+ Caps->DeviceState[i] = PowerDeviceMaximum;
+ }
+
+ Caps->DeviceWake = PowerDeviceMaximum;
+ Caps->SystemWake = PowerSystemMaximum;
+
+ Caps->D1Latency = (ULONG) -1;
+ Caps->D2Latency = (ULONG) -1;
+ Caps->D3Latency = (ULONG) -1;
+
+ Caps->IdealDxStateForSx = PowerDeviceMaximum;
+}
+
+typedef enum _WDF_REMOVE_LOCK_OPTIONS_FLAGS {
+ WDF_REMOVE_LOCK_OPTION_ACQUIRE_FOR_IO = 0x00000001
+} WDF_REMOVE_LOCK_OPTIONS_FLAGS;
+
+typedef struct _WDF_REMOVE_LOCK_OPTIONS {
+
+
+
+ ULONG Size;
+
+
+
+
+
+ ULONG Flags;
+} WDF_REMOVE_LOCK_OPTIONS, *PWDF_REMOVE_LOCK_OPTIONS;
+
+
+
+
+
+void
+__forceinline
+WDF_REMOVE_LOCK_OPTIONS_INIT(
+ PWDF_REMOVE_LOCK_OPTIONS RemoveLockOptions,
+ ULONG Flags
+ )
+{
+ memset((RemoveLockOptions),0,(sizeof(WDF_REMOVE_LOCK_OPTIONS)));
+
+ RemoveLockOptions->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_REMOVE_LOCK_OPTIONS < WdfStructureCount) ? WdfStructures[INDEX_WDF_REMOVE_LOCK_OPTIONS] : (size_t)(-1) ) : sizeof(WDF_REMOVE_LOCK_OPTIONS) );
+ RemoveLockOptions->Flags = Flags;
+}
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDFDEVICE_WDM_IRP_PREPROCESS(
+
+ WDFDEVICE Device,
+
+ PIRP Irp
+ );
+
+typedef EVT_WDFDEVICE_WDM_IRP_PREPROCESS *PFN_WDFDEVICE_WDM_IRP_PREPROCESS;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDFDEVICE_WDM_IRP_DISPATCH(
+
+ WDFDEVICE Device,
+
+ UCHAR MajorFunction,
+
+ UCHAR MinorFunction,
+
+ ULONG Code,
+
+ WDFCONTEXT DriverContext,
+
+ PIRP Irp,
+
+ WDFCONTEXT DispatchContext
+ );
+
+typedef EVT_WDFDEVICE_WDM_IRP_DISPATCH *PFN_WDFDEVICE_WDM_IRP_DISPATCH;
+
+
+
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_IO_IN_CALLER_CONTEXT(
+
+ WDFDEVICE Device,
+
+ WDFREQUEST Request
+ );
+
+typedef EVT_WDF_IO_IN_CALLER_CONTEXT *PFN_WDF_IO_IN_CALLER_CONTEXT;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDFDEVICE_WDM_POST_PO_FX_REGISTER_DEVICE(
+
+ WDFDEVICE Device,
+
+ POHANDLE PoHandle
+ );
+
+typedef EVT_WDFDEVICE_WDM_POST_PO_FX_REGISTER_DEVICE *PFN_WDFDEVICE_WDM_POST_PO_FX_REGISTER_DEVICE;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDFDEVICE_WDM_PRE_PO_FX_UNREGISTER_DEVICE(
+
+ WDFDEVICE Device,
+
+ POHANDLE PoHandle
+ );
+
+typedef EVT_WDFDEVICE_WDM_PRE_PO_FX_UNREGISTER_DEVICE *PFN_WDFDEVICE_WDM_PRE_PO_FX_UNREGISTER_DEVICE;
+
+typedef struct _WDF_POWER_FRAMEWORK_SETTINGS {
+
+
+
+ ULONG Size;
+
+
+
+
+
+
+ PFN_WDFDEVICE_WDM_POST_PO_FX_REGISTER_DEVICE EvtDeviceWdmPostPoFxRegisterDevice;
+
+
+
+
+
+
+ PFN_WDFDEVICE_WDM_PRE_PO_FX_UNREGISTER_DEVICE EvtDeviceWdmPrePoFxUnregisterDevice;
+
+
+
+
+
+
+
+ PPO_FX_COMPONENT Component;
+
+
+
+
+
+
+ PPO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK ComponentActiveConditionCallback;
+
+
+
+
+
+
+ PPO_FX_COMPONENT_IDLE_CONDITION_CALLBACK ComponentIdleConditionCallback;
+
+
+
+
+
+
+ PPO_FX_COMPONENT_IDLE_STATE_CALLBACK ComponentIdleStateCallback;
+
+
+
+
+
+
+ PPO_FX_POWER_CONTROL_CALLBACK PowerControlCallback;
+
+
+
+
+
+ PVOID PoFxDeviceContext;
+
+
+
+
+
+
+
+
+
+
+ ULONGLONG PoFxDeviceFlags;
+
+
+
+
+ WDF_TRI_STATE DirectedPoFxEnabled;
+
+} WDF_POWER_FRAMEWORK_SETTINGS, *PWDF_POWER_FRAMEWORK_SETTINGS;
+
+void
+__forceinline
+WDF_POWER_FRAMEWORK_SETTINGS_INIT(
+ PWDF_POWER_FRAMEWORK_SETTINGS PowerFrameworkSettings
+ )
+{
+ memset((PowerFrameworkSettings),0,(sizeof(WDF_POWER_FRAMEWORK_SETTINGS)));
+#line 1905 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfdevice.h"
+ PowerFrameworkSettings->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_POWER_FRAMEWORK_SETTINGS < WdfStructureCount) ? WdfStructures[INDEX_WDF_POWER_FRAMEWORK_SETTINGS] : (size_t)(-1) ) : sizeof(WDF_POWER_FRAMEWORK_SETTINGS) );
+ PowerFrameworkSettings->DirectedPoFxEnabled = WdfUseDefault;
+}
+
+
+typedef struct _WDF_IO_TYPE_CONFIG {
+
+
+
+ ULONG Size;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WDF_DEVICE_IO_TYPE ReadWriteIoType;
+
+
+
+
+
+
+
+
+
+
+
+
+ WDF_DEVICE_IO_TYPE DeviceControlIoType;
+
+
+
+
+
+
+
+
+
+
+
+
+ ULONG DirectTransferThreshold;
+
+} WDF_IO_TYPE_CONFIG, *PWDF_IO_TYPE_CONFIG;
+
+void
+__forceinline
+WDF_IO_TYPE_CONFIG_INIT(
+ PWDF_IO_TYPE_CONFIG IoTypeConfig
+ )
+{
+ memset((IoTypeConfig),0,(sizeof(WDF_IO_TYPE_CONFIG)));
+ IoTypeConfig->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_IO_TYPE_CONFIG < WdfStructureCount) ? WdfStructures[INDEX_WDF_IO_TYPE_CONFIG] : (size_t)(-1) ) : sizeof(WDF_IO_TYPE_CONFIG) );
+ IoTypeConfig->ReadWriteIoType = WdfDeviceIoBuffered;
+ IoTypeConfig->DeviceControlIoType = WdfDeviceIoBuffered;
+}
+
+
+
+
+
+typedef struct _WDF_DEVICE_PROPERTY_DATA {
+
+
+
+ ULONG Size;
+
+
+
+
+
+ const DEVPROPKEY * PropertyKey;
+
+
+
+
+
+
+
+
+
+ LCID Lcid;
+
+
+
+
+
+
+ ULONG Flags;
+
+} WDF_DEVICE_PROPERTY_DATA, *PWDF_DEVICE_PROPERTY_DATA;
+
+__forceinline
+void
+WDF_DEVICE_PROPERTY_DATA_INIT (
+ PWDF_DEVICE_PROPERTY_DATA PropertyData,
+ const DEVPROPKEY* PropertyKey
+ )
+{
+ memset((PropertyData),0,(sizeof(WDF_DEVICE_PROPERTY_DATA)));
+
+ PropertyData->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_DEVICE_PROPERTY_DATA < WdfStructureCount) ? WdfStructures[INDEX_WDF_DEVICE_PROPERTY_DATA] : (size_t)(-1) ) : sizeof(WDF_DEVICE_PROPERTY_DATA) );
+ PropertyData->PropertyKey = PropertyKey;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICEGETDEVICESTATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PWDF_DEVICE_STATE DeviceState
+ );
+
+
+__forceinline
+void
+WdfDeviceGetDeviceState(
+
+ WDFDEVICE Device,
+
+ PWDF_DEVICE_STATE DeviceState
+ )
+{
+ ((PFN_WDFDEVICEGETDEVICESTATE) WdfFunctions_01033[WdfDeviceGetDeviceStateTableIndex])(WdfDriverGlobals, Device, DeviceState);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICESETDEVICESTATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PWDF_DEVICE_STATE DeviceState
+ );
+
+
+__forceinline
+void
+WdfDeviceSetDeviceState(
+
+ WDFDEVICE Device,
+
+ PWDF_DEVICE_STATE DeviceState
+ )
+{
+ ((PFN_WDFDEVICESETDEVICESTATE) WdfFunctions_01033[WdfDeviceSetDeviceStateTableIndex])(WdfDriverGlobals, Device, DeviceState);
+}
+
+
+
+
+typedef
+
+
+WDFDEVICE
+(__stdcall *PFN_WDFWDMDEVICEGETWDFDEVICEHANDLE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PDEVICE_OBJECT DeviceObject
+ );
+
+
+__forceinline
+WDFDEVICE
+WdfWdmDeviceGetWdfDeviceHandle(
+
+ PDEVICE_OBJECT DeviceObject
+ )
+{
+ return ((PFN_WDFWDMDEVICEGETWDFDEVICEHANDLE) WdfFunctions_01033[WdfWdmDeviceGetWdfDeviceHandleTableIndex])(WdfDriverGlobals, DeviceObject);
+}
+
+
+
+
+typedef
+
+
+PDEVICE_OBJECT
+(__stdcall *PFN_WDFDEVICEWDMGETDEVICEOBJECT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device
+ );
+
+
+__forceinline
+PDEVICE_OBJECT
+WdfDeviceWdmGetDeviceObject(
+
+ WDFDEVICE Device
+ )
+{
+ return ((PFN_WDFDEVICEWDMGETDEVICEOBJECT) WdfFunctions_01033[WdfDeviceWdmGetDeviceObjectTableIndex])(WdfDriverGlobals, Device);
+}
+
+
+
+
+typedef
+
+
+PDEVICE_OBJECT
+(__stdcall *PFN_WDFDEVICEWDMGETATTACHEDDEVICE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device
+ );
+
+
+__forceinline
+PDEVICE_OBJECT
+WdfDeviceWdmGetAttachedDevice(
+
+ WDFDEVICE Device
+ )
+{
+ return ((PFN_WDFDEVICEWDMGETATTACHEDDEVICE) WdfFunctions_01033[WdfDeviceWdmGetAttachedDeviceTableIndex])(WdfDriverGlobals, Device);
+}
+
+
+
+
+typedef
+
+
+PDEVICE_OBJECT
+(__stdcall *PFN_WDFDEVICEWDMGETPHYSICALDEVICE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device
+ );
+
+
+__forceinline
+PDEVICE_OBJECT
+WdfDeviceWdmGetPhysicalDevice(
+
+ WDFDEVICE Device
+ )
+{
+ return ((PFN_WDFDEVICEWDMGETPHYSICALDEVICE) WdfFunctions_01033[WdfDeviceWdmGetPhysicalDeviceTableIndex])(WdfDriverGlobals, Device);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEWDMDISPATCHPREPROCESSEDIRP)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PIRP Irp
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceWdmDispatchPreprocessedIrp(
+
+ WDFDEVICE Device,
+
+ PIRP Irp
+ )
+{
+ return ((PFN_WDFDEVICEWDMDISPATCHPREPROCESSEDIRP) WdfFunctions_01033[WdfDeviceWdmDispatchPreprocessedIrpTableIndex])(WdfDriverGlobals, Device, Irp);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEWDMDISPATCHIRP)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PIRP Irp,
+
+ WDFCONTEXT DispatchContext
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceWdmDispatchIrp(
+
+ WDFDEVICE Device,
+
+ PIRP Irp,
+
+ WDFCONTEXT DispatchContext
+ )
+{
+ return ((PFN_WDFDEVICEWDMDISPATCHIRP) WdfFunctions_01033[WdfDeviceWdmDispatchIrpTableIndex])(WdfDriverGlobals, Device, Irp, DispatchContext);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEWDMDISPATCHIRPTOIOQUEUE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PIRP Irp,
+
+ WDFQUEUE Queue,
+
+ ULONG Flags
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceWdmDispatchIrpToIoQueue(
+
+ WDFDEVICE Device,
+
+ PIRP Irp,
+
+ WDFQUEUE Queue,
+
+ ULONG Flags
+ )
+{
+ return ((PFN_WDFDEVICEWDMDISPATCHIRPTOIOQUEUE) WdfFunctions_01033[WdfDeviceWdmDispatchIrpToIoQueueTableIndex])(WdfDriverGlobals, Device, Irp, Queue, Flags);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEADDDEPENDENTUSAGEDEVICEOBJECT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PDEVICE_OBJECT DependentDevice
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceAddDependentUsageDeviceObject(
+
+ WDFDEVICE Device,
+
+ PDEVICE_OBJECT DependentDevice
+ )
+{
+ return ((PFN_WDFDEVICEADDDEPENDENTUSAGEDEVICEOBJECT) WdfFunctions_01033[WdfDeviceAddDependentUsageDeviceObjectTableIndex])(WdfDriverGlobals, Device, DependentDevice);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICEREMOVEDEPENDENTUSAGEDEVICEOBJECT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PDEVICE_OBJECT DependentDevice
+ );
+
+
+__forceinline
+void
+WdfDeviceRemoveDependentUsageDeviceObject(
+
+ WDFDEVICE Device,
+
+ PDEVICE_OBJECT DependentDevice
+ )
+{
+ ((PFN_WDFDEVICEREMOVEDEPENDENTUSAGEDEVICEOBJECT) WdfFunctions_01033[WdfDeviceRemoveDependentUsageDeviceObjectTableIndex])(WdfDriverGlobals, Device, DependentDevice);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEADDREMOVALRELATIONSPHYSICALDEVICE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PDEVICE_OBJECT PhysicalDevice
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceAddRemovalRelationsPhysicalDevice(
+
+ WDFDEVICE Device,
+
+ PDEVICE_OBJECT PhysicalDevice
+ )
+{
+ return ((PFN_WDFDEVICEADDREMOVALRELATIONSPHYSICALDEVICE) WdfFunctions_01033[WdfDeviceAddRemovalRelationsPhysicalDeviceTableIndex])(WdfDriverGlobals, Device, PhysicalDevice);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICEREMOVEREMOVALRELATIONSPHYSICALDEVICE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PDEVICE_OBJECT PhysicalDevice
+ );
+
+
+__forceinline
+void
+WdfDeviceRemoveRemovalRelationsPhysicalDevice(
+
+ WDFDEVICE Device,
+
+ PDEVICE_OBJECT PhysicalDevice
+ )
+{
+ ((PFN_WDFDEVICEREMOVEREMOVALRELATIONSPHYSICALDEVICE) WdfFunctions_01033[WdfDeviceRemoveRemovalRelationsPhysicalDeviceTableIndex])(WdfDriverGlobals, Device, PhysicalDevice);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICECLEARREMOVALRELATIONSDEVICES)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device
+ );
+
+
+__forceinline
+void
+WdfDeviceClearRemovalRelationsDevices(
+
+ WDFDEVICE Device
+ )
+{
+ ((PFN_WDFDEVICECLEARREMOVALRELATIONSDEVICES) WdfFunctions_01033[WdfDeviceClearRemovalRelationsDevicesTableIndex])(WdfDriverGlobals, Device);
+}
+
+
+
+
+typedef
+
+
+WDFDRIVER
+(__stdcall *PFN_WDFDEVICEGETDRIVER)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device
+ );
+
+
+__forceinline
+WDFDRIVER
+WdfDeviceGetDriver(
+
+ WDFDEVICE Device
+ )
+{
+ return ((PFN_WDFDEVICEGETDRIVER) WdfFunctions_01033[WdfDeviceGetDriverTableIndex])(WdfDriverGlobals, Device);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICERETRIEVEDEVICENAME)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ WDFSTRING String
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceRetrieveDeviceName(
+
+ WDFDEVICE Device,
+
+ WDFSTRING String
+ )
+{
+ return ((PFN_WDFDEVICERETRIEVEDEVICENAME) WdfFunctions_01033[WdfDeviceRetrieveDeviceNameTableIndex])(WdfDriverGlobals, Device, String);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEASSIGNMOFRESOURCENAME)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PCUNICODE_STRING MofResourceName
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceAssignMofResourceName(
+
+ WDFDEVICE Device,
+
+ PCUNICODE_STRING MofResourceName
+ )
+{
+ return ((PFN_WDFDEVICEASSIGNMOFRESOURCENAME) WdfFunctions_01033[WdfDeviceAssignMofResourceNameTableIndex])(WdfDriverGlobals, Device, MofResourceName);
+}
+
+
+
+
+typedef
+
+
+WDFIOTARGET
+(__stdcall *PFN_WDFDEVICEGETIOTARGET)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device
+ );
+
+
+__forceinline
+WDFIOTARGET
+WdfDeviceGetIoTarget(
+
+ WDFDEVICE Device
+ )
+{
+ return ((PFN_WDFDEVICEGETIOTARGET) WdfFunctions_01033[WdfDeviceGetIoTargetTableIndex])(WdfDriverGlobals, Device);
+}
+
+
+
+
+typedef
+
+
+WDF_DEVICE_PNP_STATE
+(__stdcall *PFN_WDFDEVICEGETDEVICEPNPSTATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device
+ );
+
+
+__forceinline
+WDF_DEVICE_PNP_STATE
+WdfDeviceGetDevicePnpState(
+
+ WDFDEVICE Device
+ )
+{
+ return ((PFN_WDFDEVICEGETDEVICEPNPSTATE) WdfFunctions_01033[WdfDeviceGetDevicePnpStateTableIndex])(WdfDriverGlobals, Device);
+}
+
+
+
+
+typedef
+
+
+WDF_DEVICE_POWER_STATE
+(__stdcall *PFN_WDFDEVICEGETDEVICEPOWERSTATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device
+ );
+
+
+__forceinline
+WDF_DEVICE_POWER_STATE
+WdfDeviceGetDevicePowerState(
+
+ WDFDEVICE Device
+ )
+{
+ return ((PFN_WDFDEVICEGETDEVICEPOWERSTATE) WdfFunctions_01033[WdfDeviceGetDevicePowerStateTableIndex])(WdfDriverGlobals, Device);
+}
+
+
+
+
+typedef
+
+
+WDF_DEVICE_POWER_POLICY_STATE
+(__stdcall *PFN_WDFDEVICEGETDEVICEPOWERPOLICYSTATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device
+ );
+
+
+__forceinline
+WDF_DEVICE_POWER_POLICY_STATE
+WdfDeviceGetDevicePowerPolicyState(
+
+ WDFDEVICE Device
+ )
+{
+ return ((PFN_WDFDEVICEGETDEVICEPOWERPOLICYSTATE) WdfFunctions_01033[WdfDeviceGetDevicePowerPolicyStateTableIndex])(WdfDriverGlobals, Device);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEASSIGNS0IDLESETTINGS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceAssignS0IdleSettings(
+
+ WDFDEVICE Device,
+
+ PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings
+ )
+{
+ return ((PFN_WDFDEVICEASSIGNS0IDLESETTINGS) WdfFunctions_01033[WdfDeviceAssignS0IdleSettingsTableIndex])(WdfDriverGlobals, Device, Settings);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEASSIGNSXWAKESETTINGS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PWDF_DEVICE_POWER_POLICY_WAKE_SETTINGS Settings
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceAssignSxWakeSettings(
+
+ WDFDEVICE Device,
+
+ PWDF_DEVICE_POWER_POLICY_WAKE_SETTINGS Settings
+ )
+{
+ return ((PFN_WDFDEVICEASSIGNSXWAKESETTINGS) WdfFunctions_01033[WdfDeviceAssignSxWakeSettingsTableIndex])(WdfDriverGlobals, Device, Settings);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEOPENREGISTRYKEY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ ULONG DeviceInstanceKeyType,
+
+ ACCESS_MASK DesiredAccess,
+
+ PWDF_OBJECT_ATTRIBUTES KeyAttributes,
+
+ WDFKEY* Key
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceOpenRegistryKey(
+
+ WDFDEVICE Device,
+
+ ULONG DeviceInstanceKeyType,
+
+ ACCESS_MASK DesiredAccess,
+
+ PWDF_OBJECT_ATTRIBUTES KeyAttributes,
+
+ WDFKEY* Key
+ )
+{
+ return ((PFN_WDFDEVICEOPENREGISTRYKEY) WdfFunctions_01033[WdfDeviceOpenRegistryKeyTableIndex])(WdfDriverGlobals, Device, DeviceInstanceKeyType, DesiredAccess, KeyAttributes, Key);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEOPENDEVICEMAPKEY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PCUNICODE_STRING KeyName,
+
+ ACCESS_MASK DesiredAccess,
+
+ PWDF_OBJECT_ATTRIBUTES KeyAttributes,
+
+ WDFKEY* Key
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceOpenDevicemapKey(
+
+ WDFDEVICE Device,
+
+ PCUNICODE_STRING KeyName,
+
+ ACCESS_MASK DesiredAccess,
+
+ PWDF_OBJECT_ATTRIBUTES KeyAttributes,
+
+ WDFKEY* Key
+ )
+{
+ return ((PFN_WDFDEVICEOPENDEVICEMAPKEY) WdfFunctions_01033[WdfDeviceOpenDevicemapKeyTableIndex])(WdfDriverGlobals, Device, KeyName, DesiredAccess, KeyAttributes, Key);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICESETSPECIALFILESUPPORT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ WDF_SPECIAL_FILE_TYPE FileType,
+
+ BOOLEAN FileTypeIsSupported
+ );
+
+
+__forceinline
+void
+WdfDeviceSetSpecialFileSupport(
+
+ WDFDEVICE Device,
+
+ WDF_SPECIAL_FILE_TYPE FileType,
+
+ BOOLEAN FileTypeIsSupported
+ )
+{
+ ((PFN_WDFDEVICESETSPECIALFILESUPPORT) WdfFunctions_01033[WdfDeviceSetSpecialFileSupportTableIndex])(WdfDriverGlobals, Device, FileType, FileTypeIsSupported);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICESETCHARACTERISTICS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ ULONG DeviceCharacteristics
+ );
+
+
+
+
+
+
+
+__forceinline
+void
+WdfDeviceSetCharacteristics(
+
+ WDFDEVICE Device,
+
+ ULONG DeviceCharacteristics
+ )
+{
+ ((PFN_WDFDEVICESETCHARACTERISTICS) WdfFunctions_01033[WdfDeviceSetCharacteristicsTableIndex])(WdfDriverGlobals, Device, DeviceCharacteristics);
+}
+
+
+
+
+typedef
+
+
+ULONG
+(__stdcall *PFN_WDFDEVICEGETCHARACTERISTICS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device
+ );
+
+
+__forceinline
+ULONG
+WdfDeviceGetCharacteristics(
+
+ WDFDEVICE Device
+ )
+{
+ return ((PFN_WDFDEVICEGETCHARACTERISTICS) WdfFunctions_01033[WdfDeviceGetCharacteristicsTableIndex])(WdfDriverGlobals, Device);
+}
+
+
+
+
+typedef
+
+
+ULONG
+(__stdcall *PFN_WDFDEVICEGETALIGNMENTREQUIREMENT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device
+ );
+
+
+__forceinline
+ULONG
+WdfDeviceGetAlignmentRequirement(
+
+ WDFDEVICE Device
+ )
+{
+ return ((PFN_WDFDEVICEGETALIGNMENTREQUIREMENT) WdfFunctions_01033[WdfDeviceGetAlignmentRequirementTableIndex])(WdfDriverGlobals, Device);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICESETALIGNMENTREQUIREMENT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ ULONG AlignmentRequirement
+ );
+
+
+__forceinline
+void
+WdfDeviceSetAlignmentRequirement(
+
+ WDFDEVICE Device,
+
+ ULONG AlignmentRequirement
+ )
+{
+ ((PFN_WDFDEVICESETALIGNMENTREQUIREMENT) WdfFunctions_01033[WdfDeviceSetAlignmentRequirementTableIndex])(WdfDriverGlobals, Device, AlignmentRequirement);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICEINITFREE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit
+ );
+
+
+__forceinline
+void
+WdfDeviceInitFree(
+
+ PWDFDEVICE_INIT DeviceInit
+ )
+{
+ ((PFN_WDFDEVICEINITFREE) WdfFunctions_01033[WdfDeviceInitFreeTableIndex])(WdfDriverGlobals, DeviceInit);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICEINITSETPNPPOWEREVENTCALLBACKS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PWDF_PNPPOWER_EVENT_CALLBACKS PnpPowerEventCallbacks
+ );
+
+
+__forceinline
+void
+WdfDeviceInitSetPnpPowerEventCallbacks(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PWDF_PNPPOWER_EVENT_CALLBACKS PnpPowerEventCallbacks
+ )
+{
+ ((PFN_WDFDEVICEINITSETPNPPOWEREVENTCALLBACKS) WdfFunctions_01033[WdfDeviceInitSetPnpPowerEventCallbacksTableIndex])(WdfDriverGlobals, DeviceInit, PnpPowerEventCallbacks);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICEINITSETPOWERPOLICYEVENTCALLBACKS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PWDF_POWER_POLICY_EVENT_CALLBACKS PowerPolicyEventCallbacks
+ );
+
+
+__forceinline
+void
+WdfDeviceInitSetPowerPolicyEventCallbacks(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PWDF_POWER_POLICY_EVENT_CALLBACKS PowerPolicyEventCallbacks
+ )
+{
+ ((PFN_WDFDEVICEINITSETPOWERPOLICYEVENTCALLBACKS) WdfFunctions_01033[WdfDeviceInitSetPowerPolicyEventCallbacksTableIndex])(WdfDriverGlobals, DeviceInit, PowerPolicyEventCallbacks);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICEINITSETPOWERPOLICYOWNERSHIP)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ BOOLEAN IsPowerPolicyOwner
+ );
+
+
+__forceinline
+void
+WdfDeviceInitSetPowerPolicyOwnership(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ BOOLEAN IsPowerPolicyOwner
+ )
+{
+ ((PFN_WDFDEVICEINITSETPOWERPOLICYOWNERSHIP) WdfFunctions_01033[WdfDeviceInitSetPowerPolicyOwnershipTableIndex])(WdfDriverGlobals, DeviceInit, IsPowerPolicyOwner);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEINITREGISTERPNPSTATECHANGECALLBACK)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ WDF_DEVICE_PNP_STATE PnpState,
+
+ PFN_WDF_DEVICE_PNP_STATE_CHANGE_NOTIFICATION EvtDevicePnpStateChange,
+
+ ULONG CallbackTypes
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceInitRegisterPnpStateChangeCallback(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ WDF_DEVICE_PNP_STATE PnpState,
+
+ PFN_WDF_DEVICE_PNP_STATE_CHANGE_NOTIFICATION EvtDevicePnpStateChange,
+
+ ULONG CallbackTypes
+ )
+{
+ return ((PFN_WDFDEVICEINITREGISTERPNPSTATECHANGECALLBACK) WdfFunctions_01033[WdfDeviceInitRegisterPnpStateChangeCallbackTableIndex])(WdfDriverGlobals, DeviceInit, PnpState, EvtDevicePnpStateChange, CallbackTypes);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEINITREGISTERPOWERSTATECHANGECALLBACK)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ WDF_DEVICE_POWER_STATE PowerState,
+
+ PFN_WDF_DEVICE_POWER_STATE_CHANGE_NOTIFICATION EvtDevicePowerStateChange,
+
+ ULONG CallbackTypes
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceInitRegisterPowerStateChangeCallback(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ WDF_DEVICE_POWER_STATE PowerState,
+
+ PFN_WDF_DEVICE_POWER_STATE_CHANGE_NOTIFICATION EvtDevicePowerStateChange,
+
+ ULONG CallbackTypes
+ )
+{
+ return ((PFN_WDFDEVICEINITREGISTERPOWERSTATECHANGECALLBACK) WdfFunctions_01033[WdfDeviceInitRegisterPowerStateChangeCallbackTableIndex])(WdfDriverGlobals, DeviceInit, PowerState, EvtDevicePowerStateChange, CallbackTypes);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEINITREGISTERPOWERPOLICYSTATECHANGECALLBACK)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ WDF_DEVICE_POWER_POLICY_STATE PowerPolicyState,
+
+ PFN_WDF_DEVICE_POWER_POLICY_STATE_CHANGE_NOTIFICATION EvtDevicePowerPolicyStateChange,
+
+ ULONG CallbackTypes
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceInitRegisterPowerPolicyStateChangeCallback(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ WDF_DEVICE_POWER_POLICY_STATE PowerPolicyState,
+
+ PFN_WDF_DEVICE_POWER_POLICY_STATE_CHANGE_NOTIFICATION EvtDevicePowerPolicyStateChange,
+
+ ULONG CallbackTypes
+ )
+{
+ return ((PFN_WDFDEVICEINITREGISTERPOWERPOLICYSTATECHANGECALLBACK) WdfFunctions_01033[WdfDeviceInitRegisterPowerPolicyStateChangeCallbackTableIndex])(WdfDriverGlobals, DeviceInit, PowerPolicyState, EvtDevicePowerPolicyStateChange, CallbackTypes);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICEINITSETEXCLUSIVE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ BOOLEAN IsExclusive
+ );
+
+
+__forceinline
+void
+WdfDeviceInitSetExclusive(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ BOOLEAN IsExclusive
+ )
+{
+ ((PFN_WDFDEVICEINITSETEXCLUSIVE) WdfFunctions_01033[WdfDeviceInitSetExclusiveTableIndex])(WdfDriverGlobals, DeviceInit, IsExclusive);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICEINITSETIOTYPE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ WDF_DEVICE_IO_TYPE IoType
+ );
+
+
+__forceinline
+void
+WdfDeviceInitSetIoType(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ WDF_DEVICE_IO_TYPE IoType
+ )
+{
+ ((PFN_WDFDEVICEINITSETIOTYPE) WdfFunctions_01033[WdfDeviceInitSetIoTypeTableIndex])(WdfDriverGlobals, DeviceInit, IoType);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICEINITSETPOWERNOTPAGEABLE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit
+ );
+
+
+__forceinline
+void
+WdfDeviceInitSetPowerNotPageable(
+
+ PWDFDEVICE_INIT DeviceInit
+ )
+{
+ ((PFN_WDFDEVICEINITSETPOWERNOTPAGEABLE) WdfFunctions_01033[WdfDeviceInitSetPowerNotPageableTableIndex])(WdfDriverGlobals, DeviceInit);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICEINITSETPOWERPAGEABLE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit
+ );
+
+
+__forceinline
+void
+WdfDeviceInitSetPowerPageable(
+
+ PWDFDEVICE_INIT DeviceInit
+ )
+{
+ ((PFN_WDFDEVICEINITSETPOWERPAGEABLE) WdfFunctions_01033[WdfDeviceInitSetPowerPageableTableIndex])(WdfDriverGlobals, DeviceInit);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICEINITSETPOWERINRUSH)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit
+ );
+
+
+__forceinline
+void
+WdfDeviceInitSetPowerInrush(
+
+ PWDFDEVICE_INIT DeviceInit
+ )
+{
+ ((PFN_WDFDEVICEINITSETPOWERINRUSH) WdfFunctions_01033[WdfDeviceInitSetPowerInrushTableIndex])(WdfDriverGlobals, DeviceInit);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICEINITSETDEVICETYPE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ ULONG DeviceType
+ );
+
+
+__forceinline
+void
+WdfDeviceInitSetDeviceType(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ ULONG DeviceType
+ )
+{
+ ((PFN_WDFDEVICEINITSETDEVICETYPE) WdfFunctions_01033[WdfDeviceInitSetDeviceTypeTableIndex])(WdfDriverGlobals, DeviceInit, DeviceType);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEINITASSIGNNAME)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PCUNICODE_STRING DeviceName
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceInitAssignName(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PCUNICODE_STRING DeviceName
+ )
+{
+ return ((PFN_WDFDEVICEINITASSIGNNAME) WdfFunctions_01033[WdfDeviceInitAssignNameTableIndex])(WdfDriverGlobals, DeviceInit, DeviceName);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEINITASSIGNSDDLSTRING)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PCUNICODE_STRING SDDLString
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceInitAssignSDDLString(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PCUNICODE_STRING SDDLString
+ )
+{
+ return ((PFN_WDFDEVICEINITASSIGNSDDLSTRING) WdfFunctions_01033[WdfDeviceInitAssignSDDLStringTableIndex])(WdfDriverGlobals, DeviceInit, SDDLString);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICEINITSETDEVICECLASS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ const GUID* DeviceClassGuid
+ );
+
+
+__forceinline
+void
+WdfDeviceInitSetDeviceClass(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ const GUID* DeviceClassGuid
+ )
+{
+ ((PFN_WDFDEVICEINITSETDEVICECLASS) WdfFunctions_01033[WdfDeviceInitSetDeviceClassTableIndex])(WdfDriverGlobals, DeviceInit, DeviceClassGuid);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICEINITSETCHARACTERISTICS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ ULONG DeviceCharacteristics,
+
+ BOOLEAN OrInValues
+ );
+
+
+
+
+
+
+
+__forceinline
+void
+WdfDeviceInitSetCharacteristics(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ ULONG DeviceCharacteristics,
+
+ BOOLEAN OrInValues
+ )
+{
+ ((PFN_WDFDEVICEINITSETCHARACTERISTICS) WdfFunctions_01033[WdfDeviceInitSetCharacteristicsTableIndex])(WdfDriverGlobals, DeviceInit, DeviceCharacteristics, OrInValues);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICEINITSETFILEOBJECTCONFIG)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PWDF_FILEOBJECT_CONFIG FileObjectConfig,
+
+ PWDF_OBJECT_ATTRIBUTES FileObjectAttributes
+ );
+
+
+__forceinline
+void
+WdfDeviceInitSetFileObjectConfig(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PWDF_FILEOBJECT_CONFIG FileObjectConfig,
+
+ PWDF_OBJECT_ATTRIBUTES FileObjectAttributes
+ )
+{
+ ((PFN_WDFDEVICEINITSETFILEOBJECTCONFIG) WdfFunctions_01033[WdfDeviceInitSetFileObjectConfigTableIndex])(WdfDriverGlobals, DeviceInit, FileObjectConfig, FileObjectAttributes);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICEINITSETREQUESTATTRIBUTES)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PWDF_OBJECT_ATTRIBUTES RequestAttributes
+ );
+
+
+__forceinline
+void
+WdfDeviceInitSetRequestAttributes(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PWDF_OBJECT_ATTRIBUTES RequestAttributes
+ )
+{
+ ((PFN_WDFDEVICEINITSETREQUESTATTRIBUTES) WdfFunctions_01033[WdfDeviceInitSetRequestAttributesTableIndex])(WdfDriverGlobals, DeviceInit, RequestAttributes);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEINITASSIGNWDMIRPPREPROCESSCALLBACK)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PFN_WDFDEVICE_WDM_IRP_PREPROCESS EvtDeviceWdmIrpPreprocess,
+
+ UCHAR MajorFunction,
+
+
+ PUCHAR MinorFunctions,
+
+ ULONG NumMinorFunctions
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceInitAssignWdmIrpPreprocessCallback(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PFN_WDFDEVICE_WDM_IRP_PREPROCESS EvtDeviceWdmIrpPreprocess,
+
+ UCHAR MajorFunction,
+
+
+ PUCHAR MinorFunctions,
+
+ ULONG NumMinorFunctions
+ )
+{
+ return ((PFN_WDFDEVICEINITASSIGNWDMIRPPREPROCESSCALLBACK) WdfFunctions_01033[WdfDeviceInitAssignWdmIrpPreprocessCallbackTableIndex])(WdfDriverGlobals, DeviceInit, EvtDeviceWdmIrpPreprocess, MajorFunction, MinorFunctions, NumMinorFunctions);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICEINITSETIOINCALLERCONTEXTCALLBACK)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PFN_WDF_IO_IN_CALLER_CONTEXT EvtIoInCallerContext
+ );
+
+
+__forceinline
+void
+WdfDeviceInitSetIoInCallerContextCallback(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PFN_WDF_IO_IN_CALLER_CONTEXT EvtIoInCallerContext
+ )
+{
+ ((PFN_WDFDEVICEINITSETIOINCALLERCONTEXTCALLBACK) WdfFunctions_01033[WdfDeviceInitSetIoInCallerContextCallbackTableIndex])(WdfDriverGlobals, DeviceInit, EvtIoInCallerContext);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICEINITSETREMOVELOCKOPTIONS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PWDF_REMOVE_LOCK_OPTIONS Options
+ );
+
+
+__forceinline
+void
+WdfDeviceInitSetRemoveLockOptions(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PWDF_REMOVE_LOCK_OPTIONS Options
+ )
+{
+ ((PFN_WDFDEVICEINITSETREMOVELOCKOPTIONS) WdfFunctions_01033[WdfDeviceInitSetRemoveLockOptionsTableIndex])(WdfDriverGlobals, DeviceInit, Options);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICECREATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT* DeviceInit,
+
+ PWDF_OBJECT_ATTRIBUTES DeviceAttributes,
+
+ WDFDEVICE* Device
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceCreate(
+
+ PWDFDEVICE_INIT* DeviceInit,
+
+ PWDF_OBJECT_ATTRIBUTES DeviceAttributes,
+
+ WDFDEVICE* Device
+ )
+{
+ return ((PFN_WDFDEVICECREATE) WdfFunctions_01033[WdfDeviceCreateTableIndex])(WdfDriverGlobals, DeviceInit, DeviceAttributes, Device);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICESETSTATICSTOPREMOVE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ BOOLEAN Stoppable
+ );
+
+
+__forceinline
+void
+WdfDeviceSetStaticStopRemove(
+
+ WDFDEVICE Device,
+
+ BOOLEAN Stoppable
+ )
+{
+ ((PFN_WDFDEVICESETSTATICSTOPREMOVE) WdfFunctions_01033[WdfDeviceSetStaticStopRemoveTableIndex])(WdfDriverGlobals, Device, Stoppable);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICECREATEDEVICEINTERFACE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ const GUID* InterfaceClassGUID,
+
+ PCUNICODE_STRING ReferenceString
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceCreateDeviceInterface(
+
+ WDFDEVICE Device,
+
+ const GUID* InterfaceClassGUID,
+
+ PCUNICODE_STRING ReferenceString
+ )
+{
+ return ((PFN_WDFDEVICECREATEDEVICEINTERFACE) WdfFunctions_01033[WdfDeviceCreateDeviceInterfaceTableIndex])(WdfDriverGlobals, Device, InterfaceClassGUID, ReferenceString);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICESETDEVICEINTERFACESTATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ const GUID* InterfaceClassGUID,
+
+ PCUNICODE_STRING ReferenceString,
+
+ BOOLEAN IsInterfaceEnabled
+ );
+
+
+__forceinline
+void
+WdfDeviceSetDeviceInterfaceState(
+
+ WDFDEVICE Device,
+
+ const GUID* InterfaceClassGUID,
+
+ PCUNICODE_STRING ReferenceString,
+
+ BOOLEAN IsInterfaceEnabled
+ )
+{
+ ((PFN_WDFDEVICESETDEVICEINTERFACESTATE) WdfFunctions_01033[WdfDeviceSetDeviceInterfaceStateTableIndex])(WdfDriverGlobals, Device, InterfaceClassGUID, ReferenceString, IsInterfaceEnabled);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICESETDEVICEINTERFACESTATEEX)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ const GUID* InterfaceClassGUID,
+
+ PCUNICODE_STRING ReferenceString,
+
+ BOOLEAN IsInterfaceEnabled
+ );
+
+
+__forceinline
+void
+WdfDeviceSetDeviceInterfaceStateEx(
+
+ WDFDEVICE Device,
+
+ const GUID* InterfaceClassGUID,
+
+ PCUNICODE_STRING ReferenceString,
+
+ BOOLEAN IsInterfaceEnabled
+ )
+{
+
+
+#line 3807 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfdevice.h"
+ if (( (WdfDeviceSetDeviceInterfaceStateExTableIndex < 453) || (!WdfClientVersionHigherThanFramework) || (WdfDeviceSetDeviceInterfaceStateExTableIndex < WdfFunctionCount) )) {
+ ((PFN_WDFDEVICESETDEVICEINTERFACESTATEEX) WdfFunctions_01033[WdfDeviceSetDeviceInterfaceStateExTableIndex])(WdfDriverGlobals, Device, InterfaceClassGUID, ReferenceString, IsInterfaceEnabled);
+ }
+ else {
+ ((PFN_WDFDRIVERERRORREPORTAPIMISSING) WdfFunctions_01033[WdfDriverErrorReportApiMissingTableIndex])(WdfDriverGlobals, WdfGetDriver(), ((void *)0), WdfDeviceSetDeviceInterfaceStateExTableIndex, 0);
+ }
+#line 3814 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfdevice.h"
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICERETRIEVEDEVICEINTERFACESTRING)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ const GUID* InterfaceClassGUID,
+
+ PCUNICODE_STRING ReferenceString,
+
+ WDFSTRING String
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceRetrieveDeviceInterfaceString(
+
+ WDFDEVICE Device,
+
+ const GUID* InterfaceClassGUID,
+
+ PCUNICODE_STRING ReferenceString,
+
+ WDFSTRING String
+ )
+{
+ return ((PFN_WDFDEVICERETRIEVEDEVICEINTERFACESTRING) WdfFunctions_01033[WdfDeviceRetrieveDeviceInterfaceStringTableIndex])(WdfDriverGlobals, Device, InterfaceClassGUID, ReferenceString, String);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICECREATESYMBOLICLINK)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PCUNICODE_STRING SymbolicLinkName
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceCreateSymbolicLink(
+
+ WDFDEVICE Device,
+
+ PCUNICODE_STRING SymbolicLinkName
+ )
+{
+ return ((PFN_WDFDEVICECREATESYMBOLICLINK) WdfFunctions_01033[WdfDeviceCreateSymbolicLinkTableIndex])(WdfDriverGlobals, Device, SymbolicLinkName);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEQUERYPROPERTY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ DEVICE_REGISTRY_PROPERTY DeviceProperty,
+
+ ULONG BufferLength,
+
+ PVOID PropertyBuffer,
+
+ PULONG ResultLength
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceQueryProperty(
+
+ WDFDEVICE Device,
+
+ DEVICE_REGISTRY_PROPERTY DeviceProperty,
+
+ ULONG BufferLength,
+
+ PVOID PropertyBuffer,
+
+ PULONG ResultLength
+ )
+{
+ return ((PFN_WDFDEVICEQUERYPROPERTY) WdfFunctions_01033[WdfDeviceQueryPropertyTableIndex])(WdfDriverGlobals, Device, DeviceProperty, BufferLength, PropertyBuffer, ResultLength);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEALLOCANDQUERYPROPERTY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ DEVICE_REGISTRY_PROPERTY DeviceProperty,
+
+
+ POOL_TYPE PoolType,
+
+ PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
+
+ WDFMEMORY* PropertyMemory
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceAllocAndQueryProperty(
+
+ WDFDEVICE Device,
+
+ DEVICE_REGISTRY_PROPERTY DeviceProperty,
+
+
+ POOL_TYPE PoolType,
+
+ PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
+
+ WDFMEMORY* PropertyMemory
+ )
+{
+ return ((PFN_WDFDEVICEALLOCANDQUERYPROPERTY) WdfFunctions_01033[WdfDeviceAllocAndQueryPropertyTableIndex])(WdfDriverGlobals, Device, DeviceProperty, PoolType, PropertyMemoryAttributes, PropertyMemory);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICESETPNPCAPABILITIES)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PWDF_DEVICE_PNP_CAPABILITIES PnpCapabilities
+ );
+
+
+__forceinline
+void
+WdfDeviceSetPnpCapabilities(
+
+ WDFDEVICE Device,
+
+ PWDF_DEVICE_PNP_CAPABILITIES PnpCapabilities
+ )
+{
+ ((PFN_WDFDEVICESETPNPCAPABILITIES) WdfFunctions_01033[WdfDeviceSetPnpCapabilitiesTableIndex])(WdfDriverGlobals, Device, PnpCapabilities);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICESETPOWERCAPABILITIES)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PWDF_DEVICE_POWER_CAPABILITIES PowerCapabilities
+ );
+
+
+__forceinline
+void
+WdfDeviceSetPowerCapabilities(
+
+ WDFDEVICE Device,
+
+ PWDF_DEVICE_POWER_CAPABILITIES PowerCapabilities
+ )
+{
+ ((PFN_WDFDEVICESETPOWERCAPABILITIES) WdfFunctions_01033[WdfDeviceSetPowerCapabilitiesTableIndex])(WdfDriverGlobals, Device, PowerCapabilities);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICESETBUSINFORMATIONFORCHILDREN)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PPNP_BUS_INFORMATION BusInformation
+ );
+
+
+__forceinline
+void
+WdfDeviceSetBusInformationForChildren(
+
+ WDFDEVICE Device,
+
+ PPNP_BUS_INFORMATION BusInformation
+ )
+{
+ ((PFN_WDFDEVICESETBUSINFORMATIONFORCHILDREN) WdfFunctions_01033[WdfDeviceSetBusInformationForChildrenTableIndex])(WdfDriverGlobals, Device, BusInformation);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEINDICATEWAKESTATUS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ NTSTATUS WaitWakeStatus
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceIndicateWakeStatus(
+
+ WDFDEVICE Device,
+
+ NTSTATUS WaitWakeStatus
+ )
+{
+ return ((PFN_WDFDEVICEINDICATEWAKESTATUS) WdfFunctions_01033[WdfDeviceIndicateWakeStatusTableIndex])(WdfDriverGlobals, Device, WaitWakeStatus);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICESETFAILED)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ WDF_DEVICE_FAILED_ACTION FailedAction
+ );
+
+
+__forceinline
+void
+WdfDeviceSetFailed(
+
+ WDFDEVICE Device,
+
+ WDF_DEVICE_FAILED_ACTION FailedAction
+ )
+{
+ ((PFN_WDFDEVICESETFAILED) WdfFunctions_01033[WdfDeviceSetFailedTableIndex])(WdfDriverGlobals, Device, FailedAction);
+}
+
+
+
+
+typedef
+
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICESTOPIDLENOTRACK)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ BOOLEAN WaitForD0
+ );
+
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceStopIdleNoTrack(
+
+ WDFDEVICE Device,
+
+ BOOLEAN WaitForD0
+ )
+{
+ return ((PFN_WDFDEVICESTOPIDLENOTRACK) WdfFunctions_01033[WdfDeviceStopIdleNoTrackTableIndex])(WdfDriverGlobals, Device, WaitForD0);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICERESUMEIDLENOTRACK)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device
+ );
+
+
+__forceinline
+void
+WdfDeviceResumeIdleNoTrack(
+
+ WDFDEVICE Device
+ )
+{
+ ((PFN_WDFDEVICERESUMEIDLENOTRACK) WdfFunctions_01033[WdfDeviceResumeIdleNoTrackTableIndex])(WdfDriverGlobals, Device);
+}
+
+
+
+
+typedef
+
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICESTOPIDLEACTUAL)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ BOOLEAN WaitForD0,
+
+ PVOID Tag,
+
+ LONG Line,
+
+ PCCH File
+ );
+
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceStopIdleActual(
+
+ WDFDEVICE Device,
+
+ BOOLEAN WaitForD0,
+
+ PVOID Tag,
+
+ LONG Line,
+
+ PCCH File
+ )
+{
+ return ((PFN_WDFDEVICESTOPIDLEACTUAL) WdfFunctions_01033[WdfDeviceStopIdleActualTableIndex])(WdfDriverGlobals, Device, WaitForD0, Tag, Line, File);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICERESUMEIDLEACTUAL)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PVOID Tag,
+
+ LONG Line,
+
+ PCCH File
+ );
+
+
+__forceinline
+void
+WdfDeviceResumeIdleActual(
+
+ WDFDEVICE Device,
+
+ PVOID Tag,
+
+ LONG Line,
+
+ PCCH File
+ )
+{
+ ((PFN_WDFDEVICERESUMEIDLEACTUAL) WdfFunctions_01033[WdfDeviceResumeIdleActualTableIndex])(WdfDriverGlobals, Device, Tag, Line, File);
+}
+
+
+
+
+typedef
+
+
+WDFFILEOBJECT
+(__stdcall *PFN_WDFDEVICEGETFILEOBJECT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PFILE_OBJECT FileObject
+ );
+
+
+__forceinline
+WDFFILEOBJECT
+WdfDeviceGetFileObject(
+
+ WDFDEVICE Device,
+
+ PFILE_OBJECT FileObject
+ )
+{
+ return ((PFN_WDFDEVICEGETFILEOBJECT) WdfFunctions_01033[WdfDeviceGetFileObjectTableIndex])(WdfDriverGlobals, Device, FileObject);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEENQUEUEREQUEST)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ WDFREQUEST Request
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceEnqueueRequest(
+
+ WDFDEVICE Device,
+
+ WDFREQUEST Request
+ )
+{
+ return ((PFN_WDFDEVICEENQUEUEREQUEST) WdfFunctions_01033[WdfDeviceEnqueueRequestTableIndex])(WdfDriverGlobals, Device, Request);
+}
+
+
+
+
+typedef
+
+
+WDFQUEUE
+(__stdcall *PFN_WDFDEVICEGETDEFAULTQUEUE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device
+ );
+
+
+__forceinline
+WDFQUEUE
+WdfDeviceGetDefaultQueue(
+
+ WDFDEVICE Device
+ )
+{
+ return ((PFN_WDFDEVICEGETDEFAULTQUEUE) WdfFunctions_01033[WdfDeviceGetDefaultQueueTableIndex])(WdfDriverGlobals, Device);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICECONFIGUREREQUESTDISPATCHING)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ WDFQUEUE Queue,
+
+
+ WDF_REQUEST_TYPE RequestType
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceConfigureRequestDispatching(
+
+ WDFDEVICE Device,
+
+ WDFQUEUE Queue,
+
+
+ WDF_REQUEST_TYPE RequestType
+ )
+{
+ return ((PFN_WDFDEVICECONFIGUREREQUESTDISPATCHING) WdfFunctions_01033[WdfDeviceConfigureRequestDispatchingTableIndex])(WdfDriverGlobals, Device, Queue, RequestType);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICECONFIGUREWDMIRPDISPATCHCALLBACK)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ WDFDRIVER Driver,
+
+ UCHAR MajorFunction,
+
+ PFN_WDFDEVICE_WDM_IRP_DISPATCH EvtDeviceWdmIrpDispatch,
+
+ WDFCONTEXT DriverContext
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceConfigureWdmIrpDispatchCallback(
+
+ WDFDEVICE Device,
+
+ WDFDRIVER Driver,
+
+ UCHAR MajorFunction,
+
+ PFN_WDFDEVICE_WDM_IRP_DISPATCH EvtDeviceWdmIrpDispatch,
+
+ WDFCONTEXT DriverContext
+ )
+{
+ return ((PFN_WDFDEVICECONFIGUREWDMIRPDISPATCHCALLBACK) WdfFunctions_01033[WdfDeviceConfigureWdmIrpDispatchCallbackTableIndex])(WdfDriverGlobals, Device, Driver, MajorFunction, EvtDeviceWdmIrpDispatch, DriverContext);
+}
+
+
+
+
+typedef
+
+
+POWER_ACTION
+(__stdcall *PFN_WDFDEVICEGETSYSTEMPOWERACTION)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device
+ );
+
+
+__forceinline
+POWER_ACTION
+WdfDeviceGetSystemPowerAction(
+
+ WDFDEVICE Device
+ )
+{
+ return ((PFN_WDFDEVICEGETSYSTEMPOWERACTION) WdfFunctions_01033[WdfDeviceGetSystemPowerActionTableIndex])(WdfDriverGlobals, Device);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEWDMASSIGNPOWERFRAMEWORKSETTINGS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PWDF_POWER_FRAMEWORK_SETTINGS PowerFrameworkSettings
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceWdmAssignPowerFrameworkSettings(
+
+ WDFDEVICE Device,
+
+ PWDF_POWER_FRAMEWORK_SETTINGS PowerFrameworkSettings
+ )
+{
+ return ((PFN_WDFDEVICEWDMASSIGNPOWERFRAMEWORKSETTINGS) WdfFunctions_01033[WdfDeviceWdmAssignPowerFrameworkSettingsTableIndex])(WdfDriverGlobals, Device, PowerFrameworkSettings);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICEINITSETRELEASEHARDWAREORDERONFAILURE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ WDF_RELEASE_HARDWARE_ORDER_ON_FAILURE ReleaseHardwareOrderOnFailure
+ );
+
+
+__forceinline
+void
+WdfDeviceInitSetReleaseHardwareOrderOnFailure(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ WDF_RELEASE_HARDWARE_ORDER_ON_FAILURE ReleaseHardwareOrderOnFailure
+ )
+{
+ ((PFN_WDFDEVICEINITSETRELEASEHARDWAREORDERONFAILURE) WdfFunctions_01033[WdfDeviceInitSetReleaseHardwareOrderOnFailureTableIndex])(WdfDriverGlobals, DeviceInit, ReleaseHardwareOrderOnFailure);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDEVICEINITSETIOTYPEEX)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PWDF_IO_TYPE_CONFIG IoTypeConfig
+ );
+
+
+__forceinline
+void
+WdfDeviceInitSetIoTypeEx(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PWDF_IO_TYPE_CONFIG IoTypeConfig
+ )
+{
+ ((PFN_WDFDEVICEINITSETIOTYPEEX) WdfFunctions_01033[WdfDeviceInitSetIoTypeExTableIndex])(WdfDriverGlobals, DeviceInit, IoTypeConfig);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEQUERYPROPERTYEX)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
+
+ ULONG BufferLength,
+
+ PVOID PropertyBuffer,
+
+ PULONG RequiredSize,
+
+ PDEVPROPTYPE Type
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceQueryPropertyEx(
+
+ WDFDEVICE Device,
+
+ PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
+
+ ULONG BufferLength,
+
+ PVOID PropertyBuffer,
+
+ PULONG RequiredSize,
+
+ PDEVPROPTYPE Type
+ )
+{
+ return ((PFN_WDFDEVICEQUERYPROPERTYEX) WdfFunctions_01033[WdfDeviceQueryPropertyExTableIndex])(WdfDriverGlobals, Device, DeviceProperty, BufferLength, PropertyBuffer, RequiredSize, Type);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEALLOCANDQUERYPROPERTYEX)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
+
+
+ POOL_TYPE PoolType,
+
+ PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
+
+ WDFMEMORY* PropertyMemory,
+
+ PDEVPROPTYPE Type
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceAllocAndQueryPropertyEx(
+
+ WDFDEVICE Device,
+
+ PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
+
+
+ POOL_TYPE PoolType,
+
+ PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
+
+ WDFMEMORY* PropertyMemory,
+
+ PDEVPROPTYPE Type
+ )
+{
+ return ((PFN_WDFDEVICEALLOCANDQUERYPROPERTYEX) WdfFunctions_01033[WdfDeviceAllocAndQueryPropertyExTableIndex])(WdfDriverGlobals, Device, DeviceProperty, PoolType, PropertyMemoryAttributes, PropertyMemory, Type);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICEASSIGNPROPERTY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
+
+ DEVPROPTYPE Type,
+
+ ULONG Size,
+
+ PVOID Data
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceAssignProperty(
+
+ WDFDEVICE Device,
+
+ PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
+
+ DEVPROPTYPE Type,
+
+ ULONG Size,
+
+ PVOID Data
+ )
+{
+ return ((PFN_WDFDEVICEASSIGNPROPERTY) WdfFunctions_01033[WdfDeviceAssignPropertyTableIndex])(WdfDriverGlobals, Device, DeviceProperty, Type, Size, Data);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDEVICERETRIEVECOMPANIONTARGET)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ WDFCOMPANIONTARGET* CompanionTarget
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDeviceRetrieveCompanionTarget(
+
+ WDFDEVICE Device,
+
+ WDFCOMPANIONTARGET* CompanionTarget
+ )
+{
+ return ((PFN_WDFDEVICERETRIEVECOMPANIONTARGET) WdfFunctions_01033[WdfDeviceRetrieveCompanionTargetTableIndex])(WdfDriverGlobals, Device, CompanionTarget);
+}
+
+
+
+#line 4724 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfdevice.h"
+
+
+
+
+#line 4729 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfdevice.h"
+
+
+#line 93 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfcollection.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFCOLLECTIONCREATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDF_OBJECT_ATTRIBUTES CollectionAttributes,
+
+ WDFCOLLECTION* Collection
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfCollectionCreate(
+
+ PWDF_OBJECT_ATTRIBUTES CollectionAttributes,
+
+ WDFCOLLECTION* Collection
+ )
+{
+ return ((PFN_WDFCOLLECTIONCREATE) WdfFunctions_01033[WdfCollectionCreateTableIndex])(WdfDriverGlobals, CollectionAttributes, Collection);
+}
+
+
+
+
+typedef
+
+
+ULONG
+(__stdcall *PFN_WDFCOLLECTIONGETCOUNT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCOLLECTION Collection
+ );
+
+
+__forceinline
+ULONG
+WdfCollectionGetCount(
+
+ WDFCOLLECTION Collection
+ )
+{
+ return ((PFN_WDFCOLLECTIONGETCOUNT) WdfFunctions_01033[WdfCollectionGetCountTableIndex])(WdfDriverGlobals, Collection);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFCOLLECTIONADD)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCOLLECTION Collection,
+
+ WDFOBJECT Object
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfCollectionAdd(
+
+ WDFCOLLECTION Collection,
+
+ WDFOBJECT Object
+ )
+{
+ return ((PFN_WDFCOLLECTIONADD) WdfFunctions_01033[WdfCollectionAddTableIndex])(WdfDriverGlobals, Collection, Object);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFCOLLECTIONREMOVE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCOLLECTION Collection,
+
+ WDFOBJECT Item
+ );
+
+
+__forceinline
+void
+WdfCollectionRemove(
+
+ WDFCOLLECTION Collection,
+
+ WDFOBJECT Item
+ )
+{
+ ((PFN_WDFCOLLECTIONREMOVE) WdfFunctions_01033[WdfCollectionRemoveTableIndex])(WdfDriverGlobals, Collection, Item);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFCOLLECTIONREMOVEITEM)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCOLLECTION Collection,
+
+ ULONG Index
+ );
+
+
+__forceinline
+void
+WdfCollectionRemoveItem(
+
+ WDFCOLLECTION Collection,
+
+ ULONG Index
+ )
+{
+ ((PFN_WDFCOLLECTIONREMOVEITEM) WdfFunctions_01033[WdfCollectionRemoveItemTableIndex])(WdfDriverGlobals, Collection, Index);
+}
+
+
+
+
+typedef
+
+
+WDFOBJECT
+(__stdcall *PFN_WDFCOLLECTIONGETITEM)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCOLLECTION Collection,
+
+ ULONG Index
+ );
+
+
+__forceinline
+WDFOBJECT
+WdfCollectionGetItem(
+
+ WDFCOLLECTION Collection,
+
+ ULONG Index
+ )
+{
+ return ((PFN_WDFCOLLECTIONGETITEM) WdfFunctions_01033[WdfCollectionGetItemTableIndex])(WdfDriverGlobals, Collection, Index);
+}
+
+
+
+
+typedef
+
+
+WDFOBJECT
+(__stdcall *PFN_WDFCOLLECTIONGETFIRSTITEM)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCOLLECTION Collection
+ );
+
+
+__forceinline
+WDFOBJECT
+WdfCollectionGetFirstItem(
+
+ WDFCOLLECTION Collection
+ )
+{
+ return ((PFN_WDFCOLLECTIONGETFIRSTITEM) WdfFunctions_01033[WdfCollectionGetFirstItemTableIndex])(WdfDriverGlobals, Collection);
+}
+
+
+
+
+typedef
+
+
+WDFOBJECT
+(__stdcall *PFN_WDFCOLLECTIONGETLASTITEM)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCOLLECTION Collection
+ );
+
+
+__forceinline
+WDFOBJECT
+WdfCollectionGetLastItem(
+
+ WDFCOLLECTION Collection
+ )
+{
+ return ((PFN_WDFCOLLECTIONGETLASTITEM) WdfFunctions_01033[WdfCollectionGetLastItemTableIndex])(WdfDriverGlobals, Collection);
+}
+
+
+
+#line 279 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfcollection.h"
+
+
+
+
+#line 284 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfcollection.h"
+
+#line 94 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfdpc.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_DPC(
+
+ WDFDPC Dpc
+ );
+
+typedef EVT_WDF_DPC *PFN_WDF_DPC;
+
+typedef struct _WDF_DPC_CONFIG {
+ ULONG Size;
+ PFN_WDF_DPC EvtDpcFunc;
+
+
+
+
+
+
+
+
+ BOOLEAN AutomaticSerialization;
+
+} WDF_DPC_CONFIG, *PWDF_DPC_CONFIG;
+
+void
+__forceinline
+WDF_DPC_CONFIG_INIT(
+ PWDF_DPC_CONFIG Config,
+ PFN_WDF_DPC EvtDpcFunc
+ )
+{
+ memset((Config),0,(sizeof(WDF_DPC_CONFIG)));
+ Config->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_DPC_CONFIG < WdfStructureCount) ? WdfStructures[INDEX_WDF_DPC_CONFIG] : (size_t)(-1) ) : sizeof(WDF_DPC_CONFIG) );
+ Config->EvtDpcFunc = EvtDpcFunc;
+
+ Config->AutomaticSerialization = 1;
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDPCCREATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDF_DPC_CONFIG Config,
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+ WDFDPC* Dpc
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDpcCreate(
+
+ PWDF_DPC_CONFIG Config,
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+ WDFDPC* Dpc
+ )
+{
+ return ((PFN_WDFDPCCREATE) WdfFunctions_01033[WdfDpcCreateTableIndex])(WdfDriverGlobals, Config, Attributes, Dpc);
+}
+
+
+
+
+typedef
+
+
+BOOLEAN
+(__stdcall *PFN_WDFDPCENQUEUE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDPC Dpc
+ );
+
+
+__forceinline
+BOOLEAN
+WdfDpcEnqueue(
+
+ WDFDPC Dpc
+ )
+{
+ return ((PFN_WDFDPCENQUEUE) WdfFunctions_01033[WdfDpcEnqueueTableIndex])(WdfDriverGlobals, Dpc);
+}
+
+
+
+
+typedef
+
+
+
+BOOLEAN
+(__stdcall *PFN_WDFDPCCANCEL)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDPC Dpc,
+
+ BOOLEAN Wait
+ );
+
+
+
+__forceinline
+BOOLEAN
+WdfDpcCancel(
+
+ WDFDPC Dpc,
+
+ BOOLEAN Wait
+ )
+{
+ return ((PFN_WDFDPCCANCEL) WdfFunctions_01033[WdfDpcCancelTableIndex])(WdfDriverGlobals, Dpc, Wait);
+}
+
+
+
+
+typedef
+
+
+WDFOBJECT
+(__stdcall *PFN_WDFDPCGETPARENTOBJECT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDPC Dpc
+ );
+
+
+__forceinline
+WDFOBJECT
+WdfDpcGetParentObject(
+
+ WDFDPC Dpc
+ )
+{
+ return ((PFN_WDFDPCGETPARENTOBJECT) WdfFunctions_01033[WdfDpcGetParentObjectTableIndex])(WdfDriverGlobals, Dpc);
+}
+
+
+
+
+typedef
+
+
+PKDPC
+(__stdcall *PFN_WDFDPCWDMGETDPC)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDPC Dpc
+ );
+
+
+__forceinline
+PKDPC
+WdfDpcWdmGetDpc(
+
+ WDFDPC Dpc
+ )
+{
+ return ((PFN_WDFDPCWDMGETDPC) WdfFunctions_01033[WdfDpcWdmGetDpcTableIndex])(WdfDriverGlobals, Dpc);
+}
+
+
+
+#line 239 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfdpc.h"
+
+
+
+
+#line 244 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfdpc.h"
+
+#line 95 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdftimer.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_TIMER(
+
+ WDFTIMER Timer
+ );
+
+typedef EVT_WDF_TIMER *PFN_WDF_TIMER;
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable: 4324)
+
+typedef struct _WDF_TIMER_CONFIG {
+ ULONG Size;
+ PFN_WDF_TIMER EvtTimerFunc;
+
+ ULONG Period;
+
+
+
+
+
+
+
+
+ BOOLEAN AutomaticSerialization;
+
+
+
+
+ ULONG TolerableDelay;
+
+
+
+
+
+ __declspec(align(8)) BOOLEAN UseHighResolutionTimer;
+
+} WDF_TIMER_CONFIG, *PWDF_TIMER_CONFIG;
+
+#pragma warning(pop)
+
+void
+__forceinline
+WDF_TIMER_CONFIG_INIT(
+ PWDF_TIMER_CONFIG Config,
+ PFN_WDF_TIMER EvtTimerFunc
+ )
+{
+ memset((Config),0,(sizeof(WDF_TIMER_CONFIG)));
+ Config->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_TIMER_CONFIG < WdfStructureCount) ? WdfStructures[INDEX_WDF_TIMER_CONFIG] : (size_t)(-1) ) : sizeof(WDF_TIMER_CONFIG) );
+ Config->EvtTimerFunc = EvtTimerFunc;
+ Config->Period = 0;
+ Config->AutomaticSerialization = 1;
+ Config->TolerableDelay = 0;
+}
+
+void
+__forceinline
+WDF_TIMER_CONFIG_INIT_PERIODIC(
+ PWDF_TIMER_CONFIG Config,
+ PFN_WDF_TIMER EvtTimerFunc,
+ LONG Period
+ )
+{
+ memset((Config),0,(sizeof(WDF_TIMER_CONFIG)));
+ Config->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_TIMER_CONFIG < WdfStructureCount) ? WdfStructures[INDEX_WDF_TIMER_CONFIG] : (size_t)(-1) ) : sizeof(WDF_TIMER_CONFIG) );
+ Config->EvtTimerFunc = EvtTimerFunc;
+ Config->Period = Period;
+ Config->AutomaticSerialization = 1;
+ Config->TolerableDelay = 0;
+}
+
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFTIMERCREATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDF_TIMER_CONFIG Config,
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+ WDFTIMER* Timer
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfTimerCreate(
+
+ PWDF_TIMER_CONFIG Config,
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+ WDFTIMER* Timer
+ )
+{
+ return ((PFN_WDFTIMERCREATE) WdfFunctions_01033[WdfTimerCreateTableIndex])(WdfDriverGlobals, Config, Attributes, Timer);
+}
+
+
+
+
+typedef
+
+
+BOOLEAN
+(__stdcall *PFN_WDFTIMERSTART)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFTIMER Timer,
+
+ LONGLONG DueTime
+ );
+
+
+__forceinline
+BOOLEAN
+WdfTimerStart(
+
+ WDFTIMER Timer,
+
+ LONGLONG DueTime
+ )
+{
+ return ((PFN_WDFTIMERSTART) WdfFunctions_01033[WdfTimerStartTableIndex])(WdfDriverGlobals, Timer, DueTime);
+}
+
+
+
+
+typedef
+
+
+
+BOOLEAN
+(__stdcall *PFN_WDFTIMERSTOP)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFTIMER Timer,
+
+ BOOLEAN Wait
+ );
+
+
+
+__forceinline
+BOOLEAN
+WdfTimerStop(
+
+ WDFTIMER Timer,
+
+ BOOLEAN Wait
+ )
+{
+ return ((PFN_WDFTIMERSTOP) WdfFunctions_01033[WdfTimerStopTableIndex])(WdfDriverGlobals, Timer, Wait);
+}
+
+
+
+
+typedef
+
+
+WDFOBJECT
+(__stdcall *PFN_WDFTIMERGETPARENTOBJECT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFTIMER Timer
+ );
+
+
+__forceinline
+WDFOBJECT
+WdfTimerGetParentObject(
+
+ WDFTIMER Timer
+ )
+{
+ return ((PFN_WDFTIMERGETPARENTOBJECT) WdfFunctions_01033[WdfTimerGetParentObjectTableIndex])(WdfDriverGlobals, Timer);
+}
+
+
+
+#line 260 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdftimer.h"
+
+
+
+
+#line 265 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdftimer.h"
+
+#line 96 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfworkitem.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_WORKITEM(
+
+ WDFWORKITEM WorkItem
+ );
+
+typedef EVT_WDF_WORKITEM *PFN_WDF_WORKITEM;
+
+typedef struct _WDF_WORKITEM_CONFIG {
+
+ ULONG Size;
+
+ PFN_WDF_WORKITEM EvtWorkItemFunc;
+
+
+
+
+
+
+
+
+ BOOLEAN AutomaticSerialization;
+
+} WDF_WORKITEM_CONFIG, *PWDF_WORKITEM_CONFIG;
+
+void
+__forceinline
+WDF_WORKITEM_CONFIG_INIT(
+ PWDF_WORKITEM_CONFIG Config,
+ PFN_WDF_WORKITEM EvtWorkItemFunc
+ )
+{
+ memset((Config),0,(sizeof(WDF_WORKITEM_CONFIG)));
+ Config->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_WORKITEM_CONFIG < WdfStructureCount) ? WdfStructures[INDEX_WDF_WORKITEM_CONFIG] : (size_t)(-1) ) : sizeof(WDF_WORKITEM_CONFIG) );
+ Config->EvtWorkItemFunc = EvtWorkItemFunc;
+
+ Config->AutomaticSerialization = 1;
+}
+
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFWORKITEMCREATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDF_WORKITEM_CONFIG Config,
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+ WDFWORKITEM* WorkItem
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfWorkItemCreate(
+
+ PWDF_WORKITEM_CONFIG Config,
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+ WDFWORKITEM* WorkItem
+ )
+{
+ return ((PFN_WDFWORKITEMCREATE) WdfFunctions_01033[WdfWorkItemCreateTableIndex])(WdfDriverGlobals, Config, Attributes, WorkItem);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFWORKITEMENQUEUE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFWORKITEM WorkItem
+ );
+
+
+__forceinline
+void
+WdfWorkItemEnqueue(
+
+ WDFWORKITEM WorkItem
+ )
+{
+ ((PFN_WDFWORKITEMENQUEUE) WdfFunctions_01033[WdfWorkItemEnqueueTableIndex])(WdfDriverGlobals, WorkItem);
+}
+
+
+
+
+typedef
+
+
+WDFOBJECT
+(__stdcall *PFN_WDFWORKITEMGETPARENTOBJECT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFWORKITEM WorkItem
+ );
+
+
+__forceinline
+WDFOBJECT
+WdfWorkItemGetParentObject(
+
+ WDFWORKITEM WorkItem
+ )
+{
+ return ((PFN_WDFWORKITEMGETPARENTOBJECT) WdfFunctions_01033[WdfWorkItemGetParentObjectTableIndex])(WdfDriverGlobals, WorkItem);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFWORKITEMFLUSH)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFWORKITEM WorkItem
+ );
+
+
+__forceinline
+void
+WdfWorkItemFlush(
+
+ WDFWORKITEM WorkItem
+ )
+{
+ ((PFN_WDFWORKITEMFLUSH) WdfFunctions_01033[WdfWorkItemFlushTableIndex])(WdfDriverGlobals, WorkItem);
+}
+
+
+
+#line 211 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfworkitem.h"
+
+
+
+
+#line 216 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfworkitem.h"
+
+#line 97 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfinterrupt.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _WDF_INTERRUPT_POLARITY {
+ WdfInterruptPolarityUnknown = 0,
+ WdfInterruptActiveHigh,
+ WdfInterruptActiveLow,
+} WDF_INTERRUPT_POLARITY, *PWDF_INTERRUPT_POLARITY;
+
+typedef enum _WDF_INTERRUPT_POLICY {
+ WdfIrqPolicyMachineDefault = 0,
+ WdfIrqPolicyAllCloseProcessors,
+ WdfIrqPolicyOneCloseProcessor,
+ WdfIrqPolicyAllProcessorsInMachine,
+ WdfIrqPolicySpecifiedProcessors,
+ WdfIrqPolicySpreadMessagesAcrossAllProcessors,
+} WDF_INTERRUPT_POLICY, *PWDF_INTERRUPT_POLICY;
+
+typedef enum _WDF_INTERRUPT_PRIORITY {
+ WdfIrqPriorityUndefined = 0,
+ WdfIrqPriorityLow,
+ WdfIrqPriorityNormal,
+ WdfIrqPriorityHigh,
+} WDF_INTERRUPT_PRIORITY, *PWDF_INTERRUPT_PRIORITY;
+
+
+
+
+
+
+
+
+
+
+typedef
+
+
+
+BOOLEAN
+__stdcall
+EVT_WDF_INTERRUPT_ISR(
+
+ WDFINTERRUPT Interrupt,
+
+ ULONG MessageID
+ );
+
+typedef EVT_WDF_INTERRUPT_ISR *PFN_WDF_INTERRUPT_ISR;
+
+
+
+
+
+
+
+typedef
+
+
+
+BOOLEAN
+__stdcall
+EVT_WDF_INTERRUPT_SYNCHRONIZE(
+
+ WDFINTERRUPT Interrupt,
+
+ WDFCONTEXT Context
+ );
+
+typedef EVT_WDF_INTERRUPT_SYNCHRONIZE *PFN_WDF_INTERRUPT_SYNCHRONIZE;
+
+
+
+
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_INTERRUPT_DPC(
+
+ WDFINTERRUPT Interrupt,
+
+ WDFOBJECT AssociatedObject
+ );
+
+typedef EVT_WDF_INTERRUPT_DPC *PFN_WDF_INTERRUPT_DPC;
+
+
+
+
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_INTERRUPT_WORKITEM(
+
+ WDFINTERRUPT Interrupt,
+
+ WDFOBJECT AssociatedObject
+ );
+
+typedef EVT_WDF_INTERRUPT_WORKITEM *PFN_WDF_INTERRUPT_WORKITEM;
+
+
+
+
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_INTERRUPT_ENABLE(
+
+ WDFINTERRUPT Interrupt,
+
+ WDFDEVICE AssociatedDevice
+ );
+
+typedef EVT_WDF_INTERRUPT_ENABLE *PFN_WDF_INTERRUPT_ENABLE;
+
+
+
+
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_INTERRUPT_DISABLE(
+
+ WDFINTERRUPT Interrupt,
+
+ WDFDEVICE AssociatedDevice
+ );
+
+typedef EVT_WDF_INTERRUPT_DISABLE *PFN_WDF_INTERRUPT_DISABLE;
+
+
+
+
+typedef struct _WDF_INTERRUPT_CONFIG {
+ ULONG Size;
+
+
+
+
+
+
+ WDFSPINLOCK SpinLock;
+
+ WDF_TRI_STATE ShareVector;
+
+ BOOLEAN FloatingSave;
+
+
+
+
+
+ BOOLEAN AutomaticSerialization;
+
+
+
+
+ PFN_WDF_INTERRUPT_ISR EvtInterruptIsr;
+ PFN_WDF_INTERRUPT_DPC EvtInterruptDpc;
+ PFN_WDF_INTERRUPT_ENABLE EvtInterruptEnable;
+ PFN_WDF_INTERRUPT_DISABLE EvtInterruptDisable;
+ PFN_WDF_INTERRUPT_WORKITEM EvtInterruptWorkItem;
+
+
+
+
+
+ PCM_PARTIAL_RESOURCE_DESCRIPTOR InterruptRaw;
+ PCM_PARTIAL_RESOURCE_DESCRIPTOR InterruptTranslated;
+
+
+
+
+ WDFWAITLOCK WaitLock;
+
+
+
+
+
+ BOOLEAN PassiveHandling;
+
+
+
+
+
+
+
+
+ WDF_TRI_STATE ReportInactiveOnPowerDown;
+
+
+
+
+
+
+
+
+ BOOLEAN CanWakeDevice;
+} WDF_INTERRUPT_CONFIG, *PWDF_INTERRUPT_CONFIG;
+
+
+void
+__forceinline
+WDF_INTERRUPT_CONFIG_INIT(
+ PWDF_INTERRUPT_CONFIG Configuration,
+ PFN_WDF_INTERRUPT_ISR EvtInterruptIsr,
+ PFN_WDF_INTERRUPT_DPC EvtInterruptDpc
+ )
+{
+ memset((Configuration),0,(sizeof(WDF_INTERRUPT_CONFIG)));
+
+ Configuration->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_INTERRUPT_CONFIG < WdfStructureCount) ? WdfStructures[INDEX_WDF_INTERRUPT_CONFIG] : (size_t)(-1) ) : sizeof(WDF_INTERRUPT_CONFIG) );
+
+ Configuration->ShareVector = WdfUseDefault;
+
+ Configuration->EvtInterruptIsr = EvtInterruptIsr;
+ Configuration->EvtInterruptDpc = EvtInterruptDpc;
+
+ Configuration->ReportInactiveOnPowerDown = WdfUseDefault;
+}
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable: 4324)
+
+typedef struct _WDF_INTERRUPT_INFO {
+
+
+
+ ULONG Size;
+ ULONG64 Reserved1;
+ KAFFINITY TargetProcessorSet;
+ ULONG Reserved2;
+ ULONG MessageNumber;
+ ULONG Vector;
+ KIRQL Irql;
+ KINTERRUPT_MODE Mode;
+ WDF_INTERRUPT_POLARITY Polarity;
+ BOOLEAN MessageSignaled;
+ UCHAR ShareDisposition;
+ __declspec(align(8)) USHORT Group;
+
+} WDF_INTERRUPT_INFO, *PWDF_INTERRUPT_INFO;
+
+#pragma warning(pop)
+
+void
+__forceinline
+WDF_INTERRUPT_INFO_INIT(
+ PWDF_INTERRUPT_INFO Info
+ )
+{
+ memset((Info),0,(sizeof(WDF_INTERRUPT_INFO)));
+ Info->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_INTERRUPT_INFO < WdfStructureCount) ? WdfStructures[INDEX_WDF_INTERRUPT_INFO] : (size_t)(-1) ) : sizeof(WDF_INTERRUPT_INFO) );
+}
+
+
+
+
+typedef struct _WDF_INTERRUPT_EXTENDED_POLICY {
+
+
+
+ ULONG Size;
+ WDF_INTERRUPT_POLICY Policy;
+ WDF_INTERRUPT_PRIORITY Priority;
+ GROUP_AFFINITY TargetProcessorSetAndGroup;
+
+} WDF_INTERRUPT_EXTENDED_POLICY, *PWDF_INTERRUPT_EXTENDED_POLICY;
+
+void
+__forceinline
+WDF_INTERRUPT_EXTENDED_POLICY_INIT(
+ PWDF_INTERRUPT_EXTENDED_POLICY ExtendedPolicy
+ )
+{
+ memset((ExtendedPolicy),0,(sizeof(WDF_INTERRUPT_EXTENDED_POLICY)));
+ ExtendedPolicy->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_INTERRUPT_EXTENDED_POLICY < WdfStructureCount) ? WdfStructures[INDEX_WDF_INTERRUPT_EXTENDED_POLICY] : (size_t)(-1) ) : sizeof(WDF_INTERRUPT_EXTENDED_POLICY) );
+ ExtendedPolicy->Policy = WdfIrqPolicyMachineDefault;
+ ExtendedPolicy->Priority = WdfIrqPriorityUndefined;
+}
+
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFINTERRUPTCREATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PWDF_INTERRUPT_CONFIG Configuration,
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+ WDFINTERRUPT* Interrupt
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfInterruptCreate(
+
+ WDFDEVICE Device,
+
+ PWDF_INTERRUPT_CONFIG Configuration,
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+ WDFINTERRUPT* Interrupt
+ )
+{
+ return ((PFN_WDFINTERRUPTCREATE) WdfFunctions_01033[WdfInterruptCreateTableIndex])(WdfDriverGlobals, Device, Configuration, Attributes, Interrupt);
+}
+
+
+
+
+typedef
+
+BOOLEAN
+(__stdcall *PFN_WDFINTERRUPTQUEUEDPCFORISR)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFINTERRUPT Interrupt
+ );
+
+__forceinline
+BOOLEAN
+WdfInterruptQueueDpcForIsr(
+
+ WDFINTERRUPT Interrupt
+ )
+{
+ return ((PFN_WDFINTERRUPTQUEUEDPCFORISR) WdfFunctions_01033[WdfInterruptQueueDpcForIsrTableIndex])(WdfDriverGlobals, Interrupt);
+}
+
+
+
+
+typedef
+
+BOOLEAN
+(__stdcall *PFN_WDFINTERRUPTQUEUEWORKITEMFORISR)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFINTERRUPT Interrupt
+ );
+
+__forceinline
+BOOLEAN
+WdfInterruptQueueWorkItemForIsr(
+
+ WDFINTERRUPT Interrupt
+ )
+{
+ return ((PFN_WDFINTERRUPTQUEUEWORKITEMFORISR) WdfFunctions_01033[WdfInterruptQueueWorkItemForIsrTableIndex])(WdfDriverGlobals, Interrupt);
+}
+
+
+
+
+typedef
+
+
+BOOLEAN
+(__stdcall *PFN_WDFINTERRUPTSYNCHRONIZE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFINTERRUPT Interrupt,
+
+ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback,
+
+ WDFCONTEXT Context
+ );
+
+
+__forceinline
+BOOLEAN
+WdfInterruptSynchronize(
+
+ WDFINTERRUPT Interrupt,
+
+ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback,
+
+ WDFCONTEXT Context
+ )
+{
+ return ((PFN_WDFINTERRUPTSYNCHRONIZE) WdfFunctions_01033[WdfInterruptSynchronizeTableIndex])(WdfDriverGlobals, Interrupt, Callback, Context);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFINTERRUPTACQUIRELOCK)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+
+
+ WDFINTERRUPT Interrupt
+ );
+
+
+__forceinline
+void
+WdfInterruptAcquireLock(
+
+
+
+ WDFINTERRUPT Interrupt
+ )
+{
+ ((PFN_WDFINTERRUPTACQUIRELOCK) WdfFunctions_01033[WdfInterruptAcquireLockTableIndex])(WdfDriverGlobals, Interrupt);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFINTERRUPTRELEASELOCK)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+
+
+ WDFINTERRUPT Interrupt
+ );
+
+
+__forceinline
+void
+WdfInterruptReleaseLock(
+
+
+
+ WDFINTERRUPT Interrupt
+ )
+{
+ ((PFN_WDFINTERRUPTRELEASELOCK) WdfFunctions_01033[WdfInterruptReleaseLockTableIndex])(WdfDriverGlobals, Interrupt);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFINTERRUPTENABLE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFINTERRUPT Interrupt
+ );
+
+
+__forceinline
+void
+WdfInterruptEnable(
+
+ WDFINTERRUPT Interrupt
+ )
+{
+ ((PFN_WDFINTERRUPTENABLE) WdfFunctions_01033[WdfInterruptEnableTableIndex])(WdfDriverGlobals, Interrupt);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFINTERRUPTDISABLE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFINTERRUPT Interrupt
+ );
+
+
+__forceinline
+void
+WdfInterruptDisable(
+
+ WDFINTERRUPT Interrupt
+ )
+{
+ ((PFN_WDFINTERRUPTDISABLE) WdfFunctions_01033[WdfInterruptDisableTableIndex])(WdfDriverGlobals, Interrupt);
+}
+
+
+
+
+typedef
+
+
+PKINTERRUPT
+(__stdcall *PFN_WDFINTERRUPTWDMGETINTERRUPT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFINTERRUPT Interrupt
+ );
+
+
+__forceinline
+PKINTERRUPT
+WdfInterruptWdmGetInterrupt(
+
+ WDFINTERRUPT Interrupt
+ )
+{
+ return ((PFN_WDFINTERRUPTWDMGETINTERRUPT) WdfFunctions_01033[WdfInterruptWdmGetInterruptTableIndex])(WdfDriverGlobals, Interrupt);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFINTERRUPTGETINFO)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFINTERRUPT Interrupt,
+
+ PWDF_INTERRUPT_INFO Info
+ );
+
+
+__forceinline
+void
+WdfInterruptGetInfo(
+
+ WDFINTERRUPT Interrupt,
+
+ PWDF_INTERRUPT_INFO Info
+ )
+{
+ ((PFN_WDFINTERRUPTGETINFO) WdfFunctions_01033[WdfInterruptGetInfoTableIndex])(WdfDriverGlobals, Interrupt, Info);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFINTERRUPTSETPOLICY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFINTERRUPT Interrupt,
+
+ WDF_INTERRUPT_POLICY Policy,
+
+ WDF_INTERRUPT_PRIORITY Priority,
+
+ KAFFINITY TargetProcessorSet
+ );
+
+
+__forceinline
+void
+WdfInterruptSetPolicy(
+
+ WDFINTERRUPT Interrupt,
+
+ WDF_INTERRUPT_POLICY Policy,
+
+ WDF_INTERRUPT_PRIORITY Priority,
+
+ KAFFINITY TargetProcessorSet
+ )
+{
+ ((PFN_WDFINTERRUPTSETPOLICY) WdfFunctions_01033[WdfInterruptSetPolicyTableIndex])(WdfDriverGlobals, Interrupt, Policy, Priority, TargetProcessorSet);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFINTERRUPTSETEXTENDEDPOLICY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFINTERRUPT Interrupt,
+
+ PWDF_INTERRUPT_EXTENDED_POLICY PolicyAndGroup
+ );
+
+
+__forceinline
+void
+WdfInterruptSetExtendedPolicy(
+
+ WDFINTERRUPT Interrupt,
+
+ PWDF_INTERRUPT_EXTENDED_POLICY PolicyAndGroup
+ )
+{
+ ((PFN_WDFINTERRUPTSETEXTENDEDPOLICY) WdfFunctions_01033[WdfInterruptSetExtendedPolicyTableIndex])(WdfDriverGlobals, Interrupt, PolicyAndGroup);
+}
+
+
+
+
+typedef
+
+WDFDEVICE
+(__stdcall *PFN_WDFINTERRUPTGETDEVICE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFINTERRUPT Interrupt
+ );
+
+__forceinline
+WDFDEVICE
+WdfInterruptGetDevice(
+
+ WDFINTERRUPT Interrupt
+ )
+{
+ return ((PFN_WDFINTERRUPTGETDEVICE) WdfFunctions_01033[WdfInterruptGetDeviceTableIndex])(WdfDriverGlobals, Interrupt);
+}
+
+
+
+
+typedef
+
+
+
+
+BOOLEAN
+(__stdcall *PFN_WDFINTERRUPTTRYTOACQUIRELOCK)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+
+
+ WDFINTERRUPT Interrupt
+ );
+
+
+
+
+__forceinline
+BOOLEAN
+WdfInterruptTryToAcquireLock(
+
+
+
+ WDFINTERRUPT Interrupt
+ )
+{
+ return ((PFN_WDFINTERRUPTTRYTOACQUIRELOCK) WdfFunctions_01033[WdfInterruptTryToAcquireLockTableIndex])(WdfDriverGlobals, Interrupt);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFINTERRUPTREPORTACTIVE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFINTERRUPT Interrupt
+ );
+
+
+__forceinline
+void
+WdfInterruptReportActive(
+
+ WDFINTERRUPT Interrupt
+ )
+{
+ ((PFN_WDFINTERRUPTREPORTACTIVE) WdfFunctions_01033[WdfInterruptReportActiveTableIndex])(WdfDriverGlobals, Interrupt);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFINTERRUPTREPORTINACTIVE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFINTERRUPT Interrupt
+ );
+
+
+__forceinline
+void
+WdfInterruptReportInactive(
+
+ WDFINTERRUPT Interrupt
+ )
+{
+ ((PFN_WDFINTERRUPTREPORTINACTIVE) WdfFunctions_01033[WdfInterruptReportInactiveTableIndex])(WdfDriverGlobals, Interrupt);
+}
+
+
+
+#line 811 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfinterrupt.h"
+
+
+
+
+#line 816 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfinterrupt.h"
+
+#line 98 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfresource.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFIORESOURCEREQUIREMENTSLISTSETSLOTNUMBER)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIORESREQLIST RequirementsList,
+
+ ULONG SlotNumber
+ );
+
+
+__forceinline
+void
+WdfIoResourceRequirementsListSetSlotNumber(
+
+ WDFIORESREQLIST RequirementsList,
+
+ ULONG SlotNumber
+ )
+{
+ ((PFN_WDFIORESOURCEREQUIREMENTSLISTSETSLOTNUMBER) WdfFunctions_01033[WdfIoResourceRequirementsListSetSlotNumberTableIndex])(WdfDriverGlobals, RequirementsList, SlotNumber);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFIORESOURCEREQUIREMENTSLISTSETINTERFACETYPE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIORESREQLIST RequirementsList,
+
+
+ INTERFACE_TYPE InterfaceType
+ );
+
+
+__forceinline
+void
+WdfIoResourceRequirementsListSetInterfaceType(
+
+ WDFIORESREQLIST RequirementsList,
+
+
+ INTERFACE_TYPE InterfaceType
+ )
+{
+ ((PFN_WDFIORESOURCEREQUIREMENTSLISTSETINTERFACETYPE) WdfFunctions_01033[WdfIoResourceRequirementsListSetInterfaceTypeTableIndex])(WdfDriverGlobals, RequirementsList, InterfaceType);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIORESOURCEREQUIREMENTSLISTAPPENDIORESLIST)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIORESREQLIST RequirementsList,
+
+ WDFIORESLIST IoResList
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoResourceRequirementsListAppendIoResList(
+
+ WDFIORESREQLIST RequirementsList,
+
+ WDFIORESLIST IoResList
+ )
+{
+ return ((PFN_WDFIORESOURCEREQUIREMENTSLISTAPPENDIORESLIST) WdfFunctions_01033[WdfIoResourceRequirementsListAppendIoResListTableIndex])(WdfDriverGlobals, RequirementsList, IoResList);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIORESOURCEREQUIREMENTSLISTINSERTIORESLIST)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIORESREQLIST RequirementsList,
+
+ WDFIORESLIST IoResList,
+
+ ULONG Index
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoResourceRequirementsListInsertIoResList(
+
+ WDFIORESREQLIST RequirementsList,
+
+ WDFIORESLIST IoResList,
+
+ ULONG Index
+ )
+{
+ return ((PFN_WDFIORESOURCEREQUIREMENTSLISTINSERTIORESLIST) WdfFunctions_01033[WdfIoResourceRequirementsListInsertIoResListTableIndex])(WdfDriverGlobals, RequirementsList, IoResList, Index);
+}
+
+
+
+
+typedef
+
+
+ULONG
+(__stdcall *PFN_WDFIORESOURCEREQUIREMENTSLISTGETCOUNT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIORESREQLIST RequirementsList
+ );
+
+
+__forceinline
+ULONG
+WdfIoResourceRequirementsListGetCount(
+
+ WDFIORESREQLIST RequirementsList
+ )
+{
+ return ((PFN_WDFIORESOURCEREQUIREMENTSLISTGETCOUNT) WdfFunctions_01033[WdfIoResourceRequirementsListGetCountTableIndex])(WdfDriverGlobals, RequirementsList);
+}
+
+
+
+
+typedef
+
+
+WDFIORESLIST
+(__stdcall *PFN_WDFIORESOURCEREQUIREMENTSLISTGETIORESLIST)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIORESREQLIST RequirementsList,
+
+ ULONG Index
+ );
+
+
+__forceinline
+WDFIORESLIST
+WdfIoResourceRequirementsListGetIoResList(
+
+ WDFIORESREQLIST RequirementsList,
+
+ ULONG Index
+ )
+{
+ return ((PFN_WDFIORESOURCEREQUIREMENTSLISTGETIORESLIST) WdfFunctions_01033[WdfIoResourceRequirementsListGetIoResListTableIndex])(WdfDriverGlobals, RequirementsList, Index);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFIORESOURCEREQUIREMENTSLISTREMOVE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIORESREQLIST RequirementsList,
+
+ ULONG Index
+ );
+
+
+__forceinline
+void
+WdfIoResourceRequirementsListRemove(
+
+ WDFIORESREQLIST RequirementsList,
+
+ ULONG Index
+ )
+{
+ ((PFN_WDFIORESOURCEREQUIREMENTSLISTREMOVE) WdfFunctions_01033[WdfIoResourceRequirementsListRemoveTableIndex])(WdfDriverGlobals, RequirementsList, Index);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFIORESOURCEREQUIREMENTSLISTREMOVEBYIORESLIST)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIORESREQLIST RequirementsList,
+
+ WDFIORESLIST IoResList
+ );
+
+
+__forceinline
+void
+WdfIoResourceRequirementsListRemoveByIoResList(
+
+ WDFIORESREQLIST RequirementsList,
+
+ WDFIORESLIST IoResList
+ )
+{
+ ((PFN_WDFIORESOURCEREQUIREMENTSLISTREMOVEBYIORESLIST) WdfFunctions_01033[WdfIoResourceRequirementsListRemoveByIoResListTableIndex])(WdfDriverGlobals, RequirementsList, IoResList);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIORESOURCELISTCREATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIORESREQLIST RequirementsList,
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+ WDFIORESLIST* ResourceList
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoResourceListCreate(
+
+ WDFIORESREQLIST RequirementsList,
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+ WDFIORESLIST* ResourceList
+ )
+{
+ return ((PFN_WDFIORESOURCELISTCREATE) WdfFunctions_01033[WdfIoResourceListCreateTableIndex])(WdfDriverGlobals, RequirementsList, Attributes, ResourceList);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIORESOURCELISTAPPENDDESCRIPTOR)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIORESLIST ResourceList,
+
+ PIO_RESOURCE_DESCRIPTOR Descriptor
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoResourceListAppendDescriptor(
+
+ WDFIORESLIST ResourceList,
+
+ PIO_RESOURCE_DESCRIPTOR Descriptor
+ )
+{
+ return ((PFN_WDFIORESOURCELISTAPPENDDESCRIPTOR) WdfFunctions_01033[WdfIoResourceListAppendDescriptorTableIndex])(WdfDriverGlobals, ResourceList, Descriptor);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIORESOURCELISTINSERTDESCRIPTOR)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIORESLIST ResourceList,
+
+ PIO_RESOURCE_DESCRIPTOR Descriptor,
+
+ ULONG Index
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoResourceListInsertDescriptor(
+
+ WDFIORESLIST ResourceList,
+
+ PIO_RESOURCE_DESCRIPTOR Descriptor,
+
+ ULONG Index
+ )
+{
+ return ((PFN_WDFIORESOURCELISTINSERTDESCRIPTOR) WdfFunctions_01033[WdfIoResourceListInsertDescriptorTableIndex])(WdfDriverGlobals, ResourceList, Descriptor, Index);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFIORESOURCELISTUPDATEDESCRIPTOR)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIORESLIST ResourceList,
+
+ PIO_RESOURCE_DESCRIPTOR Descriptor,
+
+ ULONG Index
+ );
+
+
+__forceinline
+void
+WdfIoResourceListUpdateDescriptor(
+
+ WDFIORESLIST ResourceList,
+
+ PIO_RESOURCE_DESCRIPTOR Descriptor,
+
+ ULONG Index
+ )
+{
+ ((PFN_WDFIORESOURCELISTUPDATEDESCRIPTOR) WdfFunctions_01033[WdfIoResourceListUpdateDescriptorTableIndex])(WdfDriverGlobals, ResourceList, Descriptor, Index);
+}
+
+
+
+
+typedef
+
+
+ULONG
+(__stdcall *PFN_WDFIORESOURCELISTGETCOUNT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIORESLIST ResourceList
+ );
+
+
+__forceinline
+ULONG
+WdfIoResourceListGetCount(
+
+ WDFIORESLIST ResourceList
+ )
+{
+ return ((PFN_WDFIORESOURCELISTGETCOUNT) WdfFunctions_01033[WdfIoResourceListGetCountTableIndex])(WdfDriverGlobals, ResourceList);
+}
+
+
+
+
+typedef
+
+
+PIO_RESOURCE_DESCRIPTOR
+(__stdcall *PFN_WDFIORESOURCELISTGETDESCRIPTOR)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIORESLIST ResourceList,
+
+ ULONG Index
+ );
+
+
+__forceinline
+PIO_RESOURCE_DESCRIPTOR
+WdfIoResourceListGetDescriptor(
+
+ WDFIORESLIST ResourceList,
+
+ ULONG Index
+ )
+{
+ return ((PFN_WDFIORESOURCELISTGETDESCRIPTOR) WdfFunctions_01033[WdfIoResourceListGetDescriptorTableIndex])(WdfDriverGlobals, ResourceList, Index);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFIORESOURCELISTREMOVE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIORESLIST ResourceList,
+
+ ULONG Index
+ );
+
+
+__forceinline
+void
+WdfIoResourceListRemove(
+
+ WDFIORESLIST ResourceList,
+
+ ULONG Index
+ )
+{
+ ((PFN_WDFIORESOURCELISTREMOVE) WdfFunctions_01033[WdfIoResourceListRemoveTableIndex])(WdfDriverGlobals, ResourceList, Index);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFIORESOURCELISTREMOVEBYDESCRIPTOR)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIORESLIST ResourceList,
+
+ PIO_RESOURCE_DESCRIPTOR Descriptor
+ );
+
+
+__forceinline
+void
+WdfIoResourceListRemoveByDescriptor(
+
+ WDFIORESLIST ResourceList,
+
+ PIO_RESOURCE_DESCRIPTOR Descriptor
+ )
+{
+ ((PFN_WDFIORESOURCELISTREMOVEBYDESCRIPTOR) WdfFunctions_01033[WdfIoResourceListRemoveByDescriptorTableIndex])(WdfDriverGlobals, ResourceList, Descriptor);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFCMRESOURCELISTAPPENDDESCRIPTOR)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCMRESLIST List,
+
+ PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfCmResourceListAppendDescriptor(
+
+ WDFCMRESLIST List,
+
+ PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor
+ )
+{
+ return ((PFN_WDFCMRESOURCELISTAPPENDDESCRIPTOR) WdfFunctions_01033[WdfCmResourceListAppendDescriptorTableIndex])(WdfDriverGlobals, List, Descriptor);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFCMRESOURCELISTINSERTDESCRIPTOR)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCMRESLIST List,
+
+ PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor,
+
+ ULONG Index
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfCmResourceListInsertDescriptor(
+
+ WDFCMRESLIST List,
+
+ PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor,
+
+ ULONG Index
+ )
+{
+ return ((PFN_WDFCMRESOURCELISTINSERTDESCRIPTOR) WdfFunctions_01033[WdfCmResourceListInsertDescriptorTableIndex])(WdfDriverGlobals, List, Descriptor, Index);
+}
+
+
+
+
+typedef
+
+
+ULONG
+(__stdcall *PFN_WDFCMRESOURCELISTGETCOUNT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCMRESLIST List
+ );
+
+
+__forceinline
+ULONG
+WdfCmResourceListGetCount(
+
+ WDFCMRESLIST List
+ )
+{
+ return ((PFN_WDFCMRESOURCELISTGETCOUNT) WdfFunctions_01033[WdfCmResourceListGetCountTableIndex])(WdfDriverGlobals, List);
+}
+
+
+
+
+typedef
+
+
+PCM_PARTIAL_RESOURCE_DESCRIPTOR
+(__stdcall *PFN_WDFCMRESOURCELISTGETDESCRIPTOR)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCMRESLIST List,
+
+ ULONG Index
+ );
+
+
+__forceinline
+PCM_PARTIAL_RESOURCE_DESCRIPTOR
+WdfCmResourceListGetDescriptor(
+
+ WDFCMRESLIST List,
+
+ ULONG Index
+ )
+{
+ return ((PFN_WDFCMRESOURCELISTGETDESCRIPTOR) WdfFunctions_01033[WdfCmResourceListGetDescriptorTableIndex])(WdfDriverGlobals, List, Index);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFCMRESOURCELISTREMOVE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCMRESLIST List,
+
+ ULONG Index
+ );
+
+
+__forceinline
+void
+WdfCmResourceListRemove(
+
+ WDFCMRESLIST List,
+
+ ULONG Index
+ )
+{
+ ((PFN_WDFCMRESOURCELISTREMOVE) WdfFunctions_01033[WdfCmResourceListRemoveTableIndex])(WdfDriverGlobals, List, Index);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFCMRESOURCELISTREMOVEBYDESCRIPTOR)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCMRESLIST List,
+
+ PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor
+ );
+
+
+__forceinline
+void
+WdfCmResourceListRemoveByDescriptor(
+
+ WDFCMRESLIST List,
+
+ PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor
+ )
+{
+ ((PFN_WDFCMRESOURCELISTREMOVEBYDESCRIPTOR) WdfFunctions_01033[WdfCmResourceListRemoveByDescriptorTableIndex])(WdfDriverGlobals, List, Descriptor);
+}
+
+
+
+#line 719 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfresource.h"
+
+
+
+
+#line 724 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfresource.h"
+
+#line 99 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfrequest.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _WDF_REQUEST_TYPE {
+ WdfRequestTypeCreate = 0x0,
+ WdfRequestTypeCreateNamedPipe = 0x1,
+ WdfRequestTypeClose = 0x2,
+ WdfRequestTypeRead = 0x3,
+ WdfRequestTypeWrite = 0x4,
+ WdfRequestTypeQueryInformation = 0x5,
+ WdfRequestTypeSetInformation = 0x6,
+ WdfRequestTypeQueryEA = 0x7,
+ WdfRequestTypeSetEA = 0x8,
+ WdfRequestTypeFlushBuffers = 0x9,
+ WdfRequestTypeQueryVolumeInformation = 0xa,
+ WdfRequestTypeSetVolumeInformation = 0xb,
+ WdfRequestTypeDirectoryControl = 0xc,
+ WdfRequestTypeFileSystemControl = 0xd,
+ WdfRequestTypeDeviceControl = 0xe,
+ WdfRequestTypeDeviceControlInternal = 0xf,
+ WdfRequestTypeShutdown = 0x10,
+ WdfRequestTypeLockControl = 0x11,
+ WdfRequestTypeCleanup = 0x12,
+ WdfRequestTypeCreateMailSlot = 0x13,
+ WdfRequestTypeQuerySecurity = 0x14,
+ WdfRequestTypeSetSecurity = 0x15,
+ WdfRequestTypePower = 0x16,
+ WdfRequestTypeSystemControl = 0x17,
+ WdfRequestTypeDeviceChange = 0x18,
+ WdfRequestTypeQueryQuota = 0x19,
+ WdfRequestTypeSetQuota = 0x1A,
+ WdfRequestTypePnp = 0x1B,
+ WdfRequestTypeOther =0x1C,
+ WdfRequestTypeUsb = 0x40,
+ WdfRequestTypeNoFormat = 0xFF,
+ WdfRequestTypeMax,
+} WDF_REQUEST_TYPE;
+
+typedef enum _WDF_REQUEST_REUSE_FLAGS {
+ WDF_REQUEST_REUSE_NO_FLAGS = 0x00000000,
+ WDF_REQUEST_REUSE_SET_NEW_IRP = 0x00000001,
+} WDF_REQUEST_REUSE_FLAGS;
+
+
+
+
+
+typedef enum _WDF_REQUEST_STOP_ACTION_FLAGS {
+ WdfRequestStopActionInvalid = 0,
+ WdfRequestStopActionSuspend = 0x01,
+ WdfRequestStopActionPurge = 0x2,
+ WdfRequestStopRequestCancelable = 0x10000000,
+} WDF_REQUEST_STOP_ACTION_FLAGS;
+
+typedef enum _WDF_REQUEST_SEND_OPTIONS_FLAGS {
+ WDF_REQUEST_SEND_OPTION_TIMEOUT = 0x00000001,
+ WDF_REQUEST_SEND_OPTION_SYNCHRONOUS = 0x00000002,
+ WDF_REQUEST_SEND_OPTION_IGNORE_TARGET_STATE = 0x00000004,
+ WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET = 0x00000008,
+ WDF_REQUEST_SEND_OPTION_IMPERSONATE_CLIENT = 0x00010000,
+ WDF_REQUEST_SEND_OPTION_IMPERSONATION_IGNORE_FAILURE = 0x00020000,
+} WDF_REQUEST_SEND_OPTIONS_FLAGS;
+
+
+
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_REQUEST_CANCEL(
+
+ WDFREQUEST Request
+ );
+
+typedef EVT_WDF_REQUEST_CANCEL *PFN_WDF_REQUEST_CANCEL;
+
+
+
+
+
+typedef struct _WDF_REQUEST_PARAMETERS {
+
+ USHORT Size;
+
+ UCHAR MinorFunction;
+
+ WDF_REQUEST_TYPE Type;
+
+
+
+
+
+
+ union {
+
+
+
+
+
+ struct {
+ PIO_SECURITY_CONTEXT SecurityContext;
+ ULONG Options;
+ USHORT __declspec(align(8)) FileAttributes;
+ USHORT ShareAccess;
+ ULONG __declspec(align(8)) EaLength;
+ } Create;
+
+
+
+
+
+
+ struct {
+ size_t Length;
+ ULONG __declspec(align(8)) Key;
+ LONGLONG DeviceOffset;
+ } Read;
+
+
+
+
+
+ struct {
+ size_t Length;
+ ULONG __declspec(align(8)) Key;
+ LONGLONG DeviceOffset;
+ } Write;
+
+
+
+
+
+
+
+
+ struct {
+ size_t OutputBufferLength;
+ size_t __declspec(align(8)) InputBufferLength;
+ ULONG __declspec(align(8)) IoControlCode;
+ PVOID Type3InputBuffer;
+ } DeviceIoControl;
+
+ struct {
+ PVOID Arg1;
+ PVOID Arg2;
+ ULONG __declspec(align(8)) IoControlCode;
+ PVOID Arg4;
+ } Others;
+
+ } Parameters;
+
+} WDF_REQUEST_PARAMETERS, *PWDF_REQUEST_PARAMETERS;
+
+void
+__forceinline
+WDF_REQUEST_PARAMETERS_INIT(
+ PWDF_REQUEST_PARAMETERS Parameters
+ )
+{
+ memset((Parameters),0,(sizeof(WDF_REQUEST_PARAMETERS)));
+
+ Parameters->Size = (USHORT)(ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_REQUEST_PARAMETERS < WdfStructureCount) ? WdfStructures[INDEX_WDF_REQUEST_PARAMETERS] : (size_t)(-1) ) : sizeof(WDF_REQUEST_PARAMETERS) );
+}
+
+typedef struct _WDF_USB_REQUEST_COMPLETION_PARAMS *PWDF_USB_REQUEST_COMPLETION_PARAMS;
+
+typedef struct _WDF_REQUEST_COMPLETION_PARAMS {
+
+
+
+ ULONG Size;
+
+ WDF_REQUEST_TYPE Type;
+
+ IO_STATUS_BLOCK IoStatus;
+
+ union {
+ struct {
+ WDFMEMORY Buffer;
+ size_t Length;
+ size_t Offset;
+ } Write;
+
+ struct {
+ WDFMEMORY Buffer;
+ size_t Length;
+ size_t Offset;
+ } Read;
+
+ struct {
+ ULONG IoControlCode;
+
+ struct {
+ WDFMEMORY Buffer;
+ size_t Offset;
+ } Input;
+
+ struct {
+ WDFMEMORY Buffer;
+ size_t Offset;
+ size_t Length;
+ } Output;
+ } Ioctl;
+
+ struct {
+ union {
+ PVOID Ptr;
+ ULONG_PTR Value;
+ } Argument1;
+ union {
+ PVOID Ptr;
+ ULONG_PTR Value;
+ } Argument2;
+ union {
+ PVOID Ptr;
+ ULONG_PTR Value;
+ } Argument3;
+ union {
+ PVOID Ptr;
+ ULONG_PTR Value;
+ } Argument4;
+ } Others;
+
+ struct {
+ PWDF_USB_REQUEST_COMPLETION_PARAMS Completion;
+ } Usb;
+ } Parameters;
+
+} WDF_REQUEST_COMPLETION_PARAMS, *PWDF_REQUEST_COMPLETION_PARAMS;
+
+void
+__forceinline
+WDF_REQUEST_COMPLETION_PARAMS_INIT(
+ PWDF_REQUEST_COMPLETION_PARAMS Params
+ )
+{
+ memset((Params),0,(sizeof(WDF_REQUEST_COMPLETION_PARAMS)));
+ Params->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_REQUEST_COMPLETION_PARAMS < WdfStructureCount) ? WdfStructures[INDEX_WDF_REQUEST_COMPLETION_PARAMS] : (size_t)(-1) ) : sizeof(WDF_REQUEST_COMPLETION_PARAMS) );
+ Params->Type = WdfRequestTypeNoFormat;
+}
+
+typedef
+
+
+void
+__stdcall
+EVT_WDF_REQUEST_COMPLETION_ROUTINE(
+
+ WDFREQUEST Request,
+
+ WDFIOTARGET Target,
+
+ PWDF_REQUEST_COMPLETION_PARAMS Params,
+
+ WDFCONTEXT Context
+ );
+
+typedef EVT_WDF_REQUEST_COMPLETION_ROUTINE *PFN_WDF_REQUEST_COMPLETION_ROUTINE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _WDF_REQUEST_REUSE_PARAMS {
+
+
+
+ ULONG Size;
+
+
+
+
+ ULONG Flags;
+
+
+
+
+ NTSTATUS Status;
+
+
+
+
+
+
+
+ PIRP NewIrp;
+
+} WDF_REQUEST_REUSE_PARAMS, *PWDF_REQUEST_REUSE_PARAMS;
+
+void
+__forceinline
+WDF_REQUEST_REUSE_PARAMS_INIT(
+ PWDF_REQUEST_REUSE_PARAMS Params,
+ ULONG Flags,
+ NTSTATUS Status
+ )
+{
+ memset((Params),0,(sizeof(WDF_REQUEST_REUSE_PARAMS)));
+
+ Params->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_REQUEST_REUSE_PARAMS < WdfStructureCount) ? WdfStructures[INDEX_WDF_REQUEST_REUSE_PARAMS] : (size_t)(-1) ) : sizeof(WDF_REQUEST_REUSE_PARAMS) );
+ Params->Flags = Flags;
+ Params->Status = Status;
+}
+
+void
+__forceinline
+WDF_REQUEST_REUSE_PARAMS_SET_NEW_IRP(
+ PWDF_REQUEST_REUSE_PARAMS Params,
+ PIRP NewIrp
+ )
+{
+ Params->Flags |= WDF_REQUEST_REUSE_SET_NEW_IRP;
+ Params->NewIrp = NewIrp;
+}
+
+typedef struct _WDF_REQUEST_SEND_OPTIONS {
+
+
+
+ ULONG Size;
+
+
+
+
+
+ ULONG Flags;
+
+
+
+
+ LONGLONG Timeout;
+
+} WDF_REQUEST_SEND_OPTIONS, *PWDF_REQUEST_SEND_OPTIONS;
+
+void
+__forceinline
+WDF_REQUEST_SEND_OPTIONS_INIT(
+ PWDF_REQUEST_SEND_OPTIONS Options,
+ ULONG Flags
+ )
+{
+ memset((Options),0,(sizeof(WDF_REQUEST_SEND_OPTIONS)));
+ Options->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_REQUEST_SEND_OPTIONS < WdfStructureCount) ? WdfStructures[INDEX_WDF_REQUEST_SEND_OPTIONS] : (size_t)(-1) ) : sizeof(WDF_REQUEST_SEND_OPTIONS) );
+ Options->Flags = Flags;
+}
+
+void
+__forceinline
+WDF_REQUEST_SEND_OPTIONS_SET_TIMEOUT(
+ PWDF_REQUEST_SEND_OPTIONS Options,
+ LONGLONG Timeout
+ )
+{
+ Options->Flags |= WDF_REQUEST_SEND_OPTION_TIMEOUT;
+ Options->Timeout = Timeout;
+}
+
+typedef enum _WDF_REQUEST_FORWARD_OPTIONS_FLAGS {
+ WDF_REQUEST_FORWARD_OPTION_SEND_AND_FORGET = 0x00000001
+} WDF_REQUEST_FORWARD_OPTIONS_FLAGS;
+
+typedef struct _WDF_REQUEST_FORWARD_OPTIONS {
+
+
+
+ ULONG Size;
+
+
+
+
+
+ ULONG Flags;
+} WDF_REQUEST_FORWARD_OPTIONS, *PWDF_REQUEST_FORWARD_OPTIONS;
+
+
+
+
+
+void
+__forceinline
+WDF_REQUEST_FORWARD_OPTIONS_INIT(
+ PWDF_REQUEST_FORWARD_OPTIONS ForwardOptions
+ )
+{
+ memset((ForwardOptions),0,(sizeof(WDF_REQUEST_FORWARD_OPTIONS)));
+
+ ForwardOptions->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_REQUEST_FORWARD_OPTIONS < WdfStructureCount) ? WdfStructures[INDEX_WDF_REQUEST_FORWARD_OPTIONS] : (size_t)(-1) ) : sizeof(WDF_REQUEST_FORWARD_OPTIONS) );
+ ForwardOptions->Flags |= WDF_REQUEST_FORWARD_OPTION_SEND_AND_FORGET;
+}
+
+
+
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREQUESTCREATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDF_OBJECT_ATTRIBUTES RequestAttributes,
+
+ WDFIOTARGET IoTarget,
+
+ WDFREQUEST* Request
+ );
+
+
+
+
+
+
+
+__forceinline
+NTSTATUS
+WdfRequestCreate(
+
+ PWDF_OBJECT_ATTRIBUTES RequestAttributes,
+
+ WDFIOTARGET IoTarget,
+
+ WDFREQUEST* Request
+ )
+{
+ return ((PFN_WDFREQUESTCREATE) WdfFunctions_01033[WdfRequestCreateTableIndex])(WdfDriverGlobals, RequestAttributes, IoTarget, Request);
+}
+
+
+
+
+typedef
+
+
+ULONG
+(__stdcall *PFN_WDFREQUESTGETREQUESTORPROCESSID)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request
+ );
+
+
+__forceinline
+ULONG
+WdfRequestGetRequestorProcessId(
+
+ WDFREQUEST Request
+ )
+{
+ return ((PFN_WDFREQUESTGETREQUESTORPROCESSID) WdfFunctions_01033[WdfRequestGetRequestorProcessIdTableIndex])(WdfDriverGlobals, Request);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREQUESTCREATEFROMIRP)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDF_OBJECT_ATTRIBUTES RequestAttributes,
+
+ PIRP Irp,
+
+ BOOLEAN RequestFreesIrp,
+
+ WDFREQUEST* Request
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRequestCreateFromIrp(
+
+ PWDF_OBJECT_ATTRIBUTES RequestAttributes,
+
+ PIRP Irp,
+
+ BOOLEAN RequestFreesIrp,
+
+ WDFREQUEST* Request
+ )
+{
+ return ((PFN_WDFREQUESTCREATEFROMIRP) WdfFunctions_01033[WdfRequestCreateFromIrpTableIndex])(WdfDriverGlobals, RequestAttributes, Irp, RequestFreesIrp, Request);
+}
+
+
+
+
+typedef
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREQUESTREUSE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ PWDF_REQUEST_REUSE_PARAMS ReuseParams
+ );
+
+
+__forceinline
+NTSTATUS
+WdfRequestReuse(
+
+ WDFREQUEST Request,
+
+ PWDF_REQUEST_REUSE_PARAMS ReuseParams
+ )
+{
+ return ((PFN_WDFREQUESTREUSE) WdfFunctions_01033[WdfRequestReuseTableIndex])(WdfDriverGlobals, Request, ReuseParams);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREQUESTCHANGETARGET)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ WDFIOTARGET IoTarget
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRequestChangeTarget(
+
+ WDFREQUEST Request,
+
+ WDFIOTARGET IoTarget
+ )
+{
+ return ((PFN_WDFREQUESTCHANGETARGET) WdfFunctions_01033[WdfRequestChangeTargetTableIndex])(WdfDriverGlobals, Request, IoTarget);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFREQUESTFORMATREQUESTUSINGCURRENTTYPE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request
+ );
+
+
+__forceinline
+void
+WdfRequestFormatRequestUsingCurrentType(
+
+ WDFREQUEST Request
+ )
+{
+ ((PFN_WDFREQUESTFORMATREQUESTUSINGCURRENTTYPE) WdfFunctions_01033[WdfRequestFormatRequestUsingCurrentTypeTableIndex])(WdfDriverGlobals, Request);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFREQUESTWDMFORMATUSINGSTACKLOCATION)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ PIO_STACK_LOCATION Stack
+ );
+
+
+__forceinline
+void
+WdfRequestWdmFormatUsingStackLocation(
+
+ WDFREQUEST Request,
+
+ PIO_STACK_LOCATION Stack
+ )
+{
+ ((PFN_WDFREQUESTWDMFORMATUSINGSTACKLOCATION) WdfFunctions_01033[WdfRequestWdmFormatUsingStackLocationTableIndex])(WdfDriverGlobals, Request, Stack);
+}
+
+
+
+
+typedef
+
+
+
+BOOLEAN
+(__stdcall *PFN_WDFREQUESTSEND)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ WDFIOTARGET Target,
+
+ PWDF_REQUEST_SEND_OPTIONS Options
+ );
+
+
+
+__forceinline
+BOOLEAN
+WdfRequestSend(
+
+ WDFREQUEST Request,
+
+ WDFIOTARGET Target,
+
+ PWDF_REQUEST_SEND_OPTIONS Options
+ )
+{
+ return ((PFN_WDFREQUESTSEND) WdfFunctions_01033[WdfRequestSendTableIndex])(WdfDriverGlobals, Request, Target, Options);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREQUESTGETSTATUS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRequestGetStatus(
+
+ WDFREQUEST Request
+ )
+{
+ return ((PFN_WDFREQUESTGETSTATUS) WdfFunctions_01033[WdfRequestGetStatusTableIndex])(WdfDriverGlobals, Request);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFREQUESTMARKCANCELABLE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ PFN_WDF_REQUEST_CANCEL EvtRequestCancel
+ );
+
+
+__forceinline
+void
+WdfRequestMarkCancelable(
+
+ WDFREQUEST Request,
+
+ PFN_WDF_REQUEST_CANCEL EvtRequestCancel
+ )
+{
+ ((PFN_WDFREQUESTMARKCANCELABLE) WdfFunctions_01033[WdfRequestMarkCancelableTableIndex])(WdfDriverGlobals, Request, EvtRequestCancel);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREQUESTMARKCANCELABLEEX)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ PFN_WDF_REQUEST_CANCEL EvtRequestCancel
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRequestMarkCancelableEx(
+
+ WDFREQUEST Request,
+
+ PFN_WDF_REQUEST_CANCEL EvtRequestCancel
+ )
+{
+ return ((PFN_WDFREQUESTMARKCANCELABLEEX) WdfFunctions_01033[WdfRequestMarkCancelableExTableIndex])(WdfDriverGlobals, Request, EvtRequestCancel);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREQUESTUNMARKCANCELABLE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRequestUnmarkCancelable(
+
+ WDFREQUEST Request
+ )
+{
+ return ((PFN_WDFREQUESTUNMARKCANCELABLE) WdfFunctions_01033[WdfRequestUnmarkCancelableTableIndex])(WdfDriverGlobals, Request);
+}
+
+
+
+
+typedef
+
+
+
+BOOLEAN
+(__stdcall *PFN_WDFREQUESTISCANCELED)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request
+ );
+
+
+
+__forceinline
+BOOLEAN
+WdfRequestIsCanceled(
+
+ WDFREQUEST Request
+ )
+{
+ return ((PFN_WDFREQUESTISCANCELED) WdfFunctions_01033[WdfRequestIsCanceledTableIndex])(WdfDriverGlobals, Request);
+}
+
+
+
+
+typedef
+
+
+BOOLEAN
+(__stdcall *PFN_WDFREQUESTCANCELSENTREQUEST)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request
+ );
+
+
+__forceinline
+BOOLEAN
+WdfRequestCancelSentRequest(
+
+ WDFREQUEST Request
+ )
+{
+ return ((PFN_WDFREQUESTCANCELSENTREQUEST) WdfFunctions_01033[WdfRequestCancelSentRequestTableIndex])(WdfDriverGlobals, Request);
+}
+
+
+
+
+typedef
+
+
+
+BOOLEAN
+(__stdcall *PFN_WDFREQUESTISFROM32BITPROCESS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request
+ );
+
+
+
+__forceinline
+BOOLEAN
+WdfRequestIsFrom32BitProcess(
+
+ WDFREQUEST Request
+ )
+{
+ return ((PFN_WDFREQUESTISFROM32BITPROCESS) WdfFunctions_01033[WdfRequestIsFrom32BitProcessTableIndex])(WdfDriverGlobals, Request);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFREQUESTSETCOMPLETIONROUTINE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine,
+
+ WDFCONTEXT CompletionContext
+ );
+
+
+__forceinline
+void
+WdfRequestSetCompletionRoutine(
+
+ WDFREQUEST Request,
+
+ PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine,
+
+ WDFCONTEXT CompletionContext
+ )
+{
+ ((PFN_WDFREQUESTSETCOMPLETIONROUTINE) WdfFunctions_01033[WdfRequestSetCompletionRoutineTableIndex])(WdfDriverGlobals, Request, CompletionRoutine, CompletionContext);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFREQUESTGETCOMPLETIONPARAMS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ PWDF_REQUEST_COMPLETION_PARAMS Params
+ );
+
+
+__forceinline
+void
+WdfRequestGetCompletionParams(
+
+ WDFREQUEST Request,
+
+ PWDF_REQUEST_COMPLETION_PARAMS Params
+ )
+{
+ ((PFN_WDFREQUESTGETCOMPLETIONPARAMS) WdfFunctions_01033[WdfRequestGetCompletionParamsTableIndex])(WdfDriverGlobals, Request, Params);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREQUESTALLOCATETIMER)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRequestAllocateTimer(
+
+ WDFREQUEST Request
+ )
+{
+ return ((PFN_WDFREQUESTALLOCATETIMER) WdfFunctions_01033[WdfRequestAllocateTimerTableIndex])(WdfDriverGlobals, Request);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFREQUESTCOMPLETE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ NTSTATUS Status
+ );
+
+
+__forceinline
+void
+WdfRequestComplete(
+
+ WDFREQUEST Request,
+
+ NTSTATUS Status
+ )
+{
+ ((PFN_WDFREQUESTCOMPLETE) WdfFunctions_01033[WdfRequestCompleteTableIndex])(WdfDriverGlobals, Request, Status);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFREQUESTCOMPLETEWITHPRIORITYBOOST)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ NTSTATUS Status,
+
+ CCHAR PriorityBoost
+ );
+
+
+__forceinline
+void
+WdfRequestCompleteWithPriorityBoost(
+
+ WDFREQUEST Request,
+
+ NTSTATUS Status,
+
+ CCHAR PriorityBoost
+ )
+{
+ ((PFN_WDFREQUESTCOMPLETEWITHPRIORITYBOOST) WdfFunctions_01033[WdfRequestCompleteWithPriorityBoostTableIndex])(WdfDriverGlobals, Request, Status, PriorityBoost);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFREQUESTCOMPLETEWITHINFORMATION)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ NTSTATUS Status,
+
+ ULONG_PTR Information
+ );
+
+
+__forceinline
+void
+WdfRequestCompleteWithInformation(
+
+ WDFREQUEST Request,
+
+ NTSTATUS Status,
+
+ ULONG_PTR Information
+ )
+{
+ ((PFN_WDFREQUESTCOMPLETEWITHINFORMATION) WdfFunctions_01033[WdfRequestCompleteWithInformationTableIndex])(WdfDriverGlobals, Request, Status, Information);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFREQUESTGETPARAMETERS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ PWDF_REQUEST_PARAMETERS Parameters
+ );
+
+
+__forceinline
+void
+WdfRequestGetParameters(
+
+ WDFREQUEST Request,
+
+ PWDF_REQUEST_PARAMETERS Parameters
+ )
+{
+ ((PFN_WDFREQUESTGETPARAMETERS) WdfFunctions_01033[WdfRequestGetParametersTableIndex])(WdfDriverGlobals, Request, Parameters);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREQUESTRETRIEVEINPUTMEMORY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ WDFMEMORY* Memory
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRequestRetrieveInputMemory(
+
+ WDFREQUEST Request,
+
+ WDFMEMORY* Memory
+ )
+{
+ return ((PFN_WDFREQUESTRETRIEVEINPUTMEMORY) WdfFunctions_01033[WdfRequestRetrieveInputMemoryTableIndex])(WdfDriverGlobals, Request, Memory);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREQUESTRETRIEVEOUTPUTMEMORY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ WDFMEMORY* Memory
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRequestRetrieveOutputMemory(
+
+ WDFREQUEST Request,
+
+ WDFMEMORY* Memory
+ )
+{
+ return ((PFN_WDFREQUESTRETRIEVEOUTPUTMEMORY) WdfFunctions_01033[WdfRequestRetrieveOutputMemoryTableIndex])(WdfDriverGlobals, Request, Memory);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREQUESTRETRIEVEINPUTBUFFER)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ size_t MinimumRequiredLength,
+
+ PVOID* Buffer,
+
+ size_t* Length
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRequestRetrieveInputBuffer(
+
+ WDFREQUEST Request,
+
+ size_t MinimumRequiredLength,
+
+ PVOID* Buffer,
+
+ size_t* Length
+ )
+{
+ return ((PFN_WDFREQUESTRETRIEVEINPUTBUFFER) WdfFunctions_01033[WdfRequestRetrieveInputBufferTableIndex])(WdfDriverGlobals, Request, MinimumRequiredLength, Buffer, Length);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREQUESTRETRIEVEOUTPUTBUFFER)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ size_t MinimumRequiredSize,
+
+ PVOID* Buffer,
+
+ size_t* Length
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRequestRetrieveOutputBuffer(
+
+ WDFREQUEST Request,
+
+ size_t MinimumRequiredSize,
+
+ PVOID* Buffer,
+
+ size_t* Length
+ )
+{
+ return ((PFN_WDFREQUESTRETRIEVEOUTPUTBUFFER) WdfFunctions_01033[WdfRequestRetrieveOutputBufferTableIndex])(WdfDriverGlobals, Request, MinimumRequiredSize, Buffer, Length);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREQUESTRETRIEVEINPUTWDMMDL)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ PMDL* Mdl
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRequestRetrieveInputWdmMdl(
+
+ WDFREQUEST Request,
+
+ PMDL* Mdl
+ )
+{
+ return ((PFN_WDFREQUESTRETRIEVEINPUTWDMMDL) WdfFunctions_01033[WdfRequestRetrieveInputWdmMdlTableIndex])(WdfDriverGlobals, Request, Mdl);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREQUESTRETRIEVEOUTPUTWDMMDL)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ PMDL* Mdl
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRequestRetrieveOutputWdmMdl(
+
+ WDFREQUEST Request,
+
+ PMDL* Mdl
+ )
+{
+ return ((PFN_WDFREQUESTRETRIEVEOUTPUTWDMMDL) WdfFunctions_01033[WdfRequestRetrieveOutputWdmMdlTableIndex])(WdfDriverGlobals, Request, Mdl);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREQUESTRETRIEVEUNSAFEUSERINPUTBUFFER)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ size_t MinimumRequiredLength,
+
+ PVOID* InputBuffer,
+
+ size_t* Length
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRequestRetrieveUnsafeUserInputBuffer(
+
+ WDFREQUEST Request,
+
+ size_t MinimumRequiredLength,
+
+ PVOID* InputBuffer,
+
+ size_t* Length
+ )
+{
+ return ((PFN_WDFREQUESTRETRIEVEUNSAFEUSERINPUTBUFFER) WdfFunctions_01033[WdfRequestRetrieveUnsafeUserInputBufferTableIndex])(WdfDriverGlobals, Request, MinimumRequiredLength, InputBuffer, Length);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREQUESTRETRIEVEUNSAFEUSEROUTPUTBUFFER)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ size_t MinimumRequiredLength,
+
+ PVOID* OutputBuffer,
+
+ size_t* Length
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRequestRetrieveUnsafeUserOutputBuffer(
+
+ WDFREQUEST Request,
+
+ size_t MinimumRequiredLength,
+
+ PVOID* OutputBuffer,
+
+ size_t* Length
+ )
+{
+ return ((PFN_WDFREQUESTRETRIEVEUNSAFEUSEROUTPUTBUFFER) WdfFunctions_01033[WdfRequestRetrieveUnsafeUserOutputBufferTableIndex])(WdfDriverGlobals, Request, MinimumRequiredLength, OutputBuffer, Length);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFREQUESTSETINFORMATION)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ ULONG_PTR Information
+ );
+
+
+__forceinline
+void
+WdfRequestSetInformation(
+
+ WDFREQUEST Request,
+
+ ULONG_PTR Information
+ )
+{
+ ((PFN_WDFREQUESTSETINFORMATION) WdfFunctions_01033[WdfRequestSetInformationTableIndex])(WdfDriverGlobals, Request, Information);
+}
+
+
+
+
+typedef
+
+
+ULONG_PTR
+(__stdcall *PFN_WDFREQUESTGETINFORMATION)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request
+ );
+
+
+__forceinline
+ULONG_PTR
+WdfRequestGetInformation(
+
+ WDFREQUEST Request
+ )
+{
+ return ((PFN_WDFREQUESTGETINFORMATION) WdfFunctions_01033[WdfRequestGetInformationTableIndex])(WdfDriverGlobals, Request);
+}
+
+
+
+
+typedef
+
+
+WDFFILEOBJECT
+(__stdcall *PFN_WDFREQUESTGETFILEOBJECT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request
+ );
+
+
+__forceinline
+WDFFILEOBJECT
+WdfRequestGetFileObject(
+
+ WDFREQUEST Request
+ )
+{
+ return ((PFN_WDFREQUESTGETFILEOBJECT) WdfFunctions_01033[WdfRequestGetFileObjectTableIndex])(WdfDriverGlobals, Request);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREQUESTPROBEANDLOCKUSERBUFFERFORREAD)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ PVOID Buffer,
+
+ size_t Length,
+
+ WDFMEMORY* MemoryObject
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRequestProbeAndLockUserBufferForRead(
+
+ WDFREQUEST Request,
+
+ PVOID Buffer,
+
+ size_t Length,
+
+ WDFMEMORY* MemoryObject
+ )
+{
+ return ((PFN_WDFREQUESTPROBEANDLOCKUSERBUFFERFORREAD) WdfFunctions_01033[WdfRequestProbeAndLockUserBufferForReadTableIndex])(WdfDriverGlobals, Request, Buffer, Length, MemoryObject);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREQUESTPROBEANDLOCKUSERBUFFERFORWRITE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ PVOID Buffer,
+
+ size_t Length,
+
+ WDFMEMORY* MemoryObject
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRequestProbeAndLockUserBufferForWrite(
+
+ WDFREQUEST Request,
+
+ PVOID Buffer,
+
+ size_t Length,
+
+ WDFMEMORY* MemoryObject
+ )
+{
+ return ((PFN_WDFREQUESTPROBEANDLOCKUSERBUFFERFORWRITE) WdfFunctions_01033[WdfRequestProbeAndLockUserBufferForWriteTableIndex])(WdfDriverGlobals, Request, Buffer, Length, MemoryObject);
+}
+
+
+
+
+typedef
+
+
+KPROCESSOR_MODE
+(__stdcall *PFN_WDFREQUESTGETREQUESTORMODE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request
+ );
+
+
+__forceinline
+KPROCESSOR_MODE
+WdfRequestGetRequestorMode(
+
+ WDFREQUEST Request
+ )
+{
+ return ((PFN_WDFREQUESTGETREQUESTORMODE) WdfFunctions_01033[WdfRequestGetRequestorModeTableIndex])(WdfDriverGlobals, Request);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREQUESTFORWARDTOIOQUEUE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ WDFQUEUE DestinationQueue
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRequestForwardToIoQueue(
+
+ WDFREQUEST Request,
+
+ WDFQUEUE DestinationQueue
+ )
+{
+ return ((PFN_WDFREQUESTFORWARDTOIOQUEUE) WdfFunctions_01033[WdfRequestForwardToIoQueueTableIndex])(WdfDriverGlobals, Request, DestinationQueue);
+}
+
+
+
+
+typedef
+
+
+WDFQUEUE
+(__stdcall *PFN_WDFREQUESTGETIOQUEUE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request
+ );
+
+
+__forceinline
+WDFQUEUE
+WdfRequestGetIoQueue(
+
+ WDFREQUEST Request
+ )
+{
+ return ((PFN_WDFREQUESTGETIOQUEUE) WdfFunctions_01033[WdfRequestGetIoQueueTableIndex])(WdfDriverGlobals, Request);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREQUESTREQUEUE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRequestRequeue(
+
+ WDFREQUEST Request
+ )
+{
+ return ((PFN_WDFREQUESTREQUEUE) WdfFunctions_01033[WdfRequestRequeueTableIndex])(WdfDriverGlobals, Request);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFREQUESTSTOPACKNOWLEDGE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ BOOLEAN Requeue
+ );
+
+
+__forceinline
+void
+WdfRequestStopAcknowledge(
+
+ WDFREQUEST Request,
+
+ BOOLEAN Requeue
+ )
+{
+ ((PFN_WDFREQUESTSTOPACKNOWLEDGE) WdfFunctions_01033[WdfRequestStopAcknowledgeTableIndex])(WdfDriverGlobals, Request, Requeue);
+}
+
+
+
+
+typedef
+
+
+PIRP
+(__stdcall *PFN_WDFREQUESTWDMGETIRP)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request
+ );
+
+
+
+
+
+
+__forceinline
+PIRP
+WdfRequestWdmGetIrp(
+
+ WDFREQUEST Request
+ )
+{
+ return ((PFN_WDFREQUESTWDMGETIRP) WdfFunctions_01033[WdfRequestWdmGetIrpTableIndex])(WdfDriverGlobals, Request);
+}
+
+
+
+
+typedef
+
+
+BOOLEAN
+(__stdcall *PFN_WDFREQUESTISRESERVED)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request
+ );
+
+
+__forceinline
+BOOLEAN
+WdfRequestIsReserved(
+
+ WDFREQUEST Request
+ )
+{
+ return ((PFN_WDFREQUESTISRESERVED) WdfFunctions_01033[WdfRequestIsReservedTableIndex])(WdfDriverGlobals, Request);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREQUESTFORWARDTOPARENTDEVICEIOQUEUE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFREQUEST Request,
+
+ WDFQUEUE ParentDeviceQueue,
+
+ PWDF_REQUEST_FORWARD_OPTIONS ForwardOptions
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRequestForwardToParentDeviceIoQueue(
+
+ WDFREQUEST Request,
+
+ WDFQUEUE ParentDeviceQueue,
+
+ PWDF_REQUEST_FORWARD_OPTIONS ForwardOptions
+ )
+{
+ return ((PFN_WDFREQUESTFORWARDTOPARENTDEVICEIOQUEUE) WdfFunctions_01033[WdfRequestForwardToParentDeviceIoQueueTableIndex])(WdfDriverGlobals, Request, ParentDeviceQueue, ForwardOptions);
+}
+
+
+
+
+
+
+
+
+
+
+#line 1797 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfrequest.h"
+
+
+
+
+#line 1802 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfrequest.h"
+
+#line 102 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfiotarget.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _WDF_IO_TARGET_STATE {
+ WdfIoTargetStateUndefined = 0,
+ WdfIoTargetStarted,
+ WdfIoTargetStopped,
+ WdfIoTargetClosedForQueryRemove,
+ WdfIoTargetClosed,
+ WdfIoTargetDeleted,
+ WdfIoTargetPurged,
+} WDF_IO_TARGET_STATE, *PWDF_IO_TARGET_STATE;
+
+typedef enum _WDF_IO_TARGET_OPEN_TYPE {
+ WdfIoTargetOpenUndefined = 0,
+ WdfIoTargetOpenUseExistingDevice = 1,
+ WdfIoTargetOpenByName = 2,
+ WdfIoTargetOpenReopen = 3,
+ WdfIoTargetOpenLocalTargetByFile = 4,
+} WDF_IO_TARGET_OPEN_TYPE;
+
+typedef enum _WDF_IO_TARGET_SENT_IO_ACTION {
+ WdfIoTargetSentIoUndefined = 0,
+ WdfIoTargetCancelSentIo,
+ WdfIoTargetWaitForSentIoToComplete,
+ WdfIoTargetLeaveSentIoPending,
+} WDF_IO_TARGET_SENT_IO_ACTION;
+
+typedef enum _WDF_IO_TARGET_PURGE_IO_ACTION {
+ WdfIoTargetPurgeIoUndefined = 0,
+ WdfIoTargetPurgeIoAndWait = 1,
+ WdfIoTargetPurgeIo = 2,
+} WDF_IO_TARGET_PURGE_IO_ACTION;
+
+
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_IO_TARGET_QUERY_REMOVE(
+
+ WDFIOTARGET IoTarget
+ );
+
+typedef EVT_WDF_IO_TARGET_QUERY_REMOVE *PFN_WDF_IO_TARGET_QUERY_REMOVE;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_IO_TARGET_REMOVE_CANCELED(
+
+ WDFIOTARGET IoTarget
+ );
+
+typedef EVT_WDF_IO_TARGET_REMOVE_CANCELED *PFN_WDF_IO_TARGET_REMOVE_CANCELED;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_IO_TARGET_REMOVE_COMPLETE(
+
+ WDFIOTARGET IoTarget
+ );
+
+typedef EVT_WDF_IO_TARGET_REMOVE_COMPLETE *PFN_WDF_IO_TARGET_REMOVE_COMPLETE;
+
+typedef struct _WDF_IO_TARGET_OPEN_PARAMS {
+
+
+
+ ULONG Size;
+
+
+
+
+
+ WDF_IO_TARGET_OPEN_TYPE Type;
+
+
+
+
+
+
+ PFN_WDF_IO_TARGET_QUERY_REMOVE EvtIoTargetQueryRemove;
+
+
+
+
+
+ PFN_WDF_IO_TARGET_REMOVE_CANCELED EvtIoTargetRemoveCanceled;
+
+
+
+
+
+ PFN_WDF_IO_TARGET_REMOVE_COMPLETE EvtIoTargetRemoveComplete;
+
+
+
+
+
+
+
+ PDEVICE_OBJECT TargetDeviceObject;
+
+
+
+
+
+
+ PFILE_OBJECT TargetFileObject;
+
+
+
+
+
+
+
+ UNICODE_STRING TargetDeviceName;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ACCESS_MASK DesiredAccess;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ULONG ShareAccess;
+
+
+
+
+
+
+
+
+
+
+
+
+ ULONG FileAttributes;
+
+
+
+
+
+
+
+
+
+
+
+
+ ULONG CreateDisposition;
+
+
+
+
+
+
+ ULONG CreateOptions;
+
+
+
+
+ PVOID EaBuffer;
+
+
+
+
+ ULONG EaBufferLength;
+
+
+
+
+ PLONGLONG AllocationSize;
+
+
+
+
+
+
+
+
+
+
+ ULONG FileInformation;
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UNICODE_STRING FileName;
+
+
+
+} WDF_IO_TARGET_OPEN_PARAMS, *PWDF_IO_TARGET_OPEN_PARAMS;
+
+
+void
+__forceinline
+WDF_IO_TARGET_OPEN_PARAMS_INIT_EXISTING_DEVICE(
+ PWDF_IO_TARGET_OPEN_PARAMS Params,
+ PDEVICE_OBJECT DeviceObject
+ )
+{
+ memset((Params),0,(sizeof(WDF_IO_TARGET_OPEN_PARAMS)));
+
+ Params->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_IO_TARGET_OPEN_PARAMS < WdfStructureCount) ? WdfStructures[INDEX_WDF_IO_TARGET_OPEN_PARAMS] : (size_t)(-1) ) : sizeof(WDF_IO_TARGET_OPEN_PARAMS) );
+ Params->Type = WdfIoTargetOpenUseExistingDevice;
+
+ Params->TargetDeviceObject = DeviceObject;
+}
+
+
+void
+__forceinline
+WDF_IO_TARGET_OPEN_PARAMS_INIT_CREATE_BY_NAME(
+ PWDF_IO_TARGET_OPEN_PARAMS Params,
+ PCUNICODE_STRING TargetDeviceName,
+ ACCESS_MASK DesiredAccess
+ )
+{
+ memset((Params),0,(sizeof(WDF_IO_TARGET_OPEN_PARAMS)));
+
+ Params->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_IO_TARGET_OPEN_PARAMS < WdfStructureCount) ? WdfStructures[INDEX_WDF_IO_TARGET_OPEN_PARAMS] : (size_t)(-1) ) : sizeof(WDF_IO_TARGET_OPEN_PARAMS) );
+ Params->Type = WdfIoTargetOpenByName;
+
+ memcpy((&Params->TargetDeviceName),(TargetDeviceName),(sizeof(UNICODE_STRING)));
+#line 317 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfiotarget.h"
+ Params->DesiredAccess = DesiredAccess;
+ Params->CreateOptions = 0x00000040;
+}
+
+void
+__forceinline
+WDF_IO_TARGET_OPEN_PARAMS_INIT_OPEN_BY_NAME(
+ PWDF_IO_TARGET_OPEN_PARAMS Params,
+ PCUNICODE_STRING TargetDeviceName,
+ ACCESS_MASK DesiredAccess
+ )
+{
+ WDF_IO_TARGET_OPEN_PARAMS_INIT_CREATE_BY_NAME(Params,
+ TargetDeviceName,
+ DesiredAccess);
+ Params->CreateDisposition = 0x00000001;
+}
+
+
+
+
+void
+__forceinline
+WDF_IO_TARGET_OPEN_PARAMS_INIT_REOPEN(
+ PWDF_IO_TARGET_OPEN_PARAMS Params
+ )
+{
+ memset((Params),0,(sizeof(WDF_IO_TARGET_OPEN_PARAMS)));
+
+ Params->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_IO_TARGET_OPEN_PARAMS < WdfStructureCount) ? WdfStructures[INDEX_WDF_IO_TARGET_OPEN_PARAMS] : (size_t)(-1) ) : sizeof(WDF_IO_TARGET_OPEN_PARAMS) );
+ Params->Type = WdfIoTargetOpenReopen;
+}
+
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIOTARGETCREATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PWDF_OBJECT_ATTRIBUTES IoTargetAttributes,
+
+ WDFIOTARGET* IoTarget
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoTargetCreate(
+
+ WDFDEVICE Device,
+
+ PWDF_OBJECT_ATTRIBUTES IoTargetAttributes,
+
+ WDFIOTARGET* IoTarget
+ )
+{
+ return ((PFN_WDFIOTARGETCREATE) WdfFunctions_01033[WdfIoTargetCreateTableIndex])(WdfDriverGlobals, Device, IoTargetAttributes, IoTarget);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIOTARGETOPEN)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget,
+
+ PWDF_IO_TARGET_OPEN_PARAMS OpenParams
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoTargetOpen(
+
+ WDFIOTARGET IoTarget,
+
+ PWDF_IO_TARGET_OPEN_PARAMS OpenParams
+ )
+{
+ return ((PFN_WDFIOTARGETOPEN) WdfFunctions_01033[WdfIoTargetOpenTableIndex])(WdfDriverGlobals, IoTarget, OpenParams);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFIOTARGETCLOSEFORQUERYREMOVE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget
+ );
+
+
+__forceinline
+void
+WdfIoTargetCloseForQueryRemove(
+
+ WDFIOTARGET IoTarget
+ )
+{
+ ((PFN_WDFIOTARGETCLOSEFORQUERYREMOVE) WdfFunctions_01033[WdfIoTargetCloseForQueryRemoveTableIndex])(WdfDriverGlobals, IoTarget);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFIOTARGETCLOSE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget
+ );
+
+
+__forceinline
+void
+WdfIoTargetClose(
+
+ WDFIOTARGET IoTarget
+ )
+{
+ ((PFN_WDFIOTARGETCLOSE) WdfFunctions_01033[WdfIoTargetCloseTableIndex])(WdfDriverGlobals, IoTarget);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIOTARGETSTART)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoTargetStart(
+
+ WDFIOTARGET IoTarget
+ )
+{
+ return ((PFN_WDFIOTARGETSTART) WdfFunctions_01033[WdfIoTargetStartTableIndex])(WdfDriverGlobals, IoTarget);
+}
+
+
+
+
+typedef
+
+
+
+void
+(__stdcall *PFN_WDFIOTARGETSTOP)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget,
+
+
+ WDF_IO_TARGET_SENT_IO_ACTION Action
+ );
+
+
+
+__forceinline
+void
+WdfIoTargetStop(
+
+ WDFIOTARGET IoTarget,
+
+
+ WDF_IO_TARGET_SENT_IO_ACTION Action
+ )
+{
+ ((PFN_WDFIOTARGETSTOP) WdfFunctions_01033[WdfIoTargetStopTableIndex])(WdfDriverGlobals, IoTarget, Action);
+}
+
+
+
+
+typedef
+
+
+
+void
+(__stdcall *PFN_WDFIOTARGETPURGE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget,
+
+
+ WDF_IO_TARGET_PURGE_IO_ACTION Action
+ );
+
+
+
+__forceinline
+void
+WdfIoTargetPurge(
+
+ WDFIOTARGET IoTarget,
+
+
+ WDF_IO_TARGET_PURGE_IO_ACTION Action
+ )
+{
+ ((PFN_WDFIOTARGETPURGE) WdfFunctions_01033[WdfIoTargetPurgeTableIndex])(WdfDriverGlobals, IoTarget, Action);
+}
+
+
+
+
+typedef
+
+
+WDF_IO_TARGET_STATE
+(__stdcall *PFN_WDFIOTARGETGETSTATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget
+ );
+
+
+__forceinline
+WDF_IO_TARGET_STATE
+WdfIoTargetGetState(
+
+ WDFIOTARGET IoTarget
+ )
+{
+ return ((PFN_WDFIOTARGETGETSTATE) WdfFunctions_01033[WdfIoTargetGetStateTableIndex])(WdfDriverGlobals, IoTarget);
+}
+
+
+
+
+typedef
+
+
+WDFDEVICE
+(__stdcall *PFN_WDFIOTARGETGETDEVICE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget
+ );
+
+
+__forceinline
+WDFDEVICE
+WdfIoTargetGetDevice(
+
+ WDFIOTARGET IoTarget
+ )
+{
+ return ((PFN_WDFIOTARGETGETDEVICE) WdfFunctions_01033[WdfIoTargetGetDeviceTableIndex])(WdfDriverGlobals, IoTarget);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIOTARGETQUERYTARGETPROPERTY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget,
+
+ DEVICE_REGISTRY_PROPERTY DeviceProperty,
+
+ ULONG BufferLength,
+
+
+ PVOID PropertyBuffer,
+
+ PULONG ResultLength
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoTargetQueryTargetProperty(
+
+ WDFIOTARGET IoTarget,
+
+ DEVICE_REGISTRY_PROPERTY DeviceProperty,
+
+ ULONG BufferLength,
+
+
+ PVOID PropertyBuffer,
+
+ PULONG ResultLength
+ )
+{
+ return ((PFN_WDFIOTARGETQUERYTARGETPROPERTY) WdfFunctions_01033[WdfIoTargetQueryTargetPropertyTableIndex])(WdfDriverGlobals, IoTarget, DeviceProperty, BufferLength, PropertyBuffer, ResultLength);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIOTARGETALLOCANDQUERYTARGETPROPERTY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget,
+
+ DEVICE_REGISTRY_PROPERTY DeviceProperty,
+
+
+ POOL_TYPE PoolType,
+
+ PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
+
+ WDFMEMORY* PropertyMemory
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoTargetAllocAndQueryTargetProperty(
+
+ WDFIOTARGET IoTarget,
+
+ DEVICE_REGISTRY_PROPERTY DeviceProperty,
+
+
+ POOL_TYPE PoolType,
+
+ PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
+
+ WDFMEMORY* PropertyMemory
+ )
+{
+ return ((PFN_WDFIOTARGETALLOCANDQUERYTARGETPROPERTY) WdfFunctions_01033[WdfIoTargetAllocAndQueryTargetPropertyTableIndex])(WdfDriverGlobals, IoTarget, DeviceProperty, PoolType, PropertyMemoryAttributes, PropertyMemory);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIOTARGETQUERYFORINTERFACE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget,
+
+ LPCGUID InterfaceType,
+
+ PINTERFACE Interface,
+
+ USHORT Size,
+
+ USHORT Version,
+
+ PVOID InterfaceSpecificData
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoTargetQueryForInterface(
+
+ WDFIOTARGET IoTarget,
+
+ LPCGUID InterfaceType,
+
+ PINTERFACE Interface,
+
+ USHORT Size,
+
+ USHORT Version,
+
+ PVOID InterfaceSpecificData
+ )
+{
+ return ((PFN_WDFIOTARGETQUERYFORINTERFACE) WdfFunctions_01033[WdfIoTargetQueryForInterfaceTableIndex])(WdfDriverGlobals, IoTarget, InterfaceType, Interface, Size, Version, InterfaceSpecificData);
+}
+
+
+
+
+typedef
+
+
+PDEVICE_OBJECT
+(__stdcall *PFN_WDFIOTARGETWDMGETTARGETDEVICEOBJECT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget
+ );
+
+
+__forceinline
+PDEVICE_OBJECT
+WdfIoTargetWdmGetTargetDeviceObject(
+
+ WDFIOTARGET IoTarget
+ )
+{
+ return ((PFN_WDFIOTARGETWDMGETTARGETDEVICEOBJECT) WdfFunctions_01033[WdfIoTargetWdmGetTargetDeviceObjectTableIndex])(WdfDriverGlobals, IoTarget);
+}
+
+
+
+
+typedef
+
+
+PDEVICE_OBJECT
+(__stdcall *PFN_WDFIOTARGETWDMGETTARGETPHYSICALDEVICE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget
+ );
+
+
+__forceinline
+PDEVICE_OBJECT
+WdfIoTargetWdmGetTargetPhysicalDevice(
+
+ WDFIOTARGET IoTarget
+ )
+{
+ return ((PFN_WDFIOTARGETWDMGETTARGETPHYSICALDEVICE) WdfFunctions_01033[WdfIoTargetWdmGetTargetPhysicalDeviceTableIndex])(WdfDriverGlobals, IoTarget);
+}
+
+
+
+
+typedef
+
+
+PFILE_OBJECT
+(__stdcall *PFN_WDFIOTARGETWDMGETTARGETFILEOBJECT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget
+ );
+
+
+__forceinline
+PFILE_OBJECT
+WdfIoTargetWdmGetTargetFileObject(
+
+ WDFIOTARGET IoTarget
+ )
+{
+ return ((PFN_WDFIOTARGETWDMGETTARGETFILEOBJECT) WdfFunctions_01033[WdfIoTargetWdmGetTargetFileObjectTableIndex])(WdfDriverGlobals, IoTarget);
+}
+
+
+
+
+typedef
+
+
+HANDLE
+(__stdcall *PFN_WDFIOTARGETWDMGETTARGETFILEHANDLE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget
+ );
+
+
+__forceinline
+HANDLE
+WdfIoTargetWdmGetTargetFileHandle(
+
+ WDFIOTARGET IoTarget
+ )
+{
+ return ((PFN_WDFIOTARGETWDMGETTARGETFILEHANDLE) WdfFunctions_01033[WdfIoTargetWdmGetTargetFileHandleTableIndex])(WdfDriverGlobals, IoTarget);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIOTARGETSENDREADSYNCHRONOUSLY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget,
+
+ WDFREQUEST Request,
+
+ PWDF_MEMORY_DESCRIPTOR OutputBuffer,
+
+ PLONGLONG DeviceOffset,
+
+ PWDF_REQUEST_SEND_OPTIONS RequestOptions,
+
+ PULONG_PTR BytesRead
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoTargetSendReadSynchronously(
+
+ WDFIOTARGET IoTarget,
+
+ WDFREQUEST Request,
+
+ PWDF_MEMORY_DESCRIPTOR OutputBuffer,
+
+ PLONGLONG DeviceOffset,
+
+ PWDF_REQUEST_SEND_OPTIONS RequestOptions,
+
+ PULONG_PTR BytesRead
+ )
+{
+ return ((PFN_WDFIOTARGETSENDREADSYNCHRONOUSLY) WdfFunctions_01033[WdfIoTargetSendReadSynchronouslyTableIndex])(WdfDriverGlobals, IoTarget, Request, OutputBuffer, DeviceOffset, RequestOptions, BytesRead);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIOTARGETFORMATREQUESTFORREAD)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget,
+
+ WDFREQUEST Request,
+
+ WDFMEMORY OutputBuffer,
+
+ PWDFMEMORY_OFFSET OutputBufferOffset,
+
+ PLONGLONG DeviceOffset
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoTargetFormatRequestForRead(
+
+ WDFIOTARGET IoTarget,
+
+ WDFREQUEST Request,
+
+ WDFMEMORY OutputBuffer,
+
+ PWDFMEMORY_OFFSET OutputBufferOffset,
+
+ PLONGLONG DeviceOffset
+ )
+{
+ return ((PFN_WDFIOTARGETFORMATREQUESTFORREAD) WdfFunctions_01033[WdfIoTargetFormatRequestForReadTableIndex])(WdfDriverGlobals, IoTarget, Request, OutputBuffer, OutputBufferOffset, DeviceOffset);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIOTARGETSENDWRITESYNCHRONOUSLY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget,
+
+ WDFREQUEST Request,
+
+ PWDF_MEMORY_DESCRIPTOR InputBuffer,
+
+ PLONGLONG DeviceOffset,
+
+ PWDF_REQUEST_SEND_OPTIONS RequestOptions,
+
+ PULONG_PTR BytesWritten
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoTargetSendWriteSynchronously(
+
+ WDFIOTARGET IoTarget,
+
+ WDFREQUEST Request,
+
+ PWDF_MEMORY_DESCRIPTOR InputBuffer,
+
+ PLONGLONG DeviceOffset,
+
+ PWDF_REQUEST_SEND_OPTIONS RequestOptions,
+
+ PULONG_PTR BytesWritten
+ )
+{
+ return ((PFN_WDFIOTARGETSENDWRITESYNCHRONOUSLY) WdfFunctions_01033[WdfIoTargetSendWriteSynchronouslyTableIndex])(WdfDriverGlobals, IoTarget, Request, InputBuffer, DeviceOffset, RequestOptions, BytesWritten);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIOTARGETFORMATREQUESTFORWRITE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget,
+
+ WDFREQUEST Request,
+
+ WDFMEMORY InputBuffer,
+
+ PWDFMEMORY_OFFSET InputBufferOffset,
+
+ PLONGLONG DeviceOffset
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoTargetFormatRequestForWrite(
+
+ WDFIOTARGET IoTarget,
+
+ WDFREQUEST Request,
+
+ WDFMEMORY InputBuffer,
+
+ PWDFMEMORY_OFFSET InputBufferOffset,
+
+ PLONGLONG DeviceOffset
+ )
+{
+ return ((PFN_WDFIOTARGETFORMATREQUESTFORWRITE) WdfFunctions_01033[WdfIoTargetFormatRequestForWriteTableIndex])(WdfDriverGlobals, IoTarget, Request, InputBuffer, InputBufferOffset, DeviceOffset);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIOTARGETSENDIOCTLSYNCHRONOUSLY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget,
+
+ WDFREQUEST Request,
+
+ ULONG IoctlCode,
+
+ PWDF_MEMORY_DESCRIPTOR InputBuffer,
+
+ PWDF_MEMORY_DESCRIPTOR OutputBuffer,
+
+ PWDF_REQUEST_SEND_OPTIONS RequestOptions,
+
+ PULONG_PTR BytesReturned
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoTargetSendIoctlSynchronously(
+
+ WDFIOTARGET IoTarget,
+
+ WDFREQUEST Request,
+
+ ULONG IoctlCode,
+
+ PWDF_MEMORY_DESCRIPTOR InputBuffer,
+
+ PWDF_MEMORY_DESCRIPTOR OutputBuffer,
+
+ PWDF_REQUEST_SEND_OPTIONS RequestOptions,
+
+ PULONG_PTR BytesReturned
+ )
+{
+ return ((PFN_WDFIOTARGETSENDIOCTLSYNCHRONOUSLY) WdfFunctions_01033[WdfIoTargetSendIoctlSynchronouslyTableIndex])(WdfDriverGlobals, IoTarget, Request, IoctlCode, InputBuffer, OutputBuffer, RequestOptions, BytesReturned);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIOTARGETFORMATREQUESTFORIOCTL)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget,
+
+ WDFREQUEST Request,
+
+ ULONG IoctlCode,
+
+ WDFMEMORY InputBuffer,
+
+ PWDFMEMORY_OFFSET InputBufferOffset,
+
+ WDFMEMORY OutputBuffer,
+
+ PWDFMEMORY_OFFSET OutputBufferOffset
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoTargetFormatRequestForIoctl(
+
+ WDFIOTARGET IoTarget,
+
+ WDFREQUEST Request,
+
+ ULONG IoctlCode,
+
+ WDFMEMORY InputBuffer,
+
+ PWDFMEMORY_OFFSET InputBufferOffset,
+
+ WDFMEMORY OutputBuffer,
+
+ PWDFMEMORY_OFFSET OutputBufferOffset
+ )
+{
+ return ((PFN_WDFIOTARGETFORMATREQUESTFORIOCTL) WdfFunctions_01033[WdfIoTargetFormatRequestForIoctlTableIndex])(WdfDriverGlobals, IoTarget, Request, IoctlCode, InputBuffer, InputBufferOffset, OutputBuffer, OutputBufferOffset);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIOTARGETSENDINTERNALIOCTLSYNCHRONOUSLY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget,
+
+ WDFREQUEST Request,
+
+ ULONG IoctlCode,
+
+ PWDF_MEMORY_DESCRIPTOR InputBuffer,
+
+ PWDF_MEMORY_DESCRIPTOR OutputBuffer,
+
+ PWDF_REQUEST_SEND_OPTIONS RequestOptions,
+
+ PULONG_PTR BytesReturned
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoTargetSendInternalIoctlSynchronously(
+
+ WDFIOTARGET IoTarget,
+
+ WDFREQUEST Request,
+
+ ULONG IoctlCode,
+
+ PWDF_MEMORY_DESCRIPTOR InputBuffer,
+
+ PWDF_MEMORY_DESCRIPTOR OutputBuffer,
+
+ PWDF_REQUEST_SEND_OPTIONS RequestOptions,
+
+ PULONG_PTR BytesReturned
+ )
+{
+ return ((PFN_WDFIOTARGETSENDINTERNALIOCTLSYNCHRONOUSLY) WdfFunctions_01033[WdfIoTargetSendInternalIoctlSynchronouslyTableIndex])(WdfDriverGlobals, IoTarget, Request, IoctlCode, InputBuffer, OutputBuffer, RequestOptions, BytesReturned);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIOTARGETFORMATREQUESTFORINTERNALIOCTL)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget,
+
+ WDFREQUEST Request,
+
+ ULONG IoctlCode,
+
+ WDFMEMORY InputBuffer,
+
+ PWDFMEMORY_OFFSET InputBufferOffset,
+
+ WDFMEMORY OutputBuffer,
+
+ PWDFMEMORY_OFFSET OutputBufferOffset
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoTargetFormatRequestForInternalIoctl(
+
+ WDFIOTARGET IoTarget,
+
+ WDFREQUEST Request,
+
+ ULONG IoctlCode,
+
+ WDFMEMORY InputBuffer,
+
+ PWDFMEMORY_OFFSET InputBufferOffset,
+
+ WDFMEMORY OutputBuffer,
+
+ PWDFMEMORY_OFFSET OutputBufferOffset
+ )
+{
+ return ((PFN_WDFIOTARGETFORMATREQUESTFORINTERNALIOCTL) WdfFunctions_01033[WdfIoTargetFormatRequestForInternalIoctlTableIndex])(WdfDriverGlobals, IoTarget, Request, IoctlCode, InputBuffer, InputBufferOffset, OutputBuffer, OutputBufferOffset);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIOTARGETSENDINTERNALIOCTLOTHERSSYNCHRONOUSLY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget,
+
+ WDFREQUEST Request,
+
+ ULONG IoctlCode,
+
+ PWDF_MEMORY_DESCRIPTOR OtherArg1,
+
+ PWDF_MEMORY_DESCRIPTOR OtherArg2,
+
+ PWDF_MEMORY_DESCRIPTOR OtherArg4,
+
+ PWDF_REQUEST_SEND_OPTIONS RequestOptions,
+
+ PULONG_PTR BytesReturned
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoTargetSendInternalIoctlOthersSynchronously(
+
+ WDFIOTARGET IoTarget,
+
+ WDFREQUEST Request,
+
+ ULONG IoctlCode,
+
+ PWDF_MEMORY_DESCRIPTOR OtherArg1,
+
+ PWDF_MEMORY_DESCRIPTOR OtherArg2,
+
+ PWDF_MEMORY_DESCRIPTOR OtherArg4,
+
+ PWDF_REQUEST_SEND_OPTIONS RequestOptions,
+
+ PULONG_PTR BytesReturned
+ )
+{
+ return ((PFN_WDFIOTARGETSENDINTERNALIOCTLOTHERSSYNCHRONOUSLY) WdfFunctions_01033[WdfIoTargetSendInternalIoctlOthersSynchronouslyTableIndex])(WdfDriverGlobals, IoTarget, Request, IoctlCode, OtherArg1, OtherArg2, OtherArg4, RequestOptions, BytesReturned);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIOTARGETFORMATREQUESTFORINTERNALIOCTLOTHERS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFIOTARGET IoTarget,
+
+ WDFREQUEST Request,
+
+ ULONG IoctlCode,
+
+ WDFMEMORY OtherArg1,
+
+ PWDFMEMORY_OFFSET OtherArg1Offset,
+
+ WDFMEMORY OtherArg2,
+
+ PWDFMEMORY_OFFSET OtherArg2Offset,
+
+ WDFMEMORY OtherArg4,
+
+ PWDFMEMORY_OFFSET OtherArg4Offset
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoTargetFormatRequestForInternalIoctlOthers(
+
+ WDFIOTARGET IoTarget,
+
+ WDFREQUEST Request,
+
+ ULONG IoctlCode,
+
+ WDFMEMORY OtherArg1,
+
+ PWDFMEMORY_OFFSET OtherArg1Offset,
+
+ WDFMEMORY OtherArg2,
+
+ PWDFMEMORY_OFFSET OtherArg2Offset,
+
+ WDFMEMORY OtherArg4,
+
+ PWDFMEMORY_OFFSET OtherArg4Offset
+ )
+{
+ return ((PFN_WDFIOTARGETFORMATREQUESTFORINTERNALIOCTLOTHERS) WdfFunctions_01033[WdfIoTargetFormatRequestForInternalIoctlOthersTableIndex])(WdfDriverGlobals, IoTarget, Request, IoctlCode, OtherArg1, OtherArg1Offset, OtherArg2, OtherArg2Offset, OtherArg4, OtherArg4Offset);
+}
+
+
+
+#line 1348 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfiotarget.h"
+
+
+
+
+
+#line 1354 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfiotarget.h"
+
+#line 103 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfio.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _WDF_IO_QUEUE_DISPATCH_TYPE {
+ WdfIoQueueDispatchInvalid = 0,
+ WdfIoQueueDispatchSequential,
+ WdfIoQueueDispatchParallel,
+ WdfIoQueueDispatchManual,
+ WdfIoQueueDispatchMax,
+} WDF_IO_QUEUE_DISPATCH_TYPE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _WDF_IO_QUEUE_STATE {
+ WdfIoQueueAcceptRequests = 0x01,
+ WdfIoQueueDispatchRequests = 0x02,
+ WdfIoQueueNoRequests = 0x04,
+ WdfIoQueueDriverNoRequests = 0x08,
+ WdfIoQueuePnpHeld = 0x10,
+} WDF_IO_QUEUE_STATE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+BOOLEAN
+__forceinline
+WDF_IO_QUEUE_IDLE(
+ WDF_IO_QUEUE_STATE State
+ )
+{
+ return ((State & WdfIoQueueNoRequests) &&
+ (State & WdfIoQueueDriverNoRequests)) ? 1: 0;
+}
+
+
+
+
+
+BOOLEAN
+__forceinline
+WDF_IO_QUEUE_READY(
+ WDF_IO_QUEUE_STATE State
+ )
+{
+ return ((State & WdfIoQueueDispatchRequests) &&
+ (State & WdfIoQueueAcceptRequests) &&
+ ((State & WdfIoQueuePnpHeld)==0)) ? 1: 0;
+}
+
+
+
+
+
+
+BOOLEAN
+__forceinline
+WDF_IO_QUEUE_STOPPED(
+ WDF_IO_QUEUE_STATE State
+ )
+{
+ return (((State & WdfIoQueueDispatchRequests) == 0) &&
+ (State & WdfIoQueueAcceptRequests) &&
+ (State & WdfIoQueueDriverNoRequests)) ? 1: 0;
+
+}
+
+
+
+
+
+
+
+BOOLEAN
+__forceinline
+WDF_IO_QUEUE_DRAINED(
+ WDF_IO_QUEUE_STATE State
+ )
+{
+ return ( ((State & WdfIoQueueAcceptRequests)==0) &&
+ (State & WdfIoQueueDispatchRequests) &&
+ (State & WdfIoQueueNoRequests) &&
+ (State & WdfIoQueueDriverNoRequests) ) ? 1: 0;
+
+}
+
+
+
+
+
+
+BOOLEAN
+__forceinline
+WDF_IO_QUEUE_PURGED(
+ WDF_IO_QUEUE_STATE State
+ )
+{
+ return ( ((State & WdfIoQueueAcceptRequests)==0) &&
+ (State & WdfIoQueueNoRequests) &&
+ (State & WdfIoQueueDriverNoRequests) ) ? 1: 0;
+
+}
+
+
+
+
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_IO_QUEUE_IO_DEFAULT(
+
+ WDFQUEUE Queue,
+
+ WDFREQUEST Request
+ );
+
+typedef EVT_WDF_IO_QUEUE_IO_DEFAULT *PFN_WDF_IO_QUEUE_IO_DEFAULT;
+
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_IO_QUEUE_IO_STOP(
+
+ WDFQUEUE Queue,
+
+ WDFREQUEST Request,
+
+ ULONG ActionFlags
+ );
+
+typedef EVT_WDF_IO_QUEUE_IO_STOP *PFN_WDF_IO_QUEUE_IO_STOP;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_IO_QUEUE_IO_RESUME(
+
+ WDFQUEUE Queue,
+
+ WDFREQUEST Request
+ );
+
+typedef EVT_WDF_IO_QUEUE_IO_RESUME *PFN_WDF_IO_QUEUE_IO_RESUME;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_IO_QUEUE_IO_READ(
+
+ WDFQUEUE Queue,
+
+ WDFREQUEST Request,
+
+ size_t Length
+ );
+
+typedef EVT_WDF_IO_QUEUE_IO_READ *PFN_WDF_IO_QUEUE_IO_READ;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_IO_QUEUE_IO_WRITE(
+
+ WDFQUEUE Queue,
+
+ WDFREQUEST Request,
+
+ size_t Length
+ );
+
+typedef EVT_WDF_IO_QUEUE_IO_WRITE *PFN_WDF_IO_QUEUE_IO_WRITE;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_IO_QUEUE_IO_DEVICE_CONTROL(
+
+ WDFQUEUE Queue,
+
+ WDFREQUEST Request,
+
+ size_t OutputBufferLength,
+
+ size_t InputBufferLength,
+
+ ULONG IoControlCode
+ );
+
+typedef EVT_WDF_IO_QUEUE_IO_DEVICE_CONTROL *PFN_WDF_IO_QUEUE_IO_DEVICE_CONTROL;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_IO_QUEUE_IO_INTERNAL_DEVICE_CONTROL(
+
+ WDFQUEUE Queue,
+
+ WDFREQUEST Request,
+
+ size_t OutputBufferLength,
+
+ size_t InputBufferLength,
+
+ ULONG IoControlCode
+ );
+
+typedef EVT_WDF_IO_QUEUE_IO_INTERNAL_DEVICE_CONTROL *PFN_WDF_IO_QUEUE_IO_INTERNAL_DEVICE_CONTROL;
+
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_IO_QUEUE_IO_CANCELED_ON_QUEUE(
+
+ WDFQUEUE Queue,
+
+ WDFREQUEST Request
+ );
+
+typedef EVT_WDF_IO_QUEUE_IO_CANCELED_ON_QUEUE *PFN_WDF_IO_QUEUE_IO_CANCELED_ON_QUEUE;
+
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_IO_QUEUE_STATE(
+
+ WDFQUEUE Queue,
+
+ WDFCONTEXT Context
+ );
+
+typedef EVT_WDF_IO_QUEUE_STATE *PFN_WDF_IO_QUEUE_STATE;
+
+
+
+
+
+
+typedef struct _WDF_IO_QUEUE_CONFIG {
+
+ ULONG Size;
+
+ WDF_IO_QUEUE_DISPATCH_TYPE DispatchType;
+
+ WDF_TRI_STATE PowerManaged;
+
+ BOOLEAN AllowZeroLengthRequests;
+
+ BOOLEAN DefaultQueue;
+
+ PFN_WDF_IO_QUEUE_IO_DEFAULT EvtIoDefault;
+
+ PFN_WDF_IO_QUEUE_IO_READ EvtIoRead;
+
+ PFN_WDF_IO_QUEUE_IO_WRITE EvtIoWrite;
+
+ PFN_WDF_IO_QUEUE_IO_DEVICE_CONTROL EvtIoDeviceControl;
+
+ PFN_WDF_IO_QUEUE_IO_INTERNAL_DEVICE_CONTROL EvtIoInternalDeviceControl;
+
+ PFN_WDF_IO_QUEUE_IO_STOP EvtIoStop;
+
+ PFN_WDF_IO_QUEUE_IO_RESUME EvtIoResume;
+
+ PFN_WDF_IO_QUEUE_IO_CANCELED_ON_QUEUE EvtIoCanceledOnQueue;
+
+ union {
+ struct {
+ ULONG NumberOfPresentedRequests;
+ } Parallel;
+ } Settings;
+
+ WDFDRIVER Driver;
+} WDF_IO_QUEUE_CONFIG, *PWDF_IO_QUEUE_CONFIG;
+
+void
+__forceinline
+WDF_IO_QUEUE_CONFIG_INIT(
+ PWDF_IO_QUEUE_CONFIG Config,
+ WDF_IO_QUEUE_DISPATCH_TYPE DispatchType
+ )
+{
+ memset((Config),0,(sizeof(WDF_IO_QUEUE_CONFIG)));
+
+ Config->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_IO_QUEUE_CONFIG < WdfStructureCount) ? WdfStructures[INDEX_WDF_IO_QUEUE_CONFIG] : (size_t)(-1) ) : sizeof(WDF_IO_QUEUE_CONFIG) );
+ Config->PowerManaged = WdfUseDefault;
+ Config->DispatchType = DispatchType;
+ if (Config->DispatchType == WdfIoQueueDispatchParallel) {
+ Config->Settings.Parallel.NumberOfPresentedRequests = (ULONG)-1;
+ }
+}
+
+void
+__forceinline
+WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE(
+ PWDF_IO_QUEUE_CONFIG Config,
+ WDF_IO_QUEUE_DISPATCH_TYPE DispatchType
+ )
+{
+ memset((Config),0,(sizeof(WDF_IO_QUEUE_CONFIG)));
+
+ Config->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_IO_QUEUE_CONFIG < WdfStructureCount) ? WdfStructures[INDEX_WDF_IO_QUEUE_CONFIG] : (size_t)(-1) ) : sizeof(WDF_IO_QUEUE_CONFIG) );
+ Config->PowerManaged = WdfUseDefault;
+ Config->DefaultQueue = 1;
+ Config->DispatchType = DispatchType;
+ if (Config->DispatchType == WdfIoQueueDispatchParallel) {
+ Config->Settings.Parallel.NumberOfPresentedRequests = (ULONG)-1;
+ }
+}
+
+typedef enum _WDF_IO_FORWARD_PROGRESS_ACTION {
+ WdfIoForwardProgressActionInvalid = 0x0,
+ WdfIoForwardProgressActionFailRequest,
+ WdfIoForwardProgressActionUseReservedRequest
+} WDF_IO_FORWARD_PROGRESS_ACTION;
+
+typedef enum _WDF_IO_FORWARD_PROGRESS_RESERVED_POLICY {
+ WdfIoForwardProgressInvalidPolicy =0x0,
+ WdfIoForwardProgressReservedPolicyAlwaysUseReservedRequest,
+ WdfIoForwardProgressReservedPolicyUseExamine,
+ WdfIoForwardProgressReservedPolicyPagingIO
+} WDF_IO_FORWARD_PROGRESS_RESERVED_POLICY;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_IO_ALLOCATE_RESOURCES_FOR_RESERVED_REQUEST(
+
+ WDFQUEUE Queue,
+
+ WDFREQUEST Request
+ );
+
+typedef EVT_WDF_IO_ALLOCATE_RESOURCES_FOR_RESERVED_REQUEST *PFN_WDF_IO_ALLOCATE_RESOURCES_FOR_RESERVED_REQUEST;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_IO_ALLOCATE_REQUEST_RESOURCES(
+
+ WDFQUEUE Queue,
+
+ WDFREQUEST Request
+ );
+
+typedef EVT_WDF_IO_ALLOCATE_REQUEST_RESOURCES *PFN_WDF_IO_ALLOCATE_REQUEST_RESOURCES;
+
+typedef
+
+
+
+WDF_IO_FORWARD_PROGRESS_ACTION
+__stdcall
+EVT_WDF_IO_WDM_IRP_FOR_FORWARD_PROGRESS(
+
+ WDFQUEUE Queue,
+
+ PIRP Irp
+ );
+
+typedef EVT_WDF_IO_WDM_IRP_FOR_FORWARD_PROGRESS *PFN_WDF_IO_WDM_IRP_FOR_FORWARD_PROGRESS;
+
+typedef struct _WDF_IO_FORWARD_PROGRESS_RESERVED_POLICY_SETTINGS {
+ union {
+
+ struct {
+ PFN_WDF_IO_WDM_IRP_FOR_FORWARD_PROGRESS EvtIoWdmIrpForForwardProgress;
+ } ExaminePolicy;
+
+ } Policy;
+} WDF_IO_FORWARD_PROGRESS_RESERVED_POLICY_SETTINGS;
+
+typedef struct _WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY {
+ ULONG Size;
+
+ ULONG TotalForwardProgressRequests;
+
+
+
+
+ WDF_IO_FORWARD_PROGRESS_RESERVED_POLICY ForwardProgressReservedPolicy;
+
+
+
+
+ WDF_IO_FORWARD_PROGRESS_RESERVED_POLICY_SETTINGS ForwardProgressReservePolicySettings;
+
+
+
+
+ PFN_WDF_IO_ALLOCATE_RESOURCES_FOR_RESERVED_REQUEST EvtIoAllocateResourcesForReservedRequest;
+
+
+
+
+ PFN_WDF_IO_ALLOCATE_REQUEST_RESOURCES EvtIoAllocateRequestResources;
+
+} WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY, *PWDF_IO_QUEUE_FORWARD_PROGRESS_POLICY;
+
+void
+__forceinline
+WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY_DEFAULT_INIT(
+ PWDF_IO_QUEUE_FORWARD_PROGRESS_POLICY Policy,
+ ULONG TotalForwardProgressRequests
+ )
+{
+ memset((Policy),0,(sizeof(WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY)));
+
+ Policy->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY < WdfStructureCount) ? WdfStructures[INDEX_WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY] : (size_t)(-1) ) : sizeof(WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY) );
+ Policy->TotalForwardProgressRequests = TotalForwardProgressRequests;
+ Policy->ForwardProgressReservedPolicy = WdfIoForwardProgressReservedPolicyAlwaysUseReservedRequest;
+}
+
+
+void
+__forceinline
+WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY_EXAMINE_INIT(
+ PWDF_IO_QUEUE_FORWARD_PROGRESS_POLICY Policy,
+ ULONG TotalForwardProgressRequests,
+ PFN_WDF_IO_WDM_IRP_FOR_FORWARD_PROGRESS EvtIoWdmIrpForForwardProgress
+ )
+{
+ memset((Policy),0,(sizeof(WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY)));
+
+ Policy->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY < WdfStructureCount) ? WdfStructures[INDEX_WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY] : (size_t)(-1) ) : sizeof(WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY) );
+ Policy->TotalForwardProgressRequests = TotalForwardProgressRequests;
+ Policy->ForwardProgressReservedPolicy = WdfIoForwardProgressReservedPolicyUseExamine;
+ Policy->ForwardProgressReservePolicySettings.Policy.ExaminePolicy.EvtIoWdmIrpForForwardProgress =
+ EvtIoWdmIrpForForwardProgress;
+}
+
+void
+__forceinline
+WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY_PAGINGIO_INIT(
+ PWDF_IO_QUEUE_FORWARD_PROGRESS_POLICY Policy,
+ ULONG TotalForwardProgressRequests
+ )
+{
+ memset((Policy),0,(sizeof(WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY)));
+
+ Policy->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY < WdfStructureCount) ? WdfStructures[INDEX_WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY] : (size_t)(-1) ) : sizeof(WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY) );
+ Policy->TotalForwardProgressRequests = TotalForwardProgressRequests;
+ Policy->ForwardProgressReservedPolicy = WdfIoForwardProgressReservedPolicyPagingIO;
+}
+
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIOQUEUECREATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PWDF_IO_QUEUE_CONFIG Config,
+
+ PWDF_OBJECT_ATTRIBUTES QueueAttributes,
+
+ WDFQUEUE* Queue
+ );
+
+
+
+
+
+
+
+
+__forceinline
+NTSTATUS
+WdfIoQueueCreate(
+
+ WDFDEVICE Device,
+
+ PWDF_IO_QUEUE_CONFIG Config,
+
+ PWDF_OBJECT_ATTRIBUTES QueueAttributes,
+
+ WDFQUEUE* Queue
+ )
+{
+ return ((PFN_WDFIOQUEUECREATE) WdfFunctions_01033[WdfIoQueueCreateTableIndex])(WdfDriverGlobals, Device, Config, QueueAttributes, Queue);
+}
+
+
+
+
+typedef
+
+
+WDF_IO_QUEUE_STATE
+(__stdcall *PFN_WDFIOQUEUEGETSTATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFQUEUE Queue,
+
+ PULONG QueueRequests,
+
+ PULONG DriverRequests
+ );
+
+
+__forceinline
+WDF_IO_QUEUE_STATE
+WdfIoQueueGetState(
+
+ WDFQUEUE Queue,
+
+ PULONG QueueRequests,
+
+ PULONG DriverRequests
+ )
+{
+ return ((PFN_WDFIOQUEUEGETSTATE) WdfFunctions_01033[WdfIoQueueGetStateTableIndex])(WdfDriverGlobals, Queue, QueueRequests, DriverRequests);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFIOQUEUESTART)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFQUEUE Queue
+ );
+
+
+__forceinline
+void
+WdfIoQueueStart(
+
+ WDFQUEUE Queue
+ )
+{
+ ((PFN_WDFIOQUEUESTART) WdfFunctions_01033[WdfIoQueueStartTableIndex])(WdfDriverGlobals, Queue);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFIOQUEUESTOP)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFQUEUE Queue,
+
+
+ PFN_WDF_IO_QUEUE_STATE StopComplete,
+
+
+ WDFCONTEXT Context
+ );
+
+
+__forceinline
+void
+WdfIoQueueStop(
+
+ WDFQUEUE Queue,
+
+
+ PFN_WDF_IO_QUEUE_STATE StopComplete,
+
+
+ WDFCONTEXT Context
+ )
+{
+ ((PFN_WDFIOQUEUESTOP) WdfFunctions_01033[WdfIoQueueStopTableIndex])(WdfDriverGlobals, Queue, StopComplete, Context);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFIOQUEUESTOPSYNCHRONOUSLY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFQUEUE Queue
+ );
+
+
+__forceinline
+void
+WdfIoQueueStopSynchronously(
+
+ WDFQUEUE Queue
+ )
+{
+ ((PFN_WDFIOQUEUESTOPSYNCHRONOUSLY) WdfFunctions_01033[WdfIoQueueStopSynchronouslyTableIndex])(WdfDriverGlobals, Queue);
+}
+
+
+
+
+typedef
+
+
+WDFDEVICE
+(__stdcall *PFN_WDFIOQUEUEGETDEVICE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFQUEUE Queue
+ );
+
+
+__forceinline
+WDFDEVICE
+WdfIoQueueGetDevice(
+
+ WDFQUEUE Queue
+ )
+{
+ return ((PFN_WDFIOQUEUEGETDEVICE) WdfFunctions_01033[WdfIoQueueGetDeviceTableIndex])(WdfDriverGlobals, Queue);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIOQUEUERETRIEVENEXTREQUEST)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFQUEUE Queue,
+
+ WDFREQUEST* OutRequest
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoQueueRetrieveNextRequest(
+
+ WDFQUEUE Queue,
+
+ WDFREQUEST* OutRequest
+ )
+{
+ return ((PFN_WDFIOQUEUERETRIEVENEXTREQUEST) WdfFunctions_01033[WdfIoQueueRetrieveNextRequestTableIndex])(WdfDriverGlobals, Queue, OutRequest);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIOQUEUERETRIEVEREQUESTBYFILEOBJECT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFQUEUE Queue,
+
+ WDFFILEOBJECT FileObject,
+
+ WDFREQUEST* OutRequest
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoQueueRetrieveRequestByFileObject(
+
+ WDFQUEUE Queue,
+
+ WDFFILEOBJECT FileObject,
+
+ WDFREQUEST* OutRequest
+ )
+{
+ return ((PFN_WDFIOQUEUERETRIEVEREQUESTBYFILEOBJECT) WdfFunctions_01033[WdfIoQueueRetrieveRequestByFileObjectTableIndex])(WdfDriverGlobals, Queue, FileObject, OutRequest);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIOQUEUEFINDREQUEST)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFQUEUE Queue,
+
+ WDFREQUEST FoundRequest,
+
+ WDFFILEOBJECT FileObject,
+
+ PWDF_REQUEST_PARAMETERS Parameters,
+
+ WDFREQUEST* OutRequest
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoQueueFindRequest(
+
+ WDFQUEUE Queue,
+
+ WDFREQUEST FoundRequest,
+
+ WDFFILEOBJECT FileObject,
+
+ PWDF_REQUEST_PARAMETERS Parameters,
+
+ WDFREQUEST* OutRequest
+ )
+{
+ return ((PFN_WDFIOQUEUEFINDREQUEST) WdfFunctions_01033[WdfIoQueueFindRequestTableIndex])(WdfDriverGlobals, Queue, FoundRequest, FileObject, Parameters, OutRequest);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIOQUEUERETRIEVEFOUNDREQUEST)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFQUEUE Queue,
+
+ WDFREQUEST FoundRequest,
+
+ WDFREQUEST* OutRequest
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoQueueRetrieveFoundRequest(
+
+ WDFQUEUE Queue,
+
+ WDFREQUEST FoundRequest,
+
+ WDFREQUEST* OutRequest
+ )
+{
+ return ((PFN_WDFIOQUEUERETRIEVEFOUNDREQUEST) WdfFunctions_01033[WdfIoQueueRetrieveFoundRequestTableIndex])(WdfDriverGlobals, Queue, FoundRequest, OutRequest);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFIOQUEUEDRAINSYNCHRONOUSLY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFQUEUE Queue
+ );
+
+
+__forceinline
+void
+WdfIoQueueDrainSynchronously(
+
+ WDFQUEUE Queue
+ )
+{
+ ((PFN_WDFIOQUEUEDRAINSYNCHRONOUSLY) WdfFunctions_01033[WdfIoQueueDrainSynchronouslyTableIndex])(WdfDriverGlobals, Queue);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFIOQUEUEDRAIN)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFQUEUE Queue,
+
+
+ PFN_WDF_IO_QUEUE_STATE DrainComplete,
+
+
+ WDFCONTEXT Context
+ );
+
+
+__forceinline
+void
+WdfIoQueueDrain(
+
+ WDFQUEUE Queue,
+
+
+ PFN_WDF_IO_QUEUE_STATE DrainComplete,
+
+
+ WDFCONTEXT Context
+ )
+{
+ ((PFN_WDFIOQUEUEDRAIN) WdfFunctions_01033[WdfIoQueueDrainTableIndex])(WdfDriverGlobals, Queue, DrainComplete, Context);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFIOQUEUEPURGESYNCHRONOUSLY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFQUEUE Queue
+ );
+
+
+__forceinline
+void
+WdfIoQueuePurgeSynchronously(
+
+ WDFQUEUE Queue
+ )
+{
+ ((PFN_WDFIOQUEUEPURGESYNCHRONOUSLY) WdfFunctions_01033[WdfIoQueuePurgeSynchronouslyTableIndex])(WdfDriverGlobals, Queue);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFIOQUEUEPURGE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFQUEUE Queue,
+
+
+ PFN_WDF_IO_QUEUE_STATE PurgeComplete,
+
+
+ WDFCONTEXT Context
+ );
+
+
+__forceinline
+void
+WdfIoQueuePurge(
+
+ WDFQUEUE Queue,
+
+
+ PFN_WDF_IO_QUEUE_STATE PurgeComplete,
+
+
+ WDFCONTEXT Context
+ )
+{
+ ((PFN_WDFIOQUEUEPURGE) WdfFunctions_01033[WdfIoQueuePurgeTableIndex])(WdfDriverGlobals, Queue, PurgeComplete, Context);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIOQUEUEREADYNOTIFY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFQUEUE Queue,
+
+ PFN_WDF_IO_QUEUE_STATE QueueReady,
+
+ WDFCONTEXT Context
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoQueueReadyNotify(
+
+ WDFQUEUE Queue,
+
+ PFN_WDF_IO_QUEUE_STATE QueueReady,
+
+ WDFCONTEXT Context
+ )
+{
+ return ((PFN_WDFIOQUEUEREADYNOTIFY) WdfFunctions_01033[WdfIoQueueReadyNotifyTableIndex])(WdfDriverGlobals, Queue, QueueReady, Context);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFIOQUEUEASSIGNFORWARDPROGRESSPOLICY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFQUEUE Queue,
+
+ PWDF_IO_QUEUE_FORWARD_PROGRESS_POLICY ForwardProgressPolicy
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfIoQueueAssignForwardProgressPolicy(
+
+ WDFQUEUE Queue,
+
+ PWDF_IO_QUEUE_FORWARD_PROGRESS_POLICY ForwardProgressPolicy
+ )
+{
+ return ((PFN_WDFIOQUEUEASSIGNFORWARDPROGRESSPOLICY) WdfFunctions_01033[WdfIoQueueAssignForwardProgressPolicyTableIndex])(WdfDriverGlobals, Queue, ForwardProgressPolicy);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFIOQUEUESTOPANDPURGE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFQUEUE Queue,
+
+
+ PFN_WDF_IO_QUEUE_STATE StopAndPurgeComplete,
+
+
+ WDFCONTEXT Context
+ );
+
+
+__forceinline
+void
+WdfIoQueueStopAndPurge(
+
+ WDFQUEUE Queue,
+
+
+ PFN_WDF_IO_QUEUE_STATE StopAndPurgeComplete,
+
+
+ WDFCONTEXT Context
+ )
+{
+ ((PFN_WDFIOQUEUESTOPANDPURGE) WdfFunctions_01033[WdfIoQueueStopAndPurgeTableIndex])(WdfDriverGlobals, Queue, StopAndPurgeComplete, Context);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFIOQUEUESTOPANDPURGESYNCHRONOUSLY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFQUEUE Queue
+ );
+
+
+__forceinline
+void
+WdfIoQueueStopAndPurgeSynchronously(
+
+ WDFQUEUE Queue
+ )
+{
+ ((PFN_WDFIOQUEUESTOPANDPURGESYNCHRONOUSLY) WdfFunctions_01033[WdfIoQueueStopAndPurgeSynchronouslyTableIndex])(WdfDriverGlobals, Queue);
+}
+
+
+
+#line 1189 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfio.h"
+
+
+
+
+#line 1194 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfio.h"
+
+#line 104 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdffdo.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_FILTER_RESOURCE_REQUIREMENTS(
+
+ WDFDEVICE Device,
+
+ WDFIORESREQLIST IoResourceRequirementsList
+ );
+
+typedef EVT_WDF_DEVICE_FILTER_RESOURCE_REQUIREMENTS *PFN_WDF_DEVICE_FILTER_RESOURCE_REQUIREMENTS;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_REMOVE_ADDED_RESOURCES(
+
+ WDFDEVICE Device,
+
+ WDFCMRESLIST ResourcesRaw,
+
+ WDFCMRESLIST ResourcesTranslated
+ );
+
+typedef EVT_WDF_DEVICE_REMOVE_ADDED_RESOURCES *PFN_WDF_DEVICE_REMOVE_ADDED_RESOURCES;
+
+typedef struct _WDF_FDO_EVENT_CALLBACKS {
+
+
+
+ ULONG Size;
+
+ PFN_WDF_DEVICE_FILTER_RESOURCE_REQUIREMENTS EvtDeviceFilterAddResourceRequirements;
+
+ PFN_WDF_DEVICE_FILTER_RESOURCE_REQUIREMENTS EvtDeviceFilterRemoveResourceRequirements;
+
+ PFN_WDF_DEVICE_REMOVE_ADDED_RESOURCES EvtDeviceRemoveAddedResources;
+
+} WDF_FDO_EVENT_CALLBACKS, *PWDF_FDO_EVENT_CALLBACKS;
+
+void
+__forceinline
+WDF_FDO_EVENT_CALLBACKS_INIT(
+ PWDF_FDO_EVENT_CALLBACKS Callbacks
+ )
+{
+ memset((Callbacks),0,(sizeof(WDF_FDO_EVENT_CALLBACKS)));
+ Callbacks->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_FDO_EVENT_CALLBACKS < WdfStructureCount) ? WdfStructures[INDEX_WDF_FDO_EVENT_CALLBACKS] : (size_t)(-1) ) : sizeof(WDF_FDO_EVENT_CALLBACKS) );
+}
+
+
+
+
+
+typedef
+
+
+PDEVICE_OBJECT
+(__stdcall *PFN_WDFFDOINITWDMGETPHYSICALDEVICE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit
+ );
+
+
+__forceinline
+PDEVICE_OBJECT
+WdfFdoInitWdmGetPhysicalDevice(
+
+ PWDFDEVICE_INIT DeviceInit
+ )
+{
+ return ((PFN_WDFFDOINITWDMGETPHYSICALDEVICE) WdfFunctions_01033[WdfFdoInitWdmGetPhysicalDeviceTableIndex])(WdfDriverGlobals, DeviceInit);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFFDOINITOPENREGISTRYKEY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ ULONG DeviceInstanceKeyType,
+
+ ACCESS_MASK DesiredAccess,
+
+ PWDF_OBJECT_ATTRIBUTES KeyAttributes,
+
+ WDFKEY* Key
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfFdoInitOpenRegistryKey(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ ULONG DeviceInstanceKeyType,
+
+ ACCESS_MASK DesiredAccess,
+
+ PWDF_OBJECT_ATTRIBUTES KeyAttributes,
+
+ WDFKEY* Key
+ )
+{
+ return ((PFN_WDFFDOINITOPENREGISTRYKEY) WdfFunctions_01033[WdfFdoInitOpenRegistryKeyTableIndex])(WdfDriverGlobals, DeviceInit, DeviceInstanceKeyType, DesiredAccess, KeyAttributes, Key);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFFDOINITQUERYPROPERTY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ DEVICE_REGISTRY_PROPERTY DeviceProperty,
+
+ ULONG BufferLength,
+
+ PVOID PropertyBuffer,
+
+ PULONG ResultLength
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfFdoInitQueryProperty(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ DEVICE_REGISTRY_PROPERTY DeviceProperty,
+
+ ULONG BufferLength,
+
+ PVOID PropertyBuffer,
+
+ PULONG ResultLength
+ )
+{
+ return ((PFN_WDFFDOINITQUERYPROPERTY) WdfFunctions_01033[WdfFdoInitQueryPropertyTableIndex])(WdfDriverGlobals, DeviceInit, DeviceProperty, BufferLength, PropertyBuffer, ResultLength);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFFDOINITALLOCANDQUERYPROPERTY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ DEVICE_REGISTRY_PROPERTY DeviceProperty,
+
+
+ POOL_TYPE PoolType,
+
+ PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
+
+ WDFMEMORY* PropertyMemory
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfFdoInitAllocAndQueryProperty(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ DEVICE_REGISTRY_PROPERTY DeviceProperty,
+
+
+ POOL_TYPE PoolType,
+
+ PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
+
+ WDFMEMORY* PropertyMemory
+ )
+{
+ return ((PFN_WDFFDOINITALLOCANDQUERYPROPERTY) WdfFunctions_01033[WdfFdoInitAllocAndQueryPropertyTableIndex])(WdfDriverGlobals, DeviceInit, DeviceProperty, PoolType, PropertyMemoryAttributes, PropertyMemory);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFFDOINITQUERYPROPERTYEX)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
+
+ ULONG BufferLength,
+
+ PVOID PropertyBuffer,
+
+ PULONG ResultLength,
+
+ PDEVPROPTYPE Type
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfFdoInitQueryPropertyEx(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
+
+ ULONG BufferLength,
+
+ PVOID PropertyBuffer,
+
+ PULONG ResultLength,
+
+ PDEVPROPTYPE Type
+ )
+{
+ return ((PFN_WDFFDOINITQUERYPROPERTYEX) WdfFunctions_01033[WdfFdoInitQueryPropertyExTableIndex])(WdfDriverGlobals, DeviceInit, DeviceProperty, BufferLength, PropertyBuffer, ResultLength, Type);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFFDOINITALLOCANDQUERYPROPERTYEX)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
+
+
+ POOL_TYPE PoolType,
+
+ PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
+
+ WDFMEMORY* PropertyMemory,
+
+ PDEVPROPTYPE Type
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfFdoInitAllocAndQueryPropertyEx(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
+
+
+ POOL_TYPE PoolType,
+
+ PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
+
+ WDFMEMORY* PropertyMemory,
+
+ PDEVPROPTYPE Type
+ )
+{
+ return ((PFN_WDFFDOINITALLOCANDQUERYPROPERTYEX) WdfFunctions_01033[WdfFdoInitAllocAndQueryPropertyExTableIndex])(WdfDriverGlobals, DeviceInit, DeviceProperty, PoolType, PropertyMemoryAttributes, PropertyMemory, Type);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFFDOINITSETEVENTCALLBACKS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PWDF_FDO_EVENT_CALLBACKS FdoEventCallbacks
+ );
+
+
+__forceinline
+void
+WdfFdoInitSetEventCallbacks(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PWDF_FDO_EVENT_CALLBACKS FdoEventCallbacks
+ )
+{
+ ((PFN_WDFFDOINITSETEVENTCALLBACKS) WdfFunctions_01033[WdfFdoInitSetEventCallbacksTableIndex])(WdfDriverGlobals, DeviceInit, FdoEventCallbacks);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFFDOINITSETFILTER)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit
+ );
+
+
+__forceinline
+void
+WdfFdoInitSetFilter(
+
+ PWDFDEVICE_INIT DeviceInit
+ )
+{
+ ((PFN_WDFFDOINITSETFILTER) WdfFunctions_01033[WdfFdoInitSetFilterTableIndex])(WdfDriverGlobals, DeviceInit);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFFDOINITSETDEFAULTCHILDLISTCONFIG)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PWDF_CHILD_LIST_CONFIG Config,
+
+ PWDF_OBJECT_ATTRIBUTES DefaultChildListAttributes
+ );
+
+
+__forceinline
+void
+WdfFdoInitSetDefaultChildListConfig(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PWDF_CHILD_LIST_CONFIG Config,
+
+ PWDF_OBJECT_ATTRIBUTES DefaultChildListAttributes
+ )
+{
+ ((PFN_WDFFDOINITSETDEFAULTCHILDLISTCONFIG) WdfFunctions_01033[WdfFdoInitSetDefaultChildListConfigTableIndex])(WdfDriverGlobals, DeviceInit, Config, DefaultChildListAttributes);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFFDOQUERYFORINTERFACE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Fdo,
+
+ LPCGUID InterfaceType,
+
+ PINTERFACE Interface,
+
+ USHORT Size,
+
+ USHORT Version,
+
+ PVOID InterfaceSpecificData
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfFdoQueryForInterface(
+
+ WDFDEVICE Fdo,
+
+ LPCGUID InterfaceType,
+
+ PINTERFACE Interface,
+
+ USHORT Size,
+
+ USHORT Version,
+
+ PVOID InterfaceSpecificData
+ )
+{
+ return ((PFN_WDFFDOQUERYFORINTERFACE) WdfFunctions_01033[WdfFdoQueryForInterfaceTableIndex])(WdfDriverGlobals, Fdo, InterfaceType, Interface, Size, Version, InterfaceSpecificData);
+}
+
+
+
+
+typedef
+
+
+WDFCHILDLIST
+(__stdcall *PFN_WDFFDOGETDEFAULTCHILDLIST)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Fdo
+ );
+
+
+__forceinline
+WDFCHILDLIST
+WdfFdoGetDefaultChildList(
+
+ WDFDEVICE Fdo
+ )
+{
+ return ((PFN_WDFFDOGETDEFAULTCHILDLIST) WdfFunctions_01033[WdfFdoGetDefaultChildListTableIndex])(WdfDriverGlobals, Fdo);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFFDOADDSTATICCHILD)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Fdo,
+
+ WDFDEVICE Child
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfFdoAddStaticChild(
+
+ WDFDEVICE Fdo,
+
+ WDFDEVICE Child
+ )
+{
+ return ((PFN_WDFFDOADDSTATICCHILD) WdfFunctions_01033[WdfFdoAddStaticChildTableIndex])(WdfDriverGlobals, Fdo, Child);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFFDOLOCKSTATICCHILDLISTFORITERATION)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Fdo
+ );
+
+
+__forceinline
+void
+WdfFdoLockStaticChildListForIteration(
+
+ WDFDEVICE Fdo
+ )
+{
+ ((PFN_WDFFDOLOCKSTATICCHILDLISTFORITERATION) WdfFunctions_01033[WdfFdoLockStaticChildListForIterationTableIndex])(WdfDriverGlobals, Fdo);
+}
+
+
+
+
+typedef
+
+
+
+WDFDEVICE
+(__stdcall *PFN_WDFFDORETRIEVENEXTSTATICCHILD)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Fdo,
+
+ WDFDEVICE PreviousChild,
+
+ ULONG Flags
+ );
+
+
+
+__forceinline
+WDFDEVICE
+WdfFdoRetrieveNextStaticChild(
+
+ WDFDEVICE Fdo,
+
+ WDFDEVICE PreviousChild,
+
+ ULONG Flags
+ )
+{
+ return ((PFN_WDFFDORETRIEVENEXTSTATICCHILD) WdfFunctions_01033[WdfFdoRetrieveNextStaticChildTableIndex])(WdfDriverGlobals, Fdo, PreviousChild, Flags);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFFDOUNLOCKSTATICCHILDLISTFROMITERATION)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Fdo
+ );
+
+
+__forceinline
+void
+WdfFdoUnlockStaticChildListFromIteration(
+
+ WDFDEVICE Fdo
+ )
+{
+ ((PFN_WDFFDOUNLOCKSTATICCHILDLISTFROMITERATION) WdfFunctions_01033[WdfFdoUnlockStaticChildListFromIterationTableIndex])(WdfDriverGlobals, Fdo);
+}
+
+
+
+#line 640 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdffdo.h"
+
+
+
+
+#line 645 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdffdo.h"
+
+#line 107 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfpdo.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_RESOURCES_QUERY(
+
+ WDFDEVICE Device,
+
+ WDFCMRESLIST Resources
+ );
+
+typedef EVT_WDF_DEVICE_RESOURCES_QUERY *PFN_WDF_DEVICE_RESOURCES_QUERY;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_RESOURCE_REQUIREMENTS_QUERY(
+
+ WDFDEVICE Device,
+
+ WDFIORESREQLIST IoResourceRequirementsList
+ );
+
+typedef EVT_WDF_DEVICE_RESOURCE_REQUIREMENTS_QUERY *PFN_WDF_DEVICE_RESOURCE_REQUIREMENTS_QUERY;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_EJECT(
+
+ WDFDEVICE Device
+ );
+
+typedef EVT_WDF_DEVICE_EJECT *PFN_WDF_DEVICE_EJECT;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_SET_LOCK(
+
+ WDFDEVICE Device,
+
+ BOOLEAN IsLocked
+ );
+
+typedef EVT_WDF_DEVICE_SET_LOCK *PFN_WDF_DEVICE_SET_LOCK;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DEVICE_ENABLE_WAKE_AT_BUS(
+
+ WDFDEVICE Device,
+
+ SYSTEM_POWER_STATE PowerState
+ );
+
+typedef EVT_WDF_DEVICE_ENABLE_WAKE_AT_BUS *PFN_WDF_DEVICE_ENABLE_WAKE_AT_BUS;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_DEVICE_DISABLE_WAKE_AT_BUS(
+
+ WDFDEVICE Device
+ );
+
+typedef EVT_WDF_DEVICE_DISABLE_WAKE_AT_BUS *PFN_WDF_DEVICE_DISABLE_WAKE_AT_BUS;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_DEVICE_REPORTED_MISSING(
+
+ WDFDEVICE Device
+ );
+
+typedef EVT_WDF_DEVICE_REPORTED_MISSING *PFN_WDF_DEVICE_REPORTED_MISSING;
+
+typedef struct _WDF_PDO_EVENT_CALLBACKS {
+
+
+
+ ULONG Size;
+
+
+
+
+ PFN_WDF_DEVICE_RESOURCES_QUERY EvtDeviceResourcesQuery;
+
+
+
+
+ PFN_WDF_DEVICE_RESOURCE_REQUIREMENTS_QUERY EvtDeviceResourceRequirementsQuery;
+
+
+
+
+ PFN_WDF_DEVICE_EJECT EvtDeviceEject;
+
+
+
+
+ PFN_WDF_DEVICE_SET_LOCK EvtDeviceSetLock;
+
+
+
+
+
+ PFN_WDF_DEVICE_ENABLE_WAKE_AT_BUS EvtDeviceEnableWakeAtBus;
+
+
+
+
+
+ PFN_WDF_DEVICE_DISABLE_WAKE_AT_BUS EvtDeviceDisableWakeAtBus;
+
+
+
+
+
+ PFN_WDF_DEVICE_REPORTED_MISSING EvtDeviceReportedMissing;
+
+} WDF_PDO_EVENT_CALLBACKS, *PWDF_PDO_EVENT_CALLBACKS;
+
+void
+__forceinline
+WDF_PDO_EVENT_CALLBACKS_INIT(
+ PWDF_PDO_EVENT_CALLBACKS Callbacks
+ )
+{
+ memset((Callbacks),0,(sizeof(WDF_PDO_EVENT_CALLBACKS)));
+ Callbacks->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_PDO_EVENT_CALLBACKS < WdfStructureCount) ? WdfStructures[INDEX_WDF_PDO_EVENT_CALLBACKS] : (size_t)(-1) ) : sizeof(WDF_PDO_EVENT_CALLBACKS) );
+}
+
+
+
+
+typedef
+
+
+
+PWDFDEVICE_INIT
+(__stdcall *PFN_WDFPDOINITALLOCATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE ParentDevice
+ );
+
+
+
+__forceinline
+PWDFDEVICE_INIT
+WdfPdoInitAllocate(
+
+ WDFDEVICE ParentDevice
+ )
+{
+ return ((PFN_WDFPDOINITALLOCATE) WdfFunctions_01033[WdfPdoInitAllocateTableIndex])(WdfDriverGlobals, ParentDevice);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFPDOINITSETEVENTCALLBACKS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PWDF_PDO_EVENT_CALLBACKS DispatchTable
+ );
+
+
+__forceinline
+void
+WdfPdoInitSetEventCallbacks(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PWDF_PDO_EVENT_CALLBACKS DispatchTable
+ )
+{
+ ((PFN_WDFPDOINITSETEVENTCALLBACKS) WdfFunctions_01033[WdfPdoInitSetEventCallbacksTableIndex])(WdfDriverGlobals, DeviceInit, DispatchTable);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFPDOINITASSIGNDEVICEID)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PCUNICODE_STRING DeviceID
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfPdoInitAssignDeviceID(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PCUNICODE_STRING DeviceID
+ )
+{
+ return ((PFN_WDFPDOINITASSIGNDEVICEID) WdfFunctions_01033[WdfPdoInitAssignDeviceIDTableIndex])(WdfDriverGlobals, DeviceInit, DeviceID);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFPDOINITASSIGNINSTANCEID)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PCUNICODE_STRING InstanceID
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfPdoInitAssignInstanceID(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PCUNICODE_STRING InstanceID
+ )
+{
+ return ((PFN_WDFPDOINITASSIGNINSTANCEID) WdfFunctions_01033[WdfPdoInitAssignInstanceIDTableIndex])(WdfDriverGlobals, DeviceInit, InstanceID);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFPDOINITADDHARDWAREID)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PCUNICODE_STRING HardwareID
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfPdoInitAddHardwareID(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PCUNICODE_STRING HardwareID
+ )
+{
+ return ((PFN_WDFPDOINITADDHARDWAREID) WdfFunctions_01033[WdfPdoInitAddHardwareIDTableIndex])(WdfDriverGlobals, DeviceInit, HardwareID);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFPDOINITADDCOMPATIBLEID)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PCUNICODE_STRING CompatibleID
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfPdoInitAddCompatibleID(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PCUNICODE_STRING CompatibleID
+ )
+{
+ return ((PFN_WDFPDOINITADDCOMPATIBLEID) WdfFunctions_01033[WdfPdoInitAddCompatibleIDTableIndex])(WdfDriverGlobals, DeviceInit, CompatibleID);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFPDOINITASSIGNCONTAINERID)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PCUNICODE_STRING ContainerID
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfPdoInitAssignContainerID(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PCUNICODE_STRING ContainerID
+ )
+{
+ return ((PFN_WDFPDOINITASSIGNCONTAINERID) WdfFunctions_01033[WdfPdoInitAssignContainerIDTableIndex])(WdfDriverGlobals, DeviceInit, ContainerID);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFPDOINITADDDEVICETEXT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PCUNICODE_STRING DeviceDescription,
+
+ PCUNICODE_STRING DeviceLocation,
+
+ LCID LocaleId
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfPdoInitAddDeviceText(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PCUNICODE_STRING DeviceDescription,
+
+ PCUNICODE_STRING DeviceLocation,
+
+ LCID LocaleId
+ )
+{
+ return ((PFN_WDFPDOINITADDDEVICETEXT) WdfFunctions_01033[WdfPdoInitAddDeviceTextTableIndex])(WdfDriverGlobals, DeviceInit, DeviceDescription, DeviceLocation, LocaleId);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFPDOINITSETDEFAULTLOCALE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ LCID LocaleId
+ );
+
+
+__forceinline
+void
+WdfPdoInitSetDefaultLocale(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ LCID LocaleId
+ )
+{
+ ((PFN_WDFPDOINITSETDEFAULTLOCALE) WdfFunctions_01033[WdfPdoInitSetDefaultLocaleTableIndex])(WdfDriverGlobals, DeviceInit, LocaleId);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFPDOINITASSIGNRAWDEVICE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ const GUID* DeviceClassGuid
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfPdoInitAssignRawDevice(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ const GUID* DeviceClassGuid
+ )
+{
+ return ((PFN_WDFPDOINITASSIGNRAWDEVICE) WdfFunctions_01033[WdfPdoInitAssignRawDeviceTableIndex])(WdfDriverGlobals, DeviceInit, DeviceClassGuid);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFPDOINITALLOWFORWARDINGREQUESTTOPARENT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit
+ );
+
+
+__forceinline
+void
+WdfPdoInitAllowForwardingRequestToParent(
+
+ PWDFDEVICE_INIT DeviceInit
+ )
+{
+ ((PFN_WDFPDOINITALLOWFORWARDINGREQUESTTOPARENT) WdfFunctions_01033[WdfPdoInitAllowForwardingRequestToParentTableIndex])(WdfDriverGlobals, DeviceInit);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFPDOMARKMISSING)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfPdoMarkMissing(
+
+ WDFDEVICE Device
+ )
+{
+ return ((PFN_WDFPDOMARKMISSING) WdfFunctions_01033[WdfPdoMarkMissingTableIndex])(WdfDriverGlobals, Device);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFPDOREQUESTEJECT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device
+ );
+
+
+__forceinline
+void
+WdfPdoRequestEject(
+
+ WDFDEVICE Device
+ )
+{
+ ((PFN_WDFPDOREQUESTEJECT) WdfFunctions_01033[WdfPdoRequestEjectTableIndex])(WdfDriverGlobals, Device);
+}
+
+
+
+
+typedef
+
+
+WDFDEVICE
+(__stdcall *PFN_WDFPDOGETPARENT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device
+ );
+
+
+__forceinline
+WDFDEVICE
+WdfPdoGetParent(
+
+ WDFDEVICE Device
+ )
+{
+ return ((PFN_WDFPDOGETPARENT) WdfFunctions_01033[WdfPdoGetParentTableIndex])(WdfDriverGlobals, Device);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFPDORETRIEVEIDENTIFICATIONDESCRIPTION)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfPdoRetrieveIdentificationDescription(
+
+ WDFDEVICE Device,
+
+ PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription
+ )
+{
+ return ((PFN_WDFPDORETRIEVEIDENTIFICATIONDESCRIPTION) WdfFunctions_01033[WdfPdoRetrieveIdentificationDescriptionTableIndex])(WdfDriverGlobals, Device, IdentificationDescription);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFPDORETRIEVEADDRESSDESCRIPTION)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfPdoRetrieveAddressDescription(
+
+ WDFDEVICE Device,
+
+ PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription
+ )
+{
+ return ((PFN_WDFPDORETRIEVEADDRESSDESCRIPTION) WdfFunctions_01033[WdfPdoRetrieveAddressDescriptionTableIndex])(WdfDriverGlobals, Device, AddressDescription);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFPDOUPDATEADDRESSDESCRIPTION)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfPdoUpdateAddressDescription(
+
+ WDFDEVICE Device,
+
+ PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription
+ )
+{
+ return ((PFN_WDFPDOUPDATEADDRESSDESCRIPTION) WdfFunctions_01033[WdfPdoUpdateAddressDescriptionTableIndex])(WdfDriverGlobals, Device, AddressDescription);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFPDOADDEJECTIONRELATIONSPHYSICALDEVICE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PDEVICE_OBJECT PhysicalDevice
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfPdoAddEjectionRelationsPhysicalDevice(
+
+ WDFDEVICE Device,
+
+ PDEVICE_OBJECT PhysicalDevice
+ )
+{
+ return ((PFN_WDFPDOADDEJECTIONRELATIONSPHYSICALDEVICE) WdfFunctions_01033[WdfPdoAddEjectionRelationsPhysicalDeviceTableIndex])(WdfDriverGlobals, Device, PhysicalDevice);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFPDOREMOVEEJECTIONRELATIONSPHYSICALDEVICE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PDEVICE_OBJECT PhysicalDevice
+ );
+
+
+__forceinline
+void
+WdfPdoRemoveEjectionRelationsPhysicalDevice(
+
+ WDFDEVICE Device,
+
+ PDEVICE_OBJECT PhysicalDevice
+ )
+{
+ ((PFN_WDFPDOREMOVEEJECTIONRELATIONSPHYSICALDEVICE) WdfFunctions_01033[WdfPdoRemoveEjectionRelationsPhysicalDeviceTableIndex])(WdfDriverGlobals, Device, PhysicalDevice);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFPDOCLEAREJECTIONRELATIONSDEVICES)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device
+ );
+
+
+__forceinline
+void
+WdfPdoClearEjectionRelationsDevices(
+
+ WDFDEVICE Device
+ )
+{
+ ((PFN_WDFPDOCLEAREJECTIONRELATIONSDEVICES) WdfFunctions_01033[WdfPdoClearEjectionRelationsDevicesTableIndex])(WdfDriverGlobals, Device);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFPDOINITREMOVEPOWERDEPENDENCYONPARENT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit
+ );
+
+
+__forceinline
+void
+WdfPdoInitRemovePowerDependencyOnParent(
+
+ PWDFDEVICE_INIT DeviceInit
+ )
+{
+
+
+#line 822 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfpdo.h"
+ if (( (WdfPdoInitRemovePowerDependencyOnParentTableIndex < 453) || (!WdfClientVersionHigherThanFramework) || (WdfPdoInitRemovePowerDependencyOnParentTableIndex < WdfFunctionCount) )) {
+ ((PFN_WDFPDOINITREMOVEPOWERDEPENDENCYONPARENT) WdfFunctions_01033[WdfPdoInitRemovePowerDependencyOnParentTableIndex])(WdfDriverGlobals, DeviceInit);
+ }
+ else {
+ ((PFN_WDFDRIVERERRORREPORTAPIMISSING) WdfFunctions_01033[WdfDriverErrorReportApiMissingTableIndex])(WdfDriverGlobals, WdfGetDriver(), ((void *)0), WdfPdoInitRemovePowerDependencyOnParentTableIndex, 0);
+ }
+#line 829 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfpdo.h"
+}
+
+
+
+#line 834 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfpdo.h"
+
+
+
+
+
+#line 840 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfpdo.h"
+
+#line 108 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfcontrol.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_DEVICE_SHUTDOWN_NOTIFICATION(
+
+ WDFDEVICE Device
+ );
+
+typedef EVT_WDF_DEVICE_SHUTDOWN_NOTIFICATION *PFN_WDF_DEVICE_SHUTDOWN_NOTIFICATION;
+
+typedef enum _WDF_DEVICE_SHUTDOWN_FLAGS {
+ WdfDeviceShutdown = 0x01,
+ WdfDeviceLastChanceShutdown = 0x02,
+} WDF_DEVICE_SHUTDOWN_FLAGS;
+
+
+
+
+
+
+typedef
+
+
+
+PWDFDEVICE_INIT
+(__stdcall *PFN_WDFCONTROLDEVICEINITALLOCATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDRIVER Driver,
+
+ const UNICODE_STRING* SDDLString
+ );
+
+
+
+__forceinline
+PWDFDEVICE_INIT
+WdfControlDeviceInitAllocate(
+
+ WDFDRIVER Driver,
+
+ const UNICODE_STRING* SDDLString
+ )
+{
+ return ((PFN_WDFCONTROLDEVICEINITALLOCATE) WdfFunctions_01033[WdfControlDeviceInitAllocateTableIndex])(WdfDriverGlobals, Driver, SDDLString);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFCONTROLDEVICEINITSETSHUTDOWNNOTIFICATION)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PFN_WDF_DEVICE_SHUTDOWN_NOTIFICATION Notification,
+
+ UCHAR Flags
+ );
+
+
+__forceinline
+void
+WdfControlDeviceInitSetShutdownNotification(
+
+ PWDFDEVICE_INIT DeviceInit,
+
+ PFN_WDF_DEVICE_SHUTDOWN_NOTIFICATION Notification,
+
+ UCHAR Flags
+ )
+{
+ ((PFN_WDFCONTROLDEVICEINITSETSHUTDOWNNOTIFICATION) WdfFunctions_01033[WdfControlDeviceInitSetShutdownNotificationTableIndex])(WdfDriverGlobals, DeviceInit, Notification, Flags);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFCONTROLFINISHINITIALIZING)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device
+ );
+
+
+__forceinline
+void
+WdfControlFinishInitializing(
+
+ WDFDEVICE Device
+ )
+{
+ ((PFN_WDFCONTROLFINISHINITIALIZING) WdfFunctions_01033[WdfControlFinishInitializingTableIndex])(WdfDriverGlobals, Device);
+}
+
+
+
+#line 163 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfcontrol.h"
+
+
+
+
+
+#line 169 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfcontrol.h"
+
+#line 109 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\WdfWMI.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _WDF_WMI_PROVIDER_CONTROL {
+ WdfWmiControlInvalid = 0,
+ WdfWmiEventControl,
+ WdfWmiInstanceControl,
+} WDF_WMI_PROVIDER_CONTROL;
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _WDF_WMI_PROVIDER_FLAGS {
+ WdfWmiProviderEventOnly = 0x0001,
+ WdfWmiProviderExpensive = 0x0002,
+ WdfWmiProviderTracing = 0x0004,
+ WdfWmiProviderValidFlags = WdfWmiProviderEventOnly | WdfWmiProviderExpensive | WdfWmiProviderTracing,
+} WDF_WMI_PROVIDER_FLAGS;
+
+
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_WMI_INSTANCE_QUERY_INSTANCE(
+
+ WDFWMIINSTANCE WmiInstance,
+
+ ULONG OutBufferSize,
+
+ PVOID OutBuffer,
+
+ PULONG BufferUsed
+ );
+
+typedef EVT_WDF_WMI_INSTANCE_QUERY_INSTANCE *PFN_WDF_WMI_INSTANCE_QUERY_INSTANCE;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_WMI_INSTANCE_SET_INSTANCE(
+
+ WDFWMIINSTANCE WmiInstance,
+
+ ULONG InBufferSize,
+
+ PVOID InBuffer
+ );
+
+typedef EVT_WDF_WMI_INSTANCE_SET_INSTANCE *PFN_WDF_WMI_INSTANCE_SET_INSTANCE;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_WMI_INSTANCE_SET_ITEM(
+
+ WDFWMIINSTANCE WmiInstance,
+
+ ULONG DataItemId,
+
+ ULONG InBufferSize,
+
+ PVOID InBuffer
+ );
+
+typedef EVT_WDF_WMI_INSTANCE_SET_ITEM *PFN_WDF_WMI_INSTANCE_SET_ITEM;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_WMI_INSTANCE_EXECUTE_METHOD(
+
+ WDFWMIINSTANCE WmiInstance,
+
+ ULONG MethodId,
+
+ ULONG InBufferSize,
+
+ ULONG OutBufferSize,
+
+
+ PVOID Buffer,
+
+ PULONG BufferUsed
+ );
+
+typedef EVT_WDF_WMI_INSTANCE_EXECUTE_METHOD *PFN_WDF_WMI_INSTANCE_EXECUTE_METHOD;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_WMI_PROVIDER_FUNCTION_CONTROL(
+
+ WDFWMIPROVIDER WmiProvider,
+
+ WDF_WMI_PROVIDER_CONTROL Control,
+
+ BOOLEAN Enable
+ );
+
+typedef EVT_WDF_WMI_PROVIDER_FUNCTION_CONTROL *PFN_WDF_WMI_PROVIDER_FUNCTION_CONTROL;
+
+typedef struct _WDF_WMI_PROVIDER_CONFIG {
+
+
+
+ ULONG Size;
+
+
+
+
+ GUID Guid;
+
+
+
+
+ ULONG Flags;
+
+
+
+
+
+ ULONG MinInstanceBufferSize;
+
+
+
+
+
+ PFN_WDF_WMI_PROVIDER_FUNCTION_CONTROL EvtWmiProviderFunctionControl;
+
+} WDF_WMI_PROVIDER_CONFIG, *PWDF_WMI_PROVIDER_CONFIG;
+
+void
+__forceinline
+WDF_WMI_PROVIDER_CONFIG_INIT(
+ PWDF_WMI_PROVIDER_CONFIG Config,
+ const GUID* Guid
+ )
+{
+ memset((Config),0,(sizeof(WDF_WMI_PROVIDER_CONFIG)));
+
+ Config->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_WMI_PROVIDER_CONFIG < WdfStructureCount) ? WdfStructures[INDEX_WDF_WMI_PROVIDER_CONFIG] : (size_t)(-1) ) : sizeof(WDF_WMI_PROVIDER_CONFIG) );
+ memcpy((&Config->Guid),(Guid),(sizeof(GUID)));
+}
+
+typedef struct _WDF_WMI_INSTANCE_CONFIG {
+
+
+
+ ULONG Size;
+
+
+
+
+
+ WDFWMIPROVIDER Provider;
+
+
+
+
+
+
+ PWDF_WMI_PROVIDER_CONFIG ProviderConfig;
+
+
+
+
+
+
+
+ BOOLEAN UseContextForQuery;
+
+
+
+
+ BOOLEAN Register;
+
+
+
+
+ PFN_WDF_WMI_INSTANCE_QUERY_INSTANCE EvtWmiInstanceQueryInstance;
+
+
+
+
+ PFN_WDF_WMI_INSTANCE_SET_INSTANCE EvtWmiInstanceSetInstance;
+
+
+
+
+ PFN_WDF_WMI_INSTANCE_SET_ITEM EvtWmiInstanceSetItem;
+
+
+
+
+ PFN_WDF_WMI_INSTANCE_EXECUTE_METHOD EvtWmiInstanceExecuteMethod;
+
+} WDF_WMI_INSTANCE_CONFIG, *PWDF_WMI_INSTANCE_CONFIG;
+
+
+void
+__forceinline
+WDF_WMI_INSTANCE_CONFIG_INIT_PROVIDER(
+ PWDF_WMI_INSTANCE_CONFIG Config,
+ WDFWMIPROVIDER Provider
+ )
+{
+ memset((Config),0,(sizeof(WDF_WMI_INSTANCE_CONFIG)));
+ Config->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_WMI_INSTANCE_CONFIG < WdfStructureCount) ? WdfStructures[INDEX_WDF_WMI_INSTANCE_CONFIG] : (size_t)(-1) ) : sizeof(WDF_WMI_INSTANCE_CONFIG) );
+
+ Config->Provider = Provider;
+}
+
+void
+__forceinline
+WDF_WMI_INSTANCE_CONFIG_INIT_PROVIDER_CONFIG(
+ PWDF_WMI_INSTANCE_CONFIG Config,
+ PWDF_WMI_PROVIDER_CONFIG ProviderConfig
+ )
+{
+ memset((Config),0,(sizeof(WDF_WMI_INSTANCE_CONFIG)));
+ Config->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_WMI_INSTANCE_CONFIG < WdfStructureCount) ? WdfStructures[INDEX_WDF_WMI_INSTANCE_CONFIG] : (size_t)(-1) ) : sizeof(WDF_WMI_INSTANCE_CONFIG) );
+
+ Config->ProviderConfig = ProviderConfig;
+}
+
+NTSTATUS
+__forceinline
+WDF_WMI_BUFFER_APPEND_STRING(
+ PVOID Buffer,
+ ULONG BufferLength,
+ PCUNICODE_STRING String,
+ PULONG RequiredSize
+ )
+{
+
+
+
+
+
+ *RequiredSize = String->Length + sizeof(USHORT);
+
+
+
+
+
+
+
+
+
+ if (BufferLength < (String->Length + sizeof(USHORT))) {
+
+
+
+
+ return ((NTSTATUS)0xC0000023L);
+ }
+
+
+
+
+ *(USHORT *) Buffer = String->Length;
+
+
+
+
+ memcpy((((PVOID) (((PUCHAR) (Buffer)) + (sizeof(USHORT))))),(String->Buffer),(String->Length));
+#line 340 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\WdfWMI.h"
+
+ return ((NTSTATUS)0x00000000L);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFWMIPROVIDERCREATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PWDF_WMI_PROVIDER_CONFIG WmiProviderConfig,
+
+ PWDF_OBJECT_ATTRIBUTES ProviderAttributes,
+
+ WDFWMIPROVIDER* WmiProvider
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfWmiProviderCreate(
+
+ WDFDEVICE Device,
+
+ PWDF_WMI_PROVIDER_CONFIG WmiProviderConfig,
+
+ PWDF_OBJECT_ATTRIBUTES ProviderAttributes,
+
+ WDFWMIPROVIDER* WmiProvider
+ )
+{
+ return ((PFN_WDFWMIPROVIDERCREATE) WdfFunctions_01033[WdfWmiProviderCreateTableIndex])(WdfDriverGlobals, Device, WmiProviderConfig, ProviderAttributes, WmiProvider);
+}
+
+
+
+
+typedef
+
+
+WDFDEVICE
+(__stdcall *PFN_WDFWMIPROVIDERGETDEVICE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFWMIPROVIDER WmiProvider
+ );
+
+
+__forceinline
+WDFDEVICE
+WdfWmiProviderGetDevice(
+
+ WDFWMIPROVIDER WmiProvider
+ )
+{
+ return ((PFN_WDFWMIPROVIDERGETDEVICE) WdfFunctions_01033[WdfWmiProviderGetDeviceTableIndex])(WdfDriverGlobals, WmiProvider);
+}
+
+
+
+
+typedef
+
+
+BOOLEAN
+(__stdcall *PFN_WDFWMIPROVIDERISENABLED)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFWMIPROVIDER WmiProvider,
+
+ WDF_WMI_PROVIDER_CONTROL ProviderControl
+ );
+
+
+__forceinline
+BOOLEAN
+WdfWmiProviderIsEnabled(
+
+ WDFWMIPROVIDER WmiProvider,
+
+ WDF_WMI_PROVIDER_CONTROL ProviderControl
+ )
+{
+ return ((PFN_WDFWMIPROVIDERISENABLED) WdfFunctions_01033[WdfWmiProviderIsEnabledTableIndex])(WdfDriverGlobals, WmiProvider, ProviderControl);
+}
+
+
+
+
+typedef
+
+
+ULONGLONG
+(__stdcall *PFN_WDFWMIPROVIDERGETTRACINGHANDLE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFWMIPROVIDER WmiProvider
+ );
+
+
+__forceinline
+ULONGLONG
+WdfWmiProviderGetTracingHandle(
+
+ WDFWMIPROVIDER WmiProvider
+ )
+{
+ return ((PFN_WDFWMIPROVIDERGETTRACINGHANDLE) WdfFunctions_01033[WdfWmiProviderGetTracingHandleTableIndex])(WdfDriverGlobals, WmiProvider);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFWMIINSTANCECREATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PWDF_WMI_INSTANCE_CONFIG InstanceConfig,
+
+ PWDF_OBJECT_ATTRIBUTES InstanceAttributes,
+
+ WDFWMIINSTANCE* Instance
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfWmiInstanceCreate(
+
+ WDFDEVICE Device,
+
+ PWDF_WMI_INSTANCE_CONFIG InstanceConfig,
+
+ PWDF_OBJECT_ATTRIBUTES InstanceAttributes,
+
+ WDFWMIINSTANCE* Instance
+ )
+{
+ return ((PFN_WDFWMIINSTANCECREATE) WdfFunctions_01033[WdfWmiInstanceCreateTableIndex])(WdfDriverGlobals, Device, InstanceConfig, InstanceAttributes, Instance);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFWMIINSTANCEREGISTER)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFWMIINSTANCE WmiInstance
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfWmiInstanceRegister(
+
+ WDFWMIINSTANCE WmiInstance
+ )
+{
+ return ((PFN_WDFWMIINSTANCEREGISTER) WdfFunctions_01033[WdfWmiInstanceRegisterTableIndex])(WdfDriverGlobals, WmiInstance);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFWMIINSTANCEDEREGISTER)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFWMIINSTANCE WmiInstance
+ );
+
+
+__forceinline
+void
+WdfWmiInstanceDeregister(
+
+ WDFWMIINSTANCE WmiInstance
+ )
+{
+ ((PFN_WDFWMIINSTANCEDEREGISTER) WdfFunctions_01033[WdfWmiInstanceDeregisterTableIndex])(WdfDriverGlobals, WmiInstance);
+}
+
+
+
+
+typedef
+
+
+WDFDEVICE
+(__stdcall *PFN_WDFWMIINSTANCEGETDEVICE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFWMIINSTANCE WmiInstance
+ );
+
+
+__forceinline
+WDFDEVICE
+WdfWmiInstanceGetDevice(
+
+ WDFWMIINSTANCE WmiInstance
+ )
+{
+ return ((PFN_WDFWMIINSTANCEGETDEVICE) WdfFunctions_01033[WdfWmiInstanceGetDeviceTableIndex])(WdfDriverGlobals, WmiInstance);
+}
+
+
+
+
+typedef
+
+
+WDFWMIPROVIDER
+(__stdcall *PFN_WDFWMIINSTANCEGETPROVIDER)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFWMIINSTANCE WmiInstance
+ );
+
+
+__forceinline
+WDFWMIPROVIDER
+WdfWmiInstanceGetProvider(
+
+ WDFWMIINSTANCE WmiInstance
+ )
+{
+ return ((PFN_WDFWMIINSTANCEGETPROVIDER) WdfFunctions_01033[WdfWmiInstanceGetProviderTableIndex])(WdfDriverGlobals, WmiInstance);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFWMIINSTANCEFIREEVENT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFWMIINSTANCE WmiInstance,
+
+ ULONG EventDataSize,
+
+ PVOID EventData
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfWmiInstanceFireEvent(
+
+ WDFWMIINSTANCE WmiInstance,
+
+ ULONG EventDataSize,
+
+ PVOID EventData
+ )
+{
+ return ((PFN_WDFWMIINSTANCEFIREEVENT) WdfFunctions_01033[WdfWmiInstanceFireEventTableIndex])(WdfDriverGlobals, WmiInstance, EventDataSize, EventData);
+}
+
+
+
+#line 641 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\WdfWMI.h"
+
+
+
+
+
+#line 647 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\WdfWMI.h"
+
+#line 111 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfstring.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFSTRINGCREATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ PCUNICODE_STRING UnicodeString,
+
+ PWDF_OBJECT_ATTRIBUTES StringAttributes,
+
+ WDFSTRING* String
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfStringCreate(
+
+ PCUNICODE_STRING UnicodeString,
+
+ PWDF_OBJECT_ATTRIBUTES StringAttributes,
+
+ WDFSTRING* String
+ )
+{
+ return ((PFN_WDFSTRINGCREATE) WdfFunctions_01033[WdfStringCreateTableIndex])(WdfDriverGlobals, UnicodeString, StringAttributes, String);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFSTRINGGETUNICODESTRING)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFSTRING String,
+
+ PUNICODE_STRING UnicodeString
+ );
+
+
+__forceinline
+void
+WdfStringGetUnicodeString(
+
+ WDFSTRING String,
+
+ PUNICODE_STRING UnicodeString
+ )
+{
+ ((PFN_WDFSTRINGGETUNICODESTRING) WdfFunctions_01033[WdfStringGetUnicodeStringTableIndex])(WdfDriverGlobals, String, UnicodeString);
+}
+
+
+
+#line 119 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfstring.h"
+
+
+
+
+#line 124 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfstring.h"
+
+#line 113 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfregistry.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREGISTRYOPENKEY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFKEY ParentKey,
+
+ PCUNICODE_STRING KeyName,
+
+ ACCESS_MASK DesiredAccess,
+
+ PWDF_OBJECT_ATTRIBUTES KeyAttributes,
+
+ WDFKEY* Key
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRegistryOpenKey(
+
+ WDFKEY ParentKey,
+
+ PCUNICODE_STRING KeyName,
+
+ ACCESS_MASK DesiredAccess,
+
+ PWDF_OBJECT_ATTRIBUTES KeyAttributes,
+
+ WDFKEY* Key
+ )
+{
+ return ((PFN_WDFREGISTRYOPENKEY) WdfFunctions_01033[WdfRegistryOpenKeyTableIndex])(WdfDriverGlobals, ParentKey, KeyName, DesiredAccess, KeyAttributes, Key);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREGISTRYCREATEKEY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFKEY ParentKey,
+
+ PCUNICODE_STRING KeyName,
+
+ ACCESS_MASK DesiredAccess,
+
+ ULONG CreateOptions,
+
+ PULONG CreateDisposition,
+
+ PWDF_OBJECT_ATTRIBUTES KeyAttributes,
+
+ WDFKEY* Key
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRegistryCreateKey(
+
+ WDFKEY ParentKey,
+
+ PCUNICODE_STRING KeyName,
+
+ ACCESS_MASK DesiredAccess,
+
+ ULONG CreateOptions,
+
+ PULONG CreateDisposition,
+
+ PWDF_OBJECT_ATTRIBUTES KeyAttributes,
+
+ WDFKEY* Key
+ )
+{
+ return ((PFN_WDFREGISTRYCREATEKEY) WdfFunctions_01033[WdfRegistryCreateKeyTableIndex])(WdfDriverGlobals, ParentKey, KeyName, DesiredAccess, CreateOptions, CreateDisposition, KeyAttributes, Key);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFREGISTRYCLOSE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFKEY Key
+ );
+
+
+__forceinline
+void
+WdfRegistryClose(
+
+ WDFKEY Key
+ )
+{
+ ((PFN_WDFREGISTRYCLOSE) WdfFunctions_01033[WdfRegistryCloseTableIndex])(WdfDriverGlobals, Key);
+}
+
+
+
+
+typedef
+
+
+HANDLE
+(__stdcall *PFN_WDFREGISTRYWDMGETHANDLE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFKEY Key
+ );
+
+
+__forceinline
+HANDLE
+WdfRegistryWdmGetHandle(
+
+ WDFKEY Key
+ )
+{
+ return ((PFN_WDFREGISTRYWDMGETHANDLE) WdfFunctions_01033[WdfRegistryWdmGetHandleTableIndex])(WdfDriverGlobals, Key);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREGISTRYREMOVEKEY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFKEY Key
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRegistryRemoveKey(
+
+ WDFKEY Key
+ )
+{
+ return ((PFN_WDFREGISTRYREMOVEKEY) WdfFunctions_01033[WdfRegistryRemoveKeyTableIndex])(WdfDriverGlobals, Key);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREGISTRYREMOVEVALUE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRegistryRemoveValue(
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName
+ )
+{
+ return ((PFN_WDFREGISTRYREMOVEVALUE) WdfFunctions_01033[WdfRegistryRemoveValueTableIndex])(WdfDriverGlobals, Key, ValueName);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREGISTRYQUERYVALUE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+ ULONG ValueLength,
+
+ PVOID Value,
+
+ PULONG ValueLengthQueried,
+
+ PULONG ValueType
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRegistryQueryValue(
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+ ULONG ValueLength,
+
+ PVOID Value,
+
+ PULONG ValueLengthQueried,
+
+ PULONG ValueType
+ )
+{
+ return ((PFN_WDFREGISTRYQUERYVALUE) WdfFunctions_01033[WdfRegistryQueryValueTableIndex])(WdfDriverGlobals, Key, ValueName, ValueLength, Value, ValueLengthQueried, ValueType);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREGISTRYQUERYMEMORY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+
+ POOL_TYPE PoolType,
+
+ PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
+
+ WDFMEMORY* Memory,
+
+ PULONG ValueType
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRegistryQueryMemory(
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+
+ POOL_TYPE PoolType,
+
+ PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
+
+ WDFMEMORY* Memory,
+
+ PULONG ValueType
+ )
+{
+ return ((PFN_WDFREGISTRYQUERYMEMORY) WdfFunctions_01033[WdfRegistryQueryMemoryTableIndex])(WdfDriverGlobals, Key, ValueName, PoolType, MemoryAttributes, Memory, ValueType);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREGISTRYQUERYMULTISTRING)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+ PWDF_OBJECT_ATTRIBUTES StringsAttributes,
+
+ WDFCOLLECTION Collection
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRegistryQueryMultiString(
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+ PWDF_OBJECT_ATTRIBUTES StringsAttributes,
+
+ WDFCOLLECTION Collection
+ )
+{
+ return ((PFN_WDFREGISTRYQUERYMULTISTRING) WdfFunctions_01033[WdfRegistryQueryMultiStringTableIndex])(WdfDriverGlobals, Key, ValueName, StringsAttributes, Collection);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREGISTRYQUERYUNICODESTRING)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+ PUSHORT ValueByteLength,
+
+ PUNICODE_STRING Value
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRegistryQueryUnicodeString(
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+ PUSHORT ValueByteLength,
+
+ PUNICODE_STRING Value
+ )
+{
+ return ((PFN_WDFREGISTRYQUERYUNICODESTRING) WdfFunctions_01033[WdfRegistryQueryUnicodeStringTableIndex])(WdfDriverGlobals, Key, ValueName, ValueByteLength, Value);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREGISTRYQUERYSTRING)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+ WDFSTRING String
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRegistryQueryString(
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+ WDFSTRING String
+ )
+{
+ return ((PFN_WDFREGISTRYQUERYSTRING) WdfFunctions_01033[WdfRegistryQueryStringTableIndex])(WdfDriverGlobals, Key, ValueName, String);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREGISTRYQUERYULONG)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+ PULONG Value
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRegistryQueryULong(
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+ PULONG Value
+ )
+{
+ return ((PFN_WDFREGISTRYQUERYULONG) WdfFunctions_01033[WdfRegistryQueryULongTableIndex])(WdfDriverGlobals, Key, ValueName, Value);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREGISTRYASSIGNVALUE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+ ULONG ValueType,
+
+ ULONG ValueLength,
+
+ PVOID Value
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRegistryAssignValue(
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+ ULONG ValueType,
+
+ ULONG ValueLength,
+
+ PVOID Value
+ )
+{
+ return ((PFN_WDFREGISTRYASSIGNVALUE) WdfFunctions_01033[WdfRegistryAssignValueTableIndex])(WdfDriverGlobals, Key, ValueName, ValueType, ValueLength, Value);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREGISTRYASSIGNMEMORY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+ ULONG ValueType,
+
+ WDFMEMORY Memory,
+
+ PWDFMEMORY_OFFSET MemoryOffsets
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRegistryAssignMemory(
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+ ULONG ValueType,
+
+ WDFMEMORY Memory,
+
+ PWDFMEMORY_OFFSET MemoryOffsets
+ )
+{
+ return ((PFN_WDFREGISTRYASSIGNMEMORY) WdfFunctions_01033[WdfRegistryAssignMemoryTableIndex])(WdfDriverGlobals, Key, ValueName, ValueType, Memory, MemoryOffsets);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREGISTRYASSIGNMULTISTRING)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+ WDFCOLLECTION StringsCollection
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRegistryAssignMultiString(
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+ WDFCOLLECTION StringsCollection
+ )
+{
+ return ((PFN_WDFREGISTRYASSIGNMULTISTRING) WdfFunctions_01033[WdfRegistryAssignMultiStringTableIndex])(WdfDriverGlobals, Key, ValueName, StringsCollection);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREGISTRYASSIGNUNICODESTRING)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+ PCUNICODE_STRING Value
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRegistryAssignUnicodeString(
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+ PCUNICODE_STRING Value
+ )
+{
+ return ((PFN_WDFREGISTRYASSIGNUNICODESTRING) WdfFunctions_01033[WdfRegistryAssignUnicodeStringTableIndex])(WdfDriverGlobals, Key, ValueName, Value);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREGISTRYASSIGNSTRING)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+ WDFSTRING String
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRegistryAssignString(
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+ WDFSTRING String
+ )
+{
+ return ((PFN_WDFREGISTRYASSIGNSTRING) WdfFunctions_01033[WdfRegistryAssignStringTableIndex])(WdfDriverGlobals, Key, ValueName, String);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFREGISTRYASSIGNULONG)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+ ULONG Value
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfRegistryAssignULong(
+
+ WDFKEY Key,
+
+ PCUNICODE_STRING ValueName,
+
+ ULONG Value
+ )
+{
+ return ((PFN_WDFREGISTRYASSIGNULONG) WdfFunctions_01033[WdfRegistryAssignULongTableIndex])(WdfDriverGlobals, Key, ValueName, Value);
+}
+
+
+
+#line 732 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfregistry.h"
+
+
+
+
+#line 737 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfregistry.h"
+
+#line 114 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfDmaEnabler.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _WDF_DMA_PROFILE {
+ WdfDmaProfileInvalid = 0,
+ WdfDmaProfilePacket,
+ WdfDmaProfileScatterGather,
+ WdfDmaProfilePacket64,
+ WdfDmaProfileScatterGather64,
+ WdfDmaProfileScatterGatherDuplex,
+ WdfDmaProfileScatterGather64Duplex,
+ WdfDmaProfileSystem,
+ WdfDmaProfileSystemDuplex,
+} WDF_DMA_PROFILE;
+
+typedef enum _WDF_DMA_DIRECTION {
+ WdfDmaDirectionReadFromDevice = 0,
+ WdfDmaDirectionWriteToDevice = 1,
+} WDF_DMA_DIRECTION;
+
+
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DMA_ENABLER_FILL(
+
+ WDFDMAENABLER DmaEnabler
+ );
+
+typedef EVT_WDF_DMA_ENABLER_FILL *PFN_WDF_DMA_ENABLER_FILL;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DMA_ENABLER_FLUSH(
+
+ WDFDMAENABLER DmaEnabler
+ );
+
+typedef EVT_WDF_DMA_ENABLER_FLUSH *PFN_WDF_DMA_ENABLER_FLUSH;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DMA_ENABLER_ENABLE(
+
+ WDFDMAENABLER DmaEnabler
+ );
+
+typedef EVT_WDF_DMA_ENABLER_ENABLE *PFN_WDF_DMA_ENABLER_ENABLE;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DMA_ENABLER_DISABLE(
+
+ WDFDMAENABLER DmaEnabler
+ );
+
+typedef EVT_WDF_DMA_ENABLER_DISABLE *PFN_WDF_DMA_ENABLER_DISABLE;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DMA_ENABLER_SELFMANAGED_IO_START(
+
+ WDFDMAENABLER DmaEnabler
+ );
+
+typedef EVT_WDF_DMA_ENABLER_SELFMANAGED_IO_START *PFN_WDF_DMA_ENABLER_SELFMANAGED_IO_START;
+
+typedef
+
+
+
+NTSTATUS
+__stdcall
+EVT_WDF_DMA_ENABLER_SELFMANAGED_IO_STOP(
+
+ WDFDMAENABLER DmaEnabler
+ );
+
+typedef EVT_WDF_DMA_ENABLER_SELFMANAGED_IO_STOP *PFN_WDF_DMA_ENABLER_SELFMANAGED_IO_STOP;
+
+
+
+
+typedef enum _WDF_DMA_ENABLER_CONFIG_FLAGS {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION = 0x00000001,
+
+
+
+
+
+
+
+
+
+
+
+ WDF_DMA_ENABLER_CONFIG_REQUIRE_SINGLE_TRANSFER = 0x00000002,
+} WDF_DMA_ENABLER_CONFIG_FLAGS;
+
+
+typedef struct _WDF_DMA_ENABLER_CONFIG {
+
+
+
+ ULONG Size;
+
+
+
+
+ WDF_DMA_PROFILE Profile;
+
+
+
+
+ size_t MaximumLength;
+
+
+
+
+ PFN_WDF_DMA_ENABLER_FILL EvtDmaEnablerFill;
+ PFN_WDF_DMA_ENABLER_FLUSH EvtDmaEnablerFlush;
+ PFN_WDF_DMA_ENABLER_DISABLE EvtDmaEnablerDisable;
+ PFN_WDF_DMA_ENABLER_ENABLE EvtDmaEnablerEnable;
+ PFN_WDF_DMA_ENABLER_SELFMANAGED_IO_START EvtDmaEnablerSelfManagedIoStart;
+ PFN_WDF_DMA_ENABLER_SELFMANAGED_IO_STOP EvtDmaEnablerSelfManagedIoStop;
+
+
+
+
+ ULONG AddressWidthOverride;
+
+
+
+
+
+ ULONG WdmDmaVersionOverride;
+
+
+
+
+
+ ULONG Flags;
+} WDF_DMA_ENABLER_CONFIG, *PWDF_DMA_ENABLER_CONFIG;
+
+void
+__forceinline
+WDF_DMA_ENABLER_CONFIG_INIT(
+ PWDF_DMA_ENABLER_CONFIG Config,
+ WDF_DMA_PROFILE Profile,
+ size_t MaximumLength
+ )
+{
+ memset((Config),0,(sizeof(WDF_DMA_ENABLER_CONFIG)));
+
+ Config->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_DMA_ENABLER_CONFIG < WdfStructureCount) ? WdfStructures[INDEX_WDF_DMA_ENABLER_CONFIG] : (size_t)(-1) ) : sizeof(WDF_DMA_ENABLER_CONFIG) );
+ Config->Profile = Profile;
+ Config->MaximumLength = MaximumLength;
+}
+
+typedef struct _WDF_DMA_SYSTEM_PROFILE_CONFIG {
+
+
+
+
+ ULONG Size;
+
+
+
+
+
+
+ BOOLEAN DemandMode;
+
+
+
+
+
+
+ BOOLEAN LoopedTransfer;
+
+
+
+
+
+ DMA_WIDTH DmaWidth;
+
+
+
+
+ PHYSICAL_ADDRESS DeviceAddress;
+
+
+
+
+
+ PCM_PARTIAL_RESOURCE_DESCRIPTOR DmaDescriptor;
+
+} WDF_DMA_SYSTEM_PROFILE_CONFIG, *PWDF_DMA_SYSTEM_PROFILE_CONFIG;
+
+void
+__forceinline
+WDF_DMA_SYSTEM_PROFILE_CONFIG_INIT(
+ PWDF_DMA_SYSTEM_PROFILE_CONFIG DmaConfig,
+ PHYSICAL_ADDRESS Address,
+ DMA_WIDTH DmaWidth,
+ PCM_PARTIAL_RESOURCE_DESCRIPTOR DmaDescriptor
+ )
+{
+ memset((DmaConfig),0,(sizeof(WDF_DMA_SYSTEM_PROFILE_CONFIG)));
+
+ DmaConfig->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_DMA_SYSTEM_PROFILE_CONFIG < WdfStructureCount) ? WdfStructures[INDEX_WDF_DMA_SYSTEM_PROFILE_CONFIG] : (size_t)(-1) ) : sizeof(WDF_DMA_SYSTEM_PROFILE_CONFIG) );
+ DmaConfig->DeviceAddress = Address;
+ DmaConfig->DmaWidth = DmaWidth;
+ DmaConfig->DmaDescriptor = DmaDescriptor;
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDMAENABLERCREATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDEVICE Device,
+
+ PWDF_DMA_ENABLER_CONFIG Config,
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+ WDFDMAENABLER* DmaEnablerHandle
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDmaEnablerCreate(
+
+ WDFDEVICE Device,
+
+ PWDF_DMA_ENABLER_CONFIG Config,
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+ WDFDMAENABLER* DmaEnablerHandle
+ )
+{
+ return ((PFN_WDFDMAENABLERCREATE) WdfFunctions_01033[WdfDmaEnablerCreateTableIndex])(WdfDriverGlobals, Device, Config, Attributes, DmaEnablerHandle);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDMAENABLERCONFIGURESYSTEMPROFILE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMAENABLER DmaEnabler,
+
+ PWDF_DMA_SYSTEM_PROFILE_CONFIG ProfileConfig,
+
+ WDF_DMA_DIRECTION ConfigDirection
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDmaEnablerConfigureSystemProfile(
+
+ WDFDMAENABLER DmaEnabler,
+
+ PWDF_DMA_SYSTEM_PROFILE_CONFIG ProfileConfig,
+
+ WDF_DMA_DIRECTION ConfigDirection
+ )
+{
+ return ((PFN_WDFDMAENABLERCONFIGURESYSTEMPROFILE) WdfFunctions_01033[WdfDmaEnablerConfigureSystemProfileTableIndex])(WdfDriverGlobals, DmaEnabler, ProfileConfig, ConfigDirection);
+}
+
+
+
+
+typedef
+
+
+size_t
+(__stdcall *PFN_WDFDMAENABLERGETMAXIMUMLENGTH)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMAENABLER DmaEnabler
+ );
+
+
+__forceinline
+size_t
+WdfDmaEnablerGetMaximumLength(
+
+ WDFDMAENABLER DmaEnabler
+ )
+{
+ return ((PFN_WDFDMAENABLERGETMAXIMUMLENGTH) WdfFunctions_01033[WdfDmaEnablerGetMaximumLengthTableIndex])(WdfDriverGlobals, DmaEnabler);
+}
+
+
+
+
+typedef
+
+
+size_t
+(__stdcall *PFN_WDFDMAENABLERGETMAXIMUMSCATTERGATHERELEMENTS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMAENABLER DmaEnabler
+ );
+
+
+__forceinline
+size_t
+WdfDmaEnablerGetMaximumScatterGatherElements(
+
+ WDFDMAENABLER DmaEnabler
+ )
+{
+ return ((PFN_WDFDMAENABLERGETMAXIMUMSCATTERGATHERELEMENTS) WdfFunctions_01033[WdfDmaEnablerGetMaximumScatterGatherElementsTableIndex])(WdfDriverGlobals, DmaEnabler);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDMAENABLERSETMAXIMUMSCATTERGATHERELEMENTS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMAENABLER DmaEnabler,
+
+
+ size_t MaximumFragments
+ );
+
+
+__forceinline
+void
+WdfDmaEnablerSetMaximumScatterGatherElements(
+
+ WDFDMAENABLER DmaEnabler,
+
+
+ size_t MaximumFragments
+ )
+{
+ ((PFN_WDFDMAENABLERSETMAXIMUMSCATTERGATHERELEMENTS) WdfFunctions_01033[WdfDmaEnablerSetMaximumScatterGatherElementsTableIndex])(WdfDriverGlobals, DmaEnabler, MaximumFragments);
+}
+
+
+
+
+typedef
+
+
+size_t
+(__stdcall *PFN_WDFDMAENABLERGETFRAGMENTLENGTH)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMAENABLER DmaEnabler,
+
+ WDF_DMA_DIRECTION DmaDirection
+ );
+
+
+__forceinline
+size_t
+WdfDmaEnablerGetFragmentLength(
+
+ WDFDMAENABLER DmaEnabler,
+
+ WDF_DMA_DIRECTION DmaDirection
+ )
+{
+ return ((PFN_WDFDMAENABLERGETFRAGMENTLENGTH) WdfFunctions_01033[WdfDmaEnablerGetFragmentLengthTableIndex])(WdfDriverGlobals, DmaEnabler, DmaDirection);
+}
+
+
+
+
+typedef
+
+
+PDMA_ADAPTER
+(__stdcall *PFN_WDFDMAENABLERWDMGETDMAADAPTER)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMAENABLER DmaEnabler,
+
+ WDF_DMA_DIRECTION DmaDirection
+ );
+
+
+__forceinline
+PDMA_ADAPTER
+WdfDmaEnablerWdmGetDmaAdapter(
+
+ WDFDMAENABLER DmaEnabler,
+
+ WDF_DMA_DIRECTION DmaDirection
+ )
+{
+ return ((PFN_WDFDMAENABLERWDMGETDMAADAPTER) WdfFunctions_01033[WdfDmaEnablerWdmGetDmaAdapterTableIndex])(WdfDriverGlobals, DmaEnabler, DmaDirection);
+}
+
+
+
+#line 522 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfDmaEnabler.h"
+
+
+
+
+#line 527 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfDmaEnabler.h"
+
+#line 117 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfDmaTransaction.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef
+
+
+
+BOOLEAN
+__stdcall
+EVT_WDF_PROGRAM_DMA(
+
+ WDFDMATRANSACTION Transaction,
+
+ WDFDEVICE Device,
+
+ WDFCONTEXT Context,
+
+ WDF_DMA_DIRECTION Direction,
+
+ PSCATTER_GATHER_LIST SgList
+ );
+
+typedef EVT_WDF_PROGRAM_DMA *PFN_WDF_PROGRAM_DMA;
+
+typedef
+
+
+
+BOOLEAN
+__stdcall
+EVT_WDF_DMA_TRANSACTION_CONFIGURE_DMA_CHANNEL(
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ WDFDEVICE Device,
+
+ PVOID Context,
+
+ PMDL Mdl,
+
+ size_t Offset,
+
+ size_t Length
+ );
+
+typedef EVT_WDF_DMA_TRANSACTION_CONFIGURE_DMA_CHANNEL *PFN_WDF_DMA_TRANSACTION_CONFIGURE_DMA_CHANNEL;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_DMA_TRANSACTION_DMA_TRANSFER_COMPLETE(
+
+ WDFDMATRANSACTION Transaction,
+
+ WDFDEVICE Device,
+
+ WDFCONTEXT Context,
+
+ WDF_DMA_DIRECTION Direction,
+
+ DMA_COMPLETION_STATUS Status
+ );
+
+typedef EVT_WDF_DMA_TRANSACTION_DMA_TRANSFER_COMPLETE *PFN_WDF_DMA_TRANSACTION_DMA_TRANSFER_COMPLETE;
+
+typedef
+
+
+
+void
+__stdcall
+EVT_WDF_RESERVE_DMA(
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ PVOID Context
+ );
+
+typedef EVT_WDF_RESERVE_DMA *PFN_WDF_RESERVE_DMA;
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDMATRANSACTIONCREATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMAENABLER DmaEnabler,
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+ WDFDMATRANSACTION* DmaTransaction
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDmaTransactionCreate(
+
+ WDFDMAENABLER DmaEnabler,
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+ WDFDMATRANSACTION* DmaTransaction
+ )
+{
+ return ((PFN_WDFDMATRANSACTIONCREATE) WdfFunctions_01033[WdfDmaTransactionCreateTableIndex])(WdfDriverGlobals, DmaEnabler, Attributes, DmaTransaction);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDMATRANSACTIONINITIALIZE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ PFN_WDF_PROGRAM_DMA EvtProgramDmaFunction,
+
+ WDF_DMA_DIRECTION DmaDirection,
+
+ PMDL Mdl,
+
+ PVOID VirtualAddress,
+
+
+ size_t Length
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDmaTransactionInitialize(
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ PFN_WDF_PROGRAM_DMA EvtProgramDmaFunction,
+
+ WDF_DMA_DIRECTION DmaDirection,
+
+ PMDL Mdl,
+
+ PVOID VirtualAddress,
+
+
+ size_t Length
+ )
+{
+ return ((PFN_WDFDMATRANSACTIONINITIALIZE) WdfFunctions_01033[WdfDmaTransactionInitializeTableIndex])(WdfDriverGlobals, DmaTransaction, EvtProgramDmaFunction, DmaDirection, Mdl, VirtualAddress, Length);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDMATRANSACTIONINITIALIZEUSINGOFFSET)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ PFN_WDF_PROGRAM_DMA EvtProgramDmaFunction,
+
+ WDF_DMA_DIRECTION DmaDirection,
+
+ PMDL Mdl,
+
+ size_t Offset,
+
+
+ size_t Length
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDmaTransactionInitializeUsingOffset(
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ PFN_WDF_PROGRAM_DMA EvtProgramDmaFunction,
+
+ WDF_DMA_DIRECTION DmaDirection,
+
+ PMDL Mdl,
+
+ size_t Offset,
+
+
+ size_t Length
+ )
+{
+ return ((PFN_WDFDMATRANSACTIONINITIALIZEUSINGOFFSET) WdfFunctions_01033[WdfDmaTransactionInitializeUsingOffsetTableIndex])(WdfDriverGlobals, DmaTransaction, EvtProgramDmaFunction, DmaDirection, Mdl, Offset, Length);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDMATRANSACTIONINITIALIZEUSINGREQUEST)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ WDFREQUEST Request,
+
+ PFN_WDF_PROGRAM_DMA EvtProgramDmaFunction,
+
+ WDF_DMA_DIRECTION DmaDirection
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDmaTransactionInitializeUsingRequest(
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ WDFREQUEST Request,
+
+ PFN_WDF_PROGRAM_DMA EvtProgramDmaFunction,
+
+ WDF_DMA_DIRECTION DmaDirection
+ )
+{
+ return ((PFN_WDFDMATRANSACTIONINITIALIZEUSINGREQUEST) WdfFunctions_01033[WdfDmaTransactionInitializeUsingRequestTableIndex])(WdfDriverGlobals, DmaTransaction, Request, EvtProgramDmaFunction, DmaDirection);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDMATRANSACTIONEXECUTE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ WDFCONTEXT Context
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDmaTransactionExecute(
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ WDFCONTEXT Context
+ )
+{
+ return ((PFN_WDFDMATRANSACTIONEXECUTE) WdfFunctions_01033[WdfDmaTransactionExecuteTableIndex])(WdfDriverGlobals, DmaTransaction, Context);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDMATRANSACTIONRELEASE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfDmaTransactionRelease(
+
+ WDFDMATRANSACTION DmaTransaction
+ )
+{
+ return ((PFN_WDFDMATRANSACTIONRELEASE) WdfFunctions_01033[WdfDmaTransactionReleaseTableIndex])(WdfDriverGlobals, DmaTransaction);
+}
+
+
+
+
+typedef
+
+
+BOOLEAN
+(__stdcall *PFN_WDFDMATRANSACTIONDMACOMPLETED)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ NTSTATUS* Status
+ );
+
+
+__forceinline
+BOOLEAN
+WdfDmaTransactionDmaCompleted(
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ NTSTATUS* Status
+ )
+{
+ return ((PFN_WDFDMATRANSACTIONDMACOMPLETED) WdfFunctions_01033[WdfDmaTransactionDmaCompletedTableIndex])(WdfDriverGlobals, DmaTransaction, Status);
+}
+
+
+
+
+typedef
+
+
+BOOLEAN
+(__stdcall *PFN_WDFDMATRANSACTIONDMACOMPLETEDWITHLENGTH)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ size_t TransferredLength,
+
+ NTSTATUS* Status
+ );
+
+
+__forceinline
+BOOLEAN
+WdfDmaTransactionDmaCompletedWithLength(
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ size_t TransferredLength,
+
+ NTSTATUS* Status
+ )
+{
+ return ((PFN_WDFDMATRANSACTIONDMACOMPLETEDWITHLENGTH) WdfFunctions_01033[WdfDmaTransactionDmaCompletedWithLengthTableIndex])(WdfDriverGlobals, DmaTransaction, TransferredLength, Status);
+}
+
+
+
+
+typedef
+
+
+BOOLEAN
+(__stdcall *PFN_WDFDMATRANSACTIONDMACOMPLETEDFINAL)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ size_t FinalTransferredLength,
+
+ NTSTATUS* Status
+ );
+
+
+__forceinline
+BOOLEAN
+WdfDmaTransactionDmaCompletedFinal(
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ size_t FinalTransferredLength,
+
+ NTSTATUS* Status
+ )
+{
+ return ((PFN_WDFDMATRANSACTIONDMACOMPLETEDFINAL) WdfFunctions_01033[WdfDmaTransactionDmaCompletedFinalTableIndex])(WdfDriverGlobals, DmaTransaction, FinalTransferredLength, Status);
+}
+
+
+
+
+typedef
+
+
+size_t
+(__stdcall *PFN_WDFDMATRANSACTIONGETBYTESTRANSFERRED)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction
+ );
+
+
+__forceinline
+size_t
+WdfDmaTransactionGetBytesTransferred(
+
+ WDFDMATRANSACTION DmaTransaction
+ )
+{
+ return ((PFN_WDFDMATRANSACTIONGETBYTESTRANSFERRED) WdfFunctions_01033[WdfDmaTransactionGetBytesTransferredTableIndex])(WdfDriverGlobals, DmaTransaction);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDMATRANSACTIONSETMAXIMUMLENGTH)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ size_t MaximumLength
+ );
+
+
+__forceinline
+void
+WdfDmaTransactionSetMaximumLength(
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ size_t MaximumLength
+ )
+{
+ ((PFN_WDFDMATRANSACTIONSETMAXIMUMLENGTH) WdfFunctions_01033[WdfDmaTransactionSetMaximumLengthTableIndex])(WdfDriverGlobals, DmaTransaction, MaximumLength);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDMATRANSACTIONSETSINGLETRANSFERREQUIREMENT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ BOOLEAN RequireSingleTransfer
+ );
+
+
+__forceinline
+void
+WdfDmaTransactionSetSingleTransferRequirement(
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ BOOLEAN RequireSingleTransfer
+ )
+{
+ ((PFN_WDFDMATRANSACTIONSETSINGLETRANSFERREQUIREMENT) WdfFunctions_01033[WdfDmaTransactionSetSingleTransferRequirementTableIndex])(WdfDriverGlobals, DmaTransaction, RequireSingleTransfer);
+}
+
+
+
+
+typedef
+
+
+WDFREQUEST
+(__stdcall *PFN_WDFDMATRANSACTIONGETREQUEST)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction
+ );
+
+
+__forceinline
+WDFREQUEST
+WdfDmaTransactionGetRequest(
+
+ WDFDMATRANSACTION DmaTransaction
+ )
+{
+ return ((PFN_WDFDMATRANSACTIONGETREQUEST) WdfFunctions_01033[WdfDmaTransactionGetRequestTableIndex])(WdfDriverGlobals, DmaTransaction);
+}
+
+
+
+
+typedef
+
+
+size_t
+(__stdcall *PFN_WDFDMATRANSACTIONGETCURRENTDMATRANSFERLENGTH)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction
+ );
+
+
+__forceinline
+size_t
+WdfDmaTransactionGetCurrentDmaTransferLength(
+
+ WDFDMATRANSACTION DmaTransaction
+ )
+{
+ return ((PFN_WDFDMATRANSACTIONGETCURRENTDMATRANSFERLENGTH) WdfFunctions_01033[WdfDmaTransactionGetCurrentDmaTransferLengthTableIndex])(WdfDriverGlobals, DmaTransaction);
+}
+
+
+
+
+typedef
+
+
+WDFDEVICE
+(__stdcall *PFN_WDFDMATRANSACTIONGETDEVICE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction
+ );
+
+
+__forceinline
+WDFDEVICE
+WdfDmaTransactionGetDevice(
+
+ WDFDMATRANSACTION DmaTransaction
+ )
+{
+ return ((PFN_WDFDMATRANSACTIONGETDEVICE) WdfFunctions_01033[WdfDmaTransactionGetDeviceTableIndex])(WdfDriverGlobals, DmaTransaction);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDMATRANSACTIONGETTRANSFERINFO)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ ULONG* MapRegisterCount,
+
+ ULONG* ScatterGatherElementCount
+ );
+
+
+__forceinline
+void
+WdfDmaTransactionGetTransferInfo(
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ ULONG* MapRegisterCount,
+
+ ULONG* ScatterGatherElementCount
+ )
+{
+ ((PFN_WDFDMATRANSACTIONGETTRANSFERINFO) WdfFunctions_01033[WdfDmaTransactionGetTransferInfoTableIndex])(WdfDriverGlobals, DmaTransaction, MapRegisterCount, ScatterGatherElementCount);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDMATRANSACTIONSETCHANNELCONFIGURATIONCALLBACK)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ PFN_WDF_DMA_TRANSACTION_CONFIGURE_DMA_CHANNEL ConfigureRoutine,
+
+ PVOID ConfigureContext
+ );
+
+
+__forceinline
+void
+WdfDmaTransactionSetChannelConfigurationCallback(
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ PFN_WDF_DMA_TRANSACTION_CONFIGURE_DMA_CHANNEL ConfigureRoutine,
+
+ PVOID ConfigureContext
+ )
+{
+ ((PFN_WDFDMATRANSACTIONSETCHANNELCONFIGURATIONCALLBACK) WdfFunctions_01033[WdfDmaTransactionSetChannelConfigurationCallbackTableIndex])(WdfDriverGlobals, DmaTransaction, ConfigureRoutine, ConfigureContext);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDMATRANSACTIONSETTRANSFERCOMPLETECALLBACK)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ PFN_WDF_DMA_TRANSACTION_DMA_TRANSFER_COMPLETE DmaCompletionRoutine,
+
+ PVOID DmaCompletionContext
+ );
+
+
+__forceinline
+void
+WdfDmaTransactionSetTransferCompleteCallback(
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ PFN_WDF_DMA_TRANSACTION_DMA_TRANSFER_COMPLETE DmaCompletionRoutine,
+
+ PVOID DmaCompletionContext
+ )
+{
+ ((PFN_WDFDMATRANSACTIONSETTRANSFERCOMPLETECALLBACK) WdfFunctions_01033[WdfDmaTransactionSetTransferCompleteCallbackTableIndex])(WdfDriverGlobals, DmaTransaction, DmaCompletionRoutine, DmaCompletionContext);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDMATRANSACTIONSETIMMEDIATEEXECUTION)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ BOOLEAN UseImmediateExecution
+ );
+
+
+__forceinline
+void
+WdfDmaTransactionSetImmediateExecution(
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ BOOLEAN UseImmediateExecution
+ )
+{
+ ((PFN_WDFDMATRANSACTIONSETIMMEDIATEEXECUTION) WdfFunctions_01033[WdfDmaTransactionSetImmediateExecutionTableIndex])(WdfDriverGlobals, DmaTransaction, UseImmediateExecution);
+}
+
+
+
+
+typedef
+
+
+NTSTATUS
+(__stdcall *PFN_WDFDMATRANSACTIONALLOCATERESOURCES)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ WDF_DMA_DIRECTION DmaDirection,
+
+ ULONG RequiredMapRegisters,
+
+ PFN_WDF_RESERVE_DMA EvtReserveDmaFunction,
+
+ PVOID EvtReserveDmaContext
+ );
+
+
+__forceinline
+NTSTATUS
+WdfDmaTransactionAllocateResources(
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ WDF_DMA_DIRECTION DmaDirection,
+
+ ULONG RequiredMapRegisters,
+
+ PFN_WDF_RESERVE_DMA EvtReserveDmaFunction,
+
+ PVOID EvtReserveDmaContext
+ )
+{
+ return ((PFN_WDFDMATRANSACTIONALLOCATERESOURCES) WdfFunctions_01033[WdfDmaTransactionAllocateResourcesTableIndex])(WdfDriverGlobals, DmaTransaction, DmaDirection, RequiredMapRegisters, EvtReserveDmaFunction, EvtReserveDmaContext);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDMATRANSACTIONSETDEVICEADDRESSOFFSET)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ ULONG Offset
+ );
+
+
+__forceinline
+void
+WdfDmaTransactionSetDeviceAddressOffset(
+
+ WDFDMATRANSACTION DmaTransaction,
+
+ ULONG Offset
+ )
+{
+ ((PFN_WDFDMATRANSACTIONSETDEVICEADDRESSOFFSET) WdfFunctions_01033[WdfDmaTransactionSetDeviceAddressOffsetTableIndex])(WdfDriverGlobals, DmaTransaction, Offset);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDMATRANSACTIONFREERESOURCES)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction
+ );
+
+
+__forceinline
+void
+WdfDmaTransactionFreeResources(
+
+ WDFDMATRANSACTION DmaTransaction
+ )
+{
+ ((PFN_WDFDMATRANSACTIONFREERESOURCES) WdfFunctions_01033[WdfDmaTransactionFreeResourcesTableIndex])(WdfDriverGlobals, DmaTransaction);
+}
+
+
+
+
+typedef
+
+
+BOOLEAN
+(__stdcall *PFN_WDFDMATRANSACTIONCANCEL)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction
+ );
+
+
+__forceinline
+BOOLEAN
+WdfDmaTransactionCancel(
+
+ WDFDMATRANSACTION DmaTransaction
+ )
+{
+ return ((PFN_WDFDMATRANSACTIONCANCEL) WdfFunctions_01033[WdfDmaTransactionCancelTableIndex])(WdfDriverGlobals, DmaTransaction);
+}
+
+
+
+
+typedef
+
+
+PVOID
+(__stdcall *PFN_WDFDMATRANSACTIONWDMGETTRANSFERCONTEXT)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction
+ );
+
+
+__forceinline
+PVOID
+WdfDmaTransactionWdmGetTransferContext(
+
+ WDFDMATRANSACTION DmaTransaction
+ )
+{
+ return ((PFN_WDFDMATRANSACTIONWDMGETTRANSFERCONTEXT) WdfFunctions_01033[WdfDmaTransactionWdmGetTransferContextTableIndex])(WdfDriverGlobals, DmaTransaction);
+}
+
+
+
+
+typedef
+
+
+void
+(__stdcall *PFN_WDFDMATRANSACTIONSTOPSYSTEMTRANSFER)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMATRANSACTION DmaTransaction
+ );
+
+
+__forceinline
+void
+WdfDmaTransactionStopSystemTransfer(
+
+ WDFDMATRANSACTION DmaTransaction
+ )
+{
+ ((PFN_WDFDMATRANSACTIONSTOPSYSTEMTRANSFER) WdfFunctions_01033[WdfDmaTransactionStopSystemTransferTableIndex])(WdfDriverGlobals, DmaTransaction);
+}
+
+
+
+#line 918 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfDmaTransaction.h"
+
+
+
+
+#line 923 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfDmaTransaction.h"
+
+#line 118 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfCommonBuffer.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct _WDF_COMMON_BUFFER_CONFIG {
+
+
+
+ ULONG Size;
+
+
+
+
+ ULONG AlignmentRequirement;
+
+} WDF_COMMON_BUFFER_CONFIG, *PWDF_COMMON_BUFFER_CONFIG;
+
+void
+__forceinline
+WDF_COMMON_BUFFER_CONFIG_INIT(
+ PWDF_COMMON_BUFFER_CONFIG Config,
+ ULONG AlignmentRequirement
+ )
+{
+ memset((Config),0,(sizeof(WDF_COMMON_BUFFER_CONFIG)));
+
+ Config->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_COMMON_BUFFER_CONFIG < WdfStructureCount) ? WdfStructures[INDEX_WDF_COMMON_BUFFER_CONFIG] : (size_t)(-1) ) : sizeof(WDF_COMMON_BUFFER_CONFIG) );
+ Config->AlignmentRequirement = AlignmentRequirement;
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFCOMMONBUFFERCREATE)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMAENABLER DmaEnabler,
+
+
+ size_t Length,
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+ WDFCOMMONBUFFER* CommonBuffer
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfCommonBufferCreate(
+
+ WDFDMAENABLER DmaEnabler,
+
+
+ size_t Length,
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+ WDFCOMMONBUFFER* CommonBuffer
+ )
+{
+ return ((PFN_WDFCOMMONBUFFERCREATE) WdfFunctions_01033[WdfCommonBufferCreateTableIndex])(WdfDriverGlobals, DmaEnabler, Length, Attributes, CommonBuffer);
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFCOMMONBUFFERCREATEWITHCONFIG)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFDMAENABLER DmaEnabler,
+
+
+ size_t Length,
+
+ PWDF_COMMON_BUFFER_CONFIG Config,
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+ WDFCOMMONBUFFER* CommonBuffer
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfCommonBufferCreateWithConfig(
+
+ WDFDMAENABLER DmaEnabler,
+
+
+ size_t Length,
+
+ PWDF_COMMON_BUFFER_CONFIG Config,
+
+ PWDF_OBJECT_ATTRIBUTES Attributes,
+
+ WDFCOMMONBUFFER* CommonBuffer
+ )
+{
+ return ((PFN_WDFCOMMONBUFFERCREATEWITHCONFIG) WdfFunctions_01033[WdfCommonBufferCreateWithConfigTableIndex])(WdfDriverGlobals, DmaEnabler, Length, Config, Attributes, CommonBuffer);
+}
+
+
+
+
+typedef
+
+
+PVOID
+(__stdcall *PFN_WDFCOMMONBUFFERGETALIGNEDVIRTUALADDRESS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCOMMONBUFFER CommonBuffer
+ );
+
+
+__forceinline
+PVOID
+WdfCommonBufferGetAlignedVirtualAddress(
+
+ WDFCOMMONBUFFER CommonBuffer
+ )
+{
+ return ((PFN_WDFCOMMONBUFFERGETALIGNEDVIRTUALADDRESS) WdfFunctions_01033[WdfCommonBufferGetAlignedVirtualAddressTableIndex])(WdfDriverGlobals, CommonBuffer);
+}
+
+
+
+
+typedef
+
+
+PHYSICAL_ADDRESS
+(__stdcall *PFN_WDFCOMMONBUFFERGETALIGNEDLOGICALADDRESS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCOMMONBUFFER CommonBuffer
+ );
+
+
+__forceinline
+PHYSICAL_ADDRESS
+WdfCommonBufferGetAlignedLogicalAddress(
+
+ WDFCOMMONBUFFER CommonBuffer
+ )
+{
+ return ((PFN_WDFCOMMONBUFFERGETALIGNEDLOGICALADDRESS) WdfFunctions_01033[WdfCommonBufferGetAlignedLogicalAddressTableIndex])(WdfDriverGlobals, CommonBuffer);
+}
+
+
+
+
+typedef
+
+
+size_t
+(__stdcall *PFN_WDFCOMMONBUFFERGETLENGTH)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCOMMONBUFFER CommonBuffer
+ );
+
+
+__forceinline
+size_t
+WdfCommonBufferGetLength(
+
+ WDFCOMMONBUFFER CommonBuffer
+ )
+{
+ return ((PFN_WDFCOMMONBUFFERGETLENGTH) WdfFunctions_01033[WdfCommonBufferGetLengthTableIndex])(WdfDriverGlobals, CommonBuffer);
+}
+
+
+
+#line 244 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfCommonBuffer.h"
+
+
+
+
+#line 249 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfCommonBuffer.h"
+
+#line 119 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfbugcodes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _WDF_BUGCHECK_CODES {
+ WDF_POWER_ROUTINE_TIMED_OUT = 0x1,
+ WDF_RECURSIVE_LOCK = 0x2,
+ WDF_VERIFIER_FATAL_ERROR = 0x3,
+ WDF_REQUIRED_PARAMETER_IS_NULL = 0x4,
+ WDF_INVALID_HANDLE = 0x5,
+ WDF_REQUEST_FATAL_ERROR = 0x6,
+ WDF_OBJECT_ERROR = 0x7,
+ WDF_DMA_FATAL_ERROR = 0x8,
+ WDF_INVALID_INTERRUPT = 0x9,
+ WDF_QUEUE_FATAL_ERROR = 0xA,
+ WDF_INVALID_LOCK_OPERATION = 0xB,
+ WDF_PNP_FATAL_ERROR = 0xC,
+ WDF_POWER_MULTIPLE_PPO = 0xD,
+ WDF_VERIFIER_IRQL_MISMATCH = 0xE,
+ WDF_VERIFIER_CRITICAL_REGION_MISMATCH = 0xF,
+ WDF_API_UNAVAILABLE = 0x10,
+ WDF_OBJECT_EXCESSIVE_ALLOCATION = 0x11,
+} WDF_BUGCHECK_CODES;
+
+typedef enum _WDF_REQUEST_FATAL_ERROR_CODES {
+ WDF_REQUEST_FATAL_ERROR_NO_MORE_STACK_LOCATIONS = 0x1,
+ WDF_REQUEST_FATAL_ERROR_NULL_IRP = 0x2,
+ WDF_REQUEST_FATAL_ERROR_REQUEST_ALREADY_SENT = 0x3,
+ WDF_REQUEST_FATAL_ERROR_INFORMATION_LENGTH_MISMATCH = 0x4,
+ WDF_REQUEST_FATAL_ERROR_REQUEST_NOT_IN_QUEUE = 05,
+} WDF_REQUEST_FATAL_ERROR_CODES;
+
+
+
+typedef struct _WDF_POWER_ROUTINE_TIMED_OUT_DATA {
+
+
+
+ WDF_DEVICE_POWER_STATE PowerState;
+
+
+
+
+ WDF_DEVICE_POWER_POLICY_STATE PowerPolicyState;
+
+
+
+
+ PDEVICE_OBJECT DeviceObject;
+
+
+
+
+ WDFDEVICE Device;
+
+
+
+
+ PKTHREAD TimedOutThread;
+
+} WDF_POWER_ROUTINE_TIMED_OUT_DATA;
+
+typedef struct _WDF_REQUEST_FATAL_ERROR_INFORMATION_LENGTH_MISMATCH_DATA {
+ WDFREQUEST Request;
+
+ PIRP Irp;
+
+ ULONG OutputBufferLength;
+
+ ULONG_PTR Information;
+
+ UCHAR MajorFunction;
+
+} WDF_REQUEST_FATAL_ERROR_INFORMATION_LENGTH_MISMATCH_DATA,
+ *PWDF_REQUEST_FATAL_ERROR_INFORMATION_LENGTH_MISMATCH_DATA;
+
+typedef struct _WDF_QUEUE_FATAL_ERROR_DATA {
+ WDFQUEUE Queue;
+
+ WDFREQUEST Request;
+
+ NTSTATUS Status;
+
+} WDF_QUEUE_FATAL_ERROR_DATA, *PWDF_QUEUE_FATAL_ERROR_DATA;
+
+
+
+
+#line 142 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfbugcodes.h"
+
+
+
+
+#line 147 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfbugcodes.h"
+
+#line 121 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfroletypes.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef EVT_WDF_OBJECT_CONTEXT_CLEANUP EVT_WDF_DEVICE_CONTEXT_CLEANUP;
+typedef EVT_WDF_OBJECT_CONTEXT_DESTROY EVT_WDF_DEVICE_CONTEXT_DESTROY;
+typedef EVT_WDF_OBJECT_CONTEXT_CLEANUP EVT_WDF_IO_QUEUE_CONTEXT_CLEANUP_CALLBACK;
+typedef EVT_WDF_OBJECT_CONTEXT_DESTROY EVT_WDF_IO_QUEUE_CONTEXT_DESTROY_CALLBACK;
+typedef EVT_WDF_OBJECT_CONTEXT_CLEANUP EVT_WDF_FILE_CONTEXT_CLEANUP_CALLBACK;
+typedef EVT_WDF_OBJECT_CONTEXT_DESTROY EVT_WDF_FILE_CONTEXT_DESTROY_CALLBACK;
+
+
+
+
+
+
+
+#line 62 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfroletypes.h"
+
+#line 122 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfhwaccess.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 69 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfhwaccess.h"
+
+
+
+
+
+#line 75 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfhwaccess.h"
+
+#line 123 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+
+
+
+
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfcompaniontarget.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum _WDF_TASK_SEND_OPTIONS_FLAGS {
+ WDF_TASK_SEND_OPTION_TIMEOUT = 0x00000001,
+ WDF_TASK_SEND_OPTION_SYNCHRONOUS = 0x00000002,
+} WDF_TASK_SEND_OPTIONS_FLAGS;
+
+
+
+
+
+typedef struct _WDF_TASK_SEND_OPTIONS {
+
+
+
+ ULONG Size;
+
+
+
+
+
+ ULONG Flags;
+
+
+
+
+ LONGLONG Timeout;
+
+} WDF_TASK_SEND_OPTIONS, *PWDF_TASK_SEND_OPTIONS;
+
+void
+__forceinline
+WDF_TASK_SEND_OPTIONS_INIT(
+
+ PWDF_TASK_SEND_OPTIONS Options,
+
+ ULONG Flags
+ )
+{
+ memset((Options),0,(sizeof(WDF_TASK_SEND_OPTIONS)));
+
+ Options->Size = (ULONG) ( WdfClientVersionHigherThanFramework ? ( (INDEX_WDF_TASK_SEND_OPTIONS < WdfStructureCount) ? WdfStructures[INDEX_WDF_TASK_SEND_OPTIONS] : (size_t)(-1) ) : sizeof(WDF_TASK_SEND_OPTIONS) );
+ Options->Flags = Flags;
+}
+
+
+
+
+typedef
+
+
+
+NTSTATUS
+(__stdcall *PFN_WDFCOMPANIONTARGETSENDTASKSYNCHRONOUSLY)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCOMPANIONTARGET CompanionTarget,
+
+ USHORT TaskQueueIdentifier,
+
+ ULONG TaskOperationCode,
+
+ PWDF_MEMORY_DESCRIPTOR InputBuffer,
+
+ PWDF_MEMORY_DESCRIPTOR OutputBuffer,
+
+ PWDF_TASK_SEND_OPTIONS TaskOptions,
+
+ PULONG_PTR BytesReturned
+ );
+
+
+
+__forceinline
+NTSTATUS
+WdfCompanionTargetSendTaskSynchronously(
+
+ WDFCOMPANIONTARGET CompanionTarget,
+
+ USHORT TaskQueueIdentifier,
+
+ ULONG TaskOperationCode,
+
+ PWDF_MEMORY_DESCRIPTOR InputBuffer,
+
+ PWDF_MEMORY_DESCRIPTOR OutputBuffer,
+
+ PWDF_TASK_SEND_OPTIONS TaskOptions,
+
+ PULONG_PTR BytesReturned
+ )
+{
+ return ((PFN_WDFCOMPANIONTARGETSENDTASKSYNCHRONOUSLY) WdfFunctions_01033[WdfCompanionTargetSendTaskSynchronouslyTableIndex])(WdfDriverGlobals, CompanionTarget, TaskQueueIdentifier, TaskOperationCode, InputBuffer, OutputBuffer, TaskOptions, BytesReturned);
+}
+
+
+
+
+typedef
+
+
+
+PEPROCESS
+(__stdcall *PFN_WDFCOMPANIONTARGETWDMGETCOMPANIONPROCESS)(
+
+ PWDF_DRIVER_GLOBALS DriverGlobals,
+
+ WDFCOMPANIONTARGET CompanionTarget
+ );
+
+
+
+__forceinline
+PEPROCESS
+WdfCompanionTargetWdmGetCompanionProcess(
+
+ WDFCOMPANIONTARGET CompanionTarget
+ )
+{
+ return ((PFN_WDFCOMPANIONTARGETWDMGETCOMPANIONPROCESS) WdfFunctions_01033[WdfCompanionTargetWdmGetCompanionProcessTableIndex])(WdfDriverGlobals, CompanionTarget);
+}
+
+
+
+
+
+#line 174 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdfcompaniontarget.h"
+
+#line 128 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+
+
+
+
+
+
+#line 135 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\wdf\\kmdf\\1.33\\wdf.h"
+
+#line 40 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+#pragma external_header(push)
+#line 1 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include\\stdarg.h"
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable: 4514 4820 )
+
+__pragma(pack(push, 8))
+
+
+
+
+
+
+
+
+
+
+__pragma(pack(pop))
+
+#pragma warning(pop)
+#pragma external_header(pop)
+#line 41 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma once
+#line 17 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+
+
+
+
+#pragma once
+
+
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+
+
+
+
+
+
+#pragma once
+
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_stdio_config.h"
+
+
+
+
+
+
+
+#pragma once
+
+
+
+#pragma warning(push)
+#pragma warning(disable: 4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727 )
+
+
+__pragma(pack(push, 8))
+
+
+
+#line 21 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_stdio_config.h"
+
+
+
+
+#line 26 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_stdio_config.h"
+
+#line 28 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_stdio_config.h"
+
+
+
+
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_stdio_config.h"
+
+
+
+#line 37 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_stdio_config.h"
+#line 38 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_stdio_config.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 62 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_stdio_config.h"
+
+
+
+
+#line 67 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_stdio_config.h"
+
+
+
+
+
+
+
+#line 75 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_stdio_config.h"
+#line 76 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_stdio_config.h"
+
+
+
+
+
+
+#line 83 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_stdio_config.h"
+
+
+
+
+
+
+ __declspec(noinline) __inline unsigned __int64* __cdecl __local_stdio_printf_options(void)
+ {
+ static unsigned __int64 _OptionsStorage;
+ return &_OptionsStorage;
+ }
+
+
+
+
+
+ __declspec(noinline) __inline unsigned __int64* __cdecl __local_stdio_scanf_options(void)
+ {
+ static unsigned __int64 _OptionsStorage;
+ return &_OptionsStorage;
+ }
+#line 105 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_stdio_config.h"
+
+
+
+#line 109 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_stdio_config.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__pragma(pack(pop))
+
+#pragma warning(pop)
+#pragma external_header(pop)
+#line 14 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+#pragma warning(push)
+#pragma warning(disable: 4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727 )
+
+
+__pragma(pack(push, 8))
+
+
+
+
+
+
+
+
+ typedef struct _iobuf
+ {
+ void* _Placeholder;
+ } FILE;
+#line 33 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+__declspec(dllimport) FILE* __cdecl __acrt_iob_func(unsigned _Ix);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ __declspec(dllimport) wint_t __cdecl fgetwc(
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) wint_t __cdecl _fgetwchar(void);
+
+
+ __declspec(dllimport) wint_t __cdecl fputwc(
+ wchar_t _Character,
+ FILE* _Stream);
+
+
+ __declspec(dllimport) wint_t __cdecl _fputwchar(
+ wchar_t _Character
+ );
+
+
+ __declspec(dllimport) wint_t __cdecl getwc(
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) wint_t __cdecl getwchar(void);
+
+
+
+
+ __declspec(dllimport) wchar_t* __cdecl fgetws(
+ wchar_t* _Buffer,
+ int _BufferCount,
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) int __cdecl fputws(
+ wchar_t const* _Buffer,
+ FILE* _Stream
+ );
+
+
+
+ __declspec(dllimport) wchar_t* __cdecl _getws_s(
+ wchar_t* _Buffer,
+ size_t _BufferCount
+ );
+
+
+#line 103 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __declspec(dllimport) wint_t __cdecl putwc(
+ wchar_t _Character,
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) wint_t __cdecl putwchar(
+ wchar_t _Character
+ );
+
+
+ __declspec(dllimport) int __cdecl _putws(
+ wchar_t const* _Buffer
+ );
+
+
+ __declspec(dllimport) wint_t __cdecl ungetwc(
+ wint_t _Character,
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) FILE * __cdecl _wfdopen(
+ int _FileHandle,
+ wchar_t const* _Mode
+ );
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_wfopen_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __declspec(dllimport) FILE* __cdecl _wfopen(
+ wchar_t const* _FileName,
+ wchar_t const* _Mode
+ );
+
+
+ __declspec(dllimport) errno_t __cdecl _wfopen_s(
+ FILE** _Stream,
+ wchar_t const* _FileName,
+ wchar_t const* _Mode
+ );
+
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_wfreopen_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __declspec(dllimport) FILE* __cdecl _wfreopen(
+ wchar_t const* _FileName,
+ wchar_t const* _Mode,
+ FILE* _OldStream
+ );
+
+
+ __declspec(dllimport) errno_t __cdecl _wfreopen_s(
+ FILE** _Stream,
+ wchar_t const* _FileName,
+ wchar_t const* _Mode,
+ FILE* _OldStream
+ );
+
+
+ __declspec(dllimport) FILE* __cdecl _wfsopen(
+ wchar_t const* _FileName,
+ wchar_t const* _Mode,
+ int _ShFlag
+ );
+
+ __declspec(dllimport) void __cdecl _wperror(
+ wchar_t const* _ErrorMessage
+ );
+
+
+
+
+ __declspec(dllimport) FILE* __cdecl _wpopen(
+ wchar_t const* _Command,
+ wchar_t const* _Mode
+ );
+
+ #line 181 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+ __declspec(dllimport) int __cdecl _wremove(
+ wchar_t const* _FileName
+ );
+
+
+
+
+
+ __declspec(dllimport) __declspec(allocator) wchar_t* __cdecl _wtempnam(
+ wchar_t const* _Directory,
+ wchar_t const* _FilePrefix
+ );
+
+
+
+
+
+ __declspec(dllimport) errno_t __cdecl _wtmpnam_s(
+ wchar_t* _Buffer,
+ size_t _BufferCount
+ );
+
+
+#line 209 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_wtmpnam_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __declspec(dllimport) wchar_t* __cdecl _wtmpnam( wchar_t *_Buffer);
+#line 215 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+
+
+
+
+
+
+ __declspec(dllimport) wint_t __cdecl _fgetwc_nolock(
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) wint_t __cdecl _fputwc_nolock(
+ wchar_t _Character,
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) wint_t __cdecl _getwc_nolock(
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) wint_t __cdecl _putwc_nolock(
+ wchar_t _Character,
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) wint_t __cdecl _ungetwc_nolock(
+ wint_t _Character,
+ FILE* _Stream
+ );
+
+
+
+
+
+#line 256 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ __declspec(dllimport) int __cdecl __stdio_common_vfwprintf(
+ unsigned __int64 _Options,
+ FILE* _Stream,
+ wchar_t const* _Format,
+ _locale_t _Locale,
+ va_list _ArgList
+ );
+
+
+ __declspec(dllimport) int __cdecl __stdio_common_vfwprintf_s(
+ unsigned __int64 _Options,
+ FILE* _Stream,
+ wchar_t const* _Format,
+ _locale_t _Locale,
+ va_list _ArgList
+ );
+
+
+ __declspec(dllimport) int __cdecl __stdio_common_vfwprintf_p(
+ unsigned __int64 _Options,
+ FILE* _Stream,
+ wchar_t const* _Format,
+ _locale_t _Locale,
+ va_list _ArgList
+ );
+
+
+ __inline int __cdecl _vfwprintf_l(
+ FILE* const _Stream,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 308 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return __stdio_common_vfwprintf((*__local_stdio_printf_options()), _Stream, _Format, _Locale, _ArgList);
+ }
+ #line 312 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl vfwprintf(
+ FILE* const _Stream,
+ wchar_t const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 322 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vfwprintf_l(_Stream, _Format, ((void *)0), _ArgList);
+ }
+ #line 326 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl _vfwprintf_s_l(
+ FILE* const _Stream,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 337 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return __stdio_common_vfwprintf_s((*__local_stdio_printf_options()), _Stream, _Format, _Locale, _ArgList);
+ }
+ #line 341 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+
+ __inline int __cdecl vfwprintf_s(
+ FILE* const _Stream,
+ wchar_t const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 353 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vfwprintf_s_l(_Stream, _Format, ((void *)0), _ArgList);
+ }
+ #line 357 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+ #line 359 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl _vfwprintf_p_l(
+ FILE* const _Stream,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 370 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return __stdio_common_vfwprintf_p((*__local_stdio_printf_options()), _Stream, _Format, _Locale, _ArgList);
+ }
+ #line 374 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl _vfwprintf_p(
+ FILE* const _Stream,
+ wchar_t const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 384 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vfwprintf_p_l(_Stream, _Format, ((void *)0), _ArgList);
+ }
+ #line 388 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl _vwprintf_l(
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 398 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vfwprintf_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);
+ }
+ #line 402 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl vwprintf(
+ wchar_t const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 411 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vfwprintf_l((__acrt_iob_func(1)), _Format, ((void *)0), _ArgList);
+ }
+ #line 415 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl _vwprintf_s_l(
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 425 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vfwprintf_s_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);
+ }
+ #line 429 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+
+ __inline int __cdecl vwprintf_s(
+ wchar_t const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 440 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vfwprintf_s_l((__acrt_iob_func(1)), _Format, ((void *)0), _ArgList);
+ }
+ #line 444 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+ #line 446 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl _vwprintf_p_l(
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 456 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vfwprintf_p_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);
+ }
+ #line 460 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl _vwprintf_p(
+ wchar_t const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 469 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vfwprintf_p_l((__acrt_iob_func(1)), _Format, ((void *)0), _ArgList);
+ }
+ #line 473 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl _fwprintf_l(
+ FILE* const _Stream,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 483 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vfwprintf_l(_Stream, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 492 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl fwprintf(
+ FILE* const _Stream,
+ wchar_t const* const _Format,
+ ...)
+
+
+#line 501 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vfwprintf_l(_Stream, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 510 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl _fwprintf_s_l(
+ FILE* const _Stream,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 520 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vfwprintf_s_l(_Stream, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 529 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+
+ __inline int __cdecl fwprintf_s(
+ FILE* const _Stream,
+ wchar_t const* const _Format,
+ ...)
+
+
+#line 540 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vfwprintf_s_l(_Stream, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 549 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+ #line 551 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl _fwprintf_p_l(
+ FILE* const _Stream,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 561 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vfwprintf_p_l(_Stream, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 570 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl _fwprintf_p(
+ FILE* const _Stream,
+ wchar_t const* const _Format,
+ ...)
+
+
+#line 579 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vfwprintf_p_l(_Stream, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 588 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl _wprintf_l(
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 597 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vfwprintf_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 606 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl wprintf(
+ wchar_t const* const _Format,
+ ...)
+
+
+#line 614 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vfwprintf_l((__acrt_iob_func(1)), _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 623 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl _wprintf_s_l(
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 632 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vfwprintf_s_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 641 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+
+ __inline int __cdecl wprintf_s(
+ wchar_t const* const _Format,
+ ...)
+
+
+#line 651 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vfwprintf_s_l((__acrt_iob_func(1)), _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 660 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+ #line 662 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl _wprintf_p_l(
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 671 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vfwprintf_p_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 680 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl _wprintf_p(
+ wchar_t const* const _Format,
+ ...)
+
+
+#line 688 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vfwprintf_p_l((__acrt_iob_func(1)), _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 697 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+
+
+
+
+
+ __declspec(dllimport) int __cdecl __stdio_common_vfwscanf(
+ unsigned __int64 _Options,
+ FILE* _Stream,
+ wchar_t const* _Format,
+ _locale_t _Locale,
+ va_list _ArgList
+ );
+
+
+ __inline int __cdecl _vfwscanf_l(
+ FILE* const _Stream,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 723 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return __stdio_common_vfwscanf(
+ (*__local_stdio_scanf_options ()),
+ _Stream, _Format, _Locale, _ArgList);
+ }
+ #line 729 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl vfwscanf(
+ FILE* const _Stream,
+ wchar_t const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 739 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vfwscanf_l(_Stream, _Format, ((void *)0), _ArgList);
+ }
+ #line 743 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl _vfwscanf_s_l(
+ FILE* const _Stream,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 754 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return __stdio_common_vfwscanf(
+ (*__local_stdio_scanf_options ()) | (1ULL << 0),
+ _Stream, _Format, _Locale, _ArgList);
+ }
+ #line 760 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+
+ __inline int __cdecl vfwscanf_s(
+ FILE* const _Stream,
+ wchar_t const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 772 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vfwscanf_s_l(_Stream, _Format, ((void *)0), _ArgList);
+ }
+ #line 776 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+ #line 778 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+ __inline int __cdecl _vwscanf_l(
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 787 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vfwscanf_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList);
+ }
+ #line 791 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl vwscanf(
+ wchar_t const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 800 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vfwscanf_l((__acrt_iob_func(0)), _Format, ((void *)0), _ArgList);
+ }
+ #line 804 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl _vwscanf_s_l(
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 814 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vfwscanf_s_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList);
+ }
+ #line 818 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+
+ __inline int __cdecl vwscanf_s(
+ wchar_t const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 829 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vfwscanf_s_l((__acrt_iob_func(0)), _Format, ((void *)0), _ArgList);
+ }
+ #line 833 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+ #line 835 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_fwscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl _fwscanf_l(
+ FILE* const _Stream,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 845 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vfwscanf_l(_Stream, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 854 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "fwscanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl fwscanf(
+ FILE* const _Stream,
+ wchar_t const* const _Format,
+ ...)
+
+
+#line 863 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vfwscanf_l(_Stream, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 872 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl _fwscanf_s_l(
+ FILE* const _Stream,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 882 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vfwscanf_s_l(_Stream, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 891 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+
+ __inline int __cdecl fwscanf_s(
+ FILE* const _Stream,
+ wchar_t const* const _Format,
+ ...)
+
+
+#line 902 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vfwscanf_s_l(_Stream, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 911 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+ #line 913 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_wscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl _wscanf_l(
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 922 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vfwscanf_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 931 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "wscanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl wscanf(
+ wchar_t const* const _Format,
+ ...)
+
+
+#line 939 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vfwscanf_l((__acrt_iob_func(0)), _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 948 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl _wscanf_s_l(
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 957 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vfwscanf_s_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 966 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+
+ __inline int __cdecl wscanf_s(
+ wchar_t const* const _Format,
+ ...)
+
+
+#line 976 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vfwscanf_s_l((__acrt_iob_func(0)), _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 985 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+ #line 987 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1003 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __declspec(dllimport) int __cdecl __stdio_common_vswprintf(
+ unsigned __int64 _Options,
+ wchar_t* _Buffer,
+ size_t _BufferCount,
+ wchar_t const* _Format,
+ _locale_t _Locale,
+ va_list _ArgList
+ );
+
+
+
+ __declspec(dllimport) int __cdecl __stdio_common_vswprintf_s(
+ unsigned __int64 _Options,
+ wchar_t* _Buffer,
+ size_t _BufferCount,
+ wchar_t const* _Format,
+ _locale_t _Locale,
+ va_list _ArgList
+ );
+
+
+
+ __declspec(dllimport) int __cdecl __stdio_common_vsnwprintf_s(
+ unsigned __int64 _Options,
+ wchar_t* _Buffer,
+ size_t _BufferCount,
+ size_t _MaxCount,
+ wchar_t const* _Format,
+ _locale_t _Locale,
+ va_list _ArgList
+ );
+
+
+
+ __declspec(dllimport) int __cdecl __stdio_common_vswprintf_p(
+ unsigned __int64 _Options,
+ wchar_t* _Buffer,
+ size_t _BufferCount,
+ wchar_t const* _Format,
+ _locale_t _Locale,
+ va_list _ArgList
+ );
+
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsnwprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl _vsnwprintf_l(
+ wchar_t* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1061 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int const _Result = __stdio_common_vswprintf(
+ (*__local_stdio_printf_options()) | (1ULL << 0),
+ _Buffer, _BufferCount, _Format, _Locale, _ArgList);
+
+ return _Result < 0 ? -1 : _Result;
+ }
+ #line 1069 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _vsnwprintf_s_l(
+ wchar_t* const _Buffer,
+ size_t const _BufferCount,
+ size_t const _MaxCount,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1083 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int const _Result = __stdio_common_vsnwprintf_s(
+ (*__local_stdio_printf_options()),
+ _Buffer, _BufferCount, _MaxCount, _Format, _Locale, _ArgList);
+
+ return _Result < 0 ? -1 : _Result;
+ }
+ #line 1091 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _vsnwprintf_s(
+ wchar_t* const _Buffer,
+ size_t const _BufferCount,
+ size_t const _MaxCount,
+ wchar_t const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 1104 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vsnwprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format, ((void *)0), _ArgList);
+ }
+ #line 1108 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snwprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _snwprintf( wchar_t *_Buffer, size_t _BufferCount, wchar_t const* _Format, ...); __declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsnwprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _vsnwprintf( wchar_t *_Buffer, size_t _BufferCount, wchar_t const* _Format, va_list _Args);
+#line 1117 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsnwprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl _vsnwprintf(
+ wchar_t* _Buffer,
+ size_t _BufferCount,
+ wchar_t const* _Format,
+ va_list _ArgList
+ )
+
+
+#line 1129 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vsnwprintf_l(_Buffer, _BufferCount, _Format, ((void *)0), _ArgList);
+ }
+ #line 1133 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+#line 1142 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _vswprintf_c_l(
+ wchar_t* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1155 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int const _Result = __stdio_common_vswprintf(
+ (*__local_stdio_printf_options()),
+ _Buffer, _BufferCount, _Format, _Locale, _ArgList);
+
+ return _Result < 0 ? -1 : _Result;
+ }
+ #line 1163 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _vswprintf_c(
+ wchar_t* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 1175 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vswprintf_c_l(_Buffer, _BufferCount, _Format, ((void *)0), _ArgList);
+ }
+ #line 1179 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _vswprintf_l(
+ wchar_t* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1192 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vswprintf_c_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);
+ }
+ #line 1196 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl __vswprintf_l(
+ wchar_t* const _Buffer,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1208 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vswprintf_l(_Buffer, (size_t)-1, _Format, _Locale, _ArgList);
+ }
+ #line 1212 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _vswprintf(
+ wchar_t* const _Buffer,
+ wchar_t const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 1223 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vswprintf_l(_Buffer, (size_t)-1, _Format, ((void *)0), _ArgList);
+ }
+ #line 1227 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl vswprintf(
+ wchar_t* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 1239 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vswprintf_c_l(_Buffer, _BufferCount, _Format, ((void *)0), _ArgList);
+ }
+ #line 1243 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _vswprintf_s_l(
+ wchar_t* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1256 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int const _Result = __stdio_common_vswprintf_s(
+ (*__local_stdio_printf_options()),
+ _Buffer, _BufferCount, _Format, _Locale, _ArgList);
+
+ return _Result < 0 ? -1 : _Result;
+ }
+ #line 1264 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+
+ __inline int __cdecl vswprintf_s(
+ wchar_t* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 1277 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vswprintf_s_l(_Buffer, _BufferCount, _Format, ((void *)0), _ArgList);
+ }
+ #line 1281 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+ #line 1283 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+#line 1291 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _vswprintf_p_l(
+ wchar_t* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1304 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int const _Result = __stdio_common_vswprintf_p(
+ (*__local_stdio_printf_options()),
+ _Buffer, _BufferCount, _Format, _Locale, _ArgList);
+
+ return _Result < 0 ? -1 : _Result;
+ }
+ #line 1312 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _vswprintf_p(
+ wchar_t* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 1324 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vswprintf_p_l(_Buffer, _BufferCount, _Format, ((void *)0), _ArgList);
+ }
+ #line 1328 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _vscwprintf_l(
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1339 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int const _Result = __stdio_common_vswprintf(
+ (*__local_stdio_printf_options()) | (1ULL << 1),
+ ((void *)0), 0, _Format, _Locale, _ArgList);
+
+ return _Result < 0 ? -1 : _Result;
+ }
+ #line 1347 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _vscwprintf(
+ wchar_t const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 1357 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vscwprintf_l(_Format, ((void *)0), _ArgList);
+ }
+ #line 1361 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _vscwprintf_p_l(
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1372 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int const _Result = __stdio_common_vswprintf_p(
+ (*__local_stdio_printf_options()) | (1ULL << 1),
+ ((void *)0), 0, _Format, _Locale, _ArgList);
+
+ return _Result < 0 ? -1 : _Result;
+ }
+ #line 1380 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _vscwprintf_p(
+ wchar_t const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 1390 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vscwprintf_p_l(_Format, ((void *)0), _ArgList);
+ }
+ #line 1394 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl __swprintf_l(
+ wchar_t* const _Buffer,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 1405 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = __vswprintf_l(_Buffer, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1414 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _swprintf_l(
+ wchar_t* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 1426 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vswprintf_c_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1435 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _swprintf(
+ wchar_t* const _Buffer,
+ wchar_t const* const _Format,
+ ...)
+
+
+#line 1445 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = __vswprintf_l(_Buffer, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1454 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl swprintf(
+ wchar_t* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ ...)
+
+
+#line 1465 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vswprintf_c_l(_Buffer, _BufferCount, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1474 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "__swprintf_l_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl __swprintf_l( wchar_t *_Buffer, wchar_t const* _Format, _locale_t _Locale, ...); __declspec(deprecated("This function or variable may be unsafe. Consider using " "_vswprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl __vswprintf_l( wchar_t *_Buffer, wchar_t const* _Format, _locale_t _Locale, va_list _Args);
+#line 1483 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "swprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _swprintf( wchar_t *_Buffer, wchar_t const* _Format, ...); __declspec(deprecated("This function or variable may be unsafe. Consider using " "vswprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _vswprintf( wchar_t *_Buffer, wchar_t const* _Format, va_list _Args);
+#line 1490 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _swprintf_s_l(
+ wchar_t* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 1502 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vswprintf_s_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1511 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+
+ __inline int __cdecl swprintf_s(
+ wchar_t* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ ...)
+
+
+#line 1523 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vswprintf_s_l(_Buffer, _BufferCount, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1532 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+ #line 1534 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+#line 1541 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _swprintf_p_l(
+ wchar_t* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 1553 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vswprintf_p_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1562 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _swprintf_p(
+ wchar_t* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ ...)
+
+
+#line 1573 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vswprintf_p_l(_Buffer, _BufferCount, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1582 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _swprintf_c_l(
+ wchar_t* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 1594 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vswprintf_c_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1603 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _swprintf_c(
+ wchar_t* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ ...)
+
+
+#line 1614 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vswprintf_c_l(_Buffer, _BufferCount, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1623 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snwprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl _snwprintf_l(
+ wchar_t* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 1635 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+
+ _Result = _vsnwprintf_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);
+
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1646 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _snwprintf(
+ wchar_t* _Buffer,
+ size_t _BufferCount,
+ wchar_t const* _Format,
+ ...)
+
+
+#line 1657 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+
+ _Result = _vsnwprintf_l(_Buffer, _BufferCount, _Format, ((void *)0), _ArgList);
+
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1668 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _snwprintf_s_l(
+ wchar_t* const _Buffer,
+ size_t const _BufferCount,
+ size_t const _MaxCount,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 1681 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vsnwprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1690 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _snwprintf_s(
+ wchar_t* const _Buffer,
+ size_t const _BufferCount,
+ size_t const _MaxCount,
+ wchar_t const* const _Format,
+ ...)
+
+
+#line 1702 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vsnwprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1711 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+#line 1719 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __inline int __cdecl _scwprintf_l(
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 1728 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vscwprintf_l(_Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1737 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _scwprintf(
+ wchar_t const* const _Format,
+ ...)
+
+
+#line 1746 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vscwprintf_l(_Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1755 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _scwprintf_p_l(
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 1765 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vscwprintf_p_l(_Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1774 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _scwprintf_p(
+ wchar_t const* const _Format,
+ ...)
+
+
+#line 1783 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vscwprintf_p_l(_Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1792 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+
+
+ #pragma warning(push)
+ #pragma warning(disable: 4141 6054)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #pragma warning(pop)
+ #line 1856 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+
+
+
+#line 1863 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+
+
+
+
+
+ __declspec(dllimport) int __cdecl __stdio_common_vswscanf(
+ unsigned __int64 _Options,
+ wchar_t const* _Buffer,
+ size_t _BufferCount,
+ wchar_t const* _Format,
+ _locale_t _Locale,
+ va_list _ArgList
+ );
+
+
+
+ __inline int __cdecl _vswscanf_l(
+ wchar_t const* const _Buffer,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1891 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return __stdio_common_vswscanf(
+ (*__local_stdio_scanf_options ()),
+ _Buffer, (size_t)-1, _Format, _Locale, _ArgList);
+ }
+ #line 1897 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl vswscanf(
+ wchar_t const* _Buffer,
+ wchar_t const* _Format,
+ va_list _ArgList
+ )
+
+
+#line 1908 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vswscanf_l(_Buffer, _Format, ((void *)0), _ArgList);
+ }
+ #line 1912 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _vswscanf_s_l(
+ wchar_t const* const _Buffer,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1924 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return __stdio_common_vswscanf(
+ (*__local_stdio_scanf_options ()) | (1ULL << 0),
+ _Buffer, (size_t)-1, _Format, _Locale, _ArgList);
+ }
+ #line 1930 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+
+
+ __inline int __cdecl vswscanf_s(
+ wchar_t const* const _Buffer,
+ wchar_t const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 1943 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return _vswscanf_s_l(_Buffer, _Format, ((void *)0), _ArgList);
+ }
+ #line 1947 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+ #line 1949 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+#line 1957 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsnwscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl _vsnwscanf_l(
+ wchar_t const* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1970 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return __stdio_common_vswscanf(
+ (*__local_stdio_scanf_options ()),
+ _Buffer, _BufferCount, _Format, _Locale, _ArgList);
+ }
+ #line 1976 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _vsnwscanf_s_l(
+ wchar_t const* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1989 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ return __stdio_common_vswscanf(
+ (*__local_stdio_scanf_options ()) | (1ULL << 0),
+ _Buffer, _BufferCount, _Format, _Locale, _ArgList);
+ }
+ #line 1995 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_swscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl _swscanf_l(
+ wchar_t const* const _Buffer,
+ wchar_t const* const _Format,
+ _locale_t _Locale,
+ ...)
+
+
+#line 2006 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vswscanf_l(_Buffer, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 2015 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "swscanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl swscanf(
+ wchar_t const* const _Buffer,
+ wchar_t const* const _Format,
+ ...)
+
+
+#line 2025 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vswscanf_l(_Buffer, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 2034 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _swscanf_s_l(
+ wchar_t const* const _Buffer,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 2045 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vswscanf_s_l(_Buffer, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 2054 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+
+
+ __inline int __cdecl swscanf_s(
+ wchar_t const* const _Buffer,
+ wchar_t const* const _Format,
+ ...)
+
+
+#line 2066 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vswscanf_s_l(_Buffer, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 2075 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+ #line 2077 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snwscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl _snwscanf_l(
+ wchar_t const* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 2089 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+
+ _Result = _vsnwscanf_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);
+
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 2100 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snwscanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl _snwscanf(
+ wchar_t const* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ ...)
+
+
+#line 2111 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+
+ _Result = _vsnwscanf_l(_Buffer, _BufferCount, _Format, ((void *)0), _ArgList);
+
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 2122 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _snwscanf_s_l(
+ wchar_t const* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 2134 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vsnwscanf_s_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 2143 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+ __inline int __cdecl _snwscanf_s(
+ wchar_t const* const _Buffer,
+ size_t const _BufferCount,
+ wchar_t const* const _Format,
+ ...)
+
+
+#line 2154 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vsnwscanf_s_l(_Buffer, _BufferCount, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 2163 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+
+
+
+#line 2168 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h"
+
+__pragma(pack(pop))
+
+#pragma warning(pop)
+#pragma external_header(pop)
+#line 14 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+#pragma warning(push)
+#pragma warning(disable: 4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727 )
+
+
+__pragma(pack(push, 8))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 53 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 71 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+typedef __int64 fpos_t;
+
+
+
+
+
+
+ __declspec(dllimport) errno_t __cdecl _get_stream_buffer_pointers(
+ FILE* _Stream,
+ char*** _Base,
+ char*** _Pointer,
+ int** _Count
+ );
+
+
+
+
+
+
+
+
+
+
+ __declspec(dllimport) errno_t __cdecl clearerr_s(
+ FILE* _Stream
+ );
+
+
+
+ __declspec(dllimport) errno_t __cdecl fopen_s(
+ FILE** _Stream,
+ char const* _FileName,
+ char const* _Mode
+ );
+
+
+
+ __declspec(dllimport) size_t __cdecl fread_s(
+ void* _Buffer,
+ size_t _BufferSize,
+ size_t _ElementSize,
+ size_t _ElementCount,
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) errno_t __cdecl freopen_s(
+ FILE** _Stream,
+ char const* _FileName,
+ char const* _Mode,
+ FILE* _OldStream
+ );
+
+
+ __declspec(dllimport) char* __cdecl gets_s(
+ char* _Buffer,
+ rsize_t _Size
+ );
+
+
+ __declspec(dllimport) errno_t __cdecl tmpfile_s(
+ FILE** _Stream
+ );
+
+
+
+ __declspec(dllimport) errno_t __cdecl tmpnam_s(
+ char* _Buffer,
+ rsize_t _Size
+ );
+
+ #line 145 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ __declspec(dllimport) void __cdecl clearerr(
+ FILE* _Stream
+ );
+
+
+
+ __declspec(dllimport) int __cdecl fclose(
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) int __cdecl _fcloseall(void);
+
+
+ __declspec(dllimport) FILE* __cdecl _fdopen(
+ int _FileHandle,
+ char const* _Mode
+ );
+
+
+ __declspec(dllimport) int __cdecl feof(
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) int __cdecl ferror(
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) int __cdecl fflush(
+ FILE* _Stream
+ );
+
+
+
+ __declspec(dllimport) int __cdecl fgetc(
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) int __cdecl _fgetchar(void);
+
+
+
+ __declspec(dllimport) int __cdecl fgetpos(
+ FILE* _Stream,
+ fpos_t* _Position
+ );
+
+
+
+ __declspec(dllimport) char* __cdecl fgets(
+ char* _Buffer,
+ int _MaxCount,
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) int __cdecl _fileno(
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) int __cdecl _flushall(void);
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "fopen_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __declspec(dllimport) FILE* __cdecl fopen(
+ char const* _FileName,
+ char const* _Mode
+ );
+
+
+
+
+ __declspec(dllimport) int __cdecl fputc(
+ int _Character,
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) int __cdecl _fputchar(
+ int _Character
+ );
+
+
+
+ __declspec(dllimport) int __cdecl fputs(
+ char const* _Buffer,
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) size_t __cdecl fread(
+ void* _Buffer,
+ size_t _ElementSize,
+ size_t _ElementCount,
+ FILE* _Stream
+ );
+
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "freopen_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __declspec(dllimport) FILE* __cdecl freopen(
+ char const* _FileName,
+ char const* _Mode,
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) FILE* __cdecl _fsopen(
+ char const* _FileName,
+ char const* _Mode,
+ int _ShFlag
+ );
+
+
+
+ __declspec(dllimport) int __cdecl fsetpos(
+ FILE* _Stream,
+ fpos_t const* _Position
+ );
+
+
+
+ __declspec(dllimport) int __cdecl fseek(
+ FILE* _Stream,
+ long _Offset,
+ int _Origin
+ );
+
+
+
+ __declspec(dllimport) int __cdecl _fseeki64(
+ FILE* _Stream,
+ __int64 _Offset,
+ int _Origin
+ );
+
+
+
+ __declspec(dllimport) long __cdecl ftell(
+ FILE* _Stream
+ );
+
+
+
+ __declspec(dllimport) __int64 __cdecl _ftelli64(
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) size_t __cdecl fwrite(
+ void const* _Buffer,
+ size_t _ElementSize,
+ size_t _ElementCount,
+ FILE* _Stream
+ );
+
+
+
+ __declspec(dllimport) int __cdecl getc(
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) int __cdecl getchar(void);
+
+
+ __declspec(dllimport) int __cdecl _getmaxstdio(void);
+
+
+#line 319 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __declspec(dllimport) int __cdecl _getw(
+ FILE* _Stream
+ );
+
+ __declspec(dllimport) void __cdecl perror(
+ char const* _ErrorMessage
+ );
+
+
+
+
+
+ __declspec(dllimport) int __cdecl _pclose(
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) FILE* __cdecl _popen(
+ char const* _Command,
+ char const* _Mode
+ );
+
+ #line 344 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+ __declspec(dllimport) int __cdecl putc(
+ int _Character,
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) int __cdecl putchar(
+ int _Character
+ );
+
+
+ __declspec(dllimport) int __cdecl puts(
+ char const* _Buffer
+ );
+
+
+
+ __declspec(dllimport) int __cdecl _putw(
+ int _Word,
+ FILE* _Stream
+ );
+
+ __declspec(dllimport) int __cdecl remove(
+ char const* _FileName
+ );
+
+
+ __declspec(dllimport) int __cdecl rename(
+ char const* _OldFileName,
+ char const* _NewFileName
+ );
+
+ __declspec(dllimport) int __cdecl _unlink(
+ char const* _FileName
+ );
+
+
+
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_unlink" ". See online help for details."))
+ __declspec(dllimport) int __cdecl unlink(
+ char const* _FileName
+ );
+
+ #line 391 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ __declspec(dllimport) void __cdecl rewind(
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) int __cdecl _rmtmp(void);
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "setvbuf" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __declspec(dllimport) void __cdecl setbuf(
+ FILE* _Stream,
+ char* _Buffer
+ );
+
+
+ __declspec(dllimport) int __cdecl _setmaxstdio(
+ int _Maximum
+ );
+
+
+
+ __declspec(dllimport) int __cdecl setvbuf(
+ FILE* _Stream,
+ char* _Buffer,
+ int _Mode,
+ size_t _Size
+ );
+
+
+
+
+#line 423 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __declspec(dllimport) __declspec(allocator) char* __cdecl _tempnam(
+ char const* _DirectoryName,
+ char const* _FilePrefix
+ );
+
+
+
+#line 433 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "tmpfile_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __declspec(dllimport) FILE* __cdecl tmpfile(void);
+
+
+#line 442 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+__declspec(deprecated("This function or variable may be unsafe. Consider using " "tmpnam_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __declspec(dllimport) char* __cdecl tmpnam( char *_Buffer);
+#line 448 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+ __declspec(dllimport) int __cdecl ungetc(
+ int _Character,
+ FILE* _Stream
+ );
+
+
+
+
+
+
+
+
+ __declspec(dllimport) void __cdecl _lock_file(
+ FILE* _Stream
+ );
+
+ __declspec(dllimport) void __cdecl _unlock_file(
+ FILE* _Stream
+ );
+
+
+
+ __declspec(dllimport) int __cdecl _fclose_nolock(
+ FILE* _Stream
+ );
+
+
+
+ __declspec(dllimport) int __cdecl _fflush_nolock(
+ FILE* _Stream
+ );
+
+
+
+ __declspec(dllimport) int __cdecl _fgetc_nolock(
+ FILE* _Stream
+ );
+
+
+
+ __declspec(dllimport) int __cdecl _fputc_nolock(
+ int _Character,
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) size_t __cdecl _fread_nolock(
+ void* _Buffer,
+ size_t _ElementSize,
+ size_t _ElementCount,
+ FILE* _Stream
+ );
+
+
+
+ __declspec(dllimport) size_t __cdecl _fread_nolock_s(
+ void* _Buffer,
+ size_t _BufferSize,
+ size_t _ElementSize,
+ size_t _ElementCount,
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) int __cdecl _fseek_nolock(
+ FILE* _Stream,
+ long _Offset,
+ int _Origin
+ );
+
+
+ __declspec(dllimport) int __cdecl _fseeki64_nolock(
+ FILE* _Stream,
+ __int64 _Offset,
+ int _Origin
+ );
+
+
+ __declspec(dllimport) long __cdecl _ftell_nolock(
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) __int64 __cdecl _ftelli64_nolock(
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) size_t __cdecl _fwrite_nolock(
+ void const* _Buffer,
+ size_t _ElementSize,
+ size_t _ElementCount,
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) int __cdecl _getc_nolock(
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) int __cdecl _putc_nolock(
+ int _Character,
+ FILE* _Stream
+ );
+
+
+ __declspec(dllimport) int __cdecl _ungetc_nolock(
+ int _Character,
+ FILE* _Stream
+ );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 586 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+ __declspec(dllimport) int* __cdecl __p__commode(void);
+
+
+
+
+
+ #line 596 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+
+
+
+#line 603 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+
+
+
+ __declspec(dllimport) int __cdecl __stdio_common_vfprintf(
+ unsigned __int64 _Options,
+ FILE* _Stream,
+ char const* _Format,
+ _locale_t _Locale,
+ va_list _ArgList
+ );
+
+ __declspec(dllimport) int __cdecl __stdio_common_vfprintf_s(
+ unsigned __int64 _Options,
+ FILE* _Stream,
+ char const* _Format,
+ _locale_t _Locale,
+ va_list _ArgList
+ );
+
+
+ __declspec(dllimport) int __cdecl __stdio_common_vfprintf_p(
+ unsigned __int64 _Options,
+ FILE* _Stream,
+ char const* _Format,
+ _locale_t _Locale,
+ va_list _ArgList
+ );
+
+
+ __inline int __cdecl _vfprintf_l(
+ FILE* const _Stream,
+ char const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 644 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return __stdio_common_vfprintf((*__local_stdio_printf_options()), _Stream, _Format, _Locale, _ArgList);
+ }
+ #line 648 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl vfprintf(
+ FILE* const _Stream,
+ char const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 658 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vfprintf_l(_Stream, _Format, ((void *)0), _ArgList);
+ }
+ #line 662 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _vfprintf_s_l(
+ FILE* const _Stream,
+ char const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 673 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return __stdio_common_vfprintf_s((*__local_stdio_printf_options()), _Stream, _Format, _Locale, _ArgList);
+ }
+ #line 677 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+
+ __inline int __cdecl vfprintf_s(
+ FILE* const _Stream,
+ char const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 689 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vfprintf_s_l(_Stream, _Format, ((void *)0), _ArgList);
+ }
+ #line 693 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ #line 695 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _vfprintf_p_l(
+ FILE* const _Stream,
+ char const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 706 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return __stdio_common_vfprintf_p((*__local_stdio_printf_options()), _Stream, _Format, _Locale, _ArgList);
+ }
+ #line 710 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _vfprintf_p(
+ FILE* const _Stream,
+ char const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 720 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vfprintf_p_l(_Stream, _Format, ((void *)0), _ArgList);
+ }
+ #line 724 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _vprintf_l(
+ char const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 734 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vfprintf_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);
+ }
+ #line 738 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl vprintf(
+ char const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 747 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vfprintf_l((__acrt_iob_func(1)), _Format, ((void *)0), _ArgList);
+ }
+ #line 751 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _vprintf_s_l(
+ char const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 761 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vfprintf_s_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);
+ }
+ #line 765 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+
+ __inline int __cdecl vprintf_s(
+ char const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 776 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vfprintf_s_l((__acrt_iob_func(1)), _Format, ((void *)0), _ArgList);
+ }
+ #line 780 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ #line 782 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _vprintf_p_l(
+ char const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 792 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vfprintf_p_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);
+ }
+ #line 796 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _vprintf_p(
+ char const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 805 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vfprintf_p_l((__acrt_iob_func(1)), _Format, ((void *)0), _ArgList);
+ }
+ #line 809 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _fprintf_l(
+ FILE* const _Stream,
+ char const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 819 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vfprintf_l(_Stream, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 828 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl fprintf(
+ FILE* const _Stream,
+ char const* const _Format,
+ ...)
+
+
+#line 837 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vfprintf_l(_Stream, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 846 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ __declspec(dllimport) int __cdecl _set_printf_count_output(
+ int _Value
+ );
+
+ __declspec(dllimport) int __cdecl _get_printf_count_output(void);
+
+
+ __inline int __cdecl _fprintf_s_l(
+ FILE* const _Stream,
+ char const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 862 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vfprintf_s_l(_Stream, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 871 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+
+ __inline int __cdecl fprintf_s(
+ FILE* const _Stream,
+ char const* const _Format,
+ ...)
+
+
+#line 882 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vfprintf_s_l(_Stream, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 891 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ #line 893 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _fprintf_p_l(
+ FILE* const _Stream,
+ char const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 903 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vfprintf_p_l(_Stream, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 912 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _fprintf_p(
+ FILE* const _Stream,
+ char const* const _Format,
+ ...)
+
+
+#line 921 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vfprintf_p_l(_Stream, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 930 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _printf_l(
+ char const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 939 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vfprintf_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 948 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl printf(
+ char const* const _Format,
+ ...)
+
+
+#line 956 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vfprintf_l((__acrt_iob_func(1)), _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 965 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _printf_s_l(
+ char const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 974 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vfprintf_s_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 983 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+
+ __inline int __cdecl printf_s(
+ char const* const _Format,
+ ...)
+
+
+#line 993 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vfprintf_s_l((__acrt_iob_func(1)), _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1002 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ #line 1004 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _printf_p_l(
+ char const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 1013 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vfprintf_p_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1022 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _printf_p(
+ char const* const _Format,
+ ...)
+
+
+#line 1030 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vfprintf_p_l((__acrt_iob_func(1)), _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1039 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+
+
+
+
+ __declspec(dllimport) int __cdecl __stdio_common_vfscanf(
+ unsigned __int64 _Options,
+ FILE* _Stream,
+ char const* _Format,
+ _locale_t _Locale,
+ va_list _Arglist
+ );
+
+
+ __inline int __cdecl _vfscanf_l(
+ FILE* const _Stream,
+ char const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1064 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return __stdio_common_vfscanf(
+ (*__local_stdio_scanf_options ()),
+ _Stream, _Format, _Locale, _ArgList);
+ }
+ #line 1070 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl vfscanf(
+ FILE* const _Stream,
+ char const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 1080 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vfscanf_l(_Stream, _Format, ((void *)0), _ArgList);
+ }
+ #line 1084 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _vfscanf_s_l(
+ FILE* const _Stream,
+ char const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1095 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return __stdio_common_vfscanf(
+ (*__local_stdio_scanf_options ()) | (1ULL << 0),
+ _Stream, _Format, _Locale, _ArgList);
+ }
+ #line 1101 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+
+
+ __inline int __cdecl vfscanf_s(
+ FILE* const _Stream,
+ char const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 1114 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vfscanf_s_l(_Stream, _Format, ((void *)0), _ArgList);
+ }
+ #line 1118 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ #line 1120 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _vscanf_l(
+ char const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1130 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vfscanf_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList);
+ }
+ #line 1134 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl vscanf(
+ char const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 1143 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vfscanf_l((__acrt_iob_func(0)), _Format, ((void *)0), _ArgList);
+ }
+ #line 1147 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _vscanf_s_l(
+ char const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1157 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vfscanf_s_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList);
+ }
+ #line 1161 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+
+ __inline int __cdecl vscanf_s(
+ char const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 1172 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vfscanf_s_l((__acrt_iob_func(0)), _Format, ((void *)0), _ArgList);
+ }
+ #line 1176 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ #line 1178 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_fscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl _fscanf_l(
+ FILE* const _Stream,
+ char const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 1188 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vfscanf_l(_Stream, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1197 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "fscanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl fscanf(
+ FILE* const _Stream,
+ char const* const _Format,
+ ...)
+
+
+#line 1206 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vfscanf_l(_Stream, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1215 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _fscanf_s_l(
+ FILE* const _Stream,
+ char const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 1225 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vfscanf_s_l(_Stream, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1234 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+
+ __inline int __cdecl fscanf_s(
+ FILE* const _Stream,
+ char const* const _Format,
+ ...)
+
+
+#line 1245 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vfscanf_s_l(_Stream, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1254 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ #line 1256 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_scanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl _scanf_l(
+ char const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 1265 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vfscanf_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1274 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "scanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl scanf(
+ char const* const _Format,
+ ...)
+
+
+#line 1282 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vfscanf_l((__acrt_iob_func(0)), _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1291 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _scanf_s_l(
+ char const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 1300 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vfscanf_s_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1309 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+
+ __inline int __cdecl scanf_s(
+ char const* const _Format,
+ ...)
+
+
+#line 1319 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vfscanf_s_l((__acrt_iob_func(0)), _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1328 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ #line 1330 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+
+
+
+
+
+
+ __declspec(dllimport) int __cdecl __stdio_common_vsprintf(
+ unsigned __int64 _Options,
+ char* _Buffer,
+ size_t _BufferCount,
+ char const* _Format,
+ _locale_t _Locale,
+ va_list _ArgList
+ );
+
+
+ __declspec(dllimport) int __cdecl __stdio_common_vsprintf_s(
+ unsigned __int64 _Options,
+ char* _Buffer,
+ size_t _BufferCount,
+ char const* _Format,
+ _locale_t _Locale,
+ va_list _ArgList
+ );
+
+
+ __declspec(dllimport) int __cdecl __stdio_common_vsnprintf_s(
+ unsigned __int64 _Options,
+ char* _Buffer,
+ size_t _BufferCount,
+ size_t _MaxCount,
+ char const* _Format,
+ _locale_t _Locale,
+ va_list _ArgList
+ );
+
+
+ __declspec(dllimport) int __cdecl __stdio_common_vsprintf_p(
+ unsigned __int64 _Options,
+ char* _Buffer,
+ size_t _BufferCount,
+ char const* _Format,
+ _locale_t _Locale,
+ va_list _ArgList
+ );
+
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsnprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl _vsnprintf_l(
+ char* const _Buffer,
+ size_t const _BufferCount,
+ char const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1391 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int const _Result = __stdio_common_vsprintf(
+ (*__local_stdio_printf_options()) | (1ULL << 0),
+ _Buffer, _BufferCount, _Format, _Locale, _ArgList);
+
+ return _Result < 0 ? -1 : _Result;
+ }
+ #line 1399 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+ __inline int __cdecl _vsnprintf(
+ char* const _Buffer,
+ size_t const _BufferCount,
+ char const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 1411 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vsnprintf_l(_Buffer, _BufferCount, _Format, ((void *)0), _ArgList);
+ }
+ #line 1415 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+
+
+
+
+
+
+
+#line 1426 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+ __inline int __cdecl vsnprintf(
+ char* const _Buffer,
+ size_t const _BufferCount,
+ char const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 1438 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int const _Result = __stdio_common_vsprintf(
+ (*__local_stdio_printf_options()) | (1ULL << 1),
+ _Buffer, _BufferCount, _Format, ((void *)0), _ArgList);
+
+ return _Result < 0 ? -1 : _Result;
+ }
+ #line 1446 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl _vsprintf_l(
+ char* const _Buffer,
+ char const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1458 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vsnprintf_l(_Buffer, (size_t)-1, _Format, _Locale, _ArgList);
+ }
+ #line 1462 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "vsprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl vsprintf(
+ char* const _Buffer,
+ char const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 1473 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vsnprintf_l(_Buffer, (size_t)-1, _Format, ((void *)0), _ArgList);
+ }
+ #line 1477 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+ __inline int __cdecl _vsprintf_s_l(
+ char* const _Buffer,
+ size_t const _BufferCount,
+ char const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1490 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int const _Result = __stdio_common_vsprintf_s(
+ (*__local_stdio_printf_options()),
+ _Buffer, _BufferCount, _Format, _Locale, _ArgList);
+
+ return _Result < 0 ? -1 : _Result;
+ }
+ #line 1498 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+
+
+ __inline int __cdecl vsprintf_s(
+ char* const _Buffer,
+ size_t const _BufferCount,
+ char const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 1512 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vsprintf_s_l(_Buffer, _BufferCount, _Format, ((void *)0), _ArgList);
+ }
+ #line 1516 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+#line 1524 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ #line 1526 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+ __inline int __cdecl _vsprintf_p_l(
+ char* const _Buffer,
+ size_t const _BufferCount,
+ char const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1539 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int const _Result = __stdio_common_vsprintf_p(
+ (*__local_stdio_printf_options()),
+ _Buffer, _BufferCount, _Format, _Locale, _ArgList);
+
+ return _Result < 0 ? -1 : _Result;
+ }
+ #line 1547 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+ __inline int __cdecl _vsprintf_p(
+ char* const _Buffer,
+ size_t const _BufferCount,
+ char const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 1559 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vsprintf_p_l(_Buffer, _BufferCount, _Format, ((void *)0), _ArgList);
+ }
+ #line 1563 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+ __inline int __cdecl _vsnprintf_s_l(
+ char* const _Buffer,
+ size_t const _BufferCount,
+ size_t const _MaxCount,
+ char const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1577 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int const _Result = __stdio_common_vsnprintf_s(
+ (*__local_stdio_printf_options()),
+ _Buffer, _BufferCount, _MaxCount, _Format, _Locale, _ArgList);
+
+ return _Result < 0 ? -1 : _Result;
+ }
+ #line 1585 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+ __inline int __cdecl _vsnprintf_s(
+ char* const _Buffer,
+ size_t const _BufferCount,
+ size_t const _MaxCount,
+ char const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 1598 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vsnprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format, ((void *)0), _ArgList);
+ }
+ #line 1602 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+#line 1611 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+
+
+ __inline int __cdecl vsnprintf_s(
+ char* const _Buffer,
+ size_t const _BufferCount,
+ size_t const _MaxCount,
+ char const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 1626 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vsnprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format, ((void *)0), _ArgList);
+ }
+ #line 1630 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+#line 1639 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ #line 1641 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _vscprintf_l(
+ char const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1651 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int const _Result = __stdio_common_vsprintf(
+ (*__local_stdio_printf_options()) | (1ULL << 1),
+ ((void *)0), 0, _Format, _Locale, _ArgList);
+
+ return _Result < 0 ? -1 : _Result;
+ }
+ #line 1659 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _vscprintf(
+ char const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 1668 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vscprintf_l(_Format, ((void *)0), _ArgList);
+ }
+ #line 1672 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _vscprintf_p_l(
+ char const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1682 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int const _Result = __stdio_common_vsprintf_p(
+ (*__local_stdio_printf_options()) | (1ULL << 1),
+ ((void *)0), 0, _Format, _Locale, _ArgList);
+
+ return _Result < 0 ? -1 : _Result;
+ }
+ #line 1690 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _vscprintf_p(
+ char const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 1699 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vscprintf_p_l(_Format, ((void *)0), _ArgList);
+ }
+ #line 1703 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _vsnprintf_c_l(
+ char* const _Buffer,
+ size_t const _BufferCount,
+ char const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 1715 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int const _Result = __stdio_common_vsprintf(
+ (*__local_stdio_printf_options()),
+ _Buffer, _BufferCount, _Format, _Locale, _ArgList);
+
+ return _Result < 0 ? -1 : _Result;
+ }
+ #line 1723 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+ __inline int __cdecl _vsnprintf_c(
+ char* const _Buffer,
+ size_t const _BufferCount,
+ char const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 1735 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vsnprintf_c_l(_Buffer, _BufferCount, _Format, ((void *)0), _ArgList);
+ }
+ #line 1739 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_sprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl _sprintf_l(
+ char* const _Buffer,
+ char const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 1750 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+
+ _Result = _vsprintf_l(_Buffer, _Format, _Locale, _ArgList);
+
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1761 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+ __inline int __cdecl sprintf(
+ char* const _Buffer,
+ char const* const _Format,
+ ...)
+
+
+#line 1771 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+
+ _Result = _vsprintf_l(_Buffer, _Format, ((void *)0), _ArgList);
+
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1782 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "sprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) int __cdecl sprintf( char *_Buffer, char const* _Format, ...); __declspec(deprecated("This function or variable may be unsafe. Consider using " "vsprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) int __cdecl vsprintf( char *_Buffer, char const* _Format, va_list _Args);
+#line 1789 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+ __inline int __cdecl _sprintf_s_l(
+ char* const _Buffer,
+ size_t const _BufferCount,
+ char const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 1801 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vsprintf_s_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1810 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+
+
+ __inline int __cdecl sprintf_s(
+ char* const _Buffer,
+ size_t const _BufferCount,
+ char const* const _Format,
+ ...)
+
+
+#line 1823 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vsprintf_s_l(_Buffer, _BufferCount, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1832 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ #line 1834 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+#line 1841 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+ __inline int __cdecl _sprintf_p_l(
+ char* const _Buffer,
+ size_t const _BufferCount,
+ char const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 1853 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vsprintf_p_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1862 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+ __inline int __cdecl _sprintf_p(
+ char* const _Buffer,
+ size_t const _BufferCount,
+ char const* const _Format,
+ ...)
+
+
+#line 1873 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vsprintf_p_l(_Buffer, _BufferCount, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1882 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl _snprintf_l(
+ char* const _Buffer,
+ size_t const _BufferCount,
+ char const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 1894 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+
+ _Result = _vsnprintf_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);
+
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1905 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+
+
+
+
+
+
+
+#line 1916 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+ __inline int __cdecl snprintf(
+ char* const _Buffer,
+ size_t const _BufferCount,
+ char const* const _Format,
+ ...)
+
+
+#line 1927 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = vsnprintf(_Buffer, _BufferCount, _Format, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1936 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+ __inline int __cdecl _snprintf(
+ char* const _Buffer,
+ size_t const _BufferCount,
+ char const* const _Format,
+ ...)
+
+
+#line 1947 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vsnprintf(_Buffer, _BufferCount, _Format, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1956 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) int __cdecl _snprintf( char *_Buffer, size_t _BufferCount, char const* _Format, ...); __declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsnprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) int __cdecl _vsnprintf( char *_Buffer, size_t _BufferCount, char const* _Format, va_list _Args);
+#line 1965 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+ __inline int __cdecl _snprintf_c_l(
+ char* const _Buffer,
+ size_t const _BufferCount,
+ char const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 1977 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vsnprintf_c_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 1986 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+ __inline int __cdecl _snprintf_c(
+ char* const _Buffer,
+ size_t const _BufferCount,
+ char const* const _Format,
+ ...)
+
+
+#line 1997 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vsnprintf_c_l(_Buffer, _BufferCount, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 2006 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+ __inline int __cdecl _snprintf_s_l(
+ char* const _Buffer,
+ size_t const _BufferCount,
+ size_t const _MaxCount,
+ char const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 2019 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vsnprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 2028 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+ __inline int __cdecl _snprintf_s(
+ char* const _Buffer,
+ size_t const _BufferCount,
+ size_t const _MaxCount,
+ char const* const _Format,
+ ...)
+
+
+#line 2040 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vsnprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 2049 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+#line 2057 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _scprintf_l(
+ char const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 2066 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vscprintf_l(_Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 2075 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _scprintf(
+ char const* const _Format,
+ ...)
+
+
+#line 2083 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vscprintf_l(_Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 2092 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _scprintf_p_l(
+ char const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 2101 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vscprintf_p_l(_Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 2110 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _scprintf_p(
+ char const* const _Format,
+ ...)
+
+
+#line 2118 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vscprintf_p(_Format, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 2127 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+
+
+
+ __declspec(dllimport) int __cdecl __stdio_common_vsscanf(
+ unsigned __int64 _Options,
+ char const* _Buffer,
+ size_t _BufferCount,
+ char const* _Format,
+ _locale_t _Locale,
+ va_list _ArgList
+ );
+
+
+ __inline int __cdecl _vsscanf_l(
+ char const* const _Buffer,
+ char const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 2152 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return __stdio_common_vsscanf(
+ (*__local_stdio_scanf_options ()),
+ _Buffer, (size_t)-1, _Format, _Locale, _ArgList);
+ }
+ #line 2158 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl vsscanf(
+ char const* const _Buffer,
+ char const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 2168 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vsscanf_l(_Buffer, _Format, ((void *)0), _ArgList);
+ }
+ #line 2172 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _vsscanf_s_l(
+ char const* const _Buffer,
+ char const* const _Format,
+ _locale_t const _Locale,
+ va_list _ArgList
+ )
+
+
+#line 2183 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return __stdio_common_vsscanf(
+ (*__local_stdio_scanf_options ()) | (1ULL << 0),
+ _Buffer, (size_t)-1, _Format, _Locale, _ArgList);
+ }
+ #line 2189 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+ #pragma warning(push)
+ #pragma warning(disable: 6530)
+
+
+ __inline int __cdecl vsscanf_s(
+ char const* const _Buffer,
+ char const* const _Format,
+ va_list _ArgList
+ )
+
+
+#line 2204 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ return _vsscanf_s_l(_Buffer, _Format, ((void *)0), _ArgList);
+ }
+ #line 2208 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+#line 2215 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ #pragma warning(pop)
+
+ #line 2219 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_sscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl _sscanf_l(
+ char const* const _Buffer,
+ char const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 2229 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vsscanf_l(_Buffer, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 2238 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "sscanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl sscanf(
+ char const* const _Buffer,
+ char const* const _Format,
+ ...)
+
+
+#line 2247 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+ _Result = _vsscanf_l(_Buffer, _Format, ((void *)0), _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 2256 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _sscanf_s_l(
+ char const* const _Buffer,
+ char const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 2266 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+ _Result = _vsscanf_s_l(_Buffer, _Format, _Locale, _ArgList);
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 2275 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+
+ __inline int __cdecl sscanf_s(
+ char const* const _Buffer,
+ char const* const _Format,
+ ...)
+
+
+#line 2286 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+
+ _Result = vsscanf_s(_Buffer, _Format, _ArgList);
+
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 2297 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ #line 2299 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ #pragma warning(push)
+ #pragma warning(disable: 6530)
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl _snscanf_l(
+ char const* const _Buffer,
+ size_t const _BufferCount,
+ char const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 2313 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+
+ _Result = __stdio_common_vsscanf(
+ (*__local_stdio_scanf_options ()),
+ _Buffer, _BufferCount, _Format, _Locale, _ArgList);
+
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 2326 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snscanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details."))
+ __inline int __cdecl _snscanf(
+ char const* const _Buffer,
+ size_t const _BufferCount,
+ char const* const _Format,
+ ...)
+
+
+#line 2336 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+
+ _Result = __stdio_common_vsscanf(
+ (*__local_stdio_scanf_options ()),
+ _Buffer, _BufferCount, _Format, ((void *)0), _ArgList);
+
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 2349 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+ __inline int __cdecl _snscanf_s_l(
+ char const* const _Buffer,
+ size_t const _BufferCount,
+ char const* const _Format,
+ _locale_t const _Locale,
+ ...)
+
+
+#line 2361 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Locale)));
+
+ _Result = __stdio_common_vsscanf(
+ (*__local_stdio_scanf_options ()) | (1ULL << 0),
+ _Buffer, _BufferCount, _Format, _Locale, _ArgList);
+
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 2374 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+ __inline int __cdecl _snscanf_s(
+ char const* const _Buffer,
+ size_t const _BufferCount,
+ char const* const _Format,
+ ...)
+
+
+#line 2384 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+ {
+ int _Result;
+ va_list _ArgList;
+ ((void)(__va_start(&_ArgList, _Format)));
+
+ _Result = __stdio_common_vsscanf(
+ (*__local_stdio_scanf_options ()) | (1ULL << 0),
+ _Buffer, _BufferCount, _Format, ((void *)0), _ArgList);
+
+ ((void)(_ArgList = (va_list)0));
+ return _Result;
+ }
+ #line 2397 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ #pragma warning(pop)
+
+
+
+#line 2403 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 2419 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_tempnam" ". See online help for details."))
+ __declspec(dllimport) char* __cdecl tempnam(
+ char const* _Directory,
+ char const* _FilePrefix
+ );
+
+
+
+#line 2429 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_fcloseall" ". See online help for details.")) __declspec(dllimport) int __cdecl fcloseall(void);
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_fdopen" ". See online help for details.")) __declspec(dllimport) FILE* __cdecl fdopen( int _FileHandle, char const* _Format);
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_fgetchar" ". See online help for details.")) __declspec(dllimport) int __cdecl fgetchar(void);
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_fileno" ". See online help for details.")) __declspec(dllimport) int __cdecl fileno( FILE* _Stream);
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_flushall" ". See online help for details.")) __declspec(dllimport) int __cdecl flushall(void);
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_fputchar" ". See online help for details.")) __declspec(dllimport) int __cdecl fputchar( int _Ch);
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_getw" ". See online help for details.")) __declspec(dllimport) int __cdecl getw( FILE* _Stream);
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_putw" ". See online help for details.")) __declspec(dllimport) int __cdecl putw( int _Ch, FILE* _Stream);
+ __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_rmtmp" ". See online help for details.")) __declspec(dllimport) int __cdecl rmtmp(void);
+
+ #line 2441 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+#line 2442 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+
+
+
+__pragma(pack(pop))
+
+#pragma warning(pop)
+#line 2449 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt\\stdio.h"
+#pragma external_header(pop)
+#line 20 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+#line 28 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+#line 36 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+#line 45 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+#line 50 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+typedef unsigned __int64 size_t;
+
+
+#line 57 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+typedef long NTSTATUS;
+#line 62 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+typedef unsigned long DWORD;
+
+
+
+
+
+
+
+#line 72 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+#line 78 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+#line 86 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+#line 87 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+#line 93 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+#line 97 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+#line 99 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 114 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+#pragma warning(push)
+#pragma warning(disable: 28210)
+
+
+
+
+#line 122 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+#line 127 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+typedef char __C_ASSERT__[(2147483647 <= 2147483647)?1:-1];
+typedef char __C_ASSERT__[(2147483647 > 1)?1:-1];
+
+
+
+
+
+
+#line 136 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+typedef char __C_ASSERT__[((0xffff / sizeof(wchar_t)) <= (0xffff / sizeof(wchar_t)))?1:-1];
+typedef char __C_ASSERT__[((0xffff / sizeof(wchar_t)) > 1)?1:-1];
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef char* NTSTRSAFE_PSTR;
+typedef const char* NTSTRSAFE_PCSTR;
+typedef wchar_t* NTSTRSAFE_PWSTR;
+typedef const wchar_t* NTSTRSAFE_PCWSTR;
+typedef const wchar_t __unaligned* NTSTRSAFE_PCUWSTR;
+
+
+
+typedef const char* STRSAFE_PCNZCH;
+typedef const wchar_t* STRSAFE_PCNZWCH;
+typedef const wchar_t __unaligned* STRSAFE_PCUNZWCH;
+
+
+
+
+
+static __inline NTSTATUS __stdcall
+RtlStringLengthWorkerA(
+ STRSAFE_PCNZCH psz,
+ size_t cchMax,
+ size_t* pcchLength);
+
+
+
+static __inline NTSTATUS __stdcall
+RtlStringLengthWorkerW(
+ STRSAFE_PCNZWCH psz,
+ size_t cchMax,
+ size_t* pcchLength);
+
+
+static __inline NTSTATUS __stdcall
+RtlUnalignedStringLengthWorkerW(
+ STRSAFE_PCUNZWCH psz,
+ size_t cchMax,
+ size_t* pcchLength);
+#line 207 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+static __inline NTSTATUS __stdcall
+RtlStringExValidateSrcA(
+ STRSAFE_PCNZCH* ppszSrc,
+
+
+ size_t* pcchToRead,
+ const size_t cchMax,
+ DWORD dwFlags);
+
+
+
+
+
+static __inline NTSTATUS __stdcall
+RtlStringExValidateSrcW(
+ STRSAFE_PCNZWCH* ppszSrc,
+
+
+ size_t* pcchToRead,
+ const size_t cchMax,
+ DWORD dwFlags);
+
+
+
+
+static __inline NTSTATUS __stdcall
+RtlStringValidateDestA(
+ STRSAFE_PCNZCH pszDest,
+ size_t cchDest,
+ const size_t cchMax);
+
+
+static __inline NTSTATUS __stdcall
+RtlStringValidateDestAndLengthA(
+ NTSTRSAFE_PCSTR pszDest,
+ size_t cchDest,
+ size_t* pcchDestLength,
+ const size_t cchMax);
+
+
+
+
+static __inline NTSTATUS __stdcall
+RtlStringValidateDestW(
+ STRSAFE_PCNZWCH pszDest,
+ size_t cchDest,
+ const size_t cchMax);
+
+
+static __inline NTSTATUS __stdcall
+RtlStringValidateDestAndLengthW(
+ NTSTRSAFE_PCWSTR pszDest,
+ size_t cchDest,
+ size_t* pcchDestLength,
+ const size_t cchMax);
+
+
+
+static __inline NTSTATUS __stdcall
+RtlStringExValidateDestA(
+ STRSAFE_PCNZCH pszDest,
+ size_t cchDest,
+ const size_t cchMax,
+ DWORD dwFlags);
+
+static __inline NTSTATUS __stdcall
+RtlStringExValidateDestAndLengthA(
+ NTSTRSAFE_PCSTR pszDest,
+ size_t cchDest,
+ size_t* pcchDestLength,
+ const size_t cchMax,
+ DWORD dwFlags);
+
+
+
+static __inline NTSTATUS __stdcall
+RtlStringExValidateDestW(
+ STRSAFE_PCNZWCH pszDest,
+ size_t cchDest,
+ const size_t cchMax,
+ DWORD dwFlags);
+
+static __inline NTSTATUS __stdcall
+RtlStringExValidateDestAndLengthW(
+ NTSTRSAFE_PCWSTR pszDest,
+ size_t cchDest,
+ size_t* pcchDestLength,
+ const size_t cchMax,
+ DWORD dwFlags);
+
+
+
+static __inline NTSTATUS __stdcall
+RtlStringCopyWorkerA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cchDest,
+ size_t* pcchNewDestLength,
+ STRSAFE_PCNZCH pszSrc,
+ size_t cchToCopy);
+
+
+
+static __inline NTSTATUS __stdcall
+RtlStringCopyWorkerW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cchDest,
+ size_t* pcchNewDestLength,
+ STRSAFE_PCNZWCH pszSrc,
+ size_t cchToCopy);
+
+
+
+static __inline NTSTATUS __stdcall
+RtlStringVPrintfWorkerA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cchDest,
+ size_t* pcchNewDestLength,
+ NTSTRSAFE_PCSTR pszFormat,
+ va_list argList);
+
+
+
+
+static __inline NTSTATUS __stdcall
+RtlStringVPrintfWorkerW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cchDest,
+ size_t* pcchNewDestLength,
+ NTSTRSAFE_PCWSTR pszFormat,
+ va_list argList);
+
+
+
+
+static __inline NTSTATUS __stdcall
+RtlStringExHandleFillBehindNullA(
+ NTSTRSAFE_PSTR pszDestEnd,
+ size_t cbRemaining,
+ DWORD dwFlags);
+
+
+
+static __inline NTSTATUS __stdcall
+RtlStringExHandleFillBehindNullW(
+ NTSTRSAFE_PWSTR pszDestEnd,
+ size_t cbRemaining,
+ DWORD dwFlags);
+
+
+
+
+ static __inline NTSTATUS __stdcall
+ RtlStringExHandleOtherFlagsA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cbDest,
+ size_t cchOriginalDestLength,
+ NTSTRSAFE_PSTR* ppszDestEnd,
+ size_t* pcchRemaining,
+ DWORD dwFlags);
+
+
+
+
+ static __inline NTSTATUS __stdcall
+ RtlStringExHandleOtherFlagsW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cbDest,
+ size_t cchOriginalDestLength,
+ NTSTRSAFE_PWSTR* ppszDestEnd,
+ size_t* pcchRemaining,
+ DWORD dwFlags);
+
+
+
+
+
+
+
+
+
+static __inline NTSTATUS __stdcall
+RtlUnicodeStringInitWorker(
+ PUNICODE_STRING DestinationString,
+ NTSTRSAFE_PCWSTR pszSrc,
+ const size_t cchMax,
+ DWORD dwFlags);
+
+static __inline NTSTATUS __stdcall
+RtlUnicodeStringValidateWorker(
+ PCUNICODE_STRING SourceString,
+ const size_t cchMax,
+ DWORD dwFlags);
+
+
+ static __inline NTSTATUS __stdcall
+ RtlUnicodeStringValidateSrcWorker(
+ PCUNICODE_STRING SourceString,
+ wchar_t** ppszSrc,
+ size_t* pcchSrcLength,
+ const size_t cchMax,
+ DWORD dwFlags);
+
+
+ static __inline NTSTATUS __stdcall
+ RtlUnicodeStringValidateDestWorker(
+ PCUNICODE_STRING DestinationString,
+ wchar_t** ppszDest,
+ size_t* pcchDest,
+ size_t* pcchDestLength,
+ const size_t cchMax,
+ DWORD dwFlags);
+
+static __inline NTSTATUS __stdcall
+RtlStringCopyWideCharArrayWorker(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cchDest,
+ size_t* pcchNewDestLength,
+ const wchar_t* pszSrc,
+ size_t cchSrcLength);
+
+static __inline NTSTATUS __stdcall
+RtlWideCharArrayCopyStringWorker(
+ wchar_t* pszDest,
+ size_t cchDest,
+ size_t* pcchNewDestLength,
+ NTSTRSAFE_PCWSTR pszSrc,
+ size_t cchToCopy);
+
+static __inline NTSTATUS __stdcall
+RtlWideCharArrayCopyWorker(
+ wchar_t* pszDest,
+ size_t cchDest,
+ size_t* pcchNewDestLength,
+ const wchar_t* pszSrc,
+ size_t cchSrcLength);
+
+static __inline NTSTATUS __stdcall
+RtlWideCharArrayVPrintfWorker(
+ wchar_t* pszDest,
+ size_t cchDest,
+ size_t* pcchNewDestLength,
+ NTSTRSAFE_PCWSTR pszFormat,
+ va_list argList);
+
+static __inline NTSTATUS __stdcall
+RtlUnicodeStringExHandleFill(
+ wchar_t* pszDestEnd,
+ size_t cchRemaining,
+ DWORD dwFlags);
+
+static __inline NTSTATUS __stdcall
+RtlUnicodeStringExHandleOtherFlags(
+ wchar_t* pszDest,
+ size_t cchDest,
+ size_t cchOriginalDestLength,
+ size_t* pcchNewDestLength,
+ wchar_t** ppszDestEnd,
+ size_t* pcchRemaining,
+ DWORD dwFlags);
+
+#line 473 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+
+
+
+#line 501 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+#pragma warning(disable : 4996)
+#pragma warning(disable : 4995)
+#pragma warning(disable : 4793)
+#pragma warning(disable : 28734)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCchCopyA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cchDest,
+ NTSTRSAFE_PCSTR pszSrc)
+{
+ NTSTATUS status;
+
+ status = RtlStringValidateDestA(pszDest, cchDest, 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ status = RtlStringCopyWorkerA(pszDest,
+ cchDest,
+ ((void *)0),
+ pszSrc,
+ (2147483647 - 1));
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = '\0';
+ }
+
+ return status;
+}
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCchCopyW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cchDest,
+ NTSTRSAFE_PCWSTR pszSrc)
+{
+ NTSTATUS status;
+
+ status = RtlStringValidateDestW(pszDest, cchDest, 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ status = RtlStringCopyWorkerW(pszDest,
+ cchDest,
+ ((void *)0),
+ pszSrc,
+ (2147483647 - 1));
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = L'\0';
+ }
+
+ return status;
+}
+
+
+#line 635 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCbCopyA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cbDest,
+ NTSTRSAFE_PCSTR pszSrc)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(char);
+
+ status = RtlStringValidateDestA(pszDest, cchDest, 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ status = RtlStringCopyWorkerA(pszDest,
+ cchDest,
+ ((void *)0),
+ pszSrc,
+ (2147483647 - 1));
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = '\0';
+ }
+
+ return status;
+}
+
+
+
+#pragma warning(push)
+#pragma warning(disable : 26036)
+
+__inline NTSTATUS __stdcall
+ RtlStringCbCopyW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cbDest,
+ NTSTRSAFE_PCWSTR pszSrc)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(wchar_t);
+
+ status = RtlStringValidateDestW(pszDest, cchDest, 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ status = RtlStringCopyWorkerW(pszDest,
+ cchDest,
+ ((void *)0),
+ pszSrc,
+ (2147483647 - 1));
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = L'\0';
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+#line 768 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCchCopyExA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cchDest,
+ NTSTRSAFE_PCSTR pszSrc,
+ NTSTRSAFE_PSTR* ppszDestEnd,
+ size_t* pcchRemaining,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+
+ status = RtlStringExValidateDestA(pszDest, cchDest, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PSTR pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+
+ status = RtlStringExValidateSrcA(&pszSrc, ((void *)0), 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+
+ if (cchDest != 0)
+ {
+ *pszDest = '\0';
+ }
+ }
+ else if (cchDest == 0)
+ {
+
+ if (*pszSrc != '\0')
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlStringCopyWorkerA(pszDest,
+ cchDest,
+ &cchCopied,
+ pszSrc,
+ (2147483647 - 1));
+
+ pszDestEnd = pszDest + cchCopied;
+ cchRemaining = cchDest - cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining > 1))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = cchRemaining * sizeof(char);
+
+
+ RtlStringExHandleFillBehindNullA(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+ else
+ {
+ if (cchDest != 0)
+ {
+ *pszDest = '\0';
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+ size_t cbDest;
+
+
+ cbDest = cchDest * sizeof(char);
+
+
+ RtlStringExHandleOtherFlagsA(pszDest,
+ cbDest,
+ 0,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcchRemaining)
+ {
+ *pcchRemaining = cchRemaining;
+ }
+ }
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = '\0';
+ }
+
+ return status;
+}
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCchCopyExW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cchDest,
+ NTSTRSAFE_PCWSTR pszSrc,
+ NTSTRSAFE_PWSTR* ppszDestEnd,
+ size_t* pcchRemaining,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+
+ status = RtlStringExValidateDestW(pszDest, cchDest, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PWSTR pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+
+ status = RtlStringExValidateSrcW(&pszSrc, ((void *)0), 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+
+ if (cchDest != 0)
+ {
+ *pszDest = L'\0';
+ }
+ }
+ else if (cchDest == 0)
+ {
+
+ if (*pszSrc != L'\0')
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlStringCopyWorkerW(pszDest,
+ cchDest,
+ &cchCopied,
+ pszSrc,
+ (2147483647 - 1));
+
+ pszDestEnd = pszDest + cchCopied;
+ cchRemaining = cchDest - cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining > 1))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = cchRemaining * sizeof(wchar_t);
+
+
+ RtlStringExHandleFillBehindNullW(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+ else
+ {
+ if (cchDest != 0)
+ {
+ *pszDest = L'\0';
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+ size_t cbDest;
+
+
+ cbDest = cchDest * sizeof(wchar_t);
+
+
+ RtlStringExHandleOtherFlagsW(pszDest,
+ cbDest,
+ 0,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcchRemaining)
+ {
+ *pcchRemaining = cchRemaining;
+ }
+ }
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = L'\0';
+ }
+
+ return status;
+}
+
+
+#line 1109 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCbCopyExA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cbDest,
+ NTSTRSAFE_PCSTR pszSrc,
+ NTSTRSAFE_PSTR* ppszDestEnd,
+ size_t* pcbRemaining,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(char);
+
+ status = RtlStringExValidateDestA(pszDest, cchDest, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PSTR pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+
+ status = RtlStringExValidateSrcA(&pszSrc, ((void *)0), 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+
+ if (cchDest != 0)
+ {
+ *pszDest = '\0';
+ }
+ }
+ else if (cchDest == 0)
+ {
+
+ if (*pszSrc != '\0')
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ else
+ {
+
+ __pragma(warning(push)) __pragma(warning(disable : 4548)) do {__noop(pszDest);} while((0,0) __pragma(warning(pop)) );
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlStringCopyWorkerA(pszDest,
+ cchDest,
+ &cchCopied,
+ pszSrc,
+ (2147483647 - 1));
+
+ pszDestEnd = pszDest + cchCopied;
+ cchRemaining = cchDest - cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining > 1))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char));
+
+
+ RtlStringExHandleFillBehindNullA(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+ else
+ {
+ if (cchDest != 0)
+ {
+ *pszDest = '\0';
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cbDest != 0))
+ {
+
+ RtlStringExHandleOtherFlagsA(pszDest,
+ cbDest,
+ 0,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcbRemaining)
+ {
+
+ *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char));
+ }
+ }
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = '\0';
+ }
+
+ return status;
+}
+
+
+
+#pragma warning(push)
+#pragma warning(disable: 26036)
+
+__inline NTSTATUS __stdcall
+ RtlStringCbCopyExW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cbDest,
+ NTSTRSAFE_PCWSTR pszSrc,
+ NTSTRSAFE_PWSTR* ppszDestEnd,
+ size_t* pcbRemaining,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(wchar_t);
+
+ status = RtlStringExValidateDestW(pszDest, cchDest, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PWSTR pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+
+ status = RtlStringExValidateSrcW(&pszSrc, ((void *)0), 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+
+ if (cchDest != 0)
+ {
+ *pszDest = L'\0';
+ }
+ }
+ else if (cchDest == 0)
+ {
+
+ if (*pszSrc != L'\0')
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ else
+ {
+
+ __pragma(warning(push)) __pragma(warning(disable : 4548)) do {__noop(pszDest);} while((0,0) __pragma(warning(pop)) );
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlStringCopyWorkerW(pszDest,
+ cchDest,
+ &cchCopied,
+ pszSrc,
+ (2147483647 - 1));
+
+ pszDestEnd = pszDest + cchCopied;
+ cchRemaining = cchDest - cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) && (dwFlags & 0x00000200))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t));
+
+
+ RtlStringExHandleFillBehindNullW(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+ else
+ {
+ if (cchDest != 0)
+ {
+ *pszDest = L'\0';
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cbDest != 0))
+ {
+
+ RtlStringExHandleOtherFlagsW(pszDest,
+ cbDest,
+ 0,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcbRemaining)
+ {
+
+ *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t));
+ }
+ }
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = L'\0';
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+#line 1457 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCchCopyNA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cchDest,
+ STRSAFE_PCNZCH pszSrc,
+ size_t cchToCopy)
+{
+ NTSTATUS status;
+
+ status = RtlStringValidateDestA(pszDest, cchDest, 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (cchToCopy > (2147483647 - 1))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+
+ *pszDest = '\0';
+ }
+ else
+ {
+ status = RtlStringCopyWorkerA(pszDest,
+ cchDest,
+ ((void *)0),
+ pszSrc,
+ cchToCopy);
+ }
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = '\0';
+ }
+
+ return status;
+}
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCchCopyNW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cchDest,
+ STRSAFE_PCNZWCH pszSrc,
+ size_t cchToCopy)
+{
+ NTSTATUS status;
+
+ status = RtlStringValidateDestW(pszDest, cchDest, 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (cchToCopy > (2147483647 - 1))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+
+ *pszDest = L'\0';
+ }
+ else
+ {
+ status = RtlStringCopyWorkerW(pszDest,
+ cchDest,
+ ((void *)0),
+ pszSrc,
+ cchToCopy);
+ }
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = L'\0';
+ }
+
+ return status;
+}
+
+
+#line 1606 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCbCopyNA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cbDest,
+ STRSAFE_PCNZCH pszSrc,
+ size_t cbToCopy)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(char);
+
+ status = RtlStringValidateDestA(pszDest, cchDest, 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ size_t cchToCopy = cbToCopy / sizeof(char);
+
+ if (cchToCopy > (2147483647 - 1))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+
+ *pszDest = '\0';
+ }
+ else
+ {
+ status = RtlStringCopyWorkerA(pszDest,
+ cchDest,
+ ((void *)0),
+ pszSrc,
+ cchToCopy);
+ }
+ }
+
+ return status;
+}
+
+
+
+#pragma warning(push)
+#pragma warning(disable : 26015)
+
+__inline NTSTATUS __stdcall
+ RtlStringCbCopyNW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cbDest,
+ STRSAFE_PCNZWCH pszSrc,
+ size_t cbToCopy)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(wchar_t);
+
+ status = RtlStringValidateDestW(pszDest, cchDest, 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ size_t cchToCopy = cbToCopy / sizeof(wchar_t);
+
+ if (cchToCopy > (2147483647 - 1))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+
+ *pszDest = L'\0';
+ }
+ else
+ {
+ status = RtlStringCopyWorkerW(pszDest,
+ cchDest,
+ ((void *)0),
+ pszSrc,
+ cchToCopy);
+ }
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+#line 1758 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCchCopyNExA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cchDest,
+ STRSAFE_PCNZCH pszSrc,
+ size_t cchToCopy,
+ NTSTRSAFE_PSTR* ppszDestEnd,
+ size_t* pcchRemaining,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+
+ status = RtlStringExValidateDestA(pszDest, cchDest, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PSTR pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+
+ status = RtlStringExValidateSrcA(&pszSrc, &cchToCopy, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+
+ if (cchDest != 0)
+ {
+ *pszDest = '\0';
+ }
+ }
+ else if (cchDest == 0)
+ {
+
+ if ((cchToCopy != 0) && (*pszSrc != '\0'))
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlStringCopyWorkerA(pszDest,
+ cchDest,
+ &cchCopied,
+ pszSrc,
+ cchToCopy);
+
+ pszDestEnd = pszDest + cchCopied;
+ cchRemaining = cchDest - cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining > 1))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = cchRemaining * sizeof(char);
+
+
+ RtlStringExHandleFillBehindNullA(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+ else
+ {
+ if (cchDest != 0)
+ {
+ *pszDest = '\0';
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+ size_t cbDest;
+
+
+ cbDest = cchDest * sizeof(char);
+
+
+ RtlStringExHandleOtherFlagsA(pszDest,
+ cbDest,
+ 0,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcchRemaining)
+ {
+ *pcchRemaining = cchRemaining;
+ }
+ }
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = '\0';
+ }
+
+ return status;
+}
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCchCopyNExW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cchDest,
+ STRSAFE_PCNZWCH pszSrc,
+ size_t cchToCopy,
+ NTSTRSAFE_PWSTR* ppszDestEnd,
+ size_t* pcchRemaining,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+
+ status = RtlStringExValidateDestW(pszDest, cchDest, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PWSTR pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+
+ status = RtlStringExValidateSrcW(&pszSrc, &cchToCopy, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+
+ if (cchDest != 0)
+ {
+ *pszDest = L'\0';
+ }
+ }
+ else if (cchDest == 0)
+ {
+
+ if ((cchToCopy != 0) && (*pszSrc != L'\0'))
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlStringCopyWorkerW(pszDest,
+ cchDest,
+ &cchCopied,
+ pszSrc,
+ cchToCopy);
+
+ pszDestEnd = pszDest + cchCopied;
+ cchRemaining = cchDest - cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining > 1))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = cchRemaining * sizeof(wchar_t);
+
+
+ RtlStringExHandleFillBehindNullW(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+ else
+ {
+ if (cchDest != 0)
+ {
+ *pszDest = L'\0';
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+ size_t cbDest;
+
+
+ cbDest = cchDest * sizeof(wchar_t);
+
+
+ RtlStringExHandleOtherFlagsW(pszDest,
+ cbDest,
+ 0,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcchRemaining)
+ {
+ *pcchRemaining = cchRemaining;
+ }
+ }
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = L'\0';
+ }
+
+ return status;
+}
+
+
+#line 2110 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCbCopyNExA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cbDest,
+ STRSAFE_PCNZCH pszSrc,
+ size_t cbToCopy,
+ NTSTRSAFE_PSTR* ppszDestEnd,
+ size_t* pcbRemaining,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(char);
+
+ status = RtlStringExValidateDestA(pszDest, cchDest, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PSTR pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+ size_t cchToCopy = cbToCopy / sizeof(char);
+
+ status = RtlStringExValidateSrcA(&pszSrc, &cchToCopy, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+
+ if (cchDest != 0)
+ {
+ *pszDest = '\0';
+ }
+ }
+ else if (cchDest == 0)
+ {
+
+ if ((cchToCopy != 0) && (*pszSrc != '\0'))
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ else
+ {
+
+ __pragma(warning(push)) __pragma(warning(disable : 4548)) do {__noop(pszDest);} while((0,0) __pragma(warning(pop)) );
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlStringCopyWorkerA(pszDest,
+ cchDest,
+ &cchCopied,
+ pszSrc,
+ cchToCopy);
+
+ pszDestEnd = pszDest + cchCopied;
+ cchRemaining = cchDest - cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining > 1))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char));
+
+
+ RtlStringExHandleFillBehindNullA(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+ else
+ {
+ if (cchDest != 0)
+ {
+ *pszDest = '\0';
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cbDest != 0))
+ {
+
+ RtlStringExHandleOtherFlagsA(pszDest,
+ cbDest,
+ 0,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcbRemaining)
+ {
+
+ *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char));
+ }
+ }
+ }
+
+ return status;
+}
+
+
+
+#pragma warning(push)
+#pragma warning(disable : 26015)
+
+__inline NTSTATUS __stdcall
+ RtlStringCbCopyNExW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cbDest,
+ STRSAFE_PCNZWCH pszSrc,
+ size_t cbToCopy,
+ NTSTRSAFE_PWSTR* ppszDestEnd,
+ size_t* pcbRemaining,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(wchar_t);
+
+ status = RtlStringExValidateDestW(pszDest, cchDest, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PWSTR pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+ size_t cchToCopy = cbToCopy / sizeof(wchar_t);
+
+ status = RtlStringExValidateSrcW(&pszSrc, &cchToCopy, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+
+ if (cchDest != 0)
+ {
+ *pszDest = L'\0';
+ }
+ }
+ else if (cchDest == 0)
+ {
+
+ if ((cchToCopy != 0) && (*pszSrc != L'\0'))
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ else
+ {
+
+ __pragma(warning(push)) __pragma(warning(disable : 4548)) do {__noop(pszDest);} while((0,0) __pragma(warning(pop)) );
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlStringCopyWorkerW(pszDest,
+ cchDest,
+ &cchCopied,
+ pszSrc,
+ cchToCopy);
+
+ pszDestEnd = pszDest + cchCopied;
+ cchRemaining = cchDest - cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) && (dwFlags & 0x00000200))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t));
+
+
+ RtlStringExHandleFillBehindNullW(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+ else
+ {
+ if (cchDest != 0)
+ {
+ *pszDest = L'\0';
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cbDest != 0))
+ {
+
+ RtlStringExHandleOtherFlagsW(pszDest,
+ cbDest,
+ 0,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcbRemaining)
+ {
+
+ *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t));
+ }
+ }
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+#line 2461 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCchCatA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cchDest,
+ NTSTRSAFE_PCSTR pszSrc)
+{
+ NTSTATUS status;
+ size_t cchDestLength;
+
+ status = RtlStringValidateDestAndLengthA(pszDest,
+ cchDest,
+ &cchDestLength,
+ 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ status = RtlStringCopyWorkerA(pszDest + cchDestLength,
+ cchDest - cchDestLength,
+ ((void *)0),
+ pszSrc,
+ (2147483647 - 1));
+ }
+
+ return status;
+}
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCchCatW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cchDest,
+ NTSTRSAFE_PCWSTR pszSrc)
+{
+ NTSTATUS status;
+ size_t cchDestLength;
+
+ status = RtlStringValidateDestAndLengthW(pszDest,
+ cchDest,
+ &cchDestLength,
+ 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ status = RtlStringCopyWorkerW(pszDest + cchDestLength,
+ cchDest - cchDestLength,
+ ((void *)0),
+ pszSrc,
+ (2147483647 - 1));
+ }
+
+ return status;
+}
+
+
+#line 2581 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCbCatA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cbDest,
+ NTSTRSAFE_PCSTR pszSrc)
+{
+ NTSTATUS status;
+ size_t cchDestLength;
+ size_t cchDest = cbDest / sizeof(char);
+
+ status = RtlStringValidateDestAndLengthA(pszDest,
+ cchDest,
+ &cchDestLength,
+ 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ status = RtlStringCopyWorkerA(pszDest + cchDestLength,
+ cchDest - cchDestLength,
+ ((void *)0),
+ pszSrc,
+ (2147483647 - 1));
+ }
+
+ return status;
+}
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCbCatW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cbDest,
+ NTSTRSAFE_PCWSTR pszSrc)
+{
+ NTSTATUS status;
+ size_t cchDestLength;
+ size_t cchDest = cbDest / sizeof(wchar_t);
+
+ status = RtlStringValidateDestAndLengthW(pszDest,
+ cchDest,
+ &cchDestLength,
+ 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ status = RtlStringCopyWorkerW(pszDest + cchDestLength,
+ cchDest - cchDestLength,
+ ((void *)0),
+ pszSrc,
+ (2147483647 - 1));
+ }
+
+ return status;
+}
+
+
+#line 2703 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCchCatExA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cchDest,
+ NTSTRSAFE_PCSTR pszSrc,
+ NTSTRSAFE_PSTR* ppszDestEnd,
+ size_t* pcchRemaining,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ size_t cchDestLength;
+
+ status = RtlStringExValidateDestAndLengthA(pszDest,
+ cchDest,
+ &cchDestLength,
+ 2147483647,
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PSTR pszDestEnd = pszDest + cchDestLength;
+ size_t cchRemaining = cchDest - cchDestLength;
+
+ status = RtlStringExValidateSrcA(&pszSrc, ((void *)0), 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if (cchRemaining <= 1)
+ {
+
+ if (*pszSrc != '\0')
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlStringCopyWorkerA(pszDestEnd,
+ cchRemaining,
+ &cchCopied,
+ pszSrc,
+ (2147483647 - 1));
+
+ pszDestEnd = pszDestEnd + cchCopied;
+ cchRemaining = cchRemaining - cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining > 1))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = cchRemaining * sizeof(char);
+
+
+ RtlStringExHandleFillBehindNullA(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+ size_t cbDest;
+
+
+ cbDest = cchDest * sizeof(char);
+
+
+ RtlStringExHandleOtherFlagsA(pszDest,
+ cbDest,
+ cchDestLength,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcchRemaining)
+ {
+ *pcchRemaining = cchRemaining;
+ }
+ }
+ }
+
+ return status;
+}
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCchCatExW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cchDest,
+ NTSTRSAFE_PCWSTR pszSrc,
+ NTSTRSAFE_PWSTR* ppszDestEnd,
+ size_t* pcchRemaining,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ size_t cchDestLength;
+
+ status = RtlStringExValidateDestAndLengthW(pszDest,
+ cchDest,
+ &cchDestLength,
+ 2147483647,
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PWSTR pszDestEnd = pszDest + cchDestLength;
+ size_t cchRemaining = cchDest - cchDestLength;
+
+ status = RtlStringExValidateSrcW(&pszSrc, ((void *)0), 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if (cchRemaining <= 1)
+ {
+
+ if (*pszSrc != L'\0')
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlStringCopyWorkerW(pszDestEnd,
+ cchRemaining,
+ &cchCopied,
+ pszSrc,
+ (2147483647 - 1));
+
+ pszDestEnd = pszDestEnd + cchCopied;
+ cchRemaining = cchRemaining - cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining > 1))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = cchRemaining * sizeof(wchar_t);
+
+
+ RtlStringExHandleFillBehindNullW(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+ size_t cbDest;
+
+
+ cbDest = cchDest * sizeof(wchar_t);
+
+
+ RtlStringExHandleOtherFlagsW(pszDest,
+ cbDest,
+ cchDestLength,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcchRemaining)
+ {
+ *pcchRemaining = cchRemaining;
+ }
+ }
+ }
+
+ return status;
+}
+
+
+#line 3025 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCbCatExA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cbDest,
+ NTSTRSAFE_PCSTR pszSrc,
+ NTSTRSAFE_PSTR* ppszDestEnd,
+ size_t* pcbRemaining,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(char);
+ size_t cchDestLength;
+
+ status = RtlStringExValidateDestAndLengthA(pszDest,
+ cchDest,
+ &cchDestLength,
+ 2147483647,
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PSTR pszDestEnd = pszDest + cchDestLength;
+ size_t cchRemaining = cchDest - cchDestLength;
+
+ status = RtlStringExValidateSrcA(&pszSrc, ((void *)0), 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if (cchRemaining <= 1)
+ {
+
+ if (*pszSrc != '\0')
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlStringCopyWorkerA(pszDestEnd,
+ cchRemaining,
+ &cchCopied,
+ pszSrc,
+ (2147483647 - 1));
+
+ pszDestEnd = pszDestEnd + cchCopied;
+ cchRemaining = cchRemaining - cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining > 1))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char));
+
+
+ RtlStringExHandleFillBehindNullA(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cbDest != 0))
+ {
+
+ RtlStringExHandleOtherFlagsA(pszDest,
+ cbDest,
+ cchDestLength,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcbRemaining)
+ {
+
+ *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char));
+ }
+ }
+ }
+
+ return status;
+}
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCbCatExW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cbDest,
+ NTSTRSAFE_PCWSTR pszSrc,
+ NTSTRSAFE_PWSTR* ppszDestEnd,
+ size_t* pcbRemaining,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(wchar_t);
+ size_t cchDestLength;
+
+ status = RtlStringExValidateDestAndLengthW(pszDest,
+ cchDest,
+ &cchDestLength,
+ 2147483647,
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PWSTR pszDestEnd = pszDest + cchDestLength;
+ size_t cchRemaining = cchDest - cchDestLength;
+
+ status = RtlStringExValidateSrcW(&pszSrc, ((void *)0), 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if (cchRemaining <= 1)
+ {
+
+ if (*pszSrc != L'\0')
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlStringCopyWorkerW(pszDestEnd,
+ cchRemaining,
+ &cchCopied,
+ pszSrc,
+ (2147483647 - 1));
+
+ pszDestEnd = pszDestEnd + cchCopied;
+ cchRemaining = cchRemaining - cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) && (dwFlags & 0x00000200))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t));
+
+
+ RtlStringExHandleFillBehindNullW(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cbDest != 0))
+ {
+
+ RtlStringExHandleOtherFlagsW(pszDest,
+ cbDest,
+ cchDestLength,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcbRemaining)
+ {
+
+ *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t));
+ }
+ }
+ }
+
+ return status;
+}
+
+
+#line 3339 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCchCatNA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cchDest,
+ STRSAFE_PCNZCH pszSrc,
+ size_t cchToAppend)
+{
+ NTSTATUS status;
+ size_t cchDestLength;
+
+ status = RtlStringValidateDestAndLengthA(pszDest,
+ cchDest,
+ &cchDestLength,
+ 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (cchToAppend > (2147483647 - 1))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = RtlStringCopyWorkerA(pszDest + cchDestLength,
+ cchDest - cchDestLength,
+ ((void *)0),
+ pszSrc,
+ cchToAppend);
+ }
+ }
+
+ return status;
+}
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCchCatNW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cchDest,
+ STRSAFE_PCNZWCH pszSrc,
+ size_t cchToAppend)
+{
+ NTSTATUS status;
+ size_t cchDestLength;
+
+ status = RtlStringValidateDestAndLengthW(pszDest,
+ cchDest,
+ &cchDestLength,
+ 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (cchToAppend > (2147483647 - 1))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = RtlStringCopyWorkerW(pszDest + cchDestLength,
+ cchDest - cchDestLength,
+ ((void *)0),
+ pszSrc,
+ cchToAppend);
+ }
+ }
+
+ return status;
+}
+
+
+#line 3481 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCbCatNA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cbDest,
+ STRSAFE_PCNZCH pszSrc,
+ size_t cbToAppend)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(char);
+ size_t cchDestLength;
+
+ status = RtlStringValidateDestAndLengthA(pszDest,
+ cchDest,
+ &cchDestLength,
+ 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ size_t cchToAppend = cbToAppend / sizeof(char);
+
+ if (cchToAppend > (2147483647 - 1))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = RtlStringCopyWorkerA(pszDest + cchDestLength,
+ cchDest - cchDestLength,
+ ((void *)0),
+ pszSrc,
+ cchToAppend);
+ }
+ }
+
+ return status;
+}
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCbCatNW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cbDest,
+ STRSAFE_PCNZWCH pszSrc,
+ size_t cbToAppend)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(wchar_t);
+ size_t cchDestLength;
+
+ status = RtlStringValidateDestAndLengthW(pszDest,
+ cchDest,
+ &cchDestLength,
+ 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ size_t cchToAppend = cbToAppend / sizeof(wchar_t);
+
+ if (cchToAppend > (2147483647 - 1))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = RtlStringCopyWorkerW(pszDest + cchDestLength,
+ cchDest - cchDestLength,
+ ((void *)0),
+ pszSrc,
+ cchToAppend);
+ }
+ }
+
+ return status;
+}
+
+
+#line 3629 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCchCatNExA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cchDest,
+ STRSAFE_PCNZCH pszSrc,
+ size_t cchToAppend,
+ NTSTRSAFE_PSTR* ppszDestEnd,
+ size_t* pcchRemaining,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ size_t cchDestLength;
+
+ status = RtlStringExValidateDestAndLengthA(pszDest,
+ cchDest,
+ &cchDestLength,
+ 2147483647,
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PSTR pszDestEnd = pszDest + cchDestLength;
+ size_t cchRemaining = cchDest - cchDestLength;
+
+ status = RtlStringExValidateSrcA(&pszSrc, &cchToAppend, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if (cchRemaining <= 1)
+ {
+
+ if ((cchToAppend != 0) && (*pszSrc != '\0'))
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlStringCopyWorkerA(pszDestEnd,
+ cchRemaining,
+ &cchCopied,
+ pszSrc,
+ cchToAppend);
+
+ pszDestEnd = pszDestEnd + cchCopied;
+ cchRemaining = cchRemaining - cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining > 1))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = cchRemaining * sizeof(char);
+
+
+ RtlStringExHandleFillBehindNullA(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+ size_t cbDest;
+
+
+ cbDest = cchDest * sizeof(char);
+
+
+ RtlStringExHandleOtherFlagsA(pszDest,
+ cbDest,
+ cchDestLength,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcchRemaining)
+ {
+ *pcchRemaining = cchRemaining;
+ }
+ }
+ }
+
+ return status;
+}
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCchCatNExW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cchDest,
+ STRSAFE_PCNZWCH pszSrc,
+ size_t cchToAppend,
+ NTSTRSAFE_PWSTR* ppszDestEnd,
+ size_t* pcchRemaining,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ size_t cchDestLength;
+
+ status = RtlStringExValidateDestAndLengthW(pszDest,
+ cchDest,
+ &cchDestLength,
+ 2147483647,
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PWSTR pszDestEnd = pszDest + cchDestLength;
+ size_t cchRemaining = cchDest - cchDestLength;
+
+ status = RtlStringExValidateSrcW(&pszSrc, &cchToAppend, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if (cchRemaining <= 1)
+ {
+
+ if ((cchToAppend != 0) && (*pszSrc != L'\0'))
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlStringCopyWorkerW(pszDestEnd,
+ cchRemaining,
+ &cchCopied,
+ pszSrc,
+ cchToAppend);
+
+ pszDestEnd = pszDestEnd + cchCopied;
+ cchRemaining = cchRemaining - cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining > 1))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = cchRemaining * sizeof(wchar_t);
+
+
+ RtlStringExHandleFillBehindNullW(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+ size_t cbDest;
+
+
+ cbDest = cchDest * sizeof(wchar_t);
+
+
+ RtlStringExHandleOtherFlagsW(pszDest,
+ cbDest,
+ cchDestLength,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcchRemaining)
+ {
+ *pcchRemaining = cchRemaining;
+ }
+ }
+ }
+
+ return status;
+}
+
+
+#line 3956 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCbCatNExA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cbDest,
+ STRSAFE_PCNZCH pszSrc,
+ size_t cbToAppend,
+ NTSTRSAFE_PSTR* ppszDestEnd,
+ size_t* pcbRemaining,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(char);
+ size_t cchDestLength;
+
+ status = RtlStringExValidateDestAndLengthA(pszDest,
+ cchDest,
+ &cchDestLength,
+ 2147483647,
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PSTR pszDestEnd = pszDest + cchDestLength;
+ size_t cchRemaining = cchDest - cchDestLength;
+ size_t cchToAppend = cbToAppend / sizeof(char);
+
+ status = RtlStringExValidateSrcA(&pszSrc, &cchToAppend, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if (cchRemaining <= 1)
+ {
+
+ if ((cchToAppend != 0) && (*pszSrc != '\0'))
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlStringCopyWorkerA(pszDestEnd,
+ cchRemaining,
+ &cchCopied,
+ pszSrc,
+ cchToAppend);
+
+ pszDestEnd = pszDestEnd + cchCopied;
+ cchRemaining = cchRemaining - cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining > 1))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char));
+
+
+ RtlStringExHandleFillBehindNullA(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cbDest != 0))
+ {
+
+ RtlStringExHandleOtherFlagsA(pszDest,
+ cbDest,
+ cchDestLength,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcbRemaining)
+ {
+
+ *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char));
+ }
+ }
+ }
+
+ return status;
+}
+
+
+
+#pragma warning(push)
+#pragma warning(disable : 26015)
+
+__inline NTSTATUS __stdcall
+ RtlStringCbCatNExW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cbDest,
+ STRSAFE_PCNZWCH pszSrc,
+ size_t cbToAppend,
+ NTSTRSAFE_PWSTR* ppszDestEnd,
+ size_t* pcbRemaining,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(wchar_t);
+ size_t cchDestLength;
+
+ status = RtlStringExValidateDestAndLengthW(pszDest,
+ cchDest,
+ &cchDestLength,
+ 2147483647,
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PWSTR pszDestEnd = pszDest + cchDestLength;
+ size_t cchRemaining = cchDest - cchDestLength;
+ size_t cchToAppend = cbToAppend / sizeof(wchar_t);
+
+ status = RtlStringExValidateSrcW(&pszSrc, &cchToAppend, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if (cchRemaining <= 1)
+ {
+
+ if ((cchToAppend != 0) && (*pszSrc != L'\0'))
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlStringCopyWorkerW(pszDestEnd,
+ cchRemaining,
+ &cchCopied,
+ pszSrc,
+ cchToAppend);
+
+ pszDestEnd = pszDestEnd + cchCopied;
+ cchRemaining = cchRemaining - cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) && (dwFlags & 0x00000200))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t));
+
+
+ RtlStringExHandleFillBehindNullW(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cbDest != 0))
+ {
+
+ RtlStringExHandleOtherFlagsW(pszDest,
+ cbDest,
+ cchDestLength,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcbRemaining)
+ {
+
+ *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t));
+ }
+ }
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+#line 4282 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable: 26036)
+
+__inline NTSTATUS __stdcall
+ RtlStringCchVPrintfA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cchDest,
+ NTSTRSAFE_PCSTR pszFormat,
+ va_list argList)
+{
+ NTSTATUS status;
+
+ status = RtlStringValidateDestA(pszDest, cchDest, 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ status = RtlStringVPrintfWorkerA(pszDest,
+ cchDest,
+ ((void *)0),
+ pszFormat,
+ argList);
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = '\0';
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+
+#pragma warning(push)
+#pragma warning(disable: 26036)
+
+__inline NTSTATUS __stdcall
+ RtlStringCchVPrintfW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cchDest,
+ NTSTRSAFE_PCWSTR pszFormat,
+ va_list argList)
+{
+ NTSTATUS status;
+
+ status = RtlStringValidateDestW(pszDest, cchDest, 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ status = RtlStringVPrintfWorkerW(pszDest,
+ cchDest,
+ ((void *)0),
+ pszFormat,
+ argList);
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = L'\0';
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+#line 4418 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCbVPrintfA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cbDest,
+ NTSTRSAFE_PCSTR pszFormat,
+ va_list argList)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(char);
+
+ status = RtlStringValidateDestA(pszDest, cchDest, 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ status = RtlStringVPrintfWorkerA(pszDest,
+ cchDest,
+ ((void *)0),
+ pszFormat,
+ argList);
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = '\0';
+ }
+
+ return status;
+}
+
+
+
+#pragma warning(push)
+#pragma warning(disable : 26036)
+
+__inline NTSTATUS __stdcall
+ RtlStringCbVPrintfW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cbDest,
+ NTSTRSAFE_PCWSTR pszFormat,
+ va_list argList)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(wchar_t);
+
+ status = RtlStringValidateDestW(pszDest, cchDest, 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ status = RtlStringVPrintfWorkerW(pszDest,
+ cchDest,
+ ((void *)0),
+ pszFormat,
+ argList);
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = '\0';
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+#line 4552 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCchPrintfA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cchDest,
+ NTSTRSAFE_PCSTR pszFormat,
+ ...)
+{
+ NTSTATUS status;
+
+ status = RtlStringValidateDestA(pszDest, cchDest, 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ va_list argList;
+
+ ((void)(__va_start(&argList, pszFormat)));
+
+ status = RtlStringVPrintfWorkerA(pszDest,
+ cchDest,
+ ((void *)0),
+ pszFormat,
+ argList);
+
+ ((void)(argList = (va_list)0));
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = '\0';
+ }
+
+ return status;
+}
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCchPrintfW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cchDest,
+ NTSTRSAFE_PCWSTR pszFormat,
+ ...)
+{
+ NTSTATUS status;
+
+ status = RtlStringValidateDestW(pszDest, cchDest, 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ va_list argList;
+
+ ((void)(__va_start(&argList, pszFormat)));
+
+ status = RtlStringVPrintfWorkerW(pszDest,
+ cchDest,
+ ((void *)0),
+ pszFormat,
+ argList);
+
+ ((void)(argList = (va_list)0));
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = '\0';
+ }
+
+ return status;
+}
+
+
+#line 4692 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCbPrintfA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cbDest,
+ NTSTRSAFE_PCSTR pszFormat,
+ ...)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(char);
+
+ status = RtlStringValidateDestA(pszDest, cchDest, 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ va_list argList;
+
+ ((void)(__va_start(&argList, pszFormat)));
+
+ status = RtlStringVPrintfWorkerA(pszDest,
+ cchDest,
+ ((void *)0),
+ pszFormat,
+ argList);
+
+ ((void)(argList = (va_list)0));
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = '\0';
+ }
+
+ return status;
+}
+
+
+
+#pragma warning(push)
+#pragma warning(disable : 26036)
+
+__inline NTSTATUS __stdcall
+ RtlStringCbPrintfW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cbDest,
+ NTSTRSAFE_PCWSTR pszFormat,
+ ...)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(wchar_t);
+
+ status = RtlStringValidateDestW(pszDest, cchDest, 2147483647);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ va_list argList;
+
+ ((void)(__va_start(&argList, pszFormat)));
+
+ status = RtlStringVPrintfWorkerW(pszDest,
+ cchDest,
+ ((void *)0),
+ pszFormat,
+ argList);
+
+ ((void)(argList = (va_list)0));
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = L'\0';
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+#line 4838 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable : 26007)
+
+__inline NTSTATUS __stdcall
+ RtlStringCchPrintfExA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cchDest,
+ NTSTRSAFE_PSTR* ppszDestEnd,
+ size_t* pcchRemaining,
+ DWORD dwFlags,
+ NTSTRSAFE_PCSTR pszFormat,
+ ...)
+{
+ NTSTATUS status;
+
+ status = RtlStringExValidateDestA(pszDest, cchDest, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PSTR pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+
+ status = RtlStringExValidateSrcA(&pszFormat, ((void *)0), 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+
+ if (cchDest != 0)
+ {
+ *pszDest = '\0';
+ }
+ }
+ else if (cchDest == 0)
+ {
+
+ if (*pszFormat != '\0')
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchNewDestLength = 0;
+ va_list argList;
+
+ ((void)(__va_start(&argList, pszFormat)));
+
+ status = RtlStringVPrintfWorkerA(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszFormat,
+ argList);
+
+ ((void)(argList = (va_list)0));
+
+ pszDestEnd = pszDest + cchNewDestLength;
+ cchRemaining = cchDest - cchNewDestLength;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining > 1))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = cchRemaining * sizeof(char);
+
+
+ RtlStringExHandleFillBehindNullA(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+ else
+ {
+ if (cchDest != 0)
+ {
+ *pszDest = '\0';
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+ size_t cbDest;
+
+
+ cbDest = cchDest * sizeof(char);
+
+
+ RtlStringExHandleOtherFlagsA(pszDest,
+ cbDest,
+ 0,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcchRemaining)
+ {
+ *pcchRemaining = cchRemaining;
+ }
+ }
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = '\0';
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+
+#pragma warning(push)
+#pragma warning(disable : 26007)
+
+__inline NTSTATUS __stdcall
+ RtlStringCchPrintfExW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cchDest,
+ NTSTRSAFE_PWSTR* ppszDestEnd,
+ size_t* pcchRemaining,
+ DWORD dwFlags,
+ NTSTRSAFE_PCWSTR pszFormat,
+ ...)
+{
+ NTSTATUS status;
+
+ status = RtlStringExValidateDestW(pszDest, cchDest, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PWSTR pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+
+ status = RtlStringExValidateSrcW(&pszFormat, ((void *)0), 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+
+ if (cchDest != 0)
+ {
+ *pszDest = L'\0';
+ }
+ }
+ else if (cchDest == 0)
+ {
+
+ if (*pszFormat != L'\0')
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchNewDestLength = 0;
+ va_list argList;
+
+ ((void)(__va_start(&argList, pszFormat)));
+
+ status = RtlStringVPrintfWorkerW(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszFormat,
+ argList);
+
+ ((void)(argList = (va_list)0));
+
+ pszDestEnd = pszDest + cchNewDestLength;
+ cchRemaining = cchDest - cchNewDestLength;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining > 1))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = cchRemaining * sizeof(wchar_t);
+
+
+ RtlStringExHandleFillBehindNullW(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+ else
+ {
+ if (cchDest != 0)
+ {
+ *pszDest = L'\0';
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+ size_t cbDest;
+
+
+ cbDest = cchDest * sizeof(wchar_t);
+
+
+ RtlStringExHandleOtherFlagsW(pszDest,
+ cbDest,
+ 0,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcchRemaining)
+ {
+ *pcchRemaining = cchRemaining;
+ }
+ }
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = L'\0';
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+#line 5205 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable : 26007)
+
+__inline NTSTATUS __stdcall
+ RtlStringCbPrintfExA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cbDest,
+ NTSTRSAFE_PSTR* ppszDestEnd,
+ size_t* pcbRemaining,
+ DWORD dwFlags,
+ NTSTRSAFE_PCSTR pszFormat,
+ ...)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(char);
+
+ status = RtlStringExValidateDestA(pszDest, cchDest, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PSTR pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+
+ status = RtlStringExValidateSrcA(&pszFormat, ((void *)0), 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+
+ if (cchDest != 0)
+ {
+ *pszDest = '\0';
+ }
+ }
+ else if (cchDest == 0)
+ {
+
+ if (*pszFormat != '\0')
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ else
+ {
+
+ __pragma(warning(push)) __pragma(warning(disable : 4548)) do {__noop(pszDest);} while((0,0) __pragma(warning(pop)) );
+ }
+ }
+ else
+ {
+ size_t cchNewDestLength = 0;
+ va_list argList;
+
+ ((void)(__va_start(&argList, pszFormat)));
+
+ status = RtlStringVPrintfWorkerA(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszFormat,
+ argList);
+
+ ((void)(argList = (va_list)0));
+
+ pszDestEnd = pszDest + cchNewDestLength;
+ cchRemaining = cchDest - cchNewDestLength;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining > 1))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char));
+
+
+ RtlStringExHandleFillBehindNullA(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+ else
+ {
+ if (cchDest != 0)
+ {
+ *pszDest = '\0';
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cbDest != 0))
+ {
+
+ RtlStringExHandleOtherFlagsA(pszDest,
+ cbDest,
+ 0,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcbRemaining)
+ {
+
+ *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char));
+ }
+ }
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = '\0';
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+
+#pragma warning(push)
+#pragma warning(disable : 26007)
+#pragma warning(disable: 26036)
+
+__inline NTSTATUS __stdcall
+ RtlStringCbPrintfExW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cbDest,
+ NTSTRSAFE_PWSTR* ppszDestEnd,
+ size_t* pcbRemaining,
+ DWORD dwFlags,
+ NTSTRSAFE_PCWSTR pszFormat,
+ ...)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(wchar_t);
+
+ status = RtlStringExValidateDestW(pszDest, cchDest, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PWSTR pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+
+ status = RtlStringExValidateSrcW(&pszFormat, ((void *)0), 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+
+ if (cchDest != 0)
+ {
+ *pszDest = L'\0';
+ }
+ }
+ else if (cchDest == 0)
+ {
+
+ if (*pszFormat != L'\0')
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ else
+ {
+
+ __pragma(warning(push)) __pragma(warning(disable : 4548)) do {__noop(pszDest);} while((0,0) __pragma(warning(pop)) );
+ }
+ }
+ else
+ {
+ size_t cchNewDestLength = 0;
+ va_list argList;
+
+ ((void)(__va_start(&argList, pszFormat)));
+
+ status = RtlStringVPrintfWorkerW(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszFormat,
+ argList);
+
+ ((void)(argList = (va_list)0));
+
+ pszDestEnd = pszDest + cchNewDestLength;
+ cchRemaining = cchDest - cchNewDestLength;
+
+ if ((((NTSTATUS)(status)) >= 0) && (dwFlags & 0x00000200))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t));
+
+
+ RtlStringExHandleFillBehindNullW(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+ else
+ {
+ if (cchDest != 0)
+ {
+ *pszDest = L'\0';
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cbDest != 0))
+ {
+
+ RtlStringExHandleOtherFlagsW(pszDest,
+ cbDest,
+ 0,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcbRemaining)
+ {
+
+ *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t));
+ }
+ }
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = L'\0';
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+#line 5575 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+#line 5577 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable: 26036)
+#pragma warning(disable : 26007)
+
+__inline NTSTATUS __stdcall
+ RtlStringCchVPrintfExA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cchDest,
+ NTSTRSAFE_PSTR* ppszDestEnd,
+ size_t* pcchRemaining,
+ DWORD dwFlags,
+ NTSTRSAFE_PCSTR pszFormat,
+ va_list argList)
+{
+ NTSTATUS status;
+
+ status = RtlStringExValidateDestA(pszDest, cchDest, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PSTR pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+
+ status = RtlStringExValidateSrcA(&pszFormat, ((void *)0), 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+
+ if (cchDest != 0)
+ {
+ *pszDest = '\0';
+ }
+ }
+ else if (cchDest == 0)
+ {
+
+ if (*pszFormat != '\0')
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchNewDestLength = 0;
+
+ status = RtlStringVPrintfWorkerA(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszFormat,
+ argList);
+
+ pszDestEnd = pszDest + cchNewDestLength;
+ cchRemaining = cchDest - cchNewDestLength;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining > 1))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = cchRemaining * sizeof(char);
+
+
+ RtlStringExHandleFillBehindNullA(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+ else
+ {
+ if (cchDest != 0)
+ {
+ *pszDest = '\0';
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+ size_t cbDest;
+
+
+ cbDest = cchDest * sizeof(char);
+
+
+ RtlStringExHandleOtherFlagsA(pszDest,
+ cbDest,
+ 0,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcchRemaining)
+ {
+ *pcchRemaining = cchRemaining;
+ }
+ }
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = '\0';
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+
+#pragma warning(push)
+#pragma warning(disable: 26036)
+#pragma warning(disable : 26007)
+
+__inline NTSTATUS __stdcall
+ RtlStringCchVPrintfExW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cchDest,
+ NTSTRSAFE_PWSTR* ppszDestEnd,
+ size_t* pcchRemaining,
+ DWORD dwFlags,
+ NTSTRSAFE_PCWSTR pszFormat,
+ va_list argList)
+{
+ NTSTATUS status;
+
+ status = RtlStringExValidateDestW(pszDest, cchDest, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PWSTR pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+
+ status = RtlStringExValidateSrcW(&pszFormat, ((void *)0), 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+
+ if (cchDest != 0)
+ {
+ *pszDest = L'\0';
+ }
+ }
+ else if (cchDest == 0)
+ {
+
+ if (*pszFormat != L'\0')
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchNewDestLength = 0;
+
+ status = RtlStringVPrintfWorkerW(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszFormat,
+ argList);
+
+ pszDestEnd = pszDest + cchNewDestLength;
+ cchRemaining = cchDest - cchNewDestLength;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining > 1))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = cchRemaining * sizeof(wchar_t);
+
+
+ RtlStringExHandleFillBehindNullW(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+ else
+ {
+ if (cchDest != 0)
+ {
+ *pszDest = L'\0';
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+ size_t cbDest;
+
+
+ cbDest = cchDest * sizeof(wchar_t);
+
+
+ RtlStringExHandleOtherFlagsW(pszDest,
+ cbDest,
+ 0,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcchRemaining)
+ {
+ *pcchRemaining = cchRemaining;
+ }
+ }
+ }
+ else if (cchDest > 0)
+ {
+ *pszDest = L'\0';
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+#line 5937 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable : 26007)
+
+__inline NTSTATUS __stdcall
+ RtlStringCbVPrintfExA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cbDest,
+ NTSTRSAFE_PSTR* ppszDestEnd,
+ size_t* pcbRemaining,
+ DWORD dwFlags,
+ NTSTRSAFE_PCSTR pszFormat,
+ va_list argList)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(char);
+
+ status = RtlStringExValidateDestA(pszDest, cchDest, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PSTR pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+
+ status = RtlStringExValidateSrcA(&pszFormat, ((void *)0), 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+
+ if (cchDest != 0)
+ {
+ *pszDest = '\0';
+ }
+ }
+ else if (cchDest == 0)
+ {
+
+ if (*pszFormat != '\0')
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ else
+ {
+
+ __pragma(warning(push)) __pragma(warning(disable : 4548)) do {__noop(pszDest);} while((0,0) __pragma(warning(pop)) );
+ }
+ }
+ else
+ {
+ size_t cchNewDestLength = 0;
+
+ status = RtlStringVPrintfWorkerA(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszFormat,
+ argList);
+
+ pszDestEnd = pszDest + cchNewDestLength;
+ cchRemaining = cchDest - cchNewDestLength;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining > 1))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char));
+
+
+ RtlStringExHandleFillBehindNullA(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+ else
+ {
+ if (cchDest != 0)
+ {
+ *pszDest = '\0';
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cbDest != 0))
+ {
+
+ RtlStringExHandleOtherFlagsA(pszDest,
+ cbDest,
+ 0,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcbRemaining)
+ {
+
+ *pcbRemaining = (cchRemaining * sizeof(char)) + (cbDest % sizeof(char));
+ }
+ }
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+
+#pragma warning(push)
+#pragma warning(disable : 26007)
+
+__inline NTSTATUS __stdcall
+ RtlStringCbVPrintfExW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cbDest,
+ NTSTRSAFE_PWSTR* ppszDestEnd,
+ size_t* pcbRemaining,
+ DWORD dwFlags,
+ NTSTRSAFE_PCWSTR pszFormat,
+ va_list argList)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(wchar_t);
+
+ status = RtlStringExValidateDestW(pszDest, cchDest, 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ NTSTRSAFE_PWSTR pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+
+ status = RtlStringExValidateSrcW(&pszFormat, ((void *)0), 2147483647, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+
+ if (cchDest != 0)
+ {
+ *pszDest = L'\0';
+ }
+ }
+ else if (cchDest == 0)
+ {
+
+ if (*pszFormat != L'\0')
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ else
+ {
+
+ __pragma(warning(push)) __pragma(warning(disable : 4548)) do {__noop(pszDest);} while((0,0) __pragma(warning(pop)) );
+ }
+ }
+ else
+ {
+ size_t cchNewDestLength = 0;
+
+ status = RtlStringVPrintfWorkerW(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszFormat,
+ argList);
+
+ pszDestEnd = pszDest + cchNewDestLength;
+ cchRemaining = cchDest - cchNewDestLength;
+
+ if ((((NTSTATUS)(status)) >= 0) && (dwFlags & 0x00000200))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t));
+
+
+ RtlStringExHandleFillBehindNullW(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+ else
+ {
+ if (cchDest != 0)
+ {
+ *pszDest = L'\0';
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cbDest != 0))
+ {
+
+ RtlStringExHandleOtherFlagsW(pszDest,
+ cbDest,
+ 0,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcbRemaining)
+ {
+
+ *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t));
+ }
+ }
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+#line 6288 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:26071)
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCchLengthA(
+ STRSAFE_PCNZCH psz,
+ size_t cchMax,
+ size_t* pcchLength)
+{
+ NTSTATUS status;
+
+ if ((psz == ((void *)0)) || (cchMax > 2147483647))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = RtlStringLengthWorkerA(psz, cchMax, pcchLength);
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) && pcchLength)
+ {
+ *pcchLength = 0;
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+
+#pragma warning(push)
+#pragma warning(disable:26071)
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCchLengthW(
+ STRSAFE_PCNZWCH psz,
+ size_t cchMax,
+ size_t* pcchLength)
+{
+ NTSTATUS status;
+
+ if ((psz == ((void *)0)) || (cchMax > 2147483647))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = RtlStringLengthWorkerW(psz, cchMax, pcchLength);
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) && pcchLength)
+ {
+ *pcchLength = 0;
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+#line 6407 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCbLengthA(
+ STRSAFE_PCNZCH psz,
+ size_t cbMax,
+ size_t* pcbLength)
+{
+ NTSTATUS status;
+ size_t cchMax = cbMax / sizeof(char);
+ size_t cchLength = 0;
+
+ if ((psz == ((void *)0)) || (cchMax > 2147483647))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = RtlStringLengthWorkerA(psz, cchMax, &cchLength);
+ }
+
+ if (pcbLength)
+ {
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+
+ *pcbLength = cchLength * sizeof(char);
+ }
+ else
+ {
+ *pcbLength = 0;
+ }
+ }
+
+ return status;
+}
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCbLengthW(
+ STRSAFE_PCNZWCH psz,
+ size_t cbMax,
+ size_t* pcbLength)
+{
+ NTSTATUS status;
+ size_t cchMax = cbMax / sizeof(wchar_t);
+ size_t cchLength = 0;
+
+ if ((psz == ((void *)0)) || (cchMax > 2147483647))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = RtlStringLengthWorkerW(psz, cchMax, &cchLength);
+ }
+
+ if (pcbLength)
+ {
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+
+ *pcbLength = cchLength * sizeof(wchar_t);
+ }
+ else
+ {
+ *pcbLength = 0;
+ }
+ }
+
+ return status;
+}
+
+
+#line 6536 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlUnalignedStringCchLengthW(
+ STRSAFE_PCUNZWCH psz,
+ size_t cchMax,
+ size_t* pcchLength)
+{
+ NTSTATUS status;
+
+ if ((psz == ((void *)0)) || (cchMax > 2147483647))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = RtlUnalignedStringLengthWorkerW(psz, cchMax, pcchLength);
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) && pcchLength)
+ {
+ *pcchLength = 0;
+ }
+
+ return status;
+}
+
+
+
+#line 6615 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+#line 6618 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlUnalignedStringCbLengthW(
+ STRSAFE_PCUNZWCH psz,
+ size_t cbMax,
+ size_t* pcbLength)
+{
+ NTSTATUS status;
+ size_t cchMax = cbMax / sizeof(wchar_t);
+ size_t cchLength = 0;
+
+ if ((psz == ((void *)0)) || (cchMax > 2147483647))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = RtlUnalignedStringLengthWorkerW(psz, cchMax, &cchLength);
+ }
+
+ if (pcbLength)
+ {
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+
+ *pcbLength = cchLength * sizeof(wchar_t);
+ }
+ else
+ {
+ *pcbLength = 0;
+ }
+ }
+
+ return status;
+}
+
+
+
+#line 6707 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+#line 6710 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable : 26007)
+#pragma warning(disable : 26045)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringInit(
+ PUNICODE_STRING DestinationString,
+ NTSTRSAFE_PCWSTR pszSrc)
+{
+ return RtlUnicodeStringInitWorker(DestinationString,
+ pszSrc,
+ (0xffff / sizeof(wchar_t)),
+ 0);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringInitEx(
+ PUNICODE_STRING DestinationString,
+ NTSTRSAFE_PCWSTR pszSrc,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = RtlUnicodeStringInitWorker(DestinationString,
+ pszSrc,
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) && DestinationString)
+ {
+ DestinationString->Length = 0;
+ DestinationString->MaximumLength = 0;
+ DestinationString->Buffer = ((void *)0);
+ }
+
+ return status;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringValidate(
+ PCUNICODE_STRING SourceString)
+{
+ return RtlUnicodeStringValidateWorker(SourceString, (0xffff / sizeof(wchar_t)), 0);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringValidateEx(
+ PCUNICODE_STRING SourceString,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = RtlUnicodeStringValidateWorker(SourceString, (0xffff / sizeof(wchar_t)), dwFlags);
+ }
+
+ return status;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCchCopyUnicodeString(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cchDest,
+ PCUNICODE_STRING SourceString)
+{
+ NTSTATUS status;
+
+ status = RtlStringValidateDestW(pszDest,
+ cchDest,
+ (0xffff / sizeof(wchar_t)));
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszSrc;
+ size_t cchSrcLength;
+
+ status = RtlUnicodeStringValidateSrcWorker(SourceString,
+ &pszSrc,
+ &cchSrcLength,
+ (0xffff / sizeof(wchar_t)),
+ 0);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ status = RtlStringCopyWideCharArrayWorker(pszDest,
+ cchDest,
+ ((void *)0),
+ pszSrc,
+ cchSrcLength);
+ }
+ else
+ {
+ *pszDest = L'\0';
+ }
+ }
+
+ return status;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable : 26015)
+
+__inline NTSTATUS __stdcall
+ RtlStringCbCopyUnicodeString(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cbDest,
+ PCUNICODE_STRING SourceString)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(wchar_t);
+
+ status = RtlStringValidateDestW(pszDest,
+ cchDest,
+ (0xffff / sizeof(wchar_t)));
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszSrc;
+ size_t cchSrcLength;
+
+ status = RtlUnicodeStringValidateSrcWorker(SourceString,
+ &pszSrc,
+ &cchSrcLength,
+ (0xffff / sizeof(wchar_t)),
+ 0);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ status = RtlStringCopyWideCharArrayWorker(pszDest,
+ cchDest,
+ ((void *)0),
+ pszSrc,
+ cchSrcLength);
+ }
+ else
+ {
+ *pszDest = L'\0';
+ }
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCchCopyUnicodeStringEx(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cchDest,
+ PCUNICODE_STRING SourceString,
+ NTSTRSAFE_PWSTR* ppszDestEnd,
+ size_t* pcchRemaining,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+
+ status = RtlStringExValidateDestW(pszDest,
+ cchDest,
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszSrc;
+ size_t cchSrcLength;
+ wchar_t* pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+
+ status = RtlUnicodeStringValidateSrcWorker(SourceString,
+ &pszSrc,
+ &cchSrcLength,
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+
+ if (cchDest != 0)
+ {
+ *pszDest = L'\0';
+ }
+ }
+ else if (cchDest == 0)
+ {
+
+ if (cchSrcLength != 0)
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlStringCopyWideCharArrayWorker(pszDest,
+ cchDest,
+ &cchCopied,
+ pszSrc,
+ cchSrcLength);
+
+ pszDestEnd = pszDest + cchCopied;
+ cchRemaining = cchDest - cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining > 1))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = cchRemaining * sizeof(wchar_t);
+
+
+ RtlStringExHandleFillBehindNullW(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+ else
+ {
+ if (cchDest != 0)
+ {
+ *pszDest = L'\0';
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+ size_t cbDest;
+
+
+ cbDest = cchDest * sizeof(wchar_t);
+
+
+ RtlStringExHandleOtherFlagsW(pszDest,
+ cbDest,
+ 0,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcchRemaining)
+ {
+ *pcchRemaining = cchRemaining;
+ }
+ }
+ }
+
+ return status;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+ RtlStringCbCopyUnicodeStringEx(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cbDest,
+ PCUNICODE_STRING SourceString,
+ NTSTRSAFE_PWSTR* ppszDestEnd,
+ size_t* pcbRemaining,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ size_t cchDest = cbDest / sizeof(wchar_t);
+
+ status = RtlStringExValidateDestW(pszDest,
+ cchDest,
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszSrc;
+ size_t cchSrcLength;
+ wchar_t* pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+
+ status = RtlUnicodeStringValidateSrcWorker(SourceString,
+ &pszSrc,
+ &cchSrcLength,
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+
+ if (cchDest != 0)
+ {
+ *pszDest = L'\0';
+ }
+ }
+ else if (cchDest == 0)
+ {
+
+ if (cchSrcLength != 0)
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlStringCopyWideCharArrayWorker(pszDest,
+ cchDest,
+ &cchCopied,
+ pszSrc,
+ cchSrcLength);
+
+ pszDestEnd = pszDest + cchCopied;
+ cchRemaining = cchDest - cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) && (dwFlags & 0x00000200))
+ {
+ size_t cbRemaining;
+
+
+ cbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t));
+
+
+ RtlStringExHandleFillBehindNullW(pszDestEnd, cbRemaining, dwFlags);
+ }
+ }
+ }
+ else
+ {
+ if (cchDest != 0)
+ {
+ *pszDest = L'\0';
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cbDest != 0))
+ {
+
+ RtlStringExHandleOtherFlagsW(pszDest,
+ cbDest,
+ 0,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (ppszDestEnd)
+ {
+ *ppszDestEnd = pszDestEnd;
+ }
+
+ if (pcbRemaining)
+ {
+
+ *pcbRemaining = (cchRemaining * sizeof(wchar_t)) + (cbDest % sizeof(wchar_t));
+ }
+ }
+ }
+
+ return status;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCopyString(
+ PUNICODE_STRING DestinationString,
+ NTSTRSAFE_PCWSTR pszSrc)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ ((void *)0),
+ (0xffff / sizeof(wchar_t)),
+ 0);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ size_t cchNewDestLength = 0;
+
+ status = RtlWideCharArrayCopyStringWorker(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszSrc,
+ (0xffff / sizeof(wchar_t)));
+
+
+ DestinationString->Length = (USHORT)(cchNewDestLength * sizeof(wchar_t));
+ }
+
+ return status;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCopy(
+ PUNICODE_STRING DestinationString,
+ PCUNICODE_STRING SourceString)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ ((void *)0),
+ (0xffff / sizeof(wchar_t)),
+ 0);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszSrc;
+ size_t cchSrcLength;
+ size_t cchNewDestLength = 0;
+
+ status = RtlUnicodeStringValidateSrcWorker(SourceString,
+ &pszSrc,
+ &cchSrcLength,
+ (0xffff / sizeof(wchar_t)),
+ 0);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ status = RtlWideCharArrayCopyWorker(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszSrc,
+ cchSrcLength);
+ }
+
+
+ DestinationString->Length = (USHORT)(cchNewDestLength * sizeof(wchar_t));
+ }
+
+ return status;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCopyStringEx(
+ PUNICODE_STRING DestinationString,
+ NTSTRSAFE_PCWSTR pszSrc,
+ PUNICODE_STRING RemainingString,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ ((void *)0),
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+ size_t cchNewDestLength = 0;
+
+ status = RtlStringExValidateSrcW(&pszSrc, ((void *)0), (0xffff / sizeof(wchar_t)), dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if (cchDest == 0)
+ {
+
+ if (*pszSrc != L'\0')
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ status = RtlWideCharArrayCopyStringWorker(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszSrc,
+ (0xffff / sizeof(wchar_t)));
+
+ pszDestEnd = pszDest + cchNewDestLength;
+ cchRemaining = cchDest - cchNewDestLength;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining != 0))
+ {
+
+ RtlUnicodeStringExHandleFill(pszDestEnd, cchRemaining, dwFlags);
+ }
+ }
+ }
+
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+
+ RtlUnicodeStringExHandleOtherFlags(pszDest,
+ cchDest,
+ 0,
+ &cchNewDestLength,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if (DestinationString)
+ {
+
+ DestinationString->Length = (USHORT)(cchNewDestLength * sizeof(wchar_t));
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (RemainingString)
+ {
+ RemainingString->Length = 0;
+
+ RemainingString->MaximumLength = (USHORT)(cchRemaining * sizeof(wchar_t));
+ RemainingString->Buffer = pszDestEnd;
+ }
+ }
+ }
+
+ return status;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCopyEx(
+ PUNICODE_STRING DestinationString,
+ PCUNICODE_STRING SourceString,
+ PUNICODE_STRING RemainingString,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ ((void *)0),
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszSrc;
+ size_t cchSrcLength;
+ wchar_t* pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+ size_t cchNewDestLength = 0;
+
+ status = RtlUnicodeStringValidateSrcWorker(SourceString,
+ &pszSrc,
+ &cchSrcLength,
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if (cchDest == 0)
+ {
+
+ if (cchSrcLength != 0)
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ status = RtlWideCharArrayCopyWorker(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszSrc,
+ cchSrcLength);
+
+ pszDestEnd = pszDest + cchNewDestLength;
+ cchRemaining = cchDest - cchNewDestLength;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining != 0))
+ {
+
+ RtlUnicodeStringExHandleFill(pszDestEnd, cchRemaining, dwFlags);
+ }
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+
+ RtlUnicodeStringExHandleOtherFlags(pszDest,
+ cchDest,
+ 0,
+ &cchNewDestLength,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if (DestinationString)
+ {
+
+ DestinationString->Length = (USHORT)(cchNewDestLength * sizeof(wchar_t));
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (RemainingString)
+ {
+ RemainingString->Length = 0;
+
+ RemainingString->MaximumLength = (USHORT)(cchRemaining * sizeof(wchar_t));
+ RemainingString->Buffer = pszDestEnd;
+ }
+ }
+ }
+
+ return status;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCchCopyStringN(
+ PUNICODE_STRING DestinationString,
+ NTSTRSAFE_PCWSTR pszSrc,
+ size_t cchToCopy)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ ((void *)0),
+ (0xffff / sizeof(wchar_t)),
+ 0);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ size_t cchNewDestLength = 0;
+
+ if (cchToCopy > (0xffff / sizeof(wchar_t)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = RtlWideCharArrayCopyStringWorker(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszSrc,
+ cchToCopy);
+ }
+
+
+ DestinationString->Length = (USHORT)(cchNewDestLength * sizeof(wchar_t));
+ }
+
+ return status;
+}
+#line 8243 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCbCopyStringN(
+ PUNICODE_STRING DestinationString,
+ NTSTRSAFE_PCWSTR pszSrc,
+ size_t cbToCopy)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ ((void *)0),
+ (0xffff / sizeof(wchar_t)),
+ 0);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ size_t cchNewDestLength = 0;
+ size_t cchToCopy = cbToCopy / sizeof(wchar_t);
+
+ if (cchToCopy > (0xffff / sizeof(wchar_t)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = RtlWideCharArrayCopyStringWorker(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszSrc,
+ cchToCopy);
+ }
+
+
+ DestinationString->Length = (USHORT)(cchNewDestLength * sizeof(wchar_t));
+ }
+
+ return status;
+}
+#line 8342 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCchCopyN(
+ PUNICODE_STRING DestinationString,
+ PCUNICODE_STRING SourceString,
+ size_t cchToCopy)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ ((void *)0),
+ (0xffff / sizeof(wchar_t)),
+ 0);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszSrc;
+ size_t cchSrcLength;
+ size_t cchNewDestLength = 0;
+
+ status = RtlUnicodeStringValidateSrcWorker(SourceString,
+ &pszSrc,
+ &cchSrcLength,
+ (0xffff / sizeof(wchar_t)),
+ 0);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (cchToCopy > (0xffff / sizeof(wchar_t)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ if (cchSrcLength < cchToCopy)
+ {
+ cchToCopy = cchSrcLength;
+ }
+
+ status = RtlWideCharArrayCopyWorker(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszSrc,
+ cchToCopy);
+ }
+ }
+
+
+ DestinationString->Length = (USHORT)(cchNewDestLength * sizeof(wchar_t));
+ }
+
+ return status;
+}
+#line 8456 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCbCopyN(
+ PUNICODE_STRING DestinationString,
+ PCUNICODE_STRING SourceString,
+ size_t cbToCopy)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ ((void *)0),
+ (0xffff / sizeof(wchar_t)),
+ 0);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszSrc;
+ size_t cchSrcLength;
+ size_t cchNewDestLength = 0;
+
+ status = RtlUnicodeStringValidateSrcWorker(SourceString,
+ &pszSrc,
+ &cchSrcLength,
+ (0xffff / sizeof(wchar_t)),
+ 0);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ size_t cchToCopy = cbToCopy / sizeof(wchar_t);
+
+ if (cchToCopy > (0xffff / sizeof(wchar_t)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ if (cchSrcLength < cchToCopy)
+ {
+ cchToCopy = cchSrcLength;
+ }
+
+ status = RtlWideCharArrayCopyWorker(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszSrc,
+ cchToCopy);
+ }
+ }
+
+
+ DestinationString->Length = (USHORT)(cchNewDestLength * sizeof(wchar_t));
+ }
+
+ return status;
+}
+#line 8573 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCchCopyStringNEx(
+ PUNICODE_STRING DestinationString,
+ NTSTRSAFE_PCWSTR pszSrc,
+ size_t cchToCopy,
+ PUNICODE_STRING RemainingString,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ ((void *)0),
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+ size_t cchNewDestLength = 0;
+
+ status = RtlStringExValidateSrcW(&pszSrc, &cchToCopy, (0xffff / sizeof(wchar_t)), dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if (cchDest == 0)
+ {
+
+ if ((cchToCopy != 0) && (*pszSrc != L'\0'))
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ status = RtlWideCharArrayCopyStringWorker(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszSrc,
+ cchToCopy);
+
+ pszDestEnd = pszDest + cchNewDestLength;
+ cchRemaining = cchDest - cchNewDestLength;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining != 0))
+ {
+
+ RtlUnicodeStringExHandleFill(pszDestEnd, cchRemaining, dwFlags);
+ }
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+
+ RtlUnicodeStringExHandleOtherFlags(pszDest,
+ cchDest,
+ 0,
+ &cchNewDestLength,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if (DestinationString)
+ {
+
+ DestinationString->Length = (USHORT)(cchNewDestLength * sizeof(wchar_t));
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (RemainingString)
+ {
+ RemainingString->Length = 0;
+
+ RemainingString->MaximumLength = (USHORT)(cchRemaining * sizeof(wchar_t));
+ RemainingString->Buffer = pszDestEnd;
+ }
+ }
+ }
+
+ return status;
+}
+#line 8762 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCbCopyStringNEx(
+ PUNICODE_STRING DestinationString,
+ NTSTRSAFE_PCWSTR pszSrc,
+ size_t cbToCopy,
+ PUNICODE_STRING RemainingString,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ ((void *)0),
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+ size_t cchNewDestLength = 0;
+ size_t cchToCopy = cbToCopy / sizeof(wchar_t);
+
+ status = RtlStringExValidateSrcW(&pszSrc, &cchToCopy, (0xffff / sizeof(wchar_t)), dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if (cchDest == 0)
+ {
+
+ if ((cchToCopy != 0) && (*pszSrc != L'\0'))
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ status = RtlWideCharArrayCopyStringWorker(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszSrc,
+ cchToCopy);
+
+ pszDestEnd = pszDest + cchNewDestLength;
+ cchRemaining = cchDest - cchNewDestLength;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining != 0))
+ {
+
+ RtlUnicodeStringExHandleFill(pszDestEnd, cchRemaining, dwFlags);
+ }
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+
+ RtlUnicodeStringExHandleOtherFlags(pszDest,
+ cchDest,
+ 0,
+ &cchNewDestLength,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if (DestinationString)
+ {
+
+ DestinationString->Length = (USHORT)(cchNewDestLength * sizeof(wchar_t));
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (RemainingString)
+ {
+ RemainingString->Length = 0;
+
+ RemainingString->MaximumLength = (USHORT)(cchRemaining * sizeof(wchar_t));
+ RemainingString->Buffer = pszDestEnd;
+ }
+ }
+ }
+
+ return status;
+}
+#line 8953 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCchCopyNEx(
+ PUNICODE_STRING DestinationString,
+ PCUNICODE_STRING SourceString,
+ size_t cchToCopy,
+ PUNICODE_STRING RemainingString,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ ((void *)0),
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszSrc;
+ size_t cchSrcLength;
+ wchar_t* pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+ size_t cchNewDestLength = 0;
+
+ status = RtlUnicodeStringValidateSrcWorker(SourceString,
+ &pszSrc,
+ &cchSrcLength,
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (cchToCopy > (0xffff / sizeof(wchar_t)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ if (cchSrcLength < cchToCopy)
+ {
+ cchToCopy = cchSrcLength;
+ }
+
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if (cchDest == 0)
+ {
+
+ if (cchToCopy != 0)
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ status = RtlWideCharArrayCopyWorker(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszSrc,
+ cchToCopy);
+
+ pszDestEnd = pszDest + cchNewDestLength;
+ cchRemaining = cchDest - cchNewDestLength;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining != 0))
+ {
+
+ RtlUnicodeStringExHandleFill(pszDestEnd, cchRemaining, dwFlags);
+ }
+ }
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+
+ RtlUnicodeStringExHandleOtherFlags(pszDest,
+ cchDest,
+ 0,
+ &cchNewDestLength,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if (DestinationString)
+ {
+
+ DestinationString->Length = (USHORT)(cchNewDestLength * sizeof(wchar_t));
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (RemainingString)
+ {
+ RemainingString->Length = 0;
+
+ RemainingString->MaximumLength = (USHORT)(cchRemaining * sizeof(wchar_t));
+ RemainingString->Buffer = pszDestEnd;
+ }
+ }
+ }
+
+ return status;
+}
+#line 9159 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCbCopyNEx(
+ PUNICODE_STRING DestinationString,
+ PCUNICODE_STRING SourceString,
+ size_t cbToCopy,
+ PUNICODE_STRING RemainingString,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ ((void *)0),
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszSrc;
+ size_t cchSrcLength;
+ wchar_t* pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+ size_t cchNewDestLength = 0;
+
+ status = RtlUnicodeStringValidateSrcWorker(SourceString,
+ &pszSrc,
+ &cchSrcLength,
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ size_t cchToCopy = cbToCopy / sizeof(wchar_t);
+
+ if (cchToCopy > (0xffff / sizeof(wchar_t)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ if (cchSrcLength < cchToCopy)
+ {
+ cchToCopy = cchSrcLength;
+ }
+
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if (cchDest == 0)
+ {
+
+ if (cchToCopy != 0)
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ status = RtlWideCharArrayCopyWorker(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszSrc,
+ cchToCopy);
+
+ pszDestEnd = pszDest + cchNewDestLength;
+ cchRemaining = cchDest - cchNewDestLength;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining != 0))
+ {
+
+ RtlUnicodeStringExHandleFill(pszDestEnd, cchRemaining, dwFlags);
+ }
+ }
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+
+ RtlUnicodeStringExHandleOtherFlags(pszDest,
+ cchDest,
+ 0,
+ &cchNewDestLength,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if (DestinationString)
+ {
+
+ DestinationString->Length = (USHORT)(cchNewDestLength * sizeof(wchar_t));
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (RemainingString)
+ {
+ RemainingString->Length = 0;
+
+ RemainingString->MaximumLength = (USHORT)(cchRemaining * sizeof(wchar_t));
+ RemainingString->Buffer = pszDestEnd;
+ }
+ }
+ }
+
+ return status;
+}
+#line 9368 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCatString(
+ PUNICODE_STRING DestinationString,
+ NTSTRSAFE_PCWSTR pszSrc)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+ size_t cchDestLength;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ &cchDestLength,
+ (0xffff / sizeof(wchar_t)),
+ 0);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ size_t cchCopied = 0;
+
+ status = RtlWideCharArrayCopyStringWorker(pszDest + cchDestLength,
+ cchDest - cchDestLength,
+ &cchCopied,
+ pszSrc,
+ (0xffff / sizeof(wchar_t)));
+
+
+ DestinationString->Length = (USHORT)((cchDestLength + cchCopied) * sizeof(wchar_t));
+ }
+
+ return status;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCat(
+ PUNICODE_STRING DestinationString,
+ PCUNICODE_STRING SourceString)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+ size_t cchDestLength;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ &cchDestLength,
+ (0xffff / sizeof(wchar_t)),
+ 0);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszSrc;
+ size_t cchSrcLength;
+
+ status = RtlUnicodeStringValidateSrcWorker(SourceString,
+ &pszSrc,
+ &cchSrcLength,
+ (0xffff / sizeof(wchar_t)),
+ 0);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ size_t cchCopied = 0;
+
+ status = RtlWideCharArrayCopyWorker(pszDest + cchDestLength,
+ cchDest - cchDestLength,
+ &cchCopied,
+ pszSrc,
+ cchSrcLength);
+
+
+ DestinationString->Length = (USHORT)((cchDestLength + cchCopied) * sizeof(wchar_t));
+ }
+ }
+
+ return status;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCatStringEx(
+ PUNICODE_STRING DestinationString,
+ NTSTRSAFE_PCWSTR pszSrc,
+ PUNICODE_STRING RemainingString,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+ size_t cchDestLength;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ &cchDestLength,
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszDestEnd = pszDest + cchDestLength;
+ size_t cchRemaining = cchDest - cchDestLength;
+ size_t cchNewDestLength = cchDestLength;
+
+ status = RtlStringExValidateSrcW(&pszSrc, ((void *)0), (0xffff / sizeof(wchar_t)), dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if (cchRemaining == 0)
+ {
+
+ if (*pszSrc != L'\0')
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlWideCharArrayCopyStringWorker(pszDestEnd,
+ cchRemaining,
+ &cchCopied,
+ pszSrc,
+ (0xffff / sizeof(wchar_t)));
+
+ pszDestEnd = pszDestEnd + cchCopied;
+ cchRemaining = cchRemaining - cchCopied;
+
+ cchNewDestLength = cchDestLength + cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining != 0))
+ {
+
+ RtlUnicodeStringExHandleFill(pszDestEnd, cchRemaining, dwFlags);
+ }
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+
+ RtlUnicodeStringExHandleOtherFlags(pszDest,
+ cchDest,
+ cchDestLength,
+ &cchNewDestLength,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if (DestinationString)
+ {
+
+ DestinationString->Length = (USHORT)(cchNewDestLength * sizeof(wchar_t));
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (RemainingString)
+ {
+ RemainingString->Length = 0;
+
+ RemainingString->MaximumLength = (USHORT)(cchRemaining * sizeof(wchar_t));
+ RemainingString->Buffer = pszDestEnd;
+ }
+ }
+ }
+
+ return status;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCatEx(
+ PUNICODE_STRING DestinationString,
+ PCUNICODE_STRING SourceString,
+ PUNICODE_STRING RemainingString,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+ size_t cchDestLength;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ &cchDestLength,
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszSrc;
+ size_t cchSrcLength;
+ wchar_t* pszDestEnd = pszDest + cchDestLength;
+ size_t cchRemaining = cchDest - cchDestLength;
+ size_t cchNewDestLength = cchDestLength;
+
+ status = RtlUnicodeStringValidateSrcWorker(SourceString,
+ &pszSrc,
+ &cchSrcLength,
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if (cchRemaining == 0)
+ {
+
+ if (cchSrcLength != 0)
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlWideCharArrayCopyWorker(pszDestEnd,
+ cchRemaining,
+ &cchCopied,
+ pszSrc,
+ cchSrcLength);
+
+ pszDestEnd = pszDestEnd + cchCopied;
+ cchRemaining = cchRemaining - cchCopied;
+
+ cchNewDestLength = cchDestLength + cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining != 0))
+ {
+
+ RtlUnicodeStringExHandleFill(pszDestEnd, cchRemaining, dwFlags);
+ }
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+
+ RtlUnicodeStringExHandleOtherFlags(pszDest,
+ cchDest,
+ cchDestLength,
+ &cchNewDestLength,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if (DestinationString)
+ {
+
+ DestinationString->Length = (USHORT)(cchNewDestLength * sizeof(wchar_t));
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (RemainingString)
+ {
+ RemainingString->Length = 0;
+
+ RemainingString->MaximumLength = (USHORT)(cchRemaining * sizeof(wchar_t));
+ RemainingString->Buffer = pszDestEnd;
+ }
+ }
+ }
+
+ return status;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCchCatStringN(
+ PUNICODE_STRING DestinationString,
+ NTSTRSAFE_PCWSTR pszSrc,
+ size_t cchToAppend)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+ size_t cchDestLength;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ &cchDestLength,
+ (0xffff / sizeof(wchar_t)),
+ 0);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (cchToAppend > (0xffff / sizeof(wchar_t)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlWideCharArrayCopyStringWorker(pszDest + cchDestLength,
+ cchDest - cchDestLength,
+ &cchCopied,
+ pszSrc,
+ cchToAppend);
+
+
+ DestinationString->Length = (USHORT)((cchDestLength + cchCopied) * sizeof(wchar_t));
+ }
+ }
+
+ return status;
+}
+#line 10041 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCbCatStringN(
+ PUNICODE_STRING DestinationString,
+ NTSTRSAFE_PCWSTR pszSrc,
+ size_t cbToAppend)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+ size_t cchDestLength;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ &cchDestLength,
+ (0xffff / sizeof(wchar_t)),
+ 0);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ size_t cchToAppend = cbToAppend / sizeof(wchar_t);
+
+ if (cchToAppend > (0xffff / sizeof(wchar_t)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlWideCharArrayCopyStringWorker(pszDest + cchDestLength,
+ cchDest - cchDestLength,
+ &cchCopied,
+ pszSrc,
+ cchToAppend);
+
+
+ DestinationString->Length = (USHORT)((cchDestLength + cchCopied) * sizeof(wchar_t));
+ }
+ }
+
+ return status;
+}
+#line 10143 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCchCatN(
+ PUNICODE_STRING DestinationString,
+ PCUNICODE_STRING SourceString,
+ size_t cchToAppend)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+ size_t cchDestLength;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ &cchDestLength,
+ (0xffff / sizeof(wchar_t)),
+ 0);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszSrc;
+ size_t cchSrcLength;
+
+ status = RtlUnicodeStringValidateSrcWorker(SourceString,
+ &pszSrc,
+ &cchSrcLength,
+ (0xffff / sizeof(wchar_t)),
+ 0);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (cchToAppend > (0xffff / sizeof(wchar_t)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ if (cchSrcLength < cchToAppend)
+ {
+ cchToAppend = cchSrcLength;
+ }
+
+ status = RtlWideCharArrayCopyWorker(pszDest + cchDestLength,
+ cchDest - cchDestLength,
+ &cchCopied,
+ pszSrc,
+ cchToAppend);
+
+
+ DestinationString->Length = (USHORT)((cchDestLength + cchCopied) * sizeof(wchar_t));
+ }
+ }
+ }
+
+ return status;
+}
+#line 10260 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCbCatN(
+ PUNICODE_STRING DestinationString,
+ PCUNICODE_STRING SourceString,
+ size_t cbToAppend)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+ size_t cchDestLength;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ &cchDestLength,
+ (0xffff / sizeof(wchar_t)),
+ 0);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszSrc;
+ size_t cchSrcLength;
+
+ status = RtlUnicodeStringValidateSrcWorker(SourceString,
+ &pszSrc,
+ &cchSrcLength,
+ (0xffff / sizeof(wchar_t)),
+ 0);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ size_t cchToAppend = cbToAppend / sizeof(wchar_t);
+
+ if (cchToAppend > (0xffff / sizeof(wchar_t)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ if (cchSrcLength < cchToAppend)
+ {
+ cchToAppend = cchSrcLength;
+ }
+
+ status = RtlWideCharArrayCopyWorker(pszDest + cchDestLength,
+ cchDest - cchDestLength,
+ &cchCopied,
+ pszSrc,
+ cchToAppend);
+
+
+ DestinationString->Length = (USHORT)((cchDestLength + cchCopied) * sizeof(wchar_t));
+ }
+ }
+ }
+
+ return status;
+}
+#line 10379 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCchCatStringNEx(
+ PUNICODE_STRING DestinationString,
+ NTSTRSAFE_PCWSTR pszSrc,
+ size_t cchToAppend,
+ PUNICODE_STRING RemainingString,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+ size_t cchDestLength;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ &cchDestLength,
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszDestEnd = pszDest + cchDestLength;
+ size_t cchRemaining = cchDest - cchDestLength;
+ size_t cchNewDestLength = cchDestLength;
+
+ status = RtlStringExValidateSrcW(&pszSrc, &cchToAppend, (0xffff / sizeof(wchar_t)), dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if (cchRemaining == 0)
+ {
+
+ if ((cchToAppend != 0) && (*pszSrc != L'\0'))
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlWideCharArrayCopyStringWorker(pszDestEnd,
+ cchRemaining,
+ &cchCopied,
+ pszSrc,
+ cchToAppend);
+
+ pszDestEnd = pszDestEnd + cchCopied;
+ cchRemaining = cchRemaining - cchCopied;
+
+ cchNewDestLength = cchDestLength + cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining != 0))
+ {
+
+ RtlUnicodeStringExHandleFill(pszDestEnd, cchRemaining, dwFlags);
+ }
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+
+ RtlUnicodeStringExHandleOtherFlags(pszDest,
+ cchDest,
+ cchDestLength,
+ &cchNewDestLength,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if (DestinationString)
+ {
+
+ DestinationString->Length = (USHORT)(cchNewDestLength * sizeof(wchar_t));
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (RemainingString)
+ {
+ RemainingString->Length = 0;
+
+ RemainingString->MaximumLength = (USHORT)(cchRemaining * sizeof(wchar_t));
+ RemainingString->Buffer = pszDestEnd;
+ }
+ }
+ }
+
+ return status;
+}
+#line 10577 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCbCatStringNEx(
+ PUNICODE_STRING DestinationString,
+ NTSTRSAFE_PCWSTR pszSrc,
+ size_t cbToAppend,
+ PUNICODE_STRING RemainingString,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+ size_t cchDestLength;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ &cchDestLength,
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszDestEnd = pszDest + cchDestLength;
+ size_t cchRemaining = cchDest - cchDestLength;
+ size_t cchNewDestLength = cchDestLength;
+ size_t cchToAppend = cbToAppend / sizeof(wchar_t);
+
+ status = RtlStringExValidateSrcW(&pszSrc, &cchToAppend, (0xffff / sizeof(wchar_t)), dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if (cchRemaining == 0)
+ {
+
+ if ((cchToAppend != 0) && (*pszSrc != L'\0'))
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlWideCharArrayCopyStringWorker(pszDestEnd,
+ cchRemaining,
+ &cchCopied,
+ pszSrc,
+ cchToAppend);
+
+ pszDestEnd = pszDestEnd + cchCopied;
+ cchRemaining = cchRemaining - cchCopied;
+
+ cchNewDestLength = cchDestLength + cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining != 0))
+ {
+
+ RtlUnicodeStringExHandleFill(pszDestEnd, cchRemaining, dwFlags);
+ }
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+
+ RtlUnicodeStringExHandleOtherFlags(pszDest,
+ cchDest,
+ cchDestLength,
+ &cchNewDestLength,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if (DestinationString)
+ {
+
+ DestinationString->Length = (USHORT)(cchNewDestLength * sizeof(wchar_t));
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (RemainingString)
+ {
+ RemainingString->Length = 0;
+
+ RemainingString->MaximumLength = (USHORT)(cchRemaining * sizeof(wchar_t));
+ RemainingString->Buffer = pszDestEnd;
+ }
+ }
+ }
+
+ return status;
+}
+#line 10776 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable : 26035)
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCchCatNEx(
+ PUNICODE_STRING DestinationString,
+ PCUNICODE_STRING SourceString,
+ size_t cchToAppend,
+ PUNICODE_STRING RemainingString,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+ size_t cchDestLength;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ &cchDestLength,
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszSrc;
+ size_t cchSrcLength;
+ wchar_t* pszDestEnd = pszDest + cchDestLength;
+ size_t cchRemaining = cchDest - cchDestLength;
+ size_t cchNewDestLength = cchDestLength;
+
+ status = RtlUnicodeStringValidateSrcWorker(SourceString,
+ &pszSrc,
+ &cchSrcLength,
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (cchToAppend > (0xffff / sizeof(wchar_t)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ if (cchSrcLength < cchToAppend)
+ {
+ cchToAppend = cchSrcLength;
+ }
+
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if (cchRemaining == 0)
+ {
+
+ if (cchToAppend != 0)
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlWideCharArrayCopyStringWorker(pszDestEnd,
+ cchRemaining,
+ &cchCopied,
+ pszSrc,
+ cchToAppend);
+
+ pszDestEnd = pszDestEnd + cchCopied;
+ cchRemaining = cchRemaining - cchCopied;
+
+ cchNewDestLength = cchDestLength + cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining != 0))
+ {
+
+ RtlUnicodeStringExHandleFill(pszDestEnd, cchRemaining, dwFlags);
+ }
+ }
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+
+ RtlUnicodeStringExHandleOtherFlags(pszDest,
+ cchDest,
+ cchDestLength,
+ &cchNewDestLength,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if (DestinationString)
+ {
+
+ DestinationString->Length = (USHORT)(cchNewDestLength * sizeof(wchar_t));
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (RemainingString)
+ {
+ RemainingString->Length = 0;
+
+ RemainingString->MaximumLength = (USHORT)(cchRemaining * sizeof(wchar_t));
+ RemainingString->Buffer = pszDestEnd;
+ }
+ }
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+#line 10999 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringCbCatNEx(
+ PUNICODE_STRING DestinationString,
+ PCUNICODE_STRING SourceString,
+ size_t cbToAppend,
+ PUNICODE_STRING RemainingString,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+ size_t cchDestLength;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ &cchDestLength,
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszSrc;
+ size_t cchSrcLength;
+ wchar_t* pszDestEnd = pszDest + cchDestLength;
+ size_t cchRemaining = cchDest - cchDestLength;
+ size_t cchNewDestLength = cchDestLength;
+
+ status = RtlUnicodeStringValidateSrcWorker(SourceString,
+ &pszSrc,
+ &cchSrcLength,
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ size_t cchToAppend = cbToAppend / sizeof(wchar_t);
+
+ if (cchToAppend > (0xffff / sizeof(wchar_t)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ if (cchSrcLength < cchToAppend)
+ {
+ cchToAppend = cchSrcLength;
+ }
+
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if (cchRemaining == 0)
+ {
+
+ if (cchToAppend != 0)
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ size_t cchCopied = 0;
+
+ status = RtlWideCharArrayCopyWorker(pszDestEnd,
+ cchRemaining,
+ &cchCopied,
+ pszSrc,
+ cchToAppend);
+
+ pszDestEnd = pszDestEnd + cchCopied;
+ cchRemaining = cchRemaining - cchCopied;
+
+ cchNewDestLength = cchDestLength + cchCopied;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining != 0))
+ {
+
+ RtlUnicodeStringExHandleFill(pszDestEnd, cchRemaining, dwFlags);
+ }
+ }
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+
+ RtlUnicodeStringExHandleOtherFlags(pszDest,
+ cchDest,
+ cchDestLength,
+ &cchNewDestLength,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if (DestinationString)
+ {
+
+ DestinationString->Length = (USHORT)(cchNewDestLength * sizeof(wchar_t));
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (RemainingString)
+ {
+ RemainingString->Length = 0;
+
+ RemainingString->MaximumLength = (USHORT)(cchRemaining * sizeof(wchar_t));
+ RemainingString->Buffer = pszDestEnd;
+ }
+ }
+ }
+
+ return status;
+}
+#line 11217 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringVPrintf(
+ PUNICODE_STRING DestinationString,
+ NTSTRSAFE_PCWSTR pszFormat,
+ va_list argList)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ ((void *)0),
+ (0xffff / sizeof(wchar_t)),
+ 0);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ size_t cchNewDestLength = 0;
+
+ status = RtlWideCharArrayVPrintfWorker(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszFormat,
+ argList);
+
+
+ DestinationString->Length = (USHORT)(cchNewDestLength * sizeof(wchar_t));
+ }
+
+ return status;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringVPrintfEx(
+ PUNICODE_STRING DestinationString,
+ PUNICODE_STRING RemainingString,
+ DWORD dwFlags,
+ NTSTRSAFE_PCWSTR pszFormat,
+ va_list argList)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ ((void *)0),
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+ size_t cchNewDestLength = 0;
+
+ status = RtlStringExValidateSrcW(&pszFormat, ((void *)0), (0xffff / sizeof(wchar_t)), dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if (cchDest == 0)
+ {
+
+ if (*pszFormat != L'\0')
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ status = RtlWideCharArrayVPrintfWorker(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszFormat,
+ argList);
+
+ pszDestEnd = pszDest + cchNewDestLength;
+ cchRemaining = cchDest - cchNewDestLength;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining != 0))
+ {
+
+ RtlUnicodeStringExHandleFill(pszDestEnd, cchRemaining, dwFlags);
+ }
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+
+ RtlUnicodeStringExHandleOtherFlags(pszDest,
+ cchDest,
+ 0,
+ &cchNewDestLength,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if (DestinationString)
+ {
+
+ DestinationString->Length = (USHORT)(cchNewDestLength * sizeof(wchar_t));
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (RemainingString)
+ {
+ RemainingString->Length = 0;
+
+ RemainingString->MaximumLength = (USHORT)(cchRemaining * sizeof(wchar_t));
+ RemainingString->Buffer = pszDestEnd;
+ }
+ }
+ }
+
+ return status;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringPrintf(
+ PUNICODE_STRING DestinationString,
+ NTSTRSAFE_PCWSTR pszFormat,
+ ...)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ ((void *)0),
+ (0xffff / sizeof(wchar_t)),
+ 0);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ va_list argList;
+ size_t cchNewDestLength = 0;
+
+ ((void)(__va_start(&argList, pszFormat)));
+
+ status = RtlWideCharArrayVPrintfWorker(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszFormat,
+ argList);
+
+ ((void)(argList = (va_list)0));
+
+
+ DestinationString->Length = (USHORT)(cchNewDestLength * sizeof(wchar_t));
+ }
+
+ return status;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__inline NTSTATUS __stdcall
+RtlUnicodeStringPrintfEx(
+ PUNICODE_STRING DestinationString,
+ PUNICODE_STRING RemainingString,
+ DWORD dwFlags,
+ NTSTRSAFE_PCWSTR pszFormat,
+ ...)
+{
+ NTSTATUS status;
+ wchar_t* pszDest;
+ size_t cchDest;
+
+ status = RtlUnicodeStringValidateDestWorker(DestinationString,
+ &pszDest,
+ &cchDest,
+ ((void *)0),
+ (0xffff / sizeof(wchar_t)),
+ dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ wchar_t* pszDestEnd = pszDest;
+ size_t cchRemaining = cchDest;
+ size_t cchNewDestLength = 0;
+
+ status = RtlStringExValidateSrcW(&pszFormat, ((void *)0), (0xffff / sizeof(wchar_t)), dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (dwFlags & (~(0x000000FF | 0x00000100 | 0x00000200 | 0x00000400 | 0x00000800 | 0x00001000)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if (cchDest == 0)
+ {
+
+ if (*pszFormat != L'\0')
+ {
+ if (pszDest == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else
+ {
+ status = ((NTSTATUS)0x80000005L);
+ }
+ }
+ }
+ else
+ {
+ va_list argList;
+
+ ((void)(__va_start(&argList, pszFormat)));
+
+ status = RtlWideCharArrayVPrintfWorker(pszDest,
+ cchDest,
+ &cchNewDestLength,
+ pszFormat,
+ argList);
+
+ ((void)(argList = (va_list)0));
+
+ pszDestEnd = pszDest + cchNewDestLength;
+ cchRemaining = cchDest - cchNewDestLength;
+
+ if ((((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & 0x00000200) &&
+ (cchRemaining != 0))
+ {
+
+ RtlUnicodeStringExHandleFill(pszDestEnd, cchRemaining, dwFlags);
+ }
+ }
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0) &&
+ (dwFlags & (0x00001000 | 0x00000400 | 0x00000800)) &&
+ (cchDest != 0))
+ {
+
+ RtlUnicodeStringExHandleOtherFlags(pszDest,
+ cchDest,
+ 0,
+ &cchNewDestLength,
+ &pszDestEnd,
+ &cchRemaining,
+ dwFlags);
+ }
+
+ if (DestinationString)
+ {
+
+ DestinationString->Length = (USHORT)(cchNewDestLength * sizeof(wchar_t));
+ }
+
+ if ((((NTSTATUS)(status)) >= 0) || (status == ((NTSTATUS)0x80000005L)))
+ {
+ if (RemainingString)
+ {
+ RemainingString->Length = 0;
+
+ RemainingString->MaximumLength = (USHORT)(cchRemaining * sizeof(wchar_t));
+ RemainingString->Buffer = pszDestEnd;
+ }
+ }
+ }
+
+ return status;
+}
+
+#line 11793 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+#pragma warning(pop)
+
+#line 11797 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+#line 11801 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable:28196)
+
+
+static __inline NTSTATUS __stdcall
+ RtlStringLengthWorkerA(
+ STRSAFE_PCNZCH psz,
+ size_t cchMax,
+ size_t* pcchLength)
+{
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+ size_t cchOriginalMax = cchMax;
+
+ while (cchMax && (*psz != '\0'))
+ {
+ psz++;
+ cchMax--;
+ }
+
+ if (cchMax == 0)
+ {
+
+ status = ((NTSTATUS)0xC000000DL);
+ }
+
+ if (pcchLength)
+ {
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ *pcchLength = cchOriginalMax - cchMax;
+ }
+ else
+ {
+ *pcchLength = 0;
+ }
+ }
+
+ return status;
+}
+
+
+
+static __inline NTSTATUS __stdcall
+ RtlStringLengthWorkerW(
+ STRSAFE_PCNZWCH psz,
+ size_t cchMax,
+ size_t* pcchLength)
+{
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+ size_t cchOriginalMax = cchMax;
+
+ while (cchMax && (*psz != L'\0'))
+ {
+ psz++;
+ cchMax--;
+ }
+
+ if (cchMax == 0)
+ {
+
+ status = ((NTSTATUS)0xC000000DL);
+ }
+
+ if (pcchLength)
+ {
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ *pcchLength = cchOriginalMax - cchMax;
+ }
+ else
+ {
+ *pcchLength = 0;
+ }
+ }
+
+ return status;
+}
+
+
+static __inline NTSTATUS __stdcall
+ RtlUnalignedStringLengthWorkerW(
+ STRSAFE_PCUNZWCH psz,
+ size_t cchMax,
+ size_t* pcchLength)
+{
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+ size_t cchOriginalMax = cchMax;
+
+ while (cchMax && (*psz != L'\0'))
+ {
+ psz++;
+ cchMax--;
+ }
+
+ if (cchMax == 0)
+ {
+
+ status = ((NTSTATUS)0xC000000DL);
+ }
+
+ if (pcchLength)
+ {
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ *pcchLength = cchOriginalMax - cchMax;
+ }
+ else
+ {
+ *pcchLength = 0;
+ }
+ }
+
+ return status;
+}
+#line 11921 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+#pragma warning(pop)
+
+
+#pragma warning(push)
+#pragma warning(disable : 6011)
+#pragma warning(disable : 6387)
+#pragma warning(disable : 28183)
+#pragma warning(disable : 28196)
+#pragma warning(disable : 6054)
+
+
+
+
+ static __inline NTSTATUS __stdcall
+ RtlStringExValidateSrcA(
+ STRSAFE_PCNZCH* ppszSrc,
+
+
+ size_t* pcchToRead,
+ const size_t cchMax,
+ DWORD dwFlags)
+{
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+
+ if (pcchToRead && (*pcchToRead >= cchMax))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if ((dwFlags & 0x00000100) && (*ppszSrc == ((void *)0)))
+ {
+ *ppszSrc = "";
+
+ if (pcchToRead)
+ {
+ *pcchToRead = 0;
+ }
+ }
+
+ return status;
+}
+
+
+
+
+
+ static __inline NTSTATUS __stdcall
+ RtlStringExValidateSrcW(
+ STRSAFE_PCNZWCH* ppszSrc,
+
+
+ size_t* pcchToRead,
+ const size_t cchMax,
+ DWORD dwFlags)
+{
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+
+ if (pcchToRead && (*pcchToRead >= cchMax))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if ((dwFlags & 0x00000100) && (*ppszSrc == ((void *)0)))
+ {
+ *ppszSrc = L"";
+
+ if (pcchToRead)
+ {
+ *pcchToRead = 0;
+ }
+ }
+
+ return status;
+}
+
+
+#pragma warning(pop)
+
+
+#pragma warning(push)
+#pragma warning(disable : 4100)
+
+ static __inline NTSTATUS __stdcall
+ RtlStringValidateDestA(
+ STRSAFE_PCNZCH pszDest,
+ size_t cchDest,
+ const size_t cchMax)
+{
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+
+ if ((cchDest == 0) || (cchDest > cchMax))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+
+ return status;
+}
+#pragma warning(pop)
+
+
+#pragma warning(push)
+#pragma warning(disable : 6011)
+#pragma warning(disable : 6387)
+#pragma warning(disable : 26061)
+
+
+ static __inline NTSTATUS __stdcall
+ RtlStringValidateDestAndLengthA(
+ NTSTRSAFE_PCSTR pszDest,
+ size_t cchDest,
+ size_t* pcchDestLength,
+ const size_t cchMax)
+{
+ NTSTATUS status;
+
+ status = RtlStringValidateDestA(pszDest, cchDest, cchMax);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ status = RtlStringLengthWorkerA(pszDest, cchDest, pcchDestLength);
+ }
+ else
+ {
+ *pcchDestLength = 0;
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+
+#pragma warning(push)
+#pragma warning(disable : 4100)
+
+ static __inline NTSTATUS __stdcall
+ RtlStringValidateDestW(
+ STRSAFE_PCNZWCH pszDest,
+ size_t cchDest,
+ const size_t cchMax)
+{
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+
+ if ((cchDest == 0) || (cchDest > cchMax))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+
+ return status;
+}
+#pragma warning(pop)
+
+
+#pragma warning(push)
+#pragma warning(disable : 6011)
+#pragma warning(disable : 6387)
+#pragma warning(disable : 26061)
+
+
+ static __inline NTSTATUS __stdcall
+ RtlStringValidateDestAndLengthW(
+ NTSTRSAFE_PCWSTR pszDest,
+ size_t cchDest,
+ size_t* pcchDestLength,
+ const size_t cchMax)
+{
+ NTSTATUS status;
+
+ status = RtlStringValidateDestW(pszDest, cchDest, cchMax);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ status = RtlStringLengthWorkerW(pszDest, cchDest, pcchDestLength);
+ }
+ else
+ {
+ *pcchDestLength = 0;
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+
+static __inline NTSTATUS __stdcall
+ RtlStringExValidateDestA(
+ STRSAFE_PCNZCH pszDest,
+ size_t cchDest,
+ const size_t cchMax,
+ DWORD dwFlags)
+{
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+
+ if (dwFlags & 0x00000100)
+ {
+ if (((pszDest == ((void *)0)) && (cchDest != 0)) ||
+ (cchDest > cchMax))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ }
+ else
+ {
+ status = RtlStringValidateDestA(pszDest, cchDest, cchMax);
+ }
+
+ return status;
+}
+
+
+#pragma warning(push)
+#pragma warning(disable : 6011)
+#pragma warning(disable : 6387)
+static __inline NTSTATUS __stdcall
+ RtlStringExValidateDestAndLengthA(
+ NTSTRSAFE_PCSTR pszDest,
+ size_t cchDest,
+ size_t* pcchDestLength,
+ const size_t cchMax,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+
+ if (dwFlags & 0x00000100)
+ {
+ status = RtlStringExValidateDestA(pszDest, cchDest, cchMax, dwFlags);
+
+ if (!(((NTSTATUS)(status)) >= 0) || (cchDest == 0))
+ {
+ *pcchDestLength = 0;
+ }
+ else
+ {
+ status = RtlStringLengthWorkerA(pszDest, cchDest, pcchDestLength);
+ }
+ }
+ else
+ {
+ status = RtlStringValidateDestAndLengthA(pszDest,
+ cchDest,
+ pcchDestLength,
+ cchMax);
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+
+static __inline NTSTATUS __stdcall
+ RtlStringExValidateDestW(
+ STRSAFE_PCNZWCH pszDest,
+ size_t cchDest,
+ const size_t cchMax,
+ DWORD dwFlags)
+{
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+
+ if (dwFlags & 0x00000100)
+ {
+ if (((pszDest == ((void *)0)) && (cchDest != 0)) ||
+ (cchDest > cchMax))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ }
+ else
+ {
+ status = RtlStringValidateDestW(pszDest, cchDest, cchMax);
+ }
+
+ return status;
+}
+
+
+#pragma warning(push)
+#pragma warning(disable : 6011)
+#pragma warning(disable : 6387)
+static __inline NTSTATUS __stdcall
+ RtlStringExValidateDestAndLengthW(
+ NTSTRSAFE_PCWSTR pszDest,
+ size_t cchDest,
+ size_t* pcchDestLength,
+ const size_t cchMax,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+
+ if (dwFlags & 0x00000100)
+ {
+ status = RtlStringExValidateDestW(pszDest, cchDest, cchMax, dwFlags);
+
+ if (!(((NTSTATUS)(status)) >= 0) || (cchDest == 0))
+ {
+ *pcchDestLength = 0;
+ }
+ else
+ {
+ status = RtlStringLengthWorkerW(pszDest, cchDest, pcchDestLength);
+ }
+ }
+ else
+ {
+ status = RtlStringValidateDestAndLengthW(pszDest,
+ cchDest,
+ pcchDestLength,
+ cchMax);
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+
+#pragma warning(push)
+#pragma warning(disable:28196)
+
+
+static __inline NTSTATUS __stdcall
+ RtlStringCopyWorkerA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cchDest,
+ size_t* pcchNewDestLength,
+ STRSAFE_PCNZCH pszSrc,
+ size_t cchToCopy)
+{
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+ size_t cchNewDestLength = 0;
+
+
+
+ while (cchDest && cchToCopy && (*pszSrc != '\0'))
+ {
+ *pszDest++ = *pszSrc++;
+ cchDest--;
+ cchToCopy--;
+
+ cchNewDestLength++;
+ }
+
+ if (cchDest == 0)
+ {
+
+ pszDest--;
+ cchNewDestLength--;
+
+ status = ((NTSTATUS)0x80000005L);
+ }
+
+ *pszDest = '\0';
+
+ if (pcchNewDestLength)
+ {
+ *pcchNewDestLength = cchNewDestLength;
+ }
+
+ return status;
+}
+
+
+
+static __inline NTSTATUS __stdcall
+ RtlStringCopyWorkerW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cchDest,
+ size_t* pcchNewDestLength,
+ STRSAFE_PCNZWCH pszSrc,
+ size_t cchToCopy)
+{
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+ size_t cchNewDestLength = 0;
+
+
+
+ while (cchDest && cchToCopy && (*pszSrc != L'\0'))
+ {
+ *pszDest++ = *pszSrc++;
+ cchDest--;
+ cchToCopy--;
+
+ cchNewDestLength++;
+ }
+
+ if (cchDest == 0)
+ {
+
+ pszDest--;
+ cchNewDestLength--;
+
+ status = ((NTSTATUS)0x80000005L);
+ }
+
+ *pszDest = L'\0';
+
+ if (pcchNewDestLength)
+ {
+ *pcchNewDestLength = cchNewDestLength;
+ }
+
+ return status;
+}
+
+
+#pragma warning(pop)
+
+
+static __inline NTSTATUS __stdcall
+ RtlStringVPrintfWorkerA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cchDest,
+ size_t* pcchNewDestLength,
+ NTSTRSAFE_PCSTR pszFormat,
+ va_list argList)
+{
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+ int iRet;
+ size_t cchMax;
+ size_t cchNewDestLength = 0;
+
+
+ cchMax = cchDest - 1;
+
+
+
+#line 12352 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+#pragma warning(push)
+#pragma warning(disable: 28719)
+#pragma warning(disable: 25025)
+ iRet = _vsnprintf(pszDest, cchMax, pszFormat, argList);
+#pragma warning(pop)
+#line 12358 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+ if ((iRet < 0) || (((size_t)iRet) > cchMax))
+ {
+
+ pszDest += cchMax;
+ *pszDest = '\0';
+
+ cchNewDestLength = cchMax;
+
+
+ status = ((NTSTATUS)0x80000005L);
+ }
+ else if (((size_t)iRet) == cchMax)
+ {
+
+ pszDest += cchMax;
+ *pszDest = '\0';
+
+ cchNewDestLength = cchMax;
+ }
+ else
+ {
+ cchNewDestLength = (size_t)iRet;
+ }
+
+ if (pcchNewDestLength)
+ {
+ *pcchNewDestLength = cchNewDestLength;
+ }
+
+ return status;
+}
+
+
+
+
+static __inline NTSTATUS __stdcall
+ RtlStringVPrintfWorkerW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cchDest,
+ size_t* pcchNewDestLength,
+ NTSTRSAFE_PCWSTR pszFormat,
+ va_list argList)
+{
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+ int iRet;
+ size_t cchMax;
+ size_t cchNewDestLength = 0;
+
+
+ cchMax = cchDest - 1;
+
+
+
+#line 12414 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+#pragma warning(push)
+#pragma warning(disable: 28719)
+ iRet = _vsnwprintf(pszDest, cchMax, pszFormat, argList);
+#pragma warning(pop)
+#line 12419 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+ if ((iRet < 0) || (((size_t)iRet) > cchMax))
+ {
+
+ pszDest += cchMax;
+ *pszDest = L'\0';
+
+ cchNewDestLength = cchMax;
+
+
+ status = ((NTSTATUS)0x80000005L);
+ }
+ else if (((size_t)iRet) == cchMax)
+ {
+
+ pszDest += cchMax;
+ *pszDest = L'\0';
+
+ cchNewDestLength = cchMax;
+ }
+ else
+ {
+ cchNewDestLength = (size_t)iRet;
+ }
+
+ if (pcchNewDestLength)
+ {
+ *pcchNewDestLength = cchNewDestLength;
+ }
+
+ return status;
+}
+
+
+
+
+static __inline NTSTATUS __stdcall
+ RtlStringExHandleFillBehindNullA(
+ NTSTRSAFE_PSTR pszDestEnd,
+ size_t cbRemaining,
+ DWORD dwFlags)
+{
+ if (cbRemaining > sizeof(char))
+ {
+ memset(pszDestEnd + 1, ((int)(dwFlags & 0x000000FF)), cbRemaining - sizeof(char));
+ }
+
+ return ((NTSTATUS)0x00000000L);
+}
+
+
+
+static __inline NTSTATUS __stdcall
+ RtlStringExHandleFillBehindNullW(
+ NTSTRSAFE_PWSTR pszDestEnd,
+ size_t cbRemaining,
+ DWORD dwFlags)
+{
+ if (cbRemaining > sizeof(wchar_t))
+ {
+ memset(pszDestEnd + 1, ((int)(dwFlags & 0x000000FF)), cbRemaining - sizeof(wchar_t));
+ }
+
+ return ((NTSTATUS)0x00000000L);
+}
+
+
+
+#pragma warning(push)
+#pragma warning(disable : 6001)
+#pragma warning(disable : 6101)
+#pragma warning(disable : 6054)
+#pragma warning(disable : 26036)
+#pragma warning(disable:26071)
+
+
+
+ static __inline NTSTATUS __stdcall
+ RtlStringExHandleOtherFlagsA(
+ NTSTRSAFE_PSTR pszDest,
+ size_t cbDest,
+ size_t cchOriginalDestLength,
+ NTSTRSAFE_PSTR* ppszDestEnd,
+ size_t* pcchRemaining,
+ DWORD dwFlags)
+{
+ size_t cchDest = cbDest / sizeof(char);
+
+ ;
+
+ if ((cchDest > 0) && (dwFlags & 0x00001000))
+ {
+ char* pszOriginalDestEnd;
+
+ pszOriginalDestEnd = pszDest + cchOriginalDestLength;
+
+ *ppszDestEnd = pszOriginalDestEnd;
+ *pcchRemaining = cchDest - cchOriginalDestLength;
+
+
+ *pszOriginalDestEnd = '\0';
+ }
+
+ if (dwFlags & 0x00000400)
+ {
+ memset(pszDest, ((int)(dwFlags & 0x000000FF)), cbDest);
+
+ if (((int)(dwFlags & 0x000000FF)) == 0)
+ {
+ *ppszDestEnd = pszDest;
+ *pcchRemaining = cchDest;
+ ;
+ }
+ else if (cchDest > 0)
+ {
+ char* pszDestEnd;
+
+ pszDestEnd = pszDest + cchDest - 1;
+
+ *ppszDestEnd = pszDestEnd;
+ *pcchRemaining = 1;
+
+
+ *pszDestEnd = L'\0';
+ }
+ }
+
+ if ((cchDest > 0) && (dwFlags & 0x00000800))
+ {
+ *ppszDestEnd = pszDest;
+ *pcchRemaining = cchDest;
+
+
+ *pszDest = '\0';
+ }
+
+ return ((NTSTATUS)0x00000000L);
+}
+
+
+
+
+ static __inline NTSTATUS __stdcall
+ RtlStringExHandleOtherFlagsW(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cbDest,
+ size_t cchOriginalDestLength,
+ NTSTRSAFE_PWSTR* ppszDestEnd,
+ size_t* pcchRemaining,
+ DWORD dwFlags)
+{
+ size_t cchDest = cbDest / sizeof(wchar_t);
+
+ ;
+
+ if ((cchDest > 0) && (dwFlags & 0x00001000))
+ {
+ wchar_t* pszOriginalDestEnd;
+
+ pszOriginalDestEnd = pszDest + cchOriginalDestLength;
+
+ *ppszDestEnd = pszOriginalDestEnd;
+ *pcchRemaining = cchDest - cchOriginalDestLength;
+
+
+ *pszOriginalDestEnd = L'\0';
+ }
+
+ if (dwFlags & 0x00000400)
+ {
+ memset(pszDest, ((int)(dwFlags & 0x000000FF)), cbDest);
+
+ if (((int)(dwFlags & 0x000000FF)) == 0)
+ {
+ *ppszDestEnd = pszDest;
+ *pcchRemaining = cchDest;
+ ;
+ }
+ else if (cchDest > 0)
+ {
+ wchar_t* pszDestEnd;
+
+ pszDestEnd = pszDest + cchDest - 1;
+
+ *ppszDestEnd = pszDestEnd;
+ *pcchRemaining = 1;
+
+
+ *pszDestEnd = L'\0';
+ }
+ }
+
+ if ((cchDest > 0) && (dwFlags & 0x00000800))
+ {
+ *ppszDestEnd = pszDest;
+ *pcchRemaining = cchDest;
+
+
+ *pszDest = L'\0';
+ }
+
+ return ((NTSTATUS)0x00000000L);
+}
+
+
+#pragma warning(pop)
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable : 26007)
+#pragma warning(disable : 26045)
+
+
+static __inline NTSTATUS __stdcall
+RtlUnicodeStringInitWorker(
+ PUNICODE_STRING DestinationString,
+ NTSTRSAFE_PCWSTR pszSrc,
+ const size_t cchMax,
+ DWORD dwFlags)
+{
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+
+ if (DestinationString || !(dwFlags & 0x00000100))
+ {
+ memset(DestinationString, 0, sizeof(*DestinationString));
+ }
+
+ if (pszSrc)
+ {
+ size_t cchSrcLength;
+
+ status = RtlStringLengthWorkerW(pszSrc, cchMax, &cchSrcLength);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (DestinationString)
+ {
+ size_t cbLength;
+
+
+ cbLength = cchSrcLength * sizeof(wchar_t);
+
+ DestinationString->Length = (USHORT)cbLength;
+
+ DestinationString->MaximumLength = (USHORT)(cbLength + sizeof(wchar_t));
+ DestinationString->Buffer = (PWSTR)pszSrc;
+ }
+ else
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ }
+ }
+
+ return status;
+}
+
+
+#pragma warning(push)
+#pragma warning(disable : 6011)
+#pragma warning(disable : 6387)
+#pragma warning(disable : 28196)
+
+static __inline NTSTATUS __stdcall
+RtlUnicodeStringValidateWorker(
+ PCUNICODE_STRING SourceString,
+ const size_t cchMax,
+ DWORD dwFlags)
+{
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+
+ if (SourceString || !(dwFlags & 0x00000100))
+ {
+ if (((SourceString->Length % sizeof(wchar_t)) != 0) ||
+ ((SourceString->MaximumLength % sizeof(wchar_t)) != 0) ||
+ (SourceString->Length > SourceString->MaximumLength) ||
+ (SourceString->MaximumLength > (cchMax * sizeof(wchar_t))))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ else if ((SourceString->Buffer == ((void *)0)) &&
+ ((SourceString->Length != 0) || (SourceString->MaximumLength != 0)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ }
+ }
+
+ return status;
+}
+
+#pragma warning(push)
+#pragma warning(disable : 26061)
+
+
+ static __inline NTSTATUS __stdcall
+ RtlUnicodeStringValidateSrcWorker(
+ PCUNICODE_STRING SourceString,
+ wchar_t** ppszSrc,
+ size_t* pcchSrcLength,
+ const size_t cchMax,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+
+ *ppszSrc = ((void *)0);
+ *pcchSrcLength = 0;
+
+ status = RtlUnicodeStringValidateWorker(SourceString, cchMax, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (SourceString)
+ {
+ *ppszSrc = SourceString->Buffer;
+ *pcchSrcLength = SourceString->Length / sizeof(wchar_t);
+ }
+
+ if ((*ppszSrc == ((void *)0)) && (dwFlags & 0x00000100))
+ {
+ *ppszSrc = (wchar_t*)L"";
+ }
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+#pragma warning(pop)
+
+#pragma warning(push)
+#pragma warning(disable : 26061)
+
+
+ static __inline NTSTATUS __stdcall
+ RtlUnicodeStringValidateDestWorker(
+ PCUNICODE_STRING DestinationString,
+ wchar_t** ppszDest,
+ size_t* pcchDest,
+ size_t* pcchDestLength,
+ const size_t cchMax,
+ DWORD dwFlags)
+{
+ NTSTATUS status;
+
+ *ppszDest = ((void *)0);
+ *pcchDest = 0;
+
+ if (pcchDestLength)
+ {
+ *pcchDestLength = 0;
+ }
+
+ status = RtlUnicodeStringValidateWorker(DestinationString, cchMax, dwFlags);
+
+ if ((((NTSTATUS)(status)) >= 0) && DestinationString)
+ {
+ *ppszDest = DestinationString->Buffer;
+ *pcchDest = DestinationString->MaximumLength / sizeof(wchar_t);
+
+ if (pcchDestLength)
+ {
+ *pcchDestLength = DestinationString->Length / sizeof(wchar_t);
+ }
+ }
+
+ return status;
+}
+
+#pragma warning(pop)
+
+static __inline NTSTATUS __stdcall
+ RtlStringCopyWideCharArrayWorker(
+ NTSTRSAFE_PWSTR pszDest,
+ size_t cchDest,
+ size_t* pcchNewDestLength,
+ const wchar_t* pszSrc,
+ size_t cchSrcLength)
+{
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+ size_t cchNewDestLength = 0;
+
+
+
+ while (cchDest && cchSrcLength)
+ {
+ *pszDest++ = *pszSrc++;
+ cchDest--;
+ cchSrcLength--;
+
+ cchNewDestLength++;
+ }
+
+ if (cchDest == 0)
+ {
+
+ pszDest--;
+ cchNewDestLength--;
+
+ status = ((NTSTATUS)0x80000005L);
+ }
+
+ *pszDest = L'\0';
+
+ if (pcchNewDestLength)
+ {
+ *pcchNewDestLength = cchNewDestLength;
+ }
+
+ return status;
+}
+
+static __inline NTSTATUS __stdcall
+ RtlWideCharArrayCopyStringWorker(
+ wchar_t* pszDest,
+ size_t cchDest,
+ size_t* pcchNewDestLength,
+ NTSTRSAFE_PCWSTR pszSrc,
+ size_t cchToCopy)
+{
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+ size_t cchNewDestLength = 0;
+
+ while (cchDest && cchToCopy && (*pszSrc != L'\0'))
+ {
+ *pszDest++ = *pszSrc++;
+ cchDest--;
+ cchToCopy--;
+
+ cchNewDestLength++;
+ }
+
+ if ((cchDest == 0) && (cchToCopy != 0) && (*pszSrc != L'\0'))
+ {
+
+ status = ((NTSTATUS)0x80000005L);
+ }
+
+ *pcchNewDestLength = cchNewDestLength;
+
+ return status;
+}
+
+static __inline NTSTATUS __stdcall
+ RtlWideCharArrayCopyWorker(
+ wchar_t* pszDest,
+ size_t cchDest,
+ size_t* pcchNewDestLength,
+ const wchar_t* pszSrc,
+ size_t cchSrcLength)
+{
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+ size_t cchNewDestLength = 0;
+
+ while (cchDest && cchSrcLength)
+ {
+ *pszDest++ = *pszSrc++;
+ cchDest--;
+ cchSrcLength--;
+
+ cchNewDestLength++;
+ }
+
+ if ((cchDest == 0) && (cchSrcLength != 0))
+ {
+
+ status = ((NTSTATUS)0x80000005L);
+ }
+
+ *pcchNewDestLength = cchNewDestLength;
+
+ return status;
+}
+
+static __inline NTSTATUS __stdcall
+ RtlWideCharArrayVPrintfWorker(
+ wchar_t* pszDest,
+ size_t cchDest,
+ size_t* pcchNewDestLength,
+ NTSTRSAFE_PCWSTR pszFormat,
+ va_list argList)
+{
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+ int iRet;
+
+#pragma warning(push)
+#pragma warning(disable: 28719)
+ iRet = _vsnwprintf(pszDest, cchDest, pszFormat, argList);
+#pragma warning(pop)
+
+
+ if ((iRet < 0) || (((size_t)iRet) > cchDest))
+ {
+ *pcchNewDestLength = cchDest;
+
+
+ status = ((NTSTATUS)0x80000005L);
+ }
+ else
+ {
+ *pcchNewDestLength = (size_t)iRet;
+ }
+
+ return status;
+}
+
+static __inline NTSTATUS __stdcall
+ RtlUnicodeStringExHandleFill(
+ wchar_t* pszDestEnd,
+ size_t cchRemaining,
+ DWORD dwFlags)
+{
+ size_t cbRemaining;
+
+
+ cbRemaining = cchRemaining * sizeof(wchar_t);
+
+ memset(pszDestEnd, ((int)(dwFlags & 0x000000FF)), cbRemaining);
+
+ return ((NTSTATUS)0x00000000L);
+}
+
+
+#pragma warning(push)
+#pragma warning(disable : 6001)
+#pragma warning(disable : 6101)
+
+static __inline NTSTATUS __stdcall
+ RtlUnicodeStringExHandleOtherFlags(
+ wchar_t* pszDest,
+ size_t cchDest,
+ size_t cchOriginalDestLength,
+ size_t* pcchNewDestLength,
+ wchar_t** ppszDestEnd,
+ size_t* pcchRemaining,
+ DWORD dwFlags)
+{
+ if (dwFlags & 0x00001000)
+ {
+ *ppszDestEnd = pszDest + cchOriginalDestLength;
+ *pcchRemaining = cchDest - cchOriginalDestLength;
+
+ *pcchNewDestLength = cchOriginalDestLength;
+ }
+
+ if (dwFlags & 0x00000400)
+ {
+ size_t cbDest;
+
+
+ cbDest = cchDest * sizeof(wchar_t);
+
+ memset(pszDest, ((int)(dwFlags & 0x000000FF)), cbDest);
+
+ *ppszDestEnd = pszDest;
+ *pcchRemaining = cchDest;
+
+ *pcchNewDestLength = 0;
+ }
+
+ if (dwFlags & 0x00000800)
+ {
+ *ppszDestEnd = pszDest;
+ *pcchRemaining = cchDest;
+
+ *pcchNewDestLength = 0;
+ }
+
+ return ((NTSTATUS)0x00000000L);
+}
+
+#pragma warning(pop)
+
+#pragma warning(pop)
+
+#line 12998 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+#line 13001 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+
+
+#pragma deprecated(RtlStringLengthWorkerA)
+#pragma deprecated(RtlStringLengthWorkerW)
+#pragma deprecated(RtlUnalignedStringLengthWorkerW)
+#pragma deprecated(RtlStringExValidateSrcA)
+#pragma deprecated(RtlStringExValidateSrcW)
+#pragma deprecated(RtlStringValidateDestA)
+#pragma deprecated(RtlStringValidateDestAndLengthA)
+#pragma deprecated(RtlStringValidateDestW)
+#pragma deprecated(RtlStringValidateDestAndLengthW)
+#pragma deprecated(RtlStringExValidateDestA)
+#pragma deprecated(RtlStringExValidateDestAndLengthA)
+#pragma deprecated(RtlStringExValidateDestW)
+#pragma deprecated(RtlStringExValidateDestAndLengthW)
+#pragma deprecated(RtlStringCopyWorkerA)
+#pragma deprecated(RtlStringCopyWorkerW)
+#pragma deprecated(RtlStringVPrintfWorkerA)
+#pragma deprecated(RtlStringVPrintfWorkerW)
+#pragma deprecated(RtlStringExHandleFillBehindNullA)
+#pragma deprecated(RtlStringExHandleFillBehindNullW)
+#pragma deprecated(RtlStringExHandleOtherFlagsA)
+#pragma deprecated(RtlStringExHandleOtherFlagsW)
+#pragma deprecated(RtlUnicodeStringInitWorker)
+#pragma deprecated(RtlUnicodeStringValidateWorker)
+#pragma deprecated(RtlUnicodeStringValidateSrcWorker)
+#pragma deprecated(RtlUnicodeStringValidateDestWorker)
+#pragma deprecated(RtlStringCopyWideCharArrayWorker)
+#pragma deprecated(RtlWideCharArrayCopyStringWorker)
+#pragma deprecated(RtlWideCharArrayCopyWorker)
+#pragma deprecated(RtlWideCharArrayVPrintfWorker)
+#pragma deprecated(RtlUnicodeStringExHandleFill)
+#pragma deprecated(RtlUnicodeStringExHandleOtherFlags)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 13069 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+
+
+#pragma warning(pop)
+#pragma warning(pop)
+
+#line 13075 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.26100.0\\km\\ntstrsafe.h"
+#line 42 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+
+#pragma external_header(push)
+#line 1 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 58 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+
+
+
+
+
+
+
+
+#line 67 "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared\\guiddef.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma external_header(pop)
+#line 44 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+
+#line 1 "E:\\Unity\\WinDivert\\include\\windivert_device_constants.h"
+
+
+
+
+
+
+
+extern const UNICODE_STRING device_name;
+extern const UNICODE_STRING dos_device_name;
+
+#line 12 "E:\\Unity\\WinDivert\\include\\windivert_device_constants.h"
+#line 46 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+#line 1 "E:\\Unity\\WinDivert\\include\\windivert_device.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1 "E:\\Unity\\WinDivert\\include\\windivert.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 45 "E:\\Unity\\WinDivert\\include\\windivert.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum
+{
+ WINDIVERT_LAYER_NETWORK = 0,
+ WINDIVERT_LAYER_NETWORK_FORWARD = 1,
+ WINDIVERT_LAYER_FLOW = 2,
+ WINDIVERT_LAYER_SOCKET = 3,
+ WINDIVERT_LAYER_REFLECT = 4,
+} WINDIVERT_LAYER, *PWINDIVERT_LAYER;
+
+
+
+
+typedef struct
+{
+ UINT32 IfIdx;
+ UINT32 SubIfIdx;
+} WINDIVERT_DATA_NETWORK, *PWINDIVERT_DATA_NETWORK;
+
+
+
+
+typedef struct
+{
+ UINT64 EndpointId;
+ UINT64 ParentEndpointId;
+ UINT32 ProcessId;
+ UINT32 LocalAddr[4];
+ UINT32 RemoteAddr[4];
+ UINT16 LocalPort;
+ UINT16 RemotePort;
+ UINT8 Protocol;
+} WINDIVERT_DATA_FLOW, *PWINDIVERT_DATA_FLOW;
+
+
+
+
+typedef struct
+{
+ UINT64 EndpointId;
+ UINT64 ParentEndpointId;
+ UINT32 ProcessId;
+ UINT32 LocalAddr[4];
+ UINT32 RemoteAddr[4];
+ UINT16 LocalPort;
+ UINT16 RemotePort;
+ UINT8 Protocol;
+} WINDIVERT_DATA_SOCKET, *PWINDIVERT_DATA_SOCKET;
+
+
+
+
+typedef struct
+{
+ INT64 Timestamp;
+ UINT32 ProcessId;
+ WINDIVERT_LAYER Layer;
+ UINT64 Flags;
+ INT16 Priority;
+} WINDIVERT_DATA_REFLECT, *PWINDIVERT_DATA_REFLECT;
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable: 4201)
+#line 142 "E:\\Unity\\WinDivert\\include\\windivert.h"
+typedef struct
+{
+ INT64 Timestamp;
+ UINT32 Layer:8;
+ UINT32 Event:8;
+ UINT32 Sniffed:1;
+ UINT32 Outbound:1;
+ UINT32 Loopback:1;
+ UINT32 Impostor:1;
+ UINT32 IPv6:1;
+ UINT32 IPChecksum:1;
+ UINT32 TCPChecksum:1;
+ UINT32 UDPChecksum:1;
+ UINT32 Reserved1:8;
+ UINT32 Reserved2;
+ union
+ {
+ WINDIVERT_DATA_NETWORK Network;
+ WINDIVERT_DATA_FLOW Flow;
+ WINDIVERT_DATA_SOCKET Socket;
+ WINDIVERT_DATA_REFLECT Reflect;
+ UINT8 Reserved3[64];
+ };
+} WINDIVERT_ADDRESS, *PWINDIVERT_ADDRESS;
+
+#pragma warning(pop)
+#line 169 "E:\\Unity\\WinDivert\\include\\windivert.h"
+
+
+
+
+typedef enum
+{
+ WINDIVERT_EVENT_NETWORK_PACKET = 0,
+ WINDIVERT_EVENT_FLOW_ESTABLISHED = 1,
+
+ WINDIVERT_EVENT_FLOW_DELETED = 2,
+ WINDIVERT_EVENT_SOCKET_BIND = 3,
+ WINDIVERT_EVENT_SOCKET_CONNECT = 4,
+ WINDIVERT_EVENT_SOCKET_LISTEN = 5,
+ WINDIVERT_EVENT_SOCKET_ACCEPT = 6,
+ WINDIVERT_EVENT_SOCKET_CLOSE = 7,
+ WINDIVERT_EVENT_REFLECT_OPEN = 8,
+ WINDIVERT_EVENT_REFLECT_CLOSE = 9,
+} WINDIVERT_EVENT, *PWINDIVERT_EVENT;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum
+{
+ WINDIVERT_PARAM_QUEUE_LENGTH = 0,
+ WINDIVERT_PARAM_QUEUE_TIME = 1,
+ WINDIVERT_PARAM_QUEUE_SIZE = 2,
+ WINDIVERT_PARAM_VERSION_MAJOR = 3,
+ WINDIVERT_PARAM_VERSION_MINOR = 4,
+} WINDIVERT_PARAM, *PWINDIVERT_PARAM;
+
+
+
+
+
+typedef enum
+{
+ WINDIVERT_SHUTDOWN_RECV = 0x1,
+ WINDIVERT_SHUTDOWN_SEND = 0x2,
+ WINDIVERT_SHUTDOWN_BOTH = 0x3,
+} WINDIVERT_SHUTDOWN, *PWINDIVERT_SHUTDOWN;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma warning(push)
+#pragma warning(disable: 4214)
+#line 337 "E:\\Unity\\WinDivert\\include\\windivert.h"
+
+
+
+
+typedef struct
+{
+ UINT8 HdrLength:4;
+ UINT8 Version:4;
+ UINT8 TOS;
+ UINT16 Length;
+ UINT16 Id;
+ UINT16 FragOff0;
+ UINT8 TTL;
+ UINT8 Protocol;
+ UINT16 Checksum;
+ UINT32 SrcAddr;
+ UINT32 DstAddr;
+} WINDIVERT_IPHDR, *PWINDIVERT_IPHDR;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct
+{
+ UINT8 TrafficClass0:4;
+ UINT8 Version:4;
+ UINT8 FlowLabel0:4;
+ UINT8 TrafficClass1:4;
+ UINT16 FlowLabel1;
+ UINT16 Length;
+ UINT8 NextHdr;
+ UINT8 HopLimit;
+ UINT32 SrcAddr[4];
+ UINT32 DstAddr[4];
+} WINDIVERT_IPV6HDR, *PWINDIVERT_IPV6HDR;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef struct
+{
+ UINT8 Type;
+ UINT8 Code;
+ UINT16 Checksum;
+ UINT32 Body;
+} WINDIVERT_ICMPHDR, *PWINDIVERT_ICMPHDR;
+
+typedef struct
+{
+ UINT8 Type;
+ UINT8 Code;
+ UINT16 Checksum;
+ UINT32 Body;
+} WINDIVERT_ICMPV6HDR, *PWINDIVERT_ICMPV6HDR;
+
+typedef struct
+{
+ UINT16 SrcPort;
+ UINT16 DstPort;
+ UINT32 SeqNum;
+ UINT32 AckNum;
+ UINT16 Reserved1:4;
+ UINT16 HdrLength:4;
+ UINT16 Fin:1;
+ UINT16 Syn:1;
+ UINT16 Rst:1;
+ UINT16 Psh:1;
+ UINT16 Ack:1;
+ UINT16 Urg:1;
+ UINT16 Reserved2:2;
+ UINT16 Window;
+ UINT16 Checksum;
+ UINT16 UrgPtr;
+} WINDIVERT_TCPHDR, *PWINDIVERT_TCPHDR;
+
+typedef struct
+{
+ UINT16 SrcPort;
+ UINT16 DstPort;
+ UINT16 Length;
+ UINT16 Checksum;
+} WINDIVERT_UDPHDR, *PWINDIVERT_UDPHDR;
+
+
+#pragma warning(pop)
+#line 475 "E:\\Unity\\WinDivert\\include\\windivert.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 631 "E:\\Unity\\WinDivert\\include\\windivert.h"
+#line 46 "E:\\Unity\\WinDivert\\include\\windivert_device.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma pack(push, 1)
+typedef union
+{
+ struct
+ {
+ UINT64 addr;
+ UINT64 addr_len_ptr;
+ } recv;
+ struct
+ {
+ UINT64 addr;
+ UINT64 addr_len;
+ } send;
+ struct
+ {
+ UINT32 layer;
+ UINT32 priority;
+ UINT64 flags;
+ } initialize;
+ struct
+ {
+ UINT64 flags;
+ } startup;
+ struct
+ {
+ UINT32 how;
+ } shutdown;
+ struct
+ {
+ UINT32 param;
+ } get_param;
+ struct
+ {
+ UINT64 val;
+ UINT32 param;
+ } set_param;
+} WINDIVERT_IOCTL, *PWINDIVERT_IOCTL;
+
+
+
+
+typedef struct
+{
+ UINT64 magic;
+ UINT32 major;
+ UINT32 minor;
+ UINT32 bits;
+ UINT32 reserved32[3];
+ UINT64 reserved64[4];
+} WINDIVERT_VERSION, *PWINDIVERT_VERSION;
+
+
+
+
+typedef struct
+{
+ UINT32 field:11;
+ UINT32 test:5;
+ UINT32 success:16;
+ UINT32 failure:16;
+ UINT32 neg:1;
+ UINT32 reserved:15;
+ UINT32 arg[4];
+} WINDIVERT_FILTER, *PWINDIVERT_FILTER;
+#pragma pack(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 326 "E:\\Unity\\WinDivert\\include\\windivert_device.h"
+#line 47 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+#line 1 "E:\\Unity\\WinDivert\\sys\\windivert_log.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 48 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+
+
+
+
+DRIVER_INITIALIZE DriverEntry;
+EVT_WDF_DRIVER_UNLOAD windivert_unload;
+EVT_WDF_IO_IN_CALLER_CONTEXT windivert_caller_context;
+EVT_WDF_IO_QUEUE_IO_DEVICE_CONTROL windivert_ioctl;
+EVT_WDF_DEVICE_FILE_CREATE windivert_create;
+EVT_WDF_FILE_CLEANUP windivert_cleanup;
+EVT_WDF_FILE_CLOSE windivert_close;
+EVT_WDF_OBJECT_CONTEXT_DESTROY windivert_destroy;
+EVT_WDF_WORKITEM windivert_worker;
+EVT_WDF_WORKITEM windivert_reflect_worker;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 87 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+
+
+
+
+
+
+
+typedef struct context_s* context_t;
+struct reflect_event_s
+{
+ LIST_ENTRY entry;
+ context_t context;
+ WINDIVERT_EVENT event;
+};
+typedef struct reflect_event_s* reflect_event_t;
+
+
+
+
+struct reflect_context_s
+{
+ LIST_ENTRY entry;
+ LONGLONG timestamp;
+ WINDIVERT_DATA_REFLECT data;
+ struct reflect_event_s open_event;
+ struct reflect_event_s close_event;
+ BOOL open;
+};
+
+
+
+
+
+
+typedef enum
+{
+ WINDIVERT_CONTEXT_STATE_OPENING = 0xA0,
+ WINDIVERT_CONTEXT_STATE_OPEN = 0xB1,
+ WINDIVERT_CONTEXT_STATE_CLOSING = 0xC2,
+ WINDIVERT_CONTEXT_STATE_CLOSED = 0xD3,
+} context_state_t;
+struct context_s
+{
+ context_state_t state;
+ KSPIN_LOCK lock;
+ WDFDEVICE device;
+ WDFFILEOBJECT object;
+ PEPROCESS process;
+ LIST_ENTRY flow_set;
+ UINT32 flow_v4_callout_id;
+ UINT32 flow_v6_callout_id;
+ LIST_ENTRY work_queue;
+ LIST_ENTRY packet_queue;
+ ULONGLONG work_queue_length;
+ ULONGLONG packet_queue_length;
+ ULONGLONG packet_queue_maxlength;
+ ULONGLONG packet_queue_size;
+ ULONGLONG packet_queue_maxsize;
+ LONGLONG packet_queue_maxcounts;
+ ULONGLONG packet_queue_maxtime;
+ WDFQUEUE read_queue;
+ WDFWORKITEM worker;
+ WINDIVERT_LAYER layer;
+ UINT64 flags;
+ BOOL initialized;
+ BOOL shutdown_recv;
+ BOOL shutdown_send;
+ BOOL shutdown_recv_enabled;
+ UINT32 priority;
+ INT16 priority16;
+ GUID callout_guid[12];
+
+ GUID filter_guid[12];
+
+ BOOL installed[12];
+ HANDLE engine_handle;
+ const WINDIVERT_FILTER* filter;
+ UINT16 filter_len;
+ UINT64 filter_flags;
+ struct reflect_context_s reflect;
+};
+typedef struct context_s context_s;
+typedef context_s* WDF_POINTER_TYPE_context_s; __declspec(allocate( ".data" )) __declspec(selectany) extern const WDF_OBJECT_CONTEXT_TYPE_INFO _WDF_context_s_TYPE_INFO = { sizeof(WDF_OBJECT_CONTEXT_TYPE_INFO), "context_s", sizeof(context_s), (&_WDF_context_s_TYPE_INFO), (PFN_GET_UNIQUE_CONTEXT_TYPE) ((void *)0), }; WDF_POINTER_TYPE_context_s __forceinline windivert_context_get( WDFOBJECT Handle ) { return (WDF_POINTER_TYPE_context_s) WdfObjectGetTypedContextWorker( Handle, (&_WDF_context_s_TYPE_INFO)->UniqueType ); };
+
+
+
+
+
+
+
+
+typedef void (*windivert_classify_t)(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result);
+typedef void (*windivert_flow_delete_notify_t)(
+ UINT16 layer_id, UINT32 callout_id, UINT64 flow_context);
+struct layer_s
+{
+ wchar_t* sublayer_name;
+ wchar_t* sublayer_desc;
+ wchar_t* callout_name;
+ wchar_t* callout_desc;
+ wchar_t* filter_name;
+ wchar_t* filter_desc;
+ const GUID* layer_guid;
+ const GUID* sublayer_guid;
+ windivert_classify_t classify;
+ windivert_flow_delete_notify_t flow_delete;
+
+ UINT16 sublayer_weight;
+};
+typedef const struct layer_s* layer_t;
+
+
+
+
+struct req_context_s
+{
+ PWINDIVERT_ADDRESS addr;
+ UINT* addr_len_ptr;
+ UINT addr_len;
+};
+typedef struct req_context_s req_context_s;
+typedef struct req_context_s* req_context_t;
+typedef req_context_s* WDF_POINTER_TYPE_req_context_s; __declspec(allocate( ".data" )) __declspec(selectany) extern const WDF_OBJECT_CONTEXT_TYPE_INFO _WDF_req_context_s_TYPE_INFO = { sizeof(WDF_OBJECT_CONTEXT_TYPE_INFO), "req_context_s", sizeof(req_context_s), (&_WDF_req_context_s_TYPE_INFO), (PFN_GET_UNIQUE_CONTEXT_TYPE) ((void *)0), }; WDF_POINTER_TYPE_req_context_s __forceinline windivert_req_context_get( WDFOBJECT Handle ) { return (WDF_POINTER_TYPE_req_context_s) WdfObjectGetTypedContextWorker( Handle, (&_WDF_req_context_s_TYPE_INFO)->UniqueType ); };
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 232 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+struct packet_s
+{
+ LIST_ENTRY entry;
+ LONGLONG timestamp;
+ UINT32 layer : 8;
+ UINT32 event : 8;
+ UINT32 sniffed : 1;
+ UINT32 outbound : 1;
+ UINT32 loopback : 1;
+ UINT32 impostor : 1;
+ UINT32 ipv6 : 1;
+ UINT32 ip_checksum : 1;
+ UINT32 tcp_checksum : 1;
+ UINT32 udp_checksum : 1;
+ UINT32 icmp_checksum : 1;
+ UINT32 match : 1;
+ UINT32 padding : 6;
+ UINT32 packet_size;
+ PVOID object;
+ UINT32 priority;
+ UINT32 packet_len;
+ __declspec(align(8)) UINT8 data[1];
+};
+typedef struct packet_s* packet_t;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+struct flow_s
+{
+ LIST_ENTRY entry;
+ context_t context;
+ UINT64 flow_id;
+ UINT32 callout_id;
+ UINT16 layer_id;
+ BOOL inserted : 1;
+ BOOL deleted : 1;
+ BOOL outbound : 1;
+ BOOL loopback : 1;
+ BOOL ipv6 : 1;
+ WINDIVERT_DATA_FLOW data;
+};
+typedef struct flow_s* flow_t;
+
+
+
+
+
+
+
+
+
+
+
+
+static HANDLE inject_handle_forward = ((void *)0);
+static HANDLE injectv6_handle_forward = ((void *)0);
+static HANDLE inject_handle_in = ((void *)0);
+static HANDLE inject_handle_out = ((void *)0);
+static HANDLE injectv6_handle_in = ((void *)0);
+static HANDLE injectv6_handle_out = ((void *)0);
+static NDIS_HANDLE nbl_pool_handle = ((void *)0);
+static NDIS_HANDLE nb_pool_handle = ((void *)0);
+static HANDLE engine_handle = ((void *)0);
+static LONG priority_counter = 0;
+static LONGLONG counts_per_ms = 0;
+static POOL_TYPE non_paged_pool = NonPagedPool;
+static MM_PAGE_PRIORITY no_write_flag = 0;
+static MM_PAGE_PRIORITY no_exec_flag = 0;
+static LONG64 num_opens = 0;
+
+
+
+
+static UINT32 windivert_context_priority(UINT32 priority)
+{
+ UINT32 increment;
+ priority = (priority << 16);
+ increment = (UINT32)_InterlockedIncrement(&priority_counter);
+ priority |= (increment & 0x0000FFFF);
+ return priority;
+}
+
+
+
+
+static void windivert_driver_unload(void);
+extern void windivert_ioctl( WDFQUEUE queue, WDFREQUEST request,
+ size_t in_length, size_t out_len, ULONG code);
+static NTSTATUS windivert_read(context_t context, WDFREQUEST request);
+extern void windivert_worker( WDFWORKITEM item);
+static void windivert_read_service(context_t context);
+extern void windivert_create( WDFDEVICE device, WDFREQUEST request,
+ WDFFILEOBJECT object);
+static NTSTATUS windivert_install_provider(void);
+static NTSTATUS windivert_install_sublayer(layer_t layer);
+static NTSTATUS windivert_install_callouts(context_t context, UINT8 layer,
+ UINT64 flags);
+static NTSTATUS windivert_install_callout(context_t context, UINT idx,
+ layer_t layer, UINT32* callout_id_ptr);
+static void windivert_uninstall_callouts(context_t context,
+ context_state_t state);
+extern void windivert_cleanup( WDFFILEOBJECT object);
+extern void windivert_close( WDFFILEOBJECT object);
+extern void windivert_destroy( WDFOBJECT object);
+static NTSTATUS windivert_write(context_t context, WDFREQUEST request,
+ req_context_t req_context);
+static void __stdcall windivert_inject_complete(void* context,
+ NET_BUFFER_LIST* packets, BOOLEAN dispatch_level);
+static void windivert_inject_packet_too_big(packet_t packet);
+static NTSTATUS windivert_notify( FWPS_CALLOUT_NOTIFY_TYPE type,
+ const GUID* filter_key, const FWPS_FILTER0* filter);
+static void windivert_outbound_network_v4_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result);
+static void windivert_inbound_network_v4_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result);
+static void windivert_outbound_network_v6_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result);
+static void windivert_inbound_network_v6_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result);
+static void windivert_forward_network_v4_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result);
+static void windivert_forward_network_v6_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result);
+static void windivert_flow_established_v4_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result);
+static void windivert_flow_established_v6_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result);
+static void windivert_resource_assignment_v4_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result);
+static void windivert_resource_assignment_v6_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result);
+static void windivert_resource_release_v4_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result);
+static void windivert_resource_release_v6_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result);
+static void windivert_auth_connect_v4_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result);
+static void windivert_auth_connect_v6_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result);
+static void windivert_endpoint_closure_v4_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result);
+static void windivert_endpoint_closure_v6_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result);
+static void windivert_auth_listen_v4_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result);
+static void windivert_auth_listen_v6_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result);
+static void windivert_auth_recv_accept_v4_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result);
+static void windivert_auth_recv_accept_v6_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result);
+static void windivert_flow_established_classify(context_t context,
+ UINT64 flow_id, PWINDIVERT_DATA_FLOW flow_data, BOOL ipv4,
+ BOOL outbound, BOOL loopback, FWPS_CLASSIFY_OUT0* result);
+static void windivert_flow_delete_notify(UINT16 layer_id, UINT32 callout_id,
+ UINT64 flow_context);
+static void windivert_socket_classify(context_t context,
+ PWINDIVERT_DATA_SOCKET socket_data, WINDIVERT_EVENT event, BOOL ipv4,
+ BOOL outbound, BOOL loopback, FWPS_CLASSIFY_OUT0* result);
+static void windivert_network_classify(context_t context,
+ PWINDIVERT_DATA_NETWORK network_data, BOOL ipv4, BOOL outbound,
+ BOOL loopback, BOOL reassembled, UINT advance, void* data,
+ FWPS_CLASSIFY_OUT0* result);
+static BOOL windivert_queue_work(context_t context, PVOID packet,
+ ULONG packet_len, PNET_BUFFER_LIST buffers, PVOID object,
+ WINDIVERT_LAYER layer, PVOID layer_data, WINDIVERT_EVENT event,
+ UINT64 flags, UINT32 priority, BOOL ipv4, BOOL outbound, BOOL loopback,
+ BOOL impostor, BOOL match, LONGLONG timestamp);
+static void windivert_queue_packet(context_t context, packet_t packet);
+static NTSTATUS windivert_inject_packet(packet_t packet);
+static void windivert_free_packet(packet_t packet);
+static BOOL windivert_copy_data(PNET_BUFFER buffer, PVOID data, UINT size);
+static BOOL windivert_get_data(PNET_BUFFER buffer, UINT length, INT min,
+ INT max, INT idx, PVOID data, UINT size);
+static BOOL windivert_parse_headers(PNET_BUFFER buffer, BOOL ipv4,
+ BOOL* fragment_ptr, PWINDIVERT_IPHDR* ip_header_ptr,
+ PWINDIVERT_IPV6HDR* ipv6_header_ptr, PWINDIVERT_ICMPHDR* icmp_header_ptr,
+ PWINDIVERT_ICMPV6HDR* icmpv6_header_ptr, PWINDIVERT_TCPHDR* tcp_header_ptr,
+ PWINDIVERT_UDPHDR* udp_header_ptr, UINT8* proto_ptr, UINT* header_len_ptr,
+ UINT* payload_len_ptr);
+static BOOL windivert_filter(PNET_BUFFER buffer, WINDIVERT_LAYER layer,
+ const void* layer_data, LONGLONG timestamp, WINDIVERT_EVENT event,
+ BOOL ipv4, BOOL outbound, BOOL loopback, BOOL impostor, BOOL frag_mode,
+ const WINDIVERT_FILTER* filter);
+static const WINDIVERT_FILTER* windivert_filter_compile(
+ const WINDIVERT_FILTER* ioctl_filter, size_t ioctl_filter_len,
+ WINDIVERT_LAYER layer);
+static NTSTATUS windivert_reflect_init(WDFOBJECT parent);
+static void windivert_reflect_close(void);
+static void windivert_reflect_open_event(context_t context);
+static void windivert_reflect_close_event(context_t context);
+static void windivert_reflect_event_notify(context_t context,
+ LONGLONG timestamp, WINDIVERT_EVENT event);
+static void windivert_reflect_established_notify(context_t context,
+ LONGLONG timestamp);
+extern void windivert_reflect_worker( WDFWORKITEM item);
+static void windivert_log_event(PEPROCESS process, PDRIVER_OBJECT driver,
+ const wchar_t* msg_str);
+
+
+
+
+extern const GUID __declspec(selectany) WINDIVERT_PROVIDER_GUID = { 0x450EC398, 0x1EAF, 0x49F5, { 0x85, 0xE0, 0x22, 0x8F, 0x0D, 0x29, 0x39, 0x21 } };
+#line 509 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+
+
+
+
+
+
+extern const GUID __declspec(selectany) WINDIVERT_SUBLAYER_INBOUND_IPV4_GUID = { 0x82A99281, 0x0389, 0x4DE2, { 0xAE, 0x2D, 0xA4, 0x51, 0x59, 0x16, 0x26, 0x06 } };
+#line 518 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+extern const GUID __declspec(selectany) WINDIVERT_SUBLAYER_OUTBOUND_IPV4_GUID = { 0xB0BB07C6, 0x3B3B, 0x41FE, { 0x83, 0x8B, 0xD8, 0x37, 0xDD, 0xB8, 0x75, 0x41 } };
+#line 521 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+extern const GUID __declspec(selectany) WINDIVERT_SUBLAYER_INBOUND_IPV6_GUID = { 0xD7674846, 0x3AB5, 0x4E93, { 0x82, 0xD0, 0x2F, 0xCC, 0x03, 0xA2, 0x88, 0x7A } };
+#line 524 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+extern const GUID __declspec(selectany) WINDIVERT_SUBLAYER_OUTBOUND_IPV6_GUID = { 0x6672F761, 0xA0F2, 0x4578, { 0x92, 0x50, 0x09, 0x03, 0x0D, 0x4E, 0x8C, 0x46 } };
+#line 527 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+extern const GUID __declspec(selectany) WINDIVERT_SUBLAYER_FORWARD_IPV4_GUID = { 0x4622DCC6, 0xBD71, 0x48ED, { 0x9D, 0x1A, 0x72, 0xC9, 0x0D, 0xEB, 0xA1, 0x74 } };
+#line 530 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+extern const GUID __declspec(selectany) WINDIVERT_SUBLAYER_FORWARD_IPV6_GUID = { 0x7E5B39EC, 0xB54C, 0x41B3, { 0xA7, 0x99, 0x47, 0x5E, 0x57, 0x41, 0xA4, 0x33 } };
+#line 533 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+extern const GUID __declspec(selectany) WINDIVERT_SUBLAYER_FLOW_ESTABLISHED_IPV4_GUID = { 0x53D6C270, 0xEB79, 0x44CD, { 0x83, 0xCD, 0x14, 0x34, 0xE6, 0x13, 0x91, 0x68 } };
+#line 536 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+extern const GUID __declspec(selectany) WINDIVERT_SUBLAYER_FLOW_ESTABLISHED_IPV6_GUID = { 0x44B0CDED, 0xAA11, 0x4704, { 0x92, 0xA7, 0x99, 0xD2, 0xB7, 0x59, 0x7A, 0x68 } };
+#line 539 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+extern const GUID __declspec(selectany) WINDIVERT_SUBLAYER_RESOURCE_ASSIGNMENT_IPV4_GUID = { 0x736848B6, 0xBE0D, 0x4A8D, { 0xA0, 0xC2, 0xE2, 0x02, 0xDC, 0x29, 0x32, 0xBC } };
+#line 542 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+extern const GUID __declspec(selectany) WINDIVERT_SUBLAYER_RESOURCE_ASSIGNMENT_IPV6_GUID = { 0xF3458E58, 0xD123, 0x439B, { 0xB6, 0x40, 0x74, 0x3C, 0xC7, 0x53, 0x9E, 0x36 } };
+#line 545 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+extern const GUID __declspec(selectany) WINDIVERT_SUBLAYER_RESOURCE_RELEASE_IPV4_GUID = { 0x02366282, 0x9099, 0x43A7, { 0x95, 0xC3, 0xAB, 0x52, 0x87, 0xB3, 0xF2, 0xDC } };
+#line 548 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+extern const GUID __declspec(selectany) WINDIVERT_SUBLAYER_RESOURCE_RELEASE_IPV6_GUID = { 0x60FCA14A, 0x7677, 0x45D2, { 0xBB, 0x5C, 0x15, 0xDB, 0xAE, 0x4B, 0x7B, 0x6B } };
+#line 551 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+extern const GUID __declspec(selectany) WINDIVERT_SUBLAYER_AUTH_CONNECT_IPV4_GUID = { 0x2F97411F, 0x6350, 0x450A, { 0xBF, 0x45, 0x4C, 0x0B, 0xC1, 0xDB, 0x3F, 0x7E } };
+#line 554 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+extern const GUID __declspec(selectany) WINDIVERT_SUBLAYER_AUTH_CONNECT_IPV6_GUID = { 0x7BAFEEEB, 0x84F0, 0x4BB0, { 0x91, 0x1F, 0x7E, 0x62, 0x2D, 0x73, 0x24, 0x2C } };
+#line 557 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+extern const GUID __declspec(selectany) WINDIVERT_SUBLAYER_ENDPOINT_CLOSURE_IPV4_GUID = { 0x8180D216, 0xB3BD, 0x4014, { 0x99, 0x69, 0xA3, 0xDF, 0x0F, 0x3E, 0x61, 0x85 } };
+#line 560 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+extern const GUID __declspec(selectany) WINDIVERT_SUBLAYER_ENDPOINT_CLOSURE_IPV6_GUID = { 0x2535A264, 0xEC8B, 0x49CC, { 0xA4, 0xD6, 0x83, 0x81, 0xD7, 0x5F, 0xAB, 0xE6 } };
+#line 563 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+extern const GUID __declspec(selectany) WINDIVERT_SUBLAYER_AUTH_LISTEN_IPV4_GUID = { 0x49F2A9AD, 0x805E, 0x4328, { 0xBB, 0xDA, 0x92, 0x57, 0xB5, 0x18, 0x3A, 0x40 } };
+#line 566 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+extern const GUID __declspec(selectany) WINDIVERT_SUBLAYER_AUTH_LISTEN_IPV6_GUID = { 0xC1BB250E, 0xDE07, 0x41AB, { 0x82, 0xEE, 0xAD, 0x7B, 0xFF, 0x13, 0xCE, 0x35 } };
+#line 569 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+extern const GUID __declspec(selectany) WINDIVERT_SUBLAYER_AUTH_RECV_ACCEPT_IPV4_GUID = { 0x7A012579, 0xC75A, 0x4D29, { 0xB7, 0x47, 0x04, 0xAD, 0x3C, 0x7B, 0x32, 0x69 } };
+#line 572 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+extern const GUID __declspec(selectany) WINDIVERT_SUBLAYER_AUTH_RECV_ACCEPT_IPV6_GUID = { 0x1C51DD53, 0x6BA4, 0x4149, { 0x89, 0x97, 0x1C, 0xD4, 0x8B, 0x51, 0x1B, 0x7D } };
+#line 575 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+
+
+
+
+static const struct layer_s windivert_layer_inbound_network_ipv4 =
+{
+ L"" L"WinDivert" L"2" L"." L"2" L"_SubLayerInboundNetworkIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" sublayer network (inbound IPv4)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_CalloutInboundNetworkIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" callout network (inbound IPv4)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_FilterInboundNetworkIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" filter network (inbound IPv4)",
+ &FWPM_LAYER_INBOUND_IPPACKET_V4,
+ &WINDIVERT_SUBLAYER_INBOUND_IPV4_GUID,
+ windivert_inbound_network_v4_classify,
+ ((void *)0),
+ 0xFFFF
+};
+
+
+
+static const struct layer_s windivert_layer_outbound_network_ipv4 =
+{
+ L"" L"WinDivert" L"2" L"." L"2" L"_SubLayerOutboundNetworkIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" sublayer network (outbound IPv4)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_CalloutOutboundNetworkIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" callout network (outbound IPv4)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_FilterOutboundNetworkIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" filter network (outbound IPv4)",
+ &FWPM_LAYER_OUTBOUND_IPPACKET_V4,
+ &WINDIVERT_SUBLAYER_OUTBOUND_IPV4_GUID,
+ windivert_outbound_network_v4_classify,
+ ((void *)0),
+ 0xFFFF
+};
+
+
+
+static const struct layer_s windivert_layer_inbound_network_ipv6 =
+{
+ L"" L"WinDivert" L"2" L"." L"2" L"_SubLayerInboundNetworkIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" sublayer network (inbound IPv6)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_CalloutInboundNetworkIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" callout network (inbound IPv6)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_FilterInboundNetworkIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" filter network (inbound IPv6)",
+ &FWPM_LAYER_INBOUND_IPPACKET_V6,
+ &WINDIVERT_SUBLAYER_INBOUND_IPV6_GUID,
+ windivert_inbound_network_v6_classify,
+ ((void *)0),
+ 0xFFFF
+};
+
+
+
+static const struct layer_s windivert_layer_outbound_network_ipv6 =
+{
+ L"" L"WinDivert" L"2" L"." L"2" L"_SubLayerOutboundNetworkIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" sublayer network (outbound IPv6)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_CalloutOutboundNetworkIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" callout network (outbound IPv6)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_FilterOutboundNetworkIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" filter network (outbound IPv6)",
+ &FWPM_LAYER_OUTBOUND_IPPACKET_V6,
+ &WINDIVERT_SUBLAYER_OUTBOUND_IPV6_GUID,
+ windivert_outbound_network_v6_classify,
+ ((void *)0),
+ 0xFFFF
+};
+
+
+
+static const struct layer_s windivert_layer_forward_network_ipv4 =
+{
+ L"" L"WinDivert" L"2" L"." L"2" L"_SubLayerForwardNetworkIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" sublayer network (forward IPv4)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_CalloutForwardNetworkIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" callout network (forward IPv4)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_FilterForwardNetworkIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" filter network (forward IPv4)",
+ &FWPM_LAYER_IPFORWARD_V4,
+ &WINDIVERT_SUBLAYER_FORWARD_IPV4_GUID,
+ windivert_forward_network_v4_classify,
+ ((void *)0),
+ 0xFFFF
+};
+
+
+
+static const struct layer_s windivert_layer_forward_network_ipv6 =
+{
+ L"" L"WinDivert" L"2" L"." L"2" L"_SubLayerForwardNetworkIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" sublayer network (forward IPv6)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_CalloutForwardNetworkIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" callout network (forward IPv6)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_FilterForwardNetworkIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" filter network (forward IPv6)",
+ &FWPM_LAYER_IPFORWARD_V6,
+ &WINDIVERT_SUBLAYER_FORWARD_IPV6_GUID,
+ windivert_forward_network_v6_classify,
+ ((void *)0),
+ 0xFFFF
+};
+
+
+
+static const struct layer_s windivert_layer_resource_assignment_ipv4 =
+{
+ L"" L"WinDivert" L"2" L"." L"2" L"_SubLayerResourceAssignmentIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" sublayer resource assignment (IPv4)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_CalloutResourceAssignmentIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" callout resource assignment (IPv4)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_FilterResourceAssignmentIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" filter resource assignment (IPv4)",
+ &FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V4,
+ &WINDIVERT_SUBLAYER_RESOURCE_ASSIGNMENT_IPV4_GUID,
+ windivert_resource_assignment_v4_classify,
+ ((void *)0),
+ 0xFFFF
+};
+
+
+
+static const struct layer_s windivert_layer_resource_assignment_ipv6 =
+{
+ L"" L"WinDivert" L"2" L"." L"2" L"_SubLayerResourceAssignmentIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" sublayer resource assignment (IPv6)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_CalloutResourceAssignmentIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" callout resource assignment (IPv6)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_FilterResourceAssignmentIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" filter resource assignment (IPv6)",
+ &FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V6,
+ &WINDIVERT_SUBLAYER_RESOURCE_ASSIGNMENT_IPV6_GUID,
+ windivert_resource_assignment_v6_classify,
+ ((void *)0),
+ 0xFFFF
+};
+
+
+
+static const struct layer_s windivert_layer_resource_release_ipv4 =
+{
+ L"" L"WinDivert" L"2" L"." L"2" L"_SubLayerResourceReleaseIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" sublayer resource release (IPv4)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_CalloutResourceReleaseIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" callout resource release (IPv4)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_FilterResourceReleaseIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" filter resource release (IPv4)",
+ &FWPM_LAYER_ALE_RESOURCE_RELEASE_V4,
+ &WINDIVERT_SUBLAYER_RESOURCE_RELEASE_IPV4_GUID,
+ windivert_resource_release_v4_classify,
+ ((void *)0),
+ 0xFFFF
+};
+
+
+
+static const struct layer_s windivert_layer_resource_release_ipv6 =
+{
+ L"" L"WinDivert" L"2" L"." L"2" L"_SubLayerResourceReleaseIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" sublayer resource release (IPv6)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_CalloutResourceReleaseIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" callout resource release (IPv6)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_FilterResourceReleaseIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" filter resource release (IPv6)",
+ &FWPM_LAYER_ALE_RESOURCE_RELEASE_V6,
+ &WINDIVERT_SUBLAYER_RESOURCE_RELEASE_IPV6_GUID,
+ windivert_resource_release_v6_classify,
+ ((void *)0),
+ 0xFFFF
+};
+
+
+
+static const struct layer_s windivert_layer_auth_connect_ipv4 =
+{
+ L"" L"WinDivert" L"2" L"." L"2" L"_SubLayerAuthConnectIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" sublayer auth connect (IPv4)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_CalloutAuthConnectIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" callout auth connect (IPv4)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_FilterAuthConnectIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" filter auth connect (IPv4)",
+ &FWPM_LAYER_ALE_AUTH_CONNECT_V4,
+ &WINDIVERT_SUBLAYER_AUTH_CONNECT_IPV4_GUID,
+ windivert_auth_connect_v4_classify,
+ ((void *)0),
+ 0xFFFF
+};
+
+
+
+static const struct layer_s windivert_layer_auth_connect_ipv6 =
+{
+ L"" L"WinDivert" L"2" L"." L"2" L"_SubLayerAuthConnectIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" sublayer auth connect (IPv6)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_CalloutAuthConnectIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" callout auth connect (IPv6)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_FilterAuthConnectIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" filter auth connect (IPv6)",
+ &FWPM_LAYER_ALE_AUTH_CONNECT_V6,
+ &WINDIVERT_SUBLAYER_AUTH_CONNECT_IPV6_GUID,
+ windivert_auth_connect_v6_classify,
+ ((void *)0),
+ 0xFFFF
+};
+
+
+
+static const struct layer_s windivert_layer_endpoint_closure_ipv4 =
+{
+ L"" L"WinDivert" L"2" L"." L"2" L"_SubLayerEndpointClosureIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" sublayer endpoint closure (IPv4)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_CalloutEndpointClosureIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" callout endpoint closure (IPv4)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_FilterEndpointClosureIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" filter endpoint closure (IPv4)",
+ &FWPM_LAYER_ALE_ENDPOINT_CLOSURE_V4,
+ &WINDIVERT_SUBLAYER_ENDPOINT_CLOSURE_IPV4_GUID,
+ windivert_endpoint_closure_v4_classify,
+ ((void *)0),
+ 0xFFFF
+};
+
+
+
+static const struct layer_s windivert_layer_endpoint_closure_ipv6 =
+{
+ L"" L"WinDivert" L"2" L"." L"2" L"_SubLayerEndpointClosureIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" sublayer endpoint closure (IPv6)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_CalloutEndpointClosureIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" callout endpoint closure (IPv6)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_FilterEndpointClosureIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" filter endpoint closure (IPv6)",
+ &FWPM_LAYER_ALE_ENDPOINT_CLOSURE_V6,
+ &WINDIVERT_SUBLAYER_ENDPOINT_CLOSURE_IPV6_GUID,
+ windivert_endpoint_closure_v6_classify,
+ ((void *)0),
+ 0xFFFF
+};
+
+
+
+static const struct layer_s windivert_layer_auth_listen_ipv4 =
+{
+ L"" L"WinDivert" L"2" L"." L"2" L"_SubLayerAuthListenIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" sublayer auth listen (IPv4)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_CalloutAuthListenIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" callout auth listen (IPv4)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_FilterAuthListenIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" filter auth listen (IPv4)",
+ &FWPM_LAYER_ALE_AUTH_LISTEN_V4,
+ &WINDIVERT_SUBLAYER_AUTH_LISTEN_IPV4_GUID,
+ windivert_auth_listen_v4_classify,
+ ((void *)0),
+ 0xFFFF
+};
+
+
+
+static const struct layer_s windivert_layer_auth_listen_ipv6 =
+{
+ L"" L"WinDivert" L"2" L"." L"2" L"_SubLayerAuthListenIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" sublayer auth listen (IPv6)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_CalloutAuthListenIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" callout auth listen (IPv6)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_FilterAuthListenIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" filter auth listen (IPv6)",
+ &FWPM_LAYER_ALE_AUTH_LISTEN_V6,
+ &WINDIVERT_SUBLAYER_AUTH_LISTEN_IPV6_GUID,
+ windivert_auth_listen_v6_classify,
+ ((void *)0),
+ 0xFFFF
+};
+
+
+
+static const struct layer_s windivert_layer_auth_recv_accept_ipv4 =
+{
+ L"" L"WinDivert" L"2" L"." L"2" L"_SubLayerAuthRecvAcceptIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" sublayer auth recv accept (IPv4)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_CalloutAuthRecvAcceptIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" callout auth recv accept (IPv4)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_FilterAuthRecvAcceptIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" filter auth recv accept (IPv4)",
+ &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4,
+ &WINDIVERT_SUBLAYER_AUTH_RECV_ACCEPT_IPV4_GUID,
+ windivert_auth_recv_accept_v4_classify,
+ ((void *)0),
+ 0xFFFF
+};
+
+
+
+static const struct layer_s windivert_layer_auth_recv_accept_ipv6 =
+{
+ L"" L"WinDivert" L"2" L"." L"2" L"_SubLayerAuthRecvAcceptIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" sublayer auth recv accept (IPv6)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_CalloutAuthRecvAcceptIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" callout auth recv accept (IPv6)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_FilterAuthRecvAcceptIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" filter auth recv accept (IPv6)",
+ &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6,
+ &WINDIVERT_SUBLAYER_AUTH_RECV_ACCEPT_IPV6_GUID,
+ windivert_auth_recv_accept_v6_classify,
+ ((void *)0),
+ 0xFFFF
+};
+
+
+
+static const struct layer_s windivert_layer_flow_established_ipv4 =
+{
+ L"" L"WinDivert" L"2" L"." L"2" L"_SubLayerFlowEstablishedIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" sublayer flow established (IPv4)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_CalloutFlowEstablishedIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" callout flow established (IPv4)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_FilterFlowEstablishedIPv4",
+ L"" L"WinDivert" L"2" L"." L"2" L" filter flow established (IPv4)",
+ &FWPM_LAYER_ALE_FLOW_ESTABLISHED_V4,
+ &WINDIVERT_SUBLAYER_FLOW_ESTABLISHED_IPV4_GUID,
+ windivert_flow_established_v4_classify,
+ windivert_flow_delete_notify,
+ 0xFFFF
+};
+
+
+
+static const struct layer_s windivert_layer_flow_established_ipv6 =
+{
+ L"" L"WinDivert" L"2" L"." L"2" L"_SubLayerFlowEstablishedIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" sublayer flow established (IPv6)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_CalloutFlowEstablishedIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" callout flow established (IPv6)",
+ L"" L"WinDivert" L"2" L"." L"2" L"_FilterFlowEstablishedIPv6",
+ L"" L"WinDivert" L"2" L"." L"2" L" filter flow established (IPv6)",
+ &FWPM_LAYER_ALE_FLOW_ESTABLISHED_V6,
+ &WINDIVERT_SUBLAYER_FLOW_ESTABLISHED_IPV6_GUID,
+ windivert_flow_established_v6_classify,
+ windivert_flow_delete_notify,
+ 0xFFFF
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 1 "E:\\Unity\\WinDivert\\dll\\windivert_shared.c"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#pragma intrinsic(__emulu)
+static UINT64 WinDivertMul64(UINT64 a, UINT64 b)
+{
+ UINT64 r = __emulu((UINT32)a, (UINT32)b);
+ r += __emulu((UINT32)(a >> 32), (UINT32)b) << 32;
+ r += __emulu((UINT32)a, (UINT32)(b >> 32)) << 32;
+ return r;
+}
+
+
+
+#line 111 "E:\\Unity\\WinDivert\\dll\\windivert_shared.c"
+
+
+
+
+typedef struct
+{
+ UINT8 NextHdr;
+ UINT8 Reserved;
+ UINT16 FragOff0;
+ UINT32 Id;
+} WINDIVERT_IPV6FRAGHDR, *PWINDIVERT_IPV6FRAGHDR;
+
+
+
+
+
+#line 1 "E:\\Unity\\WinDivert\\dll\\windivert_hash.c"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+static const UINT64 WINDIVERT_PRIME64_1 = 11400714785074694791ull;
+static const UINT64 WINDIVERT_PRIME64_2 = 14029467366897019727ull;
+static const UINT64 WINDIVERT_PRIME64_3 = 1609587929392839161ull;
+static const UINT64 WINDIVERT_PRIME64_4 = 9650029242287828579ull;
+
+static UINT64 WinDivertXXH64Round(UINT64 acc, UINT64 input)
+{
+ acc += WinDivertMul64(input, WINDIVERT_PRIME64_2);
+ acc = (((acc) << (31)) | ((acc) >> (64 - (31))));
+ acc = WinDivertMul64(acc, WINDIVERT_PRIME64_1);
+ return acc;
+}
+
+static UINT64 WinDivertXXH64MergeRound(UINT64 acc, UINT64 val)
+{
+ val = WinDivertXXH64Round(0, val);
+ acc ^= val;
+ acc = WinDivertMul64(acc, WINDIVERT_PRIME64_1) + WINDIVERT_PRIME64_4;
+ return acc;
+}
+
+static UINT64 WinDivertXXH64Avalanche(UINT64 h64)
+{
+ h64 ^= h64 >> 33;
+ h64 = WinDivertMul64(h64, WINDIVERT_PRIME64_2);
+ h64 ^= h64 >> 29;
+ h64 = WinDivertMul64(h64, WINDIVERT_PRIME64_3);
+ h64 ^= h64 >> 32;
+ return h64;
+}
+
+
+
+
+static UINT64 WinDivertHashPacket(UINT64 seed,
+ const WINDIVERT_IPHDR *ip_header, const WINDIVERT_IPV6HDR *ipv6_header,
+ const WINDIVERT_ICMPHDR *icmp_header,
+ const WINDIVERT_ICMPV6HDR *icmpv6_header,
+ const WINDIVERT_TCPHDR *tcp_header, const WINDIVERT_UDPHDR *udp_header)
+{
+ UINT64 h64, v1, v2, v3, v4, v[4];
+ const UINT64 *data64;
+ const UINT32 *data32;
+ UINT i;
+ static const UINT64 padding64[] =
+ {
+ 0x428A2F9871374491ull, 0xB5C0FBCFE9B5DBA5ull, 0x3956C25B59F111F1ull,
+ 0x923F82A4AB1C5ED5ull, 0xD807AA9812835B01ull, 0x243185BE550C7DC3ull,
+ 0x72BE5D7480DEB1FEull, 0x9BDC06A7C19BF174ull, 0xE49B69C1EFBE4786ull,
+ };
+
+
+ v1 = seed ^ padding64[0];
+ if (ip_header != ((void *)0))
+ {
+ data64 = (const UINT64 *)ip_header;
+ v2 = data64[0] ^ padding64[1];
+ v3 = data64[1] ^ padding64[2];
+ data32 = (const UINT32 *)ip_header;
+ v4 = (UINT64)data32[4] ^ padding64[3];
+ i = 0;
+ }
+ else if (ipv6_header != ((void *)0))
+ {
+ data64 = (const UINT64 *)ipv6_header;
+ v2 = data64[0] ^ padding64[1];
+ v3 = data64[1] ^ padding64[2];
+ v4 = data64[2] ^ padding64[3];
+ v[0] = data64[3] ^ padding64[4];
+ v[1] = data64[4] ^ padding64[5];
+ i = 2;
+ }
+ else
+ return 0;
+
+ if (tcp_header != ((void *)0))
+ {
+ data64 = (const UINT64 *)tcp_header;
+ v[i] = data64[0] ^ padding64[i+4]; i++;
+ v[i] = data64[1] ^ padding64[i+4]; i++;
+ data32 = (const UINT32 *)tcp_header;
+ if (i <= 3)
+ {
+ v[i] = (UINT64)data32[4] ^ padding64[i+4]; i++;
+ }
+ else
+ {
+ v2 ^= ((UINT64)data32[4] << 32);
+ }
+ }
+ else
+ {
+ if (udp_header != ((void *)0))
+ {
+ data64 = (const UINT64 *)udp_header;
+ v[i] = data64[0] ^ padding64[i+4]; i++;
+ }
+ else if (icmp_header != ((void *)0))
+ {
+ data64 = (const UINT64 *)icmp_header;
+ v[i] = data64[0] ^ padding64[i+4]; i++;
+ }
+ else if (icmpv6_header != ((void *)0))
+ {
+ data64 = (const UINT64 *)icmpv6_header;
+ v[i] = data64[0] ^ padding64[i+4]; i++;
+ }
+ }
+
+ while (i <= 3)
+ {
+ v[i] = seed ^ padding64[i+4]; i++;
+ }
+
+
+ v1 = WinDivertXXH64Round(v[0], v1);
+ v2 = WinDivertXXH64Round(v[1], v2);
+ v3 = WinDivertXXH64Round(v[2], v3);
+ v4 = WinDivertXXH64Round(v[3], v4);
+ h64 = (((v1) << (1)) | ((v1) >> (64 - (1)))) + (((v2) << (7)) | ((v2) >> (64 - (7)))) +
+ (((v3) << (12)) | ((v3) >> (64 - (12)))) + (((v4) << (18)) | ((v4) >> (64 - (18))));
+ h64 = WinDivertXXH64MergeRound(h64, v1);
+ h64 = WinDivertXXH64MergeRound(h64, v2);
+ h64 = WinDivertXXH64MergeRound(h64, v3);
+ h64 = WinDivertXXH64MergeRound(h64, v4);
+ h64 += 32;
+ h64 = WinDivertXXH64Avalanche(h64);
+
+ return h64;
+}
+
+#line 128 "E:\\Unity\\WinDivert\\dll\\windivert_shared.c"
+
+
+
+
+typedef struct
+{
+ UINT32 SrcAddr;
+ UINT32 DstAddr;
+ UINT8 Zero;
+ UINT8 Protocol;
+ UINT16 Length;
+} WINDIVERT_PSEUDOHDR, *PWINDIVERT_PSEUDOHDR;
+
+typedef struct
+{
+ UINT32 SrcAddr[4];
+ UINT32 DstAddr[4];
+ UINT32 Length;
+ UINT32 Zero:24;
+ UINT32 NextHdr:8;
+} WINDIVERT_PSEUDOV6HDR, *PWINDIVERT_PSEUDOV6HDR;
+
+
+
+
+typedef struct
+{
+ UINT32 HeaderLength:17;
+ UINT32 FragOff:13;
+ UINT32 Fragment:1;
+ UINT32 MF:1;
+ UINT32 PayloadLength:16;
+ UINT32 Protocol:8;
+ UINT32 Truncated:1;
+ UINT32 Extended:1;
+ UINT32 Reserved1:6;
+ PWINDIVERT_IPHDR IPHeader;
+ PWINDIVERT_IPV6HDR IPv6Header;
+ PWINDIVERT_ICMPHDR ICMPHeader;
+ PWINDIVERT_ICMPV6HDR ICMPv6Header;
+ PWINDIVERT_TCPHDR TCPHeader;
+ PWINDIVERT_UDPHDR UDPHeader;
+ UINT8 *Payload;
+} WINDIVERT_PACKET, *PWINDIVERT_PACKET;
+
+
+
+
+typedef struct
+{
+ char *data;
+ UINT pos;
+ UINT max;
+ BOOL overflow;
+} WINDIVERT_STREAM, *PWINDIVERT_STREAM;
+
+
+
+
+static UINT16 WinDivertInitPseudoHeader(PWINDIVERT_IPHDR ip_header,
+ PWINDIVERT_IPV6HDR ipv6_header, UINT8 protocol, UINT len,
+ void *pseudo_header);
+static UINT16 WinDivertCalcChecksum(PVOID pseudo_header,
+ UINT16 pseudo_header_len, PVOID data, UINT len);
+
+
+
+
+static void WinDivertPutChar(PWINDIVERT_STREAM stream, char c)
+{
+ if (stream->pos >= stream->max)
+ {
+ stream->overflow = 1;
+ return;
+ }
+ stream->data[stream->pos] = c;
+ stream->pos++;
+}
+
+
+
+
+static void WinDivertPutString(PWINDIVERT_STREAM stream, const char *str)
+{
+ while (*str)
+ {
+ WinDivertPutChar(stream, *str);
+ str++;
+ }
+}
+
+
+
+
+static void WinDivertPutNul(PWINDIVERT_STREAM stream)
+{
+ if (stream->pos >= stream->max && stream->max > 0)
+ {
+ stream->data[stream->max-1] = '\0';
+ }
+ else
+ {
+ WinDivertPutChar(stream, '\0');
+ }
+}
+
+
+
+
+static char WinDivertEncodeDigit(UINT8 dig, BOOL final)
+{
+ static const char windivert_digits[64+1] =
+ "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+=";
+ return windivert_digits[(dig & 0x1F) + (final? 32: 0)];
+}
+
+
+
+
+static void WinDivertSerializeNumber(PWINDIVERT_STREAM stream, UINT32 val)
+{
+ UINT32 mask = 0xC0000000;
+ UINT dig = 6;
+ UINT8 digit;
+ BOOL final;
+
+ while ((mask & val) == 0 && dig != 0)
+ {
+ mask = (dig == 6? 0x3E000000: mask >> 5);
+ dig--;
+ }
+ while (1)
+ {
+ final = (dig == 0);
+ digit = (UINT8)((mask & val) >> (5 * dig));
+ WinDivertPutChar(stream, WinDivertEncodeDigit(digit, final));
+ if (final)
+ {
+ break;
+ }
+ mask = (dig == 6? 0x3E000000: mask >> 5);
+ dig--;
+ }
+}
+
+
+
+
+static void WinDivertSerializeLabel(PWINDIVERT_STREAM stream, UINT16 label)
+{
+ switch (label)
+ {
+ case 0x7FFE:
+ WinDivertPutChar(stream, 'A');
+ break;
+ case 0x7FFF:
+ WinDivertPutChar(stream, 'X');
+ break;
+ default:
+ WinDivertPutChar(stream, 'L');
+ WinDivertSerializeNumber(stream, label);
+ break;
+ }
+}
+
+
+
+
+static void WinDivertSerializeTest(PWINDIVERT_STREAM stream,
+ const WINDIVERT_FILTER *filter)
+{
+ INT idx;
+ UINT i;
+
+ WinDivertPutChar(stream, '_');
+ WinDivertSerializeNumber(stream, filter->field);
+ WinDivertSerializeNumber(stream, filter->test);
+ WinDivertSerializeNumber(stream, filter->neg);
+ WinDivertSerializeNumber(stream, filter->arg[0]);
+ switch (filter->field)
+ {
+ case 28:
+ case 29:
+ case 61:
+ case 62:
+ for (i = 1; i < 4; i++)
+ {
+ WinDivertSerializeNumber(stream, filter->arg[i]);
+ }
+ break;
+ case 66:
+ case 67:
+ case 81:
+ WinDivertSerializeNumber(stream, filter->arg[1]);
+ break;
+ case 71:
+ case 72:
+ case 73:
+ case 74:
+ case 75:
+ case 76:
+ case 77:
+ case 78:
+ case 79:
+ idx = (INT)filter->arg[1];
+ idx += 0xFFFF;
+ WinDivertSerializeNumber(stream, (UINT32)idx);
+ break;
+ default:
+ break;
+ }
+ WinDivertSerializeLabel(stream, (UINT16)filter->success);
+ WinDivertSerializeLabel(stream, (UINT16)filter->failure);
+}
+
+
+
+
+static void WinDivertSerializeFilter(PWINDIVERT_STREAM stream,
+ const WINDIVERT_FILTER *filter, UINT8 length)
+{
+ UINT8 i;
+ WinDivertPutString(stream, "@WinDiv_");
+ WinDivertSerializeNumber(stream, 0);
+ WinDivertSerializeNumber(stream, length);
+ for (i = 0; i < length; i++)
+ {
+ WinDivertSerializeTest(stream, filter + i);
+ }
+ WinDivertPutNul(stream);
+}
+
+
+
+
+static BOOL WinDivertHelperParsePacketEx(const void *pPacket, UINT packetLen,
+ PWINDIVERT_PACKET pInfo)
+{
+ PWINDIVERT_IPHDR ip_header = ((void *)0);
+ PWINDIVERT_IPV6HDR ipv6_header = ((void *)0);
+ PWINDIVERT_ICMPHDR icmp_header = ((void *)0);
+ PWINDIVERT_ICMPV6HDR icmpv6_header = ((void *)0);
+ PWINDIVERT_TCPHDR tcp_header = ((void *)0);
+ PWINDIVERT_UDPHDR udp_header = ((void *)0);
+ PWINDIVERT_IPV6FRAGHDR frag_header;
+ UINT8 protocol = 0;
+ UINT8 *data = ((void *)0);
+ UINT packet_len, total_len, header_len, data_len = 0, frag_off = 0;
+ BOOL MF = 0, fragment = 0, is_ext_header;
+
+ if (pPacket == ((void *)0) || packetLen < sizeof(WINDIVERT_IPHDR))
+ {
+ return 0;
+ }
+ data = (UINT8 *)pPacket;
+ data_len = packetLen;
+
+ ip_header = (PWINDIVERT_IPHDR)data;
+ switch (ip_header->Version)
+ {
+ case 4:
+ if (packetLen < sizeof(WINDIVERT_IPHDR) ||
+ ip_header->HdrLength < 5)
+ {
+ return 0;
+ }
+ total_len = (UINT)((((ip_header->Length) >> 8) & 0x00FFu) | (((ip_header->Length) << 8) & 0xFF00u));
+ protocol = ip_header->Protocol;
+ header_len = ip_header->HdrLength * sizeof(UINT32);
+ if (total_len < header_len || packetLen < header_len)
+ {
+ return 0;
+ }
+ frag_off = (((((((ip_header)->FragOff0) & 0xFF1F)) >> 8) & 0x00FFu) | ((((((ip_header)->FragOff0) & 0xFF1F)) << 8) & 0xFF00u));
+ MF = (((((ip_header)->FragOff0) & 0x0020) != 0) != 0);
+ fragment = (MF || frag_off != 0);
+ packet_len = (total_len < packetLen? total_len: packetLen);
+ data += header_len;
+ data_len = packet_len - header_len;
+ break;
+
+ case 6:
+ ip_header = ((void *)0);
+ ipv6_header = (PWINDIVERT_IPV6HDR)data;
+ if (packetLen < sizeof(WINDIVERT_IPV6HDR))
+ {
+ return 0;
+ }
+ protocol = ipv6_header->NextHdr;
+ total_len = (UINT)((((ipv6_header->Length) >> 8) & 0x00FFu) | (((ipv6_header->Length) << 8) & 0xFF00u)) +
+ sizeof(WINDIVERT_IPV6HDR);
+ packet_len = (total_len < packetLen? total_len: packetLen);
+ data += sizeof(WINDIVERT_IPV6HDR);
+ data_len = packet_len - sizeof(WINDIVERT_IPV6HDR);
+
+ while (frag_off == 0 && data_len >= 2)
+ {
+ header_len = (UINT)data[1];
+ is_ext_header = 1;
+ switch (protocol)
+ {
+ case IPPROTO_FRAGMENT:
+ header_len = 8;
+ if (fragment || data_len < header_len)
+ {
+ is_ext_header = 0;
+ break;
+ }
+ frag_header = (PWINDIVERT_IPV6FRAGHDR)data;
+ frag_off = (((((((frag_header)->FragOff0) & 0xF8FF)) >> 8) & 0x00FFu) | ((((((frag_header)->FragOff0) & 0xF8FF)) << 8) & 0xFF00u));
+#line 439 "E:\\Unity\\WinDivert\\dll\\windivert_shared.c"
+ MF = ((((frag_header)->FragOff0) & 0x0100) != 0);
+ fragment = 1;
+ break;
+ case IPPROTO_AH:
+ header_len += 2;
+ header_len *= 4;
+ break;
+ case IPPROTO_HOPOPTS:
+ case IPPROTO_DSTOPTS:
+ case IPPROTO_ROUTING:
+ case 135:
+ header_len++;
+ header_len *= 8;
+ break;
+ default:
+ is_ext_header = 0;
+ break;
+ }
+ if (!is_ext_header || data_len < header_len)
+ {
+ break;
+ }
+ protocol = data[0];
+ data += header_len;
+ data_len -= header_len;
+ }
+ break;
+
+ default:
+ return 0;
+ }
+
+ if (frag_off != 0)
+ {
+ goto WinDivertHelperParsePacketExit;
+ }
+ switch (protocol)
+ {
+ case IPPROTO_TCP:
+ tcp_header = (PWINDIVERT_TCPHDR)data;
+ if (data_len < sizeof(WINDIVERT_TCPHDR) ||
+ tcp_header->HdrLength < 5)
+ {
+ tcp_header = ((void *)0);
+ goto WinDivertHelperParsePacketExit;
+ }
+ header_len = tcp_header->HdrLength * sizeof(UINT32);
+ header_len = (header_len > data_len? data_len: header_len);
+ break;
+
+ case IPPROTO_UDP:
+ if (data_len < sizeof(WINDIVERT_UDPHDR))
+ {
+ goto WinDivertHelperParsePacketExit;
+ }
+ udp_header = (PWINDIVERT_UDPHDR)data;
+ header_len = sizeof(WINDIVERT_UDPHDR);
+ break;
+
+ case IPPROTO_ICMP:
+ if (ip_header == ((void *)0) ||
+ data_len < sizeof(WINDIVERT_ICMPHDR))
+ {
+ goto WinDivertHelperParsePacketExit;
+ }
+ icmp_header = (PWINDIVERT_ICMPHDR)data;
+ header_len = sizeof(WINDIVERT_ICMPHDR);
+ break;
+
+ case IPPROTO_ICMPV6:
+ if (ipv6_header == ((void *)0) ||
+ data_len < sizeof(WINDIVERT_ICMPV6HDR))
+ {
+ goto WinDivertHelperParsePacketExit;
+ }
+ icmpv6_header = (PWINDIVERT_ICMPV6HDR)data;
+ header_len = sizeof(WINDIVERT_ICMPV6HDR);
+ break;
+
+ default:
+ goto WinDivertHelperParsePacketExit;
+ }
+ data += header_len;
+ data_len -= header_len;
+
+WinDivertHelperParsePacketExit:
+ if (pInfo == ((void *)0))
+ {
+ return 1;
+ }
+ data = (data_len == 0? ((void *)0): data);
+ pInfo->Protocol = (UINT32)protocol;
+ pInfo->Fragment = (fragment? 1: 0);
+ pInfo->MF = (MF? 1: 0);
+ pInfo->FragOff = (UINT32)frag_off;
+ pInfo->Truncated = (total_len > packetLen? 1: 0);
+ pInfo->Extended = (total_len < packetLen? 1: 0);
+ pInfo->Reserved1 = 0;
+ pInfo->IPHeader = ip_header;
+ pInfo->IPv6Header = ipv6_header;
+ pInfo->ICMPHeader = icmp_header;
+ pInfo->ICMPv6Header = icmpv6_header;
+ pInfo->TCPHeader = tcp_header;
+ pInfo->UDPHeader = udp_header;
+ pInfo->Payload = data;
+ pInfo->HeaderLength = (UINT32)(packet_len - data_len);
+ pInfo->PayloadLength = (UINT32)data_len;
+ return 1;
+}
+
+
+
+
+BOOL WinDivertHelperCalcChecksums(PVOID pPacket, UINT packetLen,
+ WINDIVERT_ADDRESS *pAddr, UINT64 flags)
+{
+ UINT8 pseudo_header[
+ ((sizeof(WINDIVERT_PSEUDOHDR)) > (sizeof(WINDIVERT_PSEUDOV6HDR))? (sizeof(WINDIVERT_PSEUDOHDR)): (sizeof(WINDIVERT_PSEUDOV6HDR)))];
+ UINT16 pseudo_header_len;
+ PWINDIVERT_IPHDR ip_header;
+ PWINDIVERT_IPV6HDR ipv6_header;
+ PWINDIVERT_ICMPHDR icmp_header;
+ PWINDIVERT_ICMPV6HDR icmpv6_header;
+ PWINDIVERT_TCPHDR tcp_header;
+ PWINDIVERT_UDPHDR udp_header;
+ WINDIVERT_PACKET info;
+ UINT payload_len, checksum_len;
+ BOOL truncated;
+
+ if (!WinDivertHelperParsePacketEx(pPacket, packetLen, &info))
+ {
+ return 0;
+ }
+
+ ip_header = info.IPHeader;
+ if (ip_header != ((void *)0) && !(flags & 1))
+ {
+ ip_header->Checksum = 0;
+ ip_header->Checksum = WinDivertCalcChecksum(((void *)0), 0, ip_header,
+ ip_header->HdrLength * sizeof(UINT32));
+ if (pAddr != ((void *)0))
+ {
+ pAddr->IPChecksum = 1;
+ }
+ }
+
+ payload_len = info.PayloadLength;
+ truncated = (info.Truncated || info.MF || info.FragOff != 0);
+
+ icmp_header = info.ICMPHeader;
+ if (icmp_header != ((void *)0))
+ {
+ if ((flags & 2) != 0)
+ {
+ return 1;
+ }
+ if (truncated)
+ {
+ return 0;
+ }
+ icmp_header->Checksum = 0;
+ icmp_header->Checksum = WinDivertCalcChecksum(((void *)0), 0,
+ icmp_header, payload_len + sizeof(WINDIVERT_ICMPHDR));
+ return 1;
+ }
+
+ icmpv6_header = info.ICMPv6Header;
+ if (icmpv6_header != ((void *)0))
+ {
+ if ((flags & 4) != 0)
+ {
+ return 1;
+ }
+ if (truncated)
+ {
+ return 0;
+ }
+ ipv6_header = info.IPv6Header;
+ checksum_len = payload_len + sizeof(WINDIVERT_ICMPV6HDR);
+ pseudo_header_len = WinDivertInitPseudoHeader(((void *)0), ipv6_header,
+ IPPROTO_ICMPV6, checksum_len, pseudo_header);
+ icmpv6_header->Checksum = 0;
+ icmpv6_header->Checksum = WinDivertCalcChecksum(pseudo_header,
+ pseudo_header_len, icmpv6_header, checksum_len);
+ return 1;
+ }
+
+ tcp_header = info.TCPHeader;
+ if (tcp_header != ((void *)0))
+ {
+ if ((flags & 8) != 0)
+ {
+ return 1;
+ }
+ if (truncated)
+ {
+ return 0;
+ }
+ checksum_len = payload_len + tcp_header->HdrLength * sizeof(UINT32);
+ ipv6_header = info.IPv6Header;
+ pseudo_header_len = WinDivertInitPseudoHeader(ip_header,
+ ipv6_header, IPPROTO_TCP, checksum_len, pseudo_header);
+ tcp_header->Checksum = 0;
+ tcp_header->Checksum = WinDivertCalcChecksum(
+ pseudo_header, pseudo_header_len, tcp_header, checksum_len);
+ if (pAddr != ((void *)0))
+ {
+ pAddr->TCPChecksum = 1;
+ }
+ return 1;
+ }
+
+ udp_header = info.UDPHeader;
+ if (udp_header != ((void *)0))
+ {
+ if ((flags & 16) != 0)
+ {
+ return 1;
+ }
+ if (truncated)
+ {
+ return 0;
+ }
+
+ checksum_len = payload_len + sizeof(WINDIVERT_UDPHDR);
+ ipv6_header = info.IPv6Header;
+ pseudo_header_len = WinDivertInitPseudoHeader(ip_header,
+ ipv6_header, IPPROTO_UDP, checksum_len, pseudo_header);
+ udp_header->Checksum = 0;
+ udp_header->Checksum = WinDivertCalcChecksum(
+ pseudo_header, pseudo_header_len, udp_header, checksum_len);
+ if (udp_header->Checksum == 0)
+ {
+ udp_header->Checksum = 0xFFFF;
+ }
+ if (pAddr != ((void *)0))
+ {
+ pAddr->UDPChecksum = 1;
+ }
+ return 1;
+ }
+
+ return 1;
+}
+
+
+
+
+static UINT16 WinDivertInitPseudoHeader(PWINDIVERT_IPHDR ip_header,
+ PWINDIVERT_IPV6HDR ipv6_header, UINT8 protocol, UINT len,
+ void *pseudo_header)
+{
+ if (ip_header != ((void *)0))
+ {
+ PWINDIVERT_PSEUDOHDR pseudo_header_v4 =
+ (PWINDIVERT_PSEUDOHDR)pseudo_header;
+ pseudo_header_v4->SrcAddr = ip_header->SrcAddr;
+ pseudo_header_v4->DstAddr = ip_header->DstAddr;
+ pseudo_header_v4->Zero = 0;
+ pseudo_header_v4->Protocol = protocol;
+ pseudo_header_v4->Length = (((((UINT16)len) >> 8) & 0x00FFu) | ((((UINT16)len) << 8) & 0xFF00u));
+ return sizeof(WINDIVERT_PSEUDOHDR);
+ }
+ else
+ {
+ PWINDIVERT_PSEUDOV6HDR pseudo_header_v6 =
+ (PWINDIVERT_PSEUDOV6HDR)pseudo_header;
+ memcpy(pseudo_header_v6->SrcAddr, ipv6_header->SrcAddr,
+ sizeof(pseudo_header_v6->SrcAddr));
+ memcpy(pseudo_header_v6->DstAddr, ipv6_header->DstAddr,
+ sizeof(pseudo_header_v6->DstAddr));
+ pseudo_header_v6->Length = (((((UINT32)len) >> 24) & 0x000000FFu) | ((((UINT32)len) >> 8) & 0x0000FF00u) | ((((UINT32)len) << 8) & 0x00FF0000u) | ((((UINT32)len) << 24) & 0xFF000000u));
+ pseudo_header_v6->NextHdr = protocol;
+ pseudo_header_v6->Zero = 0;
+ return sizeof(WINDIVERT_PSEUDOV6HDR);
+ }
+}
+
+
+
+
+static UINT16 WinDivertCalcChecksum(PVOID pseudo_header,
+ UINT16 pseudo_header_len, PVOID data, UINT len)
+{
+ register const UINT16 *data16 = (const UINT16 *)pseudo_header;
+ register size_t len16 = pseudo_header_len >> 1;
+ register UINT32 sum = 0;
+ size_t i;
+
+
+ for (i = 0; i < len16; i++)
+ {
+ sum += (UINT32)data16[i];
+ }
+
+
+ data16 = (const UINT16 *)data;
+ len16 = len >> 1;
+ for (i = 0; i < len16; i++)
+ {
+ sum += (UINT32)data16[i];
+ }
+
+ if (len & 0x1)
+ {
+ const UINT8 *data8 = (const UINT8 *)data;
+ sum += (UINT16)data8[len-1];
+ }
+
+ sum = (sum & 0xFFFF) + (sum >> 16);
+ sum += (sum >> 16);
+ sum = ~sum;
+ return (UINT16)sum;
+}
+
+
+
+
+BOOL WinDivertHelperDecrementTTL(void *packet, UINT packetLen)
+{
+ PWINDIVERT_IPHDR ip_header;
+ PWINDIVERT_IPV6HDR ipv6_header;
+
+ if (packet == ((void *)0) || packetLen < sizeof(WINDIVERT_IPHDR))
+ {
+ return 0;
+ }
+
+ ip_header = (PWINDIVERT_IPHDR)packet;
+ switch (ip_header->Version)
+ {
+ case 4:
+ if (ip_header->TTL <= 1)
+ {
+ return 0;
+ }
+ ip_header->TTL--;
+
+
+ if (ip_header->Checksum >= 0xFFFE)
+ {
+ ip_header->Checksum -= 0xFFFE;
+ }
+ else
+ {
+ ip_header->Checksum += 1;
+ }
+ return 1;
+
+ case 6:
+ if (packetLen < sizeof(WINDIVERT_IPV6HDR))
+ {
+ return 0;
+ }
+ ipv6_header = (PWINDIVERT_IPV6HDR)packet;
+ if (ipv6_header->HopLimit <= 1)
+ {
+ return 0;
+ }
+ ipv6_header->HopLimit--;
+ return 1;
+
+ default:
+ return 0;
+ }
+}
+
+
+
+
+static BOOL WinDivertValidateField(WINDIVERT_LAYER layer, UINT32 field)
+{
+ static const UINT8 flags[] =
+ {
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD) | (1 << WINDIVERT_LAYER_FLOW) | (1 << WINDIVERT_LAYER_SOCKET) | (1 << WINDIVERT_LAYER_REFLECT)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_FLOW) | (1 << WINDIVERT_LAYER_SOCKET)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_FLOW) | (1 << WINDIVERT_LAYER_SOCKET)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD) | (1 << WINDIVERT_LAYER_FLOW) | (1 << WINDIVERT_LAYER_SOCKET)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD) | (1 << WINDIVERT_LAYER_FLOW) | (1 << WINDIVERT_LAYER_SOCKET)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD) | (1 << WINDIVERT_LAYER_FLOW) | (1 << WINDIVERT_LAYER_SOCKET)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD) | (1 << WINDIVERT_LAYER_FLOW) | (1 << WINDIVERT_LAYER_SOCKET)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD) | (1 << WINDIVERT_LAYER_FLOW) | (1 << WINDIVERT_LAYER_SOCKET)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD) | (1 << WINDIVERT_LAYER_FLOW) | (1 << WINDIVERT_LAYER_SOCKET)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_FLOW) | (1 << WINDIVERT_LAYER_SOCKET)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_FLOW) | (1 << WINDIVERT_LAYER_SOCKET) | (1 << WINDIVERT_LAYER_REFLECT)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_FLOW) | (1 << WINDIVERT_LAYER_SOCKET)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_FLOW) | (1 << WINDIVERT_LAYER_SOCKET)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_FLOW) | (1 << WINDIVERT_LAYER_SOCKET)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_FLOW) | (1 << WINDIVERT_LAYER_SOCKET)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_FLOW) | (1 << WINDIVERT_LAYER_SOCKET)),
+ ((1 << WINDIVERT_LAYER_FLOW) | (1 << WINDIVERT_LAYER_SOCKET)),
+ ((1 << WINDIVERT_LAYER_FLOW) | (1 << WINDIVERT_LAYER_SOCKET)),
+ (1 << WINDIVERT_LAYER_REFLECT),
+ (1 << WINDIVERT_LAYER_REFLECT),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD) | (1 << WINDIVERT_LAYER_FLOW) | (1 << WINDIVERT_LAYER_SOCKET) | (1 << WINDIVERT_LAYER_REFLECT)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD) | (1 << WINDIVERT_LAYER_FLOW) | (1 << WINDIVERT_LAYER_SOCKET) | (1 << WINDIVERT_LAYER_REFLECT)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ ((1 << WINDIVERT_LAYER_NETWORK) | (1 << WINDIVERT_LAYER_NETWORK_FORWARD)),
+ };
+
+ if (field > 85)
+ {
+ return 0;
+ }
+ return ((flags[field] & (1 << layer)) != 0);
+}
+
+
+
+
+static int WinDivertCompare128(BOOL neg_a, const UINT32 *a, BOOL neg_b,
+ const UINT32 *b, BOOL big)
+{
+ int neg;
+ if (neg_a && !neg_b)
+ {
+ return -1;
+ }
+ if (!neg_a && neg_b)
+ {
+ return 1;
+ }
+ neg = (neg_a? -1: 1);
+ if (big)
+ {
+ if (a[3] < b[3])
+ {
+ return -neg;
+ }
+ if (a[3] > b[3])
+ {
+ return neg;
+ }
+ if (a[2] < b[2])
+ {
+ return -neg;
+ }
+ if (a[2] > b[2])
+ {
+ return neg;
+ }
+ if (a[1] < b[1])
+ {
+ return -neg;
+ }
+ if (a[1] > b[1])
+ {
+ return neg;
+ }
+ }
+ if (a[0] < b[0])
+ {
+ return -neg;
+ }
+ if (a[0] > b[0])
+ {
+ return neg;
+ }
+ return 0;
+}
+
+
+
+
+static __forceinline int WinDivertExecuteFilter(
+ const WINDIVERT_FILTER *filter,
+ WINDIVERT_LAYER layer,
+ LONGLONG timestamp,
+ WINDIVERT_EVENT event,
+ BOOL ipv4,
+ BOOL outbound,
+ BOOL loopback,
+ BOOL impostor,
+ BOOL fragment,
+ const WINDIVERT_DATA_NETWORK *network_data,
+ const WINDIVERT_DATA_FLOW *flow_data,
+ const WINDIVERT_DATA_SOCKET *socket_data,
+ const WINDIVERT_DATA_REFLECT *reflect_data,
+ const WINDIVERT_IPHDR *ip_header,
+ const WINDIVERT_IPV6HDR *ipv6_header,
+ const WINDIVERT_ICMPHDR *icmp_header,
+ const WINDIVERT_ICMPV6HDR *icmpv6_header,
+ const WINDIVERT_TCPHDR *tcp_header,
+ const WINDIVERT_UDPHDR *udp_header,
+ UINT8 protocol,
+ const void *packet,
+ UINT packet_len,
+ UINT header_len,
+ UINT payload_len)
+{
+ UINT64 random64 = 0;
+ UINT16 ip, ttl;
+ UINT8 data8;
+ UINT16 data16;
+ UINT32 data32;
+ ULARGE_INTEGER val64;
+
+ ip = 0;
+ ttl = 256+1;
+ while (ttl-- != 0)
+ {
+ BOOL result = 1;
+ BOOL big = 0;
+ BOOL neg = 0;
+ int cmp;
+ UINT32 val[4];
+
+ if (!WinDivertValidateField(layer, filter[ip].field))
+ {
+ return -1;
+ }
+ switch (filter[ip].field)
+ {
+ case 82:
+ case 83:
+ case 84:
+ if (random64 == 0)
+ {
+ random64 = WinDivertHashPacket((UINT64)timestamp,
+ ip_header, ipv6_header, icmp_header, icmpv6_header,
+ tcp_header, udp_header);
+ random64 |= 0xFF00000000000000ull;
+ }
+ break;
+ case 11:
+ case 12:
+ case 13:
+ case 14:
+ case 15:
+ case 16:
+ case 17:
+ case 18:
+ case 19:
+ case 20:
+ case 21:
+ case 22:
+ result = (ip_header != ((void *)0));
+ break;
+ case 23:
+ case 24:
+ case 25:
+ case 26:
+ case 27:
+ case 28:
+ case 29:
+ result = (ipv6_header != ((void *)0));
+ break;
+ case 30:
+ case 31:
+ case 32:
+ case 33:
+ result = (icmp_header != ((void *)0));
+ break;
+ case 34:
+ case 35:
+ case 36:
+ case 37:
+ result = (icmpv6_header != ((void *)0));
+ break;
+ case 38:
+ case 39:
+ case 40:
+ case 41:
+ case 42:
+ case 43:
+ case 44:
+ case 45:
+ case 46:
+ case 47:
+ case 48:
+ case 49:
+ case 50:
+ case 51:
+ case 74:
+ case 75:
+ case 76:
+ case 52:
+ result = (tcp_header != ((void *)0));
+ break;
+ case 53:
+ case 54:
+ case 55:
+ case 56:
+ case 77:
+ case 78:
+ case 79:
+ case 57:
+ result = (udp_header != ((void *)0));
+ break;
+ default:
+ break;
+ }
+
+ if (result)
+ {
+ switch (filter[ip].field)
+ {
+ case 0:
+ val[0] = 0;
+ break;
+ case 70:
+ val[0] = (UINT32)event;
+ break;
+ case 80:
+ val[0] = (UINT32)packet_len;
+ break;
+ case 81:
+ big = 1;
+ neg = (timestamp < 0);
+ val64.QuadPart = (UINT64)(neg? -timestamp: timestamp);
+ val[0] = (UINT32)val64.LowPart;
+ val[1] = (UINT32)val64.HighPart;
+ val[2] = val[3] = 0;
+ break;
+ case 82:
+ val64.QuadPart = random64;
+ val[0] = ((UINT32)val64.HighPart >> 16) & 0xFF;
+ break;
+ case 83:
+ val64.QuadPart = random64;
+ val[0] = (UINT32)val64.HighPart & 0xFFFF;
+ break;
+ case 84:
+ val[0] = (UINT32)random64;
+ break;
+ case 71:
+ result = windivert_get_data((PNET_BUFFER)(packet), (packet_len), (0), (packet_len), ((INT)filter[ip].arg[1]), (&data8), (sizeof(data8)));
+#line 1130 "E:\\Unity\\WinDivert\\dll\\windivert_shared.c"
+ val[0] = (UINT32)data8;
+ break;
+ case 72:
+ result = windivert_get_data((PNET_BUFFER)(packet), (packet_len), (0), (packet_len), ((INT)filter[ip].arg[1]), (&data16), (sizeof(data16)));
+#line 1136 "E:\\Unity\\WinDivert\\dll\\windivert_shared.c"
+ val[0] = (UINT32)((((data16) >> 8) & 0x00FFu) | (((data16) << 8) & 0xFF00u));
+ break;
+ case 73:
+ result = windivert_get_data((PNET_BUFFER)(packet), (packet_len), (0), (packet_len), ((INT)filter[ip].arg[1]), (&data32), (sizeof(data32)));
+#line 1142 "E:\\Unity\\WinDivert\\dll\\windivert_shared.c"
+ val[0] = ((((data32) >> 24) & 0x000000FFu) | (((data32) >> 8) & 0x0000FF00u) | (((data32) << 8) & 0x00FF0000u) | (((data32) << 24) & 0xFF000000u));
+ break;
+ case 74:
+ case 77:
+ result = windivert_get_data((PNET_BUFFER)(packet), (packet_len), (header_len), (header_len + payload_len), ((INT)filter[ip].arg[1]), (&data8), (sizeof(data8)));
+#line 1149 "E:\\Unity\\WinDivert\\dll\\windivert_shared.c"
+ val[0] = (UINT32)data8;
+ break;
+ case 75:
+ case 78:
+ result = windivert_get_data((PNET_BUFFER)(packet), (packet_len), (header_len), (header_len + payload_len), ((INT)filter[ip].arg[1]), (&data16), (sizeof(data16)));
+#line 1156 "E:\\Unity\\WinDivert\\dll\\windivert_shared.c"
+ val[0] = (UINT32)((((data16) >> 8) & 0x00FFu) | (((data16) << 8) & 0xFF00u));
+ break;
+ case 76:
+ case 79:
+ result = windivert_get_data((PNET_BUFFER)(packet), (packet_len), (header_len), (header_len + payload_len), ((INT)filter[ip].arg[1]), (&data32), (sizeof(data32)));
+#line 1163 "E:\\Unity\\WinDivert\\dll\\windivert_shared.c"
+ val[0] = ((((data32) >> 24) & 0x000000FFu) | (((data32) >> 8) & 0x0000FF00u) | (((data32) << 8) & 0x00FF0000u) | (((data32) << 24) & 0xFF000000u));
+ break;
+ case 1:
+ val[0] = (UINT32)!outbound;
+ break;
+ case 2:
+ val[0] = (UINT32)outbound;
+ break;
+ case 85:
+ val[0] = (UINT32)fragment;
+ break;
+ case 3:
+ switch (layer)
+ {
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ val[0] = network_data->IfIdx;
+ break;
+ default:
+ return -1;
+ }
+ break;
+ case 4:
+ val[0] = network_data->SubIfIdx;
+ break;
+ case 58:
+ val[0] = (UINT32)loopback;
+ break;
+ case 59:
+ val[0] = (UINT32)impostor;
+ break;
+ case 5:
+ val[0] = (UINT32)(ip_header != ((void *)0));
+ break;
+ case 6:
+ val[0] = (UINT32)(ipv6_header != ((void *)0));
+ break;
+ case 7:
+ switch (layer)
+ {
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ val[0] = (UINT32)(icmp_header != ((void *)0));
+ break;
+ case WINDIVERT_LAYER_SOCKET:
+ val[0] = (UINT32)(ipv4 &&
+ socket_data->Protocol == IPPROTO_ICMP);
+ break;
+ case WINDIVERT_LAYER_FLOW:
+ val[0] = (UINT32)(ipv4 &&
+ flow_data->Protocol == IPPROTO_ICMP);
+ break;
+ default:
+ return -1;
+ }
+ break;
+ case 10:
+ switch (layer)
+ {
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ val[0] = (UINT32)(icmpv6_header != ((void *)0));
+ break;
+ case WINDIVERT_LAYER_SOCKET:
+ val[0] = (UINT32)(!ipv4 &&
+ socket_data->Protocol == IPPROTO_ICMPV6);
+ break;
+ case WINDIVERT_LAYER_FLOW:
+ val[0] = (UINT32)(!ipv4 &&
+ flow_data->Protocol == IPPROTO_ICMPV6);
+ break;
+ default:
+ return -1;
+ }
+ break;
+ case 8:
+ switch (layer)
+ {
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ val[0] = (UINT32)(tcp_header != ((void *)0));
+ break;
+ case WINDIVERT_LAYER_SOCKET:
+ val[0] =
+ (UINT32)(socket_data->Protocol == IPPROTO_TCP);
+ break;
+ case WINDIVERT_LAYER_FLOW:
+ val[0] =
+ (UINT32)(flow_data->Protocol == IPPROTO_TCP);
+ break;
+ default:
+ return -1;
+ }
+ break;
+ case 9:
+ switch (layer)
+ {
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ val[0] = (UINT32)(udp_header != ((void *)0));
+ break;
+ case WINDIVERT_LAYER_SOCKET:
+ val[0] =
+ (UINT32)(socket_data->Protocol == IPPROTO_UDP);
+ break;
+ case WINDIVERT_LAYER_FLOW:
+ val[0] =
+ (UINT32)(flow_data->Protocol == IPPROTO_UDP);
+ break;
+ default:
+ return -1;
+ }
+ break;
+ case 11:
+ val[0] = (UINT32)ip_header->HdrLength;
+ break;
+ case 12:
+ val[0] = (UINT32)ip_header->TOS;
+ break;
+ case 13:
+ val[0] = (UINT32)((((ip_header->Length) >> 8) & 0x00FFu) | (((ip_header->Length) << 8) & 0xFF00u));
+ break;
+ case 14:
+ val[0] = (UINT32)((((ip_header->Id) >> 8) & 0x00FFu) | (((ip_header->Id) << 8) & 0xFF00u));
+ break;
+ case 15:
+ val[0] = (UINT32)((((ip_header)->FragOff0) & 0x0040) != 0);
+ break;
+ case 16:
+ val[0] = (UINT32)((((ip_header)->FragOff0) & 0x0020) != 0);
+ break;
+ case 17:
+ val[0] = (UINT32)(((((((ip_header)->FragOff0) & 0xFF1F)) >> 8) & 0x00FFu) | ((((((ip_header)->FragOff0) & 0xFF1F)) << 8) & 0xFF00u));
+#line 1297 "E:\\Unity\\WinDivert\\dll\\windivert_shared.c"
+ break;
+ case 18:
+ val[0] = (UINT32)ip_header->TTL;
+ break;
+ case 19:
+ val[0] = (UINT32)ip_header->Protocol;
+ break;
+ case 20:
+ val[0] = (UINT32)((((ip_header->Checksum) >> 8) & 0x00FFu) | (((ip_header->Checksum) << 8) & 0xFF00u));
+ break;
+ case 21:
+ big = 1;
+ val[3] = val[2] = 0;
+ val[1] = 0x0000FFFF;
+ val[0] = (UINT32)((((ip_header->SrcAddr) >> 24) & 0x000000FFu) | (((ip_header->SrcAddr) >> 8) & 0x0000FF00u) | (((ip_header->SrcAddr) << 8) & 0x00FF0000u) | (((ip_header->SrcAddr) << 24) & 0xFF000000u));
+ break;
+ case 22:
+ big = 1;
+ val[3] = val[2] = 0;
+ val[1] = 0x0000FFFF;
+ val[0] = (UINT32)((((ip_header->DstAddr) >> 24) & 0x000000FFu) | (((ip_header->DstAddr) >> 8) & 0x0000FF00u) | (((ip_header->DstAddr) << 8) & 0x00FF0000u) | (((ip_header->DstAddr) << 24) & 0xFF000000u));
+ break;
+ case 23:
+ val[0] =
+ (UINT32)((((ipv6_header)->TrafficClass0) << 4) | ((ipv6_header)->TrafficClass1));
+ break;
+ case 24:
+ val[0] = (UINT32)((((((((UINT32)(ipv6_header)->FlowLabel0) << 16) | ((UINT32)(ipv6_header)->FlowLabel1))) >> 24) & 0x000000FFu) | (((((((UINT32)(ipv6_header)->FlowLabel0) << 16) | ((UINT32)(ipv6_header)->FlowLabel1))) >> 8) & 0x0000FF00u) | (((((((UINT32)(ipv6_header)->FlowLabel0) << 16) | ((UINT32)(ipv6_header)->FlowLabel1))) << 8) & 0x00FF0000u) | (((((((UINT32)(ipv6_header)->FlowLabel0) << 16) | ((UINT32)(ipv6_header)->FlowLabel1))) << 24) & 0xFF000000u));
+#line 1326 "E:\\Unity\\WinDivert\\dll\\windivert_shared.c"
+ break;
+ case 25:
+ val[0] = (UINT32)((((ipv6_header->Length) >> 8) & 0x00FFu) | (((ipv6_header->Length) << 8) & 0xFF00u));
+ break;
+ case 26:
+ val[0] = (UINT32)ipv6_header->NextHdr;
+ break;
+ case 27:
+ val[0] = (UINT32)ipv6_header->HopLimit;
+ break;
+ case 28:
+ big = 1;
+ val[3] = (UINT32)((((ipv6_header->SrcAddr[0]) >> 24) & 0x000000FFu) | (((ipv6_header->SrcAddr[0]) >> 8) & 0x0000FF00u) | (((ipv6_header->SrcAddr[0]) << 8) & 0x00FF0000u) | (((ipv6_header->SrcAddr[0]) << 24) & 0xFF000000u));
+ val[2] = (UINT32)((((ipv6_header->SrcAddr[1]) >> 24) & 0x000000FFu) | (((ipv6_header->SrcAddr[1]) >> 8) & 0x0000FF00u) | (((ipv6_header->SrcAddr[1]) << 8) & 0x00FF0000u) | (((ipv6_header->SrcAddr[1]) << 24) & 0xFF000000u));
+ val[1] = (UINT32)((((ipv6_header->SrcAddr[2]) >> 24) & 0x000000FFu) | (((ipv6_header->SrcAddr[2]) >> 8) & 0x0000FF00u) | (((ipv6_header->SrcAddr[2]) << 8) & 0x00FF0000u) | (((ipv6_header->SrcAddr[2]) << 24) & 0xFF000000u));
+ val[0] = (UINT32)((((ipv6_header->SrcAddr[3]) >> 24) & 0x000000FFu) | (((ipv6_header->SrcAddr[3]) >> 8) & 0x0000FF00u) | (((ipv6_header->SrcAddr[3]) << 8) & 0x00FF0000u) | (((ipv6_header->SrcAddr[3]) << 24) & 0xFF000000u));
+ break;
+ case 29:
+ big = 1;
+ val[3] = (UINT32)((((ipv6_header->DstAddr[0]) >> 24) & 0x000000FFu) | (((ipv6_header->DstAddr[0]) >> 8) & 0x0000FF00u) | (((ipv6_header->DstAddr[0]) << 8) & 0x00FF0000u) | (((ipv6_header->DstAddr[0]) << 24) & 0xFF000000u));
+ val[2] = (UINT32)((((ipv6_header->DstAddr[1]) >> 24) & 0x000000FFu) | (((ipv6_header->DstAddr[1]) >> 8) & 0x0000FF00u) | (((ipv6_header->DstAddr[1]) << 8) & 0x00FF0000u) | (((ipv6_header->DstAddr[1]) << 24) & 0xFF000000u));
+ val[1] = (UINT32)((((ipv6_header->DstAddr[2]) >> 24) & 0x000000FFu) | (((ipv6_header->DstAddr[2]) >> 8) & 0x0000FF00u) | (((ipv6_header->DstAddr[2]) << 8) & 0x00FF0000u) | (((ipv6_header->DstAddr[2]) << 24) & 0xFF000000u));
+ val[0] = (UINT32)((((ipv6_header->DstAddr[3]) >> 24) & 0x000000FFu) | (((ipv6_header->DstAddr[3]) >> 8) & 0x0000FF00u) | (((ipv6_header->DstAddr[3]) << 8) & 0x00FF0000u) | (((ipv6_header->DstAddr[3]) << 24) & 0xFF000000u));
+ break;
+ case 30:
+ val[0] = (UINT32)icmp_header->Type;
+ break;
+ case 31:
+ val[0] = (UINT32)icmp_header->Code;
+ break;
+ case 32:
+ val[0] = (UINT32)((((icmp_header->Checksum) >> 8) & 0x00FFu) | (((icmp_header->Checksum) << 8) & 0xFF00u));
+ break;
+ case 33:
+ val[0] = (UINT32)((((icmp_header->Body) >> 24) & 0x000000FFu) | (((icmp_header->Body) >> 8) & 0x0000FF00u) | (((icmp_header->Body) << 8) & 0x00FF0000u) | (((icmp_header->Body) << 24) & 0xFF000000u));
+ break;
+ case 34:
+ val[0] = (UINT32)icmpv6_header->Type;
+ break;
+ case 35:
+ val[0] = (UINT32)icmpv6_header->Code;
+ break;
+ case 36:
+ val[0] = (UINT32)((((icmpv6_header->Checksum) >> 8) & 0x00FFu) | (((icmpv6_header->Checksum) << 8) & 0xFF00u));
+ break;
+ case 37:
+ val[0] = (UINT32)((((icmpv6_header->Body) >> 24) & 0x000000FFu) | (((icmpv6_header->Body) >> 8) & 0x0000FF00u) | (((icmpv6_header->Body) << 8) & 0x00FF0000u) | (((icmpv6_header->Body) << 24) & 0xFF000000u));
+ break;
+ case 38:
+ val[0] = (UINT32)((((tcp_header->SrcPort) >> 8) & 0x00FFu) | (((tcp_header->SrcPort) << 8) & 0xFF00u));
+ break;
+ case 39:
+ val[0] = (UINT32)((((tcp_header->DstPort) >> 8) & 0x00FFu) | (((tcp_header->DstPort) << 8) & 0xFF00u));
+ break;
+ case 40:
+ val[0] = (UINT32)((((tcp_header->SeqNum) >> 24) & 0x000000FFu) | (((tcp_header->SeqNum) >> 8) & 0x0000FF00u) | (((tcp_header->SeqNum) << 8) & 0x00FF0000u) | (((tcp_header->SeqNum) << 24) & 0xFF000000u));
+ break;
+ case 41:
+ val[0] = (UINT32)((((tcp_header->AckNum) >> 24) & 0x000000FFu) | (((tcp_header->AckNum) >> 8) & 0x0000FF00u) | (((tcp_header->AckNum) << 8) & 0x00FF0000u) | (((tcp_header->AckNum) << 24) & 0xFF000000u));
+ break;
+ case 42:
+ val[0] = (UINT32)tcp_header->HdrLength;
+ break;
+ case 43:
+ val[0] = (UINT32)tcp_header->Urg;
+ break;
+ case 44:
+ val[0] = (UINT32)tcp_header->Ack;
+ break;
+ case 45:
+ val[0] = (UINT32)tcp_header->Psh;
+ break;
+ case 46:
+ val[0] = (UINT32)tcp_header->Rst;
+ break;
+ case 47:
+ val[0] = (UINT32)tcp_header->Syn;
+ break;
+ case 48:
+ val[0] = (UINT32)tcp_header->Fin;
+ break;
+ case 49:
+ val[0] = (UINT32)((((tcp_header->Window) >> 8) & 0x00FFu) | (((tcp_header->Window) << 8) & 0xFF00u));
+ break;
+ case 50:
+ val[0] = (UINT32)((((tcp_header->Checksum) >> 8) & 0x00FFu) | (((tcp_header->Checksum) << 8) & 0xFF00u));
+ break;
+ case 51:
+ val[0] = (UINT32)((((tcp_header->UrgPtr) >> 8) & 0x00FFu) | (((tcp_header->UrgPtr) << 8) & 0xFF00u));
+ break;
+ case 52:
+ val[0] = (UINT32)payload_len;
+ break;
+ case 53:
+ val[0] = (UINT32)((((udp_header->SrcPort) >> 8) & 0x00FFu) | (((udp_header->SrcPort) << 8) & 0xFF00u));
+ break;
+ case 54:
+ val[0] = (UINT32)((((udp_header->DstPort) >> 8) & 0x00FFu) | (((udp_header->DstPort) << 8) & 0xFF00u));
+ break;
+ case 55:
+ val[0] = (UINT32)((((udp_header->Length) >> 8) & 0x00FFu) | (((udp_header->Length) << 8) & 0xFF00u));
+ break;
+ case 56:
+ val[0] = (UINT32)((((udp_header->Checksum) >> 8) & 0x00FFu) | (((udp_header->Checksum) << 8) & 0xFF00u));
+ break;
+ case 57:
+ val[0] = (UINT32)payload_len;
+ break;
+ case 61:
+ big = 1;
+ switch (layer)
+ {
+ case WINDIVERT_LAYER_NETWORK:
+ if (ip_header != ((void *)0))
+ {
+ val[3] = val[2] = 0;
+ val[1] = 0x0000FFFF;
+ val[0] = (UINT32)(((((outbound? ip_header->SrcAddr: ip_header->DstAddr)) >> 24) & 0x000000FFu) | ((((outbound? ip_header->SrcAddr: ip_header->DstAddr)) >> 8) & 0x0000FF00u) | ((((outbound? ip_header->SrcAddr: ip_header->DstAddr)) << 8) & 0x00FF0000u) | ((((outbound? ip_header->SrcAddr: ip_header->DstAddr)) << 24) & 0xFF000000u));
+#line 1446 "E:\\Unity\\WinDivert\\dll\\windivert_shared.c"
+ }
+ else if (ipv6_header != ((void *)0) && outbound)
+ {
+ val[3] = (UINT32)((((ipv6_header->SrcAddr[0]) >> 24) & 0x000000FFu) | (((ipv6_header->SrcAddr[0]) >> 8) & 0x0000FF00u) | (((ipv6_header->SrcAddr[0]) << 8) & 0x00FF0000u) | (((ipv6_header->SrcAddr[0]) << 24) & 0xFF000000u));
+ val[2] = (UINT32)((((ipv6_header->SrcAddr[1]) >> 24) & 0x000000FFu) | (((ipv6_header->SrcAddr[1]) >> 8) & 0x0000FF00u) | (((ipv6_header->SrcAddr[1]) << 8) & 0x00FF0000u) | (((ipv6_header->SrcAddr[1]) << 24) & 0xFF000000u));
+ val[1] = (UINT32)((((ipv6_header->SrcAddr[2]) >> 24) & 0x000000FFu) | (((ipv6_header->SrcAddr[2]) >> 8) & 0x0000FF00u) | (((ipv6_header->SrcAddr[2]) << 8) & 0x00FF0000u) | (((ipv6_header->SrcAddr[2]) << 24) & 0xFF000000u));
+ val[0] = (UINT32)((((ipv6_header->SrcAddr[3]) >> 24) & 0x000000FFu) | (((ipv6_header->SrcAddr[3]) >> 8) & 0x0000FF00u) | (((ipv6_header->SrcAddr[3]) << 8) & 0x00FF0000u) | (((ipv6_header->SrcAddr[3]) << 24) & 0xFF000000u));
+ }
+ else if (ipv6_header != ((void *)0))
+ {
+ val[3] = (UINT32)((((ipv6_header->DstAddr[0]) >> 24) & 0x000000FFu) | (((ipv6_header->DstAddr[0]) >> 8) & 0x0000FF00u) | (((ipv6_header->DstAddr[0]) << 8) & 0x00FF0000u) | (((ipv6_header->DstAddr[0]) << 24) & 0xFF000000u));
+ val[2] = (UINT32)((((ipv6_header->DstAddr[1]) >> 24) & 0x000000FFu) | (((ipv6_header->DstAddr[1]) >> 8) & 0x0000FF00u) | (((ipv6_header->DstAddr[1]) << 8) & 0x00FF0000u) | (((ipv6_header->DstAddr[1]) << 24) & 0xFF000000u));
+ val[1] = (UINT32)((((ipv6_header->DstAddr[2]) >> 24) & 0x000000FFu) | (((ipv6_header->DstAddr[2]) >> 8) & 0x0000FF00u) | (((ipv6_header->DstAddr[2]) << 8) & 0x00FF0000u) | (((ipv6_header->DstAddr[2]) << 24) & 0xFF000000u));
+ val[0] = (UINT32)((((ipv6_header->DstAddr[3]) >> 24) & 0x000000FFu) | (((ipv6_header->DstAddr[3]) >> 8) & 0x0000FF00u) | (((ipv6_header->DstAddr[3]) << 8) & 0x00FF0000u) | (((ipv6_header->DstAddr[3]) << 24) & 0xFF000000u));
+ }
+ else
+ {
+ val[3] = val[2] = val[1] = val[0] = 0;
+ }
+ break;
+ case WINDIVERT_LAYER_FLOW:
+ val[0] = flow_data->LocalAddr[0];
+ val[1] = flow_data->LocalAddr[1];
+ val[2] = flow_data->LocalAddr[2];
+ val[3] = flow_data->LocalAddr[3];
+ break;
+ case WINDIVERT_LAYER_SOCKET:
+ val[0] = socket_data->LocalAddr[0];
+ val[1] = socket_data->LocalAddr[1];
+ val[2] = socket_data->LocalAddr[2];
+ val[3] = socket_data->LocalAddr[3];
+ break;
+ default:
+ return -1;
+ }
+ break;
+ case 62:
+ big = 1;
+ switch (layer)
+ {
+ case WINDIVERT_LAYER_NETWORK:
+ if (ip_header != ((void *)0))
+ {
+ val[3] = val[2] = 0;
+ val[1] = 0x0000FFFF;
+ val[0] = (UINT32)(((((!outbound? ip_header->SrcAddr: ip_header->DstAddr)) >> 24) & 0x000000FFu) | ((((!outbound? ip_header->SrcAddr: ip_header->DstAddr)) >> 8) & 0x0000FF00u) | ((((!outbound? ip_header->SrcAddr: ip_header->DstAddr)) << 8) & 0x00FF0000u) | ((((!outbound? ip_header->SrcAddr: ip_header->DstAddr)) << 24) & 0xFF000000u));
+#line 1494 "E:\\Unity\\WinDivert\\dll\\windivert_shared.c"
+ }
+ else if (ipv6_header != ((void *)0) && !outbound)
+ {
+ val[3] = (UINT32)((((ipv6_header->SrcAddr[0]) >> 24) & 0x000000FFu) | (((ipv6_header->SrcAddr[0]) >> 8) & 0x0000FF00u) | (((ipv6_header->SrcAddr[0]) << 8) & 0x00FF0000u) | (((ipv6_header->SrcAddr[0]) << 24) & 0xFF000000u));
+ val[2] = (UINT32)((((ipv6_header->SrcAddr[1]) >> 24) & 0x000000FFu) | (((ipv6_header->SrcAddr[1]) >> 8) & 0x0000FF00u) | (((ipv6_header->SrcAddr[1]) << 8) & 0x00FF0000u) | (((ipv6_header->SrcAddr[1]) << 24) & 0xFF000000u));
+ val[1] = (UINT32)((((ipv6_header->SrcAddr[2]) >> 24) & 0x000000FFu) | (((ipv6_header->SrcAddr[2]) >> 8) & 0x0000FF00u) | (((ipv6_header->SrcAddr[2]) << 8) & 0x00FF0000u) | (((ipv6_header->SrcAddr[2]) << 24) & 0xFF000000u));
+ val[0] = (UINT32)((((ipv6_header->SrcAddr[3]) >> 24) & 0x000000FFu) | (((ipv6_header->SrcAddr[3]) >> 8) & 0x0000FF00u) | (((ipv6_header->SrcAddr[3]) << 8) & 0x00FF0000u) | (((ipv6_header->SrcAddr[3]) << 24) & 0xFF000000u));
+ }
+ else if (ipv6_header != ((void *)0))
+ {
+ val[3] = (UINT32)((((ipv6_header->DstAddr[0]) >> 24) & 0x000000FFu) | (((ipv6_header->DstAddr[0]) >> 8) & 0x0000FF00u) | (((ipv6_header->DstAddr[0]) << 8) & 0x00FF0000u) | (((ipv6_header->DstAddr[0]) << 24) & 0xFF000000u));
+ val[2] = (UINT32)((((ipv6_header->DstAddr[1]) >> 24) & 0x000000FFu) | (((ipv6_header->DstAddr[1]) >> 8) & 0x0000FF00u) | (((ipv6_header->DstAddr[1]) << 8) & 0x00FF0000u) | (((ipv6_header->DstAddr[1]) << 24) & 0xFF000000u));
+ val[1] = (UINT32)((((ipv6_header->DstAddr[2]) >> 24) & 0x000000FFu) | (((ipv6_header->DstAddr[2]) >> 8) & 0x0000FF00u) | (((ipv6_header->DstAddr[2]) << 8) & 0x00FF0000u) | (((ipv6_header->DstAddr[2]) << 24) & 0xFF000000u));
+ val[0] = (UINT32)((((ipv6_header->DstAddr[3]) >> 24) & 0x000000FFu) | (((ipv6_header->DstAddr[3]) >> 8) & 0x0000FF00u) | (((ipv6_header->DstAddr[3]) << 8) & 0x00FF0000u) | (((ipv6_header->DstAddr[3]) << 24) & 0xFF000000u));
+ }
+ else
+ {
+ val[3] = val[2] = val[1] = val[0] = 0;
+ }
+ break;
+ case WINDIVERT_LAYER_FLOW:
+ val[0] = flow_data->RemoteAddr[0];
+ val[1] = flow_data->RemoteAddr[1];
+ val[2] = flow_data->RemoteAddr[2];
+ val[3] = flow_data->RemoteAddr[3];
+ break;
+ case WINDIVERT_LAYER_SOCKET:
+ val[0] = socket_data->RemoteAddr[0];
+ val[1] = socket_data->RemoteAddr[1];
+ val[2] = socket_data->RemoteAddr[2];
+ val[3] = socket_data->RemoteAddr[3];
+ break;
+ default:
+ return -1;
+ }
+ break;
+ case 63:
+ switch (layer)
+ {
+ case WINDIVERT_LAYER_NETWORK:
+ if (tcp_header != ((void *)0))
+ {
+ val[0] = (UINT32)(((((outbound? tcp_header->SrcPort: tcp_header->DstPort)) >> 8) & 0x00FFu) | ((((outbound? tcp_header->SrcPort: tcp_header->DstPort)) << 8) & 0xFF00u));
+#line 1539 "E:\\Unity\\WinDivert\\dll\\windivert_shared.c"
+ }
+ else if (udp_header != ((void *)0))
+ {
+ val[0] = (UINT32)(((((outbound? udp_header->SrcPort: udp_header->DstPort)) >> 8) & 0x00FFu) | ((((outbound? udp_header->SrcPort: udp_header->DstPort)) << 8) & 0xFF00u));
+#line 1545 "E:\\Unity\\WinDivert\\dll\\windivert_shared.c"
+ }
+ else if (icmp_header != ((void *)0))
+ {
+ val[0] = (outbound?
+ (UINT32)icmp_header->Type: 0);
+ }
+ else if (icmpv6_header != ((void *)0))
+ {
+ val[0] = (outbound?
+ (UINT32)icmpv6_header->Type: 0);
+ }
+ else
+ {
+ val[0] = 0;
+ }
+ break;
+ case WINDIVERT_LAYER_FLOW:
+ val[0] = (UINT32)flow_data->LocalPort;
+ break;
+ case WINDIVERT_LAYER_SOCKET:
+ val[0] = (UINT32)socket_data->LocalPort;
+ break;
+ default:
+ return -1;
+ }
+ break;
+ case 64:
+ switch (layer)
+ {
+ case WINDIVERT_LAYER_NETWORK:
+ if (tcp_header != ((void *)0))
+ {
+ val[0] = (UINT32)(((((!outbound? tcp_header->SrcPort: tcp_header->DstPort)) >> 8) & 0x00FFu) | ((((!outbound? tcp_header->SrcPort: tcp_header->DstPort)) << 8) & 0xFF00u));
+#line 1580 "E:\\Unity\\WinDivert\\dll\\windivert_shared.c"
+ }
+ else if (udp_header != ((void *)0))
+ {
+ val[0] = (UINT32)(((((!outbound? udp_header->SrcPort: udp_header->DstPort)) >> 8) & 0x00FFu) | ((((!outbound? udp_header->SrcPort: udp_header->DstPort)) << 8) & 0xFF00u));
+#line 1586 "E:\\Unity\\WinDivert\\dll\\windivert_shared.c"
+ }
+ else if (icmp_header != ((void *)0))
+ {
+ val[0] = (!outbound?
+ (UINT32)icmp_header->Type: 0);
+ }
+ else if (icmpv6_header != ((void *)0))
+ {
+ val[0] = (!outbound?
+ (UINT32)icmpv6_header->Type: 0);
+ }
+ else
+ {
+ val[0] = 0;
+ }
+ break;
+ case WINDIVERT_LAYER_FLOW:
+ val[0] = (UINT32)flow_data->RemotePort;
+ break;
+ case WINDIVERT_LAYER_SOCKET:
+ val[0] = (UINT32)socket_data->RemotePort;
+ break;
+ default:
+ return -1;
+ }
+ break;
+ case 65:
+ switch (layer)
+ {
+ case WINDIVERT_LAYER_NETWORK:
+ val[0] = (UINT32)protocol;
+ break;
+ case WINDIVERT_LAYER_FLOW:
+ val[0] = (UINT32)flow_data->Protocol;
+ break;
+ case WINDIVERT_LAYER_SOCKET:
+ val[0] = (UINT32)socket_data->Protocol;
+ break;
+ default:
+ return -1;
+ }
+ break;
+ case 60:
+ switch (layer)
+ {
+ case WINDIVERT_LAYER_FLOW:
+ val[0] = flow_data->ProcessId;
+ break;
+ case WINDIVERT_LAYER_SOCKET:
+ val[0] = socket_data->ProcessId;
+ break;
+ case WINDIVERT_LAYER_REFLECT:
+ val[0] = reflect_data->ProcessId;
+ break;
+ default:
+ return -1;
+ }
+ break;
+ case 66:
+ big = 1;
+ val[2] = val[3] = 0;
+ switch (layer)
+ {
+ case WINDIVERT_LAYER_FLOW:
+ val64.QuadPart = flow_data->EndpointId;
+ val[0] = (UINT32)val64.LowPart;
+ val[1] = (UINT32)val64.HighPart;
+ break;
+ case WINDIVERT_LAYER_SOCKET:
+ val64.QuadPart = socket_data->EndpointId;
+ val[0] = (UINT32)val64.LowPart;
+ val[1] = (UINT32)val64.HighPart;
+ break;
+ default:
+ return -1;
+ }
+ break;
+ case 67:
+ big = 1;
+ val[2] = val[3] = 0;
+ switch (layer)
+ {
+ case WINDIVERT_LAYER_FLOW:
+ val64.QuadPart = flow_data->ParentEndpointId;
+ val[0] = (UINT32)val64.LowPart;
+ val[1] = (UINT32)val64.HighPart;
+ break;
+ case WINDIVERT_LAYER_SOCKET:
+ val64.QuadPart = socket_data->ParentEndpointId;
+ val[0] = (UINT32)val64.LowPart;
+ val[1] = (UINT32)val64.HighPart;
+ break;
+ default:
+ return -1;
+ }
+ break;
+ case 68:
+ val[0] = (UINT32)reflect_data->Layer;
+ break;
+ case 69:
+ neg = (reflect_data->Priority < 0);
+ val[0] = (UINT32)(neg? -reflect_data->Priority:
+ reflect_data->Priority);
+ break;
+ default:
+ return -1;
+ }
+ }
+
+ if (result)
+ {
+ cmp = WinDivertCompare128(neg, val,
+ (filter[ip].neg? 1: 0), filter[ip].arg, big);
+ switch (filter[ip].test)
+ {
+ case 0:
+ result = (cmp == 0);
+ break;
+ case 1:
+ result = (cmp != 0);
+ break;
+ case 2:
+ result = (cmp < 0);
+ break;
+ case 3:
+ result = (cmp <= 0);
+ break;
+ case 4:
+ result = (cmp > 0);
+ break;
+ case 5:
+ result = (cmp >= 0);
+ break;
+ default:
+ return -1;
+ }
+ }
+
+ ip = (UINT16)(result? filter[ip].success: filter[ip].failure);
+ switch (ip)
+ {
+ case 0x7FFE:
+ return 1;
+ case 0x7FFF:
+ return 0;
+ default:
+ break;
+ }
+ }
+
+ return -1;
+}
+
+#line 931 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+
+
+
+
+static PVOID windivert_malloc(SIZE_T size, BOOL paged)
+{
+ POOL_TYPE pool = (paged ? PagedPool : non_paged_pool);
+ if (size == 0)
+ {
+ return ((void *)0);
+ }
+ return ExAllocatePoolWithTag(pool, size, 'viDW');
+}
+static void windivert_free(PVOID ptr)
+{
+ if (ptr != ((void *)0))
+ {
+ ExFreePoolWithTag(ptr, 'viDW');
+ }
+}
+
+
+
+
+extern NTSTATUS DriverEntry( PDRIVER_OBJECT driver_obj,
+ PUNICODE_STRING reg_path)
+{
+ WDF_DRIVER_CONFIG config;
+ WDFDRIVER driver;
+ PWDFDEVICE_INIT device_init;
+ WDFDEVICE device;
+ WDF_FILEOBJECT_CONFIG file_config;
+ WDF_IO_QUEUE_CONFIG queue_config;
+ WDFQUEUE queue;
+ WDF_OBJECT_ATTRIBUTES obj_attrs;
+ NET_BUFFER_LIST_POOL_PARAMETERS nbl_pool_params;
+ NET_BUFFER_POOL_PARAMETERS nb_pool_params;
+ RTL_OSVERSIONINFOW version;
+ LARGE_INTEGER freq;
+ NTSTATUS status;
+ DECLARE_CONST_UNICODE_STRING(device_name, L"\\Device\\" L"WinDivert");
+ DECLARE_CONST_UNICODE_STRING(dos_device_name,
+ L"\\??\\" L"WinDivert");
+
+ ;
+
+
+ status = RtlGetVersion(&version);
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ if (version.dwMajorVersion > 6 ||
+ (version.dwMajorVersion == 6 && version.dwMinorVersion >= 2))
+ {
+ non_paged_pool = (POOL_TYPE)512;
+ no_exec_flag = (MM_PAGE_PRIORITY)0x40000000;
+
+ no_write_flag = (MM_PAGE_PRIORITY)0x80000000;
+
+ }
+ }
+
+
+ KeQueryPerformanceCounter(&freq);
+ counts_per_ms = freq.QuadPart / 1000;
+ counts_per_ms = (counts_per_ms == 0 ? 1 : counts_per_ms);
+
+
+ WDF_DRIVER_CONFIG_INIT(&config, ((void *)0));
+ config.DriverInitFlags |= WdfDriverInitNonPnpDriver;
+ config.EvtDriverUnload = windivert_unload;
+ status = WdfDriverCreate(driver_obj, reg_path, ((void *)0),
+ &config, &driver);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ goto driver_entry_exit;
+ }
+ device_init = WdfControlDeviceInitAllocate(driver,
+ &SDDL_DEVOBJ_SYS_ALL_ADM_ALL);
+ if (device_init == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000009AL);
+ ;
+#line 1015 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ goto driver_entry_exit;
+ }
+ WdfDeviceInitSetDeviceType(device_init, 0x00000012);
+ WdfDeviceInitSetIoType(device_init, WdfDeviceIoDirect);
+ status = WdfDeviceInitAssignName(device_init, &device_name);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ WdfDeviceInitFree(device_init);
+ goto driver_entry_exit;
+ }
+ WDF_FILEOBJECT_CONFIG_INIT(&file_config, windivert_create, windivert_close,
+ windivert_cleanup);
+ WDF_OBJECT_ATTRIBUTES_INIT(&obj_attrs); (&obj_attrs)->ContextTypeInfo = (&_WDF_context_s_TYPE_INFO)->UniqueType;
+ obj_attrs.ExecutionLevel = WdfExecutionLevelPassive;
+ obj_attrs.SynchronizationScope = WdfSynchronizationScopeNone;
+ obj_attrs.EvtDestroyCallback = windivert_destroy;
+ WdfDeviceInitSetFileObjectConfig(device_init, &file_config, &obj_attrs);
+ WdfDeviceInitSetIoInCallerContextCallback(device_init,
+ windivert_caller_context);
+ WDF_OBJECT_ATTRIBUTES_INIT(&obj_attrs);
+ status = WdfDeviceCreate(&device_init, &obj_attrs, &device);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ WdfDeviceInitFree(device_init);
+ goto driver_entry_exit;
+ }
+ WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE(&queue_config,
+ WdfIoQueueDispatchParallel);
+ queue_config.EvtIoRead = ((void *)0);
+ queue_config.EvtIoWrite = ((void *)0);
+ queue_config.EvtIoDeviceControl = windivert_ioctl;
+ WDF_OBJECT_ATTRIBUTES_INIT(&obj_attrs);
+ obj_attrs.ExecutionLevel = WdfExecutionLevelPassive;
+ obj_attrs.SynchronizationScope = WdfSynchronizationScopeNone;
+ status = WdfIoQueueCreate(device, &queue_config, &obj_attrs, &queue);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ goto driver_entry_exit;
+ }
+ status = WdfDeviceCreateSymbolicLink(device, &dos_device_name);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ goto driver_entry_exit;
+ }
+ WdfControlFinishInitializing(device);
+
+
+ status = FwpsInjectionHandleCreate0(2,
+ 0x00000004 | 0x00000008,
+ &inject_handle_forward);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+#line 1073 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ goto driver_entry_exit;
+ }
+ status = FwpsInjectionHandleCreate0(23,
+ 0x00000004 | 0x00000008,
+ &injectv6_handle_forward);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+#line 1082 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ goto driver_entry_exit;
+ }
+ status = FwpsInjectionHandleCreate0(2,
+ 0x00000004 | 0x00000008,
+ &inject_handle_in);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+#line 1091 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ goto driver_entry_exit;
+ }
+ status = FwpsInjectionHandleCreate0(2,
+ 0x00000004 | 0x00000008,
+ &inject_handle_out);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+#line 1100 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ goto driver_entry_exit;
+ }
+ status = FwpsInjectionHandleCreate0(23,
+ 0x00000004 | 0x00000008,
+ &injectv6_handle_in);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+#line 1109 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ goto driver_entry_exit;
+ }
+ status = FwpsInjectionHandleCreate0(23,
+ 0x00000004 | 0x00000008,
+ &injectv6_handle_out);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+#line 1118 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ goto driver_entry_exit;
+ }
+
+
+ memset((&nbl_pool_params),0,(sizeof(nbl_pool_params)));
+ nbl_pool_params.Header.Type = 0x80;
+ nbl_pool_params.Header.Revision =
+ 1;
+ nbl_pool_params.Header.Size = sizeof(nbl_pool_params);
+ nbl_pool_params.fAllocateNetBuffer = 1;
+ nbl_pool_params.PoolTag = 'viDW';
+ nbl_pool_params.DataSize = 0;
+ nbl_pool_handle = NdisAllocateNetBufferListPool(((void *)0), &nbl_pool_params);
+ if (nbl_pool_handle == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000009AL);
+ ;
+ goto driver_entry_exit;
+ }
+
+
+ memset((&nb_pool_params),0,(sizeof(nb_pool_params)));
+ nb_pool_params.Header.Type = 0x80;
+ nb_pool_params.Header.Revision = 1;
+ nb_pool_params.Header.Size =
+ (((LONG)(LONG_PTR)&(((NET_BUFFER_POOL_PARAMETERS *)0)->DataSize)) + (sizeof(((NET_BUFFER_POOL_PARAMETERS *)0)->DataSize)));
+ nb_pool_params.PoolTag = 'viDW';
+ nb_pool_params.DataSize = 0;
+ nb_pool_handle = NdisAllocateNetBufferPool(((void *)0), &nb_pool_params);
+ if (nb_pool_handle == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000009AL);
+ ;
+ goto driver_entry_exit;
+ }
+
+
+ status = FwpmEngineOpen0(((void *)0), 0xFFFFFFFFL, ((void *)0), ((void *)0),
+ &engine_handle);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ goto driver_entry_exit;
+ }
+
+
+ status = FwpmTransactionBegin0(engine_handle, 0);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ FwpmTransactionAbort0(engine_handle);
+ goto driver_entry_exit;
+ }
+ status = windivert_install_provider();
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ FwpmTransactionAbort0(engine_handle);
+ goto driver_entry_exit;
+ }
+ status = windivert_install_sublayer((&windivert_layer_inbound_network_ipv4));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ driver_entry_sublayer_error:
+ ;
+ FwpmTransactionAbort0(engine_handle);
+ goto driver_entry_exit;
+ }
+ status = windivert_install_sublayer((&windivert_layer_outbound_network_ipv4));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ goto driver_entry_sublayer_error;
+ }
+ status = windivert_install_sublayer((&windivert_layer_inbound_network_ipv6));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ goto driver_entry_sublayer_error;
+ }
+ status = windivert_install_sublayer((&windivert_layer_outbound_network_ipv6));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ goto driver_entry_sublayer_error;
+ }
+ status = windivert_install_sublayer((&windivert_layer_forward_network_ipv4));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ goto driver_entry_sublayer_error;
+ }
+ status = windivert_install_sublayer((&windivert_layer_forward_network_ipv6));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ goto driver_entry_sublayer_error;
+ }
+ status = windivert_install_sublayer((&windivert_layer_flow_established_ipv4));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ goto driver_entry_sublayer_error;
+ }
+ status = windivert_install_sublayer((&windivert_layer_flow_established_ipv6));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ goto driver_entry_sublayer_error;
+ }
+ status = windivert_install_sublayer(
+ (&windivert_layer_resource_assignment_ipv4));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ goto driver_entry_sublayer_error;
+ }
+ status = windivert_install_sublayer(
+ (&windivert_layer_resource_assignment_ipv6));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ goto driver_entry_sublayer_error;
+ }
+ status = windivert_install_sublayer((&windivert_layer_resource_release_ipv4));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ goto driver_entry_sublayer_error;
+ }
+ status = windivert_install_sublayer((&windivert_layer_resource_release_ipv6));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ goto driver_entry_sublayer_error;
+ }
+ status = windivert_install_sublayer((&windivert_layer_auth_connect_ipv4));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ goto driver_entry_sublayer_error;
+ }
+ status = windivert_install_sublayer((&windivert_layer_auth_connect_ipv6));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ goto driver_entry_sublayer_error;
+ }
+ status = windivert_install_sublayer((&windivert_layer_endpoint_closure_ipv4));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ goto driver_entry_sublayer_error;
+ }
+ status = windivert_install_sublayer((&windivert_layer_endpoint_closure_ipv6));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ goto driver_entry_sublayer_error;
+ }
+ status = windivert_install_sublayer((&windivert_layer_auth_listen_ipv4));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ goto driver_entry_sublayer_error;
+ }
+ status = windivert_install_sublayer((&windivert_layer_auth_listen_ipv6));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ goto driver_entry_sublayer_error;
+ }
+ status = windivert_install_sublayer((&windivert_layer_auth_recv_accept_ipv4));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ goto driver_entry_sublayer_error;
+ }
+ status = windivert_install_sublayer((&windivert_layer_auth_recv_accept_ipv6));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ goto driver_entry_sublayer_error;
+ }
+ status = FwpmTransactionCommit0(engine_handle);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ FwpmTransactionAbort0(engine_handle);
+ goto driver_entry_exit;
+ }
+
+ status = windivert_reflect_init((WDFOBJECT)device);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ goto driver_entry_exit;
+ }
+
+driver_entry_exit:
+
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ windivert_driver_unload();
+ }
+
+ return status;
+}
+
+
+
+
+extern void windivert_unload( WDFDRIVER driver_0)
+{
+ PDRIVER_OBJECT driver = WdfDriverWdmGetDriverObject(driver_0);
+ windivert_driver_unload();
+ windivert_log_event(IoGetCurrentProcess(), driver, L"UNLOAD");
+}
+
+
+
+
+static void windivert_driver_unload(void)
+{
+ NTSTATUS status;
+
+ ;
+
+ if (inject_handle_forward != ((void *)0))
+ {
+ FwpsInjectionHandleDestroy0(inject_handle_forward);
+ }
+ if (injectv6_handle_forward != ((void *)0))
+ {
+ FwpsInjectionHandleDestroy0(injectv6_handle_forward);
+ }
+ if (inject_handle_in != ((void *)0))
+ {
+ FwpsInjectionHandleDestroy0(inject_handle_in);
+ }
+ if (inject_handle_out != ((void *)0))
+ {
+ FwpsInjectionHandleDestroy0(inject_handle_out);
+ }
+ if (injectv6_handle_in != ((void *)0))
+ {
+ FwpsInjectionHandleDestroy0(injectv6_handle_in);
+ }
+ if (injectv6_handle_out != ((void *)0))
+ {
+ FwpsInjectionHandleDestroy0(injectv6_handle_out);
+ }
+ if (nbl_pool_handle != ((void *)0))
+ {
+ NdisFreeNetBufferListPool(nbl_pool_handle);
+ }
+ if (nb_pool_handle != ((void *)0))
+ {
+ NdisFreeNetBufferPool(nb_pool_handle);
+ }
+ if (engine_handle != ((void *)0))
+ {
+ status = FwpmTransactionBegin0(engine_handle, 0);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ FwpmTransactionAbort0(engine_handle);
+ FwpmEngineClose0(engine_handle);
+ return;
+ }
+ FwpmSubLayerDeleteByKey0(engine_handle,
+ (&windivert_layer_inbound_network_ipv4)->sublayer_guid);
+ FwpmSubLayerDeleteByKey0(engine_handle,
+ (&windivert_layer_outbound_network_ipv4)->sublayer_guid);
+ FwpmSubLayerDeleteByKey0(engine_handle,
+ (&windivert_layer_inbound_network_ipv6)->sublayer_guid);
+ FwpmSubLayerDeleteByKey0(engine_handle,
+ (&windivert_layer_outbound_network_ipv6)->sublayer_guid);
+ FwpmSubLayerDeleteByKey0(engine_handle,
+ (&windivert_layer_forward_network_ipv4)->sublayer_guid);
+ FwpmSubLayerDeleteByKey0(engine_handle,
+ (&windivert_layer_forward_network_ipv6)->sublayer_guid);
+ FwpmSubLayerDeleteByKey0(engine_handle,
+ (&windivert_layer_flow_established_ipv4)->sublayer_guid);
+ FwpmSubLayerDeleteByKey0(engine_handle,
+ (&windivert_layer_flow_established_ipv6)->sublayer_guid);
+ FwpmSubLayerDeleteByKey0(engine_handle,
+ (&windivert_layer_resource_assignment_ipv4)->sublayer_guid);
+ FwpmSubLayerDeleteByKey0(engine_handle,
+ (&windivert_layer_resource_assignment_ipv6)->sublayer_guid);
+ FwpmSubLayerDeleteByKey0(engine_handle,
+ (&windivert_layer_resource_release_ipv4)->sublayer_guid);
+ FwpmSubLayerDeleteByKey0(engine_handle,
+ (&windivert_layer_resource_release_ipv6)->sublayer_guid);
+ FwpmSubLayerDeleteByKey0(engine_handle,
+ (&windivert_layer_auth_connect_ipv4)->sublayer_guid);
+ FwpmSubLayerDeleteByKey0(engine_handle,
+ (&windivert_layer_auth_connect_ipv6)->sublayer_guid);
+ FwpmSubLayerDeleteByKey0(engine_handle,
+ (&windivert_layer_endpoint_closure_ipv4)->sublayer_guid);
+ FwpmSubLayerDeleteByKey0(engine_handle,
+ (&windivert_layer_endpoint_closure_ipv6)->sublayer_guid);
+ FwpmSubLayerDeleteByKey0(engine_handle,
+ (&windivert_layer_auth_listen_ipv4)->sublayer_guid);
+ FwpmSubLayerDeleteByKey0(engine_handle,
+ (&windivert_layer_auth_listen_ipv6)->sublayer_guid);
+ FwpmSubLayerDeleteByKey0(engine_handle,
+ (&windivert_layer_auth_recv_accept_ipv4)->sublayer_guid);
+ FwpmSubLayerDeleteByKey0(engine_handle,
+ (&windivert_layer_auth_recv_accept_ipv6)->sublayer_guid);
+
+ FwpmProviderDeleteByKey0(engine_handle,
+ &WINDIVERT_PROVIDER_GUID);
+
+ status = FwpmTransactionCommit0(engine_handle);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ FwpmTransactionAbort0(engine_handle);
+ ;
+ }
+ FwpmEngineClose0(engine_handle);
+ }
+}
+
+
+
+
+static NTSTATUS windivert_install_provider()
+{
+ FWPM_PROVIDER0 provider;
+ NTSTATUS status;
+
+ memset((&provider),0,(sizeof(provider)));
+ provider.providerKey = WINDIVERT_PROVIDER_GUID;
+ provider.displayData.name = L"WinDivert";
+ provider.displayData.description = L"WinDivert" L" provider";
+
+
+
+ FwpmProviderAdd0(engine_handle, &provider, ((void *)0));
+ return ((NTSTATUS)0x00000000L);
+}
+
+
+
+
+static NTSTATUS windivert_install_sublayer(layer_t layer)
+{
+ FWPM_SUBLAYER0 sublayer;
+ NTSTATUS status;
+
+ memset((&sublayer),0,(sizeof(sublayer)));
+ sublayer.subLayerKey = *(layer->sublayer_guid);
+ sublayer.displayData.name = layer->sublayer_name;
+ sublayer.displayData.description = layer->sublayer_desc;
+ sublayer.weight = layer->sublayer_weight;
+
+ status = FwpmSubLayerAdd0(engine_handle, &sublayer, ((void *)0));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ }
+
+ return status;
+}
+
+
+
+
+extern void windivert_create( WDFDEVICE device, WDFREQUEST request,
+ WDFFILEOBJECT object)
+{
+ WDF_IO_QUEUE_CONFIG queue_config;
+ WDF_WORKITEM_CONFIG item_config;
+ WDF_OBJECT_ATTRIBUTES obj_attrs;
+ FWPM_SESSION0 session;
+ PIRP irp;
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+ UINT8 i;
+ context_t context = windivert_context_get(object);
+
+ ;
+
+
+ memset((context),0,(sizeof(struct context_s)));
+ context->state = WINDIVERT_CONTEXT_STATE_OPENING;
+ context->device = device;
+ context->object = object;
+ context->work_queue_length = 0;
+ context->packet_queue_length = 0;
+ context->packet_queue_maxlength = 4096;
+ context->packet_queue_size = 0;
+ context->packet_queue_maxsize = 4194304;
+ context->packet_queue_maxcounts =
+ 2000 * counts_per_ms;
+ context->packet_queue_maxtime = 2000;
+ context->layer = 0;
+ context->flags = 0;
+ context->initialized = 0;
+ context->shutdown_recv = 0;
+ context->shutdown_recv_enabled = 0;
+ context->shutdown_send = 0;
+ context->priority = 0;
+ context->priority16 = 0;
+ context->filter = ((void *)0);
+ context->filter_len = 0;
+ context->filter_flags = 0;
+ context->worker = ((void *)0);
+ context->process = ((void *)0);
+ for (i = 0; i < 12; i++)
+ {
+ context->installed[i] = 0;
+ }
+ KeInitializeSpinLock(&context->lock);
+ InitializeListHead(&context->flow_set);
+ context->flow_v4_callout_id = 0;
+ context->flow_v6_callout_id = 0;
+ InitializeListHead(&context->work_queue);
+ InitializeListHead(&context->packet_queue);
+ for (i = 0; i < 12; i++)
+ {
+ status = ExUuidCreate(&context->callout_guid[i]);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ goto windivert_create_exit;
+ }
+ status = ExUuidCreate(&context->filter_guid[i]);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ goto windivert_create_exit;
+ }
+ }
+ WDF_IO_QUEUE_CONFIG_INIT(&queue_config, WdfIoQueueDispatchManual);
+ status = WdfIoQueueCreate(device, &queue_config, ((void *)0),
+ &context->read_queue);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ goto windivert_create_exit;
+ }
+ WDF_WORKITEM_CONFIG_INIT(&item_config, windivert_worker);
+ item_config.AutomaticSerialization = 0;
+ WDF_OBJECT_ATTRIBUTES_INIT(&obj_attrs);
+ obj_attrs.ParentObject = (WDFOBJECT)object;
+ status = WdfWorkItemCreate(&item_config, &obj_attrs, &context->worker);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ goto windivert_create_exit;
+ }
+ memset((&session),0,(sizeof(session)));
+ session.flags |= (0x00000001);
+ status = FwpmEngineOpen0(((void *)0), 0xFFFFFFFFL, ((void *)0), &session,
+ &context->engine_handle);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ goto windivert_create_exit;
+ }
+ memset((&context->reflect),0,(sizeof(context->reflect)));
+ irp = WdfRequestWdmGetIrp(request);
+ context->process = IoGetRequestorProcess(irp);
+ if (context->process == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC0000010L);
+ ;
+ goto windivert_create_exit;
+ }
+ ObfReferenceObject(context->process);
+
+windivert_create_exit:
+
+
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ context->state = WINDIVERT_CONTEXT_STATE_CLOSED;
+ if (context->read_queue != ((void *)0))
+ {
+ WdfObjectDelete(context->read_queue);
+ }
+ if (context->worker != ((void *)0))
+ {
+ WdfObjectDelete(context->worker);
+ }
+
+ }
+
+ WdfRequestComplete(request, status);
+}
+
+
+
+
+static NTSTATUS windivert_install_callouts(context_t context, UINT8 layer,
+ UINT64 flags)
+{
+ UINT8 i, j;
+ layer_t layers[12];
+ UINT32* callout_ids[12] = { ((void *)0) };
+ BOOL inbound, outbound, ipv4, ipv6, bind, connect, listen,
+ accept, close;
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+
+ inbound = ((flags & 0x0000000000000010ull) != 0);
+ outbound = ((flags & 0x0000000000000020ull) != 0);
+ ipv4 = ((flags & 0x0000000000000040ull) != 0);
+ ipv6 = ((flags & 0x0000000000000080ull) != 0);
+ bind = ((flags & 0x0000000000000200ull) != 0);
+ connect = ((flags & 0x0000000000000400ull) != 0);
+ listen = ((flags & 0x0000000000000800ull) != 0);
+ accept = ((flags & 0x0000000000001000ull) != 0);
+ close = ((flags & 0x0000000000002000ull) != 0);
+
+ i = 0;
+ switch (layer)
+ {
+ case WINDIVERT_LAYER_NETWORK:
+ if (inbound && ipv4)
+ {
+ layers[i++] = (&windivert_layer_inbound_network_ipv4);
+ }
+ if (outbound && ipv4)
+ {
+ layers[i++] = (&windivert_layer_outbound_network_ipv4);
+ }
+ if (inbound && ipv6)
+ {
+ layers[i++] = (&windivert_layer_inbound_network_ipv6);
+ }
+ if (outbound && ipv6)
+ {
+ layers[i++] = (&windivert_layer_outbound_network_ipv6);
+ }
+ break;
+
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ if (ipv4)
+ {
+ layers[i++] = (&windivert_layer_forward_network_ipv4);
+ }
+ if (ipv6)
+ {
+ layers[i++] = (&windivert_layer_forward_network_ipv6);
+ }
+ break;
+
+ case WINDIVERT_LAYER_FLOW:
+ if (ipv4)
+ {
+ callout_ids[i] = &context->flow_v4_callout_id;
+ layers[i++] = (&windivert_layer_flow_established_ipv4);
+ }
+ if (ipv6)
+ {
+ callout_ids[i] = &context->flow_v6_callout_id;
+ layers[i++] = (&windivert_layer_flow_established_ipv6);
+ }
+ break;
+
+ case WINDIVERT_LAYER_SOCKET:
+ if (ipv4 && bind)
+ {
+ layers[i++] = (&windivert_layer_resource_assignment_ipv4);
+ }
+ if (ipv4 && connect)
+ {
+ layers[i++] = (&windivert_layer_auth_connect_ipv4);
+ }
+ if (ipv4 && listen)
+ {
+ layers[i++] = (&windivert_layer_auth_listen_ipv4);
+ }
+ if (ipv4 && accept)
+ {
+ layers[i++] = (&windivert_layer_auth_recv_accept_ipv4);
+ }
+ if (ipv4 && close)
+ {
+ layers[i++] = (&windivert_layer_resource_release_ipv4);
+ layers[i++] = (&windivert_layer_endpoint_closure_ipv4);
+ }
+ if (ipv6 && bind)
+ {
+ layers[i++] = (&windivert_layer_resource_assignment_ipv6);
+ }
+ if (ipv6 && connect)
+ {
+ layers[i++] = (&windivert_layer_auth_connect_ipv6);
+ }
+ if (ipv6 && listen)
+ {
+ layers[i++] = (&windivert_layer_auth_listen_ipv6);
+ }
+ if (ipv6 && accept)
+ {
+ layers[i++] = (&windivert_layer_auth_recv_accept_ipv6);
+ }
+ if (ipv6 && close)
+ {
+ layers[i++] = (&windivert_layer_resource_release_ipv6);
+ layers[i++] = (&windivert_layer_endpoint_closure_ipv6);
+ }
+ break;
+
+ case WINDIVERT_LAYER_REFLECT:
+ break;
+
+ default:
+ return ((NTSTATUS)0xC000000DL);
+ }
+
+ for (j = 0; j < i; j++)
+ {
+ status = windivert_install_callout(context, j, layers[j],
+ callout_ids[j]);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ goto windivert_install_callouts_exit;
+ }
+ }
+
+windivert_install_callouts_exit:
+
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ windivert_uninstall_callouts(context, WINDIVERT_CONTEXT_STATE_OPEN);
+ }
+
+ return status;
+}
+
+
+
+
+static NTSTATUS windivert_install_callout(context_t context, UINT idx,
+ layer_t layer, UINT32* callout_id_ptr)
+{
+ KLOCK_QUEUE_HANDLE lock_handle;
+ FWPS_CALLOUT0 scallout;
+ FWPM_CALLOUT0 mcallout;
+ FWPM_FILTER0 filter;
+ UINT64 weight;
+ UINT32 priority;
+ GUID callout_guid, filter_guid;
+ UINT32 callout_id;
+ WDFDEVICE device;
+ HANDLE engine;
+ NTSTATUS status;
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPEN)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = ((NTSTATUS)0xC0000184L);
+ return status;
+ }
+ priority = context->priority;
+ callout_guid = context->callout_guid[idx];
+ filter_guid = context->filter_guid[idx];
+ device = context->device;
+ engine = context->engine_handle;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+ weight = (UINT64)priority;
+
+ memset((&scallout),0,(sizeof(scallout)));
+ scallout.calloutKey = callout_guid;
+ scallout.classifyFn = layer->classify;
+ scallout.notifyFn = windivert_notify;
+ scallout.flowDeleteFn = layer->flow_delete;
+ memset((&mcallout),0,(sizeof(mcallout)));
+ mcallout.calloutKey = callout_guid;
+ mcallout.displayData.name = layer->callout_name;
+ mcallout.displayData.description = layer->callout_desc;
+ mcallout.applicableLayer = *(layer->layer_guid);
+ memset((&filter),0,(sizeof(filter)));
+ filter.filterKey = filter_guid;
+ filter.layerKey = *(layer->layer_guid);
+ filter.displayData.name = layer->filter_name;
+ filter.displayData.description = layer->filter_desc;
+ filter.action.type = (0x00000005 | (0x00004000));
+ filter.action.calloutKey = callout_guid;
+ filter.subLayerKey = *(layer->sublayer_guid);
+ filter.weight.type = FWP_UINT64;
+ filter.weight.uint64 = &weight;
+ filter.rawContext = (UINT64)context;
+ status = FwpsCalloutRegister0(WdfDeviceWdmGetDeviceObject(device),
+ &scallout, &callout_id);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ return status;
+ }
+ if (callout_id_ptr != ((void *)0))
+ {
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ *callout_id_ptr = callout_id;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ }
+ status = FwpmTransactionBegin0(engine, 0);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ goto windivert_install_callout_error;
+ }
+ status = FwpmCalloutAdd0(engine, &mcallout, ((void *)0), ((void *)0));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ goto windivert_install_callout_error;
+ }
+ status = FwpmFilterAdd0(engine, &filter, ((void *)0), ((void *)0));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ goto windivert_install_callout_error;
+ }
+ status = FwpmTransactionCommit0(engine);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ goto windivert_install_callout_error;
+ }
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPEN)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ FwpsCalloutUnregisterByKey0(&callout_guid);
+ status = ((NTSTATUS)0xC0000184L);
+ return status;
+ }
+ context->installed[idx] = 1;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+ return ((NTSTATUS)0x00000000L);
+
+windivert_install_callout_error:
+ FwpmTransactionAbort0(engine);
+ FwpsCalloutUnregisterByKey0(&callout_guid);
+ return status;
+}
+
+
+
+
+static void windivert_uninstall_callouts(context_t context,
+ context_state_t state)
+{
+ KLOCK_QUEUE_HANDLE lock_handle;
+ UINT i;
+ HANDLE engine;
+ BOOL installed;
+ GUID callout_guid, filter_guid;
+ NTSTATUS status;
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != state)
+ {
+ windivert_uninstall_callouts_error:
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = ((NTSTATUS)0xC0000184L);
+ ;
+ return;
+ }
+ engine = context->engine_handle;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+ status = FwpmTransactionBegin0(engine, 0);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+
+
+
+
+ ;
+ FwpmTransactionAbort0(engine);
+ goto windivert_uninstall_callouts_unregister;
+ }
+ for (i = 0; i < 12; i++)
+ {
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != state)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ FwpmTransactionAbort0(engine);
+ status = ((NTSTATUS)0xC0000184L);
+ ;
+ return;
+ }
+ installed = context->installed[i];
+ callout_guid = context->callout_guid[i];
+ filter_guid = context->filter_guid[i];
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+ if (!installed)
+ {
+ continue;
+ }
+ status = FwpmFilterDeleteByKey0(engine, &filter_guid);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ break;
+ }
+ status = FwpmCalloutDeleteByKey0(engine, &callout_guid);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ break;
+ }
+ }
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ FwpmTransactionAbort0(engine);
+ goto windivert_uninstall_callouts_unregister;
+ }
+ status = FwpmTransactionCommit0(engine);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ FwpmTransactionAbort0(engine);
+
+ }
+
+windivert_uninstall_callouts_unregister:
+ for (i = 0; i < 12; i++)
+ {
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != state)
+ {
+ goto windivert_uninstall_callouts_error;
+ }
+ installed = context->installed[i];
+ callout_guid = context->callout_guid[i];
+ context->installed[i] = 0;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ if (!installed)
+ {
+ continue;
+ }
+ status = FwpsCalloutUnregisterByKey0(&callout_guid);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ continue;
+ }
+ }
+}
+
+
+
+
+extern void windivert_cleanup( WDFFILEOBJECT object)
+{
+ KLOCK_QUEUE_HANDLE lock_handle;
+ PLIST_ENTRY entry;
+ context_t context = windivert_context_get(object);
+ flow_t flow;
+ packet_t work, packet;
+ WDFQUEUE read_queue;
+ WDFWORKITEM worker;
+ LONGLONG timestamp;
+ BOOL sniff_mode, timeout, forward;
+ NTSTATUS status;
+
+ ;
+
+ windivert_reflect_close_event(context);
+ timestamp = KeQueryPerformanceCounter(((void *)0)).QuadPart;
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPENING &&
+ context->state != WINDIVERT_CONTEXT_STATE_OPEN)
+ {
+ windivert_cleanup_error:
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = ((NTSTATUS)0xC0000184L);
+ ;
+ return;
+ }
+ context->state = WINDIVERT_CONTEXT_STATE_CLOSING;
+ sniff_mode = ((context->flags & 0x0001) != 0);
+ forward = (context->layer == WINDIVERT_LAYER_NETWORK_FORWARD);
+ while (!IsListEmpty(&context->flow_set))
+ {
+ entry = RemoveHeadList(&context->flow_set);
+ flow = ((struct flow_s *)( (PCHAR)(entry) - (ULONG_PTR)(&((struct flow_s *)0)->entry)));
+ flow->deleted = 1;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = FwpsFlowRemoveContext0(flow->flow_id, flow->layer_id,
+ flow->callout_id);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ windivert_free(flow);
+ }
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ }
+ while (!IsListEmpty(&context->packet_queue))
+ {
+ entry = RemoveHeadList(&context->packet_queue);
+ packet = ((struct packet_s *)( (PCHAR)(entry) - (ULONG_PTR)(&((struct packet_s *)0)->entry)));
+ context->packet_queue_length--;
+ context->packet_queue_size -= packet->packet_size;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ timeout = (((timestamp) >= (packet->timestamp)? (timestamp) - (packet->timestamp): (packet->timestamp) - (timestamp)) > (context)->packet_queue_maxcounts);
+ if (!sniff_mode && !timeout)
+ {
+ windivert_inject_packet(packet);
+ }
+ else
+ {
+ windivert_free_packet(packet);
+ }
+ timestamp = KeQueryPerformanceCounter(((void *)0)).QuadPart;
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_CLOSING)
+ {
+ goto windivert_cleanup_error;
+ }
+ }
+ while (!IsListEmpty(&context->work_queue))
+ {
+ entry = RemoveHeadList(&context->work_queue);
+ context->work_queue_length--;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ work = ((struct packet_s *)( (PCHAR)(entry) - (ULONG_PTR)(&((struct packet_s *)0)->entry)));
+ timeout = (((timestamp) >= (work->timestamp)? (timestamp) - (work->timestamp): (work->timestamp) - (timestamp)) > (context)->packet_queue_maxcounts);
+ if (!sniff_mode && !timeout)
+ {
+ windivert_inject_packet(work);
+ }
+ else
+ {
+ windivert_free_packet(work);
+ }
+ timestamp = KeQueryPerformanceCounter(((void *)0)).QuadPart;
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_CLOSING)
+ {
+ goto windivert_cleanup_error;
+ }
+ }
+ read_queue = context->read_queue;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ WdfIoQueuePurge(read_queue, ((void *)0), ((void *)0));
+ WdfObjectDelete(read_queue);
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_CLOSING)
+ {
+ goto windivert_cleanup_error;
+ }
+ worker = context->worker;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ WdfWorkItemFlush(worker);
+ WdfObjectDelete(worker);
+}
+
+
+
+
+extern void windivert_close( WDFFILEOBJECT object)
+{
+ KLOCK_QUEUE_HANDLE lock_handle;
+ context_t context = windivert_context_get(object);
+ NTSTATUS status;
+
+ ;
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_CLOSING)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = ((NTSTATUS)0xC0000184L);
+ ;
+ return;
+ }
+ context->state = WINDIVERT_CONTEXT_STATE_CLOSED;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+}
+
+
+
+
+extern void windivert_destroy( WDFOBJECT object)
+{
+ KLOCK_QUEUE_HANDLE lock_handle;
+ context_t context = windivert_context_get((WDFFILEOBJECT)object);
+ const WINDIVERT_FILTER* filter;
+ NTSTATUS status;
+
+ ;
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_CLOSED)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = ((NTSTATUS)0xC0000184L);
+ ;
+ return;
+ }
+ filter = context->filter;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ windivert_uninstall_callouts(context, WINDIVERT_CONTEXT_STATE_CLOSED);
+ if (context->engine_handle != ((void *)0))
+ {
+ FwpmEngineClose0(context->engine_handle);
+ }
+ windivert_free((PVOID)filter);
+ if (context->process != ((void *)0))
+ {
+ ObfDereferenceObject(context->process);
+ }
+}
+
+
+
+
+static NTSTATUS windivert_read(context_t context, WDFREQUEST request)
+{
+ KLOCK_QUEUE_HANDLE lock_handle;
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+
+ ;
+#line 2125 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPEN)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ return ((NTSTATUS)0xC0000184L);
+ }
+ if ((context->flags & 0x0008) != 0)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = ((NTSTATUS)0xC000000DL);
+ ;
+ return status;
+ }
+ status = WdfRequestForwardToIoQueue(request, context->read_queue);
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ return status;
+ }
+
+
+ windivert_read_service(context);
+
+ return ((NTSTATUS)0x00000000L);
+}
+
+
+
+
+static void windivert_read_service_request(context_t context, packet_t packet,
+ LONGLONG timestamp, WDFREQUEST request)
+{
+ KLOCK_QUEUE_HANDLE lock_handle;
+ PLIST_ENTRY entry;
+ PMDL dst_mdl;
+ UINT8* layer_data, * src, * dst;
+ ULONG dst_len, src_len, read_len = 0;
+ BOOL timeout;
+ packet_t new_packet;
+ req_context_t req_context;
+ PWINDIVERT_ADDRESS addr;
+ UINT i, addr_len, addr_len_max;
+ UINT* addr_len_ptr;
+ NTSTATUS status;
+
+ if (request == ((void *)0))
+ {
+
+ windivert_free_packet(packet);
+ return;
+ }
+
+ ;
+#line 2182 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+
+
+ switch (packet->layer)
+ {
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ case WINDIVERT_LAYER_REFLECT:
+
+ status = WdfRequestRetrieveOutputWdmMdl(request, &dst_mdl);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ goto windivert_read_service_request_exit;
+ }
+ dst = MmGetSystemAddressForMdlSafe(dst_mdl,
+ NormalPagePriority | no_exec_flag);
+ if (dst == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000009AL);
+ ;
+ goto windivert_read_service_request_exit;
+ }
+ dst_len = ((dst_mdl)->ByteCount);
+ break;
+
+ case WINDIVERT_LAYER_FLOW:
+ case WINDIVERT_LAYER_SOCKET:
+
+ status = ((NTSTATUS)0x00000000L);
+ dst = ((void *)0);
+ dst_len = 0;
+ break;
+
+ default:
+ status = ((NTSTATUS)0xC0000184L);
+ ;
+ goto windivert_read_service_request_exit;
+ }
+
+ req_context = windivert_req_context_get(request);
+ addr = req_context->addr;
+ addr_len = 0;
+ addr_len_max = (UINT)req_context->addr_len;
+ addr_len_ptr = req_context->addr_len_ptr;
+ i = 0;
+ while (1)
+ {
+
+ switch (packet->layer)
+ {
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ case WINDIVERT_LAYER_REFLECT:
+
+ if (packet->layer != WINDIVERT_LAYER_REFLECT)
+ {
+ src = ((packet)->data + ((((sizeof(WINDIVERT_DATA_NETWORK)) + 8 - 1) / 8) * 8));
+#line 2240 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ }
+ else
+ {
+ src = ((packet)->data + ((((sizeof(WINDIVERT_DATA_REFLECT)) + 8 - 1) / 8) * 8));
+#line 2245 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ }
+ src_len = packet->packet_len;
+ if (src_len > dst_len)
+ {
+ status = ((NTSTATUS)0xC0000023L);
+ }
+ src_len = (src_len < dst_len ? src_len : dst_len);
+ memcpy((dst),(src),(src_len));
+ dst += src_len;
+ dst_len -= src_len;
+ read_len += src_len;
+ break;
+
+ default:
+ break;
+ }
+
+
+ if (addr != ((void *)0))
+ {
+ ;
+#line 2267 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+
+ addr[i].Timestamp = (INT64)packet->timestamp;
+ addr[i].Layer = packet->layer;
+ addr[i].Event = packet->event;
+ addr[i].Sniffed = packet->sniffed;
+ addr[i].Outbound = packet->outbound;
+ addr[i].Loopback = packet->loopback;
+ addr[i].Impostor = packet->impostor;
+ addr[i].IPv6 = packet->ipv6;
+ addr[i].IPChecksum = packet->ip_checksum;
+ addr[i].TCPChecksum = packet->tcp_checksum;
+ addr[i].UDPChecksum = packet->udp_checksum;
+ addr[i].Reserved1 = 0;
+ addr[i].Reserved2 = 0;
+ layer_data = (PVOID)packet->data;
+ switch (packet->layer)
+ {
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ memcpy((&addr[i].Network),(layer_data),(sizeof(WINDIVERT_DATA_NETWORK)));
+#line 2288 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ break;
+
+ case WINDIVERT_LAYER_FLOW:
+ memcpy((&addr[i].Flow),(layer_data),(sizeof(WINDIVERT_DATA_FLOW)));
+#line 2293 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ break;
+
+ case WINDIVERT_LAYER_SOCKET:
+ memcpy((&addr[i].Socket),(layer_data),(sizeof(WINDIVERT_DATA_SOCKET)));
+#line 2298 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ break;
+
+ case WINDIVERT_LAYER_REFLECT:
+ memcpy((&addr[i].Reflect),(layer_data),(sizeof(WINDIVERT_DATA_REFLECT)));
+#line 2303 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ i++;
+ addr_len += sizeof(WINDIVERT_ADDRESS);
+ if (addr_len + sizeof(WINDIVERT_ADDRESS) > addr_len_max ||
+ i >= 0xFF)
+ {
+
+ break;
+ }
+
+
+ new_packet = ((void *)0);
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state == WINDIVERT_CONTEXT_STATE_OPEN &&
+ !IsListEmpty(&context->packet_queue))
+ {
+ entry = RemoveHeadList(&context->packet_queue);
+ new_packet = ((struct packet_s *)( (PCHAR)(entry) - (ULONG_PTR)(&((struct packet_s *)0)->entry)));
+ timeout = (((timestamp) >= (new_packet->timestamp)? (timestamp) - (new_packet->timestamp): (new_packet->timestamp) - (timestamp)) > (context)->packet_queue_maxcounts);
+#line 2329 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ if (new_packet->packet_len > dst_len || timeout)
+ {
+
+ InsertHeadList(&context->packet_queue, entry);
+ new_packet = ((void *)0);
+ }
+ else
+ {
+ context->packet_queue_length--;
+ context->packet_queue_size -= new_packet->packet_size;
+ }
+ }
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ if (new_packet == ((void *)0))
+ {
+
+ break;
+ }
+
+ windivert_free_packet(packet);
+ packet = new_packet;
+ }
+
+ if (addr_len_ptr != ((void *)0))
+ {
+ *addr_len_ptr = addr_len;
+ }
+
+windivert_read_service_request_exit:
+
+ windivert_free_packet(packet);
+ WdfRequestCompleteWithInformation(request, status, read_len);
+}
+
+
+
+
+static void windivert_fast_read_service_request(PVOID packet, ULONG packet_len,
+ PNET_BUFFER_LIST buffers, WINDIVERT_LAYER layer, PVOID layer_data,
+ WINDIVERT_EVENT event, UINT64 flags, BOOL ipv4, BOOL outbound,
+ BOOL loopback, BOOL impostor, LONGLONG timestamp, WDFREQUEST request)
+{
+ PNET_BUFFER buffer;
+ PMDL dst_mdl;
+ UINT dst_len, read_len = 0;
+ UINT8* dst;
+ req_context_t req_context;
+ PWINDIVERT_ADDRESS addr;
+ UINT* addr_len_ptr;
+ NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO checksums;
+ BOOL sniffed, ip_checksum, tcp_checksum, udp_checksum;
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+
+
+
+
+
+ switch (layer)
+ {
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ case WINDIVERT_LAYER_REFLECT:
+
+ status = WdfRequestRetrieveOutputWdmMdl(request, &dst_mdl);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ goto windivert_fast_read_service_request_exit;
+ }
+ dst = MmGetSystemAddressForMdlSafe(dst_mdl,
+ NormalPagePriority | no_exec_flag);
+ if (dst == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000009AL);
+ goto windivert_fast_read_service_request_exit;
+ }
+ dst_len = ((dst_mdl)->ByteCount);
+ break;
+
+ case WINDIVERT_LAYER_FLOW:
+ case WINDIVERT_LAYER_SOCKET:
+ status = ((NTSTATUS)0x00000000L);
+ dst = ((void *)0);
+ dst_len = 0;
+ break;
+
+ default:
+ status = ((NTSTATUS)0xC0000184L);
+ goto windivert_fast_read_service_request_exit;
+ }
+
+ switch (layer)
+ {
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ buffer = (PNET_BUFFER)packet;
+ dst_len = (dst_len < packet_len ? dst_len : packet_len);
+ if (!windivert_copy_data(buffer, dst, dst_len))
+ {
+ status = ((NTSTATUS)0xC000009AL);
+ }
+ else if (dst_len < packet_len)
+ {
+ status = ((NTSTATUS)0xC0000023L);
+ }
+ read_len = dst_len;
+ checksums.Value = ((buffers)->NetBufferListInfo[(TcpIpChecksumNetBufferListInfo)]);
+#line 2436 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ if (outbound)
+ {
+ ip_checksum = (checksums.Transmit.IpHeaderChecksum == 0);
+ tcp_checksum = (checksums.Transmit.TcpChecksum == 0);
+ udp_checksum = (checksums.Transmit.UdpChecksum == 0);
+ }
+ else
+ {
+ ip_checksum = (checksums.Receive.IpChecksumSucceeded == 0);
+ tcp_checksum = (checksums.Receive.TcpChecksumSucceeded == 0);
+ udp_checksum = (checksums.Receive.UdpChecksumSucceeded == 0);
+ }
+ break;
+
+ case WINDIVERT_LAYER_REFLECT:
+ dst_len = (dst_len < packet_len ? dst_len : packet_len);
+ memcpy((dst),(packet),(dst_len));
+ read_len = dst_len;
+ ip_checksum = tcp_checksum = udp_checksum = 0;
+ break;
+
+ default:
+ read_len = 0;
+ ip_checksum = tcp_checksum = udp_checksum = 0;
+ break;
+ }
+
+ req_context = windivert_req_context_get(request);
+ addr = req_context->addr;
+ addr_len_ptr = req_context->addr_len_ptr;
+
+ if (addr != ((void *)0))
+ {
+ sniffed = ((flags & 0x0001) != 0 ||
+ event == WINDIVERT_EVENT_SOCKET_CLOSE);
+
+ addr->Timestamp = timestamp;
+ addr->Layer = layer;
+ addr->Event = event;
+ addr->Sniffed = (sniffed ? 1 : 0);
+ addr->Outbound = (outbound ? 1 : 0);
+ addr->Loopback = (loopback ? 1 : 0);
+ addr->Impostor = (impostor ? 1 : 0);
+ addr->IPv6 = (ipv4 ? 0 : 1);
+ addr->IPChecksum = (ip_checksum ? 1 : 0);
+ addr->TCPChecksum = (tcp_checksum ? 1 : 0);
+ addr->UDPChecksum = (udp_checksum ? 1 : 0);
+ addr->Reserved1 = 0;
+ addr->Reserved2 = 0;
+ switch (layer)
+ {
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ memcpy((&addr->Network),(layer_data),(sizeof(WINDIVERT_DATA_NETWORK)));
+#line 2491 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ break;
+
+ case WINDIVERT_LAYER_FLOW:
+ memcpy((&addr->Flow),(layer_data),(sizeof(WINDIVERT_DATA_FLOW)));
+#line 2496 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ break;
+
+ case WINDIVERT_LAYER_SOCKET:
+ memcpy((&addr->Socket),(layer_data),(sizeof(WINDIVERT_DATA_SOCKET)));
+#line 2501 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ break;
+
+ case WINDIVERT_LAYER_REFLECT:
+ memcpy((&addr->Reflect),(layer_data),(sizeof(WINDIVERT_DATA_REFLECT)));
+#line 2506 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ break;
+
+ default:
+ break;
+ }
+ }
+ if (addr_len_ptr != ((void *)0))
+ {
+ *addr_len_ptr = sizeof(WINDIVERT_ADDRESS);
+ }
+
+windivert_fast_read_service_request_exit:
+
+ WdfRequestCompleteWithInformation(request, status, read_len);
+}
+
+
+
+
+static void windivert_read_service(context_t context)
+{
+ KLOCK_QUEUE_HANDLE lock_handle;
+ WDFREQUEST request;
+ PLIST_ENTRY entry;
+ LONGLONG timestamp;
+ BOOL timeout;
+ NTSTATUS status;
+ packet_t packet;
+
+ timestamp = KeQueryPerformanceCounter(((void *)0)).QuadPart;
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ while (context->state == WINDIVERT_CONTEXT_STATE_OPEN &&
+ !IsListEmpty(&context->packet_queue))
+ {
+ entry = RemoveHeadList(&context->packet_queue);
+ packet = ((struct packet_s *)( (PCHAR)(entry) - (ULONG_PTR)(&((struct packet_s *)0)->entry)));
+ timeout = (((timestamp) >= (packet->timestamp)? (timestamp) - (packet->timestamp): (packet->timestamp) - (timestamp)) > (context)->packet_queue_maxcounts);
+ request = ((void *)0);
+ if (!timeout)
+ {
+ status = WdfIoQueueRetrieveNextRequest(context->read_queue,
+ &request);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ InsertHeadList(&context->packet_queue, entry);
+ break;
+ }
+ }
+ context->packet_queue_length--;
+ context->packet_queue_size -= packet->packet_size;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+ windivert_read_service_request(context, packet, timestamp, request);
+
+ timestamp = KeQueryPerformanceCounter(((void *)0)).QuadPart;
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ }
+
+ if (context->shutdown_recv && context->shutdown_recv_enabled &&
+ IsListEmpty(&context->packet_queue) &&
+ IsListEmpty(&context->work_queue))
+ {
+
+
+ while (context->state == WINDIVERT_CONTEXT_STATE_OPEN)
+ {
+ status = WdfIoQueueRetrieveNextRequest(context->read_queue,
+ &request);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ break;
+ }
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ WdfRequestComplete(request, ((NTSTATUS)0xC00000D9L));
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ }
+ }
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+}
+
+
+
+
+static NTSTATUS windivert_write(context_t context, WDFREQUEST request,
+ req_context_t req_context)
+{
+ KLOCK_QUEUE_HANDLE lock_handle;
+ PMDL mdl = ((void *)0);
+ PVOID data, data_copy;
+ packet_t packet;
+ UINT data_len, packet_len, packet_size, inject_len;
+ PWINDIVERT_DATA_NETWORK network_data;
+ PWINDIVERT_IPHDR ip_header;
+ PWINDIVERT_IPV6HDR ipv6_header;
+ UINT8 layer;
+ UINT32 priority;
+ UINT64 flags, checksums;
+ HANDLE handle;
+ PNET_BUFFER_LIST buffers = ((void *)0);
+ PWINDIVERT_ADDRESS addr;
+ UINT i, addr_len, addr_len_max, version;
+ NTSTATUS status = ((NTSTATUS)0x00000000L), status_soft_error = ((NTSTATUS)0x00000000L);
+
+ ;
+#line 2611 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPEN)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = ((NTSTATUS)0xC0000184L);
+ goto windivert_write_hard_error;
+ }
+ if (context->shutdown_send)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = ((NTSTATUS)0xC00000D9L);
+ goto windivert_write_hard_error;
+ }
+ layer = context->layer;
+ priority = context->priority;
+ flags = context->flags;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+ if ((flags & 0x0004) != 0)
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ ;
+ goto windivert_write_hard_error;
+ }
+
+ switch (layer)
+ {
+ case WINDIVERT_LAYER_FLOW:
+ case WINDIVERT_LAYER_SOCKET:
+ case WINDIVERT_LAYER_REFLECT:
+ status = ((NTSTATUS)0xC000000DL);
+ ;
+ goto windivert_write_hard_error;
+ default:
+ break;
+ }
+
+ status = WdfRequestRetrieveOutputWdmMdl(request, &mdl);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ goto windivert_write_hard_error;
+ }
+
+ data = MmGetSystemAddressForMdlSafe(mdl,
+ NormalPagePriority | no_write_flag | no_exec_flag);
+ if (data == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000009AL);
+ ;
+ goto windivert_write_hard_error;
+ }
+
+ data_len = ((mdl)->ByteCount);
+ inject_len = 0;
+ addr = req_context->addr;
+ addr_len_max = (ULONG)req_context->addr_len;
+ addr_len = 0;
+
+ for (i = 0; addr_len + sizeof(WINDIVERT_ADDRESS) <= addr_len_max &&
+ i < 0xFF;
+ i++, addr_len += sizeof(WINDIVERT_ADDRESS))
+ {
+
+ if (data_len < sizeof(WINDIVERT_IPHDR))
+ {
+ windivert_write_too_small_packet:
+ status = ((NTSTATUS)0xC0000023L);
+ ;
+ goto windivert_write_hard_error;
+ }
+ ip_header = (PWINDIVERT_IPHDR)data;
+ version = ip_header->Version;
+ switch (version)
+ {
+ case 4:
+ packet_len = _byteswap_ushort((USHORT)(ip_header->Length));
+ if (packet_len < sizeof(WINDIVERT_IPHDR))
+ {
+ goto windivert_write_invalid_packet;
+ }
+ break;
+ case 6:
+ if (data_len < sizeof(WINDIVERT_IPV6HDR))
+ {
+ goto windivert_write_too_small_packet;
+ }
+ ipv6_header = (PWINDIVERT_IPV6HDR)data;
+ packet_len = _byteswap_ushort((USHORT)(ipv6_header->Length)) +
+ sizeof(WINDIVERT_IPV6HDR);
+ break;
+ default:
+ windivert_write_invalid_packet:
+ status = ((NTSTATUS)0xC000000DL);
+ ;
+ goto windivert_write_hard_error;
+ }
+ if (data_len < packet_len)
+ {
+ goto windivert_write_too_small_packet;
+ }
+
+
+ packet_size = (sizeof(struct packet_s)-1 + ((((sizeof(WINDIVERT_DATA_NETWORK)) + 8 - 1) / 8) * 8) + (packet_len));
+#line 2717 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ packet = (packet_t)windivert_malloc(packet_size, 0);
+ if (packet == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000009AL);
+ ;
+#line 2723 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ goto windivert_write_hard_error;
+ }
+ packet->layer = layer;
+ packet->event = WINDIVERT_EVENT_NETWORK_PACKET;
+ packet->sniffed = 0;
+ packet->outbound = addr[i].Outbound;
+ packet->loopback = 0;
+ packet->impostor = addr[i].Impostor;
+ packet->ipv6 = (version == 6 ? 1 : 0);
+ packet->ip_checksum = addr[i].IPChecksum;
+ packet->tcp_checksum = addr[i].TCPChecksum;
+ packet->udp_checksum = addr[i].UDPChecksum;
+ packet->icmp_checksum = 1;
+ packet->match = 0;
+ packet->packet_size = packet_size;
+ packet->packet_len = packet_len;
+ packet->priority = priority;
+ packet->timestamp = 0;
+ packet->object = ((void *)0);
+ network_data =
+ (PWINDIVERT_DATA_NETWORK)((packet)->data);
+ memcpy((network_data),(&addr[i].Network),(sizeof(network_data)));
+ data_copy = ((packet)->data + ((((sizeof(WINDIVERT_DATA_NETWORK)) + 8 - 1) / 8) * 8));
+ memcpy((data_copy),(data),(packet_len));
+ switch (version)
+ {
+ case 4:
+ ip_header = (PWINDIVERT_IPHDR)data_copy;
+ if (ip_header->Version != 4 ||
+ packet_len != _byteswap_ushort((USHORT)(ip_header->Length)))
+ {
+ windivert_free(packet);
+ goto windivert_write_invalid_packet;
+ }
+ break;
+ case 6:
+ ipv6_header = (PWINDIVERT_IPV6HDR)data_copy;
+ if (ipv6_header->Version != 6 ||
+ packet_len != _byteswap_ushort((USHORT)(ipv6_header->Length)) +
+ sizeof(WINDIVERT_IPV6HDR))
+ {
+ windivert_free(packet);
+ goto windivert_write_invalid_packet;
+ }
+ break;
+ }
+
+
+ ;
+#line 2773 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+
+
+ status = windivert_inject_packet(packet);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ if (status == ((NTSTATUS)0xC000009AL))
+ {
+ goto windivert_write_hard_error;
+ }
+ status_soft_error = status;
+ }
+
+
+ inject_len += packet_len;
+ data = (PVOID)((UINT8*)data + packet_len);
+ data_len -= packet_len;
+ }
+
+
+
+ WdfRequestCompleteWithInformation(request, status_soft_error, inject_len);
+ return ((NTSTATUS)0x00000000L);
+
+windivert_write_hard_error:
+
+
+ return status;
+}
+
+
+
+
+
+void windivert_caller_context( WDFDEVICE device, WDFREQUEST request)
+{
+ PCHAR inbuf;
+ size_t inbuflen;
+ WDF_REQUEST_PARAMETERS params;
+ WDFMEMORY memobj;
+ PWINDIVERT_ADDRESS addr = ((void *)0);
+ UINT* addr_len_ptr = ((void *)0);
+ UINT64 addr_len = 0;
+ PWINDIVERT_IOCTL ioctl;
+ WDF_OBJECT_ATTRIBUTES attributes;
+ req_context_t req_context = ((void *)0);
+ NTSTATUS status;
+
+ WDF_REQUEST_PARAMETERS_INIT(¶ms);
+ WdfRequestGetParameters(request, ¶ms);
+
+ if (params.Type != WdfRequestTypeDeviceControl)
+ {
+ goto windivert_caller_context_exit;
+ }
+
+
+ status = WdfRequestRetrieveInputBuffer(request, 0, &inbuf, &inbuflen);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ goto windivert_caller_context_error;
+ }
+ if (inbuflen < sizeof(WINDIVERT_IOCTL))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ ;
+ goto windivert_caller_context_error;
+ }
+
+
+ WDF_OBJECT_ATTRIBUTES_INIT(&attributes); (&attributes)->ContextTypeInfo = (&_WDF_req_context_s_TYPE_INFO)->UniqueType;
+ status = WdfObjectAllocateContext(request, &attributes, &req_context);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ goto windivert_caller_context_error;
+ }
+ switch (params.Parameters.DeviceIoControl.IoControlCode)
+ {
+ case ( ((0x00000012) << 16) | ((( 0x0001 )) << 14) | ((0x923) << 2) | (2) ):
+ ioctl = (PWINDIVERT_IOCTL)inbuf;
+ addr = (PWINDIVERT_ADDRESS)(ULONG_PTR)ioctl->recv.addr;
+ addr_len_ptr = (UINT*)(ULONG_PTR)ioctl->recv.addr_len_ptr;
+ addr_len = sizeof(WINDIVERT_ADDRESS);
+ if (addr_len_ptr != ((void *)0))
+ {
+ status = WdfRequestProbeAndLockUserBufferForWrite(request,
+ addr_len_ptr, sizeof(UINT), &memobj);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+#line 2865 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ goto windivert_caller_context_error;
+ }
+ addr_len_ptr = (UINT*)WdfMemoryGetBuffer(memobj, ((void *)0));
+ addr_len = *addr_len_ptr;
+ if (addr_len < sizeof(WINDIVERT_ADDRESS) ||
+ addr_len > 0xFF * sizeof(WINDIVERT_ADDRESS))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ ;
+#line 2875 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ goto windivert_caller_context_error;
+ }
+ if (addr == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ ;
+ goto windivert_caller_context_error;
+ }
+ }
+ if (addr != ((void *)0))
+ {
+ status = WdfRequestProbeAndLockUserBufferForWrite(request,
+ addr, (size_t)addr_len, &memobj);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ goto windivert_caller_context_error;
+ }
+ addr = (PWINDIVERT_ADDRESS)WdfMemoryGetBuffer(memobj, ((void *)0));
+ }
+ break;
+
+ case ( ((0x00000012) << 16) | ((( 0x0001 ) | ( 0x0002 )) << 14) | ((0x924) << 2) | (1) ):
+ ioctl = (PWINDIVERT_IOCTL)inbuf;
+ addr = (PWINDIVERT_ADDRESS)(ULONG_PTR)ioctl->send.addr;
+ addr_len = ioctl->send.addr_len;
+ if (addr_len < sizeof(WINDIVERT_ADDRESS) ||
+ addr_len > 0xFF * sizeof(WINDIVERT_ADDRESS))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ ;
+#line 2907 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ goto windivert_caller_context_error;
+ }
+ if (addr == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ ;
+ goto windivert_caller_context_error;
+ }
+ status = WdfRequestProbeAndLockUserBufferForRead(request, addr,
+ (size_t)addr_len, &memobj);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ goto windivert_caller_context_error;
+ }
+ addr = (PWINDIVERT_ADDRESS)WdfMemoryGetBuffer(memobj, ((void *)0));
+ break;
+
+ case ( ((0x00000012) << 16) | ((( 0x0001 ) | ( 0x0002 )) << 14) | ((0x921) << 2) | (2) ):
+ case ( ((0x00000012) << 16) | ((( 0x0001 ) | ( 0x0002 )) << 14) | ((0x922) << 2) | (1) ):
+ case ( ((0x00000012) << 16) | ((( 0x0001 ) | ( 0x0002 )) << 14) | ((0x927) << 2) | (1) ):
+ case ( ((0x00000012) << 16) | ((( 0x0001 ) | ( 0x0002 )) << 14) | ((0x925) << 2) | (1) ):
+ case ( ((0x00000012) << 16) | ((( 0x0001 )) << 14) | ((0x926) << 2) | (2) ):
+ break;
+
+ default:
+ status = ((NTSTATUS)0xC0000010L);
+ ;
+#line 2936 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ goto windivert_caller_context_error;
+ }
+
+ req_context->addr = addr;
+ req_context->addr_len = (UINT)addr_len;
+ req_context->addr_len_ptr = addr_len_ptr;
+
+windivert_caller_context_exit:
+
+ status = WdfDeviceEnqueueRequest(device, request);
+
+windivert_caller_context_error:
+
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ WdfRequestComplete(request, status);
+ }
+}
+
+
+
+
+extern void windivert_ioctl( WDFQUEUE queue, WDFREQUEST request,
+ size_t out_length, size_t in_length, ULONG code)
+{
+ KLOCK_QUEUE_HANDLE lock_handle;
+ PCHAR inbuf, outbuf;
+ size_t inbuflen, outbuflen, ioctl_filter_len;
+ PWINDIVERT_IOCTL ioctl;
+ const WINDIVERT_FILTER* ioctl_filter, * filter;
+ req_context_t req_context;
+ NTSTATUS status = ((NTSTATUS)0x00000000L);
+ context_t context =
+ windivert_context_get(WdfRequestGetFileObject(request));
+ UINT64* valptr;
+
+ (queue);
+ (out_length);
+ (in_length);
+
+ ;
+
+
+ switch (code)
+ {
+ case ( ((0x00000012) << 16) | ((( 0x0001 ) | ( 0x0002 )) << 14) | ((0x921) << 2) | (2) ):
+ case ( ((0x00000012) << 16) | ((( 0x0001 ) | ( 0x0002 )) << 14) | ((0x922) << 2) | (1) ):
+ case ( ((0x00000012) << 16) | ((( 0x0001 ) | ( 0x0002 )) << 14) | ((0x927) << 2) | (1) ):
+ case ( ((0x00000012) << 16) | ((( 0x0001 ) | ( 0x0002 )) << 14) | ((0x925) << 2) | (1) ):
+ case ( ((0x00000012) << 16) | ((( 0x0001 )) << 14) | ((0x926) << 2) | (2) ):
+ status = WdfRequestRetrieveInputBuffer(request, 0, &inbuf,
+ &inbuflen);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ goto windivert_ioctl_exit;
+ }
+ if (inbuflen < sizeof(WINDIVERT_IOCTL))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ ;
+ goto windivert_ioctl_exit;
+ }
+ break;
+ default:
+ inbuf = ((void *)0);
+ inbuflen = 0;
+ break;
+ }
+ switch (code)
+ {
+ case ( ((0x00000012) << 16) | ((( 0x0001 ) | ( 0x0002 )) << 14) | ((0x921) << 2) | (2) ):
+ case ( ((0x00000012) << 16) | ((( 0x0001 ) | ( 0x0002 )) << 14) | ((0x922) << 2) | (1) ):
+ case ( ((0x00000012) << 16) | ((( 0x0001 )) << 14) | ((0x926) << 2) | (2) ):
+ status = WdfRequestRetrieveOutputBuffer(request, 0, &outbuf,
+ &outbuflen);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ goto windivert_ioctl_exit;
+ }
+ break;
+ default:
+ outbuf = ((void *)0);
+ outbuflen = 0;
+ break;
+ }
+
+
+ switch (code)
+ {
+ case ( ((0x00000012) << 16) | ((( 0x0001 )) << 14) | ((0x923) << 2) | (2) ):
+ status = windivert_read(context, request);
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ return;
+ }
+ break;
+
+ case ( ((0x00000012) << 16) | ((( 0x0001 ) | ( 0x0002 )) << 14) | ((0x924) << 2) | (1) ):
+
+ req_context = windivert_req_context_get(request);
+ status = windivert_write(context, request, req_context);
+ if ((((NTSTATUS)(status)) >= 0))
+ {
+ return;
+ }
+ break;
+
+ case ( ((0x00000012) << 16) | ((( 0x0001 ) | ( 0x0002 )) << 14) | ((0x921) << 2) | (2) ):
+ {
+ PWINDIVERT_VERSION version;
+ WINDIVERT_LAYER layer;
+ UINT32 priority;
+ UINT64 flags;
+ INT16 priority16;
+
+ ioctl = (PWINDIVERT_IOCTL)inbuf;
+ version = (WINDIVERT_VERSION*)outbuf;
+ if (outbuflen != sizeof(WINDIVERT_VERSION) ||
+ version->magic != 0x4C4C447669645724ull ||
+ version->major < 2 ||
+ (version->bits != 8 * sizeof(UINT32) &&
+ version->bits != 8 * sizeof(UINT64)))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ ;
+#line 3065 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ goto windivert_ioctl_exit;
+ }
+
+ layer = (WINDIVERT_LAYER)ioctl->initialize.layer;
+ priority = ioctl->initialize.priority;
+ flags = ioctl->initialize.flags;
+ version->magic = 0x5359537669645723ull;
+ version->major = 2;
+ version->minor = 2;
+ version->bits = 8 * sizeof(void*);
+
+ switch ((UINT32)layer)
+ {
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ case WINDIVERT_LAYER_FLOW:
+ case WINDIVERT_LAYER_SOCKET:
+ case WINDIVERT_LAYER_REFLECT:
+ break;
+ default:
+ status = ((NTSTATUS)0xC000000DL);
+ ;
+ goto windivert_ioctl_exit;
+ }
+
+ if (priority > 2 * 30000)
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ ;
+#line 3095 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ goto windivert_ioctl_exit;
+ }
+ priority16 = (INT16)priority - 30000;
+ priority = windivert_context_priority(priority);
+
+ if (!((((flags) & ~(0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020)) == 0) && (((flags) & ((0x0001) | (0x0002))) != ((0x0001) | (0x0002))) && (((flags) & ((0x0004) | (0x0008))) != ((0x0004) | (0x0008)))))
+ {
+ windivert_ioctl_bad_flags:
+ status = ((NTSTATUS)0xC000000DL);
+ ;
+#line 3106 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ goto windivert_ioctl_exit;
+ }
+ switch ((UINT32)layer)
+ {
+ case WINDIVERT_LAYER_FLOW:
+ case WINDIVERT_LAYER_REFLECT:
+ if ((flags & 0x0001) == 0 ||
+ (flags & 0x0004) == 0)
+ {
+ goto windivert_ioctl_bad_flags;
+ }
+ break;
+
+ case WINDIVERT_LAYER_SOCKET:
+ if ((flags & 0x0004) == 0)
+ {
+ goto windivert_ioctl_bad_flags;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPENING ||
+ context->initialized)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = ((NTSTATUS)0xC0000184L);
+ goto windivert_ioctl_exit;
+ }
+ context->layer = (WINDIVERT_LAYER)layer;
+ context->priority16 = priority16;
+ context->priority = priority;
+ context->flags = flags;
+ context->initialized = 1;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+ break;
+ }
+
+ case ( ((0x00000012) << 16) | ((( 0x0001 ) | ( 0x0002 )) << 14) | ((0x922) << 2) | (1) ):
+ {
+ PEPROCESS process;
+ LONGLONG timestamp;
+ UINT64 filter_flags;
+ UINT32 process_id;
+ WINDIVERT_LAYER layer;
+ UINT8 filter_len;
+ WDFDEVICE device;
+
+ ioctl = (PWINDIVERT_IOCTL)inbuf;
+ filter_flags = ioctl->startup.flags;
+ if ((filter_flags & ~(0x0000000000000010ull | 0x0000000000000020ull | 0x0000000000000040ull | 0x0000000000000080ull | 0x0000000000000100ull | 0x0000000000000200ull | 0x0000000000000400ull | 0x0000000000000800ull | 0x0000000000001000ull | 0x0000000000002000ull)) != 0)
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ ;
+ goto windivert_ioctl_exit;
+ }
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPENING ||
+ !context->initialized)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = ((NTSTATUS)0xC0000184L);
+ goto windivert_ioctl_exit;
+ }
+ context->state = WINDIVERT_CONTEXT_STATE_OPEN;
+ layer = context->layer;
+ process = context->process;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+ ioctl_filter = (const WINDIVERT_FILTER*)outbuf;
+ ioctl_filter_len = outbuflen;
+ filter = windivert_filter_compile(ioctl_filter, ioctl_filter_len,
+ layer);
+ if (filter == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ ;
+ goto windivert_ioctl_exit;
+ }
+ filter_len = (UINT8)(ioctl_filter_len / sizeof(WINDIVERT_FILTER));
+ process_id = (UINT32)(ULONG_PTR)PsGetProcessId(process);
+ timestamp = KeQueryPerformanceCounter(((void *)0)).QuadPart;
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPEN)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ windivert_free((PVOID)filter);
+ status = ((NTSTATUS)0xC0000184L);
+ goto windivert_ioctl_exit;
+ }
+ context->filter = filter;
+ context->filter_len = filter_len;
+ context->filter_flags = filter_flags;
+ context->reflect.data.Timestamp = timestamp;
+ context->reflect.data.ProcessId = process_id;
+ context->reflect.data.Layer = context->layer;
+ context->reflect.data.Flags = context->flags;
+ context->reflect.data.Priority = context->priority16;
+ context->reflect.open = 0;
+ context->shutdown_recv_enabled =
+ (layer != WINDIVERT_LAYER_REFLECT);
+ device = context->device;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+ if (_InterlockedIncrement64(&num_opens) == 1)
+ {
+ PDRIVER_OBJECT driver = WdfDriverWdmGetDriverObject(
+ WdfDeviceGetDriver(device));
+ windivert_log_event(process, driver, L"LOAD");
+ }
+ windivert_reflect_open_event(context);
+
+ status = windivert_install_callouts(context, layer, filter_flags);
+
+ break;
+ }
+
+ case ( ((0x00000012) << 16) | ((( 0x0001 ) | ( 0x0002 )) << 14) | ((0x927) << 2) | (1) ):
+ {
+ WINDIVERT_SHUTDOWN how;
+
+ ioctl = (PWINDIVERT_IOCTL)inbuf;
+ how = (WINDIVERT_SHUTDOWN)ioctl->shutdown.how;
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPEN)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = ((NTSTATUS)0xC0000184L);
+ goto windivert_ioctl_exit;
+ }
+ switch ((UINT32)how)
+ {
+ case WINDIVERT_SHUTDOWN_RECV:
+ context->shutdown_recv = 1;
+ break;
+ case WINDIVERT_SHUTDOWN_SEND:
+ context->shutdown_send = 1;
+ break;
+ case WINDIVERT_SHUTDOWN_BOTH:
+ context->shutdown_recv = context->shutdown_send = 1;
+ break;
+ default:
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = ((NTSTATUS)0xC000000DL);
+ ;
+#line 3258 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ goto windivert_ioctl_exit;
+ }
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ windivert_read_service(context);
+ break;
+ }
+
+ case ( ((0x00000012) << 16) | ((( 0x0001 ) | ( 0x0002 )) << 14) | ((0x925) << 2) | (1) ):
+ {
+ WINDIVERT_PARAM param;
+ UINT64 value;
+
+ ioctl = (PWINDIVERT_IOCTL)inbuf;
+ param = (WINDIVERT_PARAM)ioctl->set_param.param;
+ value = ioctl->set_param.val;
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPEN)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = ((NTSTATUS)0xC0000184L);
+ goto windivert_ioctl_exit;
+ }
+ switch ((UINT32)param)
+ {
+ case WINDIVERT_PARAM_QUEUE_LENGTH:
+ if (value < 32 ||
+ value > 16384)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = ((NTSTATUS)0xC000000DL);
+ ;
+#line 3290 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ goto windivert_ioctl_exit;
+ }
+ context->packet_queue_maxlength = (ULONG)value;
+ break;
+
+ case WINDIVERT_PARAM_QUEUE_TIME:
+ if (value < 100 ||
+ value > 16000)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = ((NTSTATUS)0xC000000DL);
+ ;
+#line 3303 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ goto windivert_ioctl_exit;
+ }
+ context->packet_queue_maxcounts =
+ (LONGLONG)value * counts_per_ms;
+ context->packet_queue_maxtime = (ULONG)value;
+ break;
+
+ case WINDIVERT_PARAM_QUEUE_SIZE:
+ if (value < 65535 ||
+ value > 33554432)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = ((NTSTATUS)0xC000000DL);
+ ;
+#line 3318 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ goto windivert_ioctl_exit;
+ }
+ context->packet_queue_maxsize = (ULONG)value;
+ break;
+
+ default:
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = ((NTSTATUS)0xC000000DL);
+ ;
+#line 3328 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ goto windivert_ioctl_exit;
+ }
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ break;
+ }
+
+ case ( ((0x00000012) << 16) | ((( 0x0001 )) << 14) | ((0x926) << 2) | (2) ):
+ {
+ WINDIVERT_PARAM param;
+
+ ioctl = (PWINDIVERT_IOCTL)inbuf;
+ param = (WINDIVERT_PARAM)ioctl->get_param.param;
+ if (outbuflen != sizeof(UINT64))
+ {
+ status = ((NTSTATUS)0xC000000DL);
+ ;
+#line 3345 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ goto windivert_ioctl_exit;
+ }
+ valptr = (UINT64*)outbuf;
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPEN)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = ((NTSTATUS)0xC0000184L);
+ goto windivert_ioctl_exit;
+ }
+ switch ((UINT32)param)
+ {
+ case WINDIVERT_PARAM_QUEUE_LENGTH:
+ *valptr = context->packet_queue_maxlength;
+ break;
+ case WINDIVERT_PARAM_QUEUE_TIME:
+ *valptr = context->packet_queue_maxtime;
+ break;
+ case WINDIVERT_PARAM_QUEUE_SIZE:
+ *valptr = context->packet_queue_maxsize;
+ break;
+ case WINDIVERT_PARAM_VERSION_MAJOR:
+ *valptr = 2;
+ break;
+ case WINDIVERT_PARAM_VERSION_MINOR:
+ *valptr = 2;
+ break;
+ default:
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = ((NTSTATUS)0xC000000DL);
+ ;
+#line 3377 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ goto windivert_ioctl_exit;
+ }
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ break;
+ }
+
+ default:
+ status = ((NTSTATUS)0xC0000010L);
+ ;
+#line 3387 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ break;
+ }
+
+windivert_ioctl_exit:
+ WdfRequestComplete(request, status);
+}
+
+
+
+
+static NTSTATUS windivert_notify( FWPS_CALLOUT_NOTIFY_TYPE type,
+ const GUID* filter_key, const FWPS_FILTER0* filter)
+{
+ (type);
+ (filter_key);
+ (filter);
+ return ((NTSTATUS)0x00000000L);
+}
+
+
+
+
+static UINT8 windivert_get_val8(const FWPS_INCOMING_VALUES0* fixed_vals,
+ int idx)
+{
+ FWP_VALUE0 value = fixed_vals->incomingValue[idx].value;
+ return (value.type != FWP_UINT8 ? 0 : value.uint8);
+}
+static UINT16 windivert_get_val16(const FWPS_INCOMING_VALUES0* fixed_vals,
+ int idx)
+{
+ FWP_VALUE0 value = fixed_vals->incomingValue[idx].value;
+ return (value.type != FWP_UINT16 ? 0 : value.uint16);
+}
+static UINT32 windivert_get_val32(const FWPS_INCOMING_VALUES0* fixed_vals,
+ int idx)
+{
+ FWP_VALUE0 value = fixed_vals->incomingValue[idx].value;
+ return (value.type != FWP_UINT32 ? 0 : value.uint32);
+}
+static void windivert_get_ipv4_addr(const FWPS_INCOMING_VALUES0* fixed_vals,
+ int idx, UINT32* addr)
+{
+ FWP_VALUE0 value = fixed_vals->incomingValue[idx].value;
+ addr[2] = addr[3] = 0;
+ if (value.type != FWP_UINT32)
+ {
+ addr[0] = addr[1] = 0;
+ }
+ else
+ {
+ addr[0] = value.uint32;
+ addr[1] = 0x0000FFFF;
+ }
+}
+static void windivert_get_ipv6_addr(const FWPS_INCOMING_VALUES0* fixed_vals,
+ int idx, UINT32* addr)
+{
+ UINT8* addr8 = (UINT8*)addr;
+ INT i;
+ FWP_VALUE0 value = fixed_vals->incomingValue[idx].value;
+ if (value.type != FWP_BYTE_ARRAY16_TYPE)
+ {
+ addr[0] = addr[1] = addr[2] = addr[3] = 0;
+ return;
+ }
+ for (i = 16 - 1; i >= 0; i--)
+ {
+ addr8[16 - i - 1] = value.byteArray16->byteArray16[i];
+ }
+}
+
+
+
+
+static void windivert_outbound_network_v4_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result)
+{
+ WINDIVERT_DATA_NETWORK network_data;
+ BOOL loopback;
+ context_t context = (context_t)(ULONG_PTR)filter->context;
+
+ (meta_vals);
+ (data);
+ (flow_context);
+
+ if ((result->rights & (0x00000001)) == 0 || data == ((void *)0))
+ {
+ return;
+ }
+
+ network_data.IfIdx = windivert_get_val32(fixed_vals,
+ FWPS_FIELD_OUTBOUND_IPPACKET_V4_INTERFACE_INDEX);
+ network_data.SubIfIdx = windivert_get_val32(fixed_vals,
+ FWPS_FIELD_OUTBOUND_IPPACKET_V4_SUB_INTERFACE_INDEX);
+ loopback = ((windivert_get_val32(fixed_vals,
+ FWPS_FIELD_OUTBOUND_IPPACKET_V4_FLAGS) &
+ (0x00000001)) != 0);
+
+ windivert_network_classify(context, &network_data, 1,
+ 1, loopback, 0, 0,
+ data, result);
+}
+
+
+
+
+static void windivert_outbound_network_v6_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result)
+{
+ WINDIVERT_DATA_NETWORK network_data;
+ BOOL loopback;
+ context_t context = (context_t)(ULONG_PTR)filter->context;
+
+ (meta_vals);
+ (data);
+ (flow_context);
+
+ if ((result->rights & (0x00000001)) == 0 || data == ((void *)0))
+ {
+ return;
+ }
+
+ network_data.IfIdx = windivert_get_val32(fixed_vals,
+ FWPS_FIELD_OUTBOUND_IPPACKET_V6_INTERFACE_INDEX);
+ network_data.SubIfIdx = windivert_get_val32(fixed_vals,
+ FWPS_FIELD_OUTBOUND_IPPACKET_V6_SUB_INTERFACE_INDEX);
+ loopback = ((windivert_get_val32(fixed_vals,
+ FWPS_FIELD_OUTBOUND_IPPACKET_V6_FLAGS) &
+ (0x00000001)) != 0);
+
+ windivert_network_classify(context, &network_data, 0,
+ 1, loopback, 0, 0,
+ data, result);
+}
+
+
+
+
+static void windivert_inbound_network_v4_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result)
+{
+ WINDIVERT_DATA_NETWORK network_data;
+ UINT advance;
+ UINT32 flags;
+ BOOL fragment, loopback, reassembled;
+ context_t context = (context_t)(ULONG_PTR)filter->context;
+
+ (data);
+ (flow_context);
+
+ if ((result->rights & (0x00000001)) == 0 || data == ((void *)0))
+ {
+ return;
+ }
+
+ flags = windivert_get_val32(fixed_vals,
+ FWPS_FIELD_INBOUND_IPPACKET_V4_FLAGS);
+ fragment = ((flags & (0x00000020)) != 0);
+ if (fragment)
+ {
+ result->actionType = (0x00000006 | (0x00002000));
+ return;
+ }
+ loopback = ((flags & (0x00000001)) != 0);
+ if (loopback)
+ {
+ result->actionType = (0x00000006 | (0x00002000));
+ return;
+ }
+ reassembled = ((flags & (0x00000400)) != 0);
+
+ network_data.IfIdx = windivert_get_val32(fixed_vals,
+ FWPS_FIELD_INBOUND_IPPACKET_V4_INTERFACE_INDEX);
+ network_data.SubIfIdx = windivert_get_val32(fixed_vals,
+ FWPS_FIELD_INBOUND_IPPACKET_V4_SUB_INTERFACE_INDEX);
+ advance = meta_vals->ipHeaderSize;
+
+ windivert_network_classify(context, &network_data, 1,
+ 0, loopback, reassembled, advance, data, result);
+}
+
+
+
+
+static void windivert_inbound_network_v6_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result)
+{
+ WINDIVERT_DATA_NETWORK network_data;
+ UINT advance;
+ UINT32 flags;
+ BOOL fragment, loopback, reassembled;
+ context_t context = (context_t)(ULONG_PTR)filter->context;
+
+ (data);
+ (flow_context);
+
+ if ((result->rights & (0x00000001)) == 0 || data == ((void *)0))
+ {
+ return;
+ }
+
+ flags = windivert_get_val32(fixed_vals,
+ FWPS_FIELD_INBOUND_IPPACKET_V6_FLAGS);
+ fragment = ((flags & (0x00000020)) != 0);
+ if (fragment)
+ {
+ result->actionType = (0x00000006 | (0x00002000));
+ return;
+ }
+ loopback = ((flags & (0x00000001)) != 0);
+ if (loopback)
+ {
+ result->actionType = (0x00000006 | (0x00002000));
+ return;
+ }
+ reassembled = ((flags & (0x00000400)) != 0);
+
+ network_data.IfIdx = windivert_get_val32(fixed_vals,
+ FWPS_FIELD_INBOUND_IPPACKET_V6_INTERFACE_INDEX);
+ network_data.SubIfIdx = windivert_get_val32(fixed_vals,
+ FWPS_FIELD_INBOUND_IPPACKET_V6_SUB_INTERFACE_INDEX);
+ advance = meta_vals->ipHeaderSize;
+
+ windivert_network_classify(context, &network_data, 0,
+ 0, loopback, reassembled, advance, data, result);
+}
+
+
+
+
+static void windivert_forward_network_v4_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result)
+{
+ WINDIVERT_DATA_NETWORK network_data;
+ UINT32 flags;
+ BOOL group;
+ context_t context = (context_t)(ULONG_PTR)filter->context;
+
+ (meta_vals);
+ (data);
+ (flow_context);
+
+ if ((result->rights & (0x00000001)) == 0 || data == ((void *)0))
+ {
+ return;
+ }
+ flags = windivert_get_val32(fixed_vals, FWPS_FIELD_IPFORWARD_V4_FLAGS);
+ group = ((flags & (0x00000040)) != 0);
+ if (group)
+ {
+ result->actionType = (0x00000006 | (0x00002000));
+ return;
+ }
+
+ network_data.IfIdx = windivert_get_val32(fixed_vals,
+ FWPS_FIELD_IPFORWARD_V4_DESTINATION_INTERFACE_INDEX);
+ network_data.SubIfIdx = 0;
+
+ windivert_network_classify(context, &network_data, 1,
+ 1, 0, 0,
+ 0, data, result);
+}
+
+
+
+
+static void windivert_forward_network_v6_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result)
+{
+ WINDIVERT_DATA_NETWORK network_data;
+ UINT32 flags;
+ BOOL group;
+ context_t context = (context_t)(ULONG_PTR)filter->context;
+
+ (meta_vals);
+ (data);
+ (flow_context);
+
+ if ((result->rights & (0x00000001)) == 0 || data == ((void *)0))
+ {
+ return;
+ }
+ flags = windivert_get_val32(fixed_vals, FWPS_FIELD_IPFORWARD_V6_FLAGS);
+ group = ((flags & (0x00000040)) != 0);
+ if (group)
+ {
+ result->actionType = (0x00000006 | (0x00002000));
+ return;
+ }
+
+ network_data.IfIdx = windivert_get_val32(fixed_vals,
+ FWPS_FIELD_IPFORWARD_V6_DESTINATION_INTERFACE_INDEX);
+ network_data.SubIfIdx = 0;
+
+ windivert_network_classify(context, &network_data, 0,
+ 1, 0, 0,
+ 0, data, result);
+}
+
+
+
+
+static void windivert_network_classify(context_t context,
+ PWINDIVERT_DATA_NETWORK network_data, BOOL ipv4, BOOL outbound,
+ BOOL loopback, BOOL reassembled, UINT advance, void* data,
+ FWPS_CLASSIFY_OUT0* result)
+{
+ KLOCK_QUEUE_HANDLE lock_handle;
+ FWPS_PACKET_INJECTION_STATE packet_state;
+ HANDLE packet_context;
+ UINT32 priority, packet_priority;
+ UINT64 flags;
+ WINDIVERT_LAYER layer;
+ PNET_BUFFER_LIST buffers;
+ PNET_BUFFER buffer, buffer_fst, buffer_itr;
+ BOOL impostor, sniff_mode, frag_mode, ok;
+ WDFOBJECT object;
+ const WINDIVERT_FILTER* filter;
+ LONGLONG timestamp;
+ NTSTATUS status;
+
+ result->actionType = (0x00000006 | (0x00002000));
+ buffers = (PNET_BUFFER_LIST)data;
+ buffer = ((buffers)->FirstNetBuffer);
+ if (((buffers)->Next) != ((void *)0))
+ {
+
+
+ return;
+ }
+ if (ipv4)
+ {
+ if (context->layer == WINDIVERT_LAYER_NETWORK_FORWARD)
+ {
+ packet_state = FwpsQueryPacketInjectionState0(inject_handle_forward,
+ buffers, &packet_context);
+ }
+ else if (outbound)
+ {
+ packet_state = FwpsQueryPacketInjectionState0(inject_handle_out,
+ buffers, &packet_context);
+ }
+ else
+ {
+ packet_state = FwpsQueryPacketInjectionState0(inject_handle_in,
+ buffers, &packet_context);
+ }
+ }
+ else
+ {
+ if (context->layer == WINDIVERT_LAYER_NETWORK_FORWARD)
+ {
+ packet_state = FwpsQueryPacketInjectionState0(
+ injectv6_handle_forward, buffers, &packet_context);
+ }
+ else if (outbound)
+ {
+ packet_state = FwpsQueryPacketInjectionState0(injectv6_handle_out,
+ buffers, &packet_context);
+ }
+ else
+ {
+ packet_state = FwpsQueryPacketInjectionState0(injectv6_handle_in,
+ buffers, &packet_context);
+ }
+ }
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPEN ||
+ context->shutdown_recv)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ return;
+ }
+ flags = context->flags;
+ priority = context->priority;
+ filter = context->filter;
+ layer = context->layer;
+ object = (WDFOBJECT)context->object;
+ WdfObjectReferenceActual(object, ((void *)0), 3785, "E:\\Unity\\WinDivert\\sys\\windivert.c");
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+ impostor = 0;
+ if (packet_state == FWPS_PACKET_INJECTED_BY_SELF ||
+ packet_state == FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF)
+ {
+ packet_priority = (UINT32)(ULONG_PTR)packet_context;
+ if (packet_priority <= priority)
+ {
+ WdfObjectDereferenceActual(object, ((void *)0), 3795, "E:\\Unity\\WinDivert\\sys\\windivert.c");
+ return;
+ }
+ }
+ else if (packet_state == FWPS_PACKET_INJECTED_BY_OTHER)
+ {
+
+
+
+ impostor = 1;
+ }
+
+
+ timestamp = KeQueryPerformanceCounter(((void *)0)).QuadPart;
+
+
+ frag_mode =
+ (outbound || layer == WINDIVERT_LAYER_NETWORK_FORWARD ? 1 :
+ (flags & 0x0020) != 0);
+ if (frag_mode && reassembled)
+ {
+ WdfObjectDereferenceActual(object, ((void *)0), 3816, "E:\\Unity\\WinDivert\\sys\\windivert.c");
+ return;
+ }
+
+
+
+
+ if (advance != 0)
+ {
+ status = NdisRetreatNetBufferDataStart(buffer, advance, 0, ((void *)0));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ WdfObjectDereferenceActual(object, ((void *)0), 3828, "E:\\Unity\\WinDivert\\sys\\windivert.c");
+ return;
+ }
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+ buffer_fst = buffer;
+ do
+ {
+ BOOL match = windivert_filter(buffer_fst, layer, (PVOID)network_data,
+ timestamp, WINDIVERT_EVENT_NETWORK_PACKET, ipv4,
+ outbound, loopback, impostor, frag_mode, filter);
+ if (match)
+ {
+ break;
+ }
+ buffer_fst = ((buffer_fst)->Next);
+ } while (buffer_fst != ((void *)0));
+
+
+ if (buffer_fst == ((void *)0))
+ {
+ WdfObjectDereferenceActual(object, ((void *)0), 3860, "E:\\Unity\\WinDivert\\sys\\windivert.c");
+ if (advance != 0)
+ {
+ NdisAdvanceNetBufferDataStart(buffer, advance, 0, ((void *)0));
+ }
+ return;
+ }
+
+
+
+
+
+ buffer_itr = buffer;
+ sniff_mode = ((flags & 0x0001) != 0);
+ while (!sniff_mode && buffer_itr != buffer_fst)
+ {
+ ok = windivert_queue_work(context, (PVOID)buffer_itr,
+ ((buffer_itr)->DataLength), buffers, ((void *)0), layer,
+ (PVOID)network_data, WINDIVERT_EVENT_NETWORK_PACKET,
+ flags, priority, ipv4, outbound, loopback, impostor,
+ 0, timestamp);
+ if (!ok)
+ {
+ goto windivert_network_classify_exit;
+ }
+ buffer_itr = ((buffer_itr)->Next);
+ }
+
+
+ ok = windivert_queue_work(context, (PVOID)buffer_itr,
+ ((buffer_itr)->DataLength), buffers, ((void *)0), layer,
+ (PVOID)network_data, WINDIVERT_EVENT_NETWORK_PACKET,
+ flags, priority, ipv4, outbound, loopback, impostor, 1,
+ timestamp);
+ if (advance != 0)
+ {
+
+
+
+
+ NdisAdvanceNetBufferDataStart(buffer, advance, 0, ((void *)0));
+ }
+ if (!ok)
+ {
+ goto windivert_network_classify_exit;
+ }
+
+
+ buffer_itr = ((buffer_fst)->Next);
+ while (buffer_itr != ((void *)0))
+ {
+ BOOL match = windivert_filter(buffer_itr, layer, (PVOID)network_data,
+ timestamp, WINDIVERT_EVENT_NETWORK_PACKET, ipv4,
+ outbound, loopback, impostor, frag_mode, filter);
+ ok = windivert_queue_work(context, (PVOID)buffer_itr,
+ ((buffer_itr)->DataLength), buffers, ((void *)0), layer,
+ (PVOID)network_data, WINDIVERT_EVENT_NETWORK_PACKET,
+ flags, priority, ipv4, outbound, loopback, impostor, match,
+ timestamp);
+ if (!ok)
+ {
+ goto windivert_network_classify_exit;
+ }
+ buffer_itr = ((buffer_itr)->Next);
+ }
+
+windivert_network_classify_exit:
+
+ WdfObjectDereferenceActual(object, ((void *)0), 3928, "E:\\Unity\\WinDivert\\sys\\windivert.c");
+ if (!sniff_mode)
+ {
+ result->actionType = (0x00000001 | (0x00001000));
+ result->flags |= (0x00000001);
+ result->rights &= ~(0x00000001);
+ }
+}
+
+
+
+
+static void windivert_flow_established_v4_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result)
+{
+ WINDIVERT_DATA_FLOW flow_data;
+ BOOL outbound, loopback;
+ UINT64 flow_id;
+ context_t context = (context_t)(ULONG_PTR)filter->context;
+
+ (data);
+ (flow_context);
+
+ flow_data.EndpointId = meta_vals->transportEndpointHandle;
+ flow_data.ParentEndpointId = meta_vals->parentEndpointHandle;
+ flow_data.ProcessId = (UINT32)meta_vals->processId;
+ windivert_get_ipv4_addr(fixed_vals,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_LOCAL_ADDRESS,
+ flow_data.LocalAddr);
+ windivert_get_ipv4_addr(fixed_vals,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_REMOTE_ADDRESS,
+ flow_data.RemoteAddr);
+ flow_data.LocalPort = windivert_get_val16(fixed_vals,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_LOCAL_PORT);
+ flow_data.RemotePort = windivert_get_val16(fixed_vals,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_REMOTE_PORT);
+ flow_data.Protocol = windivert_get_val8(fixed_vals,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_PROTOCOL);
+
+ outbound = (windivert_get_val32(fixed_vals,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_DIRECTION) ==
+ FWP_DIRECTION_OUTBOUND);
+ loopback = ((windivert_get_val32(fixed_vals,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_FLAGS) &
+ (0x00000001)) != 0);
+ flow_id = meta_vals->flowHandle;
+
+ windivert_flow_established_classify(context, flow_id, &flow_data,
+ 1, outbound, loopback, result);
+}
+
+
+
+
+static void windivert_flow_established_v6_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result)
+{
+ WINDIVERT_DATA_FLOW flow_data;
+ BOOL outbound, loopback;
+ UINT64 flow_id;
+ context_t context = (context_t)(ULONG_PTR)filter->context;
+
+ (data);
+ (flow_context);
+
+ flow_data.EndpointId = meta_vals->transportEndpointHandle;
+ flow_data.ParentEndpointId = meta_vals->parentEndpointHandle;
+ flow_data.ProcessId = (UINT32)meta_vals->processId;
+ windivert_get_ipv6_addr(fixed_vals,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_IP_LOCAL_ADDRESS,
+ flow_data.LocalAddr);
+ windivert_get_ipv6_addr(fixed_vals,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_IP_REMOTE_ADDRESS,
+ flow_data.RemoteAddr);
+ flow_data.LocalPort = windivert_get_val16(fixed_vals,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_IP_LOCAL_PORT);
+ flow_data.RemotePort = windivert_get_val16(fixed_vals,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_IP_REMOTE_PORT);
+ flow_data.Protocol = windivert_get_val8(fixed_vals,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_IP_PROTOCOL);
+
+ outbound = (windivert_get_val32(fixed_vals,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_DIRECTION) ==
+ FWP_DIRECTION_OUTBOUND);
+ loopback = ((windivert_get_val32(fixed_vals,
+ FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_FLAGS) &
+ (0x00000001)) != 0);
+ flow_id = meta_vals->flowHandle;
+
+ windivert_flow_established_classify(context, flow_id, &flow_data,
+ 0, outbound, loopback, result);
+}
+
+
+
+
+static void windivert_flow_established_classify(context_t context,
+ UINT64 flow_id, PWINDIVERT_DATA_FLOW flow_data, BOOL ipv4,
+ BOOL outbound, BOOL loopback, FWPS_CLASSIFY_OUT0* result)
+{
+ KLOCK_QUEUE_HANDLE lock_handle;
+ UINT64 flags, filter_flags;
+ UINT32 callout_id;
+ UINT16 layer_id;
+ BOOL match, ok;
+ WDFOBJECT object;
+ const WINDIVERT_FILTER* filter;
+ LONGLONG timestamp;
+ flow_t flow;
+ NTSTATUS status;
+
+
+ if (!(result->rights & (0x00000001)))
+ {
+ return;
+ }
+
+
+ timestamp = KeQueryPerformanceCounter(((void *)0)).QuadPart;
+
+ result->actionType = (0x00000006 | (0x00002000));
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPEN ||
+ context->shutdown_recv)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ return;
+ }
+ filter = context->filter;
+ flags = context->flags;
+ filter_flags = context->filter_flags;
+ callout_id = (ipv4 ? context->flow_v4_callout_id :
+ context->flow_v6_callout_id);
+ object = (WDFOBJECT)context->object;
+
+
+
+
+ WdfObjectReferenceActual(object, ((void *)0), 4073, "E:\\Unity\\WinDivert\\sys\\windivert.c");
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+ match = windivert_filter(((void *)0), WINDIVERT_LAYER_FLOW,
+ (PVOID)flow_data, timestamp,
+ WINDIVERT_EVENT_FLOW_ESTABLISHED, ipv4, outbound, loopback,
+ 0, 0, filter);
+ if (match)
+ {
+ ok = windivert_queue_work(context, ((void *)0), 0,
+ ((void *)0), ((void *)0), WINDIVERT_LAYER_FLOW,
+ (PVOID)flow_data, WINDIVERT_EVENT_FLOW_ESTABLISHED,
+ flags, 0, ipv4, outbound, loopback, 0,
+ match, timestamp);
+ if (!ok)
+ {
+ WdfObjectDereferenceActual(object, ((void *)0), 4089, "E:\\Unity\\WinDivert\\sys\\windivert.c");
+ return;
+ }
+ }
+
+
+
+ if ((filter_flags & 0x0000000000000100ull) == 0)
+ {
+
+ WdfObjectDereferenceActual(object, ((void *)0), 4099, "E:\\Unity\\WinDivert\\sys\\windivert.c");
+ return;
+ }
+ flow = windivert_malloc(sizeof(struct flow_s), 0);
+ if (flow == ((void *)0))
+ {
+ WdfObjectDereferenceActual(object, ((void *)0), 4105, "E:\\Unity\\WinDivert\\sys\\windivert.c");
+ return;
+ }
+ layer_id = (ipv4 ? FWPS_LAYER_ALE_FLOW_ESTABLISHED_V4 :
+ FWPS_LAYER_ALE_FLOW_ESTABLISHED_V6);
+ flow->context = context;
+ flow->flow_id = flow_id;
+ flow->callout_id = callout_id;
+ flow->layer_id = layer_id;
+ flow->inserted = 0;
+ flow->deleted = 0;
+ flow->outbound = outbound;
+ flow->loopback = loopback;
+ flow->ipv6 = !ipv4;
+ memcpy((&flow->data),(flow_data),(sizeof(flow->data)));
+
+ status = FwpsFlowAssociateContext0(flow_id, layer_id, callout_id,
+ (UINT64)flow);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ windivert_free(flow);
+ WdfObjectDereferenceActual(object, ((void *)0), 4126, "E:\\Unity\\WinDivert\\sys\\windivert.c");
+ return;
+ }
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPEN ||
+ context->shutdown_recv)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ windivert_free(flow);
+ WdfObjectDereferenceActual(object, ((void *)0), 4136, "E:\\Unity\\WinDivert\\sys\\windivert.c");
+ return;
+ }
+ if (!flow->deleted)
+ {
+ InsertTailList(&context->flow_set, &flow->entry);
+ flow->inserted = 1;
+ }
+ else
+ {
+
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ windivert_free(flow);
+ WdfObjectDereferenceActual(object, ((void *)0), 4149, "E:\\Unity\\WinDivert\\sys\\windivert.c");
+ return;
+ }
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+}
+
+
+
+
+static void windivert_flow_delete_notify(UINT16 layer_id, UINT32 callout_id,
+ UINT64 flow_context)
+{
+ KLOCK_QUEUE_HANDLE lock_handle;
+ UINT64 flags;
+ BOOL match, cleanup;
+ WDFOBJECT object;
+ context_t context;
+ const WINDIVERT_FILTER* filter;
+ LONGLONG timestamp;
+ flow_t flow;
+
+ (layer_id);
+ (callout_id);
+
+ flow = (flow_t)(ULONG_PTR)flow_context;
+ if (flow == ((void *)0))
+ {
+ return;
+ }
+
+ timestamp = KeQueryPerformanceCounter(((void *)0)).QuadPart;
+ context = flow->context;
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ object = (WDFOBJECT)context->object;
+ if (flow->inserted && !flow->deleted)
+ {
+ RemoveEntryList(&flow->entry);
+ }
+ flow->deleted = 1;
+ cleanup = flow->inserted;
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPEN ||
+ context->shutdown_recv)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ goto windivert_flow_delete_notify_exit;
+ }
+ filter = context->filter;
+ flags = context->flags;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+ match = windivert_filter(((void *)0), WINDIVERT_LAYER_FLOW,
+ (PVOID)&flow->data, timestamp, WINDIVERT_EVENT_FLOW_DELETED,
+ !flow->ipv6, flow->outbound, flow->loopback, 0,
+ 0, filter);
+ if (match)
+ {
+ (void)windivert_queue_work(context, ((void *)0), 0,
+ ((void *)0), ((void *)0), WINDIVERT_LAYER_FLOW,
+ (PVOID)&flow->data, WINDIVERT_EVENT_FLOW_DELETED, flags,
+ 0, !flow->ipv6, flow->outbound, flow->loopback,
+ 0, match, timestamp);
+ }
+
+windivert_flow_delete_notify_exit:
+
+ if (cleanup)
+ {
+ windivert_free(flow);
+ WdfObjectDereferenceActual(object, ((void *)0), 4218, "E:\\Unity\\WinDivert\\sys\\windivert.c");
+ }
+}
+
+
+
+
+static void windivert_resource_assignment_v4_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result)
+{
+ WINDIVERT_DATA_SOCKET socket_data;
+ BOOL loopback;
+ context_t context = (context_t)(ULONG_PTR)filter->context;
+
+ (data);
+ (flow_context);
+
+ if ((result->rights & (0x00000001)) == 0)
+ {
+ return;
+ }
+
+ socket_data.EndpointId = meta_vals->transportEndpointHandle;
+ socket_data.ParentEndpointId = 0;
+ socket_data.ProcessId = (UINT32)meta_vals->processId;
+ windivert_get_ipv4_addr(fixed_vals,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_IP_LOCAL_ADDRESS,
+ socket_data.LocalAddr);
+ memset((&socket_data.RemoteAddr),0,(sizeof(socket_data.RemoteAddr)));
+ socket_data.LocalPort = windivert_get_val16(fixed_vals,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_IP_LOCAL_PORT);
+ socket_data.RemotePort = 0;
+ socket_data.Protocol = windivert_get_val8(fixed_vals,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_IP_PROTOCOL);
+
+ loopback = ((windivert_get_val32(fixed_vals,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V4_FLAGS) &
+ (0x00000001)) != 0);
+
+ windivert_socket_classify(context, &socket_data,
+ WINDIVERT_EVENT_SOCKET_BIND, 1,
+ 1, loopback, result);
+}
+
+
+
+
+static void windivert_resource_assignment_v6_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result)
+{
+ WINDIVERT_DATA_SOCKET socket_data;
+ BOOL loopback;
+ context_t context = (context_t)(ULONG_PTR)filter->context;
+
+ (data);
+ (flow_context);
+
+ if ((result->rights & (0x00000001)) == 0)
+ {
+ return;
+ }
+
+ socket_data.EndpointId = meta_vals->transportEndpointHandle;
+ socket_data.ParentEndpointId = 0;
+ socket_data.ProcessId = (UINT32)meta_vals->processId;
+ windivert_get_ipv6_addr(fixed_vals,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_IP_LOCAL_ADDRESS,
+ socket_data.LocalAddr);
+ memset((&socket_data.RemoteAddr),0,(sizeof(socket_data.RemoteAddr)));
+ socket_data.LocalPort = windivert_get_val16(fixed_vals,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_IP_LOCAL_PORT);
+ socket_data.RemotePort = 0;
+ socket_data.Protocol = windivert_get_val8(fixed_vals,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_IP_PROTOCOL);
+
+ loopback = ((windivert_get_val32(fixed_vals,
+ FWPS_FIELD_ALE_RESOURCE_ASSIGNMENT_V6_FLAGS) &
+ (0x00000001)) != 0);
+
+ windivert_socket_classify(context, &socket_data,
+ WINDIVERT_EVENT_SOCKET_BIND, 0,
+ 1, loopback, result);
+}
+
+
+
+
+static void windivert_resource_release_v4_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result)
+{
+ WINDIVERT_DATA_SOCKET socket_data;
+ BOOL loopback;
+ context_t context = (context_t)(ULONG_PTR)filter->context;
+
+ (data);
+ (flow_context);
+
+ socket_data.EndpointId = meta_vals->transportEndpointHandle;
+ socket_data.ParentEndpointId = 0;
+ socket_data.ProcessId = (UINT32)meta_vals->processId;
+ windivert_get_ipv4_addr(fixed_vals,
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V4_IP_LOCAL_ADDRESS,
+ socket_data.LocalAddr);
+ memset((&socket_data.RemoteAddr),0,(sizeof(socket_data.RemoteAddr)));
+ socket_data.LocalPort = windivert_get_val16(fixed_vals,
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V4_IP_LOCAL_PORT);
+ socket_data.RemotePort = 0;
+ socket_data.Protocol = windivert_get_val8(fixed_vals,
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V4_IP_PROTOCOL);
+
+ loopback = ((windivert_get_val32(fixed_vals,
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V4_FLAGS) &
+ (0x00000001)) != 0);
+
+ windivert_socket_classify(context, &socket_data,
+ WINDIVERT_EVENT_SOCKET_CLOSE, 1,
+ 1, loopback, result);
+}
+
+
+
+
+static void windivert_resource_release_v6_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result)
+{
+ WINDIVERT_DATA_SOCKET socket_data;
+ BOOL loopback;
+ context_t context = (context_t)(ULONG_PTR)filter->context;
+
+ (data);
+ (flow_context);
+
+ socket_data.EndpointId = meta_vals->transportEndpointHandle;
+ socket_data.ParentEndpointId = 0;
+ socket_data.ProcessId = (UINT32)meta_vals->processId;
+ windivert_get_ipv6_addr(fixed_vals,
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V6_IP_LOCAL_ADDRESS,
+ socket_data.LocalAddr);
+ memset((&socket_data.RemoteAddr),0,(sizeof(socket_data.RemoteAddr)));
+ socket_data.LocalPort = windivert_get_val16(fixed_vals,
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V6_IP_LOCAL_PORT);
+ socket_data.RemotePort = 0;
+ socket_data.Protocol = windivert_get_val8(fixed_vals,
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V6_IP_PROTOCOL);
+
+ loopback = ((windivert_get_val32(fixed_vals,
+ FWPS_FIELD_ALE_RESOURCE_RELEASE_V6_FLAGS) &
+ (0x00000001)) != 0);
+
+ windivert_socket_classify(context, &socket_data,
+ WINDIVERT_EVENT_SOCKET_CLOSE, 0,
+ 1, loopback, result);
+}
+
+
+
+
+static void windivert_auth_connect_v4_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result)
+{
+ WINDIVERT_DATA_SOCKET socket_data;
+ UINT32 flags;
+ BOOL loopback;
+ context_t context = (context_t)(ULONG_PTR)filter->context;
+
+ (data);
+ (flow_context);
+
+ if ((result->rights & (0x00000001)) == 0)
+ {
+ return;
+ }
+ flags = windivert_get_val32(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_FLAGS);
+ if ((flags & (0x00000004)) != 0)
+ {
+ result->actionType = (0x00000006 | (0x00002000));
+ return;
+ }
+
+ socket_data.EndpointId = meta_vals->transportEndpointHandle;
+ socket_data.ParentEndpointId = meta_vals->parentEndpointHandle;
+ socket_data.ProcessId = (UINT32)meta_vals->processId;
+ windivert_get_ipv4_addr(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_IP_LOCAL_ADDRESS,
+ socket_data.LocalAddr);
+ windivert_get_ipv4_addr(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_IP_REMOTE_ADDRESS,
+ socket_data.RemoteAddr);
+ socket_data.LocalPort = windivert_get_val16(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_IP_LOCAL_PORT);
+ socket_data.RemotePort = windivert_get_val16(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_IP_REMOTE_PORT);
+ socket_data.Protocol = windivert_get_val8(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V4_IP_PROTOCOL);
+
+ loopback = ((flags & (0x00000001)) != 0);
+
+ windivert_socket_classify(context, &socket_data,
+ WINDIVERT_EVENT_SOCKET_CONNECT, 1,
+ 1, loopback, result);
+}
+
+
+
+
+static void windivert_auth_connect_v6_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result)
+{
+ WINDIVERT_DATA_SOCKET socket_data;
+ UINT32 flags;
+ BOOL loopback;
+ context_t context = (context_t)(ULONG_PTR)filter->context;
+
+ (data);
+ (flow_context);
+
+ if ((result->rights & (0x00000001)) == 0)
+ {
+ return;
+ }
+ flags = windivert_get_val32(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_FLAGS);
+ if ((flags & (0x00000004)) != 0)
+ {
+ result->actionType = (0x00000006 | (0x00002000));
+ return;
+ }
+
+ socket_data.EndpointId = meta_vals->transportEndpointHandle;
+ socket_data.ParentEndpointId = meta_vals->parentEndpointHandle;
+ socket_data.ProcessId = (UINT32)meta_vals->processId;
+ windivert_get_ipv6_addr(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_IP_LOCAL_ADDRESS,
+ socket_data.LocalAddr);
+ windivert_get_ipv6_addr(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_IP_REMOTE_ADDRESS,
+ socket_data.RemoteAddr);
+ socket_data.LocalPort = windivert_get_val16(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_IP_LOCAL_PORT);
+ socket_data.RemotePort = windivert_get_val16(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_IP_REMOTE_PORT);
+ socket_data.Protocol = windivert_get_val8(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_CONNECT_V6_IP_PROTOCOL);
+
+ loopback = ((flags & (0x00000001)) != 0);
+
+ windivert_socket_classify(context, &socket_data,
+ WINDIVERT_EVENT_SOCKET_CONNECT, 0,
+ 1, loopback, result);
+}
+
+
+
+
+static void windivert_endpoint_closure_v4_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result)
+{
+ WINDIVERT_DATA_SOCKET socket_data;
+ BOOL loopback;
+ context_t context = (context_t)(ULONG_PTR)filter->context;
+
+ (data);
+ (flow_context);
+
+ socket_data.EndpointId = meta_vals->transportEndpointHandle;
+ socket_data.ParentEndpointId = meta_vals->parentEndpointHandle;
+ socket_data.ProcessId = (UINT32)meta_vals->processId;
+ windivert_get_ipv4_addr(fixed_vals,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V4_IP_LOCAL_ADDRESS,
+ socket_data.LocalAddr);
+ windivert_get_ipv4_addr(fixed_vals,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V4_IP_REMOTE_ADDRESS,
+ socket_data.RemoteAddr);
+ socket_data.LocalPort = windivert_get_val16(fixed_vals,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V4_IP_LOCAL_PORT);
+ socket_data.RemotePort = windivert_get_val16(fixed_vals,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V4_IP_REMOTE_PORT);
+ socket_data.Protocol = windivert_get_val8(fixed_vals,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V4_IP_PROTOCOL);
+
+ loopback = ((windivert_get_val32(fixed_vals,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V4_FLAGS) &
+ (0x00000001)) != 0);
+
+ windivert_socket_classify(context, &socket_data,
+ WINDIVERT_EVENT_SOCKET_CLOSE, 1,
+ 1, loopback, result);
+}
+
+
+
+
+static void windivert_endpoint_closure_v6_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result)
+{
+ WINDIVERT_DATA_SOCKET socket_data;
+ BOOL loopback;
+ context_t context = (context_t)(ULONG_PTR)filter->context;
+
+ (data);
+ (flow_context);
+
+ socket_data.EndpointId = meta_vals->transportEndpointHandle;
+ socket_data.ParentEndpointId = meta_vals->parentEndpointHandle;
+ socket_data.ProcessId = (UINT32)meta_vals->processId;
+ windivert_get_ipv6_addr(fixed_vals,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V6_IP_LOCAL_ADDRESS,
+ socket_data.LocalAddr);
+ windivert_get_ipv6_addr(fixed_vals,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V6_IP_REMOTE_ADDRESS,
+ socket_data.RemoteAddr);
+ socket_data.LocalPort = windivert_get_val16(fixed_vals,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V6_IP_LOCAL_PORT);
+ socket_data.RemotePort = windivert_get_val16(fixed_vals,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V6_IP_REMOTE_PORT);
+ socket_data.Protocol = windivert_get_val8(fixed_vals,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V6_IP_PROTOCOL);
+
+ loopback = ((windivert_get_val32(fixed_vals,
+ FWPS_FIELD_ALE_ENDPOINT_CLOSURE_V6_FLAGS) &
+ (0x00000001)) != 0);
+
+ windivert_socket_classify(context, &socket_data,
+ WINDIVERT_EVENT_SOCKET_CLOSE, 0,
+ 1, loopback, result);
+}
+
+
+
+
+static void windivert_auth_listen_v4_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result)
+{
+ WINDIVERT_DATA_SOCKET socket_data;
+ BOOL loopback;
+ context_t context = (context_t)(ULONG_PTR)filter->context;
+
+ (data);
+ (flow_context);
+
+ if ((result->rights & (0x00000001)) == 0)
+ {
+ return;
+ }
+
+ socket_data.EndpointId = meta_vals->transportEndpointHandle;
+ socket_data.ParentEndpointId = 0;
+ socket_data.ProcessId = (UINT32)meta_vals->processId;
+ windivert_get_ipv4_addr(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V4_IP_LOCAL_ADDRESS,
+ socket_data.LocalAddr);
+ memset((&socket_data.RemoteAddr),0,(sizeof(socket_data.RemoteAddr)));
+ socket_data.LocalPort = windivert_get_val16(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V4_IP_LOCAL_PORT);
+ socket_data.RemotePort = 0;
+ socket_data.Protocol = IPPROTO_TCP;
+
+ loopback = ((windivert_get_val32(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V4_FLAGS) &
+ (0x00000001)) != 0);
+
+ windivert_socket_classify(context, &socket_data,
+ WINDIVERT_EVENT_SOCKET_LISTEN, 1,
+ 1, loopback, result);
+}
+
+
+
+
+static void windivert_auth_listen_v6_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result)
+{
+ WINDIVERT_DATA_SOCKET socket_data;
+ BOOL loopback;
+ context_t context = (context_t)(ULONG_PTR)filter->context;
+
+ (data);
+ (flow_context);
+
+ if ((result->rights & (0x00000001)) == 0)
+ {
+ return;
+ }
+
+ socket_data.EndpointId = meta_vals->transportEndpointHandle;
+ socket_data.ParentEndpointId = 0;
+ socket_data.ProcessId = (UINT32)meta_vals->processId;
+ windivert_get_ipv6_addr(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V6_IP_LOCAL_ADDRESS,
+ socket_data.LocalAddr);
+ memset((&socket_data.RemoteAddr),0,(sizeof(socket_data.RemoteAddr)));
+ socket_data.LocalPort = windivert_get_val16(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V6_IP_LOCAL_PORT);
+ socket_data.RemotePort = 0;
+ socket_data.Protocol = IPPROTO_TCP;
+
+ loopback = ((windivert_get_val32(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_LISTEN_V6_FLAGS) &
+ (0x00000001)) != 0);
+
+ windivert_socket_classify(context, &socket_data,
+ WINDIVERT_EVENT_SOCKET_LISTEN, 0,
+ 1, loopback, result);
+}
+
+
+
+
+static void windivert_auth_recv_accept_v4_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result)
+{
+ WINDIVERT_DATA_SOCKET socket_data;
+ UINT32 flags;
+ BOOL loopback;
+ context_t context = (context_t)(ULONG_PTR)filter->context;
+
+ (data);
+ (flow_context);
+
+ if ((result->rights & (0x00000001)) == 0)
+ {
+ return;
+ }
+ flags = windivert_get_val32(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_FLAGS);
+ if ((flags & (0x00000004)) != 0)
+ {
+ result->actionType = (0x00000006 | (0x00002000));
+ return;
+ }
+
+ socket_data.EndpointId = meta_vals->transportEndpointHandle;
+ socket_data.ParentEndpointId = meta_vals->parentEndpointHandle;
+ socket_data.ProcessId = (UINT32)meta_vals->processId;
+ windivert_get_ipv4_addr(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_IP_LOCAL_ADDRESS,
+ socket_data.LocalAddr);
+ windivert_get_ipv4_addr(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_IP_REMOTE_ADDRESS,
+ socket_data.RemoteAddr);
+ socket_data.LocalPort = windivert_get_val16(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_IP_LOCAL_PORT);
+ socket_data.RemotePort = windivert_get_val16(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_IP_REMOTE_PORT);
+ socket_data.Protocol = windivert_get_val8(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V4_IP_PROTOCOL);
+
+ loopback = ((flags & (0x00000001)) != 0);
+
+ windivert_socket_classify(context, &socket_data,
+ WINDIVERT_EVENT_SOCKET_ACCEPT, 1,
+ 0, loopback, result);
+}
+
+
+
+
+static void windivert_auth_recv_accept_v6_classify(
+ const FWPS_INCOMING_VALUES0* fixed_vals,
+ const FWPS_INCOMING_METADATA_VALUES0* meta_vals, void* data,
+ const FWPS_FILTER0* filter, UINT64 flow_context,
+ FWPS_CLASSIFY_OUT0* result)
+{
+ WINDIVERT_DATA_SOCKET socket_data;
+ UINT32 flags;
+ BOOL loopback;
+ context_t context = (context_t)(ULONG_PTR)filter->context;
+
+ (data);
+ (flow_context);
+
+ if ((result->rights & (0x00000001)) == 0)
+ {
+ return;
+ }
+ flags = windivert_get_val32(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_FLAGS);
+ if ((flags & (0x00000004)) != 0)
+ {
+ result->actionType = (0x00000006 | (0x00002000));
+ return;
+ }
+
+ socket_data.EndpointId = meta_vals->transportEndpointHandle;
+ socket_data.ParentEndpointId = meta_vals->parentEndpointHandle;
+ socket_data.ProcessId = (UINT32)meta_vals->processId;
+ windivert_get_ipv6_addr(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_IP_LOCAL_ADDRESS,
+ socket_data.LocalAddr);
+ windivert_get_ipv6_addr(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_IP_REMOTE_ADDRESS,
+ socket_data.RemoteAddr);
+ socket_data.LocalPort = windivert_get_val16(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_IP_LOCAL_PORT);
+ socket_data.RemotePort = windivert_get_val16(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_IP_REMOTE_PORT);
+ socket_data.Protocol = windivert_get_val8(fixed_vals,
+ FWPS_FIELD_ALE_AUTH_RECV_ACCEPT_V6_IP_PROTOCOL);
+
+ loopback = ((flags & (0x00000001)) != 0);
+
+ windivert_socket_classify(context, &socket_data,
+ WINDIVERT_EVENT_SOCKET_ACCEPT, 0,
+ 0, loopback, result);
+}
+
+
+
+
+static void windivert_socket_classify(context_t context,
+ PWINDIVERT_DATA_SOCKET socket_data, WINDIVERT_EVENT event, BOOL ipv4,
+ BOOL outbound, BOOL loopback, FWPS_CLASSIFY_OUT0* result)
+{
+ KLOCK_QUEUE_HANDLE lock_handle;
+ UINT64 flags;
+ BOOL match, ok;
+ WDFOBJECT object;
+ const WINDIVERT_FILTER* filter;
+ LONGLONG timestamp;
+
+
+ timestamp = KeQueryPerformanceCounter(((void *)0)).QuadPart;
+
+ if ((result->rights & (0x00000001)) != 0)
+ {
+ result->actionType = (0x00000006 | (0x00002000));
+ }
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPEN ||
+ context->shutdown_recv)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ return;
+ }
+ filter = context->filter;
+ flags = context->flags;
+ object = (WDFOBJECT)context->object;
+ WdfObjectReferenceActual(object, ((void *)0), 4790, "E:\\Unity\\WinDivert\\sys\\windivert.c");
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+ match = windivert_filter(((void *)0), WINDIVERT_LAYER_SOCKET,
+ (PVOID)socket_data, timestamp, event, ipv4, outbound, loopback,
+ 0, 0, filter);
+ if (match)
+ {
+ ok = windivert_queue_work(context, ((void *)0), 0,
+ ((void *)0), ((void *)0), WINDIVERT_LAYER_SOCKET,
+ (PVOID)socket_data, event, flags, 0, ipv4, outbound,
+ loopback, 0, match, timestamp);
+ if (!ok)
+ {
+ WdfObjectDereferenceActual(object, ((void *)0), 4804, "E:\\Unity\\WinDivert\\sys\\windivert.c");
+ return;
+ }
+ }
+
+ WdfObjectDereferenceActual(object, ((void *)0), 4809, "E:\\Unity\\WinDivert\\sys\\windivert.c");
+ if (match && (result->rights & (0x00000001)) != 0 &&
+ event != WINDIVERT_EVENT_SOCKET_CLOSE &&
+ (flags & 0x0001) == 0)
+ {
+ result->actionType = (0x00000001 | (0x00001000));
+ result->flags |= (0x00000001);
+ result->rights &= ~(0x00000001);
+ }
+}
+
+
+
+
+void windivert_worker( WDFWORKITEM item)
+{
+ KLOCK_QUEUE_HANDLE lock_handle;
+ WDFFILEOBJECT object = (WDFFILEOBJECT)WdfWorkItemGetParentObject(item);
+ context_t context = windivert_context_get(object);
+ PLIST_ENTRY entry;
+ packet_t work;
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ while (context->state == WINDIVERT_CONTEXT_STATE_OPEN &&
+ !IsListEmpty(&context->work_queue))
+ {
+ entry = RemoveHeadList(&context->work_queue);
+ context->work_queue_length--;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+ work = ((struct packet_s *)( (PCHAR)(entry) - (ULONG_PTR)(&((struct packet_s *)0)->entry)));
+ if (work->match)
+ {
+ windivert_queue_packet(context, work);
+ }
+ else
+ {
+ windivert_inject_packet(work);
+ }
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ }
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+ windivert_read_service(context);
+}
+
+
+
+
+static BOOL windivert_queue_work(context_t context, PVOID packet,
+ ULONG packet_len, PNET_BUFFER_LIST buffers, PVOID object,
+ WINDIVERT_LAYER layer, PVOID layer_data, WINDIVERT_EVENT event,
+ UINT64 flags, UINT32 priority, BOOL ipv4, BOOL outbound, BOOL loopback,
+ BOOL impostor, BOOL match, LONGLONG timestamp)
+{
+ KLOCK_QUEUE_HANDLE lock_handle;
+ PNET_BUFFER buffer;
+ packet_t work;
+ ULONG packet_size;
+ UINT8* data;
+ PLIST_ENTRY old_entry;
+ NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO checksums;
+ PWINDIVERT_DATA_NETWORK network_data;
+ PWINDIVERT_DATA_FLOW flow_data;
+ PWINDIVERT_DATA_SOCKET socket_data;
+ PWINDIVERT_DATA_REFLECT reflect_data;
+ BOOL sniffed, ip_checksum, tcp_checksum, udp_checksum;
+ WDFREQUEST request = ((void *)0);
+ NTSTATUS status;
+
+ sniffed = ((flags & 0x0001) != 0 ||
+ event == WINDIVERT_EVENT_SOCKET_CLOSE);
+
+ if (!match && sniffed)
+ {
+ return 1;
+ }
+ if (match && (flags & 0x0002) != 0)
+ {
+ return 1;
+ }
+
+
+ if (match)
+ {
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state == WINDIVERT_CONTEXT_STATE_OPEN &&
+ !context->shutdown_recv && IsListEmpty(&context->packet_queue) &&
+ IsListEmpty(&context->work_queue))
+ {
+ status = WdfIoQueueRetrieveNextRequest(context->read_queue,
+ &request);
+ request = (!(((NTSTATUS)(status)) >= 0) ? ((void *)0) : request);
+ }
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ if (request != ((void *)0))
+ {
+ windivert_fast_read_service_request(packet, packet_len, buffers,
+ layer, layer_data, event, flags, ipv4, outbound, loopback,
+ impostor, timestamp, request);
+ return 1;
+ }
+ }
+
+
+ switch (layer)
+ {
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ buffer = (PNET_BUFFER)packet;
+ network_data = (PWINDIVERT_DATA_NETWORK)layer_data;
+ if (packet_len > (40 + 0xFFFF))
+ {
+
+ return 1;
+ }
+ packet_size = (sizeof(struct packet_s)-1 + ((((sizeof(WINDIVERT_DATA_NETWORK)) + 8 - 1) / 8) * 8) + (packet_len));
+#line 4928 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ work = (packet_t)windivert_malloc(packet_size, 0);
+ if (work == ((void *)0))
+ {
+ return 1;
+ }
+ work->packet_len = (UINT32)packet_len;
+ data = ((work)->data);
+ memcpy((data),(network_data),(sizeof(WINDIVERT_DATA_NETWORK)));
+ data = ((work)->data + ((((sizeof(WINDIVERT_DATA_NETWORK)) + 8 - 1) / 8) * 8));
+ if (!windivert_copy_data(buffer, data, packet_len))
+ {
+ windivert_free(work);
+ return 1;
+ }
+ checksums.Value = ((buffers)->NetBufferListInfo[(TcpIpChecksumNetBufferListInfo)]);
+#line 4944 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ if (outbound)
+ {
+ ip_checksum = (checksums.Transmit.IpHeaderChecksum == 0);
+ tcp_checksum = (checksums.Transmit.TcpChecksum == 0);
+ udp_checksum = (checksums.Transmit.UdpChecksum == 0);
+ }
+ else
+ {
+ ip_checksum = (checksums.Receive.IpChecksumSucceeded == 0);
+ tcp_checksum = (checksums.Receive.TcpChecksumSucceeded == 0);
+ udp_checksum = (checksums.Receive.UdpChecksumSucceeded == 0);
+ }
+ break;
+
+ case WINDIVERT_LAYER_FLOW:
+ flow_data = (PWINDIVERT_DATA_FLOW)layer_data;
+ packet_size = (sizeof(struct packet_s)-1 + ((((sizeof(WINDIVERT_DATA_FLOW)) + 8 - 1) / 8) * 8) + (0));
+ work = (packet_t)windivert_malloc(packet_size, 0);
+ if (work == ((void *)0))
+ {
+ return 1;
+ }
+ work->packet_len = 0;
+ data = ((work)->data);
+ memcpy((data),(flow_data),(sizeof(WINDIVERT_DATA_FLOW)));
+ ip_checksum = tcp_checksum = udp_checksum = 0;
+ break;
+
+ case WINDIVERT_LAYER_SOCKET:
+ socket_data = (PWINDIVERT_DATA_SOCKET)layer_data;
+ packet_size = (sizeof(struct packet_s)-1 + ((((sizeof(WINDIVERT_DATA_SOCKET)) + 8 - 1) / 8) * 8) + (0));
+ work = (packet_t)windivert_malloc(packet_size, 0);
+ if (work == ((void *)0))
+ {
+ return 1;
+ }
+ work->packet_len = 0;
+ data = ((work)->data);
+ memcpy((data),(socket_data),(sizeof(WINDIVERT_DATA_SOCKET)));
+ ip_checksum = tcp_checksum = udp_checksum = 0;
+ break;
+
+ case WINDIVERT_LAYER_REFLECT:
+ reflect_data = (PWINDIVERT_DATA_REFLECT)layer_data;
+ packet_size = (sizeof(struct packet_s)-1 + ((((sizeof(WINDIVERT_DATA_REFLECT)) + 8 - 1) / 8) * 8) + (packet_len));
+#line 4990 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ work = (packet_t)windivert_malloc(packet_size, 0);
+ if (work == ((void *)0))
+ {
+ return 1;
+ }
+ work->packet_len = packet_len;
+ data = ((work)->data);
+ memcpy((data),(reflect_data),(sizeof(WINDIVERT_DATA_REFLECT)));
+ data = ((work)->data + ((((sizeof(WINDIVERT_DATA_REFLECT)) + 8 - 1) / 8) * 8));
+ memcpy((data),(packet),(packet_len));
+ ip_checksum = tcp_checksum = udp_checksum = 0;
+ break;
+
+ default:
+ return 1;
+ }
+
+ work->layer = layer;
+ work->event = event;
+ work->sniffed = (sniffed ? 1 : 0);
+ work->outbound = (outbound ? 1 : 0);
+ work->loopback = (loopback ? 1 : 0);
+ work->impostor = (impostor ? 1 : 0);
+ work->ipv6 = (!ipv4 ? 1 : 0);
+ work->ip_checksum = (ip_checksum ? 1 : 0);
+ work->tcp_checksum = (tcp_checksum ? 1 : 0);
+ work->udp_checksum = (udp_checksum ? 1 : 0);
+ work->icmp_checksum = 1;
+ work->match = match;
+ work->packet_size = packet_size;
+ work->priority = priority;
+ work->timestamp = timestamp;
+ work->object = object;
+ if (object != ((void *)0))
+ {
+ ObfReferenceObject(object);
+ }
+
+ old_entry = ((void *)0);
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPEN)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ windivert_free_packet(work);
+ return 0;
+ }
+ if (context->shutdown_recv && context->shutdown_recv_enabled)
+ {
+ if ((flags & 0x0001) != 0)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ windivert_free_packet(work);
+ return 0;
+ }
+ work->match = 0;
+ }
+ context->work_queue_length++;
+ if (context->work_queue_length > 4096)
+ {
+
+ old_entry = RemoveHeadList(&context->work_queue);
+ context->work_queue_length--;
+ }
+ InsertTailList(&context->work_queue, &work->entry);
+ WdfWorkItemEnqueue(context->worker);
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+ if (old_entry != ((void *)0))
+ {
+ work = ((struct packet_s *)( (PCHAR)(old_entry) - (ULONG_PTR)(&((struct packet_s *)0)->entry)));
+ windivert_free_packet(work);
+ }
+
+ return 1;
+}
+
+
+
+
+static void windivert_queue_packet(context_t context, packet_t packet)
+{
+ KLOCK_QUEUE_HANDLE lock_handle;
+ PLIST_ENTRY old_entry;
+ packet_t old_packet;
+ LONGLONG timestamp;
+ BOOL timeout;
+
+ timestamp = KeQueryPerformanceCounter(((void *)0)).QuadPart;
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ while (1)
+ {
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPEN)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ windivert_inject_packet(packet);
+ return;
+ }
+ if (packet->packet_size > context->packet_queue_maxsize)
+ {
+
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ windivert_free_packet(packet);
+ return;
+ }
+ timeout = (((timestamp) >= (packet->timestamp)? (timestamp) - (packet->timestamp): (packet->timestamp) - (timestamp)) > (context)->packet_queue_maxcounts);
+ if (timeout)
+ {
+
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ windivert_free_packet(packet);
+ return;
+ }
+
+ if (context->packet_queue_size + packet->packet_size >
+ context->packet_queue_maxsize ||
+ context->packet_queue_length + 1 > context->packet_queue_maxlength)
+ {
+
+ old_entry = RemoveHeadList(&context->packet_queue);
+ old_packet = ((struct packet_s *)( (PCHAR)(old_entry) - (ULONG_PTR)(&((struct packet_s *)0)->entry)));
+ context->packet_queue_length--;
+ context->packet_queue_size -= old_packet->packet_size;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ ;
+ windivert_free_packet(old_packet);
+ timestamp = KeQueryPerformanceCounter(((void *)0)).QuadPart;
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ continue;
+ }
+ else
+ {
+
+ InsertTailList(&context->packet_queue, &packet->entry);
+ context->packet_queue_length++;
+ context->packet_queue_size += packet->packet_size;
+ break;
+ }
+ }
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+ ;
+
+ return;
+}
+
+
+
+
+static NTSTATUS windivert_inject_packet(packet_t packet)
+{
+ UINT8* packet_data;
+ UINT32 packet_len;
+ UINT64 checksums;
+ PWINDIVERT_DATA_NETWORK network_data;
+ PMDL mdl;
+ PNET_BUFFER_LIST buffers;
+ HANDLE handle;
+ UINT32 priority;
+ NTSTATUS status;
+
+ if (packet->layer != WINDIVERT_LAYER_NETWORK &&
+ packet->layer != WINDIVERT_LAYER_NETWORK_FORWARD)
+ {
+ windivert_free_packet(packet);
+ return ((NTSTATUS)0xC000000DL);
+ }
+
+ network_data = (PWINDIVERT_DATA_NETWORK)((packet)->data);
+ packet_data = ((packet)->data + ((((sizeof(WINDIVERT_DATA_NETWORK)) + 8 - 1) / 8) * 8));
+ packet_len = packet->packet_len;
+
+
+ checksums =
+ (packet->ip_checksum == 0 ? 0 : 1) |
+ (packet->tcp_checksum == 0 ? 0 : 8) |
+ (packet->udp_checksum == 0 ? 0 : 16) |
+ (packet->icmp_checksum == 0 ? 0 : 2 |
+ 4);
+ WinDivertHelperCalcChecksums(packet_data, packet_len, ((void *)0), checksums);
+
+
+ if (packet->impostor != 0 &&
+ !WinDivertHelperDecrementTTL(packet_data, packet_len))
+ {
+ status = ((NTSTATUS)0xC000A012L);
+ ;
+ windivert_free_packet(packet);
+ return status;
+ }
+
+
+ mdl = IoAllocateMdl(packet_data, packet_len, 0, 0, ((void *)0));
+ if (mdl == ((void *)0))
+ {
+ status = ((NTSTATUS)0xC000009AL);
+ ;
+ windivert_free_packet(packet);
+ return status;
+ }
+ MmBuildMdlForNonPagedPool(mdl);
+ status = FwpsAllocateNetBufferAndNetBufferList0(nbl_pool_handle, 0, 0,
+ mdl, 0, packet_len, &buffers);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+#line 5196 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ IoFreeMdl(mdl);
+ windivert_free_packet(packet);
+ return status;
+ }
+ priority = packet->priority;
+ if (packet->layer == WINDIVERT_LAYER_NETWORK_FORWARD)
+ {
+ handle = (packet->ipv6 ? injectv6_handle_forward : inject_handle_forward);
+ status = FwpsInjectForwardAsync0(handle, (HANDLE)priority, 0,
+ (packet->ipv6 ? 23 : 2), UNSPECIFIED_COMPARTMENT_ID,
+ network_data->IfIdx, buffers, windivert_inject_complete,
+ (HANDLE)packet);
+ }
+ else if (packet->outbound)
+ {
+ handle = (packet->ipv6 ? injectv6_handle_out : inject_handle_out);
+ status = FwpsInjectNetworkSendAsync0(handle, (HANDLE)priority, 0,
+ UNSPECIFIED_COMPARTMENT_ID, buffers, windivert_inject_complete,
+ (HANDLE)packet);
+ }
+ else
+ {
+ handle = (packet->ipv6 ? injectv6_handle_in : inject_handle_in);
+ status = FwpsInjectNetworkReceiveAsync0(handle, (HANDLE)priority, 0,
+ UNSPECIFIED_COMPARTMENT_ID, network_data->IfIdx,
+ network_data->SubIfIdx, buffers, windivert_inject_complete,
+ (HANDLE)packet);
+ }
+
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ FwpsFreeNetBufferList0(buffers);
+ IoFreeMdl(mdl);
+ windivert_free_packet(packet);
+ }
+ return status;
+}
+
+
+
+
+static void windivert_free_packet(packet_t packet)
+{
+ if (packet->object != ((void *)0))
+ {
+ ObfDereferenceObject(packet->object);
+ }
+ windivert_free(packet);
+}
+
+
+
+
+static void __stdcall windivert_inject_complete(void* context,
+ NET_BUFFER_LIST* buffers, BOOLEAN dispatch_level)
+{
+ PMDL mdl;
+ PNET_BUFFER buffer;
+ packet_t packet;
+ (dispatch_level);
+
+ packet = (packet_t)context;
+ if (buffers->Status == ((NTSTATUS)0xC0000206L))
+ {
+
+
+
+
+ windivert_inject_packet_too_big(packet);
+ }
+
+ buffer = ((buffers)->FirstNetBuffer);
+ mdl = ((buffer)->MdlChain);
+ IoFreeMdl(mdl);
+ FwpsFreeNetBufferList0(buffers);
+ windivert_free_packet(packet);
+}
+
+
+
+
+static void windivert_inject_packet_too_big(packet_t packet)
+{
+ const UINT mtus[] =
+ {
+ 568, 768, 1024, 1192, 1280, 1372, 1452, 1500, 4096, 0xFFFF,
+ 0xFFFFFFFF
+ };
+ PWINDIVERT_IPHDR ip_header, ip_header_2;
+ PWINDIVERT_IPV6HDR ipv6_header, ipv6_header_2;
+ PWINDIVERT_ICMPHDR icmp_header;
+ PWINDIVERT_ICMPV6HDR icmpv6_header;
+ packet_t icmp;
+ UINT version, packet_len, copy_len, icmp_len;
+ UINT icmp_size;
+ UINT i, min_mtu = 568, mtu;
+ UINT32 flowlabel;
+ UINT8* data;
+
+ if (packet->layer != WINDIVERT_LAYER_NETWORK || !packet->outbound ||
+ packet->loopback)
+ {
+ return;
+ }
+ ip_header = (PWINDIVERT_IPHDR)((packet)->data + ((((sizeof(WINDIVERT_DATA_NETWORK)) + 8 - 1) / 8) * 8));
+#line 5303 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ version = ip_header->Version;
+ switch (version)
+ {
+ case 4:
+ packet_len = _byteswap_ushort((USHORT)(ip_header->Length));
+ copy_len = ip_header->HdrLength * sizeof(UINT32) + 8;
+ copy_len = (packet_len < copy_len ? packet_len : copy_len);
+ icmp_len = sizeof(WINDIVERT_IPHDR) + sizeof(WINDIVERT_ICMPHDR) +
+ copy_len;
+ break;
+ case 6:
+ ipv6_header = (PWINDIVERT_IPV6HDR)ip_header;
+ packet_len = _byteswap_ushort((USHORT)(ipv6_header->Length)) +
+ sizeof(WINDIVERT_IPV6HDR);
+ min_mtu = 1280;
+ copy_len = min_mtu - sizeof(WINDIVERT_IPV6HDR) -
+ sizeof(WINDIVERT_ICMPV6HDR);
+ copy_len = (packet_len < copy_len ? packet_len : copy_len);
+ icmp_len = sizeof(WINDIVERT_IPV6HDR) +
+ sizeof(WINDIVERT_ICMPV6HDR) + copy_len;
+ break;
+ default:
+ return;
+ }
+ if (packet_len <= min_mtu)
+ {
+ return;
+ }
+
+
+ for (i = 0; packet_len > mtus[i]; i++)
+ ;
+ mtu = (i == 0 ? min_mtu : mtus[i - 1]);
+ mtu = (mtu < min_mtu ? min_mtu : mtu);
+
+ icmp_size = (sizeof(struct packet_s)-1 + ((((sizeof(WINDIVERT_DATA_NETWORK)) + 8 - 1) / 8) * 8) + (icmp_len));
+ icmp = (packet_t)windivert_malloc(icmp_size, 0);
+ if (icmp == ((void *)0))
+ {
+ return;
+ }
+ icmp->layer = WINDIVERT_LAYER_NETWORK;
+ icmp->event = WINDIVERT_EVENT_NETWORK_PACKET;
+ icmp->sniffed = 0;
+ icmp->outbound = 0;
+ icmp->loopback = 0;
+ icmp->impostor = 0;
+ icmp->ipv6 = (version == 6 ? 1 : 0);
+ icmp->ip_checksum = 0;
+ icmp->tcp_checksum = 0;
+ icmp->udp_checksum = 0;
+ icmp->icmp_checksum = 0;
+ icmp->match = 0;
+ icmp->packet_size = icmp_size;
+ icmp->packet_len = icmp_len;
+ icmp->priority = packet->priority;
+ icmp->timestamp = 0;
+ icmp->object = ((void *)0);
+ memcpy((((icmp)->data)),(((packet)->data)),(sizeof(WINDIVERT_DATA_NETWORK)));
+#line 5363 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ data = ((icmp)->data + ((((sizeof(WINDIVERT_DATA_NETWORK)) + 8 - 1) / 8) * 8));
+ switch (version)
+ {
+ case 4:
+ ip_header_2 = (PWINDIVERT_IPHDR)data;
+ ip_header_2->Version = 4;
+ ip_header_2->HdrLength = sizeof(WINDIVERT_IPHDR) / sizeof(UINT32);
+ ip_header_2->TOS = 0x0;
+ ip_header_2->Length = _byteswap_ushort((USHORT)(icmp_len));
+ ip_header_2->Id = 0x0;
+ ip_header_2->TTL = 64;
+ ip_header_2->Protocol = IPPROTO_ICMP;
+ ip_header_2->SrcAddr = ip_header->DstAddr;
+ ip_header_2->DstAddr = ip_header->SrcAddr;
+ do { (ip_header_2)->FragOff0 = (((ip_header_2)->FragOff0) & 0x00E0) | ((0x0) & 0xFF1F); } while (0);
+ do { (ip_header_2)->FragOff0 = (((ip_header_2)->FragOff0) & 0xFFDF) | (((0) & 0x0001) << 5); } while (0);
+ do { (ip_header_2)->FragOff0 = (((ip_header_2)->FragOff0) & 0xFFBF) | (((1) & 0x0001) << 6); } while (0);
+ do { (ip_header_2)->FragOff0 = (((ip_header_2)->FragOff0) & 0xFF7F) | (((0x0) & 0x0001) << 7); } while (0);
+ icmp_header = (PWINDIVERT_ICMPHDR)(ip_header_2 + 1);
+ icmp_header->Type = 3;
+ icmp_header->Code = 4;
+ icmp_header->Body = ((UINT32)_byteswap_ushort((USHORT)(mtu))) << 16;
+ data = (UINT8*)(icmp_header + 1);
+ memcpy((data),(ip_header),(copy_len));
+ break;
+ case 6:
+ icmp_len -= sizeof(WINDIVERT_IPV6HDR);
+ ipv6_header_2 = (PWINDIVERT_IPV6HDR)data;
+ ipv6_header_2->Version = 6;
+ ipv6_header_2->Length = _byteswap_ushort((USHORT)(icmp_len));
+ ipv6_header_2->NextHdr = IPPROTO_ICMPV6;
+ ipv6_header_2->HopLimit = 64;
+ memcpy((ipv6_header_2->SrcAddr),(ipv6_header->DstAddr),(sizeof(ipv6_header_2->SrcAddr)));
+#line 5397 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ memcpy((ipv6_header_2->DstAddr),(ipv6_header->SrcAddr),(sizeof(ipv6_header_2->DstAddr)));
+#line 5399 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ do { (ipv6_header_2)->TrafficClass0 = ((UINT8)(0x0) >> 4); (ipv6_header_2)->TrafficClass1 = (UINT8)(0x0); } while (0);
+ flowlabel = ((((UINT32)(ipv6_header)->FlowLabel0) << 16) | ((UINT32)(ipv6_header)->FlowLabel1));
+ do { (ipv6_header_2)->FlowLabel0 = (UINT8)((flowlabel) >> 16); (ipv6_header_2)->FlowLabel1 = (UINT16)(flowlabel); } while (0);
+ icmpv6_header = (PWINDIVERT_ICMPV6HDR)(ipv6_header_2 + 1);
+ icmpv6_header->Type = 2;
+ icmpv6_header->Code = 0;
+ icmpv6_header->Body = _byteswap_ulong((mtu));
+ data = (UINT8*)(icmpv6_header + 1);
+ memcpy((data),(ipv6_header),(copy_len));
+ break;
+ }
+ windivert_inject_packet(icmp);
+}
+
+
+
+
+static BOOL windivert_copy_data(PNET_BUFFER buffer, PVOID data, UINT size)
+{
+ PVOID ptr;
+
+ ptr = NdisGetDataBuffer(buffer, size, ((void *)0), 1, 0);
+ if (ptr != ((void *)0))
+ {
+
+ memcpy((data),(ptr),(size));
+ }
+ else
+ {
+
+ ptr = NdisGetDataBuffer(buffer, size, data, 1, 0);
+ if (ptr == ((void *)0))
+ {
+ return 0;
+ }
+ }
+
+ return 1;
+}
+
+
+
+
+static BOOL windivert_get_data(PNET_BUFFER buffer, UINT length, INT min,
+ INT max, INT idx, PVOID data, UINT size)
+{
+ BOOL success;
+ (length);
+
+ idx += (idx < 0 ? max : min);
+ if (idx < min || idx >(max - (INT)size))
+ {
+ return 0;
+ }
+
+ if (idx > 0)
+ {
+ NdisAdvanceNetBufferDataStart(buffer, idx, 0, ((void *)0));
+ }
+ success = windivert_copy_data(buffer, data, size);
+ if (idx > 0)
+ {
+ (void)NdisRetreatNetBufferDataStart(buffer, idx, 0, ((void *)0));
+ }
+ return success;
+}
+
+
+
+
+static __forceinline BOOL windivert_parse_headers(PNET_BUFFER buffer,
+ BOOL ipv4, BOOL* fragment_ptr, PWINDIVERT_IPHDR* ip_header_ptr,
+ PWINDIVERT_IPV6HDR* ipv6_header_ptr, PWINDIVERT_ICMPHDR* icmp_header_ptr,
+ PWINDIVERT_ICMPV6HDR* icmpv6_header_ptr, PWINDIVERT_TCPHDR* tcp_header_ptr,
+ PWINDIVERT_UDPHDR* udp_header_ptr, UINT8* proto_ptr, UINT* header_len_ptr,
+ UINT* payload_len_ptr)
+{
+ UINT total_len, ip_header_len = 0;
+ PWINDIVERT_IPHDR ip_header = ((void *)0);
+ PWINDIVERT_IPV6HDR ipv6_header = ((void *)0);
+ PWINDIVERT_ICMPHDR icmp_header = ((void *)0);
+ PWINDIVERT_ICMPV6HDR icmpv6_header = ((void *)0);
+ PWINDIVERT_TCPHDR tcp_header = ((void *)0);
+ PWINDIVERT_UDPHDR udp_header = ((void *)0);
+ PWINDIVERT_IPV6FRAGHDR frag_header;
+ BOOL fragment = 0;
+ UINT8 protocol = 0;
+ UINT16 frag_off = 0;
+ UINT header_len = 0;
+ NTSTATUS status;
+
+
+ if (buffer == ((void *)0))
+ {
+ ;
+ return 0;
+ }
+ total_len = ((buffer)->DataLength);
+ if (total_len < sizeof(WINDIVERT_IPHDR))
+ {
+ ;
+ return 0;
+ }
+
+
+ if (ipv4)
+ {
+
+ if (total_len < sizeof(WINDIVERT_IPHDR))
+ {
+ ;
+ return 0;
+ }
+ ip_header = (PWINDIVERT_IPHDR)NdisGetDataBuffer(buffer,
+ sizeof(WINDIVERT_IPHDR), ((void *)0), 1, 0);
+ if (ip_header == ((void *)0))
+ {
+ ;
+ return 0;
+ }
+ ip_header_len = ip_header->HdrLength * sizeof(UINT32);
+ if (ip_header->Version != 4 ||
+ _byteswap_ushort((USHORT)(ip_header->Length)) != total_len ||
+ ip_header->HdrLength < 5 ||
+ ip_header_len > total_len)
+ {
+ ;
+ return 0;
+ }
+ frag_off = _byteswap_ushort((USHORT)((((ip_header)->FragOff0) & 0xFF1F)));
+ fragment = (frag_off != 0 || ((((ip_header)->FragOff0) & 0x0020) != 0) != 0);
+ protocol = ip_header->Protocol;
+ NdisAdvanceNetBufferDataStart(buffer, ip_header_len, 0, ((void *)0));
+ }
+ else
+ {
+
+ if (total_len < sizeof(WINDIVERT_IPV6HDR))
+ {
+ ;
+ return 0;
+ }
+ ipv6_header = (PWINDIVERT_IPV6HDR)NdisGetDataBuffer(buffer,
+ sizeof(WINDIVERT_IPV6HDR), ((void *)0), 1, 0);
+ if (ipv6_header == ((void *)0))
+ {
+ ;
+ return 0;
+ }
+ ip_header_len = sizeof(WINDIVERT_IPV6HDR);
+ if (ipv6_header->Version != 6 ||
+ ip_header_len > total_len ||
+ _byteswap_ushort((USHORT)(ipv6_header->Length)) +
+ sizeof(WINDIVERT_IPV6HDR) != total_len)
+ {
+ ;
+ return 0;
+ }
+ protocol = ipv6_header->NextHdr;
+ NdisAdvanceNetBufferDataStart(buffer, ip_header_len, 0, ((void *)0));
+
+
+ while (frag_off == 0)
+ {
+ UINT8* ext_header = ((void *)0);
+ UINT ext_header_len = 0;
+ BOOL is_ext_header;
+ switch (protocol)
+ {
+ case IPPROTO_FRAGMENT:
+ frag_header = (PWINDIVERT_IPV6FRAGHDR)
+ NdisGetDataBuffer(buffer, 8, ((void *)0), 1, 0);
+ ext_header = (UINT8*)frag_header;
+ if (fragment || frag_header == ((void *)0))
+ {
+ is_ext_header = 0;
+ break;
+ }
+ fragment = 1;
+ frag_off = _byteswap_ushort((USHORT)((((frag_header)->FragOff0) & 0xF8FF)));
+#line 5580 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+ ext_header_len = 8;
+ is_ext_header = 1;
+ break;
+
+ case IPPROTO_AH:
+ case IPPROTO_HOPOPTS:
+ case IPPROTO_DSTOPTS:
+ case IPPROTO_ROUTING:
+ case 135:
+ ext_header = (UINT8*)NdisGetDataBuffer(buffer, 2, ((void *)0),
+ 1, 0);
+ if (ext_header == ((void *)0))
+ {
+ is_ext_header = 0;
+ break;
+ }
+ ext_header_len = (UINT)ext_header[1];
+ if (protocol == IPPROTO_AH)
+ {
+ ext_header_len += 2;
+ ext_header_len *= 4;
+ }
+ else
+ {
+ ext_header_len++;
+ ext_header_len *= 8;
+ }
+ is_ext_header = 1;
+ break;
+ default:
+
+ is_ext_header = 0;
+ break;
+ }
+
+ if (!is_ext_header || ip_header_len + ext_header_len > total_len)
+ {
+ break;
+ }
+ protocol = ext_header[0];
+ ip_header_len += ext_header_len;
+ NdisAdvanceNetBufferDataStart(buffer, ext_header_len, 0,
+ ((void *)0));
+ }
+ }
+
+ header_len = ip_header_len;
+ if (frag_off == 0)
+ {
+ switch (protocol)
+ {
+ case IPPROTO_ICMP:
+ if (ip_header == ((void *)0))
+ {
+ break;
+ }
+ icmp_header = (PWINDIVERT_ICMPHDR)NdisGetDataBuffer(buffer,
+ sizeof(WINDIVERT_ICMPHDR), ((void *)0), 1, 0);
+ header_len +=
+ (icmp_header == ((void *)0) ? 0 : sizeof(WINDIVERT_ICMPHDR));
+ break;
+
+ case IPPROTO_ICMPV6:
+ if (ipv6_header == ((void *)0))
+ {
+ break;
+ }
+ icmpv6_header = (PWINDIVERT_ICMPV6HDR)NdisGetDataBuffer(buffer,
+ sizeof(WINDIVERT_ICMPV6HDR), ((void *)0), 1, 0);
+ header_len +=
+ (icmpv6_header == ((void *)0) ? 0 : sizeof(WINDIVERT_ICMPV6HDR));
+ break;
+
+ case IPPROTO_TCP:
+ tcp_header = (PWINDIVERT_TCPHDR)NdisGetDataBuffer(buffer,
+ sizeof(WINDIVERT_TCPHDR), ((void *)0), 1, 0);
+ if (tcp_header != ((void *)0))
+ {
+ if (tcp_header->HdrLength < 5)
+ {
+ tcp_header = ((void *)0);
+ }
+ else
+ {
+ UINT tcp_header_len =
+ tcp_header->HdrLength * sizeof(UINT32);
+ tcp_header_len =
+ (header_len + tcp_header_len > total_len ?
+ total_len - header_len : tcp_header_len);
+ header_len += tcp_header_len;
+ }
+ }
+ break;
+
+ case IPPROTO_UDP:
+ udp_header = (PWINDIVERT_UDPHDR)NdisGetDataBuffer(buffer,
+ sizeof(WINDIVERT_UDPHDR), ((void *)0), 1, 0);
+ header_len +=
+ (udp_header == ((void *)0) ? 0 : sizeof(WINDIVERT_UDPHDR));
+ break;
+ default:
+ break;
+ }
+ }
+
+ status = NdisRetreatNetBufferDataStart(buffer, ip_header_len, 0, ((void *)0));
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+
+ ;
+ return 0;
+ }
+
+ *fragment_ptr = fragment;
+ *ip_header_ptr = ip_header;
+ *ipv6_header_ptr = ipv6_header;
+ *icmp_header_ptr = icmp_header;
+ *icmpv6_header_ptr = icmpv6_header;
+ *tcp_header_ptr = tcp_header;
+ *udp_header_ptr = udp_header;
+ *proto_ptr = protocol;
+ *header_len_ptr = header_len;
+ *payload_len_ptr = total_len - header_len;
+
+ return 1;
+}
+
+
+
+
+static BOOL windivert_filter(PNET_BUFFER buffer, WINDIVERT_LAYER layer,
+ const void* layer_data, LONGLONG timestamp, WINDIVERT_EVENT event,
+ BOOL ipv4, BOOL outbound, BOOL loopback, BOOL impostor, BOOL frag_mode,
+ const WINDIVERT_FILTER* filter)
+{
+ PWINDIVERT_IPHDR ip_header = ((void *)0);
+ PWINDIVERT_IPV6HDR ipv6_header = ((void *)0);
+ PWINDIVERT_ICMPHDR icmp_header = ((void *)0);
+ PWINDIVERT_ICMPV6HDR icmpv6_header = ((void *)0);
+ PWINDIVERT_TCPHDR tcp_header = ((void *)0);
+ PWINDIVERT_UDPHDR udp_header = ((void *)0);
+ BOOL fragment = 0;
+ UINT8 protocol = 0;
+ UINT header_len = 0, payload_len = 0, total_len = 0;
+ PWINDIVERT_DATA_NETWORK network_data = ((void *)0);
+ PWINDIVERT_DATA_FLOW flow_data = ((void *)0);
+ PWINDIVERT_DATA_SOCKET socket_data = ((void *)0);
+ PWINDIVERT_DATA_REFLECT reflect_data = ((void *)0);
+ int result;
+
+ switch (layer)
+ {
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ if (!windivert_parse_headers(buffer, ipv4, &fragment, &ip_header,
+ &ipv6_header, &icmp_header, &icmpv6_header, &tcp_header,
+ &udp_header, &protocol, &header_len, &payload_len))
+ {
+ return 0;
+ }
+ if (fragment && !frag_mode)
+ {
+ return 0;
+ }
+ network_data = (PWINDIVERT_DATA_NETWORK)layer_data;
+ break;
+ case WINDIVERT_LAYER_FLOW:
+ flow_data = (PWINDIVERT_DATA_FLOW)layer_data;
+ break;
+ case WINDIVERT_LAYER_SOCKET:
+ socket_data = (PWINDIVERT_DATA_SOCKET)layer_data;
+ break;
+ case WINDIVERT_LAYER_REFLECT:
+ reflect_data = (PWINDIVERT_DATA_REFLECT)layer_data;
+ break;
+ default:
+ ;
+ return 0;
+ }
+
+ result = WinDivertExecuteFilter(
+ filter,
+ layer,
+ timestamp,
+ event,
+ ipv4,
+ outbound,
+ loopback,
+ impostor,
+ fragment,
+ network_data,
+ flow_data,
+ socket_data,
+ reflect_data,
+ ip_header,
+ ipv6_header,
+ icmp_header,
+ icmpv6_header,
+ tcp_header,
+ udp_header,
+ protocol,
+ (const void*)buffer,
+ header_len + payload_len,
+ header_len,
+ payload_len);
+
+ return (result == 1);
+}
+
+
+
+
+static const WINDIVERT_FILTER* windivert_filter_compile(
+ const WINDIVERT_FILTER* ioctl_filter, size_t ioctl_filter_len,
+ WINDIVERT_LAYER layer)
+{
+ PWINDIVERT_FILTER filter = ((void *)0);
+ WINDIVERT_EVENT event;
+ BOOL neg_lb, neg_ub, neg;
+ UINT32 lb[4], ub[4];
+ int result;
+ UINT16 i;
+ size_t length;
+
+ if (ioctl_filter_len % sizeof(WINDIVERT_FILTER) != 0)
+ {
+ goto windivert_filter_compile_error;
+ }
+ length = ioctl_filter_len / sizeof(WINDIVERT_FILTER);
+ if (length >= 256 || length == 0)
+ {
+ goto windivert_filter_compile_error;
+ }
+
+ filter = (PWINDIVERT_FILTER)windivert_malloc(
+ length * sizeof(WINDIVERT_FILTER), 0);
+ if (filter == ((void *)0))
+ {
+ goto windivert_filter_compile_error;
+ }
+
+ for (i = 0; i < length; i++)
+ {
+ if (ioctl_filter[i].field > 85 ||
+ ioctl_filter[i].test > 5)
+ {
+ goto windivert_filter_compile_error;
+ }
+ switch (ioctl_filter[i].success)
+ {
+ case 0x7FFE:
+ case 0x7FFF:
+ break;
+ default:
+ if (ioctl_filter[i].success <= i ||
+ ioctl_filter[i].success >= length)
+ {
+ goto windivert_filter_compile_error;
+ }
+ break;
+ }
+ switch (ioctl_filter[i].failure)
+ {
+ case 0x7FFE:
+ case 0x7FFF:
+ break;
+ default:
+ if (ioctl_filter[i].failure <= i ||
+ ioctl_filter[i].failure >= length)
+ {
+ goto windivert_filter_compile_error;
+ }
+ break;
+ }
+
+
+ if (!WinDivertValidateField(layer, ioctl_filter[i].field))
+ {
+ goto windivert_filter_compile_error;
+ }
+
+
+ neg_lb = neg_ub = 0;
+ lb[0] = lb[1] = lb[2] = lb[3] = 0;
+ ub[0] = ub[1] = ub[2] = ub[3] = 0;
+ switch (ioctl_filter[i].field)
+ {
+ case 71:
+ case 72:
+ case 73:
+ case 74:
+ case 75:
+ case 76:
+ case 77:
+ case 78:
+ case 79:
+ {
+ INT idx = (INT)ioctl_filter[i].arg[1];
+ if (ioctl_filter[i].neg)
+ {
+ goto windivert_filter_compile_error;
+ }
+ if (idx > (40 + 0xFFFF) || idx < -(40 + 0xFFFF))
+ {
+ goto windivert_filter_compile_error;
+ }
+ lb[1] = ub[1] = ioctl_filter[i].arg[1];
+ break;
+ }
+ default:
+ break;
+ }
+ switch (ioctl_filter[i].field)
+ {
+ case 0:
+ case 1:
+ case 2:
+ case 85:
+ case 5:
+ case 6:
+ case 7:
+ case 10:
+ case 8:
+ case 9:
+ case 15:
+ case 16:
+ case 43:
+ case 44:
+ case 45:
+ case 46:
+ case 47:
+ case 48:
+ ub[0] = 1;
+ break;
+ case 68:
+ ub[0] = WINDIVERT_LAYER_REFLECT;
+ break;
+ case 69:
+ neg_lb = 1;
+ lb[0] = ub[0] = 30000;
+ break;
+ case 70:
+ event = (WINDIVERT_EVENT)ioctl_filter[i].arg[0];
+ switch (layer)
+ {
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ if (event != WINDIVERT_EVENT_NETWORK_PACKET)
+ {
+ goto windivert_filter_compile_error;
+ }
+ break;
+ case WINDIVERT_LAYER_FLOW:
+ if (event != WINDIVERT_EVENT_FLOW_ESTABLISHED &&
+ event != WINDIVERT_EVENT_FLOW_DELETED)
+ {
+ goto windivert_filter_compile_error;
+ }
+ break;
+ case WINDIVERT_LAYER_SOCKET:
+ if (event != WINDIVERT_EVENT_SOCKET_BIND &&
+ event != WINDIVERT_EVENT_SOCKET_CONNECT &&
+ event != WINDIVERT_EVENT_SOCKET_LISTEN &&
+ event != WINDIVERT_EVENT_SOCKET_ACCEPT &&
+ event != WINDIVERT_EVENT_SOCKET_CLOSE)
+ {
+ goto windivert_filter_compile_error;
+ }
+ break;
+ case WINDIVERT_LAYER_REFLECT:
+ if (event != WINDIVERT_EVENT_REFLECT_OPEN &&
+ event != WINDIVERT_EVENT_REFLECT_CLOSE)
+ {
+ goto windivert_filter_compile_error;
+ }
+ break;
+ default:
+ goto windivert_filter_compile_error;
+ }
+ ub[0] = WINDIVERT_EVENT_REFLECT_CLOSE;
+ break;
+ case 11:
+ case 42:
+ ub[0] = 0x0F;
+ break;
+ case 12:
+ case 18:
+ case 19:
+ case 23:
+ case 26:
+ case 27:
+ case 30:
+ case 31:
+ case 34:
+ case 35:
+ case 65:
+ case 71:
+ case 74:
+ case 77:
+ case 82:
+ ub[0] = 0xFF;
+ break;
+ case 17:
+ ub[0] = 0x1FFF;
+ break;
+ case 13:
+ case 14:
+ case 20:
+ case 25:
+ case 32:
+ case 36:
+ case 38:
+ case 39:
+ case 49:
+ case 50:
+ case 51:
+ case 52:
+ case 53:
+ case 54:
+ case 55:
+ case 56:
+ case 57:
+ case 63:
+ case 64:
+ case 72:
+ case 75:
+ case 78:
+ case 83:
+ ub[0] = 0xFFFF;
+ break;
+ case 80:
+ lb[0] = sizeof(WINDIVERT_IPHDR);
+ ub[0] = (40 + 0xFFFF);
+ break;
+ case 24:
+ ub[0] = 0x000FFFFF;
+ break;
+ case 21:
+ case 22:
+ ub[0] = 0xFFFFFFFF;
+ ub[1] = lb[1] = 0x0000FFFF;
+ break;
+ case 81:
+ lb[1] = 0x80000000;
+ ub[0] = 0xFFFFFFFF;
+ ub[1] = 0x7FFFFFFF;
+ neg_lb = 1;
+ break;
+ case 66:
+ case 67:
+ ub[0] = ub[1] = 0xFFFFFFFF;
+ break;
+ case 28:
+ case 29:
+ case 61:
+ case 62:
+ ub[0] = ub[1] = ub[2] = ub[3] = 0xFFFFFFFF;
+ break;
+ default:
+ ub[0] = 0xFFFFFFFF;
+ break;
+ }
+ neg = (ioctl_filter[i].neg ? 1 : 0);
+ result = WinDivertCompare128(neg, ioctl_filter[i].arg, neg_lb,
+ lb, 1);
+ if (result < 0)
+ {
+ goto windivert_filter_compile_error;
+ }
+ result = WinDivertCompare128(neg, ioctl_filter[i].arg, neg_ub,
+ ub, 1);
+ if (result > 0)
+ {
+ goto windivert_filter_compile_error;
+ }
+
+
+ if (neg &&
+ ioctl_filter[i].arg[0] == 0 && ioctl_filter[i].arg[1] == 0 &&
+ ioctl_filter[i].arg[2] == 0 && ioctl_filter[i].arg[3] == 0)
+ {
+ goto windivert_filter_compile_error;
+ }
+
+ filter[i].field = ioctl_filter[i].field;
+ filter[i].test = ioctl_filter[i].test;
+ filter[i].success = ioctl_filter[i].success;
+ filter[i].failure = ioctl_filter[i].failure;
+ filter[i].neg = ioctl_filter[i].neg;
+ filter[i].arg[0] = ioctl_filter[i].arg[0];
+ filter[i].arg[1] = ioctl_filter[i].arg[1];
+ filter[i].arg[2] = ioctl_filter[i].arg[2];
+ filter[i].arg[3] = ioctl_filter[i].arg[3];
+ }
+
+ return filter;
+
+windivert_filter_compile_error:
+
+ windivert_free((PVOID)filter);
+ return ((void *)0);
+}
+
+
+
+
+
+
+
+
+
+
+static BOOL reflect_inited = 0;
+static BOOL reflect_worker_queued = 0;
+static KSPIN_LOCK reflect_lock;
+static LIST_ENTRY reflect_event_queue;
+static LIST_ENTRY reflect_contexts;
+static LIST_ENTRY reflect_waiters;
+static WDFWORKITEM reflect_worker;
+#pragma data_seg(push, stack, "PAGE")
+static char reflect_packet[12288];
+#pragma data_seg(pop, stack)
+
+
+
+
+static NTSTATUS windivert_reflect_init(WDFOBJECT parent)
+{
+ WDF_WORKITEM_CONFIG item_config;
+ WDF_OBJECT_ATTRIBUTES obj_attrs;
+ NTSTATUS status;
+
+ KeInitializeSpinLock(&reflect_lock);
+ InitializeListHead(&reflect_event_queue);
+ InitializeListHead(&reflect_contexts);
+ InitializeListHead(&reflect_waiters);
+ WDF_WORKITEM_CONFIG_INIT(&item_config, windivert_reflect_worker);
+ item_config.AutomaticSerialization = 0;
+ WDF_OBJECT_ATTRIBUTES_INIT(&obj_attrs);
+ obj_attrs.ParentObject = parent;
+ status = WdfWorkItemCreate(&item_config, &obj_attrs, &reflect_worker);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ ;
+ return status;
+ }
+ reflect_inited = 1;
+ return ((NTSTATUS)0x00000000L);
+}
+
+
+
+
+static void windivert_reflect_close(void)
+{
+ if (!reflect_inited)
+ {
+ return;
+ }
+ WdfWorkItemFlush(reflect_worker);
+ WdfObjectDelete(reflect_worker);
+}
+
+
+
+
+static void windivert_reflect_open_event(context_t context)
+{
+ KLOCK_QUEUE_HANDLE lock_handle;
+ WDFOBJECT object;
+ reflect_event_t reflect_event;
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ object = (WDFOBJECT)context->object;
+
+
+ WdfObjectReferenceActual(object, ((void *)0), 6156, "E:\\Unity\\WinDivert\\sys\\windivert.c");
+ context->reflect.open = 1;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+
+ reflect_event = &context->reflect.open_event;
+ reflect_event->context = context;
+ reflect_event->event = WINDIVERT_EVENT_REFLECT_OPEN;
+ KeAcquireInStackQueuedSpinLock(&reflect_lock, &lock_handle);
+ InsertTailList(&reflect_event_queue, &reflect_event->entry);
+ if (!reflect_worker_queued)
+ {
+ WdfWorkItemEnqueue(reflect_worker);
+ reflect_worker_queued = 1;
+ }
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+}
+
+
+
+
+static void windivert_reflect_close_event(context_t context)
+{
+ KLOCK_QUEUE_HANDLE lock_handle;
+ reflect_event_t reflect_event;
+ BOOL open;
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ open = context->reflect.open;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ if (!open)
+ {
+ return;
+ }
+
+
+ reflect_event = &context->reflect.close_event;
+ reflect_event->context = context;
+ reflect_event->event = WINDIVERT_EVENT_REFLECT_CLOSE;
+ KeAcquireInStackQueuedSpinLock(&reflect_lock, &lock_handle);
+ InsertTailList(&reflect_event_queue, &reflect_event->entry);
+ if (!reflect_worker_queued)
+ {
+ WdfWorkItemEnqueue(reflect_worker);
+ reflect_worker_queued = 1;
+ }
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+}
+
+
+
+
+static PVOID windivert_reflect_packet(context_t context, ULONG* len_ptr)
+{
+ KLOCK_QUEUE_HANDLE lock_handle;
+ const WINDIVERT_FILTER* filter;
+ UINT16 filter_len;
+ WINDIVERT_STREAM stream;
+
+ stream.data = reflect_packet;
+ stream.pos = 0;
+ stream.max = sizeof(reflect_packet) - 1;
+ stream.overflow = 0;
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ filter = context->filter;
+ filter_len = context->filter_len;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+ WinDivertSerializeFilter(&stream, filter, (UINT8)filter_len);
+ *len_ptr = stream.pos;
+ return (PVOID)stream.data;
+}
+
+
+
+
+static void windivert_reflect_event_notify(context_t context,
+ LONGLONG timestamp, WINDIVERT_EVENT event)
+{
+ KLOCK_QUEUE_HANDLE lock_handle;
+ PLIST_ENTRY entry;
+ context_t waiter;
+ const WINDIVERT_FILTER* filter;
+ PVOID packet = ((void *)0), process;
+ ULONG packet_len = 0;
+ UINT64 flags;
+ BOOL match;
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ process = (PVOID)context->process;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+ entry = reflect_waiters.Flink;
+ while (entry != &reflect_waiters)
+ {
+ waiter = ((struct context_s *)( (PCHAR)(entry) - (ULONG_PTR)(&((struct context_s *)0)->reflect.entry)));
+ entry = entry->Flink;
+ KeAcquireInStackQueuedSpinLock(&waiter->lock, &lock_handle);
+ filter = waiter->filter;
+ flags = waiter->flags;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ match = windivert_filter(((void *)0),
+ WINDIVERT_LAYER_REFLECT, (PVOID)&context->reflect.data,
+ timestamp, event, 1, 0,
+ 0, 0, 0,
+ filter);
+ if (!match)
+ {
+ continue;
+ }
+ if (packet == ((void *)0))
+ {
+ packet = windivert_reflect_packet(context, &packet_len);
+ }
+ (void)windivert_queue_work(waiter, packet, packet_len,
+ ((void *)0), process, WINDIVERT_LAYER_REFLECT,
+ (PVOID)&context->reflect.data, event, flags, 0,
+ 1, 0, 0,
+ 0, 1, timestamp);
+ }
+}
+
+
+
+
+static void windivert_reflect_established_notify(context_t context,
+ LONGLONG timestamp)
+{
+ KLOCK_QUEUE_HANDLE lock_handle;
+ PLIST_ENTRY entry;
+ BOOL match, ok;
+ context_t waiter;
+ const WINDIVERT_FILTER* filter;
+ PVOID packet, process;
+ ULONG packet_len;
+ UINT64 flags;
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPEN)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ return;
+ }
+ filter = context->filter;
+ flags = context->flags;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+ entry = reflect_contexts.Flink;
+ while (entry != &reflect_contexts)
+ {
+ waiter = ((struct context_s *)( (PCHAR)(entry) - (ULONG_PTR)(&((struct context_s *)0)->reflect.entry)));
+ entry = entry->Flink;
+ match = windivert_filter(((void *)0),
+ WINDIVERT_LAYER_REFLECT, (PVOID)&waiter->reflect.data,
+ timestamp, WINDIVERT_EVENT_REFLECT_OPEN, 1,
+ 0, 0, 0,
+ 0, filter);
+ if (!match)
+ {
+ continue;
+ }
+ packet = windivert_reflect_packet(waiter, &packet_len);
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ process = (PVOID)waiter->process;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ ok = windivert_queue_work(context, packet, packet_len,
+ ((void *)0), process, WINDIVERT_LAYER_REFLECT,
+ (PVOID)&waiter->reflect.data,
+ WINDIVERT_EVENT_REFLECT_OPEN, flags, 0,
+ 1, 0, 0,
+ 0, 1, timestamp);
+ if (!ok)
+ {
+ break;
+ }
+ }
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPEN)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ return;
+ }
+
+
+ context->shutdown_recv_enabled = 1;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ windivert_read_service(context);
+}
+
+
+
+
+void windivert_reflect_worker( WDFWORKITEM item)
+{
+ KLOCK_QUEUE_HANDLE lock_handle;
+ PLIST_ENTRY entry;
+ context_t context;
+ LONGLONG timestamp;
+ WINDIVERT_EVENT event;
+ reflect_event_t reflect_event;
+ WDFOBJECT object;
+ WINDIVERT_LAYER layer;
+
+ (item);
+
+
+
+
+
+
+ KeAcquireInStackQueuedSpinLock(&reflect_lock, &lock_handle);
+ while (!IsListEmpty(&reflect_event_queue))
+ {
+ entry = RemoveHeadList(&reflect_event_queue);
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+ reflect_event = ((struct reflect_event_s *)( (PCHAR)(entry) - (ULONG_PTR)(&((struct reflect_event_s *)0)->entry)));
+ context = reflect_event->context;
+ event = reflect_event->event;
+
+ ;
+#line 6380 "E:\\Unity\\WinDivert\\sys\\windivert.c"
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ object = (WDFOBJECT)context->object;
+ layer = context->layer;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+ timestamp = KeQueryPerformanceCounter(((void *)0)).QuadPart;
+ switch (event)
+ {
+ case WINDIVERT_EVENT_REFLECT_OPEN:
+ if (layer != WINDIVERT_LAYER_REFLECT)
+ {
+ InsertTailList(&reflect_contexts, &context->reflect.entry);
+ }
+ else
+ {
+ InsertTailList(&reflect_waiters, &context->reflect.entry);
+ windivert_reflect_established_notify(context, timestamp);
+ }
+ break;
+
+ case WINDIVERT_EVENT_REFLECT_CLOSE:
+ RemoveEntryList(&context->reflect.entry);
+ break;
+ }
+
+ if (layer != WINDIVERT_LAYER_REFLECT)
+ {
+ windivert_reflect_event_notify(context, timestamp, event);
+ }
+ if (event == WINDIVERT_EVENT_REFLECT_CLOSE)
+ {
+ WdfObjectDereferenceActual(object, ((void *)0), 6412, "E:\\Unity\\WinDivert\\sys\\windivert.c");
+ }
+
+ KeAcquireInStackQueuedSpinLock(&reflect_lock, &lock_handle);
+ }
+ reflect_worker_queued = 0;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+}
+
+
+
+
+static void windivert_log_event(PEPROCESS process, PDRIVER_OBJECT driver,
+ const wchar_t* msg_str)
+{
+ const wchar_t windivert_str[] = L"WinDivert"
+ L"2" L"." L"2";
+ wchar_t pid_str[16];
+ size_t windivert_size = sizeof(windivert_str), msg_size, pid_size, size;
+ UNICODE_STRING string;
+ UINT8* str;
+ PIO_ERROR_LOG_PACKET packet;
+ NTSTATUS status;
+
+ size = (((512 > ((256-16) + (sizeof(IO_ERROR_LOG_MESSAGE) - sizeof(IO_ERROR_LOG_PACKET) + (sizeof(WCHAR) * 40)))) ? ((256-16) + (sizeof(IO_ERROR_LOG_MESSAGE) - sizeof(IO_ERROR_LOG_PACKET) + (sizeof(WCHAR) * 40))) : 512) - (sizeof(IO_ERROR_LOG_MESSAGE) - sizeof(IO_ERROR_LOG_PACKET) + (sizeof(WCHAR) * 40))) - sizeof(wchar_t) -
+ (sizeof(IO_ERROR_LOG_PACKET) + windivert_size + sizeof(pid_str));
+ status = RtlStringCbLengthW(msg_str, size, &msg_size);
+ if (!(((NTSTATUS)(status)) >= 0))
+ {
+ return;
+ }
+ msg_size += sizeof(wchar_t);
+
+ if (process != ((void *)0))
+ {
+ string.Length = 0;
+ string.MaximumLength = sizeof(pid_str);
+ string.Buffer = pid_str;
+ status = RtlIntegerToUnicodeString(
+ (UINT32)(ULONG_PTR)PsGetProcessId(process), 10, &string);
+ pid_size = string.Length + sizeof(wchar_t);
+ }
+ if (process == ((void *)0) || !(((NTSTATUS)(status)) >= 0))
+ {
+ pid_str[0] = pid_str[1] = pid_str[2] = L'?';
+ pid_str[3] = L'\0';
+ pid_size = 4 * sizeof(wchar_t);
+ }
+
+ size = sizeof(IO_ERROR_LOG_PACKET) + windivert_size + msg_size + pid_size;
+ if (size > (((512 > ((256-16) + (sizeof(IO_ERROR_LOG_MESSAGE) - sizeof(IO_ERROR_LOG_PACKET) + (sizeof(WCHAR) * 40)))) ? ((256-16) + (sizeof(IO_ERROR_LOG_MESSAGE) - sizeof(IO_ERROR_LOG_PACKET) + (sizeof(WCHAR) * 40))) : 512) - (sizeof(IO_ERROR_LOG_MESSAGE) - sizeof(IO_ERROR_LOG_PACKET) + (sizeof(WCHAR) * 40))))
+ {
+ return;
+ }
+ packet = (PIO_ERROR_LOG_PACKET)IoAllocateErrorLogEntry(driver, (UCHAR)size);
+ if (packet == ((void *)0))
+ {
+ return;
+ }
+ memset((packet),0,(size));
+ packet->NumberOfStrings = 3;
+ packet->StringOffset = sizeof(IO_ERROR_LOG_PACKET);
+ packet->ErrorCode = ((NTSTATUS)0x4574312DL);
+ str = (UINT8*)packet + packet->StringOffset;
+ memcpy((str),(windivert_str),(windivert_size));
+ str += windivert_size;
+ memcpy((str),(msg_str),(msg_size));
+ str += msg_size;
+ memcpy((str),(pid_str),(pid_size));
+
+ IoWriteErrorLogEntry(packet);
+}
diff --git a/sys/WinDivert/x64/Release/windivert.log b/sys/WinDivert/x64/Release/windivert.log
new file mode 100644
index 00000000..5232a6ce
--- /dev/null
+++ b/sys/WinDivert/x64/Release/windivert.log
@@ -0,0 +1,9 @@
+ windivert.c
+windivert.rc(48): warning RC4005: 'VER_PRODUCTVERSION' : redefinition
+
+windivert.rc(49): warning RC4005: 'VER_PRODUCTVERSION_STR' : redefinition
+
+windivert.rc(50): warning RC4005: 'VER_COMPANYNAME_STR' : redefinition
+
+windivert.rc(56): warning RC4005: 'VER_PRODUCTNAME_STR' : redefinition
+
diff --git a/sys/WinDivert/x64/Release/windivert.res b/sys/WinDivert/x64/Release/windivert.res
new file mode 100644
index 00000000..af226632
Binary files /dev/null and b/sys/WinDivert/x64/Release/windivert.res differ
diff --git a/sys/WinDivert/x64/Release/windivert.vcxproj.FileListAbsolute.txt b/sys/WinDivert/x64/Release/windivert.vcxproj.FileListAbsolute.txt
new file mode 100644
index 00000000..e69de29b
diff --git a/sys/WinDivert64.Build.CppClean.log b/sys/WinDivert64.Build.CppClean.log
new file mode 100644
index 00000000..e69de29b
diff --git a/sys/obj/WinDivert64.Build.CppClean.log b/sys/obj/WinDivert64.Build.CppClean.log
new file mode 100644
index 00000000..e69de29b
diff --git a/sys/obj/windivert.log b/sys/obj/windivert.log
new file mode 100644
index 00000000..24c59e9a
--- /dev/null
+++ b/sys/obj/windivert.log
@@ -0,0 +1 @@
+C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppBuild.targets(456,5): error MSB8020: The build tools for WindowsKernelModeDriver10.0 (Platform Toolset = 'WindowsKernelModeDriver10.0') cannot be found. To build using the WindowsKernelModeDriver10.0 build tools, please install WindowsKernelModeDriver10.0 build tools. Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu or right-click the solution, and then selecting "Retarget solution".
diff --git a/sys/obj/windivert.vcxproj.FileListAbsolute.txt b/sys/obj/windivert.vcxproj.FileListAbsolute.txt
new file mode 100644
index 00000000..e69de29b
diff --git a/sys/obj/x64/Release/windivert.vcxproj.FileListAbsolute.txt b/sys/obj/x64/Release/windivert.vcxproj.FileListAbsolute.txt
new file mode 100644
index 00000000..e69de29b
diff --git a/sys/std.compat.i b/sys/std.compat.i
new file mode 100644
index 00000000..e69de29b
diff --git a/sys/std.i b/sys/std.i
new file mode 100644
index 00000000..e69de29b
diff --git a/sys/windivert - Copy.vcxproj b/sys/windivert - Copy.vcxproj
new file mode 100644
index 00000000..7ba43a2d
--- /dev/null
+++ b/sys/windivert - Copy.vcxproj
@@ -0,0 +1,94 @@
+
+
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+
+ .
+ .
+
+
+
+
+ false
+ MaxSpeed
+ ..\include;..\dll;.
+
+
+
+
+
+
+ v4.8
+ 16.0
+ WinDivert
+ WinDivert
+ {C1A6A244-A523-4F5E-933B-192BB4176681}
+ 10.0.22621.0
+
+
+
+ Windows11
+ false
+
+ Driver
+ KMDF
+ Windows Driver
+ DbgengKernelDebugger
+ false
+
+
+ v143
+ false
+
+
+ WindowsKernelModeDriver10.0
+ false
+ <_NT_TARGET_VERSION>10.0.22621.0
+ 10.0.26100
+
+
+
+ C:\Program Files (x86)\Windows Kits\10\Include\wdf\kmdf\1.33;C:\Users\kujax\OneDrive\Desktop\WinDivert-master\include;C:\Program Files %28x86%29\Windows Kits\10\Include\10.0.26100.0\km;$(IncludePath)
+
+
+ C:\Program Files (x86)\Windows Kits\10\Include\wdf\kmdf\1.33;C:\Users\kujax\OneDrive\Desktop\WinDivert-master\include;C:\Program Files %28x86%29\Windows Kits\10\Include\10.0.26100.0\km;$(IncludePath)
+ .sys
+ WinDivert64
+
+
+
+ _X86_=1;i386=1;STD_CALL;%(PreprocessorDefinitions);NDIS60;UNICODE;_UNICODE;NDIS_SUPPORT_NDIS60;NT;BINARY_COMPATIBLE=0
+ Default
+
+ MaxSpeed
+ true
+
+
+
+ %(AdditionalDependencies);$(KernelBufferOverflowLib);$(DDK_LIB_PATH)ntoskrnl.lib;$(DDK_LIB_PATH)hal.lib;$(DDK_LIB_PATH)wmilib.lib;$(KMDF_LIB_PATH)$(KMDF_VER_PATH)\WdfLdr.lib;$(KMDF_LIB_PATH)$(KMDF_VER_PATH)\WdfDriverEntry.lib;$(DDK_LIB_PATH)\wdmsec.lib;$(DDK_LIB_PATH)\ndis.lib;$(DDK_LIB_PATH)\fwpkclnt.lib;$(SDK_LIB_PATH)\uuid.lib
+
+
+
+
+ _WIN64;_AMD64_;AMD64;%(PreprocessorDefinitions);NDIS60;UNICODE;_UNICODE;NDIS_SUPPORT_NDIS60;NT;BINARY_COMPATIBLE=0
+ true
+ Default
+
+ MaxSpeed
+
+
+
+ %(AdditionalDependencies);$(KernelBufferOverflowLib);$(DDK_LIB_PATH)ntoskrnl.lib;$(DDK_LIB_PATH)hal.lib;$(DDK_LIB_PATH)wmilib.lib;$(KMDF_LIB_PATH)$(KMDF_VER_PATH)\WdfLdr.lib;$(KMDF_LIB_PATH)$(KMDF_VER_PATH)\WdfDriverEntry.lib;$(DDK_LIB_PATH)\wdmsec.lib;$(DDK_LIB_PATH)\ndis.lib;$(DDK_LIB_PATH)\fwpkclnt.lib;$(SDK_LIB_PATH)\uuid.lib
+
+
+
+
\ No newline at end of file
diff --git a/sys/windivert - Copy.vcxproj.user b/sys/windivert - Copy.vcxproj.user
new file mode 100644
index 00000000..88a55094
--- /dev/null
+++ b/sys/windivert - Copy.vcxproj.user
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/sys/windivert.c b/sys/windivert.c
index 05501754..395c58df 100644
--- a/sys/windivert.c
+++ b/sys/windivert.c
@@ -21,12 +21,12 @@
* the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
- *
+ *
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
- *
+ *
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
@@ -45,9 +45,9 @@
#include "windivert_device.h"
#include "windivert_log.h"
-/*
- * WDK function declaration cruft.
- */
+ /*
+ * WDK function declaration cruft.
+ */
DRIVER_INITIALIZE DriverEntry;
EVT_WDF_DRIVER_UNLOAD windivert_unload;
EVT_WDF_IO_IN_CALLER_CONTEXT windivert_caller_context;
@@ -62,7 +62,7 @@ EVT_WDF_WORKITEM windivert_reflect_worker;
/*
* Debugging macros.
*/
-// #define DEBUG_ON
+ // #define DEBUG_ON
#ifdef DEBUG_ON
#define DEBUG(format, ...) \
DbgPrint("WINDIVERT: " format "\n", ##__VA_ARGS__)
@@ -90,14 +90,14 @@ static void DEBUG_BOUNDS_CHECK(PVOID start, PVOID end, PVOID access_start,
/*
* WinDivert reflect event.
*/
-typedef struct context_s *context_t;
+typedef struct context_s* context_t;
struct reflect_event_s
{
LIST_ENTRY entry; // Entry.
context_t context; // Context.
WINDIVERT_EVENT event; // Event.
};
-typedef struct reflect_event_s *reflect_event_t;
+typedef struct reflect_event_s* reflect_event_t;
/*
* WinDivert reflect context information.
@@ -120,9 +120,9 @@ struct reflect_context_s
typedef enum
{
WINDIVERT_CONTEXT_STATE_OPENING = 0xA0, // Context is opening.
- WINDIVERT_CONTEXT_STATE_OPEN = 0xB1, // Context is open.
+ WINDIVERT_CONTEXT_STATE_OPEN = 0xB1, // Context is open.
WINDIVERT_CONTEXT_STATE_CLOSING = 0xC2, // Context is closing.
- WINDIVERT_CONTEXT_STATE_CLOSED = 0xD3, // Context is closed.
+ WINDIVERT_CONTEXT_STATE_CLOSED = 0xD3, // Context is closed.
} context_state_t;
struct context_s
{
@@ -154,12 +154,12 @@ struct context_s
UINT32 priority; // Context (internal) priority.
INT16 priority16; // Context (user) priority.
GUID callout_guid[WINDIVERT_CONTEXT_MAXLAYERS];
- // Callout GUIDs.
+ // Callout GUIDs.
GUID filter_guid[WINDIVERT_CONTEXT_MAXLAYERS];
- // Filter GUIDs.
+ // Filter GUIDs.
BOOL installed[WINDIVERT_CONTEXT_MAXLAYERS];// What is installed?
HANDLE engine_handle; // WFP engine handle.
- const WINDIVERT_FILTER *filter; // Packet filter.
+ const WINDIVERT_FILTER* filter; // Packet filter.
UINT16 filter_len; // Length of filter.
UINT64 filter_flags; // Filter flags.
struct reflect_context_s reflect; // Reflection info.
@@ -175,28 +175,28 @@ WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(context_s, windivert_context_get);
* WinDivert Layer information.
*/
typedef void (*windivert_classify_t)(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result);
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result);
typedef void (*windivert_flow_delete_notify_t)(
IN UINT16 layer_id, IN UINT32 callout_id, IN UINT64 flow_context);
struct layer_s
{
- wchar_t *sublayer_name; // Sub-layer name.
- wchar_t *sublayer_desc; // Sub-layer description.
- wchar_t *callout_name; // Call-out name.
- wchar_t *callout_desc; // Call-out description.
- wchar_t *filter_name; // Filter name.
- wchar_t *filter_desc; // Filter description.
- const GUID *layer_guid; // WFP layer GUID.
- const GUID *sublayer_guid; // Sub-layer GUID.
+ wchar_t* sublayer_name; // Sub-layer name.
+ wchar_t* sublayer_desc; // Sub-layer description.
+ wchar_t* callout_name; // Call-out name.
+ wchar_t* callout_desc; // Call-out description.
+ wchar_t* filter_name; // Filter name.
+ wchar_t* filter_desc; // Filter description.
+ const GUID* layer_guid; // WFP layer GUID.
+ const GUID* sublayer_guid; // Sub-layer GUID.
windivert_classify_t classify; // Classify function.
windivert_flow_delete_notify_t flow_delete;
- // Flow delete function.
+ // Flow delete function.
UINT16 sublayer_weight; // Sub-layer weight.
};
-typedef const struct layer_s *layer_t;
+typedef const struct layer_s* layer_t;
/*
* WinDivert request context.
@@ -204,11 +204,11 @@ typedef const struct layer_s *layer_t;
struct req_context_s
{
PWINDIVERT_ADDRESS addr; // Pointer to address structure.
- UINT *addr_len_ptr; // Pointer to address length.
+ UINT* addr_len_ptr; // Pointer to address length.
UINT addr_len; // Address length (in bytes).
};
typedef struct req_context_s req_context_s;
-typedef struct req_context_s *req_context_t;
+typedef struct req_context_s* req_context_t;
WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(req_context_s, windivert_req_context_get);
/*
@@ -232,26 +232,26 @@ struct packet_s
{
LIST_ENTRY entry; // Entry for queue.
LONGLONG timestamp; // Packet timestamp.
- UINT32 layer:8; // Layer.
- UINT32 event:8; // Event.
- UINT32 sniffed:1; // Packet was sniffed?
- UINT32 outbound:1; // Packet is outound?
- UINT32 loopback:1; // Packet is loopback?
- UINT32 impostor:1; // Packet is impostor?
- UINT32 ipv6:1; // Packet is IPv6?
- UINT32 ip_checksum:1; // Packet has IPv4 checksum?
- UINT32 tcp_checksum:1; // Packet has TCP checksum?
- UINT32 udp_checksum:1; // Packet has UDP checksum?
- UINT32 icmp_checksum:1; // Packet has ICMP(V6) checksum?
- UINT32 match:1; // Packet matches filter?
- UINT32 padding:6; // Padding for alignment.
+ UINT32 layer : 8; // Layer.
+ UINT32 event : 8; // Event.
+ UINT32 sniffed : 1; // Packet was sniffed?
+ UINT32 outbound : 1; // Packet is outound?
+ UINT32 loopback : 1; // Packet is loopback?
+ UINT32 impostor : 1; // Packet is impostor?
+ UINT32 ipv6 : 1; // Packet is IPv6?
+ UINT32 ip_checksum : 1; // Packet has IPv4 checksum?
+ UINT32 tcp_checksum : 1; // Packet has TCP checksum?
+ UINT32 udp_checksum : 1; // Packet has UDP checksum?
+ UINT32 icmp_checksum : 1; // Packet has ICMP(V6) checksum?
+ UINT32 match : 1; // Packet matches filter?
+ UINT32 padding : 6; // Padding for alignment.
UINT32 packet_size; // Packet total size.
PVOID object; // Object associated with packet.
UINT32 priority; // Packet priority.
UINT32 packet_len; // Length of the packet.
WINDIVERT_DATA_ALIGN UINT8 data[1]; // Packet/layer data.
};
-typedef struct packet_s *packet_t;
+typedef struct packet_s* packet_t;
#define WINDIVERT_DATA_SIZE(size) \
((((size) + WINDIVERT_ALIGN_SIZE - 1) / WINDIVERT_ALIGN_SIZE) * \
@@ -274,14 +274,14 @@ struct flow_s
UINT64 flow_id; // WFP flow ID.
UINT32 callout_id; // WFP callout ID.
UINT16 layer_id; // WFP layout ID.
- BOOL inserted:1; // Flow inserted into context?
- BOOL deleted:1; // Flow deleted from context?
- BOOL outbound:1; // Flow is outound?
- BOOL loopback:1; // Flow is loopback?
- BOOL ipv6:1; // Flow is ipv6?
+ BOOL inserted : 1; // Flow inserted into context?
+ BOOL deleted : 1; // Flow deleted from context?
+ BOOL outbound : 1; // Flow is outound?
+ BOOL loopback : 1; // Flow is loopback?
+ BOOL ipv6 : 1; // Flow is ipv6?
WINDIVERT_DATA_FLOW data; // Flow data.
};
-typedef struct flow_s *flow_t;
+typedef struct flow_s* flow_t;
/*
* Misc.
@@ -291,9 +291,9 @@ typedef struct flow_s *flow_t;
#define UINT32_MAX 0xFFFFFFFF
#define IPPROTO_MH 135
-/*
- * Global state.
- */
+ /*
+ * Global state.
+ */
static HANDLE inject_handle_forward = NULL;
static HANDLE injectv6_handle_forward = NULL;
static HANDLE inject_handle_in = NULL;
@@ -307,7 +307,7 @@ static LONG priority_counter = 0;
static LONGLONG counts_per_ms = 0;
static POOL_TYPE non_paged_pool = NonPagedPool;
static MM_PAGE_PRIORITY no_write_flag = 0;
-static MM_PAGE_PRIORITY no_exec_flag = 0;
+static MM_PAGE_PRIORITY no_exec_flag = 0;
static LONG64 num_opens = 0;
/*
@@ -338,7 +338,7 @@ static NTSTATUS windivert_install_sublayer(layer_t layer);
static NTSTATUS windivert_install_callouts(context_t context, UINT8 layer,
UINT64 flags);
static NTSTATUS windivert_install_callout(context_t context, UINT idx,
- layer_t layer, UINT32 *callout_id_ptr);
+ layer_t layer, UINT32* callout_id_ptr);
static void windivert_uninstall_callouts(context_t context,
context_state_t state);
extern VOID windivert_cleanup(IN WDFFILEOBJECT object);
@@ -346,123 +346,123 @@ extern VOID windivert_close(IN WDFFILEOBJECT object);
extern VOID windivert_destroy(IN WDFOBJECT object);
static NTSTATUS windivert_write(context_t context, WDFREQUEST request,
req_context_t req_context);
-static void NTAPI windivert_inject_complete(VOID *context,
- NET_BUFFER_LIST *packets, BOOLEAN dispatch_level);
+static void NTAPI windivert_inject_complete(VOID* context,
+ NET_BUFFER_LIST* packets, BOOLEAN dispatch_level);
static void windivert_inject_packet_too_big(packet_t packet);
static NTSTATUS windivert_notify(IN FWPS_CALLOUT_NOTIFY_TYPE type,
- IN const GUID *filter_key, IN const FWPS_FILTER0 *filter);
+ IN const GUID* filter_key, IN const FWPS_FILTER0* filter);
static void windivert_outbound_network_v4_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result);
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result);
static void windivert_inbound_network_v4_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result);
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result);
static void windivert_outbound_network_v6_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result);
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result);
static void windivert_inbound_network_v6_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result);
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result);
static void windivert_forward_network_v4_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result);
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result);
static void windivert_forward_network_v6_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result);
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result);
static void windivert_flow_established_v4_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result);
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result);
static void windivert_flow_established_v6_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result);
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result);
static void windivert_resource_assignment_v4_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result);
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result);
static void windivert_resource_assignment_v6_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result);
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result);
static void windivert_resource_release_v4_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result);
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result);
static void windivert_resource_release_v6_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result);
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result);
static void windivert_auth_connect_v4_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result);
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result);
static void windivert_auth_connect_v6_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result);
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result);
static void windivert_endpoint_closure_v4_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result);
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result);
static void windivert_endpoint_closure_v6_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result);
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result);
static void windivert_auth_listen_v4_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result);
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result);
static void windivert_auth_listen_v6_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result);
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result);
static void windivert_auth_recv_accept_v4_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result);
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result);
static void windivert_auth_recv_accept_v6_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result);
-static void windivert_flow_established_classify(context_t context,
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result);
+static void windivert_flow_established_classify(context_t context,
IN UINT64 flow_id, IN PWINDIVERT_DATA_FLOW flow_data, IN BOOL ipv4,
- IN BOOL outbound, IN BOOL loopback, OUT FWPS_CLASSIFY_OUT0 *result);
+ IN BOOL outbound, IN BOOL loopback, OUT FWPS_CLASSIFY_OUT0* result);
static void windivert_flow_delete_notify(UINT16 layer_id, UINT32 callout_id,
UINT64 flow_context);
static void windivert_socket_classify(context_t context,
PWINDIVERT_DATA_SOCKET socket_data, WINDIVERT_EVENT event, BOOL ipv4,
- BOOL outbound, BOOL loopback, FWPS_CLASSIFY_OUT0 *result);
+ BOOL outbound, BOOL loopback, FWPS_CLASSIFY_OUT0* result);
static void windivert_network_classify(context_t context,
IN PWINDIVERT_DATA_NETWORK network_data, IN BOOL ipv4, IN BOOL outbound,
- IN BOOL loopback, IN BOOL reassembled, IN UINT advance, IN OUT void *data,
- OUT FWPS_CLASSIFY_OUT0 *result);
+ IN BOOL loopback, IN BOOL reassembled, IN UINT advance, IN OUT void* data,
+ OUT FWPS_CLASSIFY_OUT0* result);
static BOOL windivert_queue_work(context_t context, PVOID packet,
ULONG packet_len, PNET_BUFFER_LIST buffers, PVOID object,
WINDIVERT_LAYER layer, PVOID layer_data, WINDIVERT_EVENT event,
@@ -475,17 +475,17 @@ static BOOL windivert_copy_data(PNET_BUFFER buffer, PVOID data, UINT size);
static BOOL windivert_get_data(PNET_BUFFER buffer, UINT length, INT min,
INT max, INT idx, PVOID data, UINT size);
static BOOL windivert_parse_headers(PNET_BUFFER buffer, BOOL ipv4,
- BOOL *fragment_ptr, PWINDIVERT_IPHDR *ip_header_ptr,
- PWINDIVERT_IPV6HDR *ipv6_header_ptr, PWINDIVERT_ICMPHDR *icmp_header_ptr,
- PWINDIVERT_ICMPV6HDR *icmpv6_header_ptr, PWINDIVERT_TCPHDR *tcp_header_ptr,
- PWINDIVERT_UDPHDR *udp_header_ptr, UINT8 *proto_ptr, UINT *header_len_ptr,
- UINT *payload_len_ptr);
+ BOOL* fragment_ptr, PWINDIVERT_IPHDR* ip_header_ptr,
+ PWINDIVERT_IPV6HDR* ipv6_header_ptr, PWINDIVERT_ICMPHDR* icmp_header_ptr,
+ PWINDIVERT_ICMPV6HDR* icmpv6_header_ptr, PWINDIVERT_TCPHDR* tcp_header_ptr,
+ PWINDIVERT_UDPHDR* udp_header_ptr, UINT8* proto_ptr, UINT* header_len_ptr,
+ UINT* payload_len_ptr);
static BOOL windivert_filter(PNET_BUFFER buffer, WINDIVERT_LAYER layer,
- const VOID *layer_data, LONGLONG timestamp, WINDIVERT_EVENT event,
+ const VOID* layer_data, LONGLONG timestamp, WINDIVERT_EVENT event,
BOOL ipv4, BOOL outbound, BOOL loopback, BOOL impostor, BOOL frag_mode,
- const WINDIVERT_FILTER *filter);
-static const WINDIVERT_FILTER *windivert_filter_compile(
- const WINDIVERT_FILTER *ioctl_filter, size_t ioctl_filter_len,
+ const WINDIVERT_FILTER* filter);
+static const WINDIVERT_FILTER* windivert_filter_compile(
+ const WINDIVERT_FILTER* ioctl_filter, size_t ioctl_filter_len,
WINDIVERT_LAYER layer);
static NTSTATUS windivert_reflect_init(WDFOBJECT parent);
static void windivert_reflect_close(void);
@@ -497,7 +497,7 @@ static void windivert_reflect_established_notify(context_t context,
LONGLONG timestamp);
extern void windivert_reflect_worker(IN WDFWORKITEM item);
static void windivert_log_event(PEPROCESS process, PDRIVER_OBJECT driver,
- const wchar_t *msg_str);
+ const wchar_t* msg_str);
/*
* WinDivert provider GUIDs
@@ -923,22 +923,22 @@ static const struct layer_s windivert_layer_flow_established_ipv6 =
windivert_get_data((PNET_BUFFER)(packet), (packet_len), (min), (max), \
(index), (data), (size))
-/*
- * Shared functions.
- */
+ /*
+ * Shared functions.
+ */
#include "windivert_shared.c"
-/*
- * WinDivert malloc/free.
- */
+ /*
+ * WinDivert malloc/free.
+ */
static PVOID windivert_malloc(SIZE_T size, BOOL paged)
{
- POOL_TYPE pool = (paged? PagedPool: non_paged_pool);
+ POOL_TYPE pool = (paged ? PagedPool : non_paged_pool);
if (size == 0)
{
return NULL;
}
- return ExAllocatePoolWithTag(pool, size, WINDIVERT_TAG);
+ return ExAllocatePool2(pool, size, WINDIVERT_TAG);
}
static VOID windivert_free(PVOID ptr)
{
@@ -982,17 +982,17 @@ extern NTSTATUS DriverEntry(IN PDRIVER_OBJECT driver_obj,
(version.dwMajorVersion == 6 && version.dwMinorVersion >= 2))
{
non_paged_pool = (POOL_TYPE)512; // NonPagedPoolNx (documented)
- no_exec_flag = (MM_PAGE_PRIORITY)0x40000000;
- // MdlMappingNoExecute
- no_write_flag = (MM_PAGE_PRIORITY)0x80000000;
- // MdlMappingNoWrite
+ no_exec_flag = (MM_PAGE_PRIORITY)0x40000000;
+ // MdlMappingNoExecute
+ no_write_flag = (MM_PAGE_PRIORITY)0x80000000;
+ // MdlMappingNoWrite
}
}
// Initialize timer info.
KeQueryPerformanceCounter(&freq);
counts_per_ms = freq.QuadPart / 1000;
- counts_per_ms = (counts_per_ms == 0? 1: counts_per_ms);
+ counts_per_ms = (counts_per_ms == 0 ? 1 : counts_per_ms);
// Configure ourself as a non-PnP driver:
WDF_DRIVER_CONFIG_INIT(&config, WDF_NO_EVENT_CALLBACK);
@@ -1042,8 +1042,8 @@ extern NTSTATUS DriverEntry(IN PDRIVER_OBJECT driver_obj,
}
WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE(&queue_config,
WdfIoQueueDispatchParallel);
- queue_config.EvtIoRead = NULL;
- queue_config.EvtIoWrite = NULL;
+ queue_config.EvtIoRead = NULL;
+ queue_config.EvtIoWrite = NULL;
queue_config.EvtIoDeviceControl = windivert_ioctl;
WDF_OBJECT_ATTRIBUTES_INIT(&obj_attrs);
obj_attrs.ExecutionLevel = WdfExecutionLevelPassive;
@@ -1178,7 +1178,7 @@ extern NTSTATUS DriverEntry(IN PDRIVER_OBJECT driver_obj,
status = windivert_install_sublayer(WINDIVERT_LAYER_INBOUND_NETWORK_IPV4);
if (!NT_SUCCESS(status))
{
-driver_entry_sublayer_error:
+ driver_entry_sublayer_error:
DEBUG_ERROR("failed to install WFP sub-layer", status);
FwpmTransactionAbort0(engine_handle);
goto driver_entry_exit;
@@ -1425,11 +1425,10 @@ static void windivert_driver_unload(void)
static NTSTATUS windivert_install_provider()
{
FWPM_PROVIDER0 provider;
- NTSTATUS status;
RtlZeroMemory(&provider, sizeof(provider));
- provider.providerKey = WINDIVERT_PROVIDER_GUID;
- provider.displayData.name = WINDIVERT_PROVIDER_NAME;
+ provider.providerKey = WINDIVERT_PROVIDER_GUID;
+ provider.displayData.name = WINDIVERT_PROVIDER_NAME;
provider.displayData.description = WINDIVERT_PROVIDER_DESC;
// We don't care about the install result as this provider
@@ -1447,17 +1446,17 @@ static NTSTATUS windivert_install_sublayer(layer_t layer)
NTSTATUS status;
RtlZeroMemory(&sublayer, sizeof(sublayer));
- sublayer.subLayerKey = *(layer->sublayer_guid);
- sublayer.displayData.name = layer->sublayer_name;
+ sublayer.subLayerKey = *(layer->sublayer_guid);
+ sublayer.displayData.name = layer->sublayer_name;
sublayer.displayData.description = layer->sublayer_desc;
- sublayer.weight = layer->sublayer_weight;
+ sublayer.weight = layer->sublayer_weight;
status = FwpmSubLayerAdd0(engine_handle, &sublayer, NULL);
if (!NT_SUCCESS(status))
{
DEBUG_ERROR("failed to add WFP sub-layer", status);
}
-
+
return status;
}
@@ -1480,7 +1479,7 @@ extern VOID windivert_create(IN WDFDEVICE device, IN WDFREQUEST request,
// Initialise the new context:
RtlZeroMemory(context, sizeof(struct context_s));
- context->state = WINDIVERT_CONTEXT_STATE_OPENING;
+ context->state = WINDIVERT_CONTEXT_STATE_OPENING;
context->device = device;
context->object = object;
context->work_queue_length = 0;
@@ -1595,117 +1594,117 @@ static NTSTATUS windivert_install_callouts(context_t context, UINT8 layer,
{
UINT8 i, j;
layer_t layers[WINDIVERT_CONTEXT_MAXLAYERS];
- UINT32 *callout_ids[WINDIVERT_CONTEXT_MAXLAYERS] = {NULL};
+ UINT32* callout_ids[WINDIVERT_CONTEXT_MAXLAYERS] = { NULL };
BOOL inbound, outbound, ipv4, ipv6, bind, connect, listen,
accept, close;
NTSTATUS status = STATUS_SUCCESS;
- inbound = ((flags & WINDIVERT_FILTER_FLAG_INBOUND) != 0);
+ inbound = ((flags & WINDIVERT_FILTER_FLAG_INBOUND) != 0);
outbound = ((flags & WINDIVERT_FILTER_FLAG_OUTBOUND) != 0);
- ipv4 = ((flags & WINDIVERT_FILTER_FLAG_IP) != 0);
- ipv6 = ((flags & WINDIVERT_FILTER_FLAG_IPV6) != 0);
- bind = ((flags & WINDIVERT_FILTER_FLAG_EVENT_SOCKET_BIND) != 0);
- connect = ((flags & WINDIVERT_FILTER_FLAG_EVENT_SOCKET_CONNECT) != 0);
- listen = ((flags & WINDIVERT_FILTER_FLAG_EVENT_SOCKET_LISTEN) != 0);
- accept = ((flags & WINDIVERT_FILTER_FLAG_EVENT_SOCKET_ACCEPT) != 0);
- close = ((flags & WINDIVERT_FILTER_FLAG_EVENT_SOCKET_CLOSE) != 0);
+ ipv4 = ((flags & WINDIVERT_FILTER_FLAG_IP) != 0);
+ ipv6 = ((flags & WINDIVERT_FILTER_FLAG_IPV6) != 0);
+ bind = ((flags & WINDIVERT_FILTER_FLAG_EVENT_SOCKET_BIND) != 0);
+ connect = ((flags & WINDIVERT_FILTER_FLAG_EVENT_SOCKET_CONNECT) != 0);
+ listen = ((flags & WINDIVERT_FILTER_FLAG_EVENT_SOCKET_LISTEN) != 0);
+ accept = ((flags & WINDIVERT_FILTER_FLAG_EVENT_SOCKET_ACCEPT) != 0);
+ close = ((flags & WINDIVERT_FILTER_FLAG_EVENT_SOCKET_CLOSE) != 0);
i = 0;
switch (layer)
{
- case WINDIVERT_LAYER_NETWORK:
- if (inbound && ipv4)
- {
- layers[i++] = WINDIVERT_LAYER_INBOUND_NETWORK_IPV4;
- }
- if (outbound && ipv4)
- {
- layers[i++] = WINDIVERT_LAYER_OUTBOUND_NETWORK_IPV4;
- }
- if (inbound && ipv6)
- {
- layers[i++] = WINDIVERT_LAYER_INBOUND_NETWORK_IPV6;
- }
- if (outbound && ipv6)
- {
- layers[i++] = WINDIVERT_LAYER_OUTBOUND_NETWORK_IPV6;
- }
- break;
+ case WINDIVERT_LAYER_NETWORK:
+ if (inbound && ipv4)
+ {
+ layers[i++] = WINDIVERT_LAYER_INBOUND_NETWORK_IPV4;
+ }
+ if (outbound && ipv4)
+ {
+ layers[i++] = WINDIVERT_LAYER_OUTBOUND_NETWORK_IPV4;
+ }
+ if (inbound && ipv6)
+ {
+ layers[i++] = WINDIVERT_LAYER_INBOUND_NETWORK_IPV6;
+ }
+ if (outbound && ipv6)
+ {
+ layers[i++] = WINDIVERT_LAYER_OUTBOUND_NETWORK_IPV6;
+ }
+ break;
- case WINDIVERT_LAYER_NETWORK_FORWARD:
- if (ipv4)
- {
- layers[i++] = WINDIVERT_LAYER_FORWARD_NETWORK_IPV4;
- }
- if (ipv6)
- {
- layers[i++] = WINDIVERT_LAYER_FORWARD_NETWORK_IPV6;
- }
- break;
-
- case WINDIVERT_LAYER_FLOW:
- if (ipv4)
- {
- callout_ids[i] = &context->flow_v4_callout_id;
- layers[i++] = WINDIVERT_LAYER_FLOW_ESTABLISHED_IPV4;
- }
- if (ipv6)
- {
- callout_ids[i] = &context->flow_v6_callout_id;
- layers[i++] = WINDIVERT_LAYER_FLOW_ESTABLISHED_IPV6;
- }
- break;
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ if (ipv4)
+ {
+ layers[i++] = WINDIVERT_LAYER_FORWARD_NETWORK_IPV4;
+ }
+ if (ipv6)
+ {
+ layers[i++] = WINDIVERT_LAYER_FORWARD_NETWORK_IPV6;
+ }
+ break;
- case WINDIVERT_LAYER_SOCKET:
- if (ipv4 && bind)
- {
- layers[i++] = WINDIVERT_LAYER_RESOURCE_ASSIGNMENT_IPV4;
- }
- if (ipv4 && connect)
- {
- layers[i++] = WINDIVERT_LAYER_AUTH_CONNECT_IPV4;
- }
- if (ipv4 && listen)
- {
- layers[i++] = WINDIVERT_LAYER_AUTH_LISTEN_IPV4;
- }
- if (ipv4 && accept)
- {
- layers[i++] = WINDIVERT_LAYER_AUTH_RECV_ACCEPT_IPV4;
- }
- if (ipv4 && close)
- {
- layers[i++] = WINDIVERT_LAYER_RESOURCE_RELEASE_IPV4;
- layers[i++] = WINDIVERT_LAYER_ENDPOINT_CLOSURE_IPV4;
- }
- if (ipv6 && bind)
- {
- layers[i++] = WINDIVERT_LAYER_RESOURCE_ASSIGNMENT_IPV6;
- }
- if (ipv6 && connect)
- {
- layers[i++] = WINDIVERT_LAYER_AUTH_CONNECT_IPV6;
- }
- if (ipv6 && listen)
- {
- layers[i++] = WINDIVERT_LAYER_AUTH_LISTEN_IPV6;
- }
- if (ipv6 && accept)
- {
- layers[i++] = WINDIVERT_LAYER_AUTH_RECV_ACCEPT_IPV6;
- }
- if (ipv6 && close)
- {
- layers[i++] = WINDIVERT_LAYER_RESOURCE_RELEASE_IPV6;
- layers[i++] = WINDIVERT_LAYER_ENDPOINT_CLOSURE_IPV6;
- }
- break;
+ case WINDIVERT_LAYER_FLOW:
+ if (ipv4)
+ {
+ callout_ids[i] = &context->flow_v4_callout_id;
+ layers[i++] = WINDIVERT_LAYER_FLOW_ESTABLISHED_IPV4;
+ }
+ if (ipv6)
+ {
+ callout_ids[i] = &context->flow_v6_callout_id;
+ layers[i++] = WINDIVERT_LAYER_FLOW_ESTABLISHED_IPV6;
+ }
+ break;
- case WINDIVERT_LAYER_REFLECT:
- break;
+ case WINDIVERT_LAYER_SOCKET:
+ if (ipv4 && bind)
+ {
+ layers[i++] = WINDIVERT_LAYER_RESOURCE_ASSIGNMENT_IPV4;
+ }
+ if (ipv4 && connect)
+ {
+ layers[i++] = WINDIVERT_LAYER_AUTH_CONNECT_IPV4;
+ }
+ if (ipv4 && listen)
+ {
+ layers[i++] = WINDIVERT_LAYER_AUTH_LISTEN_IPV4;
+ }
+ if (ipv4 && accept)
+ {
+ layers[i++] = WINDIVERT_LAYER_AUTH_RECV_ACCEPT_IPV4;
+ }
+ if (ipv4 && close)
+ {
+ layers[i++] = WINDIVERT_LAYER_RESOURCE_RELEASE_IPV4;
+ layers[i++] = WINDIVERT_LAYER_ENDPOINT_CLOSURE_IPV4;
+ }
+ if (ipv6 && bind)
+ {
+ layers[i++] = WINDIVERT_LAYER_RESOURCE_ASSIGNMENT_IPV6;
+ }
+ if (ipv6 && connect)
+ {
+ layers[i++] = WINDIVERT_LAYER_AUTH_CONNECT_IPV6;
+ }
+ if (ipv6 && listen)
+ {
+ layers[i++] = WINDIVERT_LAYER_AUTH_LISTEN_IPV6;
+ }
+ if (ipv6 && accept)
+ {
+ layers[i++] = WINDIVERT_LAYER_AUTH_RECV_ACCEPT_IPV6;
+ }
+ if (ipv6 && close)
+ {
+ layers[i++] = WINDIVERT_LAYER_RESOURCE_RELEASE_IPV6;
+ layers[i++] = WINDIVERT_LAYER_ENDPOINT_CLOSURE_IPV6;
+ }
+ break;
- default:
- return STATUS_INVALID_PARAMETER;
+ case WINDIVERT_LAYER_REFLECT:
+ break;
+
+ default:
+ return STATUS_INVALID_PARAMETER;
}
for (j = 0; j < i; j++)
@@ -1732,7 +1731,7 @@ static NTSTATUS windivert_install_callouts(context_t context, UINT8 layer,
* Register a WFP callout.
*/
static NTSTATUS windivert_install_callout(context_t context, UINT idx,
- layer_t layer, UINT32 *callout_id_ptr)
+ layer_t layer, UINT32* callout_id_ptr)
{
KLOCK_QUEUE_HANDLE lock_handle;
FWPS_CALLOUT0 scallout;
@@ -1761,28 +1760,28 @@ static NTSTATUS windivert_install_callout(context_t context, UINT idx,
KeReleaseInStackQueuedSpinLock(&lock_handle);
weight = (UINT64)priority;
-
+
RtlZeroMemory(&scallout, sizeof(scallout));
- scallout.calloutKey = callout_guid;
- scallout.classifyFn = layer->classify;
- scallout.notifyFn = windivert_notify;
- scallout.flowDeleteFn = layer->flow_delete;
+ scallout.calloutKey = callout_guid;
+ scallout.classifyFn = layer->classify;
+ scallout.notifyFn = windivert_notify;
+ scallout.flowDeleteFn = layer->flow_delete;
RtlZeroMemory(&mcallout, sizeof(mcallout));
- mcallout.calloutKey = callout_guid;
- mcallout.displayData.name = layer->callout_name;
+ mcallout.calloutKey = callout_guid;
+ mcallout.displayData.name = layer->callout_name;
mcallout.displayData.description = layer->callout_desc;
- mcallout.applicableLayer = *(layer->layer_guid);
+ mcallout.applicableLayer = *(layer->layer_guid);
RtlZeroMemory(&filter, sizeof(filter));
- filter.filterKey = filter_guid;
- filter.layerKey = *(layer->layer_guid);
- filter.displayData.name = layer->filter_name;
- filter.displayData.description = layer->filter_desc;
- filter.action.type = FWP_ACTION_CALLOUT_UNKNOWN;
- filter.action.calloutKey = callout_guid;
- filter.subLayerKey = *(layer->sublayer_guid);
- filter.weight.type = FWP_UINT64;
- filter.weight.uint64 = &weight;
- filter.rawContext = (UINT64)context;
+ filter.filterKey = filter_guid;
+ filter.layerKey = *(layer->layer_guid);
+ filter.displayData.name = layer->filter_name;
+ filter.displayData.description = layer->filter_desc;
+ filter.action.type = FWP_ACTION_CALLOUT_UNKNOWN;
+ filter.action.calloutKey = callout_guid;
+ filter.subLayerKey = *(layer->sublayer_guid);
+ filter.weight.type = FWP_UINT64;
+ filter.weight.uint64 = &weight;
+ filter.rawContext = (UINT64)context;
status = FwpsCalloutRegister0(WdfDeviceWdmGetDeviceObject(device),
&scallout, &callout_id);
if (!NT_SUCCESS(status))
@@ -1856,7 +1855,7 @@ static void windivert_uninstall_callouts(context_t context,
KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
if (context->state != state)
{
-windivert_uninstall_callouts_error:
+ windivert_uninstall_callouts_error:
KeReleaseInStackQueuedSpinLock(&lock_handle);
status = STATUS_INVALID_DEVICE_STATE;
DEBUG_ERROR("failed to delete filters and callouts", status);
@@ -1962,17 +1961,17 @@ extern VOID windivert_cleanup(IN WDFFILEOBJECT object)
LONGLONG timestamp;
BOOL sniff_mode, timeout, forward;
NTSTATUS status;
-
+
DEBUG("CLEANUP: cleaning up WinDivert context (context=%p)", context);
windivert_reflect_close_event(context);
timestamp = KeQueryPerformanceCounter(NULL).QuadPart;
-
+
KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
if (context->state != WINDIVERT_CONTEXT_STATE_OPENING &&
- context->state != WINDIVERT_CONTEXT_STATE_OPEN)
+ context->state != WINDIVERT_CONTEXT_STATE_OPEN)
{
-windivert_cleanup_error:
+ windivert_cleanup_error:
KeReleaseInStackQueuedSpinLock(&lock_handle);
status = STATUS_INVALID_DEVICE_STATE;
DEBUG_ERROR("failed to verify state for cleanup routine", status);
@@ -2063,9 +2062,9 @@ extern VOID windivert_close(IN WDFFILEOBJECT object)
KLOCK_QUEUE_HANDLE lock_handle;
context_t context = windivert_context_get(object);
NTSTATUS status;
-
+
DEBUG("CLOSE: closing WinDivert context (context=%p)", context);
-
+
KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
if (context->state != WINDIVERT_CONTEXT_STATE_CLOSING)
{
@@ -2085,7 +2084,7 @@ extern VOID windivert_destroy(IN WDFOBJECT object)
{
KLOCK_QUEUE_HANDLE lock_handle;
context_t context = windivert_context_get((WDFFILEOBJECT)object);
- const WINDIVERT_FILTER *filter;
+ const WINDIVERT_FILTER* filter;
NTSTATUS status;
DEBUG("DESTROY: destroying WinDivert context (context=%p)", context);
@@ -2160,14 +2159,14 @@ static void windivert_read_service_request(context_t context, packet_t packet,
KLOCK_QUEUE_HANDLE lock_handle;
PLIST_ENTRY entry;
PMDL dst_mdl;
- UINT8 *layer_data, *src, *dst;
+ UINT8* layer_data, * src, * dst;
ULONG dst_len, src_len, read_len = 0;
BOOL timeout;
packet_t new_packet;
req_context_t req_context;
PWINDIVERT_ADDRESS addr;
UINT i, addr_len, addr_len_max;
- UINT *addr_len_ptr;
+ UINT* addr_len_ptr;
NTSTATUS status;
if (request == NULL)
@@ -2183,134 +2182,134 @@ static void windivert_read_service_request(context_t context, packet_t packet,
// Get the packet and address buffers:
switch (packet->layer)
{
- case WINDIVERT_LAYER_NETWORK:
- case WINDIVERT_LAYER_NETWORK_FORWARD:
- case WINDIVERT_LAYER_REFLECT:
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ case WINDIVERT_LAYER_REFLECT:
- status = WdfRequestRetrieveOutputWdmMdl(request, &dst_mdl);
- if (!NT_SUCCESS(status))
- {
- DEBUG_ERROR("failed to retrieve output MDL", status);
- goto windivert_read_service_request_exit;
- }
- dst = MmGetSystemAddressForMdlSafe(dst_mdl,
- NormalPagePriority | no_exec_flag);
- if (dst == NULL)
- {
- status = STATUS_INSUFFICIENT_RESOURCES;
- DEBUG_ERROR("failed to get address of output MDL", status);
- goto windivert_read_service_request_exit;
- }
- dst_len = MmGetMdlByteCount(dst_mdl);
- break;
+ status = WdfRequestRetrieveOutputWdmMdl(request, &dst_mdl);
+ if (!NT_SUCCESS(status))
+ {
+ DEBUG_ERROR("failed to retrieve output MDL", status);
+ goto windivert_read_service_request_exit;
+ }
+ dst = MmGetSystemAddressForMdlSafe(dst_mdl,
+ NormalPagePriority | no_exec_flag);
+ if (dst == NULL)
+ {
+ status = STATUS_INSUFFICIENT_RESOURCES;
+ DEBUG_ERROR("failed to get address of output MDL", status);
+ goto windivert_read_service_request_exit;
+ }
+ dst_len = MmGetMdlByteCount(dst_mdl);
+ break;
- case WINDIVERT_LAYER_FLOW:
- case WINDIVERT_LAYER_SOCKET:
+ case WINDIVERT_LAYER_FLOW:
+ case WINDIVERT_LAYER_SOCKET:
- status = STATUS_SUCCESS;
- dst = NULL;
- dst_len = 0;
- break;
+ status = STATUS_SUCCESS;
+ dst = NULL;
+ dst_len = 0;
+ break;
- default:
- status = STATUS_INVALID_DEVICE_STATE;
- DEBUG_ERROR("invalid packet layer", status);
- goto windivert_read_service_request_exit;
+ default:
+ status = STATUS_INVALID_DEVICE_STATE;
+ DEBUG_ERROR("invalid packet layer", status);
+ goto windivert_read_service_request_exit;
}
- req_context = windivert_req_context_get(request);
- addr = req_context->addr;
- addr_len = 0;
+ req_context = windivert_req_context_get(request);
+ addr = req_context->addr;
+ addr_len = 0;
addr_len_max = (UINT)req_context->addr_len;
addr_len_ptr = req_context->addr_len_ptr;
- i = 0;
+ i = 0;
while (TRUE)
{
// Copy the packet data:
switch (packet->layer)
{
- case WINDIVERT_LAYER_NETWORK:
- case WINDIVERT_LAYER_NETWORK_FORWARD:
- case WINDIVERT_LAYER_REFLECT:
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ case WINDIVERT_LAYER_REFLECT:
- if (packet->layer != WINDIVERT_LAYER_REFLECT)
- {
- src = WINDIVERT_PACKET_DATA_PTR(WINDIVERT_DATA_NETWORK,
- packet);
- }
- else
- {
- src = WINDIVERT_PACKET_DATA_PTR(WINDIVERT_DATA_REFLECT,
- packet);
- }
- src_len = packet->packet_len;
- if (src_len > dst_len)
- {
- status = STATUS_BUFFER_TOO_SMALL;
- }
- src_len = (src_len < dst_len? src_len: dst_len);
- RtlCopyMemory(dst, src, src_len);
- dst += src_len;
- dst_len -= src_len;
- read_len += src_len;
- break;
+ if (packet->layer != WINDIVERT_LAYER_REFLECT)
+ {
+ src = WINDIVERT_PACKET_DATA_PTR(WINDIVERT_DATA_NETWORK,
+ packet);
+ }
+ else
+ {
+ src = WINDIVERT_PACKET_DATA_PTR(WINDIVERT_DATA_REFLECT,
+ packet);
+ }
+ src_len = packet->packet_len;
+ if (src_len > dst_len)
+ {
+ status = STATUS_BUFFER_TOO_SMALL;
+ }
+ src_len = (src_len < dst_len ? src_len : dst_len);
+ RtlCopyMemory(dst, src, src_len);
+ dst += src_len;
+ dst_len -= src_len;
+ read_len += src_len;
+ break;
- default:
- break;
+ default:
+ break;
}
// Copy the address data:
if (addr != NULL)
{
- DEBUG_BOUNDS_CHECK((PVOID)addr, (UINT8 *)addr + addr_len_max,
- (PVOID)&addr[i], (PVOID)&addr[i+1]);
-
- addr[i].Timestamp = (INT64)packet->timestamp;
- addr[i].Layer = packet->layer;
- addr[i].Event = packet->event;
- addr[i].Sniffed = packet->sniffed;
- addr[i].Outbound = packet->outbound;
- addr[i].Loopback = packet->loopback;
- addr[i].Impostor = packet->impostor;
- addr[i].IPv6 = packet->ipv6;
- addr[i].IPChecksum = packet->ip_checksum;
+ DEBUG_BOUNDS_CHECK((PVOID)addr, (UINT8*)addr + addr_len_max,
+ (PVOID)&addr[i], (PVOID)&addr[i + 1]);
+
+ addr[i].Timestamp = (INT64)packet->timestamp;
+ addr[i].Layer = packet->layer;
+ addr[i].Event = packet->event;
+ addr[i].Sniffed = packet->sniffed;
+ addr[i].Outbound = packet->outbound;
+ addr[i].Loopback = packet->loopback;
+ addr[i].Impostor = packet->impostor;
+ addr[i].IPv6 = packet->ipv6;
+ addr[i].IPChecksum = packet->ip_checksum;
addr[i].TCPChecksum = packet->tcp_checksum;
addr[i].UDPChecksum = packet->udp_checksum;
- addr[i].Reserved1 = 0;
- addr[i].Reserved2 = 0;
+ addr[i].Reserved1 = 0;
+ addr[i].Reserved2 = 0;
layer_data = (PVOID)packet->data;
switch (packet->layer)
{
- case WINDIVERT_LAYER_NETWORK:
- case WINDIVERT_LAYER_NETWORK_FORWARD:
- RtlCopyMemory(&addr[i].Network, layer_data,
- sizeof(WINDIVERT_DATA_NETWORK));
- break;
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ RtlCopyMemory(&addr[i].Network, layer_data,
+ sizeof(WINDIVERT_DATA_NETWORK));
+ break;
- case WINDIVERT_LAYER_FLOW:
- RtlCopyMemory(&addr[i].Flow, layer_data,
- sizeof(WINDIVERT_DATA_FLOW));
- break;
+ case WINDIVERT_LAYER_FLOW:
+ RtlCopyMemory(&addr[i].Flow, layer_data,
+ sizeof(WINDIVERT_DATA_FLOW));
+ break;
- case WINDIVERT_LAYER_SOCKET:
- RtlCopyMemory(&addr[i].Socket, layer_data,
- sizeof(WINDIVERT_DATA_SOCKET));
- break;
+ case WINDIVERT_LAYER_SOCKET:
+ RtlCopyMemory(&addr[i].Socket, layer_data,
+ sizeof(WINDIVERT_DATA_SOCKET));
+ break;
- case WINDIVERT_LAYER_REFLECT:
- RtlCopyMemory(&addr[i].Reflect, layer_data,
- sizeof(WINDIVERT_DATA_REFLECT));
- break;
+ case WINDIVERT_LAYER_REFLECT:
+ RtlCopyMemory(&addr[i].Reflect, layer_data,
+ sizeof(WINDIVERT_DATA_REFLECT));
+ break;
- default:
- break;
+ default:
+ break;
}
}
i++;
addr_len += sizeof(WINDIVERT_ADDRESS);
if (addr_len + sizeof(WINDIVERT_ADDRESS) > addr_len_max ||
- i >= WINDIVERT_BATCH_MAX)
+ i >= WINDIVERT_BATCH_MAX)
{
// addr[] is full:
break;
@@ -2320,7 +2319,7 @@ static void windivert_read_service_request(context_t context, packet_t packet,
new_packet = NULL;
KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
if (context->state == WINDIVERT_CONTEXT_STATE_OPEN &&
- !IsListEmpty(&context->packet_queue))
+ !IsListEmpty(&context->packet_queue))
{
entry = RemoveHeadList(&context->packet_queue);
new_packet = CONTAINING_RECORD(entry, struct packet_s, entry);
@@ -2371,10 +2370,10 @@ static void windivert_fast_read_service_request(PVOID packet, ULONG packet_len,
PNET_BUFFER buffer;
PMDL dst_mdl;
UINT dst_len, read_len = 0;
- UINT8 *dst;
+ UINT8* dst;
req_context_t req_context;
PWINDIVERT_ADDRESS addr;
- UINT *addr_len_ptr;
+ UINT* addr_len_ptr;
NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO checksums;
BOOL sniffed, ip_checksum, tcp_checksum, udp_checksum;
NTSTATUS status = STATUS_SUCCESS;
@@ -2385,83 +2384,83 @@ static void windivert_fast_read_service_request(PVOID packet, ULONG packet_len,
switch (layer)
{
- case WINDIVERT_LAYER_NETWORK:
- case WINDIVERT_LAYER_NETWORK_FORWARD:
- case WINDIVERT_LAYER_REFLECT:
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ case WINDIVERT_LAYER_REFLECT:
- status = WdfRequestRetrieveOutputWdmMdl(request, &dst_mdl);
- if (!NT_SUCCESS(status))
- {
- goto windivert_fast_read_service_request_exit;
- }
- dst = MmGetSystemAddressForMdlSafe(dst_mdl,
- NormalPagePriority | no_exec_flag);
- if (dst == NULL)
- {
- status = STATUS_INSUFFICIENT_RESOURCES;
- goto windivert_fast_read_service_request_exit;
- }
- dst_len = MmGetMdlByteCount(dst_mdl);
- break;
+ status = WdfRequestRetrieveOutputWdmMdl(request, &dst_mdl);
+ if (!NT_SUCCESS(status))
+ {
+ goto windivert_fast_read_service_request_exit;
+ }
+ dst = MmGetSystemAddressForMdlSafe(dst_mdl,
+ NormalPagePriority | no_exec_flag);
+ if (dst == NULL)
+ {
+ status = STATUS_INSUFFICIENT_RESOURCES;
+ goto windivert_fast_read_service_request_exit;
+ }
+ dst_len = MmGetMdlByteCount(dst_mdl);
+ break;
- case WINDIVERT_LAYER_FLOW:
- case WINDIVERT_LAYER_SOCKET:
- status = STATUS_SUCCESS;
- dst = NULL;
- dst_len = 0;
- break;
+ case WINDIVERT_LAYER_FLOW:
+ case WINDIVERT_LAYER_SOCKET:
+ status = STATUS_SUCCESS;
+ dst = NULL;
+ dst_len = 0;
+ break;
- default:
- status = STATUS_INVALID_DEVICE_STATE;
- goto windivert_fast_read_service_request_exit;
+ default:
+ status = STATUS_INVALID_DEVICE_STATE;
+ goto windivert_fast_read_service_request_exit;
}
switch (layer)
{
- case WINDIVERT_LAYER_NETWORK:
- case WINDIVERT_LAYER_NETWORK_FORWARD:
- buffer = (PNET_BUFFER)packet;
- dst_len = (dst_len < packet_len? dst_len: packet_len);
- if (!windivert_copy_data(buffer, dst, dst_len))
- {
- status = STATUS_INSUFFICIENT_RESOURCES;
- }
- else if (dst_len < packet_len)
- {
- status = STATUS_BUFFER_TOO_SMALL;
- }
- read_len = dst_len;
- checksums.Value = NET_BUFFER_LIST_INFO(buffers,
- TcpIpChecksumNetBufferListInfo);
- if (outbound)
- {
- ip_checksum = (checksums.Transmit.IpHeaderChecksum == 0);
- tcp_checksum = (checksums.Transmit.TcpChecksum == 0);
- udp_checksum = (checksums.Transmit.UdpChecksum == 0);
- }
- else
- {
- ip_checksum = (checksums.Receive.IpChecksumSucceeded == 0);
- tcp_checksum = (checksums.Receive.TcpChecksumSucceeded == 0);
- udp_checksum = (checksums.Receive.UdpChecksumSucceeded == 0);
- }
- break;
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ buffer = (PNET_BUFFER)packet;
+ dst_len = (dst_len < packet_len ? dst_len : packet_len);
+ if (!windivert_copy_data(buffer, dst, dst_len))
+ {
+ status = STATUS_INSUFFICIENT_RESOURCES;
+ }
+ else if (dst_len < packet_len)
+ {
+ status = STATUS_BUFFER_TOO_SMALL;
+ }
+ read_len = dst_len;
+ checksums.Value = NET_BUFFER_LIST_INFO(buffers,
+ TcpIpChecksumNetBufferListInfo);
+ if (outbound)
+ {
+ ip_checksum = (checksums.Transmit.IpHeaderChecksum == 0);
+ tcp_checksum = (checksums.Transmit.TcpChecksum == 0);
+ udp_checksum = (checksums.Transmit.UdpChecksum == 0);
+ }
+ else
+ {
+ ip_checksum = (checksums.Receive.IpChecksumSucceeded == 0);
+ tcp_checksum = (checksums.Receive.TcpChecksumSucceeded == 0);
+ udp_checksum = (checksums.Receive.UdpChecksumSucceeded == 0);
+ }
+ break;
- case WINDIVERT_LAYER_REFLECT:
- dst_len = (dst_len < packet_len? dst_len: packet_len);
- RtlCopyMemory(dst, packet, dst_len);
- read_len = dst_len;
- ip_checksum = tcp_checksum = udp_checksum = FALSE;
- break;
+ case WINDIVERT_LAYER_REFLECT:
+ dst_len = (dst_len < packet_len ? dst_len : packet_len);
+ RtlCopyMemory(dst, packet, dst_len);
+ read_len = dst_len;
+ ip_checksum = tcp_checksum = udp_checksum = FALSE;
+ break;
- default:
- read_len = 0;
- ip_checksum = tcp_checksum = udp_checksum = FALSE;
- break;
+ default:
+ read_len = 0;
+ ip_checksum = tcp_checksum = udp_checksum = FALSE;
+ break;
}
- req_context = windivert_req_context_get(request);
- addr = req_context->addr;
+ req_context = windivert_req_context_get(request);
+ addr = req_context->addr;
addr_len_ptr = req_context->addr_len_ptr;
if (addr != NULL)
@@ -2469,44 +2468,44 @@ static void windivert_fast_read_service_request(PVOID packet, ULONG packet_len,
sniffed = ((flags & WINDIVERT_FLAG_SNIFF) != 0 ||
event == WINDIVERT_EVENT_SOCKET_CLOSE);
- addr->Timestamp = timestamp;
- addr->Layer = layer;
- addr->Event = event;
- addr->Sniffed = (sniffed? 1: 0);
- addr->Outbound = (outbound? 1: 0);
- addr->Loopback = (loopback? 1: 0);
- addr->Impostor = (impostor? 1: 0);
- addr->IPv6 = (ipv4? 0: 1);
- addr->IPChecksum = (ip_checksum? 1: 0);
- addr->TCPChecksum = (tcp_checksum? 1: 0);
- addr->UDPChecksum = (udp_checksum? 1: 0);
- addr->Reserved1 = 0;
- addr->Reserved2 = 0;
+ addr->Timestamp = timestamp;
+ addr->Layer = layer;
+ addr->Event = event;
+ addr->Sniffed = (sniffed ? 1 : 0);
+ addr->Outbound = (outbound ? 1 : 0);
+ addr->Loopback = (loopback ? 1 : 0);
+ addr->Impostor = (impostor ? 1 : 0);
+ addr->IPv6 = (ipv4 ? 0 : 1);
+ addr->IPChecksum = (ip_checksum ? 1 : 0);
+ addr->TCPChecksum = (tcp_checksum ? 1 : 0);
+ addr->UDPChecksum = (udp_checksum ? 1 : 0);
+ addr->Reserved1 = 0;
+ addr->Reserved2 = 0;
switch (layer)
{
- case WINDIVERT_LAYER_NETWORK:
- case WINDIVERT_LAYER_NETWORK_FORWARD:
- RtlCopyMemory(&addr->Network, layer_data,
- sizeof(WINDIVERT_DATA_NETWORK));
- break;
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ RtlCopyMemory(&addr->Network, layer_data,
+ sizeof(WINDIVERT_DATA_NETWORK));
+ break;
- case WINDIVERT_LAYER_FLOW:
- RtlCopyMemory(&addr->Flow, layer_data,
- sizeof(WINDIVERT_DATA_FLOW));
- break;
+ case WINDIVERT_LAYER_FLOW:
+ RtlCopyMemory(&addr->Flow, layer_data,
+ sizeof(WINDIVERT_DATA_FLOW));
+ break;
- case WINDIVERT_LAYER_SOCKET:
- RtlCopyMemory(&addr->Socket, layer_data,
- sizeof(WINDIVERT_DATA_SOCKET));
- break;
+ case WINDIVERT_LAYER_SOCKET:
+ RtlCopyMemory(&addr->Socket, layer_data,
+ sizeof(WINDIVERT_DATA_SOCKET));
+ break;
- case WINDIVERT_LAYER_REFLECT:
- RtlCopyMemory(&addr->Reflect, layer_data,
- sizeof(WINDIVERT_DATA_REFLECT));
- break;
+ case WINDIVERT_LAYER_REFLECT:
+ RtlCopyMemory(&addr->Reflect, layer_data,
+ sizeof(WINDIVERT_DATA_REFLECT));
+ break;
- default:
- break;
+ default:
+ break;
}
}
if (addr_len_ptr != NULL)
@@ -2535,7 +2534,7 @@ static void windivert_read_service(context_t context)
timestamp = KeQueryPerformanceCounter(NULL).QuadPart;
KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
while (context->state == WINDIVERT_CONTEXT_STATE_OPEN &&
- !IsListEmpty(&context->packet_queue))
+ !IsListEmpty(&context->packet_queue))
{
entry = RemoveHeadList(&context->packet_queue);
packet = CONTAINING_RECORD(entry, struct packet_s, entry);
@@ -2562,8 +2561,8 @@ static void windivert_read_service(context_t context)
}
if (context->shutdown_recv && context->shutdown_recv_enabled &&
- IsListEmpty(&context->packet_queue) &&
- IsListEmpty(&context->work_queue))
+ IsListEmpty(&context->packet_queue) &&
+ IsListEmpty(&context->work_queue))
{
// The handle has shutdown, the queue is empty, and no more packets
// will be queued. Notify any remaining requests.
@@ -2599,16 +2598,14 @@ static NTSTATUS windivert_write(context_t context, WDFREQUEST request,
PWINDIVERT_IPV6HDR ipv6_header;
UINT8 layer;
UINT32 priority;
- UINT64 flags, checksums;
- HANDLE handle;
- PNET_BUFFER_LIST buffers = NULL;
+ UINT64 flags;
PWINDIVERT_ADDRESS addr;
UINT i, addr_len, addr_len_max, version;
NTSTATUS status = STATUS_SUCCESS, status_soft_error = STATUS_SUCCESS;
DEBUG("WRITE: writing/injecting a packet (context=%p, request=%p)",
context, request);
-
+
KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
if (context->state != WINDIVERT_CONTEXT_STATE_OPEN)
{
@@ -2636,14 +2633,14 @@ static NTSTATUS windivert_write(context_t context, WDFREQUEST request,
switch (layer)
{
- case WINDIVERT_LAYER_FLOW:
- case WINDIVERT_LAYER_SOCKET:
- case WINDIVERT_LAYER_REFLECT:
- status = STATUS_INVALID_PARAMETER;
- DEBUG_ERROR("failed to inject at layer", status);
- goto windivert_write_hard_error;
- default:
- break;
+ case WINDIVERT_LAYER_FLOW:
+ case WINDIVERT_LAYER_SOCKET:
+ case WINDIVERT_LAYER_REFLECT:
+ status = STATUS_INVALID_PARAMETER;
+ DEBUG_ERROR("failed to inject at layer", status);
+ goto windivert_write_hard_error;
+ default:
+ break;
}
status = WdfRequestRetrieveOutputWdmMdl(request, &mdl);
@@ -2661,21 +2658,21 @@ static NTSTATUS windivert_write(context_t context, WDFREQUEST request,
DEBUG_ERROR("failed to get MDL address", status);
goto windivert_write_hard_error;
}
-
- data_len = MmGetMdlByteCount(mdl);
- inject_len = 0;
- addr = req_context->addr;
+
+ data_len = MmGetMdlByteCount(mdl);
+ inject_len = 0;
+ addr = req_context->addr;
addr_len_max = (ULONG)req_context->addr_len;
- addr_len = 0;
+ addr_len = 0;
for (i = 0; addr_len + sizeof(WINDIVERT_ADDRESS) <= addr_len_max &&
- i < WINDIVERT_BATCH_MAX;
- i++, addr_len += sizeof(WINDIVERT_ADDRESS))
+ i < WINDIVERT_BATCH_MAX;
+ i++, addr_len += sizeof(WINDIVERT_ADDRESS))
{
// Get the packet length:
if (data_len < sizeof(WINDIVERT_IPHDR))
{
-windivert_write_too_small_packet:
+ windivert_write_too_small_packet:
status = STATUS_BUFFER_TOO_SMALL;
DEBUG_ERROR("failed to inject partial packet", status);
goto windivert_write_hard_error;
@@ -2684,27 +2681,27 @@ static NTSTATUS windivert_write(context_t context, WDFREQUEST request,
version = ip_header->Version;
switch (version)
{
- case 4:
- packet_len = RtlUshortByteSwap(ip_header->Length);
- if (packet_len < sizeof(WINDIVERT_IPHDR))
- {
- goto windivert_write_invalid_packet;
- }
- break;
- case 6:
- if (data_len < sizeof(WINDIVERT_IPV6HDR))
- {
- goto windivert_write_too_small_packet;
- }
- ipv6_header = (PWINDIVERT_IPV6HDR)data;
- packet_len = RtlUshortByteSwap(ipv6_header->Length) +
- sizeof(WINDIVERT_IPV6HDR);
- break;
- default:
-windivert_write_invalid_packet:
- status = STATUS_INVALID_PARAMETER;
- DEBUG_ERROR("failed to inject invalid packet", status);
- goto windivert_write_hard_error;
+ case 4:
+ packet_len = RtlUshortByteSwap(ip_header->Length);
+ if (packet_len < sizeof(WINDIVERT_IPHDR))
+ {
+ goto windivert_write_invalid_packet;
+ }
+ break;
+ case 6:
+ if (data_len < sizeof(WINDIVERT_IPV6HDR))
+ {
+ goto windivert_write_too_small_packet;
+ }
+ ipv6_header = (PWINDIVERT_IPV6HDR)data;
+ packet_len = RtlUshortByteSwap(ipv6_header->Length) +
+ sizeof(WINDIVERT_IPV6HDR);
+ break;
+ default:
+ windivert_write_invalid_packet:
+ status = STATUS_INVALID_PARAMETER;
+ DEBUG_ERROR("failed to inject invalid packet", status);
+ goto windivert_write_hard_error;
}
if (data_len < packet_len)
{
@@ -2722,23 +2719,23 @@ static NTSTATUS windivert_write(context_t context, WDFREQUEST request,
status);
goto windivert_write_hard_error;
}
- packet->layer = layer;
- packet->event = WINDIVERT_EVENT_NETWORK_PACKET;
- packet->sniffed = 0; // Unused
- packet->outbound = addr[i].Outbound;
- packet->loopback = 0; // Unused
- packet->impostor = addr[i].Impostor;
- packet->ipv6 = (version == 6? 1: 0);
- packet->ip_checksum = addr[i].IPChecksum;
- packet->tcp_checksum = addr[i].TCPChecksum;
- packet->udp_checksum = addr[i].UDPChecksum;
+ packet->layer = layer;
+ packet->event = WINDIVERT_EVENT_NETWORK_PACKET;
+ packet->sniffed = 0; // Unused
+ packet->outbound = addr[i].Outbound;
+ packet->loopback = 0; // Unused
+ packet->impostor = addr[i].Impostor;
+ packet->ipv6 = (version == 6 ? 1 : 0);
+ packet->ip_checksum = addr[i].IPChecksum;
+ packet->tcp_checksum = addr[i].TCPChecksum;
+ packet->udp_checksum = addr[i].UDPChecksum;
packet->icmp_checksum = 1; // Assumed valid
- packet->match = 0; // Unused
- packet->packet_size = packet_size;
- packet->packet_len = packet_len;
- packet->priority = priority;
- packet->timestamp = 0; // Unused
- packet->object = NULL;
+ packet->match = 0; // Unused
+ packet->packet_size = packet_size;
+ packet->packet_len = packet_len;
+ packet->priority = priority;
+ packet->timestamp = 0; // Unused
+ packet->object = NULL;
network_data =
(PWINDIVERT_DATA_NETWORK)WINDIVERT_LAYER_DATA_PTR(packet);
RtlCopyMemory(network_data, &addr[i].Network, sizeof(network_data));
@@ -2746,30 +2743,30 @@ static NTSTATUS windivert_write(context_t context, WDFREQUEST request,
RtlCopyMemory(data_copy, data, packet_len);
switch (version)
{
- case 4:
- ip_header = (PWINDIVERT_IPHDR)data_copy;
- if (ip_header->Version != 4 ||
- packet_len != RtlUshortByteSwap(ip_header->Length))
- {
- windivert_free(packet);
- goto windivert_write_invalid_packet;
- }
- break;
- case 6:
- ipv6_header = (PWINDIVERT_IPV6HDR)data_copy;
- if (ipv6_header->Version != 6 ||
- packet_len != RtlUshortByteSwap(ipv6_header->Length) +
- sizeof(WINDIVERT_IPV6HDR))
- {
- windivert_free(packet);
- goto windivert_write_invalid_packet;
- }
- break;
+ case 4:
+ ip_header = (PWINDIVERT_IPHDR)data_copy;
+ if (ip_header->Version != 4 ||
+ packet_len != RtlUshortByteSwap(ip_header->Length))
+ {
+ windivert_free(packet);
+ goto windivert_write_invalid_packet;
+ }
+ break;
+ case 6:
+ ipv6_header = (PWINDIVERT_IPV6HDR)data_copy;
+ if (ipv6_header->Version != 6 ||
+ packet_len != RtlUshortByteSwap(ipv6_header->Length) +
+ sizeof(WINDIVERT_IPV6HDR))
+ {
+ windivert_free(packet);
+ goto windivert_write_invalid_packet;
+ }
+ break;
}
// Check bounds:
- DEBUG_BOUNDS_CHECK((PVOID)addr, (UINT8 *)addr + addr_len_max,
- (PVOID)&addr[i], (PVOID)&addr[i+1]);
+ DEBUG_BOUNDS_CHECK((PVOID)addr, (UINT8*)addr + addr_len_max,
+ (PVOID)&addr[i], (PVOID)&addr[i + 1]);
// Inject packet:
status = windivert_inject_packet(packet);
@@ -2784,8 +2781,8 @@ static NTSTATUS windivert_write(context_t context, WDFREQUEST request,
// Reset state:
inject_len += packet_len;
- data = (PVOID)((UINT8 *)data + packet_len);
- data_len -= packet_len;
+ data = (PVOID)((UINT8*)data + packet_len);
+ data_len -= packet_len;
}
// Note: status_soft_error is for "soft" errors that do not prevent other
@@ -2810,7 +2807,7 @@ VOID windivert_caller_context(IN WDFDEVICE device, IN WDFREQUEST request)
WDF_REQUEST_PARAMETERS params;
WDFMEMORY memobj;
PWINDIVERT_ADDRESS addr = NULL;
- UINT *addr_len_ptr = NULL;
+ UINT* addr_len_ptr = NULL;
UINT64 addr_len = 0;
PWINDIVERT_IOCTL ioctl;
WDF_OBJECT_ATTRIBUTES attributes;
@@ -2849,103 +2846,103 @@ VOID windivert_caller_context(IN WDFDEVICE device, IN WDFREQUEST request)
}
switch (params.Parameters.DeviceIoControl.IoControlCode)
{
- case IOCTL_WINDIVERT_RECV:
- ioctl = (PWINDIVERT_IOCTL)inbuf;
- addr = (PWINDIVERT_ADDRESS)(ULONG_PTR)ioctl->recv.addr;
- addr_len_ptr = (UINT *)(ULONG_PTR)ioctl->recv.addr_len_ptr;
- addr_len = sizeof(WINDIVERT_ADDRESS);
- if (addr_len_ptr != NULL)
- {
- status = WdfRequestProbeAndLockUserBufferForWrite(request,
- addr_len_ptr, sizeof(UINT), &memobj);
- if (!NT_SUCCESS(status))
- {
- DEBUG_ERROR("invalid address length pointer for RECV ioctl",
- status);
- goto windivert_caller_context_error;
- }
- addr_len_ptr = (UINT *)WdfMemoryGetBuffer(memobj, NULL);
- addr_len = *addr_len_ptr;
- if (addr_len < sizeof(WINDIVERT_ADDRESS) ||
- addr_len > WINDIVERT_BATCH_MAX * sizeof(WINDIVERT_ADDRESS))
- {
- status = STATUS_INVALID_PARAMETER;
- DEBUG_ERROR("out-of-range address length (%u) for RECV "
- "ioctl", status, addr_len);
- goto windivert_caller_context_error;
- }
- if (addr == NULL)
- {
- status = STATUS_INVALID_PARAMETER;
- DEBUG_ERROR("null address for RECV ioctl", status);
- goto windivert_caller_context_error;
- }
- }
- if (addr != NULL)
+ case IOCTL_WINDIVERT_RECV:
+ ioctl = (PWINDIVERT_IOCTL)inbuf;
+ addr = (PWINDIVERT_ADDRESS)(ULONG_PTR)ioctl->recv.addr;
+ addr_len_ptr = (UINT*)(ULONG_PTR)ioctl->recv.addr_len_ptr;
+ addr_len = sizeof(WINDIVERT_ADDRESS);
+ if (addr_len_ptr != NULL)
+ {
+ status = WdfRequestProbeAndLockUserBufferForWrite(request,
+ addr_len_ptr, sizeof(UINT), &memobj);
+ if (!NT_SUCCESS(status))
{
- status = WdfRequestProbeAndLockUserBufferForWrite(request,
- addr, (size_t)addr_len, &memobj);
- if (!NT_SUCCESS(status))
- {
- DEBUG_ERROR("invalid address for RECV ioctl", status);
- goto windivert_caller_context_error;
- }
- addr = (PWINDIVERT_ADDRESS)WdfMemoryGetBuffer(memobj, NULL);
+ DEBUG_ERROR("invalid address length pointer for RECV ioctl",
+ status);
+ goto windivert_caller_context_error;
}
- break;
-
- case IOCTL_WINDIVERT_SEND:
- ioctl = (PWINDIVERT_IOCTL)inbuf;
- addr = (PWINDIVERT_ADDRESS)(ULONG_PTR)ioctl->send.addr;
- addr_len = ioctl->send.addr_len;
+ addr_len_ptr = (UINT*)WdfMemoryGetBuffer(memobj, NULL);
+ addr_len = *addr_len_ptr;
if (addr_len < sizeof(WINDIVERT_ADDRESS) ||
addr_len > WINDIVERT_BATCH_MAX * sizeof(WINDIVERT_ADDRESS))
{
status = STATUS_INVALID_PARAMETER;
- DEBUG_ERROR("out-of-range address length (%u) for SEND ioctl",
- status, addr_len);
+ DEBUG_ERROR("out-of-range address length (%u) for RECV "
+ "ioctl", status, addr_len);
goto windivert_caller_context_error;
}
if (addr == NULL)
{
status = STATUS_INVALID_PARAMETER;
- DEBUG_ERROR("null address for SEND ioctl", status);
+ DEBUG_ERROR("null address for RECV ioctl", status);
goto windivert_caller_context_error;
}
- status = WdfRequestProbeAndLockUserBufferForRead(request, addr,
- (size_t)addr_len, &memobj);
+ }
+ if (addr != NULL)
+ {
+ status = WdfRequestProbeAndLockUserBufferForWrite(request,
+ addr, (size_t)addr_len, &memobj);
if (!NT_SUCCESS(status))
{
- DEBUG_ERROR("invalid address for SEND ioctl", status);
+ DEBUG_ERROR("invalid address for RECV ioctl", status);
goto windivert_caller_context_error;
}
addr = (PWINDIVERT_ADDRESS)WdfMemoryGetBuffer(memobj, NULL);
- break;
-
- case IOCTL_WINDIVERT_INITIALIZE:
- case IOCTL_WINDIVERT_STARTUP:
- case IOCTL_WINDIVERT_SHUTDOWN:
- case IOCTL_WINDIVERT_SET_PARAM:
- case IOCTL_WINDIVERT_GET_PARAM:
- break;
-
- default:
- status = STATUS_INVALID_DEVICE_REQUEST;
- DEBUG_ERROR("failed to complete I/O control; invalid request",
- status);
+ }
+ break;
+
+ case IOCTL_WINDIVERT_SEND:
+ ioctl = (PWINDIVERT_IOCTL)inbuf;
+ addr = (PWINDIVERT_ADDRESS)(ULONG_PTR)ioctl->send.addr;
+ addr_len = ioctl->send.addr_len;
+ if (addr_len < sizeof(WINDIVERT_ADDRESS) ||
+ addr_len > WINDIVERT_BATCH_MAX * sizeof(WINDIVERT_ADDRESS))
+ {
+ status = STATUS_INVALID_PARAMETER;
+ DEBUG_ERROR("out-of-range address length (%u) for SEND ioctl",
+ status, addr_len);
+ goto windivert_caller_context_error;
+ }
+ if (addr == NULL)
+ {
+ status = STATUS_INVALID_PARAMETER;
+ DEBUG_ERROR("null address for SEND ioctl", status);
+ goto windivert_caller_context_error;
+ }
+ status = WdfRequestProbeAndLockUserBufferForRead(request, addr,
+ (size_t)addr_len, &memobj);
+ if (!NT_SUCCESS(status))
+ {
+ DEBUG_ERROR("invalid address for SEND ioctl", status);
goto windivert_caller_context_error;
+ }
+ addr = (PWINDIVERT_ADDRESS)WdfMemoryGetBuffer(memobj, NULL);
+ break;
+
+ case IOCTL_WINDIVERT_INITIALIZE:
+ case IOCTL_WINDIVERT_STARTUP:
+ case IOCTL_WINDIVERT_SHUTDOWN:
+ case IOCTL_WINDIVERT_SET_PARAM:
+ case IOCTL_WINDIVERT_GET_PARAM:
+ break;
+
+ default:
+ status = STATUS_INVALID_DEVICE_REQUEST;
+ DEBUG_ERROR("failed to complete I/O control; invalid request",
+ status);
+ goto windivert_caller_context_error;
}
-
- req_context->addr = addr;
- req_context->addr_len = (UINT)addr_len;
+
+ req_context->addr = addr;
+ req_context->addr_len = (UINT)addr_len;
req_context->addr_len_ptr = addr_len_ptr;
windivert_caller_context_exit:
status = WdfDeviceEnqueueRequest(device, request);
-
-windivert_caller_context_error:
-
+
+windivert_caller_context_error:
+
if (!NT_SUCCESS(status))
{
DEBUG_ERROR("failed to enqueue request", status);
@@ -2963,12 +2960,12 @@ extern VOID windivert_ioctl(IN WDFQUEUE queue, IN WDFREQUEST request,
PCHAR inbuf, outbuf;
size_t inbuflen, outbuflen, ioctl_filter_len;
PWINDIVERT_IOCTL ioctl;
- const WINDIVERT_FILTER *ioctl_filter, *filter;
+ const WINDIVERT_FILTER* ioctl_filter, * filter;
req_context_t req_context;
NTSTATUS status = STATUS_SUCCESS;
context_t context =
windivert_context_get(WdfRequestGetFileObject(request));
- UINT64 *valptr;
+ UINT64* valptr;
UNREFERENCED_PARAMETER(queue);
UNREFERENCED_PARAMETER(out_length);
@@ -2979,412 +2976,412 @@ extern VOID windivert_ioctl(IN WDFQUEUE queue, IN WDFREQUEST request,
// Get the buffers and do sanity checks.
switch (code)
{
- case IOCTL_WINDIVERT_INITIALIZE:
- case IOCTL_WINDIVERT_STARTUP:
- case IOCTL_WINDIVERT_SHUTDOWN:
- case IOCTL_WINDIVERT_SET_PARAM:
- case IOCTL_WINDIVERT_GET_PARAM:
- status = WdfRequestRetrieveInputBuffer(request, 0, &inbuf,
- &inbuflen);
- if (!NT_SUCCESS(status))
- {
- DEBUG_ERROR("failed to retrieve input buffer", status);
- goto windivert_ioctl_exit;
- }
- if (inbuflen < sizeof(WINDIVERT_IOCTL))
- {
- status = STATUS_INVALID_PARAMETER;
- DEBUG_ERROR("input buffer too small", status);
- goto windivert_ioctl_exit;
- }
- break;
- default:
- inbuf = NULL;
- inbuflen = 0;
- break;
+ case IOCTL_WINDIVERT_INITIALIZE:
+ case IOCTL_WINDIVERT_STARTUP:
+ case IOCTL_WINDIVERT_SHUTDOWN:
+ case IOCTL_WINDIVERT_SET_PARAM:
+ case IOCTL_WINDIVERT_GET_PARAM:
+ status = WdfRequestRetrieveInputBuffer(request, 0, &inbuf,
+ &inbuflen);
+ if (!NT_SUCCESS(status))
+ {
+ DEBUG_ERROR("failed to retrieve input buffer", status);
+ goto windivert_ioctl_exit;
+ }
+ if (inbuflen < sizeof(WINDIVERT_IOCTL))
+ {
+ status = STATUS_INVALID_PARAMETER;
+ DEBUG_ERROR("input buffer too small", status);
+ goto windivert_ioctl_exit;
+ }
+ break;
+ default:
+ inbuf = NULL;
+ inbuflen = 0;
+ break;
}
switch (code)
{
- case IOCTL_WINDIVERT_INITIALIZE:
- case IOCTL_WINDIVERT_STARTUP:
- case IOCTL_WINDIVERT_GET_PARAM:
- status = WdfRequestRetrieveOutputBuffer(request, 0, &outbuf,
- &outbuflen);
- if (!NT_SUCCESS(status))
- {
- DEBUG_ERROR("failed to retrieve output buffer", status);
- goto windivert_ioctl_exit;
- }
- break;
- default:
- outbuf = NULL;
- outbuflen = 0;
- break;
+ case IOCTL_WINDIVERT_INITIALIZE:
+ case IOCTL_WINDIVERT_STARTUP:
+ case IOCTL_WINDIVERT_GET_PARAM:
+ status = WdfRequestRetrieveOutputBuffer(request, 0, &outbuf,
+ &outbuflen);
+ if (!NT_SUCCESS(status))
+ {
+ DEBUG_ERROR("failed to retrieve output buffer", status);
+ goto windivert_ioctl_exit;
+ }
+ break;
+ default:
+ outbuf = NULL;
+ outbuflen = 0;
+ break;
}
// Handle the ioctl:
switch (code)
{
- case IOCTL_WINDIVERT_RECV:
- status = windivert_read(context, request);
- if (NT_SUCCESS(status))
- {
- return;
- }
- break;
-
- case IOCTL_WINDIVERT_SEND:
-
- req_context = windivert_req_context_get(request);
- status = windivert_write(context, request, req_context);
- if (NT_SUCCESS(status))
- {
- return;
- }
- break;
-
- case IOCTL_WINDIVERT_INITIALIZE:
- {
- PWINDIVERT_VERSION version;
- WINDIVERT_LAYER layer;
- UINT32 priority;
- UINT64 flags;
- INT16 priority16;
-
- ioctl = (PWINDIVERT_IOCTL)inbuf;
- version = (WINDIVERT_VERSION *)outbuf;
- if (outbuflen != sizeof(WINDIVERT_VERSION) ||
- version->magic != WINDIVERT_MAGIC_DLL ||
- version->major < WINDIVERT_VERSION_MAJOR_MIN ||
- (version->bits != 8 * sizeof(UINT32) &&
- version->bits != 8 * sizeof(UINT64)))
- {
- status = STATUS_INVALID_PARAMETER;
- DEBUG_ERROR("failed to initialize; invalid version buffer",
- status);
- goto windivert_ioctl_exit;
- }
-
- layer = (WINDIVERT_LAYER)ioctl->initialize.layer;
- priority = ioctl->initialize.priority;
- flags = ioctl->initialize.flags;
- version->magic = WINDIVERT_MAGIC_SYS;
- version->major = WINDIVERT_VERSION_MAJOR;
- version->minor = WINDIVERT_VERSION_MINOR;
- version->bits = 8 * sizeof(void *);
-
- switch ((UINT32)layer)
- {
- case WINDIVERT_LAYER_NETWORK:
- case WINDIVERT_LAYER_NETWORK_FORWARD:
- case WINDIVERT_LAYER_FLOW:
- case WINDIVERT_LAYER_SOCKET:
- case WINDIVERT_LAYER_REFLECT:
- break;
- default:
- status = STATUS_INVALID_PARAMETER;
- DEBUG_ERROR("failed to set layer; invalid value", status);
- goto windivert_ioctl_exit;
- }
+ case IOCTL_WINDIVERT_RECV:
+ status = windivert_read(context, request);
+ if (NT_SUCCESS(status))
+ {
+ return;
+ }
+ break;
- if (priority > 2 * WINDIVERT_PRIORITY_MAX)
- {
- status = STATUS_INVALID_PARAMETER;
- DEBUG_ERROR("failed to set priority; value out of range",
- status);
- goto windivert_ioctl_exit;
- }
- priority16 = (INT16)priority - WINDIVERT_PRIORITY_MAX;
- priority = windivert_context_priority(priority);
+ case IOCTL_WINDIVERT_SEND:
- if (!WINDIVERT_FLAGS_VALID(flags))
- {
-windivert_ioctl_bad_flags:
- status = STATUS_INVALID_PARAMETER;
- DEBUG_ERROR("failed to set flags; invalid flags value",
- status);
- goto windivert_ioctl_exit;
- }
- switch ((UINT32)layer)
- {
- case WINDIVERT_LAYER_FLOW:
- case WINDIVERT_LAYER_REFLECT:
- if ((flags & WINDIVERT_FLAG_SNIFF) == 0 ||
- (flags & WINDIVERT_FLAG_RECV_ONLY) == 0)
- {
- goto windivert_ioctl_bad_flags;
- }
- break;
-
- case WINDIVERT_LAYER_SOCKET:
- if ((flags & WINDIVERT_FLAG_RECV_ONLY) == 0)
- {
- goto windivert_ioctl_bad_flags;
- }
- break;
+ req_context = windivert_req_context_get(request);
+ status = windivert_write(context, request, req_context);
+ if (NT_SUCCESS(status))
+ {
+ return;
+ }
+ break;
+
+ case IOCTL_WINDIVERT_INITIALIZE:
+ {
+ PWINDIVERT_VERSION version;
+ WINDIVERT_LAYER layer;
+ UINT32 priority;
+ UINT64 flags;
+ INT16 priority16;
+
+ ioctl = (PWINDIVERT_IOCTL)inbuf;
+ version = (WINDIVERT_VERSION*)outbuf;
+ if (outbuflen != sizeof(WINDIVERT_VERSION) ||
+ version->magic != WINDIVERT_MAGIC_DLL ||
+ version->major < WINDIVERT_VERSION_MAJOR_MIN ||
+ (version->bits != 8 * sizeof(UINT32) &&
+ version->bits != 8 * sizeof(UINT64)))
+ {
+ status = STATUS_INVALID_PARAMETER;
+ DEBUG_ERROR("failed to initialize; invalid version buffer",
+ status);
+ goto windivert_ioctl_exit;
+ }
- default:
- break;
- }
-
- KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
- if (context->state != WINDIVERT_CONTEXT_STATE_OPENING ||
- context->initialized)
- {
- KeReleaseInStackQueuedSpinLock(&lock_handle);
- status = STATUS_INVALID_DEVICE_STATE;
- goto windivert_ioctl_exit;
- }
- context->layer = (WINDIVERT_LAYER)layer;
- context->priority16 = priority16;
- context->priority = priority;
- context->flags = flags;
- context->initialized = TRUE;
- KeReleaseInStackQueuedSpinLock(&lock_handle);
+ layer = (WINDIVERT_LAYER)ioctl->initialize.layer;
+ priority = ioctl->initialize.priority;
+ flags = ioctl->initialize.flags;
+ version->magic = WINDIVERT_MAGIC_SYS;
+ version->major = WINDIVERT_VERSION_MAJOR;
+ version->minor = WINDIVERT_VERSION_MINOR;
+ version->bits = 8 * sizeof(void*);
+ switch ((UINT32)layer)
+ {
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ case WINDIVERT_LAYER_FLOW:
+ case WINDIVERT_LAYER_SOCKET:
+ case WINDIVERT_LAYER_REFLECT:
break;
+ default:
+ status = STATUS_INVALID_PARAMETER;
+ DEBUG_ERROR("failed to set layer; invalid value", status);
+ goto windivert_ioctl_exit;
}
- case IOCTL_WINDIVERT_STARTUP:
+ if (priority > 2 * WINDIVERT_PRIORITY_MAX)
{
- PEPROCESS process;
- LONGLONG timestamp;
- UINT64 filter_flags;
- UINT32 process_id;
- WINDIVERT_LAYER layer;
- UINT8 filter_len;
- WDFDEVICE device;
+ status = STATUS_INVALID_PARAMETER;
+ DEBUG_ERROR("failed to set priority; value out of range",
+ status);
+ goto windivert_ioctl_exit;
+ }
+ priority16 = (INT16)priority - WINDIVERT_PRIORITY_MAX;
+ priority = windivert_context_priority(priority);
- ioctl = (PWINDIVERT_IOCTL)inbuf;
- filter_flags = ioctl->startup.flags;
- if ((filter_flags & ~WINDIVERT_FILTER_FLAGS_ALL) != 0)
- {
- status = STATUS_INVALID_PARAMETER;
- DEBUG_ERROR("failed to start filter; invalid flags", status);
- goto windivert_ioctl_exit;
- }
-
- KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
- if (context->state != WINDIVERT_CONTEXT_STATE_OPENING ||
- !context->initialized)
+ if (!WINDIVERT_FLAGS_VALID(flags))
+ {
+ windivert_ioctl_bad_flags:
+ status = STATUS_INVALID_PARAMETER;
+ DEBUG_ERROR("failed to set flags; invalid flags value",
+ status);
+ goto windivert_ioctl_exit;
+ }
+ switch ((UINT32)layer)
+ {
+ case WINDIVERT_LAYER_FLOW:
+ case WINDIVERT_LAYER_REFLECT:
+ if ((flags & WINDIVERT_FLAG_SNIFF) == 0 ||
+ (flags & WINDIVERT_FLAG_RECV_ONLY) == 0)
{
- KeReleaseInStackQueuedSpinLock(&lock_handle);
- status = STATUS_INVALID_DEVICE_STATE;
- goto windivert_ioctl_exit;
+ goto windivert_ioctl_bad_flags;
}
- context->state = WINDIVERT_CONTEXT_STATE_OPEN;
- layer = context->layer;
- process = context->process;
- KeReleaseInStackQueuedSpinLock(&lock_handle);
+ break;
- ioctl_filter = (const WINDIVERT_FILTER *)outbuf;
- ioctl_filter_len = outbuflen;
- filter = windivert_filter_compile(ioctl_filter, ioctl_filter_len,
- layer);
- if (filter == NULL)
+ case WINDIVERT_LAYER_SOCKET:
+ if ((flags & WINDIVERT_FLAG_RECV_ONLY) == 0)
{
- status = STATUS_INVALID_PARAMETER;
- DEBUG_ERROR("failed to compile filter", status);
- goto windivert_ioctl_exit;
+ goto windivert_ioctl_bad_flags;
}
- filter_len = (UINT8)(ioctl_filter_len / sizeof(WINDIVERT_FILTER));
- process_id = (UINT32)(ULONG_PTR)PsGetProcessId(process);
- timestamp = KeQueryPerformanceCounter(NULL).QuadPart;
+ break;
- KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
- if (context->state != WINDIVERT_CONTEXT_STATE_OPEN)
- {
- KeReleaseInStackQueuedSpinLock(&lock_handle);
- windivert_free((PVOID)filter);
- status = STATUS_INVALID_DEVICE_STATE;
- goto windivert_ioctl_exit;
- }
- context->filter = filter;
- context->filter_len = filter_len;
- context->filter_flags = filter_flags;
- context->reflect.data.Timestamp = timestamp;
- context->reflect.data.ProcessId = process_id;
- context->reflect.data.Layer = context->layer;
- context->reflect.data.Flags = context->flags;
- context->reflect.data.Priority = context->priority16;
- context->reflect.open = FALSE;
- context->shutdown_recv_enabled =
- (layer != WINDIVERT_LAYER_REFLECT);
- device = context->device;
+ default:
+ break;
+ }
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPENING ||
+ context->initialized)
+ {
KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = STATUS_INVALID_DEVICE_STATE;
+ goto windivert_ioctl_exit;
+ }
+ context->layer = (WINDIVERT_LAYER)layer;
+ context->priority16 = priority16;
+ context->priority = priority;
+ context->flags = flags;
+ context->initialized = TRUE;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
- if (InterlockedIncrement64(&num_opens) == 1)
- {
- PDRIVER_OBJECT driver = WdfDriverWdmGetDriverObject(
- WdfDeviceGetDriver(device));
- windivert_log_event(process, driver, L"LOAD");
- }
- windivert_reflect_open_event(context);
+ break;
+ }
- status = windivert_install_callouts(context, layer, filter_flags);
+ case IOCTL_WINDIVERT_STARTUP:
+ {
+ PEPROCESS process;
+ LONGLONG timestamp;
+ UINT64 filter_flags;
+ UINT32 process_id;
+ WINDIVERT_LAYER layer;
+ UINT8 filter_len;
+ WDFDEVICE device;
- break;
+ ioctl = (PWINDIVERT_IOCTL)inbuf;
+ filter_flags = ioctl->startup.flags;
+ if ((filter_flags & ~WINDIVERT_FILTER_FLAGS_ALL) != 0)
+ {
+ status = STATUS_INVALID_PARAMETER;
+ DEBUG_ERROR("failed to start filter; invalid flags", status);
+ goto windivert_ioctl_exit;
}
- case IOCTL_WINDIVERT_SHUTDOWN:
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPENING ||
+ !context->initialized)
{
- WINDIVERT_SHUTDOWN how;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = STATUS_INVALID_DEVICE_STATE;
+ goto windivert_ioctl_exit;
+ }
+ context->state = WINDIVERT_CONTEXT_STATE_OPEN;
+ layer = context->layer;
+ process = context->process;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
- ioctl = (PWINDIVERT_IOCTL)inbuf;
- how = (WINDIVERT_SHUTDOWN)ioctl->shutdown.how;
- KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
- if (context->state != WINDIVERT_CONTEXT_STATE_OPEN)
- {
- KeReleaseInStackQueuedSpinLock(&lock_handle);
- status = STATUS_INVALID_DEVICE_STATE;
- goto windivert_ioctl_exit;
- }
- switch ((UINT32)how)
- {
- case WINDIVERT_SHUTDOWN_RECV:
- context->shutdown_recv = TRUE;
- break;
- case WINDIVERT_SHUTDOWN_SEND:
- context->shutdown_send = TRUE;
- break;
- case WINDIVERT_SHUTDOWN_BOTH:
- context->shutdown_recv = context->shutdown_send = TRUE;
- break;
- default:
- KeReleaseInStackQueuedSpinLock(&lock_handle);
- status = STATUS_INVALID_PARAMETER;
- DEBUG_ERROR("failed to shutdown handle; invalid how",
- status);
- goto windivert_ioctl_exit;
- }
+ ioctl_filter = (const WINDIVERT_FILTER*)outbuf;
+ ioctl_filter_len = outbuflen;
+ filter = windivert_filter_compile(ioctl_filter, ioctl_filter_len,
+ layer);
+ if (filter == NULL)
+ {
+ status = STATUS_INVALID_PARAMETER;
+ DEBUG_ERROR("failed to compile filter", status);
+ goto windivert_ioctl_exit;
+ }
+ filter_len = (UINT8)(ioctl_filter_len / sizeof(WINDIVERT_FILTER));
+ process_id = (UINT32)(ULONG_PTR)PsGetProcessId(process);
+ timestamp = KeQueryPerformanceCounter(NULL).QuadPart;
+
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPEN)
+ {
KeReleaseInStackQueuedSpinLock(&lock_handle);
- windivert_read_service(context);
- break;
+ windivert_free((PVOID)filter);
+ status = STATUS_INVALID_DEVICE_STATE;
+ goto windivert_ioctl_exit;
}
-
- case IOCTL_WINDIVERT_SET_PARAM:
+ context->filter = filter;
+ context->filter_len = filter_len;
+ context->filter_flags = filter_flags;
+ context->reflect.data.Timestamp = timestamp;
+ context->reflect.data.ProcessId = process_id;
+ context->reflect.data.Layer = context->layer;
+ context->reflect.data.Flags = context->flags;
+ context->reflect.data.Priority = context->priority16;
+ context->reflect.open = FALSE;
+ context->shutdown_recv_enabled =
+ (layer != WINDIVERT_LAYER_REFLECT);
+ device = context->device;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+
+ if (InterlockedIncrement64(&num_opens) == 1)
{
- WINDIVERT_PARAM param;
- UINT64 value;
+ PDRIVER_OBJECT driver = WdfDriverWdmGetDriverObject(
+ WdfDeviceGetDriver(device));
+ windivert_log_event(process, driver, L"LOAD");
+ }
+ windivert_reflect_open_event(context);
- ioctl = (PWINDIVERT_IOCTL)inbuf;
- param = (WINDIVERT_PARAM)ioctl->set_param.param;
- value = ioctl->set_param.val;
- KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
- if (context->state != WINDIVERT_CONTEXT_STATE_OPEN)
- {
- KeReleaseInStackQueuedSpinLock(&lock_handle);
- status = STATUS_INVALID_DEVICE_STATE;
- goto windivert_ioctl_exit;
- }
- switch ((UINT32)param)
- {
- case WINDIVERT_PARAM_QUEUE_LENGTH:
- if (value < WINDIVERT_PARAM_QUEUE_LENGTH_MIN ||
- value > WINDIVERT_PARAM_QUEUE_LENGTH_MAX)
- {
- KeReleaseInStackQueuedSpinLock(&lock_handle);
- status = STATUS_INVALID_PARAMETER;
- DEBUG_ERROR("failed to set queue length; invalid "
- "value", status);
- goto windivert_ioctl_exit;
- }
- context->packet_queue_maxlength = (ULONG)value;
- break;
+ status = windivert_install_callouts(context, layer, filter_flags);
- case WINDIVERT_PARAM_QUEUE_TIME:
- if (value < WINDIVERT_PARAM_QUEUE_TIME_MIN ||
- value > WINDIVERT_PARAM_QUEUE_TIME_MAX)
- {
- KeReleaseInStackQueuedSpinLock(&lock_handle);
- status = STATUS_INVALID_PARAMETER;
- DEBUG_ERROR("failed to set queue time; invalid "
- "value", status);
- goto windivert_ioctl_exit;
- }
- context->packet_queue_maxcounts =
- (LONGLONG)value * counts_per_ms;
- context->packet_queue_maxtime = (ULONG)value;
- break;
+ break;
+ }
- case WINDIVERT_PARAM_QUEUE_SIZE:
- if (value < WINDIVERT_PARAM_QUEUE_SIZE_MIN ||
- value > WINDIVERT_PARAM_QUEUE_SIZE_MAX)
- {
- KeReleaseInStackQueuedSpinLock(&lock_handle);
- status = STATUS_INVALID_PARAMETER;
- DEBUG_ERROR("failed to set queue size; invalid "
- "value", status);
- goto windivert_ioctl_exit;
- }
- context->packet_queue_maxsize = (ULONG)value;
- break;
+ case IOCTL_WINDIVERT_SHUTDOWN:
+ {
+ WINDIVERT_SHUTDOWN how;
- default:
- KeReleaseInStackQueuedSpinLock(&lock_handle);
- status = STATUS_INVALID_PARAMETER;
- DEBUG_ERROR("failed to set parameter; invalid parameter",
- status);
- goto windivert_ioctl_exit;
- }
+ ioctl = (PWINDIVERT_IOCTL)inbuf;
+ how = (WINDIVERT_SHUTDOWN)ioctl->shutdown.how;
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPEN)
+ {
KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = STATUS_INVALID_DEVICE_STATE;
+ goto windivert_ioctl_exit;
+ }
+ switch ((UINT32)how)
+ {
+ case WINDIVERT_SHUTDOWN_RECV:
+ context->shutdown_recv = TRUE;
+ break;
+ case WINDIVERT_SHUTDOWN_SEND:
+ context->shutdown_send = TRUE;
break;
+ case WINDIVERT_SHUTDOWN_BOTH:
+ context->shutdown_recv = context->shutdown_send = TRUE;
+ break;
+ default:
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = STATUS_INVALID_PARAMETER;
+ DEBUG_ERROR("failed to shutdown handle; invalid how",
+ status);
+ goto windivert_ioctl_exit;
}
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ windivert_read_service(context);
+ break;
+ }
- case IOCTL_WINDIVERT_GET_PARAM:
- {
- WINDIVERT_PARAM param;
+ case IOCTL_WINDIVERT_SET_PARAM:
+ {
+ WINDIVERT_PARAM param;
+ UINT64 value;
- ioctl = (PWINDIVERT_IOCTL)inbuf;
- param = (WINDIVERT_PARAM)ioctl->get_param.param;
- if (outbuflen != sizeof(UINT64))
+ ioctl = (PWINDIVERT_IOCTL)inbuf;
+ param = (WINDIVERT_PARAM)ioctl->set_param.param;
+ value = ioctl->set_param.val;
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPEN)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = STATUS_INVALID_DEVICE_STATE;
+ goto windivert_ioctl_exit;
+ }
+ switch ((UINT32)param)
+ {
+ case WINDIVERT_PARAM_QUEUE_LEN:
+ if (value < WINDIVERT_PARAM_QUEUE_LENGTH_MIN ||
+ value > WINDIVERT_PARAM_QUEUE_LENGTH_MAX)
{
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
status = STATUS_INVALID_PARAMETER;
- DEBUG_ERROR("failed to get parameter; invalid output "
- "buffer size", status);
+ DEBUG_ERROR("failed to set queue length; invalid "
+ "value", status);
goto windivert_ioctl_exit;
}
- valptr = (UINT64 *)outbuf;
- KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
- if (context->state != WINDIVERT_CONTEXT_STATE_OPEN)
+ context->packet_queue_maxlength = (ULONG)value;
+ break;
+
+ case WINDIVERT_PARAM_QUEUE_TIME:
+ if (value < WINDIVERT_PARAM_QUEUE_TIME_MIN ||
+ value > WINDIVERT_PARAM_QUEUE_TIME_MAX)
{
KeReleaseInStackQueuedSpinLock(&lock_handle);
- status = STATUS_INVALID_DEVICE_STATE;
+ status = STATUS_INVALID_PARAMETER;
+ DEBUG_ERROR("failed to set queue time; invalid "
+ "value", status);
goto windivert_ioctl_exit;
}
- switch ((UINT32)param)
+ context->packet_queue_maxcounts =
+ (LONGLONG)value * counts_per_ms;
+ context->packet_queue_maxtime = (ULONG)value;
+ break;
+
+ case WINDIVERT_PARAM_QUEUE_SIZE:
+ if (value < WINDIVERT_PARAM_QUEUE_SIZE_MIN ||
+ value > WINDIVERT_PARAM_QUEUE_SIZE_MAX)
{
- case WINDIVERT_PARAM_QUEUE_LENGTH:
- *valptr = context->packet_queue_maxlength;
- break;
- case WINDIVERT_PARAM_QUEUE_TIME:
- *valptr = context->packet_queue_maxtime;
- break;
- case WINDIVERT_PARAM_QUEUE_SIZE:
- *valptr = context->packet_queue_maxsize;
- break;
- case WINDIVERT_PARAM_VERSION_MAJOR:
- *valptr = WINDIVERT_VERSION_MAJOR;
- break;
- case WINDIVERT_PARAM_VERSION_MINOR:
- *valptr = WINDIVERT_VERSION_MINOR;
- break;
- default:
- KeReleaseInStackQueuedSpinLock(&lock_handle);
- status = STATUS_INVALID_PARAMETER;
- DEBUG_ERROR("failed to get parameter; invalid parameter",
- status);
- goto windivert_ioctl_exit;
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = STATUS_INVALID_PARAMETER;
+ DEBUG_ERROR("failed to set queue size; invalid "
+ "value", status);
+ goto windivert_ioctl_exit;
}
+ context->packet_queue_maxsize = (ULONG)value;
+ break;
+
+ default:
KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = STATUS_INVALID_PARAMETER;
+ DEBUG_ERROR("failed to set parameter; invalid parameter",
+ status);
+ goto windivert_ioctl_exit;
+ }
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ break;
+ }
+
+ case IOCTL_WINDIVERT_GET_PARAM:
+ {
+ WINDIVERT_PARAM param;
+
+ ioctl = (PWINDIVERT_IOCTL)inbuf;
+ param = (WINDIVERT_PARAM)ioctl->get_param.param;
+ if (outbuflen != sizeof(UINT64))
+ {
+ status = STATUS_INVALID_PARAMETER;
+ DEBUG_ERROR("failed to get parameter; invalid output "
+ "buffer size", status);
+ goto windivert_ioctl_exit;
+ }
+ valptr = (UINT64*)outbuf;
+ KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
+ if (context->state != WINDIVERT_CONTEXT_STATE_OPEN)
+ {
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = STATUS_INVALID_DEVICE_STATE;
+ goto windivert_ioctl_exit;
+ }
+ switch ((UINT32)param)
+ {
+ case WINDIVERT_PARAM_QUEUE_LEN:
+ *valptr = context->packet_queue_maxlength;
+ break;
+ case WINDIVERT_PARAM_QUEUE_TIME:
+ *valptr = context->packet_queue_maxtime;
+ break;
+ case WINDIVERT_PARAM_QUEUE_SIZE:
+ *valptr = context->packet_queue_maxsize;
+ break;
+ case WINDIVERT_PARAM_VERSION_MAJOR:
+ *valptr = WINDIVERT_VERSION_MAJOR;
+ break;
+ case WINDIVERT_PARAM_VERSION_MINOR:
+ *valptr = WINDIVERT_VERSION_MINOR;
break;
+ default:
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ status = STATUS_INVALID_PARAMETER;
+ DEBUG_ERROR("failed to get parameter; invalid parameter",
+ status);
+ goto windivert_ioctl_exit;
}
+ KeReleaseInStackQueuedSpinLock(&lock_handle);
+ break;
+ }
- default:
- status = STATUS_INVALID_DEVICE_REQUEST;
- DEBUG_ERROR("failed to complete I/O control; invalid request",
- status);
- break;
+ default:
+ status = STATUS_INVALID_DEVICE_REQUEST;
+ DEBUG_ERROR("failed to complete I/O control; invalid request",
+ status);
+ break;
}
windivert_ioctl_exit:
@@ -3395,7 +3392,7 @@ extern VOID windivert_ioctl(IN WDFQUEUE queue, IN WDFREQUEST request,
* WinDivert notify function.
*/
static NTSTATUS windivert_notify(IN FWPS_CALLOUT_NOTIFY_TYPE type,
- IN const GUID *filter_key, IN const FWPS_FILTER0 *filter)
+ IN const GUID* filter_key, IN const FWPS_FILTER0* filter)
{
UNREFERENCED_PARAMETER(type);
UNREFERENCED_PARAMETER(filter_key);
@@ -3406,26 +3403,26 @@ static NTSTATUS windivert_notify(IN FWPS_CALLOUT_NOTIFY_TYPE type,
/*
* WinDivert get fixed values.
*/
-static UINT8 windivert_get_val8(const FWPS_INCOMING_VALUES0 *fixed_vals,
+static UINT8 windivert_get_val8(const FWPS_INCOMING_VALUES0* fixed_vals,
int idx)
{
FWP_VALUE0 value = fixed_vals->incomingValue[idx].value;
- return (value.type != FWP_UINT8? 0: value.uint8);
+ return (value.type != FWP_UINT8 ? 0 : value.uint8);
}
-static UINT16 windivert_get_val16(const FWPS_INCOMING_VALUES0 *fixed_vals,
+static UINT16 windivert_get_val16(const FWPS_INCOMING_VALUES0* fixed_vals,
int idx)
{
FWP_VALUE0 value = fixed_vals->incomingValue[idx].value;
- return (value.type != FWP_UINT16? 0: value.uint16);
+ return (value.type != FWP_UINT16 ? 0 : value.uint16);
}
-static UINT32 windivert_get_val32(const FWPS_INCOMING_VALUES0 *fixed_vals,
+static UINT32 windivert_get_val32(const FWPS_INCOMING_VALUES0* fixed_vals,
int idx)
{
FWP_VALUE0 value = fixed_vals->incomingValue[idx].value;
- return (value.type != FWP_UINT32? 0: value.uint32);
+ return (value.type != FWP_UINT32 ? 0 : value.uint32);
}
-static void windivert_get_ipv4_addr(const FWPS_INCOMING_VALUES0 *fixed_vals,
- int idx, UINT32 *addr)
+static void windivert_get_ipv4_addr(const FWPS_INCOMING_VALUES0* fixed_vals,
+ int idx, UINT32* addr)
{
FWP_VALUE0 value = fixed_vals->incomingValue[idx].value;
addr[2] = addr[3] = 0;
@@ -3439,10 +3436,10 @@ static void windivert_get_ipv4_addr(const FWPS_INCOMING_VALUES0 *fixed_vals,
addr[1] = 0x0000FFFF;
}
}
-static void windivert_get_ipv6_addr(const FWPS_INCOMING_VALUES0 *fixed_vals,
- int idx, UINT32 *addr)
+static void windivert_get_ipv6_addr(const FWPS_INCOMING_VALUES0* fixed_vals,
+ int idx, UINT32* addr)
{
- UINT8 *addr8 = (UINT8 *)addr;
+ UINT8* addr8 = (UINT8*)addr;
INT i;
FWP_VALUE0 value = fixed_vals->incomingValue[idx].value;
if (value.type != FWP_BYTE_ARRAY16_TYPE)
@@ -3450,9 +3447,9 @@ static void windivert_get_ipv6_addr(const FWPS_INCOMING_VALUES0 *fixed_vals,
addr[0] = addr[1] = addr[2] = addr[3] = 0;
return;
}
- for (i = 16-1; i >= 0; i--)
+ for (i = 16 - 1; i >= 0; i--)
{
- addr8[16-i-1] = value.byteArray16->byteArray16[i];
+ addr8[16 - i - 1] = value.byteArray16->byteArray16[i];
}
}
@@ -3460,10 +3457,10 @@ static void windivert_get_ipv6_addr(const FWPS_INCOMING_VALUES0 *fixed_vals,
* WinDivert classify outbound IPv4 function.
*/
static void windivert_outbound_network_v4_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result)
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result)
{
WINDIVERT_DATA_NETWORK network_data;
BOOL loopback;
@@ -3484,7 +3481,7 @@ static void windivert_outbound_network_v4_classify(
FWPS_FIELD_OUTBOUND_IPPACKET_V4_SUB_INTERFACE_INDEX);
loopback = ((windivert_get_val32(fixed_vals,
FWPS_FIELD_OUTBOUND_IPPACKET_V4_FLAGS) &
- FWP_CONDITION_FLAG_IS_LOOPBACK) != 0);
+ FWP_CONDITION_FLAG_IS_LOOPBACK) != 0);
windivert_network_classify(context, &network_data, /*ipv4=*/TRUE,
/*outbound=*/TRUE, loopback, /*reassembled=*/FALSE, /*advance=*/0,
@@ -3495,15 +3492,15 @@ static void windivert_outbound_network_v4_classify(
* WinDivert classify outbound IPv6 function.
*/
static void windivert_outbound_network_v6_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result)
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result)
{
WINDIVERT_DATA_NETWORK network_data;
BOOL loopback;
context_t context = (context_t)(ULONG_PTR)filter->context;
-
+
UNREFERENCED_PARAMETER(meta_vals);
UNREFERENCED_PARAMETER(data);
UNREFERENCED_PARAMETER(flow_context);
@@ -3519,7 +3516,7 @@ static void windivert_outbound_network_v6_classify(
FWPS_FIELD_OUTBOUND_IPPACKET_V6_SUB_INTERFACE_INDEX);
loopback = ((windivert_get_val32(fixed_vals,
FWPS_FIELD_OUTBOUND_IPPACKET_V6_FLAGS) &
- FWP_CONDITION_FLAG_IS_LOOPBACK) != 0);
+ FWP_CONDITION_FLAG_IS_LOOPBACK) != 0);
windivert_network_classify(context, &network_data, /*ipv4=*/FALSE,
/*outbound=*/TRUE, loopback, /*reassembled=*/FALSE, /*advance=*/0,
@@ -3530,17 +3527,17 @@ static void windivert_outbound_network_v6_classify(
* WinDivert classify inbound IPv4 function.
*/
static void windivert_inbound_network_v4_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result)
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result)
{
WINDIVERT_DATA_NETWORK network_data;
UINT advance;
UINT32 flags;
BOOL fragment, loopback, reassembled;
context_t context = (context_t)(ULONG_PTR)filter->context;
-
+
UNREFERENCED_PARAMETER(data);
UNREFERENCED_PARAMETER(flow_context);
@@ -3570,7 +3567,7 @@ static void windivert_inbound_network_v4_classify(
network_data.SubIfIdx = windivert_get_val32(fixed_vals,
FWPS_FIELD_INBOUND_IPPACKET_V4_SUB_INTERFACE_INDEX);
advance = meta_vals->ipHeaderSize;
-
+
windivert_network_classify(context, &network_data, /*ipv4=*/TRUE,
/*outbound=*/FALSE, loopback, reassembled, advance, data, result);
}
@@ -3579,17 +3576,17 @@ static void windivert_inbound_network_v4_classify(
* WinDivert classify inbound IPv6 function.
*/
static void windivert_inbound_network_v6_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result)
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result)
{
WINDIVERT_DATA_NETWORK network_data;
UINT advance;
UINT32 flags;
BOOL fragment, loopback, reassembled;
context_t context = (context_t)(ULONG_PTR)filter->context;
-
+
UNREFERENCED_PARAMETER(data);
UNREFERENCED_PARAMETER(flow_context);
@@ -3619,7 +3616,7 @@ static void windivert_inbound_network_v6_classify(
network_data.SubIfIdx = windivert_get_val32(fixed_vals,
FWPS_FIELD_INBOUND_IPPACKET_V6_SUB_INTERFACE_INDEX);
advance = meta_vals->ipHeaderSize;
-
+
windivert_network_classify(context, &network_data, /*ipv4=*/FALSE,
/*outbound=*/FALSE, loopback, reassembled, advance, data, result);
}
@@ -3628,16 +3625,16 @@ static void windivert_inbound_network_v6_classify(
* WinDivert classify forward IPv4 function.
*/
static void windivert_forward_network_v4_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result)
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result)
{
WINDIVERT_DATA_NETWORK network_data;
UINT32 flags;
BOOL group;
context_t context = (context_t)(ULONG_PTR)filter->context;
-
+
UNREFERENCED_PARAMETER(meta_vals);
UNREFERENCED_PARAMETER(data);
UNREFERENCED_PARAMETER(flow_context);
@@ -3653,7 +3650,7 @@ static void windivert_forward_network_v4_classify(
result->actionType = FWP_ACTION_CONTINUE;
return;
}
-
+
network_data.IfIdx = windivert_get_val32(fixed_vals,
FWPS_FIELD_IPFORWARD_V4_DESTINATION_INTERFACE_INDEX);
network_data.SubIfIdx = 0;
@@ -3667,16 +3664,16 @@ static void windivert_forward_network_v4_classify(
* WinDivert classify forward IPv6 function.
*/
static void windivert_forward_network_v6_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result)
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result)
{
WINDIVERT_DATA_NETWORK network_data;
UINT32 flags;
BOOL group;
context_t context = (context_t)(ULONG_PTR)filter->context;
-
+
UNREFERENCED_PARAMETER(meta_vals);
UNREFERENCED_PARAMETER(data);
UNREFERENCED_PARAMETER(flow_context);
@@ -3707,8 +3704,8 @@ static void windivert_forward_network_v6_classify(
*/
static void windivert_network_classify(context_t context,
IN PWINDIVERT_DATA_NETWORK network_data, IN BOOL ipv4, IN BOOL outbound,
- IN BOOL loopback, IN BOOL reassembled, IN UINT advance, IN OUT void *data,
- OUT FWPS_CLASSIFY_OUT0 *result)
+ IN BOOL loopback, IN BOOL reassembled, IN UINT advance, IN OUT void* data,
+ OUT FWPS_CLASSIFY_OUT0* result)
{
KLOCK_QUEUE_HANDLE lock_handle;
FWPS_PACKET_INJECTION_STATE packet_state;
@@ -3720,7 +3717,7 @@ static void windivert_network_classify(context_t context,
PNET_BUFFER buffer, buffer_fst, buffer_itr;
BOOL impostor, sniff_mode, frag_mode, ok;
WDFOBJECT object;
- const WINDIVERT_FILTER *filter;
+ const WINDIVERT_FILTER* filter;
LONGLONG timestamp;
NTSTATUS status;
@@ -3809,7 +3806,7 @@ static void windivert_network_classify(context_t context,
// Filter fragments or reassembled packets.
frag_mode =
- (outbound || layer == WINDIVERT_LAYER_NETWORK_FORWARD? TRUE:
+ (outbound || layer == WINDIVERT_LAYER_NETWORK_FORWARD ? TRUE :
(flags & WINDIVERT_FLAG_FRAGMENTS) != 0);
if (frag_mode && reassembled)
{
@@ -3840,7 +3837,7 @@ static void windivert_network_classify(context_t context,
* either queue or re-inject based on the filter.
*/
- // Find the first NET_BUFFER we need to queue:
+ // Find the first NET_BUFFER we need to queue:
buffer_fst = buffer;
do
{
@@ -3852,8 +3849,7 @@ static void windivert_network_classify(context_t context,
break;
}
buffer_fst = NET_BUFFER_NEXT_NB(buffer_fst);
- }
- while (buffer_fst != NULL);
+ } while (buffer_fst != NULL);
// If no packet matches the filter, CONTINUE the entire NET_BUFFER_LIST.
if (buffer_fst == NULL)
@@ -3939,10 +3935,10 @@ static void windivert_network_classify(context_t context,
* WinDivert classify flow established IPv4 function.
*/
static void windivert_flow_established_v4_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result)
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result)
{
WINDIVERT_DATA_FLOW flow_data;
BOOL outbound, loopback;
@@ -3984,10 +3980,10 @@ static void windivert_flow_established_v4_classify(
* WinDivert classify flow established IPv6 function.
*/
static void windivert_flow_established_v6_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result)
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result)
{
WINDIVERT_DATA_FLOW flow_data;
BOOL outbound, loopback;
@@ -4012,7 +4008,7 @@ static void windivert_flow_established_v6_classify(
FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_IP_REMOTE_PORT);
flow_data.Protocol = windivert_get_val8(fixed_vals,
FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_IP_PROTOCOL);
-
+
outbound = (windivert_get_val32(fixed_vals,
FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_DIRECTION) ==
FWP_DIRECTION_OUTBOUND);
@@ -4020,7 +4016,7 @@ static void windivert_flow_established_v6_classify(
FWPS_FIELD_ALE_FLOW_ESTABLISHED_V6_FLAGS) &
FWP_CONDITION_FLAG_IS_LOOPBACK) != 0);
flow_id = meta_vals->flowHandle;
-
+
windivert_flow_established_classify(context, flow_id, &flow_data,
/*ipv4=*/FALSE, outbound, loopback, result);
}
@@ -4030,7 +4026,7 @@ static void windivert_flow_established_v6_classify(
*/
static void windivert_flow_established_classify(context_t context,
IN UINT64 flow_id, IN PWINDIVERT_DATA_FLOW flow_data, IN BOOL ipv4,
- IN BOOL outbound, IN BOOL loopback, OUT FWPS_CLASSIFY_OUT0 *result)
+ IN BOOL outbound, IN BOOL loopback, OUT FWPS_CLASSIFY_OUT0* result)
{
KLOCK_QUEUE_HANDLE lock_handle;
UINT64 flags, filter_flags;
@@ -4038,7 +4034,7 @@ static void windivert_flow_established_classify(context_t context,
UINT16 layer_id;
BOOL match, ok;
WDFOBJECT object;
- const WINDIVERT_FILTER *filter;
+ const WINDIVERT_FILTER* filter;
LONGLONG timestamp;
flow_t flow;
NTSTATUS status;
@@ -4051,7 +4047,7 @@ static void windivert_flow_established_classify(context_t context,
// Get the timestamp.
timestamp = KeQueryPerformanceCounter(NULL).QuadPart;
-
+
result->actionType = FWP_ACTION_CONTINUE;
KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
@@ -4064,7 +4060,7 @@ static void windivert_flow_established_classify(context_t context,
filter = context->filter;
flags = context->flags;
filter_flags = context->filter_flags;
- callout_id = (ipv4? context->flow_v4_callout_id:
+ callout_id = (ipv4 ? context->flow_v4_callout_id :
context->flow_v6_callout_id);
object = (WDFOBJECT)context->object;
@@ -4106,8 +4102,8 @@ static void windivert_flow_established_classify(context_t context,
WdfObjectDereference(object);
return;
}
- layer_id = (ipv4? FWPS_LAYER_ALE_FLOW_ESTABLISHED_V4:
- FWPS_LAYER_ALE_FLOW_ESTABLISHED_V6);
+ layer_id = (ipv4 ? FWPS_LAYER_ALE_FLOW_ESTABLISHED_V4 :
+ FWPS_LAYER_ALE_FLOW_ESTABLISHED_V6);
flow->context = context;
flow->flow_id = flow_id;
flow->callout_id = callout_id;
@@ -4164,13 +4160,13 @@ static void windivert_flow_delete_notify(UINT16 layer_id, UINT32 callout_id,
BOOL match, cleanup;
WDFOBJECT object;
context_t context;
- const WINDIVERT_FILTER *filter;
+ const WINDIVERT_FILTER* filter;
LONGLONG timestamp;
flow_t flow;
UNREFERENCED_PARAMETER(layer_id);
UNREFERENCED_PARAMETER(callout_id);
-
+
flow = (flow_t)(ULONG_PTR)flow_context;
if (flow == NULL)
{
@@ -4224,10 +4220,10 @@ static void windivert_flow_delete_notify(UINT16 layer_id, UINT32 callout_id,
* WinDivert classify resource assignment IPv4 function.
*/
static void windivert_resource_assignment_v4_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result)
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result)
{
WINDIVERT_DATA_SOCKET socket_data;
BOOL loopback;
@@ -4267,10 +4263,10 @@ static void windivert_resource_assignment_v4_classify(
* WinDivert classify resource assignment IPv6 function.
*/
static void windivert_resource_assignment_v6_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result)
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result)
{
WINDIVERT_DATA_SOCKET socket_data;
BOOL loopback;
@@ -4310,10 +4306,10 @@ static void windivert_resource_assignment_v6_classify(
* WinDivert classify resource release IPv4 function.
*/
static void windivert_resource_release_v4_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result)
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result)
{
WINDIVERT_DATA_SOCKET socket_data;
BOOL loopback;
@@ -4348,10 +4344,10 @@ static void windivert_resource_release_v4_classify(
* WinDivert classify resource release IPv6 function.
*/
static void windivert_resource_release_v6_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result)
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result)
{
WINDIVERT_DATA_SOCKET socket_data;
BOOL loopback;
@@ -4386,10 +4382,10 @@ static void windivert_resource_release_v6_classify(
* WinDivert classify auth connect IPv4 function.
*/
static void windivert_auth_connect_v4_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result)
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result)
{
WINDIVERT_DATA_SOCKET socket_data;
UINT32 flags;
@@ -4438,10 +4434,10 @@ static void windivert_auth_connect_v4_classify(
* WinDivert classify auth connect IPv6 function.
*/
static void windivert_auth_connect_v6_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result)
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result)
{
WINDIVERT_DATA_SOCKET socket_data;
UINT32 flags;
@@ -4490,10 +4486,10 @@ static void windivert_auth_connect_v6_classify(
* WinDivert classify endpoint closure IPv4 function.
*/
static void windivert_endpoint_closure_v4_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result)
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result)
{
WINDIVERT_DATA_SOCKET socket_data;
BOOL loopback;
@@ -4531,10 +4527,10 @@ static void windivert_endpoint_closure_v4_classify(
* WinDivert classify endpoint closure IPv6 function.
*/
static void windivert_endpoint_closure_v6_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result)
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result)
{
WINDIVERT_DATA_SOCKET socket_data;
BOOL loopback;
@@ -4572,10 +4568,10 @@ static void windivert_endpoint_closure_v6_classify(
* WinDivert classify auth listen IPv4 function.
*/
static void windivert_auth_listen_v4_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result)
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result)
{
WINDIVERT_DATA_SOCKET socket_data;
BOOL loopback;
@@ -4614,10 +4610,10 @@ static void windivert_auth_listen_v4_classify(
* WinDivert classify auth listen IPv6 function.
*/
static void windivert_auth_listen_v6_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result)
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result)
{
WINDIVERT_DATA_SOCKET socket_data;
BOOL loopback;
@@ -4656,10 +4652,10 @@ static void windivert_auth_listen_v6_classify(
* WinDivert classify auth recv accept IPv4 function.
*/
static void windivert_auth_recv_accept_v4_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result)
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result)
{
WINDIVERT_DATA_SOCKET socket_data;
UINT32 flags;
@@ -4708,16 +4704,16 @@ static void windivert_auth_recv_accept_v4_classify(
* WinDivert classify auth recv accept IPv6 function.
*/
static void windivert_auth_recv_accept_v6_classify(
- IN const FWPS_INCOMING_VALUES0 *fixed_vals,
- IN const FWPS_INCOMING_METADATA_VALUES0 *meta_vals, IN OUT void *data,
- const FWPS_FILTER0 *filter, IN UINT64 flow_context,
- OUT FWPS_CLASSIFY_OUT0 *result)
+ IN const FWPS_INCOMING_VALUES0* fixed_vals,
+ IN const FWPS_INCOMING_METADATA_VALUES0* meta_vals, IN OUT void* data,
+ const FWPS_FILTER0* filter, IN UINT64 flow_context,
+ OUT FWPS_CLASSIFY_OUT0* result)
{
WINDIVERT_DATA_SOCKET socket_data;
UINT32 flags;
BOOL loopback;
context_t context = (context_t)(ULONG_PTR)filter->context;
-
+
UNREFERENCED_PARAMETER(data);
UNREFERENCED_PARAMETER(flow_context);
@@ -4761,18 +4757,18 @@ static void windivert_auth_recv_accept_v6_classify(
*/
static void windivert_socket_classify(context_t context,
PWINDIVERT_DATA_SOCKET socket_data, WINDIVERT_EVENT event, BOOL ipv4,
- BOOL outbound, BOOL loopback, FWPS_CLASSIFY_OUT0 *result)
+ BOOL outbound, BOOL loopback, FWPS_CLASSIFY_OUT0* result)
{
KLOCK_QUEUE_HANDLE lock_handle;
UINT64 flags;
BOOL match, ok;
WDFOBJECT object;
- const WINDIVERT_FILTER *filter;
+ const WINDIVERT_FILTER* filter;
LONGLONG timestamp;
// Get the timestamp.
timestamp = KeQueryPerformanceCounter(NULL).QuadPart;
-
+
if ((result->rights & FWPS_RIGHT_ACTION_WRITE) != 0)
{
result->actionType = FWP_ACTION_CONTINUE;
@@ -4831,7 +4827,7 @@ VOID windivert_worker(IN WDFWORKITEM item)
KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
while (context->state == WINDIVERT_CONTEXT_STATE_OPEN &&
- !IsListEmpty(&context->work_queue))
+ !IsListEmpty(&context->work_queue))
{
entry = RemoveHeadList(&context->work_queue);
context->work_queue_length--;
@@ -4867,7 +4863,7 @@ static BOOL windivert_queue_work(context_t context, PVOID packet,
PNET_BUFFER buffer;
packet_t work;
ULONG packet_size;
- UINT8 *data;
+ UINT8* data;
PLIST_ENTRY old_entry;
NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO checksums;
PWINDIVERT_DATA_NETWORK network_data;
@@ -4900,7 +4896,7 @@ static BOOL windivert_queue_work(context_t context, PVOID packet,
{
status = WdfIoQueueRetrieveNextRequest(context->read_queue,
&request);
- request = (!NT_SUCCESS(status)? NULL: request);
+ request = (!NT_SUCCESS(status) ? NULL : request);
}
KeReleaseInStackQueuedSpinLock(&lock_handle);
if (request != NULL)
@@ -4915,112 +4911,112 @@ static BOOL windivert_queue_work(context_t context, PVOID packet,
// Copy the packet & layer data.
switch (layer)
{
- case WINDIVERT_LAYER_NETWORK:
- case WINDIVERT_LAYER_NETWORK_FORWARD:
- buffer = (PNET_BUFFER)packet;
- network_data = (PWINDIVERT_DATA_NETWORK)layer_data;
- if (packet_len > WINDIVERT_MTU_MAX)
- {
- // Cannot handle oversized packet
- return TRUE;
- }
- packet_size = WINDIVERT_PACKET_SIZE(WINDIVERT_DATA_NETWORK,
- packet_len);
- work = (packet_t)windivert_malloc(packet_size, FALSE);
- if (work == NULL)
- {
- return TRUE;
- }
- work->packet_len = (UINT32)packet_len;
- data = WINDIVERT_LAYER_DATA_PTR(work);
- RtlCopyMemory(data, network_data, sizeof(WINDIVERT_DATA_NETWORK));
- data = WINDIVERT_PACKET_DATA_PTR(WINDIVERT_DATA_NETWORK, work);
- if (!windivert_copy_data(buffer, data, packet_len))
- {
- windivert_free(work);
- return TRUE;
- }
- checksums.Value = NET_BUFFER_LIST_INFO(buffers,
- TcpIpChecksumNetBufferListInfo);
- if (outbound)
- {
- ip_checksum = (checksums.Transmit.IpHeaderChecksum == 0);
- tcp_checksum = (checksums.Transmit.TcpChecksum == 0);
- udp_checksum = (checksums.Transmit.UdpChecksum == 0);
- }
- else
- {
- ip_checksum = (checksums.Receive.IpChecksumSucceeded == 0);
- tcp_checksum = (checksums.Receive.TcpChecksumSucceeded == 0);
- udp_checksum = (checksums.Receive.UdpChecksumSucceeded == 0);
- }
- break;
-
- case WINDIVERT_LAYER_FLOW:
- flow_data = (PWINDIVERT_DATA_FLOW)layer_data;
- packet_size = WINDIVERT_PACKET_SIZE(WINDIVERT_DATA_FLOW, 0);
- work = (packet_t)windivert_malloc(packet_size, FALSE);
- if (work == NULL)
- {
- return TRUE;
- }
- work->packet_len = 0;
- data = WINDIVERT_LAYER_DATA_PTR(work);
- RtlCopyMemory(data, flow_data, sizeof(WINDIVERT_DATA_FLOW));
- ip_checksum = tcp_checksum = udp_checksum = FALSE;
- break;
-
- case WINDIVERT_LAYER_SOCKET:
- socket_data = (PWINDIVERT_DATA_SOCKET)layer_data;
- packet_size = WINDIVERT_PACKET_SIZE(WINDIVERT_DATA_SOCKET, 0);
- work = (packet_t)windivert_malloc(packet_size, FALSE);
- if (work == NULL)
- {
- return TRUE;
- }
- work->packet_len = 0;
- data = WINDIVERT_LAYER_DATA_PTR(work);
- RtlCopyMemory(data, socket_data, sizeof(WINDIVERT_DATA_SOCKET));
- ip_checksum = tcp_checksum = udp_checksum = FALSE;
- break;
-
- case WINDIVERT_LAYER_REFLECT:
- reflect_data = (PWINDIVERT_DATA_REFLECT)layer_data;
- packet_size = WINDIVERT_PACKET_SIZE(WINDIVERT_DATA_REFLECT,
- packet_len);
- work = (packet_t)windivert_malloc(packet_size, FALSE);
- if (work == NULL)
- {
- return TRUE;
- }
- work->packet_len = packet_len;
- data = WINDIVERT_LAYER_DATA_PTR(work);
- RtlCopyMemory(data, reflect_data, sizeof(WINDIVERT_DATA_REFLECT));
- data = WINDIVERT_PACKET_DATA_PTR(WINDIVERT_DATA_REFLECT, work);
- RtlCopyMemory(data, packet, packet_len);
- ip_checksum = tcp_checksum = udp_checksum = FALSE;
- break;
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ buffer = (PNET_BUFFER)packet;
+ network_data = (PWINDIVERT_DATA_NETWORK)layer_data;
+ if (packet_len > WINDIVERT_MTU_MAX)
+ {
+ // Cannot handle oversized packet
+ return TRUE;
+ }
+ packet_size = WINDIVERT_PACKET_SIZE(WINDIVERT_DATA_NETWORK,
+ packet_len);
+ work = (packet_t)windivert_malloc(packet_size, FALSE);
+ if (work == NULL)
+ {
+ return TRUE;
+ }
+ work->packet_len = (UINT32)packet_len;
+ data = WINDIVERT_LAYER_DATA_PTR(work);
+ RtlCopyMemory(data, network_data, sizeof(WINDIVERT_DATA_NETWORK));
+ data = WINDIVERT_PACKET_DATA_PTR(WINDIVERT_DATA_NETWORK, work);
+ if (!windivert_copy_data(buffer, data, packet_len))
+ {
+ windivert_free(work);
+ return TRUE;
+ }
+ checksums.Value = NET_BUFFER_LIST_INFO(buffers,
+ TcpIpChecksumNetBufferListInfo);
+ if (outbound)
+ {
+ ip_checksum = (checksums.Transmit.IpHeaderChecksum == 0);
+ tcp_checksum = (checksums.Transmit.TcpChecksum == 0);
+ udp_checksum = (checksums.Transmit.UdpChecksum == 0);
+ }
+ else
+ {
+ ip_checksum = (checksums.Receive.IpChecksumSucceeded == 0);
+ tcp_checksum = (checksums.Receive.TcpChecksumSucceeded == 0);
+ udp_checksum = (checksums.Receive.UdpChecksumSucceeded == 0);
+ }
+ break;
- default:
+ case WINDIVERT_LAYER_FLOW:
+ flow_data = (PWINDIVERT_DATA_FLOW)layer_data;
+ packet_size = WINDIVERT_PACKET_SIZE(WINDIVERT_DATA_FLOW, 0);
+ work = (packet_t)windivert_malloc(packet_size, FALSE);
+ if (work == NULL)
+ {
+ return TRUE;
+ }
+ work->packet_len = 0;
+ data = WINDIVERT_LAYER_DATA_PTR(work);
+ RtlCopyMemory(data, flow_data, sizeof(WINDIVERT_DATA_FLOW));
+ ip_checksum = tcp_checksum = udp_checksum = FALSE;
+ break;
+
+ case WINDIVERT_LAYER_SOCKET:
+ socket_data = (PWINDIVERT_DATA_SOCKET)layer_data;
+ packet_size = WINDIVERT_PACKET_SIZE(WINDIVERT_DATA_SOCKET, 0);
+ work = (packet_t)windivert_malloc(packet_size, FALSE);
+ if (work == NULL)
+ {
return TRUE;
+ }
+ work->packet_len = 0;
+ data = WINDIVERT_LAYER_DATA_PTR(work);
+ RtlCopyMemory(data, socket_data, sizeof(WINDIVERT_DATA_SOCKET));
+ ip_checksum = tcp_checksum = udp_checksum = FALSE;
+ break;
+
+ case WINDIVERT_LAYER_REFLECT:
+ reflect_data = (PWINDIVERT_DATA_REFLECT)layer_data;
+ packet_size = WINDIVERT_PACKET_SIZE(WINDIVERT_DATA_REFLECT,
+ packet_len);
+ work = (packet_t)windivert_malloc(packet_size, FALSE);
+ if (work == NULL)
+ {
+ return TRUE;
+ }
+ work->packet_len = packet_len;
+ data = WINDIVERT_LAYER_DATA_PTR(work);
+ RtlCopyMemory(data, reflect_data, sizeof(WINDIVERT_DATA_REFLECT));
+ data = WINDIVERT_PACKET_DATA_PTR(WINDIVERT_DATA_REFLECT, work);
+ RtlCopyMemory(data, packet, packet_len);
+ ip_checksum = tcp_checksum = udp_checksum = FALSE;
+ break;
+
+ default:
+ return TRUE;
}
- work->layer = layer;
- work->event = event;
- work->sniffed = (sniffed? 1: 0);
- work->outbound = (outbound? 1: 0);
- work->loopback = (loopback? 1: 0);
- work->impostor = (impostor? 1: 0);
- work->ipv6 = (!ipv4? 1: 0);
- work->ip_checksum = (ip_checksum? 1: 0);
- work->tcp_checksum = (tcp_checksum? 1: 0);
- work->udp_checksum = (udp_checksum? 1: 0);
+ work->layer = layer;
+ work->event = event;
+ work->sniffed = (sniffed ? 1 : 0);
+ work->outbound = (outbound ? 1 : 0);
+ work->loopback = (loopback ? 1 : 0);
+ work->impostor = (impostor ? 1 : 0);
+ work->ipv6 = (!ipv4 ? 1 : 0);
+ work->ip_checksum = (ip_checksum ? 1 : 0);
+ work->tcp_checksum = (tcp_checksum ? 1 : 0);
+ work->udp_checksum = (udp_checksum ? 1 : 0);
work->icmp_checksum = 1;
- work->match = match;
- work->packet_size = packet_size;
- work->priority = priority;
- work->timestamp = timestamp;
- work->object = object;
+ work->match = match;
+ work->packet_size = packet_size;
+ work->priority = priority;
+ work->timestamp = timestamp;
+ work->object = object;
if (object != NULL)
{
ObfReferenceObject(object);
@@ -5054,7 +5050,7 @@ static BOOL windivert_queue_work(context_t context, PVOID packet,
InsertTailList(&context->work_queue, &work->entry);
WdfWorkItemEnqueue(context->worker);
KeReleaseInStackQueuedSpinLock(&lock_handle);
-
+
if (old_entry != NULL)
{
work = CONTAINING_RECORD(old_entry, struct packet_s, entry);
@@ -5102,7 +5098,7 @@ static void windivert_queue_packet(context_t context, packet_t packet)
}
if (context->packet_queue_size + packet->packet_size >
- context->packet_queue_maxsize ||
+ context->packet_queue_maxsize ||
context->packet_queue_length + 1 > context->packet_queue_maxlength)
{
// The queue is full; drop a packet & try again:
@@ -5138,7 +5134,7 @@ static void windivert_queue_packet(context_t context, packet_t packet)
*/
static NTSTATUS windivert_inject_packet(packet_t packet)
{
- UINT8 *packet_data;
+ UINT8* packet_data;
UINT32 packet_len;
UINT64 checksums;
PWINDIVERT_DATA_NETWORK network_data;
@@ -5161,16 +5157,16 @@ static NTSTATUS windivert_inject_packet(packet_t packet)
// Fix checksums:
checksums =
- (packet->ip_checksum == 0? 0: WINDIVERT_HELPER_NO_IP_CHECKSUM) |
- (packet->tcp_checksum == 0? 0: WINDIVERT_HELPER_NO_TCP_CHECKSUM) |
- (packet->udp_checksum == 0? 0: WINDIVERT_HELPER_NO_UDP_CHECKSUM) |
- (packet->icmp_checksum == 0? 0: WINDIVERT_HELPER_NO_ICMP_CHECKSUM |
- WINDIVERT_HELPER_NO_ICMPV6_CHECKSUM);
+ (packet->ip_checksum == 0 ? 0 : WINDIVERT_HELPER_NO_IP_CHECKSUM) |
+ (packet->tcp_checksum == 0 ? 0 : WINDIVERT_HELPER_NO_TCP_CHECKSUM) |
+ (packet->udp_checksum == 0 ? 0 : WINDIVERT_HELPER_NO_UDP_CHECKSUM) |
+ (packet->icmp_checksum == 0 ? 0 : WINDIVERT_HELPER_NO_ICMP_CHECKSUM |
+ WINDIVERT_HELPER_NO_ICMPV6_CHECKSUM);
WinDivertHelperCalcChecksums(packet_data, packet_len, NULL, checksums);
// Decrement TTL for impostor packets:
if (packet->impostor != 0 &&
- !WinDivertHelperDecrementTTL(packet_data, packet_len))
+ !WinDivertHelperDecrementTTL(packet_data, packet_len))
{
status = STATUS_HOPLIMIT_EXCEEDED;
DEBUG_ERROR("failed to inject ttl-exceeded impostor packet", status);
@@ -5201,22 +5197,22 @@ static NTSTATUS windivert_inject_packet(packet_t packet)
priority = packet->priority;
if (packet->layer == WINDIVERT_LAYER_NETWORK_FORWARD)
{
- handle = (packet->ipv6? injectv6_handle_forward: inject_handle_forward);
+ handle = (packet->ipv6 ? injectv6_handle_forward : inject_handle_forward);
status = FwpsInjectForwardAsync0(handle, (HANDLE)priority, 0,
- (packet->ipv6? AF_INET6: AF_INET), UNSPECIFIED_COMPARTMENT_ID,
+ (packet->ipv6 ? AF_INET6 : AF_INET), UNSPECIFIED_COMPARTMENT_ID,
network_data->IfIdx, buffers, windivert_inject_complete,
(HANDLE)packet);
}
else if (packet->outbound)
{
- handle = (packet->ipv6? injectv6_handle_out: inject_handle_out);
+ handle = (packet->ipv6 ? injectv6_handle_out : inject_handle_out);
status = FwpsInjectNetworkSendAsync0(handle, (HANDLE)priority, 0,
UNSPECIFIED_COMPARTMENT_ID, buffers, windivert_inject_complete,
(HANDLE)packet);
}
else
{
- handle = (packet->ipv6? injectv6_handle_in: inject_handle_in);
+ handle = (packet->ipv6 ? injectv6_handle_in : inject_handle_in);
status = FwpsInjectNetworkReceiveAsync0(handle, (HANDLE)priority, 0,
UNSPECIFIED_COMPARTMENT_ID, network_data->IfIdx,
network_data->SubIfIdx, buffers, windivert_inject_complete,
@@ -5248,8 +5244,8 @@ static void windivert_free_packet(packet_t packet)
/*
* WinDivert inject complete routine.
*/
-static void NTAPI windivert_inject_complete(VOID *context,
- NET_BUFFER_LIST *buffers, BOOLEAN dispatch_level)
+static void NTAPI windivert_inject_complete(VOID* context,
+ NET_BUFFER_LIST* buffers, BOOLEAN dispatch_level)
{
PMDL mdl;
PNET_BUFFER buffer;
@@ -5284,7 +5280,8 @@ static void windivert_inject_packet_too_big(packet_t packet)
UINT32_MAX
};
PWINDIVERT_IPHDR ip_header, ip_header_2;
- PWINDIVERT_IPV6HDR ipv6_header, ipv6_header_2;
+ PWINDIVERT_IPV6HDR ipv6_header = NULL;
+ PWINDIVERT_IPV6HDR ipv6_header_2 = NULL;
PWINDIVERT_ICMPHDR icmp_header;
PWINDIVERT_ICMPV6HDR icmpv6_header;
packet_t icmp;
@@ -5292,10 +5289,12 @@ static void windivert_inject_packet_too_big(packet_t packet)
UINT icmp_size;
UINT i, min_mtu = /*ipv4 min MTU=*/568, mtu;
UINT32 flowlabel;
- UINT8 *data;
+ UINT8* data;
+
+ if (ipv6_header == NULL) {}
if (packet->layer != WINDIVERT_LAYER_NETWORK || !packet->outbound ||
- packet->loopback)
+ packet->loopback)
{
return;
}
@@ -5304,26 +5303,26 @@ static void windivert_inject_packet_too_big(packet_t packet)
version = ip_header->Version;
switch (version)
{
- case 4:
- packet_len = RtlUshortByteSwap(ip_header->Length);
- copy_len = ip_header->HdrLength * sizeof(UINT32) + 8;
- copy_len = (packet_len < copy_len? packet_len: copy_len);
- icmp_len = sizeof(WINDIVERT_IPHDR) + sizeof(WINDIVERT_ICMPHDR) +
- copy_len;
- break;
- case 6:
- ipv6_header = (PWINDIVERT_IPV6HDR)ip_header;
- packet_len = RtlUshortByteSwap(ipv6_header->Length) +
- sizeof(WINDIVERT_IPV6HDR);
- min_mtu = /*ipv6 min MTU=*/1280;
- copy_len = min_mtu - sizeof(WINDIVERT_IPV6HDR) -
- sizeof(WINDIVERT_ICMPV6HDR);
- copy_len = (packet_len < copy_len? packet_len: copy_len);
- icmp_len = sizeof(WINDIVERT_IPV6HDR) +
- sizeof(WINDIVERT_ICMPV6HDR) + copy_len;
- break;
- default:
- return;
+ case 4:
+ packet_len = RtlUshortByteSwap(ip_header->Length);
+ copy_len = ip_header->HdrLength * sizeof(UINT32) + 8;
+ copy_len = (packet_len < copy_len ? packet_len : copy_len);
+ icmp_len = sizeof(WINDIVERT_IPHDR) + sizeof(WINDIVERT_ICMPHDR) +
+ copy_len;
+ break;
+ case 6:
+ ipv6_header = (PWINDIVERT_IPV6HDR)ip_header;
+ packet_len = RtlUshortByteSwap(ipv6_header->Length) +
+ sizeof(WINDIVERT_IPV6HDR);
+ min_mtu = /*ipv6 min MTU=*/1280;
+ copy_len = min_mtu - sizeof(WINDIVERT_IPV6HDR) -
+ sizeof(WINDIVERT_ICMPV6HDR);
+ copy_len = (packet_len < copy_len ? packet_len : copy_len);
+ icmp_len = sizeof(WINDIVERT_IPV6HDR) +
+ sizeof(WINDIVERT_ICMPV6HDR) + copy_len;
+ break;
+ default:
+ return;
}
if (packet_len <= min_mtu)
{
@@ -5333,8 +5332,8 @@ static void windivert_inject_packet_too_big(packet_t packet)
// We do not actually know the MTU value, so we make an educated guess.
for (i = 0; packet_len > mtus[i]; i++)
;
- mtu = (i == 0? min_mtu: mtus[i-1]);
- mtu = (mtu < min_mtu? min_mtu: mtu);
+ mtu = (i == 0 ? min_mtu : mtus[i - 1]);
+ mtu = (mtu < min_mtu ? min_mtu : mtu);
icmp_size = WINDIVERT_PACKET_SIZE(WINDIVERT_DATA_NETWORK, icmp_len);
icmp = (packet_t)windivert_malloc(icmp_size, FALSE);
@@ -5342,71 +5341,72 @@ static void windivert_inject_packet_too_big(packet_t packet)
{
return;
}
- icmp->layer = WINDIVERT_LAYER_NETWORK;
- icmp->event = WINDIVERT_EVENT_NETWORK_PACKET;
- icmp->sniffed = 0; // Unused
- icmp->outbound = 0; // Inbound
- icmp->loopback = 0; // Unused
- icmp->impostor = 0; // Treat as non-impostor
- icmp->ipv6 = (version == 6? 1: 0);
- icmp->ip_checksum = 0; // IP checksum valid
- icmp->tcp_checksum = 0; // Unused
- icmp->udp_checksum = 0; // Unused
+ icmp->layer = WINDIVERT_LAYER_NETWORK;
+ icmp->event = WINDIVERT_EVENT_NETWORK_PACKET;
+ icmp->sniffed = 0; // Unused
+ icmp->outbound = 0; // Inbound
+ icmp->loopback = 0; // Unused
+ icmp->impostor = 0; // Treat as non-impostor
+ icmp->ipv6 = (version == 6 ? 1 : 0);
+ icmp->ip_checksum = 0; // IP checksum valid
+ icmp->tcp_checksum = 0; // Unused
+ icmp->udp_checksum = 0; // Unused
icmp->icmp_checksum = 0; // ICMP(V6) checksum invalid
- icmp->match = 0; // Unused
- icmp->packet_size = icmp_size;
- icmp->packet_len = icmp_len;
- icmp->priority = packet->priority;
- icmp->timestamp = 0; // Unused
- icmp->object = NULL;
+ icmp->match = 0; // Unused
+ icmp->packet_size = icmp_size;
+ icmp->packet_len = icmp_len;
+ icmp->priority = packet->priority;
+ icmp->timestamp = 0; // Unused
+ icmp->object = NULL;
RtlCopyMemory(WINDIVERT_LAYER_DATA_PTR(icmp),
WINDIVERT_LAYER_DATA_PTR(packet), sizeof(WINDIVERT_DATA_NETWORK));
data = WINDIVERT_PACKET_DATA_PTR(WINDIVERT_DATA_NETWORK, icmp);
+
switch (version)
{
- case 4:
- ip_header_2 = (PWINDIVERT_IPHDR)data;
- ip_header_2->Version = 4;
- ip_header_2->HdrLength = sizeof(WINDIVERT_IPHDR) / sizeof(UINT32);
- ip_header_2->TOS = 0x0;
- ip_header_2->Length = RtlUshortByteSwap(icmp_len);
- ip_header_2->Id = 0x0;
- ip_header_2->TTL = 64;
- ip_header_2->Protocol = IPPROTO_ICMP;
- ip_header_2->SrcAddr = ip_header->DstAddr;
- ip_header_2->DstAddr = ip_header->SrcAddr;
- WINDIVERT_IPHDR_SET_FRAGOFF(ip_header_2, 0x0);
- WINDIVERT_IPHDR_SET_MF(ip_header_2, 0);
- WINDIVERT_IPHDR_SET_DF(ip_header_2, 1);
- WINDIVERT_IPHDR_SET_RESERVED(ip_header_2, 0x0);
- icmp_header = (PWINDIVERT_ICMPHDR)(ip_header_2 + 1);
- icmp_header->Type = /*Destination Unreachable=*/3;
- icmp_header->Code = /*Fragmentation required=*/4;
- icmp_header->Body = ((UINT32)RtlUshortByteSwap(mtu)) << 16;
- data = (UINT8 *)(icmp_header + 1);
- RtlCopyMemory(data, ip_header, copy_len);
- break;
- case 6:
- icmp_len -= sizeof(WINDIVERT_IPV6HDR);
- ipv6_header_2 = (PWINDIVERT_IPV6HDR)data;
- ipv6_header_2->Version = 6;
- ipv6_header_2->Length = RtlUshortByteSwap(icmp_len);
- ipv6_header_2->NextHdr = IPPROTO_ICMPV6;
- ipv6_header_2->HopLimit = 64;
- RtlCopyMemory(ipv6_header_2->SrcAddr, ipv6_header->DstAddr,
- sizeof(ipv6_header_2->SrcAddr));
- RtlCopyMemory(ipv6_header_2->DstAddr, ipv6_header->SrcAddr,
- sizeof(ipv6_header_2->DstAddr));
- WINDIVERT_IPV6HDR_SET_TRAFFICCLASS(ipv6_header_2, 0x0);
- flowlabel = WINDIVERT_IPV6HDR_GET_FLOWLABEL(ipv6_header);
- WINDIVERT_IPV6HDR_SET_FLOWLABEL(ipv6_header_2, flowlabel);
- icmpv6_header = (PWINDIVERT_ICMPV6HDR)(ipv6_header_2 + 1);
- icmpv6_header->Type = /*Packet Too Big=*/2;
- icmpv6_header->Code = 0;
- icmpv6_header->Body = RtlUlongByteSwap(mtu);
- data = (UINT8 *)(icmpv6_header + 1);
- RtlCopyMemory(data, ipv6_header, copy_len);
- break;
+ case 4:
+ ip_header_2 = (PWINDIVERT_IPHDR)data;
+ ip_header_2->Version = 4;
+ ip_header_2->HdrLength = sizeof(WINDIVERT_IPHDR) / sizeof(UINT32);
+ ip_header_2->TOS = 0x0;
+ ip_header_2->Length = RtlUshortByteSwap(icmp_len);
+ ip_header_2->Id = 0x0;
+ ip_header_2->TTL = 64;
+ ip_header_2->Protocol = IPPROTO_ICMP;
+ ip_header_2->SrcAddr = ip_header->DstAddr;
+ ip_header_2->DstAddr = ip_header->SrcAddr;
+ WINDIVERT_IPHDR_SET_FRAGOFF(ip_header_2, 0x0);
+ WINDIVERT_IPHDR_SET_MF(ip_header_2, 0);
+ WINDIVERT_IPHDR_SET_DF(ip_header_2, 1);
+ WINDIVERT_IPHDR_SET_RESERVED(ip_header_2, 0x0);
+ icmp_header = (PWINDIVERT_ICMPHDR)(ip_header_2 + 1);
+ icmp_header->Type = /*Destination Unreachable=*/3;
+ icmp_header->Code = /*Fragmentation required=*/4;
+ icmp_header->Body = ((UINT32)RtlUshortByteSwap(mtu)) << 16;
+ data = (UINT8*)(icmp_header + 1);
+ RtlCopyMemory(data, ip_header, copy_len);
+ break;
+ case 6:
+ icmp_len -= sizeof(WINDIVERT_IPV6HDR);
+ ipv6_header_2 = (PWINDIVERT_IPV6HDR)data;
+ ipv6_header_2->Version = 6;
+ ipv6_header_2->Length = RtlUshortByteSwap(icmp_len);
+ ipv6_header_2->NextHdr = IPPROTO_ICMPV6;
+ ipv6_header_2->HopLimit = 64;
+ RtlCopyMemory(ipv6_header_2->SrcAddr, ipv6_header->DstAddr,
+ sizeof(ipv6_header_2->SrcAddr));
+ RtlCopyMemory(ipv6_header_2->DstAddr, ipv6_header->SrcAddr,
+ sizeof(ipv6_header_2->DstAddr));
+ WINDIVERT_IPV6HDR_SET_TRAFFICCLASS(ipv6_header_2, 0x0);
+ flowlabel = WINDIVERT_IPV6HDR_GET_FLOWLABEL(ipv6_header);
+ WINDIVERT_IPV6HDR_SET_FLOWLABEL(ipv6_header_2, flowlabel);
+ icmpv6_header = (PWINDIVERT_ICMPV6HDR)(ipv6_header_2 + 1);
+ icmpv6_header->Type = /*Packet Too Big=*/2;
+ icmpv6_header->Code = 0;
+ icmpv6_header->Body = RtlUlongByteSwap(mtu);
+ data = (UINT8*)(icmpv6_header + 1);
+ RtlCopyMemory(data, ipv6_header, copy_len);
+ break;
}
windivert_inject_packet(icmp);
}
@@ -5446,8 +5446,8 @@ static BOOL windivert_get_data(PNET_BUFFER buffer, UINT length, INT min,
BOOL success;
UNREFERENCED_PARAMETER(length);
- idx += (idx < 0? max: min);
- if (idx < min || idx > (max - (INT)size))
+ idx += (idx < 0 ? max : min);
+ if (idx < min || idx >(max - (INT)size))
{
return FALSE; // OOB
}
@@ -5468,11 +5468,11 @@ static BOOL windivert_get_data(PNET_BUFFER buffer, UINT length, INT min,
* Parse packet headers.
*/
static WINDIVERT_INLINE BOOL windivert_parse_headers(PNET_BUFFER buffer,
- BOOL ipv4, BOOL *fragment_ptr, PWINDIVERT_IPHDR *ip_header_ptr,
- PWINDIVERT_IPV6HDR *ipv6_header_ptr, PWINDIVERT_ICMPHDR *icmp_header_ptr,
- PWINDIVERT_ICMPV6HDR *icmpv6_header_ptr, PWINDIVERT_TCPHDR *tcp_header_ptr,
- PWINDIVERT_UDPHDR *udp_header_ptr, UINT8 *proto_ptr, UINT *header_len_ptr,
- UINT *payload_len_ptr)
+ BOOL ipv4, BOOL* fragment_ptr, PWINDIVERT_IPHDR* ip_header_ptr,
+ PWINDIVERT_IPV6HDR* ipv6_header_ptr, PWINDIVERT_ICMPHDR* icmp_header_ptr,
+ PWINDIVERT_ICMPV6HDR* icmpv6_header_ptr, PWINDIVERT_TCPHDR* tcp_header_ptr,
+ PWINDIVERT_UDPHDR* udp_header_ptr, UINT8* proto_ptr, UINT* header_len_ptr,
+ UINT* payload_len_ptr)
{
UINT total_len, ip_header_len = 0;
PWINDIVERT_IPHDR ip_header = NULL;
@@ -5517,7 +5517,7 @@ static WINDIVERT_INLINE BOOL windivert_parse_headers(PNET_BUFFER buffer,
DEBUG("FILTER: REJECT (failed to get IPv4 header)");
return FALSE;
}
- ip_header_len = ip_header->HdrLength*sizeof(UINT32);
+ ip_header_len = ip_header->HdrLength * sizeof(UINT32);
if (ip_header->Version != 4 ||
RtlUshortByteSwap(ip_header->Length) != total_len ||
ip_header->HdrLength < 5 ||
@@ -5550,7 +5550,7 @@ static WINDIVERT_INLINE BOOL windivert_parse_headers(PNET_BUFFER buffer,
if (ipv6_header->Version != 6 ||
ip_header_len > total_len ||
RtlUshortByteSwap(ipv6_header->Length) +
- sizeof(WINDIVERT_IPV6HDR) != total_len)
+ sizeof(WINDIVERT_IPV6HDR) != total_len)
{
DEBUG("FILTER: REJECT (bad IPv6 packet)");
return FALSE;
@@ -5561,56 +5561,56 @@ static WINDIVERT_INLINE BOOL windivert_parse_headers(PNET_BUFFER buffer,
// Skip extension headers:
while (frag_off == 0)
{
- UINT8 *ext_header = NULL;
+ UINT8* ext_header = NULL;
UINT ext_header_len = 0;
BOOL is_ext_header;
switch (protocol)
{
- case IPPROTO_FRAGMENT:
- frag_header = (PWINDIVERT_IPV6FRAGHDR)
- NdisGetDataBuffer(buffer, 8, NULL, 1, 0);
- ext_header = (UINT8 *)frag_header;
- if (fragment || frag_header == NULL)
- {
- is_ext_header = FALSE;
- break;
- }
- fragment = TRUE;
- frag_off = RtlUshortByteSwap(
- WINDIVERT_IPV6FRAGHDR_GET_FRAGOFF(frag_header));
- ext_header_len = 8;
- is_ext_header = TRUE;
- break;
-
- case IPPROTO_AH:
- case IPPROTO_HOPOPTS:
- case IPPROTO_DSTOPTS:
- case IPPROTO_ROUTING:
- case IPPROTO_MH:
- ext_header = (UINT8 *)NdisGetDataBuffer(buffer, 2, NULL,
- 1, 0);
- if (ext_header == NULL)
- {
- is_ext_header = FALSE;
- break;
- }
- ext_header_len = (UINT)ext_header[1];
- if (protocol == IPPROTO_AH)
- {
- ext_header_len += 2;
- ext_header_len *= 4;
- }
- else
- {
- ext_header_len++;
- ext_header_len *= 8;
- }
- is_ext_header = TRUE;
+ case IPPROTO_FRAGMENT:
+ frag_header = (PWINDIVERT_IPV6FRAGHDR)
+ NdisGetDataBuffer(buffer, 8, NULL, 1, 0);
+ ext_header = (UINT8*)frag_header;
+ if (fragment || frag_header == NULL)
+ {
+ is_ext_header = FALSE;
break;
- default:
+ }
+ fragment = TRUE;
+ frag_off = RtlUshortByteSwap(
+ WINDIVERT_IPV6FRAGHDR_GET_FRAGOFF(frag_header));
+ ext_header_len = 8;
+ is_ext_header = TRUE;
+ break;
+ case IPPROTO_AH:
+ case IPPROTO_HOPOPTS:
+ case IPPROTO_DSTOPTS:
+ case IPPROTO_ROUTING:
+ case IPPROTO_MH:
+ ext_header = (UINT8*)NdisGetDataBuffer(buffer, 2, NULL,
+ 1, 0);
+ if (ext_header == NULL)
+ {
is_ext_header = FALSE;
break;
+ }
+ ext_header_len = (UINT)ext_header[1];
+ if (protocol == IPPROTO_AH)
+ {
+ ext_header_len += 2;
+ ext_header_len *= 4;
+ }
+ else
+ {
+ ext_header_len++;
+ ext_header_len *= 8;
+ }
+ is_ext_header = TRUE;
+ break;
+ default:
+
+ is_ext_header = FALSE;
+ break;
}
if (!is_ext_header || ip_header_len + ext_header_len > total_len)
@@ -5629,57 +5629,57 @@ static WINDIVERT_INLINE BOOL windivert_parse_headers(PNET_BUFFER buffer,
{
switch (protocol)
{
- case IPPROTO_ICMP:
- if (ip_header == NULL)
- {
- break;
- }
- icmp_header = (PWINDIVERT_ICMPHDR)NdisGetDataBuffer(buffer,
- sizeof(WINDIVERT_ICMPHDR), NULL, 1, 0);
- header_len +=
- (icmp_header == NULL? 0: sizeof(WINDIVERT_ICMPHDR));
+ case IPPROTO_ICMP:
+ if (ip_header == NULL)
+ {
break;
+ }
+ icmp_header = (PWINDIVERT_ICMPHDR)NdisGetDataBuffer(buffer,
+ sizeof(WINDIVERT_ICMPHDR), NULL, 1, 0);
+ header_len +=
+ (icmp_header == NULL ? 0 : sizeof(WINDIVERT_ICMPHDR));
+ break;
- case IPPROTO_ICMPV6:
- if (ipv6_header == NULL)
- {
- break;
- }
- icmpv6_header = (PWINDIVERT_ICMPV6HDR)NdisGetDataBuffer(buffer,
- sizeof(WINDIVERT_ICMPV6HDR), NULL, 1, 0);
- header_len +=
- (icmpv6_header == NULL? 0: sizeof(WINDIVERT_ICMPV6HDR));
+ case IPPROTO_ICMPV6:
+ if (ipv6_header == NULL)
+ {
break;
+ }
+ icmpv6_header = (PWINDIVERT_ICMPV6HDR)NdisGetDataBuffer(buffer,
+ sizeof(WINDIVERT_ICMPV6HDR), NULL, 1, 0);
+ header_len +=
+ (icmpv6_header == NULL ? 0 : sizeof(WINDIVERT_ICMPV6HDR));
+ break;
- case IPPROTO_TCP:
- tcp_header = (PWINDIVERT_TCPHDR)NdisGetDataBuffer(buffer,
- sizeof(WINDIVERT_TCPHDR), NULL, 1, 0);
- if (tcp_header != NULL)
+ case IPPROTO_TCP:
+ tcp_header = (PWINDIVERT_TCPHDR)NdisGetDataBuffer(buffer,
+ sizeof(WINDIVERT_TCPHDR), NULL, 1, 0);
+ if (tcp_header != NULL)
+ {
+ if (tcp_header->HdrLength < 5)
{
- if (tcp_header->HdrLength < 5)
- {
- tcp_header = NULL;
- }
- else
- {
- UINT tcp_header_len =
- tcp_header->HdrLength * sizeof(UINT32);
- tcp_header_len =
- (header_len + tcp_header_len > total_len?
- total_len - header_len: tcp_header_len);
- header_len += tcp_header_len;
- }
+ tcp_header = NULL;
}
- break;
+ else
+ {
+ UINT tcp_header_len =
+ tcp_header->HdrLength * sizeof(UINT32);
+ tcp_header_len =
+ (header_len + tcp_header_len > total_len ?
+ total_len - header_len : tcp_header_len);
+ header_len += tcp_header_len;
+ }
+ }
+ break;
- case IPPROTO_UDP:
- udp_header = (PWINDIVERT_UDPHDR)NdisGetDataBuffer(buffer,
- sizeof(WINDIVERT_UDPHDR), NULL, 1, 0);
- header_len +=
- (udp_header == NULL? 0: sizeof(WINDIVERT_UDPHDR));
- break;
- default:
- break;
+ case IPPROTO_UDP:
+ udp_header = (PWINDIVERT_UDPHDR)NdisGetDataBuffer(buffer,
+ sizeof(WINDIVERT_UDPHDR), NULL, 1, 0);
+ header_len +=
+ (udp_header == NULL ? 0 : sizeof(WINDIVERT_UDPHDR));
+ break;
+ default:
+ break;
}
}
@@ -5691,16 +5691,16 @@ static WINDIVERT_INLINE BOOL windivert_parse_headers(PNET_BUFFER buffer,
return FALSE;
}
- *fragment_ptr = fragment;
- *ip_header_ptr = ip_header;
- *ipv6_header_ptr = ipv6_header;
- *icmp_header_ptr = icmp_header;
+ *fragment_ptr = fragment;
+ *ip_header_ptr = ip_header;
+ *ipv6_header_ptr = ipv6_header;
+ *icmp_header_ptr = icmp_header;
*icmpv6_header_ptr = icmpv6_header;
- *tcp_header_ptr = tcp_header;
- *udp_header_ptr = udp_header;
- *proto_ptr = protocol;
- *header_len_ptr = header_len;
- *payload_len_ptr = total_len - header_len;
+ *tcp_header_ptr = tcp_header;
+ *udp_header_ptr = udp_header;
+ *proto_ptr = protocol;
+ *header_len_ptr = header_len;
+ *payload_len_ptr = total_len - header_len;
return TRUE;
}
@@ -5709,9 +5709,9 @@ static WINDIVERT_INLINE BOOL windivert_parse_headers(PNET_BUFFER buffer,
* Checks if the given network packet is of interest.
*/
static BOOL windivert_filter(PNET_BUFFER buffer, WINDIVERT_LAYER layer,
- const VOID *layer_data, LONGLONG timestamp, WINDIVERT_EVENT event,
+ const VOID* layer_data, LONGLONG timestamp, WINDIVERT_EVENT event,
BOOL ipv4, BOOL outbound, BOOL loopback, BOOL impostor, BOOL frag_mode,
- const WINDIVERT_FILTER *filter)
+ const WINDIVERT_FILTER* filter)
{
PWINDIVERT_IPHDR ip_header = NULL;
PWINDIVERT_IPV6HDR ipv6_header = NULL;
@@ -5721,7 +5721,7 @@ static BOOL windivert_filter(PNET_BUFFER buffer, WINDIVERT_LAYER layer,
PWINDIVERT_UDPHDR udp_header = NULL;
BOOL fragment = FALSE;
UINT8 protocol = 0;
- UINT header_len = 0, payload_len = 0, total_len = 0;
+ UINT header_len = 0, payload_len = 0;
PWINDIVERT_DATA_NETWORK network_data = NULL;
PWINDIVERT_DATA_FLOW flow_data = NULL;
PWINDIVERT_DATA_SOCKET socket_data = NULL;
@@ -5730,32 +5730,32 @@ static BOOL windivert_filter(PNET_BUFFER buffer, WINDIVERT_LAYER layer,
switch (layer)
{
- case WINDIVERT_LAYER_NETWORK:
- case WINDIVERT_LAYER_NETWORK_FORWARD:
- if (!windivert_parse_headers(buffer, ipv4, &fragment, &ip_header,
- &ipv6_header, &icmp_header, &icmpv6_header, &tcp_header,
- &udp_header, &protocol, &header_len, &payload_len))
- {
- return FALSE;
- }
- if (fragment && !frag_mode)
- {
- return FALSE;
- }
- network_data = (PWINDIVERT_DATA_NETWORK)layer_data;
- break;
- case WINDIVERT_LAYER_FLOW:
- flow_data = (PWINDIVERT_DATA_FLOW)layer_data;
- break;
- case WINDIVERT_LAYER_SOCKET:
- socket_data = (PWINDIVERT_DATA_SOCKET)layer_data;
- break;
- case WINDIVERT_LAYER_REFLECT:
- reflect_data = (PWINDIVERT_DATA_REFLECT)layer_data;
- break;
- default:
- DEBUG("FILTER: REJECT (invalid parameter)");
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ if (!windivert_parse_headers(buffer, ipv4, &fragment, &ip_header,
+ &ipv6_header, &icmp_header, &icmpv6_header, &tcp_header,
+ &udp_header, &protocol, &header_len, &payload_len))
+ {
+ return FALSE;
+ }
+ if (fragment && !frag_mode)
+ {
return FALSE;
+ }
+ network_data = (PWINDIVERT_DATA_NETWORK)layer_data;
+ break;
+ case WINDIVERT_LAYER_FLOW:
+ flow_data = (PWINDIVERT_DATA_FLOW)layer_data;
+ break;
+ case WINDIVERT_LAYER_SOCKET:
+ socket_data = (PWINDIVERT_DATA_SOCKET)layer_data;
+ break;
+ case WINDIVERT_LAYER_REFLECT:
+ reflect_data = (PWINDIVERT_DATA_REFLECT)layer_data;
+ break;
+ default:
+ DEBUG("FILTER: REJECT (invalid parameter)");
+ return FALSE;
}
result = WinDivertExecuteFilter(
@@ -5779,7 +5779,7 @@ static BOOL windivert_filter(PNET_BUFFER buffer, WINDIVERT_LAYER layer,
tcp_header,
udp_header,
protocol,
- (const VOID *)buffer,
+ (const VOID*)buffer,
header_len + payload_len,
header_len,
payload_len);
@@ -5790,8 +5790,8 @@ static BOOL windivert_filter(PNET_BUFFER buffer, WINDIVERT_LAYER layer,
/*
* Compile a WinDivert filter from an IOCTL.
*/
-static const WINDIVERT_FILTER *windivert_filter_compile(
- const WINDIVERT_FILTER *ioctl_filter, size_t ioctl_filter_len,
+static const WINDIVERT_FILTER* windivert_filter_compile(
+ const WINDIVERT_FILTER* ioctl_filter, size_t ioctl_filter_len,
WINDIVERT_LAYER layer)
{
PWINDIVERT_FILTER filter = NULL;
@@ -5818,7 +5818,7 @@ static const WINDIVERT_FILTER *windivert_filter_compile(
{
goto windivert_filter_compile_error;
}
-
+
for (i = 0; i < length; i++)
{
if (ioctl_filter[i].field > WINDIVERT_FILTER_FIELD_MAX ||
@@ -5828,29 +5828,29 @@ static const WINDIVERT_FILTER *windivert_filter_compile(
}
switch (ioctl_filter[i].success)
{
- case WINDIVERT_FILTER_RESULT_ACCEPT:
- case WINDIVERT_FILTER_RESULT_REJECT:
- break;
- default:
- if (ioctl_filter[i].success <= i ||
- ioctl_filter[i].success >= length)
- {
- goto windivert_filter_compile_error;
- }
- break;
+ case WINDIVERT_FILTER_RESULT_ACCEPT:
+ case WINDIVERT_FILTER_RESULT_REJECT:
+ break;
+ default:
+ if (ioctl_filter[i].success <= i ||
+ ioctl_filter[i].success >= length)
+ {
+ goto windivert_filter_compile_error;
+ }
+ break;
}
switch (ioctl_filter[i].failure)
{
- case WINDIVERT_FILTER_RESULT_ACCEPT:
- case WINDIVERT_FILTER_RESULT_REJECT:
- break;
- default:
- if (ioctl_filter[i].failure <= i ||
- ioctl_filter[i].failure >= length)
- {
- goto windivert_filter_compile_error;
- }
- break;
+ case WINDIVERT_FILTER_RESULT_ACCEPT:
+ case WINDIVERT_FILTER_RESULT_REJECT:
+ break;
+ default:
+ if (ioctl_filter[i].failure <= i ||
+ ioctl_filter[i].failure >= length)
+ {
+ goto windivert_filter_compile_error;
+ }
+ break;
}
// Enforce layers:
@@ -5865,182 +5865,182 @@ static const WINDIVERT_FILTER *windivert_filter_compile(
ub[0] = ub[1] = ub[2] = ub[3] = 0;
switch (ioctl_filter[i].field)
{
- case WINDIVERT_FILTER_FIELD_PACKET:
- case WINDIVERT_FILTER_FIELD_PACKET16:
- case WINDIVERT_FILTER_FIELD_PACKET32:
- case WINDIVERT_FILTER_FIELD_TCP_PAYLOAD:
- case WINDIVERT_FILTER_FIELD_TCP_PAYLOAD16:
- case WINDIVERT_FILTER_FIELD_TCP_PAYLOAD32:
- case WINDIVERT_FILTER_FIELD_UDP_PAYLOAD:
- case WINDIVERT_FILTER_FIELD_UDP_PAYLOAD16:
- case WINDIVERT_FILTER_FIELD_UDP_PAYLOAD32:
+ case WINDIVERT_FILTER_FIELD_PACKET:
+ case WINDIVERT_FILTER_FIELD_PACKET16:
+ case WINDIVERT_FILTER_FIELD_PACKET32:
+ case WINDIVERT_FILTER_FIELD_TCP_PAYLOAD:
+ case WINDIVERT_FILTER_FIELD_TCP_PAYLOAD16:
+ case WINDIVERT_FILTER_FIELD_TCP_PAYLOAD32:
+ case WINDIVERT_FILTER_FIELD_UDP_PAYLOAD:
+ case WINDIVERT_FILTER_FIELD_UDP_PAYLOAD16:
+ case WINDIVERT_FILTER_FIELD_UDP_PAYLOAD32:
+ {
+ INT idx = (INT)ioctl_filter[i].arg[1];
+ if (ioctl_filter[i].neg)
+ {
+ goto windivert_filter_compile_error;
+ }
+ if (idx > WINDIVERT_MTU_MAX || idx < -WINDIVERT_MTU_MAX)
+ {
+ goto windivert_filter_compile_error;
+ }
+ lb[1] = ub[1] = ioctl_filter[i].arg[1];
+ break;
+ }
+ default:
+ break;
+ }
+ switch (ioctl_filter[i].field)
+ {
+ case WINDIVERT_FILTER_FIELD_ZERO:
+ case WINDIVERT_FILTER_FIELD_INBOUND:
+ case WINDIVERT_FILTER_FIELD_OUTBOUND:
+ case WINDIVERT_FILTER_FIELD_FRAGMENT:
+ case WINDIVERT_FILTER_FIELD_IP:
+ case WINDIVERT_FILTER_FIELD_IPV6:
+ case WINDIVERT_FILTER_FIELD_ICMP:
+ case WINDIVERT_FILTER_FIELD_ICMPV6:
+ case WINDIVERT_FILTER_FIELD_TCP:
+ case WINDIVERT_FILTER_FIELD_UDP:
+ case WINDIVERT_FILTER_FIELD_IP_DF:
+ case WINDIVERT_FILTER_FIELD_IP_MF:
+ case WINDIVERT_FILTER_FIELD_TCP_URG:
+ case WINDIVERT_FILTER_FIELD_TCP_ACK:
+ case WINDIVERT_FILTER_FIELD_TCP_PSH:
+ case WINDIVERT_FILTER_FIELD_TCP_RST:
+ case WINDIVERT_FILTER_FIELD_TCP_SYN:
+ case WINDIVERT_FILTER_FIELD_TCP_FIN:
+ ub[0] = 1;
+ break;
+ case WINDIVERT_FILTER_FIELD_LAYER:
+ ub[0] = WINDIVERT_LAYER_MAX;
+ break;
+ case WINDIVERT_FILTER_FIELD_PRIORITY:
+ neg_lb = TRUE;
+ lb[0] = ub[0] = WINDIVERT_PRIORITY_MAX;
+ break;
+ case WINDIVERT_FILTER_FIELD_EVENT:
+ event = (WINDIVERT_EVENT)ioctl_filter[i].arg[0];
+ switch (layer)
{
- INT idx = (INT)ioctl_filter[i].arg[1];
- if (ioctl_filter[i].neg)
+ case WINDIVERT_LAYER_NETWORK:
+ case WINDIVERT_LAYER_NETWORK_FORWARD:
+ if (event != WINDIVERT_EVENT_NETWORK_PACKET)
{
goto windivert_filter_compile_error;
}
- if (idx > WINDIVERT_MTU_MAX || idx < -WINDIVERT_MTU_MAX)
+ break;
+ case WINDIVERT_LAYER_FLOW:
+ if (event != WINDIVERT_EVENT_FLOW_ESTABLISHED &&
+ event != WINDIVERT_EVENT_FLOW_DELETED)
{
goto windivert_filter_compile_error;
}
- lb[1] = ub[1] = ioctl_filter[i].arg[1];
- break;
- }
- default:
- break;
- }
- switch (ioctl_filter[i].field)
- {
- case WINDIVERT_FILTER_FIELD_ZERO:
- case WINDIVERT_FILTER_FIELD_INBOUND:
- case WINDIVERT_FILTER_FIELD_OUTBOUND:
- case WINDIVERT_FILTER_FIELD_FRAGMENT:
- case WINDIVERT_FILTER_FIELD_IP:
- case WINDIVERT_FILTER_FIELD_IPV6:
- case WINDIVERT_FILTER_FIELD_ICMP:
- case WINDIVERT_FILTER_FIELD_ICMPV6:
- case WINDIVERT_FILTER_FIELD_TCP:
- case WINDIVERT_FILTER_FIELD_UDP:
- case WINDIVERT_FILTER_FIELD_IP_DF:
- case WINDIVERT_FILTER_FIELD_IP_MF:
- case WINDIVERT_FILTER_FIELD_TCP_URG:
- case WINDIVERT_FILTER_FIELD_TCP_ACK:
- case WINDIVERT_FILTER_FIELD_TCP_PSH:
- case WINDIVERT_FILTER_FIELD_TCP_RST:
- case WINDIVERT_FILTER_FIELD_TCP_SYN:
- case WINDIVERT_FILTER_FIELD_TCP_FIN:
- ub[0] = 1;
- break;
- case WINDIVERT_FILTER_FIELD_LAYER:
- ub[0] = WINDIVERT_LAYER_MAX;
break;
- case WINDIVERT_FILTER_FIELD_PRIORITY:
- neg_lb = TRUE;
- lb[0] = ub[0] = WINDIVERT_PRIORITY_MAX;
- break;
- case WINDIVERT_FILTER_FIELD_EVENT:
- event = (WINDIVERT_EVENT)ioctl_filter[i].arg[0];
- switch (layer)
+ case WINDIVERT_LAYER_SOCKET:
+ if (event != WINDIVERT_EVENT_SOCKET_BIND &&
+ event != WINDIVERT_EVENT_SOCKET_CONNECT &&
+ event != WINDIVERT_EVENT_SOCKET_LISTEN &&
+ event != WINDIVERT_EVENT_SOCKET_ACCEPT &&
+ event != WINDIVERT_EVENT_SOCKET_CLOSE)
{
- case WINDIVERT_LAYER_NETWORK:
- case WINDIVERT_LAYER_NETWORK_FORWARD:
- if (event != WINDIVERT_EVENT_NETWORK_PACKET)
- {
- goto windivert_filter_compile_error;
- }
- break;
- case WINDIVERT_LAYER_FLOW:
- if (event != WINDIVERT_EVENT_FLOW_ESTABLISHED &&
- event != WINDIVERT_EVENT_FLOW_DELETED)
- {
- goto windivert_filter_compile_error;
- }
- break;
- case WINDIVERT_LAYER_SOCKET:
- if (event != WINDIVERT_EVENT_SOCKET_BIND &&
- event != WINDIVERT_EVENT_SOCKET_CONNECT &&
- event != WINDIVERT_EVENT_SOCKET_LISTEN &&
- event != WINDIVERT_EVENT_SOCKET_ACCEPT &&
- event != WINDIVERT_EVENT_SOCKET_CLOSE)
- {
- goto windivert_filter_compile_error;
- }
- break;
- case WINDIVERT_LAYER_REFLECT:
- if (event != WINDIVERT_EVENT_REFLECT_OPEN &&
- event != WINDIVERT_EVENT_REFLECT_CLOSE)
- {
- goto windivert_filter_compile_error;
- }
- break;
- default:
- goto windivert_filter_compile_error;
+ goto windivert_filter_compile_error;
}
- ub[0] = WINDIVERT_EVENT_MAX;
- break;
- case WINDIVERT_FILTER_FIELD_IP_HDRLENGTH:
- case WINDIVERT_FILTER_FIELD_TCP_HDRLENGTH:
- ub[0] = 0x0F;
- break;
- case WINDIVERT_FILTER_FIELD_IP_TOS:
- case WINDIVERT_FILTER_FIELD_IP_TTL:
- case WINDIVERT_FILTER_FIELD_IP_PROTOCOL:
- case WINDIVERT_FILTER_FIELD_IPV6_TRAFFICCLASS:
- case WINDIVERT_FILTER_FIELD_IPV6_NEXTHDR:
- case WINDIVERT_FILTER_FIELD_IPV6_HOPLIMIT:
- case WINDIVERT_FILTER_FIELD_ICMP_TYPE:
- case WINDIVERT_FILTER_FIELD_ICMP_CODE:
- case WINDIVERT_FILTER_FIELD_ICMPV6_TYPE:
- case WINDIVERT_FILTER_FIELD_ICMPV6_CODE:
- case WINDIVERT_FILTER_FIELD_PROTOCOL:
- case WINDIVERT_FILTER_FIELD_PACKET:
- case WINDIVERT_FILTER_FIELD_TCP_PAYLOAD:
- case WINDIVERT_FILTER_FIELD_UDP_PAYLOAD:
- case WINDIVERT_FILTER_FIELD_RANDOM8:
- ub[0] = 0xFF;
- break;
- case WINDIVERT_FILTER_FIELD_IP_FRAGOFF:
- ub[0] = 0x1FFF;
- break;
- case WINDIVERT_FILTER_FIELD_IP_LENGTH:
- case WINDIVERT_FILTER_FIELD_IP_ID:
- case WINDIVERT_FILTER_FIELD_IP_CHECKSUM:
- case WINDIVERT_FILTER_FIELD_IPV6_LENGTH:
- case WINDIVERT_FILTER_FIELD_ICMP_CHECKSUM:
- case WINDIVERT_FILTER_FIELD_ICMPV6_CHECKSUM:
- case WINDIVERT_FILTER_FIELD_TCP_SRCPORT:
- case WINDIVERT_FILTER_FIELD_TCP_DSTPORT:
- case WINDIVERT_FILTER_FIELD_TCP_WINDOW:
- case WINDIVERT_FILTER_FIELD_TCP_CHECKSUM:
- case WINDIVERT_FILTER_FIELD_TCP_URGPTR:
- case WINDIVERT_FILTER_FIELD_TCP_PAYLOADLENGTH:
- case WINDIVERT_FILTER_FIELD_UDP_SRCPORT:
- case WINDIVERT_FILTER_FIELD_UDP_DSTPORT:
- case WINDIVERT_FILTER_FIELD_UDP_LENGTH:
- case WINDIVERT_FILTER_FIELD_UDP_CHECKSUM:
- case WINDIVERT_FILTER_FIELD_UDP_PAYLOADLENGTH:
- case WINDIVERT_FILTER_FIELD_LOCALPORT:
- case WINDIVERT_FILTER_FIELD_REMOTEPORT:
- case WINDIVERT_FILTER_FIELD_PACKET16:
- case WINDIVERT_FILTER_FIELD_TCP_PAYLOAD16:
- case WINDIVERT_FILTER_FIELD_UDP_PAYLOAD16:
- case WINDIVERT_FILTER_FIELD_RANDOM16:
- ub[0] = 0xFFFF;
- break;
- case WINDIVERT_FILTER_FIELD_LENGTH:
- lb[0] = sizeof(WINDIVERT_IPHDR);
- ub[0] = WINDIVERT_MTU_MAX;
break;
- case WINDIVERT_FILTER_FIELD_IPV6_FLOWLABEL:
- ub[0] = 0x000FFFFF;
- break;
- case WINDIVERT_FILTER_FIELD_IP_SRCADDR:
- case WINDIVERT_FILTER_FIELD_IP_DSTADDR:
- ub[0] = 0xFFFFFFFF;
- ub[1] = lb[1] = 0x0000FFFF;
- break;
- case WINDIVERT_FILTER_FIELD_TIMESTAMP:
- lb[1] = 0x80000000;
- ub[0] = 0xFFFFFFFF;
- ub[1] = 0x7FFFFFFF;
- neg_lb = TRUE;
- break;
- case WINDIVERT_FILTER_FIELD_ENDPOINTID:
- case WINDIVERT_FILTER_FIELD_PARENTENDPOINTID:
- ub[0] = ub[1] = 0xFFFFFFFF;
- break;
- case WINDIVERT_FILTER_FIELD_IPV6_SRCADDR:
- case WINDIVERT_FILTER_FIELD_IPV6_DSTADDR:
- case WINDIVERT_FILTER_FIELD_LOCALADDR:
- case WINDIVERT_FILTER_FIELD_REMOTEADDR:
- ub[0] = ub[1] = ub[2] = ub[3] = 0xFFFFFFFF;
+ case WINDIVERT_LAYER_REFLECT:
+ if (event != WINDIVERT_EVENT_REFLECT_OPEN &&
+ event != WINDIVERT_EVENT_REFLECT_CLOSE)
+ {
+ goto windivert_filter_compile_error;
+ }
break;
default:
- ub[0] = 0xFFFFFFFF;
- break;
+ goto windivert_filter_compile_error;
+ }
+ ub[0] = WINDIVERT_EVENT_MAX;
+ break;
+ case WINDIVERT_FILTER_FIELD_IP_HDRLENGTH:
+ case WINDIVERT_FILTER_FIELD_TCP_HDRLENGTH:
+ ub[0] = 0x0F;
+ break;
+ case WINDIVERT_FILTER_FIELD_IP_TOS:
+ case WINDIVERT_FILTER_FIELD_IP_TTL:
+ case WINDIVERT_FILTER_FIELD_IP_PROTOCOL:
+ case WINDIVERT_FILTER_FIELD_IPV6_TRAFFICCLASS:
+ case WINDIVERT_FILTER_FIELD_IPV6_NEXTHDR:
+ case WINDIVERT_FILTER_FIELD_IPV6_HOPLIMIT:
+ case WINDIVERT_FILTER_FIELD_ICMP_TYPE:
+ case WINDIVERT_FILTER_FIELD_ICMP_CODE:
+ case WINDIVERT_FILTER_FIELD_ICMPV6_TYPE:
+ case WINDIVERT_FILTER_FIELD_ICMPV6_CODE:
+ case WINDIVERT_FILTER_FIELD_PROTOCOL:
+ case WINDIVERT_FILTER_FIELD_PACKET:
+ case WINDIVERT_FILTER_FIELD_TCP_PAYLOAD:
+ case WINDIVERT_FILTER_FIELD_UDP_PAYLOAD:
+ case WINDIVERT_FILTER_FIELD_RANDOM8:
+ ub[0] = 0xFF;
+ break;
+ case WINDIVERT_FILTER_FIELD_IP_FRAGOFF:
+ ub[0] = 0x1FFF;
+ break;
+ case WINDIVERT_FILTER_FIELD_IP_LENGTH:
+ case WINDIVERT_FILTER_FIELD_IP_ID:
+ case WINDIVERT_FILTER_FIELD_IP_CHECKSUM:
+ case WINDIVERT_FILTER_FIELD_IPV6_LENGTH:
+ case WINDIVERT_FILTER_FIELD_ICMP_CHECKSUM:
+ case WINDIVERT_FILTER_FIELD_ICMPV6_CHECKSUM:
+ case WINDIVERT_FILTER_FIELD_TCP_SRCPORT:
+ case WINDIVERT_FILTER_FIELD_TCP_DSTPORT:
+ case WINDIVERT_FILTER_FIELD_TCP_WINDOW:
+ case WINDIVERT_FILTER_FIELD_TCP_CHECKSUM:
+ case WINDIVERT_FILTER_FIELD_TCP_URGPTR:
+ case WINDIVERT_FILTER_FIELD_TCP_PAYLOADLENGTH:
+ case WINDIVERT_FILTER_FIELD_UDP_SRCPORT:
+ case WINDIVERT_FILTER_FIELD_UDP_DSTPORT:
+ case WINDIVERT_FILTER_FIELD_UDP_LENGTH:
+ case WINDIVERT_FILTER_FIELD_UDP_CHECKSUM:
+ case WINDIVERT_FILTER_FIELD_UDP_PAYLOADLENGTH:
+ case WINDIVERT_FILTER_FIELD_LOCALPORT:
+ case WINDIVERT_FILTER_FIELD_REMOTEPORT:
+ case WINDIVERT_FILTER_FIELD_PACKET16:
+ case WINDIVERT_FILTER_FIELD_TCP_PAYLOAD16:
+ case WINDIVERT_FILTER_FIELD_UDP_PAYLOAD16:
+ case WINDIVERT_FILTER_FIELD_RANDOM16:
+ ub[0] = 0xFFFF;
+ break;
+ case WINDIVERT_FILTER_FIELD_LENGTH:
+ lb[0] = sizeof(WINDIVERT_IPHDR);
+ ub[0] = WINDIVERT_MTU_MAX;
+ break;
+ case WINDIVERT_FILTER_FIELD_IPV6_FLOWLABEL:
+ ub[0] = 0x000FFFFF;
+ break;
+ case WINDIVERT_FILTER_FIELD_IP_SRCADDR:
+ case WINDIVERT_FILTER_FIELD_IP_DSTADDR:
+ ub[0] = 0xFFFFFFFF;
+ ub[1] = lb[1] = 0x0000FFFF;
+ break;
+ case WINDIVERT_FILTER_FIELD_TIMESTAMP:
+ lb[1] = 0x80000000;
+ ub[0] = 0xFFFFFFFF;
+ ub[1] = 0x7FFFFFFF;
+ neg_lb = TRUE;
+ break;
+ case WINDIVERT_FILTER_FIELD_ENDPOINTID:
+ case WINDIVERT_FILTER_FIELD_PARENTENDPOINTID:
+ ub[0] = ub[1] = 0xFFFFFFFF;
+ break;
+ case WINDIVERT_FILTER_FIELD_IPV6_SRCADDR:
+ case WINDIVERT_FILTER_FIELD_IPV6_DSTADDR:
+ case WINDIVERT_FILTER_FIELD_LOCALADDR:
+ case WINDIVERT_FILTER_FIELD_REMOTEADDR:
+ ub[0] = ub[1] = ub[2] = ub[3] = 0xFFFFFFFF;
+ break;
+ default:
+ ub[0] = 0xFFFFFFFF;
+ break;
}
- neg = (ioctl_filter[i].neg? TRUE: FALSE);
+ neg = (ioctl_filter[i].neg ? TRUE : FALSE);
result = WinDivertCompare128(neg, ioctl_filter[i].arg, neg_lb,
lb, /*big=*/TRUE);
if (result < 0)
@@ -6056,23 +6056,23 @@ static const WINDIVERT_FILTER *windivert_filter_compile(
// Disallow negative zero:
if (neg &&
- ioctl_filter[i].arg[0] == 0 && ioctl_filter[i].arg[1] == 0 &&
- ioctl_filter[i].arg[2] == 0 && ioctl_filter[i].arg[3] == 0)
+ ioctl_filter[i].arg[0] == 0 && ioctl_filter[i].arg[1] == 0 &&
+ ioctl_filter[i].arg[2] == 0 && ioctl_filter[i].arg[3] == 0)
{
goto windivert_filter_compile_error;
}
- filter[i].field = ioctl_filter[i].field;
- filter[i].test = ioctl_filter[i].test;
+ filter[i].field = ioctl_filter[i].field;
+ filter[i].test = ioctl_filter[i].test;
filter[i].success = ioctl_filter[i].success;
filter[i].failure = ioctl_filter[i].failure;
- filter[i].neg = ioctl_filter[i].neg;
- filter[i].arg[0] = ioctl_filter[i].arg[0];
- filter[i].arg[1] = ioctl_filter[i].arg[1];
- filter[i].arg[2] = ioctl_filter[i].arg[2];
- filter[i].arg[3] = ioctl_filter[i].arg[3];
+ filter[i].neg = ioctl_filter[i].neg;
+ filter[i].arg[0] = ioctl_filter[i].arg[0];
+ filter[i].arg[1] = ioctl_filter[i].arg[1];
+ filter[i].arg[2] = ioctl_filter[i].arg[2];
+ filter[i].arg[3] = ioctl_filter[i].arg[3];
}
-
+
return filter;
windivert_filter_compile_error:
@@ -6161,7 +6161,7 @@ static void windivert_reflect_open_event(context_t context)
// Queue the event:
reflect_event = &context->reflect.open_event;
reflect_event->context = context;
- reflect_event->event = WINDIVERT_EVENT_REFLECT_OPEN;
+ reflect_event->event = WINDIVERT_EVENT_REFLECT_OPEN;
KeAcquireInStackQueuedSpinLock(&reflect_lock, &lock_handle);
InsertTailList(&reflect_event_queue, &reflect_event->entry);
if (!reflect_worker_queued)
@@ -6192,7 +6192,7 @@ static void windivert_reflect_close_event(context_t context)
// Queue the event:
reflect_event = &context->reflect.close_event;
reflect_event->context = context;
- reflect_event->event = WINDIVERT_EVENT_REFLECT_CLOSE;
+ reflect_event->event = WINDIVERT_EVENT_REFLECT_CLOSE;
KeAcquireInStackQueuedSpinLock(&reflect_lock, &lock_handle);
InsertTailList(&reflect_event_queue, &reflect_event->entry);
if (!reflect_worker_queued)
@@ -6206,23 +6206,23 @@ static void windivert_reflect_close_event(context_t context)
/*
* Create REFLECT layer packet to pass the filter.
*/
-static PVOID windivert_reflect_packet(context_t context, ULONG *len_ptr)
+static PVOID windivert_reflect_packet(context_t context, ULONG* len_ptr)
{
KLOCK_QUEUE_HANDLE lock_handle;
- const WINDIVERT_FILTER *filter;
+ const WINDIVERT_FILTER* filter;
UINT16 filter_len;
WINDIVERT_STREAM stream;
- stream.data = reflect_packet;
- stream.pos = 0;
- stream.max = sizeof(reflect_packet) - 1;
+ stream.data = reflect_packet;
+ stream.pos = 0;
+ stream.max = sizeof(reflect_packet) - 1;
stream.overflow = FALSE;
KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
filter = context->filter;
filter_len = context->filter_len;
KeReleaseInStackQueuedSpinLock(&lock_handle);
-
+
WinDivertSerializeFilter(&stream, filter, (UINT8)filter_len);
*len_ptr = stream.pos;
return (PVOID)stream.data;
@@ -6237,7 +6237,7 @@ static void windivert_reflect_event_notify(context_t context,
KLOCK_QUEUE_HANDLE lock_handle;
PLIST_ENTRY entry;
context_t waiter;
- const WINDIVERT_FILTER *filter;
+ const WINDIVERT_FILTER* filter;
PVOID packet = NULL, process;
ULONG packet_len = 0;
UINT64 flags;
@@ -6254,7 +6254,7 @@ static void windivert_reflect_event_notify(context_t context,
entry = entry->Flink;
KeAcquireInStackQueuedSpinLock(&waiter->lock, &lock_handle);
filter = waiter->filter;
- flags = waiter->flags;
+ flags = waiter->flags;
KeReleaseInStackQueuedSpinLock(&lock_handle);
match = windivert_filter(/*buffer=*/NULL,
/*layer=*/WINDIVERT_LAYER_REFLECT, (PVOID)&context->reflect.data,
@@ -6287,7 +6287,7 @@ static void windivert_reflect_established_notify(context_t context,
PLIST_ENTRY entry;
BOOL match, ok;
context_t waiter;
- const WINDIVERT_FILTER *filter;
+ const WINDIVERT_FILTER* filter;
PVOID packet, process;
ULONG packet_len;
UINT64 flags;
@@ -6373,11 +6373,11 @@ void windivert_reflect_worker(IN WDFWORKITEM item)
KeReleaseInStackQueuedSpinLock(&lock_handle);
reflect_event = CONTAINING_RECORD(entry, struct reflect_event_s, entry);
- context = reflect_event->context;
- event = reflect_event->event;
+ context = reflect_event->context;
+ event = reflect_event->event;
DEBUG("REFLECT: %s event for WinDivert context (context=%p)",
- (event == WINDIVERT_EVENT_REFLECT_OPEN? "open": "close"), context);
+ (event == WINDIVERT_EVENT_REFLECT_OPEN ? "open" : "close"), context);
KeAcquireInStackQueuedSpinLock(&context->lock, &lock_handle);
object = (WDFOBJECT)context->object;
@@ -6387,21 +6387,21 @@ void windivert_reflect_worker(IN WDFWORKITEM item)
timestamp = KeQueryPerformanceCounter(NULL).QuadPart;
switch (event)
{
- case WINDIVERT_EVENT_REFLECT_OPEN:
- if (layer != WINDIVERT_LAYER_REFLECT)
- {
- InsertTailList(&reflect_contexts, &context->reflect.entry);
- }
- else
- {
- InsertTailList(&reflect_waiters, &context->reflect.entry);
- windivert_reflect_established_notify(context, timestamp);
- }
- break;
+ case WINDIVERT_EVENT_REFLECT_OPEN:
+ if (layer != WINDIVERT_LAYER_REFLECT)
+ {
+ InsertTailList(&reflect_contexts, &context->reflect.entry);
+ }
+ else
+ {
+ InsertTailList(&reflect_waiters, &context->reflect.entry);
+ windivert_reflect_established_notify(context, timestamp);
+ }
+ break;
- case WINDIVERT_EVENT_REFLECT_CLOSE:
- RemoveEntryList(&context->reflect.entry);
- break;
+ case WINDIVERT_EVENT_REFLECT_CLOSE:
+ RemoveEntryList(&context->reflect.entry);
+ break;
}
if (layer != WINDIVERT_LAYER_REFLECT)
@@ -6423,14 +6423,14 @@ void windivert_reflect_worker(IN WDFWORKITEM item)
* Log a driver event.
*/
static void windivert_log_event(PEPROCESS process, PDRIVER_OBJECT driver,
- const wchar_t *msg_str)
+ const wchar_t* msg_str)
{
const wchar_t windivert_str[] = WINDIVERT_DEVICE_NAME
WINDIVERT_VERSION_LSTR;
wchar_t pid_str[16];
- size_t windivert_size = sizeof(windivert_str), msg_size, pid_size, size;
+ size_t windivert_size = sizeof(windivert_str), msg_size, pid_size = 0, size;
UNICODE_STRING string;
- UINT8 *str;
+ UINT8* str;
PIO_ERROR_LOG_PACKET packet;
NTSTATUS status;
@@ -6445,9 +6445,9 @@ static void windivert_log_event(PEPROCESS process, PDRIVER_OBJECT driver,
if (process != NULL)
{
- string.Length = 0;
+ string.Length = 0;
string.MaximumLength = sizeof(pid_str);
- string.Buffer = pid_str;
+ string.Buffer = pid_str;
status = RtlIntegerToUnicodeString(
(UINT32)(ULONG_PTR)PsGetProcessId(process), 10, &string);
pid_size = string.Length + sizeof(wchar_t);
@@ -6471,9 +6471,9 @@ static void windivert_log_event(PEPROCESS process, PDRIVER_OBJECT driver,
}
RtlZeroMemory(packet, size);
packet->NumberOfStrings = 3;
- packet->StringOffset = sizeof(IO_ERROR_LOG_PACKET);
- packet->ErrorCode = WINDIVERT_INFO_EVENT;
- str = (UINT8 *)packet + packet->StringOffset;
+ packet->StringOffset = sizeof(IO_ERROR_LOG_PACKET);
+ packet->ErrorCode = WINDIVERT_INFO_EVENT;
+ str = (UINT8*)packet + packet->StringOffset;
RtlCopyMemory(str, windivert_str, windivert_size);
str += windivert_size;
RtlCopyMemory(str, msg_str, msg_size);
@@ -6482,4 +6482,3 @@ static void windivert_log_event(PEPROCESS process, PDRIVER_OBJECT driver,
IoWriteErrorLogEntry(packet);
}
-
diff --git a/sys/windivert.log b/sys/windivert.log
new file mode 100644
index 00000000..5f282702
--- /dev/null
+++ b/sys/windivert.log
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/sys/windivert.rc b/sys/windivert.rc
index 11a4e97a..970c6f72 100644
--- a/sys/windivert.rc
+++ b/sys/windivert.rc
@@ -45,15 +45,23 @@
"[Bitcoin: 1C5vZVSbizPeZ8ydTYhUfm4LA2cNwBfcYh]"
#define VER_INTERNALNAME_STR "WinDivert.sys"
#define VER_ORIGINALFILENAME_STR "WinDivert.sys"
+#ifndef VER_PRODUCTVERSION
#define VER_PRODUCTVERSION 2.2
+#endif
+#ifndef VER_PRODUCTVERSION_STR
#define VER_PRODUCTVERSION_STR "2.2"
+#endif
+#ifndef VER_COMPANYNAME_STR
#define VER_COMPANYNAME_STR "Basil"
+#endif
#define VER_LEGALCOPYRIGHT_YEARS "2011-2019"
#define VER_LEGALCOPYRIGHT_STR \
"Copyright \251 " VER_COMPANYNAME_STR " " VER_LEGALCOPYRIGHT_YEARS
#define VER_FILEVERSION VER_PRODUCTVERSION
#define VER_FILEVERSION_STR VER_PRODUCTVERSION_STR
+#ifndef VER_PRODUCTNAME_STR
#define VER_PRODUCTNAME_STR "WinDivert 2.2 driver"
+#endif
#include "common.ver"
diff --git a/sys/windivert.sln b/sys/windivert.sln
new file mode 100644
index 00000000..72836041
--- /dev/null
+++ b/sys/windivert.sln
@@ -0,0 +1,22 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.12.35527.113
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinDivert", "windivert.vcxproj", "{C1A6A244-A523-4F5E-933B-192BB4176681}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {C1A6A244-A523-4F5E-933B-192BB4176681}.Release|x64.ActiveCfg = Release|x64
+ {C1A6A244-A523-4F5E-933B-192BB4176681}.Release|x64.Build.0 = Release|x64
+ {C1A6A244-A523-4F5E-933B-192BB4176681}.Release|x86.ActiveCfg = Release|Win32
+ {C1A6A244-A523-4F5E-933B-192BB4176681}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/sys/windivert.vcxproj b/sys/windivert.vcxproj
index 1633c688..be42f491 100644
--- a/sys/windivert.vcxproj
+++ b/sys/windivert.vcxproj
@@ -34,60 +34,76 @@
Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-->
-
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
-
-
- .
- .
-
-
-
-
-
-
-
- false
- MaxSpeed
- ..\include;..\dll;.
-
-
-
- v4.5
- 12.0
- WinDivert
- WinDivert
-
-
-
- Windows7
- true
- WindowsKernelModeDriver10.0
- Driver
- KMDF
- Desktop
- DbgengKernelDebugger
- false
-
-
-
-
- false
- _X86_=1;i386=1;STD_CALL;%(PreprocessorDefinitions);NDIS60;UNICODE;_UNICODE;NDIS_SUPPORT_NDIS60;NT;BINARY_COMPATIBLE=0
- _WIN64;_AMD64_;AMD64;%(PreprocessorDefinitions);NDIS60;UNICODE;_UNICODE;NDIS_SUPPORT_NDIS60;NT;BINARY_COMPATIBLE=0
-
-
- %(AdditionalDependencies);$(KernelBufferOverflowLib);$(DDK_LIB_PATH)ntoskrnl.lib;$(DDK_LIB_PATH)hal.lib;$(DDK_LIB_PATH)wmilib.lib;$(KMDF_LIB_PATH)$(KMDF_VER_PATH)\WdfLdr.lib;$(KMDF_LIB_PATH)$(KMDF_VER_PATH)\WdfDriverEntry.lib;$(DDK_LIB_PATH)\wdmsec.lib;$(DDK_LIB_PATH)\ndis.lib;$(DDK_LIB_PATH)\fwpkclnt.lib;$(SDK_LIB_PATH)\uuid.lib
-
-
-
-
+
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+
+ .
+ .
+
+
+
+
+
+
+
+ false
+ MaxSpeed
+ ..\include;..\dll;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\km;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\km;.
+
+
+
+ .NET 9.0
+ 17.0
+ WinDivert
+ WinDivert
+ {C1A6A244-A523-4F5E-933B-192BB4176681}
+ 10.0.26100.0
+
+
+
+ Windows10
+ false
+ WindowsKernelModeDriver10.0
+ Driver
+ KMDF
+ Desktop
+ DbgengKernelDebugger
+ false
+
+
+ <_NT_TARGET_VERSION>0xA000010
+ 10.0.26100
+
+
+
+ C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\km\crt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\km;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared;C:\Program Files (x86)\Windows Kits\10\Include\wdf\kmdf\1.15
+ .sys
+
+
+
+ false
+ _X86_=1;i386=1;STD_CALL;%(PreprocessorDefinitions);NDIS60;UNICODE;_UNICODE;NDIS_SUPPORT_NDIS60;NT;BINARY_COMPATIBLE=0
+ _WIN64;_AMD64_;AMD64;%(PreprocessorDefinitions);NDIS60;UNICODE;_UNICODE;NDIS_SUPPORT_NDIS60;NT;BINARY_COMPATIBLE=0
+ false
+
+
+ %(AdditionalDependencies);$(KernelBufferOverflowLib);C:\Program Files (x86)\Windows Kits\10\Lib\10.0.26100.0\km\x64\ntoskrnl.lib;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.26100.0\km\x64\hal.lib;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.26100.0\km\x64\wmilib.lib;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.26100.0\km\x64\wdmsec.lib;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.26100.0\km\x64\ndis.lib;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.26100.0\km\x64\fwpkclnt.lib;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.26100.0\um\x64\uuid.lib
+ C:\Program Files %28x86%29\Windows Kits\10\Lib\10.0.26100.0\km\x64;%(AdditionalLibraryDirectories)
+ C:\Program Files (x86)\Windows Kits\10\lib\wdf\kmdf\x64\1.15\WdfLdr.lib;C:\Program Files (x86)\Windows Kits\10\lib\wdf\kmdf\x64\1.15\WdfDriverEntry.lib;%(IgnoreSpecificDefaultLibraries)
+
+
+ SHA256
+
+
+
+
\ No newline at end of file
diff --git a/sys/windivert.vcxproj.user b/sys/windivert.vcxproj.user
new file mode 100644
index 00000000..88a55094
--- /dev/null
+++ b/sys/windivert.vcxproj.user
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/sys/windivert_log.h b/sys/windivert_log.h
new file mode 100644
index 00000000..709edac9
--- /dev/null
+++ b/sys/windivert_log.h
@@ -0,0 +1,87 @@
+/*
+ * windivert_log.mc
+ * (C) 2019, all rights reserved,
+ *
+ * This file is part of WinDivert.
+ *
+ * WinDivert is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the
+ * Free Software Foundation, either version 3 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ *
+ * WinDivert is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc., 51
+ * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+//
+// Values are 32 bit values laid out as follows:
+//
+// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
+// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+// +---+-+-+-----------------------+-------------------------------+
+// |Sev|C|R| Facility | Code |
+// +---+-+-+-----------------------+-------------------------------+
+//
+// where
+//
+// Sev - is the severity code
+//
+// 00 - Success
+// 01 - Informational
+// 10 - Warning
+// 11 - Error
+//
+// C - is the Customer code flag
+//
+// R - is a reserved bit
+//
+// Facility - is the facility code
+//
+// Code - is the facility's status code
+//
+//
+// Define the facility codes
+//
+#define FACILITY_SYSTEM 0x0
+#define FACILITY_RUNTIME 0x2
+#define FACILITY_STUBS 0x3
+#define FACILITY_IO_ERROR_CODE 0x4
+#define FACILITY_WINDIVERT 0x574
+
+
+//
+// Define the severity codes
+//
+#define STATUS_SEVERITY_SUCCESS 0x0
+#define STATUS_SEVERITY_INFORMATIONAL 0x1
+#define STATUS_SEVERITY_WARNING 0x2
+#define STATUS_SEVERITY_ERROR 0x3
+
+
+//
+// MessageId: WINDIVERT_INFO_EVENT
+//
+// MessageText:
+//
+// %2 %3 (processId=%4)
+//
+#define WINDIVERT_INFO_EVENT ((NTSTATUS)0x4574312DL)
+
diff --git a/sys/windivert_log.rc b/sys/windivert_log.rc
new file mode 100644
index 00000000..d1fb4f79
--- /dev/null
+++ b/sys/windivert_log.rc
@@ -0,0 +1,2 @@
+LANGUAGE 0x9,0x1
+1 11 "windivert_log_MSG00001.bin"
diff --git a/sys/windivert_log_MSG00001.bin b/sys/windivert_log_MSG00001.bin
new file mode 100644
index 00000000..29c7702a
Binary files /dev/null and b/sys/windivert_log_MSG00001.bin differ
diff --git a/sys/windivertb.vcxproj b/sys/windivertb.vcxproj
new file mode 100644
index 00000000..c45ae350
--- /dev/null
+++ b/sys/windivertb.vcxproj
@@ -0,0 +1,73 @@
+
+
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+
+ .
+ .
+
+
+
+
+
+
+
+ false
+ MaxSpeed
+ MaxSpeed
+ ..\include;..\dll;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\km;C:\Program Files (x86)\Windows Kits\10\Include\wdf\kmdf\1.33;.
+ EnableFastChecks
+ EnableFastChecks
+ Default
+ Default
+
+
+
+ v4.8
+ 16.0
+ WinDivert
+ WinDivert
+ {C1A6A244-A523-4F5E-933B-192BB4176681}
+ 10.0.26100.0
+
+
+
+ Windows10
+ true
+ v143
+ Driver
+ KMDF
+ Desktop
+ DbgengKernelDebugger
+ false
+
+
+
+ C:\Users\kujax\OneDrive\Desktop\WinDivert-master\include;$(IncludePath)
+
+
+
+ false
+ _X86_=1;i386=1;STD_CALL;%(PreprocessorDefinitions);NDIS60;UNICODE;_UNICODE;NDIS_SUPPORT_NDIS60;NT;BINARY_COMPATIBLE=0
+ _WIN64;_AMD64_;AMD64;%(PreprocessorDefinitions);NDIS60;UNICODE;_UNICODE;NDIS_SUPPORT_NDIS60;NT;BINARY_COMPATIBLE=0
+ stdcpp14
+ Default
+ true
+
+
+
+
+ %(AdditionalDependencies);$(KernelBufferOverflowLib);$(DDK_LIB_PATH)ntoskrnl.lib;$(DDK_LIB_PATH)hal.lib;$(DDK_LIB_PATH)wmilib.lib;$(KMDF_LIB_PATH)$(KMDF_VER_PATH)\WdfLdr.lib;$(KMDF_LIB_PATH)$(KMDF_VER_PATH)\WdfDriverEntry.lib;$(DDK_LIB_PATH)\wdmsec.lib;$(DDK_LIB_PATH)\ndis.lib;$(DDK_LIB_PATH)\fwpkclnt.lib;$(SDK_LIB_PATH)\uuid.lib
+
+
+
+
\ No newline at end of file
diff --git a/sys/x64/Release/WinDivert.Build.CppClean.log b/sys/x64/Release/WinDivert.Build.CppClean.log
new file mode 100644
index 00000000..bdde4c10
--- /dev/null
+++ b/sys/x64/Release/WinDivert.Build.CppClean.log
@@ -0,0 +1,29 @@
+c:\windivert\sys\x64\release\vc143.pdb
+c:\windivert\sys\x64\release\windivert.obj
+c:\windivert\sys\x64\release\windivert.sys
+c:\windivert\sys\x64\release\windivert.pdb
+c:\windivert\install\msvc\amd64\windivert64.sys
+c:\windivert\install\msvc\amd64\windivert64.pdb
+c:\windivert\sys\windivert_log.h
+c:\windivert\sys\windivert_log.rc
+c:\windivert\sys\windivert_log_msg00001.bin
+c:\windivert\sys\x64\release\windivert.res
+c:\windivert\sys\x64\release\windivert.cer
+c:\windivert\sys\x64\release\windivert.tlog\cl.command.1.tlog
+c:\windivert\sys\x64\release\windivert.tlog\cl.items.tlog
+c:\windivert\sys\x64\release\windivert.tlog\cl.read.1.tlog
+c:\windivert\sys\x64\release\windivert.tlog\cl.write.1.tlog
+c:\windivert\sys\x64\release\windivert.tlog\link.command.1.tlog
+c:\windivert\sys\x64\release\windivert.tlog\link.read.1.tlog
+c:\windivert\sys\x64\release\windivert.tlog\link.secondary.1.tlog
+c:\windivert\sys\x64\release\windivert.tlog\link.write.1.tlog
+c:\windivert\sys\x64\release\windivert.tlog\mc.command.1.tlog
+c:\windivert\sys\x64\release\windivert.tlog\mc.read.1.tlog
+c:\windivert\sys\x64\release\windivert.tlog\mc.write.1.tlog
+c:\windivert\sys\x64\release\windivert.tlog\rc.command.1.tlog
+c:\windivert\sys\x64\release\windivert.tlog\rc.read.1.tlog
+c:\windivert\sys\x64\release\windivert.tlog\rc.write.1.tlog
+c:\windivert\sys\x64\release\windivert.tlog\signtool.command.1.tlog
+c:\windivert\sys\x64\release\windivert.tlog\signtool.read.1.tlog
+c:\windivert\sys\x64\release\windivert.tlog\signtool.timestamp.1.tlog
+c:\windivert\sys\x64\release\windivert.tlog\signtool.write.1.tlog
diff --git a/sys/x64/Release/WinDivert.cer b/sys/x64/Release/WinDivert.cer
new file mode 100644
index 00000000..8972926d
Binary files /dev/null and b/sys/x64/Release/WinDivert.cer differ
diff --git a/sys/x64/Release/WinDivert.pdb b/sys/x64/Release/WinDivert.pdb
new file mode 100644
index 00000000..b71fe966
Binary files /dev/null and b/sys/x64/Release/WinDivert.pdb differ
diff --git a/sys/x64/Release/WinDivert.sys.recipe b/sys/x64/Release/WinDivert.sys.recipe
new file mode 100644
index 00000000..1772bd90
--- /dev/null
+++ b/sys/x64/Release/WinDivert.sys.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ C:\WinDivert\sys\x64\Release\WinDivert.sys
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sys/x64/Release/WinDivert.tlog/CL.command.1.tlog b/sys/x64/Release/WinDivert.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..b1bc1466
Binary files /dev/null and b/sys/x64/Release/WinDivert.tlog/CL.command.1.tlog differ
diff --git a/sys/x64/Release/WinDivert.tlog/CL.read.1.tlog b/sys/x64/Release/WinDivert.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..924f4dce
Binary files /dev/null and b/sys/x64/Release/WinDivert.tlog/CL.read.1.tlog differ
diff --git a/sys/x64/Release/WinDivert.tlog/CL.write.1.tlog b/sys/x64/Release/WinDivert.tlog/CL.write.1.tlog
new file mode 100644
index 00000000..8786e84a
Binary files /dev/null and b/sys/x64/Release/WinDivert.tlog/CL.write.1.tlog differ
diff --git a/sys/x64/Release/WinDivert.tlog/Cl.items.tlog b/sys/x64/Release/WinDivert.tlog/Cl.items.tlog
new file mode 100644
index 00000000..94686c45
--- /dev/null
+++ b/sys/x64/Release/WinDivert.tlog/Cl.items.tlog
@@ -0,0 +1 @@
+C:\WinDivert\sys\windivert.c;C:\WinDivert\sys\x64\Release\windivert.obj
diff --git a/sys/x64/Release/WinDivert.tlog/WinDivert.lastbuildstate b/sys/x64/Release/WinDivert.tlog/WinDivert.lastbuildstate
new file mode 100644
index 00000000..089d9e9c
--- /dev/null
+++ b/sys/x64/Release/WinDivert.tlog/WinDivert.lastbuildstate
@@ -0,0 +1,2 @@
+PlatformToolSet=WindowsKernelModeDriver10.0:VCToolArchitecture=Native32Bit:VCToolsVersion=14.43.34808:TargetPlatformVersion=10.0.26100.0:
+Release|x64|C:\WinDivert\sys\|
diff --git a/sys/x64/Release/WinDivert.tlog/link.command.1.tlog b/sys/x64/Release/WinDivert.tlog/link.command.1.tlog
new file mode 100644
index 00000000..e3f17cf4
Binary files /dev/null and b/sys/x64/Release/WinDivert.tlog/link.command.1.tlog differ
diff --git a/sys/x64/Release/WinDivert.tlog/link.read.1.tlog b/sys/x64/Release/WinDivert.tlog/link.read.1.tlog
new file mode 100644
index 00000000..730985b3
Binary files /dev/null and b/sys/x64/Release/WinDivert.tlog/link.read.1.tlog differ
diff --git a/sys/x64/Release/WinDivert.tlog/link.secondary.1.tlog b/sys/x64/Release/WinDivert.tlog/link.secondary.1.tlog
new file mode 100644
index 00000000..d709668d
--- /dev/null
+++ b/sys/x64/Release/WinDivert.tlog/link.secondary.1.tlog
@@ -0,0 +1 @@
+^C:\WINDIVERT\SYS\X64\RELEASE\WINDIVERT.OBJ|C:\WINDIVERT\SYS\X64\RELEASE\WINDIVERT.RES
diff --git a/sys/x64/Release/WinDivert.tlog/link.write.1.tlog b/sys/x64/Release/WinDivert.tlog/link.write.1.tlog
new file mode 100644
index 00000000..d02aa053
Binary files /dev/null and b/sys/x64/Release/WinDivert.tlog/link.write.1.tlog differ
diff --git a/sys/x64/Release/WinDivert.tlog/mc.command.1.tlog b/sys/x64/Release/WinDivert.tlog/mc.command.1.tlog
new file mode 100644
index 00000000..9024643a
Binary files /dev/null and b/sys/x64/Release/WinDivert.tlog/mc.command.1.tlog differ
diff --git a/sys/x64/Release/WinDivert.tlog/mc.read.1.tlog b/sys/x64/Release/WinDivert.tlog/mc.read.1.tlog
new file mode 100644
index 00000000..c17d9199
Binary files /dev/null and b/sys/x64/Release/WinDivert.tlog/mc.read.1.tlog differ
diff --git a/sys/x64/Release/WinDivert.tlog/mc.write.1.tlog b/sys/x64/Release/WinDivert.tlog/mc.write.1.tlog
new file mode 100644
index 00000000..7e97546c
Binary files /dev/null and b/sys/x64/Release/WinDivert.tlog/mc.write.1.tlog differ
diff --git a/sys/x64/Release/WinDivert.tlog/rc.command.1.tlog b/sys/x64/Release/WinDivert.tlog/rc.command.1.tlog
new file mode 100644
index 00000000..ed7302ec
Binary files /dev/null and b/sys/x64/Release/WinDivert.tlog/rc.command.{"code":"deadline_exceeded","msg":"operation timed out"}