Manual de programación de OS/2/Llamadas DOSxxx del sistema de ficheros

GRUPO DE LLAMADAS DOSxxx (1) (Sistema de ficheros)

editar

DosBeep

editar

DosBeep activa el altavoz interno.

#define INCL_BASE
#include <os2.h> 

ULONG ulFrequency;
ULONG ulDuration;
APIRET rc; /* Codigo de error */ 

rc = DosBeep(ulFrequency, ulDuration);


Parámetros

ulFrecuency Frecuencia en hertzios (ciclos por segundo) en el rango 25 a 7FFF (ambos en hexadecimal).
ulDuration Duración del sonido en milisegundos.

Códigos de error

0 Sin error
395 Frecuencia no válida

DosClose

editar

DosClose cierra un handle a un fichero, cauce o dispositivo.

#define INCL_BASE
#include <os2.h> 

HFILE fileHandle;
APIRET rc; /* Codigo de error */ 

rc = DosClose(FileHandle);


Parámetros

FileHandle Un HANDLE asignado a un fichero, cauce o dispositivo físico.

Códigos de error

0 Sin error
2 Fichero no encontrado
5 Acceso denegado
6 HANDLE no valido

DosCopy

editar

DosCopy copia el contenido de un fichero o subdirectorio al fichero o subdirectorio de destino.

#define INCL_BASE
#include <os2.h> 

PSZ pszFicheroOrigen;
PSZ pszFicheroDestino;
ULONG ulModoOp;
APIRET rc; /* Codigo de error */ 

rc = DosCopy(pszFicheroOrigen, pszFicheroDestino,ulModoOp);

Parámetros

pszFicheroOrigen Puntero a una cadena con el path del fichero origen. La barra derecha (/) y la invertida (\) pueden ser usadas indistintamente.
pszFicheroDestino Puntero a una cadena con el path del fichero destino. La barra derecha (/) y la invertida (\) pueden ser usadas indistintamente.
ulModoOp Doble palabra de bits que define el modo de funcionamiento de la funcion.
Bit
Descripción
31-3 Reservado. Debe ser cero
2 0: Descarta los EAs (Atributos extendidos) si el sistema de ficheros de destino no los soporta.

1: Devuelve un error si el sistema de ficheros de destino no soporta EAs y el fichero a copiar los tiene.

1 0: Sustituye el fichero destino por el fichero origen.

1: Añade el fichero origen al final del fichero destino.

Es ignorado si el directorio o fichero de destino no existe.

0 0: Si el fichero destino ya existe, devuelve un error.

1: Copia el fichero fuente incluso si ya existe el fichero destino.

Códigos de error

0 Sin error
2 Fichero no encontrado
3 Path no encontrado
5 Acceso denegado
26 Disco sin sistema de ficheros
32 Violación de compartición
36 Desbordamiento del buffer de compartición
87 Parámetro no valido
108 Unidad bloqueada
112 Disco lleno
206 Nombre de fichero demasiado largo
267 Directorio incorrecto
282 EAs no soportados en la unidad
283 Hay EAs importantes

DosCreateDir

editar

DosCreateDir crea un nuevo directorio.

#define INCL_BASE
#include <os2.h> 

PSZ pszDirName;
EAOP2 pEABuf;
APIRET rc; /* Codigo de error */ 

rc = DosCreateDir(pszDirName, pEABuf);

Parámetros

pszDirName Un puntero a una cadena con el nombre del directorio a crear. Puede ir acompañado de un path y una unidad. Si ésta no es especificada, se toma la unidad actual. La barra derecha (/) y la invertida (\) pueden ser usadas indistintamente.
pEABuf Contiene información sobre los atributos extendidos que puede contener dicho directorio. Si no van a ser definidos o modificados, debe ser puesto a NULL.

Códigos de error

0 Sin error
3 Path no encontrado
5 Acceso denegado
26 Disco sin sistema de ficheros
87 Parametro no válido
108 Unidad bloqueada
206 Nombre de fichero demasiado largo
254 Nombre de EA no válido
255 Lista de EAs inconsistente
Valor de EA no soportado

DosDelete

editar

DosDelete borra un fichero. Este puede ser recuperado.

#define INCL_BASE
#include <os2.h> 

PSZ pszFileName;
APIRET rc; /* Codigo de error */ 

rc = DosDelete(pszFileName);

Parámetros

pszFileName Un puntero a una cadena con el nombre del fichero a borrar. Puede ir acompañado de un path y una unidad. Si ésta no es especificada, se toma la unidad actual. La barra derecha (/) y la invertida (\) pueden ser usadas indistintamente.

Códigos de error

0 Sin error
2 Fichero no encontrado
3 Path no encontrado
5 Acceso denegado
26 Disco sin sistema de ficheros
32 Violación de compartición
36 Desbordamiento del buffer de compartición
87 Parámetro no valido
206 Nombre de fichero demasiado largo

DosDeleteDir

editar

DosDeleteDir borra un directorio. Es necesario que esté vacío.

#define INCL_BASE
#include <os2.h> 

PSZ pszDirName;
APIRET rc; /* Codigo de error */ 

rc = DosDeleteDir(pszFileName);

Parámetros

pszDirName Un puntero a una cadena con el nombre del directorio a borrar. Puede ir acompañado de un path y una unidad. Si ésta no es especificada, se toma la unidad actual. La barra derecha (/) y la invertida (\) pueden ser usadas indistintamente.

Códigos de error

0 Sin error
2 Fichero no encontrado
3 Path no encontrado
5 Acceso denegado
16 Intenta borrar el directorio actual
26 Disco sin sistema de ficheros
87 Parámetro no valido
108 Unidad bloqueada
206 Nombre de fichero demasiado largo

DosFindClose

editar

DosFindClose cierra un cauce de busqueda de ficheros abierto con DosFindFirst; esto es, termina una búsqueda.

#define INCL_BASE
#include <os2.h> 

HDIR hdirDirHandle;
APIRET rc; /* Codigo de error */ 

rc = DosFindClose(hdirDirHandle);

Parámetros

hdirDirHandle Un handle asignado por una llamada a DosFindFirst, o usado en una llamada a DosFindNext.

Códigos de error

0 Sin error
6 HANDLE no valido

DosFindFirst

editar

DosFindFirst busca el primer archivo de un directorio que coincide con el patrón de búsqueda.

#define INCL_BASE
#include <os2.h> 

PSZ pszFileName;
PHDIR phdirDirHandle;
ULONG ulAttribute;
PVOID pResultBuf;
ULONG ulResultBufLen;
PULONG pSearchCount;
ULONG ulFileInfoLevel;
APIRET rc; /* Codigo de error */ 

rc = DosFindFirst(pszFileName, phdirDirHandle, ulAttribute, pResultBuf, ulResultBufLen, pSearchCount, ulFileInfoLevel);

Parámetros

pszFileName Puntero a una cadena ASCIIZ que define el criterio de busqueda
phdirDirHandle Puntero a un handle, donde OS/2 almacenará el handle correspondiente a la busqueda en curso. Si antes de la llamada, contiene h'00000001, el sistema asigna el handle a la salida estandar. Si contiene h'FFFFFFFF, OS/2 devuelve un handle nuevo.
ulAttribute Campo de bits que determina los tipos de archivos que se deben buscar.
Bit
Descripción
31-14 Reservados. Deben ser cero.
13 1: los ficheros que no tienen activo el bit de ARCHIVO son ignorados.

0: son buscados también los ficheros que no tienen activo el bit de ARCHIVO.

12 1: los ficheros que no tienen activo el bit de DIRECTORIO son ignorados.

0: son buscados también los ficheros que no tienen activo el bit de DIRECTORIO

11 Reservado. Debe ser cero.
10 1: los ficheros que no tienen activo el bit de SISTEMA son ignorados.

0: son buscados también los ficheros que no tienen activo el bit de SISTEMA

9 1: los ficheros que no tienen activo el bit de OCULTO son ignorados.

0: son buscados también los ficheros que no tienen activo el bit de OCULTO

8 1: los ficheros que no tienen activo el bit de SOLO_LECTURA son ignorados.

0: son buscados también los ficheros que no tienen activo el bit de SOLO_LECTURA

7-6 Reservados. Deben ser cero.
5 1: incluye los ficheros que tienen activo el bit de ARCHIVO.

0: excluye los ficheros que tienen activo el bit de ARCHIVO.

4 1: incluye los ficheros que tienen activo el bit de DIRECTORIO.

0: excluye los ficheros que tienen activo el bit de DIRECTORIO.

3 Reservado. Debe ser cero.
2 1: incluye los ficheros que tienen activo el bit de SISTEMA.

0: excluye los ficheros que tienen activo el bit de SISTEMA.

1 1: incluye los ficheros que tienen activo el bit de OCULTO.

0: excluye los ficheros que tienen activo el bit de OCULTO.

0 1: incluye los ficheros que tienen activo el bit de SOLO_LECTURA.

0: excluye los ficheros que tienen activo el bit de SOLO_LECTURA.

pResultBuf Puntero al buffer en donde se almacenarán los resultados de la búsqueda.
ulResultBufLen Contiene la longitud, en bytes, de ResultBuf
pSearchCount Puntero a una variable de cuenta de coincidencias. Al hacer la llamada, esta variable debe contener el número máximo de entradas que se quieren leer en ResultBuf. Al retornar, contiene el número de entradas que hay realmente.
ulFileInfoLevel Especifica el nivel de información que se desea:
1 es el nivel estandar. Con 2 y 3 se accede a los EAs.

Códigos de error

0 Sin error
2 Fichero no encontrado
3 Path no encontrado
6 HANDLE no valido
18 No hay más ficheros
26 Disco sin sistema de ficheros
87 Parámetro no valido
108 Unidad bloqueada
111 Desbordamiento del buffer
113 No hay más handles de busqueda
206 Nombre de fichero demasiado largo
208 Meta-expansion demasiado larga
254 Nombre de EA no válido
275 EAs no coinciden

DosFindNext

editar

DosFindNext encuentra el siguiente archivo de un directorio que coincide con la cadena de busqueda dada en un DosFindFirst. Al usarse un handle para identificar la búsqueda, se pueden hacer varias simultáneamente.

#define INCL_BASE
#include <os2.h> 

HDIR hdirDirHandle;
PVOID pResultBuf;
ULONG ulResultBufLen;
PULONG pSearchCount;
APIRET rc; /* Codigo de error */ 

rc = DosFindNext (hdirDirHandle, pResultBuf, ulResultBufLen, pSearchCount);

Parámetros

hdirDirHandle Handle de busqueda, proporcionado por DosFindFirst.
pResultBuf Puntero al buffer donde almacenará las coincidencias encontradas.
ulResultBufLen La longitud en bytes de ResultBuf.
pSearchCount Antes de la llamada, debe contener el número máximo de encuentros que se deben almacenar en el buffer a la vez. Al retornar, contentrá el número de coincidencias que realmente se han encontrado.

Códigos de error

0 Sin error
6 HANDLE no valido
18 No hay más ficheros
26 Disco sin sistema de ficheros
87 Parámetro no valido
111 Desbordamiento del buffer
275 EAs no coinciden

DosForceDelete

editar

DosForceDelete borra un fichero, de forma que es irrecuperable.

#define INCL_BASE
#include <os2.h> 

PSZ pszFileName;
APIRET rc; /* Codigo de error */ 

rc = DosForceDelete(pszFileName);

Parámetros

pszFileName Puntero a una cadena con el nombre del fichero a borrar. Puede ir acompañado de un path y una unidad. Si ésta no es especificada, se toma la unidad actual. La barra derecha (/) y la invertida (\) pueden ser usadas indistintamente.

Códigos de error

0 Sin error
2 Fichero no encontrado
3 Path no encontrado
5 Acceso denegado
26 Disco sin sistema de ficheros
32 Violación de compartición
36 Desbordamiento del buffer de compartición
87 Parámetro no valido
206 Nombre de fichero demasiado largo

DosMove

editar

DosMove mueve un fichero de un directorio a otro distinto.

#define INCL_BASE
#include <os2.h> 

PSZ pszOldPathName;
PSZ pszNewPathName;
APIRET rc; /* Codigo de error */

rc = DosMove(pszOldPathName, pszNewPathName);

Parámetros

pszOldPathName Puntero a una cadena con el nombre del fichero a mover. Puede ir acompañado de un path. La barra derecha (/) y la invertida (\) pueden ser usadas indistintamente.
pszNewPathName Puntero a una cadena con el nuevo nombre del fichero. Puede ir acompañado de un path. La barra derecha (/) y la invertida (\) pueden ser usadas indistintamente.

Códigos de error

0 Sin error
2 Fichero no encontrado
3 Path no encontrado
5 Acceso denegado
17 Los dispositivos fuente y destino son distintos
26 Disco sin sistema de ficheros
32 Violación de compartición
36 Desbordamiento del buffer de compartición
87 Parámetro no valido
108 Unidad bloqueada
206 Nombre de fichero demasiado largo
250 Fichero origen y destino son el mismo
251 El directorio destino está dentro del fuente

DosOpen

editar

DosOpen abre un fichero nuevo o uno ya existente para trabajar con él.

#define INCL_BASE
#include <os2.h> 

PSZ pszFileName;
PHFILE pshfFileHandle;
PULONG pActionTaken;
ULONG ulFileSize;
ULONG ulFileAttribute;
ULONG ulOpenFlag;
ULONG ulOpenMode;
PEAOP2 pEABuf;
APIRET rc; /* Codigo de error */ 

rc = DosOpen(pszFileName, pshfFileHandle, pActionTaken, ulFileSize, ulFileAttribute, ulOpenFlag, ulOpenMode, pEABuf);

Parámetros

pszFileName Puntero a una cadena con el nombre del fichero a abrir. Puede ir acompañado de un path. La barra derecha (/) y la invertida (\) pueden ser usadas indistintamente.
pshfFileHandle Puntero a una variable donde OS/2 almacenará el handle asignado al fichero.
pActionTaken Puntero a una variable donde OS/2 almacenará un valor que indica la acción tomada por DosOpen. Si la función falla, este valor no tiene significado.
Valor
Definición
1 El fichero existía
2 El fichero fue creado (no existía)
3 El fichero fue truncado (existía y fue reescrito)
ulFileSize Nuevo tamaño lógico (fin de fichero, EOF) en bytes. Este parámetro solo es válido cuando se crea un nuevo fichero o se reescribe uno. En otro caso es ignorado. Es un error crear o reemplazar un fichero con una longitud distinta de cero si el modo de apertura está puesto en SOLO_LECTURA
ulFileAttribute Doble palabra conteniendo el siguiente mapa de bits. Solo es válido si el fichero es creado.
Bit
Descripción
31-6 Reservados. Deben ser cero.
5 El fichero ha sido archivado (bit ARCHIVO activo)
4 El fichero es un subdirectorio.
3 Reservado. Debe ser cero.
2 El fichero es un archivo de sistema.
1 El fichero es oculto y no aparece en una lista del directorio.
0 El fichero puede ser leido, pero no escrito. SOLO_LECTURA.
0 Si está desactivado, el fichero puede ser leido y escrito.
ulOpenFlag Campo de bits de doble palabra que indica la acción a tomar en caso de que exista o no el fichero.
Bits
Descripción
31-8 Reservados. Deben ser cero.
7-4 0000: Abre un fichero que ya existe; falla si no existe.
0001: Abre un fichero si existe; lo crea el fichero si no existe.
3-0 0000: Crea el fichero. Falla si ya existe.
0001: Abre el fichero si ya existe.
0010: Abre el fichero; si ya existe lo reescribe.
ulOpenMode Campo de bits de doble palabra que describe el modo de operación de la función.
Bit
Descripción
31-16 Reservado. Debe ser cero.
15 Apertura directa:
0: FileName representa un fichero para ser abierto normalmente.
1: FileName es 'unidad' (como C: o A:), y representa una unidad de disco o disquete para ser abierta para un acceso directo.
14 0: Las escrituras en el fichero son a través de la cache de disco. El sistema de ficheros escribe los sectores cuando ésta se llena o el fichero es cerrado.
1: Las escrituras en el fichero son a través de la cache de disco, pero los sectores son escritos antes del retorno de una llamada de escritura síncrona. Este estado del fichero lo define como un archivo síncrono.
13 Bit de notificación de errores físicos.
0: Los errores van a través del manejador del sistema.
1: Los errores son notificados al thread que hizo la llamada a través de un código de retorno.
12 0: El driver de disco puede poner datos de las operaciones de I/O en su cache.
1: Las operaciones de I/O al fichero no deben ser realizadas a través del cache del sistema de ficheros.
11 Reservado. Debe ser cero.
10-8 Especifica el modo en que se va a acceder al fichero, de cara a la colocación de los datos en el disco:
000: Sin un modo concreto.
001: Principalmente acceso secuencial.
010: Principalmente acceso aleatorio.
011: Aleatorio concentrado en zonas concretas.
7 0: El handle del fichero puede ser heredado por procesos creados con DosExecPgm.
1: El handle del fichero es privado, y solo accesible por el proceso actual.
6-4 Modos de compartición del fichero:
001: DENY_ALL; no se permite que otros procesos accedan.
010: DENY_WRITE; otros procesos pueden abrirlo para lectura, pero no para escritura.
011: DENY_READ; otros procesos pueden abrirlo para escritura, pero no para lectura.
100: DENY_NONE; otros procesos pueden abrirlo para lectura y para escritura.
3 Reservado. Debe ser cero.
2-0 Modo de acceso. Define como va a acceder el proceso que ha abierto el fichero:
000: READ_ONLY; solo va a realizar operaciones de lectura.
001; WRITE_ONLY; solo va a realizar operaciones de escritura.
010; READ_WRITE; va a realizar operaciones de lectura y escritura.
pEABuf Puntero a una variable de EAs. Antes de hacer la llamada, debe contener una estructura de atributos extendidos. A la salida, no hay cambios en ella. Si no se van a definir o modificar atributos extendidos, pEABuf debe apuntar a cero.

Códigos de error

0 Sin error
2 Fichero no encontrado
3 Path no encontrado
4 Demasiados archivos abiertos
5 Acceso denegado
12 Modo de acceso no valido
26 Disco sin sistema de ficheros
32 Violación de compartición
36 Desbordamiento del buffer de compartición
82 No se puede crear fichero
87 Parámetro no valido
99 Dispositivo en uso
108 Unidad bloqueada
110 Fallo en la apertura
112 Disco lleno
206 Nombre de fichero demasiado largo
231 Cauce (pipe) ocupado.

DosQueryCurrentDir

editar

DosQueryCurrentDir devuelve el path completo del directorio actual para el proceso que realiza la llamada. Es necesario indicar una unidad, pues para cada una de ellas hay un path distinto.

#define INCL_BASE
#include <os2.h> 

ULONG ulDriveNumber;
PBYTE pbDirPath;
PULONG pDirPathLen;
APIRET rc; /* Codigo de error */ 

rc = DosQueryCurrentDir(ulDriveNumber, pbDirPath, pDirPathLen);

Parámetros

ulDriveNumber Numero de unidad. El valor 0 indica la unidad actual, 1 es la unidad A, 2 es la unidad B, 3 la unidad C, etc.
pbDirPath Puntero al buffer en donde OS/2 devolverá el path completo.
pDirPathLen Puntero a una variable. Antes de la llamada debe contener la longitud del buffer. A la salida, si ocurre un error por ser un buffer muy pequeño, contendrá la longitud mínima necesaria en bytes.

Códigos de error

0 Sin error
15 Unidad no válida
26 Disco sin sistema de ficheros
108 Unidad bloqueada
111 Desbordamiento del buffer

DosQueryCurrentDisk

editar

DosQueryCurrentDisk devuelve la unidad por defecto para el proceso que hace la llamada.

#define INCL_BASE
#include <os2.h> 

PULONG pDriveNumber;
PULONG pLogicalDriveMap;
APIRET rc; /* Codigo de error */ 

rc = DosQueryCurrentDisk(pDriveNumber, pLogicalDriveMap);

Parámetros

pDriveNumber Puntero a una variable donde OS/2 devolverá el número de la unidad por defecto. El valor 1 es la unidad A, el 2 la unidad B, el 3 la unidad C, etc.
pLogicalDriveMap Puntero a un mapa de bits donde el sistema devuelve un mapa de las unidades lógicas disponibles. Las unidades de la A a la Z tienen cada una un bit asignado, desde el 0 al 25, del mapa. Por ejemplo, el bit 0 representa la unidad A, el 1 la unidad B, etc. El significado de dicho bit es el siguiente:
Valor
Definición
0 La unidad lógica no existe
1 La unidad lógica sí existe

Códigos de error

0 Sin error

DosRead

editar

DosRead lee el número especificado de bytes a un buffer, desde un fichero, cauce o dispositivo.

#define INCL_BASE
#include <os2.h> 

HFILE FileHandle;
PVOID pBufferArea;
ULONG ulBufferLength;
PULONG pBytesRead;
APIRET rc; /* Codigo de error */ 

rc = DosRead(FileHandle, pBufferArea, ulBufferLength, pBytesRead);

Parámetros

FileHandle Handle obtenido de DosOpen.
pBufferArea Puntero a un buffer donde recibir los bytes leidos.
ulBufferLength Longitud en bytes del buffer. Es el número de bytes a leer.
pBytesRead Puntero a una variable donde OS/2 escribe el número de bytes leidos realmente.

Códigos de error

0 Sin error
5 Acceso denegado
6 HANDLE no valido
26 Disco sin sistema de ficheros
33 Violación del bloqueo
109 El cauce (pipe) está cerrado
234 Demasiados datos

DosResetBuffer

editar

DosResetBuffer escribe los buffers de escritura del fichero indicado. Cuando se escriben caracteres en un fichero, estos son almacenados en un buffer de, al menos, un sector, el cual se escribe cuando se llena o cuando se cierra el fichero. Esta llamada fuerza una escritura de dicho buffer aun cuando no esté lleno.

#define INCL_BASE
#include <os2.h> 
HFILE FileHandle;
APIRET rc; /* Codigo de error */ 
rc = DosResetBuffer(FileHandle);

Parámetros

FileHandle Un handle al fichero cuyo buffer se quiere almacenar.

Códigos de error

0 Sin error
2 Fichero no encontrado
5 Acceso denegado
6 HANDLE no valido

DosScanEnv

editar

DosScanEnv busca una variable de entorno (asignada con SET en el CONFIG.SYS o desde la línea de comandos) y devuelve su contenido.

#define INCL_BASE
#include <os2.h> 

PSZ pszEnvVarName;
PSZ pszResultPointer;
APIRET rc; /* Codigo de error */ 

rc = DosScanEnv(pszEnvVarName, &pszResultPointer);

Parámetros

pszEnvVarName Puntero a una cadena con la variable de entorno a buscar. No se debe incluir el signo igual (=) pues no es parte del nombre.
pszResultPointer Puntero a una variable donde el sistema devuelve un puntero a una cadena con el contenido de la variable de entorno. ResultPointer apunta al primer caracter de dicha cadena.

Códigos de error

0 Sin error
203 Variable de entorno no encontrada

DosSetCurrentDir

editar

DosSetCurrentDir permite cambiar el directorio por defecto. Solo afecta al proceso que realiza la llamada.

#define INCL_BASE
#include <os2.h> 

PSZ pszDirName;
APIRET rc; /* Codigo de error */ 

rc = DosSetCurrentDir(pszDirName);

Parámetros

pszDirName Puntero a una cadena con el nuevo Path.

Códigos de error

0 Sin error
2 Fichero no encontrado
3 Path no encontrado
5 Acceso denegado
8 No hay suficiente memoria
26 Disco sin sistema de ficheros
87 Parámetro no valido
108 Unidad bloqueada
206 Nombre de fichero demasiado largo

DosSetDefaultDisk

editar

DosSetDefaultDisk cambia la unidad por defecto. Solo afecta al proceso que hace la llamada.

#define INCL_BASE
#include <os2.h> 
ulDriveNumber;
APIRET rc; /* Codigo de error */ 
rc = DosSetDefaultDisk(ulDriveNumber);

Parámetros

ulDriveNumber Nueva unidad por defecto. El valor 1 representa a la unidad A, 2 es la unidad B, 3 es la unidad C, etc.

Códigos de error

0 Sin error
15 Unidad no válida

DosShutdown

editar

DosShutdown graba todos los buffers del sistema, cierra los ficheros abiertos y graba la cache, preparando el sistema para apagarlo. Puede tardar varios segundos en ejecutarse.

#define INCL_BASE
#include <os2.h> 
ULONG ulReserved;
APIRET rc; /* Codigo de error */ 
rc = DosShutdown(ulReserved);

Parámetros

ulReserved Doble palabra. Debe valer cero.

Códigos de error

0 Sin error
87 Parámetro no valido
274 Ya se está ejecutando un ShutDown

DosWrite

editar

DosWrite escribe un determinado grupo de bytes desde un buffer al fichero especificado.

#define INCL_BASE
#include <os2.h> 

HFILE FileHandle;
PVOID pBufferArea;
ULONG ulBufferLength;
PULONG pBytesWritten;
APIRET rc; /* Codigo de error */ 

rc = DosWrite(FileHandle, pBufferArea, ulBufferLength, pBytesWritten);

Parámetros

FileHandle Contiene un handle obtenido con DosOpen
pBufferArea Puntero al buffer que contiene los datos a escribir
ulBufferLength Numero de bytes a escribir
pBytesWritten Puntero a una variable donde OS/2 devolverá el número de bytes escritos realmente

Códigos de error

0 Sin error
5 Acceso denegado
6 HANDLE no valido
19 El sistema es de solo lectura o está protegido contra escritura
26 Disco sin sistema de ficheros
29 Ha fallado la escritura
33 Violación del bloqueo
109 El cauce (pipe) está cerrado