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,仍会返回原始的、可能过时的句柄值。 还可以随时回收返回的句柄。 充其多,这意味着句柄可能会突然停止工作。 最坏的情况是,如果句柄表示的句柄或资源向不受信任的代码公开,则可能会导致对重用或返回的句柄进行回收安全攻击。 例如,不受信任的调用方可以查询刚刚返回的句柄上的数据,并接收完全不相关的资源的信息。 有关安全使用 方法的详细信息, DangerousAddRefDangerousReleaseDangerousGetHandle 请参阅 和 方法。

适用于