Transferring data between a requesting program and a hardware device. An
program requests a pre-allocation of non-pageable memory. The program
requests a transfer via a direct memory access (DMA) from the hardware
device into the non-pageable memory. The requesting program is notified
when the DMA is complete. The requesting program reads the data from the
non-pageable memory. A determination may be made whether a range of
addresses specified in the DMA request is within the pre-allocated range
of non-pageable memory. If the range of addresses is within the
pre-allocated non-pageable memory, the data transfer involves fewer
transfers between system memory and the CPU than if the range of
addresses is outside the pre-allocated non-pageable memory.