nt!IopInitializeBuiltinDriver函数分析创建驱动对象和初始化例程的运行
0: kd> dx -r1 -nv (*((ntkrnlmp!_DRIVER_OBJECT *)0x895c2b68))
(*((ntkrnlmp!_DRIVER_OBJECT *)0x895c2b68)) : Driver "" [Type: _DRIVER_OBJECT]
[+0x000] Type : 4 [Type: short]
[+0x002] Size : 168 [Type: short]
[+0x004] DeviceObject : 0x0 [Type: _DEVICE_OBJECT *]
[+0x008] Flags : 0x0 [Type: unsigned long]
[+0x00c] DriverStart : 0xf7727000 [Type: void *] //赋值了
[+0x010] DriverSize : 0x8000 [Type: unsigned long] //赋值了
[+0x014] DriverSection : 0x899c8d78 [Type: void *] //赋值了
[+0x018] DriverExtension : 0x895c2c10 [Type: _DRIVER_EXTENSION *]
[+0x01c] DriverName [Type: _UNICODE_STRING]
[+0x024] HardwareDatabase : 0x0 [Type: _UNICODE_STRING *]
[+0x028] FastIoDispatch : 0x0 [Type: _FAST_IO_DISPATCH *]
[+0x02c] DriverInit : 0xf772c000 [Type: long (*)(_DRIVER_OBJECT *,_UNICODE_STRING *)]
[+0x030] DriverStartIo : 0x0 [Type: void (*)(_DEVICE_OBJECT *,_IRP *)]
[+0x034] DriverUnload : 0x0 [Type: void (*)(_DRIVER_OBJECT *)]
[+0x038] MajorFunction [Type: long (* [28])(_DEVICE_OBJECT *,_IRP *)]
//
// Save the name of the driver so that it can be easily located by functions
// such as error logging.
//
buffer = ExAllocatePool( PagedPool, DriverName->MaximumLength + 2 );
if (buffer) {
driverObject->DriverName.Buffer = buffer;
driverObject->DriverName.MaximumLength = DriverName->MaximumLength;
driverObject->DriverName.Length = DriverName->Length;
RtlCopyMemory( driverObject->DriverName.Buffer,
DriverName->Buffer,
DriverName->MaximumLength );
buffer[DriverName->Length >> 1] = (WCHAR) '\0';
}
driverObject->DriverName 赋值
0: kd> dx -r1 -nv (*((ntkrnlmp!_DRIVER_OBJECT *)0x895c2b68))
(*((ntkrnlmp!_DRIVER_OBJECT *)0x895c2b68)) : Driver "\Driver\IntelIde" [Type: _DRIVER_OBJECT]
[+0x000] Type : 4 [Type: short]
[+0x002] Size : 168 [Type: short]
[+0x004] DeviceObject : 0x0 [Type: _DEVICE_OBJECT *]
[+0x008] Flags : 0x2 [Type: unsigned long]
[+0x00c] DriverStart : 0xf7727000 [Type: void *]
[+0x010] DriverSize : 0x8000 [Type: unsigned long]
[+0x014] DriverSection : 0x899c8d78 [Type: void *]
[+0x018] DriverExtension : 0x895c2c10 [Type: _DRIVER_EXTENSION *]
[+0x01c] DriverName[Type: _UNICODE_STRING]
[+0x024] HardwareDatabase : 0x0 [Type: _UNICODE_STRING *]
[+0x028] FastIoDispatch : 0x0 [Type: _FAST_IO_DISPATCH *]
[+0x02c] DriverInit : 0xf772c000 [Type: long (*)(_DRIVER_OBJECT *,_UNICODE_STRING *)]
[+0x030] DriverStartIo : 0x0 [Type: void (*)(_DEVICE_OBJECT *,_IRP *)]
[+0x034] DriverUnload : 0x0 [Type: void (*)(_DRIVER_OBJECT *)]
[+0x038] MajorFunction [Type: long (* [28])(_DEVICE_OBJECT *,_IRP *)]
0: kd> dx -r1 (*((ntkrnlmp!_UNICODE_STRING *)0x895c2b84))
(*((ntkrnlmp!_UNICODE_STRING *)0x895c2b84)) : "\Driver\IntelIde" [Type: _UNICODE_STRING]
[<Raw View>] [Type: _UNICODE_STRING]
0: kd> dx -r1 -nv (*((ntkrnlmp!_UNICODE_STRING *)0x895c2b84))
(*((ntkrnlmp!_UNICODE_STRING *)0x895c2b84)) : "\Driver\IntelIde" [Type: _UNICODE_STRING]
[+0x000] Length : 0x20 [Type: unsigned short]
[+0x002] MaximumLength : 0x20 [Type: unsigned short]
[+0x004] Buffer : 0xe127b3f8 : 0x5c [Type: unsigned short *]
driverExtension->ServiceKeyName
RtlCopyMemory( driverExtension->ServiceKeyName.Buffer,
pserviceName,
serviceNameLength );
0: kd> dv
DriverName = 0xf789a66c "\Driver\IntelIde"
RegistryPath = 0x80084050 "\Registry\Machine\System\CurrentControlSet\Services\IntelIde"
DriverInitializeRoutine = 0x895c2b68
0: kd> dx -r1 -nv (*((ntkrnlmp!_DRIVER_OBJECT *)0x895c2b68))
(*((ntkrnlmp!_DRIVER_OBJECT *)0x895c2b68)) : Driver "\Driver\IntelIde" [Type: _DRIVER_OBJECT]
[+0x000] Type : 4 [Type: short]
[+0x002] Size : 168 [Type: short]
[+0x004] DeviceObject : 0x0 [Type: _DEVICE_OBJECT *]
[+0x008] Flags : 0x2 [Type: unsigned long]
[+0x00c] DriverStart : 0xf7727000 [Type: void *]
[+0x010] DriverSize : 0x8000 [Type: unsigned long]
[+0x014] DriverSection : 0x899c8d78 [Type: void *]
[+0x018] DriverExtension : 0x895c2c10 [Type: _DRIVER_EXTENSION *]
[+0x01c] DriverName [Type: _UNICODE_STRING]
[+0x024] HardwareDatabase : 0x0 [Type: _UNICODE_STRING *]
[+0x028] FastIoDispatch : 0x0 [Type: _FAST_IO_DISPATCH *]
[+0x02c] DriverInit : 0xf772c000 [Type: long (*)(_DRIVER_OBJECT *,_UNICODE_STRING *)]
[+0x030] DriverStartIo : 0x0 [Type: void (*)(_DEVICE_OBJECT *,_IRP *)]
[+0x034] DriverUnload : 0x0 [Type: void (*)(_DRIVER_OBJECT *)]
[+0x038] MajorFunction [Type: long (* [28])(_DEVICE_OBJECT *,_IRP *)]
0: kd> dx -r1 ((ntkrnlmp!_DRIVER_EXTENSION *)0x895c2c10)
((ntkrnlmp!_DRIVER_EXTENSION *)0x895c2c10) : 0x895c2c10 [Type: _DRIVER_EXTENSION *]
[+0x000] DriverObject : 0x895c2b68 : Driver "\Driver\IntelIde" [Type: _DRIVER_OBJECT *]
[+0x004] AddDevice : 0x0 [Type: long (*)(_DRIVER_OBJECT *,_DEVICE_OBJECT *)]
[+0x008] Count : 0x0 [Type: unsigned long]
[+0x00c] ServiceKeyName : "IntelIde" [Type: _UNICODE_STRING] //赋值了
[+0x014] ClientDriverExtension : 0x0 [Type: _IO_CLIENT_EXTENSION *]
[+0x018] FsFilterCallbacks : 0x0 [Type: _FS_FILTER_CALLBACKS *]
driverObject->HardwareDatabase = &CmRegistryMachineHardwareDescriptionSystemName;
0: kd> x nt!CmRegistryMachineHardwareDescriptionSystemName
80e3c260 nt!CmRegistryMachineHardwareDescriptionSystemName = "\REGISTRY\MACHINE\HARDWARE\DESCRIPTION\SYSTEM"
0: kd> dx -r1 -nv (*((ntkrnlmp!_DRIVER_OBJECT *)0x895c2b68))
(*((ntkrnlmp!_DRIVER_OBJECT *)0x895c2b68)) : Driver "\Driver\IntelIde" [Type: _DRIVER_OBJECT]
[+0x000] Type : 4 [Type: short]
[+0x002] Size : 168 [Type: short]
[+0x004] DeviceObject : 0x0 [Type: _DEVICE_OBJECT *]
[+0x008] Flags : 0x2 [Type: unsigned long]
[+0x00c] DriverStart : 0xf7727000 [Type: void *]
[+0x010] DriverSize : 0x8000 [Type: unsigned long]
[+0x014] DriverSection : 0x899c8d78 [Type: void *]
[+0x018] DriverExtension : 0x895c2c10 [Type: _DRIVER_EXTENSION *]
[+0x01c] DriverName [Type: _UNICODE_STRING]
[+0x024] HardwareDatabase : 0x80e3c260 : "\REGISTRY\MACHINE\HARDWARE\DESCRIPTION\SYSTEM" [Type: _UNICODE_STRING *]
[+0x028] FastIoDispatch : 0x0 [Type: _FAST_IO_DISPATCH *]
[+0x02c] DriverInit : 0xf772c000 [Type: long (*)(_DRIVER_OBJECT *,_UNICODE_STRING *)]
[+0x030] DriverStartIo : 0x0 [Type: void (*)(_DEVICE_OBJECT *,_IRP *)]
[+0x034] DriverUnload : 0x0 [Type: void (*)(_DRIVER_OBJECT *)]
[+0x038] MajorFunction [Type: long (* [28])(_DEVICE_OBJECT *,_IRP *)]
0: kd> u f772c000
intelide!GsDriverEntry [d:\srv03rtm\base\tools\gs_support\kmode\gs_support.c @ 52]:
f772c000 55 push ebp
f772c001 8bec mov ebp,esp
f772c003 a118b072f7 mov eax,dword ptr [intelide!__security_cookie (f772b018)]
f772c008 85c0 test eax,eax
f772c00a b94ee640bb mov ecx,0BB40E64Eh
f772c00f 7404 je intelide!GsDriverEntry+0x15 (f772c015)
f772c011 3bc1 cmp eax,ecx
f772c013 7519 jne intelide!GsDriverEntry+0x2e (f772c02e)
status = driverObject->DriverInit( driverObject, RegistryPath );
回顾前面:
BOOLEAN
IopInitializeBootDrivers(
IN PLOADER_PARAMETER_BLOCK LoaderBlock,
OUT PDRIVER_OBJECT *PreviousDriver
)
{
for (i = 0; i < IopGroupIndex; i++) {
nextEntry = IopGroupTable[i].Flink;
while (nextEntry != &IopGroupTable[i]) {
driverInfo = CONTAINING_RECORD(nextEntry, DRIVER_INFORMATION, Link);
keyHandle = driverInfo->ServiceHandle;
bootDriver = driverInfo->DataTableEntry;
driverEntry = bootDriver->LdrEntry;
driverInfo->Processed = TRUE;
。。。
0: kd> dt _DRIVER_INFORMATION 0xe128e4b0
nt!_DRIVER_INFORMATION
+0x000 Link : _LIST_ENTRY [ 0xe128e350 - 0xe128e908 ]
+0x008 DriverObject : (null)
+0x00c DataTableEntry : 0x80084040 _BOOT_DRIVER_LIST_ENTRY
+0x010 ServiceHandle : 0x800003e8 Void
+0x014 TagPosition : 3
+0x016 Failed : 0 ''
+0x017 Processed : 0 ''
+0x018 Status : 0n0
0: kd> dx -id 0,0,899a2278 -r1 ((ntkrnlmp!_BOOT_DRIVER_LIST_ENTRY *)0x80084040)
((ntkrnlmp!_BOOT_DRIVER_LIST_ENTRY *)0x80084040) : 0x80084040 [Type: _BOOT_DRIVER_LIST_ENTRY *]
[+0x000] Link [Type: _LIST_ENTRY]
[+0x008] FilePath : "system32\DRIVERS\intelide.sys" [Type: _UNICODE_STRING]
[+0x010] RegistryPath : "\Registry\Machine\System\CurrentControlSet\Services\IntelIde" [Type: _UNICODE_STRING]
[+0x018] LdrEntry : 0x80086378 [Type: _KLDR_DATA_TABLE_ENTRY *]
0: kd> dx -id 0,0,899a2278 -r1 ((ntkrnlmp!_KLDR_DATA_TABLE_ENTRY *)0x80086378)
((ntkrnlmp!_KLDR_DATA_TABLE_ENTRY *)0x80086378) : 0x80086378 [Type: _KLDR_DATA_TABLE_ENTRY *]
[+0x000] InLoadOrderLinks [Type: _LIST_ENTRY]
[+0x008] ExceptionTable : 0xffffffff [Type: void *]
[+0x00c] ExceptionTableSize : 0xffffffff [Type: unsigned long]
[+0x010] GpValue : 0x0 [Type: void *]
[+0x014] NonPagedDebugInfo : 0x0 [Type: _NON_PAGED_DEBUG_INFO *]
[+0x018] DllBase : 0xf7727000 [Type: void *]
[+0x01c] EntryPoint : 0xf772c000 [Type: void *]
[+0x020] SizeOfImage : 0x8000 [Type: unsigned long]
[+0x024] FullDllName : "intelide.sys" [Type: _UNICODE_STRING]
[+0x02c] BaseDllName : "intelide.sys" [Type: _UNICODE_STRING]
[+0x034] Flags : 0x1004000 [Type: unsigned long]
[+0x038] LoadCount : 0x1 [Type: unsigned short]
[+0x03a] __Unused5 : 0x0 [Type: unsigned short]
[+0x03c] SectionPointer : 0x0 [Type: void *]
[+0x040] CheckSum : 0x5a96 [Type: unsigned long]
[+0x044] LoadedImports : 0x0 [Type: void *]
[+0x048] PatchInformation : 0x0 [Type: void *]
[+0x01c] EntryPoint : 0xf772c000 [Type: void *]
driverInfo->Status = IopInitializeBuiltinDriver(
&completeName,
&bootDriver->RegistryPath,
(PDRIVER_INITIALIZE) (ULONG_PTR) driverEntry->EntryPoint,
driverEntry,
FALSE,
&driverObject);
NTSTATUS
IopInitializeBuiltinDriver(
IN PUNICODE_STRING DriverName,
IN PUNICODE_STRING RegistryPath,
IN PDRIVER_INITIALIZE DriverInitializeRoutine,
IN PKLDR_DATA_TABLE_ENTRY DriverEntry,
IN BOOLEAN IsFilter,
IN PDRIVER_OBJECT *Result
)
driverObject->DriverInit = DriverInitializeRoutine;
回顾前面结束:
0: kd> t
Breakpoint 9 hit
eax=f789a610 ebx=895c2b68 ecx=01dc755d edx=382dfdbe esi=f789a66c edi=89922a18
eip=f772c000 esp=f789a5e0 ebp=f789a630 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
intelide!GsDriverEntry:
f772c000 55 push ebp
0: kd> kc
#
00 intelide!GsDriverEntry
01 nt!IopInitializeBuiltinDriver
02 nt!IopInitializeBootDrivers
03 nt!IoInitSystem
04 nt!Phase1Initialization
05 nt!PspSystemThreadStartup
06 nt!KiThreadStartup
0: kd> gu
Breakpoint 8 hit
eax=e72c7b7a ebx=895c2b68 ecx=bb40e64e edx=382dfdbe esi=f789a66c edi=89922a18
eip=f772846e esp=f789a5e0 ebp=f789a630 iopl=0 nv up ei ng nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000282
intelide!DriverEntry:
f772846e 55 push ebp
0: kd> kc
#
00 intelide!DriverEntry
01 nt!IopInitializeBuiltinDriver
02 nt!IopInitializeBootDrivers
03 nt!IoInitSystem
04 nt!Phase1Initialization
05 nt!PspSystemThreadStartup
06 nt!KiThreadStartup
NTSTATUS
GsDriverEntry(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
)
{
if (!__security_cookie || (__security_cookie == DEFAULT_SECURITY_COOKIE)) {
// For kernel mode, we use KeTickCount. Even nicer would be to use rdtsc, but WDM still supports
// 386/486 and rdtsc is pentium and above.
#ifdef _X86_
__security_cookie = (DWORD_PTR)(*((PKSYSTEM_TIME *)(&KeTickCount)))->LowPart ^ (DWORD_PTR) &__security_cookie;
#else
LARGE_INTEGER Count;
KeQueryTickCount(&Count );
__security_cookie = (DWORD_PTR)Count.QuadPart ^ (DWORD_PTR) &__security_cookie;
#endif
if (!__security_cookie) {
__security_cookie = DEFAULT_SECURITY_COOKIE;
}
}
return DriverEntry(DriverObject, RegistryPath);
}
NTSTATUS
DriverEntry(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
)
{
returnPciIdeXInitialize(
DriverObject,
RegistryPath,
PiixIdeGetControllerProperties,
sizeof (DEVICE_EXTENSION)
);
}
0: kd> dx -r1 -nv (*((ntkrnlmp!_DRIVER_OBJECT *)0x895c2b68))
(*((ntkrnlmp!_DRIVER_OBJECT *)0x895c2b68)) : Driver "\Driver\IntelIde" [Type: _DRIVER_OBJECT]
[+0x000] Type : 4 [Type: short]
[+0x002] Size : 168 [Type: short]
[+0x004] DeviceObject : 0x0 [Type: _DEVICE_OBJECT *]
[+0x008] Flags : 0x12 [Type: unsigned long]
[+0x00c] DriverStart : 0xf7727000 [Type: void *]
[+0x010] DriverSize : 0x8000 [Type: unsigned long]
[+0x014] DriverSection : 0x899c8d78 [Type: void *]
[+0x018] DriverExtension : 0x895c2c10 [Type: _DRIVER_EXTENSION *]
[+0x01c] DriverName [Type: _UNICODE_STRING]
[+0x024] HardwareDatabase : 0x80e3c260 : "\REGISTRY\MACHINE\HARDWARE\DESCRIPTION\SYSTEM" [Type: _UNICODE_STRING *]
[+0x028] FastIoDispatch : 0x0 [Type: _FAST_IO_DISPATCH *]
[+0x02c] DriverInit : 0xf772c000 [Type: long (*)(_DRIVER_OBJECT *,_UNICODE_STRING *)]
[+0x030] DriverStartIo : 0x0 [Type: void (*)(_DEVICE_OBJECT *,_IRP *)]
[+0x034] DriverUnload : 0xf73b2a0c [Type: void (*)(_DRIVER_OBJECT *)]
[+0x038] MajorFunction [Type: long (* [28])(_DEVICE_OBJECT *,_IRP *)]
0: kd> dx -r1 (*((ntkrnlmp!long (*(*)[28])(_DEVICE_OBJECT *,_IRP *))0x895c2ba0))
(*((ntkrnlmp!long (*(*)[28])(_DEVICE_OBJECT *,_IRP *))0x895c2ba0)) [Type: long (* [28])(_DEVICE_OBJECT *,_IRP *)]
[0] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[1] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[2] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[3] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[4] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[5] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[6] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[7] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[8] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[9] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[10] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[11] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[12] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[13] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[14] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[15] : 0xf73b2570 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[16] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[17] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[18] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[19] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[20] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[21] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[22] : 0xf73a848a [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[23] : 0xf73b22fc [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[24] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[25] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[26] : 0x80a2b404 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
[27] : 0xf73b2194 [Type: long (*)(_DEVICE_OBJECT *,_IRP *)]
0: kd> dds 0x895c2ba0
895c2ba0 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2ba4 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2ba8 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2bac 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2bb0 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2bb4 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2bb8 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2bbc 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2bc0 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2bc4 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2bc8 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2bcc 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2bd0 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2bd4 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2bd8 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2bdc f73b2570PCIIDEX!PciIdeInternalDeviceIoControl[d:\srv03rtm\drivers\storage\ide\pciidex\pciidex.c @ 734]
895c2be0 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2be4 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2be8 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2bec 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2bf0 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2bf4 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2bf8 f73a848aPCIIDEX!DispatchPower[d:\srv03rtm\drivers\storage\ide\pciidex\pciidex.c @ 310]
895c2bfc f73b22fcPCIIDEX!DispatchWmi[d:\srv03rtm\drivers\storage\ide\pciidex\pciidex.c @ 453]
895c2c00 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2c04 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2c08 80a2b404 nt!IopInvalidDeviceRequest [d:\srv03rtm\base\ntos\io\iomgr\internal.c @ 3259]
895c2c0c f73b2194PCIIDEX!DispatchPnp[d:\srv03rtm\drivers\storage\ide\pciidex\pciidex.c @ 394]
895c2c10 895c2b68
895c2c14 f73ae34aPCIIDEX!ControllerAddDevice[d:\srv03rtm\drivers\storage\ide\pciidex\ctlrfdo.c @ 58]
895c2c18 00000000
895c2c1c 00120010
if (NT_SUCCESS( status )) {
IopReadyDeviceObjects( driverObject );
HeadlessKernelAddLogEntry(HEADLESS_LOG_LOAD_SUCCESSFUL, NULL);
*Result = driverObject;
return status;
}