How to iterate the plugins from Hybrid UXP C++ DLL

Hi,
I am trying to iterate through the plugin list.
Q1. AllocatePluginList returns with noErr but the “sPStringPoolRef” is still NULL.
Q2. NextPlugin returns with noErr but “pluginRef” is still NULL.
Any sample code will help! Appreciate! :blush:

sSPBasic = spBasic;
gPlugInRef = (SPPluginRef)(filterRecord->plugInRef);

err = spBasic->AcquireSuite(kSPPluginsSuite,
    kSPPluginsSuiteVersion, (const void**)&sSPPlugins);

SPPluginListRef pluginList = nullptr;
SPStringPoolRef sPStringPoolRef = nullptr;
err = sSPPlugins->AllocatePluginList(sPStringPoolRef, &pluginList);
if (pluginList != nullptr && err == noErr)
{
    SPPluginListIteratorRef iterator = nullptr;
    err = sSPPlugins->NewPluginListIterator(pluginList, &iterator);
    if (err == noErr)
    {
        SPPluginRef pluginRef = nullptr;
        while (sSPPlugins->NextPlugin(iterator, &pluginRef) == noErr)
        {
            if (pluginRef != nullptr)
            {
                const char* name = nullptr;
                if (pluginRef != nullptr)
                {
                    sSPPlugins->GetPluginName(pluginRef, &name);
                    if (name != nullptr)
                    {
                        LogPrint(L"Plugin Name: %s", name);
                    }
                }
            }
        }
        sSPPlugins->DeletePluginListIterator(iterator);
    }
}