diff --git a/sdk/xtdk/ketypes.h b/sdk/xtdk/ketypes.h index c5cea0c..4528aa6 100644 --- a/sdk/xtdk/ketypes.h +++ b/sdk/xtdk/ketypes.h @@ -47,6 +47,9 @@ /* APC pending state length */ #define KAPC_STATE_LENGTH (FIELD_OFFSET(KAPC_STATE, UserApcPending) + sizeof(BOOLEAN)) +/* Push lock total bits */ +#define KPUSH_LOCK_TOTAL_BITS (sizeof(ULONG_PTR) * 8) + /* Kernel service descriptor tables count */ #define KSERVICE_TABLES_COUNT 4 @@ -446,6 +449,36 @@ typedef struct _KGATE DISPATCHER_HEADER Header; } KGATE, *PKGATE; +/* Push Lock structure definition */ +typedef union _KPUSH_LOCK +{ + struct + { + ULONG_PTR Locked:1; + ULONG_PTR Waiting:1; + ULONG_PTR Waking:1; + ULONG_PTR MultipleShared:1; + ULONG_PTR Shared:(KPUSH_LOCK_TOTAL_BITS - 4); + }; + ULONG_PTR Value; + PVOID Ptr; +} KPUSH_LOCK, *PKPUSH_LOCK; + +/* Push lock wait block structure definition */ +typedef struct _KPUSH_LOCK_WAIT_BLOCK +{ + union + { + KGATE WakeGate; + KEVENT WakeEvent; + }; + PKPUSH_LOCK_WAIT_BLOCK Next; + PKPUSH_LOCK_WAIT_BLOCK Last; + PKPUSH_LOCK_WAIT_BLOCK Previous; + LONG ShareCount; + LONG Flags; +} KPUSH_LOCK_WAIT_BLOCK, *PKPUSH_LOCK_WAIT_BLOCK; + /* Semaphore object structure definition */ typedef struct _KSEMAPHORE { diff --git a/sdk/xtdk/xtstruct.h b/sdk/xtdk/xtstruct.h index c74e9e4..e20d1de 100644 --- a/sdk/xtdk/xtstruct.h +++ b/sdk/xtdk/xtstruct.h @@ -266,6 +266,7 @@ typedef struct _KEVENT KEVENT, *PKEVENT; typedef struct _KGATE KGATE, *PKGATE; typedef struct _KLOCK_QUEUE_HANDLE KLOCK_QUEUE_HANDLE, *PKLOCK_QUEUE_HANDLE; typedef struct _KPROCESS KPROCESS, *PKPROCESS; +typedef struct _KPUSH_LOCK_WAIT_BLOCK KPUSH_LOCK_WAIT_BLOCK, *PKPUSH_LOCK_WAIT_BLOCK; typedef struct _KQUEUE KQUEUE, *PKQUEUE; typedef struct _KSEMAPHORE KSEMAPHORE, *PKSEMAPHORE; typedef struct _KSERVICE_DESCRIPTOR_TABLE KSERVICE_DESCRIPTOR_TABLE, *PKSERVICE_DESCRIPTOR_TABLE; @@ -387,6 +388,7 @@ typedef union _EFI_IA32_REGISTER_SET EFI_IA32_REGISTER_SET, *PEFI_IA32_REGISTER_ typedef union _EFI_IP_ADDRESS EFI_IP_ADDRESS, *PEFI_IP_ADDRESS; typedef union _EFI_PXE_BASE_CODE_PACKET EFI_PXE_BASE_CODE_PACKET, *PEFI_PXE_BASE_CODE_PACKET; typedef union _EX_RUNDOWN_REFERENCE EX_RUNDOWN_REFERENCE, *PEX_RUNDOWN_REFERENCE; +typedef union _KPUSH_LOCK KPUSH_LOCK, *PKPUSH_LOCK; typedef union _LARGE_INTEGER LARGE_INTEGER, *PLARGE_INTEGER; typedef union _ULARGE_INTEGER ULARGE_INTEGER, *PULARGE_INTEGER;