- Fix the declarations of PDRIVER_CANCEL, KeGetCurrentProcessorNumber and KPCR in ROS headers.

- Fix the declarations of KeGetCurrentProcessorNumber, PIO_QUERY_DEVICE_ROUTINE, THREAD_STATE, KPCR and KeAttachProcess in W32API headers.
- Remove KeInitializeApc, KEVENT_PAIR and TERMINATION_PORT declarations from W32API, they don't belong there.
- Correct the STDCALL order in callback declarations in winddk.h.

svn path=/trunk/; revision=15906
This commit is contained in:
Filip Navara 2005-06-14 13:10:40 +00:00
parent 819d60094a
commit b2970c097e
17 changed files with 318 additions and 326 deletions

View file

@ -35,8 +35,8 @@ IntInt10AllocateBuffer(
{ {
PVOID MemoryAddress; PVOID MemoryAddress;
NTSTATUS Status; NTSTATUS Status;
PEPROCESS CallingProcess; PKPROCESS CallingProcess;
PEPROCESS PrevAttachedProcess; PKPROCESS PrevAttachedProcess;
DPRINT("IntInt10AllocateBuffer\n"); DPRINT("IntInt10AllocateBuffer\n");
@ -82,8 +82,8 @@ IntInt10FreeBuffer(
{ {
PVOID MemoryAddress = (PVOID)((Seg << 4) | Off); PVOID MemoryAddress = (PVOID)((Seg << 4) | Off);
NTSTATUS Status; NTSTATUS Status;
PEPROCESS CallingProcess; PKPROCESS CallingProcess;
PEPROCESS PrevAttachedProcess; PKPROCESS PrevAttachedProcess;
DPRINT("IntInt10FreeBuffer\n"); DPRINT("IntInt10FreeBuffer\n");
DPRINT("- Segment: %x\n", Seg); DPRINT("- Segment: %x\n", Seg);
@ -105,8 +105,8 @@ IntInt10ReadMemory(
OUT PVOID Buffer, OUT PVOID Buffer,
IN ULONG Length) IN ULONG Length)
{ {
PEPROCESS CallingProcess; PKPROCESS CallingProcess;
PEPROCESS PrevAttachedProcess; PKPROCESS PrevAttachedProcess;
DPRINT("IntInt10ReadMemory\n"); DPRINT("IntInt10ReadMemory\n");
DPRINT("- Segment: %x\n", Seg); DPRINT("- Segment: %x\n", Seg);
@ -129,8 +129,8 @@ IntInt10WriteMemory(
IN PVOID Buffer, IN PVOID Buffer,
IN ULONG Length) IN ULONG Length)
{ {
PEPROCESS CallingProcess; PKPROCESS CallingProcess;
PEPROCESS PrevAttachedProcess; PKPROCESS PrevAttachedProcess;
DPRINT("IntInt10WriteMemory\n"); DPRINT("IntInt10WriteMemory\n");
DPRINT("- Segment: %x\n", Seg); DPRINT("- Segment: %x\n", Seg);
@ -152,8 +152,8 @@ IntInt10CallBios(
{ {
KV86M_REGISTERS Regs; KV86M_REGISTERS Regs;
NTSTATUS Status; NTSTATUS Status;
PEPROCESS CallingProcess; PKPROCESS CallingProcess;
PEPROCESS PrevAttachedProcess; PKPROCESS PrevAttachedProcess;
DPRINT("IntInt10CallBios\n"); DPRINT("IntInt10CallBios\n");
@ -207,8 +207,8 @@ VideoPortInt10(
{ {
KV86M_REGISTERS Regs; KV86M_REGISTERS Regs;
NTSTATUS Status; NTSTATUS Status;
PEPROCESS CallingProcess; PKPROCESS CallingProcess;
PEPROCESS PrevAttachedProcess; PKPROCESS PrevAttachedProcess;
DPRINT("VideoPortInt10\n"); DPRINT("VideoPortInt10\n");

View file

@ -27,7 +27,7 @@
/* GLOBAL VARIABLES ***********************************************************/ /* GLOBAL VARIABLES ***********************************************************/
ULONG CsrssInitialized = FALSE; ULONG CsrssInitialized = FALSE;
PEPROCESS Csrss = NULL; PKPROCESS Csrss = NULL;
/* PRIVATE FUNCTIONS **********************************************************/ /* PRIVATE FUNCTIONS **********************************************************/
@ -495,12 +495,12 @@ IntVideoPortFindAdapter(
} }
VOID FASTCALL VOID FASTCALL
IntAttachToCSRSS(PEPROCESS *CallingProcess, PEPROCESS *PrevAttachedProcess) IntAttachToCSRSS(PKPROCESS *CallingProcess, PKPROCESS *PrevAttachedProcess)
{ {
*CallingProcess = PsGetCurrentProcess(); *CallingProcess = &PsGetCurrentProcess()->Pcb;
if (*CallingProcess != Csrss) if (*CallingProcess != Csrss)
{ {
if (PsGetCurrentThread()->ThreadsProcess != *CallingProcess) if (&PsGetCurrentThread()->ThreadsProcess->Pcb != *CallingProcess)
{ {
*PrevAttachedProcess = *CallingProcess; *PrevAttachedProcess = *CallingProcess;
KeDetachProcess(); KeDetachProcess();
@ -514,7 +514,7 @@ IntAttachToCSRSS(PEPROCESS *CallingProcess, PEPROCESS *PrevAttachedProcess)
} }
VOID FASTCALL VOID FASTCALL
IntDetachFromCSRSS(PEPROCESS *CallingProcess, PEPROCESS *PrevAttachedProcess) IntDetachFromCSRSS(PKPROCESS *CallingProcess, PKPROCESS *PrevAttachedProcess)
{ {
if (*CallingProcess != Csrss) if (*CallingProcess != Csrss)
{ {
@ -852,8 +852,8 @@ VideoPortGetRomImage(
IN ULONG Length) IN ULONG Length)
{ {
static PVOID RomImageBuffer = NULL; static PVOID RomImageBuffer = NULL;
PEPROCESS CallingProcess; PKPROCESS CallingProcess;
PEPROCESS PrevAttachedProcess; PKPROCESS PrevAttachedProcess;
DPRINT("VideoPortGetRomImage(HwDeviceExtension 0x%X Length 0x%X)\n", DPRINT("VideoPortGetRomImage(HwDeviceExtension 0x%X Length 0x%X)\n",
HwDeviceExtension, Length); HwDeviceExtension, Length);

View file

@ -188,7 +188,7 @@ IntVideoPortMapPhysicalMemory(
/* videoprt.c */ /* videoprt.c */
extern ULONG CsrssInitialized; extern ULONG CsrssInitialized;
extern PEPROCESS Csrss; extern PKPROCESS Csrss;
VP_STATUS STDCALL VP_STATUS STDCALL
VideoPortEnumerateChildren( VideoPortEnumerateChildren(
@ -201,10 +201,10 @@ VideoPortGetProcAddress(
IN PUCHAR FunctionName); IN PUCHAR FunctionName);
VOID FASTCALL VOID FASTCALL
IntAttachToCSRSS(PEPROCESS *CallingProcess, PEPROCESS *PrevAttachedProcess); IntAttachToCSRSS(PKPROCESS *CallingProcess, PKPROCESS *PrevAttachedProcess);
VOID FASTCALL VOID FASTCALL
IntDetachFromCSRSS(PEPROCESS *CallingProcess, PEPROCESS *PrevAttachedProcess); IntDetachFromCSRSS(PKPROCESS *CallingProcess, PKPROCESS *PrevAttachedProcess);
NTSTATUS STDCALL NTSTATUS STDCALL
IntVideoPortCreateAdapterDeviceObject( IntVideoPortCreateAdapterDeviceObject(

View file

@ -650,7 +650,7 @@ typedef NTSTATUS STDCALL_FUNC
/* /*
* Driver cancel declaration * Driver cancel declaration
*/ */
typedef NTSTATUS STDCALL_FUNC typedef VOID STDCALL_FUNC
(*PDRIVER_CANCEL)(struct _DEVICE_OBJECT* DeviceObject, (*PDRIVER_CANCEL)(struct _DEVICE_OBJECT* DeviceObject,
struct _IRP* RegistryPath); struct _IRP* RegistryPath);

View file

@ -124,7 +124,7 @@ VOID STDCALL KeEnterKernelDebugger (VOID);
KIRQL STDCALL KeGetCurrentIrql (VOID); KIRQL STDCALL KeGetCurrentIrql (VOID);
#ifndef __USE_W32API #ifndef __USE_W32API
#define KeGetCurrentProcessorNumber() (KeGetCurrentKPCR()->ProcessorNumber) #define KeGetCurrentProcessorNumber() (KeGetCurrentKPCR()->Number)
ULONG KeGetDcacheFillSize(VOID); ULONG KeGetDcacheFillSize(VOID);
KPROCESSOR_MODE STDCALL KeGetPreviousMode (VOID); KPROCESSOR_MODE STDCALL KeGetPreviousMode (VOID);
#endif #endif

View file

@ -78,7 +78,7 @@ ExGetCurrentProcessorCounts (
*ThreadKernelTime = Prcb->KernelTime + Prcb->UserTime; *ThreadKernelTime = Prcb->KernelTime + Prcb->UserTime;
*TotalCpuTime = Prcb->CurrentThread->KernelTime; *TotalCpuTime = Prcb->CurrentThread->KernelTime;
*ProcessorNumber = KeGetCurrentKPCR()->ProcessorNumber; *ProcessorNumber = KeGetCurrentKPCR()->Number;
} }
/* /*

View file

@ -31,6 +31,7 @@
#undef assert #undef assert
#endif #endif
#ifndef __USE_W32API
#ifdef DBG #ifdef DBG
/* Assert only on "checked" version */ /* Assert only on "checked" version */
@ -64,6 +65,7 @@
#define assertmsg(_c_, _m_) #define assertmsg(_c_, _m_)
#define ASSERTMSG(_c_, _m_) #define ASSERTMSG(_c_, _m_)
#endif
#endif #endif
/* Print if using a "checked" version */ /* Print if using a "checked" version */
@ -83,10 +85,6 @@
#define CPRINT(args...) #define CPRINT(args...)
#define DPRINT1(args...) #define DPRINT1(args...)
#define assert(x)
#define ASSERT(x)
#define assertmsg(_c_, _m_)
#define ASSERTMSG(_c_, _m_)
#endif /* DBG */ #endif /* DBG */

View file

@ -238,7 +238,7 @@ typedef struct _KPCR {
KAFFINITY SetMember; /* 48 */ KAFFINITY SetMember; /* 48 */
ULONG StallScaleFactor; /* 4C */ ULONG StallScaleFactor; /* 4C */
UCHAR DebugActive; /* 50 */ UCHAR DebugActive; /* 50 */
UCHAR ProcessorNumber; /* 51 */ UCHAR Number; /* 51 */
UCHAR Reserved; /* 52 */ UCHAR Reserved; /* 52 */
UCHAR L2CacheAssociativity; /* 53 */ UCHAR L2CacheAssociativity; /* 53 */
ULONG VdmAlert; /* 54 */ ULONG VdmAlert; /* 54 */

View file

@ -266,7 +266,7 @@ typedef enum _KTHREAD_STATE {
} }
#ifndef __USE_W32API #ifndef __USE_W32API
#define KeGetCurrentProcessorNumber() (KeGetCurrentKPCR()->ProcessorNumber) #define KeGetCurrentProcessorNumber() (KeGetCurrentKPCR()->Number)
#endif #endif
/* threadsch.c ********************************************************************/ /* threadsch.c ********************************************************************/

View file

@ -12,22 +12,6 @@
#define NDEBUG #define NDEBUG
#include <internal/debug.h> #include <internal/debug.h>
/*
* @implemented
*/
STDCALL
PVOID
KeFindConfigurationEntry(
IN PVOID Unknown,
IN ULONG Class,
IN CONFIGURATION_TYPE Type,
IN PULONG RegKey
)
{
/* Start Search at Root */
return KeFindConfigurationNextEntry(Unknown, Class, Type, RegKey, NULL);
}
/* /*
* @unimplemented * @unimplemented
*/ */
@ -45,6 +29,22 @@ KeFindConfigurationNextEntry(
return 0; return 0;
} }
/*
* @implemented
*/
STDCALL
PVOID
KeFindConfigurationEntry(
IN PVOID Unknown,
IN ULONG Class,
IN CONFIGURATION_TYPE Type,
IN PULONG RegKey
)
{
/* Start Search at Root */
return KeFindConfigurationNextEntry(Unknown, Class, Type, RegKey, NULL);
}
/* /*
* @implemented * @implemented
*/ */

View file

@ -130,17 +130,6 @@ KiAcquireGuardedMutexContented(PKGUARDED_MUTEX GuardedMutex)
} }
} }
VOID
FASTCALL
KeAcquireGuardedMutex(PKGUARDED_MUTEX GuardedMutex)
{
/* Disable Special APCs */
KeEnterGuardedRegion();
/* Do the Unsafe Acquire */
KeAcquireGuardedMutexUnsafe(GuardedMutex);
}
VOID VOID
FASTCALL FASTCALL
KeAcquireGuardedMutexUnsafe(PKGUARDED_MUTEX GuardedMutex) KeAcquireGuardedMutexUnsafe(PKGUARDED_MUTEX GuardedMutex)
@ -185,6 +174,17 @@ KeReleaseGuardedMutexUnsafe(PKGUARDED_MUTEX GuardedMutex)
} }
} }
VOID
FASTCALL
KeAcquireGuardedMutex(PKGUARDED_MUTEX GuardedMutex)
{
/* Disable Special APCs */
KeEnterGuardedRegion();
/* Do the Unsafe Acquire */
KeAcquireGuardedMutexUnsafe(GuardedMutex);
}
VOID VOID
FASTCALL FASTCALL
KeReleaseGuardedMutex(PKGUARDED_MUTEX GuardedMutex) KeReleaseGuardedMutex(PKGUARDED_MUTEX GuardedMutex)

View file

@ -72,10 +72,10 @@ KiInitializeGdt(PKPCR Pcr)
/* /*
* Allocate a GDT * Allocate a GDT
*/ */
Gdt = KiGdtArray[Pcr->ProcessorNumber]; Gdt = KiGdtArray[Pcr->Number];
if (Gdt == NULL) if (Gdt == NULL)
{ {
DbgPrint("No GDT (%d)\n", Pcr->ProcessorNumber); DbgPrint("No GDT (%d)\n", Pcr->Number);
KEBUGCHECK(0); KEBUGCHECK(0);
} }

View file

@ -181,7 +181,7 @@ KePrepareForApplicationProcessorInit(ULONG Id)
* Create a PCR for this processor * Create a PCR for this processor
*/ */
memset(Pcr, 0, PAGE_SIZE); memset(Pcr, 0, PAGE_SIZE);
Pcr->ProcessorNumber = Id; Pcr->Number = Id;
Pcr->Tib.Self = &Pcr->Tib; Pcr->Tib.Self = &Pcr->Tib;
Pcr->Self = Pcr; Pcr->Self = Pcr;
Pcr->Prcb = &Pcr->PrcbData; Pcr->Prcb = &Pcr->PrcbData;
@ -283,7 +283,7 @@ KeInit1(PCHAR CommandLine, PULONG LastKernelAddress)
KPCR->GDT = KiBootGdt; KPCR->GDT = KiBootGdt;
KPCR->IDT = (PUSHORT)KiIdt; KPCR->IDT = (PUSHORT)KiIdt;
KPCR->TSS = &KiBootTss; KPCR->TSS = &KiBootTss;
KPCR->ProcessorNumber = 0; KPCR->Number = 0;
KiPcrInitDone = 1; KiPcrInitDone = 1;
PcrsAllocated++; PcrsAllocated++;

View file

@ -1090,7 +1090,7 @@ KeSetAffinityThread(PKTHREAD Thread,
if (Thread->State == Running) { if (Thread->State == Running) {
ProcessorMask = 1 << KeGetCurrentKPCR()->ProcessorNumber; ProcessorMask = 1 << KeGetCurrentKPCR()->Number;
if (Thread == KeGetCurrentThread()) { if (Thread == KeGetCurrentThread()) {
if (!(Affinity & ProcessorMask)) { if (!(Affinity & ProcessorMask)) {

View file

@ -269,7 +269,7 @@ typedef enum _THREAD_STATE {
Running, Running,
Standby, Standby,
Terminated, Terminated,
Wait, Waiting,
Transition, Transition,
DeferredReady DeferredReady
} THREAD_STATE; } THREAD_STATE;

View file

@ -469,7 +469,6 @@ typedef struct _CACHE_MANAGER_CALLBACKS *PCACHE_MANAGER_CALLBACKS;
typedef struct _EPROCESS_QUOTA_BLOCK *PEPROCESS_QUOTA_BLOCK; typedef struct _EPROCESS_QUOTA_BLOCK *PEPROCESS_QUOTA_BLOCK;
typedef struct _FILE_GET_QUOTA_INFORMATION *PFILE_GET_QUOTA_INFORMATION; typedef struct _FILE_GET_QUOTA_INFORMATION *PFILE_GET_QUOTA_INFORMATION;
typedef struct _HANDLE_TABLE *PHANDLE_TABLE; typedef struct _HANDLE_TABLE *PHANDLE_TABLE;
typedef struct _KEVENT_PAIR *PKEVENT_PAIR;
typedef struct _KPROCESS *PKPROCESS; typedef struct _KPROCESS *PKPROCESS;
typedef struct _KQUEUE *PKQUEUE; typedef struct _KQUEUE *PKQUEUE;
typedef struct _KTRAP_FRAME *PKTRAP_FRAME; typedef struct _KTRAP_FRAME *PKTRAP_FRAME;
@ -481,7 +480,6 @@ typedef struct _PAGEFAULT_HISTORY *PPAGEFAULT_HISTORY;
typedef struct _PS_IMPERSONATION_INFORMATION *PPS_IMPERSONATION_INFORMATION; typedef struct _PS_IMPERSONATION_INFORMATION *PPS_IMPERSONATION_INFORMATION;
typedef struct _SECTION_OBJECT *PSECTION_OBJECT; typedef struct _SECTION_OBJECT *PSECTION_OBJECT;
typedef struct _SHARED_CACHE_MAP *PSHARED_CACHE_MAP; typedef struct _SHARED_CACHE_MAP *PSHARED_CACHE_MAP;
typedef struct _TERMINATION_PORT *PTERMINATION_PORT;
typedef struct _VACB *PVACB; typedef struct _VACB *PVACB;
typedef struct _VAD_HEADER *PVAD_HEADER; typedef struct _VAD_HEADER *PVAD_HEADER;
@ -1208,13 +1206,6 @@ typedef struct _IO_COMPLETION_BASIC_INFORMATION {
LONG Depth; LONG Depth;
} IO_COMPLETION_BASIC_INFORMATION, *PIO_COMPLETION_BASIC_INFORMATION; } IO_COMPLETION_BASIC_INFORMATION, *PIO_COMPLETION_BASIC_INFORMATION;
typedef struct _KEVENT_PAIR {
USHORT Type;
USHORT Size;
KEVENT Event1;
KEVENT Event2;
} KEVENT_PAIR, *PKEVENT_PAIR;
typedef struct _KQUEUE { typedef struct _KQUEUE {
DISPATCHER_HEADER Header; DISPATCHER_HEADER Header;
LIST_ENTRY EntryListHead; LIST_ENTRY EntryListHead;
@ -1527,11 +1518,6 @@ typedef struct _SYSTEM_CACHE_INFORMATION {
ULONG Unused[4]; ULONG Unused[4];
} SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION; } SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION;
typedef struct _TERMINATION_PORT {
struct _TERMINATION_PORT* Next;
PVOID Port;
} TERMINATION_PORT, *PTERMINATION_PORT;
typedef struct _SECURITY_CLIENT_CONTEXT { typedef struct _SECURITY_CLIENT_CONTEXT {
SECURITY_QUALITY_OF_SERVICE SecurityQos; SECURITY_QUALITY_OF_SERVICE SecurityQos;
PACCESS_TOKEN ClientToken; PACCESS_TOKEN ClientToken;
@ -2977,7 +2963,7 @@ NTKERNELAPI
VOID VOID
NTAPI NTAPI
KeAttachProcess ( KeAttachProcess (
IN PEPROCESS Process IN PKPROCESS Process
); );
NTKERNELAPI NTKERNELAPI

View file

@ -159,6 +159,7 @@ typedef enum _MODE {
/* Structures not exposed to drivers */ /* Structures not exposed to drivers */
typedef struct _IO_TIMER *PIO_TIMER; typedef struct _IO_TIMER *PIO_TIMER;
typedef struct _KPROCESS *PKPROCESS;
typedef struct _EPROCESS *PEPROCESS; typedef struct _EPROCESS *PEPROCESS;
typedef struct _ETHREAD *PETHREAD; typedef struct _ETHREAD *PETHREAD;
typedef struct _KINTERRUPT *PKINTERRUPT; typedef struct _KINTERRUPT *PKINTERRUPT;
@ -548,30 +549,30 @@ typedef VOID
** Plug and Play structures ** Plug and Play structures
*/ */
typedef VOID DDKAPI typedef VOID
(*PINTERFACE_REFERENCE)( (DDKAPI *PINTERFACE_REFERENCE)(
PVOID Context); PVOID Context);
typedef VOID DDKAPI typedef VOID
(*PINTERFACE_DEREFERENCE)( (DDKAPI *PINTERFACE_DEREFERENCE)(
PVOID Context); PVOID Context);
typedef BOOLEAN DDKAPI typedef BOOLEAN
(*PTRANSLATE_BUS_ADDRESS)( (DDKAPI *PTRANSLATE_BUS_ADDRESS)(
IN PVOID Context, IN PVOID Context,
IN PHYSICAL_ADDRESS BusAddress, IN PHYSICAL_ADDRESS BusAddress,
IN ULONG Length, IN ULONG Length,
IN OUT PULONG AddressSpace, IN OUT PULONG AddressSpace,
OUT PPHYSICAL_ADDRESS TranslatedAddress); OUT PPHYSICAL_ADDRESS TranslatedAddress);
typedef struct _DMA_ADAPTER* DDKAPI typedef struct _DMA_ADAPTER*
(*PGET_DMA_ADAPTER)( (DDKAPI *PGET_DMA_ADAPTER)(
IN PVOID Context, IN PVOID Context,
IN struct _DEVICE_DESCRIPTION *DeviceDescriptor, IN struct _DEVICE_DESCRIPTION *DeviceDescriptor,
OUT PULONG NumberOfMapRegisters); OUT PULONG NumberOfMapRegisters);
typedef ULONG DDKAPI typedef ULONG
(*PGET_SET_DEVICE_DATA)( (DDKAPI *PGET_SET_DEVICE_DATA)(
IN PVOID Context, IN PVOID Context,
IN ULONG DataType, IN ULONG DataType,
IN PVOID Buffer, IN PVOID Buffer,
@ -747,13 +748,13 @@ typedef enum _IO_NOTIFICATION_EVENT_CATEGORY {
#define PNPNOTIFY_DEVICE_INTERFACE_INCLUDE_EXISTING_INTERFACES 0x00000001 #define PNPNOTIFY_DEVICE_INTERFACE_INCLUDE_EXISTING_INTERFACES 0x00000001
typedef NTSTATUS DDKAPI typedef NTSTATUS
(*PDRIVER_NOTIFICATION_CALLBACK_ROUTINE)( (DDKAPI *PDRIVER_NOTIFICATION_CALLBACK_ROUTINE)(
IN PVOID NotificationStructure, IN PVOID NotificationStructure,
IN PVOID Context); IN PVOID Context);
typedef VOID DDKAPI typedef VOID
(*PDEVICE_CHANGE_COMPLETE_CALLBACK)( (DDKAPI *PDEVICE_CHANGE_COMPLETE_CALLBACK)(
IN PVOID Context); IN PVOID Context);
@ -774,8 +775,8 @@ typedef struct _OBJECT_NAME_INFORMATION {
UNICODE_STRING Name; UNICODE_STRING Name;
} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION; } OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
typedef VOID DDKAPI typedef VOID
(*PIO_APC_ROUTINE)( (DDKAPI *PIO_APC_ROUTINE)(
IN PVOID ApcContext, IN PVOID ApcContext,
IN PIO_STATUS_BLOCK IoStatusBlock, IN PIO_STATUS_BLOCK IoStatusBlock,
IN ULONG Reserved); IN ULONG Reserved);
@ -788,26 +789,26 @@ typedef struct _IO_STATUS_BLOCK {
ULONG_PTR Information; ULONG_PTR Information;
} IO_STATUS_BLOCK; } IO_STATUS_BLOCK;
typedef VOID DDKAPI typedef VOID
(*PKNORMAL_ROUTINE)( (DDKAPI *PKNORMAL_ROUTINE)(
IN PVOID NormalContext, IN PVOID NormalContext,
IN PVOID SystemArgument1, IN PVOID SystemArgument1,
IN PVOID SystemArgument2); IN PVOID SystemArgument2);
typedef VOID DDKAPI typedef VOID
(*PKKERNEL_ROUTINE)( (DDKAPI *PKKERNEL_ROUTINE)(
IN struct _KAPC *Apc, IN struct _KAPC *Apc,
IN OUT PKNORMAL_ROUTINE *NormalRoutine, IN OUT PKNORMAL_ROUTINE *NormalRoutine,
IN OUT PVOID *NormalContext, IN OUT PVOID *NormalContext,
IN OUT PVOID *SystemArgument1, IN OUT PVOID *SystemArgument1,
IN OUT PVOID *SystemArgument2); IN OUT PVOID *SystemArgument2);
typedef VOID DDKAPI typedef VOID
(*PKRUNDOWN_ROUTINE)( (DDKAPI *PKRUNDOWN_ROUTINE)(
IN struct _KAPC *Apc); IN struct _KAPC *Apc);
typedef BOOLEAN DDKAPI typedef BOOLEAN
(*PKTRANSFER_ROUTINE)( (DDKAPI *PKTRANSFER_ROUTINE)(
VOID); VOID);
typedef struct _KAPC { typedef struct _KAPC {
@ -883,7 +884,7 @@ typedef struct _KDPC {
PVOID DeferredContext; PVOID DeferredContext;
PVOID SystemArgument1; PVOID SystemArgument1;
PVOID SystemArgument2; PVOID SystemArgument2;
PULONG_PTR Lock; PVOID DpcData;
} KDPC, *PKDPC, *RESTRICTED_POINTER PRKDPC; } KDPC, *PKDPC, *RESTRICTED_POINTER PRKDPC;
typedef struct _KDPC_DATA { typedef struct _KDPC_DATA {
@ -1824,35 +1825,35 @@ typedef struct _MDL {
MDL_SYSTEM_VA | \ MDL_SYSTEM_VA | \
MDL_IO_SPACE) MDL_IO_SPACE)
typedef VOID DDKAPI typedef VOID
(*PPUT_DMA_ADAPTER)( (DDKAPI *PPUT_DMA_ADAPTER)(
IN PDMA_ADAPTER DmaAdapter); IN PDMA_ADAPTER DmaAdapter);
typedef PVOID DDKAPI typedef PVOID
(*PALLOCATE_COMMON_BUFFER)( (DDKAPI *PALLOCATE_COMMON_BUFFER)(
IN PDMA_ADAPTER DmaAdapter, IN PDMA_ADAPTER DmaAdapter,
IN ULONG Length, IN ULONG Length,
OUT PPHYSICAL_ADDRESS LogicalAddress, OUT PPHYSICAL_ADDRESS LogicalAddress,
IN BOOLEAN CacheEnabled); IN BOOLEAN CacheEnabled);
typedef VOID DDKAPI typedef VOID
(*PFREE_COMMON_BUFFER)( (DDKAPI *PFREE_COMMON_BUFFER)(
IN PDMA_ADAPTER DmaAdapter, IN PDMA_ADAPTER DmaAdapter,
IN ULONG Length, IN ULONG Length,
IN PHYSICAL_ADDRESS LogicalAddress, IN PHYSICAL_ADDRESS LogicalAddress,
IN PVOID VirtualAddress, IN PVOID VirtualAddress,
IN BOOLEAN CacheEnabled); IN BOOLEAN CacheEnabled);
typedef NTSTATUS DDKAPI typedef NTSTATUS
(*PALLOCATE_ADAPTER_CHANNEL)( (DDKAPI *PALLOCATE_ADAPTER_CHANNEL)(
IN PDMA_ADAPTER DmaAdapter, IN PDMA_ADAPTER DmaAdapter,
IN PDEVICE_OBJECT DeviceObject, IN PDEVICE_OBJECT DeviceObject,
IN ULONG NumberOfMapRegisters, IN ULONG NumberOfMapRegisters,
IN PDRIVER_CONTROL ExecutionRoutine, IN PDRIVER_CONTROL ExecutionRoutine,
IN PVOID Context); IN PVOID Context);
typedef BOOLEAN DDKAPI typedef BOOLEAN
(*PFLUSH_ADAPTER_BUFFERS)( (DDKAPI *PFLUSH_ADAPTER_BUFFERS)(
IN PDMA_ADAPTER DmaAdapter, IN PDMA_ADAPTER DmaAdapter,
IN PMDL Mdl, IN PMDL Mdl,
IN PVOID MapRegisterBase, IN PVOID MapRegisterBase,
@ -1860,18 +1861,18 @@ typedef BOOLEAN DDKAPI
IN ULONG Length, IN ULONG Length,
IN BOOLEAN WriteToDevice); IN BOOLEAN WriteToDevice);
typedef VOID DDKAPI typedef VOID
(*PFREE_ADAPTER_CHANNEL)( (DDKAPI *PFREE_ADAPTER_CHANNEL)(
IN PDMA_ADAPTER DmaAdapter); IN PDMA_ADAPTER DmaAdapter);
typedef VOID DDKAPI typedef VOID
(*PFREE_MAP_REGISTERS)( (DDKAPI *PFREE_MAP_REGISTERS)(
IN PDMA_ADAPTER DmaAdapter, IN PDMA_ADAPTER DmaAdapter,
PVOID MapRegisterBase, PVOID MapRegisterBase,
ULONG NumberOfMapRegisters); ULONG NumberOfMapRegisters);
typedef PHYSICAL_ADDRESS DDKAPI typedef PHYSICAL_ADDRESS
(*PMAP_TRANSFER)( (DDKAPI *PMAP_TRANSFER)(
IN PDMA_ADAPTER DmaAdapter, IN PDMA_ADAPTER DmaAdapter,
IN PMDL Mdl, IN PMDL Mdl,
IN PVOID MapRegisterBase, IN PVOID MapRegisterBase,
@ -1879,16 +1880,16 @@ typedef PHYSICAL_ADDRESS DDKAPI
IN OUT PULONG Length, IN OUT PULONG Length,
IN BOOLEAN WriteToDevice); IN BOOLEAN WriteToDevice);
typedef ULONG DDKAPI typedef ULONG
(*PGET_DMA_ALIGNMENT)( (DDKAPI *PGET_DMA_ALIGNMENT)(
IN PDMA_ADAPTER DmaAdapter); IN PDMA_ADAPTER DmaAdapter);
typedef ULONG DDKAPI typedef ULONG
(*PREAD_DMA_COUNTER)( (DDKAPI *PREAD_DMA_COUNTER)(
IN PDMA_ADAPTER DmaAdapter); IN PDMA_ADAPTER DmaAdapter);
typedef NTSTATUS DDKAPI typedef NTSTATUS
(*PGET_SCATTER_GATHER_LIST)( (DDKAPI *PGET_SCATTER_GATHER_LIST)(
IN PDMA_ADAPTER DmaAdapter, IN PDMA_ADAPTER DmaAdapter,
IN PDEVICE_OBJECT DeviceObject, IN PDEVICE_OBJECT DeviceObject,
IN PMDL Mdl, IN PMDL Mdl,
@ -1898,14 +1899,14 @@ typedef NTSTATUS DDKAPI
IN PVOID Context, IN PVOID Context,
IN BOOLEAN WriteToDevice); IN BOOLEAN WriteToDevice);
typedef VOID DDKAPI typedef VOID
(*PPUT_SCATTER_GATHER_LIST)( (DDKAPI *PPUT_SCATTER_GATHER_LIST)(
IN PDMA_ADAPTER DmaAdapter, IN PDMA_ADAPTER DmaAdapter,
IN PSCATTER_GATHER_LIST ScatterGather, IN PSCATTER_GATHER_LIST ScatterGather,
IN BOOLEAN WriteToDevice); IN BOOLEAN WriteToDevice);
typedef NTSTATUS DDKAPI typedef NTSTATUS
(*PCALCULATE_SCATTER_GATHER_LIST_SIZE)( (DDKAPI *PCALCULATE_SCATTER_GATHER_LIST_SIZE)(
IN PDMA_ADAPTER DmaAdapter, IN PDMA_ADAPTER DmaAdapter,
IN PMDL Mdl OPTIONAL, IN PMDL Mdl OPTIONAL,
IN PVOID CurrentVa, IN PVOID CurrentVa,
@ -1913,8 +1914,8 @@ typedef NTSTATUS DDKAPI
OUT PULONG ScatterGatherListSize, OUT PULONG ScatterGatherListSize,
OUT PULONG pNumberOfMapRegisters OPTIONAL); OUT PULONG pNumberOfMapRegisters OPTIONAL);
typedef NTSTATUS DDKAPI typedef NTSTATUS
(*PBUILD_SCATTER_GATHER_LIST)( (DDKAPI *PBUILD_SCATTER_GATHER_LIST)(
IN PDMA_ADAPTER DmaAdapter, IN PDMA_ADAPTER DmaAdapter,
IN PDEVICE_OBJECT DeviceObject, IN PDEVICE_OBJECT DeviceObject,
IN PMDL Mdl, IN PMDL Mdl,
@ -1926,8 +1927,8 @@ typedef NTSTATUS DDKAPI
IN PVOID ScatterGatherBuffer, IN PVOID ScatterGatherBuffer,
IN ULONG ScatterGatherLength); IN ULONG ScatterGatherLength);
typedef NTSTATUS DDKAPI typedef NTSTATUS
(*PBUILD_MDL_FROM_SCATTER_GATHER_LIST)( (DDKAPI *PBUILD_MDL_FROM_SCATTER_GATHER_LIST)(
IN PDMA_ADAPTER DmaAdapter, IN PDMA_ADAPTER DmaAdapter,
IN PSCATTER_GATHER_LIST ScatterGather, IN PSCATTER_GATHER_LIST ScatterGather,
IN PMDL OriginalMdl, IN PMDL OriginalMdl,
@ -2275,8 +2276,8 @@ typedef struct _DRIVER_EXTENSION {
UNICODE_STRING ServiceKeyName; UNICODE_STRING ServiceKeyName;
} DRIVER_EXTENSION, *PDRIVER_EXTENSION; } DRIVER_EXTENSION, *PDRIVER_EXTENSION;
typedef BOOLEAN DDKAPI typedef BOOLEAN
(*PFAST_IO_CHECK_IF_POSSIBLE)( (DDKAPI *PFAST_IO_CHECK_IF_POSSIBLE)(
IN struct _FILE_OBJECT *FileObject, IN struct _FILE_OBJECT *FileObject,
IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER FileOffset,
IN ULONG Length, IN ULONG Length,
@ -2286,8 +2287,8 @@ typedef BOOLEAN DDKAPI
OUT PIO_STATUS_BLOCK IoStatus, OUT PIO_STATUS_BLOCK IoStatus,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
typedef BOOLEAN DDKAPI typedef BOOLEAN
(*PFAST_IO_READ)( (DDKAPI *PFAST_IO_READ)(
IN struct _FILE_OBJECT *FileObject, IN struct _FILE_OBJECT *FileObject,
IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER FileOffset,
IN ULONG Length, IN ULONG Length,
@ -2297,8 +2298,8 @@ typedef BOOLEAN DDKAPI
OUT PIO_STATUS_BLOCK IoStatus, OUT PIO_STATUS_BLOCK IoStatus,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
typedef BOOLEAN DDKAPI typedef BOOLEAN
(*PFAST_IO_WRITE)( (DDKAPI *PFAST_IO_WRITE)(
IN struct _FILE_OBJECT *FileObject, IN struct _FILE_OBJECT *FileObject,
IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER FileOffset,
IN ULONG Length, IN ULONG Length,
@ -2308,24 +2309,24 @@ typedef BOOLEAN DDKAPI
OUT PIO_STATUS_BLOCK IoStatus, OUT PIO_STATUS_BLOCK IoStatus,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
typedef BOOLEAN DDKAPI typedef BOOLEAN
(*PFAST_IO_QUERY_BASIC_INFO)( (DDKAPI *PFAST_IO_QUERY_BASIC_INFO)(
IN struct _FILE_OBJECT *FileObject, IN struct _FILE_OBJECT *FileObject,
IN BOOLEAN Wait, IN BOOLEAN Wait,
OUT PFILE_BASIC_INFORMATION Buffer, OUT PFILE_BASIC_INFORMATION Buffer,
OUT PIO_STATUS_BLOCK IoStatus, OUT PIO_STATUS_BLOCK IoStatus,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
typedef BOOLEAN DDKAPI typedef BOOLEAN
(*PFAST_IO_QUERY_STANDARD_INFO)( (DDKAPI *PFAST_IO_QUERY_STANDARD_INFO)(
IN struct _FILE_OBJECT *FileObject, IN struct _FILE_OBJECT *FileObject,
IN BOOLEAN Wait, IN BOOLEAN Wait,
OUT PFILE_STANDARD_INFORMATION Buffer, OUT PFILE_STANDARD_INFORMATION Buffer,
OUT PIO_STATUS_BLOCK IoStatus, OUT PIO_STATUS_BLOCK IoStatus,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
typedef BOOLEAN DDKAPI typedef BOOLEAN
(*PFAST_IO_LOCK)( (DDKAPI *PFAST_IO_LOCK)(
IN struct _FILE_OBJECT *FileObject, IN struct _FILE_OBJECT *FileObject,
IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER FileOffset,
IN PLARGE_INTEGER Length, IN PLARGE_INTEGER Length,
@ -2336,8 +2337,8 @@ typedef BOOLEAN DDKAPI
OUT PIO_STATUS_BLOCK IoStatus, OUT PIO_STATUS_BLOCK IoStatus,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
typedef BOOLEAN DDKAPI typedef BOOLEAN
(*PFAST_IO_UNLOCK_SINGLE)( (DDKAPI *PFAST_IO_UNLOCK_SINGLE)(
IN struct _FILE_OBJECT *FileObject, IN struct _FILE_OBJECT *FileObject,
IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER FileOffset,
IN PLARGE_INTEGER Length, IN PLARGE_INTEGER Length,
@ -2346,23 +2347,23 @@ typedef BOOLEAN DDKAPI
OUT PIO_STATUS_BLOCK IoStatus, OUT PIO_STATUS_BLOCK IoStatus,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
typedef BOOLEAN DDKAPI typedef BOOLEAN
(*PFAST_IO_UNLOCK_ALL)( (DDKAPI *PFAST_IO_UNLOCK_ALL)(
IN struct _FILE_OBJECT *FileObject, IN struct _FILE_OBJECT *FileObject,
PEPROCESS ProcessId, PEPROCESS ProcessId,
OUT PIO_STATUS_BLOCK IoStatus, OUT PIO_STATUS_BLOCK IoStatus,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
typedef BOOLEAN DDKAPI typedef BOOLEAN
(*PFAST_IO_UNLOCK_ALL_BY_KEY)( (DDKAPI *PFAST_IO_UNLOCK_ALL_BY_KEY)(
IN struct _FILE_OBJECT *FileObject, IN struct _FILE_OBJECT *FileObject,
PEPROCESS ProcessId, PEPROCESS ProcessId,
ULONG Key, ULONG Key,
OUT PIO_STATUS_BLOCK IoStatus, OUT PIO_STATUS_BLOCK IoStatus,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
typedef BOOLEAN DDKAPI typedef BOOLEAN
(*PFAST_IO_DEVICE_CONTROL)( (DDKAPI *PFAST_IO_DEVICE_CONTROL)(
IN struct _FILE_OBJECT *FileObject, IN struct _FILE_OBJECT *FileObject,
IN BOOLEAN Wait, IN BOOLEAN Wait,
IN PVOID InputBuffer OPTIONAL, IN PVOID InputBuffer OPTIONAL,
@ -2373,36 +2374,36 @@ typedef BOOLEAN DDKAPI
OUT PIO_STATUS_BLOCK IoStatus, OUT PIO_STATUS_BLOCK IoStatus,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
typedef VOID DDKAPI typedef VOID
(*PFAST_IO_ACQUIRE_FILE)( (DDKAPI *PFAST_IO_ACQUIRE_FILE)(
IN struct _FILE_OBJECT *FileObject); IN struct _FILE_OBJECT *FileObject);
typedef VOID DDKAPI typedef VOID
(*PFAST_IO_RELEASE_FILE)( (DDKAPI *PFAST_IO_RELEASE_FILE)(
IN struct _FILE_OBJECT *FileObject); IN struct _FILE_OBJECT *FileObject);
typedef VOID DDKAPI typedef VOID
(*PFAST_IO_DETACH_DEVICE)( (DDKAPI *PFAST_IO_DETACH_DEVICE)(
IN struct _DEVICE_OBJECT *SourceDevice, IN struct _DEVICE_OBJECT *SourceDevice,
IN struct _DEVICE_OBJECT *TargetDevice); IN struct _DEVICE_OBJECT *TargetDevice);
typedef BOOLEAN DDKAPI typedef BOOLEAN
(*PFAST_IO_QUERY_NETWORK_OPEN_INFO)( (DDKAPI *PFAST_IO_QUERY_NETWORK_OPEN_INFO)(
IN struct _FILE_OBJECT *FileObject, IN struct _FILE_OBJECT *FileObject,
IN BOOLEAN Wait, IN BOOLEAN Wait,
OUT struct _FILE_NETWORK_OPEN_INFORMATION *Buffer, OUT struct _FILE_NETWORK_OPEN_INFORMATION *Buffer,
OUT struct _IO_STATUS_BLOCK *IoStatus, OUT struct _IO_STATUS_BLOCK *IoStatus,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
typedef NTSTATUS DDKAPI typedef NTSTATUS
(*PFAST_IO_ACQUIRE_FOR_MOD_WRITE)( (DDKAPI *PFAST_IO_ACQUIRE_FOR_MOD_WRITE)(
IN struct _FILE_OBJECT *FileObject, IN struct _FILE_OBJECT *FileObject,
IN PLARGE_INTEGER EndingOffset, IN PLARGE_INTEGER EndingOffset,
OUT struct _ERESOURCE **ResourceToRelease, OUT struct _ERESOURCE **ResourceToRelease,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
typedef BOOLEAN DDKAPI typedef BOOLEAN
(*PFAST_IO_MDL_READ)( (DDKAPI *PFAST_IO_MDL_READ)(
IN struct _FILE_OBJECT *FileObject, IN struct _FILE_OBJECT *FileObject,
IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER FileOffset,
IN ULONG Length, IN ULONG Length,
@ -2411,14 +2412,14 @@ typedef BOOLEAN DDKAPI
OUT PIO_STATUS_BLOCK IoStatus, OUT PIO_STATUS_BLOCK IoStatus,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
typedef BOOLEAN DDKAPI typedef BOOLEAN
(*PFAST_IO_MDL_READ_COMPLETE)( (DDKAPI *PFAST_IO_MDL_READ_COMPLETE)(
IN struct _FILE_OBJECT *FileObject, IN struct _FILE_OBJECT *FileObject,
IN PMDL MdlChain, IN PMDL MdlChain,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
typedef BOOLEAN DDKAPI typedef BOOLEAN
(*PFAST_IO_PREPARE_MDL_WRITE)( (DDKAPI *PFAST_IO_PREPARE_MDL_WRITE)(
IN struct _FILE_OBJECT *FileObject, IN struct _FILE_OBJECT *FileObject,
IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER FileOffset,
IN ULONG Length, IN ULONG Length,
@ -2427,15 +2428,15 @@ typedef BOOLEAN DDKAPI
OUT PIO_STATUS_BLOCK IoStatus, OUT PIO_STATUS_BLOCK IoStatus,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
typedef BOOLEAN DDKAPI typedef BOOLEAN
(*PFAST_IO_MDL_WRITE_COMPLETE)( (DDKAPI *PFAST_IO_MDL_WRITE_COMPLETE)(
IN struct _FILE_OBJECT *FileObject, IN struct _FILE_OBJECT *FileObject,
IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER FileOffset,
IN PMDL MdlChain, IN PMDL MdlChain,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
typedef BOOLEAN DDKAPI typedef BOOLEAN
(*PFAST_IO_READ_COMPRESSED)( (DDKAPI *PFAST_IO_READ_COMPRESSED)(
IN struct _FILE_OBJECT *FileObject, IN struct _FILE_OBJECT *FileObject,
IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER FileOffset,
IN ULONG Length, IN ULONG Length,
@ -2447,8 +2448,8 @@ typedef BOOLEAN DDKAPI
IN ULONG CompressedDataInfoLength, IN ULONG CompressedDataInfoLength,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
typedef BOOLEAN DDKAPI typedef BOOLEAN
(*PFAST_IO_WRITE_COMPRESSED)( (DDKAPI *PFAST_IO_WRITE_COMPRESSED)(
IN struct _FILE_OBJECT *FileObject, IN struct _FILE_OBJECT *FileObject,
IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER FileOffset,
IN ULONG Length, IN ULONG Length,
@ -2460,38 +2461,38 @@ typedef BOOLEAN DDKAPI
IN ULONG CompressedDataInfoLength, IN ULONG CompressedDataInfoLength,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
typedef BOOLEAN DDKAPI typedef BOOLEAN
(*PFAST_IO_MDL_READ_COMPLETE_COMPRESSED)( (DDKAPI *PFAST_IO_MDL_READ_COMPLETE_COMPRESSED)(
IN struct _FILE_OBJECT *FileObject, IN struct _FILE_OBJECT *FileObject,
IN PMDL MdlChain, IN PMDL MdlChain,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
typedef BOOLEAN DDKAPI typedef BOOLEAN
(*PFAST_IO_MDL_WRITE_COMPLETE_COMPRESSED)( (DDKAPI *PFAST_IO_MDL_WRITE_COMPLETE_COMPRESSED)(
IN struct _FILE_OBJECT *FileObject, IN struct _FILE_OBJECT *FileObject,
IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER FileOffset,
IN PMDL MdlChain, IN PMDL MdlChain,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
typedef BOOLEAN DDKAPI typedef BOOLEAN
(*PFAST_IO_QUERY_OPEN)( (DDKAPI *PFAST_IO_QUERY_OPEN)(
IN struct _IRP *Irp, IN struct _IRP *Irp,
OUT PFILE_NETWORK_OPEN_INFORMATION NetworkInformation, OUT PFILE_NETWORK_OPEN_INFORMATION NetworkInformation,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
typedef NTSTATUS DDKAPI typedef NTSTATUS
(*PFAST_IO_RELEASE_FOR_MOD_WRITE)( (DDKAPI *PFAST_IO_RELEASE_FOR_MOD_WRITE)(
IN struct _FILE_OBJECT *FileObject, IN struct _FILE_OBJECT *FileObject,
IN struct _ERESOURCE *ResourceToRelease, IN struct _ERESOURCE *ResourceToRelease,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
typedef NTSTATUS DDKAPI typedef NTSTATUS
(*PFAST_IO_ACQUIRE_FOR_CCFLUSH)( (DDKAPI *PFAST_IO_ACQUIRE_FOR_CCFLUSH)(
IN struct _FILE_OBJECT *FileObject, IN struct _FILE_OBJECT *FileObject,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
typedef NTSTATUS DDKAPI typedef NTSTATUS
(*PFAST_IO_RELEASE_FOR_CCFLUSH) ( (DDKAPI *PFAST_IO_RELEASE_FOR_CCFLUSH) (
IN struct _FILE_OBJECT *FileObject, IN struct _FILE_OBJECT *FileObject,
IN struct _DEVICE_OBJECT *DeviceObject); IN struct _DEVICE_OBJECT *DeviceObject);
@ -2677,34 +2678,34 @@ typedef struct _IO_CSQ_IRP_CONTEXT {
struct _IO_CSQ *Csq; struct _IO_CSQ *Csq;
} IO_CSQ_IRP_CONTEXT, *PIO_CSQ_IRP_CONTEXT; } IO_CSQ_IRP_CONTEXT, *PIO_CSQ_IRP_CONTEXT;
typedef VOID DDKAPI typedef VOID
(*PIO_CSQ_INSERT_IRP)( (DDKAPI *PIO_CSQ_INSERT_IRP)(
IN struct _IO_CSQ *Csq, IN struct _IO_CSQ *Csq,
IN PIRP Irp); IN PIRP Irp);
typedef VOID DDKAPI typedef VOID
(*PIO_CSQ_REMOVE_IRP)( (DDKAPI *PIO_CSQ_REMOVE_IRP)(
IN struct _IO_CSQ *Csq, IN struct _IO_CSQ *Csq,
IN PIRP Irp); IN PIRP Irp);
typedef PIRP DDKAPI typedef PIRP
(*PIO_CSQ_PEEK_NEXT_IRP)( (DDKAPI *PIO_CSQ_PEEK_NEXT_IRP)(
IN struct _IO_CSQ *Csq, IN struct _IO_CSQ *Csq,
IN PIRP Irp, IN PIRP Irp,
IN PVOID PeekContext); IN PVOID PeekContext);
typedef VOID DDKAPI typedef VOID
(*PIO_CSQ_ACQUIRE_LOCK)( (DDKAPI *PIO_CSQ_ACQUIRE_LOCK)(
IN struct _IO_CSQ *Csq, IN struct _IO_CSQ *Csq,
OUT PKIRQL Irql); OUT PKIRQL Irql);
typedef VOID DDKAPI typedef VOID
(*PIO_CSQ_RELEASE_LOCK)( (DDKAPI *PIO_CSQ_RELEASE_LOCK)(
IN struct _IO_CSQ *Csq, IN struct _IO_CSQ *Csq,
IN KIRQL Irql); IN KIRQL Irql);
typedef VOID DDKAPI typedef VOID
(*PIO_CSQ_COMPLETE_CANCELED_IRP)( (DDKAPI *PIO_CSQ_COMPLETE_CANCELED_IRP)(
IN struct _IO_CSQ *Csq, IN struct _IO_CSQ *Csq,
IN PIRP Irp); IN PIRP Irp);
@ -3356,8 +3357,8 @@ typedef struct _RTL_BITMAP_RUN {
ULONG NumberOfBits; ULONG NumberOfBits;
} RTL_BITMAP_RUN, *PRTL_BITMAP_RUN; } RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;
typedef NTSTATUS DDKAPI typedef NTSTATUS
(*PRTL_QUERY_REGISTRY_ROUTINE)( (DDKAPI *PRTL_QUERY_REGISTRY_ROUTINE)(
IN PWSTR ValueName, IN PWSTR ValueName,
IN ULONG ValueType, IN ULONG ValueType,
IN PVOID ValueData, IN PVOID ValueData,
@ -3404,14 +3405,14 @@ typedef struct _TIME_FIELDS {
CSHORT Weekday; CSHORT Weekday;
} TIME_FIELDS, *PTIME_FIELDS; } TIME_FIELDS, *PTIME_FIELDS;
typedef PVOID DDKAPI typedef PVOID
(*PALLOCATE_FUNCTION)( (DDKAPI *PALLOCATE_FUNCTION)(
IN POOL_TYPE PoolType, IN POOL_TYPE PoolType,
IN SIZE_T NumberOfBytes, IN SIZE_T NumberOfBytes,
IN ULONG Tag); IN ULONG Tag);
typedef VOID DDKAPI typedef VOID
(*PFREE_FUNCTION)( (DDKAPI *PFREE_FUNCTION)(
IN PVOID Buffer); IN PVOID Buffer);
#define GENERAL_LOOKASIDE_S \ #define GENERAL_LOOKASIDE_S \
@ -3462,7 +3463,8 @@ typedef struct _PP_LOOKASIDE_LIST {
typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT; typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT;
typedef VOID DDKAPI (*PCALLBACK_FUNCTION)( typedef VOID
(DDKAPI *PCALLBACK_FUNCTION)(
IN PVOID CallbackContext, IN PVOID CallbackContext,
IN PVOID Argument1, IN PVOID Argument1,
IN PVOID Argument2); IN PVOID Argument2);
@ -3495,11 +3497,18 @@ typedef enum _KWAIT_REASON {
WrPageOut, WrPageOut,
WrRendezvous, WrRendezvous,
Spare2, Spare2,
Spare3, WrGuardedMutex,
Spare4, Spare4,
Spare5, Spare5,
Spare6, Spare6,
WrKernel, WrKernel,
WrResource,
WrPushLock,
WrMutex,
WrQuantumEnd,
WrDispatchInt,
WrPreempted,
WrYieldExecution,
MaximumWaitReason MaximumWaitReason
} KWAIT_REASON; } KWAIT_REASON;
@ -3543,8 +3552,8 @@ typedef struct _IO_REMOVE_LOCK {
typedef struct _IO_WORKITEM *PIO_WORKITEM; typedef struct _IO_WORKITEM *PIO_WORKITEM;
typedef VOID DDKAPI typedef VOID
(*PIO_WORKITEM_ROUTINE)( (DDKAPI *PIO_WORKITEM_ROUTINE)(
IN PDEVICE_OBJECT DeviceObject, IN PDEVICE_OBJECT DeviceObject,
IN PVOID Context); IN PVOID Context);
@ -3563,8 +3572,8 @@ typedef enum _KINTERRUPT_MODE {
Latched Latched
} KINTERRUPT_MODE; } KINTERRUPT_MODE;
typedef VOID DDKAPI typedef VOID
(*PKINTERRUPT_ROUTINE)( (DDKAPI *PKINTERRUPT_ROUTINE)(
VOID); VOID);
typedef enum _KPROFILE_SOURCE { typedef enum _KPROFILE_SOURCE {
@ -3659,7 +3668,8 @@ typedef enum _CONFIGURATION_TYPE {
MaximumType MaximumType
} CONFIGURATION_TYPE, *PCONFIGURATION_TYPE; } CONFIGURATION_TYPE, *PCONFIGURATION_TYPE;
typedef NTSTATUS (*PIO_QUERY_DEVICE_ROUTINE)( typedef NTSTATUS
(DDKAPI *PIO_QUERY_DEVICE_ROUTINE)(
IN PVOID Context, IN PVOID Context,
IN PUNICODE_STRING PathName, IN PUNICODE_STRING PathName,
IN INTERFACE_TYPE BusType, IN INTERFACE_TYPE BusType,
@ -3679,8 +3689,8 @@ typedef enum _WORK_QUEUE_TYPE {
MaximumWorkQueue MaximumWorkQueue
} WORK_QUEUE_TYPE; } WORK_QUEUE_TYPE;
typedef VOID DDKAPI typedef VOID
(*PWORKER_THREAD_ROUTINE)( (DDKAPI *PWORKER_THREAD_ROUTINE)(
IN PVOID Parameter); IN PVOID Parameter);
typedef struct _WORK_QUEUE_ITEM { typedef struct _WORK_QUEUE_ITEM {
@ -3697,8 +3707,8 @@ typedef enum _KBUGCHECK_BUFFER_DUMP_STATE {
BufferIncomplete BufferIncomplete
} KBUGCHECK_BUFFER_DUMP_STATE; } KBUGCHECK_BUFFER_DUMP_STATE;
typedef VOID DDKAPI typedef VOID
(*PKBUGCHECK_CALLBACK_ROUTINE)( (DDKAPI *PKBUGCHECK_CALLBACK_ROUTINE)(
IN PVOID Buffer, IN PVOID Buffer,
IN ULONG Length); IN ULONG Length);
@ -3768,18 +3778,18 @@ typedef struct _CLIENT_ID {
HANDLE UniqueThread; HANDLE UniqueThread;
} CLIENT_ID, *PCLIENT_ID; } CLIENT_ID, *PCLIENT_ID;
typedef VOID DDKAPI typedef VOID
(*PKSTART_ROUTINE)( (DDKAPI *PKSTART_ROUTINE)(
IN PVOID StartContext); IN PVOID StartContext);
typedef VOID DDKAPI typedef VOID
(*PCREATE_PROCESS_NOTIFY_ROUTINE)( (DDKAPI *PCREATE_PROCESS_NOTIFY_ROUTINE)(
IN HANDLE ParentId, IN HANDLE ParentId,
IN HANDLE ProcessId, IN HANDLE ProcessId,
IN BOOLEAN Create); IN BOOLEAN Create);
typedef VOID DDKAPI typedef VOID
(*PCREATE_THREAD_NOTIFY_ROUTINE)( (DDKAPI *PCREATE_THREAD_NOTIFY_ROUTINE)(
IN HANDLE ProcessId, IN HANDLE ProcessId,
IN HANDLE ThreadId, IN HANDLE ThreadId,
IN BOOLEAN Create); IN BOOLEAN Create);
@ -3802,8 +3812,8 @@ typedef struct _IMAGE_INFO {
#define IMAGE_ADDRESSING_MODE_32BIT 3 #define IMAGE_ADDRESSING_MODE_32BIT 3
typedef VOID DDKAPI typedef VOID
(*PLOAD_IMAGE_NOTIFY_ROUTINE)( (DDKAPI *PLOAD_IMAGE_NOTIFY_ROUTINE)(
IN PUNICODE_STRING FullImageName, IN PUNICODE_STRING FullImageName,
IN HANDLE ProcessId, IN HANDLE ProcessId,
IN PIMAGE_INFO ImageInfo); IN PIMAGE_INFO ImageInfo);
@ -3879,8 +3889,8 @@ typedef enum _THREADINFOCLASS {
typedef ULONG EXECUTION_STATE; typedef ULONG EXECUTION_STATE;
typedef VOID DDKAPI typedef VOID
(*PREQUEST_POWER_COMPLETE)( (DDKAPI *PREQUEST_POWER_COMPLETE)(
IN PDEVICE_OBJECT DeviceObject, IN PDEVICE_OBJECT DeviceObject,
IN UCHAR MinorFunction, IN UCHAR MinorFunction,
IN POWER_STATE PowerState, IN POWER_STATE PowerState,
@ -3898,8 +3908,8 @@ typedef enum _TRACE_INFORMATION_CLASS {
TraceHandleByNameClass TraceHandleByNameClass
} TRACE_INFORMATION_CLASS; } TRACE_INFORMATION_CLASS;
typedef NTSTATUS DDKAPI typedef NTSTATUS
(*PEX_CALLBACK_FUNCTION)( (DDKAPI *PEX_CALLBACK_FUNCTION)(
IN PVOID CallbackContext, IN PVOID CallbackContext,
IN PVOID Argument1, IN PVOID Argument1,
IN PVOID Argument2); IN PVOID Argument2);
@ -4035,8 +4045,8 @@ typedef enum _SUITE_TYPE {
MaxSuiteType MaxSuiteType
} SUITE_TYPE; } SUITE_TYPE;
typedef VOID DDKAPI typedef VOID
(*PTIMER_APC_ROUTINE)( (DDKAPI *PTIMER_APC_ROUTINE)(
IN PVOID TimerContext, IN PVOID TimerContext,
IN ULONG TimerLowValue, IN ULONG TimerLowValue,
IN LONG TimerHighValue); IN LONG TimerHighValue);
@ -4047,8 +4057,8 @@ typedef VOID DDKAPI
** WMI structures ** WMI structures
*/ */
typedef VOID DDKAPI typedef VOID
(*WMI_NOTIFICATION_CALLBACK)( (DDKAPI *WMI_NOTIFICATION_CALLBACK)(
PVOID Wnode, PVOID Wnode,
PVOID Context); PVOID Context);
@ -4092,7 +4102,7 @@ typedef struct _KPCR_TIB {
typedef struct _KPCR { typedef struct _KPCR {
KPCR_TIB Tib; /* 00 */ KPCR_TIB Tib; /* 00 */
struct _KPCR *Self; /* 1C */ struct _KPCR *Self; /* 1C */
struct _KPRCB *PCRCB; /* 20 */ struct _KPRCB *Prcb; /* 20 */
KIRQL Irql; /* 24 */ KIRQL Irql; /* 24 */
ULONG IRR; /* 28 */ ULONG IRR; /* 28 */
ULONG IrrActive; /* 2C */ ULONG IrrActive; /* 2C */
@ -4162,7 +4172,7 @@ KeGetCurrentIrql(
* VOID) * VOID)
*/ */
#define KeGetCurrentProcessorNumber() \ #define KeGetCurrentProcessorNumber() \
((ULONG)KeGetCurrentKPCR()->ProcessorNumber) ((ULONG)KeGetCurrentKPCR()->Number)
#if !defined(__INTERLOCKED_DECLARED) #if !defined(__INTERLOCKED_DECLARED)
#define __INTERLOCKED_DECLARED #define __INTERLOCKED_DECLARED
@ -7496,7 +7506,7 @@ NTOSAPI
VOID VOID
DDKAPI DDKAPI
KeAttachProcess( KeAttachProcess(
IN PEPROCESS Process); IN PKPROCESS Process);
NTOSAPI NTOSAPI
VOID VOID
@ -7579,19 +7589,6 @@ DDKAPI
KeGetRecommendedSharedDataAlignment( KeGetRecommendedSharedDataAlignment(
VOID); VOID);
NTOSAPI
VOID
DDKAPI
KeInitializeApc(
IN PKAPC Apc,
IN PKTHREAD Thread,
IN UCHAR StateIndex,
IN PKKERNEL_ROUTINE KernelRoutine,
IN PKRUNDOWN_ROUTINE RundownRoutine,
IN PKNORMAL_ROUTINE NormalRoutine,
IN UCHAR Mode,
IN PVOID Context);
NTOSAPI NTOSAPI
VOID VOID
DDKAPI DDKAPI
@ -8475,51 +8472,62 @@ typedef enum _OB_OPEN_REASON
/* TEMPORARY HACK */ /* TEMPORARY HACK */
typedef NTSTATUS typedef NTSTATUS
(DDKAPI *OB_CREATE_METHOD)(PVOID ObjectBody, (DDKAPI *OB_CREATE_METHOD)(
PVOID ObjectBody,
PVOID Parent, PVOID Parent,
PWSTR RemainingPath, PWSTR RemainingPath,
struct _OBJECT_ATTRIBUTES* ObjectAttributes); struct _OBJECT_ATTRIBUTES* ObjectAttributes);
/* Object Callbacks */ /* Object Callbacks */
typedef NTSTATUS typedef NTSTATUS
(DDKAPI *OB_OPEN_METHOD)(OB_OPEN_REASON Reason, (DDKAPI *OB_OPEN_METHOD)(
OB_OPEN_REASON Reason,
PVOID ObjectBody, PVOID ObjectBody,
PEPROCESS Process, PEPROCESS Process,
ULONG HandleCount, ULONG HandleCount,
ACCESS_MASK GrantedAccess); ACCESS_MASK GrantedAccess);
typedef NTSTATUS typedef NTSTATUS
(DDKAPI *OB_PARSE_METHOD)(PVOID Object, (DDKAPI *OB_PARSE_METHOD)(
PVOID Object,
PVOID *NextObject, PVOID *NextObject,
PUNICODE_STRING FullPath, PUNICODE_STRING FullPath,
PWSTR *Path, PWSTR *Path,
ULONG Attributes); ULONG Attributes);
typedef VOID typedef VOID
(DDKAPI *OB_DELETE_METHOD)(PVOID DeletedObject); (DDKAPI *OB_DELETE_METHOD)(
PVOID DeletedObject);
typedef VOID typedef VOID
(DDKAPI *OB_CLOSE_METHOD)(PVOID ClosedObject, ULONG HandleCount); (DDKAPI *OB_CLOSE_METHOD)(
PVOID ClosedObject,
ULONG HandleCount);
typedef VOID typedef VOID
(DDKAPI *OB_DUMP_METHOD)(VOID); (DDKAPI *OB_DUMP_METHOD)(
VOID);
typedef NTSTATUS typedef NTSTATUS
(DDKAPI *OB_OKAYTOCLOSE_METHOD)(VOID); (DDKAPI *OB_OKAYTOCLOSE_METHOD)(
VOID);
typedef NTSTATUS typedef NTSTATUS
(DDKAPI *OB_QUERYNAME_METHOD)(PVOID ObjectBody, (DDKAPI *OB_QUERYNAME_METHOD)(
PVOID ObjectBody,
POBJECT_NAME_INFORMATION ObjectNameInfo, POBJECT_NAME_INFORMATION ObjectNameInfo,
ULONG Length, ULONG Length,
PULONG ReturnLength); PULONG ReturnLength);
typedef PVOID typedef PVOID
(DDKAPI *OB_FIND_METHOD)(PVOID WinStaObject, (DDKAPI *OB_FIND_METHOD)(
PVOID WinStaObject,
PWSTR Name, PWSTR Name,
ULONG Attributes); ULONG Attributes);
typedef NTSTATUS typedef NTSTATUS
(DDKAPI *OB_SECURITY_METHOD)(PVOID ObjectBody, (DDKAPI *OB_SECURITY_METHOD)(
PVOID ObjectBody,
SECURITY_OPERATION_CODE OperationCode, SECURITY_OPERATION_CODE OperationCode,
SECURITY_INFORMATION SecurityInformation, SECURITY_INFORMATION SecurityInformation,
PSECURITY_DESCRIPTOR SecurityDescriptor, PSECURITY_DESCRIPTOR SecurityDescriptor,