How to complete requests

This document describes how to complete a request for a service.

If you are a service provider, you can complete a request using either User::RequestComplete(), or RThread::RequestComplete(), passing the request status object and the service provider's return code, a value other than KRequestPending. This results in the active object's iStatus member being set to the return code value and a signal that the request is complete.

The current thread calls User::RequestComplete() to complete a request that originated in the current thread.

The current thread calls RThread::RequestComplete() to complete a request that originated in a different thread, i.e. the thread represented by the RThread object. Note that in this case, the target thread must be in the same process as the current thread. Any attempt to complete a request on a thread in another process is a security violation, resulting in a KERN-EXEC 46 panic.