Overlapped.UnsafePack 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將目前的實例打包成一個 NativeOverlapped 結構。 不會傳播呼叫堆疊。
多載
| 名稱 | Description |
|---|---|
| UnsafePack(IOCompletionCallback) |
已淘汰.
已淘汰.
已淘汰.
將目前實例打包到 NativeOverlapped 一個結構中,指定非同步 I/O 操作完成時要呼叫的代理。 不會傳播呼叫堆疊。 |
| UnsafePack(IOCompletionCallback, Object) |
將目前實例打包成結構 NativeOverlapped ,指定非同步 I/O 操作完成後要呼叫的代理,以及作為緩衝區的受管理物件。 不會傳播呼叫堆疊。 |
UnsafePack(IOCompletionCallback)
警告
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 管理的結構指標。
- 屬性
例外狀況
水流 Overlapped 已經被填滿了。
備註
此方法回傳的非管理指標可透過重疊的 I/O 操作傳遞給作業系統。 該 NativeOverlapped 結構在物理記憶體中固定,直到 Unpack 被呼叫。
呼叫者負責固定緩衝區。 然而,若應用程式域被卸載,釘選緩衝區的句柄會被銷毀並釋放緩衝區,留下 I/O 操作寫入已釋放的位址。 因此,最好使用 UnsafePack(IOCompletionCallback, Object) 方法過載,讓執行時將緩衝區釘選。
注意事項
使用這種 UnsafePack 方法可能會無意中開啟安全漏洞。 程式碼存取安全性的權限檢查是基於堆疊中所有呼叫者的權限。 此 UnsafePack 方法不會傳播呼叫堆疊。 惡意程式碼可能能利用這點來避開權限檢查。
適用於
UnsafePack(IOCompletionCallback, Object)
重要
此 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 管理的結構指標。
- 屬性
例外狀況
來電者沒有所需的權限。
電流 Overlapped 已經被壓住了。
備註
此方法回傳的非管理指標可透過重疊的 I/O 操作傳遞給作業系統。 該 NativeOverlapped 結構在物理記憶體中固定,直到 Unpack 被呼叫。
中 userData 指定的緩衝區必須與執行非同步輸入輸出的非管理作業系統函式相同的緩衝區。
執行時會為 IuserData /O 操作期間內指定的特定緩衝區或緩衝區進行針腳。 若應用程式域被卸載,執行時會將記憶體釘選,直到 I/O 操作完成。
注意事項
使用這種 UnsafePack 方法可能會無意中開啟安全漏洞。 程式碼存取安全性的權限檢查是基於堆疊中所有呼叫者的權限。 此 UnsafePack 方法不會傳播呼叫堆疊。 惡意程式碼可能能利用這點來避開權限檢查。