Pointers
┌────────────────┬──────┬──────┬────┬────────────────────────────────────────┐│Field Name │Offset│Length│Type│Description │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │Packet │+0 │20 │S │Device Driver Request Packet │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │PktLen │+0 │1 │B │length in bytes of packet │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │PktUnit │+1 │1 │B │subunit number of block device │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │PktCmd │+2 │1 │B │command code │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │PktStatus │+3 │2 │W │status word │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │PktFlag │+5 │1 │B │disk driver internal flags │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │ │+6 │3 │B │reserved │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │PktDOSLink │+5 │4 │D │ │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │PktDevLink │+9 │4 │D │device multiple-request link │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │PktData │+d │18 │S │data pertaining to specific packet │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │ │+d │10 │S │Generic IOCTL │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │GIOCategory │+d │1 │B │Category Code │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │GIOFunction │+e │1 │B │Function code │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │GIOParaPack │+f │4 │D │pointer to parameter packet │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │GIODataPack │+13 │4 │D │pointer to data packet │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │GIOSFN │+17 │2 │W │(used by Spooler?) │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │GIOParaLen │+19 │2 │w │length of parameter packet │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │GIODataLen │+1b │2 │W │length of data packet │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │ │+d │c │S │INIT Command for Base DDs (0 and 27) │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │InitcUnit │+d │1 │B │number of units returned │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │InitpEnd │+e │4 │D │pointer to free mem after dev │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │InitDevHlp │+e │4 │D │address of Device Helper router │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │InitEcode │+e │2 │W │size of code segment │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │InitEdata │+10 │2 │W │size of data segment │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │InitParms │+12 │4 │D │pointer parameters │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │InitpBPB │+12 │4 │D │pointer to BPBs │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │Initdrv │+16 │1 │B │drive no. assigned to unit 0 │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │ │+17 │1 │B │reserved │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │InitSysiData │+18 │1 │B │SysInit's DOSALIAS selector │ │(for resident │ │ │ │ │ │drivers only) │ │ │ │ │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │ │+d │d │S │query for extended capability command │ │ │ │ │ │(0x1d) │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │ │+d │3 │B │reserved │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │DCS_Addr │+10 │4 │W │16 │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │VCS_Addr │+14 │4 │W │16 │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │ │+d │6 │B │Media Check command 1 │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │MedChkmedia │+d │1 │B │last media byte seen │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │MedChkflaga │+e │1 │B │-1=change 0=dont know 1=no change │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │MedChkpVIDa │+f │4 │D │pointer to VID │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │ │+d │9 │S │build BPB command 2 │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │BldBPBmedia │+d │1 │B │media byte │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │BldBPBbuffer │+e │4 │D │scratch buffer │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │ │+d │f │S │Read/Write IO commands 3, 4, 8, 9, 12, │ │ │ │ │ │24, 25, 26 │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │IOmedia │+d │1 │B │media byte │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │IOpData │+e │4 │D │transfer address │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │IOcount │+12 │2 │W │count of bytes/sectors │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │IOstart │+14 │2 │W │starting sector (block) │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │IOPhysRBA │+14 │4 │D │physical starting sector │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │IOSFNsRBA │+18 │2 │W │for device only │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │PktAdvise │+1a │2 │W │for >= v12 only │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │ │+d │4 │S │Device Open/Close commands 13 and 14 │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │OCSFN │+d │2 │W │sfn of open instance for virtualization │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │ │+d │1 │S │Start/Stop console commands (98, 99) │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │CStpSKG │+d │1 │B │Screen/Keyboard number │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │ │+d │6 │S │De-install driver command 20 │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │DINEndLocn │+d │4 │D │ │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │DINLengthn │+11 │2 │W │ │ └────────────────┴──────┴──────┴────┴────────────────────────────────────────┘
PktStatus word masks
┌────────────┬────────┬────────────────────────────────────────┐ │Name │Bit Mask│Description │ ├────────────┼────────┼────────────────────────────────────────┤ │STERR │0x8000 │Bit 15 - Error │ ├────────────┼────────┼────────────────────────────────────────┤ │STINTER │0x0400 │Bit 10 - Interim character │ ├────────────┼────────┼────────────────────────────────────────┤ │STBUI │0x0200 │Bit 9 - Busy │ ├────────────┼────────┼────────────────────────────────────────┤ │STDON │0x0100 │Bit 8 - Done │ ├────────────┼────────┼────────────────────────────────────────┤ │STECODE │0x00ff │Error code │ ├────────────┼────────┼────────────────────────────────────────┤ │WRECODE │0 │ │ └────────────┴────────┴────────────────────────────────────────┘
PktFlag flags
┌────────────────┬────────┬────────────────────────────────────────┐ │Name │Flag │Description │ │ │value │ │ ├────────────────┼────────┼────────────────────────────────────────┤ │fPktInt13RP │0x01 │Int 13 Request Packet │ ├────────────────┼────────┼────────────────────────────────────────┤ │fPktCallOutDone │0x02 │Int 13 Callout completed │ ├────────────────┼────────┼────────────────────────────────────────┤ │fPktDiskIOTchd │0x04 │Disk_IO has touched this packet │ ├────────────────┼────────┼────────────────────────────────────────┤ │STDON │0x0100 │Bit 8 - Done │ ├────────────────┼────────┼────────────────────────────────────────┤ │STECODE │0x00ff │Error code │ ├────────────────┼────────┼────────────────────────────────────────┤ │WRECODE │0 │ │ └────────────────┴────────┴────────────────────────────────────────┘
See Device Driver Strategy Commands for a cross-reference of PktCmd command codes.