FsRtlRegisterUncProvider 함수(ntifs.h)
FsRtlRegisterUncProvider 루틴은 네트워크 리디렉션자를 시스템 다중 UNC 공급자(MUP)에 UNC(범용 명명 규칙) 공급자로 등록합니다.
통사론
NTSTATUS FsRtlRegisterUncProvider(
[out] PHANDLE MupHandle,
PCUNICODE_STRING RedirectorDeviceName,
[in] BOOLEAN MailslotsSupported
);
매개 변수
[out] MupHandle
FsRtlRegisterUncProvider 호출할 때 사용할 MUP 핸들을 반환할 위치에 대한 포인터입니다. 반환된 핸들은 FsRtlRegisterUncProvider STATUS_SUCCESS 반환하는 경우에만 유효합니다.
RedirectorDeviceName
네트워크 리다이렉터의 디바이스 이름을 포함하는 유니코드 문자열에 대한 포인터입니다.
[in] MailslotsSupported
네트워크 리다이렉터에서 mailslots를 지원하는 경우 TRUE 설정합니다. 이 옵션은 일반적으로 Microsoft SMB 리렉터에서 사용하도록 예약되어 있습니다.
반환 값
FsRtlRegisterUncProvider 성공 시 STATUS_SUCCESS 반환하거나 다음 중 하나와 같은 적절한 NTSTATUS 값을 반환합니다.
반환 코드 | 묘사 |
---|---|
|
MUP에 전송된 IRP 작업에 대한 원래 요청자의 실행 모드가 커널 모드가 아닙니다. |
|
MUP 디바이스에 대한 액세스를 시도할 때 액세스 위반이 발생했습니다. |
|
데이터의 정렬이 잘못되었습니다. |
|
버퍼에 메모리를 할당하는 데 사용할 수 있는 리소스가 부족했습니다. |
|
잘못된 매개 변수가 IRP의 MUP에 전달되었습니다. |
|
잘못된 매개 변수가 RedirDevName 매개 변수에 전달되었거나 비정상적인 종료가 발생했습니다. |
발언
네트워크 리다이렉터에서 UNC 이름을 처리하려면 MUP에 등록해야 합니다. MUP은 원격 파일 시스템 요청을 처리할 수 있는 네트워크 리렉터(UNC 공급자)에 UNC(유니버설 명명 규칙) 이름을 사용하여 모든 원격 파일 시스템 액세스를 채널링하는 커널 모드 구성 요소입니다. 명령줄에서 실행할 수 있는 다음 예제와 같이 애플리케이션에서 UNC 경로를 사용하는 경우 MUP가 관련됩니다.
notepad \\server\public\readme.txt
MUP는 매핑된 드라이브 문자(예: "NET USE" 명령)를 만드는 작업 중에는 포함되지 않습니다. 이 작업은 MPR(다중 공급자 라우터) 및 네트워크 리트리버에 대한 사용자 모드 WNet 공급자 DLL에 의해 처리됩니다. 그러나 사용자 모드 WNet 공급자 DLL은 이 작업 중에 커널 모드 네트워크 리렉터 드라이버와 직접 통신할 수 있습니다.
Windows Server 2003, Windows XP 및 Windows 2000에서는 DFS(Distributed File System) 드라이브를 나타내지 않는 매핑된 드라이브에서 수행되는 원격 파일 작업은 MUP를 거치지 않습니다. 이러한 작업은 드라이브 문자 매핑을 처리한 네트워크 공급자로 직접 이동합니다.
Windows Vistaredirector 모델을 준수하는 네트워크 리디렉터의 경우 매핑된 네트워크 드라이브를 사용하는 경우에도 MUP가 포함됩니다. 매핑된 드라이브에서 수행된 파일 작업은 MUP를 통해 네트워크 리렉터로 이동합니다. 이 경우 MUP는 관련 네트워크 리다이렉터에 작업을 전달하기만 하면 됩니다.
Windows Vista 리디렉션자 모델을 준수하는 네트워크 리디렉션자는 FsRtlRegisterUncProvider
FsRtlRegisterUncProvider 등록을 수행하기 위해 개인 파일 시스템 컨트롤(FSCTL)을 MUP에 보냅니다.
ProviderOrder 레지스트리 값은 MUP에서 개별 네트워크 리디렉터에 접두사 확인 요청을 발급하는 순서를 결정합니다. 이 레지스트리 값은 다음 레지스트리 키 아래에 있습니다.
HKLM\CurrentControlSet\Control\NetworkProvider\Order
ProviderOrder 레지스트리 값을 변경하려면 Windows Server 2003, Windows XP 및 Windows 2000의 MUP에서 다시 부팅해야 합니다.
시스템에서 하나의 네트워크 공급자만 mailslots를 지원할 수 있습니다. 따라서 MailslotsSupported 매개 변수는 일반적으로 Microsoft SMB 리다이렉터에 TRUE 설정됩니다.
IoCreateDevice 호출하여 UNC 공급자(FsRtlRegisterUncProvider호출하는 드라이버)로 등록되는 네트워크 리데렉터에 대한 디바이스 개체를 만들려면 IoCreateDevice전달되는 DeviceCharacteristics 매개 변수의 옵션 중 하나로 FILE_REMOTE_DEVICE 전달해야 합니다.
UNC 공급자 등록을 취소하려면 FsRtlDeregisterUncProvider 사용하고 MupHandle 매개 변수를 전달합니다.
예를 들어 드라이버가 로컬 디스크 파일 시스템(예를 들어 FILE_NETWORK_FILE_SYSTEM 대신 FILE_DEVICE_DISK_FILE_SYSTEM 설정된 DeviceType 매개 변수로 IoCreateDevice 호출)하는 경우 드라이버는 FsRtlRegisterUncProvider 호출하여 MUP에 UNC 공급자로 등록해서는 안 됩니다.
자세한 내용은 디자인 가이드의 다음 섹션을 참조하세요.
UNC 명명 및 MUP 대한
Microsoft Windows Vista MUP 변경
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 보편적 |
헤더 | ntifs.h(Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL |
PASSIVE_LEVEL |
DDI 규정 준수 규칙 |
HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |