| Previous | Next |
| RTC_E_MEDIA_AEC | RTC_E_CLIENT_ALREADY_INITIALIZED |
RTC_E_CLIENT_NOT_INITIALIZED
What the RTC value marks: RTC_E_CLIENT_NOT_INITIALIZED
This result belongs to the RTC client lifecycle boundary area of RTC and identifies an RTC method was called before the client completed initialization.
This result carries 0x80EE0025 in the RTC interface facility 0xEE; store the result value at the first RTC callback or method boundary, before retry logic replaces it with a broader timeout or connection message.
Collect enough state to record object construction, Initialize result, event-filter setup, and calling thread order; the result evidence should demonstrate why a valid COM pointer does not imply the RTC client state machine is initialized.
Protocol and object state
| RTC area | RTC client lifecycle |
|---|---|
| Objects to correlate | IRTCClient instance, initialization generation, shutdown state, event sink, platform capability |
| Condition to prove | an RTC method was called before the client completed initialization |
| Safe corrective direction | initialize once, verify success, then create child objects and enable profiles |
RTC Client API objects are stateful COM objects; child sessions and profiles belong to the client instance that created them. A shutdown transition invalidates pending operations even if application code still holds interface pointers.
Evidence that separates the cause
- Code-specific proof: record object construction, Initialize result, event-filter setup, and calling thread order.
- Identity and target: Initialize and Shutdown call order.
- State at production: thread/apartment and event sink.
- Timing and ordering: outstanding session/profile count.
A safe diagnostic sequence
- Start from
0x80EE0025, then find the method/event pair that first exposed it. - To verify this, record object construction, Initialize result, event-filter setup, and calling thread order.
- Keep the analysis at the right boundary: a valid COM pointer does not imply the RTC client state machine is initialized.
- After you initialize once, verify success, then create child objects and enable profiles, repeat the smallest reproducer rather than restarting the entire application environment.
How to handle the result
To correct this, initialize once, verify success, then create child objects and enable profiles.
Example: A worker thread calls CreateSession before the UI thread finishes initializing RTC.
Actions that do not address this condition
- Do not hide lifecycle bugs by repeatedly constructing new clients inside a retry loop.
- Do not reuse child objects after shutdown or reinitialization.
Related RTC results
RTC_E_CLIENT_ALREADY_SHUT_DOWN | the RTC client instance has completed shutdown and cannot service the requested operation |
|---|---|
RTC_E_INVALID_OBJECT_STATE | the targeted RTC object is alive but not in a state that permits this method |
RTC_E_MAX_PENDING_OPERATIONS | the RTC client reached its cap on concurrent asynchronous operations |
Technical references
Looking for a different code? Search another status or error code.