637 |
637 |
638 User::LeaveIfError(SendReceive(ESignedBySuCert, TIpcArgs(&signedSuCertPckg))); |
638 User::LeaveIfError(SendReceive(ESignedBySuCert, TIpcArgs(&signedSuCertPckg))); |
639 return signedSuCert; |
639 return signedSuCert; |
640 } |
640 } |
641 |
641 |
|
642 EXPORT_C void RSisRegistryEntry::RegistryFilesL(RPointerArray<HBufC>& aRegistryFiles) |
|
643 { |
|
644 #ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK |
|
645 HBufC8* outputBuffer = HBufC8::NewLC(KDefaultBufferSize); |
|
646 TPtr8 outputPtr(outputBuffer->Des()); |
|
647 |
|
648 TInt result = SendReceive(ERegistryFiles, TIpcArgs(&outputPtr)); |
|
649 |
|
650 if (KErrOverflow == result) |
|
651 { |
|
652 TInt lenNeeded; |
|
653 TPckg<TInt> lenNeededPckg(lenNeeded); |
|
654 lenNeededPckg.Copy(*outputBuffer); |
|
655 |
|
656 // Re-allocate output buffer |
|
657 CleanupStack::PopAndDestroy(outputBuffer); |
|
658 outputBuffer = HBufC8::NewLC(lenNeeded); |
|
659 TPtr8 newOutputPtr(outputBuffer->Des()); |
|
660 |
|
661 result = SendReceive(ERegistryFiles, TIpcArgs(&newOutputPtr)); |
|
662 } |
|
663 User::LeaveIfError(result); |
|
664 |
|
665 // Reading the list of files from the buffer |
|
666 RDesReadStream outputStream(*outputBuffer); |
|
667 CleanupClosePushL(outputStream); |
|
668 InternalizePointerArrayL(aRegistryFiles, outputStream); |
|
669 |
|
670 CleanupStack::PopAndDestroy(2, outputBuffer); // outputStream |
|
671 #else |
|
672 // There is API is not currently supported with USIF |
|
673 User::Leave(KErrNotSupported); |
|
674 aRegistryFiles.Close(); // To remove the compiler warning: variable/argument 'aRegistryFiles' is not used in function |
|
675 #endif |
|
676 } |