PrjWriteFileData 함수(projectedfslib.h)
PRJ_GET_FILE_DATA_CB 콜백 호출 시 요청된 데이터를 제공합니다.
구문
HRESULT PrjWriteFileData(
[in] PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT namespaceVirtualizationContext,
[in] const GUID *dataStreamId,
[in] void *buffer,
[in] UINT64 byteOffset,
[in] UINT32 length
);
매개 변수
[in] namespaceVirtualizationContext
가상화 instance 대한 불투명 핸들입니다.
공급자가 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 또는 버퍼링되지 않은 I/O에 대해 해당 FILE_OBJECT 열렸는지 여부를 제어할 수 없습니다. 버퍼되지 않은 I/O에 대해 FILE_OBJECT 열린 경우 파일에 대한 읽기 및 쓰기는 특정 맞춤 요구 사항을 준수해야 합니다. 공급자는 다음 두 가지 작업을 수행하여 이러한 맞춤 요구 사항을 충족할 수 있습니다.
- PrjAllocateAlignedBuffer를 사용하여 버퍼에 전달할 버퍼를 할당합니다.
- byteOffset 및 length가 스토리지 디바이스 맞춤 요구 사항의 정수 배수인지 확인합니다(byteOffset + 길이가 파일의 끝과 같은 경우 길이가 이 요구 사항을 충족할 필요가 없음). 공급자는 PrjGetVirtualizationInstanceInfo 를 사용하여 스토리지 디바이스의 맞춤 요구 사항을 검색할 수 있습니다.
시스템은 PRJ_GET_FILE_DATA_CB 콜백을 처리할 때 공급자가 여러 PrjWriteFileData 호출에서 요청된 데이터를 반환하도록 선택할 수 있기 때문에 적절한 정렬을 계산하기 위해 공급자에게 둡니다. 각 공급자는 요청된 총 데이터의 일부를 반환합니다.
공급자가 PrjWriteFileData에 대한 단일 호출로 전체 파일을 쓰려는 경우, 즉 byteOffset = 0에서 length = size의 파일까지 공급자는 정렬 계산을 수행할 필요가 없습니다. 그러나 버퍼가 스토리지 디바이스의 맞춤 요구 사항을 충족하는지 확인하려면 PrjAllocateAlignedBuffer 를 계속 사용해야 합니다. 버퍼링 및 버퍼링되지 않은 I/O에 대한 자세한 내용은 파일 버퍼링 항목을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10, 버전 1809[데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | projectedfslib.h |