PnpGetRelatedTargetDevice
NTSTATUS __fastcall PnpGetRelatedTargetDevice(PFILE_OBJECT FileObject, _QWORD *a2){
KIRQL v4;
_DEVICE_OBJECT *RelatedDeviceObject;
PVOID v6;
NTSTATUS v7;
NTSTATUS v8;
__int64 v9;
__int64 v10;
INT64 result;
int v12;
_DEVICE_OBJECT *v13;
PFILE_OBJECT v14;
PVOID P;
P = 0i64;
*a2 = 0i64;
v4 = KeAcquireQueuedSpinLock(0xAui64);
RelatedDeviceObject = IoGetRelatedDeviceObject(FileObject);
KeReleaseQueuedSpinLock(0xAui64, v4);
if( !RelatedDeviceObject )
return -1073741810;
memset((INT64)&result, 0i64);
LOWORD(result) = 1819;
v12 = 4;
v13 = RelatedDeviceObject;
v14 = FileObject;
v7 = PnpSendIrp(RelatedDeviceObject, (PIO_STACK_LOCATION)&result, v6, 0i64, &P);
v8 = v7;
if( v7 < 0 )
return v7;
if( !P )
return -1073741810;
v9 = *(_DWORD *)P == 1 ? *((_QWORD *)P + 1) : 0i64;
ExFreePoolWithTag(P, 0);
if( !v9 )
return -1073741810;
v10 = *(_QWORD *)(*(_QWORD *)(v9 + 312) + 40i64);
if( !v10 )
return -1073741810;
*a2 = v10;
return v8;
}Referenced by:
IoGetRelatedTargetDevice
IoRegisterPlugPlayNotification
PiUEventGetDeviceInstanceIdFromUserHandle