IDirectPlay8Server::EnumServiceProviders メソッド
IDirectPlay8Server::EnumServiceProviders メソッド
アプリケーションで利用可能な登録済みサービス プロバイダを列挙する。
構文
HRESULT EnumServiceProviders(
const GUID *const pguidServiceProvider,
const GUID *const pguidApplication,
DPN_SERVICE_PROVIDER_INFO *const pSPInfoBuffer,
PDWORD const pcbEnumData,
PDWORD const pcReturned,
const DWORD dwFlags
);
パラメータ
- pguidServiceProvider
[in] サービス プロバイダを指定するグローバル一意識別子 (GUID) 型の変数へのポインタ。このオプション パラメータは、指定したサービス プロバイダのサブデバイスを列挙させる。通常はこの値に NULL を設定し、すべての利用可能なサービス プロバイダを列挙する。 - pguidApplication
[in] アプリケーションを指定する GUID 型の変数へのポインタ。このパラメータにポインタが渡された場合は、アプリケーションに接続できるサービス プロバイダだけが列挙される。NULL を渡して、システムに登録済みのサービス プロバイダを列挙することもできる。 - pSPInfoBuffer
[out] サービス プロバイダ情報を保持する、DPN_SERVICE_PROVIDER_INFO 構造体の配列へのポインタ。 - pcbEnumData
[out] バッファが小さすぎる場合、pcbEnumData バッファのサイズが格納される DWORD へのポインタ。 - pcReturned
[out] pcbEnumData 配列に返される DPN_SERVICE_PROVIDER_INFO 構造体の数を指定する DWORD 型の変数へのポインタ。 - dwFlags
[in] 次のフラグを指定できる。DPNENUMSERVICEPROVIDERS_ALL
アプリケーションで利用できないプロバイダや、デバイスがインストールされていないプロバイダを含め、システムに対して登録されているすべてのサービス プロバイダを列挙する。
戻り値
成功した場合は S_OK を返し、失敗した場合は次のいずれかのエラー値を返す。
DPNERR_BUFFERTOOSMALL | 指定されたバッファが小さすぎて、要求されたデータを格納できない。 |
DPNERR_INVALIDPARAM | メソッドに渡された 1 つあるいは複数のパラメータが無効である。 |
注意
pguidServiceProvider パラメータに NULL を指定して最初にこのメソッドを呼び出し、システムで利用可能なベース サービス プロバイダを決定する。pguidServiceProvider に特定のサービス プロバイダ GUID へのポインタを渡すことで、サービス プロバイダ用のデバイスを取得できる。これは、たとえば、Microsoft® DirectPlay® サービス プロバイダのモデム接続を使う場合などに便利である。ダイヤルアウトにはさまざまなモデムを選択し、ホストには特定のモデムを選択できる。
pcbEnumData バッファでは要求されたサービス プロバイダ情報を保持する容量が不足する場合、メソッドは DPNERR_BUFFERTOOSMALL を返す。pcbEnumData パラメータには必要なバッファ サイズが含まれる。通常、一番よい方法は長さ 0 のバッファで一度メソッドを呼び出し、必要なサイズを判断することである。次に、バッファを適切なサイズにしてもう一度メソッドを呼び出す。
通常の場合、このメソッドは、アプリケーションが使えるサービス プロバイダのみを返す。たとえば、Internetwork Packet Exchange (IPX) ネットワーキング プロトコルがインストールされていない場合、DirectPlay は IPX サービス プロバイダを返さない。DirectPlay が、使えないプロバイダを含め、すべてのサービス プロバイダを返すようにするには、dwFlags に DPNENUMSERVICEPROVIDERS_ALL フラグを設定する。