[SETUPAPI]
authorEric Kohl <eric.kohl@reactos.org>
Sat, 22 Jan 2011 15:43:57 +0000 (15:43 +0000)
committerEric Kohl <eric.kohl@reactos.org>
Sat, 22 Jan 2011 15:43:57 +0000 (15:43 +0000)
- Implement CMP_WaitServicesAvailable().
- CM_Get_First_Log_Conf_Ex(): Create a LOG_CONF_INFO struct only if plcLogConf is not NULL.

svn path=/trunk/; revision=50461

reactos/dll/win32/setupapi/cfgmgr.c
reactos/dll/win32/setupapi/setupapi.spec
reactos/include/psdk/cfgmgr32.h

index e995e8f..da6b4f2 100644 (file)
@@ -179,6 +179,34 @@ CONFIGRET WINAPI CMP_Report_LogOn(
 }
 
 
+/***********************************************************************
+ * CMP_WaitServicesAvailable [SETUPAPI.@]
+ */
+CONFIGRET
+WINAPI
+CMP_WaitServicesAvailable(HMACHINE hMachine)
+{
+    RPC_BINDING_HANDLE BindingHandle = NULL;
+    CONFIGRET ret = CR_SUCCESS;
+    WORD Version;
+
+    if (!PnpGetLocalHandles(&BindingHandle, NULL))
+        return CR_FAILURE;
+
+    RpcTryExcept
+    {
+        ret = PNP_GetVersion(BindingHandle, &Version);
+    }
+    RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+    {
+        ret = RpcStatusToCmStatus(RpcExceptionCode());
+    }
+    RpcEndExcept;
+
+    return ret;
+}
+
+
 /***********************************************************************
  * CM_Add_Empty_Log_Conf [SETUPAPI.@]
  */
@@ -1825,7 +1853,7 @@ CONFIGRET WINAPI CM_Get_Device_ID_ExA(
     WCHAR szBufferW[MAX_DEVICE_ID_LEN];
     CONFIGRET ret = CR_SUCCESS;
 
-    FIXME("%lx %p %ld %ld %lx\n",
+    TRACE("%lx %p %ld %ld %lx\n",
           dnDevInst, Buffer, BufferLen, ulFlags, hMachine);
 
     if (Buffer == NULL)
@@ -1931,7 +1959,7 @@ CONFIGRET WINAPI CM_Get_Device_ID_List_ExA(
     LPWSTR pszFilterW = NULL;
     CONFIGRET ret = CR_SUCCESS;
 
-    FIXME("%p %p %ld %ld %lx\n",
+    TRACE("%p %p %ld %ld %lx\n",
           pszFilter, Buffer, BufferLen, ulFlags, hMachine);
 
     BufferW = MyMalloc(BufferLen * sizeof(WCHAR));
@@ -2264,16 +2292,19 @@ CONFIGRET WINAPI CM_Get_First_Log_Conf_Ex(
     if (ret != CR_SUCCESS)
         return ret;
 
-    pLogConfInfo = HeapAlloc(GetProcessHeap(), 0, sizeof(LOG_CONF_INFO));
-    if (pLogConfInfo == NULL)
-        return CR_OUT_OF_MEMORY;
+    if (plcLogConf)
+    {
+        pLogConfInfo = HeapAlloc(GetProcessHeap(), 0, sizeof(LOG_CONF_INFO));
+        if (pLogConfInfo == NULL)
+            return CR_OUT_OF_MEMORY;
 
-    pLogConfInfo->ulMagic = LOG_CONF_MAGIC;
-    pLogConfInfo->dnDevInst = dnDevInst;
-    pLogConfInfo->ulFlags = ulFlags;
-    pLogConfInfo->ulTag = ulTag;
+        pLogConfInfo->ulMagic = LOG_CONF_MAGIC;
+        pLogConfInfo->dnDevInst = dnDevInst;
+        pLogConfInfo->ulFlags = ulFlags;
+        pLogConfInfo->ulTag = ulTag;
 
-    *plcLogConf = (LOG_CONF)pLogConfInfo;
+        *plcLogConf = (LOG_CONF)pLogConfInfo;
+    }
 
     return CR_SUCCESS;
 }
index 4351413..344d7f3 100644 (file)
@@ -6,7 +6,7 @@
 @ stdcall CMP_Report_LogOn(long long)
 @ stdcall CMP_UnregisterNotification(ptr)
 @ stdcall CMP_WaitNoPendingInstallEvents(long)
-@ stub CMP_WaitServicesAvailable
+@ stdcall CMP_WaitServicesAvailable(ptr)
 @ stdcall CM_Add_Empty_Log_Conf(ptr ptr long long)
 @ stdcall CM_Add_Empty_Log_Conf_Ex(ptr ptr long long ptr)
 @ stdcall CM_Add_IDA(ptr str long)
index 4623a65..41c401f 100644 (file)
@@ -943,6 +943,10 @@ CONFIGRET
 WINAPI
 CMP_UnregisterNotification(IN ULONG luhDevNotify);
 
+CMAPI
+CONFIGRET
+WINAPI
+CMP_WaitServicesAvailable(IN HMACHINE hMachine);
 */
 
 CMAPI