Note: Due to the unpredictable nature of hardware configuration changes, an unpadded, basic system would return a configuration that can change between a GetCount and subsequent objects retrieval.
As a plug-in designer, you are responsible to address this by returning adequate values that make sense as a whole.
To guide you, Sink Devices interface is used for retrieval and data copy in a tight loop over a single thread at once. Host will retrieve the count, followed by the Name (GetName) and DeviceID (GetDeviceID), in the order the compiler sees fit. Data is expected to survive for the amount of time this tight loop exists.
for (int i = 0; i < count; ++i)
{
result.emplace_back(
);
}
A proposal is to use GetCount to internally retrieve the device names and IDs, make a static internal cache, and then return name and device ID based on this cache.
You can also spawn an event listener or an update thread, and ensure the data is up to date when the calls come in, and block updates until all calls are accounted for.
|