The following is a sample C language header file that contains sample prototype definitions for the RAS APIs.
/* definitions for DosDumpProcess */
#define DDP_DISABLEPROCDUMP 0x00000000L /* disable process dumps */
#define DDP_ENABLEPROCDUMP 0x00000001L /* enable process dumps */
#define DDP_PERFORMPROCDUMP 0x00000002L /* perform process dump */
/* definitions for DosSuppressPopUps */
#define SPU_DISABLESUPPRESSION 0x00000000L /* disable popup suppression */
#define SPU_ENABLESUPPRESSION 0x00000001L /* enable popup suppression */
/* definitions for DosQueryRASInfo Index */
#define SIS_MMIOADDR 0
#define SIS_MEC_TABLE 1
#define SIS_SYS_LOG 2
#define LF_LOGENABLE 0x0001 /* Logging enabled */
#define LF_LOGAVAILABLE 0x0002 /* Logging available */
APIRET APIENTRY DosQueryRASInfo(ULONG Index, PPVOID Addr);
APIRET APIENTRY DosForceSystemDump(ULONG reserved);
APIRET APIENTRY DosDumpProcess(ULONG Flag, ULONG Drive, PID Pid);
APIRET APIENTRY DosSuppressPopUps(ULONG Flag, ULONG Drive);
APIRET16 APIENTRY16 DosSysTrace(USHORT Majorcode, USHORT Length,
USHORT Minorcode, PCHAR pData);
APIRET16 APIENTRY16 DosGetSTDA(SEL, SHORT, SHORT );
/* 32-bit Logging Facility Function Prototypes */
/*--------------------------------------------*/
/* Logging Defines */
/*--------------------------------------------*/
#define ERRLOG_SERVICE 1L
#define ERRLOG_VERSION 1
/*--------------------------------------------*/
/* LogRecord status bits */
/*--------------------------------------------*/
#define LF_BIT_PROCNAME 0x0001L
#define LF_BIT_ORIGIN_256 0x0002L
#define LF_BIT_DATETIME 0x0004L
#define LF_BIT_SUSPEND 0x0008L
#define LF_BIT_RESUME 0x0010L
#define LF_BIT_REDIRECT 0x0020L
#define LF_BIT_GETSTATUS 0x0040L
#define LF_BIT_REGISTER 0x0080L
#define LF_BIT_REMOTE_FAIL 0x0100L
/*--------------------------------------------*/
/* Log Entry Record Header for 2.X */
/* This is format used by 2.0 device */
/* drivers and callers of LogAddEntries */
/*--------------------------------------------*/
typedef struct LogRecord
{
USHORT len ; /* this record length(includes len field)*/
USHORT rec_id ; /* record id */
ULONG status ; /* record status bits(see LF_BIT_) */
UCHAR qualifier[4] ; /* qualifier tag */
ULONG reserved ;
ULONG time ; /* hours minutes seconds hundreds */
ULONG date ; /* day month (USHORT)year */
UCHAR data[1] ; /* begin of variable data that includes: */
/* Originator(256 bytes if LF_BIT_ORIGIN_256)*/
/* else 8 bytes long */
/* Processname(260 bytes) only if status */
/* LF_BIT_PROCNMAME set */
/* FormatDLLName(12 bytes) */
/* Variable data */
} LOGRECORD ;
typedef LOGRECORD far *PLOGREC ;
/*----------------------------------------------*/
/* Format of buffer sent to LogAddEntries */
/*----------------------------------------------*/
typedef struct LogEntryRec
{
USHORT version ; /* this version is 1 */
USHORT count ; /* number of log records in this buffer*/
LOGRECORD logrec ; /* repeated count times */
} LOGENTRYREC ;
typedef LOGENTRYREC far *PLOGENTRYREC ;
/*--------------------------------------------------*/
/* Logging facility Function prototypes */
/*--------------------------------------------------*/
APIRET APIENTRY LogOpen( PHFILE phf );
APIRET APIENTRY LogClose( HFILE hf );
APIRET APIENTRY LogAddEntries( HFILE hf, ULONG ulService, PVOID pLogEntries );
/* 16-bit Logging Facility Function Prototypes */
APIRET16 APIENTRY16 DosLogRegister(PUSHORT LogHandle,
PVOID LogRegList,
PUSHORT RequestID);
APIRET16 APIENTRY16 DosLogEntry(USHORT Function,
PVOID LogData);
APIRET16 APIENTRY16 DosLogRead(USHORT LogHandle,
USHORT Length,
PVOID LogBuffer,
PUSHORT ReadSize);