jzzyj
驱动牛犊
驱动牛犊
  • 注册日期2001-12-15
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1800回复:3

NdisMapFile的使用问题

楼主#
更多 发布于:2002-01-31 09:04
我正在做的项目中用到了NdisOpenFile,NdisMapFile等函数,程序编译通过,但装到win98下,每次开机总是死机,后来经过反复测试发现每次执行NdisMapFile(&filestatus,(PVOID *)setting,filehandle)后,虽然每次filestatus 返回 NDIS_STATUS_SUCCESS但setting却总是返回NULL,因此,必须同时判断filestatus 和 setting的返回值,但这样虽解决了死机问题,我还是没法读出文件中的内容,是否setting不能这样定义:char *setting; 请各位高手指点一二..

代码如下:

变量声明
char *setting;
int j,K;
NDIS_STRING filename=NDIS_STRING_CONST(\"fp.sys\"); //指定要打开的文件
NDIS_STATUS filestatus;
NDIS_HANDLE filehandle;
NDIS_PHYSICAL_ADDRESS MinusOne = NDIS_PHYSICAL_ADDRESS_CONST(-1,-1);
UINT filelength;
setting=NULL;

NdisOpenFile(&filestatus,&filehandle,&filelength,&filename, MinusOne);//打开文件

if ( filestatus == NDIS_STATUS_SUCCESS) //打开文件成功
{
  NdisMapFile(&filestatus,(PVOID *)setting,filehandle);//将打开文件映射到内存,内存基地值给setting
  if ( filestatus == NDIS_STATUS_SUCCESS) //映射文件成功
  {
    if(setting!=NULL )
    {
for (i=0;i<filelength;i++) //只要小于文件长度,循环
{
 if((*setting)&0x80)//如果当前字节最高位为1
 { //处理数据 }
  setting++;//指向下一个字节
 }
        }
NdisUnmapFile(filehandle);//取消文件映射
NdisCloseFile(filehandle);//关闭文件
     }
}

最新喜欢:

leisurecnleisur...
孤狼
jeosph
驱动中牛
驱动中牛
  • 注册日期2001-04-19
  • 最后登录2006-08-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-02-01 16:37
我给你信箱发了一段代码!
jzzyj
驱动牛犊
驱动牛犊
  • 注册日期2001-12-15
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2002-02-01 21:33
谢谢jeosph!!
  EMAIL已收到,问题解决!
 
 
孤狼
leisurecn
驱动牛犊
驱动牛犊
  • 注册日期2004-10-14
  • 最后登录2006-12-18
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-11-22 16:37
我也遇到这个问题,读出来的内容好象不对,能否指点一下,谢谢
游客

返回顶部