ttzwater
驱动小牛
驱动小牛
  • 注册日期2003-06-07
  • 最后登录2011-10-04
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望23点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
阅读:1128回复:6

送分,请教编译问题

楼主#
更多 发布于:2004-04-06 13:41
用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);
ftaohu
驱动牛犊
驱动牛犊
  • 注册日期2002-02-06
  • 最后登录2009-02-01
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-06 14:42
查一下你用的是什么编译器,是C 还是CPP  
what type is you source file , is .cpp extension file or .c extension file.
敬畏耶和华时智慧的开端,承认至圣者才是悟性。 耶稣说:“我赐给你们一条新命令,乃是要你们彼此相爱,我怎样爱你们,你们也要怎样相爱,你们若有彼此相爱的心,众人就因此认出你们是我的门徒了!”
ttzwater
驱动小牛
驱动小牛
  • 注册日期2003-06-07
  • 最后登录2011-10-04
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望23点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-06 15:46
是CPP文件,怎么查系统用什么编译器?
Leopard
驱动老牛
驱动老牛
  • 注册日期2001-07-13
  • 最后登录2021-12-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望53点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
  • 忠实会员
地板#
发布于:2004-04-06 16:08
我在XPDDK下遇到类似问题,把setenv.bat改了,把*.h的路径加上即可!

不过,换了一个XPDDK就没有这个问题!
ttzwater
驱动小牛
驱动小牛
  • 注册日期2003-06-07
  • 最后登录2011-10-04
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望23点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-04-06 16:24
应该怎么改?我以前一直用DS的没改过这个文件
Leopard
驱动老牛
驱动老牛
  • 注册日期2001-07-13
  • 最后登录2021-12-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望53点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
  • 忠实会员
5楼#
发布于:2004-04-06 16:42
将NTDDK.H的路径(YOUPATH)加到SETENV.BAT中;
INCLUDE=%path%;%YOUPATH%
仅供参考 :D
ttzwater
驱动小牛
驱动小牛
  • 注册日期2003-06-07
  • 最后登录2011-10-04
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望23点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
6楼#
发布于: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
游客

返回顶部