a) It is the caller's
responsibility to allocate and initialize a descriptor for access to the
memory.
b) This function should
only be used by clients that absolutely require direct access to a memory
mapped device at physical addresses above 1 MB. Clients should not use
this function to access memory below the 1 MB boundary (the real mode addressable
region). See also DPMI functions 0002h.
c) When this function
is called, the DPMI host either creates page table entries that directly
map the physical addresses requested and returns the linear address of
the created page table entries, or else just returns the linear address
of the memory region that is already used to map the requested device.
For example, if the client attempts to map a Weitek coprocessor and the
host already has a linear region set up to map the Weitek chip and virtualize
it, it would simply return the linear address of the existing region. If
the host does not virtualize the Weitek chip, it would create 16 page table
entries that map the 64 KB Weitek address space and return a linear address
corresponding to the new page table entries.
d) If the host is not
virtualizing the device, it will disable any memory caching on the mapped
pages; in particular, on the 80486+ the host will set the PCD (page cache
disable) bit in the page table entries.
e) Programs and device
drivers which need to perform DMA I/O to physical addresses in a virtualized
hardware environment should use the Virtual DMA Services.