gzxzb1234
驱动牛犊
驱动牛犊
  • 注册日期2012-11-28
  • 最后登录2012-11-28
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2161回复:3

为什么ZwCreateFile会阻塞?如何避免被阻塞

楼主#
更多 发布于:2012-11-28 10:46
   用ZwCreateFile打开一个MSD卡上的文件,正常时不会出现问题。

  但当MSD卡读卡器不稳定时,比如之前能访问MSD卡上文件,当读卡器出现问题时(MSD卡对应的盘不能打开),下面的程序将在ZwCreateFile处被一直阻塞。

  请问为什么ZwCreateFile会被阻塞? 怎样才能防止被阻塞?


程序如下

  

    OBJECT_ATTRIBUTES objectAttributes;
    IO_STATUS_BLOCK iostatus;
    UNICODE_STRING ustrFileName;

    RtlInitUnicodeString(&ustrFileName, L"\\??\\G:\\Test.bin");

    //初始化objectAttributes
    InitializeObjectAttributes(&objectAttributes,
        &ustrFileName,
        OBJ_CASE_INSENSITIVE,//对大小写不敏感
        NULL,
        NULL );

    status = ZwCreateFile(&fd, GENERIC_WRITE | GENERIC_READ,
        &objectAttributes,
        &iostatus,
        NULL,
        FILE_ATTRIBUTE_NORMAL,
        FILE_SHARE_READ|FILE_SHARE_WRITE, //Device and intermediate drivers usually set ShareAccess to zero, which gives the caller exclusive access to the open file.
        FILE_OPEN_IF,  //If the file already exists, open it. If it does not, create the given file.
        0,
        NULL,
        0);

    if (status != STATUS_SUCCESS)
    {
        KdPrint(("ZwCreateFile failed. [%08x]\n", status));
        pCtx->fd = NULL;
        return status;
    }
    
    KdPrint(("iostatus.Information = [%08x]\n", iostatus.Information));
drivercoding
驱动牛犊
驱动牛犊
  • 注册日期2009-10-19
  • 最后登录2013-08-17
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望191点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2012-11-28 14:13
你这个问题没有意义啊,如果ZwCreateFile不堵塞的话,那他返回什么东西给你呢?
www.3-my.com
驱动牛犊
驱动牛犊
  • 注册日期2012-12-11
  • 最后登录2012-12-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望101点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2012-12-11 15:45
问题太没有意义了

www.buygoodbuy.com    
www.0593qq.com
co63oc
驱动牛犊
驱动牛犊
  • 注册日期2011-09-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分35分
  • 威望291点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2013-01-10 11:30
设置Event, KeWaitForSingleObject等待,
PsCreateSystemThread  单独创建一个线程, 线程设置Event
游客

返回顶部