Заюзал в своем драйвере вызов RtlGetVersion. Или не линкуется, или если подключить ntdll.lib линкуется но не грузиться, выдавая ошибку 127 (The specified procedure could not be found.). Мой драйвер -- .sys файл который я гружу с помощью OpenSCManager, CreateService, StartService и таким же макаром выгружаю: ControlService(..., SERVICE_CONTROL_STOP, ...). Т.е. этот драйвер не грузится на старте винды, а только тогда, когда всё уже работает. Так как узнать-то версию винды находясь в ядре?
sasha_s В нтдлл юзермодный кодес, тебе из ядра нужна RtlGetVersion(). Она сводится к чтения UsSharedData. Код (Text): // The NT Version. // // N. B. Note that each process sees a version from its PEB, but if the // process is running with an altered view of the system version, // the following two fields are used to correctly identify the // version // ULONG NtMajorVersion; ULONG NtMinorVersion; Посмотри в разных ядрах смещение этого поля, а вдуг повезёт и оно не меняетсо.. Можно из PEB взять, хотя стрёмно лезть туда. Можно из PCR взять. Мно что можно, я бы взял из заголовка ядра.
sasha_s подключить ntdll.lib А если подключить ntoskrnl? + afaik RtlGetVersion доступна wxp+, для ранних версий можно использовать PsGetVersion.
ntoskrnl.lib подключен, но в нем ее нет (при линковке ругается). Да, забыл сказать что юзаю Win2kDDK. А PsGetVersion какого-то хрена не фурычит, а ласт еррор как посмотреть не знаю. Вот кстати еще вопросс: Как посмотреть ласт еррор, если ф-ция возвращает не код, а BOOLEAN?