Поделиться через


Функция 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

См. также

FsRtlDeregisterUncProvider

IoUnregisterFileSystem

RxRegisterMinirdr

RxStartMiniRdr

RxUnregisterMinirdr

RxpUnregisterMinirdr