Pointers
GDT_RLR locates the GDT descriptor for the RLR segment.
┌─────────┬──────┬──────┬────┬─────────────────────────────────────┐│Field │Offset│Length│Type│Description │ │Name │ │ │ │ │ ├─────────┼──────┼──────┼────┼─────────────────────────────────────┤ │rlr_next │+0 │2 │W │16 bit offset to next RLR. 0 if end │ ├─────────┼──────┼──────┼────┼─────────────────────────────────────┤ │rlr_prev │+2 │2 │W │16 bit offset to prev RLR. 0 if SFT │ ├─────────┼──────┼──────┼────┼─────────────────────────────────────┤ │rlr_fba │+4 │4 │D │offset of first byte of locked region│ ├─────────┼──────┼──────┼────┼─────────────────────────────────────┤ │rlr_lba │+8 │4 │D │offset of last byte of locked region │ ├─────────┼──────┼──────┼────┼─────────────────────────────────────┤ │rlr_sptr │+c │4 │D │16:16 FAR pointer to SFT │ ├─────────┼──────┼──────┼────┼─────────────────────────────────────┤ │rlr_UID │+10 │2 │W │lock issuer's user ID │ ├─────────┼──────┼──────┼────┼─────────────────────────────────────┤ │rlr_PID │+12 │2 │W │lock issuer's process ID │ ├─────────┼──────┼──────┼────┼─────────────────────────────────────┤ │rlr_PDB │+14 │2 │W │lock issuer's PDB, 0 for non-3xBox │ ├─────────┼──────┼──────┼────┼─────────────────────────────────────┤ │rlr_flags│+16 │1 │B │flags │ └─────────┴──────┴──────┴────┴─────────────────────────────────────┘
rlr_flags flag definitions
┌───────────────┬────────┬───────────┐ │Name │Bit Mask│Description│ ├───────────────┼────────┼───────────┤ │RLR_EXCLUSIVE │0 │ │ ├───────────────┼────────┼───────────┤ │RLR_SHARED │1 │ │ ├───────────────┼────────┼───────────┤ │RLR_WAITING │2 │ │ ├───────────────┼────────┼───────────┤ │RLR_CANCELPLOCK│4 │ │ └───────────────┴────────┴───────────┘