I/O Transfer Types

Windows supports the following three data transfer mechanisms, also called I/O transfer types:

  • Buffered I/O operates on a copy of the user’s data.

  • Direct I/O directly accesses the user’s data through memory descriptor lists (MDLs) and kernel-mode pointers.

  • Neither buffered nor direct I/O—called "neither I/O” or METHOD_NEITHER—accesses the user’s data through user-mode pointers.

WDF drivers can support any of the three I/O types. However, drivers should avoid the use of neither I/O because of inherent difficulties in properly validating and using user-mode pointers.

For device I/O control requests, the I/O control code itself includes the transfer type, so a device’s IOCTLs can use any of the three transfer types and all of the IOCTLs ...

Get Developing Drivers with the Windows® Driver Foundation now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.