| Previous | Next |
| D2DERR_INVALID_GLYPH_IMAGE | JSCRIPT_E_CANTEXECUTE |
ERROR_IO_PREEMPTED
preempted user-mode SD-bus I/O identifies a scoped API or runtime boundary rather than a general machine failure. The facility identifies the user-mode SD bus. A higher-priority operation interrupted the current request, so the caller must preserve request state and resume or reissue it according to the owning API rather than treating the partial attempt as final completion.
Read the status in context
The declared return type and source header determine the relevant status namespace.
Preemption is not a generic timeout and not proof of media failure. The key distinction is that another operation won scheduling priority and the original request may retain resumable state. Keep the numeric value, declared return type, and first returning operation together with ERROR_IO_PREEMPTED; the same integer can belong to a different status namespace in another API.
Diagnostic facts
| Capture | Diagnostic value |
|---|---|
| SD device, request opcode, block range, buffer, priority, cancellation token, and completion sequence. | Identifies the concrete object and operation associated with preempted user-mode SD-bus I/O. |
| Whether any bytes or blocks were committed before preemption and which state must be resumed. | Separates argument or lifecycle state from a lower-layer provider failure. |
| Higher-priority request that displaced the operation, including power, media-change, or management activity. | Creates a stable before-and-after comparison. |
| Device generation/removal state and the first completion event from the SD stack. | Shows whether this condition is the first result or a translated summary. |
Preserve whether any bytes or blocks were committed before preemption and which state must be resumed before reinstalling, rebooting, clearing state, or substituting another device or provider. A success observed only after such a change is useful comparison data, but it does not identify the original cause.
Verification path
- Issue the same operation without competing high-priority traffic on a disposable card. Record the first returned status and any state transition observed.
- Repeat with a small aligned transfer to determine whether preemption depends on request duration. Treat a changed result as a new boundary rather than automatic resolution.
- Resume once using the documented continuation path and verify data boundaries before any second retry. Repeat the original supported operation so the check remains tied to the same API boundary.
What the result does not prove
| Observed comparison | Next conclusion to test |
|---|---|
| The first control changes the result | Concentrate on the variable isolated by this check: Issue the same operation without competing high-priority traffic on a disposable card. |
| The second comparison reproduces the same first status | Preserve lower-layer provider, driver, service, or runtime evidence before editing application data. The second controlled check was: Repeat with a small aligned transfer to determine whether preemption depends on request duration. |
| A different status appears after the bounded change | The operation moved to another boundary after the third controlled check. That check was: Resume once using the documented continuation path and verify data boundaries before any second retry. Retain both results and interpret the replacement through its own API contract. |
Closing the incident
Targeted correction. Honor the resume/retry contract, make writes idempotent at block boundaries, and coordinate high-priority management requests instead of increasing timeout blindly. Modify only the object, argument, policy, provider, or lifecycle state identified by the collected evidence.
Acceptance criterion. The original transfer resumes or restarts without duplicate writes, data verifies byte-for-byte, and repeated priority contention has a bounded deterministic outcome. Re-run the original operation that produced this condition under its original identity and supported configuration, then keep one negative control that still produces the expected neighboring outcome.
Technical references
References for ERROR_IO_PREEMPTED on the deployed platform version.
- Microsoft Open Specifications: HRESULT values — defines the status namespace used.
- Microsoft: HRESULT facility extraction — documents the API or lifecycle boundary behind this condition.
- Microsoft: HRESULT facility codes — provides ABI, implementation, or protocol context.
- Microsoft: SD card driver stack — supports the portability and verification limits.
Looking for a different code? Search another status or error code.
