次の方法で共有


IDirectPlay8Peer::EnumServiceProviders メソッド

IDirectPlay8Peer::EnumServiceProviders メソッド

アプリケーションで利用できる登録済みサービス プロバイダをすべて列挙する。

構文

HRESULT EnumServiceProviders(      
    const GUID *const pguidServiceProvider,
    const GUID *const pguidApplication,
    const DPN_SERVICE_PROVIDER_INFO *const pSPInfoBuffer,
    DWORD *const pcbEnumData,
    DWORD *const pcReturned,
    const DWORD dwFlags
);

パラメータ

  • pguidServiceProvider
    [in] サービス プロバイダを指定するグローバル一意識別子 (GUID) 型の変数へのポインタ。このオプション パラメータは、指定したサービス プロバイダのサブデバイスを列挙させる。通常はこの値に NULL を設定し、すべての利用可能なサービス プロバイダを列挙する。それ以外の場合、pguidServiceProvider は次の定義済みの値のいずれかに設定する。
    • CLSID_DP8SP_TCPIP
      インターネット プロトコル (IP) サービス プロバイダ
    • CLSID_NETWORKSIMULATOR_DP8SP_TCPIP
      DP8Sim サービス プロバイダ
    • CLSID_DP8SP_SERIAL
      シリアル サービス プロバイダ
    • CLSID_DP8SP_MODEM
      モデム サービス プロバイダ
    • CLSID_DP8SP_IPX
      IPX サービス プロバイダ
  • pguidApplication
    [in] アプリケーションを指定する GUID 型の変数へのポインタ。このパラメータにポインタを渡すと、そのアプリケーションで接続できるサービス プロバイダのみが列挙される。また、NULL を渡すと、システムに登録されているすべてのサービス プロバイダを列挙できる。
  • pSPInfoBuffer
    [out] サービス プロバイダ情報を保持する、DPN_SERVICE_PROVIDER_INFO 構造体の配列へのポインタ。
  • pcbEnumData
    [out] バッファが小さすぎる場合、pSPInfoBuffer バッファのサイズが格納される 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 フラグを設定する。