Prototype: DWORD SendASPI32Command(LPSRB)
Declaration: LPSRB lpSRB;
The SendASPI32Command function with command code SC_GET_DISK_INFO is used to obtain information about a disk type SCSI device. The information returned includes BIOS Int 13h control and accessibility of the device, the drive's Int 13h physical drive number, and the geometry used by the Int 13h services for the drive.
Note: This command is not valid for Windows NT, which does not use the Int 13 interface.
Parameter | Description |
---|---|
lpSRB | Points to the following SCSI request block |
typedef struct {
BYTE SRB_Cmd; // ASPI command code = SC_EXEC_SCSI_CMD
BYTE SRB_Status; // ASPI command status byte
BYTE SRB_HaId; // ASPI host adapter number
BYTE SRB_Flags; // Reserved
DWORD SRB_Hdr_Rsvd; // Reserved
BYTE SRB_Target; // Target's SCSI ID
BYTE SRB_Lun; // Target's LUN number
BYTE SRB_DriveFlags; // Driver flags
BYTE SRB_Int13HDriveInfo; // Host Adapter Status
BYTE SRB_Heads; // Preferred number of heads translation
BYTE SRB_Sectors; // Preferred number of sectors translation
BYTE SRB_Rsvd1[10]; // Reserved
} SRB_GetDiskInfo, *PSRB_GetDiskInfo;
Table 4-12. Get SCSI Disk Information Command
Member | Description |
---|---|
SRB_Cmd | [IN] This field must contain SC_GET_DISK_INFO. |
SRB_Status | [OUT] On return, this field will be the same as the return status defined below. |
SRB_HaId | [IN] This field specifies which installed host adapter the request is intended for. Host adapter numbers are always assigned by the ASPI manager layer beginning with zero. |
SRB_Flags | [IN] Reserved = 0 |
SRB_Hdr_Rsvd | Reserved = 0 |
SRB_Target | [IN] SCSI ID of target device. |
SRB_Lun | [IN] Logical Unit Number (LUN) of device. This field is ignored by ASPI for Win32, since SCSI Bus Device resets are done on a per-target basis only. |
SRB_DriveFlags | [OUT] Upon completion of the SCSI command, the ASPI manager sets this field as follows: |
Bit 7-2 | Reserved |
Bit 1-0 | These bits are encoded to reflect Int 13h control and accessibility to the device. Bit 1 is the most significant bit. DISK_NOT_INT13 Device is not controlled by Int 13h services DISK_INT13_AND_DOS Device is under Int 13h control and is claimed by DOS DISK_INT1 Device is under Int 13h control but not claimed by DOS |
SRB_Int13DriveInfo | [OUT] Upon completion of the SCSI command, the ASPI manager sets this field with the physical drive number that Int 13h services assigned to the device. The valid drive numbers are 0x00 to 0xFF. This field is only valid if bits 1-0 of the SRB_DriveFlags were set to DISK_INT13_AND_DOS or DISK_INT13. |
SRB_Heads | [OUT] Upon completion of the SCSI command, the ASPI manager sets this field to the number of heads the Int13h services is using for this device's geometry. The valid drive numbers are 0x00 to 0xFF. This field is only valid if bits 1-0 of the SRB_DriveFlags were set to DISK_INT13_AND_DOS or DISK_INT13. |
SRB_Sectors | [OUT] Upon completion of the SCSI command, the ASPI manager sets this field to the number of sectors the Int 13h services is using for this device's geometry. The valid drive numbers are 0x00 to 0xFF. This field is only valid if bits 1-0 of the SRB_DriveFlags were set to DISK_INT13_AND_DOS or DISK_INT13. |
Table 4-13. Return Values from Get SCSI Disk Information Command
Value | Meaning |
---|---|
SS_COMP | SCSI/ASPI request has completed without error. |
SS_INVALID_HA | Invalid host adapter number. |
SS_INVALID_SRB | One or more parameters in the SCSI Request Block (SRB) are set incorrectly. |
Example
This example obtains disk information from device LUN 0, SCSI ID 2, attached to host adapter #0.
SRB_GetDiskInfo MySRB;
DWORD ASPIStatus;
.
.
MySRB.SRB_Header.SRB_Cmd = SC_GET_DISK_INFO;
MySRB.SRB_HaId = 0;
MySRB.SRB_Flags = 0;
MySRB.SRB_Hdr_Rsvd = 0;
MySRB.SRB_Target = 2;
MySRB.SRB_Lun = 0;
ASPIStatus = SendASPI32Command ( (LPSRB) &MySRB );
.
.