Função FsRtlRegisterUncProvider (ntifs.h)
A rotina
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 desregister o redirecionador de rede. O identificador retornado será válido somente 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 verdadeiro se o redirecionador de rede der suporte a emailslots. Essa opção normalmente é reservada para uso pelo redirecionador SMB da Microsoft.
Valor de retorno
FsRtlRegisterUncProvider retorna STATUS_SUCCESS com êxito ou um valor NTSTATUS apropriado, como um dos seguintes:
Código de retorno | Descrição |
---|---|
|
O modo de execução do solicitante original para a operação IRP enviada ao MUP não era do modo kernel. |
|
Ocorreu uma violação de acesso ao tentar acessar o dispositivo MUP. |
|
Houve um desalinhamento de dados. |
|
Não havia recursos suficientes disponíveis para alocar memória para buffers. |
|
Um parâmetro inválido foi passado para mup no IRP. |
|
Um parâmetro inválido foi passado no parâmetro |
Observações
Um redirecionador de rede deve registrar-se no MUP para lidar com nomes UNC. O MUP é um componente do modo kernel responsável por canalizar todos os acessos do sistema de arquivos remoto usando um nome UNC (Convenção Universal de Nomenclatura) para um redirecionador de rede (o provedor UNC) que é capaz de lidar com as solicitações do sistema de arquivos remoto. O MUP está envolvido quando um caminho UNC é usado por um aplicativo, conforme ilustrado pelo exemplo a seguir, que pode ser executado a partir 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 redirecionamento 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 pelo MUP até 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, Windows XP e Windows 2000.
Somente um provedor de rede em um sistema pode dar suporte a emailslots. Portanto, o parâmetro
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 passado para IoCreateDevice.
Para desregister um provedor UNC, use FsRtlDeregisterUncProvider e passe o parâmetro MupHandle.
Se um driver se registrar 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 |
---|---|
da Plataforma de Destino |
Universal |
cabeçalho | ntifs.h (inclua Ntifs.h) |
biblioteca | NtosKrnl.lib |
de DLL |
NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
regras de conformidade de DDI | HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm) |