70 Irp->IoStatus.Information = 0;
115 if (
DriverObject->DriverExtension->ServiceKeyName.Buffer)
262 *DriverName = driverName;
289 if (
String2->Length < String1->Length)
292 Length = String1->Length / 2;
293 pc1 = String1->Buffer;
324 "%s%sSystem32\\Drivers\\%wZ%s\r\n",
364 DPRINT(
"Normalizing image path '%wZ' for service '%wZ'\n", ImagePath,
ServiceName);
366 InputImagePath = *ImagePath;
367 if (InputImagePath.
Length == 0)
370 ImagePath->MaximumLength = DriversPathString.
Length +
375 ImagePath->MaximumLength,
377 if (ImagePath->Buffer ==
NULL)
384 else if (InputImagePath.
Buffer[0] !=
L'\\')
386 ImagePath->Length = 0;
387 ImagePath->MaximumLength = SystemRootString.
Length +
391 ImagePath->MaximumLength,
393 if (ImagePath->Buffer ==
NULL)
403 DPRINT(
"Normalized image path is '%wZ' for service '%wZ'\n", ImagePath,
ServiceName);
446 DPRINT(
"Driver name: '%wZ'\n", &DriverName);
468 Status = ZwQueryKey(ServiceHandle,
520 (
PVOID*)&driverObject);
527 DPRINT1(
"Error while creating driver object \"%wZ\" status %x\n", &DriverName,
Status);
531 DPRINT(
"Created driver object 0x%p for \"%wZ\"\n", driverObject, &DriverName);
541 driverObject->DriverSection = ModuleObject;
542 driverObject->DriverStart = ModuleObject->DllBase;
543 driverObject->DriverSize = ModuleObject->SizeOfImage;
544 driverObject->DriverInit = ModuleObject->EntryPoint;
547 driverObject->DriverExtension->DriverObject = driverObject;
572 (
PVOID*)&driverObject,
588 serviceKeyName.
Length = 0;
594 if (!serviceKeyName.
Buffer)
607 driverObject->DriverExtension->ServiceKeyName = serviceKeyName;
611 driverNamePaged.
Length = 0;
617 if (!driverNamePaged.
Buffer)
627 driverObject->DriverName = driverNamePaged;
631 *DriverEntryStatus =
Status;
634 DPRINT1(
"'%wZ' initialization failed, status (0x%08lx)\n", &DriverName,
Status);
641 if (!driverObject->DeviceObject)
656 if (!driverObject->MajorFunction[
i])
659 DPRINT1(
"Driver <%wZ> set DriverObject->MajorFunction[%lu] to NULL!\n",
660 &driverObject->DriverName,
i);
680 *OutDriverObject = driverObject;
716 PVOID DriverBase = LdrEntry->DllBase;
740 BaseLength *=
sizeof(
WCHAR);
777 *ModuleObject = LdrEntry;
825 if (FileNameWithoutPath ==
NULL)
827 FileNameWithoutPath =
Buffer;
831 FileNameWithoutPath++;
845 if (FileExtension !=
NULL)
876 NextEntry = NextEntry->
Flink)
920 ULONG instanceCount = 0;
938 DPRINT(
"Processing %u instances for %wZ module\n", instanceCount,
ModuleName);
940 for (
ULONG i = 0;
i < instanceCount;
i++)
978 DPRINT1(
"No device node found matching instance path '%wZ'\n", &instancePath);
1018 DPRINT(
"IopInitializeBootDrivers()\n");
1051 for (NextEntry = ListHead->
Flink;
1052 NextEntry != ListHead;
1053 NextEntry = NextEntry->
Flink)
1070 for (NextEntry = ListHead->
Flink;
1071 NextEntry != ListHead;
1072 NextEntry = NextEntry->
Flink)
1107 #else // Hack still needed... 1139 NextEntry2 = NextEntry2->
Flink;
1143 NextEntry2 = NextEntry2->
Blink;
1155 NextEntry = NextEntry->
Flink)
1212 ZwLoadDriver(*DriverList);
1277 DPRINT1(
"No unload privilege!\n");
1290 DPRINT(
"IopUnloadDriver('%wZ', %u)\n", &CapturedServiceName, UnloadPnpDrivers);
1303 &CapturedServiceName,
1367 DPRINT1(
"Driver deletion pending\n");
1385 CapturedServiceName.
Buffer,
1395 DPRINT1(
"RtlQueryRegistryValues() failed (Status %x)\n",
Status);
1407 DPRINT1(
"IopNormalizeImagePath() failed (Status %x)\n",
Status);
1436 DPRINT1(
"Drivers device object is referenced or has attached devices\n");
1438 SafeToUnload =
FALSE;
1469 DPRINT1(
"No DriverUnload function! '%wZ' will not be unloaded!\n", &
DriverObject->DriverName);
1565 WCHAR NameBuffer[100];
1584 LocalDriverName.
Length = NameLength *
sizeof(
WCHAR);
1586 LocalDriverName.
Buffer = NameBuffer;
1591 LocalDriverName = *DriverName;
1634 if (!ServiceKeyName.
Buffer)
1645 DriverObject->DriverExtension->ServiceKeyName = ServiceKeyName;
1700 DPRINT(
"Calling driver entrypoint at %p\n", InitializationFunction);
1705 DPRINT1(
"'%wZ' initialization failed, status (0x%08lx)\n", &LocalDriverName,
Status);
1724 DPRINT1(
"Driver <%wZ> set DriverObject->MajorFunction[%lu] to NULL!\n",
1763 if (!ReinitItem)
return;
1792 if (!ReinitItem)
return;
1813 IN ULONG DriverObjectExtensionSize,
1821 *DriverObjectExtension =
NULL;
1826 DriverObjectExtensionSize,
1842 ClientDriverExtension;
1843 while (DriverExtensions)
1858 if (!DriverExtensions)
1880 *DriverObjectExtension = NewDriverExtension + 1;
1900 while (DriverExtensions)
1918 if (!DriverExtensions)
return NULL;
1919 return DriverExtensions + 1;
1968 DPRINT(
"IopNormalizeImagePath() failed (Status %x)\n",
Status);
1972 DPRINT(
"FullImagePath: '%wZ'\n", &ImagePath);
1980 DPRINT(
"Loading module from %wZ\n", &ImagePath);
1986 DPRINT(
"MmLoadSystemImage() failed (Status %lx)\n",
Status);
2000 Status = ZwQueryKey(ServiceHandle,
2010 .Buffer = servName->
Name 2023 &driverEntryStatus);
2026 DPRINT1(
"IopInitializeDriverModule() failed (Status %lx)\n",
Status);
2113 return LoadParams.
Status;
2146 DPRINT1(
"No load privilege!\n");
2159 DPRINT(
"NtLoadDriver('%wZ')\n", &CapturedServiceName);
static __inline NTSTATUS ProbeAndCaptureUnicodeString(OUT PUNICODE_STRING Dest, IN KPROCESSOR_MODE CurrentMode, IN const UNICODE_STRING *UnsafeSrc)
#define RTL_FIND_CHAR_IN_UNICODE_STRING_START_AT_END
#define STATUS_OBJECT_NAME_COLLISION
static const unsigned char pc2[48]
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
BOOLEAN ExpInTextModeSetup
#define DRVO_BUILTIN_DRIVER
_In_ PCWSTR _Inout_ _At_ QueryTable _Pre_unknown_ PRTL_QUERY_REGISTRY_TABLE QueryTable
#define STATUS_DELETE_PENDING
NTSTATUS NTAPI RawFsDriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
#define DRVO_LEGACY_DRIVER
#define STATUS_PRIVILEGE_NOT_HELD
VOID NTAPI MmFreeDriverInitialization(IN PLDR_DATA_TABLE_ENTRY LdrEntry)
VOID FASTCALL IopInitializeBootDrivers(VOID)
PDEVICE_OBJECT PhysicalDeviceObject
VOID NTAPI InbvIndicateProgress(VOID)
Gives some progress feedback, without specifying any explicit number of progress steps or percentage....
PDEVICE_NODE IopRootDeviceNode
VOID NTAPI ExQueueWorkItem(IN PWORK_QUEUE_ITEM WorkItem, IN WORK_QUEUE_TYPE QueueType)
IN OUT PLONG IN OUT PLONG Addend IN OUT PLONG IN LONG IN OUT PLONG IN LONG Increment KeRaiseIrqlToDpcLevel
struct _IO_CLIENT_EXTENSION * NextExtension
#define STATUS_INSUFFICIENT_RESOURCES
VOID FASTCALL IopInitializeSystemDrivers(VOID)
NTSTATUS RtlUpcaseUnicodeString(PUNICODE_STRING dst, PUNICODE_STRING src, BOOLEAN Alloc)
_In_ ULONG _In_ ULONG _In_ ULONG Length
static const unsigned char pc1[56]
PUNICODE_STRING *NTAPI CmGetSystemDriverList(VOID)
NTSYSAPI NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID)
NTSTATUS NTAPI IoAllocateDriverObjectExtension(IN PDRIVER_OBJECT DriverObject, IN PVOID ClientIdentificationAddress, IN ULONG DriverObjectExtensionSize, OUT PVOID *DriverObjectExtension)
VOID PiQueueDeviceAction(_In_ PDEVICE_OBJECT DeviceObject, _In_ DEVICE_ACTION Action, _In_opt_ PKEVENT CompletionEvent, _Out_opt_ NTSTATUS *CompletionStatus)
Queue a device operation to a worker thread.
static VOID NTAPI IopLoadUnloadDriverWorker(_Inout_ PVOID Parameter)
#define OBJ_CASE_INSENSITIVE
VOID NTAPI IopReinitializeDrivers(VOID)
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ ULONG _Out_ PNDIS_STRING _Out_ PNDIS_HANDLE KeyHandle
#define _At_(target, annos)
IN BOOLEAN OUT PSTR Buffer
#define STATUS_INVALID_PARAMETER
VOID FASTCALL IopDisplayLoadingMessage(PUNICODE_STRING ServiceName)
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
struct _LIST_ENTRY * Blink
FORCEINLINE VOID InsertHeadList(_Inout_ PLIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PLIST_ENTRY Entry)
NTSTRSAFEVAPI RtlStringCchPrintfW(_Out_writes_(cchDest) _Always_(_Post_z_) NTSTRSAFE_PWSTR pszDest, _In_ size_t cchDest, _In_ _Printf_format_string_ NTSTRSAFE_PCWSTR pszFormat,...)
#define KeGetPreviousMode()
#define IRP_MJ_MAXIMUM_FUNCTION
NTSTATUS IopDoLoadUnloadDriver(_In_opt_ PUNICODE_STRING RegistryPath, _Inout_ PDRIVER_OBJECT *DriverObject)
Process load and unload driver operations. This is mostly for NtLoadDriver and NtUnloadDriver,...
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
#define STATUS_FAILED_DRIVER_ENTRY
LIST_ENTRY DriverBootReinitListHead
#define STATUS_INVALID_DEVICE_REQUEST
_In_ LPWSTR _In_ ULONG _In_ ULONG _In_ ULONG _Out_ DEVINFO _In_ HDEV _In_ LPWSTR _In_ HANDLE hDriver
KPROCESSOR_MODE NTAPI ExGetPreviousMode(VOID)
#define FILESYSTEM_ROOT_NAME
NTSTATUS IopLoadDriver(_In_ HANDLE ServiceHandle, _Out_ PDRIVER_OBJECT *DriverObject)
POBJECT_TYPE IoDriverObjectType
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
#define _When_(expr, annos)
_In_ PVOID _Out_opt_ PULONG_PTR _Outptr_opt_ PCUNICODE_STRING * ObjectName
NTSTATUS IopGetDriverNames(_In_ HANDLE ServiceHandle, _Out_ PUNICODE_STRING DriverName, _Out_opt_ PUNICODE_STRING ServiceName)
#define LDRP_DRIVER_DEPENDENT_DLL
NTSTATUS NTAPI IopInvalidDeviceRequest(PDEVICE_OBJECT DeviceObject, PIRP Irp)
LONG NTAPI KeSetEvent(IN PKEVENT Event, IN KPRIORITY Increment, IN BOOLEAN Wait)
NTSTATUS NTAPI KeWaitForSingleObject(IN PVOID Object, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL)
#define OBJ_KERNEL_HANDLE
VOID NTAPI IopReinitializeBootDrivers(VOID)
#define SERVICE_RECOGNIZER_DRIVER
static int Link(const char **args)
#define MAXIMUM_FILENAME_LENGTH
#define RtlMoveMemory(Destination, Source, Length)
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
#define STATUS_BUFFER_TOO_SMALL
USHORT NTAPI PpInitGetGroupOrderIndex(IN HANDLE ServiceHandle)
#define DRVO_REINIT_REGISTERED
VOID NTAPI IoRegisterDriverReinitialization(IN PDRIVER_OBJECT DriverObject, IN PDRIVER_REINITIALIZE ReinitRoutine, IN PVOID Context)
NTSTATUS NTAPI RtlFindCharInUnicodeString(_In_ ULONG Flags, _In_ PCUNICODE_STRING SearchString, _In_ PCUNICODE_STRING MatchString, _Out_ PUSHORT Position)
BOOLEAN NTAPI ExAcquireResourceExclusiveLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
GLenum GLuint GLenum GLsizei const GLchar * buf
_In_ PDEVICE_OBJECT DeviceObject
PLIST_ENTRY NTAPI ExInterlockedRemoveHeadList(IN OUT PLIST_ENTRY ListHead, IN OUT PKSPIN_LOCK Lock)
KSPIN_LOCK DriverReinitListLock
static BOOLEAN IopInitializeBuiltinDriver(IN PLDR_DATA_TABLE_ENTRY BootLdrEntry)
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)
KSPIN_LOCK DriverBootReinitListLock
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
struct _SETUP_LOADER_BLOCK * SetupLdrBlock
PEPROCESS PsInitialSystemProcess
NTSTATUS NTAPI MmCallDllInitialize(IN PLDR_DATA_TABLE_ENTRY LdrEntry, IN PLIST_ENTRY ListHead)
struct _LOAD_UNLOAD_PARAMS LOAD_UNLOAD_PARAMS
#define OBJ_NAME_PATH_SEPARATOR
PDRIVER_EXTENSION DriverExtension
#define PsGetCurrentProcess
PDEVICE_OBJECT IopGetDeviceObjectFromDeviceInstance(PUNICODE_STRING DeviceInstance)
NTSTATUS FASTCALL IopNormalizeImagePath(_Inout_ _When_(return >=0, _At_(ImagePath->Buffer, _Post_notnull_ __drv_allocatesMem(Mem))) PUNICODE_STRING ImagePath, _In_ PUNICODE_STRING ServiceName)
VOID(NTAPI * PDRIVER_REINITIALIZE)(_In_ struct _DRIVER_OBJECT *DriverObject, _In_opt_ PVOID Context, _In_ ULONG Count)
const LUID SeLoadDriverPrivilege
LIST_ENTRY DriverReinitListHead
#define IoCompleteRequest
NTSTATUS NTAPI IoCreateDriver(_In_opt_ PUNICODE_STRING DriverName, _In_ PDRIVER_INITIALIZE InitializationFunction)
PDRIVER_OBJECT DriverObject
#define SERVICE_FILE_SYSTEM_DRIVER
PLOADER_PARAMETER_BLOCK KeLoaderBlock
__drv_aliasesMem _In_ PVOID ClientIdentificationAddress
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
KEVENT PiEnumerationFinished
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
#define DRVO_UNLOAD_INVOKED
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 MmUnloadSystemImage(IN PVOID ImageHandle)
#define STATUS_ILL_FORMED_SERVICE_ENTRY
NTSTATUS RtlAppendUnicodeToString(IN PUNICODE_STRING Str1, IN PWSTR Str2)
struct _LIST_ENTRY * Flink
static __inline VOID ReleaseCapturedUnicodeString(IN PUNICODE_STRING CapturedString, IN KPROCESSOR_MODE CurrentMode)
_In_ KPROCESSOR_MODE PreviousMode
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
#define __drv_allocatesMem(kind)
#define ExInitializeWorkItem(Item, Routine, Context)
#define DOE_UNLOAD_PENDING
#define TAG_DRIVER_EXTENSION
#define NT_SUCCESS(StatCode)
_In_ WDFCOLLECTION _In_ ULONG Index
PLIST_ENTRY NTAPI ExInterlockedInsertTailList(IN OUT PLIST_ENTRY ListHead, IN OUT PLIST_ENTRY ListEntry, IN OUT PKSPIN_LOCK Lock)
LIST_ENTRY PsLoadedModuleList
PLIST_ENTRY DriverReinitTailEntry
NTSTATUS NTAPI MiResolveImageReferences(IN PVOID ImageBase, IN PUNICODE_STRING ImageFileDirectory, IN PUNICODE_STRING NamePrefix OPTIONAL, OUT PCHAR *MissingApi, OUT PWCHAR *MissingDriver, OUT PLOAD_IMPORTS *LoadImports)
#define ObDereferenceObject
PLIST_ENTRY IopGroupTable
LIST_ENTRY BootDriverListHead
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
VOID NTAPI IopReadyDeviceObjects(IN PDRIVER_OBJECT Driver)
VOID NTAPI IoRegisterBootDriverReinitialization(IN PDRIVER_OBJECT DriverObject, IN PDRIVER_REINITIALIZE ReinitRoutine, IN PVOID Context)
#define STATUS_UNSUCCESSFUL
#define ExAllocatePoolWithTag(hernya, size, tag)
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
DRIVER_INITIALIZE * PDRIVER_INITIALIZE
NTSTATUS NTAPI NtUnloadDriver(IN PUNICODE_STRING DriverServiceName)
NTKERNELAPI volatile KSYSTEM_TIME KeTickCount
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
PDRIVER_UNLOAD DriverUnload
PVOID NTAPI IoGetDriverObjectExtension(IN PDRIVER_OBJECT DriverObject, IN PVOID ClientIdentificationAddress)
#define KeEnterCriticalRegion()
_In_ PNDIS_STRING DeviceInstance
struct _DRIVER_OBJECT DRIVER_OBJECT
static const WCHAR Cleanup[]
#define RTL_REGISTRY_ABSOLUTE
int _cdecl swprintf(const WCHAR *,...)
PLIST_ENTRY DriverBootReinitTailEntry
LIST_ENTRY LoadOrderListHead
NTSTATUS PiPerformSyncDeviceAction(_In_ PDEVICE_OBJECT DeviceObject, _In_ DEVICE_ACTION Action)
Perfom a device operation synchronously via PiQueueDeviceAction.
PDRIVER_OBJECT DriverObject
NTSTATUS NTAPI IopGetRegistryValue(IN HANDLE Handle, IN PWSTR ValueName, OUT PKEY_VALUE_FULL_INFORMATION *Information)
struct _FileName FileName
ERESOURCE IopDriverLoadResource
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)
UNICODE_STRING RegistryPath
DRIVER_INFORMATION DriverInfo
#define KeLeaveCriticalRegion()
PUNICODE_STRING RegistryPath
#define KeInitializeEvent(pEvt, foo, foo2)
NTSTATUS NTAPI IopOpenRegistryKeyEx(PHANDLE KeyHandle, HANDLE ParentKey, PUNICODE_STRING Name, ACCESS_MASK DesiredAccess)
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
#define ROUND_TO_PAGES(Size)
struct _LDR_DATA_TABLE_ENTRY * LdrEntry
VOID NTAPI IopDeleteDriver(IN PVOID ObjectBody)
struct _DRIVER_EXTENSION * PDRIVER_EXTENSION
#define InitializeListHead(ListHead)
UNICODE_STRING IopHardwareDatabaseKey
NTSYSAPI NTSTATUS NTAPI RtlAppendUnicodeStringToString(PUNICODE_STRING Destination, PUNICODE_STRING Source)
#define IMAGE_DLLCHARACTERISTICS_WDM_DRIVER
UNICODE_STRING BaseDllName
VOID NTAPI IoDeleteDriver(_In_ PDRIVER_OBJECT DriverObject)
struct _LOAD_UNLOAD_PARAMS * PLOAD_UNLOAD_PARAMS
NTHALAPI VOID NTAPI HalDisplayString(PUCHAR String)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define UNIMPLEMENTED_DBGBREAK(...)
BOOLEAN NTAPI SeSinglePrivilegeCheck(_In_ LUID PrivilegeValue, _In_ KPROCESSOR_MODE PreviousMode)
Checks if a single privilege is present in the context of the calling thread.
_In_ const STRING * String2
NTSTATUS IopInitializeDriverModule(_In_ PLDR_DATA_TABLE_ENTRY ModuleObject, _In_ HANDLE ServiceHandle, _Out_ PDRIVER_OBJECT *OutDriverObject, _Out_ NTSTATUS *DriverEntryStatus)
Initialize a loaded driver.
char TextBuffer[BUFFERLEN]
struct tagContext Context
BOOLEAN PnPBootDriversLoaded
PPCI_DRIVER_EXTENSION DriverExtension
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define RtlZeroMemory(Destination, Length)
#define InitializeObjectAttributes(p, n, a, r, s)
#define RtlCopyMemory(Destination, Source, Length)
PDRIVER_REINITIALIZE ReinitRoutine
static const WCHAR ServicesKeyName[]
PVOID ClientIdentificationAddress
VOID NTAPI KeLowerIrql(KIRQL NewIrql)
NTSTATUS NTAPI IopUnloadDriver(PUNICODE_STRING DriverServiceName, BOOLEAN UnloadPnpDrivers)
#define IoGetDevObjExtension(DeviceObject)
#define ExFreePoolWithTag(_P, _T)
#define IoGetDrvObjExtension(DriverObject)
NTSTATUS NTAPI ObReferenceObjectByName(IN PUNICODE_STRING ObjectPath, IN ULONG Attributes, IN PACCESS_STATE PassedAccessState, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, IN OUT PVOID ParseContext, OUT PVOID *ObjectPtr)
static SERVICE_STATUS status
NTSTATUS NTAPI NtLoadDriver(IN PUNICODE_STRING DriverServiceName)
NTSYSAPI BOOLEAN NTAPI RtlEqualUnicodeString(PUNICODE_STRING String1, PUNICODE_STRING String2, BOOLEAN CaseInSensitive)
base of all file and directory entries
PDRIVER_INITIALIZE DriverInit
#define RTL_QUERY_REGISTRY_DIRECT
NTSTATUS NTAPI MmLoadSystemImage(IN PUNICODE_STRING FileName, IN PUNICODE_STRING NamePrefix OPTIONAL, IN PUNICODE_STRING LoadedName OPTIONAL, IN ULONG Flags, OUT PVOID *ModuleObject, OUT PVOID *ImageBaseAddress)
#define DRVO_BOOTREINIT_REGISTERED
USHORT NTAPI PipGetDriverTagPriority(IN HANDLE ServiceHandle)
#define RTL_CONSTANT_STRING(s)
VOID NTAPI ObMakeTemporaryObject(IN PVOID ObjectBody)
NTSTATUS NTAPI LdrProcessDriverModule(PLDR_DATA_TABLE_ENTRY LdrEntry, PUNICODE_STRING FileName, PLDR_DATA_TABLE_ENTRY *ModuleObject)
PULONG MinorVersion OPTIONAL
BOOLEAN NTAPI IopSuffixUnicodeString(IN PCUNICODE_STRING String1, IN PCUNICODE_STRING String2)