Replace implementation of QueryServiceConfigW by a stub (like in pre-20255), as rpcrt4 throws sometimes an exception and breaks PnP manager
Modified: trunk/reactos/lib/advapi32/service/scm.c

Modified: trunk/reactos/lib/advapi32/service/scm.c
--- trunk/reactos/lib/advapi32/service/scm.c	2005-12-26 21:41:02 UTC (rev 20342)
+++ trunk/reactos/lib/advapi32/service/scm.c	2005-12-26 21:47:28 UTC (rev 20343)
@@ -457,7 +457,7 @@
     DWORD dwLength;
     LPWSTR lpStr;
 
-    DPRINT1("CreateServiceW() called\n");
+    DPRINT("CreateServiceW() called\n");
 
     /* Calculate the Dependencies length*/
     if (lpDependencies != NULL)
@@ -496,7 +496,7 @@
                                  (unsigned int *)&hService);
     if (dwError != ERROR_SUCCESS)
     {
-        DPRINT1("ScmrCreateServiceW() failed (Error %lu)\n", dwError);
+        DPRINT1("ScmrCreateServiceW(%S) failed (Error %lu)\n", lpServiceName, dwError);
         SetLastError(dwError);
         return NULL;
     }
@@ -1085,7 +1085,7 @@
                                (unsigned int*)&hService);
     if (dwError != ERROR_SUCCESS)
     {
-        DPRINT1("ScmrOpenServiceA() failed (Error %lu)\n", dwError);
+        DPRINT("ScmrOpenServiceA(%s) failed (Error %lu)\n", lpServiceName, dwError);
         SetLastError(dwError);
         return NULL;
     }
@@ -1122,7 +1122,7 @@
                                (unsigned int*)&hService);
     if (dwError != ERROR_SUCCESS)
     {
-        DPRINT1("ScmrOpenServiceW() failed (Error %lu)\n", dwError);
+        DPRINT("ScmrOpenServiceW(%S) failed (Error %lu)\n", lpServiceName, dwError);
         SetLastError(dwError);
         return NULL;
     }
@@ -1207,6 +1207,7 @@
                     DWORD cbBufSize,
                     LPDWORD pcbBytesNeeded)
 {
+#if 0
     DWORD dwError;
 
     DPRINT("QueryServiceConfigW(%p, %p, %lu, %p)\n",
@@ -1215,11 +1216,13 @@
     HandleBind();
 
     /* Call to services.exe using RPC */
+    CHECKPOINT1;
     dwError = ScmrQueryServiceConfigW(BindingHandle,
                                       (unsigned int)hService,
                                       (unsigned char *)lpServiceConfig,
                                       cbBufSize,
                                       pcbBytesNeeded);
+    CHECKPOINT1;
     if (dwError != ERROR_SUCCESS)
     {
         DPRINT("ScmrQueryServiceConfigW() failed (Error %lu)\n", dwError);
@@ -1256,6 +1259,20 @@
     DPRINT("QueryServiceConfigW() done\n");
 
     return TRUE;
+#else
+    DPRINT1("QueryServiceConfigW is unimplemented\n");
+    if (lpServiceConfig && cbBufSize >= sizeof(QUERY_SERVICE_CONFIGW))
+    {
+        memset(lpServiceConfig, 0, *pcbBytesNeeded);
+        return TRUE;
+    }
+    else
+    {
+        *pcbBytesNeeded = sizeof(QUERY_SERVICE_CONFIGW);
+        SetLastError(ERROR_INSUFFICIENT_BUFFER);
+        return FALSE;
+    }
+#endif
 }