SmKmFileInfoCleanup
VOID __stdcall SmKmFileInfoCleanup(_SMKM_FILE_INFO *FileInfo){
void *v2;
char v3;
char v4;
_ADAPTER_OBJECT *v5;
_IRP *v6;
_ADAPTER_OBJECT *v7;
_PRIVILEGE_SET *v8;
IoSetThreadHardErrorMode(0);
v2 = (void *)*((_QWORD *)FileInfo + 4);
v4 = v3;
if( v2 )
PnpUnregisterPlugPlayNotification(v2, 0);
v5 = (_ADAPTER_OBJECT *)*((_QWORD *)FileInfo + 2);
if( v5 )
HalPutDmaAdapter(v5);
v6 = (_IRP *)*((_QWORD *)FileInfo + 5);
if( v6 )
{
IoReuseIrp(v6, 0);
SmKmSendUsageNotification(*((PIRP *)FileInfo + 5), *((PFILE_OBJECT *)FileInfo + 1), 1ui64);
IoFreeIrp(*((PIRP *)FileInfo + 5));
}
v7 = (_ADAPTER_OBJECT *)*((_QWORD *)FileInfo + 1);
if( v7 )
HalPutDmaAdapter(v7);
if( *(_QWORD *)FileInfo )
ZwClose(*(_QWORD *)FileInfo);
v8 = (_PRIVILEGE_SET *)*((_QWORD *)FileInfo + 6);
if( v8 )
CmSiFreeMemory(v8);
LOBYTE(v8) = v4;
IoSetThreadHardErrorMode((INT16)v8);
}Referenced by:
SMKM_STORE::SmStCleanup
SmKmFileInfoDuplicate
SmKmStoreFileCreate
SmKmStoreFileCreateForIoType
SmcCacheCleanup