fdrawcmd.sys — Structures

Introduction

The following data structures are used by IOCTL requests:

FD_CMD_RESULT FDC result bytes.
FD_CONFIGURE_PARAMS Configuration settings.
FD_DRIVE_STATUS Drive status (ST3).
FD_DUMPREG_RESULT Diagnostic register dump.
FD_FDC_INFO Controller information.
FD_FORMAT_PARAMS Format track layout.
FD_ID_HEADER Sector ID header.
FD_INTERRUPT_STATUS Seek/recalibrate result.
FD_LOCK_PARAMS New setting lock status.
FD_LOCK_RESULT Previous setting lock status.
FD_PERPENDICULAR_PARAMS Perpendicular drive selection.
FD_RAW_READ_PARAMS 2-drive raw track reading.
FD_READ_ID_PARAMS Read id parameters.
FD_READ_WRITE_PARAMS Read/write parameters.
FD_RELATIVE_SEEK_PARAMS Relative seek parameters.
FD_SCAN_PARAMS Track scan parameters.
FD_SCAN_RESULT Sectors found in scan.
FD_SEEK_PARAMS Absolute seek parameters.
FD_SENSE_PARAMS Sense drive status.
FD_SPECIFY_PARAMS Step rate and head load/unload times.

FD_CMD_RESULT

typedef struct tagFD_CMD_RESULT
{
    BYTE st0, st1, st2;
    BYTE cyl, head, sector, size;
} FD_CMD_RESULT, *PFD_CMD_RESULT;

See also: IOCTL_FD_GET_RESULT, IOCTL_FDCMD_READ_ID, etc.


FD_CONFIGURE_PARAMS

typedef struct tagFD_CONFIGURE_PARAMS
{
    BYTE eis_efifo_poll_fifothr;
    BYTE pretrk;
} FD_CONFIGURE_PARAMS, *PFD_CONFIGURE_PARAMS;

See also: IOCTL_FDCMD_CONFIGURE


FD_DRIVE_STATUS

typedef struct tagFD_DRIVE_STATUS
{
    BYTE st3;
} FD_DRIVE_STATUS, *PFD_DRIVE_STATUS;

See also: IOCTL_FDCMD_SENSE_DRIVE_STATUS


FD_DUMPREG_RESULT

typedef struct tagFD_DUMPREG_RESULT
{
    BYTE pcn0, pcn1, pcn2, pcn3;
    BYTE srt_hut;
    BYTE hlt_nd;
    BYTE sceot;
    BYTE lock_d0123_gap_wgate;
    BYTE eis_efifo_poll_fifothr;
    BYTE pretrk;
} FD_DUMPREG_RESULT, *PFD_DUMPREG_RESULT;

See also: IOCTL_FDCMD_DUMPREG


FD_FDC_INFO

typedef struct tagFD_FDC_INFO
{
    BYTE ControllerType;
    BYTE SpeedsAvailable;
    BYTE BusType;
    ULONG BusNumber;
    ULONG ControllerNumber;
    ULONG PeripheralNumber;
} FD_FDC_INFO, *PFD_FDC_INFO;

See also: IOCTL_FD_GET_FDC_INFO


FD_FORMAT_PARAMS

typedef struct tagFD_FORMAT_PARAMS
{
    BYTE flags;
    BYTE phead;
    BYTE size, sectors, gap, fill;
} FD_FORMAT_PARAMS, *PFD_FORMAT_PARAMS;

See also: IOCTL_FDCMD_FORMAT_TRACK


FD_ID_HEADER

typedef struct tagFD_ID_HEADER
{
    BYTE cyl, head, sector, size;
} FD_ID_HEADER, *PFD_ID_HEADER;

See also: IOCTL_FDCMD_FORMAT_TRACK, IOCTL_FD_SCAN_TRACK


FD_INTERRUPT_STATUS

typedef struct tagFD_INTERRUPT_STATUS
{
    BYTE st0;
    BYTE pcn;
} FD_INTERRUPT_STATUS, *PFD_INTERRUPT_STATUS;

See also: IOCTL_FDCMD_SENSE_INT_STATUS, IOCTL_FDCMD_RECALIBRATE, IOCTL_FDCMD_RELATIVE_SEEK, IOCTL_FDCMD_SEEK


FD_LOCK_PARAMS

typedef struct tagFD_LOCK_PARAMS
{
    BYTE lock;
} FD_LOCK_PARAMS, *PFD_LOCK_PARAMS;

See also: IOCTL_FDCMD_LOCK


FD_LOCK_RESULT

typedef struct tagFD_LOCK_RESULT
{
    BYTE lock;
} FD_LOCK_RESULT, *PFD_LOCK_RESULT;

See also: IOCTL_FDCMD_LOCK


FD_PERPENDICULAR_PARAMS

typedef struct tagFD_PERPENDICULAR_PARAMS
{
    BYTE ow_ds_gap_wgate;
} FD_PERPENDICULAR_PARAMS, *PFD_PERPENDICULAR_PARAMS;

See also: IOCTL_FDCMD_PERPENDICULAR_MODE


FD_RAW_READ_PARAMS

typedef struct tagFD_RAW_READ_PARAMS
{
    BYTE flags;
    BYTE head, size;
} FD_RAW_READ_PARAMS, *FD_RAW_READ_PARAMS;

See also: IOCTL_FD_RAW_READ_TRACK


FD_READ_ID_PARAMS

typedef struct tagFD_READ_ID_PARAMS
{
    BYTE flags;
    BYTE head;
} FD_READ_ID_PARAMS, *PFD_READ_ID_PARAMS;

See also: IOCTL_FDCMD_READ_ID


FD_READ_WRITE_PARAMS

typedef struct tagFD_READ_WRITE_PARAMS
{
    BYTE flags;
    BYTE phead;
    BYTE cyl, head, sector, size;
    BYTE eot, gap, datalen;
} FD_READ_WRITE_PARAMS, *PFD_READ_WRITE_PARAMS;

See also: IOCTL_FDCMD_READ_DATA, IOCTL_FDCMD_WRITE_DATA, IOCTL_FDCMD_READ_DELETED_DATA, IOCTL_FDCMD_WRITE_DELETED_DATA


FD_RELATIVE_SEEK_PARAMS

typedef struct tagFD_RELATIVE_SEEK_PARAMS
{
    BYTE flags;
    BYTE head;
    BYTE offset;
} FD_RELATIVE_SEEK_PARAMS, *PFD_RELATIVE_SEEK_PARAMS;

See also: IOCTL_FDCMD_RELATIVE_SEEK


FD_SCAN_PARAMS

typedef struct tagFD_SCAN_PARAMS
{
    BYTE flags;
    BYTE head;
} FD_SCAN_PARAMS, *PFD_SCAN_PARAMS;

Note: version <= 1.0.0.19 also included a cyl value for the cylinder to seek/scan. This has now been removed, with old-style calls supported only for backwards compatibility.

See also: IOCTL_FD_SCAN_TRACK


FD_SCAN_RESULT

typedef struct tagFD_SCAN_RESULT
{
    BYTE count;
    FD_ID_HEADER Header[];
} FD_SCAN_RESULT, *PFD_SCAN_RESULT;

See also: IOCTL_FD_SCAN_TRACK


FD_SEEK_PARAMS

typedef struct tagFD_SEEK_PARAMS
{
    BYTE cyl;
    BYTE head;
} FD_SEEK_PARAMS, *PFD_SEEK_PARAMS;

See also: IOCTL_FDCMD_SEEK


FD_SENSE_PARAMS

typedef struct tagFD_SENSE_PARAMS
{
    BYTE head;
} FD_SENSE_PARAMS, *PFD_SENSE_PARAMS;

See also: IOCTL_FDCMD_SENSE_DRIVE_STATUS


FD_SHORT_WRITE_PARAMS

typedef struct tagFD_SHORT_WRITE_PARAMS
{
    DWORD length;    // length to write before interrupting
    DWORD finetune;  // finetune delay in microseconds
} FD_SHORT_WRITE_PARAMS, *PFD_SHORT_WRITE_PARAMS;

See also: IOCTL_FD_SET_SHORT_WRITE


FD_SPECIFY_PARAMS

typedef struct tagFD_SPECIFY_PARAMS
{
    BYTE srt_hut;
    BYTE hlt_nd;
} FD_SPECIFY_PARAMS, *PFD_SPECIFY_PARAMS;

See also: IOCTL_FDCMD_SPECIFY


FD_TIMED_ID_HEADER

typedef struct tagFD_TIMED_ID_HEADER
{
    DWORD reltime;  // time relative to index (in microseconds)
    BYTE cyl, head, sector, size;
} FD_TIMED_ID_HEADER, *PFD_TIMED_ID_HEADER;

See also: IOCTL_FD_TIMED_SCAN_TRACK


FD_TIMED_SCAN_RESULT

typedef struct tagFD_TIMED_SCAN_RESULT
{
    DWORD count;      // count of returned headers
    BYTE firstseen;   // index of first sector detected (usually 0)
    DWORD tracktime;  // total time for track (in microseconds)
    FD_TIMED_ID_HEADER Header[];
} FD_TIMED_SCAN_RESULT, *PFD_TIMED_SCAN_RESULT;

See also: IOCTL_FD_TIMED_SCAN_TRACK