The SimConnect_EnumerateCameraDefinitions function is used to retrieve an array of all the defined camera names.

 

Syntax
HRESULT SimConnect_EnumerateCameraDefinitions(
    HANDLE hSimConnect,
    SIMCONNECT_DATA_REQUEST_ID RequestID
    );

 

Parameters
ParameterDescriptionType
hSimConnectHandle to a SimConnect object.Integer
RequestIDSpecifies the client defined request ID.Integer

 

Return Values

The function returns an HRESULT. Possible values include, but are not limited to, those in the following table.

Return valueDescription
S_OKThe function succeeded.
E_FAILThe function failed.

 

 

Example

Request information on cameras:

HANDLE  hSimConnect = NULL;
int expectedDefReceived = -1;
int defReceived = 0;
void main()
{
    // Open SimConnect connection
    if (SUCCEEDED(SimConnect_Open(&hSimConnect, "Enumerate Camera Def Names", NULL, 0, 0, 0)))
    {
        SimConnect_EnumerateCameraDefinitions(hSimConnect, 0);
        // Call dispatch proc while we didn't receive all 
        while (expectedDefReceived != defReceived)
        {
            SimConnect_CallDispatch(hSimConnect, MyDispatchProc, NULL);
            Sleep(1);
        }
    }
}

 

User defined dispatch function:

void CALLBACK MyDispatchProc(SIMCONNECT_RECV* pData, DWORD cbData, void* pContext)
{
    switch (pData->dwID)
    {
        case SIMCONNECT_RECV_ID_CAMERA_DEFINITION_LIST:
        {
            SIMCONNECT_RECV_CAMERA_DEFINITION_LIST* list = (SIMCONNECT_RECV_CAMERA_DEFINITION_LIST*)pData;
            for (int i = 0; i < list->dwArraySize; ++i)
            {
                std::cout << list->rgData[i].Str << std::endl;
            }
            expectedDefReceived = list->dwOutOf;
            defReceived++;
            break;
        }
    }
}

 

Remarks

This function will generate a SIMCONNECT_RECV_CAMERA_DEFINITION_LIST containing an array with all the different unique camera ID strings.