この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

SafeBuffer.AcquirePointer メソッド (Byte*)

 

公開日: 2016年10月

ポインターから取得、 SafeBuffer メモリ ブロックのオブジェクト。

この API は、CLS に準拠していません。

名前空間:   System.Runtime.InteropServices
アセンブリ:  mscorlib (mscorlib.dll 内)

[CLSCompliantAttribute(false)]
public unsafe void AcquirePointer(
	ref byte* pointer
)

パラメーター

pointer
Type: System.Byte*

内からのポインターを受け取るへの参照によって渡されたバイトのポインター、 SafeBuffer オブジェクトです。 このポインターを設定必要があります null このメソッドを呼び出す前にします。

Exception Condition
InvalidOperationException

SafeBuffer.Initialize メソッドが呼び出されていません。

AcquirePointer が返される境界を確認することでチェックを実行する必要があります、 pointer パラメーターは nullです。 ない場合は null, 、呼び出す必要があります、 SafeBuffer.ReleasePointer 制約された実行領域 (CER) 内のメソッドです。

AcquirePointer 呼び出し、 SafeHandle.DangerousAddRef メソッドをポインターを公開します。 異なり、 Read<T> メソッド、ポインターの現在の位置は変更されません。

次の exampledemonstrates を使用する方法、 AcquirePointer メソッド。

byte* pointer = null;
RuntimeHelpers.PrepareConstrainedRegions();
try {
    MySafeBuffer.AcquirePointer(ref pointer);
    // Use pointer here, with your own bounds checking.
    }
finally {
    if (pointer != null)
        MySafeBuffer.ReleasePointer();
    }

キャストすると pointer (これは、バイトへのポインター) を別の種類 (T *) へのポインターとポインター アラインメントの問題があります。

すべての範囲をこのポインターでチェックのための責任を負う必要があります。

ユニバーサル Windows プラットフォーム
8 以降で使用可能
.NET Framework
4.0 以降で使用可能
ポータブル クラス ライブラリ
サポート対象: 移植可能 .NET プラットフォーム
Windows Phone
8.1 以降で使用可能
トップに戻る
表示: