yexin218 发表于 2013-2-7 20:34:29

GetLastError()为0x5

一个自己写的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.csdn.net/u/20091203/16/82ae83fc-dec2-4cfe-81a3-4972cb1b6490.html?seed=245779751&r=61629475#r_61629475
页: [1]
查看完整版本: GetLastError()为0x5