| Previous | Next |
| STATUS_ABIOS_INVALID_SELECTOR | STATUS_INVALID_LDT_SIZE |
STATUS_NO_LDT
An LDT operation was directed at a process with no LDT
STATUS_NO_LDT is tied to x86 segmented-addressing compatibility state. The Local Descriptor Table contains segment descriptors addressed by selectors. Microsoft exposes descriptor layout through LDT_ENTRY and selector-inspection routines, but modern native applications normally use a flat address-space model and do not require an application-managed LDT.
The current NTSTATUS definition says the attempted operation was to change the LDT size for a process that has no LDT. That is a state mismatch, not evidence that the table is merely empty or too small. The distinction is useful in NTVDM, WoW, debugger, emulator, or other compatibility code that tracks segmented execution. NTVDM itself is a 32-bit Windows feature and is not included with 64-bit Windows.
Log the target process architecture, compatibility subsystem, selector operation, and the point at which an LDT was expected to have been created. Verify that the handle or process identity has not been mixed with a native process. Do not respond by fabricating descriptors or retrying the size operation: first establish whether this process should own an LDT under the compatibility model. On a 64-bit system, also confirm that the intended 16-bit execution environment exists at all.
What to inspect
- Identify the target process and whether it is actually running under a segmented compatibility subsystem.
- Distinguish “no LDT object/state” from an invalid LDT size or descriptor entry.
- Check OS architecture before assuming NTVDM or a 16-bit compatibility path is available.
References
- Microsoft: LDT_ENTRY
- Microsoft: GetThreadSelectorEntry
- Microsoft: NTVDM and 16-bit app support
- Microsoft: Wow64GetThreadSelectorEntry
- Microsoft Open Specifications: NTSTATUS values
Looking for a different code? Search another status or error code.
