# ctaGetParmIdsEx

Returns the parameter IDs and service ID for the named service and service manager that are available on a particular Natural Access Server.

#### Prototype

DWORD ctaGetParmIdsEx ( CTAHD ctahd, char *svcname, char *svcmgrname, unsigned *retsvcid, unsigned *buffer, unsigned maxsize, unsigned *retsize)

Argument | Description
ctahd | Context handle that specifies the server on which commands are executed. ctahd can be a void context handle.
svcname | Pointer to the name of the service for which parameter IDs and service IDs are requested.
svcmgrname | Pointer to the associated service manager name (optional).
retsvcid | Pointer to the returned service ID or NULL.
buffer | Pointer to the returned array of parameter IDs.
maxsize | Number of available entries in the buffer.
retsize | Pointer to the returned value of the number of entries used in the buffer.

#### Return values

Return value | Description
SUCCESS |
CTAERR_BAD_ARGUMENT | svcname, buffer, or retsize is NULL.
CTAERR_BAD_SIZE | Size of the buffer is too small.
CTAERR_NOT_FOUND | Service is not available to the Natural Access server.
CTAERR_SVR_COMM | Application is unable to communicate with the server.

#### Details

ctaGetParmIdsEx retrieves all defined parameter IDs for a given named service. There can be different service managers associated with a service interface, and it is optional whether you specify the associated service manager.

The parameter IDs are defined in the various service-specific header files of Natural Access.

If retsvcid is not NULL, the service ID value for the named service is returned.

The service names passed to ctaGetParmIdsEx must display in the list of services known to the specified Natural Access server. The list of services is included in the [ctasys] section of the Natural Access configuration file, cta.cfg. Use ctahd to indicate which Natural Access server to process this command.

ctahd can be a void context handle. A void context handle refers only to the server on which the commands are executed and not to any real context object. Each server has a unique void context handle. If the void context handle is equal to NULL_CTAHD, it refers to the default server.

Refer to Managing parameters for more information.

#### See also

ctaGetEventSources, ctaGetParmIds, ctaGetParmInfo, ctaGetParms, ctaLoadParameterFile, ctaRefreshParms, ctaSetEventSources

#### Example

static CTA_SERVICE_DESC pServicesWithNcc[] = /* for ctaOpenServices */
{ { {"ADI", NULL}, { 0 }, { 0 }, { 0 } },
{ {"NCC", NULL}, { 0 }, { 0 }, { 0 } },
{ {"SWI", "SWIMGR"}, { 0 }, { 0 }, { 0 } },
{ {"VCE", "VCEMGR"}, { 0 }, { 0 }, { 0 } }
};
static CTA_SERVICE_DESC* pServices = pServicesWithNcc;
static unsigned SizeofServices = sizeof(pServicesWithNcc);
void ShowDefaultParm( CTAHD ctahd, char *name )
{
CTAHD voidHandle;
unsigned i;
unsigned ret;
CTA_PARM_INFO info;
unsigned i, j;
/* Get the void context handle for the remote Natural Access
* server running on host NMS001
*/
ctaCreateContext( NULL_CTAQUEUEHD, 0, "//NMS001", &voidHandle );
for( i = 0; i < SizeofServices/sizeof(CTA_SERVICE_DESC); i++)
{
unsigned ids[100];
unsigned numids = 0;
unsigned serviceID = 0;
ctaGetParmIdsEx( voidHandle,
pServices[i].name.svcname,
pServices[i].name.svcmgrname,
&serviceID,
ids, 100, &numids );
for (j=0; j < numids; j++)
{
/* Display each of the parameter structure names */
ctaGetParmInfoEx( ctahd, ids[j], NULL, 0, &info );
printf( "%s\n", info.structname );
}
}
}