PiDqDeleteUserObjectFromLoadedHives
NTSTATUS __fastcall PiDqDeleteUserObjectFromLoadedHives(const wchar_t *a1, int a2){
__int64 v4;
NTSTATUS result;
unsigned int i;
__int64 v7;
HANDLE KeyHandle;
__int64 v9;
HANDLE Handle;
__int16 v11[256];
KeyHandle = 0i64;
Handle = 0i64;
if( PiPnpRtlCtx )
v4 = *(_QWORD *)(PiPnpRtlCtx + 224);
else
v4 = 0i64;
result = SysCtxRegOpenKey(v4, 0i64, L"\\REGISTRY\\USER", 0, 8u, &KeyHandle);
if( result >= 0 )
{
for( i = 0; ; ++i )
{
LODWORD(v9) = 256;
result = RegRtlEnumKey(KeyHandle, i, (char *)v11, (unsigned int *)&v9);
if( result < 0 )
break;
if( PiPnpRtlCtx )
v7 = *(_QWORD *)(PiPnpRtlCtx + 224);
else
v7 = 0i64;
if( (int)SysCtxRegOpenKey(v7, (char *)KeyHandle, (const WCHAR *)v11, 0, 1u, &Handle) >= 0 )
{
PiDqDeleteUserObject(Handle, (WCHAR *)a1, (unsigned int)a2);
ZwClose(Handle);
}
}
}
if( KeyHandle )
return ZwClose(KeyHandle);
return result;
}Referenced by:
No references.