DMA_Descriptor_Struc


include vdmad.inc

DMA_Descriptor_Struc STRUC
DDS_size      dd    ? ; see below
DDS_linear    dd    ? ; see below
DDS_seg       dw    ? ; see below
DDS_bufferID  dw    ? ; see below
DDS_physical  dd    ? ; see below
DMA_Descriptor_Struc ENDS

Describes the DMA region.

DDS_size

Size in bytes of the of the DMA region.

DDS_linear

Linear address of the DMA region.

DDS_seg

Segment or selector of the DMA region.

DDS_bufferID

This field is filled in by the Request DMA Buffer service and possibly the Lock DMA Region service.

DDS_physical

This field is filled in by the Lock DMA Region and Request DMA Buffer services.

DDS_linear and DDS_seg specify a 48-bit segment:offset pointer for virtual 8086 mode, or a selector:offset pointer for protected mode programs. Note that if the linear address has already been determined then you may set the DDS_seg to 0 and place the linear address in the linear offset field. It is possible to specify 32-bit offsets, even with real mode segment values; this makes it much easier for device drivers to split up DMA transfers, by simply modifying the offset without having to modify the segment/selector.