DOS/32 Advanced DOS Extender - Programmer's Reference


2.13 - DPMI function 000Fh - Set Multiple Descriptors

Copies one or more descriptors from a client buffer into the descriptor table.

 

In:

AX = 000Fh
CX = number of descriptors to copy
ES:EDI= selector:offset of a buffer in the following format:

 Offset  Length  Contents
 00h  2 Selector #1 (set by client)
 02h  8  Descriptor #1 (returned by host)
 0Ah  2  Selector #2 (set by client)
 0Ch  8  Descriptor #2 (returned by host)
 . . . . . .  . . .

Out:

if successful:
CF clear

if failed:
CF set
AX = error code
CX = number of descriptors successfully copied

8021h - invalid value (access rights/type bytes invalid)
8022h - invalid selector
8025h - invalid linear address (descriptor references a linear address range outside that allowed for DPMI clients)

Notes:

a) If an error occurs because of an invalid selector or descriptor, the function returns the number of descriptors which were successfully copied in CX. All of the descriptors which were copied prior to the one that failed are valid. All descriptors from the invalid entry to the end of the table are not updated.

b) The descriptor's access rights/type byte (byte 5) follows the same format and restrictions as the access rights/type parameter (in CL) for the Set Descriptor Access Rights DPMI function 0009h, and the descriptor's extended access rights/type byte (byte 6) follows the same format and restrictions as the extended access rights/type parameter (in CH) for the same function, except the low-order 4 bits (marked "reserved") are used to set the upper 4 bits of the descriptor's limit.

c) DOS/32 Advanced DPMI and DPMI 1.0 hosts will reload any segment registers which contain the selector specified in register BX.

 


Copyright Supernar Systems, Ltd. 1996-2005
All Rights Reserved.