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;
}
if (!PnpGetLocalHandles(&BindingHandle, NULL))
return CR_FAILURE;
- bAdmin = IsUserAnAdmin();
+ bAdmin = IsUserAdmin();
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.@]
*/
FIXME("%p %p %lu %lx %p\n",
plcLogConf, dnDevInst, Priority, ulFlags, hMachine);
- if (!IsUserAnAdmin())
+ if (!IsUserAdmin())
return CR_ACCESS_DENIED;
if (plcLogConf == NULL)
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 (!IsUserAnAdmin())
+ if (!IsUserAdmin())
return CR_ACCESS_DENIED;
if (dnDevInst == 0)
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;
}
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();
FIXME("%p %s %p %lx %p\n",
pdnDevInst, debugstr_w(pDeviceID), dnParent, ulFlags, hMachine);
- if (!IsUserAnAdmin())
+ if (!IsUserAdmin())
return CR_ACCESS_DENIED;
if (pdnDevInst == NULL)
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 (!IsUserAnAdmin())
+ if (!IsUserAdmin())
return CR_ACCESS_DENIED;
if (dnDevInst == 0)
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 (!IsUserAnAdmin())
+ if (!IsUserAdmin())
return CR_ACCESS_DENIED;
if (dnDevInst == 0)
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 (!IsUserAnAdmin())
+ if (!IsUserAdmin())
return CR_ACCESS_DENIED;
pLogConfInfo = (PLOG_CONF_INFO)lcLogConfToBeFreed;
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;
}
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;
}
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;
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;
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);
HSTRING_TABLE StringTable = NULL;
LPWSTR lpFromDevInst;
LPWSTR lpToDevInst;
+ CONFIGRET ret;
FIXME("%lx %lx %lx %lx\n",
dnFromDevInst, dnToDevInst, ulFlags, hMachine);
- if (!IsUserAnAdmin())
+ if (!IsUserAdmin())
return CR_ACCESS_DENIED;
if (dnFromDevInst == 0 || dnToDevInst == 0)
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;
}
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;
}
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);
- if (!IsUserAnAdmin())
+ if (!IsUserAdmin())
return CR_ACCESS_DENIED;
if (ulFlags & ~CM_DETECT_BITS)
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 (!IsUserAnAdmin())
+ if (!IsUserAdmin())
return CR_ACCESS_DENIED;
if (dnDevInst == 0)
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;
}