From 1f9c6e97bd2d771c349d612d1635e727e2ea2fb0 Mon Sep 17 00:00:00 2001
From: ami-GS <1991.daiki@gmail.com>
Date: Wed, 15 Jan 2025 17:49:43 -0800
Subject: [PATCH] Use Zw version API
---
src/bin/winkernel/msquic.kernel.vcxproj | 2 +-
src/bin/winkernel/msquicpriv.kernel.vcxproj | 2 +-
src/inc/quic_platform_winkernel.h | 52 ++++++++++---------
src/perf/bin/secnetperfdriver.kernel.vcxproj | 2 +-
.../bin/secnetperfdriverpriv.kernel.vcxproj | 2 +-
.../bin/winkernel/msquictest.kernel.vcxproj | 2 +-
.../winkernel/msquictestpriv.kernel.vcxproj | 2 +-
7 files changed, 34 insertions(+), 30 deletions(-)
diff --git a/src/bin/winkernel/msquic.kernel.vcxproj b/src/bin/winkernel/msquic.kernel.vcxproj
index 5f0c711d2c..1fe8ed84fc 100644
--- a/src/bin/winkernel/msquic.kernel.vcxproj
+++ b/src/bin/winkernel/msquic.kernel.vcxproj
@@ -100,7 +100,7 @@
msquic.src
- ntdll.lib;cng.lib;ksecdd.lib;msnetioid.lib;ndis.lib;netio.lib;uuid.lib;%(AdditionalDependencies)
+ cng.lib;ksecdd.lib;msnetioid.lib;ndis.lib;netio.lib;uuid.lib;%(AdditionalDependencies)
/kernel /NOOPTIDATA /pdbcompress /MERGE:.gfids=GFIDS /MERGE:.orpc=.text /MERGE:_PAGE=PAGE /MERGE:_RDATA=.rdata /MERGE:_TEXT=.text /section:GFIDS,d
UseLinkTimeCodeGeneration
diff --git a/src/bin/winkernel/msquicpriv.kernel.vcxproj b/src/bin/winkernel/msquicpriv.kernel.vcxproj
index 74aea05ea6..c8983b8c56 100644
--- a/src/bin/winkernel/msquicpriv.kernel.vcxproj
+++ b/src/bin/winkernel/msquicpriv.kernel.vcxproj
@@ -100,7 +100,7 @@
msquicpriv.src
- ntdll.lib;cng.lib;ksecdd.lib;msnetioid.lib;ndis.lib;netio.lib;uuid.lib;%(AdditionalDependencies)
+ cng.lib;ksecdd.lib;msnetioid.lib;ndis.lib;netio.lib;uuid.lib;%(AdditionalDependencies)
/kernel /NOOPTIDATA /pdbcompress /MERGE:.gfids=GFIDS /MERGE:.orpc=.text /MERGE:_PAGE=PAGE /MERGE:_RDATA=.rdata /MERGE:_TEXT=.text /section:GFIDS,d
UseLinkTimeCodeGeneration
diff --git a/src/inc/quic_platform_winkernel.h b/src/inc/quic_platform_winkernel.h
index dcf41c4f87..39f785fd69 100644
--- a/src/inc/quic_platform_winkernel.h
+++ b/src/inc/quic_platform_winkernel.h
@@ -484,34 +484,38 @@ typedef struct _FILE_IO_COMPLETION_INFORMATION {
IO_STATUS_BLOCK IoStatusBlock;
} FILE_IO_COMPLETION_INFORMATION, *PFILE_IO_COMPLETION_INFORMATION;
-__kernel_entry NTSYSCALLAPI
+// copied from zwapi.h
+NTSYSAPI
NTSTATUS
-NtCreateIoCompletion (
- _Out_ PHANDLE IoCompletionHandle,
- _In_ ACCESS_MASK DesiredAccess,
- _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes,
- _In_opt_ ULONG Count
+NTAPI
+ZwCreateIoCompletion (
+ OUT PHANDLE IoCompletionHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes,
+ IN OPTIONAL ULONG Count
);
-__kernel_entry NTSYSCALLAPI
+NTSYSAPI
NTSTATUS
-NtSetIoCompletion (
- _In_ HANDLE IoCompletionHandle,
- _In_opt_ PVOID KeyContext,
- _In_opt_ PVOID ApcContext,
- _In_ NTSTATUS IoStatus,
- _In_ ULONG_PTR IoStatusInformation
+NTAPI
+ZwSetIoCompletion (
+ IN HANDLE IoCompletionHandle,
+ IN PVOID KeyContext,
+ IN PVOID ApcContext,
+ IN NTSTATUS IoStatus,
+ IN ULONG_PTR IoStatusInformation
);
-__kernel_entry NTSYSCALLAPI
+NTSYSAPI
NTSTATUS
-NtRemoveIoCompletionEx (
- _In_ HANDLE IoCompletionHandle,
- _Out_writes_to_(Count, *NumEntriesRemoved) PFILE_IO_COMPLETION_INFORMATION IoCompletionInformation,
- _In_ ULONG Count,
- _Out_ PULONG NumEntriesRemoved,
- _In_opt_ PLARGE_INTEGER Timeout,
- _In_ BOOLEAN Alertable
+NTAPI
+ZwRemoveIoCompletionEx (
+ IN HANDLE IoCompletionHandle,
+ OUT PFILE_IO_COMPLETION_INFORMATION IoCompletionInformation,
+ IN ULONG Count,
+ OUT PULONG NumEntriesRemoved,
+ IN PLARGE_INTEGER Timeout OPTIONAL,
+ IN BOOLEAN Alertable
);
//
@@ -540,7 +544,7 @@ CxPlatEventQInitialize(
_Out_ CXPLAT_EVENTQ* queue
)
{
- return NT_SUCCESS(NtCreateIoCompletion(queue, IO_COMPLETION_ALL_ACCESS, NULL, 0));
+ return NT_SUCCESS(ZwCreateIoCompletion(queue, IO_COMPLETION_ALL_ACCESS, NULL, 0));
}
_IRQL_requires_max_(PASSIVE_LEVEL)
@@ -561,7 +565,7 @@ CxPlatEventQEnqueue(
_In_ CXPLAT_SQE* sqe
)
{
- return NT_SUCCESS(NtSetIoCompletion(*queue, NULL, sqe, STATUS_SUCCESS, 0));
+ return NT_SUCCESS(ZwSetIoCompletion(*queue, NULL, sqe, STATUS_SUCCESS, 0));
}
_IRQL_requires_max_(PASSIVE_LEVEL)
@@ -578,7 +582,7 @@ CxPlatEventQDequeue(
timeout.QuadPart = -10000LL * wait_time;
ULONG entriesRemoved = 0;
- NTSTATUS status = NtRemoveIoCompletionEx(
+ NTSTATUS status = ZwRemoveIoCompletionEx(
*queue,
events,
count,
diff --git a/src/perf/bin/secnetperfdriver.kernel.vcxproj b/src/perf/bin/secnetperfdriver.kernel.vcxproj
index 2f4501f593..ea84b40cd5 100644
--- a/src/perf/bin/secnetperfdriver.kernel.vcxproj
+++ b/src/perf/bin/secnetperfdriver.kernel.vcxproj
@@ -85,7 +85,7 @@
$(SolutionDir)artifacts\bin\winkernel\$(Platform)_$(Configuration)_schannel\
- ntdll.lib;cng.lib;ksecdd.lib;msnetioid.lib;netio.lib;wdmsec.lib;uuid.lib;msquic.lib;ndis.lib;%(AdditionalDependencies)
+ cng.lib;ksecdd.lib;msnetioid.lib;netio.lib;wdmsec.lib;uuid.lib;msquic.lib;ndis.lib;%(AdditionalDependencies)
UseLinkTimeCodeGeneration
diff --git a/src/perf/bin/secnetperfdriverpriv.kernel.vcxproj b/src/perf/bin/secnetperfdriverpriv.kernel.vcxproj
index ab07528dae..bc0d6443a6 100644
--- a/src/perf/bin/secnetperfdriverpriv.kernel.vcxproj
+++ b/src/perf/bin/secnetperfdriverpriv.kernel.vcxproj
@@ -85,7 +85,7 @@
$(SolutionDir)artifacts\bin\winkernel\$(Platform)_$(Configuration)_schannel\
- ntdll.lib;cng.lib;ksecdd.lib;msnetioid.lib;netio.lib;wdmsec.lib;uuid.lib;msquicpriv.lib;ndis.lib;%(AdditionalDependencies)
+ cng.lib;ksecdd.lib;msnetioid.lib;netio.lib;wdmsec.lib;uuid.lib;msquicpriv.lib;ndis.lib;%(AdditionalDependencies)
UseLinkTimeCodeGeneration
diff --git a/src/test/bin/winkernel/msquictest.kernel.vcxproj b/src/test/bin/winkernel/msquictest.kernel.vcxproj
index b56d6a241e..b377bb56b4 100644
--- a/src/test/bin/winkernel/msquictest.kernel.vcxproj
+++ b/src/test/bin/winkernel/msquictest.kernel.vcxproj
@@ -88,7 +88,7 @@
$(SolutionDir)artifacts\bin\winkernel\$(Platform)_$(Configuration)_schannel\
- ntdll.lib;cng.lib;ksecdd.lib;msnetioid.lib;netio.lib;wdmsec.lib;uuid.lib;msquic.lib;%(AdditionalDependencies)
+ cng.lib;ksecdd.lib;msnetioid.lib;netio.lib;wdmsec.lib;uuid.lib;msquic.lib;%(AdditionalDependencies)
UseLinkTimeCodeGeneration
diff --git a/src/test/bin/winkernel/msquictestpriv.kernel.vcxproj b/src/test/bin/winkernel/msquictestpriv.kernel.vcxproj
index 6eea9c6dae..e22f2e56b7 100644
--- a/src/test/bin/winkernel/msquictestpriv.kernel.vcxproj
+++ b/src/test/bin/winkernel/msquictestpriv.kernel.vcxproj
@@ -88,7 +88,7 @@
$(SolutionDir)artifacts\bin\winkernel\$(Platform)_$(Configuration)_schannel\
- ntdll.lib;cng.lib;ksecdd.lib;msnetioid.lib;netio.lib;wdmsec.lib;uuid.lib;msquicpriv.lib;%(AdditionalDependencies)
+ cng.lib;ksecdd.lib;msnetioid.lib;netio.lib;wdmsec.lib;uuid.lib;msquicpriv.lib;%(AdditionalDependencies)
UseLinkTimeCodeGeneration