## Storage Device Driver Reference

[prev][next][parent][TOC]

### OS/2 API Cover Functions

A set of DDTT OS/2 API-cover routines is provided. These routines detect and report error conditions returned by OS/2 API calls. Formatted error messages do not have to be created for each API called; however, if the API returns an error, it will be reported in the log file. The provided cover APIs have the same name as their OS/2 counterparts but are prefaced with ddt. Likewise, the calling parameters are also identical, except for three additional parameters added after the standard parameters:

       IString pszCallingRoutineName;

        / / Name   of   the   device   specific   stub   function
        / /   calling   routine .    This   IString   is   printed
        / /   as   part   of   any   error   message   generated   in
        / /   the   API   cover   routine .

          IString   pszLocationDescription ;

        / /   Any   text   the   DLL   writer   wants   included
        / /   with   the   error   message   text   from   the   API
        / /   cover   routine .

          OutputStream &   output ;

        / /   OutputStream   to   send   any   error   or
        / /   informational   messages   from   the   API   cover
        / /   routine .

Listed below is the current set of OS/2 APIs for which DDTT has implemented cover routines:

ddtDosOpen
ddtDosRead
ddtDosWrite
ddtDosDevIOCtl
ddtDosClose
ddtDosPhysicalDisk

The writer of a device-specific DLL must include ddtos2.h.

       # include ddtos2.h

Below is a sample prototype of one of the most frequently used API cover routines.

       APIRET _export ddtDosDevIOCtl(

                      HFILE hDevice,

                      ULONG category,

                      ULONG function,

                      PVOID pParams,

                      ULONG cbParmLenMax,

                      PULONG pcbParmLen,

                      PVOID pData,

                      ULONG cbDataLenMax,

                      PULONG pcbDataLen,

                      IString pszCallingRoutineName,

                      IString pszLocationDescription,

                      OutputStream& output);