GetLastError()为0x5

本文介绍了一个自定义Filter驱动在使用CreateFileW()方法打开时遇到的问题及解决方案。主要原因是进程权限不足导致打开失败,通过调整共享模式并在Vista中以管理员身份运行命令提示符解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个自己写的Filter驱动,定义的Filter_Service_Name为:

#define FILTER_DEVICE_NAME                L"\\\\.\\NDISLWF"

 然后想用CreateFileW()方法来打开这个Handler:

#define FILTER_DEVICE_NAME                L"\\\\.\\NDISLWF"
// Obtain a filter driver handle
    printf("Opening a Filter Driver device handle...\n");
    m_hFilter = CreateFileW(
                FILTER_DEVICE_NAME,
                GENERIC_READ | GENERIC_WRITE,
                0,
                NULL,
                OPEN_EXISTING,
                FILE_ATTRIBUTE_NORMAL,
                INVALID_HANDLE_VALUE);
    if (m_hFilter == INVALID_HANDLE_VALUE)
    {
      printf("Failed to open a handle to ndislwf: 0x%x\n", GetLastError());
      goto Exit;
    }

 结果返回的结果是INVALID_HANDLE_VALUE,并且GetLastError()=0x5

----------------------根本原因是运行的进程权限不够-------------------------------------------

1、可以更改CreateFileW()第三个参数为:FILE_SHARE_READ | FILE_SHARE_WRITE

2、然后在Vista中以管理员权限运行命令行窗口在运行

这样就没有问题了。

 

可以参考:http://topic.youkuaiyun.com/u/20091203/16/82ae83fc-dec2-4cfe-81a3-4972cb1b6490.html?seed=245779751&r=61629475#r_61629475

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值