INT 31H 0009H: Set Descriptor Access Rights
Compatibility: DPMI 0.9+
Expects: AX 0009H
BX selector
CL access rights/type byte
CH (386+) extended access rights/type byte
──────────────────────────────────────────────────────────────────
Returns: CF NC (clear) if successful; else AX = DPMI Error Code
──────────────────────────────────────────────────────────────────
Info: This modifies the access rights and/or type of the LDT descriptor
identified by the selector in BX.
CL is in this form:
┌7┬6┬5┬4┬3┬2┬1┬0┐
│p│dpl│1│c│x│w│a│
└╥┴─┴─┴╥┴╥┴╥┴╥┴╥┘ bit mask
║ ╚╦╝ ║ ║ ║ ║ ╚═► 0: 01H 1=accessed; 0=not accessed
║ ║ ║ ║ ║ ╚═══► 1: 02H 1=read/write (must be 0 in code segs)
║ ║ ║ ║ ╚═════► 2: 04H 1=expand down; 0=expand up
║ ║ ║ ╚═══════► 3: 08H 1=code seg; 0=data seg
║ ║ ╚═════════► 4: 10H must be 1
║ ╚════════════►5-6: 60H CPL (protection level) must=caller
╚═══════════════► 7: 80H 1=present; 0=absent
CH is ignored on 80286. On 386+, its bits mean:
┌7┬6┬5┬4┬3┬2┬1┬0┐
│g│b│0│v│0 0 0 0│
└╥┴╥┴╥┴╥┴─┴─┴─┴─┘ bit mask
║ ║ ║ ║ ╚═════╩═►0-3: 0fH ignored
║ ║ ║ ╚═════════► 4: 10H AVL can be 0 or 1
║ ║ ╚═══════════► 5: 20H must be 0
║ ╚═════════════► 6: 40H 1=default to 32-bit; 0=default to 16
╚═══════════════► 7: 80H 1=page granularity; 0=byte granularity
Note: There is no corresponding fn to query the current settings. Use
the LAR opcode to do so.
See Also: DPMI API
INT 2fH: Multiplex Interrupt
DOS Functions
-♦-