Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: xkiz ™ en 11 Septiembre 2010, 10:40 am



Título: obtener descripcion de ErrorCode de Winint.h
Publicado por: xkiz ™ en 11 Septiembre 2010, 10:40 am
bueno,  estoy realizando un programita en el cual utilizo [InternetOpen, InternetOpenUrl, InternetReadFile] y algunas otras funciones de wininit.h, tengo toda la funcionalidad funcionando correctamente, bue, casi toda. En si el programa cumple su tarea muy bien, pero como es de suponerse, al programar una funcion siempre hay que preever que esta puede salir mal, por factores ajenos a lo referido a la programacion en si.
en este caso, estoy intentando sacar la descripcion de Error de la funcion InternetOpenUrl que devuelve si la url no existe o similar. se que para sacar la descripcion de un error se usa, en este caso (GetLastError y FormatMessage), pero esta funcion me devuelve un valor 12007, pero en este caso los errores [12000 - 12174] tienen un apartado y la verdad es que no se como llegar a ellos.
aca dejo info que encontre:

System Error Codes (12000-15999) (http://msdn.microsoft.com/en-us/library/ms681384%28v=VS.85%29.aspx)

ERROR_INTERNET_* (see Wininet.h) 12000 - 12174 (0x2EE0) | Internet Error Codes (http://msdn.microsoft.com/en-us/library/aa385465%28v=VS.85%29.aspx)

en resumen, como tengo que hacer para obtener la descripcion de error[12000 - 12174], estoy re perdido a esta altura.


Título: Re: obtener descripcion de ErrorCode de Winint.h
Publicado por: Horricreu en 11 Septiembre 2010, 11:18 am
12007 es equivalente a ERROR_INTERNET_NAME_NOT_RESOLVED. Significa que el nombre del servidor no se pudo resolver.

Saludos :P


Título: Re: obtener descripcion de ErrorCode de Winint.h
Publicado por: xkiz ™ en 11 Septiembre 2010, 11:42 am
ok, si ya lo averigue, pero lo que yo quiero hacer es esto:

Código
  1. void lalala(){
  2. HINTERNET conexion, abrir;
  3. conexion = InternetOpen("", INTERNET_OPEN_TYPE_DIRECT, 0, 0, 0);
  4. if(conexion != NULL){
  5. abrir = InternetOpenUrl(conexion, /*sUrl*/  "aaaaaaa", 0, 0, INTERNET_FLAG_RELOAD, 0);
  6.  
  7. if(abrir !=NULL){
  8. // el resto del codigo......
  9. }else{
  10. GetErrorKuak();
  11. }
  12. }else{
  13. GetErrorKuak();
  14. }
  15.  
  16. }
  17.  
  18. void GetErrorKuak(){
  19. DWORD ErrNumb;
  20. char ErrMsg[200];
  21. char ErrMsg2[10];
  22.  
  23. ErrNumb = GetLastError();
  24.  
  25. FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,0,ErrNumb, LANG_NEUTRAL,ErrMsg, sizeof(ErrMsg),0);
  26. sprintf(ErrMsg2, "Error: %d, %s.", ErrNumb, ErrMsg);
  27. OutputDebugString((LPCTSTR)ErrMsg2);
  28. }
  29.  

y que en OutputDebugString me diga la descripcion del error, no quiero llenar String Tables con todos los errores posibles....


Título: Re: obtener descripcion de ErrorCode de Winint.h
Publicado por: Eternal Idol en 11 Septiembre 2010, 20:05 pm
La cadena esta en la DLL que implementa esa API, tomando tu codigo:

Código
  1. FormatMessage(FORMAT_MESSAGE_FROM_HMODULE, GetModuleHandle("wininet.dll"), ErrNumb, LANG_NEUTRAL, ErrMsg, sizeof(ErrMsg), 0);





PD. ErrMsg2 deberia ser mas grande, por logica siempre mas grande que ErrMsg.


Título: Re: obtener descripcion de ErrorCode de Winint.h
Publicado por: xkiz ™ en 12 Septiembre 2010, 01:06 am
perecto, muchas gracias....


Título: Re: obtener descripcion de ErrorCode de Winint.h
Publicado por: Eternal Idol en 12 Septiembre 2010, 01:14 am
De nadas  ::)