1

リムーバブル デバイスが検出されたときに実行する必要があるいくつかのタスクを自動化するプログラムを作成しています。元々はファイル ストリームのみを使用していました。すべてのリムーバブル デバイスにアクセスできるわけではないことに気付き、SHFileOperation を使い始めましたが、この方法でもアクセスできないデバイスがあることに気付きました。

WPD API を使用したいのですが、私のプログラムは MingW を使用してコンパイルされており、使用するライブラリも MingW を使用してコンパイルされています。私が見る唯一の 2 つの可能性は、Visual C++ 用にすべてを再コンパイルするか (可能であればこれを避けたい)、DLL としてコンパイルされ、関数のみをエクスポートし、MingW でコンパイルされたプログラムから簡単にリンクできる小さなラッピング ライブラリを作成することです。 DLL 自体が Visual C++ でコンパイルされている場合でも (WPD API を使用できます)。

たとえば、WPD を既にラップしているライブラリを誰かが知っていれば、多くの時間を節約できます。

4

1 に答える 1

1

API は MinGW から直接アクセスできる COM インターフェイスを公開しているため、WPD の一般的なラッパーは見つからないと思います。問題は、インターフェイスと関連する型を宣言する MinGW 互換のヘッダーがないことです。Microsoft のコンパイラを使用しないで解決できる解決策はほとんどありません。

  • 独自の MinGW 互換ヘッダーを記述します。Microsoft のヘッダーを参照せずにドキュメントからのみこれを行うことができる場合は、それらを送信して w32api パッケージに追加し、他のユーザーがそれらを使用できるようにすることができます。
  • ヘッダーの Windows SDK バージョンをコピーし、GCC でのコンパイルを妨げるジャンクをすべて削除します。古い SDK の古いバージョンのヘッダーでは、削除するジャンクが少なくなります。
  • SDK ヘッダーをラップするヘッダーを作成し、マクロを使用してジャンクを排除します。
  • WPD への OLE オートメーション インターフェイスを使用します。これを行うために必要なすべての COM インターフェイス (主にIDispatch) は、MinGW でサポートされています。Windows SDK のドキュメントでは、このオプションについて簡単に説明しています。
于 2014-08-04T03:00:09.030 に答える