void CSetClientUid::PerformAction(TRequestStatus& aStatus) { switch (iState) { case EMain: { RProcess thisProcess; thisProcess.Open(thisProcess.Id()); CleanupClosePushL(thisProcess); TUidType type = thisProcess.Type(); TUidType newType(type[0], type[1], iUid); thisProcess.SetType(newType); CleanupStack::PopAndDestroy(); // thisProcess iState = EFinished; TRequestStatus* status = &aStatus; User::RequestComplete(status, KErrNone); break; } case EFinished: { TRequestStatus* status = &aStatus; User::RequestComplete(status, aStatus.Int()); if (aStatus == iExpectedResult) { iResult = ETrue; } else { iResult = EFalse; } iActionState = EPostrequisite; } break; } }