공급자 개요
공급자는 백업 데이터 저장소를 유지 관리하고 이해하는 사용자 모드 애플리케이션입니다. 공급자는 ProjFS 콜백을 구현하고 ProjFS API를 사용하여 사용자에게 파일 및 디렉터리로 표시되는 파일 시스템에 이 데이터 저장소를 프로젝션합니다. 공급자의 백업 저장소는 사용자 시스템에 로컬이거나 원격으로 위치할 수 있습니다.
데이터 프로젝션
공급자가 소유하는 파일 시스템의 부분(데이터가 프로젝션되는 위치)은 "가상화 루트"라는 디렉터리에 루팅됩니다. 공급자가 데이터 프로젝션을 시작하려는 경우 특정 가상화 루트 아래에 있는 파일 및 디렉터리 집합에 대해 공급자와 ProjFS 간의 통신을 관리하는 개체인 "가상화 instance"를 시작합니다. 사용자가 로컬로 만들지 않은 가상화 루트의 하위 항목인 모든 파일 및 디렉터리 ProjFS API를 통해 공급자가 구체화합니다. 이러한 항목은 가상 파일 및 디렉터리로 시작합니다. 즉, 사용자의 로컬 스토리지 디바이스에 존재하지 않지만 ProjFS에서 열거형 결과에 삽입됩니다. 항목이 열리고 읽으면 ProjFS는 공급자가 구현한 콜백을 호출하여 데이터를 요청하고, 공급자는 ProjFS API를 사용하여 후속 액세스를 위해 캐시된 로컬 스토리지로 해당 데이터를 보냅니다. 백업 데이터 저장소에 대한 사용자의 보기가 변경되어야 하는 경우 instance 데이터 저장소의 내용이 변경된 경우 공급자는 ProjFS API를 사용하여 데이터 저장소의 새 보기를 반영하도록 로컬 항목을 업데이트하거나 삭제할 수 있습니다.
콜백 반환 코드
각 콜백에는 해당 콜백과 관련된 가능한 여러 반환 값이 나열됩니다. 지정된 콜백에 대해 나열된 반환 값 외에도 콜백은 다른 특정 오류 코드를 반환할 수도 있습니다. 콜백에서 반환할 수 있는 오류 코드의 전체 목록입니다.
오류 코드 | 의미 |
---|---|
S_OK | 작업 성공 |
E_OUTOFMEMORY | 필요한 메모리를 할당하지 못했습니다. |
HRESULT_FROM_WIN32(ERROR_IO_PENDING) | 공급자는 나중에 작업을 완료하려고 합니다. |
HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER) | 콜백에 전달된 버퍼가 너무 작습니다. |
HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) | 파일이 공급자의 지원 저장소에 없습니다. |
HRESULT_FROM_WIN32(ERROR_INVALID_PARAMETER) | 콜백 인수가 잘못되었습니다. 예를 들어 열거형 ID는 활성 열거 세션에 해당하지 않습니다. |
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED) | 공급자는 이름 바꾸기 또는 삭제와 같은 작업이 수행되지 않도록 하고자 합니다. |
콜백은 ProjFS API 호출에서 수신할 수 있는 오류를 반환할 수도 있습니다. 콜백이 이전 목록에 없거나 ProjFS API에서 제공되지 않은 오류 코드를 반환하는 경우 ProjFS는 STATUS_INTERNAL_ERROR 파일 시스템에 반환합니다.