typedef struct _MACHINE_INFO
{
- WCHAR szMachineName[MAX_PATH];
+ WCHAR szMachineName[SP_MAX_MACHINENAME_LENGTH];
RPC_BINDING_HANDLE BindingHandle;
HSTRING_TABLE StringTable;
BOOL bLocal;
}
+static CONFIGRET
+RpcStatusToCmStatus(RPC_STATUS Status)
+{
+ return CR_FAILURE;
+}
+
+
/***********************************************************************
* CMP_WaitNoPendingInstallEvents [SETUPAPI.@]
*/
DWORD dwMagic)
{
RPC_BINDING_HANDLE BindingHandle = NULL;
+ CONFIGRET ret;
TRACE("%lu\n", dwMagic);
if (!PnpGetLocalHandles(&BindingHandle, NULL))
return CR_FAILURE;
- return PNP_InitDetection(BindingHandle);
+ RpcTryExcept
+ {
+ ret = PNP_InitDetection(BindingHandle);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
}
for (i = 0; i < 30; i++)
{
- ret = PNP_ReportLogOn(BindingHandle,
- bAdmin,
- dwProcessId);
+ RpcTryExcept
+ {
+ ret = PNP_ReportLogOn(BindingHandle,
+ bAdmin,
+ dwProcessId);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
if (ret == CR_SUCCESS)
break;
}
+/***********************************************************************
+ * 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.@]
*/
if (lpDevInst == NULL)
return CR_INVALID_DEVNODE;
- ret = PNP_AddEmptyLogConf(BindingHandle, lpDevInst, Priority, &ulLogConfTag, ulFlags);
+ RpcTryExcept
+ {
+ ret = PNP_AddEmptyLogConf(BindingHandle, lpDevInst, Priority,
+ &ulLogConfTag, ulFlags);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
if (ret == CR_SUCCESS)
{
pLogConfInfo = HeapAlloc(GetProcessHeap(), 0, sizeof(LOG_CONF_INFO));
RPC_BINDING_HANDLE BindingHandle = NULL;
HSTRING_TABLE StringTable = NULL;
LPWSTR lpDevInst;
+ CONFIGRET ret;
TRACE("%p %s %lx %p\n", dnDevInst, debugstr_w(pszID), ulFlags, hMachine);
if (lpDevInst == NULL)
return CR_INVALID_DEVNODE;
- return PNP_AddID(BindingHandle,
- lpDevInst,
- pszID,
- ulFlags);
+ RpcTryExcept
+ {
+ ret = PNP_AddID(BindingHandle,
+ lpDevInst,
+ pszID,
+ ulFlags);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
+}
+
+
+/***********************************************************************
+ * CM_Add_Res_Des [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Add_Res_Des(
+ PRES_DES prdResDes, LOG_CONF lcLogConf, RESOURCEID ResourceID,
+ PCVOID ResourceData, ULONG ResourceLen, ULONG ulFlags)
+{
+ TRACE("%p %p %lu %p %lu %lx\n", prdResDes, lcLogConf, ResourceID,
+ ResourceData, ResourceLen, ulFlags);
+ return CM_Add_Res_Des_Ex(prdResDes, lcLogConf, ResourceID, ResourceData,
+ ResourceLen, ulFlags, NULL);
+}
+
+
+/***********************************************************************
+ * CM_Add_Res_Des_Ex [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Add_Res_Des_Ex(
+ PRES_DES prdResDes, LOG_CONF lcLogConf, RESOURCEID ResourceID,
+ PCVOID ResourceData, ULONG ResourceLen, ULONG ulFlags, HMACHINE hMachine)
+{
+ FIXME("%p %p %lu %p %lu %lx %p\n", prdResDes, lcLogConf, ResourceID,
+ ResourceData, ResourceLen, ulFlags, hMachine);
+
+ return CR_CALL_NOT_IMPLEMENTED;
}
else
{
pMachine->bLocal = FALSE;
+ if (wcslen(UNCServerName) >= SP_MAX_MACHINENAME_LENGTH - 1)
+ {
+ HeapFree(GetProcessHeap(), 0, pMachine);
+ return CR_INVALID_MACHINENAME;
+ }
lstrcpyW(pMachine->szMachineName, UNCServerName);
pMachine->StringTable = StringTableInitialize();
if (lpParentDevInst == NULL)
return CR_INVALID_DEVNODE;
- ret = PNP_CreateDevInst(BindingHandle,
- pDeviceID,
- lpParentDevInst,
- MAX_DEVICE_ID_LEN,
- ulFlags);
+ RpcTryExcept
+ {
+ ret = PNP_CreateDevInst(BindingHandle,
+ pDeviceID,
+ lpParentDevInst,
+ MAX_DEVICE_ID_LEN,
+ ulFlags);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
if (ret == CR_SUCCESS)
{
*pdnDevInst = StringTableAddString(StringTable, pDeviceID, 1);
{
WCHAR szGuidString[MAX_GUID_STRING_LEN];
RPC_BINDING_HANDLE BindingHandle = NULL;
+ CONFIGRET ret;
TRACE("%p %lx %lx\n", ClassGuid, ulFlags, hMachine);
return CR_FAILURE;
}
- return PNP_DeleteClassKey(BindingHandle,
- szGuidString,
- ulFlags);
+ RpcTryExcept
+ {
+ ret = PNP_DeleteClassKey(BindingHandle,
+ szGuidString,
+ ulFlags);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
}
+
/***********************************************************************
* CM_Delete_DevNode_Key [SETUPAPI.@]
*/
NULL);
}
+
/***********************************************************************
* CM_Delete_DevNode_Key_Ex [SETUPAPI.@]
*/
RPC_BINDING_HANDLE BindingHandle = NULL;
HSTRING_TABLE StringTable = NULL;
LPWSTR lpDevInst;
+ CONFIGRET ret;
FIXME("%p %lx %p\n", dnDevInst, ulFlags, hMachine);
if (lpDevInst == NULL)
return CR_INVALID_DEVNODE;
- return PNP_DeviceInstanceAction(BindingHandle,
- 5,
- ulFlags,
- lpDevInst,
- NULL);
+ RpcTryExcept
+ {
+ ret = PNP_DeviceInstanceAction(BindingHandle,
+ PNP_DEVINST_DISABLE,
+ ulFlags,
+ lpDevInst,
+ NULL);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
}
RPC_BINDING_HANDLE BindingHandle = NULL;
HSTRING_TABLE StringTable = NULL;
LPWSTR lpDevInst;
+ CONFIGRET ret;
- FIXME("%p %lx %p\n", dnDevInst, ulFlags, hMachine);
+ TRACE("%p %lx %p\n", dnDevInst, ulFlags, hMachine);
if (!IsUserAdmin())
return CR_ACCESS_DENIED;
if (lpDevInst == NULL)
return CR_INVALID_DEVNODE;
- return PNP_DeviceInstanceAction(BindingHandle,
- 4,
- ulFlags,
- lpDevInst,
- NULL);
+ RpcTryExcept
+ {
+ ret = PNP_DeviceInstanceAction(BindingHandle,
+ PNP_DEVINST_ENABLE,
+ ulFlags,
+ lpDevInst,
+ NULL);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
}
return CR_FAILURE;
}
- ret = PNP_EnumerateSubKeys(BindingHandle,
- PNP_BRANCH_CLASS,
- ulClassIndex,
- szBuffer,
- MAX_GUID_STRING_LEN,
- &ulLength,
- ulFlags);
+ RpcTryExcept
+ {
+ ret = PNP_EnumerateSubKeys(BindingHandle,
+ PNP_CLASS_SUBKEYS,
+ ulClassIndex,
+ szBuffer,
+ MAX_GUID_STRING_LEN,
+ &ulLength,
+ ulFlags);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
if (ret == CR_SUCCESS)
{
/* Remove the {} */
HMACHINE hMachine)
{
RPC_BINDING_HANDLE BindingHandle = NULL;
+ CONFIGRET ret;
TRACE("%lu %p %p %lx %lx\n", ulEnumIndex, Buffer, pulLength, ulFlags,
hMachine);
return CR_FAILURE;
}
- return PNP_EnumerateSubKeys(BindingHandle,
- PNP_BRANCH_ENUM,
- ulEnumIndex,
- Buffer,
- *pulLength,
- pulLength,
- ulFlags);
+ RpcTryExcept
+ {
+ ret = PNP_EnumerateSubKeys(BindingHandle,
+ PNP_ENUMERATOR_SUBKEYS,
+ ulEnumIndex,
+ Buffer,
+ *pulLength,
+ pulLength,
+ ulFlags);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
}
HSTRING_TABLE StringTable = NULL;
LPWSTR lpDevInst;
PLOG_CONF_INFO pLogConfInfo;
+ CONFIGRET ret;
TRACE("%lx %lx %lx\n", lcLogConfToBeFreed, ulFlags, hMachine);
if (lpDevInst == NULL)
return CR_INVALID_DEVNODE;
- return PNP_FreeLogConf(BindingHandle, lpDevInst, pLogConfInfo->ulFlags,
- pLogConfInfo->ulTag, 0);
+ RpcTryExcept
+ {
+ ret = PNP_FreeLogConf(BindingHandle, lpDevInst, pLogConfInfo->ulFlags,
+ pLogConfInfo->ulTag, 0);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
}
}
+/***********************************************************************
+ * CM_Free_Res_Des [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Free_Res_Des(
+ PRES_DES prdResDes, RES_DES rdResDes, ULONG ulFlags)
+{
+ TRACE("%p %p %lx\n", prdResDes, rdResDes, ulFlags);
+ return CM_Free_Res_Des_Ex(prdResDes, rdResDes, ulFlags, NULL);
+}
+
+
+/***********************************************************************
+ * CM_Free_Res_Des_Ex [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Free_Res_Des_Ex(
+ PRES_DES prdResDes, RES_DES rdResDes, ULONG ulFlags,
+ HMACHINE hMachine)
+{
+ FIXME("%p %p %lx %lx\n", prdResDes, rdResDes, ulFlags, hMachine);
+
+ return CR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/***********************************************************************
+ * CM_Free_Res_Des_Handle [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Free_Res_Des_Handle(
+ RES_DES rdResDes)
+{
+ FIXME("%p\n", rdResDes);
+
+ return CR_CALL_NOT_IMPLEMENTED;
+}
+
+
/***********************************************************************
* CM_Get_Child [SETUPAPI.@]
*/
RPC_BINDING_HANDLE BindingHandle = NULL;
HSTRING_TABLE StringTable = NULL;
LPWSTR lpDevInst;
- DWORD dwIndex;
+ DWORD dwIndex, dwLength = MAX_DEVICE_ID_LEN;
CONFIGRET ret;
TRACE("%p %lx %lx %lx\n", pdnDevInst, dnDevInst, ulFlags, hMachine);
if (lpDevInst == NULL)
return CR_INVALID_DEVNODE;
- ret = PNP_GetRelatedDeviceInstance(BindingHandle,
- PNP_DEVICE_CHILD,
- lpDevInst,
- szRelatedDevInst,
- MAX_DEVICE_ID_LEN,
- 0);
+ RpcTryExcept
+ {
+ ret = PNP_GetRelatedDeviceInstance(BindingHandle,
+ PNP_GET_CHILD_DEVICE_INSTANCE,
+ lpDevInst,
+ szRelatedDevInst,
+ &dwLength,
+ 0);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
if (ret != CR_SUCCESS)
return ret;
{
WCHAR szGuidString[MAX_GUID_STRING_LEN];
RPC_BINDING_HANDLE BindingHandle = NULL;
+ CONFIGRET ret;
TRACE("%p %p %p %lx %lx\n",
ClassGuid, Buffer, pulLength, ulFlags, hMachine);
return CR_FAILURE;
}
- return PNP_GetClassName(BindingHandle,
- szGuidString,
- Buffer,
- pulLength,
- ulFlags);
+ RpcTryExcept
+ {
+ ret = PNP_GetClassName(BindingHandle,
+ szGuidString,
+ Buffer,
+ pulLength,
+ ulFlags);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
}
RPC_BINDING_HANDLE BindingHandle = NULL;
HSTRING_TABLE StringTable = NULL;
LPWSTR lpDevInst;
+ CONFIGRET ret;
TRACE("%p %lx %lx %lx\n",
pulDepth, dnDevInst, ulFlags, hMachine);
if (lpDevInst == NULL)
return CR_INVALID_DEVNODE;
- return PNP_GetDepth(BindingHandle,
- lpDevInst,
- pulDepth,
- ulFlags);
+ RpcTryExcept
+ {
+ ret = PNP_GetDepth(BindingHandle,
+ lpDevInst,
+ pulDepth,
+ ulFlags);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
}
return CR_INVALID_DEVNODE;
ulTransferLength = *pulLength;
- ret = PNP_GetDeviceRegProp(BindingHandle,
- lpDevInst,
- ulProperty,
- &ulDataType,
- Buffer,
- &ulTransferLength,
- pulLength,
- ulFlags);
+
+ RpcTryExcept
+ {
+ ret = PNP_GetDeviceRegProp(BindingHandle,
+ lpDevInst,
+ ulProperty,
+ &ulDataType,
+ Buffer,
+ &ulTransferLength,
+ pulLength,
+ ulFlags);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
if (ret == CR_SUCCESS)
{
if (pulRegDataType != NULL)
RPC_BINDING_HANDLE BindingHandle = NULL;
HSTRING_TABLE StringTable = NULL;
LPWSTR lpDevInst;
+ CONFIGRET ret;
TRACE("%p %p %lx %lx %lx\n",
pulStatus, pulProblemNumber, dnDevInst, ulFlags, hMachine);
if (lpDevInst == NULL)
return CR_INVALID_DEVNODE;
- return PNP_GetDeviceStatus(BindingHandle,
- lpDevInst,
- pulStatus,
- pulProblemNumber,
- ulFlags);
+ RpcTryExcept
+ {
+ ret = PNP_GetDeviceStatus(BindingHandle,
+ lpDevInst,
+ pulStatus,
+ pulProblemNumber,
+ ulFlags);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
}
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)
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));
PCWSTR pszFilter, PWCHAR Buffer, ULONG BufferLen, ULONG ulFlags,
HMACHINE hMachine)
{
- FIXME("%p %p %ld %ld %lx\n",
+ RPC_BINDING_HANDLE BindingHandle = NULL;
+ CONFIGRET ret;
+
+ TRACE("%p %p %ld %ld %lx\n",
pszFilter, Buffer, BufferLen, ulFlags, hMachine);
- memset(Buffer,0,2);
- return CR_SUCCESS;
+
+ if (Buffer == NULL || BufferLen == 0)
+ return CR_INVALID_POINTER;
+
+ if (ulFlags & ~CM_GETIDLIST_FILTER_BITS)
+ return CR_INVALID_FLAG;
+
+ if (hMachine != NULL)
+ {
+ BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
+ if (BindingHandle == NULL)
+ return CR_FAILURE;
+ }
+ else
+ {
+ if (!PnpGetLocalHandles(&BindingHandle, NULL))
+ return CR_FAILURE;
+ }
+
+ *Buffer = 0;
+
+ RpcTryExcept
+ {
+ ret = PNP_GetDeviceList(BindingHandle,
+ (LPWSTR)pszFilter,
+ Buffer,
+ &BufferLen,
+ ulFlags);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
}
PULONG pulLen, PCWSTR pszFilter, ULONG ulFlags, HMACHINE hMachine)
{
RPC_BINDING_HANDLE BindingHandle = NULL;
+ CONFIGRET ret;
FIXME("%p %s %ld %lx\n", pulLen, debugstr_w(pszFilter), ulFlags, hMachine);
*pulLen = 0;
- return PNP_GetDeviceListSize(BindingHandle,
- (LPWSTR)pszFilter,
- pulLen,
- ulFlags);
+ RpcTryExcept
+ {
+ ret = PNP_GetDeviceListSize(BindingHandle,
+ (LPWSTR)pszFilter,
+ pulLen,
+ ulFlags);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
}
/***********************************************************************
- * CM_Get_First_Log_Conf [SETUPAPI.@]
+ * CM_Get_Device_Interface_AliasA [SETUPAPI.@]
*/
-CONFIGRET WINAPI CM_Get_First_Log_Conf(
- PLOG_CONF plcLogConf, DEVINST dnDevInst, ULONG ulFlags)
+CONFIGRET WINAPI CM_Get_Device_Interface_AliasA(
+ LPCSTR pszDeviceInterface, LPGUID AliasInterfaceGuid,
+ LPSTR pszAliasDeviceInterface, PULONG pulLength, ULONG ulFlags)
{
- TRACE("%p %lx %lx\n", plcLogConf, dnDevInst, ulFlags);
- return CM_Get_First_Log_Conf_Ex(plcLogConf, dnDevInst, ulFlags, NULL);
+ TRACE("%p %p %p %p %lu\n", pszDeviceInterface, AliasInterfaceGuid,
+ pszAliasDeviceInterface, pulLength, ulFlags);
+
+ return CM_Get_Device_Interface_Alias_ExA(pszDeviceInterface,
+ AliasInterfaceGuid, pszAliasDeviceInterface, pulLength,
+ ulFlags, NULL);
}
/***********************************************************************
- * CM_Get_First_Log_Conf_Ex [SETUPAPI.@]
+ * CM_Get_Device_Interface_AliasW [SETUPAPI.@]
*/
-CONFIGRET WINAPI CM_Get_First_Log_Conf_Ex(
- PLOG_CONF plcLogConf, DEVINST dnDevInst, ULONG ulFlags, HMACHINE hMachine)
+CONFIGRET WINAPI CM_Get_Device_Interface_AliasW(
+ LPCWSTR pszDeviceInterface, LPGUID AliasInterfaceGuid,
+ LPWSTR pszAliasDeviceInterface, PULONG pulLength, ULONG ulFlags)
{
- RPC_BINDING_HANDLE BindingHandle = NULL;
- HSTRING_TABLE StringTable = NULL;
- LPWSTR lpDevInst = NULL;
- CONFIGRET ret = CR_SUCCESS;
- ULONG ulTag;
- PLOG_CONF_INFO pLogConfInfo;
+ TRACE("%p %p %p %p %lu\n", pszDeviceInterface, AliasInterfaceGuid,
+ pszAliasDeviceInterface, pulLength, ulFlags);
- FIXME("%p %lx %lx %lx\n", plcLogConf, dnDevInst, ulFlags, hMachine);
+ return CM_Get_Device_Interface_Alias_ExW(pszDeviceInterface,
+ AliasInterfaceGuid, pszAliasDeviceInterface, pulLength,
+ ulFlags, NULL);
+}
- if (dnDevInst == 0)
- return CR_INVALID_DEVINST;
- if (ulFlags & ~LOG_CONF_BITS)
- return CR_INVALID_FLAG;
+/***********************************************************************
+ * CM_Get_Device_Interface_Alias_ExA [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_Device_Interface_Alias_ExA(
+ LPCSTR pszDeviceInterface, LPGUID AliasInterfaceGuid, LPSTR pszAliasDeviceInterface,
+ PULONG pulLength, ULONG ulFlags, HMACHINE hMachine)
+{
+ FIXME("%p %p %p %p %lu %lx\n", pszDeviceInterface, AliasInterfaceGuid,
+ pszAliasDeviceInterface, pulLength, ulFlags, hMachine);
+
+ return CR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/***********************************************************************
+ * CM_Get_Device_Interface_Alias_ExW [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_Device_Interface_Alias_ExW(
+ LPCWSTR pszDeviceInterface, LPGUID AliasInterfaceGuid, LPWSTR pszAliasDeviceInterface,
+ PULONG pulLength, ULONG ulFlags, HMACHINE hMachine)
+{
+ RPC_BINDING_HANDLE BindingHandle = NULL;
+ ULONG ulTransferLength;
+ CONFIGRET ret = CR_SUCCESS;
+
+ TRACE("%p %p %p %p %lu %lx\n", pszDeviceInterface, AliasInterfaceGuid,
+ pszAliasDeviceInterface, pulLength, ulFlags, hMachine);
+
+ if (pszDeviceInterface == NULL ||
+ AliasInterfaceGuid == NULL ||
+ pszAliasDeviceInterface == NULL ||
+ pulLength == NULL)
+ return CR_INVALID_POINTER;
+
+ if (ulFlags != 0)
+ return CR_INVALID_FLAG;
+
+ if (hMachine != NULL)
+ {
+ BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
+ if (BindingHandle == NULL)
+ return CR_FAILURE;
+ }
+ else
+ {
+ if (!PnpGetLocalHandles(&BindingHandle, NULL))
+ return CR_FAILURE;
+ }
+
+ ulTransferLength = *pulLength;
+
+ RpcTryExcept
+ {
+ ret = PNP_GetInterfaceDeviceAlias(BindingHandle,
+ (LPWSTR)pszDeviceInterface,
+ AliasInterfaceGuid,
+ pszAliasDeviceInterface,
+ pulLength,
+ &ulTransferLength,
+ 0);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
+}
+
+
+/***********************************************************************
+ * CM_Get_First_Log_Conf [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_First_Log_Conf(
+ PLOG_CONF plcLogConf, DEVINST dnDevInst, ULONG ulFlags)
+{
+ TRACE("%p %lx %lx\n", plcLogConf, dnDevInst, ulFlags);
+ return CM_Get_First_Log_Conf_Ex(plcLogConf, dnDevInst, ulFlags, NULL);
+}
+
+
+/***********************************************************************
+ * CM_Get_First_Log_Conf_Ex [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_First_Log_Conf_Ex(
+ PLOG_CONF plcLogConf, DEVINST dnDevInst, ULONG ulFlags, HMACHINE hMachine)
+{
+ RPC_BINDING_HANDLE BindingHandle = NULL;
+ HSTRING_TABLE StringTable = NULL;
+ LPWSTR lpDevInst = NULL;
+ CONFIGRET ret = CR_SUCCESS;
+ ULONG ulTag;
+ PLOG_CONF_INFO pLogConfInfo;
+
+ FIXME("%p %lx %lx %lx\n", plcLogConf, dnDevInst, ulFlags, hMachine);
+
+ if (dnDevInst == 0)
+ return CR_INVALID_DEVINST;
+
+ if (ulFlags & ~LOG_CONF_BITS)
+ return CR_INVALID_FLAG;
if (plcLogConf)
*plcLogConf = 0;
if (lpDevInst == NULL)
return CR_INVALID_DEVNODE;
- ret = PNP_GetFirstLogConf(BindingHandle,
- lpDevInst,
- ulFlags,
- &ulTag,
- ulFlags);
+ RpcTryExcept
+ {
+ ret = PNP_GetFirstLogConf(BindingHandle,
+ lpDevInst,
+ ulFlags,
+ &ulTag,
+ ulFlags);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
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;
}
PULONG pulState, ULONG ulFlags, HMACHINE hMachine)
{
RPC_BINDING_HANDLE BindingHandle = NULL;
+ CONFIGRET ret;
TRACE("%p %lx %lx\n", pulState, ulFlags, hMachine);
return CR_FAILURE;
}
- return PNP_GetGlobalState(BindingHandle, pulState, ulFlags);
+ RpcTryExcept
+ {
+ ret = PNP_GetGlobalState(BindingHandle, pulState, ulFlags);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
}
ULONG ulFlags, HMACHINE hMachine)
{
RPC_BINDING_HANDLE BindingHandle = NULL;
+ CONFIGRET ret;
FIXME("%s %lu %p %lx %lx\n", debugstr_w(szDevInstName),
ulHardwareProfile, pulValue, ulFlags, hMachine);
return CR_FAILURE;
}
- return PNP_HwProfFlags(BindingHandle, PNP_GET_HW_PROFILE_FLAGS, szDevInstName,
- ulHardwareProfile, pulValue, 0);
+ RpcTryExcept
+ {
+ ret = PNP_HwProfFlags(BindingHandle, PNP_GET_HWPROFFLAGS, szDevInstName,
+ ulHardwareProfile, pulValue, NULL, NULL, 0, 0);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
}
HSTRING_TABLE StringTable = NULL;
PLOG_CONF_INFO pLogConfInfo;
LPWSTR lpDevInst;
+ CONFIGRET ret;
FIXME("%p %p %lx %lx\n", lcLogConf, pPriority, ulFlags, hMachine);
if (lpDevInst == NULL)
return CR_INVALID_DEVNODE;
- return PNP_GetLogConfPriority(BindingHandle,
- lpDevInst,
- pLogConfInfo->ulFlags,
- pLogConfInfo->ulTag,
- pPriority,
- 0);
+ RpcTryExcept
+ {
+ ret = PNP_GetLogConfPriority(BindingHandle,
+ lpDevInst,
+ pLogConfInfo->ulFlags,
+ pLogConfInfo->ulTag,
+ pPriority,
+ 0);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
}
if (lpDevInst == NULL)
return CR_INVALID_DEVNODE;
- ret = PNP_GetNextLogConf(BindingHandle,
- lpDevInst,
- pLogConfInfo->ulFlags,
- pLogConfInfo->ulTag,
- &ulNewTag,
- 0);
+ RpcTryExcept
+ {
+ ret = PNP_GetNextLogConf(BindingHandle,
+ lpDevInst,
+ pLogConfInfo->ulFlags,
+ pLogConfInfo->ulTag,
+ &ulNewTag,
+ 0);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
if (ret != CR_SUCCESS)
return ret;
}
+/***********************************************************************
+ * CM_Get_Next_Re_Des [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_Next_Res_Des(
+ PRES_DES prdResDes, RES_DES rdResDes, RESOURCEID ForResource,
+ PRESOURCEID pResourceID, ULONG ulFlags)
+{
+ TRACE("%p %p %lu %p %lx\n", prdResDes, rdResDes, ForResource,
+ pResourceID, ulFlags);
+ return CM_Get_Next_Res_Des_Ex(prdResDes, rdResDes, ForResource,
+ pResourceID, ulFlags, NULL);
+}
+
+
+/***********************************************************************
+ * CM_Get_Next_Re_Des_Ex [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_Next_Res_Des_Ex(
+ PRES_DES prdResDes, RES_DES rdResDes, RESOURCEID ForResource,
+ PRESOURCEID pResourceID, ULONG ulFlags, HMACHINE hMachine)
+{
+ FIXME("%p %p %lu %p %lx %lx\n", prdResDes, rdResDes, ForResource,
+ pResourceID, ulFlags, hMachine);
+
+ return CR_CALL_NOT_IMPLEMENTED;
+}
+
+
/***********************************************************************
* CM_Get_Parent [SETUPAPI.@]
*/
RPC_BINDING_HANDLE BindingHandle = NULL;
HSTRING_TABLE StringTable = NULL;
LPWSTR lpDevInst;
- DWORD dwIndex;
+ DWORD dwIndex, dwLength = MAX_DEVICE_ID_LEN;
CONFIGRET ret;
TRACE("%p %lx %lx %lx\n", pdnDevInst, dnDevInst, ulFlags, hMachine);
if (lpDevInst == NULL)
return CR_INVALID_DEVNODE;
- ret = PNP_GetRelatedDeviceInstance(BindingHandle,
- PNP_DEVICE_PARENT,
- lpDevInst,
- szRelatedDevInst,
- MAX_DEVICE_ID_LEN,
- 0);
+ RpcTryExcept
+ {
+ ret = PNP_GetRelatedDeviceInstance(BindingHandle,
+ PNP_GET_PARENT_DEVICE_INSTANCE,
+ lpDevInst,
+ szRelatedDevInst,
+ &dwLength,
+ 0);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
if (ret != CR_SUCCESS)
return ret;
}
+/***********************************************************************
+ * CM_Get_Res_Des_Data [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_Res_Des_Data(
+ RES_DES rdResDes, PVOID Buffer, ULONG BufferLen, ULONG ulFlags)
+{
+ TRACE("%p %p %l %lx\n", rdResDes, Buffer, BufferLen, ulFlags);
+ return CM_Get_Res_Des_Data_Ex(rdResDes, Buffer, BufferLen, ulFlags, NULL);
+}
+
+
+/***********************************************************************
+ * CM_Get_Res_Des_Data_Ex [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_Res_Des_Data_Ex(
+ RES_DES rdResDes, PVOID Buffer, ULONG BufferLen, ULONG ulFlags,
+ HMACHINE hMachine)
+{
+ FIXME("%p %p %l %lx %lx\n", rdResDes, Buffer, BufferLen, ulFlags, hMachine);
+ return CR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/***********************************************************************
+ * CM_Get_Res_Des_Size [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_Res_Des_Data_Size(
+ PULONG pulSize, RES_DES rdResDes, ULONG ulFlags)
+{
+ TRACE("%p %p %lx\n", pulSize, rdResDes, ulFlags);
+ return CM_Get_Res_Des_Data_Size_Ex(pulSize, rdResDes, ulFlags, NULL);
+}
+
+
+/***********************************************************************
+ * CM_Get_Res_Des_Size_Ex [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_Res_Des_Data_Size_Ex(
+ PULONG pulSize, RES_DES rdResDes, ULONG ulFlags, HMACHINE hMachine)
+{
+ TRACE("%p %p %lx %lx\n", pulSize, rdResDes, ulFlags, hMachine);
+ return CR_CALL_NOT_IMPLEMENTED;
+}
+
+
/***********************************************************************
* CM_Get_Sibling [SETUPAPI.@]
*/
RPC_BINDING_HANDLE BindingHandle = NULL;
HSTRING_TABLE StringTable = NULL;
LPWSTR lpDevInst;
- DWORD dwIndex;
+ DWORD dwIndex, dwLength = MAX_DEVICE_ID_LEN;
CONFIGRET ret;
TRACE("%p %lx %lx %lx\n", pdnDevInst, dnDevInst, ulFlags, hMachine);
if (lpDevInst == NULL)
return CR_INVALID_DEVNODE;
- ret = PNP_GetRelatedDeviceInstance(BindingHandle,
- PNP_DEVICE_SIBLING,
- lpDevInst,
- szRelatedDevInst,
- MAX_DEVICE_ID_LEN,
- 0);
+ RpcTryExcept
+ {
+ ret = PNP_GetRelatedDeviceInstance(BindingHandle,
+ PNP_GET_SIBLING_DEVICE_INSTANCE,
+ lpDevInst,
+ szRelatedDevInst,
+ &dwLength,
+ 0);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
if (ret != CR_SUCCESS)
return ret;
{
RPC_BINDING_HANDLE BindingHandle = NULL;
WORD Version = 0;
+ CONFIGRET ret;
TRACE("%lx\n", hMachine);
return CR_FAILURE;
}
- if (PNP_GetVersion(BindingHandle, &Version) != CR_SUCCESS)
+ RpcTryExcept
+ {
+ ret = PNP_GetVersion(BindingHandle, &Version);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ if (ret != CR_SUCCESS)
return 0;
return Version;
PBOOL pbPresent, HMACHINE hMachine)
{
RPC_BINDING_HANDLE BindingHandle = NULL;
+ CONFIGRET ret;
TRACE("%p %lx\n", pbPresent, hMachine);
return CR_FAILURE;
}
- return PNP_IsDockStationPresent(BindingHandle,
- (unsigned long *)pbPresent);
+ RpcTryExcept
+ {
+ ret = PNP_IsDockStationPresent(BindingHandle,
+ pbPresent);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
+}
+
+
+/***********************************************************************
+ * CM_Is_Version_Available_Ex [SETUPAPI.@]
+ */
+BOOL WINAPI CM_Is_Version_Available(
+ WORD wVersion)
+{
+ TRACE("%hu\n", wVersion);
+ return CM_Is_Version_Available_Ex(wVersion, NULL);
+}
+
+
+/***********************************************************************
+ * CM_Is_Version_Available_Ex [SETUPAPI.@]
+ */
+BOOL WINAPI CM_Is_Version_Available_Ex(
+ WORD wVersion, HMACHINE hMachine)
+{
+ RPC_BINDING_HANDLE BindingHandle = NULL;
+ WORD wServerVersion;
+ CONFIGRET ret;
+
+ TRACE("%hu %lx\n", wVersion, hMachine);
+
+ if (wVersion <= 0x400)
+ return TRUE;
+
+ if (hMachine != NULL)
+ {
+ BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
+ if (BindingHandle == NULL)
+ return FALSE;
+ }
+ else
+ {
+ if (!PnpGetLocalHandles(&BindingHandle, NULL))
+ return FALSE;
+ }
+
+ RpcTryExcept
+ {
+ ret = PNP_GetVersion(BindingHandle, &wServerVersion);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ if (ret != CR_SUCCESS)
+ return FALSE;
+
+ return (wServerVersion >= wVersion);
}
}
else
{
- /* Get the root device ID */
- ret = PNP_GetRootDeviceInstance(BindingHandle,
- DeviceIdBuffer,
- MAX_DEVICE_ID_LEN);
+ RpcTryExcept
+ {
+ /* Get the root device ID */
+ ret = PNP_GetRootDeviceInstance(BindingHandle,
+ DeviceIdBuffer,
+ MAX_DEVICE_ID_LEN);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
if (ret != CR_SUCCESS)
return CR_FAILURE;
}
TRACE("DeviceIdBuffer: %s\n", debugstr_w(DeviceIdBuffer));
- /* Validate the device ID */
- ret = PNP_ValidateDeviceInstance(BindingHandle,
- DeviceIdBuffer,
- ulFlags);
+ RpcTryExcept
+ {
+ /* Validate the device ID */
+ ret = PNP_ValidateDeviceInstance(BindingHandle,
+ DeviceIdBuffer,
+ ulFlags);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
if (ret == CR_SUCCESS)
{
*pdnDevInst = StringTableAddString(StringTable, DeviceIdBuffer, 1);
}
+/***********************************************************************
+ * CM_Modify_Res_Des [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Modify_Res_Des(
+ PRES_DES prdResDes, RES_DES rdResDes, RESOURCEID ResourceID,
+ PCVOID ResourceData, ULONG ResourceLen, ULONG ulFlags)
+{
+ TRACE("%p %p %lx %p %lu %lx", prdResDes, rdResDes, ResourceID, ResourceData,
+ ResourceLen, ulFlags);
+ return CM_Modify_Res_Des_Ex(prdResDes, rdResDes, ResourceID, ResourceData,
+ ResourceLen, ulFlags, NULL);
+}
+
+
+/***********************************************************************
+ * CM_Modify_Res_Des_Ex [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Modify_Res_Des_Ex(
+ PRES_DES prdResDes, RES_DES rdResDes, RESOURCEID ResourceID, PCVOID ResourceData,
+ ULONG ResourceLen, ULONG ulFlags, HMACHINE hMachine)
+{
+ FIXME("%p %p %lx %p %lu %lx %lx", prdResDes, rdResDes, ResourceID, ResourceData,
+ ResourceLen, ulFlags, hMachine);
+ return CR_CALL_NOT_IMPLEMENTED;
+}
+
+
/***********************************************************************
* CM_Move_DevNode [SETUPAPI.@]
*/
HSTRING_TABLE StringTable = NULL;
LPWSTR lpFromDevInst;
LPWSTR lpToDevInst;
+ CONFIGRET ret;
FIXME("%lx %lx %lx %lx\n",
dnFromDevInst, dnToDevInst, ulFlags, hMachine);
if (lpToDevInst == NULL)
return CR_INVALID_DEVNODE;
- return PNP_DeviceInstanceAction(BindingHandle,
- 2,
- ulFlags,
- lpFromDevInst,
- lpToDevInst);
+ RpcTryExcept
+ {
+ ret = PNP_DeviceInstanceAction(BindingHandle,
+ PNP_DEVINST_MOVE,
+ ulFlags,
+ lpFromDevInst,
+ lpToDevInst);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
}
}
+/***********************************************************************
+ * CM_Query_Remove_SubTree [SETUPAPI.@]
+ *
+ * This function is obsolete in Windows XP and above.
+ */
+CONFIGRET WINAPI CM_Query_Remove_SubTree(
+ DEVINST dnAncestor, ULONG ulFlags)
+{
+ TRACE("%lx %lx\n", dnAncestor, ulFlags);
+ return CR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/***********************************************************************
+ * CM_Query_Remove_SubTree_Ex [SETUPAPI.@]
+ *
+ * This function is obsolete in Windows XP and above.
+ */
+CONFIGRET WINAPI CM_Query_Remove_SubTree_Ex(
+ DEVINST dnAncestor, ULONG ulFlags, HMACHINE hMachine)
+{
+ TRACE("%lx %lx %lx\n", dnAncestor, ulFlags, hMachine);
+ return CR_CALL_NOT_IMPLEMENTED;
+}
+
+
/***********************************************************************
* CM_Reenumerate_DevNode [SETUPAPI.@]
*/
RPC_BINDING_HANDLE BindingHandle = NULL;
HSTRING_TABLE StringTable = NULL;
LPWSTR lpDevInst;
+ CONFIGRET ret;
FIXME("%lx %lx %lx\n", dnDevInst, ulFlags, hMachine);
if (lpDevInst == NULL)
return CR_INVALID_DEVNODE;
- return PNP_DeviceInstanceAction(BindingHandle,
- 7,
- ulFlags,
- lpDevInst,
- NULL);
+ RpcTryExcept
+ {
+ ret = PNP_DeviceInstanceAction(BindingHandle,
+ PNP_DEVINST_REENUMERATE,
+ ulFlags,
+ lpDevInst,
+ NULL);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
+}
+
+
+/***********************************************************************
+ * CM_Remove_SubTree [SETUPAPI.@]
+ *
+ * This function is obsolete in Windows XP and above.
+ */
+CONFIGRET WINAPI CM_Remove_SubTree(
+ DEVINST dnAncestor, ULONG ulFlags)
+{
+ TRACE("%lx %lx\n", dnAncestor, ulFlags);
+ return CR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/***********************************************************************
+ * CM_Remove_SubTree_Ex [SETUPAPI.@]
+ *
+ * This function is obsolete in Windows XP and above.
+ */
+CONFIGRET WINAPI CM_Remove_SubTree_Ex(
+ DEVINST dnAncestor, ULONG ulFlags, HMACHINE hMachine)
+{
+ TRACE("%lx %lx %lx\n", dnAncestor, ulFlags, hMachine);
+ return CR_CALL_NOT_IMPLEMENTED;
}
HMACHINE hMachine)
{
RPC_BINDING_HANDLE BindingHandle = NULL;
+ CONFIGRET ret;
TRACE("%lx\n", hMachine);
return CR_FAILURE;
}
- return PNP_RequestEjectPC(BindingHandle);
+ RpcTryExcept
+ {
+ ret = PNP_RequestEjectPC(BindingHandle);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
}
ULONG ulFlags, HMACHINE hMachine)
{
RPC_BINDING_HANDLE BindingHandle = NULL;
+ CONFIGRET ret;
TRACE("%lx %lx\n", ulFlags, hMachine);
return CR_FAILURE;
}
- return PNP_RunDetection(BindingHandle,
- ulFlags);
+ RpcTryExcept
+ {
+ ret = PNP_RunDetection(BindingHandle,
+ ulFlags);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
}
RPC_BINDING_HANDLE BindingHandle = NULL;
HSTRING_TABLE StringTable = NULL;
LPWSTR lpDevInst;
+ CONFIGRET ret;
TRACE("%lx %lx %lx %lx\n", dnDevInst, ulProblem, ulFlags, hMachine);
if (lpDevInst == NULL)
return CR_INVALID_DEVNODE;
- return PNP_SetDeviceProblem(BindingHandle,
- lpDevInst,
- ulProblem,
- ulFlags);
+ RpcTryExcept
+ {
+ ret = PNP_SetDeviceProblem(BindingHandle,
+ lpDevInst,
+ ulProblem,
+ ulFlags);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
}
HSTRING_TABLE StringTable = NULL;
LPWSTR lpDevInst;
ULONG ulType;
+ CONFIGRET ret;
TRACE("%lx %lu %p %lx %lx %lx\n",
dnDevInst, ulProperty, Buffer, ulLength, ulFlags, hMachine);
return CR_INVALID_PROPERTY;
}
- return PNP_SetDeviceRegProp(BindingHandle,
- lpDevInst,
- ulProperty,
- ulType,
- (char *)Buffer,
- ulLength,
- ulFlags);
+ RpcTryExcept
+ {
+ ret = PNP_SetDeviceRegProp(BindingHandle,
+ lpDevInst,
+ ulProperty,
+ ulType,
+ (BYTE *)Buffer,
+ ulLength,
+ ulFlags);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
+}
+
+
+/***********************************************************************
+ * CM_Set_HW_Prof [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Set_HW_Prof(
+ ULONG ulHardwareProfile, ULONG ulFlags)
+{
+ TRACE("%lu %lu\n", ulHardwareProfile, ulFlags);
+ return CM_Set_HW_Prof_Ex(ulHardwareProfile, ulFlags, NULL);
+}
+
+
+/***********************************************************************
+ * CM_Set_HW_Prof_Ex [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Set_HW_Prof_Ex(
+ ULONG ulHardwareProfile, ULONG ulFlags, HMACHINE hMachine)
+{
+ RPC_BINDING_HANDLE BindingHandle = NULL;
+ CONFIGRET ret;
+
+ TRACE("%lu %lu %lx\n", ulHardwareProfile, ulFlags, hMachine);
+
+ if (!IsUserAdmin())
+ return CR_ACCESS_DENIED;
+
+ if (ulFlags != 0)
+ return CR_INVALID_FLAG;
+
+ if (hMachine != NULL)
+ {
+ BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
+ if (BindingHandle == NULL)
+ return CR_FAILURE;
+ }
+ else
+ {
+ if (!PnpGetLocalHandles(&BindingHandle, NULL))
+ return CR_FAILURE;
+ }
+
+ RpcTryExcept
+ {
+ ret = PNP_SetHwProf(BindingHandle, ulHardwareProfile, ulFlags);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
}
ULONG ulFlags, HMACHINE hMachine)
{
RPC_BINDING_HANDLE BindingHandle = NULL;
+ CONFIGRET ret;
FIXME("%s %lu %lu %lx %lx\n", debugstr_w(szDevInstName),
ulConfig, ulValue, ulFlags, hMachine);
return CR_FAILURE;
}
- return PNP_HwProfFlags(BindingHandle, PNP_SET_HW_PROFILE_FLAGS, szDevInstName,
- ulConfig, &ulValue, 0);
+ RpcTryExcept
+ {
+ ret = PNP_HwProfFlags(BindingHandle, PNP_SET_HWPROFFLAGS, szDevInstName,
+ ulConfig, &ulValue, NULL, NULL, 0, 0);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
}
RPC_BINDING_HANDLE BindingHandle = NULL;
HSTRING_TABLE StringTable = NULL;
LPWSTR lpDevInst;
+ CONFIGRET ret;
FIXME("%lx %lx %lx\n", dnDevInst, ulFlags, hMachine);
if (lpDevInst == NULL)
return CR_INVALID_DEVNODE;
- return PNP_DeviceInstanceAction(BindingHandle,
- 3,
- ulFlags,
- lpDevInst,
- NULL);
+ RpcTryExcept
+ {
+ ret = PNP_DeviceInstanceAction(BindingHandle,
+ PNP_DEVINST_SETUP,
+ ulFlags,
+ lpDevInst,
+ NULL);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
}
RPC_BINDING_HANDLE BindingHandle = NULL;
HSTRING_TABLE StringTable = NULL;
LPWSTR lpDevInst;
+ CONFIGRET ret;
TRACE("%lx %lx %lx\n", dnPhantom, ulFlags, hMachine);
if (lpDevInst == NULL)
return CR_INVALID_DEVNODE;
- return PNP_UninstallDevInst(BindingHandle,
- lpDevInst,
- ulFlags);
+ RpcTryExcept
+ {
+ ret = PNP_UninstallDevInst(BindingHandle,
+ lpDevInst,
+ ulFlags);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ ret = RpcStatusToCmStatus(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ return ret;
}