Курсовая работа: Протоколирование обмена информацией между компьютером и внешним запоминающим USB-устройством
Параметры для IRP типа IRP_MJ_READ:
ULONG Length
ULONG Key
LARGE_INTEGER ByteOffset
Параметры для IRP типа IRP_MJ_WRITE:
ULONG Length
ULONG Key
LARGE_INTEGER ByteOffset
Параметры для IRP типа IRP_MJ_DEVICE_CONTROL:
ULONG OutputBufferLength
ULONG InputBufferLength
ULONG IoControlCode
PVOID Type3InputBuffer
Приведем графическое представление структуры IRP‑пакета:
Рис. 1.5.1 Структура IRPпакета
Общение с USB‑накопителями в ОС WindowsNT 5 на уровне драйверов, как уже было сказано в разделе 1.3.1, происходит посредством передачи URB‑пакетов. Указатели на URB‑пакеты содержат ячейки стека IRP‑пакета, доступ к этим указателям осуществляется следующим образом:
…
PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp);
PURB Urb = IrpSp->Parameters. Others. Argument1;
…
Приведем частичное объявление структуры из справочной документации Microsoft. Отметим только поля, использование которых необходимо в рамках данной курсовой работы:
typedef struct _URB {
union {
struct _URB_HEADER UrbHeader;
struct _URB_SELECT_INTERFACE UrbSelectInterface;
struct _URB_SELECT_CONFIGURATION UrbSelectConfiguration;
struct _URB_BULK_OR_INTERRUPT_TRANSFER UrbBulkOrInterruptTransfer;
}