Отправка IOCTL от IRQL=DISPATCH_LEVEL (KbFilter/KMDF)

Самым простым путем IMO должен включать идентификатор, и runat сервер наклеивают все Ваши элементы.

<div id="MYDIV" runat="server" />

, Так как это походит, они динамично вставляются средства управления, Вы могли бы ценить FindControl ().

6
задан Dale 4 October 2009 в 08:54
поделиться

1 ответ

Используйте IoAllocateIrp и IoCallDriver. Их можно запускать с IRQL <= DISPATCH_LEVEL.

Вы не можете понизить IRQL (если только вы не подняли его). KeRaiseIrql используется только для повышения IRQL. Вызов KeRaiseIrql действителен, если вызывающий указывает NewIrql> = CurrentIrql.

Будьте осторожны: ожидается ли ваш IOCTL на DISPATCH_LEVEL?

Вот фрагмент кода:

PIRP Irp = IoAllocateIrp(DeviceObject->StackSize, FALSE);

Irp->Tail.Overlay.Thread  = PsGetCurrentThread(); 
Irp->RequestorMode        = KernelMode; 
Irp->IoStatus.Status      = STATUS_NOT_SUPPORTED; 
Irp->IoStatus.Information = 0; 

PIO_STACK_LOCATION stack  = IoGetNextIrpStackLocation(Irp); 
stack->MajorFunction      = IRP_MJ_DEVICE_CONTROL; 
stack->Parameters.DeviceIoControl.IoControlCode = ...
5
ответ дан 17 December 2019 в 04:49
поделиться