Поделиться через


Overlapped.UnsafePack Метод

Определение

Упаковывает текущий экземпляр в структуру NativeOverlapped. Не передает вызывающий стек.

Перегрузки

UnsafePack(IOCompletionCallback)
Устаревшие..
Устаревшие..
Устаревшие..

Помещает текущий экземпляр в структуру NativeOverlapped, определяющую делегата, вызываемого при завершении асинхронной операции ввода-вывода. Не передает вызывающий стек.

UnsafePack(IOCompletionCallback, Object)

Упаковывает текущий экземпляр в структуру NativeOverlapped, определяющую вызываемого делегата, когда асинхронная операция вывода-ввода завершается и управляемый объект, который служит буфером. Не передает вызывающий стек.

UnsafePack(IOCompletionCallback)

Исходный код:
Overlapped.cs
Исходный код:
Overlapped.cs
Исходный код:
Overlapped.cs

Внимание!

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

Внимание!

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

Внимание!

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

Важно!

Этот API несовместим с CLS.

Помещает текущий экземпляр в структуру NativeOverlapped, определяющую делегата, вызываемого при завершении асинхронной операции ввода-вывода. Не передает вызывающий стек.

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.")]
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 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 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.  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, который представляет метод обратного вызова, когда асинхронная операция ввода-вывода завершается.

Возвращаемое значение

Неуправляемый указатель на структуру NativeOverlapped.

Атрибуты

Исключения

Текущий объект Overlapped уже упакован.

Комментарии

Неуправляемый указатель, возвращаемый этим методом, можно передать операционной системе в перекрывающихся операциях ввода-вывода. Структура NativeOverlapped фиксируется в физической памяти до вызова Unpack .

Вызывающий объект отвечает за закрепление буфера. Однако если домен приложения выгружается, дескриптор закрепленного буфера уничтожается и буфер освобождается, в результате чего операция ввода-вывода выполняет запись на освобожденный адрес. По этой причине лучше использовать перегрузку UnsafePack(IOCompletionCallback, Object) метода, при которой среда выполнения закрепляет буфер.

Внимание!

UnsafePack Использование метода может непреднамеренно открыть дыру в безопасности. Безопасность доступа к коду основывает свои проверки разрешений на разрешениях всех вызывающих объектов в стеке. Метод UnsafePack не распространяет вызывающий стек. Вредоносный код может воспользоваться этим, чтобы избежать проверок разрешений.

Применяется к

UnsafePack(IOCompletionCallback, Object)

Исходный код:
Overlapped.cs
Исходный код:
Overlapped.cs
Исходный код:
Overlapped.cs

Важно!

Этот API несовместим с CLS.

Упаковывает текущий экземпляр в структуру NativeOverlapped, определяющую вызываемого делегата, когда асинхронная операция вывода-ввода завершается и управляемый объект, который служит буфером. Не передает вызывающий стек.

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, который представляет метод обратного вызова, когда асинхронная операция ввода-вывода завершается.

userData
Object

Объект или массив объектов, представляющие буфер ввода или вывода для данной операции. Каждый объект представляет буфер, например, массив байтов.

Возвращаемое значение

Неуправляемый указатель на структуру NativeOverlapped.

Атрибуты

Исключения

У вызывающего объекта отсутствует необходимое разрешение.

Текущий объект Overlapped уже упакован.

Комментарии

Неуправляемый указатель, возвращаемый этим методом, можно передать операционной системе в перекрывающихся операциях ввода-вывода. Структура NativeOverlapped фиксируется в физической памяти до вызова Unpack .

Буфер или буферы, указанные в , userData должны совпадать с буферами, передаваемыми в неуправляемую функцию операционной системы, которая выполняет асинхронный ввод-вывод.

Среда выполнения закрепляет буфер или буферы, указанные в , наuserData время операции ввода-вывода. Если домен приложения выгружен, среда выполнения сохраняет память закрепленной до завершения операции ввода-вывода.

Внимание!

UnsafePack Использование метода может непреднамеренно открыть дыру в безопасности. Безопасность доступа к коду основывает свои проверки разрешений на разрешениях всех вызывающих объектов в стеке. Метод UnsafePack не распространяет вызывающий стек. Вредоносный код может воспользоваться этим, чтобы избежать проверок разрешений.

Применяется к