gA6ri3l
驱动牛犊
驱动牛犊
  • 注册日期2007-04-04
  • 最后登录2007-07-03
  • 粉丝0
  • 关注0
  • 积分100分
  • 威望11点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
阅读:1576回复:3

请教:在boot-driver里面,使用ZwCreateFile不成功,请教各位达人!

楼主#
更多 发布于:2007-05-30 16:39
我想在Boot-Driver里面使用使用ZwCreateFile对文件进行操作!但是总是不成功!
代码如下:


NTSTATUS ntStatus;
    OBJECT_ATTRIBUTES   ObjectAttributes;
    IO_STATUS_BLOCK     IoStatusBlock;
    UNICODE_STRING UniFileName;
    //KPROCESSOR_MODE AccessMode;
    PCWSTR FileName = pcFileName;
    HANDLE FileHandle = NULL;
    peHeader *pehead;
    ULONG uBufferSize = 0;
    UCHAR *pBuffer;

    PCWSTR FileName = L"\\??\\C:\\windows\\system32\\abc.dll"  
        //PCWSTR FileName  = L"\\SystemRoot\\system32\\abc.dll";
    
    __asm int 3
    //AccessMode = ExGetPreviousMode();

    RtlZeroMemory(&ObjectAttributes , sizeof(OBJECT_ATTRIBUTES) ) ;
    RtlZeroMemory(&IoStatusBlock, sizeof(IO_STATUS_BLOCK) );
    
    RtlInitUnicodeString(&UniFileName , FileName);
    InitializeObjectAttributes(&ObjectAttributes,
                                &UniFileName,
                                OBJ_CASE_INSENSITIVE,//OBJ_CASE_INSENSITIVE,

//|OBJ_KERNEL_HANDLE,
                                NULL,
                                NULL);
    /*ObjectAttributes.Length = 0x18;
    ObjectAttributes.ObjectName = (PUNICODE_STRING)&UniFileName;
    ObjectAttributes.Attributes = OBJ_CASE_INSENSITIVE|OBJ_KERNEL_HANDLE;
    ObjectAttributes.RootDirectory = 0;
    ObjectAttributes.SecurityDescriptor = 0;
    ObjectAttributes.SecurityQualityOfService = 0;*/

    /*ntStatus=ZwOpenFile(FileHandle,    
                        GENERIC_WRITE|GENERIC_READ|SYNCHRONIZE,
                        &ObjectAttributes,
                        &IoStatusBlock,
                        FILE_SHARE_READ|FILE_SHARE_WRITE,
                        FILE_SYNCHRONOUS_IO_NONALERT); */

    //latest code
    ntStatus = ZwCreateFile(&FileHandle,  
                            

FILE_READ_DATA|FILE_WRITE_DATA|SYNCHRONIZE,//MEM_TOP_DOWN|FILE_READ_DATA|FILE_WRITE_DATA|DO_DEVICE_INITIALIZING,
                            &ObjectAttributes,
                            &IoStatusBlock,
                            0,
                            FILE_ATTRIBUTE_NORMAL,
                            FILE_SHARE_WRITE|FILE_SHARE_READ,
                            FILE_OPEN,
                            

FILE_SYNCHRONOUS_IO_NONALERT|FILE_NON_DIRECTORY_FILE|FILE_RANDOM_ACCESS,
                            NULL,
                            0);
  if(ntStatus != STATUS_SUCCESS)
  {
      DbgPrint("ZwCreateFile() failed with status 0x%08lx\n", ntStatus);
      return -1;      
  }

其中如果:FileName == L"\\??\\C:\\windows\\system32\\abc.dll"  返回0xc0000000d 参数错误
其中如果:FileName == L"\\SystemRoot\\system32\\abc.dll";      返回0xc000003a参数错误

我在网上找了找资料:
现在怀疑是否是我驱动装载的时候,文件系统还没有装载,便不能看到c:\windows\system32目录
那么有什么办法可以解决呢?

请教各位~~谢谢!!

最新喜欢:

LeopardLeopar...
WQXNETQIQI
驱动大牛
驱动大牛
  • 注册日期2006-06-12
  • 最后登录2010-10-26
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望1076点
  • 贡献值0点
  • 好评度895点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2007-05-30 17:57
想学my123?
看看人家的代码吧,在初始化例程里先判断 SystemRoot能不能打开,不能继续Reinit,能就开始干活~
驱动开发者 呵呵
gA6ri3l
驱动牛犊
驱动牛犊
  • 注册日期2007-04-04
  • 最后登录2007-07-03
  • 粉丝0
  • 关注0
  • 积分100分
  • 威望11点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-05-30 21:18
Re:请教:在boot-driver里面,使用ZwCreateFile不成功,请教各位达人
刚才找到了这种实现方法
但是好象觉得不是很好~~虽然可以实现
不过也谢谢了~~
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-06-04 12:35
file system is not ready yet
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
游客

返回顶部