PiProcessReenumeration
INT64 __fastcall PiProcessReenumeration(INT64 a1){
INT64 v1;
struct _DMA_ADAPTER *v3;
INT64 FlushAdapterBuffers;
unsigned int v5;
INT64 v7;
v7 = 0i64;
v3 = *(struct _DMA_ADAPTER **)(a1 + 16);
FlushAdapterBuffers = (INT64)v3[19].DmaOperations->FlushAdapterBuffers;
if( (unsigned int)(*(_DWORD *)(FlushAdapterBuffers + 300) - 787) <= 1 )
{
HalPutDmaAdapter(v3);
return 3221225558i64;
}
else
{
if( *(_DWORD *)(a1 + 24) == 8 )
{
if( *(_BYTE *)(a1 + 32) )
PipClearDevNodeFlags((_DEVICE_NODE *)v3[19].DmaOperations->FlushAdapterBuffers, 0x80000000ui64);
v5 = 1;
}
else
{
v5 = 2;
}
LOBYTE(v1) = v5 != 1;
PiMarkDeviceTreeForReenumeration((_DEVICE_NODE *)FlushAdapterBuffers, v1);
BYTE4(v7) = PnPBootDriversInitialized;
LODWORD(v7) = 3;
PipProcessDevNodeTree(FlushAdapterBuffers, a1, (INT64)&v7, v5, 0, 0, 0);
return 0i64;
}
}Referenced by:
PnpDeviceActionWorker