共用方式為


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 設定為 NullcbInit 必須是零。

傳回值

類型: IStream*

成功時,傳回所建立記憶體資料流程的指標。 如果無法配置資料流程物件,則傳回 Null

備註

在 Windows Vista 之前,此函式並未包含在公用 Shlwapi.h 檔案中,也不會依名稱從 Shlwapi.dll 匯出。 若要在舊版系統上使用它,您必須直接從 Shlwapi.dll 檔案呼叫它,作為序數 12。

此函式會建立記憶體資料流程。 這是 IStream 介面的實作,可將其內容儲存在記憶體中。 SHCreateMemStreamCreateStreamOnHGlobal 不同,方式如下。

  • 執行緒安全。 SHCreateMemStream所建立的資料流程是 Windows 8 的安全線程。 在舊版系統上,資料流程不是安全線程。 CreateStreamOnHGlobal所建立的資料流程是安全線程。
  • 初始內容。 SHCreateMemStream 接受緩衝區形式的初始內容。 CreateStreamOnHGlobal 接受 HGLOBAL 形式的初始內容。
  • 存取內容。 SHCreateMemStream 不允許直接存取資料流程內容。 CreateStreamOnHGlobal 允許透過 GetHGlobalFromStream進行存取。
  • 失敗資訊。 如果 SHCreateMemStream 傳回 Null,則無法配置必要的記憶體。 呼叫端應該假設原因為E_OUTOFMEMORY。
  • 支援 IStream::Clone。 在 Windows 8 之前, SHCreateMemStream 所建立的資料流程不支援 IStream::CloneCreateStreamOnHGlobal所建立的資料流程。 從 Windows 8 起, SHCreateMemStream 所建立的資料流程支援 IStream::Clone
  • SHCreateMemStream傳回的資料流程會從IStream::Read傳回S_FALSE,如果您嘗試讀取超過緩衝區的結尾。 CreateStreamOnHGlobal傳回的資料流程會傳回S_OK,如果您嘗試讀取超過緩衝區結尾,則會將 *linuxRead 設定為 0。

規格需求

   
最低支援的用戶端 Windows 2000 專業版、Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server、Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 shlwapi.h
程式庫 Shlwapi.lib
Dll Shlwapi.dll (5.0 版或更新版本)