FsRtlpRegisterUncProvider
VOID FsRtlpRegisterUncProvider(INT64 a1, INT64 a2, INT64 a3, INT64 a4, INT64 a5, INT64 a6, ...){
LPWSTR v10;
HANDLE Handle;
Handle = (HANDLE)-1i64;
if( a1 && *(_QWORD *)(a1 + 8) && *(_WORD *)a1 && *(_WORD *)(a1 + 2) && (*(_WORD *)(a3 + 2) < 0x101u || a2) )
{
KeWaitForSingleObject(&FsRtlpUncSemaphore, Executive, 0, 0, 0i64);
if( FsRtlpOpenDev(&Handle, v10) < 0 || (int)FsRtlpRegisterProviderWithMUP(Handle, (const void **)a1, a2, a3) < 0 )
{
if( (char *)Handle - 1 <= (char *)0xFFFFFFFFFFFFFFFDi64 )
ZwClose(Handle);
*(_QWORD *)a4 = -1i64;
}
else
{
++FsRtlpRedirs;
*(_QWORD *)a4 = Handle;
}
KeReleaseSemaphore(&FsRtlpUncSemaphore, 0i64, 1i64, 0);
}
else
{
*(_QWORD *)a4 = -1i64;
}
}Referenced by:
FsRtlRegisterUncProviderEx