Windowsでは、I/Oリクエストパケット(IRP)と呼ばれる構造体を使ってカーネルモードデバイスドライバと通信する。I/Oリクエストの処理には二つの構造体が必要不可欠である。ひとつは、I/Oリクエストパケット自体で、もうひとつはIO_STACK_LOCATION構造体である。 IRP IRPの構造を下図に示す。 MdlAddress(PMDL)は、このリクエストに対応するユーザモードバッファを記述するメモリデスクリプタリスト(MDL)のアドレスである。I/Oマネージャは、最上位のデバイスオブジェクトのフラグにDO_DIRECT_IOが含まれていたら、IRP_MJ_READ、IRP_MJ_WRITEリクエストのためにこのMDLを作成する。また、コントロールコードにMETHOD_IN_DIRECT、METHOD_OUT_DIRECTが含まれていたら、IRP_MJ_DEVICE_CONTRO