共用方式為


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 設為 NULLl 所指向的變數應設定為零。 函式會傳回 l 中所需的緩衝區大小,以及 ERROR_BUFFER_TOO_SMALL的錯誤碼。

 

[out] unnamedParam3

變數的指標,該變數會接收寫入 lpRasDevInfo 緩衝區的 RASDEVINFO 結構數目。

傳回值

如果函式成功,則傳回值會 ERROR_SUCCESS

如果函式失敗,傳回值是下列其中一個錯誤碼,或來自 路由和遠端訪問錯誤碼的值 或 Winerror.h。

價值 意義
ERROR_BUFFER_TOO_SMALL
lpRasDevInfo 緩衝區不夠大。 l 參數小於呼叫函式之前,lpRasDevInfo 參數中 dwSize 成員。 函式會傳回 l所指向之變數中所需的緩衝區大小。
ERROR_NOT_ENOUGH_MEMORY
表示記憶體不足。 lpRasDevInfo 參數為非NULLl 參數為非NULL,內部記憶體配置失敗。 這可能是因為記憶體不足的情況。
ERROR_INVALID_PARAMETER
表示無效的參數值。 lpc 參數 NULL,或 lpcDevices 參數 NULL
ERROR_INVALID_USER_BUFFER
lpRasDevInfo 所指定的位址或緩衝區 無效。 dwSizelpRasDevInfo 參數的成員不等於 sizeof(RASDEVINFO)。

言論

下列範例程式代碼會列舉目前電腦上的裝置。 程式代碼一開始會使用 NULLlpRasDevInfo 參數呼叫 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 標頭會根據 UNICODE 預處理器常數的定義,將 RasEnumDevices 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的 慣例。

要求

要求 價值
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
支援的最低伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平臺 窗戶
標頭 ras.h
連結庫 Rasapi32.lib
DLL Rasapi32.dll

另請參閱

RASDEVINFO

遠端存取服務 (RAS) 概觀

遠端訪問服務函式