Overlapped.UnsafePack 方法

定义

将当前实例打包到结构 NativeOverlapped 中。 不传播调用堆栈。

重载

名称 说明
UnsafePack(IOCompletionCallback)
已过时.
已过时.
已过时.

将当前实例打包到一个结构中 NativeOverlapped ,指定在异步 I/O 操作完成时要调用的委托。 不传播调用堆栈。

UnsafePack(IOCompletionCallback, Object)

将当前实例打包到结构 NativeOverlapped 中,指定要在异步 I/O 操作完成时要调用的委托,以及用作缓冲区的托管对象。 不传播调用堆栈。

UnsafePack(IOCompletionCallback)

Source:
Overlapped.cs
Source:
Overlapped.cs
Source:
Overlapped.cs
Source:
Overlapped.cs
Source:
Overlapped.cs

注意

This overload is not safe and has been deprecated. Use UnsafePack(IOCompletionCallback?, object?) instead.

注意

This method is not safe. Use UnsafePack (iocb, userData) instead. https://go.microsoft.com/fwlink/?linkid=14202

注意

This method is not safe. Use UnsafePack (iocb, userData) instead. http://go.microsoft.com/fwlink/?linkid=14202

重要

此 API 不符合 CLS。

将当前实例打包到一个结构中 NativeOverlapped ,指定在异步 I/O 操作完成时要调用的委托。 不传播调用堆栈。

public:
 System::Threading::NativeOverlapped* UnsafePack(System::Threading::IOCompletionCallback ^ iocb);
[System.CLSCompliant(false)]
[System.Obsolete("This overload is not safe and has been deprecated. Use UnsafePack(IOCompletionCallback?, object?) instead.")]
public System.Threading.NativeOverlapped* UnsafePack(System.Threading.IOCompletionCallback? iocb);
[System.CLSCompliant(false)]
[System.Obsolete("This method is not safe.  Use UnsafePack (iocb, userData) instead.  https://go.microsoft.com/fwlink/?linkid=14202")]
public System.Threading.NativeOverlapped* UnsafePack(System.Threading.IOCompletionCallback? iocb);
[System.CLSCompliant(false)]
[System.Obsolete("This method is not safe.  Use UnsafePack (iocb, userData) instead.  http://go.microsoft.com/fwlink/?linkid=14202")]
public System.Threading.NativeOverlapped* UnsafePack(System.Threading.IOCompletionCallback iocb);
[System.CLSCompliant(false)]
public System.Threading.NativeOverlapped* UnsafePack(System.Threading.IOCompletionCallback iocb);
[System.CLSCompliant(false)]
[System.Obsolete("This method is not safe.  Use UnsafePack (iocb, userData) instead.  http://go.microsoft.com/fwlink/?linkid=14202")]
[System.Security.SecurityCritical]
public System.Threading.NativeOverlapped* UnsafePack(System.Threading.IOCompletionCallback iocb);
[System.CLSCompliant(false)]
[System.Obsolete("This method is not safe.  Use UnsafePack (iocb, userData) instead.  https://go.microsoft.com/fwlink/?linkid=14202")]
public System.Threading.NativeOverlapped* UnsafePack(System.Threading.IOCompletionCallback iocb);
[<System.CLSCompliant(false)>]
[<System.Obsolete("This overload is not safe and has been deprecated. Use UnsafePack(IOCompletionCallback?, object?) instead.")>]
member this.UnsafePack : System.Threading.IOCompletionCallback -> nativeptr<System.Threading.NativeOverlapped>
[<System.CLSCompliant(false)>]
[<System.Obsolete("This method is not safe.  Use UnsafePack (iocb, userData) instead.  https://go.microsoft.com/fwlink/?linkid=14202")>]
member this.UnsafePack : System.Threading.IOCompletionCallback -> nativeptr<System.Threading.NativeOverlapped>
[<System.CLSCompliant(false)>]
[<System.Obsolete("This method is not safe.  Use UnsafePack (iocb, userData) instead.  http://go.microsoft.com/fwlink/?linkid=14202")>]
member this.UnsafePack : System.Threading.IOCompletionCallback -> nativeptr<System.Threading.NativeOverlapped>
[<System.CLSCompliant(false)>]
member this.UnsafePack : System.Threading.IOCompletionCallback -> nativeptr<System.Threading.NativeOverlapped>
[<System.CLSCompliant(false)>]
[<System.Obsolete("This method is not safe.  Use UnsafePack (iocb, userData) instead.  http://go.microsoft.com/fwlink/?linkid=14202")>]
[<System.Security.SecurityCritical>]
member this.UnsafePack : System.Threading.IOCompletionCallback -> nativeptr<System.Threading.NativeOverlapped>

参数

iocb
IOCompletionCallback

表示 IOCompletionCallback 异步 I/O 操作完成时调用的回调方法的委托。

返回

指向结构的非托管指针 NativeOverlapped

属性

例外

注解

此方法返回的非托管指针可以通过重叠 I/O 操作传递到操作系统。 该 NativeOverlapped 结构在物理内存中固定,直到 Unpack 调用为止。

调用方负责固定缓冲区。 但是,如果卸载应用程序域,则会销毁固定缓冲区的句柄并释放缓冲区,使 I/O 操作写入释放的地址。 因此,最好使用 UnsafePack(IOCompletionCallback, Object) 运行时固定缓冲区的方法重载。

Caution

UnsafePack使用该方法可能会无意中打开安全漏洞。 代码访问安全基于其权限检查堆栈上所有调用方的权限。 该方法 UnsafePack 不会传播调用堆栈。 恶意代码可能能够利用此漏洞来避免权限检查。

适用于

UnsafePack(IOCompletionCallback, Object)

Source:
Overlapped.cs
Source:
Overlapped.cs
Source:
Overlapped.cs
Source:
Overlapped.cs
Source:
Overlapped.cs

重要

此 API 不符合 CLS。

将当前实例打包到结构 NativeOverlapped 中,指定要在异步 I/O 操作完成时要调用的委托,以及用作缓冲区的托管对象。 不传播调用堆栈。

public:
 System::Threading::NativeOverlapped* UnsafePack(System::Threading::IOCompletionCallback ^ iocb, System::Object ^ userData);
[System.CLSCompliant(false)]
public System.Threading.NativeOverlapped* UnsafePack(System.Threading.IOCompletionCallback? iocb, object? userData);
[System.CLSCompliant(false)]
public System.Threading.NativeOverlapped* UnsafePack(System.Threading.IOCompletionCallback iocb, object userData);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public System.Threading.NativeOverlapped* UnsafePack(System.Threading.IOCompletionCallback iocb, object userData);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
[System.Security.SecurityCritical]
public System.Threading.NativeOverlapped* UnsafePack(System.Threading.IOCompletionCallback iocb, object userData);
[<System.CLSCompliant(false)>]
member this.UnsafePack : System.Threading.IOCompletionCallback * obj -> nativeptr<System.Threading.NativeOverlapped>
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.UnsafePack : System.Threading.IOCompletionCallback * obj -> nativeptr<System.Threading.NativeOverlapped>
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
[<System.Security.SecurityCritical>]
member this.UnsafePack : System.Threading.IOCompletionCallback * obj -> nativeptr<System.Threading.NativeOverlapped>

参数

iocb
IOCompletionCallback

表示 IOCompletionCallback 异步 I/O 操作完成时调用的回调方法的委托。

userData
Object

表示操作的输入或输出缓冲区的对象或对象数组。 每个对象表示缓冲区,例如字节数组。

返回

指向结构的非托管指针 NativeOverlapped

属性

例外

调用方没有所需的权限。

注解

此方法返回的非托管指针可以通过重叠 I/O 操作传递到操作系统。 该 NativeOverlapped 结构在物理内存中固定,直到 Unpack 调用为止。

指定的 userData 缓冲区或缓冲区必须与传递给执行异步 I/O 的非托管操作系统函数的缓冲区相同。

运行时固定在 I/O 操作期间指定的userData 缓冲区或缓冲区。 如果卸载应用程序域,运行时将保持内存固定,直到 I/O 操作完成。

Caution

UnsafePack使用该方法可能会无意中打开安全漏洞。 代码访问安全基于其权限检查堆栈上所有调用方的权限。 该方法 UnsafePack 不会传播调用堆栈。 恶意代码可能能够利用此漏洞来避免权限检查。

适用于