SmKmFileInfoCleanup
BOOLEAN __fastcall SmKmFileInfoCleanup(__int64 a1){
UINT8 v2;
void *v3;
UINT8 v4;
struct _DMA_ADAPTER *v5;
_IRP *v6;
struct _DMA_ADAPTER *v7;
struct _PRIVILEGE_SET *v8;
v2 = IoSetThreadHardErrorMode(0);
v3 = *(void **)(a1 + 32);
v4 = v2;
if( v3 )
PnpUnregisterPlugPlayNotification(v3, 0);
v5 = *(struct _DMA_ADAPTER **)(a1 + 16);
if( v5 )
HalPutDmaAdapter(v5);
v6 = *(_IRP **)(a1 + 40);
if( v6 )
{
IoReuseIrp(v6, 0i64);
SmKmSendUsageNotification(*(_IRP **)(a1 + 40), *(_FILE_OBJECT **)(a1 + 8), 1ui64);
IoFreeIrp(*(IRP **)(a1 + 40));
}
v7 = *(struct _DMA_ADAPTER **)(a1 + 8);
if( v7 )
HalPutDmaAdapter(v7);
if( *(_QWORD *)a1 )
ZwClose(*(HANDLE *)a1);
v8 = *(struct _PRIVILEGE_SET **)(a1 + 48);
if( v8 )
CmSiFreeMemory(v8);
return IoSetThreadHardErrorMode(v4);
}Referenced by:
SMKM_STORE::SmStCleanup
SmKmFileInfoDuplicate
SmKmStoreFileCreate
SmKmStoreFileCreateForIoType
SmcCacheCleanup