我正在处理一个老的C语言Windows驱动程序项目,该项目是在Visual C++ 6.0中创建的,现在需要导入到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 = handle;
这种结构在vs2012中是否可行?
(编辑-虽然这些显示为错误,但是Visual Studio 2012确实编译并成功构建了解决方案。我将很快测试驱动程序以查看是否一切正常。)
错误信息:
![struct declaration error message](https://istack.dev59.com/bElt3.webp)
![member error message](https://istack.dev59.com/sr1C5.webp)
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;
这个语句等价吗?