52 "Process: %p Thread: %p Message: %p Flags: %lx\n",
76 DebugObject = TargetObject;
88 DebugObject =
Process->DebugPort;
287 if (!
Parent->DebugPort)
return;
293 DebugObject =
Parent->DebugPort;
294 if ((DebugObject) && !(
Process->NoDebugInherit))
304 Process->DebugPort = DebugObject;
329 "ExceptionRecord: %p Port: %u\n", ExceptionRecord, DebugPort);
332 ApiMessage.
h.u1.Length =
sizeof(
DBGKM_MSG) << 16 |
334 ApiMessage.
h.u2.ZeroInit = 0;
349 ApiMessage.
h.u2.ZeroInit = 0;
490 NextEntry = ListHead->
Flink;
494 while ((NextEntry != ListHead) && (
i < 500))
501 NextEntry = NextEntry->
Flink;
526 PointerToSymbolTable;
578 NextEntry = NextEntry->
Flink;
617 IsFirstThread =
FALSE;
628 IsFirstThread =
TRUE;
638 pLastThread = ThisThread;
646 if (!ThisThread->SystemThread)
666 if ((IsFirstThread) &&
668 !(ThisThread->SystemThread) &&
669 (ThisThread->GrantedAccess))
708 PointerToSymbolTable;
722 ThisThread,
First, OldThread);
724 ThisThread->StartAddress);
761 IsFirstThread =
FALSE;
765 pFirstThread = ThisThread;
770 OldThread = pLastThread;
771 }
while (ThisThread);
786 *FirstThread = pFirstThread;
828 ReturnThread = FinalThread;
851 WaitStateChange->AppClientId =
DebugEvent->ClientId;
863 WaitStateChange->StateInfo.CreateProcessInfo.NewProcess =
877 WaitStateChange->StateInfo.CreateThread.NewThread.StartAddress =
879 WaitStateChange->StateInfo.CreateThread.NewThread.SubSystemKey =
906 WaitStateChange->StateInfo.Exception.ExceptionRecord =
909 WaitStateChange->StateInfo.Exception.FirstChance =
918 WaitStateChange->StateInfo.ExitProcess.ExitStatus =
927 WaitStateChange->StateInfo.ExitThread.ExitStatus =
938 WaitStateChange->StateInfo.LoadDll =
DebugEvent->ApiMsg.LoadDll;
949 WaitStateChange->StateInfo.UnloadDll.BaseAddress =
1008 switch (WaitStateChange->NewState)
1025 StateInfo.CreateThread.HandleToThread =
Handle;
1044 StateInfo.CreateProcessInfo.HandleToThread =
Handle;
1059 StateInfo.CreateProcessInfo.HandleToProcess =
Handle;
1063 DupHandle = &WaitStateChange->
1064 StateInfo.CreateProcessInfo.NewProcess.FileHandle;
1071 DupHandle = &WaitStateChange->StateInfo.LoadDll.FileHandle;
1124 OwnerProcess, DebugObject);
1127 if (SystemHandleCount > 1)
return;
1149 if (
Process->DebugPort == DebugObject)
1155 if (
Process->DebugPort == DebugObject)
1159 DebugPortCleared =
TRUE;
1166 if (DebugPortCleared)
1185 while (DebugEventList != &DebugObject->
EventList)
1191 DebugEventList = DebugEventList->
Flink;
1250 Process->DebugPort = DebugObject;
1293 if (DebugObject->DebuggerInactive)
1312 NextEntry = DebugObject->EventList.
Flink;
1313 while (NextEntry != &DebugObject->EventList)
1317 NextEntry = NextEntry->
Flink;
1329 EventThread, MsgStatus);
1333 (EventThread->GrantedAccess) &&
1425 DebugObject =
Process->DebugPort;
1432 if ((DebugObject) &&
1433 ((DebugObject == SourceDebugObject) ||
1434 (SourceDebugObject ==
NULL)))
1458 while (NextEntry != &DebugObject->
EventList)
1462 NextEntry = NextEntry->
Flink;
1508 RtlZeroMemory(&ObjectTypeInitializer,
sizeof(ObjectTypeInitializer));
1510 ObjectTypeInitializer.
Length =
sizeof(ObjectTypeInitializer);
1519 &ObjectTypeInitializer,
1541 DebugObject =
Process->DebugPort;
1610 (
PVOID*)&DebugObject);
1625 DebugObject->
Flags = 0;
1644 *DebugHandle = hDebug;
1656 hDebug, DebugObject);
1678 DebugHandle, ContinueStatus);
1715 (
PVOID*)&DebugObject,
1723 ListHead = &DebugObject->EventList;
1724 NextEntry = ListHead->
Flink;
1725 while (ListHead != NextEntry)
1734 AppClientId->UniqueProcess)
1761 NextEntry = NextEntry->
Flink;
1774 DebugEventToWake->ApiMsg.ReturnedStatus = ContinueStatus;
1832 (
PVOID*)&DebugObject,
1898 (
PVOID*)&DebugObject,
1924 IN ULONG DebugInformationLength,
1939 DebugInformationLength,
1966 (
PVOID*)&DebugObject,
2066 (
PVOID*)&DebugObject,
2105 NextEntry = ListHead->
Flink;
2106 while (ListHead != NextEntry)
2123 while (NextEntry2 != NextEntry)
2131 if (DebugEvent2->ClientId.UniqueProcess ==
2142 NextEntry2 = NextEntry2->
Flink;
2146 if (GotEvent)
break;
2150 NextEntry = NextEntry->
Flink;
2222 *StateChange = WaitStateChange;
static NTSTATUS StartThread(PTHREAD_DATA ThreadData, PLARGE_INTEGER Timeout, KIRQL Irql, BOOLEAN Try, BOOLEAN RetExpected)
ACPI_BUFFER *RetBuffer ACPI_BUFFER *RetBuffer char ACPI_WALK_RESOURCE_CALLBACK void *Context ACPI_BUFFER *RetBuffer UINT16 ACPI_RESOURCE **ResourcePtr ACPI_GENERIC_ADDRESS *Reg UINT32 *ReturnValue UINT8 UINT8 *Slp_TypB ACPI_PHYSICAL_ADDRESS PhysicalAddress64 UINT32 UINT32 *TimeElapsed UINT32 ACPI_STATUS const char UINT32 ACPI_STATUS const char UINT32 const char const char * ModuleName
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE Parent
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define DBGK_OBJECT_DEBUG
#define DBGK_PROCESS_DEBUG
#define DBGK_EXCEPTION_DEBUG
#define DBGK_MESSAGE_DEBUG
#define DBGKTRACE(x, fmt,...)
#define DBGK_THREAD_DEBUG
NTSTATUS NTAPI DbgkpSendApiMessageLpc(IN OUT PDBGKM_MSG Message, IN PVOID Port, IN BOOLEAN SuspendProcess)
NTSTATUS NTAPI NtSetInformationDebugObject(IN HANDLE DebugHandle, IN DEBUGOBJECTINFOCLASS DebugObjectInformationClass, IN PVOID DebugInformation, IN ULONG DebugInformationLength, OUT PULONG ReturnLength OPTIONAL)
VOID NTAPI DbgkCopyProcessDebugPort(IN PEPROCESS Process, IN PEPROCESS Parent)
VOID NTAPI DbgkpConvertKernelToUserStateChange(IN PDBGUI_WAIT_STATE_CHANGE WaitStateChange, IN PDEBUG_EVENT DebugEvent)
NTSTATUS NTAPI NtDebugContinue(IN HANDLE DebugHandle, IN PCLIENT_ID AppClientId, IN NTSTATUS ContinueStatus)
VOID NTAPI DbgkpFreeDebugEvent(IN PDEBUG_EVENT DebugEvent)
NTSTATUS NTAPI DbgkpSetProcessDebugObject(IN PEPROCESS Process, IN PDEBUG_OBJECT DebugObject, IN NTSTATUS MsgStatus, IN PETHREAD LastThread)
VOID NTAPI DbgkpDeleteObject(IN PVOID DebugObject)
VOID NTAPI DbgkpMarkProcessPeb(IN PEPROCESS Process)
NTSTATUS NTAPI DbgkpQueueMessage(IN PEPROCESS Process, IN PETHREAD Thread, IN PDBGKM_MSG Message, IN ULONG Flags, IN PDEBUG_OBJECT TargetObject OPTIONAL)
NTSTATUS NTAPI DbgkClearProcessDebugObject(IN PEPROCESS Process, IN PDEBUG_OBJECT SourceDebugObject OPTIONAL)
NTSTATUS NTAPI DbgkOpenProcessDebugPort(IN PEPROCESS Process, IN KPROCESSOR_MODE PreviousMode, OUT HANDLE *DebugHandle)
NTSTATUS NTAPI NtRemoveProcessDebug(IN HANDLE ProcessHandle, IN HANDLE DebugHandle)
NTSTATUS NTAPI DbgkpPostFakeProcessCreateMessages(IN PEPROCESS Process, IN PDEBUG_OBJECT DebugObject, OUT PETHREAD *LastThread)
NTSTATUS NTAPI DbgkpPostFakeModuleMessages(IN PEPROCESS Process, IN PETHREAD Thread, IN PDEBUG_OBJECT DebugObject)
NTSTATUS NTAPI DbgkpPostFakeThreadMessages(IN PEPROCESS Process, IN PDEBUG_OBJECT DebugObject, IN PETHREAD StartThread, OUT PETHREAD *FirstThread, OUT PETHREAD *LastThread)
NTSTATUS NTAPI NtCreateDebugObject(OUT PHANDLE DebugHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN ULONG Flags)
BOOLEAN NTAPI DbgkForwardException(IN PEXCEPTION_RECORD ExceptionRecord, IN BOOLEAN DebugPort, IN BOOLEAN SecondChance)
FAST_MUTEX DbgkpProcessDebugPortMutex
NTSTATUS NTAPI NtDebugActiveProcess(IN HANDLE ProcessHandle, IN HANDLE DebugHandle)
POBJECT_TYPE DbgkDebugObjectType
static const INFORMATION_CLASS_INFO DbgkpDebugObjectInfoClass[]
VOID NTAPI DbgkpCloseObject(IN PEPROCESS OwnerProcess OPTIONAL, IN PVOID ObjectBody, IN ACCESS_MASK GrantedAccess, IN ULONG HandleCount, IN ULONG SystemHandleCount)
VOID NTAPI DbgkpWakeTarget(IN PDEBUG_EVENT DebugEvent)
NTSTATUS NTAPI NtWaitForDebugEvent(IN HANDLE DebugHandle, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL, OUT PDBGUI_WAIT_STATE_CHANGE StateChange)
VOID NTAPI DbgkpOpenHandles(IN PDBGUI_WAIT_STATE_CHANGE WaitStateChange, IN PEPROCESS Process, IN PETHREAD Thread)
GENERIC_MAPPING DbgkDebugObjectMapping
NTSTATUS NTAPI DbgkpSendApiMessage(IN OUT PDBGKM_MSG ApiMsg, IN BOOLEAN SuspendProcess)
VOID NTAPI DbgkInitialize(VOID)
#define DEBUG_OBJECT_ALL_ACCESS
#define DEBUG_OBJECT_WAIT_STATE_CHANGE
#define DEBUG_EVENT_NOWAIT
enum _DEBUGOBJECTINFOCLASS DEBUGOBJECTINFOCLASS
#define DEBUG_EVENT_PROTECT_FAILED
#define DEBUG_EVENT_SUSPEND
#define DEBUG_EVENT_INACTIVE
struct _DEBUG_OBJECT DEBUG_OBJECT
#define DBGK_KILL_PROCESS_ON_EXIT
#define DEBUG_EVENT_RELEASE
#define DEBUG_OBJECT_ADD_REMOVE_PROCESS
struct _DBGKM_MSG DBGKM_MSG
@ DbgBreakpointStateChange
@ DbgCreateProcessStateChange
@ DbgCreateThreadStateChange
@ DbgExitProcessStateChange
@ DbgExceptionStateChange
@ DbgUnloadDllStateChange
@ DbgExitThreadStateChange
@ DbgSingleStepStateChange
HANDLE NTAPI DbgkpSectionToFileHandle(IN PVOID Section)
VOID NTAPI DbgkpResumeProcess(VOID)
BOOLEAN NTAPI DbgkpSuspendProcess(VOID)
#define NT_SUCCESS(StatCode)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
static const WCHAR Message[]
IN CINT OUT PVOID IN ULONG OUT PULONG ReturnLength
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define IsListEmpty(ListHead)
#define PsGetCurrentThread()
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define KeInitializeEvent(pEvt, foo, foo2)
#define KeSetEvent(pEvt, foo, foo2)
#define KeQuerySystemTime(t)
#define RemoveHeadList(ListHead)
#define InitializeListHead(ListHead)
VOID NTAPI KeClearEvent(IN PKEVENT Event)
#define ExReleaseRundownProtection
#define ExGetPreviousMode
#define ExAcquireRundownProtection
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
#define FILE_SYNCHRONOUS_IO_NONALERT
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
LONG NTAPI ExSystemExceptionFilter(VOID)
#define IQS_SAME(Type, Alignment, Flags)
#define EXCEPTION_EXECUTE_HANDLER
#define PROCESS_SUSPEND_RESUME
#define CT_SKIP_CREATION_MSG_BIT
#define PSF_CREATE_REPORTED_BIT
#define PSF_NO_DEBUG_INHERIT_BIT
#define OBJ_KERNEL_HANDLE
#define OBJ_CASE_INSENSITIVE
#define OBJ_FORCE_ACCESS_CHECK
#define ExFreePoolWithTag(_P, _T)
#define STATUS_DEBUGGER_INACTIVE
static OUT PIO_STATUS_BLOCK IoStatusBlock
#define InitializeObjectAttributes(p, n, a, r, s)
_In_ PVOID _In_ BOOLEAN Alertable
NTSYSAPI NTSTATUS NTAPI ZwOpenFile(_Out_ PHANDLE FileHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes, _Out_ PIO_STATUS_BLOCK IoStatusBlock, _In_ ULONG ShareAccess, _In_ ULONG OpenOptions)
NTSYSAPI NTSTATUS NTAPI ZwFlushInstructionCache(_In_ HANDLE ProcessHandle, _In_ PVOID BaseAddress, _In_ ULONG NumberOfBytesToFlush)
_In_ HANDLE ProcessHandle
#define THREAD_ALL_ACCESS
#define PROCESS_ALL_ACCESS
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define NtCurrentProcess()
#define FILE_SHARE_DELETE
#define STANDARD_RIGHTS_READ
#define STANDARD_RIGHTS_WRITE
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
#define STANDARD_RIGHTS_EXECUTE
_Out_ PKAPC_STATE ApcState
NTSTATUS NTAPI MmGetFileNameForAddress(IN PVOID Address, OUT PUNICODE_STRING ModuleName)
static __inline NTSTATUS DefaultSetInfoBufferCheck(_In_ ULONG Class, _In_ const INFORMATION_CLASS_INFO *ClassList, _In_ ULONG ClassListEntries, _In_ PVOID Buffer, _In_ ULONG BufferLength, _In_ KPROCESSOR_MODE PreviousMode)
Probe helper that validates the provided parameters whenever a NtSet*** system call is invoked from u...
NTSTATUS NTAPI LpcRequestWaitReplyPort(IN PVOID PortObject, IN PPORT_MESSAGE LpcRequest, OUT PPORT_MESSAGE LpcReply)
POBJECT_TYPE PsProcessType
POBJECT_TYPE PsThreadType
#define DBG_TERMINATE_PROCESS
#define STATUS_SINGLE_STEP
#define STATUS_PROCESS_IS_TERMINATING
#define DBG_TERMINATE_THREAD
#define STATUS_BREAKPOINT
#define DBG_EXCEPTION_NOT_HANDLED
#define STATUS_PORT_NOT_SET
#define STATUS_PORT_ALREADY_SET
#define DBG_EXCEPTION_HANDLED
NTSTATUS NTAPI ObDuplicateObject(IN PEPROCESS SourceProcess, IN HANDLE SourceHandle, IN PEPROCESS TargetProcess OPTIONAL, IN PHANDLE TargetHandle OPTIONAL, IN ACCESS_MASK DesiredAccess, IN ULONG HandleAttributes, IN ULONG Options, IN KPROCESSOR_MODE PreviousMode)
NTSTATUS NTAPI ObCloseHandle(IN HANDLE Handle, IN KPROCESSOR_MODE AccessMode)
NTSTATUS NTAPI ObInsertObject(IN PVOID Object, IN PACCESS_STATE AccessState OPTIONAL, IN ACCESS_MASK DesiredAccess, IN ULONG ObjectPointerBias, OUT PVOID *NewObject OPTIONAL, OUT PHANDLE Handle)
NTSTATUS NTAPI ObOpenObjectByPointer(IN PVOID Object, IN ULONG HandleAttributes, IN PACCESS_STATE PassedAccessState, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, OUT PHANDLE Handle)
NTSTATUS NTAPI ObCreateObject(IN KPROCESSOR_MODE ProbeMode OPTIONAL, IN POBJECT_TYPE Type, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN KPROCESSOR_MODE AccessMode, IN OUT PVOID ParseContext OPTIONAL, IN ULONG ObjectSize, IN ULONG PagedPoolCharge OPTIONAL, IN ULONG NonPagedPoolCharge OPTIONAL, OUT PVOID *Object)
NTSTATUS NTAPI ObCreateObjectType(IN PUNICODE_STRING TypeName, IN POBJECT_TYPE_INITIALIZER ObjectTypeInitializer, IN PVOID Reserved, OUT POBJECT_TYPE *ObjectType)
NTSTATUS NTAPI ObReferenceObjectByHandle(IN HANDLE Handle, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, OUT PVOID *Object, OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL)
VOID NTAPI KeStackAttachProcess(IN PKPROCESS Process, OUT PRKAPC_STATE ApcState)
VOID NTAPI KeUnstackDetachProcess(IN PRKAPC_STATE ApcState)
NTSTATUS NTAPI PsSuspendThread(IN PETHREAD Thread, OUT PULONG PreviousCount OPTIONAL)
NTSTATUS NTAPI PsTerminateProcess(IN PEPROCESS Process, IN NTSTATUS ExitStatus)
PETHREAD NTAPI PsGetNextProcessThread(IN PEPROCESS Process, IN PETHREAD Thread OPTIONAL)
NTSTATUS NTAPI PsResumeThread(IN PETHREAD Thread, OUT PULONG PreviousCount OPTIONAL)
PEPROCESS NTAPI PsGetNextProcess(IN PEPROCESS OldProcess OPTIONAL)
#define PspSetCrossThreadFlag(Thread, Flag)
#define PspSetProcessFlag(Process, Flag)
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
#define _SEH2_YIELD(__stmt)
PEPROCESS PsInitialSystemProcess
#define ProbeForWriteHandle(Ptr)
#define ProbeForWriteUlong(Ptr)
#define ProbeForReadLargeInteger(Ptr)
PULONG MinorVersion OPTIONAL
EXCEPTION_RECORD ExceptionRecord
ULONG DebugInfoFileOffset
DBGKM_CREATE_THREAD CreateThread
DBGKM_CREATE_PROCESS CreateProcess
DBGKM_EXCEPTION Exception
DBGKM_APINUMBER ApiNumber
EX_RUNDOWN_REF RundownProtect
UNICODE_STRING FullDllName
struct _LIST_ENTRY * Flink
OB_CLOSE_METHOD CloseProcedure
GENERIC_MAPPING GenericMapping
OB_DELETE_METHOD DeleteProcedure
ULONG DefaultNonPagedPoolCharge
LIST_ENTRY InLoadOrderModuleList
static LARGE_INTEGER StartTime
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_ACCESS_DENIED
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
_Must_inspect_result_ _In_ ULONG Flags
FORCEINLINE VOID ExInitializeFastMutex(_Out_ PFAST_MUTEX FastMutex)
#define PORT_MAXIMUM_MESSAGE_LENGTH
_Out_ PCLIENT_ID ClientId
#define ObDereferenceObject
#define ObReferenceObject
#define DUPLICATE_SAME_ACCESS
#define PsGetCurrentProcess
_In_ KPROCESSOR_MODE PreviousMode
_In_ PSECURITY_SUBJECT_CONTEXT _In_ BOOLEAN _In_ ACCESS_MASK _In_ ACCESS_MASK _Outptr_opt_ PPRIVILEGE_SET _In_ PGENERIC_MAPPING _In_ KPROCESSOR_MODE _Out_ PACCESS_MASK GrantedAccess