FsRtlRegisterUncProviderEx 함수(ntifs.h)

FsRtlRegisterUncProviderEx 루틴은 네트워크 리디렉션자를 시스템 다중 UNC 공급자(MUP)에 UNC(범용 명명 규칙) 공급자로 등록합니다.

구문

NTSTATUS FsRtlRegisterUncProviderEx(
  [out] PHANDLE                  MupHandle,
  [in]  PCUNICODE_STRING         RedirDevName,
  [in]  PDEVICE_OBJECT           DeviceObject,
  [in]  FSRTL_UNC_PROVIDER_FLAGS Flags
);

매개 변수

[out] MupHandle

FsRtlDeregisterUncProvider를 호출하여 네트워크 리렉터 등록을 취소할 때 사용할 MUP 핸들을 반환할 위치에 대한 포인터입니다. 반환된 핸들은 FsRtlRegisterUncProviderEx 가 STATUS_SUCCESS 반환하는 경우에만 유효합니다.

[in] RedirDevName

네트워크 리렉터의 디바이스 이름을 포함하는 유니코드 문자열에 대한 포인터입니다. MUP은 이 디바이스 이름을 사용하여 대상이 \Device\Mup인 개체 관리자 네임스페이스에 기호 링크를 만듭니다.

[in] DeviceObject

네트워크 리디렉터를 나타내는 명명되지 않은 디바이스 개체에 대한 포인터입니다.

[in] Flags

네트워크 리렉터에서 지원하는 기능을 나타내는 비트 마스크입니다. 네트워크 리디렉션기는 기능이 지원됨을 나타내기 위해 비트를 설정합니다. Flags 매개 변수에는 두 가지 옵션이 있습니다.

FSRTL_UNC_PROVIDER_FLAGS_MAILSLOTS_SUPPORTED

네트워크 리디렉션기는 mailslots를 지원합니다. 이 옵션은 일반적으로 Microsoft SMB 리디렉션기에서 사용하도록 예약되어 있습니다.

FSRTL_UNC_PROVIDER_FLAGS_CSC_ENABLED

네트워크 리디렉션기는 클라이언트 쪽 캐싱을 사용하여 오프라인 액세스를 지원합니다.

반환 값

FsRtlRegisterUncProviderEx 는 성공 시 STATUS_SUCCESS 반환하거나 다음 중 하나와 같은 적절한 NTSTATUS 값을 반환합니다.

반환 코드 설명
STATUS_ACCESS_DENIED
MUP로 전송되는 IRP의 요청자 모드가 커널 모드에서 온 것이 아닙니다.
STATUS_ACCESS_VIOLATION
MUP 디바이스에 대한 액세스를 시도할 때 액세스 위반이 발생했습니다.
STATUS_DATATYPE_MISALIGNMENT
데이터의 정렬이 잘못되었습니다.
STATUS_INSUFFICIENT_RESOURCES
버퍼에 메모리를 할당하는 데 사용할 수 있는 리소스가 부족했습니다.
STATUS_INVALID_DEVICE_REQUEST
이미 등록된 알려진 공급자를 등록하라는 요청이 있었습니다.
STATUS_INVALID_PARAMETER
RedirDevName의 길이가 0이므로 RedirDevName 매개 변수가 잘못되었습니다.
STATUS_OBJECT_TYPE_MISMATCH
DeviceObject 매개 변수와 개체 형식이 일치하지 않습니다.

설명

UNC(범용 명명 규칙) 이름을 처리하려면 네트워크 리다이렉터에서 여러 UNC 공급자(MUP)에 등록해야 합니다. MUP은 UNC(유니버설 명명 규칙) 이름을 사용하여 원격 파일 시스템 요청을 처리할 수 있는 네트워크 리디렉션자(UNC 공급자)로 모든 원격 파일 시스템 액세스를 채널링하는 커널 모드 구성 요소입니다. 명령줄에서 실행할 수 있는 다음 예제와 같이 애플리케이션에서 UNC 경로를 사용할 때 MUP가 관련됩니다.

notepad \\server\public\readme.txt

MUP는 매핑된 드라이브 문자(예: "NET USE" 명령)를 만드는 작업 중에는 포함되지 않습니다. 이 작업은 MPR(여러 공급자 라우터) 및 네트워크 리디렉션자에 대한 사용자 모드 WNet 공급자 DLL에 의해 처리됩니다. 그러나 사용자 모드 WNet 공급자 DLL은 이 작업 중에 커널 모드 네트워크 리디렉션기 드라이버와 직접 통신할 수 있습니다.

Windows Vista 리디렉션기 모델을 준수하는 네트워크 리디렉션자의 경우 매핑된 네트워크 드라이브를 사용하는 경우에도 MUP가 관련됩니다. 매핑된 드라이브에서 수행되는 파일 작업은 MUP를 통해 네트워크 리렉터로 이동합니다. 이 경우 MUP는 관련 네트워크 리렉터에 작업을 전달하기만 하면 됩니다.

FsRtlRegisterUncProviderEx 는 등록을 수행하기 위해 MUP에 FSCTL(프라이빗 파일 시스템 컨트롤)을 보냅니다.

FsRtlRegisterUncProviderEx 호출에서 RedirDevName 매개 변수에 지정된 디바이스 이름은 개체 관리자 네임스페이스의 \device\Mup에 대한 기호 링크가 됩니다. 또한 디바이스 이름 RedirDevName의 열린 요청은 DeviceObject 매개 변수가 가리키는 실제 네트워크 리디렉터 디바이스 개체로 자체 라우팅됩니다.

FsRtlRegisterUncProviderEx를 호출하는 네트워크 리디렉터는 자신을 파일 시스템으로 등록해서는 안 됩니다(네트워크 리디렉션자는 IoRegisterFileSystem을 호출하지 않아야 함). Windows Vista RDBSS(동적 또는 정적 연결)를 사용하는 네트워크 미니 리디렉션기는 파일 시스템으로 등록되지 않습니다.

MUP에 resolve Windows Vista 리디렉션기 모델을 준수하는 네트워크 리디렉션자가 소유한 원격 파일 시스템 스택의 파일 개체입니다. 따라서 IoGetDeviceAttachmentBaseRef 는 파일 개체를 소유하는 네트워크 리디렉터가 아닌 MUP에 대한 디바이스 개체를 반환합니다. 그러나 파일 개체의 콘텐츠는 여전히 네트워크 리렉터에 의해 소유됩니다.

ProviderOrder 레지스트리 값은 MUP가 개별 네트워크 리디렉터에 접두사 확인 요청을 발급하는 순서를 결정합니다. 이 순서는 다시 부팅하지 않고 동적으로 변경할 수 있습니다. 이 레지스트리 값은 다음 레지스트리 키 아래에 있습니다.

HKLM\CurrentControlSet\Control\NetworkProvider\Order

시스템의 하나의 네트워크 공급자만 메일 슬롯을 지원할 수 있습니다. 따라서 Flags 매개 변수의 FSRTL_UNC_PROVIDER_FLAGS_MAILSLOTS_SUPPORTED 옵션은 일반적으로 Microsoft SMB 리디렉션자에 대해서만 설정됩니다.

UNC 공급자를 등록 취소하려면 FsRtlDeregisterUncProvider 를 사용하고 MupHandle 매개 변수를 전달합니다.

드라이버가 로컬 디스크 파일 시스템으로 등록하는 경우(DeviceType 매개 변수가 FILE_DEVICE_DISK_FILE_SYSTEM 설정된 IoCreateDevice를 호출하여) 드라이버는 FsRtlRegisterUncProviderEx를 호출하여 MUP에 UNC 공급자로 등록하지 않아야 합니다.

자세한 내용은 디자인 가이드의 다음 섹션을 참조하세요.

UNC 명명 및 MUP 지원

Microsoft Windows Vista의 MUP 변경 내용

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista
대상 플랫폼 유니버설
헤더 ntifs.h(Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

추가 정보

FsRtlCancellableWaitForSingleObject

FsRtlDeregisterUncProvider

FsRtlRegisterUncProvider

IOCTL_REDIR_QUERY_PATH_EX

IoCreateDevice

IoGetDeviceAttachmentBaseRef

IoRegisterFileSystem