All direct call commands are issued by the device managers (OS2DASD.DMD and OS2SCSI.DMD) or filter device drivers to an adapter device driver's registered entry point, with a global pointer to the Input/Output Request Block (IORB), as follows:

C Language Syntax

──────────────────────────────────────────────────────────────────────────
#include <iorb.h>

VOID (FAR * ADDEntryPoint) (piorb);

PIORB   piorb;        /* Far pointer to the IORB control block */
──────────────────────────────────────────────────────────────────────────

Assembly Language Syntax

──────────────────────────────────────────────────────────────────────────
#include <iorb.inc>

  ; ** ES:BX = IORB Pointer
  PUSH    es                                   ; IORB Segment
  PUSH    bx                                   ; IORB Offset
  CALL    dword ptr AddEntryPoint              ; Call adapter device driver
  ADD     sp, 4                                ; Clean-up stack
──────────────────────────────────────────────────────────────────────────

Results

The results of the command are returned in the IORB.

The following table categorizes and lists the direct call commands used for the DASD and SCSI device manager interface:

┌────────────────────────┬────────────────────────────────────┐
│Command Type            │Commands                            │
├────────────────────────┼────────────────────────────────────┤
│CONFIGURATION           │                                    │
│                        │GET_DEVICE_TABLE                    │
│                        │COMPLETE_INIT                       │
├────────────────────────┼────────────────────────────────────┤
│UNIT_CONTROL            │                                    │
│                        │ALLOCATE_UNIT                       │
│                        │DEALLOCATE_UNIT                     │
│                        │CHANGE_UNITINFO                     │
├────────────────────────┼────────────────────────────────────┤
│GEOMETRY                │                                    │
│                        │GET_MEDIA_GEOMETRY                  │
│                        │SET_MEDIA_GEOMETRY                  │
│                        │GET_DEVICE_GEOMETRY                 │
│                        │SET_LOGICAL_GEOMETRY                │
├────────────────────────┼────────────────────────────────────┤
│EXECUTE_IO              │                                    │
│                        │READ                                │
│                        │READ_VERIFY                         │
│                        │READ_PREFETCH                       │
│                        │WRITE                               │
│                        │WRITE_VERIFY                        │
├────────────────────────┼────────────────────────────────────┤
│FORMAT                  │                                    │
│                        │FORMAT_MEDIA                        │
│                        │FORMAT_TRACK                        │
│                        │FORMAT_PROGRESS                     │
├────────────────────────┼────────────────────────────────────┤
│UNIT_STATUS             │                                    │
│                        │GET_UNIT_STATUS                     │
│                        │CHANGELINE_STATE                    │
│                        │GET_MEDIA_SENSE                     │
│                        │GET_LOCK_STATUS                     │
├────────────────────────┼────────────────────────────────────┤
│DEVICE_CONTROL          │                                    │
│                        │ABORT                               │
│                        │RESET                               │
│                        │SUSPEND                             │
│                        │RESUME                              │
│                        │LOCK_MEDIA                          │
│                        │UNLOCK_MEDIA                        │
│                        │EJECT_MEDIA                         │
├────────────────────────┼────────────────────────────────────┤
│ADAPTER_PASSTHRU        │                                    │
│                        │EXECUTE_SCB                         │
│                        │EXECUTE_CDB                         │
└────────────────────────┴────────────────────────────────────┘

DevHlp services introduced with the OS/2 2.0 operating system to support this strategy include:


[Back: DASD, SCSI, and CD-ROM Device Manager Interface Specification]
[Next: IORB Control Blocks]