我正在將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 = handle;
這種類型的結構在vs2012中可能嗎?
(編輯 - 儘管這些都顯示爲錯誤時,Visual Studio 2012做了編譯,成功打造一個解決方案,我將要測試的驅動程序,看看是否一切很快就正常工作。)
錯誤:
struct declaration error message http://oi45.tinypic.com/wb877k.jpg
member error message http://oi46.tinypic.com/jhts1f.jpg
一個解決,我認爲我可以用在製作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;
這是一個等價的語句嗎?
您可以通過給一個名字在USB_DEVICE的USB_HANDLE解決這個問題。 – 2013-04-04 00:45:11
我們不應該問清楚錯誤消息是什麼,因爲它應該在第一句中:「我在VS2012中收到以下錯誤消息:...」。請使用這些重要信息來啓發我們。 – Sebivor 2013-04-04 01:38:59