VS 2008 при компиляции выдает 1>.\Init.c(19) : warning C4013: 'KeSetEvent' undefined; assuming extern returning int 1>.\Init.c(34) : warning C4013: 'ExFreePool' undefined; assuming extern returning int 1>.\Init.c(35) : warning C4013: 'ExAllocatePool' undefined; assuming extern returning int ....и т. д. подключаю и ntddk.h, и wdm.h для верности. Судя по заголовочным файлам, у меня не выполняется условие #if (NTDDI_VERSION >= NTDDI_WIN2K) .... #endif (иначе б компилятор нашел объявления). Вы не знаете, как можно явно указать версию этого NTDDI? при попытке написать #define NTDDI_VERSION 0x5010000 (это WinXP), получаю #error : NTDDI_VERSION setting conflicts with _WIN32_WINNT setting компилирую в Win7, WDK 7600. Что я не так делаю? При компоновке подключаю только ntoskrnl.lib, но кажется не только в этом проблема (хотя линкер тоже не хочет собирать, мне бы пока только откомпилировать.. ) Самые простые драйверы, не содержащие эти и некоторые другие ф-ции, студия компилирует. Спасибо!
Код (Text): #ifndef NTDDI_VERSION #ifdef _WIN32_WINNT // set NTDDI_VERSION based on _WIN32_WINNT #define NTDDI_VERSION NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT) #else #define NTDDI_VERSION 0x06000000 #endif #endif Т.е. просто нужно указать нужное значение _WIN32_WINNT, а NTDDI_VERSION вычислится автоматически. Либо указывать неконфликтующие значения: Код (Text): #if (((OSVERSION_MASK & NTDDI_VERSION) == NTDDI_LONGHORN) && (_WIN32_WINNT != _WIN32_WINNT_LONGHORN)) #error NTDDI_VERSION setting conflicts with _WIN32_WINNT setting #endif
Great Спасибо это помогло, непонятно только, почему оно неправильно было установлено по умолчанию. Может я что-то забыл подключить?