为了在应用程序和内核驱动之间共享内存,我在内核驱动中调用CreateFile函数,并且#include <winbase.h>,编译的时候出现很多错误。如:
d:\NTDDK\inc\winbase.h(221) : error C2061: syntax error : identifier 'DWORD'
d:\NTDDK\inc\winbase.h(222) : error C2061: syntax error : identifier 'OffsetHigh'
d:\NTDDK\inc\winbase.h(222) : error C2059: syntax error : ';'
d:\NTDDK\inc\winbase.h(224) : error C2059: syntax error : '}'
d:\NTDDK\inc\winbase.h(227) : error C2061: syntax error : identifier 'DWORD'
d:\NTDDK\inc\winbase.h(228) : error C2061: syntax error : identifier 'lpSecurityDescriptor'
d:\NTDDK\inc\winbase.h(228) : error C2059: syntax error : ';'
d:\NTDDK\inc\winbase.h(229) : error C2061: syntax error : identifier 'bInheritHandle'
d:\NTDDK\inc\winbase.h(229) : error C2059: syntax error : ';'
d:\NTDDK\inc\winbase.h(230) : error C2059: syntax error : '}'
d:\NTDDK\inc\winbase.h(235) : error C2061: syntax error : identifier 'DWORD'
d:\NTDDK\inc\winbase.h(236) : error C2061: syntax error : identifier 'dwThreadId'
d:\NTDDK\inc\winbase.h(236) : error C2059: syntax error : ';'
d:\NTDDK\inc\winbase.h(237) : error C2059: syntax error : '}'
d:\NTDDK\inc\winbase.h(245) : error C2061: syntax error : identifier 'DWORD'
d:\NTDDK\inc\winbase.h(246) : error C2061: syntax error : identifier 'dwHighDateTime'
d:\NTDDK\inc\winbase.h(246) : error C2059: syntax error : ';'
d:\NTDDK\inc\winbase.h(247) : error C2059: syntax error : '}'
d:\NTDDK\inc\winbase.h(255) : error C2061: syntax error : identifier 'WORD'
d:\NTDDK\inc\winbase.h(256) : error C2061: syntax error : identifier 'wMonth'
d:\NTDDK\inc\winbase.h(256) : error C2059: syntax error : ';'
d:\NTDDK\inc\winbase.h(257) : error C2061: syntax error : identifier 'wDayOfWeek'
d:\NTDDK\inc\winbase.h(257) : error C2059: syntax error : ';'
d:\NTDDK\inc\winbase.h(258) : error C2061: syntax error : identifier 'wDay'
d:\NTDDK\inc\winbase.h(258) : error C2059: syntax error : ';'
d:\NTDDK\inc\winbase.h(259) : error C2061: syntax error : identifier 'wHour'
d:\NTDDK\inc\winbase.h(259) : error C2059: syntax error : ';'
d:\NTDDK\inc\winbase.h(260) : error C2061: syntax error : identifier 'wMinute'
d:\NTDDK\inc\winbase.h(260) : error C2059: syntax error : ';'
d:\NTDDK\inc\winbase.h(261) : error C2061: syntax error : identifier 'wSecond'
d:\NTDDK\inc\winbase.h(261) : error C2059: syntax error : ';'
d:\NTDDK\inc\winbase.h(262) : error C2061: syntax error : identifier 'wMilliseconds'
d:\NTDDK\inc\winbase.h(262) : error C2059: syntax error : ';'
d:\NTDDK\inc\winbase.h(263) : error C2059: syntax error : '}'
d:\NTDDK\inc\winbase.h(266) : error C2143: syntax error : missing ')' before '*'
d:\NTDDK\inc\winbase.h(266) : error C2143: syntax error : missing '{' before '*'
d:\NTDDK\inc\winbase.h(266) : error C2059: syntax error : ')'
d:\NTDDK\inc\winbase.h(267) : error C2146: syntax error : missing ')' before identifier 'lpThreadParameter'
d:\NTDDK\inc\winbase.h(267) : error C2061: syntax error : identifier 'lpThreadParameter'
d:\NTDDK\inc\winbase.h(267) : error C2059: syntax error : ';'大家帮帮我的忙。

解决方案 »

  1.   

    内核驱动中应该使用ddk中的ZwCreateFile.
      

  2.   

    kernel中不要调用Win32 API!你要改用Kernel support routine,ZwCreateFile!
      

  3.   

    首先内核驱动不能够用应用层的库的,而且驱动是用DDK环境编译的,用VC基本上不能编译,主要是环境复杂,另外你的那个编译错误,主要是DWORD没有定义的原因DDK代码中是没有DWORD的定义的
    你可以这样#define DWORD UINT