Função RasEnumDevicesA (ras.h)
A função RasEnumDevices retorna o nome e o tipo de todos os dispositivos compatíveis com RAS disponíveis.
Sintaxe
DWORD RasEnumDevicesA(
[in] LPRASDEVINFOA unnamedParam1,
[in, out] LPDWORD unnamedParam2,
[out] LPDWORD unnamedParam3
);
Parâmetros
[in] unnamedParam1
Ponteiro para um buffer que recebe uma matriz de estruturas RASDEVINFO , uma para cada dispositivo compatível com RAS. Antes de chamar a função, defina o membro dwSize da primeira estrutura RASDEVINFO no buffer como sizeof (RASDEVINFO) para identificar a versão da estrutura.
[in, out] unnamedParam2
Ponteiro para uma variável que, na entrada, contém o tamanho, em bytes, do buffer lpRasDevInfo .
Na saída, a função define essa variável como o número de bytes necessários para enumerar os dispositivos.
Para determinar o tamanho do buffer necessário, chame RasEnumDevices com lpRasDevInfo definido como NULL. A variável apontada por lpcb deve ser definida como zero. A função retornará o tamanho do buffer necessário em lpcb e um código de erro de ERROR_BUFFER_TOO_SMALL.
[out] unnamedParam3
Ponteiro para uma variável que recebe o número de estruturas RASDEVINFO gravadas no buffer lpRasDevInfo .
Retornar valor
Se a função for bem-sucedida, o valor retornado será ERROR_SUCCESS.
Se a função falhar, o valor retornado será um dos seguintes códigos de erro ou um valor de Códigos de Erro de Roteamento e Acesso Remoto ou Winerror.h.
Valor | Significado |
---|---|
|
O buffer lpRasDevInfo não é grande o suficiente. O parâmetro lpcb é menor que o membro dwSize no parâmetro lpRasDevInfo que deve ser definido antes de chamar a função. A função retorna o tamanho do buffer necessário na variável apontada por lpcb. |
|
Indica memória insuficiente. O parâmetro lpRasDevInfo não é NULL, o parâmetro lpcb não é NULL e uma alocação de memória interna falhou. Isso é possivelmente devido a uma condição de baixa memória. |
|
Indica um valor de parâmetro inválido. O parâmetro lpcb é NULL ou o parâmetro lpcDevices é NULL. |
|
O endereço ou buffer especificado por lpRasDevInfo é inválido. O membro dwSize do parâmetro lpRasDevInfo não é igual a sizeof(RASDEVINFO). |
Comentários
O código de exemplo a seguir enumera os dispositivos no computador atual. O código inicialmente chama RasEnumDevices com um parâmetro lpRasDevInfo de NULL, para obter o tamanho do buffer que deve ser passado. O código também define o membro dwSize da primeira estrutura RASDEVINFO como sizeof (RASDEVINFO) para especificar a versão da estrutura.
#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;
}
Observação
O cabeçalho ras.h define RasEnumDevices como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | ras.h |
Biblioteca | Rasapi32.lib |
DLL | Rasapi32.dll |
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de