Статьи по программированию
примеры программного кода
Delphi, Kylix, C, C++, SQL, Visual Basic, Bash, Assembler, 1С
Qt, KOL, MFC, Rx Library, Windows, Linux, Mac OS
Пример использования команды SC_ABORT_SRB
Опубликовано codeLocker в 22.08.2008 в 07:24.
' объявляем константу
Private Const SC__ABORT_SRB = SH3
' объявляем структуры
Private Type SRB_ExecSCSICmd
SRB_Cmd As Byte
SRB_Status As Byte
SRB_HaId As Byte
ISRB_Flags As Byte
SRB_Hdr_Rsvd As Long
SRB_Target As Byte
SRB_Lun As Byte
SRB_Rsvdl As Integer
SRB_BufLen As Long
SRB_BufPointer As Long
SRB SenseLen As Byte
SRB_CDBLen As Byte
SRB_HaStat As Byte
SRB_TargStat As Byte
SRB_PostProc As Long
SRB_Rsvd2(19) As Byte
SRB_CDBByte(15) As Byte
SRB_SenseData(15) As Byte
End Type
Private Type SRB_Abort
SRB_Cmd As Byte
SRB_Status As Byte
SRB_HaId As Byte
SRB_Flags As Byte
SRB_Hdr_Rsvd As Long
SRBJToAbort As Long
End Type
' объявляем функцию
Private Declare Function SendASPI32Command Lib "Wnaspi32" _ (haSRB As SRB_ExecSCSICmd) As Long
' пишем свою функцию
Public Function AbortSCSI()As Boolean Dim Exec As SRB_ExecSCSICmd
Dim AbortSCSI As SRB_Abort
Dim IResult As Long
' заполняем структуру SRB_Abort
AbortSCSI.SRB_Cmd = SC_ABORT_SRB
' идентификатор берем равный 1
AbortSCSI.SRB_HaId = 1
AbortSCSI.SRB_Flags = 0
AbortSCSI.SRBJHdrJRsvd = 0
'присваиваем полю указателя значение структуры SRBJExecSCSICmd AbortSCSI.SRBJToAbort = VarPtr(Exec)
lresult = SendASPI32Coramand(AbortSCSI)
AbortSCSI = True
End Function
Private Const SC__ABORT_SRB = SH3
' объявляем структуры
Private Type SRB_ExecSCSICmd
SRB_Cmd As Byte
SRB_Status As Byte
SRB_HaId As Byte
ISRB_Flags As Byte
SRB_Hdr_Rsvd As Long
SRB_Target As Byte
SRB_Lun As Byte
SRB_Rsvdl As Integer
SRB_BufLen As Long
SRB_BufPointer As Long
SRB SenseLen As Byte
SRB_CDBLen As Byte
SRB_HaStat As Byte
SRB_TargStat As Byte
SRB_PostProc As Long
SRB_Rsvd2(19) As Byte
SRB_CDBByte(15) As Byte
SRB_SenseData(15) As Byte
End Type
Private Type SRB_Abort
SRB_Cmd As Byte
SRB_Status As Byte
SRB_HaId As Byte
SRB_Flags As Byte
SRB_Hdr_Rsvd As Long
SRBJToAbort As Long
End Type
' объявляем функцию
Private Declare Function SendASPI32Command Lib "Wnaspi32" _ (haSRB As SRB_ExecSCSICmd) As Long
' пишем свою функцию
Public Function AbortSCSI()As Boolean Dim Exec As SRB_ExecSCSICmd
Dim AbortSCSI As SRB_Abort
Dim IResult As Long
' заполняем структуру SRB_Abort
AbortSCSI.SRB_Cmd = SC_ABORT_SRB
' идентификатор берем равный 1
AbortSCSI.SRB_HaId = 1
AbortSCSI.SRB_Flags = 0
AbortSCSI.SRBJHdrJRsvd = 0
'присваиваем полю указателя значение структуры SRBJExecSCSICmd AbortSCSI.SRBJToAbort = VarPtr(Exec)
lresult = SendASPI32Coramand(AbortSCSI)
AbortSCSI = True
End Function
Материал похожий на Пример использования команды SC_ABORT_SRB
- Пример использования команды SC_ABORT_SRB
- Пример использования команды SC_GETSET_TIMEOUTS
- Пример использования команды INQUIRY
- Пример использования команды SC_GETSET_TIMEOUTS
Навигация
Сейчас на сайте
Сейчас на сайте 0 пользователей и 1 гость.
Статистика
Всего материалов: 1387