IoAttachDevice
NTSTATUS __stdcall IoAttachDevice(
PDEVICE_OBJECT SourceDevice,
PUNICODE_STRING TargetDevice,
PDEVICE_OBJECT *AttachedDevice){
NTSTATUS result;
int v6;
_DEVICE_OBJECT *RelatedDeviceObject;
int v8;
UNICODE_STRING FileHandle;
PVOID Object;
*(_QWORD *)&FileHandle.Length = 0i64;
result = ZwOpenFile(&FileHandle, (PWCHAR)0x80);
if( result >= 0 )
{
Object = 0i64;
v6 = ObReferenceObjectByHandle(*(HANDLE *)&FileHandle.Length, 0, (POBJECT_TYPE)IoFileObjectType, 0, &Object, 0i64);
if( v6 < 0 )
{
ZwClose(*(HANDLE *)&FileHandle.Length);
}
else
{
RelatedDeviceObject = IoGetRelatedDeviceObject((_FILE_OBJECT *)Object);
ZwClose(*(HANDLE *)&FileHandle.Length);
IoAttachDeviceToDeviceStackSafe(SourceDevice, RelatedDeviceObject, AttachedDevice);
v6 = v8;
HalPutDmaAdapter((PADAPTER_OBJECT)Object);
}
return v6;
}
return result;
}Referenced by:
No references.