Как определить пустая ли очередь.
........
Что значит девайс каренли идл
Может Майкрософт так и не рекомендует(типа структуры могут изменится)
KeAcquireSpinLockAtDpcLevel(&DeviceQueue->Lock);
if(DeviceQueue->Busy!=FALSE)
{
busy;
doing smth.
}
else
{
not busy;
doing smth.
}
KeReleaseSpinLockFromDpcLevel(&DeviceQueue->Lock);
Из-за чега возможн НЕУСПЕХ при добавлении элемента в очередь
Если DeviceQueue->Busy == FALSE.
А вобще то я их не использую, пользуюсь своими очередями- LIST_ENTRY посмотри и макросы с ним связанные.