﻿<?xml version="1.0" encoding="utf-8"?><Type Name="Overlapped" FullName="System.Threading.Overlapped"><TypeSignature Maintainer="auto" Language="C#" Value="public class Overlapped" /><TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Overlapped extends System.Object" /><AssemblyInfo><AssemblyName>mscorlib</AssemblyName><AssemblyPublicKey>[00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00]</AssemblyPublicKey><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the &lt;link location="node:gtk-sharp/programming/threads"&gt;Gtk# Thread Programming&lt;/link&gt; for details.</ThreadSafetyStatement><Base><BaseTypeName>System.Object</BaseTypeName></Base><Interfaces /><Attributes><Attribute><AttributeName>System.Runtime.InteropServices.ComVisible(true)</AttributeName></Attribute></Attributes><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>The <see cref="Overload:System.Threading.Overlapped.Pack" /> and <see cref="Overload:System.Threading.Overlapped.UnsafePack" /> methods transfer information from an <see cref="T:System.Threading.Overlapped" /> object to a <see cref="T:System.Threading.NativeOverlapped" /> structure that can be passed to Win32 API functions for asynchronous file I/O. The <see cref="M:System.Threading.Overlapped.Unpack(System.Threading.NativeOverlapped*)" /> method transfers information from a <see cref="T:System.Threading.NativeOverlapped" /> structure to an instance of the <see cref="T:System.Threading.Overlapped" /> class. </para><para>Changes to the properties of an <see cref="T:System.Threading.Overlapped" /> object affect its associated <see cref="T:System.Threading.NativeOverlapped" /> structure, and vice versa. </para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Provides a managed representation of a Win32 <unmanagedCodeEntityReference>OVERLAPPED</unmanagedCodeEntityReference> structure, including methods to transfer information from an <see cref="T:System.Threading.Overlapped" /> instance to a <see cref="T:System.Threading.NativeOverlapped" /> structure.</para></summary></Docs><Members><Member MemberName=".ctor"><MemberSignature Language="C#" Value="public Overlapped ();" /><MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" /><MemberType>Constructor</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue /><Parameters /><Docs><remarks>To be added</remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Initializes a new, empty instance of the <see cref="T:System.Threading.Overlapped" /> class.</para></summary></Docs></Member><Member MemberName=".ctor"><MemberSignature Language="C#" Value="public Overlapped (int offsetLo, int offsetHi, int hEvent, IAsyncResult ar);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(int32 offsetLo, int32 offsetHi, int32 hEvent, class System.IAsyncResult ar) cil managed" /><MemberType>Constructor</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><Attributes><Attribute><AttributeName>System.Obsolete("Not 64bit compatible.  Please use the constructor that takes IntPtr for the event handle")</AttributeName></Attribute></Attributes><ReturnValue /><Parameters><Parameter Name="offsetLo" Type="System.Int32" /><Parameter Name="offsetHi" Type="System.Int32" /><Parameter Name="hEvent" Type="System.Int32" /><Parameter Name="ar" Type="System.IAsyncResult" /></Parameters><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>Use the <see cref="P:System.Threading.WaitHandle.Handle" /> property to get the handle of any managed synchronization event that derives from the <see cref="T:System.Threading.WaitHandle" /> class.</para><para>Your implementation of <see cref="T:System.IAsyncResult" /> provides status information on the I/O operation. Pass it to the constructor in the <paramref name="ar" /> parameter, and retrieve it later with the <see cref="P:System.Threading.Overlapped.AsyncResult" /> property. If a callback method is specified for the <see cref="Overload:System.Threading.Overlapped.Pack" /> or <see cref="Overload:System.Threading.Overlapped.UnsafePack" /> method, the callback can retrieve your <see cref="T:System.IAsyncResult" /> by unpacking the <see cref="T:System.Threading.NativeOverlapped" /> structure it receives.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Initializes a new instance of the <see cref="T:System.Threading.Overlapped" /> class with the specified file position, the 32-bit integer handle to an event that is signaled when the I/O operation is complete, and an interface through which to return the results of the operation.</para></summary><param name="offsetLo"><attribution license="cc4" from="Microsoft" modified="false" />The low word of the file position at which to start the transfer. </param><param name="offsetHi"><attribution license="cc4" from="Microsoft" modified="false" />The high word of the file position at which to start the transfer. </param><param name="hEvent"><attribution license="cc4" from="Microsoft" modified="false" />The handle to an event that is signaled when the I/O operation is complete. </param><param name="ar"><attribution license="cc4" from="Microsoft" modified="false" />An object that implements the <see cref="T:System.IAsyncResult" /> interface and provides status information on the I/O operation. </param></Docs></Member><Member MemberName=".ctor"><MemberSignature Language="C#" Value="public Overlapped (int offsetLo, int offsetHi, IntPtr hEvent, IAsyncResult ar);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(int32 offsetLo, int32 offsetHi, native int hEvent, class System.IAsyncResult ar) cil managed" /><MemberType>Constructor</MemberType><AssemblyInfo><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><Parameters><Parameter Name="offsetLo" Type="System.Int32" /><Parameter Name="offsetHi" Type="System.Int32" /><Parameter Name="hEvent" Type="System.IntPtr" /><Parameter Name="ar" Type="System.IAsyncResult" /></Parameters><Docs><since version=".NET 2.0" /><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>To get the handle of a managed synchronization object that derives from the <see cref="T:System.Threading.WaitHandle" /> class, use the <see cref="P:System.Threading.WaitHandle.SafeWaitHandle" /> property to get a <see cref="T:Microsoft.Win32.SafeHandles.SafeWaitHandle" /> object, and then call the <see cref="M:System.Runtime.InteropServices.SafeHandle.DangerousGetHandle" /> method.</para><para>Your implementation of <see cref="T:System.IAsyncResult" /> provides status information on the I/O operation. Pass it to the constructor in the <paramref name="ar" /> parameter, and retrieve it later with the <see cref="P:System.Threading.Overlapped.AsyncResult" /> property. If a callback method is specified for the <see cref="Overload:System.Threading.Overlapped.Pack" /> or <see cref="Overload:System.Threading.Overlapped.UnsafePack" /> method, the callback can retrieve your <see cref="T:System.IAsyncResult" /> by unpacking the <see cref="T:System.Threading.NativeOverlapped" /> structure it receives.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Initializes a new instance of the <see cref="T:System.Threading.Overlapped" /> class with the specified file position, the handle to an event that is signaled when the I/O operation is complete, and an interface through which to return the results of the operation.</para></summary><param name="offsetLo"><attribution license="cc4" from="Microsoft" modified="false" />The low word of the file position at which to start the transfer. </param><param name="offsetHi"><attribution license="cc4" from="Microsoft" modified="false" />The high word of the file position at which to start the transfer. </param><param name="hEvent"><attribution license="cc4" from="Microsoft" modified="false" />The handle to an event that is signaled when the I/O operation is complete. </param><param name="ar"><attribution license="cc4" from="Microsoft" modified="false" />An object that implements the <see cref="T:System.IAsyncResult" /> interface and provides status information on the I/O operation. </param></Docs></Member><Member MemberName="AsyncResult"><MemberSignature Language="C#" Value="public IAsyncResult AsyncResult { get; set; }" /><MemberSignature Language="ILAsm" Value=".property instance class System.IAsyncResult AsyncResult" /><MemberType>Property</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.IAsyncResult</ReturnType></ReturnValue><Docs><value>To be added.</value><remarks>To be added.</remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Gets or sets the object that provides status information on the I/O operation.</para></summary></Docs></Member><Member MemberName="EventHandle"><MemberSignature Language="C#" Value="public int EventHandle { get; set; }" /><MemberSignature Language="ILAsm" Value=".property instance int32 EventHandle" /><MemberType>Property</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><Attributes><Attribute><AttributeName>System.Obsolete("Not 64bit compatible.  Use EventHandleIntPtr instead.")</AttributeName></Attribute></Attributes><ReturnValue><ReturnType>System.Int32</ReturnType></ReturnValue><Docs><value>To be added.</value><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>This property cannot be used on 64-bit platforms. Use the <see cref="P:System.Threading.Overlapped.EventHandleIntPtr" /> property instead.</para><para>Use the <see cref="P:System.Threading.WaitHandle.Handle" /> property to get the handle of any managed synchronization event that derives from the <see cref="T:System.Threading.WaitHandle" /> class.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Gets or sets the 32-bit integer handle to a synchronization event that is signaled when the I/O operation is complete.</para></summary></Docs></Member><Member MemberName="EventHandleIntPtr"><MemberSignature Language="C#" Value="public IntPtr EventHandleIntPtr { get; set; }" /><MemberSignature Language="ILAsm" Value=".property instance native int EventHandleIntPtr" /><MemberType>Property</MemberType><AssemblyInfo><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><Attributes><Attribute><AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName></Attribute></Attributes><ReturnValue><ReturnType>System.IntPtr</ReturnType></ReturnValue><Docs><value>To be added.</value><since version=".NET 2.0" /><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>To get the handle of a managed synchronization object that derives from the <see cref="T:System.Threading.WaitHandle" /> class, use the <see cref="P:System.Threading.WaitHandle.SafeWaitHandle" /> property to get a <see cref="T:Microsoft.Win32.SafeHandles.SafeWaitHandle" /> object, and then call the <see cref="M:System.Runtime.InteropServices.SafeHandle.DangerousGetHandle" /> method.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Gets or sets the handle to the synchronization event that is signaled when the I/O operation is complete.</para></summary></Docs></Member><Member MemberName="Free"><MemberSignature Language="C#" Value="public static void Free (System.Threading.NativeOverlapped* nativeOverlappedPtr);" /><MemberSignature Language="ILAsm" Value=".method public static hidebysig void Free(valuetype System.Threading.NativeOverlapped* nativeOverlappedPtr) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><Attributes><Attribute><AttributeName>System.CLSCompliant(false)</AttributeName></Attribute></Attributes><ReturnValue><ReturnType>System.Void</ReturnType></ReturnValue><Parameters><Parameter Name="nativeOverlappedPtr" Type="System.Threading.NativeOverlapped*" /></Parameters><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>You must call the <see cref="M:System.Threading.Overlapped.Free(System.Threading.NativeOverlapped*)" /> method exactly once on every <see cref="T:System.Threading.NativeOverlapped" /> pointer you receive from the <see cref="Overload:System.Threading.Overlapped.Pack" /> method. If you don't call the <see cref="M:System.Threading.Overlapped.Free(System.Threading.NativeOverlapped*)" /> method, you will leak memory. If you call the <see cref="M:System.Threading.Overlapped.Free(System.Threading.NativeOverlapped*)" /> method more than once, memory will be corrupted.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Frees the unmanaged memory associated with a native overlapped structure allocated by the <see cref="Overload:System.Threading.Overlapped.Pack" /> method.</para></summary><param name="nativeOverlappedPtr"><attribution license="cc4" from="Microsoft" modified="false" />A pointer to the <see cref="T:System.Threading.NativeOverlapped" /> structure to be freed.</param></Docs></Member><Member MemberName="OffsetHigh"><MemberSignature Language="C#" Value="public int OffsetHigh { get; set; }" /><MemberSignature Language="ILAsm" Value=".property instance int32 OffsetHigh" /><MemberType>Property</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Int32</ReturnType></ReturnValue><Docs><value>To be added.</value><remarks>To be added.</remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Gets or sets the high-order word of the file position at which to start the transfer. The file position is a byte offset from the start of the file.</para></summary></Docs></Member><Member MemberName="OffsetLow"><MemberSignature Language="C#" Value="public int OffsetLow { get; set; }" /><MemberSignature Language="ILAsm" Value=".property instance int32 OffsetLow" /><MemberType>Property</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Int32</ReturnType></ReturnValue><Docs><value>To be added.</value><remarks>To be added.</remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Gets or sets the low-order word of the file position at which to start the transfer. The file position is a byte offset from the start of the file.</para></summary></Docs></Member><Member MemberName="Pack"><MemberSignature Language="C#" Value="public System.Threading.NativeOverlapped* Pack (System.Threading.IOCompletionCallback iocb);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig instance valuetype System.Threading.NativeOverlapped* Pack(class System.Threading.IOCompletionCallback iocb) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><Attributes><Attribute><AttributeName>System.CLSCompliant(false)</AttributeName></Attribute><Attribute><AttributeName>System.Obsolete("Use Pack(iocb, userData) instead")</AttributeName></Attribute></Attributes><ReturnValue><ReturnType>System.Threading.NativeOverlapped*</ReturnType></ReturnValue><Parameters><Parameter Name="iocb" Type="System.Threading.IOCompletionCallback" /></Parameters><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>The unmanaged pointer returned by this method can be passed to the operating system in overlapped I/O operations. The <see cref="T:System.Threading.NativeOverlapped" /> structure is fixed in physical memory until <see cref="M:System.Threading.Overlapped.Unpack(System.Threading.NativeOverlapped*)" /> is called. </para><block subset="none" type="note"><para>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 <see cref="M:System.Threading.Overlapped.Pack(System.Threading.IOCompletionCallback,System.Object)" /> method overload, in which the runtime pins the buffer.</para></block></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Packs the current instance into a <see cref="T:System.Threading.NativeOverlapped" /> structure, specifying the delegate to be invoked when the asynchronous I/O operation is complete.</para></summary><returns><attribution license="cc4" from="Microsoft" modified="false" /><para>An unmanaged pointer to a <see cref="T:System.Threading.NativeOverlapped" /> structure. </para></returns><param name="iocb"><attribution license="cc4" from="Microsoft" modified="false" />An <see cref="T:System.Threading.IOCompletionCallback" /> delegate that represents the callback method invoked when the asynchronous I/O operation completes.</param></Docs></Member><Member MemberName="Pack"><MemberSignature Language="C#" Value="public System.Threading.NativeOverlapped* Pack (System.Threading.IOCompletionCallback iocb, object userData);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig instance valuetype System.Threading.NativeOverlapped* Pack(class System.Threading.IOCompletionCallback iocb, object userData) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><Attributes><Attribute><AttributeName>System.CLSCompliant(false)</AttributeName></Attribute><Attribute><AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName></Attribute></Attributes><ReturnValue><ReturnType>System.Threading.NativeOverlapped*</ReturnType></ReturnValue><Parameters><Parameter Name="iocb" Type="System.Threading.IOCompletionCallback" /><Parameter Name="userData" Type="System.Object" /></Parameters><Docs><since version=".NET 2.0" /><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>The unmanaged pointer returned by this method can be passed to the operating system in overlapped I/O operations. The <see cref="T:System.Threading.NativeOverlapped" /> structure is fixed in physical memory until <see cref="M:System.Threading.Overlapped.Unpack(System.Threading.NativeOverlapped*)" /> is called.</para><para>The buffer or buffers specified in <paramref name="userData" /> must be the same as those passed to the unmanaged operating system function that performs the asynchronous I/O. </para><block subset="none" type="note"><para>The runtime pins the buffer or buffers specified in <paramref name="userData" /> for the duration of the I/O operation. If the application domain is unloaded, the runtime keeps the memory pinned until the I/O operation completes.</para></block></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Packs the current instance into a <see cref="T:System.Threading.NativeOverlapped" /> structure, specifying a delegate that is invoked when the asynchronous I/O operation is complete and a managed object that serves as a buffer.</para></summary><returns><attribution license="cc4" from="Microsoft" modified="false" /><para>An unmanaged pointer to a <see cref="T:System.Threading.NativeOverlapped" /> structure. </para></returns><param name="iocb"><attribution license="cc4" from="Microsoft" modified="false" />An <see cref="T:System.Threading.IOCompletionCallback" /> delegate that represents the callback method invoked when the asynchronous I/O operation completes.</param><param name="userData"><attribution license="cc4" from="Microsoft" modified="false" />An object or array of objects representing the input or output buffer for the operation. Each object represents a buffer, for example an array of bytes.</param></Docs></Member><Member MemberName="Unpack"><MemberSignature Language="C#" Value="public static System.Threading.Overlapped Unpack (System.Threading.NativeOverlapped* nativeOverlappedPtr);" /><MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Threading.Overlapped Unpack(valuetype System.Threading.NativeOverlapped* nativeOverlappedPtr) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><Attributes><Attribute><AttributeName>System.CLSCompliant(false)</AttributeName></Attribute></Attributes><ReturnValue><ReturnType>System.Threading.Overlapped</ReturnType></ReturnValue><Parameters><Parameter Name="nativeOverlappedPtr" Type="System.Threading.NativeOverlapped*" /></Parameters><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>The <see cref="T:System.Threading.NativeOverlapped" /> structure is not freed from physical memory until you call the <see cref="M:System.Threading.Overlapped.Free(System.Threading.NativeOverlapped*)" /> method.</para></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Unpacks the specified unmanaged <see cref="T:System.Threading.NativeOverlapped" /> structure into a managed <see cref="T:System.Threading.Overlapped" /> object. </para></summary><returns><attribution license="cc4" from="Microsoft" modified="false" /><para>An <see cref="T:System.Threading.Overlapped" /> object containing the information unpacked from the native structure.</para></returns><param name="nativeOverlappedPtr"><attribution license="cc4" from="Microsoft" modified="false" />An unmanaged pointer to a <see cref="T:System.Threading.NativeOverlapped" /> structure.</param></Docs></Member><Member MemberName="UnsafePack"><MemberSignature Language="C#" Value="public System.Threading.NativeOverlapped* UnsafePack (System.Threading.IOCompletionCallback iocb);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig instance valuetype System.Threading.NativeOverlapped* UnsafePack(class System.Threading.IOCompletionCallback iocb) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>1.0.5000.0</AssemblyVersion><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><Attributes><Attribute><AttributeName>System.CLSCompliant(false)</AttributeName></Attribute><Attribute><AttributeName>System.Obsolete("Use UnsafePack(iocb, userData) instead")</AttributeName></Attribute></Attributes><ReturnValue><ReturnType>System.Threading.NativeOverlapped*</ReturnType></ReturnValue><Parameters><Parameter Name="iocb" Type="System.Threading.IOCompletionCallback" /></Parameters><Docs><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>The unmanaged pointer returned by this method can be passed to the operating system in overlapped I/O operations. The <see cref="T:System.Threading.NativeOverlapped" /> structure is fixed in physical memory until <see cref="M:System.Threading.Overlapped.Unpack(System.Threading.NativeOverlapped*)" /> is called. </para><para>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 <see cref="M:System.Threading.Overlapped.UnsafePack(System.Threading.IOCompletionCallback,System.Object)" /> method overload, in which the runtime pins the buffer. </para><block subset="none" type="note"><para>Using the <see cref="M:System.Threading.Overlapped.UnsafePack(System.Threading.IOCompletionCallback,System.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 <see cref="M:System.Threading.Overlapped.UnsafePack(System.Threading.IOCompletionCallback,System.Object)" /> method does not propagate the calling stack. Malicious code might be able to exploit this to avoid permission checks.</para></block></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Packs the current instance into a <see cref="T:System.Threading.NativeOverlapped" /> structure specifying the delegate to invoke when the asynchronous I/O operation is complete. Does not propagate the calling stack.</para></summary><returns><attribution license="cc4" from="Microsoft" modified="false" /><para>An unmanaged pointer to a <see cref="T:System.Threading.NativeOverlapped" /> structure. </para></returns><param name="iocb"><attribution license="cc4" from="Microsoft" modified="false" />An <see cref="T:System.Threading.IOCompletionCallback" /> delegate that represents the callback method invoked when the asynchronous I/O operation completes.</param></Docs></Member><Member MemberName="UnsafePack"><MemberSignature Language="C#" Value="public System.Threading.NativeOverlapped* UnsafePack (System.Threading.IOCompletionCallback iocb, object userData);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig instance valuetype System.Threading.NativeOverlapped* UnsafePack(class System.Threading.IOCompletionCallback iocb, object userData) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>2.0.0.0</AssemblyVersion><AssemblyVersion>4.0.0.0</AssemblyVersion></AssemblyInfo><Attributes><Attribute><AttributeName>System.CLSCompliant(false)</AttributeName></Attribute><Attribute><AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName></Attribute></Attributes><ReturnValue><ReturnType>System.Threading.NativeOverlapped*</ReturnType></ReturnValue><Parameters><Parameter Name="iocb" Type="System.Threading.IOCompletionCallback" /><Parameter Name="userData" Type="System.Object" /></Parameters><Docs><since version=".NET 2.0" /><remarks><attribution license="cc4" from="Microsoft" modified="false" /><para>The unmanaged pointer returned by this method can be passed to the operating system in overlapped I/O operations. The <see cref="T:System.Threading.NativeOverlapped" /> structure is fixed in physical memory until <see cref="M:System.Threading.Overlapped.Unpack(System.Threading.NativeOverlapped*)" /> is called.</para><para>The buffer or buffers specified in <paramref name="userData" /> must be the same as those passed to the unmanaged operating system function that performs the asynchronous I/O. </para><para>The runtime pins the buffer or buffers specified in <paramref name="userData" /> for the duration of the I/O operation. If the application domain is unloaded, the runtime keeps the memory pinned until the I/O operation completes.</para><block subset="none" type="note"><para>Using the <see cref="M:System.Threading.Overlapped.UnsafePack(System.Threading.IOCompletionCallback,System.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 <see cref="M:System.Threading.Overlapped.UnsafePack(System.Threading.IOCompletionCallback,System.Object)" /> method does not propagate the calling stack. Malicious code might be able to exploit this to avoid permission checks.</para></block></remarks><summary><attribution license="cc4" from="Microsoft" modified="false" /><para>Packs the current instance into a <see cref="T:System.Threading.NativeOverlapped" /> structure, specifying the delegate to invoke when the asynchronous I/O operation is complete and the managed object that serves as a buffer. Does not propagate the calling stack.</para></summary><returns><attribution license="cc4" from="Microsoft" modified="false" /><para>An unmanaged pointer to a <see cref="T:System.Threading.NativeOverlapped" /> structure. </para></returns><param name="iocb"><attribution license="cc4" from="Microsoft" modified="false" />An <see cref="T:System.Threading.IOCompletionCallback" /> delegate that represents the callback method invoked when the asynchronous I/O operation completes.</param><param name="userData"><attribution license="cc4" from="Microsoft" modified="false" />An object or array of objects representing the input or output buffer for the operation. Each object represents a buffer, for example an array of bytes.</param></Docs></Member></Members></Type>