IStorage::CreateStream 메서드(objidl.h)

CreateStream 메서드는 이 스토리지 개체에 포함된 지정된 이름의 스트림 개체를 만들고 엽니다. 저장소 개체 내의 모든 요소(스트림 및 기타 스토리지 개체)는 동일한 이름 공간에 유지됩니다.

구문

HRESULT CreateStream(
  [in]  const OLECHAR *pwcsName,
  [in]  DWORD         grfMode,
  [in]  DWORD         reserved1,
  [in]  DWORD         reserved2,
  [out] IStream       **ppstm
);

매개 변수

[in] pwcsName

새로 만든 스트림의 이름을 포함하는 와이드 문자 null로 끝나는 유니코드 문자열에 대한 포인터입니다. 나중에 이 이름을 사용하여 스트림을 열거나 다시 열 수 있습니다. 이름은 문자열 종결자를 포함하지 않고 길이가 31자를 초과하면 안됩니다. 스트림/스토리지 이름의 첫 번째 문자 역할을 하는 000~01f 문자는 OLE에서 사용하도록 예약되어 있습니다. 이는 구조적 스토리지 제한이 아니라 복합 파일 제한입니다.

[in] grfMode

새로 만든 스트림을 열 때 사용할 액세스 모드를 지정합니다. 가능한 값에 대한 자세한 내용과 설명은 STGM 상수를 참조하세요.

[in] reserved1

나중에 사용하도록 예약되어 있습니다. 0이어야 합니다.

[in] reserved2

나중에 사용하도록 예약되어 있습니다. 0이어야 합니다.

[out] ppstm

반환할 때 새 IStream 인터페이스 포인터의 위치에 대한 포인터입니다. 작업이 성공한 경우에만 유효합니다. 오류가 발생하면 이 매개 변수는 NULL로 설정됩니다.

반환 값

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

반환 코드 설명
S_OK 새 스트림이 성공적으로 만들어졌습니다.
E_PENDING 비동기 스토리지만 해당: 필요한 데이터의 일부 또는 전부를 현재 사용할 수 없습니다.
STG_E_ACCESSDENIED 스트림을 만들 수 있는 권한이 부족합니다.
STG_E_FILEALREADYEXISTS 스트림에 지정된 이름이 스토리지 개체에 이미 있으며 grfMode 매개 변수에는 STGM_FAILIFTHERE 값이 포함됩니다.
STG_E_INSUFFICIENTMEMORY 메모리 부족으로 인해 스트림이 만들어지지 않았습니다.
STG_E_INVALIDFLAG grfMode 매개 변수에 지정된 값이 유효한 STGM 상수 값이 아닙니다.
STG_E_INVALIDFUNCTION grfMode 매개 변수의 지정된 플래그 조합은 지원되지 않습니다. 예를 들어 이 메서드가 STGM_SHARE_EXCLUSIVE 플래그 없이 호출되는 경우입니다.
STG_E_INVALIDNAME pwcsName 값이 잘못되었습니다.
STG_E_INVALIDPOINTER 스트림 개체에 대해 지정된 포인터가 잘못되었습니다.
STG_E_INVALIDPARAMETER 매개 변수 중 하나가 잘못되었습니다.
STG_E_REVERTED 스토리지 개체가 트랜잭션 트리에서 위의 되돌리기 작업에 의해 무효화되었습니다.
STG_E_TOOMANYOPENFILES 열려 있는 파일이 너무 많기 때문에 스트림이 만들어지지 않았습니다.

설명

pwcsName 매개 변수에 지정된 이름의 스트림이 이미 있고 grfMode 매개 변수에 STGM_CREATE 플래그가 포함된 경우 기존 스트림은 새로 만든 스트림으로 바뀝니다. 이전 스트림의 소멸과 새 스트림 개체 생성 모두 부모 스토리지 개체의 트랜잭션 모드가 적용됩니다.

IStorage::CreateStream 메서드의 COM 제공 복합 파일 구현은 다음 동작을 지원하지 않습니다.

  • STGM_DELETEONRELEASE 플래그는 지원되지 않습니다.
  • 스트림 개체에는 트랜잭션 모드(STGM_TRANSACTED)가 지원되지 않습니다.
  • 동일한 스토리지에서 동일한 스트림을 두 번 이상 여는 것은 지원되지 않습니다. STGM_SHARE_EXCLUSIVE 공유 모드 플래그는 grfMode 매개 변수에 지정해야 합니다.
스트림이 이미 있고 grfMode 가 STGM_FAILIFTHERE 설정된 경우 반환 값이 STG_E_FILEALREADYEXISTS 이 메서드가 실패합니다.

요구 사항

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

추가 정보

IStorage - 복합 파일 구현

IStorage::OpenStream

IStream