阅读:1130回复:6
送分,请教编译问题
用2000DDK的Checked Build Environment编译DDK的示例程序都没问题,我自己加了后面那段代码,就报错,说OBJECT_ATTRIBUTES,ZwCreateFile等没有定义,但是查DDK的帮助说这些都需要
INCLUDE NTDDK.H,但是把NTDDK.H 包进去的话它确说找不到路径,这到底是什么问题呢,我都疯了 //////////////////////////////////////////////////////////// HANDLE hFile; DWORD w_count; BOOL IoOperationStatus; char fileName[]="MYFILE.bmp"; OBJECT_ATTRIBUTES InitializedAttributes; IO_STATUS_BLOCK IoStatusBlock; NTSTATUS FileStatus; InitializeObjectAttributes(&InitializedAttributes,"MYFILE.bmp",OBJ_OPENIF,NULL,NULL); FileStatus = ZwCreateFile(&hFile, FILE_WRITE_DATA, &InitializedAttributes, &IoStatusBlock, 0, FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_ARCHIVE, 0, FILE_OPEN , FILE_SEQUENTIAL_ONLY, NULL, 0); if (!FileStatus) { return S_OK; //error } FileStatus = ZwWriteFile(hFile, NULL, NULL, NULL, &IoStatusBlock, pBitmapInfoHeader, sizeof(BITMAPINFOHEADER), NULL, NULL); if (!FileStatus) { return S_OK; //error } ZwClose(hFile); |
|
沙发#
发布于:2004-04-06 16:51
再问一个问题(小弟实在是菜鸟^_^),这句话应该加到什么位置?是在一开始的地方加,还是其他有INCLUDE出现的地方加呢?
因为我看SETENV.BAT里有太多东西了,怕改坏 ************************************************************ @echo off if "%1"=="/?" goto usage if "%1"=="-?" goto usage if "%1"=="\?" goto usage if "%1"=="" goto usage rem Check for new or updated install of MSVC %1\bin\vccheck /p %1 /e rem Set build environment from msvc if NOT EXIST %1\bin\ddkvars.bat goto devdir call %1\bin\ddkvars.bat if "%MSVCDIR%"=="" set MSVCDIR=%MSDEVDIR% goto testbasedir :devdir if "%MSDEVDIR%"=="" goto no_msvc40 call %MSDEVDIR%\bin\vcvars32 x86 if "%MSVCDIR%"=="" set MSVCDIR=%MSDEVDIR% :testbasedir set BASEDIR=%1 set Path=%BASEDIR%\bin;%path% set Lib=%BASEDIR%\lib;%lib% set Include=%BASEDIR%\inc;%include% set NTMAKEENV=%BASEDIR%\bin set BUILD_MAKE_PROGRAM=nmake.exe set BUILD_DEFAULT=-ei -nmake -i if "%tmp%"=="" set tmp=%TEMP% if "%PROCESSOR_ARCHITECTURE%"=="ALPHA" goto alpha if "%PROCESSOR_ARCHITECTURE%"=="x86" goto i386 set PROCESSOR_ARCHITECTURE=x86 goto i386 @rem goto cpuerror :alpha if "%Cpu%" == "" set Cpu=ALPHA set BUILD_DEFAULT_TARGETS=-alpha set ALPHA=1 set JENSEN=1 set NTALPHADEFAULT=1 goto envtest :i386 if "%Cpu%" == "" set Cpu=i386 set BUILD_DEFAULT_TARGETS=-386 :envtest if "%DDKBUILDENV%"=="" set DDKBUILDENV=%2 if "%DDKBUILDENV%"=="" goto free if "%DDKBUILDENV%"=="free" goto free if "%DDKBUILDENV%"=="FREE" goto free if "%DDKBUILDENV%"=="checked" goto checked if "%DDKBUILDENV%"=="CHECKED" goto checked goto usage :free rem set up an NT free build environment set BUILD_ALT_DIR=fre set NTDBGFILES=1 set NTDEBUG=ntsdnodbg set NTDEBUGTYPE=windbg set MSC_OPTIMIZATION= goto done :checked rem set up an NT checked build environment set BUILD_ALT_DIR=chk set NTDBGFILES=1 set NTDEBUG=ntsd set NTDEBUGTYPE=windbg set MSC_OPTIMIZATION= :done set NEW_CRTS=1 set SDK_INC_PATH=%BASEDIR%\inc set DDK_INC_PATH=%BASEDIR%\inc\ddk set WDM_INC_PATH=%BASEDIR%\inc\ddk\wdm set CRT_INC_PATH=%BASEDIR%\inc set OAK_INC_PATH=%BASEDIR%\inc set SDK_LIB_DEST=%BASEDIR%\lib%BUILD_ALT_DIR% set DDK_LIB_DEST=%BASEDIR%\lib%BUILD_ALT_DIR% set SDK_LIB_PATH=%BASEDIR%\lib%BUILD_ALT_DIR%\* set DDK_LIB_PATH=%BASEDIR%\lib%BUILD_ALT_DIR%\* set CRT_LIB_PATH=%BASEDIR%\lib%BUILD_ALT_DIR%\* set COFFBASE_TXT_FILE=%BASEDIR%\bin\coffbase.txt %1\bin\vccheck /p %1 /d if "%OS%" == "Windows_NT" goto WinNT if not "%OS%" == "Windows_NT" goto Win9x goto end :WinNT cd /d %BASEDIR% doskey /macrofile=%BASEDIR%\bin\generic.mac doskey /macrofile=%BASEDIR%\bin\ddktree.mac goto end :Win9x doskey /echo:off /bufsize:6144 /file:%BASEDIR%\bin\ddktree.mac doskey /echo:off /file:%BASEDIR%\bin\generic.mac %BASEDIR%\bin\MkCDir %BASEDIR% if exist %BASEDIR%\bin\ChngeDir.bat call %BASEDIR%\bin\ChngeDir.bat goto end :cpuerror echo. echo Error: PROCESSOR_ARCHITECTURE environment variable not recognized. echo. echo. goto end :no_msvc40 @echo Error: MSDEVDIR environment variable not recognized. @echo MS Visual C++ 5.0 or 6.0 must be installed. goto end :usage echo. echo usage: setenv ^<directory^> [free^|^checked] echo. echo Example: setenv d:\ddk checked set checked environment echo Example: setenv d:\ddk defaults to free environment echo. echo. :end |
|
板凳#
发布于:2004-04-06 16:42
将NTDDK.H的路径(YOUPATH)加到SETENV.BAT中;
INCLUDE=%path%;%YOUPATH% 仅供参考 :D |
|
地板#
发布于:2004-04-06 16:24
应该怎么改?我以前一直用DS的没改过这个文件
|
|
地下室#
发布于:2004-04-06 16:08
我在XPDDK下遇到类似问题,把setenv.bat改了,把*.h的路径加上即可!
不过,换了一个XPDDK就没有这个问题! |
|
5楼#
发布于:2004-04-06 15:46
是CPP文件,怎么查系统用什么编译器?
|
|
6楼#
发布于:2004-04-06 14:42
查一下你用的是什么编译器,是C 还是CPP
what type is you source file , is .cpp extension file or .c extension file. |
|
|