Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > исходник драйвера с критическими секциями


Автор: AugMaster 16.7.2009, 23:47
заделитесь плз кто-нибудь любым рабочим исходником драйвера с использованием критических секций.
При разработке столкнулся с необходимостью их использования,но как только я в глобальные переменные добавляю 
CRITICAL_SECTION CriticalSect;

то мне сразу DDK отвечает
1>d:\winddk\3790.1830\driver.c(88) : error C2061: syntax error : identifier 'CriticalSect'
1>d:\winddk\3790.1830\driver.c(88) : error C2059: syntax error : ';'

п.с. Теоретикам просьба не беспокоить. Нужен компилящийся DDK любой исходник драйвера,хоть "хелло ворлд", все равно,лишь бы с крит.секцией

Автор: REZiaMIX 17.7.2009, 02:02
Как я понял , в DDK нету готовых критических секций.
http://forum.vingrad.ru/forum/topic-28108.html можно немного подчерпнуть по этой теме.

Автор: AugMaster 17.7.2009, 02:43
читал :(

Автор: jonie 17.7.2009, 08:07
так откуда в ядре критические секции-то.. гугли по словам: KeWaitForSingleObject, KeInitializeEvent, IoCreateSynchronizationEvent, IoCreateNotificationEvent, KeSetEvent, 
KeClearEvent, KeResetEvent, KeReadStateEvent, KeInitializeSemaphore, KeReleaseSemaphore, KeReadStateSemaphore, KeWaitForMultipleObject  и т.д.

Автор: AugMaster 18.7.2009, 14:29
то есть если я в инициализации драйвера вкину строку 
  KeInitializeMutex(&RulesMutex, 0);
объявив перед этим в глобальных переменных драйвера KMUTEX RulesMutex;
то используя связку
Код

KeWaitForMutexObject(&RulesMutex, Executive, KernelMode, FALSE, NULL);
критичный код
KeReleaseMutex(&RulesMutex, FALSE); 

я в итоге получу желаемую критическую секцию,просто под другим именем и с другой структурой ?
и вопрос №2 - поможет ли мутекс, если у меня 2(4,8)-ядерный процессор (я так понимаю что по логике поможет)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)