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이 가리키는 버퍼의 바이트 수입니다. pInit이 NULL로 설정된 경우 cbInit는 0이어야 합니다.
반환 값
형식: IStream*
성공하면 생성된 메모리 스트림에 대한 포인터를 반환합니다. 스트림 개체를 할당할 수 없는 경우 NULL 을 반환합니다.
설명
Windows Vista 이전에는 이 함수가 공용 Shlwapi.h 파일에 포함되지 않았으며 Shlwapi.dll 이름으로 내보내지도 않았습니다. 이전 시스템에서 사용하려면 Shlwapi.dll 파일에서 직접 서수 12로 호출해야 합니다.
이 함수는 메모리 스트림을 만듭니다. 이 구현은 해당 콘텐츠를 메모리에 저장하는 IStream 인터페이스의 구현입니다. SHCreateMemStream 은 다음과 같은 방법으로 CreateStreamOnHGlobal 과 다릅니다.
- 스레드 안전성. SHCreateMemStream에서 만든 스트림은 Windows 8을 기준으로 스레드로부터 안전합니다. 이전 시스템에서 스트림은 스레드로부터 안전하지 않습니다. CreateStreamOnHGlobal에서 만든 스트림은 스레드로부터 안전합니다.
- 초기 콘텐츠. SHCreateMemStream 은 버퍼 형태로 초기 콘텐츠를 허용합니다. CreateStreamOnHGlobal 은 초기 콘텐츠를 HGLOBAL 형식으로 허용합니다.
- 콘텐츠에 대한 액세스. SHCreateMemStream 은 스트림 콘텐츠에 대한 직접 액세스를 허용하지 않습니다. CreateStreamOnHGlobal 은 GetHGlobalFromStream을 통해 액세스를 허용합니다.
- 오류 정보입니다. SHCreateMemStream이 NULL을 반환하는 경우 필요한 메모리를 할당할 수 없습니다. 호출자는 원인이 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 이상) |