RasEnumDevicesA 函式 (ras.h)
RasEnumDevices 函式會傳回所有可用 RAS 裝置的名稱和類型。
語法
DWORD RasEnumDevicesA(
[in] LPRASDEVINFOA unnamedParam1,
[in, out] LPDWORD unnamedParam2,
[out] LPDWORD unnamedParam3
);
參數
[in] unnamedParam1
接收 RASDEVINFO 結構數位的緩衝區指標,每個支援 RAS 的裝置各一個。 呼叫函式之前,請將緩衝區中第一個 RASDEVINFO 結構的 dwSize 成員設定為 sizeof (RASDEVINFO) ,以識別 結構的版本。
[in, out] unnamedParam2
輸入時,變數的指標包含 lpRasDevInfo 緩衝區的大小,以位元組為單位。
在輸出時,函式會將此變數設定為列舉裝置所需的位元元組數目。
若要判斷所需的緩衝區大小,請呼叫 RasEnumDevices 並將 lpRasDevInfo 設定為 NULL。 l其所指向的變數應該設定為零。 函式會以 l ERROR_BUFFER_TOO_SMALL傳回所需的緩衝區大小。
[out] unnamedParam3
接收寫入 lpRasDevInfo 緩衝區之 RASDEVINFO 結構數目的變數指標。
傳回值
如果函式成功,傳回值會 ERROR_SUCCESS。
如果函式失敗,則傳回值是下列其中一個錯誤碼,或 來自路由和遠端訪問錯誤碼 或 Winerror.h 的值。
值 | 意義 |
---|---|
|
lpRasDevInfo 緩衝區不夠大。 landroid 參數小於 lpRasDevInfo 參數中的 dwSize 成員,在呼叫函式之前應該設定。 函式會傳回 l其所指向之變數中所需的緩衝區大小。 |
|
表示記憶體不足。 lpRasDevInfo 參數為非 NULL,landroid 參數為非 NULL,且內部記憶體配置失敗。 這可能是因為記憶體不足的情況所致。 |
|
表示無效的參數值。 lpcDevices 參數為 NULL,或 lpcDevices 參數為 NULL。 |
|
lpRasDevInfo 指定的位址或緩衝區無效。 lpRasDevInfo 參數的 dwSize 成員不等於 RASDEVINFO) (sizeof。 |
備註
下列範例程式代碼會列舉目前電腦上的裝置。 程序代碼一開始會以 NULL 的 lpRasDevInfo 參數呼叫 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 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | ras.h |
程式庫 | Rasapi32.lib |
Dll | Rasapi32.dll |
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將推出:在 2024 年,我們將隨著內容的意見反應機制逐步淘汰 GitHub 問題,並以新的意見反應系統來取代。 如需詳細資訊,請參閱提交並檢視相關的意見反應