共用方式為


RasEnumEntriesA 函式 (ras.h)

RasEnumEntries 函式會列出遠端存取電話簿中的所有項目名稱。

語法

DWORD RasEnumEntriesA(
  [in]      LPCSTR          unnamedParam1,
  [in]      LPCSTR          unnamedParam2,
  [in, out] LPRASENTRYNAMEA unnamedParam3,
  [in, out] LPDWORD         unnamedParam4,
  [out]     LPDWORD         unnamedParam5
);

參數

[in] unnamedParam1

保留;必須 NULL

[in] unnamedParam2

Null 終止字串的指標,指定電話簿檔案的完整路徑和檔名。 如果此參數 NULL,則函式會使用目前的預設電話簿檔案。 默認的電話簿檔案是使用者在 [撥號網络] 對話框中 [使用者 喜好設定] 屬性表中選取的默認電話簿檔案。

如果此參數 NULL,則會從 AllUsers 設定檔和使用者設定檔中的所有遠端存取電話簿檔案列舉專案。

[in, out] unnamedParam3

輸出時,緩衝區的指標會接收 RASENTRYNAME 結構的陣列,每個電話簿專案各一個。

在輸入時,應用程式必須將緩衝區中第一個 RASENTRYNAME 結構 dwSize 成員設定為 sizeof(RASENTRYNAME),才能識別所傳遞結構的版本。

[in, out] unnamedParam4

在輸入時,變數的指標包含由 lprasentryname所指定的緩衝區大小,以位元組為單位。

輸出中變數的指標包含電話簿專案所需的 RASENTRY NAME 陣列大小,以位元組為單位。

Windows Vista 或更新版本:若要判斷所需的緩衝區大小,請使用 lprasentryname 呼叫 RasEnumEntries 設為 NULLl 所指向的變數應設定為零。 函式會傳回 l 中所需的緩衝區大小,以及 ERROR_BUFFER_TOO_SMALL的錯誤碼。

[out] unnamedParam5

變數的指標,該變數會接收寫入 lprasentryname 所指定之緩衝區的電話號碼

傳回值

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

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

價值 意義
ERROR_BUFFER_TOO_SMALL
lprasentryname 緩衝區不夠大。 l 參數小於呼叫函式之前,lprasentryname 參數中 dwSize 成員。 函式會傳回 l所指向之變數中所需的緩衝區大小。

Windows Vista 或更新版本:lprasentryname 緩衝區可能設定為 NULL,而 l l 指向的變數可能設定為零。 函式會傳回 l所指向之變數中所需的緩衝區大小。

ERROR_INVALID_SIZE
RASENTRYNAME 結構中 dwSize 的值,lprasentryname所指向,指定目前平臺上不支持的結構版本。 例如, 在 Windows 95 上,RasEnumEntries 如果 dwSize 表示 RASENTRYNAME 包含 dwFlagsszPhonebookPath 成員,因為這些成員在 Windows 95 上不受支援,所以會傳回此錯誤(只有在 Windows 2000 和更新版本上才支援這些成員)。
ERROR_NOT_ENOUGH_MEMORY
函式無法配置足夠的記憶體來完成作業。

言論

下列範例程式代碼會列舉 Windows Vista 和更新版本的 Windows 上的 RAS 電話簿專案。 程式代碼一開始會呼叫 RasEnumEntries,以取得要傳入的緩衝區大小。 然後,程式代碼會再次呼叫 RasEnumEnt ries,以列舉專案。 請注意,在第二次呼叫中,程式代碼會將緩衝區中第一個 RASENTRYNAME 結構 成員 dwSize 設定為 sizeof(RASENTRYNAME) 來指定結構版本。

#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 dwEntries = 0;
    LPRASENTRYNAME lpRasEntryName = NULL;
    
    // Call RasEnumEntries with lpRasEntryName = NULL. dwCb is returned with the required buffer size and 
    // a return code of ERROR_BUFFER_TOO_SMALL
    dwRet = RasEnumEntries(NULL, NULL, lpRasEntryName, &dwCb, &dwEntries);

    if (dwRet == ERROR_BUFFER_TOO_SMALL){
        // Allocate the memory needed for the array of RAS entry names.
        lpRasEntryName = (LPRASENTRYNAME) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwCb);
        if (lpRasEntryName == NULL){
            wprintf(L"HeapAlloc failed!\n");
            return 0;
        }
        // The first RASENTRYNAME structure in the array must contain the structure size
        lpRasEntryName[0].dwSize = sizeof(RASENTRYNAME);
        
        // Call RasEnumEntries to enumerate all RAS entry names
        dwRet = RasEnumEntries(NULL, NULL, lpRasEntryName, &dwCb, &dwEntries);

        // If successful, print the RAS entry names 
        if (ERROR_SUCCESS == dwRet){
            wprintf(L"The following RAS entry names were found:\n");
            for (DWORD i = 0; i < dwEntries; i++){
                wprintf(L"%s\n", lpRasEntryName[i].szEntryName);
            }
        }
        //Deallocate memory for the connection buffer
        HeapFree(GetProcessHeap(), 0, lpRasEntryName);
        lpRasEntryName = NULL;
        return 0;
    }

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

    return 0;
}

注意

ras.h 標頭會根據 UNICODE 預處理器常數的定義,將 RasEnumEntries 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的 慣例。

要求

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

另請參閱

RASENTRYNAME

RasEnumConnections

遠端存取服務 (RAS) 概觀

遠端訪問服務函式