Jump to content
ViTALiTY

MAC address em C (Windows)

Recommended Posts

ViTALiTY

Basicamente precisava de um código que fosse buscar o MAC address do computador.

O código para Linux já tenho a funcionar, para Windows não:

#include <winsock2.h>
#include <iphlpapi.h>
#include <string.h>

void PrintMACaddress (BYTE *addr)
{

   int i;
  for (i = 0; i < 8; i++)
  {
     printf ("%x ", *addr++);
  }
}

static void GetMACaddress(void)
{
  IP_ADAPTER_INFO AdapterInfo[16];       // Allocate information for up to 16 NICs
  DWORD dwBufLen = sizeof (AdapterInfo);  // Save memory size of buffer

  DWORD dwStatus = GetAdaptersInfo(AdapterInfo, &dwBufLen);                  // [in] size of receive data buffer
  if (dwStatus != ERROR_SUCCESS)
  {
     printf ("GetAdaptersInfo failed. err=%d\n", GetLastError ());
     return;
 }

  PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo; // Contains pointer to  current adapter info
  do
  {
     PrintMACaddress(pAdapterInfo->Address); // Print MAC address
     pAdapterInfo = pAdapterInfo->Next;    // Progress through linked list
  } while (pAdapterInfo);                    // Terminate if last adapter
}

int main()
{
  GetMACaddress ();
}

Os erros:

C:\Users\***\Desktop\testewindows7\main.c||In function 'PrintMACaddress':|
C:\Users\***\Desktop\testewindows7\main.c|11|warning: incompatible implicit declaration of built-in function 'printf' [enabled by default]|
C:\Users\***\Desktop\testewindows7\main.c||In function 'GetMACaddress':|
C:\Users\***\Desktop\testewindows7\main.c|23|warning: incompatible implicit declaration of built-in function 'printf' [enabled by default]|
C:\Users\***\Desktop\testewindows7\main.o:main.c|| undefined reference to `GetAdaptersInfo@8'|
||=== Build finished: 1 errors, 2 warnings (0 minutes, 3 seconds) ===|

Desde já obrigado.

Edited by pmg
pastebin.com/wGWQtA5H copiado para o tópico

Share this post


Link to post
Share on other sites
HappyHippyHippo

1º - aumenta o nível de warnings do teu compilador

2º - não ignores nenhuma mensagem de warnign do teu compilador

3º - faz include do header stdio.h


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
ViTALiTY

1º - aumenta o nível de warnings do teu compilador

2º - não ignores nenhuma mensagem de warnign do teu compilador

3º - faz include do header stdio.h

Incluir o header diminuiu a lista de erros, obrigado.

Fiquei-me só com este, que não faço ideia como resolver...

C:\Users\***\Desktop\testewindows7\main.o:main.c|| undefined reference to `GetAdaptersInfo@8'|
||=== Build finished: 1 errors, 0 warnings (0 minutes, 3 seconds) ===|

Share this post


Link to post
Share on other sites
pikax

tens que fazer link da lib: "Iphlpapi.lib"

mais info


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
ViTALiTY

tens que fazer link da lib: "Iphlpapi.lib"

mais info

Obrigado pela resposta.

Então basicamente adicionar:

#include <stdlib.h>
#pragma comment(lib, "IPHLPAPI.lib")

ao programa? Continua com o mesmo erro... :confused:

Share this post


Link to post
Share on other sites
pikax

qual e' o compilador?


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
pikax

se nao me engano, o pragma comment nao funciona no C::B, o codigo no site da MS e' para o VS.

Vai as configuracoes do codeBlocks e adiciona a lib no linker


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.