Compartir a través de


Función FsRtlRegisterUncProviderEx (ntifs.h)

La rutina FsRtlRegisterUncProviderEx registra un redirector de red como proveedor de convención de nomenclatura universal (UNC) con el sistema varios proveedores UNC (MUP).

Sintaxis

NTSTATUS FsRtlRegisterUncProviderEx(
  [out] PHANDLE                  MupHandle,
  [in]  PCUNICODE_STRING         RedirDevName,
  [in]  PDEVICE_OBJECT           DeviceObject,
  [in]  FSRTL_UNC_PROVIDER_FLAGS Flags
);

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 FsRtlDeregisterUncProvider para anular el registro del redirector de red. El identificador devuelto solo es válido si FsRtlRegisterUncProviderEx devuelve STATUS_SUCCESS.

[in] RedirDevName

Puntero a una cadena Unicode que contiene el nombre del dispositivo del redirector de red. MUP usa este nombre de dispositivo para crear un vínculo simbólico en el espacio de nombres del Administrador de objetos cuyo destino es \Device\Mup.

[in] DeviceObject

Puntero a un objeto de dispositivo sin nombre que representa el redirector de red.

[in] Flags

Máscara de bits que indica las características admitidas por el redirector de red. Un redirector de red establece un bit para indicar que se admite una característica. El parámetro Flags tiene dos opciones:

FSRTL_UNC_PROVIDER_FLAGS_MAILSLOTS_SUPPORTED

El redirector de red admite mailslots. Esta opción normalmente está reservada para que la use el redirector de SMB de Microsoft.

FSRTL_UNC_PROVIDER_FLAGS_CSC_ENABLED

El redirector de red admite el acceso sin conexión mediante el almacenamiento en caché del lado cliente.

Valor devuelto

FsRtlRegisterUncProviderEx devuelve STATUS_SUCCESS si se ejecuta correctamente o un valor NTSTATUS adecuado, como uno de los siguientes:

Código devuelto Descripción
STATUS_ACCESS_DENIED
El modo de solicitante del IRP que se envía a MUP no era del modo kernel.
STATUS_ACCESS_VIOLATION
Se produjo una infracción de acceso al intentar acceder al dispositivo MUP.
STATUS_DATATYPE_MISALIGNMENT
Hubo un error de alineación de los datos.
STATUS_INSUFFICIENT_RESOURCES
No había recursos suficientes disponibles para asignar memoria para los búferes.
STATUS_INVALID_DEVICE_REQUEST
Se realizó una solicitud para registrar un proveedor conocido que ya estaba registrado.
STATUS_INVALID_PARAMETER
El parámetro RedirDevName no era válido porque la longitud de RedirDevName era cero.
STATUS_OBJECT_TYPE_MISMATCH
Se encontró un error de coincidencia de tipo de objeto con el parámetro DeviceObject .

Comentarios

Un redirector de red debe registrarse con el proveedor UNC (MUP) múltiple para controlar los nombres de convención de nomenclatura universal (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.

Para los redireccionadores de red que se ajustan al modelo de redirector de Windows Vista, 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.

FsRtlRegisterUncProviderEx envía un control privado del sistema de archivos (FSCTL) a MUP para realizar el registro.

El nombre del dispositivo especificado en el parámetro RedirDevName de la llamada a FsRtlRegisterUncProviderEx se convierte en un vínculo simbólico a \device\Mup en el espacio de nombres del administrador de objetos. Además, una solicitud abierta del nombre del dispositivo, RedirDevName, se enrutará al objeto de dispositivo redirector de red real al que apunta el parámetro DeviceObject .

Los redireccionadores de red que llaman a FsRtlRegisterUncProviderEx no deben registrarse como sistema de archivos (los redireccionadores de red no deben llamar a IoRegisterFileSystem). Los miniireccionadores de red que usan RDBSS de Windows Vista (vinculación dinámica o estática) no se registrarán como sistema de archivos.

Los objetos de archivo de la pila remota del sistema de archivos que pertenece a un redirector de red que se ajusta al modelo de redirector de Windows Vista se resuelven en MUP. Por lo tanto , IoGetDeviceAttachmentBaseRef devuelve el objeto de dispositivo para MUP, no el redirector de red que posee el objeto de archivo. Sin embargo, el contenido del objeto de archivo sigue siendo propiedad del redirector de red.

El valor del Registro ProviderOrder determina el orden en que MUP emite solicitudes de resolución de prefijos a redirecdores de red individuales. Este orden se puede cambiar dinámicamente sin un reinicio. Este valor del Registro se encuentra en la siguiente clave del Registro:

HKLM\CurrentControlSet\Control\NetworkProvider\Order

Solo un proveedor de red de un sistema puede admitir mailslots. Por lo tanto, la opción FSRTL_UNC_PROVIDER_FLAGS_MAILSLOTS_SUPPORTED del parámetro Flags solo se establece normalmente para el redirector de SMB de Microsoft.

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 (llamando a IoCreateDevice con el parámetro DeviceType establecido en FILE_DEVICE_DISK_FILE_SYSTEM), el controlador no debe llamar a FsRtlRegisterUncProviderEx 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
Cliente mínimo compatible Windows Vista
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)

Consulte también

FsRtlCancellableWaitForSingleObject

FsRtlDeregisterUncProvider

FsRtlRegisterUncProvider

IOCTL_REDIR_QUERY_PATH_EX

IoCreateDevice

IoGetDeviceAttachmentBaseRef

IoRegisterFileSystem