IoAssignResources
NTSTATUS __stdcall IoAssignResources(
_UNICODE_STRING *RegistryPath,
_UNICODE_STRING *DriverClassName,
_DRIVER_OBJECT *DriverObject,
_DEVICE_OBJECT *DeviceObject,
_IO_RESOURCE_REQUIREMENTS_LIST *RequestedResources,
_CM_RESOURCE_LIST **pAllocatedResources){
_DWORD *DeviceNode;
_DRIVER_OBJECT *v9;
_UNICODE_STRING *p_DriverName;
VOID **v11;
VOID **v12;
_DEVOBJ_EXTENSION *DeviceObjectExtension;
_WORD *v14;
__int64 v15;
_WORD *v16;
__int64 v17;
_IO_RESOURCE_REQUIREMENTS_LIST *v18;
if( DeviceObject )
{
DeviceNode = DeviceObject->DeviceObjectExtension->DeviceNode;
if( DeviceNode )
{
if( (DeviceNode[99] & 0x20000) == 0 )
{
if( DriverObject )
{
IoAddTriageDumpDataBlock(DriverObject, (_BYTE *)(unsigned int)DriverObject->Size);
if( DriverObject->DriverName.Length )
{
IoAddTriageDumpDataBlock(&DriverObject->DriverName, (_BYTE *)2);
IoAddTriageDumpDataBlock(DriverObject->DriverName.Buffer, (_BYTE *)DriverObject->DriverName.Length);
}
}
IoAddTriageDumpDataBlock(DeviceObject, (_BYTE *)DeviceObject->Size);
v9 = DeviceObject->DriverObject;
if( v9 )
{
IoAddTriageDumpDataBlock(v9, (_BYTE *)(unsigned int)v9->Size);
p_DriverName = &DeviceObject->DriverObject->DriverName;
if( p_DriverName->Length )
{
IoAddTriageDumpDataBlock(p_DriverName, (_BYTE *)2);
IoAddTriageDumpDataBlock(
DeviceObject->DriverObject->DriverName.Buffer,
(_BYTE *)DeviceObject->DriverObject->DriverName.Length);
}
}
v11 = (VOID **)DeviceObject->DeviceObjectExtension->DeviceNode;
if( v11 )
{
v12 = v11 + 5;
IoAddTriageDumpDataBlock(v11, (_BYTE *)0x310);
if( *(_WORD *)v12 )
{
IoAddTriageDumpDataBlock(v12, (_BYTE *)2);
IoAddTriageDumpDataBlock(v12[1], (_BYTE *)*(unsigned __int16 *)v12);
}
DeviceObjectExtension = DeviceObject->DeviceObjectExtension;
v14 = (char *)DeviceObjectExtension->DeviceNode + 56;
if( *v14 )
{
IoAddTriageDumpDataBlock(v14, (_BYTE *)2);
IoAddTriageDumpDataBlock(
*((VOID **)DeviceObject->DeviceObjectExtension->DeviceNode + 8),
(_BYTE *)*((unsigned __int16 *)DeviceObject->DeviceObjectExtension->DeviceNode + 28));
DeviceObjectExtension = DeviceObject->DeviceObjectExtension;
}
v15 = *((_QWORD *)DeviceObjectExtension->DeviceNode + 2);
if( v15 )
{
v16 = (_WORD *)(v15 + 56);
if( *v16 )
{
IoAddTriageDumpDataBlock(v16, (_BYTE *)2);
v17 = *((_QWORD *)DeviceObject->DeviceObjectExtension->DeviceNode + 2);
IoAddTriageDumpDataBlock(*(VOID **)(v17 + 64), (_BYTE *)*(unsigned __int16 *)(v17 + 56));
}
}
}
KeBugCheckEx(0xCAu, (PVOID)2, DeviceObject, DriverObject, 0i64);
}
}
}
v18 = RequestedResources;
if( RequestedResources && (!RequestedResources->AlternativeLists || !RequestedResources->List[0].Count) )
v18 = 0i64;
if( pAllocatedResources )
*pAllocatedResources = 0i64;
return IopLegacyResourceAllocation(ArbiterRequestLegacyAssigned, DriverObject, DeviceObject, v18, pAllocatedResources);
}Referenced by:
No references.