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