Welche Headerdatei fehlt ?
-
Ich versuche mich grade im NT-Dienstmanagement.
Also anzeigen der services starten stoppen etc...ich benutze MS Visual C++ und bekomme mit folgenden includes:
#include <Windows.h> #include <Winsvc.h> #include <Tlhelp32.h> #include <stdio.h>diese Fehlermeldungen:
MyProjects\catX\main.cpp(52) : error C2065: 'SERVICE_STATUS_PROCESS' : undeclared identifier MyProjects\catX\main.cpp(80) : error C2065: 'QueryServiceStatusEx' : undeclared identifier \MyProjects\catX\main.cpp(80) : error C2065: 'SC_STATUS_PROCESS_INFO' : undeclared identifier \MyProjects\catX\main.cpp(174) : error C2228: left of '.dwCurrentState' must have class/struct/union typeMsdn sagt dazu :
Declared in Winsvc.h; include Windows.h. | Link to Advapi32.lib. | Requires Advapi32.dll.ich bin mir nicht ganz sicher ob die dll gelinkt ist habe jedenfalls die advapi32.lib gelinkt wie ich eine dll linke konnte ich leider nicht rausfinden.
liegt es daran oder fehlt mir ein header?
bin für jede hilfe dankbar
mfg c°h°
PS ( wenn msdn sagt declared in winsvc.h muss ich die dann includen oder muss ich etwas anderes machen ? )
-
"undeclared identifier" bedeutet, daß der Compiler den Namen nicht kennt. D.h. du solltest mal in der Winsvc.h nachsehen, ob die wirklich drinstehen.
(ich weiß nicht, ob das wichtig ist, aber eventuell könnte das "Requires Windows Vista, Windows XP, or Windows 2000 Professional." auch Probleme bereiten)
PS: Wenn da steht "declared in x; include y" mußt du es nicht direkt einbinden - das bedeutet, daß irgendwo in y ein "#include <x>" drinsteht.
-
Vermutlich hat dein VS dise Funktionen noch nicht... installieren entweder ein passendes PSDK oder verwende einen neueren Compiler...
-
ja seitdem ich nach psdk gegoglet habe glaube ich auch das meine version veraltet ist arbeite noch mit visual c++ 6.0

habe diesen dl link gefunden: http://www.microsoft.com/downloads/details.aspx?FamilyID=eba0128f-a770-45f1-86f3-7ab010b398a3&DisplayLang=en
dort steht leider auch:
This SDK does not support working with Microsoft Visual C/C++
, 6.0 as support for VC 6.0 has ended

dh wohl ich muss mir einen neuen compiler zulegen.
Welcher freeware compiler ist denn zu empfehlen und kommt mit den neuesten winapi befehlen zurecht ?
-
Du solltest Dir vielleicht einfach mal das anschauen, was im WinAPI Forum ganz oben steht...
ABer extra für Dich auch hier:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
-
DANKE

Habs mir runtergeladen installiert und die includes einfach ausgetauscht - sieht nun sehr gut aus
Haber nur leider noch einen Fehler an dem ich mir die Zähne ausbeisse.
[...] SC_HANDLE sc = OpenSCManager (NULL,NULL,SC_MANAGER_ENUMERATE_SERVICE); if (sc != NULL){ short getprocinfo = 1; ENUM_SERVICE_STATUS service_data; ENUM_SERVICE_STATUS *lpservice; BOOL retVal; DWORD bytesNeeded,srvCount,resumeHandle = 0,srvType, srvState; SERVICE_STATUS_PROCESS ssStatus; SC_HANDLE schService; [...] srvType = SERVICE_WIN32; srvState = SERVICE_STATE_ALL; retVal = EnumServicesStatus (sc,srvType,srvState,&service_data,sizeof(service_data),&bytesNeeded,&srvCount,&resumeHandle); DWORD err = GetLastError(); if ((retVal == FALSE) || err == ERROR_MORE_DATA){ DWORD dwBytes = bytesNeeded + sizeof(ENUM_SERVICE_STATUS); lpservice = new (ENUM_SERVICE_STATUS); EnumServicesStatus (sc, srvType, srvState,lpservice,dwBytes,&bytesNeeded,&srvCount,&resumeHandle); } int i; for(i=0;i<(int)srvCount;i++){ schService = OpenService(sc,lpservice[i].lpServiceName,SERVICE_ALL_ACCESS); if ( QueryServiceStatusEx(schService,SC_STATUS_PROCESS_INFO, &ssStatus, sizeof(SERVICE_STATUS_PROCESS),&bytesNeeded)==0 ){ [...]bringt mir diesen Fehler er betrifft die unterste codezeile
catX\main.cpp(79) : error C2664: 'QueryServiceStatusEx' : cannot convert parameter 3 from 'struct _SERVICE_STATUS_PROCESS *' to 'unsigned char *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style castmsdn sagt
"Use SC_STATUS_PROCESS_INFO to retrieve the service status information. The lpBuffer parameter is a pointer to a SERVICE_STATUS_PROCESS structure."Ein Fehler bei der SERVICE_STATUS_PROCESS initialisierung ?
danke
MFG c°h°
-
BOOL QueryServiceStatusEx(
SC_HANDLE hService,
SC_STATUS_TYPE InfoLevel,
LPBYTE lpBuffer,
DWORD cbBufSize,
LPDWORD pcbBytesNeeded
);Die Fehlermeldung sagt dir doch was zu tun ist..
conversion requires reinterpret_cast, C-style cast or function-style cast
QueryServiceStatusEx(schService,SC_STATUS_PROCESS_INFO, (LPBYTE)&ssStatus, sizeof(SERVICE_STATUS_PROCESS),&bytesNeeded)
-
Dank Dir
Anfängerfehler
