Как писать драйвера [Гром] (fb2) читать постранично, страница - 8

- Как писать драйвера 58 Кб, 20с. скачать: (fb2) - (исправленную)  читать: (полностью) - (постранично) - Гром

 [Настройки текста]  [Cбросить фильтры]

 ULONG IoControlCode = IrpStack->Parameters.DeviceIoControl.IoControlCode;

 PVOID InfoBuffer = Irp->AssociatedIrp.SystemBuffer;

 ULONG InputBufferLen = IrpStack->Parameters.DeviceIoControl.InputBufferLength;

 ULONG OutputBufferLen = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;

 switch(IoControlCode) {

 case IOCTL_SET_COMMAND1:

  // Здесь мы можем сменить наш номер порта с 80 на, к примеру, 25.

  break;

 }

 Irp->IoStatus.Status = Status;

 Irp->IoStatus.Information = BytesReturned;

 IoCompleteRequest(Irp, IO_NO_INCREMENT);

 return Status;

}

Описания Input/Output буферов привожу для того, чтобы при необходимости получения и еще каких либо сопутствующих параметров, было ясно, где их получать, скажем, в драйвере нашего примера, команда 1 может нести в качестве параметра новый номер порта для перехвата.

Давайте теперь опишем логику управления драйвером перехватчиком.

Для перехвата определяются в начале параметры перехвата, адрес, порт и т.д.

Далее вносится тип рабочего состояния – перехват – прозрачный режим.

Вносится список возможных портов к перехвату (по необходимости).

В процессе работы системы, пока управляющая аппликация не запущена, то драйверу необходимо указать стартовые параметры.

Например, тип режима – прозрачный, в этом случае не перехватывается ничего.

Когда стартует управляющая программа – то она открывает драйвер CreateFile() и запускает, если это необходимо, другие стартовые условия, например перевод в режим перехвата и номер порта для этого.

Затем по желанию клиента из программы выставляются любые нужные условия от отключения перехвата, до перехвата всех номеров портов и всех адресов.

По завершению работы контрольной программы, можно выставить спец код управления, который укажет, как жить драйверу, когда управление не запущено, отключить все настройки и вернуться к прозрачному режиму, или остаться в необходимом режиме до дальнейших указаний.

На сегодня пока все.