4

Visual c++ 6.0 で作成された古い C Windows ドライバー プロジェクトを Visual Studio 2012 にインポートしようとしています。

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;

これは同等のステートメントですか?

4

2 に答える 2

0

USB_DEVICE のタイプ USB_HANDLE には変数が定義されていないようです。

typedef struct {
    USB_HANDLE         handler;  // handler is missing?
    LIST               PipeList;
    BOOL               bRemoved;
    CRITICAL_SECTION   csPipeList;
    SP_DEVICE_INTERFACE_DETAIL_DATA *InterfaceData;
} USB_DEVICE, *PUSB_DEVICE;
于 2013-04-04T04:57:37.253 に答える