PRJ_GET_FILE_DATA_CB 콜백을 호출할 때 요청된 데이터를 제공합니다.
Syntax
HRESULT PrjWriteFileData(
[in] PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT namespaceVirtualizationContext,
[in] const GUID *dataStreamId,
[in] void *buffer,
[in] UINT64 byteOffset,
[in] UINT32 length
);
매개 변수
[in] namespaceVirtualizationContext
가상화 인스턴스에 대한 불투명 핸들입니다.
공급자가 PRJ_GET_FILE_DATA_CB 콜백을 제공하는 경우 콜백에서 공급자에게 전달된 callbackData의 VirtualizationInstanceHandle 멤버의 값이어야 합니다.
[in] dataStreamId
쓸 데이터 스트림의 식별자입니다.
공급자가 PRJ_GET_FILE_DATA_CB 콜백을 서비스하는 경우 콜백에서 공급자에게 전달된 callbackData의 DataStreamId 멤버 값이어야 합니다.
[in] buffer
쓸 데이터를 포함하는 버퍼에 대한 포인터입니다. 버퍼는 길이 매개 변수 값(바이트)만큼 커야 합니다. 공급자는 PrjAllocateAlignedBuffer 를 사용하여 버퍼가 스토리지 디바이스의 맞춤 요구 사항을 충족하는지 확인해야 합니다.
[in] byteOffset
데이터를 쓸 파일의 시작 부분에서 바이트 오프셋입니다.
[in] length
파일에 쓸 바이트 수입니다.
반환 값
HRESULT_FROM_WIN32(ERROR_OFFSET_ALIGNMENT_VIOLATION)는 버퍼되지 않은 I/O에 대해 사용자의 핸들이 열렸고 byteOffset이 스토리지 디바이스의 섹터 크기에 맞지 않음을 나타냅니다.
비고
공급자는 이 루틴을 사용하여 PRJ_GET_FILE_DATA_CB 콜백 호출 시 요청된 데이터를 제공합니다.
시스템에서 파일에 데이터가 포함되어 있는지 확인해야 하는 경우 공급자의 PRJ_GET_FILE_DATA_CB 콜백이 호출됩니다. 공급자가 PrjWriteFileData 를 호출하여 요청된 데이터를 제공하는 경우 시스템은 사용자의 FILE_OBJECT 사용하여 해당 데이터를 파일에 씁니다. 그러나 시스템에서 버퍼링된 I/O에 대해 해당 FILE_OBJECT 열렸는지 아니면 버퍼링되지 않은 I/O에 대해 열렸는지 여부를 제어할 수 없습니다. 버퍼되지 않은 I/O에 대해 FILE_OBJECT 연 경우 파일에 대한 읽기 및 쓰기는 특정 맞춤 요구 사항을 준수해야 합니다. 공급자는 다음 두 가지 작업을 수행하여 이러한 맞춤 요구 사항을 충족할 수 있습니다.
- PrjAllocateAlignedBuffer를 사용하여 버퍼에 전달할 버퍼를 할당합니다.
- byteOffset 및 길이가 스토리지 디바이스 맞춤 요구 사항의 정수 배수인지 확인합니다(byteOffset + 길이가 파일의 끝과 같으면 길이가 이 요구 사항을 충족할 필요가 없음). 공급자는 PrjGetVirtualizationInstanceInfo 를 사용하여 스토리지 디바이스의 맞춤 요구 사항을 검색할 수 있습니다.
시스템은 PRJ_GET_FILE_DATA_CB 콜백을 처리할 때 공급자가 여러 PrjWriteFileData 호출에서 요청된 데이터를 반환하도록 선택할 수 있기 때문에 적절한 맞춤을 계산하기 위해 공급자에게 둡니다.
공급자가 PrjWriteFileData에 대한 단일 호출로 전체 파일을 작성하려는 경우(예: byteOffset = 0에서 길이 = 파일 크기까지) 공급자는 정렬 계산을 수행할 필요가 없습니다. 그러나 버퍼가 스토리지 디바이스의 맞춤 요구 사항을 충족하는지 확인하려면 여전히 PrjAllocateAlignedBuffer 를 사용해야 합니다. 버퍼링 및 버퍼링되지 않은 I/O에 대한 자세한 내용은 파일 버퍼링 항목을 참조하세요.
요구 사항
| 요구 사항 | 가치 |
|---|---|
| 지원되는 최소 클라이언트 | Windows 10 버전 1809 [데스크톱 앱만 해당] |
| 지원되는 최소 서버 | Windows Server [데스크톱 앱만 해당] |
| 대상 플랫폼 | 윈도우즈 |
| Header | projectedfslib.h |
| Library | ProjectedFSLib.lib |