IProviderAdmin::GetProviderTable

The IProviderAdmin::GetProviderTable method provides access to the message service's provider table — a listing of the service providers in the message service.

Quick Info

See IProviderAdmin : IUnknown.

HRESULT GetProviderTable(
  ULONG ulFlags,              
  LPMAPITABLE FAR * lppTable  
);
 

Parameters

ulFlags
[in] Bitmask of flags that controls the type of the strings returned in the provider table's columns. The following flag can be set:
MAPI_UNICODE
The string columns are in Unicode format. If the MAPI_UNICODE flag is not set, the columns are in ANSI format.
lppTable
[out] Pointer to a pointer to the provider table.

Return Values

S_OK
The provider table was successfully returned.

Remarks

The IProviderAdmin::GetProviderTable method retrieves a pointer to the message service's provider table — a table maintained by MAPI that contains information about each service provider in the message service.

Unlike the provider table returned through IMsgServiceAdmin::GetProviderTable, the provider table returned through IProviderAdmin::GetProviderTable may include additional rows that represent information associated with one or more of the service providers in the message service. This extra information is added to the profile with the "Sections" keyword of MAPISVC.INF. When a provider has extra profile sections, it stores the MAPIUIDs for these sections in the PR_SERVICE_EXTRA_UIDS property. PR_SERVICE_EXTRA_UIDS is saved in the message service profile section.

Providers that have been deleted, or are in use but have been marked for deletion, are not included in the provider table. Provider tables are static, meaning that subsequent additions to or deletions from the message service are not reflected in the table.

If the message service has no providers, GetProviderTable returns a table with zero rows and the S_OK return value.

Setting the MAPI_UNICODE flag in the ulFlags parameter affects the format of the columns returned from the following IMAPITable methods:

IMAPITable::QueryColumns

IMAPITable::QueryRows

This flag also controls the property types in the sort order returned by the IMAPITable::QuerySortOrder method.

For a complete list of the columns in the provider table, see Provider Table.

Notes to Callers

To retrieve the rows of a provider table in transport order, sort the table by the PR_PROVIDER_ORDINAL column.

To retrieve only those rows that represent service providers without including any extra rows, limit your retrieval to the rows that do have a value of PT_ERROR in their PR_RESOURCE_TYPE column.

See Also

IMAPITable::QueryColumns, IMAPITable::QueryRows, IMAPITable::QuerySortOrder, IMAPITable::SetColumns, IMsgServiceAdmin::GetProviderTable