Я новичок в среде Win, пытаюсь написать код, который использует API ядра Win, но на Ubuntu 10.04 ... с использованием mingw32 (точнее, i586-mingw32msvc)
Мой код:
#include<ddk/winddk.h>
int main()
{
return 0;
}
Но я получаю много ошибок с заголовком ddk / winddk.h: Компиляция как: i586-mingw32msvc-gcc WaitForSingleObj_2.c
Все ошибки такие:
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/winddk.h:9208: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'NTSTATUS'
Я что-то упускаю из-за этого? Когда я пытался скомпилировать с заголовками iostream и windows.h, это нормально работало.
РЕДАКТИРОВАТЬ:
#include<ntdef.h>
#include<ddk/ntddk.h>
#include<ddk/winddk.h>
#include<ddk/ntddndis.h>
int main()
{
KTIMER *timer;
KeInitializeTimer(timer);
return 0;
}
до KTIMER все в порядке, теперь новая ошибка: /tmp/cc0epAQA.o:WaitForSingleObj_2.c:(.text+0x1d): undefined ссылка на `_ imp _KeInitializeTimer @ 4 'collect2: ld вернула 1 выход положение дел
Может ли кто-нибудь сказать мне, какой заголовочный файл включить плз?
Изменить: [Как уже прокомментировали другие, и я испытал (!) ПОЖАЛУЙСТА, постарайтесь избегать использования другой платформы для разработки ядра Windonws]
Я переключился на Visual C ++ Express, загрузил WDK, учитывая дополнительный путь включения из Project Property-> c / c ++ .. -> Дополнительный каталог Include (C: \ WinDDK \ 7600.16385.1 \ inc \ ddk; C: \ WinDDK \ 7600.16385. 1 \ inc \ api;)
НО (ненавижу это, но!) Я получаю много ошибок компиляции, например
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\crtdefs.h(543): error C2143: syntax error : missing ')' before 'const'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\crtdefs.h(543): error C2143: syntax error : missing '{' before 'const'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\crtdefs.h(543): error C2059: syntax error : ','
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\crtdefs.h(543): error C2059: syntax error : ')'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\crtdefs.h(550): error C2143: syntax error : missing ')' before 'const'
Мой код:
#include <wdm.h>
int mian()
{
/*
* PKTIMER Timer;
*/
}
Если у кого-то есть идея, пожалуйста, помогите!
<iostream>
... если вы имеете в виду, что хотите использовать часть пользовательского режима собственного API, вы должны исправить это в своем вопросе, поскольку это совсем другое вещь и хрупкая вещь, когда вы пытаетесь использовать более сложные файлы заголовков WDK. Простые подойдут, более сложные обычно требуют особого ухода. - person 0xC0000022L   schedule 05.05.2012Windows.h
также не имеет смысла в коде режима ядра. Кроме того, даже если вам не нравится это слышать, вам следует избегать написания драйверов с компиляторами, отличными от WDK. Если нужно, используйте ВИНО. В любом случае заголовки верхнего уровня зависят от модели вашего драйвера и могут бытьntddk.h
илиwdm.h
... - person 0xC0000022L   schedule 05.05.2012