| Previous | Next |
| UI_E_INVALID_OUTPUT | UI_E_DIFFERENT_OWNER |
UI_E_BOOLEAN_EXPECTED
The scope of UI_E_BOOLEAN_EXPECTED is Windows Animation Manager: a callback used a success HRESULT other than S_OK or S_FALSE where a Boolean decision was required. Preserve 0x802A0008 beside the returning call before cleanup or retry creates a more generic secondary failure.
Read the condition first
Some Windows Animation callbacks encode a Boolean answer in the HRESULT itself. Returning another success code is not “close enough”; it makes the decision ambiguous even though FAILED(hr) is false.
Keep neighboring conditions separate
UI_E_INVALID_OUTPUT concerns out-parameter data; this code concerns the callback return value itself.
Do not replace the HRESULT test with SUCCEEDED(hr) when the contract requires S_OK versus S_FALSE.
Incident record
- Callback method and returned HRESULT.
- Branch intended to mean true or false.
- Wrapper normalization behavior.
- Caller handling of S_OK and S_FALSE.
Reproduce without destroying evidence
The investigation should change one variable at a time and keep the original failing sample.
- First: Return exactly S_OK for true and S_FALSE for false.
- Next: Map internal status separately from the Boolean result.
- Then: Add tests for both decisions and one real failure.
- Finally: Inspect language bindings that coerce arbitrary success values.
Three useful controls
- Fresh storyboard or animation object: a changed result separates retained object, connection, path, host, or device state from the original input. Hold constant: keep the timeline, transitions, and manager version fixed.
- Reduced failing operation: If this result follows the reduced step, the rejecting transition is localized. Hold constant: retain callback method and returned hresult and remove only unrelated work.
- Targeted corrective control: Use this as a diagnostic branch rather than a blanket workaround: return exactly S_OK for true and S_FALSE for false. Hold constant: keep the original failing sample available for the final regression test.
Definition of done
Closure requires every callback branch returns one of the two documented Boolean HRESULTs or a genuine failure; then repeat the next lifecycle operation to detect stale state.
Technical references
The references below define the API family or storage/protocol behavior used to interpret this result.
Looking for a different code? Search another status or error code.