Я получил пример кода с www.lvr.com, показывающий, как использовать WriteFile () и ReadFile () для записи / чтения с устройства USB. В этом примере Ян использует неуправляемую память в качестве параметров для WriteFile () и ReadFile (). Однако, похоже, что функции работают нормально, просто передавая эквиваленты управляемой памяти.
Public managedOverlapped As System.Threading.NativeOverlapped
Public nonManagedOverlapped As IntPtr = Marshal.AllocHGlobal(Marshal.SizeOf(managedOverlapped))
Marshal.StructureToPtr(managedOverlapped, nonManagedOverlapped, False)
Public managedBuffer(64) As Byte
Public nonManagedBuffer As IntPtr = Marshal.AllocHGlobal(64)
api_status = ReadFile(readHandle, nonManagedBuffer, 64, BytesSucceed, nonManagedOverlapped)
работает так же хорошо, как:
api_status = ReadFile(readHandle, managedBuffer, 64, BytesSucceed, managedOverlapped)
Когда необходимо использовать неуправляемую память в WriteFile / ReadFile или вообще в .Net?