2008年2月26日火曜日

[.NET]引数がポインタのWinsdowsAPIを呼び出す

引数がポインタのWindowsのAPIを呼び出す場合、C#では以下のような宣言をします。 GetMailslotInfoの場合

[DllImport("kernel32.dll")]
static extern bool GetMailslotInfo(
    SafeFileHandle hMailslot,     //メールスロットのハンドル
    ref uint lpMaxMessageSize,    //最大メッセージサイズ
    ref uint lpNextSize,          //次のメッセージのサイズ
    ref uint lpMessageCount,      //メッセージ数
    ref uint lpReadTimeout);      //読み取りタイムアウトの間隔

となります。しかし、pinvoke.netで生成できる宣言はref uintの部分がIntPtrとなります。

ほかにもっとよい方法があるのかもしれませんが、これでもとりあえず動作しますね。

0 件のコメント: