Returns a pointer to the adapter object representing the DMA channel to which the driver's device is connected or representing the driver's busmaster adapter, together with the maximum number of map registers the driver can specify for each DMA transfer, given the input device description.
"Connects" a device object to an adapter object and calls a driver-supplied AdapterControl routine to carry out an I/O operation through the system DMA controller or a busmaster adapter as soon as the appropriate DMA channel is available and/or any necessary map registers are available. (This routine reserves exclusive access to a DMA channel and/or map registers for the specified device.)
Returns a (possibly invalid) virtual address for a buffer described by a given MDL; the returned address, used as an index to a physical address entry in the MDL, can be input to IoMapTransfer.
ADDRESS_AND_SIZE_TO_SPAN_PAGES
Returns the number of pages required to contain a given virtual address and size in bytes. (This macro can be used to determine whether a given transfer request must be split into partial transfers.)
Sets up map registers (up to the maximum returned by HalGetAdapter) for the given adapter object (already allocated by a call to IoAllocateAdapterChannel) to map a transfer from a locked-down buffer specified by an MDL, starting address, and length. Returns the logical address of the mapped region and, for busmaster devices that support scatter/gather, the number of bytes mapped.
Forces any data remaining in a busmaster adapter's or the system DMA controller's internal buffers to be written into memory or to the device, if the caller currently "owns" the adapter object, or terminates a transfer in progress if the driver detects a time-out or other error condition.
Flushes the memory region described by a given MDL from all processors' caches into memory.
Releases an adapter object, representing a system DMA channel, and optionally releases map registers, if any were allocated.
Releases a set of map registers, saved from a call to IoAllocateAdapterChannel, after the registers have been used in one or more calls to IoMapTransfer and the busmaster DMA transfer is complete.
Returns how many bytes remain to be transferred during the current system DMA operation (autoinitialize mode), given a pointer to the adapter object.
Allocates and maps a logically contiguous region of memory that is simultaneously accessible both from the processor and from a device, given access to an adapter object, the requested length of the memory region to allocate, and access to variables where the starting logical and virtual addresses of the allocated region are returned. This routine returns TRUE if the requested length was allocated.
Releases an allocated common buffer and unmaps it, given access to the adapter object, the length, and the starting logical and virtual addresses of the region to be freed. (Arguments must match those passed in the preceding call to HalAllocateCommonBuffer.)
Returns the processor's data cache-line boundary in bytes, useful for allocating buffers and sizing transfers to prevent cache tearing during DMA transfers.