IntPtrをIStream.Readに渡す必要があり、IntPtrがulong変数を指す必要があります。私のulong変数を指すこのIntPtrを取得するにはどうすればよいですか?C#のulong変数へのIntPtrの取得
答えて
最良の方法は、IStreamの定義を変更することです:そして、あなたはこの質問に答える人々に注意点として
int pcbRead = 0;
Read(..., ref pcbRead);
私はこれが私の最高の選択肢であると認識していました。結局のところ、IStreamは単なるインタフェースです。自分のインターフェースを作成してみませんか – Ries
var pointer = new IntPtr(&myVariable);
これはポインタを取得しますが、GCに固定されたままにするように要求していないので、myVariableが移動され、ポインタがあなたに属しなくなります。 – Samuel
安全でないコードを避けたい場合は、GCHandleメソッドを使用する必要があります。私はボックス化された値の型でこれがどのように機能するかについてはわかりません。
var handle = GCHandle.Alloc(myVar, GCHandleType.Pinned);
var ptr = handle.AddrOfPinnedObject()
これは近づいた。興味深いことに、私はMarshal.WriteInt64に戻って値を私のulong変数に戻す必要がありました(おそらく十分にスマートではなかったデバッグされました) – Ries
安全でないコードを使用できない場合は、次を試してください。
var myValue = GetTheValue();
var ptr = Marshal.AllocHGLobal(Marshal.SizeOf(typeof(ulong));
Marshal.StructureToPointer(ptr, myValue, false);
後で、「ptr」値でMarshal.FreeHGlobalを呼び出す必要があります。
- 1. C#、IntPtrのデフォルトパラメータ値
- 2. Objective-Cのインスタンス変数のクラスへのポインタを取得
- 3. C#System.Threading.Tasks.Parallel.For on ulong
- 4. シェルスクリプト変数へのCコード出力の取得方法
- 5. IntPtrからIntPtrへデータをコピー
- 6. セッション変数ストレージへのデータベースの取得
- 7. ulong(C#)の最下位ビット位置を取得する最速の方法は?
- 8. Objective-C - ulong to uint32
- 9. IntPtr to Uint32? C#
- 10. IntPtrを渡してC#でデータを取得する方法は?
- 11. IntPtrの配列へのポインタの配列を変換する
- 12. バイト配列からulong配列への変換
- 13. ulongをC言語の2つのuint変数に解析する
- 14. PHP変数へのjavascript変数の取得
- 15. C#IntPtrをintに変換する
- 16. CPLEX C APIの変数タイプを取得
- 17. C++からC#へのバイナリ読み取り関数の変換
- 18. IntPtr常にゼロC#
- 19. ULONG、ビットマスクと[OK]をC#
- 20. 関数内の変数へのアクセスを取得する
- 21. 関数内の変数へのアクセスを取得する
- 22. C関数のC++への変換
- 23. C#変数へのアクセス
- 24. const式へのC++変数
- 25. フォームへのデータの取得c#
- 26. C#WinformsへのWindowsユニバーサルAPIの取得
- 27. 他の変数名でメンバ変数を取得するC#
- 28. 定数変数へのC++型のキャストポインタ
- 29. IntPtrが指すメモリの内容をC#
- 30. 変数のpythonへのアプリケーション出力の取得
を書くことができます
.NETののIntPtrであるため、彼はULONGを望んでいますx64システムで64ビット。 – Powerlord
IStream.ReadにはulongにIntPtrが必要なので、ulongが必要です。 – Ries