Драйвер Kernal, чтобы заставить DeviceIOControl блокироваться позже?
У меня есть простой драйвер Kernal sys, в DRIVER_OBJECT я установил MajorFunction[IRP_MJ_DEVICE_CONTROL]
к рутине обработчика отправки.
Пользователи читают / пишут мне элементы управления вот так:
DeviceIoControl ( device_handle, ctrl_code, &outdata, out_length, &indata, in_length, &count, NULL);
И это все работает отлично.
Моя проблема: у меня есть ситуация, когда данные, которые мой драйвер должен отправить для одного контрольного кода, недоступны до тех пор, пока они не будут впервые прочитаны из другого контрольного кода (обычно другим пользователем).
Итак, мой вопрос:
Могу ли я сообщить ядру в процедуре отправки драйвера, что я не готов, и что ядру необходимо снова вызвать диспетчер для этого запроса позже? Между тем пользовательский вызов DeviceIOControl будет блокировать?
В качестве альтернативы, можно ли "отключить" управляющий код, чтобы предотвратить его отправку, чтобы пользовательский блок DeviceIOControl блокировал вызов до тех пор, пока я не "включу" этот управляющий код и снова разрешу отправку?
Спасибо за любую помощь!