C#の場合は、AnyCPUでコンパイルしていれば32bit OSでも64Bit OSでも動くとマイクロソフト公式に
書いてるね。
そもそも.Netって直接マシン語生成ではなくて、CLR上で動くための中間コードを吐いているはずだから
32/64Bitは関係ない。
それでいて、64bit上で動かないのは32bit特有の部分があるということ。
マイクロソフト公式では
・プラットフォームによってメンバのサイズが変わる構造体 (ポインタ型など)
・定数のサイズを含むポインタ演算
・ハンドルに IntPtr ではなく Int32 を使用した不適切なプラットフォーム呼び出しまたは COM 宣言
・IntPtr から Int32 へのキャスト
を理由に挙げている。
C#ではポインタは普通使わないが、DirectX関係のDLLはC++になっているから、多分この部分が問題あるのだと思う。
ちなみにDLLはexeと同じCLR上に読み込まれる、つまり64bitの場合は64bit CLR上でDLLを動かすわけだから、32bit
特有の書き方をしているDLLは駄目ということでしょう。

ダイアグラム作成ソフトはあるよ
http://homepage2.nifty.com/take-okm/oudia/