다음을 통해 공유


SHCreateMemStream 함수(shlwapi.h)

CreateStreamOnHGlobal과 유사한 프로세스를 사용하여 메모리 스트림을 만듭니다.

구문

IStream * SHCreateMemStream(
  [in, optional] const BYTE *pInit,
  [in]           UINT       cbInit
);

매개 변수

[in, optional] pInit

형식: const BYTE*

cbInit 크기의 버퍼에 대한 포인터입니다. 이 버퍼의 내용은 메모리 스트림의 초기 콘텐츠를 설정하는 데 사용됩니다. 이 매개 변수가 NULL이면 반환된 메모리 스트림에 초기 콘텐츠가 없습니다.

[in] cbInit

형식: UINT

pInit이 가리키는 버퍼의 바이트 수입니다. pInitNULL로 설정된 경우 cbInit는 0이어야 합니다.

반환 값

형식: IStream*

성공하면 생성된 메모리 스트림에 대한 포인터를 반환합니다. 스트림 개체를 할당할 수 없는 경우 NULL 을 반환합니다.

설명

Windows Vista 이전에는 이 함수가 공용 Shlwapi.h 파일에 포함되지 않았으며 Shlwapi.dll 이름으로 내보내지도 않았습니다. 이전 시스템에서 사용하려면 Shlwapi.dll 파일에서 직접 서수 12로 호출해야 합니다.

이 함수는 메모리 스트림을 만듭니다. 이 구현은 해당 콘텐츠를 메모리에 저장하는 IStream 인터페이스의 구현입니다. SHCreateMemStream 은 다음과 같은 방법으로 CreateStreamOnHGlobal 과 다릅니다.

  • 스레드 안전성. SHCreateMemStream에서 만든 스트림은 Windows 8을 기준으로 스레드로부터 안전합니다. 이전 시스템에서 스트림은 스레드로부터 안전하지 않습니다. CreateStreamOnHGlobal에서 만든 스트림은 스레드로부터 안전합니다.
  • 초기 콘텐츠. SHCreateMemStream 은 버퍼 형태로 초기 콘텐츠를 허용합니다. CreateStreamOnHGlobal 은 초기 콘텐츠를 HGLOBAL 형식으로 허용합니다.
  • 콘텐츠에 대한 액세스. SHCreateMemStream 은 스트림 콘텐츠에 대한 직접 액세스를 허용하지 않습니다. CreateStreamOnHGlobalGetHGlobalFromStream을 통해 액세스를 허용합니다.
  • 오류 정보입니다. SHCreateMemStreamNULL을 반환하는 경우 필요한 메모리를 할당할 수 없습니다. 호출자는 원인이 E_OUTOFMEMORY 가정해야 합니다.
  • IStream::Clone에 대한 지원. Windows 8 이전에는 SHCreateMemStream 에서 만든 스트림이 IStream::Clone을 지원하지 않습니다. CreateStreamOnHGlobal에서 만든 스트림이 생성됩니다. Windows 8을 기준으로 SHCreateMemStream 에서 만든 스트림은 IStream::Clone을 지원합니다.
  • SHCreateMemStream에서 반환된 스트림은 버퍼의 끝을 지나 읽으려고 하면 IStream::Read에서 S_FALSE 반환합니다. CreateStreamOnHGlobal에서 반환된 스트림은 S_OK 반환하고 버퍼의 끝을 지나 읽으려고 하면 *pcbRead를 0으로 설정합니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional, Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows 2000 Server, Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 shlwapi.h
라이브러리 Shlwapi.lib
DLL Shlwapi.dll(버전 5.0 이상)