Call With
AX = 0009H
BX = selector
CL = access rights/type byte
CH = 80386 extended access rights/type byte
Returns
if function successful
Carry flag = clear
if function unsuccessful
Carry flag = set
AX = error code
8021H | invalid value (access rights/type bytes invalid) |
8022H | invalid selector |
8025H | invalid linear address (changing the access rights/type bytes would cause the descriptor to reference a linear address range outside that allowed for DPMI clients.) |
+---+---+---+---+---+---+---+---+ | P | DPL | 1 |C/D|E/C|W/R| A | +-+-+---+---+-+-+-+-+-+-+-+-+-+-+ | | | | | | | | | | | | | +- 0=not accessed, 1=accessed | | | | | +----- data: 0=read, 1=>read/write | | | | | code: must be 1 (readable) | | | | +--------- data: 0=expand-up, 1=expand-down | | | | code: must be 0 (non-conforming) | | | +------------- 0=data, 1=code | | +----------------- must be 1 | +----------------------- must equal caller's CPL +----------------------------- 0=absent, 1=presentIf the Present bit is not set in the descriptor, the DPMI host allows any values except in the DPL and "must be 1" bit fields.
+---+---+---+---+---+---+---+---+ | G |B/D| 0 |Avl| Reserved | +-+-+-+-+-+-+-+-+---+---+---+---+ | | | | | | | | | +-- ignored | | | +------------ can be 0 or 1 | | +---------------- must be 0 | +-------------------- 0=default 16-bit, 1=default 32-bit +------------------------ 0=byte granular, 1=page granular