当前位置: 代码迷 >> 驱动开发 >> 关于net start .发生系统异常3 找不到指定文件
  详细解决方案

关于net start .发生系统异常3 找不到指定文件

热度:58   发布时间:2016-04-28 10:39:08.0
关于net start ...发生系统错误3 找不到指定文件
我有一些疑惑我是在VS2010+WDK下开发的.sys文件如果是简单的“Hello world”那么没问题,但如果是如下代码

/*
**********************************************************************************
*==文件名称:op_file.cpp
*==文件描述:该文件主要用于实现驱动下的文件读写
*==文件作者:jimmy
*==编写时间:2012-102
***********************************************************************************
*/
#include<ntddk.h>
//*================================================================================
//*==预处理定义
//*================================================================================
extern "C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT driver,IN PUNICODE_STRING registryPath);
#pragma alloc_text(INIT,DriverEntry)//INIT标识是指此函数是在驱动加载时使用,驱动加载完成后可以从内存卸载
//*==================================================================================
//*函数名称:DirverEntry
//*功能描述:驱动程序的入口函数
//*入口参数:PDRIVER_OBJECT,PUNICODE_STRING
//*出口参数:NTSTATUS
//*==================================================================================
NTSTATUS DriverEntry(IN PDRIVER_OBJECT driver,IN PUNICODE_STRING registryPath)
{
//用来接收函数的返回值,查看函数是否成功执行
NTSTATUS status=0;
OBJECT_ATTRIBUTES srcobjectAttribute={0};
OBJECT_ATTRIBUTES dstobjectAttribute={0};
UNICODE_STRING srcfile_name;
UNICODE_STRING dstfile_name;
//设置文件路径
RtlInitUnicodeString(&srcfile_name,L"\\??\\C:windows\\system.ini");
RtlInitUnicodeString(&dstfile_name,L"\\??\\C:windows\\dst.txt");

InitializeObjectAttributes(&srcobjectAttribute,&srcfile_name,OBJ_CASE_INSENSITIVE|OBJ_KERNEL_HANDLE,NULL,NULL);
InitializeObjectAttributes(&dstobjectAttribute,&dstfile_name,OBJ_CASE_INSENSITIVE|OBJ_KERNEL_HANDLE,NULL,NULL);

HANDLE srcfile_handle=NULL;
HANDLE dstfile_handle=0;
IO_STATUS_BLOCK blok={0};
status=ZwCreateFile(&srcfile_handle,GENERIC_ALL,&srcobjectAttribute,&blok,NULL,FILE_ATTRIBUTE_NORMAL,FILE_SHARE_READ,FILE_OPEN_IF,FILE_NON_DIRECTORY_FILE|FILE_RANDOM_ACCESS|FILE_SYNCHRONOUS_IO_NONALERT,NULL,0);
if(!NT_SUCCESS(status))
{
DbgPrint("打开源文件失败");
return status;
}
status=ZwCreateFile(&dstfile_handle,GENERIC_ALL,&dstobjectAttribute,&blok,NULL,FILE_ATTRIBUTE_NORMAL,FILE_SHARE_READ,FILE_OPEN_IF,FILE_NON_DIRECTORY_FILE|FILE_RANDOM_ACCESS|FILE_SYNCHRONOUS_IO_NONALERT,NULL,0);
if(!NT_SUCCESS(status))
{
DbgPrint("打开目的文件失败");
return status;
}
//读写文件开始
LARGE_INTEGER offset={0};
PVOID  buf=NULL;//缓冲区
int length=4*1024;
while(1)
{
status=ZwReadFile(srcfile_handle,NULL,NULL,NULL,&blok,buf,length,&offset,NULL);
if(!NT_SUCCESS(status))
{
if(STATUS_END_OF_FILE==status)
{
status=STATUS_SUCCESS;
break;
}
}
//获取实际的读取长度
length=blok.Information ;
//已经读取了长度,写入文件
status=ZwWriteFile(dstfile_handle,NULL,NULL,NULL,&blok,buf,length,&offset,NULL);
if(!NT_SUCCESS(status))
{
break;
}
//改变偏移量,然后继续移动
offset.QuadPart +=length;
}
DbgPrint("复制文件完毕");
ZwClose(srcfile_handle);
ZwClose(dstfile_handle);
return STATUS_SUCCESS;
}

便会出现找不到指定文件错误,我不是很懂,驱动开发还是菜鸟,求助
------解决方案--------------------
便会出现找不到指定文件错误

----------------

具体信息呢?文件不存在 或是网上下载 或是新建文件 或是缺少运行库
------解决方案--------------------
引用:
不会有别的什么原因吗?同样还是这个文件,我如果只是打印出Hello world就没什么错,至于system.ini文件时我看好了里面有这个文件才这么设置的,
  相关解决方案