WOW64 机制使得Win32 用户模式应用程序可以在64-bit windows 上运行。在Win32 函数调用转移到64-bit 内核之前,截获其调用并将指针精度类型的参数转化为恰当的固定精度的类型。这种转换叫做thunking,除了传递给DeviceIoControl 的数据缓冲外,其自动应用在所有的Win32 函数上。这些缓冲区的内容是通过InputBuffer和OutputBuffer 参数指定的,其并没有被thunk,因为它们的结构是驱动相关的。
尽管缓冲区内容没有被thunk,缓冲区指针被转换为64-bit 指针。
用户模式应用程序调用DeviceIoControl 函数来直接向特定的内核模式驱动发送一个I/O 请求。这个请求包含一个I/O 控制码(IOCTL)或者文件系统控制码(FSCTL)和指向输入和输出缓冲区的指针。这些数据缓冲区的结构是由IOCTL 或者 FSCTL 指定的,另外,这IOCTL 和 FSCTL 是由内核模式驱动定义的。因为缓冲区格式是任意的,只有定义它的驱动知道它的结构,而WOW64并不知道它的结构,所以thunk 这些数据的任务就留给了驱动。
驱动程序满足下面的要求时将支持32-bit I/O。