<?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[QueryServiceStatusEx - unresolved external symbol]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich glaube ich habe vergessen irgendeine lib zu linken weiss aber leider nicht welche.</p>
<p>Habe die advapi32 und die kernel32 gelinkt wie auf MSDN beschrieben.</p>
<p>Vielleicht ist doch ein Fehler im Code oder jmd der das liest möchte Ihn gerne mal testen, deshalb poste ich ihn mal hier.<br />
( Das meiste hab ich mir aus der MSDN zusammengeschnippelt )</p>
<pre><code>#include &lt;stdio.h&gt;
#include &lt;windows.h&gt;
#include &lt;tchar.h&gt;
#include &lt;tlhelp32.h&gt;

#pragma comment (lib,&quot;advapi32&quot;)
#pragma comment (lib,&quot;kernel32&quot;)

void grabservices();

int main(int argc, char *argv[]){
	void grabservices();
	return 1;
}

void grabservices(){

	PROCESSENTRY32 pe;
	DWORD err;
    int i;

    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 = NULL;
        BOOL retVal;
        DWORD bytesNeeded,srvCount,resumeHandle = 0,srvType, srvState;
		SERVICE_STATUS_PROCESS ssStatus;
		SC_HANDLE schService;
	    HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
	    if ((int)hSnapshot==-1){
		  getprocinfo  = 0;
	    }

	    pe.dwSize=sizeof(PROCESSENTRY32);

        srvType = SERVICE_WIN32;
        srvState = SERVICE_STATE_ALL;

        retVal = EnumServicesStatus (sc,srvType,srvState,&amp;service_data,sizeof(service_data),&amp;bytesNeeded,&amp;srvCount,&amp;resumeHandle);

        err = GetLastError();

        if ((retVal == FALSE) || err == ERROR_MORE_DATA){
            DWORD dwBytes = bytesNeeded + sizeof(ENUM_SERVICE_STATUS);
            lpservice = calloc(dwBytes, sizeof(dwBytes));
            EnumServicesStatus (sc,srvType,srvState,lpservice,dwBytes,&amp;bytesNeeded,&amp;srvCount,&amp;resumeHandle);
        }

        for(i=0;i&lt; (int)srvCount;i++){
   			schService = OpenService(sc,lpservice[i].lpServiceName,SERVICE_ALL_ACCESS);
    		if ( QueryServiceStatusEx(schService, SC_STATUS_PROCESS_INFO, (LPBYTE)&amp;ssStatus, sizeof(SERVICE_STATUS_PROCESS),&amp;bytesNeeded)==0 ){
				if(i+1&lt;10) printf(&quot;0%i.. &lt;%s&gt; %s&quot;, i+1,lpservice[i].lpServiceName, lpservice[i].lpDisplayName);
				else printf(&quot;%i.. &lt;%s&gt; %s&quot;, i+1,lpservice[i].lpServiceName, lpservice[i].lpDisplayName);
    	    }
    	    else{
				if (ssStatus.dwCurrentState == SERVICE_RUNNING){
					if(getprocinfo==1){
	    				BOOL retval=Process32First(hSnapshot,&amp;pe);
	    				while(retval){
							if(ssStatus.dwProcessId == pe.th32ProcessID){
								break;
							}
							pe.dwSize=sizeof(PROCESSENTRY32);
							retval=Process32Next(hSnapshot,&amp;pe);
						}
						if(i+1&lt;10) printf(&quot;0%i.. &lt;%s&gt; %s | %i %s.&quot;, i+1,lpservice[i].lpServiceName, lpservice[i].lpDisplayName, ssStatus.dwProcessId,pe.szExeFile);
						else printf(&quot;%i.. &lt;%s&gt; %s | %i .14%s.&quot;, i+1,lpservice[i].lpServiceName, lpservice[i].lpDisplayName, ssStatus.dwProcessId,pe.szExeFile);
					}
					else{
						if(i+1&lt;10) printf(&quot;0%i.. &lt;%s&gt; %s&quot;, i+1,lpservice[i].lpServiceName, lpservice[i].lpDisplayName);
						else printf(&quot;%i.. &lt;%s&gt; %s&quot;, i+1,lpservice[i].lpServiceName, lpservice[i].lpDisplayName);
					}
				}
				else{
					if(i+1&lt;10) printf(&quot;0%i.. &lt;%s&gt; %s&quot;, i+1,lpservice[i].lpServiceName, lpservice[i].lpDisplayName);
					else printf(&quot;%i.. &lt;%s&gt; %s&quot;, i+1,lpservice[i].lpServiceName, lpservice[i].lpDisplayName);
				}
			}
			CloseServiceHandle(schService);
        }
        CloseHandle(hSnapshot);
    }
    else printf(&quot;OpenSCManager error()&quot;);
    CloseServiceHandle(sc);
    return;
}
</code></pre>
<p>Beim compilen bekomme ich folgenden Fehler:</p>
<pre><code>linking...
service2.obj : error LNK2001: unresolved external symbol __imp__QueryServiceStatusEx@20
Debug/service2.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
</code></pre>
<p>Ich hoffe irgendjemand kann mir weiterhelfen.</p>
<p>Vielen Dank fürs Lesen</p>
<p>MFG c°h°</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/206955/queryservicestatusex-unresolved-external-symbol</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Apr 2026 01:02:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/206955.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 01 Mar 2008 23:54:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to QueryServiceStatusEx - unresolved external symbol on Sat, 01 Mar 2008 23:54:11 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich glaube ich habe vergessen irgendeine lib zu linken weiss aber leider nicht welche.</p>
<p>Habe die advapi32 und die kernel32 gelinkt wie auf MSDN beschrieben.</p>
<p>Vielleicht ist doch ein Fehler im Code oder jmd der das liest möchte Ihn gerne mal testen, deshalb poste ich ihn mal hier.<br />
( Das meiste hab ich mir aus der MSDN zusammengeschnippelt )</p>
<pre><code>#include &lt;stdio.h&gt;
#include &lt;windows.h&gt;
#include &lt;tchar.h&gt;
#include &lt;tlhelp32.h&gt;

#pragma comment (lib,&quot;advapi32&quot;)
#pragma comment (lib,&quot;kernel32&quot;)

void grabservices();

int main(int argc, char *argv[]){
	void grabservices();
	return 1;
}

void grabservices(){

	PROCESSENTRY32 pe;
	DWORD err;
    int i;

    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 = NULL;
        BOOL retVal;
        DWORD bytesNeeded,srvCount,resumeHandle = 0,srvType, srvState;
		SERVICE_STATUS_PROCESS ssStatus;
		SC_HANDLE schService;
	    HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
	    if ((int)hSnapshot==-1){
		  getprocinfo  = 0;
	    }

	    pe.dwSize=sizeof(PROCESSENTRY32);

        srvType = SERVICE_WIN32;
        srvState = SERVICE_STATE_ALL;

        retVal = EnumServicesStatus (sc,srvType,srvState,&amp;service_data,sizeof(service_data),&amp;bytesNeeded,&amp;srvCount,&amp;resumeHandle);

        err = GetLastError();

        if ((retVal == FALSE) || err == ERROR_MORE_DATA){
            DWORD dwBytes = bytesNeeded + sizeof(ENUM_SERVICE_STATUS);
            lpservice = calloc(dwBytes, sizeof(dwBytes));
            EnumServicesStatus (sc,srvType,srvState,lpservice,dwBytes,&amp;bytesNeeded,&amp;srvCount,&amp;resumeHandle);
        }

        for(i=0;i&lt; (int)srvCount;i++){
   			schService = OpenService(sc,lpservice[i].lpServiceName,SERVICE_ALL_ACCESS);
    		if ( QueryServiceStatusEx(schService, SC_STATUS_PROCESS_INFO, (LPBYTE)&amp;ssStatus, sizeof(SERVICE_STATUS_PROCESS),&amp;bytesNeeded)==0 ){
				if(i+1&lt;10) printf(&quot;0%i.. &lt;%s&gt; %s&quot;, i+1,lpservice[i].lpServiceName, lpservice[i].lpDisplayName);
				else printf(&quot;%i.. &lt;%s&gt; %s&quot;, i+1,lpservice[i].lpServiceName, lpservice[i].lpDisplayName);
    	    }
    	    else{
				if (ssStatus.dwCurrentState == SERVICE_RUNNING){
					if(getprocinfo==1){
	    				BOOL retval=Process32First(hSnapshot,&amp;pe);
	    				while(retval){
							if(ssStatus.dwProcessId == pe.th32ProcessID){
								break;
							}
							pe.dwSize=sizeof(PROCESSENTRY32);
							retval=Process32Next(hSnapshot,&amp;pe);
						}
						if(i+1&lt;10) printf(&quot;0%i.. &lt;%s&gt; %s | %i %s.&quot;, i+1,lpservice[i].lpServiceName, lpservice[i].lpDisplayName, ssStatus.dwProcessId,pe.szExeFile);
						else printf(&quot;%i.. &lt;%s&gt; %s | %i .14%s.&quot;, i+1,lpservice[i].lpServiceName, lpservice[i].lpDisplayName, ssStatus.dwProcessId,pe.szExeFile);
					}
					else{
						if(i+1&lt;10) printf(&quot;0%i.. &lt;%s&gt; %s&quot;, i+1,lpservice[i].lpServiceName, lpservice[i].lpDisplayName);
						else printf(&quot;%i.. &lt;%s&gt; %s&quot;, i+1,lpservice[i].lpServiceName, lpservice[i].lpDisplayName);
					}
				}
				else{
					if(i+1&lt;10) printf(&quot;0%i.. &lt;%s&gt; %s&quot;, i+1,lpservice[i].lpServiceName, lpservice[i].lpDisplayName);
					else printf(&quot;%i.. &lt;%s&gt; %s&quot;, i+1,lpservice[i].lpServiceName, lpservice[i].lpDisplayName);
				}
			}
			CloseServiceHandle(schService);
        }
        CloseHandle(hSnapshot);
    }
    else printf(&quot;OpenSCManager error()&quot;);
    CloseServiceHandle(sc);
    return;
}
</code></pre>
<p>Beim compilen bekomme ich folgenden Fehler:</p>
<pre><code>linking...
service2.obj : error LNK2001: unresolved external symbol __imp__QueryServiceStatusEx@20
Debug/service2.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
</code></pre>
<p>Ich hoffe irgendjemand kann mir weiterhelfen.</p>
<p>Vielen Dank fürs Lesen</p>
<p>MFG c°h°</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1466407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1466407</guid><dc:creator><![CDATA[c°h°]]></dc:creator><pubDate>Sat, 01 Mar 2008 23:54:11 GMT</pubDate></item><item><title><![CDATA[Reply to QueryServiceStatusEx - unresolved external symbol on Sun, 02 Mar 2008 08:16:27 GMT]]></title><description><![CDATA[<p>Ein Blick in die Hilfe erleichtert meistens das arbeiten...<br />
<a href="http://msdn2.microsoft.com/en-us/library/ms684941(VS.85).aspx" rel="nofollow">http://msdn2.microsoft.com/en-us/library/ms684941(VS.85).aspx</a></p>
<pre><code class="language-cpp">#pragma comment (lib, &quot;Advapi32.lib&quot;)
</code></pre>
<p>Und ich gehe mal davon aus, dass Du kein VC6 verwendest...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1466441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1466441</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Sun, 02 Mar 2008 08:16:27 GMT</pubDate></item><item><title><![CDATA[Reply to QueryServiceStatusEx - unresolved external symbol on Sun, 02 Mar 2008 09:38:50 GMT]]></title><description><![CDATA[<p>Danke für deine Antwort.</p>
<p>Aber die advapi32.lib hatte ich schon gelinkt.</p>
<p>Doch ich verwende VC6. Ist das zu alt für die Funktion?</p>
<p>MFG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1466464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1466464</guid><dc:creator><![CDATA[c°h°]]></dc:creator><pubDate>Sun, 02 Mar 2008 09:38:50 GMT</pubDate></item><item><title><![CDATA[Reply to QueryServiceStatusEx - unresolved external symbol on Sun, 02 Mar 2008 09:46:32 GMT]]></title><description><![CDATA[<p>Es geht nur, wenn Du das letzte gültige PSDK für VC6 installierst (Feb 2003):<br />
<a href="http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm" rel="nofollow">http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm</a></p>
<p>Aber irgendwann wirst Du Funktionen brauchen, die nach Feb 2003 dazugekommen sind und spätestens dann musst Du Dich von VC6 trennen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1466470</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1466470</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Sun, 02 Mar 2008 09:46:32 GMT</pubDate></item><item><title><![CDATA[Reply to QueryServiceStatusEx - unresolved external symbol on Sun, 02 Mar 2008 10:41:44 GMT]]></title><description><![CDATA[<p>Vielen Dank</p>
<p>Hab mir jetzt MS Visual 2008 installiert und siehte da 0 Fehler 0 Warnungen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Nochmal Vielen Dank für deine Hilfe und noch einen schönen Sonntag</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1466499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1466499</guid><dc:creator><![CDATA[c°h°]]></dc:creator><pubDate>Sun, 02 Mar 2008 10:41:44 GMT</pubDate></item></channel></rss>