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

你可能感兴趣的:(html,.net)