Funzione SHCreateMemStream (shlwapi.h)

Crea un flusso di memoria usando un processo simile a CreateStreamOnHGlobal.

Sintassi

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

Parametri

[in, optional] pInit

Tipo: const BYTE*

Puntatore a un buffer di dimensioni cbInit. Il contenuto di questo buffer viene usato per impostare il contenuto iniziale del flusso di memoria. Se questo parametro è NULL, il flusso di memoria restituito non ha alcun contenuto iniziale.

[in] cbInit

Tipo: UINT

Numero di byte nel buffer a cui fa riferimento pInit. Se pInit è impostato su NULL, cbInit deve essere zero.

Valore restituito

Tipo: IStream*

In caso di esito positivo, restituisce un puntatore al flusso di memoria creato. Restituisce NULL se l'oggetto di flusso non è stato allocato.

Commenti

Prima di Windows Vista, questa funzione non è stata inclusa nel file Shlwapi.h pubblico, né è stata esportata per nome da Shlwapi.dll. Per usarlo nei sistemi precedenti, è necessario chiamarlo direttamente dal file Shlwapi.dll come ordinale 12.

Questa funzione crea un flusso di memoria. Si tratta di un'implementazione dell'interfaccia IStream che archivia il contenuto in memoria. SHCreateMemStream differisce da CreateStreamOnHGlobal nei modi seguenti.

  • Sicurezza dei thread. Il flusso creato da SHCreateMemStream è thread-safe a partire da Windows 8. Nei sistemi precedenti il flusso non è thread-safe. Il flusso creato da CreateStreamOnHGlobal è thread-safe.
  • Contenuto iniziale. SHCreateMemStream accetta il contenuto iniziale sotto forma di buffer. CreateStreamOnHGlobal accetta il contenuto iniziale sotto forma di HGLOBAL.
  • Accesso al contenuto. SHCreateMemStream non consente l'accesso diretto al contenuto del flusso. CreateStreamOnHGlobal consente l'accesso tramite GetHGlobalFromStream.
  • Informazioni sugli errori. Se SHCreateMemStream restituisce NULL, non è stato possibile allocare la memoria necessaria. I chiamanti presuppongono che la causa sia E_OUTOFMEMORY.
  • Supporto per IStream::Clone. Prima di Windows 8, il flusso creato da SHCreateMemStream non supporta IStream::Clone. Il flusso creato da CreateStreamOnHGlobal esegue. A partire da Windows 8, il flusso creato da SHCreateMemStream supporta IStream::Clone.
  • Il flusso restituito da SHCreateMemStream restituisce S_FALSE da IStream::Read se si tenta di leggere la fine del buffer. Il flusso restituito da CreateStreamOnHGlobal restituisce S_OK e imposta *pcbRead su 0 se si tenta di leggere la fine del buffer.

Requisiti

   
Client minimo supportato Windows 2000 Professional, Windows XP [solo app desktop]
Server minimo supportato Windows 2000 Server, Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione shlwapi.h
Libreria Shlwapi.lib
DLL Shlwapi.dll (versione 5.0 o successiva)