昨日のエントリで書いたように、.NET FrameworkでDEVMODE構造体のハンドル取得して、Native C++側に渡してみた。しかし、相変わらずERROR_ACCESS_DENIEDというエラーコードが戻ってくる。
C++側でハンドルをGlobalLock()してみると、構造体のドライバ名が格納されるメンバ変数にUnicodeと思われる文字列が入っている(C++で作ったDLLはANSI版)。ハンドルを取得するのはUnicodeで動作しているC#側で動いているんだから、考えてみれば当たり前か。というわけで、振り出しに戻る。
全部Unicode版で動いていればいいのだろうけれど、私の分はともかく、人様のライブラリがあるからなぁ…。