FsRtlpRegisterUncProvider
NTSTATUS __stdcall FsRtlpRegisterUncProvider(
_UNICODE_STRING *RedirDevName,
_DEVICE_OBJECT *DeviceObject,
_FSRTL_UNC_PROVIDER_REGISTRATION *Registration,
VOID **MupHandle){
LPWSTR v8;
int v9;
void *Handle;
Handle = (void *)-1i64;
if( RedirDevName
&& RedirDevName->Buffer
&& RedirDevName->Length
&& RedirDevName->MaximumLength
&& (Registration->Version < 0x101u || DeviceObject) )
{
KeWaitForSingleObject((UINT64)&Semaphore, 0, 0, 0, 0i64);
v9 = FsRtlpOpenDev(&Handle, v8);
if( v9 < 0
|| (v9 = FsRtlpRegisterProviderWithMUP(Handle, (const VOID **)RedirDevName, DeviceObject, Registration), v9 < 0) )
{
if( (char *)Handle - 1 <= (char *)0xFFFFFFFFFFFFFFFDi64 )
ZwClose((_HANDLE)Handle);
*MupHandle = (VOID *)-1i64;
}
else
{
++FsRtlpRedirs;
*MupHandle = Handle;
}
KeReleaseSemaphore(&Semaphore, 0i64, 1i64, 0);
return v9;
}
else
{
*MupHandle = (VOID *)-1i64;
return -1073741811;
}
}Referenced by:
FsRtlRegisterUncProvider
FsRtlRegisterUncProviderEx
FsRtlRegisterUncProviderEx2