我正在将在 Visual c++ 6.0 中创建的旧 C Windows 驱动程序项目导入到 Visual Studio 2012 中。定义结构的方式导致 vs2012 中的错误。
typedef struct {
    LINK               Link;
    HANDLE             hFile;
    BYTE               handleType;
    OVERLAPPED         Overlapped;
    CRITICAL_SECTION   csIoCtrl;
} USB_HANDLE, *PUSB_HANDLE;
typedef struct {
    USB_HANDLE;        //error occurs here saying nothing was declared for USB_HANDLE
    LIST               PipeList;
    BOOL               bRemoved;
    CRITICAL_SECTION   csPipeList;
    SP_DEVICE_INTERFACE_DETAIL_DATA *InterfaceData;
} USB_DEVICE, *PUSB_DEVICE;
然后该项目使用 USB_DEVICE mydevice 之类的调用;mydevice->hfile =句柄;
这种结构在vs2012中是否可行?
(编辑 - 虽然这些确实显示为错误,但 Visual Studio 2012 确实编译并成功构建了一个解决方案。我将测试驱动程序以查看是否一切正常。)
错误:
我认为可以使用的解决方法是制作 USB_DEVICE 结构:
typedef struct {
    USB_HANDLE         USB_HANDLE;        
    LIST               PipeList;
    BOOL               bRemoved;
    CRITICAL_SECTION   csPipeList;
    SP_DEVICE_INTERFACE_DETAIL_DATA *InterfaceData;
} USB_DEVICE, *PUSB_DEVICE;
然后我可以进行其余的调用: mydevice->USB_HANDLE.hfile = handle;
这是一个等效的陈述吗?

