From 6d1ca3553ea8b497de3644745c1f59872bea354b Mon Sep 17 00:00:00 2001 From: Victor Perevertkin Date: Wed, 10 Mar 2021 18:41:03 +0300 Subject: [PATCH] [SDK:KMDF] Fix calling convention for the kernel function pointers --- .../shared/inc/primitives/common/mxmacros.h | 6 ++ .../wdf/shared/inc/primitives/km/mxtimerkm.h | 2 +- .../wdf/shared/inc/private/km/fxglobalskm.h | 68 +++++++++---------- 3 files changed, 41 insertions(+), 35 deletions(-) diff --git a/sdk/lib/drivers/wdf/shared/inc/primitives/common/mxmacros.h b/sdk/lib/drivers/wdf/shared/inc/primitives/common/mxmacros.h index a92c7644c5b..e9364ea3fe2 100644 --- a/sdk/lib/drivers/wdf/shared/inc/primitives/common/mxmacros.h +++ b/sdk/lib/drivers/wdf/shared/inc/primitives/common/mxmacros.h @@ -27,3 +27,9 @@ Revision History: #else #define CHECK_RETURN_IF_USER_MODE #endif + +#ifdef __REACTOS__ +# ifndef STDCALL +# define STDCALL __stdcall +# endif +#endif diff --git a/sdk/lib/drivers/wdf/shared/inc/primitives/km/mxtimerkm.h b/sdk/lib/drivers/wdf/shared/inc/primitives/km/mxtimerkm.h index 9bc1d4de1af..dfb4a3d8182 100644 --- a/sdk/lib/drivers/wdf/shared/inc/primitives/km/mxtimerkm.h +++ b/sdk/lib/drivers/wdf/shared/inc/primitives/km/mxtimerkm.h @@ -26,7 +26,7 @@ Revision History: typedef BOOLEAN -(*PFN_KE_SET_COALESCABLE_TIMER) ( +(STDCALL *PFN_KE_SET_COALESCABLE_TIMER) ( __inout PKTIMER Timer, __in LARGE_INTEGER DueTime, __in ULONG Period, diff --git a/sdk/lib/drivers/wdf/shared/inc/private/km/fxglobalskm.h b/sdk/lib/drivers/wdf/shared/inc/private/km/fxglobalskm.h index dbe65de0b4a..293050e29c8 100644 --- a/sdk/lib/drivers/wdf/shared/inc/private/km/fxglobalskm.h +++ b/sdk/lib/drivers/wdf/shared/inc/private/km/fxglobalskm.h @@ -57,18 +57,18 @@ struct FxAllocatedMdls { typedef BOOLEAN -(*PFN_KD_REFRESH)( +(STDCALL *PFN_KD_REFRESH)( ); typedef VOID -(*PFN_KE_FLUSH_QUEUED_DPCS)( +(STDCALL *PFN_KE_FLUSH_QUEUED_DPCS)( VOID ); typedef NTSTATUS -(*PFN_IO_SET_COMPLETION_ROUTINE_EX)( +(STDCALL *PFN_IO_SET_COMPLETION_ROUTINE_EX)( __in PDEVICE_OBJECT DeviceObject, __in PIRP Irp, __in PIO_COMPLETION_ROUTINE CompletionRoutine, @@ -80,7 +80,7 @@ NTSTATUS typedef BOOLEAN -(*PFN_KE_REGISTER_BUGCHECK_REASON_CALLBACK) ( +(STDCALL *PFN_KE_REGISTER_BUGCHECK_REASON_CALLBACK) ( __in PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord, __in PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine, __in KBUGCHECK_CALLBACK_REASON Reason, @@ -89,25 +89,25 @@ BOOLEAN typedef BOOLEAN -(*PFN_KE_DEREGISTER_BUGCHECK_REASON_CALLBACK) ( +(STDCALL *PFN_KE_DEREGISTER_BUGCHECK_REASON_CALLBACK) ( __in PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecords ); typedef NTSTATUS -(*PFN_IO_CONNECT_INTERRUPT_EX)( +(STDCALL *PFN_IO_CONNECT_INTERRUPT_EX)( __inout PIO_CONNECT_INTERRUPT_PARAMETERS Parameters ); typedef NTSTATUS -(*PFN_IO_DISCONNECT_INTERRUPT_EX)( +(STDCALL *PFN_IO_DISCONNECT_INTERRUPT_EX)( __in PIO_DISCONNECT_INTERRUPT_PARAMETERS Parameters ); typedef NTSTATUS -(*PFN_IO_CONNECT_INTERRUPT)( +(STDCALL *PFN_IO_CONNECT_INTERRUPT)( __out PKINTERRUPT *InterruptObject, __in PKSERVICE_ROUTINE ServiceRoutine, __in_opt PVOID ServiceContext, @@ -123,7 +123,7 @@ NTSTATUS typedef VOID -(*PFN_IO_DISCONNECT_INTERRUPT)( +(STDCALL *PFN_IO_DISCONNECT_INTERRUPT)( __in PKINTERRUPT InterruptObject ); @@ -154,32 +154,32 @@ PSLIST_ENTRY typedef BOOLEAN -(*PFN_PO_GET_SYSTEM_WAKE)( +(STDCALL *PFN_PO_GET_SYSTEM_WAKE)( __in PIRP Irp ); typedef VOID -(*PFN_PO_SET_SYSTEM_WAKE)( +(STDCALL *PFN_PO_SET_SYSTEM_WAKE)( __inout PIRP Irp ); typedef KAFFINITY -(*PFN_KE_QUERY_ACTIVE_PROCESSORS)( +(STDCALL *PFN_KE_QUERY_ACTIVE_PROCESSORS)( VOID ); typedef VOID -(*PFN_KE_SET_TARGET_PROCESSOR_DPC)( +(STDCALL *PFN_KE_SET_TARGET_PROCESSOR_DPC)( __in PRKDPC Dpc, __in CCHAR Number ); typedef BOOLEAN -(*PFN_KE_SET_COALESCABLE_TIMER)( +(STDCALL *PFN_KE_SET_COALESCABLE_TIMER)( __inout PKTIMER Timer, __in LARGE_INTEGER DueTime, __in ULONG Period, @@ -189,49 +189,49 @@ BOOLEAN typedef ULONG -(*PFN_KE_GET_CURRENT_PROCESSOR_NUMBER)( +(STDCALL *PFN_KE_GET_CURRENT_PROCESSOR_NUMBER)( VOID ); typedef ULONG -(*PFN_KE_GET_CURRENT_PROCESSOR_NUMBER_EX)( +(STDCALL *PFN_KE_GET_CURRENT_PROCESSOR_NUMBER_EX)( __out_opt PPROCESSOR_NUMBER ProcNumber ); typedef ULONG -(*PFN_KE_QUERY_MAXIMUM_PROCESSOR_COUNT_EX)( +(STDCALL *PFN_KE_QUERY_MAXIMUM_PROCESSOR_COUNT_EX)( __in USHORT GroupNumber ); typedef ULONG -(*PFN_KE_QUERY_MAXIMUM_PROCESSOR_COUNT)( +(STDCALL *PFN_KE_QUERY_MAXIMUM_PROCESSOR_COUNT)( VOID ); typedef BOOLEAN -(*PFN_KE_ARE_APCS_DISABLED)( +(STDCALL *PFN_KE_ARE_APCS_DISABLED)( VOID ); typedef ULONG -(*PFN_KE_GET_RECOMMENDED_SHARED_DATA_ALIGNMENT)( +(STDCALL *PFN_KE_GET_RECOMMENDED_SHARED_DATA_ALIGNMENT)( VOID ); typedef NTSTATUS -(*PFN_IO_UNREGISTER_PLUGPLAY_NOTIFICATION_EX)( +(STDCALL *PFN_IO_UNREGISTER_PLUGPLAY_NOTIFICATION_EX)( __in PVOID NotificationEntry ); typedef NTSTATUS -(*PFN_POX_REGISTER_DEVICE) ( +(STDCALL *PFN_POX_REGISTER_DEVICE) ( __in MdDeviceObject Pdo, __in PPO_FX_DEVICE PoxDevice, __out POHANDLE * Handle @@ -239,19 +239,19 @@ NTSTATUS typedef VOID -(*PFN_POX_START_DEVICE_POWER_MANAGEMENT) ( +(STDCALL *PFN_POX_START_DEVICE_POWER_MANAGEMENT) ( __in POHANDLE Handle ); typedef VOID -(*PFN_POX_UNREGISTER_DEVICE) ( +(STDCALL *PFN_POX_UNREGISTER_DEVICE) ( __in POHANDLE Handle ); typedef VOID -(*PFN_POX_ACTIVATE_COMPONENT) ( +(STDCALL *PFN_POX_ACTIVATE_COMPONENT) ( __in POHANDLE Handle, __in ULONG Component, __in ULONG Flags @@ -259,7 +259,7 @@ VOID typedef VOID -(*PFN_POX_IDLE_COMPONENT) ( +(STDCALL *PFN_POX_IDLE_COMPONENT) ( __in POHANDLE Handle, __in ULONG Component, __in ULONG Flags @@ -267,52 +267,52 @@ VOID typedef VOID -(*PFN_POX_REPORT_DEVICE_POWERED_ON) ( +(STDCALL *PFN_POX_REPORT_DEVICE_POWERED_ON) ( __in POHANDLE Handle ); typedef VOID -(*PFN_POX_COMPLETE_IDLE_STATE) ( +(STDCALL *PFN_POX_COMPLETE_IDLE_STATE) ( __in POHANDLE Handle, __in ULONG Component ); typedef VOID -(*PFN_POX_COMPLETE_IDLE_CONDITION) ( +(STDCALL *PFN_POX_COMPLETE_IDLE_CONDITION) ( __in POHANDLE Handle, __in ULONG Component ); typedef VOID -(*PFN_POX_COMPLETE_DEVICE_POWER_NOT_REQUIRED) ( +(STDCALL *PFN_POX_COMPLETE_DEVICE_POWER_NOT_REQUIRED) ( __in POHANDLE Handle ); typedef VOID -(*PFN_POX_SET_DEVICE_IDLE_TIMEOUT) ( +(STDCALL *PFN_POX_SET_DEVICE_IDLE_TIMEOUT) ( __in POHANDLE Handle, __in ULONGLONG IdleTimeout ); typedef VOID -(*PFN_IO_REPORT_INTERRUPT_ACTIVE) ( +(STDCALL *PFN_IO_REPORT_INTERRUPT_ACTIVE) ( _In_ PIO_REPORT_INTERRUPT_ACTIVE_STATE_PARAMETERS Parameters ); typedef VOID -(*PFN_IO_REPORT_INTERRUPT_INACTIVE) ( +(STDCALL *PFN_IO_REPORT_INTERRUPT_INACTIVE) ( _In_ PIO_REPORT_INTERRUPT_ACTIVE_STATE_PARAMETERS Parameters ); typedef VOID -(*PFN_VF_CHECK_NX_POOL_TYPE) ( +(STDCALL *PFN_VF_CHECK_NX_POOL_TYPE) ( _In_ POOL_TYPE PoolType, _In_ PVOID CallingAddress, _In_ ULONG PoolTag