Статьи по программированию
примеры программного кода
Delphi, Kylix, C, C++, SQL, Visual Basic, Bash, Assembler, 1С
Qt, KOL, MFC, Rx Library, Windows, Linux, Mac OS
Visual C++ (40)
-->Пример использования команды INQUIRY
Опубликовано codeLocker в 20.09.2008 в 12:59.
ОС: Windows Язык: C++ • Visual C++ Раздел: Системное • Работа с железом • SCSI/IDE
BYTE Getlnfo (BYTE byAdapter, BYTEbyTarget, char* buffer)
{
// объявляем переменные
SRB_ExecSCSICmd Exec; // структура обработки команды ASPI
HANDLE hEventASPI; // объект события
BYTE byBuff [100] ; // буфер для хранения полученных данных
DWORD dwStatus;
// обнуляем структуру SRB_ExecSCSICmd и буфер
memset (SExec, 0, sizeof (SRB_ExecSCSICmd));
memset (byBuff, 0, 100);
// заполняем структуру данными
{
// объявляем переменные
SRB_ExecSCSICmd Exec; // структура обработки команды ASPI
HANDLE hEventASPI; // объект события
BYTE byBuff [100] ; // буфер для хранения полученных данных
DWORD dwStatus;
// обнуляем структуру SRB_ExecSCSICmd и буфер
memset (SExec, 0, sizeof (SRB_ExecSCSICmd));
memset (byBuff, 0, 100);
// заполняем структуру данными
Пример использования команды COPY
Опубликовано codeLocker в 20.09.2008 в 12:43.
ОС: Windows Язык: C++ • Visual C++ Раздел: Системное • Работа с железом • SCSI/IDE
BYTE CopySeg (BYTE byAdapter, BYTE byTarget)
{
// объявляем переменные
SRB_ExecSCSICmd Exec;
// структура обработки команды ASPI
HANDLE hEventASPI; // объект события DWORD dwStatus;
unsigned char Buffer[20];
// обнуляем структуру SRB_ExecSCSICmd и буфер
memset (&Exec, 0, sizeof (SRB_ExecSCSICmd)) ;
memset (SBuffer, 0, 20);
// заполняем буфер
Buffer[0] = 0x10; // код функции COPY 02h и высший приоритет
{
// объявляем переменные
SRB_ExecSCSICmd Exec;
// структура обработки команды ASPI
HANDLE hEventASPI; // объект события DWORD dwStatus;
unsigned char Buffer[20];
// обнуляем структуру SRB_ExecSCSICmd и буфер
memset (&Exec, 0, sizeof (SRB_ExecSCSICmd)) ;
memset (SBuffer, 0, 20);
// заполняем буфер
Buffer[0] = 0x10; // код функции COPY 02h и высший приоритет
Пример использования команды CHANGE DEFINITION
Опубликовано codeLocker в 20.09.2008 в 12:23.
ОС: Windows Язык: C++ • Visual C++ Раздел: Системное • Работа с железом • SCSI/IDE
BYTE Change (BYTE byAdapter, BYTE byTarget)
{
//объявляем переменные
SRB ExecSCSICmd Exec; // структура обработки команды ASPI
HANDLE hEventASPI; // объект события
DWORD dwStatus;
// обнуляем структуру SRB_ExecSCSICmd
memset (SExec, 0, sizeof (SRB_ExecSCSICmd) ) ;
// заполняем структуру данными
Exec.SRB_Cmd = SC_EXEC_SCSI_CMD;
Exec.SRB_HaId = byAdapter;
// как получить значения byAdapter и byTarget
{
//объявляем переменные
SRB ExecSCSICmd Exec; // структура обработки команды ASPI
HANDLE hEventASPI; // объект события
DWORD dwStatus;
// обнуляем структуру SRB_ExecSCSICmd
memset (SExec, 0, sizeof (SRB_ExecSCSICmd) ) ;
// заполняем структуру данными
Exec.SRB_Cmd = SC_EXEC_SCSI_CMD;
Exec.SRB_HaId = byAdapter;
// как получить значения byAdapter и byTarget
Обработка команды ASPI методом опроса
Опубликовано codeLocker в 24.08.2008 в 07:31.
ОС: Windows Язык: C++ • Visual C++ Раздел: Системное • Работа с железом • SCSI/IDE
BYTE byBuf[32];
//буфер для данных
SRB_ExecSCSICmd Exec;
//структура команды
//обнуляем и заполняем структуру команды
memset (SExec, 0, sizeof(SRB_ExecSCSICmd));
Exec. SRB_Cmd = SC_EXEC_SCSI_CMD;
Exec. SRB_Flags = SRB_DIR_IN;
Exec. SRB_Target = 3;//идентификатор устройства
Exec. SRB_BufLen = 32;//размер буфера для приема данных
Exec. SRB_BufPointer = byBuf;//указатель на буфер данных
//буфер для данных
SRB_ExecSCSICmd Exec;
//структура команды
//обнуляем и заполняем структуру команды
memset (SExec, 0, sizeof(SRB_ExecSCSICmd));
Exec. SRB_Cmd = SC_EXEC_SCSI_CMD;
Exec. SRB_Flags = SRB_DIR_IN;
Exec. SRB_Target = 3;//идентификатор устройства
Exec. SRB_BufLen = 32;//размер буфера для приема данных
Exec. SRB_BufPointer = byBuf;//указатель на буфер данных
Обработка команды ASPI через функцию обратного вызова
Опубликовано codeLocker в 24.08.2008 в 07:28.
ОС: Windows Язык: C++ • Visual C++ Раздел: Системное • Работа с железом • SCSI/IDE
//пишем свою функцию обратного вызова
void APIENTRY ASPICallback(SRB_ExecSCSICmd pExec)
{
//обрабатываем возвращаемое значение
if(pExec->SRB_Status != SS_COMP)
{
//команда выполнена с ошибкой
}
}
//в коде программы используем функцию
ASPICallBack BYTE byBuf[32];//буфер для данных
3RB_ExecSCSICmd Exec;//структура команды
//обнуляем и заполняем структуру команды
void APIENTRY ASPICallback(SRB_ExecSCSICmd pExec)
{
//обрабатываем возвращаемое значение
if(pExec->SRB_Status != SS_COMP)
{
//команда выполнена с ошибкой
}
}
//в коде программы используем функцию
ASPICallBack BYTE byBuf[32];//буфер для данных
3RB_ExecSCSICmd Exec;//структура команды
//обнуляем и заполняем структуру команды
Спонсоры проекта:
- Раскрутка сайта Киев, студгородка.
Навигация
Сейчас на сайте
Сейчас на сайте 0 пользователей и 2 гостя.
Статистика
Всего материалов: 1387