いわゆるC言語などのポインタを扱う場合は、通常は System.IntPtr を利用する。
ただし、C言語などで型としてポインタであるが、実際の値は任意の32ビット値(または64ビット値)が格納されている場合は、System.UIntPtr を利用しなければならない。
これは、System.IntPtr がプラットフォームアドレスとして有効な範囲*1である 0x00000000〜0x7FFFFFFF しか*2受け入れない仕様となっているためだ。
いわゆる HANDLE は、Win32 SDK のヘッダファイルにおいてアドレスとして定義されているので IntPtr で良い。*3