Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Подпрограмма 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, например одно из следующих:
| Возвращаемый код | Описание |
|---|---|
|
Режим запроса IRP, отправляемый в MUP, не был из режима ядра. |
|
Нарушение доступа произошло при попытке доступа к устройству MUP. |
|
Произошло несоответствие данных. |
|
Недостаточно ресурсов для выделения памяти для буферов. |
|
Был сделан запрос на регистрацию известного поставщика, который уже зарегистрирован. |
|
Параметр RedirDevName был недопустимым, так как длина RedirDevName была нулевой. |
|
С параметром 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 |