bluesinheaven
驱动牛犊
驱动牛犊
  • 注册日期2009-03-24
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1538回复:0

passthru-protocol-ndisopenfile-zwcreatefile-访问文件-蓝屏-请求解答谢谢!!

楼主#
更多 发布于:2009-05-31 19:49

各位前辈:
    我在做一个类似网关跳转页的东西,在访问文件这块卡住一周多了,论坛里的帖子也参考了很多,始终一ndisopenfile或者zwcreatefile就蓝屏,因为身边没有人讨论,看ddk文档可能看得不是很透,自己苦苦思索也没有结果,希望前辈们给与指点。以下是这部分的代码
NdisInitializeString(&filename, "\\??\\c:\\windows\\system32\\IP.xml");
fileContent=NULL;
MyStatus = NdisAllocateMemory(&fileContent,2000,0,HighestAcceptableMax);
NdisOpenFile(&MyStatus,&FileHandle,&FileLength,&filename,HighestAcceptableMax); //打开文件
if ((MyStatus == NDIS_STATUS_SUCCESS)&&(FileHandle != NULL)) //如果文件打开成功
{
    DbgPrint("NdisOpenFile Success!...");
    if (MyStatus!=NDIS_STATUS_SUCCESS)
    {DbgPrint("Allocate Memory Fail!"); }
    if (fileContent == NULL) { DbgPrint("filestatus==NULL");}
    NdisMapFile(&MyStatus,&fileContent,FileHandle); //将打开文件映射到内存
    if (MyStatus == NDIS_STATUS_SUCCESS && fileContent != NULL) //映射成功
    {
        DbgPrint("NdisMapFile Success!...");  
        //operation
        NdisUnmapFile(FileHandle); //取消文件映射
    }
    else {DbgPrint("NdisMapFile Fail!..."); }
    NdisCloseFile(FileHandle);
这是采用ndisopenfile,以下是采用zwcreatefile:
IO_STATUS_BLOCK IoStatus;
OBJECT_ATTRIBUTES objectAttributes;
NTSTATUS status;
HANDLE FileHandle;
UNICODE_STRING fileName;
status = RtlAppendUnicodeToString(&fileName, (PWSTR)L"\\??\\C:\\data.log");
InitializeObjectAttributes (&objectAttributes,
(PUNICODE_STRING)&fileName,
OBJ_CASE_INSENSITIVE,
NULL,
NULL );

status = ZwCreateFile( &FileHandle,
FILE_READ_DATA,
&objectAttributes,
&IoStatus,
0,
FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_WRITE,
FILE_OPEN_IF,
FILE_SYNCHRONOUS_IO_NONALERT,
NULL,
0 );
我在ddk2003checked编译没错了,但是一运行这块语句就蓝屏,请指教,多谢!!
游客

返回顶部