我正在将在 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;
这是一个等效的陈述吗?