1

含めましたが、そのファイルにはforwinioctl.hがありません!! http://www.osronline.com/ddkx/storage/k307_8z3m.htmにあると言われています が、Windows XP では何も見つかりません。ただし 、Windows XPで動作するはずであると述べています(Vista固有のクエリは必要ありません)。(私は Visual C++ を使用していません。MinGW で Qt を使用しています)#defineIOCTL_STORAGE_QUERY_PROPERTYntddstor.hntddstor.hIOCTL_STORAGE_QUERY_PROPERTYwinioctl.h

4

2 に答える 2

1

WinIoCtl.h に IOCTL_STORAGE_QUERY_PROPERTY 定義があり、#ifdef 条件なしでコンパイルされます。このファイルのバージョンは何ですか?どのようにインストールされていますか? 私は VC++ 2010 の WinIoCtl.h を使用しています。Windows SDK をインストールする必要があるかもしれません。

おそらく、WinIoCtl.h は古い Visual Studio または SDK からのものです。それが不可能な場合は、最新の Visual Studio バージョンをインストールします。最新の Microsoft Windows SDK をインストールし、そのインクルード ディレクトリがコンパイラの最初にリストされていることを確認してください。

于 2011-10-01T10:11:43.917 に答える
0

私は MinGW を使用して、この種のプログラムをコンパイルしました。率直に言って、MinGW サイトは非常に混乱しているため、見つけるのはそれほど簡単ではないかもしれませんが、多くの DDK ヘッダーを問題なく提供しています。次に、必要な構造体と定義をコピーして貼り付けるだけで、SDK ヘッダーで見つけることができません。マクロは、念のため、競合を避けるために条件付きで定義します。

たとえば、IOCTL_STORAGE_QUERY_PROPERTY は mingw/include/ddk/ntddstor.h にあります。

#define IOCTL_STORAGE_QUERY_PROPERTY \
  CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS)

だから私は自分のプロジェクトに追加します:

#ifndef IOCTL_STORAGE_QUERY_PROPERTY
    #define IOCTL_STORAGE_QUERY_PROPERTY \
      CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS)
#endif

ほとんどの人は DDK ヘッダーを持っておらず、MinGW の代わりに VisualStudio を使用することを主張しているため、これはコードを公開する場合に特に役立ちます。

于 2011-10-01T11:06:03.280 に答える