<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[EnumServicesStatusEx() beendet Programm ohne Fehler]]></title><description><![CDATA[<p>Hi,</p>
<p>ich hab ein Servicelist Programm geschrieben das falls ein Dienst läuft den zugehörigen Prozess mitanzeigt.</p>
<p>Leider macht es auf WINXP SP2 Probleme da das Programm keine Fehler auswirft hab ich per printf() Checkausgaben eingebaut. So konnte ich die genaue Codezeile ausmachen bei der das Programm einfach stopt.</p>
<pre><code>void grabservices(BOOL run){

	printf(&quot;1&quot;);
    SC_HANDLE sc = OpenSCManager (NULL,NULL,SC_MANAGER_ENUMERATE_SERVICE);
    if (sc != NULL){
		printf(&quot;2&quot;);

		short getprocinfo = 1;
		int running = 0;
		int retVal;
        ENUM_SERVICE_STATUS_PROCESS *lpservice;
        DWORD bytesNeeded,srvCount,resumeHandle = 0;
		SERVICE_STATUS_PROCESS ssStatus;
		SC_HANDLE schService;

	    HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
		if (hSnapshot == NULL){	//Der vom jeweiligen Dienst gestartete´Prozess kann nicht angezeigt werden
		  getprocinfo  = 0;
	    }

		PROCESSENTRY32 pe;
	    pe.dwSize=sizeof(PROCESSENTRY32);

		printf(&quot;3&quot;);
        retVal = EnumServicesStatusEx (sc,SC_ENUM_PROCESS_INFO, SERVICE_WIN32, SERVICE_STATE_ALL,0,0,&amp;bytesNeeded,&amp;srvCount,&amp;resumeHandle, NULL);

		DWORD err = GetLastError();
        if (retVal != 0 || err == ERROR_MORE_DATA){
			printf(&quot;4\n&quot;);
            DWORD dwBytes = bytesNeeded;// + sizeof(ENUM_SERVICE_STATUS_PROCESS);
			printf(&quot;4.01\n&quot;);
            lpservice = new (ENUM_SERVICE_STATUS_PROCESS);
			printf(&quot;4.02\n&quot;);

//------------------------ der nächste Befehl führt zum Programmabbruch -----

            retVal = EnumServicesStatusEx (sc,SC_ENUM_PROCESS_INFO, SERVICE_WIN32, SERVICE_STATE_ALL,(LPBYTE)lpservice,dwBytes,&amp;bytesNeeded,&amp;srvCount,&amp;resumeHandle, NULL);
			err = GetLastError();
			printf(&quot; EnumServicesStatusEx - FehlerCode: %d&quot;);
			printf(&quot;4.1\n&quot;);
</code></pre>
<p>die Ausgabe von SP1 sieht so aus</p>
<blockquote>
<p>C:\&gt;catz +listx<br />
82 Dienste gefunden<br />
01. &lt;Alerter&gt; Warndienst<br />
02. &lt;ALG&gt; Gatewaydienst auf Anwendungsebene<br />
03. &lt;AntiVirService&gt; AntiVir Service | 1712 AVGUARD.EXE<br />
04. &lt;AppMgmt&gt; Anwendungsverwaltung<br />
05. &lt;aspnet_state&gt; <a href="http://ASP.NET" rel="nofollow">ASP.NET</a> State Service<br />
06. &lt;AudioSrv&gt; Windows Audio | 1036 svchost.exe<br />
07. &lt;AVWUpSrv&gt; AntiVir Update | 1724 AVWUPSRV.EXE<br />
08. &lt;BITS&gt; Intelligenter Hintergrund³bertragungsdienst<br />
09. &lt;Browser&gt; Computerbrowser | 1036 svchost.exe</p>
</blockquote>
<p>Mit installiertem SP2 stopt es direkt nach der Ausgabe von &quot;4.02&quot; also weder der Fehler noch die &quot;4.1&quot; werden ausgegeben.</p>
<p>Woran kann das liegen ?</p>
<p>tia mfg ch</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/140421/enumservicesstatusex-beendet-programm-ohne-fehler</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Jul 2026 04:41:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/140421.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 14 Mar 2006 18:49:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to EnumServicesStatusEx() beendet Programm ohne Fehler on Tue, 14 Mar 2006 18:49:24 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich hab ein Servicelist Programm geschrieben das falls ein Dienst läuft den zugehörigen Prozess mitanzeigt.</p>
<p>Leider macht es auf WINXP SP2 Probleme da das Programm keine Fehler auswirft hab ich per printf() Checkausgaben eingebaut. So konnte ich die genaue Codezeile ausmachen bei der das Programm einfach stopt.</p>
<pre><code>void grabservices(BOOL run){

	printf(&quot;1&quot;);
    SC_HANDLE sc = OpenSCManager (NULL,NULL,SC_MANAGER_ENUMERATE_SERVICE);
    if (sc != NULL){
		printf(&quot;2&quot;);

		short getprocinfo = 1;
		int running = 0;
		int retVal;
        ENUM_SERVICE_STATUS_PROCESS *lpservice;
        DWORD bytesNeeded,srvCount,resumeHandle = 0;
		SERVICE_STATUS_PROCESS ssStatus;
		SC_HANDLE schService;

	    HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
		if (hSnapshot == NULL){	//Der vom jeweiligen Dienst gestartete´Prozess kann nicht angezeigt werden
		  getprocinfo  = 0;
	    }

		PROCESSENTRY32 pe;
	    pe.dwSize=sizeof(PROCESSENTRY32);

		printf(&quot;3&quot;);
        retVal = EnumServicesStatusEx (sc,SC_ENUM_PROCESS_INFO, SERVICE_WIN32, SERVICE_STATE_ALL,0,0,&amp;bytesNeeded,&amp;srvCount,&amp;resumeHandle, NULL);

		DWORD err = GetLastError();
        if (retVal != 0 || err == ERROR_MORE_DATA){
			printf(&quot;4\n&quot;);
            DWORD dwBytes = bytesNeeded;// + sizeof(ENUM_SERVICE_STATUS_PROCESS);
			printf(&quot;4.01\n&quot;);
            lpservice = new (ENUM_SERVICE_STATUS_PROCESS);
			printf(&quot;4.02\n&quot;);

//------------------------ der nächste Befehl führt zum Programmabbruch -----

            retVal = EnumServicesStatusEx (sc,SC_ENUM_PROCESS_INFO, SERVICE_WIN32, SERVICE_STATE_ALL,(LPBYTE)lpservice,dwBytes,&amp;bytesNeeded,&amp;srvCount,&amp;resumeHandle, NULL);
			err = GetLastError();
			printf(&quot; EnumServicesStatusEx - FehlerCode: %d&quot;);
			printf(&quot;4.1\n&quot;);
</code></pre>
<p>die Ausgabe von SP1 sieht so aus</p>
<blockquote>
<p>C:\&gt;catz +listx<br />
82 Dienste gefunden<br />
01. &lt;Alerter&gt; Warndienst<br />
02. &lt;ALG&gt; Gatewaydienst auf Anwendungsebene<br />
03. &lt;AntiVirService&gt; AntiVir Service | 1712 AVGUARD.EXE<br />
04. &lt;AppMgmt&gt; Anwendungsverwaltung<br />
05. &lt;aspnet_state&gt; <a href="http://ASP.NET" rel="nofollow">ASP.NET</a> State Service<br />
06. &lt;AudioSrv&gt; Windows Audio | 1036 svchost.exe<br />
07. &lt;AVWUpSrv&gt; AntiVir Update | 1724 AVWUPSRV.EXE<br />
08. &lt;BITS&gt; Intelligenter Hintergrund³bertragungsdienst<br />
09. &lt;Browser&gt; Computerbrowser | 1036 svchost.exe</p>
</blockquote>
<p>Mit installiertem SP2 stopt es direkt nach der Ausgabe von &quot;4.02&quot; also weder der Fehler noch die &quot;4.1&quot; werden ausgegeben.</p>
<p>Woran kann das liegen ?</p>
<p>tia mfg ch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1016263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1016263</guid><dc:creator><![CDATA[c°h°]]></dc:creator><pubDate>Tue, 14 Mar 2006 18:49:24 GMT</pubDate></item><item><title><![CDATA[Reply to EnumServicesStatusEx() beendet Programm ohne Fehler on Tue, 14 Mar 2006 18:51:03 GMT]]></title><description><![CDATA[<p>das ,err steht da auch also:</p>
<p>printf(&quot; EnumServicesStatusEx - FehlerCode: %d&quot;,err);<br />
statt<br />
printf(&quot; EnumServicesStatusEx - FehlerCode: %d&quot;);</p>
<p>sry</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1016266</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1016266</guid><dc:creator><![CDATA[c°h°]]></dc:creator><pubDate>Tue, 14 Mar 2006 18:51:03 GMT</pubDate></item></channel></rss>