Función FsRtlRegisterUncProvider (ntifs.h)
La rutina FsRtlRegisterUncProvider registra un redirector de red como proveedor de convención de nomenclatura universal (UNC) con el sistema varios proveedores UNC (MUP).
Sintaxis
NTSTATUS FsRtlRegisterUncProvider(
[out] PHANDLE MupHandle,
PCUNICODE_STRING RedirectorDeviceName,
[in] BOOLEAN MailslotsSupported
);
Parámetros
[out] MupHandle
Puntero a una ubicación en la que se va a devolver un identificador MUP que se va a usar al llamar a FsRtlRegisterUncProvider para anular el registro del redirector de red. El identificador devuelto solo es válido si FsRtlRegisterUncProvider devuelve STATUS_SUCCESS.
RedirectorDeviceName
Puntero a una cadena Unicode que contiene el nombre del dispositivo del redirector de red.
[in] MailslotsSupported
Se establece en TRUE si el redirector de red admite mailslots. Esta opción normalmente está reservada para que la use el redirector de SMB de Microsoft.
Valor devuelto
FsRtlRegisterUncProvider devuelve STATUS_SUCCESS si se ejecuta correctamente o un valor NTSTATUS adecuado, como uno de los siguientes:
Código devuelto | Descripción |
---|---|
|
El modo de ejecución del solicitante original para la operación IRP enviada a MUP no era del modo kernel. |
|
Se produjo una infracción de acceso al intentar acceder al dispositivo MUP. |
|
Hubo un error de alineación de los datos. |
|
No había recursos suficientes disponibles para asignar memoria para los búferes. |
|
Se pasó un parámetro no válido a MUP en irP. |
|
Se pasó un parámetro no válido en el parámetro RedirDevName o se produjo una terminación anómala. |
Comentarios
Un redirector de red debe registrarse con el MUP para controlar los nombres UNC. MUP es un componente en modo kernel responsable de canalizar todos los accesos remotos del sistema de archivos mediante un nombre de Convención de nomenclatura universal (UNC) a un redirector de red (el proveedor UNC) que es capaz de controlar las solicitudes del sistema de archivos remotos. MUP está implicado cuando una aplicación usa una ruta de acceso UNC como se muestra en el ejemplo siguiente que se puede ejecutar desde una línea de comandos:
notepad \\server\public\readme.txt
MUP no está implicado durante una operación que crea una letra de unidad asignada (por ejemplo, el comando "NET USE"). Esta operación se controla mediante el enrutador de varios proveedores (MPR) y un archivo DLL de proveedor WNet en modo de usuario para el redirector de red. Sin embargo, un archivo DLL del proveedor de WNet en modo de usuario podría comunicarse directamente con un controlador redirector de red en modo kernel durante esta operación.
En Windows Server 2003, Windows XP y Windows 2000, las operaciones de archivos remotos realizadas en una unidad asignada que no representa una unidad del Sistema de archivos distribuido (DFS) no pasan por MUP. Estas operaciones van directamente al proveedor de red que controló la asignación de letras de unidad.
En el caso de los redireccionadores de red que se ajustan al modelo de Windows Vistaredirector, MUP está implicado incluso cuando se usa una unidad de red asignada. Las operaciones de archivo realizadas en la unidad asignada pasan por MUP al redirector de red. Tenga en cuenta que, en este caso, MUP simplemente pasa la operación al redirector de red implicado.
Los redireccionadores de red que cumplan el modelo de redirector de Windows Vista deben usar FsRtlRegisterUncProviderEx, no FsRtlRegisterUncProvider.
FsRtlRegisterUncProvider envía un control privado del sistema de archivos (FSCTL) a MUP para realizar el registro.
El valor del Registro ProviderOrder determina el orden en que MUP emite solicitudes de resolución de prefijos a redirecdores de red individuales. Este valor del Registro se encuentra en la siguiente clave del Registro:
HKLM\CurrentControlSet\Control\NetworkProvider\Order
Los cambios en el valor del Registro ProviderOrder requieren un reinicio para surtir efecto en MUP en Windows Server 2003, Windows XP y Windows 2000.
Solo un proveedor de red de un sistema puede admitir mailslots. Por lo tanto, el parámetro MailslotsSupported normalmente solo se establece en TRUE para el redirector de SMB de Microsoft.
Un controlador que llama a IoCreateDevice para crear un objeto de dispositivo para un redirector de red que se registra como proveedor UNC (un controlador que llama a FsRtlRegisterUncProvider) debe pasar FILE_REMOTE_DEVICE como una de las opciones del parámetro DeviceCharacteristics que se pasa a IoCreateDevice.
Para anular el registro de un proveedor UNC, use FsRtlDeregisterUncProvider y pase el parámetro MupHandle .
Si un controlador se registra como un sistema de archivos de disco local (llama a IoCreateDevice con el parámetro DeviceType establecido en FILE_DEVICE_DISK_FILE_SYSTEM en lugar de FILE_NETWORK_FILE_SYSTEM, por ejemplo), el controlador no debe llamar a FsRtlRegisterUncProvider para registrarse como proveedor UNC con MUP.
Para obtener más información, vea las secciones siguientes en la Guía de diseño:
Compatibilidad con la nomenclatura UNC y MUP
Cambios de MUP en Microsoft Windows Vista
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Encabezado | ntifs.h (incluya Ntifs.h) |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Reglas de cumplimiento de DDI | HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm) |