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 方法。

适用于