- PR -

PInvokeにおけるLPDWORD

1
投稿者投稿内容
惑星
会議室デビュー日: 2004/03/08
投稿数: 9
投稿日時: 2004-06-22 12:11
PInvokeで LPDWORD を引数に持つ関数を呼び出したいとします。
このとき C# 側では ref や out をつけることで受け渡しできますが、アドレス0(NULLポインタ)を関数に渡すことはできないのでしょうか?
refやoutで宣言してしまうと常にNULLポインタ以外のを渡すことしかできないように思えます。
やはりunsafeを使うしかないのでしょうか…?
惑星
会議室デビュー日: 2004/03/08
投稿数: 9
投稿日時: 2004-06-22 12:32
すいません

>やはりunsafeを使うしかないのでしょうか…?

のところは、

>intオーバーロードするしかないのでしょうか?

に訂正いたします。
「クラス」 UInt32 で引数を取るようにしてもnullは渡せないようです。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2004-06-22 12:43
引用:

refやoutで宣言してしまうと常にNULLポインタ以外のを渡すことしかできないように思えます。



そうなんですよね ;-p

仕方が無いので、NULL を与えたい場合は、IntPtr を引数にとる P/INVOKE 宣言をもう1個別に作って使い分けてます>わたし

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
惑星
会議室デビュー日: 2004/03/08
投稿数: 9
投稿日時: 2004-06-22 17:35
引用:

そうなんですよね ;-p

仕方が無いので、NULL を与えたい場合は、IntPtr を引数にとる P/INVOKE 宣言をもう1個別に作って使い分けてます>わたし



ああやっぱりそうなんですね…。
しかしポインタを取る引数が複数あると、オーバーロードしないといけない数もガンガン増える気がしますが…。まあ細かいことをしたければManaged C++で書いてそいつを呼び出せ、ということでしょうか。

ガッ(遅
1

スキルアップ/キャリアアップ(JOB@IT)