Custom AudioObjectPropertySelector on audio plugins to get the data

I successfully retrieved strings, arrays, and other data through a custom AudioObjectPropertySelector, but I can only get fixed returns. Whenever I modify it to use dynamic data, it results in an error. Below is my code.

    case kPlugIn_CustomPropertyID:
        {
            *((CFStringRef*)outData) = CFSTR("qin@@@123");
            *outDataSize = sizeof(CFStringRef);
        }
        break;
    case kPlugIn_ContainDic:
        {
            CFMutableDictionaryRef mutableDic1 = CFDictionaryCreateMutable(kCFAllocatorDefault,
                                                   0,
                                                   &kCFTypeDictionaryKeyCallBacks,
                                                   &kCFTypeDictionaryValueCallBacks);
            CFDictionarySetValue(mutableDic1, CFSTR("xingming"), CFSTR("qinmu"));
            *((CFDictionaryRef*)outData) = mutableDic1;
            *outDataSize = sizeof(CFPropertyListRef);
            // *((CFPropertyListRef*)outData) = mutableDic;

        }
        break;
    case kPlugIn_ContainArray:
        {
            CFMutableArrayRef mutableArray = CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks);
            CFArrayAppendValue(mutableArray, CFSTR("Hello"));
            CFArrayAppendValue(mutableArray, CFSTR("World"));

            *((CFArrayRef*)outData) = mutableArray;
            *outDataSize = sizeof(CFArrayRef);
        }
        break;

These are fixed returns, and there are no issues when I retrieve the data.

When I change the return data in kPlugIn_ContainDic to the following, the first time I restart the CoreAudio service and retrieve the data, it works fine. However, when I attempt to retrieve it again, it results in an error:

case kPlugIn_ContainDic:
{
    *outDataSize = sizeof(CFPropertyListRef);
    *((CFPropertyListRef*)outData) = mutableDic;
}
break;

error code:
HALC_ShellDevice::CreateIOContextDescription: failed to get a description from the server
HAL_HardwarePlugIn_ObjectGetPropertyData: no object
HALPlugIn::ObjectGetPropertyData: got an error from the plug-in routine, Error: 560947818 (!obj)

The declaration and usage of mutableDic are as follows:

static CFMutableDictionaryRef mutableDic;


static OSStatus	BlackHole_Initialize(AudioServerPlugInDriverRef inDriver, AudioServerPlugInHostRef inHost)
{
	OSStatus theAnswer = 0;
	gPlugIn_Host = inHost;
    if (mutableDic == NULL){
        mutableDic = CFDictionaryCreateMutable(kCFAllocatorDefault,
                                               100,
                                               &kCFTypeDictionaryKeyCallBacks,
                                               &kCFTypeDictionaryValueCallBacks);
    }

}


static OSStatus	BlackHole_AddDeviceClient(AudioServerPlugInDriverRef inDriver, AudioObjectID inDeviceObjectID, const AudioServerPlugInClientInfo* inClientInfo)
{
    CFStringRef string = CFStringCreateWithFormat(kCFAllocatorDefault, NULL, CFSTR("%u"), inClientInfo->mClientID);
    CFMutableDictionaryRef dic = CFDictionaryCreateMutable(kCFAllocatorDefault,
                                           0,
                                           &kCFTypeDictionaryKeyCallBacks,
                                           &kCFTypeDictionaryValueCallBacks);
    CFDictionarySetValue(dic, CFSTR("clientID"), string);
    CFDictionarySetValue(dic, CFSTR("bundleID"), inClientInfo->mBundleID);
    CFDictionarySetValue(mutableDic, string, dic);
}

Can someone tell me why

Custom AudioObjectPropertySelector on audio plugins to get the data
 
 
Q