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

shijizhishang_1 2012-10-25 09:28:17
我有一些疑惑我是在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;
}

便会出现找不到指定文件错误,我不是很懂,驱动开发还是菜鸟,求助
...全文
609 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
shijizhishang_1 2012-11-14
  • 打赏
  • 举报
回复
问题是我的路径设置错误,哎
曹大夯 2012-10-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
找不到指定文件错误
[/Quote]
具体的错误代码是什么?驱动打印了什么内容?
shijizhishang_1 2012-10-26
  • 打赏
  • 举报
回复
谢谢大神了,问题解决
曹大夯 2012-10-26
  • 打赏
  • 举报
回复
How to open a file from a kernel mode device driver and how to read from or write to the file

文章里面有介绍如何提供文件的路径和名字。

RtlInitUnicodeString(&uniName, L"\\DosDevices\\C:\\WINDOWS\\example.txt"); // or L"\\SystemRoot\\example.txt"

shijizhishang_1 2012-10-26
  • 打赏
  • 举报
回复
已经成功启动了,但是我使用的字符串是“\\SystemRoot\\system.ini”只能是“C:\\windows”如果我想使用其他位置的文件夹应该使用哪一个命名空间?我是菜鸟,不要笑我,告诉我去哪里找也行的
曹大夯 2012-10-26
  • 打赏
  • 举报
回复
在另一个贴子里面,你是不是说单独访问自己的L"\\??\\C:windows\\dst.txt"时好的?
可能是文件权限问题。L"\\??\\C:windows\\system.ini"是系统文件,有权限保护的。

换一个文件试试,
或者试着修改ZwCreateFile里面的相关参数。
GENERIC_ALL -> GENERIC_READ
shijizhishang_1 2012-10-26
  • 打赏
  • 举报
回复
先谢谢了,先看下啊
曹大夯 2012-10-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
简单的“Hello world”
[/Quote]
Hellow world的驱动程序,你的服务是可以启动的,对么?

另外,在Kennel里面读写文件:
How to open a file from a kernel mode device driver and how to read from or write to the file
shijizhishang_1 2012-10-26
  • 打赏
  • 举报
回复
服务无法启动,也就没打印什么内容。。。

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧