Função FsRtlRegisterUncProvider (ntifs.h)

A rotina FsRtlRegisterUncProvider registra um redirecionador de rede como um provedor UNC (convenção de nomenclatura universal) com o MUP (provedor UNC múltiplo) do sistema.

Sintaxe

NTSTATUS FsRtlRegisterUncProvider(
  [out] PHANDLE          MupHandle,
        PCUNICODE_STRING RedirectorDeviceName,
  [in]  BOOLEAN          MailslotsSupported
);

Parâmetros

[out] MupHandle

Um ponteiro para um local no qual retornar um identificador MUP a ser usado ao chamar FsRtlRegisterUncProvider para cancelar o registro do redirecionador de rede. O identificador retornado só será válido se FsRtlRegisterUncProvider retornar STATUS_SUCCESS.

RedirectorDeviceName

Um ponteiro para uma cadeia de caracteres Unicode que contém o nome do dispositivo do redirecionador de rede.

[in] MailslotsSupported

Defina como TRUE se o redirecionador de rede der suporte a emailslots. Essa opção normalmente é reservada para uso pelo redirecionador SMB da Microsoft.

Retornar valor

FsRtlRegisterUncProvider retorna STATUS_SUCCESS com êxito ou um valor NTSTATUS apropriado, como um dos seguintes:

Código de retorno Descrição
STATUS_ACCESS_DENIED
O modo de execução do solicitante original para a operação IRP enviada ao MUP não era do modo kernel.
STATUS_ACCESS_VIOLATION
Ocorreu uma violação de acesso ao tentar acessar o dispositivo MUP.
STATUS_DATATYPE_MISALIGNMENT
Houve um desalinhamento de dados.
STATUS_INSUFFICIENT_RESOURCES
Não havia recursos suficientes disponíveis para alocar memória para buffers.
STATUS_INVALID_HANDLE
Um parâmetro inválido foi passado para mup no IRP.
STATUS_INVALID_USER_BUFFER
Um parâmetro inválido foi passado no parâmetro RedirDevName ou ocorreu um encerramento anormal.

Comentários

Um redirecionador de rede deve se registrar no MUP para manipular nomes UNC. O MUP é um componente do modo kernel responsável por canalizar todos os acessos remotos do sistema de arquivos usando um nome UNC (Convenção Universal de Nomenclatura) para um redirecionador de rede (o provedor UNC) capaz de lidar com as solicitações remotas do sistema de arquivos. O MUP está envolvido quando um caminho UNC é usado por um aplicativo, conforme ilustrado pelo exemplo a seguir, que pode ser executado de uma linha de comando:

notepad \\server\public\readme.txt

O MUP não está envolvido durante uma operação que cria uma letra de unidade mapeada (o comando "NET USE", por exemplo). Essa operação é tratada pelo MPR (roteador de vários provedores) e uma DLL do provedor WNet no modo de usuário para o redirecionador de rede. No entanto, uma DLL do provedor WNet no modo de usuário pode se comunicar diretamente com um driver de redirecionador de rede no modo kernel durante essa operação.

No Windows Server 2003, Windows XP e Windows 2000, as operações de arquivo remoto executadas em uma unidade mapeada que não representa uma unidade do DFS (Sistema de Arquivos Distribuído) não passam pelo MUP. Essas operações vão diretamente para o provedor de rede que lidou com o mapeamento de letras da unidade.

Para redirecionadores de rede que estão em conformidade com o modelo do Windows Vistaredirector, o MUP está envolvido mesmo quando uma unidade de rede mapeada é usada. As operações de arquivo executadas na unidade mapeada passam por MUP para o redirecionador de rede. Observe que, nesse caso, o MUP simplesmente passa a operação para o redirecionador de rede envolvido.

Os redirecionadores de rede que estão em conformidade com o modelo de redirecionador do Windows Vista devem usar FsRtlRegisterUncProviderEx, não FsRtlRegisterUncProvider.

FsRtlRegisterUncProvider envia um FSCTL (controle do sistema de arquivos privado) ao MUP para executar o registro.

O valor do registro ProviderOrder determina a ordem na qual o MUP emite solicitações de resolução de prefixo para redirecionadores de rede individuais. Esse valor do Registro está localizado na seguinte chave do Registro:

HKLM\CurrentControlSet\Control\NetworkProvider\Order

As alterações no valor do Registro ProviderOrder exigem que uma reinicialização entre em vigor no MUP no Windows Server 2003, no Windows XP e no Windows 2000.

Somente um provedor de rede em um sistema pode dar suporte a emailslots. Portanto, o parâmetro MailslotsSupported normalmente é definido apenas como TRUE para o redirecionador SMB da Microsoft.

Um driver que chama IoCreateDevice para criar um objeto de dispositivo para um redirecionador de rede que se registra como um provedor UNC (um driver que chama FsRtlRegisterUncProvider) deve passar FILE_REMOTE_DEVICE como uma das opções no parâmetro DeviceCharacteristics que é passado para IoCreateDevice.

Para cancelar o registro de um provedor UNC, use FsRtlDeregisterUncProvider e passe o parâmetro MupHandle .

Se um driver for registrado como um sistema de arquivos de disco local (chama IoCreateDevice com o parâmetro DeviceType definido como FILE_DEVICE_DISK_FILE_SYSTEM em vez de FILE_NETWORK_FILE_SYSTEM, por exemplo), o driver não deve chamar FsRtlRegisterUncProvider para se registrar como um provedor UNC com MUP.

Para obter mais informações, consulte as seguintes seções no Guia de Design:

Suporte para nomenclatura UNC e MUP

Alterações de MUP no Microsoft Windows Vista

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho ntifs.h (inclua Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Regras de conformidade da DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Confira também

FsRtlDeregisterUncProvider

FsRtlRegisterUncProviderEx

IOCTL_REDIR_QUERY_PATH_EX

IoCreateDevice