共用方式為


SafeHandle.DangerousGetHandle 方法

定義

傳回 handle 欄位的值。

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

傳回

IntPtr

nativeint

IntPtr,代表 handle 欄位的值。 如果這個控制代碼已經用 SetHandleAsInvalid() 標記為無效,則這個方法仍會傳回原始的控制代碼值,不過這個值可能為過時的值。

備註

您可以使用這個方法,從衍生類別的 SafeHandle 實例擷取實際句柄值。 因為 .NET Framework 傳回 IntPtr 句柄類型中的許多屬性,所以需要這個方法才能進行回溯兼容性。 IntPtr 句柄類型是用來表示指標或句柄的平臺特定類型。

警告

DangerousGetHandle使用 方法可能會造成安全性風險,因為如果句柄已標示為無效SetHandleAsInvalidDangerousGetHandle仍會傳回原始的可能過時句柄值。 傳回的句柄也可以在任何時間點回收。 這表示句柄可能突然停止運作。 最糟的是,如果句柄或句柄所代表的資源會公開給不受信任的程序代碼,這可能會導致重複使用或傳回句柄的回收安全性攻擊。 例如,不受信任的呼叫端可以在剛傳回的句柄上查詢數據,並接收完全不相關的資源資訊。 DangerousAddRef如需安全地使用 DangerousGetHandle 方法的詳細資訊,請參閱 和 DangerousRelease 方法。

適用於