RasEnumConnectionsA 関数 (ras.h)

RasEnumConnections 関数は、アクティブなすべての RAS 接続を一覧表示します。 各接続のハンドルと電話帳のエントリ名が返されます。

構文

DWORD RasEnumConnectionsA(
  [in, out] LPRASCONNA unnamedParam1,
  [in, out] LPDWORD    unnamedParam2,
  [out]     LPDWORD    unnamedParam3
);

パラメーター

[in, out] unnamedParam1

出力時に RASCONN 構造体の配列 (RAS 接続ごとに 1 つ) を受け取るバッファーへのポインター。

入力時に、渡される構造体のバージョンを識別するために、アプリケーションはバッファー内の最初の RASCONN 構造体の dwSize メンバーを sizeof(RASCONN) に設定する必要があります。

[in, out] unnamedParam2

入力時に lprasconn で指定されたバッファーのサイズ (バイト単位) を含む変数へのポインター。

出力時に、関数は RAS 接続を列挙するために必要なバイト数にこの変数を設定します。

  

必要なバッファー サイズを確認するには、lprasconn を NULL に設定して RasEnumConnections を呼び出しますlpcb が指す変数は 0 に設定する必要があります。 関数は、 lpcb で必要なバッファー サイズと 、ERROR_BUFFER_TOO_SMALLのエラー コードを返します。

 

[out] unnamedParam3

lprasconn で指定されたバッファーに書き込まれた RASCONN 構造体の数を受け取る変数へのポインター。

戻り値

関数が成功した場合、戻り値は ERROR_SUCCESS

関数が失敗した場合、戻り値は Routing および Remote Access Error Codes または Winerror.h から取得されます。

リターン コード 説明
ERROR_BUFFER_TOO_SMALL
lprasconn バッファーは十分な大きさではありません。 lpcb パラメーターは、関数を呼び出す前に設定する必要がある lprasconn パラメーターの dwSize メンバーより小さくなります。 関数は、 lpcb が指す変数に必要なバッファー サイズを返します。

注釈

電話帳のエントリ名を指定せずに接続した場合、その接続に対して返される情報には、接続の電話番号の前に "." が付きます。

次のコード サンプル コードでは 、RasEnumConnections を使用してアクティブな RAS 接続を列挙します。

#include <windows.h>
#include <stdio.h>
#include "ras.h"
#include "raserror.h"
#pragma comment(lib, "rasapi32.lib")

DWORD __cdecl wmain(){

    DWORD dwCb = 0;
    DWORD dwRet = ERROR_SUCCESS;
    DWORD dwConnections = 0;
    LPRASCONN lpRasConn = NULL;
    
    // Call RasEnumConnections with lpRasConn = NULL. dwCb is returned with the required buffer size and 
    // a return code of ERROR_BUFFER_TOO_SMALL
    dwRet = RasEnumConnections(lpRasConn, &dwCb, &dwConnections);

    if (dwRet == ERROR_BUFFER_TOO_SMALL){
        // Allocate the memory needed for the array of RAS structure(s).
        lpRasConn = (LPRASCONN) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwCb);
        if (lpRasConn == NULL){
            wprintf(L"HeapAlloc failed!\n");
            return 0;
        }
        // The first RASCONN structure in the array must contain the RASCONN structure size
        lpRasConn[0].dwSize = sizeof(RASCONN);
        
        // Call RasEnumConnections to enumerate active connections
        dwRet = RasEnumConnections(lpRasConn, &dwCb, &dwConnections);

        // If successful, print the names of the active connections.
        if (ERROR_SUCCESS == dwRet){
            wprintf(L"The following RAS connections are currently active:\n");
            for (DWORD i = 0; i < dwConnections; i++){
                         wprintf(L"%s\n", lpRasConn[i].szEntryName);
                  }
        }
        //Deallocate memory for the connection buffer
        HeapFree(GetProcessHeap(), 0, lpRasConn);
        lpRasConn = NULL;
        return 0;
    }

    // There was either a problem with RAS or there are no connections to enumerate    
    if(dwConnections >= 1){
        wprintf(L"The operation failed to acquire the buffer size.\n");
    }else{
        wprintf(L"There are no active RAS connections.\n");
    }

    return 0;
}

RASEnumConnections は、RAS が正常に接続されるまで、 接続をアクティブ として列挙できません。

Windows Me/98/95: RasEnumConnections は、ダイヤルを開始するとすぐに 接続をアクティブ として列挙します。

アクティブな接続を列挙してチェックする最も信頼性の高い方法は、RasEnumConnections または RasDial を呼び出して接続ハンドルを取得し、RasGetConnectStatus を呼び出して実際の接続状態を確認することです。

注意

ras.h ヘッダーは、RasEnumConnections をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー ras.h
Library Rasapi32.lib
[DLL] Rasapi32.dll

こちらもご覧ください

RASCONN

RasEnumEntries

RasGetConnectStatus

リモート アクセス サービス (RAS) の概要

リモート アクセス サービス関数