IopRegistryInitializeCallbacks
NTSTATUS __stdcall IopRegistryInitializeCallbacks(){
unsigned int v0;
wchar_t **v1;
wchar_t *v2;
wchar_t *v3;
_UNICODE_STRING DestinationString;
UINT8 FoundFullPath;
v0 = 0;
DestinationString = 0i64;
v1 = &IopRegistryRegisteredCallbacks;
FoundFullPath = 0;
if( off_140C030B0 )
{
v2 = 0i64;
do
{
v3 = v1[6];
if( v3 )
LODWORD(v3) = ((__int64(__fastcall *)(wchar_t **))v3)(v1);
if( (int)v3 < 0 )
{
*((_DWORD *)v1 + 2) = 0;
}
else
{
RtlInitUnicodeString(&DestinationString, *v1);
v1[8] = 0i64;
v1[10] = (wchar_t *)IopRegistryCallback;
v1[11] = v2;
if( IopRegistryOpenDeepestPath(&DestinationString, (VOID **)v1 + 4, &FoundFullPath) >= 0 )
{
ZwNotifyChangeKey(
(_HANDLE)v1[4],
0,
(PIO_APC_ROUTINE)(v1 + 8),
(PVOID)1,
(PIO_STATUS_BLOCK)v1 + 6,
*((_DWORD *)v1 + 2),
1u,
0i64,
0,
1u);
if( FoundFullPath )
*((_DWORD *)v1 + 10) |= 1u;
}
}
v2 = (wchar_t *)++v0;
v1 = &(&IopRegistryRegisteredCallbacks)[14 * v0];
}
while( v1[2] );
}
return 0;
}Referenced by:
IoInitSystem