PINVOKE を使用して、私も書いている dll を呼び出す WPF アプリを作成しています。dll 内のエクスポートされた関数の 1 つで、SetupDiGetClassDevs が呼び出されます。この時点で、XP でアプリを実行するとエラーが表示されます。まず、次のようなダイアログ ボックスが表示されます。
「プロシージャ エントリ ポイント RegOpenKeyExW がダイナミック リンク ライブラリ KERNAL32.dll に見つかりませんでした。」
[OK] をクリックすると、未処理の例外ダイアログが表示されます。WPP アプリと dll の両方が Win7 マシン上の VS2010 でビルドされており、アプリは Win7 システムで正常に動作します。この問題は、XP でアプリを実行している場合にのみ発生します。dll で SetupDiGetClassDevs (およびその後の SetUpdi 関数呼び出し) を回避しても、何も問題はありません。PINVOKE メカニズムは正常に動作しているようです。
何がうまくいかないのですか?dll は UNICODE を有効にしてビルドされていないため、参照されている RegOpenKeyExW を見て少し混乱しています。
ありがとうトム