DOBON.NET DOBON.NETプログラミング掲示板過去ログ

byte* → byte[] 変換がうまくいきません。

環境/言語:[WindowsXP SP2, Visual C# 2005 Express Edition]
分類:[.NET]

質問させていただきます。

下記の構造体 A の buffer の内容をファイルに出力しようと思っています。

struct A
{
unsafe public fixed byte buffer[ 1024 ];
}

そこで、

FileStream.Write( byte[] array, int offset, int count );

を用いて出力しようと考えたのですが、
buffer を byte[] 型に変換できないためコンパイルエラーとなってしまいます。
( buffer は byte* 型として扱われているらしいのです。)

ヒントなど、ご教授いただければ幸いです。
どうにも、固定サイズバッファとマネージドコードの食い合わせは良くなさそうです。
.NET 2.0 で UnmanagedMemoryStream クラスが追加されたので、これを使って、更にここから BinaryReader を作れば、ReadBytes でバイト配列を読み出せます。これを書き込むようにするのがせいぜいでしょうか。
マネージド配列からアンマネージドポインタには fixed ステートメントがあるんですが、逆方向にはどうにも決め手が見つかりません。

あるいは、開き直って Win32API の WriteFile 関数を使う手もあります。
Hongliangさん、ご回答ありがとうございます。

> .NET 2.0 で UnmanagedMemoryStream クラスが追加されたので、
> これを使って、更にここから BinaryReader を作れば、
> ReadBytes でバイト配列を読み出せます。
やはり、いったんアンマネージドメモリから取り出さなければいけないのですね。

> あるいは、開き直って Win32API の WriteFile 関数を使う手もあります。
なるほど!
この方法が一番スマートな気がします。

早速、試してみます。
ありがとうございました。
解決しました。
ありがとうございました。
解決済み!
あ、解決しちゃってる。
いい答え有りますよ。

http://msdn2.microsoft.com/ja-jp/library/4cew0s1h.aspx

DOBON.NET | プログラミング道 | プログラミング掲示板