Handle MachineName parameter in SetupDiCreateDeviceInfoListExW

Eric, can you take care of the change in CM_Connect_MachineW?

svn path=/trunk/; revision=22449
This commit is contained in:
Hervé Poussineau 2006-06-21 09:00:17 +00:00
parent 521b9caad9
commit 67950a1150
3 changed files with 17 additions and 19 deletions

View file

@ -251,7 +251,14 @@ CONFIGRET WINAPI CM_Connect_MachineW(
TRACE("%s %p\n", debugstr_w(UNCServerName), phMachine);
pMachine = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(MACHINE_INFO));
if (!UNCServerName)
{
FIXME("Connection to local machine not implemented\n");
*phMachine = NULL;
return CR_SUCCESS;
}
pMachine = HeapAlloc(GetProcessHeap(), 0, sizeof(MACHINE_INFO));
if (pMachine == NULL)
return CR_OUT_OF_MEMORY;

View file

@ -1701,6 +1701,8 @@ SetupDiInstallClassExW(
PVOID callback_context = NULL;
hDeviceInfo = SetupDiCreateDeviceInfoList(NULL, NULL);
if (hDeviceInfo == INVALID_HANDLE_VALUE)
goto cleanup;
InstallParams.cbSize = sizeof(SP_DEVINSTALL_PARAMS);
if (!SetupDiGetDeviceInstallParamsW(hDeviceInfo, NULL, &InstallParams))

View file

@ -160,7 +160,7 @@ SetupDiCreateDeviceInfoListExW(
LPWSTR UNCServerName = NULL;
DWORD size;
DWORD rc;
//CONFIGRET cr;
CONFIGRET cr;
HDEVINFO ret = (HDEVINFO)INVALID_HANDLE_VALUE;;
TRACE("%s %p %s %p\n", debugstr_guid(ClassGuid), hwndParent,
@ -169,7 +169,7 @@ SetupDiCreateDeviceInfoListExW(
size = FIELD_OFFSET(struct DeviceInfoSet, szData);
if (MachineName)
size += (strlenW(MachineName) + 3) * sizeof(WCHAR);
list = HeapAlloc(GetProcessHeap(), 0, size);
list = MyMalloc(size);
if (!list)
{
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
@ -193,13 +193,14 @@ SetupDiCreateDeviceInfoListExW(
SetLastError(rc);
goto cleanup;
}
UNCServerName = HeapAlloc(GetProcessHeap(), 0, (strlenW(MachineName) + 3) * sizeof(WCHAR));
UNCServerName = MyMalloc((strlenW(MachineName) + 3) * sizeof(WCHAR));
if (!UNCServerName)
{
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
goto cleanup;
}
UNCServerName[0] = UNCServerName[1] = '\\';
strcpyW(UNCServerName + 2, MachineName);
list->szData[0] = list->szData[1] = '\\';
strcpyW(list->szData + 2, MachineName);
@ -207,27 +208,15 @@ SetupDiCreateDeviceInfoListExW(
}
else
{
DWORD Size = MAX_PATH;
list->HKLM = HKEY_LOCAL_MACHINE;
UNCServerName = HeapAlloc(GetProcessHeap(), 0, (MAX_PATH + 2) * sizeof(WCHAR));
if (!UNCServerName)
{
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
goto cleanup;
}
if (!GetComputerNameW(UNCServerName + 2, &Size))
goto cleanup;
list->MachineName = NULL;
}
#if 0
UNCServerName[0] = UNCServerName[1] = '\\';
cr = CM_Connect_MachineW(UNCServerName, &list->hMachine);
if (cr != CR_SUCCESS)
{
SetLastError(GetErrorCodeFromCrCode(cr));
goto cleanup;
}
#endif
InitializeListHead(&list->DriverListHead);
InitializeListHead(&list->ListHead);
@ -240,10 +229,10 @@ cleanup:
{
if (list->HKLM != NULL && list->HKLM != HKEY_LOCAL_MACHINE)
RegCloseKey(list->HKLM);
HeapFree(GetProcessHeap(), 0, list);
MyFree(list);
}
}
HeapFree(GetProcessHeap(), 0, UNCServerName);
MyFree(UNCServerName);
return ret;
}