PnpInitializeTargetDeviceRemoveEvent
void __fastcall PnpInitializeTargetDeviceRemoveEvent(
void *a1,
size_t Size,
PVOID Object,
int a4,
int a5,
int a6,
int a7,
int a8,
int a9,
__int64 a10,
__int64 a11,
__int64 a12,
__int64 a13){
__int64 v16;
unsigned int v17;
GUID v18;
ObfReferenceObjectWithTag(Object, 0x56706E50u);
if( Object )
v16 = *(_QWORD *)(*((_QWORD *)Object + 39) + 40i64);
else
v16 = 0i64;
v17 = *(unsigned __int16 *)(v16 + 40) >> 1;
memset((INT64)a1, 0i64);
*((_QWORD *)a1 + 3) = a10;
*((_DWORD *)a1 + 4) = a8;
*((_DWORD *)a1 + 5) = a9;
*((_QWORD *)a1 + 6) = a12;
*((_QWORD *)a1 + 7) = a13;
*((_DWORD *)a1 + 37) = 2 * v17 + 82;
*((_QWORD *)a1 + 17) = a11;
*((_DWORD *)a1 + 16) = 1;
*((_QWORD *)a1 + 19) = Object;
*((_DWORD *)a1 + 32) = 1;
if( a6 )
v18 = GUID_DEVICE_EJECT;
else
v18 = GUID_DEVICE_QUERY_AND_REMOVE;
*((GUID *)a1 + 7) = v18;
if( a5 )
*((_DWORD *)a1 + 36) |= 2u;
if( a4 )
*((_DWORD *)a1 + 36) |= 4u;
if( a7 )
*((_DWORD *)a1 + 36) |= 8u;
if( v17 )
memmove((UINT8 *)a1 + 160, *(UINT8 **)(v16 + 48), 2i64 * v17);
*((_WORD *)a1 + v17 + 80) = 0;
}Referenced by:
PnpSetTargetDeviceRemove
PnpShutdownDevices