mirror of
https://github.com/reactos/reactos.git
synced 2024-08-08 04:08:29 +00:00
[UMPNPMGR]
- Implement PNP_GetHwProfInfo. - Fix PNP_GetClassRegProp: Set the transfer length only in case of success. svn path=/trunk/; revision=54272
This commit is contained in:
parent
f6d2cc099e
commit
f39c8938c3
|
@ -1333,7 +1333,8 @@ DWORD PNP_GetClassRegProp(
|
||||||
}
|
}
|
||||||
|
|
||||||
done:;
|
done:;
|
||||||
*pulTransferLen = (ret == CR_SUCCESS) ? *pulLength : 0;
|
if (ret == CR_SUCCESS)
|
||||||
|
*pulTransferLen = *pulLength;
|
||||||
|
|
||||||
if (hPropKey != NULL)
|
if (hPropKey != NULL)
|
||||||
RegCloseKey(hPropKey);
|
RegCloseKey(hPropKey);
|
||||||
|
@ -2145,8 +2146,128 @@ DWORD PNP_GetHwProfInfo(
|
||||||
DWORD ulProfileInfoSize,
|
DWORD ulProfileInfoSize,
|
||||||
DWORD ulFlags)
|
DWORD ulFlags)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
WCHAR szProfileName[5];
|
||||||
return CR_CALL_NOT_IMPLEMENTED;
|
HKEY hKeyConfig = NULL;
|
||||||
|
HKEY hKeyProfiles = NULL;
|
||||||
|
HKEY hKeyProfile = NULL;
|
||||||
|
DWORD dwDisposition;
|
||||||
|
DWORD dwSize;
|
||||||
|
LONG lError;
|
||||||
|
CONFIGRET ret = CR_SUCCESS;
|
||||||
|
|
||||||
|
UNREFERENCED_PARAMETER(hBinding);
|
||||||
|
|
||||||
|
DPRINT("PNP_GetHwProfInfo() called\n");
|
||||||
|
|
||||||
|
if (ulProfileInfoSize == 0)
|
||||||
|
{
|
||||||
|
ret = CR_INVALID_DATA;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ulFlags != 0)
|
||||||
|
{
|
||||||
|
ret = CR_INVALID_FLAG;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Initialize the profile information */
|
||||||
|
pHWProfileInfo->HWPI_ulHWProfile = 0;
|
||||||
|
pHWProfileInfo->HWPI_szFriendlyName[0] = 0;
|
||||||
|
pHWProfileInfo->HWPI_dwFlags = 0;
|
||||||
|
|
||||||
|
/* Open the 'IDConfigDB' key */
|
||||||
|
lError = RegCreateKeyExW(HKEY_LOCAL_MACHINE,
|
||||||
|
L"System\\CurrentControlSet\\Control\\IDConfigDB",
|
||||||
|
0,
|
||||||
|
NULL,
|
||||||
|
REG_OPTION_NON_VOLATILE,
|
||||||
|
KEY_QUERY_VALUE,
|
||||||
|
NULL,
|
||||||
|
&hKeyConfig,
|
||||||
|
&dwDisposition);
|
||||||
|
if (lError != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
ret = CR_REGISTRY_ERROR;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Open the 'Hardware Profiles' subkey */
|
||||||
|
lError = RegCreateKeyExW(hKeyConfig,
|
||||||
|
L"Hardware Profiles",
|
||||||
|
0,
|
||||||
|
NULL,
|
||||||
|
REG_OPTION_NON_VOLATILE,
|
||||||
|
KEY_ENUMERATE_SUB_KEYS | KEY_QUERY_VALUE,
|
||||||
|
NULL,
|
||||||
|
&hKeyProfiles,
|
||||||
|
&dwDisposition);
|
||||||
|
if (lError != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
ret = CR_REGISTRY_ERROR;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ulIndex == (ULONG)-1)
|
||||||
|
{
|
||||||
|
dwSize = sizeof(ULONG);
|
||||||
|
lError = RegQueryValueExW(hKeyConfig,
|
||||||
|
L"CurrentConfig",
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
(LPBYTE)&pHWProfileInfo->HWPI_ulHWProfile,
|
||||||
|
&dwSize);
|
||||||
|
if (lError != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
pHWProfileInfo->HWPI_ulHWProfile = 0;
|
||||||
|
ret = CR_REGISTRY_ERROR;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* FIXME: not implemented yet */
|
||||||
|
ret = CR_CALL_NOT_IMPLEMENTED;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
swprintf(szProfileName, L"%04lu", pHWProfileInfo->HWPI_ulHWProfile);
|
||||||
|
|
||||||
|
lError = RegOpenKeyExW(hKeyProfiles,
|
||||||
|
szProfileName,
|
||||||
|
0,
|
||||||
|
KEY_QUERY_VALUE,
|
||||||
|
&hKeyProfile);
|
||||||
|
if (lError != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
ret = CR_REGISTRY_ERROR;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
dwSize = sizeof(pHWProfileInfo->HWPI_szFriendlyName);
|
||||||
|
lError = RegQueryValueExW(hKeyProfile,
|
||||||
|
L"FriendlyName",
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
(LPBYTE)&pHWProfileInfo->HWPI_szFriendlyName,
|
||||||
|
&dwSize);
|
||||||
|
if (lError != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
ret = CR_REGISTRY_ERROR;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
done:
|
||||||
|
if (hKeyProfile != NULL)
|
||||||
|
RegCloseKey(hKeyProfile);
|
||||||
|
|
||||||
|
if (hKeyProfiles != NULL)
|
||||||
|
RegCloseKey(hKeyProfiles);
|
||||||
|
|
||||||
|
if (hKeyConfig != NULL)
|
||||||
|
RegCloseKey(hKeyConfig);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2515,6 +2636,8 @@ DWORD PNP_GetVersionInternal(
|
||||||
handle_t hBinding,
|
handle_t hBinding,
|
||||||
WORD *pwVersion)
|
WORD *pwVersion)
|
||||||
{
|
{
|
||||||
|
*pwVersion = 0x501;
|
||||||
|
return CR_SUCCESS;
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
return CR_CALL_NOT_IMPLEMENTED;
|
return CR_CALL_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
@ -3144,6 +3267,8 @@ ServiceControlHandler(DWORD dwControl,
|
||||||
|
|
||||||
case SERVICE_CONTROL_SHUTDOWN:
|
case SERVICE_CONTROL_SHUTDOWN:
|
||||||
DPRINT1(" SERVICE_CONTROL_SHUTDOWN received\n");
|
DPRINT1(" SERVICE_CONTROL_SHUTDOWN received\n");
|
||||||
|
/* Stop listening to RPC Messages */
|
||||||
|
RpcMgmtStopServerListening(NULL);
|
||||||
UpdateServiceStatus(SERVICE_STOPPED);
|
UpdateServiceStatus(SERVICE_STOPPED);
|
||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue