@msdn=http://search.microsoft.com/search/results.aspx?qu=$$$ @pinvoke=http://pinvoke.net/$$$.htm Summary: The GetOverlappedResult API !!!!C# Signature: [DllImport("kernel32.dll", SetLastError = true)] static extern bool GetOverlappedResult(IntPtr hFile, [In] ref System.Threading.NativeOverlapped lpOverlapped, out uint lpNumberOfBytesTransferred, bool bWait); !!!!VB.Net Signature: <DllImport("kernel32.dll", SetLastError := True)> _ Private Shared Function GetOverlappedResult(ByVal hFile As IntPtr, <[In]()> ByRef lpOverlapped As System.Threading.NativeOverlapped, ByRef lpNumberOfBytesTransferred As UInteger, ByVal bWait As Boolean) As Boolean End Function !!!!User-Defined Types: None. !!!!Notes: None. !!!!Tips & Tricks: Warning! GetOverlappedResult writes to the address of the buffer specified in the ORIGINAL OPERATION (ie/ ReadFile or WriteFile). .NET may move the address of the buffer before GetOverlappedResult returns, resulting in a buffer overflow. Use AllocHGlobal and FreeHGlobal or otherwise ensure the buffer is pinned between the two calls. !!!!Sample Code: public static bool WriteUSB(IntPtr hDevice, byte[] pBuffer, uint dwBytesToWrite, ref uint lpNumberOfBytesWritten) { NativeOverlapped lpOverlapped = new NativeOverlapped(); if (!WriteFile(hDevice, pBuffer, dwBytesToWrite, ref lpNumberOfBytesWritten, ref lpOverlapped) && Marshal.GetLastWin32Error() == ERROR_IO_PENDING) { return GetOverlappedResult(hDevice, ref lpOverlapped, ref lpNumberOfBytesWritten, true); } return false; } !!!!Alternative Managed API: Do you know one? Please contribute it! Documentation: GetOverlappedResult@msdn on MSDN
Edit kernel32.getoverl...
You do not have permission to change this page. If you feel this is in error, please send feedback with the contact link on the main page.