хай всем такой вопросец в драйвере через ExAllocatePool выделяю NonPaged блок памяти для семафора. ну и затем работаю с ним. прогнал драйвер через boundschecker из driverstudio, и обнаружил в логе множество таких вот строк: 0x1fc KeInitializeSemaphore( PKSEMAPHORE 0x81c78fe0, LONG 0xa3a3a3a3, LONG 0x1 ) IRQL:0 0x1fd ERROR: Error at F78ED7FC, PKSEMAPHORE Semaphore:81C78FE0. Address is not locked or writeable. 0x1fe KeInitializeSemaphore() return VOID:0x0 во первых память под семафор выделена из NonPaged пула. почему он тогда такое пишет? во вторых я проверил - второй параметр KeInitializeSemaphore равен 1, а не 0xa3a3a3a3. ну и такое например, из той же оперы: 0xd11 ExFreePool( PVOID 0xfe08d000 ) IRQL:2 0xd12 ERROR: Error at F78D37C4, PVOID P:FE08D000. Address is not locked. 0xd13 ExFreePool() return VOID:0x0 тут адрес находится в стеке, драйвер весь целиком не выгружаем. ну и на KeReadSemaphore ругается теми же словами. я в чём то действительно не прав, или это глюки чекера?