Set Descriptor

Copies the contents of an 8-byte buffer into the LDT
descriptor for the specified selector.

Call With:

AX = 000CH
BX = selector
ES:(E)DI= selector:offset of 8-byte buffer containing
descriptor

Returns:

if function successful
Carry flag= clear

if function unsuccessful
Carry flag= set
AX = error code
8021H invalid value (access rights/type byte
invalid)
8022H invalid selector
8025H invalid linear address (descriptor
references a linear address range outside
that allowed for DPMI clients)

Notes:

o 32-bit programs must use ES:EDI to point to the buffer.
16-bit programs should use ES:DI.
o 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 R
ights function (Int 31H Fn 0009H). On 80386 (or later)
machines, 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.
o If the descriptor's present bit is not set, then the only
error checking is that the client's CPL must be equal to
the descriptor's DPL field and the "must be 1" bit in the
descriptor's byte 5 must be set.
o A DPMI 1.0 host will reload any segment register which
contains a selector specified in register BX. It is
suggested that DPMI 0.9 hosts also implement this.

o Refer to the rules for descriptor usage in Appendix D.