PpReleaseBootDDB
NTSTATUS __stdcall PpReleaseBootDDB(){
INT64 v0;
_ETHREAD *CurrentThread;
NTSTATUS v2;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
ExAcquireResourceExclusiveLite((UINT64)&PnpReplaceEvent + 5792, 1, v0);
if( PpDDBHandle )
{
SdbReleaseDatabase(PpDDBHandle);
PpDDBHandle = 0i64;
ExFreePoolWithTag(PpBootDDB, 0);
PpBootDDB = 0i64;
v2 = 0;
}
else
{
v2 = -1073741823;
}
if( PpDDBPatchHandle )
{
SdbReleaseDatabase(PpDDBPatchHandle);
PpDDBPatchHandle = 0i64;
ExFreePoolWithTag(PpBootDDBPatch, 0);
PpBootDDBPatch = 0i64;
}
ExReleaseResourceLite((PERESOURCE)((char *)&PnpReplaceEvent + 5792));
KeLeaveCriticalRegionThread(KeGetCurrentThread());
return v2;
}Referenced by:
PnpCompleteSystemStartProcess