Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При запуске операционной системы Windows загружает RDBSSS и все драйверы мини-перенаправления сети на основе параметров реестра. Для драйвера мини-перенаправления сети, связанного статически с rdbsslib.lib, драйвер должен вызвать подпрограмму RxDriverEntry из подпрограммы DriverEntry , чтобы инициализировать копию библиотеки RDBSSLIB, связанной с сетевым драйвером. В этом случае подпрограмма RxDriverEntry должна вызываться перед вызовом и использованием других подпрограмм RDBSS. Для немонолитного драйвера мини-перенаправителя сети (драйвера Microsoft SMB Redirector) драйвер устройства rdbss.sys инициализируется в собственной рутины DriverEntry при загрузке.
Мини-редиректор сети регистрируется в RDBSS, когда драйвер загружается ядром, и аннулирует регистрацию в RDBSS при выгрузке драйвера. Сетевой мини-редиректор информирует RDBSS о том, что он был загружен, путем вызова RxRegisterMinirdr, регистрационной подпрограммы, экспортированной из RDBSS. В рамках этого процесса регистрации мини-перенаправитель сети передает параметр RxRegisterMinirdr, который является указателем на большую структуру MINIRDR_DISPATCH. Эта структура содержит сведения о конфигурации для сетевого мини-перенаправителя и таблицу указателей на подпрограммы обратного вызова, реализованные драйвером ядра сетевого мини-перенаправителя. RDBSS выполняет вызовы драйвера мини-перенаправления сети через этот список подпрограмм обратного вызова.
Подпрограмма RxRegisterMinirdr задает все диспетчерские процедуры драйвера сетевого мини-перенаправителя, чтобы указать на подпрограмму диспетчера RDBSS верхнего уровня RxFsdDispatch. Мини-перенаправление сети может переопределить это поведение, сохранив собственные точки входа и перезаписав отправку драйвера с собственными точками входа после вызова RxRegisterMinirdr или задав специальный параметр при вызове RxRegisterMinirdr.
Драйвер мини-перенаправления сети фактически не запускает операцию, пока не получит вызов подпрограммы MRxStart , одной из подпрограмм обратного вызова, переданных в структуре MINIRDR_DISPATCH. Подпрограмма обратного вызова MrxStart должна быть реализована драйвером мини-перенаправления сети, если он хочет получать обратные вызовы для операций, за исключением случаев, когда сетевой мини-перенаправитель сохраняет собственные точки входа диспетчера драйверов. В противном случае RDBSS будет разрешать только следующие пакеты запросов ввода-вывода через драйвер, пока mrxStart не будет успешно возвращен:
- IRP-запросы на создание устройств и операции устройств, в которых FileObject-FileName.Length> в IRPSP равно нулю, а FileObject-RelatedFileObject> имеет значение NULL.
Для любого другого запроса IRP подпрограмма диспетчерской системы RDBSS RxFsdDispatch будет возвращать статус STATUS_REDIRECTOR_NOT_STARTED.
Подпрограмма отправки RDBSS также завершится сбоем запросов на следующие пакеты I/O-запросов:
IRP_MJ_CREATE_MAILSLOT (создание почтового отсека)
IRP_MJ_CREATE_NAMED_PIPE
Функция обратного вызова MrxStart, реализованная сетевым мини-редиректором, вызывается RDBSS, когда вызывается функция RxStartMinirdr. Подпрограмма RDBSS RxStartMinirdr обычно вызывается в результате запроса кода управления файловой системой (FSCTL) или кода управления ввода-вывода (IOCTL) из приложения или службы пользовательского режима для запуска мини-перенаправления сети. Вызов RxStartMinirdr нельзя сделать из подпрограммы DriverEntry мини-перенаправления сети после успешного вызова RxRegisterMinirdr, так как некоторые из начальной обработки требуют завершения инициализации драйвера. После получения вызова RxStartMinirdr RDBSS завершает начальный процесс, вызвав подпрограмму MrxStart для мини-перенаправления сети. Если вызов MrxStart возвращает успех, RDBSS устанавливает внутреннее состояние мини-перенаправителя в RDBSS на RDBSS_STARTED.
RDBSS экспортирует подпрограмму RxSetDomainForMailslotBroadcast, чтобы задать домен для трансляций mailslot. Эта подпрограмма используется во время регистрации, если мини-перенаправление сети поддерживает почтовые слоты.
Удобная подпрограмма, __RxFillAndInstallFastIoDispatch, экспортируемая RDBSS, может использоваться для копирования всех указателей подпрограмм драйвера IRP_MJ_XXX для обработки запросов ввода-вывода в аналогичные векторы быстрого ввода-вывода, но эта подпрограмма работает только для не-монолитных драйверов.
RDBSS также экспортирует подпрограммы, чтобы уведомить RDBSS о том, что мини-перенаправление сети запускается или останавливается. Эти вызовы используются, если мини-перенаправление сети включает службу администрирования в режиме пользователя или приложение служебной программы, которое запускает и останавливает перенаправление. Эта служба или приложение в пользовательском режиме может отправлять пользовательские запросы FSCTL или IOCTL драйверу мини-перенаправления сети, чтобы указать, что он должен запускаться или останавливаться. Перенаправитель может вызвать подпрограммы RDBSS RxStartMinirdr или RxStopMinirdr , чтобы уведомить RDBSS о запуске или остановке этого мини-перенаправления сети.
В следующей таблице перечислены процедуры регистрации драйвера RDBSS и запуска и остановки управления.
| Рутина | Описание |
|---|---|
Эта подпрограмма вызывается монолитным драйвером мини-перенаправления сети из подпрограммы DriverEntry для инициализации RDBSS. Для не монолитных драйверов эта процедура инициализации эквивалентна подпрограмме DriverEntry драйвера rbss.sys устройства. |
|
Эта подпрограмма вызывается драйвером мини-перенаправления сети для регистрации драйвера в RDBSS, который добавляет сведения о регистрации во внутреннюю таблицу регистрации. RDBSS также создает объект устройства для мини-перенаправления сети. |
|
Эта подпрограмма вызывается драйвером мини-редиректора сети, чтобы задать домен, используемый для рассылок через mailslot, если драйвер поддерживает почтовые ящики. |
|
Эта подпрограмма запускает мини-перенаправление сети, который вызывается для регистрации самого себя. RDBSS также зарегистрирует драйвер мини-перенаправления сети в качестве поставщика UNC в MUP, если драйвер указывает поддержку имен UNC. |
|
Эта подпрограмма останавливает драйвер мини-перенаправления сети. Драйвер, остановленный, больше не будет получать новые команды, кроме запросов IOCTL или FSCTL. |
|
Эта подпрограмма вызывается драйвером мини-перенаправления сети для отмены регистрации драйвера с помощью RDBSS и удаления сведений о регистрации из внутренней таблицы регистрации RDBSS. |
|
Эта подпрограмма представляет собой встроенную функцию, определенную в rxstruc.h, которая вызывается драйвером мини-перенаправления сети для отмены регистрации драйвера с помощью RDBSSS и удаления сведений о регистрации из внутренней таблицы регистрации RDBSS. Встроенная функция RxUnregisterMinirdr внутренне вызывает RxpUnregisterMinirdr. |
|
Эта подпрограмма заполняет быстрый вектор отправки ввода-вывода, идентичный обычному вектору ввода-вывода диспетчера и устанавливает его в объект драйвера, связанный с переданным объектом устройства. |
Следующий макрос определен в файле заголовка mrx.h, который вызывает одну из этих подпрограмм. Этот макрос обычно используется вместо вызова подпрограммы __RxFillAndInstallFastIoDispatch напрямую.
| Макрос | Описание |
|---|---|
RxFillAndInstallFastIoDispatch(__devobj, __fastiodisp) |
Этот макрос вызывает __RxFillAndInstallFastIoDispatch, чтобы заполнить быстрый вектор отправки ввода-вывода, идентичный обычному вектору ввода-вывода диспетчера и устанавливает его в объект драйвера, связанный с переданным объектом устройства. |