Interfaz IStream (objidl.h)

La interfaz IStream permite leer y escribir datos para transmitir objetos. Stream objetos contienen los datos de un objeto de almacenamiento estructurado, donde los almacenamientos proporcionan la estructura. Los datos simples se pueden escribir directamente en una secuencia, pero, con mayor frecuencia, los flujos son elementos anidados dentro de un objeto de almacenamiento. Son similares a los archivos estándar.

La interfaz IStream define métodos similares a las funciones de archivo FAT de MS-DOS. Por ejemplo, cada objeto de secuencia tiene sus propios derechos de acceso y un puntero de búsqueda. La principal diferencia entre un archivo DOS y un objeto stream es que, en este último caso, las secuencias se abren mediante un puntero de interfaz IStream en lugar de un identificador de archivo.

Los métodos de esta interfaz presentan los datos del objeto como una secuencia contigua de bytes que puede leer o escribir. También hay métodos para confirmar y revertir los cambios en las secuencias que están abiertos en modo transaccionado y métodos para restringir el acceso a un intervalo de bytes en la secuencia.

Las secuencias pueden permanecer abiertas durante largos períodos de tiempo sin consumir recursos del sistema de archivos. El método IUnknown::Release es similar a una función close en un archivo. Una vez liberado, el objeto stream ya no es válido y no se puede usar.

Los clientes de monikers asincrónicos pueden elegir entre un modelo de extracción de datos o inserción de datos para impulsar una operación asincrónica de IMoniker::BindToStorage y para recibir notificaciones asincrónicas. Consulte URL Monikers para obtener más información. En la tabla siguiente se compara el comportamiento de las llamadas ISequentialStream::Read e IStream::Seek asincrónicas devueltas en IBindStatusCallback::OnDataAvailable en estos dos modelos de descarga:

Llamada al método IStream Comportamiento en el modelo de extracción de datos Comportamiento en el modelo de inserción de datos
Se llama a Read para leer datos parciales (es decir, no todos los datos disponibles). Devuelve S_OK. El cliente debe seguir leyendo todos los datos disponibles antes de volver desde IBindStatusCallback::OnDataAvailable o, de lo contrario, se bloquea la operación de enlace. (es decir, lea hasta que se devuelva S_FALSE o E_PENDING) Devuelve S_OK. Incluso si el cliente vuelve de IBindStatusCallback::OnDataAvailable en este momento, la operación de enlace continúa y se volverá a llamar a IBindStatusCallback::OnDataAvailable repetidamente hasta que finalice el enlace.
Se llama a Read para leer todos los datos disponibles. Devuelve E_PENDING si la operación de enlace no se ha completado y se volverá a llamar a IBindStatusCallback::OnDataAvailable cuando haya más datos disponibles. Igual que el modelo de extracción de datos.
Se llama a Read para leer todos los datos disponibles y la operación de enlace finaliza (final del archivo). Devuelve S_FALSE. Habrá una llamada posterior a IBindStatusCallback::OnDataAvailable con la marca grfBSC establecida en BSCF_LASTDATANOTIFICATION. Igual que el modelo de extracción de datos.
Se llama a Seek . Seek no funciona en el modelo de extracción de datos Seek no funciona en el modelo de inserción de datos.
 

Para obtener información general sobre este tema, vea Monikers asincrónicos y Data-Pull-Model frente a Data Push-Model para obtener información más específica. Consulte También Administración de la asignación de memoria para obtener más información sobre las reglas de COM para administrar la memoria.

Herencia

La interfaz IStream hereda de la interfaz ISequentialStream . IStream también tiene estos tipos de miembros:

Métodos

La interfaz IStream tiene estos métodos.

 
IStream::Clone

El método Clone crea un nuevo objeto de secuencia con su propio puntero de búsqueda que hace referencia a los mismos bytes que la secuencia original.
IStream::Commit

El método Commit garantiza que los cambios realizados en un objeto de secuencia abierto en modo de transacción se reflejan en el almacenamiento primario.
IStream::CopyTo

Copia un número especificado de bytes del puntero de búsqueda actual del flujo en el puntero de búsqueda actual de otro flujo.
IStream::LockRegion

El método LockRegion restringe el acceso a un intervalo especificado de bytes en la secuencia.
IStream::Revert

El método Revert descarta todos los cambios realizados en una secuencia de transacciones desde la última llamada de IStream::Commit. En las secuencias abiertas en modo directo y secuencias mediante la implementación del archivo compuesto COM de IStream::Revert, este método no tiene ningún efecto.
IStream::Seek

Cambia el puntero de búsqueda a una nueva ubicación. La nueva ubicación es relativa al principio de la secuencia, al final de la secuencia o al puntero de búsqueda actual.
IStream::SetSize

Cambia el tamaño del objeto de secuencia.
IStream::Stat

El método Stat recupera la estructura STATSTG de esta secuencia.
IStream::UnlockRegion

El método UnlockRegion quita la restricción de acceso en un intervalo de bytes restringido previamente con IStream::LockRegion.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows 2000 Server [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado objidl.h

Consulte también

ISequentialStream

IStream: implementación de archivos compuestos