다음을 통해 공유


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

전화 번호부(PBK) 파일의 전체 경로 및 파일 이름을 지정하는 null로 끝나는 문자열에 대한 포인터입니다. 이 매개 변수가 NULL경우 함수는 현재 기본 전화 번호부 파일을 사용합니다. 기본 전화 번호부 파일은 전화 접속 네트워킹 대화 상자의 사용자 기본 설정 속성 시트에서 사용자가 선택한 파일입니다.

이 매개 변수가 NULL경우 AllUsers 프로필 및 사용자 프로필의 모든 원격 액세스 전화 번호부 파일에서 항목이 열거됩니다.

[in, out] unnamedParam3

출력 시 각 전화 번호부 항목에 대해 하나씩 RASENTRYNAME 구조의 배열을 수신하는 버퍼에 대한 포인터입니다.

입력 시 애플리케이션은 전달되는 구조체의 버전을 식별하기 위해 버퍼의 첫 번째 RASENTRYNAME 구조체의 dwSize 멤버를 sizeof(RASENTRYNAME)로 설정해야 합니다.

[in, out] unnamedParam4

입력 시 lprasentryname지정된 버퍼의 크기(바이트)를 포함하는 변수에 대한 포인터입니다.

출력 시 전화 번호부 항목에 필요한 RASENTRYNAME 구조 배열의 크기(바이트)를 포함하는 변수에 대한 포인터입니다.

Windows Vista 이상: 필요한 버퍼 크기를 확인하려면 lprasentrynameNULL설정하여 RasEnumEntries 호출합니다. lpcb 가리키는 변수는 0으로 설정해야 합니다. 이 함수는 lpcb 필요한 버퍼 크기와 ERROR_BUFFER_TOO_SMALL오류 코드를 반환합니다.

[out] unnamedParam5

lprasentryname지정된 버퍼에 기록된 전화 번호부 항목 수를 받는 변수에 대한 포인터입니다.

반환 값

함수가 성공하면 반환 값이 ERROR_SUCCESS.

함수가 실패하면 반환 값은 다음 오류 코드 중 하나이거나 라우팅 및 원격 액세스 오류 코드 또는 Winerror.h의 값입니다.

의미
ERROR_BUFFER_TOO_SMALL
lprasentryname 버퍼가 충분히 크지 않습니다. lpcb 매개 변수는 함수를 호출하기 전에 설정해야 하는 lprasentryname 매개 변수의 dwSize 멤버보다 작습니다. 이 함수는 lpcb가리키는 변수에 필요한 버퍼 크기를 반환합니다.

Windows Vista 이상: lprasentryname 버퍼는 NULL 설정될 수 있으며 lpcb 가리키는 변수는 0으로 설정될 수 있습니다. 이 함수는 lpcb가리키는 변수에 필요한 버퍼 크기를 반환합니다.

ERROR_INVALID_SIZE
lprasentryname가리키는 RASENTRYNAME 구조체의 dwSize 값은 현재 플랫폼에서 지원되지 않는 구조의 버전을 지정합니다. 예를 들면 다음과 같습니다. Windows 95에서 RasEnumEntriesdwSizeRASENTRYNAMEdwFlagsszPhonebookPath 멤버가 포함되어 있음을 나타내는 경우 이 오류를 반환합니다. 이러한 멤버는 Windows 95에서 지원되지 않으므로(Windows 2000 이상에서만 지원됨)
ERROR_NOT_ENOUGH_MEMORY
함수가 작업을 완료하기에 충분한 메모리를 할당할 수 없습니다.

발언

다음 샘플 코드는 Windows Vista 이상 버전의 Windows에서 RAS 전화 번호부 항목을 열거합니다. 코드는 처음에 RasEnumEntries 호출하여 전달할 버퍼의 크기를 가져옵니다. 그런 다음, 코드는 RasEnumEntries 다시 호출하여 항목을 열거합니다. 두 번째 호출의 경우 코드는 버퍼의 첫 번째 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 헤더는 RAsEnumEntries를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한 규칙을 참조하세요.

요구 사항

요구
지원되는 최소 클라이언트 Windows 2000 Professional [데스크톱 앱만 해당]
지원되는 최소 서버 Windows 2000 Server [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 ras.h
라이브러리 Rasapi32.lib
DLL Rasapi32.dll

참고 항목

RASENTRYNAME

RasEnumConnections

RAS(원격 액세스 서비스) 개요

원격 액세스 서비스 함수