The IProviderAdmin::GetProviderTable method provides access to the message service's provider table — a listing of the service providers in the message service.
See IProviderAdmin : IUnknown.
HRESULT GetProviderTable(
ULONG ulFlags,
LPMAPITABLE FAR * lppTable
);
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:
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.
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.
IMAPITable::QueryColumns, IMAPITable::QueryRows, IMAPITable::QuerySortOrder, IMAPITable::SetColumns, IMsgServiceAdmin::GetProviderTable