Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 12

Помощь с фиксом ошибок

16.05.2013, 22:00. Показов 1786. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#include <stdafx.h>
 
//#define IS_WIN     //Заккоментить этот дефайн, если для Linux-a
 
#include <stdio.h>
#include <pdh.h>
#include <conio.h>
 
#pragma comment(lib,"pdh.lib")
 
#define PDH_ERROR -1
 
PDH_STATUS pdh_Init (HQUERY &hQuery, HCOUNTER &hCounter);
int GetCPUUsage (HQUERY hQuery, HCOUNTER hCounter, PDH_STATUS &pdhStatus);
void pdh_Uninit (HQUERY hQuery, HCOUNTER hCounter);
void ShowErrorMessage(PDH_STATUS pdhStatus);
void begin();
 
#ifdef IS_WIN
 
    #include <Windows.h>
    #include <stdlib.h>    //Для команды system()
    #define get_computer_name(name,size) GetComputerName(name, size);
 
#else
 
    #include <unistd.h>
    #include <sys/param.h>
 
    int  get_computer_name(char*  name, unsigned long size) 
    {
         return gethostname(name, size);
    }
 
#endif
 
int main(int argc, char* argv[])
 
{
#ifdef IS_WIN
    wchar_t name[255] = { '\0' };
    DWORD dsize = 255;
    LPDWORD size=&dsize;
    get_computer_name(name,size)
    wprintf(L"computer name: %s\n", name);
    system("PAUSE");
#else
   char name[255] = { '\0' };
   get_computer_name(name, 255);
   printf("computer name: %s\n", name);
   getchar();
#endif
   return 0;
 
}
 
void main(void)
{
    Sleep(1000);
    begin();
    printf(TEXT("Press any key to continue")); 
    while (!_getch());
}
 
void begin()
{
    PDH_STATUS  pdhStatus      = 0;
 
    HQUERY hQuery;
    HQUERY hCounter;
    int iUsage = 0;
    pdhStatus = pdh_Init(hQuery, hCounter);
 
    if ( pdhStatus == ERROR_SUCCESS )
    {
       while (GetKeyState(VK_ESCAPE) >= 0)
        {
            iUsage = GetCPUUsage(hQuery, hCounter, pdhStatus);
 
            if (iUsage != PDH_ERROR)
                printf("%3i%%\r\n", iUsage);
            else
            ShowErrorMessage(pdhStatus);
        }
        pdh_Uninit(hQuery, hCounter);
    }
    else
        ShowErrorMessage(pdhStatus);
}
 
void ShowErrorMessage(PDH_STATUS pdhStatus)
{
    LPSTR szMessage = NULL;
 
    FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
                    FORMAT_MESSAGE_FROM_HMODULE,
                    GetModuleHandle("PDH.DLL"), pdhStatus,
                    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                    szMessage, 0, NULL);
    printf("Error №%i:  %s\r\n", pdhStatus, szMessage);
    LocalFree(szMessage);
}
 
PDH_STATUS pdh_Init(HQUERY &hQuery, HCOUNTER &hCounter)
{
    PDH_STATUS  pdhResult   = 0;
    TCHAR       szCounterPath[1024];
    DWORD       dwPathSize  = 1024;
    PDH_COUNTER_PATH_ELEMENTS pe;
    DWORD       dwType      = 0;
    
    pdhResult = PdhOpenQuery( NULL, 0, &hQuery ); 
    if ( pdhResult != ERROR_SUCCESS )
        return pdhResult;
 
    pe.szMachineName     = 0l;
    pe.szObjectName      = "Processor";
    pe.szInstanceName    = "_Total";
    pe.szParentInstance  = NULL;
    pe.dwInstanceIndex   = 0;
    pe.szCounterName     = "% Processor Time";
 
    pdhResult = PdhMakeCounterPath(&pe, szCounterPath, &dwPathSize, 0);
    if (pdhResult != ERROR_SUCCESS) 
        return pdhResult;
    pdhResult = PdhAddCounter(hQuery, szCounterPath, 0, &hCounter);
    if (pdhResult != ERROR_SUCCESS)
        return pdhResult;
    return pdhResult;
}
 
int GetCPUUsage(HQUERY hQuery, HCOUNTER hCounter, PDH_STATUS &pdhStatus)
{
    DWORD       dwType      = 0;
    pdhStatus = PdhCollectQueryData(hQuery);
    if (pdhStatus != ERROR_SUCCESS)
        return PDH_ERROR;
    _PDH_FMT_COUNTERVALUE pfci;
    ZeroMemory(&pfci, sizeof(pfci));
    pdhStatus = PdhGetFormattedCounterValue( hCounter, PDH_FMT_DOUBLE, &dwType, &pfci); 
    if (pdhStatus != ERROR_SUCCESS) 
        return PDH_ERROR;
    return (int)pfci.doubleValue;
} 
 
void pdh_Uninit(HQUERY hQuery, HCOUNTER hCounter)
{
    PdhRemoveCounter(hCounter); 
    PdhCloseQuery(hQuery);
}
Code
1
1>c:\users\admin\desktop\consoleapplication3\consoleapplication3\consoleapplication3.cpp(27): fatal error C1083: Не удается открыть файл включение: unistd.h: No such file or directory
Добавлено через 57 минут
ап.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.05.2013, 22:00
Ответы с готовыми решениями:

Помощь с фиксом ошибок
Код: // ConsoleApplication2.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include...

Помощь с фиксом скрипта
:) Столкнулся с такой проблемой, после перезапуска процесса не работает привязка к определенному ядру, которое было установлено и процесс...

Дерево .Помощь в исправлении ошибок
Доброе всем время суток! Написала дерево с функциями реализации: 1)Добавления элемента 2)Прохождения 3)Поиска 4)Удаления Но вот...

11
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
16.05.2013, 22:27
Цитата Сообщение от Strick Посмотреть сообщение
//#define IS_WIN * * //Заккоментить этот дефайн, если для Linux-a
Раскомментируйте дефайн.
1
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 12
16.05.2013, 23:18  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
c:\users\admin\desktop\consoleapplication3\consoleapplication3\consoleapplication3.cpp(58): error C2731: main: функция не может быть перегружена
1>          c:\users\admin\desktop\consoleapplication3\consoleapplication3\consoleapplication3.cpp(57): см. объявление "main"
1>c:\users\admin\desktop\consoleapplication3\consoleapplication3\consoleapplication3.cpp(61): error C2664: printf: невозможно преобразовать параметр 1 из "const wchar_t [26]" в "const char *"
1>          Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>c:\users\admin\desktop\consoleapplication3\consoleapplication3\consoleapplication3.cpp(97): error C2664: GetModuleHandleW: невозможно преобразовать параметр 1 из "const char [8]" в "LPCWSTR"
1>          Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>c:\users\admin\desktop\consoleapplication3\consoleapplication3\consoleapplication3.cpp(117): error C2440: =: невозможно преобразовать "const char [10]" в "LPWSTR"
1>          Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>c:\users\admin\desktop\consoleapplication3\consoleapplication3\consoleapplication3.cpp(118): error C2440: =: невозможно преобразовать "const char [7]" в "LPWSTR"
1>          Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>c:\users\admin\desktop\consoleapplication3\consoleapplication3\consoleapplication3.cpp(121): error C2440: =: невозможно преобразовать "const char [17]" в "LPWSTR"
1>          Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
Как поправить?
0
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
16.05.2013, 23:42
Отключите Юникод
в visual studio 2008:
Project->Properties->Configuration Properties->General->Character Set->выбрать Not Set
Строки 6, 9-17, 56-150 удалить.
1
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 12
17.05.2013, 07:55  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#include <stdafx.h>
 
#define IS_WIN     //Заккоментить этот дефайн, если для Linux-a
 
#include <stdio.h>
#include <pdh.h>
#include <conio.h>
 
#pragma comment(lib,"pdh.lib")
 
#define PDH_ERROR -1
 
PDH_STATUS pdh_Init (HQUERY &hQuery, HCOUNTER &hCounter);
int GetCPUUsage (HQUERY hQuery, HCOUNTER hCounter, PDH_STATUS &pdhStatus);
void pdh_Uninit (HQUERY hQuery, HCOUNTER hCounter);
void ShowErrorMessage(PDH_STATUS pdhStatus);
void begin();
 
#ifdef IS_WIN
 
    #include <Windows.h>
    #include <stdlib.h>    //Для команды system()
    #define get_computer_name(name,size) GetComputerName(name, size);
 
#else
 
    #include <unistd.h>
    #include <sys/param.h>
 
    int  get_computer_name(char*  name, unsigned long size) 
    {
         return gethostname(name, size);
    }
 
#endif
 
int main(int argc, char* argv[])
 
{
#ifdef IS_WIN
    wchar_t name[255] = { '\0' };
    DWORD dsize = 255;
    LPDWORD size=&dsize;
    get_computer_name(name,size)
    wprintf(L"computer name: %s\n", name);
    system("PAUSE");
#else
   char name[255] = { '\0' };
   get_computer_name(name, 255);
   printf("computer name: %s\n", name);
   getchar();
#endif
   return 0;
 
}
 
void main(void)
{
    Sleep(1000);
    begin();
    printf(TEXT("Press any key to continue")); 
    while (!_getch());
}
 
void begin()
{
    PDH_STATUS  pdhStatus      = 0;
 
    HQUERY hQuery;
    HQUERY hCounter;
    int iUsage = 0;
    pdhStatus = pdh_Init(hQuery, hCounter);
 
    if ( pdhStatus == ERROR_SUCCESS )
    {
       while (GetKeyState(VK_ESCAPE) >= 0)
        {
            iUsage = GetCPUUsage(hQuery, hCounter, pdhStatus);
 
            if (iUsage != PDH_ERROR)
                printf("%3i%%\r\n", iUsage);
            else
            ShowErrorMessage(pdhStatus);
        }
        pdh_Uninit(hQuery, hCounter);
    }
    else
        ShowErrorMessage(pdhStatus);
}
 
void ShowErrorMessage(PDH_STATUS pdhStatus)
{
    LPSTR szMessage = NULL;
 
    FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
                    FORMAT_MESSAGE_FROM_HMODULE,
                    GetModuleHandle("PDH.DLL"), pdhStatus,
                    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                    szMessage, 0, NULL);
    printf("Error №%i:  %s\r\n", pdhStatus, szMessage);
    LocalFree(szMessage);
}
 
PDH_STATUS pdh_Init(HQUERY &hQuery, HCOUNTER &hCounter)
{
    PDH_STATUS  pdhResult   = 0;
    TCHAR       szCounterPath[1024];
    DWORD       dwPathSize  = 1024;
    PDH_COUNTER_PATH_ELEMENTS pe;
    DWORD       dwType      = 0;
    
    pdhResult = PdhOpenQuery( NULL, 0, &hQuery ); 
    if ( pdhResult != ERROR_SUCCESS )
        return pdhResult;
 
    pe.szMachineName     = 0l;
    pe.szObjectName      = "Processor";
    pe.szInstanceName    = "_Total";
    pe.szParentInstance  = NULL;
    pe.dwInstanceIndex   = 0;
    pe.szCounterName     = "% Processor Time";
 
    pdhResult = PdhMakeCounterPath(&pe, szCounterPath, &dwPathSize, 0);
    if (pdhResult != ERROR_SUCCESS) 
        return pdhResult;
    pdhResult = PdhAddCounter(hQuery, szCounterPath, 0, &hCounter);
    if (pdhResult != ERROR_SUCCESS)
        return pdhResult;
    return pdhResult;
}
 
int GetCPUUsage(HQUERY hQuery, HCOUNTER hCounter, PDH_STATUS &pdhStatus)
{
    DWORD       dwType      = 0;
    pdhStatus = PdhCollectQueryData(hQuery);
    if (pdhStatus != ERROR_SUCCESS)
        return PDH_ERROR;
    _PDH_FMT_COUNTERVALUE pfci;
    ZeroMemory(&pfci, sizeof(pfci));
    pdhStatus = PdhGetFormattedCounterValue( hCounter, PDH_FMT_DOUBLE, &dwType, &pfci); 
    if (pdhStatus != ERROR_SUCCESS) 
        return PDH_ERROR;
    return (int)pfci.doubleValue;
} 
 
void pdh_Uninit(HQUERY hQuery, HCOUNTER hCounter)
{
    PdhRemoveCounter(hCounter); 
    PdhCloseQuery(hQuery);
}
c:\users\admin\desktop\consoleapplicatio n3\consoleapplication3\consoleapplicatio n3.cpp(44): error C2664: GetComputerNameA: невозможно преобразовать параметр 1 из "wchar_t [255]" в "LPSTR"
1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>c:\users\admin\desktop\consoleapplicat ion3\consoleapplication3\consoleapplicat ion3.cpp(58): error C2731: main: функция не может быть перегружена
1> c:\users\admin\desktop\consoleapplicatio n3\consoleapplication3\consoleapplicatio n3.cpp(57): см. объявление "main
Удалять код не стал.
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
17.05.2013, 08:37
Если отключили Юникод, то все wchar_t меняйте на char
wprintf на printf
и еще у Вас две функции main
1
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 12
17.05.2013, 15:38  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
и еще у Вас две функции main
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
int main(int argc, char* argv[])
 
{
#ifdef IS_WIN
    wchar_t name[255] = { '\0' };
    DWORD dsize = 255;
    LPDWORD size=&dsize;
    get_computer_name(name,size)
    wprintf(L"computer name: %s\n", name);
    system("PAUSE");
#else
   char name[255] = { '\0' };
   get_computer_name(name, 255);
   printf("computer name: %s\n", name);
   getchar();
#endif
   return 0;
 
}
 
void main(void)
{
    Sleep(1000);
    begin();
    printf(TEXT("Press any key to continue")); 
    while (!_getch());
}
Так они же отличаются? Если я не прав, то как преобразовать?

Добавлено через 12 минут
Разобрался

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <stdafx.h>
#include <stdio.h>
#include <pdh.h>
#include <conio.h>
 
#pragma comment(lib,"pdh.lib")
 
 
#define PDH_ERROR -1
 
PDH_STATUS pdh_Init (HQUERY &hQuery, HCOUNTER &hCounter);
 
int GetCPUUsage (HQUERY hQuery, HCOUNTER hCounter, PDH_STATUS &pdhStatus);
 
void pdh_Uninit (HQUERY hQuery, HCOUNTER hCounter);
 
void ShowErrorMessage(PDH_STATUS pdhStatus);
 
void begin();
 
 
 
void main(void)
{
    Sleep(1000);
    begin();
    printf(TEXT("Press any key to continue"));
    while (!_getch()); 
}
 
void begin()
 
{
    PDH_STATUS  pdhStatus      = 0;
 
    HQUERY hQuery;
    HQUERY hCounter;
    int iUsage = 0;
    pdhStatus = pdh_Init(hQuery, hCounter); 
 
 
    if ( pdhStatus == ERROR_SUCCESS )
    {
 
       while (GetKeyState(VK_ESCAPE) >= 0)
        {
 
            iUsage = GetCPUUsage(hQuery, hCounter, pdhStatus);
 
 
            if (iUsage != PDH_ERROR)
                printf("%3i%%\r\n", iUsage); 
            else 
 
            ShowErrorMessage(pdhStatus);
 
        }
 
        pdh_Uninit(hQuery, hCounter); 
    }
    else 
        ShowErrorMessage(pdhStatus);
}
 
void ShowErrorMessage(PDH_STATUS pdhStatus)
{
    LPSTR szMessage = NULL;
 
    FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
                    FORMAT_MESSAGE_FROM_HMODULE,
                    GetModuleHandle("PDH.DLL"), pdhStatus,
                    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                    szMessage, 0, NULL);
    printf("Error №%i:  %s\r\n", pdhStatus, szMessage); 
    LocalFree(szMessage); 
}
 
PDH_STATUS pdh_Init(HQUERY &hQuery, HCOUNTER &hCounter)
 
{
    PDH_STATUS  pdhResult   = 0;
    TCHAR       szCounterPath[1024];
    DWORD       dwPathSize  = 1024;
    PDH_COUNTER_PATH_ELEMENTS pe;
    DWORD       dwType      = 0;
    
    pdhResult = PdhOpenQuery( NULL, 0, &hQuery ); 
    if ( pdhResult != ERROR_SUCCESS ) 
        return pdhResult; 
 
    pe.szMachineName     = 0l;
    pe.szObjectName      = "Processor";
    pe.szInstanceName    = "_Total";
    pe.szParentInstance  = NULL;
    pe.dwInstanceIndex   = 0;
    pe.szCounterName     = "% Processor Time";
 
 
    pdhResult = PdhMakeCounterPath(&pe, szCounterPath, &dwPathSize, 0);
    if (pdhResult != ERROR_SUCCESS)
        return pdhResult;
    pdhResult = PdhAddCounter(hQuery, szCounterPath, 0, &hCounter);
    if (pdhResult != ERROR_SUCCESS)
        return pdhResult; 
    return pdhResult;
}
Code
1
2
 error LNK2019: ссылка на неразрешенный внешний символ "int __cdecl GetCPUUsage(void *,void *,long &)" (?GetCPUUsage@@YAHPAX0AAJ@Z) в функции "void __cdecl begin(void)" (?begin@@YAXXZ)
1>ConsoleApplication4.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl pdh_Uninit(void *,void *)" (?pdh_Uninit@@YAXPAX0@Z) в функции "void __cdecl begin(void)" (?begin@@YAXXZ)
Как эту фичу поправить?
Разделил код, ибо в консоле эрроры
0
25 / 25 / 11
Регистрация: 02.01.2012
Сообщений: 371
17.05.2013, 15:46
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
PDH_STATUS pdh_Init(HQUERY &hQuery, HCOUNTER &hCounter)
{
    PDH_STATUS  pdhResult   = 0;
    TCHAR       szCounterPath[1024];
    DWORD       dwPathSize  = 1024;
    PDH_COUNTER_PATH_ELEMENTS pe;
    DWORD       dwType      = 0;
    
    pdhResult = PdhOpenQuery( NULL, 0, &hQuery ); 
    if ( pdhResult != ERROR_SUCCESS )
        return pdhResult;
 
    pe.szMachineName     = 0l;
    pe.szObjectName      = "Processor";
    pe.szInstanceName    = "_Total";
    pe.szParentInstance  = NULL;
    pe.dwInstanceIndex   = 0;
    pe.szCounterName     = "% Processor Time";
 
    pdhResult = PdhMakeCounterPath(&pe, szCounterPath, &dwPathSize, 0);
    if (pdhResult != ERROR_SUCCESS) 
        return pdhResult;
    pdhResult = PdhAddCounter(hQuery, szCounterPath, 0, &hCounter);
    if (pdhResult != ERROR_SUCCESS)
        return pdhResult;
    return pdhResult;
}
 
int GetCPUUsage(HQUERY hQuery, HCOUNTER hCounter, PDH_STATUS &pdhStatus)
{
    DWORD       dwType      = 0;
    pdhStatus = PdhCollectQueryData(hQuery);
    if (pdhStatus != ERROR_SUCCESS)
        return PDH_ERROR;
    _PDH_FMT_COUNTERVALUE pfci;
    ZeroMemory(&pfci, sizeof(pfci));
    pdhStatus = PdhGetFormattedCounterValue( hCounter, PDH_FMT_DOUBLE, &dwType, &pfci); 
    if (pdhStatus != ERROR_SUCCESS) 
        return PDH_ERROR;
    return (int)pfci.doubleValue;
} 
 
void pdh_Uninit(HQUERY hQuery, HCOUNTER hCounter)
{
    PdhRemoveCounter(hCounter); 
    PdhCloseQuery(hQuery);
}
Добавь вниз, а то функция объявлена, но не инициализирована
1
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 12
17.05.2013, 17:55  [ТС]
Cпасибо.
Еще вопрос.
http://data2.floomby.com/files... SUPhOA.jpg
Что обозначает данная ошибка?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <stdafx.h>
#include <stdio.h>
#include <pdh.h>
#include <conio.h>
 
#pragma comment(lib,"pdh.lib")
 
 
#define PDH_ERROR -1
 
PDH_STATUS pdh_Init (HQUERY &hQuery, HCOUNTER &hCounter);
 
void ShowErrorMessage(PDH_STATUS pdhStatus);
 
void begin();
 
 
 
void main(void)
{
    Sleep(1000);
    begin();
    printf(TEXT("Press any key to continue"));
    while (!_getch()); 
}
 
void begin()
 
{
    PDH_STATUS  pdhStatus      = 0;
 
    HQUERY hQuery;
    HQUERY hCounter;
    int iUsage = 0;
    pdhStatus = pdh_Init(hQuery, hCounter); 
 
 
    if ( pdhStatus == ERROR_SUCCESS )
    {
 
       while (GetKeyState(VK_ESCAPE) >= 0)
        {
         
            if (iUsage != PDH_ERROR)
                printf("%3i%%\r\n", iUsage); 
            else 
 
            ShowErrorMessage(pdhStatus);
 
        }
 
    }
    else 
        ShowErrorMessage(pdhStatus);
}
 
void ShowErrorMessage(PDH_STATUS pdhStatus)
{
    LPSTR szMessage = NULL;
 
    FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
                    FORMAT_MESSAGE_FROM_HMODULE,
                    GetModuleHandle("PDH.DLL"), pdhStatus,
                    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                    szMessage, 0, NULL);
    printf("Error №%i:  %s\r\n", pdhStatus, szMessage); 
    LocalFree(szMessage); 
}
 
PDH_STATUS pdh_Init(HQUERY &hQuery, HCOUNTER &hCounter)
{
    PDH_STATUS  pdhResult   = 0;
    TCHAR       szCounterPath[1024];
    DWORD       dwPathSize  = 1024;
    PDH_COUNTER_PATH_ELEMENTS pe;
    DWORD       dwType      = 0;
    
    pdhResult = PdhOpenQuery( NULL, 0, &hQuery ); 
    if ( pdhResult != ERROR_SUCCESS )
        return pdhResult;
 
    pe.szMachineName     = 0l;
    pe.szObjectName      = "Processor";
    pe.szInstanceName    = "_Total";
    pe.szParentInstance  = NULL;
    pe.dwInstanceIndex   = 0;
    pe.szCounterName     = "% Processor Time";
 
    pdhResult = PdhMakeCounterPath(&pe, szCounterPath, &dwPathSize, 0);
    if (pdhResult != ERROR_SUCCESS) 
        return pdhResult;
    pdhResult = PdhAddCounter(hQuery, szCounterPath, 0, &hCounter);
    if (pdhResult != ERROR_SUCCESS)
        return pdhResult;
    return pdhResult;
}
 
int GetCPUUsage(HQUERY hQuery, HCOUNTER hCounter, PDH_STATUS &pdhStatus)
{
    DWORD       dwType      = 0;
    pdhStatus = PdhCollectQueryData(hQuery);
    if (pdhStatus != ERROR_SUCCESS)
        return PDH_ERROR;
    _PDH_FMT_COUNTERVALUE pfci;
    ZeroMemory(&pfci, sizeof(pfci));
    pdhStatus = PdhGetFormattedCounterValue( hCounter, PDH_FMT_DOUBLE, &dwType, &pfci); 
    if (pdhStatus != ERROR_SUCCESS) 
        return PDH_ERROR;
    return (int)pfci.doubleValue;
} 
 
void pdh_Uninit(HQUERY hQuery, HCOUNTER hCounter)
{
    PdhRemoveCounter(hCounter); 
    PdhCloseQuery(hQuery);
}
Добавлено через 1 час 58 минут
ап.
0
25 / 25 / 11
Регистрация: 02.01.2012
Сообщений: 371
17.05.2013, 18:31
C++
1
2
3
pdhResult = PdhAddCounter(hQuery, szCounterPath, 0, &hCounter);
    if (pdhResult != ERROR_SUCCESS){::Beep(1000,1000);
    return pdhResult;}
Сигналит. Что вообще код делает? Комментируй все
1
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 12
18.05.2013, 10:15  [ТС]
Описание функций кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#include <stdio.h>
#include <pdh.h>
#include <conio.h>
 
#pragma comment(lib,"pdh.lib")
 
 
 
/************************** Описание функций ***************************/
 
#define PDH_ERROR -1
// Функция инициализирует PDH (performance data helper)
PDH_STATUS pdh_Init (HQUERY &hQuery, HCOUNTER &hCounter);
// Функция возвращает в случае удачи загруженность проца, в противном случае PHG_ERROR (-1)
int GetCPUUsage (HQUERY hQuery, HCOUNTER hCounter, PDH_STATUS &pdhStatus);
// Функция анинициализирует PDH
void pdh_Uninit (HQUERY hQuery, HCOUNTER hCounter);
// Функция показывает сообщение об ошибке
void ShowErrorMessage(PDH_STATUS pdhStatus);
// хмм... в названии функции все сказано!
void begin();
 
/****************************************************************************/
 
 
void main(void)
{
    Sleep(1000);
    begin();
    printf(TEXT("Press any key to continue")); // нажмите "any key" на клавиатуре 
    while (!_getch()); // ждем, пока юзверь не "клацнет" "any key"
}
 
void begin()
// хмм... в названии функции все сказано!
{
    PDH_STATUS  pdhStatus      = 0;
 
    HQUERY hQuery;
    HQUERY hCounter;
    int iUsage = 0;
    pdhStatus = pdh_Init(hQuery, hCounter); // инициализируем PDH
 
 // если не произошел облом с иницализации PDH, то
    if ( pdhStatus == ERROR_SUCCESS )
    {
 // пока юзверь не зажмет клавишу Esc, то
       while (GetKeyState(VK_ESCAPE) >= 0)
        {
 // получаем загруженность проца
            iUsage = GetCPUUsage(hQuery, hCounter, pdhStatus);
 
 // если не произошла ошибка (т.е. не вернулось значение PHG_ERROR)
            if (iUsage != PDH_ERROR)
                printf("%3i%%\r\n", iUsage); // выводим значение
            else // а если произошла ошибка, то
// показываем сообщение, что произошла ошибка такая-то
            ShowErrorMessage(pdhStatus);
 //         Sleep(500); // ждем 0.5 секунд(ы)
        }
// если юзверь все-таки клацнул Esc, то флаг ему в руки :)
        pdh_Uninit(hQuery, hCounter); // заканчиваем работу с PDH
    }
    else // если произошла ошибка при инициализации PDH
        ShowErrorMessage(pdhStatus); // показываем Еррорное сообщение
}
 
void ShowErrorMessage(PDH_STATUS pdhStatus)
// Сама функция показа сообщения об ошибке
{
    LPSTR szMessage = NULL;
// грузим строку с ошибкой в szMessage. Память выделит функция
    FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
                    FORMAT_MESSAGE_FROM_HMODULE,
                    GetModuleHandle("PDH.DLL"), pdhStatus,
                    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                    szMessage, 0, NULL);
    printf("Error №%i:  %s\r\n", pdhStatus, szMessage); // показываем ошибку
    LocalFree(szMessage); // очищаем буфер
}
 
PDH_STATUS pdh_Init(HQUERY &hQuery, HCOUNTER &hCounter)
// инициализируем PDH
{
    PDH_STATUS  pdhResult   = 0;
    TCHAR       szCounterPath[1024];
    DWORD       dwPathSize  = 1024;
    PDH_COUNTER_PATH_ELEMENTS pe;
    DWORD       dwType      = 0;
    
    pdhResult = PdhOpenQuery( NULL, 0, &hQuery ); // запрос на открытие PDH 
    if ( pdhResult != ERROR_SUCCESS ) // если была ошибка, то
        return pdhResult; // выходим, возвращая номер ошибки
 
    pe.szMachineName     = 0l;
    pe.szObjectName      = "Processor";
    pe.szInstanceName    = "_Total";
    pe.szParentInstance  = NULL;
    pe.dwInstanceIndex   = 0;
    pe.szCounterName     = "% Processor Time";
 
// создаем путь к счетчику PDH
    pdhResult = PdhMakeCounterPath(&pe, szCounterPath, &dwPathSize, 0);
    if (pdhResult != ERROR_SUCCESS) // если была ошибка, то
        return pdhResult; // выходим, возвращая номер ошибки
// открываем счетчик PDH
    pdhResult = PdhAddCounter(hQuery, szCounterPath, 0, &hCounter);
    if (pdhResult != ERROR_SUCCESS) // если была ошибка, то
        return pdhResult; // выходим, возвращая номер ошибки
 // если дошли до этого места, то ошибки на 100% не было!
    return pdhResult;
}
 
int GetCPUUsage(HQUERY hQuery, HCOUNTER hCounter, PDH_STATUS &pdhStatus)
// получаем загруженность проца
{
    DWORD       dwType      = 0;
// даем запрос на сборы инфы
    pdhStatus = PdhCollectQueryData(hQuery);
    if (pdhStatus != ERROR_SUCCESS) // если была ошибка, то
        return PDH_ERROR; // выходим, возвращая ошибку
    _PDH_FMT_COUNTERVALUE pfci;
    ZeroMemory(&pfci, sizeof(pfci)); // очищаем структуру pfci
// Получаем инфу о загруженности проца!
    pdhStatus = PdhGetFormattedCounterValue( hCounter, PDH_FMT_DOUBLE, &dwType, &pfci); 
    if (pdhStatus != ERROR_SUCCESS) // если была ошибка, то
        return PDH_ERROR; // выходим, возвращая ошибку
    return (int)pfci.doubleValue; // возвращаем загруженность проца!
} 
 
void pdh_Uninit(HQUERY hQuery, HCOUNTER hCounter)
// анинициализация 
{
    PdhRemoveCounter(hCounter); // удаляем счетчик
    PdhCloseQuery(hQuery); // закрываем запрос
}
Добавлено через 49 минут
ап.

Добавлено через 1 час 3 минуты
ап.

Добавлено через 1 час 0 минут
ап.

Добавлено через 1 час 6 минут
ап.

Добавлено через 3 часа 5 минут
Ап.

Добавлено через 7 часов 13 минут
Ап.

Добавлено через 1 час 5 минут
Цитата Сообщение от BuGi Посмотреть сообщение
C++
1
2
3
pdhResult = PdhAddCounter(hQuery, szCounterPath, 0, &hCounter);
    if (pdhResult != ERROR_SUCCESS){::Beep(1000,1000);
    return pdhResult;}
Сигналит. Что вообще код делает? Комментируй все
Пробовал, никаких изменений.
http://data2.floomby.com/files... SUPhOA.jpg
0
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
18.05.2013, 20:41
Для начала неплохо бы было определить какая именно функция завершается с ошибкой. Вам нужно либо освоить пошаговую отладку или сделать вывод на экран соответствующего сообщения после каждой проверки на ошибки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.05.2013, 20:41
Помогаю со студенческими работами здесь

Помощь в поиске ошибок в программе
люди помогите новичку есть програма.немогу найти в ней ошибки чтобы запустить(( EXPN FUNCTION RN1,C12 ...

Помощь в исправлении ошибок в коде
NAK1 STORAGE 10 NAK2 STORAGE 10 NAK3 STORAGE 10 SIMULATE 5 GENERATE 10, 5 ADVANCE 10, 3 TEST L S$NAK1, S$NAK2, MET1 MET1 TEST...

Нужна помощь с устранениями ошибок в IE (7 и 8)
Делаю домашку по верстке, возник ряд проблем, на данном этапе хочу понять почему шрифт не подгружаеться в IE 7 и 8, в 9 все хорошо А вот...

Нужна помощь с исправлением ошибок в коде
Добрый день! Нужна помощь с исправлением ошибок в коде. unit Unit1; interface uses Windows, Messages, SysUtils, Variants,...

Нужна помощь в исправлении ошибок в методах cтруктуры
Доброго времени суток, товарищи- программисты! Нужна помощь в исправлении ошибок в методах: в методе инициализации структуры и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru