Compartir a través de


Método ISequentialStream::Write (objidl.h)

El método Write escribe un número especificado de bytes en el objeto de secuencia a partir del puntero de búsqueda actual.

Sintaxis

HRESULT Write(
  [in]  const void *pv,
  [in]  ULONG      cb,
  [out] ULONG      *pcbWritten
);

Parámetros

[in] pv

Puntero al búfer que contiene los datos que se van a escribir en la secuencia. Se debe proporcionar un puntero válido para este parámetro incluso cuando cb es cero.

[in] cb

Número de bytes de datos que se van a intentar escribir en la secuencia. Este valor puede ser cero.

[out] pcbWritten

Puntero a una variable ULONG donde este método escribe el número real de bytes escritos en el objeto de secuencia. El autor de la llamada puede establecer este puntero en NULL, en cuyo caso este método no proporciona el número real de bytes escritos.

Valor devuelto

Este método puede devolver uno de estos valores.

Código devuelto Descripción
S_OK Los datos se escribieron correctamente en el objeto stream.
E_PENDING Solo almacenamiento asincrónico: la parte o todos los datos que se van a escribir no están disponibles actualmente.
STG_E_MEDIUMFULL Error en la operación de escritura porque no queda espacio en el dispositivo de almacenamiento.
STG_E_ACCESSDENIED El autor de la llamada no tiene los permisos necesarios para escribir en este objeto de secuencia.
STG_E_CANTSAVE Los datos no se pueden escribir por motivos distintos del acceso inadecuado o espacio insuficiente.
STG_E_INVALIDPOINTER Uno de los valores de puntero no es válido. El parámetro pv debe contener un puntero válido incluso si cb es cero.
STG_E_REVERTED El objeto ha sido invalidado por una operación de reversión encima de él en el árbol de transacciones.
STG_E_WRITEFAULT Error en la operación de escritura debido a un error de disco. Este valor también se devuelve cuando este método intenta escribir en una secuencia que se abrió en modo simple (con la marca STGM_SIMPLE).

Comentarios

ISequentialStream::Write escribe los datos especificados en un objeto de secuencia. El puntero de búsqueda se ajusta para el número de bytes escritos realmente. El número de bytes escritos realmente se devuelve en el parámetro pcbWritten . Si el recuento de bytes es cero bytes, la operación de escritura no tiene ningún efecto.

Si el puntero de búsqueda está más allá del final de la secuencia y el recuento de bytes es distinto de cero, este método aumenta el tamaño de la secuencia al puntero de búsqueda y escribe los bytes especificados a partir del puntero de búsqueda. Los bytes de relleno escritos en la secuencia no se inicializan en ningún valor determinado. Esto es lo mismo que el comportamiento del final del archivo en el sistema de archivos FAT de MS-DOS.

Con un recuento de bytes cero y un puntero de búsqueda más allá del final de la secuencia, este método no crea los bytes de relleno para aumentar la secuencia al puntero de búsqueda. En este caso, debe llamar al método IStream::SetSize para aumentar el tamaño de la secuencia y escribir los bytes de relleno.

El parámetro pcbWritten puede tener un valor incluso si se produce un error.

En la implementación proporcionada por COM, los objetos de secuencia no son dispersos. Los bytes de relleno se asignan finalmente en el disco y se asignan a la secuencia.

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
Library Uuid.lib
Archivo DLL Ole32.dll

Consulte también

ISequentialStream::Read

IStorage::OpenStream

Istream

IStream: implementación de archivos compuestos

STGMOVE