SendASPI32Commandで送るコマンドはいくつかありますが、私が使っているのは次の3つです。
ホストアダプタに関する情報(接続可能な機器の数など)を取得する
SC_HA_INQUIRY 0x00
接続されているデバイスの情報(種類など)を取得する
SC_GET_DEV_TYPE 0x01
デバイスにコマンドを送る
SC_EXEC_SCSI_CMD 0x02
各コマンドに対応する構造体は、次の通りです。
(今日は2つのみ)
ホストアダプタに関する情報を取得する
typedef struct tSRB_HAInquiry
{
BYTE SRB_Cmd; // (入力)コマンドコード = SC_HA_INQUIRY
BYTE SRB_Status;
BYTE SRB_Ha; // (入力)ホストアダプタ番号
BYTE SRB_Flags;
DWORD Reserved1;
BYTE HA_Count;
BYTE HA_SCSI_ID;
BYTE HA_ManagerId[16];
BYTE HA_Identifier[16];
BYTE HA_Unique[16]; // (出力)HA_Unique[3]に接続できる最大の機器数(ただし、0の時は8)
WORD Reserved2;
} SRB_HAInquiry;
typedef struct tSRB_GDEVBlock
{
BYTE SRB_Cmd; // (入力)コマンドコード = SC_GET_DEV_TYPE
BYTE SRB_Status;
BYTE SRB_Ha; // (入力)ホストアダプタ番号
BYTE SRB_Flags;
DWORD Reserved1;
BYTE SRB_Tgt; // (入力)ホストアダプタ内のターゲットの番号
BYTE SRB_Lun; // (入力)ターゲット内の論理ユニット番号
BYTE SRB_DeviceType; // (出力)デバイスの種類
BYTE Reserved2;
} SRB_GDEVBlock;
SRB_DeviceType に出力されるデバイスの種類
DTYPE_DASD 0x00 // Disk Device
DTYPE_SEQD 0x01 // Tape Device
DTYPE_PRNT 0x02 // Printer
DTYPE_PROC 0x03 // Processor
DTYPE_WORM 0x04 // Write-once read-multiple
DTYPE_CDROM 0x05 // CD-ROM device
DTYPE_SCAN 0x06 // Scanner device
DTYPE_OPTI 0x07 // Optical memory device
DTYPE_JUKE 0x08 // Medium Changer device
DTYPE_COMM 0x09 // Communications device
DTYPE_RESL 0x0A // Reserved (low)
DTYPE_RESH 0x1E // Reserved (high)
DTYPE_UNKNOWN 0x1F // Unknown or no device type
使わない値には、0を入れてください。
これらの構造体を、SendASPI32Commandの引数として使用します。
2006年06月05日
ASPIのコマンド
この記事へのコメント
コメントを書く
この記事へのトラックバック

