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 |