PnpCallAddDevice
__int64 __fastcall PnpCallAddDevice(
__int64 a1,
__int64 a2,
__int64 (__fastcall *a3)(struct _DRIVER_OBJECT *, _DEVICE_OBJECT *),
INT64 a4){
int v4;
int v8;
int v9;
CHAR *v10;
EVENT_DESCRIPTOR *v11;
MCGEN_TRACE_CONTEXT *v12;
unsigned int v13;
GUID *v14;
INT64 v16[4];
struct _GROUP_AFFINITY PreviousAffinity;
v16[0] = 0i64;
v4 = a4;
PreviousAffinity = 0i64;
if( (byte_140C130BB & 8) != 0 )
McTemplateK0qhzr1z_EtwWriteTransfer(
*(_WORD *)(a2 + 56) >> 1,
a2,
(INT64)a3,
a4,
*(_WORD *)(a2 + 56) >> 1,
*(_QWORD *)(a2 + 64),
*(const WCHAR **)(a1 + 48));
v8 = PnpSetDeviceAffinityThread(*(_DEVICE_OBJECT **)(a1 + 32), &PreviousAffinity);
v16[1] = a1;
v16[2] = a2;
v9 = v8;
v16[3] = (INT64)KeGetCurrentThread();
v10 = PnpEnableWatchdog(4i64, (INT64)v16);
v13 = PpvUtilCallAddDevice(*(_DEVICE_OBJECT **)(a1 + 32), (struct _DRIVER_OBJECT *)a2, a3, v4 + 1);
if( v10 )
PnpDisableWatchdog((INT64)v10);
if( v9 )
KeRevertToUserGroupAffinityThread(&PreviousAffinity);
if( (byte_140C130BB & 8) != 0 )
McTemplateK0q_EtwWriteTransfer(v12, v11, v14, v13);
return v13;
}Referenced by:
PipCallDriverAddDevice