> Я сказал.
надпись маркером на стене:
NO THREAD SWITHING OCCURS AT OR ABOVE DISPATCH_LEVEL
я с этим не спорю, однако..........
переключение может произойти на более низкий уровень, если все DPC находятся в состоянии ожидания.Или переключение на другой дпс поток, если выполняемый входит в спячку.
Если я не прав, почему тогда
0. Почему так не логично? При переключении на более низкие irql с dpc требуется ЗАВЕРШЕНИЕ всех дпс потоков.?
1. Про KeWaitForSingleObject написанно, что она может работать при IRQL<=DISPATCH_LEVEL??? Нафиг тогда нужен этот вейт фор?
2. Почему у меня ничего не зависает? (Я пробовал ожидать в отдельном потоке (потоки в драйвере вроде пашут на дпс) таймера.)
>Объект глобален для всей системы и если увеличить его счетчик, то его не >удалят, даже после закрытия всех юзер модовских хендлов.
А как его инкрементировать?
У меня он что то не инкрементируется=)))
Открытие события:
NTSTATUS OpenSyncEvent(PXWDM_DEVICE_EXT pdx) {
UNICODE_STRING EventName;
NTSTATUS Status;
#if DBG
DbgPrint("EventSysDeviceControl: Received IOCTL_OPEN_EVENT\n");
#endif
RtlInitUnicodeString(&EventName, L"\\BaseNamedObjects\\SharedEvent");
pdx->kSyncEvent = IoCreateNotificationEvent(
&EventName, &pdx->hSyncEvent);//&SharedEventHandle);
if (pdx->kSyncEvent != NULL) {
Status = STATUS_SUCCESS;
// Start the timer that signals the event
IoStartTimer(pdx->DeviceObject); // DeviceObject);
} else {
Status = STATUS_UNSUCCESSFUL;
}
return Status;
}
Причина зависания после закрытия приложением и драйвером хендла (просто так вышло я специально ничего не делал, вероятно если бы не закрыл хэндл в драйвере ничего и не произошло бы........счетчики, однако=)))...... ):
#if DBG
DbgPrint(DRIVER_NAME "EventSysTimerCallback: Entered...\n");
#endif
__try{
KeSetEvent(pdx->kSyncEvent,0,FALSE);
} __except(EXCEPTION_CONTINUE_EXECUTION) {
DbgPrint(DRIVER_NAME "EventSysTimerCallback() cause exception!\n");
}
#if DBG
DbgPrint(DRIVER_NAME "EventSysTimerCallback: Exited...\n");
#endif
Типа при CreateEvent должен автоматически инкрементироваться счетчик?
А при zwClose декрементироваться?
>>Ты сначала разберись с тем, как удаляются объекты, в статье и дискусси >>после статьи
А где дискуссия? На том же оср (блин, надо было качать не фор принт, а целиковцю статью...)? Или на этом сайте? Посмотрю. Сорри, у сетевое состояние - на 3/4 оффлайн - поэтому и глупые вопросы....лишний раз в сеть лезть ох как не хочется....
Спасибо.
---------------------------------------------------------------------------------
Вечер настал, на черном небе луна.....
---------------------------------------------------------------------------------------
Рекламное место - сдается