ISequentialStream::Write 메서드(objidl.h)

Write 메서드는 현재 검색 포인터에서 시작하는 스트림 개체에 지정된 바이트 수를 씁니다.

구문

HRESULT Write(
  [in]  const void *pv,
  [in]  ULONG      cb,
  [out] ULONG      *pcbWritten
);

매개 변수

[in] pv

스트림에 쓸 데이터를 포함하는 버퍼에 대한 포인터입니다. cb가 0인 경우에도 이 매개 변수에 유효한 포인터를 제공해야 합니다.

[in] cb

스트림에 쓰려고 시도하는 데이터 바이트 수입니다. 이 값은 0일 수 있습니다.

[out] pcbWritten

이 메서드가 스트림 개체에 기록된 실제 바이트 수를 쓰는 ULONG 변수에 대한 포인터입니다. 호출자는 이 포인터를 NULL로 설정할 수 있습니다. 이 경우 이 메서드는 작성된 실제 바이트 수를 제공하지 않습니다.

반환 값

이 메서드는 이러한 값 중 하나를 반환할 수 있습니다.

반환 코드 설명
S_OK 데이터가 스트림 개체에 성공적으로 기록되었습니다.
E_PENDING 비동기 스토리지만 해당: 작성할 데이터의 일부 또는 전체를 현재 사용할 수 없습니다.
STG_E_MEDIUMFULL 스토리지 디바이스에 남은 공간이 없으므로 쓰기 작업이 실패했습니다.
STG_E_ACCESSDENIED 호출자에게 이 스트림 개체에 쓰는 데 필요한 권한이 없습니다.
STG_E_CANTSAVE 부적절한 액세스 또는 공간 부족 이외의 이유로 데이터를 쓸 수 없습니다.
STG_E_INVALIDPOINTER 포인터 값 중 하나가 잘못되었습니다. cb가 0인 경우에도 pv 매개 변수는 유효한 포인터를 포함해야 합니다.
STG_E_REVERTED 개체가 트랜잭션 트리에서 위의 되돌리기 작업에 의해 무효화되었습니다.
STG_E_WRITEFAULT 디스크 오류로 인해 쓰기 작업이 실패했습니다. 이 값은 이 메서드가 STGM_SIMPLE 플래그를 사용하여 단순 모드로 열린 스트림에 쓰려고 할 때도 반환됩니다.

설명

ISequentialStream::Write 는 지정된 데이터를 스트림 개체에 씁니다. 검색 포인터는 실제로 작성된 바이트 수에 맞게 조정됩니다. 실제로 작성된 바이트 수는 pcbWritten 매개 변수에 반환됩니다. 바이트 수가 0바이트이면 쓰기 작업이 적용되지 않습니다.

검색 포인터가 현재 스트림의 끝을 지나고 바이트 수가 0이 아닌 경우 이 메서드는 스트림의 크기를 검색 포인터로 늘리고 검색 포인터에서 시작하는 지정된 바이트를 씁니다. 스트림에 기록된 채우기 바이트는 특정 값으로 초기화되지 않습니다. 이는 MS-DOS FAT 파일 시스템의 파일 끝 동작과 동일합니다.

0바이트 수와 스트림의 끝을 지나는 검색 포인터를 사용하는 이 메서드는 채우기 바이트를 만들어서 스트림을 검색 포인터로 늘리지 않습니다. 이 경우 IStream::SetSize 메서드를 호출하여 스트림 크기를 늘리고 채우기 바이트를 작성해야 합니다.

pcbWritten 매개 변수는 오류가 발생하더라도 값을 가질 수 있습니다.

COM에서 제공하는 구현에서 스트림 개체는 스파스가 아닙니다. 모든 채우기 바이트는 결국 디스크에 할당되고 스트림에 할당됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows 2000 Server [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 objidl.h
라이브러리 Uuid.lib
DLL Ole32.dll

추가 정보

ISequentialStream::Read

IStorage::OpenStream

IStream

IStream - 복합 파일 구현

STGMOVE