SafeHandle.DangerousGetHandle メソッド

定義

handle フィールドの値を返します。

public:
 IntPtr DangerousGetHandle();
public IntPtr DangerousGetHandle();
member this.DangerousGetHandle : unit -> nativeint
Public Function DangerousGetHandle () As IntPtr

返品

IntPtr

nativeint

handle フィールドの値を表すIntPtr。 ハンドルが SetHandleAsInvalid() で無効とマークされている場合でも、このメソッドは元のハンドル値を返します。これは古い値である可能性があります。

注釈

このメソッドを使用して、 SafeHandle 派生クラスのインスタンスから実際のハンドル値を取得できます。 .NET Framework の多くのプロパティが IntPtr ハンドル型を返すので、このメソッドは下位互換性のために必要です。 IntPtr ハンドル型は、ポインターまたはハンドルを表すために使用されるプラットフォーム固有の型です。

Caution

DangerousGetHandleメソッドを使用すると、SetHandleAsInvalidでハンドルが無効としてマークされている場合でも、DangerousGetHandleは元の古い可能性のあるハンドル値を返すので、セキュリティ リスクを引き起こす可能性があります。 返されたハンドルは、任意の時点でリサイクルすることもできます。 これは、せいぜいハンドルが突然機能しなくなる可能性を意味します。 最悪の場合、ハンドルまたはハンドルが表すリソースが信頼されていないコードに公開されている場合、再利用または返されたハンドルに対するセキュリティ攻撃がリサイクルされる可能性があります。 たとえば、信頼されていない呼び出し元は、返されたハンドルのデータに対してクエリを実行し、まったく関係のないリソースの情報を受け取ることができます。 DangerousGetHandle メソッドを安全に使用する方法の詳細については、DangerousAddRefDangerousReleaseメソッドを参照してください。

適用対象