Функция RxStopMinirdr (mrx.h)
RxStopMinirdr вызывается, чтобы остановить мини-перенаправление сети, который ранее был запущен. В рамках RxStopMinirdrRDBSS также отменит регистрацию драйвера мини-перенаправления сети в качестве универсального поставщика именования (UNC) с несколькими поставщиком UNC (MUP), если драйвер указывает на UNC-имена.
Синтаксис
NTSTATUS RxStopMinirdr(
[in] IN PRX_CONTEXT RxContext,
[out] OUT PBOOLEAN PostToFsp
);
Параметры
[in] RxContext
Указатель на структуру RX_CONTEXT, используемую для получения объекта устройства и определения того, является ли это процесс файловой системы.
[out] PostToFsp
Указатель на логическое значение, заданное значением TRUE при возврате, если запрос должен быть размещен для последующей обработки процессом файловой системы.
Возвращаемое значение
RxStopMinirdr возвращает STATUS_SUCCESS, если последовательность остановки прошла успешно или одно из следующих значений ошибок:
Возвращаемый код | Описание |
---|---|
STATUS_PENDING | Последовательность остановки для RDBSS и мини-перенаправлений сети должна быть завершена в контексте процесса файловой системы. Если вызов RxStopMinirdr поступает из другого процесса (например, запрос пользовательского режима), запрос будет размещен для последующей обработки и STATUS_PENDING будет возвращен. Эта ошибка также может быть возвращена, если некоторые внутренние блокировки RDBSS не могут быть приобретены без ожидания. |
STATUS_REDIRECTOR_HAS_OPEN_HANDLES | Мини-перенаправление сети имеет открытые дескрипторы и не может быть остановлен в настоящее время. |
STATUS_REDIRECTOR_STOPPED | Мини-перенаправление сети уже остановлен. |
Замечания
Если запрос остановки выдан RDBSS, в RDBSS могут возникать текущие запросы. Некоторые запросы можно отменить, а остальные запросы необходимо обработать до завершения.
Существует ряд стратегий, которые можно использовать для закрытия RDBSS. В настоящее время используется наиболее консервативный подход. Отмена этих операций, которые можно отменить, и операция остановки будет сохранена до завершения оставшихся запросов.
RDBSS RxStopMinirdr обычно вызывается в результате запроса FSCTL или IOCTL из приложения или службы пользовательского режима, чтобы остановить мини-перенаправление сети, хотя этот вызов также может быть выполнен из мини-перенаправления сети или в рамках завершения обработки операционной системой.
После выдачи вызова RxStopMinirdr единственными операциями, разрешенными RDBSS и передаваемыми в сеть мини-перенаправлением, являются запросы для следующих пакетов запросов ввода-вывода:
- IRP_MJ_CLEANUP
- IRP_MJ_CLOSE
Последовательность остановки для RDBSS и мини-перенаправления сети должна быть завершена в контексте процесса файловой системы. Если вызов RxStopMinirdr поступает из другого процесса (например, запроса в режиме пользователя), запрос должен быть размещен для последующей обработки и STATUS_PENDING будет возвращен. В этом случае действующий идентификатор пользователя (идентификатор входа) вызывающего объекта сохраняется в элементе FsdUid параметра RxContext. Кроме того, если некоторые внутренние блокировки RDBSS не могут быть получены без ожидания, возвращается STATUS_PENDING и PostToFsp имеет значение TRUE. После возврата STATUS_PENDING RxStopMinirdr будут размещены для последующей обработки процессом файловой системы и завершены.
Если мини-перенаправление сети указывает UNC при регистрации в RDBSS (параметр Controls для RxRegisterMinirdr), то RxStopMinirdr попытается отменить регистрацию DeviceName сетевого мини-перенаправления в качестве поставщика UNC с MUP (вызовы FsRtlDeregisterUncProvider от имени мини-перенаправления сети). RxStopMinirdr также отменяет регистрацию файловой системы с помощью диспетчера ввода-вывода (вызовы IoUnregisterFileSystem) от имени мини-перенаправления сети).
Подпрограмма RxStopMinirdr затем вызывает мини-перенаправление сети подпрограмму обратного вызова MrxStop, если эта подпрограмма реализована. Если не осталось активных ФКБ, возвращается STATUS_SUCCESS. Если есть некоторые оставшиеся активные ФКБ, STATUS_REDIRECTOR_HAS_OPEN_HANDLES возвращается. В любом случае диспетчер RDBSS для перенаправителя выполняется вниз, а внутреннее состояние мини-перенаправления сети в RDBSS имеет значение RDBSS_STARTABLE.
Требования
Требование | Ценность |
---|---|
целевая платформа | Настольный |
заголовка | mrx.h (include Mrx.h) |
IRQL | <= APC_LEVEL |