Функция FsRtlRegisterUncProvider (ntifs.h)

FsRtlRegisterUncProvider подпрограмма регистрирует перенаправитель сети в качестве поставщика универсального соглашения об именовании (UNC) с системой нескольких поставщиков UNC (MUP).

Синтаксис

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

Параметры

[out] MupHandle

Указатель на расположение, в котором возвращается дескриптор MUP, используемый при вызове FsRtlRegisterUncProvider для отмены регистрации сетевого перенаправления. Возвращенный дескриптор действителен, только если FsRtlRegisterUncProvider возвращает STATUS_SUCCESS.

RedirectorDeviceName

Указатель на строку Юникода, содержащую имя устройства сетевого перенаправления.

[in] MailslotsSupported

Установите значение TRUE, если сетевой перенаправление поддерживает почтовые слоты. Обычно этот параметр зарезервирован для использования перенаправлением Microsoft SMB.

Возвращаемое значение

FsRtlRegisterUncProvider возвращает STATUS_SUCCESS при успешном выполнении или соответствующее значение NTSTATUS, например одно из следующих:

Возвращаемый код Описание
STATUS_ACCESS_DENIED
Режим выполнения исходного запроса для операции IRP, отправленной в MUP, не был из режима ядра.
STATUS_ACCESS_VIOLATION
Нарушение доступа произошло при попытке доступа к устройству MUP.
STATUS_DATATYPE_MISALIGNMENT
Произошло несоответствие данных.
STATUS_INSUFFICIENT_RESOURCES
Недостаточно ресурсов для выделения памяти для буферов.
STATUS_INVALID_HANDLE
Недопустимый параметр был передан в MUP в IRP.
STATUS_INVALID_USER_BUFFER
Недопустимый параметр был передан в параметре redirDevName или ненормальном завершении.

Замечания

Сетевой перенаправление должен зарегистрировать в MUP для обработки имен UNC. MUP — это компонент режима ядра, отвечающий за передачу всех удаленных файловых систем доступа с помощью имени универсального соглашения об именовании (UNC) на сетевой перенаправление (поставщик UNC), который может обрабатывать запросы удаленной файловой системы. MUP участвует в том случае, если UNC-путь используется приложением, как показано в следующем примере, который можно выполнить из командной строки:

notepad \\server\public\readme.txt

MUP не участвует во время операции, которая создает сопоставленную букву диска (например, команду NET USE). Эта операция обрабатывается несколькими маршрутизаторами поставщиков (MPR) и библиотекой DLL поставщика WNet в пользовательском режиме для сетевого перенаправления. Однако библиотека DLL поставщика WNet в пользовательском режиме может напрямую взаимодействовать с драйвером сетевого перенаправления в режиме ядра во время этой операции.

В Windows Server 2003, Windows XP и Windows 2000 удаленные операции с файлами, выполняемые на сопоставленном диске, который не представляет диск распределенной файловой системы (DFS), не проходит через MUP. Эти операции переходят непосредственно к поставщику сети, обрабатывающего сопоставление букв диска.

Для сетевых перенаправлений, соответствующих модели Windows Vistaredirector, MUP участвует даже при использовании сопоставленного сетевого диска. Операции с файлами, выполняемые на сопоставленном диске, проходят через MUP с сетевым перенаправлением. Обратите внимание, что в этом случае MUP просто передает операцию сетевому перенаправлению, который участвует.

Сетевые перенаправления, соответствующие модели перенаправления Windows Vista, должны использовать FsRtlRegisterUncProviderEx, а не FsRtlRegisterUncProvider.

FsRtlRegisterUncProvider отправляет в MUP частный элемент управления файловой системой (FSCTL) для выполнения регистрации.

Значение реестра ProviderOrder определяет порядок, в котором MUP выдает запросы на разрешение префиксов отдельным сетевым перенаправлениям. Это значение реестра находится в следующем разделе реестра:

HKLM\CurrentControlSet\Control\NetworkProvider\Order

Изменения в значении реестра ProviderOrder требуют перезагрузки для принятия в силу MUP в Windows Server 2003, Windows XP и Windows 2000.

Только один поставщик сети в системе может поддерживать почтовые ящики. Поэтому параметр MailslotsSupported обычно имеет значение TRUE для перенаправления Microsoft SMB.

Драйвер, вызывающий IoCreateDevice для создания объекта устройства для сетевого перенаправления, который регистрируется в качестве поставщика UNC (драйвер, вызывающий FsRtlRegisterUncProvider) должен передавать FILE_REMOTE_DEVICE в качестве одного из вариантов в параметре DeviceCharacteristics, передаваемом IoCreateDevice.

Чтобы отменить регистрацию поставщика UNC, используйте FsRtlDeregisterUncProvider и передайте параметр MupHandle.

Если драйвер регистрируется в качестве локальной файловой системы диска (вызовы IoCreateDevice с параметром DeviceType задано значение FILE_DEVICE_DISK_FILE_SYSTEM, а не FILE_NETWORK_FILE_SYSTEM, например), драйвер не должен вызывать FsRtlRegisterUncProvider для регистрации в качестве поставщика UNC в MUP.

Дополнительные сведения см. в следующих разделах руководства по проектированию:

поддержка именования UNC и MUP

изменения MUP в Microsoft Windows Vista

Требования

Требование Ценность
целевая платформа Всеобщий
заголовка ntifs.h (include Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
правил соответствия DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

См. также

FsRtlDeregisterUncProvider

FsRtlRegisterUncProviderEx

IOCTL_REDIR_QUERY_PATH_EX

IoCreateDevice