PSS ID Number: 196550
Article Last Modified on 11/12/1999
IOR_func:
IOR_IDE_PASS_THROUGH (0x2B)
IOR_buffer_pointer:
linear buffer pointer if data transfer is to occur.
IOR_xfer_count:
transfer length if the command involves transfer of data (0 if none).
IOR_requestor_usage[0]:
Initially contains the seven parameters to send to be written to the IDE
task file (command and control registers). When the port driver
completes, this field contains the end-of-command values of the task
file registers.
typedef struct _IDEREGS {
BYTE bFeaturesReg; // Used for specifying DFP "sub commands".
BYTE bSectorCountReg; // IDE sector count register.
BYTE bSectorNumberReg; // IDE sector number register.
BYTE bCylLowReg; // IDE low order cylinder value.
BYTE bCylHighReg; // IDE high order cylinder value.
BYTE bDriveHeadReg; // IDE drive/head register.
BYTE bCommandReg; // Actual IDE command. Checked for validity by
driver.
} IDEREGS, *PIDEREGS, *LPIDEREGS;
IOR_flags:
IORF_DATA_IN if reading from drive, IORF_DATA_OUT if writing to drive.
Neither should be set if no data is transferred. Also set the following
flags: IORF_HIGH_PRIORITY, IORF_SYNC_COMMAND, and IORF_VERSION_002.
IOR_next, IOR_start_addr[2], IOR_req_vol_handle:
Set these fields to zero.
IOR_vol_designtr:
Set equal to DCB_unit_number. Physical unit (0x80) based.
On request callback, the task file register structure, is updated to
reflect each value in the task file. Good IOR_STATUS= IORS_SUCCESS is
always returned for passthrough requests.
You can find specifications for SMART IDE at the ring 3 (application) level
on the following Web site:
NOTE: If the IDE port driver is not loaded, then SMARTVSD does not load.
Any attempt by an application to open SMARTVSD then fails.
Keywords: kbhowto kbStorageDev KB196550
Technology: kbAudDeveloper kbWin32DDK95 kbWin32DDK98 kbWin32DDKSearch kbWin32sSearch kbWin95search kbWin98search kbWinDDKSearch