Ошибка преобразования параметров ....

Тема в разделе "WASM.NETWORKS", создана пользователем FullZer0, 29 авг 2010.

  1. FullZer0

    FullZer0 New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2008
    Сообщения:
    24
    Всем привет !
    Пробую написать прогу по примеру, выводящую список портов ТСР и UDP , но выбивает 2 ошибки :

    1 - Ошибка 1 error C2664: LookupPrivilegeValueW: невозможно преобразовать параметр 2 из "char *" в "LPCWSTR" c:\documents and settings\admin\мои документы\visual studio 2010\projects\port viewer\port viewer\port viewer.cpp 59

    2 - Ошибка 3 error C2664: LoadLibraryW: невозможно преобразовать параметр 1 из "const char [13]" в "LPCWSTR" c:\documents and settings\admin\мои документы\visual studio 2010\projects\port viewer\port viewer\port viewer.cpp 102

    Вот сам код :
    Код (Text):
    1. #include "stdafx.h"
    2. #include <WinSock2.h>
    3. #include <Windows.h>
    4. #include <stdio.h>
    5. #include <IPHlpApi.h>
    6. #include <conio.h>
    7. #include <TlHelp32.h>
    8. #include <Psapi.h>
    9.  
    10. #pragma comment (lib, "Iphlpapi.lib")
    11. #pragma comment (lib, "Ws2_32.lib")
    12. #pragma comment (lib, "psapi.lib")
    13.  
    14. typedef struct _MIB_TCPROW_EX
    15. {
    16.     DWORD dwState;
    17.     DWORD dwLocalAddr;
    18.     DWORD dwLocalPort;
    19.     DWORD dwRemoteAddr;
    20.     DWORD dwRemotePort;
    21.     DWORD dwProcessId;
    22. } MIB_TCPROW_EX, *PMIB_TCPROW_EX;
    23.  
    24. typedef struct _MIB_TCPTABLE_EX
    25. {
    26.     DWORD dwNumEntries;
    27.     MIB_TCPROW_EX table[4096];
    28. } MIB_TCPTABLE_EX, *PMIB_TCPTABLE_EX;
    29.  
    30. typedef struct _MIB_UDPROW_EX
    31. {
    32.     DWORD dwLocalAddr;
    33.     DWORD dwLocalPort;
    34.     DWORD dwProcessId;
    35. } MIB_UDPROW_EX, *PMIB_UDPROW_EX;
    36.  
    37. typedef struct _MIB_UDPTABLE_EX
    38. {
    39.     DWORD dwNumEntries;
    40.     MIB_UDPROW_EX table[4096];
    41. } MIB_UDPTABLE_EX, *PMIB_UDPTABLE_EX;
    42.  
    43. typedef DWORD (WINAPI *PROCALLOCATEANDGETTCPEXTABLEFROMSTACK)(PMIB_TCPTABLE_EX*,BOOL,HANDLE,DWORD,DWORD);
    44.     PROCALLOCATEANDGETTCPEXTABLEFROMSTACK lpfnAllocateAndGetTcpExTableFromStack = NULL;
    45.  
    46. typedef DWORD (WINAPI *PROCALLOCATEANDGETUDPEXTABLEFROMSTACK)(PMIB_UDPTABLE_EX*,BOOL,HANDLE,DWORD,DWORD);
    47.     PROCALLOCATEANDGETUDPEXTABLEFROMSTACK lpfnAllocateAndGetUdpExTableFromStack = NULL;
    48.  
    49. BOOL GetPrivilege(char* SeNamePriv){
    50.  
    51.     HANDLE hToken;
    52.     LUID lpLuid;
    53.     TOKEN_PRIVILEGES NewState;
    54.  
    55.     if(OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &hToken)){
    56.         if(LookupPrivilegeValue(NULL, SeNamePriv, &lpLuid)){
    57.             NewState.PrivilegeCount = 1;
    58.             NewState.Privileges[0].Luid = lpLuid;
    59.             NewState.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    60.             AdjustTokenPrivileges(hToken, FALSE, &NewState, sizeof(NewState), NULL, NULL);
    61.             return TRUE;
    62.         }
    63.     CloseHandle(hToken);
    64.     }
    65. return FALSE;
    66. }
    67.  
    68. TCHAR *PrintProcessNameAndId(DWORD processID){
    69.     TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");
    70.     HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processID);
    71.     if(NULL != hProcess){
    72.         HMODULE hMod;
    73.         DWORD cbNeeded;
    74.  
    75.         if( EnumProcessModules(hProcess, &hMod, sizeof(hMod), &cbNeeded) ){
    76.             GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName)/sizeof(TCHAR) );
    77.         }
    78.     }
    79.  
    80.     CloseHandle( hProcess );
    81.  
    82.     return (TCHAR *)&szProcessName;
    83. }
    84.  
    85. int _tmain(int argc, _TCHAR* argv[])
    86. {
    87.     PMIB_TCPTABLE_EX pTcpTableEx;
    88.     PMIB_UDPTABLE_EX pUdpTableEx;
    89.     DWORD dwSize = 0, dwSizeUDP = 0;
    90.     DWORD i = 0, j = 0;
    91.     DWORD dwTcpErr, dwUdpErr;
    92.     DWORD pid;
    93.     char *ip_ptr, *ip_udp_ptr;
    94.     unsigned short *port_ptr, *port_udp_ptr;
    95.     HMODULE hMudule;
    96.  
    97.     GetPrivilege("SeDebugPrivilege");
    98.  
    99.     hMudule = LoadLibrary("Iphlpapi.dll");
    100.  
    101.     if(hMudule == NULL) return 0;
    102.  
    103.     lpfnAllocateAndGetTcpExTableFromStack = (PROCALLOCATEANDGETTCPEXTABLEFROMSTACK)GetProcAddress(hMudule,"AllocateAndGetTcpExTableFromStack");
    104.     lpfnAllocateAndGetUdpExTableFromStack = (PROCALLOCATEANDGETUDPEXTABLEFROMSTACK)GetProcAddress(hMudule,"AllocateAndGetUdpExTableFromStack");
    105.  
    106.     if(lpfnAllocateAndGetTcpExTableFromStack == NULL) return 0;
    107.     if(lpfnAllocateAndGetUdpExTableFromStack == NULL) return 0;
    108.  
    109.     pTcpTableEx = (MIB_TCPTABLE_EX *) malloc(sizeof(MIB_TCPTABLE_EX));
    110.     if(pTcpTableEx == NULL){
    111.         printf("Can't Allocate Memory.");
    112.         GlobalFree(pTcpTableEx);
    113.     }
    114.  
    115.     pUdpTableEx = (MIB_UDPTABLE_EX *) malloc(sizeof(MIB_UDPTABLE_EX));
    116.     if(pUdpTableEx == NULL){
    117.         printf("can't Allocate Memory.");
    118.         GlobalFree(pUdpTableEx);
    119.     }
    120.  
    121.     dwTcpErr = lpfnAllocateAndGetTcpExTableFromStack(&pTcpTableEx, TRUE, GetProcessHeap(), 0, 2);
    122.     dwUdpErr = lpfnAllocateAndGetUdpExTableFromStack(&pUdpTableEx, TRUE, GetProcessHeap(), 0, 2);
    123.  
    124.     if(dwTcpErr == ERROR_SUCCESS){
    125.         printf("\n\nOpened TCP Ports\n");
    126.         printf("------------------\n\n");
    127.         for(i = 0; i < pTcpTableEx->dwNumEntries; i++){
    128.             ip_ptr = (char *)&pTcpTableEx->table[i].dwLocalAddr;
    129.             port_ptr = (unsigned short *)&pTcpTableEx->table[i].dwLocalPort;
    130.             pid = pTcpTableEx->table[i].dwProcessId;
    131.             if(pid == 4){
    132.                 printf("%s:%ld <---> System\n",inet_ntoa(*(struct in_addr *)ip_ptr), htons(*port_ptr));
    133.             }
    134.             else{
    135.                 printf("%s:%ld <---> %s\n",inet_ntoa(*(struct in_addr *)ip_ptr),htons(*port_ptr),PrintProcessNameAndId(pid));
    136.             }
    137.         }
    138.     }
    139.  
    140.     if(dwUdpErr == ERROR_SUCCESS){
    141.         printf("\n\nOpened UDP Ports\n");
    142.         printf("----------------\n\n");
    143.         for(i=0; i<pUdpTableEx->dwNumEntries;i++)
    144.         {
    145.             ip_udp_ptr = (char *)&pUdpTableEx->table[i].dwLocalAddr;
    146.             port_udp_ptr = (unsigned short *)&pUdpTableEx->table[i].dwLocalPort;
    147.             pid = pUdpTableEx->table[i].dwProcessId;
    148.             if(pid == 4)
    149.             {
    150.             printf("%s:%ld <---> System\n",inet_ntoa(*(struct in_addr *)ip_udp_ptr),htons(*port_udp_ptr));
    151.             }
    152.             else
    153.             {
    154.                 printf("%s:%ld <---> %s\n",inet_ntoa(*(struct in_addr *)ip_udp_ptr),htons(*port_udp_ptr),PrintProcessNameAndId(pid));
    155.             }
    156.         }
    157.     }
    158.  
    159.     printf("\n\nPress any key to exit....");
    160.  
    161.  
    162.     return 0;
    163. }
    Собственно где то накосил..... не огу увидеть где !
     
  2. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.568
    Адрес:
    Russia
    1) if(LookupPrivilegeValue(NULL, SeNamePriv, &lpLuid)){
    надо
    if(LookupPrivilegeValueA(NULL, SeNamePriv, &lpLuid)){
    Или настройки проекта на мультибайт переключите.

    2)
    hMudule = LoadLibrary("Iphlpapi.dll");
    исправляем на
    hMudule = LoadLibrary(L"Iphlpapi.dll");
    Или опять же настройки проекта на мультибайт переключите.

    И вообще - прекращайте копипастить. И займитесь наконец изучением настроек студии, UNICODE строк и тп.
     
  3. FullZer0

    FullZer0 New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2008
    Сообщения:
    24
    Спасибо за помощь ! Если не затруднит подкинь мануалы по настройкам Студии, желательно на Русском ;)