RasEnumDevicesA 関数 (ras.h)
RasEnumDevices 関数は、使用可能なすべての RAS 対応デバイスの名前と種類を返します。
構文
DWORD RasEnumDevicesA(
[in] LPRASDEVINFOA unnamedParam1,
[in, out] LPDWORD unnamedParam2,
[out] LPDWORD unnamedParam3
);
パラメーター
[in] unnamedParam1
RASDEVINFO 構造体の配列を受け取るバッファーへのポインター。RAS 対応デバイスごとに 1 つ。 関数を呼び出す前に、バッファー内の最初の RASDEVINFO 構造体の dwSize メンバーを sizeof(RASDEVINFO) に設定して、構造体のバージョンを識別します。
[in, out] unnamedParam2
入力時に lpRasDevInfo バッファーのサイズをバイト単位で格納する変数へのポインター。
出力時に、この変数はデバイスを列挙するために必要なバイト数に設定されます。
必要なバッファー サイズを確認するには、lpRasDevInfo を NULL に設定して RasEnumDevices を呼び出します。 lpcb が指す変数は 0 に設定する必要があります。 関数は、 lpcb で必要なバッファー サイズと ERROR_BUFFER_TOO_SMALLのエラー コードを返します。
[out] unnamedParam3
lpRasDevInfo バッファーに書き込まれた RASDEVINFO 構造体の数を受け取る変数へのポインター。
戻り値
関数が成功した場合、戻り値は ERROR_SUCCESS。
関数が失敗した場合、戻り値は次のいずれかのエラー コードか、 ルーティングおよびリモート アクセス エラー コード または Winerror.h からの値です。
値 | 意味 |
---|---|
|
lpRasDevInfo バッファーのサイズが十分ではありません。 lpcb パラメーターは、関数を呼び出す前に設定する必要がある lpRasDevInfo パラメーターの dwSize メンバーより小さくなります。 関数は、 lpcb が指す変数に必要なバッファー サイズを返します。 |
|
メモリ不足を示します。 lpRasDevInfo パラメーターは NULL 以外で、lpcb パラメーターは NULL 以外で、内部メモリの割り当てに失敗しました。 これは、メモリ不足の状態が原因である可能性があります。 |
|
無効なパラメーター値を示します。 lpcb パラメーターが NULL であるか、lpcDevices パラメーターが NULL です。 |
|
lpRasDevInfo で指定されたアドレスまたはバッファーが無効です。 lpRasDevInfo パラメーターの dwSize メンバーは sizeof(RASDEVINFO) と等しくありません。 |
注釈
次のサンプル コードでは、現在のコンピューター上のデバイスを列挙します。 このコードでは、最初に lpRasDevInfo パラメーターが NULL の RasEnumDevices を呼び出して、渡すバッファーのサイズを取得します。 また、このコードでは、最初の RASDEVINFO 構造体の dwSize メンバーを sizeof(RASDEVINFO) に設定して、構造体のバージョンを指定します。
#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 dwDevices = 0;
LPRASDEVINFO lpRasDevInfo = NULL;
// Call RasEnumDevices with lpRasDevInfo = NULL. dwCb is returned with the required buffer size and
// a return code of ERROR_BUFFER_TOO_SMALL
dwRet = RasEnumDevices(lpRasDevInfo, &dwCb, &dwDevices);
if (dwRet == ERROR_BUFFER_TOO_SMALL){
// Allocate the memory needed for the array of RAS structure(s).
lpRasDevInfo = (LPRASDEVINFO) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwCb);
if (lpRasDevInfo == NULL){
wprintf(L"HeapAlloc failed!\n");
return 0;
}
// The first RASDEVINFO structure in the array must contain the structure size
lpRasDevInfo[0].dwSize = sizeof(RASDEVINFO);
// Call RasEnumDevices to enumerate RAS devices
dwRet = RasEnumDevices(lpRasDevInfo, &dwCb, &dwDevices);
// If successful, print the names of the RAS devices
if (ERROR_SUCCESS == dwRet){
wprintf(L"The following RAS devices were found:\n");
for (DWORD i = 0; i < dwDevices; i++){
wprintf(L"%s\n", lpRasDevInfo[i].szDeviceName);
}
}
//Deallocate memory for the connection buffer
HeapFree(GetProcessHeap(), 0, lpRasDevInfo);
lpRasDevInfo = NULL;
return 0;
}
// There was either a problem with RAS or there are no RAS devices to enumerate
if(dwDevices >= 1){
wprintf(L"The operation failed to acquire the buffer size.\n");
}else{
wprintf(L"There were no RAS devices found.\n");
}
return 0;
}
注意
ras.h ヘッダーは RasEnumDevices をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | ras.h |
Library | Rasapi32.lib |
[DLL] | Rasapi32.dll |