RxStopMinirdr 함수(mrx.h)

RxStopMinirdr 은 이전에 시작된 네트워크 미니 리디렉터를 중지하기 위해 호출됩니다. RxStopMinirdr의 일부로 RDBSS는 드라이버가 UNC 이름에 대한 지원을 나타내는 경우 네트워크 미니 리디렉터 드라이버를 MUP(다중 UNC 공급자)에 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에서 허용되고 네트워크 미니 리디렉터에 전달되는 유일한 작업은 다음 I/O 요청 패킷에 대한 재확정입니다.

  • IRP_MJ_CLEANUP
  • IRP_MJ_CLOSE

RDBSS 및 네트워크 미니 리디렉터에 대한 중지 시퀀스는 파일 시스템 프로세스의 컨텍스트에서 완료되어야 합니다. RxStopMinirdr에 대한 호출이 다른 프로세스(예: 사용자 모드 요청)에서 가져온 경우 나중에 처리하기 위해 요청을 게시해야 하며 STATUS_PENDING 반환됩니다. 이 경우 호출자의 유효 사용자 ID(로그온 ID)가 RxContext 매개 변수의 FsdUid 멤버에 저장됩니다. 또한 대기하지 않고 특정 내부 RDBSS 잠금을 가져올 수 없는 경우 STATUS_PENDING 반환되고 PostToFsp 가 TRUE로 설정됩니다. STATUS_PENDING 반환되면 파일 시스템 프로세스에서 나중에 처리하기 위해 RxStopMinirdr 가 게시되고 완료됩니다.

네트워크 미니 리디렉터가 RDBSS(RxRegisterMinirdr에 대한 Controls 매개 변수)에 등록할 때 UNC에 대한 지원을 나타내는 경우 RxStopMinirdr는 네트워크 미니 리디렉터의 DeviceName을 MUP를 사용하여 UNC 공급자로 등록 해제하려고 시도합니다(네트워크 미니 리디렉션자를 대신하여 FsRtlDeregisterUncProvider 호출). 또한 RxStopMinirdr 는 네트워크 미니 리디렉터 대신 I/O 관리자( IoUnregisterFileSystem 호출)에 파일 시스템을 등록 해제합니다.

그런 다음 RxStopMinirdr 루틴은 이 루틴이 구현된 경우 네트워크 미니 리디렉터 MrxStop 콜백 루틴을 호출합니다. 활성 FCB가 남아 있지 않으면 STATUS_SUCCESS 반환됩니다. 일부 활성 FCB가 남아 있으면 STATUS_REDIRECTOR_HAS_OPEN_HANDLES 반환됩니다. 두 경우 모두 redrector에 대한 RDBSS 디스패처가 다운되고 RDBSS의 네트워크 미니 리다이렉터의 내부 상태가 RDBSS_STARTABLE 설정됩니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 mrx.h(Mrx.h 포함)
IRQL <= APC_LEVEL

추가 정보

FsRtlDeregisterUncProvider

IoUnregisterFileSystem

RxRegisterMinirdr

RxStartMiniRdr

RxUnregisterMinirdr

RxpUnregisterMinirdr