Packs the current instance into a System.Threading.NativeOverlapped structure specifying the delegate to invoke when the asynchronous I/O operation is complete. Does not propagate the calling stack.
- iocb
- An System.Threading.IOCompletionCallback delegate that represents the callback method invoked when the asynchronous I/O operation completes.
An unmanaged pointer to a System.Threading.NativeOverlapped structure.
The unmanaged pointer returned by this method can be passed to the operating system in overlapped I/O operations. The System.Threading.NativeOverlapped structure is fixed in physical memory until Overlapped.Unpack(NativeOverlapped*) is called.
The caller is responsible for pinning the buffer. If the application domain is unloaded, however, the handle to the pinned buffer is destroyed and the buffer is released, leaving the I/O operation to write to the freed address. For this reason, it is better to use the Overlapped.UnsafePack(IOCompletionCallback, object) method overload, in which the runtime pins the buffer.
Using the Overlapped.UnsafePack(IOCompletionCallback, object) method could inadvertently open up a security hole. Code access security bases its permission checks on the permissions of all the callers on the stack. The Overlapped.UnsafePack(IOCompletionCallback, object) method does not propagate the calling stack. Malicious code might be able to exploit this to avoid permission checks.