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

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

Синтаксис

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

Параметры

[out] MupHandle

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

[in] RedirDevName

Указатель на строку Юникода, содержащую имя устройства сетевого перенаправления. MUP использует это имя устройства для создания символьной ссылки в пространстве имен Диспетчера объектов, целевой объект которого — Device\Mup.

[in] DeviceObject

Указатель на неназванный объект устройства, представляющий сетевой перенаправитель.

[in] Flags

Битовая маска, указывающая функции, поддерживаемые сетевым перенаправителем. Сетевой перенаправление задает бит, чтобы указать, что функция поддерживается. Параметр флагов имеет два варианта:

FSRTL_UNC_PROVIDER_FLAGS_MAILSLOTS_SUPPORTED

Средство перенаправления сети поддерживает почтовые ящики. Обычно этот параметр зарезервирован для использования перенаправлением Microsoft SMB.

FSRTL_UNC_PROVIDER_FLAGS_CSC_ENABLED

Средство перенаправления сети поддерживает автономный доступ с помощью кэширования на стороне клиента.

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

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

Возвращаемый код Описание
STATUS_ACCESS_DENIED
Режим запроса IRP, отправляемый в MUP, не был из режима ядра.
STATUS_ACCESS_VIOLATION
Нарушение доступа произошло при попытке доступа к устройству MUP.
STATUS_DATATYPE_MISALIGNMENT
Произошло несоответствие данных.
STATUS_INSUFFICIENT_RESOURCES
Недостаточно ресурсов для выделения памяти для буферов.
STATUS_INVALID_DEVICE_REQUEST
Был сделан запрос на регистрацию известного поставщика, который уже зарегистрирован.
STATUS_INVALID_PARAMETER
Параметр RedirDevName был недопустимым, так как длина RedirDevName была нулевой.
STATUS_OBJECT_TYPE_MISMATCH
С параметром DeviceObject обнаружен несоответствие типа объекта.

Замечания

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

notepad \\server\public\readme.txt

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

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

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

Имя устройства, указанное в параметре RedirDevName в вызове FsRtlRegisterUncProviderEx становится символьной ссылкой на \device\Mup в пространстве имен диспетчера объектов. Кроме того, открытый запрос имени устройства, RedirDevName, перенаправит сам объект устройства перенаправления сети, на который указывает параметр DeviceObject.

Сетевые перенаправления, вызывающие FsRtlRegisterUncProviderEx, не должны регистрировать себя в качестве файловой системы (сетевые перенаправления не должны вызывать IoRegisterFileSystem). Сетевые мини-перенаправления, использующие RDBSS Windows Vista (динамическую или статическую компоновку), не будут зарегистрированы в качестве файловой системы.

Объекты файлов в стеке удаленной файловой системы, принадлежащие сетевому перенаправлению, который соответствует модели перенаправления Windows Vista, разрешенной в MUP. Поэтому IoGetDeviceAttachmentBaseRef возвращает объект устройства для MUP, а не сетевой перенаправление, принадлежащий объекту файла. Однако содержимое объекта файла по-прежнему принадлежит сетевому перенаправлению.

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

HKLM\CurrentControlSet\Control\NetworkProvider\Order

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

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

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

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

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

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

Требования

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

См. также

FsRtlCancellableWaitForSingleObject

FsRtlDeregisterUncProvider

FsRtlRegisterUncProvider

IOCTL_REDIR_QUERY_PATH_EX

IoCreateDevice

IoGetDeviceAttachmentBaseRef

IoRegisterFileSystem