Implement CM_Get_DevNode_Registry_Property[_Ex]A/W and CM_Set_DevNode_Registry_Property[_Ex]A/W partially.

svn path=/trunk/; revision=16964
This commit is contained in:
Eric Kohl 2005-08-01 19:42:19 +00:00
parent 2b6bb7a79e
commit 226f6c1ce2
6 changed files with 535 additions and 19 deletions

View file

@ -39,11 +39,36 @@ interface pnp
[in] DWORD Length,
[in] DWORD Flags);
CONFIGRET PNP_EnumerateSubKeys(handle_t BindingHandle,
[in] unsigned long Branch,
[in] unsigned long Index,
[out, string, size_is(Length)] wchar_t *Buffer,
[in] unsigned long Length,
[out] unsigned long *RequiredLength,
[in] DWORD Flags);
CONFIGRET PNP_GetDepth(handle_t BindingHandle,
[in, string] wchar_t *DeviceInstance,
[out] unsigned long *Depth,
[in] DWORD Flags);
CONFIGRET PNP_GetDeviceRegProp(handle_t BindingHandle,
[in, string] wchar_t *DeviceInstance,
[in] unsigned long Property,
[in, out] unsigned long *DataType,
[out, size_is(*TransferLen)] char *Buffer,
[in, out] unsigned long *TransferLen,
[in, out] unsigned long *Length,
[in] DWORD Flags);
CONFIGRET PNP_SetDeviceRegProp(handle_t BindingHandle,
[in, string] wchar_t *DeviceId,
[in] unsigned long Property,
[in] unsigned long DataType,
[in, size_is(Length)] char *Buffer,
[in] unsigned long Length,
[in] unsigned long Flags);
CONFIGRET PNP_GetDeviceStatus(handle_t BindingHandle,
[in, string] wchar_t *DeviceInstance,
[out] unsigned long *Status,

View file

@ -50,10 +50,12 @@ DECL_WINELIB_CFGMGR32_TYPE_AW(DEVINSTID)
#define CR_REGISTRY_ERROR 0x0000001D
#define CR_INVALID_DEVICE_ID 0x0000001E
#define CR_INVALID_DATA 0x0000001F
#define CR_NO_SUCH_VALUE 0x00000025
#define CR_NO_SUCH_VALUE 0x00000025
#define CR_NO_SUCH_REGISTRY_KEY 0x0000002E
#define CR_INVALID_MACHINENAME 0x0000002F
#define CR_ACCESS_DENIED 0x00000033
#define CR_CALL_NOT_IMPLEMENTED 0x00000034
#define CR_INVALID_PROPERTY 0x00000035
#define MAX_CLASS_NAME_LEN 32
#define MAX_GUID_STRING_LEN 39
@ -105,6 +107,14 @@ CONFIGRET WINAPI CM_Get_Child( PDEVINST, DEVINST, ULONG );
CONFIGRET WINAPI CM_Get_Child_Ex( PDEVINST, DEVINST, ULONG, HMACHINE );
CONFIGRET WINAPI CM_Get_Depth( PULONG, DEVINST, ULONG );
CONFIGRET WINAPI CM_Get_Depth_Ex( PULONG, DEVINST, ULONG, HMACHINE );
CONFIGRET WINAPI CM_Get_DevNode_Registry_PropertyA( DEVINST, ULONG, PULONG, PVOID, PULONG, ULONG );
CONFIGRET WINAPI CM_Get_DevNode_Registry_PropertyW( DEVINST, ULONG, PULONG, PVOID, PULONG, ULONG );
#define CM_Get_DevNode_Registry_Property WINELIB_NAME_AW(CM_Get_DevNode_Registry_Property)
CONFIGRET WINAPI CM_Get_DevNode_Registry_Property_ExA( DEVINST, ULONG, PULONG, PVOID, PULONG, ULONG, HMACHINE );
CONFIGRET WINAPI CM_Get_DevNode_Registry_Property_ExW( DEVINST, ULONG, PULONG, PVOID, PULONG, ULONG, HMACHINE );
#define CM_Get_DevNode_Registry_Property_Ex WINELIB_NAME_AW(CM_Get_DevNode_Registry_Property_Ex)
CONFIGRET WINAPI CM_Get_DevNode_Status( PULONG, PULONG, DEVINST, ULONG );
CONFIGRET WINAPI CM_Get_DevNode_Status_Ex( PULONG, PULONG, DEVINST, ULONG, HMACHINE );
CONFIGRET WINAPI CM_Get_Device_IDA( DEVINST, PCHAR, ULONG, ULONG );
CONFIGRET WINAPI CM_Get_Device_IDW( DEVINST, PWCHAR, ULONG, ULONG );
#define CM_Get_Device_ID WINELIB_NAME_AW(CM_Get_Device_ID)
@ -125,8 +135,6 @@ CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExW( PULONG, PCWSTR, ULONG, HMACHINE
#define CM_Get_Device_ID_List_Size_Ex WINELIB_NAME_AW(CM_Get_Device_ID_List_Size_Ex)
CONFIGRET WINAPI CM_Get_Device_ID_Size( PULONG, DEVINST, ULONG );
CONFIGRET WINAPI CM_Get_Device_ID_Size_Ex( PULONG, DEVINST, ULONG, HMACHINE );
CONFIGRET WINAPI CM_Get_DevNode_Status( PULONG, PULONG, DEVINST, ULONG );
CONFIGRET WINAPI CM_Get_DevNode_Status_Ex( PULONG, PULONG, DEVINST, ULONG, HMACHINE );
CONFIGRET WINAPI CM_Get_Global_State( PULONG, ULONG );
CONFIGRET WINAPI CM_Get_Global_State_Ex( PULONG, ULONG, HMACHINE );
CONFIGRET WINAPI CM_Get_Parent( PDEVINST, DEVINST, ULONG );
@ -152,5 +160,11 @@ CONFIGRET WINAPI CM_Open_Class_Key_ExW(LPGUID, LPCWSTR, REGSAM, REGDISPOSITION,
CONFIGRET WINAPI CM_Set_DevNode_Problem( DEVINST, ULONG, ULONG );
CONFIGRET WINAPI CM_Set_DevNode_Problem_Ex( DEVINST, ULONG, ULONG, HMACHINE );
CONFIGRET WINAPI CM_Set_DevNode_Registry_PropertyA( DEVINST, ULONG, PCVOID, ULONG, ULONG );
CONFIGRET WINAPI CM_Set_DevNode_Registry_PropertyW( DEVINST, ULONG, PCVOID, ULONG, ULONG );
#define CM_Set_DevNode_Registry_Property WINELIB_NAME_AW(CM_Set_DevNode_Registry_Property)
CONFIGRET WINAPI CM_Set_DevNode_Registry_Property_ExA( DEVINST, ULONG, PCVOID, ULONG, ULONG, HMACHINE );
CONFIGRET WINAPI CM_Set_DevNode_Registry_Property_ExW( DEVINST, ULONG, PCVOID, ULONG, ULONG, HMACHINE );
#define CM_Set_DevNode_Registry_Property_Ex WINELIB_NAME_AW(CM_Set_DevNode_Registry_Property_Ex)
#endif /* _CFGMGR32_H_ */

View file

@ -372,6 +372,128 @@ CONFIGRET WINAPI CM_Get_Depth_Ex(
}
/***********************************************************************
* CM_Get_DevNode_Registry_PropertyA [SETUPAPI.@]
*/
CONFIGRET WINAPI CM_Get_DevNode_Registry_PropertyA(
DEVINST dnDevInst, ULONG ulProperty, PULONG pulRegDataType,
PVOID Buffer, PULONG pulLength, ULONG ulFlags)
{
TRACE("%lx %lu %p %p %p %lx\n",
dnDevInst, ulProperty, pulRegDataType, Buffer, pulLength, ulFlags);
return CM_Get_DevNode_Registry_Property_ExA(dnDevInst, ulProperty,
pulRegDataType, Buffer,
pulLength, ulFlags, NULL);
}
/***********************************************************************
* CM_Get_DevNode_Registry_PropertyW [SETUPAPI.@]
*/
CONFIGRET WINAPI CM_Get_DevNode_Registry_PropertyW(
DEVINST dnDevInst, ULONG ulProperty, PULONG pulRegDataType,
PVOID Buffer, PULONG pulLength, ULONG ulFlags)
{
TRACE("%lx %lu %p %p %p %lx\n",
dnDevInst, ulProperty, pulRegDataType, Buffer, pulLength, ulFlags);
return CM_Get_DevNode_Registry_Property_ExW(dnDevInst, ulProperty,
pulRegDataType, Buffer,
pulLength, ulFlags, NULL);
}
/***********************************************************************
* CM_Get_DevNode_Registry_Property_ExA [SETUPAPI.@]
*/
CONFIGRET WINAPI CM_Get_DevNode_Registry_Property_ExA(
DEVINST dnDevInst, ULONG ulProperty, PULONG pulRegDataType,
PVOID Buffer, PULONG pulLength, ULONG ulFlags, HMACHINE hMachine)
{
FIXME("%lx %lu %p %p %p %lx %lx\n",
dnDevInst, ulProperty, pulRegDataType, Buffer, pulLength,
ulFlags, hMachine);
return CR_CALL_NOT_IMPLEMENTED;
}
/***********************************************************************
* CM_Get_DevNode_Registry_Property_ExW [SETUPAPI.@]
*/
CONFIGRET WINAPI CM_Get_DevNode_Registry_Property_ExW(
DEVINST dnDevInst, ULONG ulProperty, PULONG pulRegDataType,
PVOID Buffer, PULONG pulLength, ULONG ulFlags, HMACHINE hMachine)
{
RPC_BINDING_HANDLE BindingHandle = NULL;
HSTRING_TABLE StringTable = NULL;
CONFIGRET ret = CR_SUCCESS;
LPWSTR lpDevInst;
ULONG ulDataType = 0;
ULONG ulTransferLength = 0;
FIXME("%lx %lu %p %p %p %lx %lx\n",
dnDevInst, ulProperty, pulRegDataType, Buffer, pulLength,
ulFlags, hMachine);
if (dnDevInst == 0)
return CR_INVALID_DEVNODE;
if (ulProperty < 1 /* CM_DRP_MIN */ || ulProperty > 0x17 /* CM_DRP_MAX */)
return CR_INVALID_PROPERTY;
/* pulRegDataType is optional */
/* Buffer is optional */
if (pulLength == NULL)
return CR_INVALID_POINTER;
if (*pulLength == 0)
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;
StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
if (StringTable == 0)
return CR_FAILURE;
}
else
{
if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
return CR_FAILURE;
}
lpDevInst = StringTableStringFromId(StringTable, dnDevInst);
if (lpDevInst == NULL)
return CR_INVALID_DEVNODE;
ret = PNP_GetDeviceRegProp(BindingHandle,
lpDevInst,
ulProperty,
&ulDataType,
Buffer,
&ulTransferLength,
pulLength,
ulFlags);
if (ret == CR_SUCCESS)
{
if (pulRegDataType != NULL)
*pulRegDataType = ulDataType;
}
return ret;
}
/***********************************************************************
* CM_Get_DevNode_Status [SETUPAPI.@]
*/
@ -1171,3 +1293,105 @@ CONFIGRET WINAPI CM_Set_DevNode_Problem_Ex(
ulProblem,
ulFlags);
}
/***********************************************************************
* CM_Set_DevNode_Registry_PropertyA [SETUPAPI.@]
*/
CONFIGRET WINAPI CM_Set_DevNode_Registry_PropertyA(
DEVINST dnDevInst, ULONG ulProperty, PCVOID Buffer, ULONG ulLength,
ULONG ulFlags)
{
TRACE("%lx %lu %p %lx %lx\n",
dnDevInst, ulProperty, Buffer, ulLength, ulFlags);
return CM_Set_DevNode_Registry_Property_ExA(dnDevInst, ulProperty,
Buffer, ulLength,
ulFlags, NULL);
}
/***********************************************************************
* CM_Set_DevNode_Registry_PropertyW [SETUPAPI.@]
*/
CONFIGRET WINAPI CM_Set_DevNode_Registry_PropertyW(
DEVINST dnDevInst, ULONG ulProperty, PCVOID Buffer, ULONG ulLength,
ULONG ulFlags)
{
TRACE("%lx %lu %p %lx %lx\n",
dnDevInst, ulProperty, Buffer, ulLength, ulFlags);
return CM_Set_DevNode_Registry_Property_ExW(dnDevInst, ulProperty,
Buffer, ulLength,
ulFlags, NULL);
}
/***********************************************************************
* CM_Set_DevNode_Registry_Property_ExA [SETUPAPI.@]
*/
CONFIGRET WINAPI CM_Set_DevNode_Registry_Property_ExA(
DEVINST dnDevInst, ULONG ulProperty, PCVOID Buffer, ULONG ulLength,
ULONG ulFlags, HMACHINE hMachine)
{
FIXME("%lx %lu %p %lx %lx %lx\n",
dnDevInst, ulProperty, Buffer, ulLength, ulFlags, hMachine);
return CR_CALL_NOT_IMPLEMENTED;
}
/***********************************************************************
* CM_Set_DevNode_Registry_Property_ExW [SETUPAPI.@]
*/
CONFIGRET WINAPI CM_Set_DevNode_Registry_Property_ExW(
DEVINST dnDevInst, ULONG ulProperty, PCVOID Buffer, ULONG ulLength,
ULONG ulFlags, HMACHINE hMachine)
{
RPC_BINDING_HANDLE BindingHandle = NULL;
HSTRING_TABLE StringTable = NULL;
LPWSTR lpDevInst;
ULONG ulType;
FIXME("%lx %lu %p %lx %lx %lx\n",
dnDevInst, ulProperty, Buffer, ulLength, ulFlags, hMachine);
if (dnDevInst == 0)
return CR_INVALID_DEVNODE;
if (ulProperty < 1 /* CM_DRP_MIN */ || ulProperty > 0x17 /* CM_DRP_MAX */)
return CR_INVALID_PROPERTY;
if (Buffer != NULL && ulLength == 0)
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;
StringTable = ((PMACHINE_INFO)hMachine)->StringTable;
if (StringTable == 0)
return CR_FAILURE;
}
else
{
if (!PnpGetLocalHandles(&BindingHandle, &StringTable))
return CR_FAILURE;
}
lpDevInst = StringTableStringFromId(StringTable, dnDevInst);
if (lpDevInst == NULL)
return CR_INVALID_DEVNODE;
ulType = REG_SZ; /* FIXME */
return PNP_SetDeviceRegProp(BindingHandle,
lpDevInst,
ulProperty,
ulType,
(char *)Buffer,
ulLength,
ulFlags);
}

View file

@ -65,10 +65,10 @@
@ stub CM_Get_Class_Name_ExW
@ stdcall CM_Get_Depth(ptr long long)
@ stdcall CM_Get_Depth_Ex(ptr long long long)
@ stub CM_Get_DevNode_Registry_PropertyA
@ stub CM_Get_DevNode_Registry_PropertyW
@ stub CM_Get_DevNode_Registry_Property_ExA
@ stub CM_Get_DevNode_Registry_Property_ExW
@ stdcall CM_Get_DevNode_Registry_PropertyA(long long ptr ptr ptr long)
@ stdcall CM_Get_DevNode_Registry_PropertyW(long long ptr ptr ptr long)
@ stdcall CM_Get_DevNode_Registry_Property_ExA(long long ptr ptr ptr long long)
@ stdcall CM_Get_DevNode_Registry_Property_ExW(long long ptr ptr ptr long long)
@ stdcall CM_Get_DevNode_Status(ptr ptr long long)
@ stdcall CM_Get_DevNode_Status_Ex(ptr ptr long long long)
@ stdcall CM_Get_Device_IDA(long str long long)
@ -172,10 +172,10 @@
@ stub CM_Run_Detection_Ex
@ stdcall CM_Set_DevNode_Problem(long long long)
@ stdcall CM_Set_DevNode_Problem_Ex(long long long long)
@ stub CM_Set_DevNode_Registry_PropertyA
@ stub CM_Set_DevNode_Registry_PropertyW
@ stub CM_Set_DevNode_Registry_Property_ExA
@ stub CM_Set_DevNode_Registry_Property_ExW
@ stdcall CM_Set_DevNode_Registry_PropertyA(long long ptr long long)
@ stdcall CM_Set_DevNode_Registry_PropertyW(long long ptr long long)
@ stdcall CM_Set_DevNode_Registry_Property_ExA(long long ptr long long long)
@ stdcall CM_Set_DevNode_Registry_Property_ExW(long long ptr long long long)
@ stub CM_Set_HW_Prof
@ stub CM_Set_HW_Prof_Ex
@ stub CM_Set_HW_Prof_FlagsA

View file

@ -54,6 +54,9 @@ static SERVICE_TABLE_ENTRY ServiceTable[2] =
static WCHAR szRootDeviceId[] = L"HTREE\\ROOT\\0";
static HKEY hEnumKey = NULL;
static HKEY hClassKey = NULL;
/* FUNCTIONS *****************************************************************/
static DWORD WINAPI
@ -237,7 +240,7 @@ PNP_GetRelatedDeviceInstance(handle_t BindingHandle,
}
DPRINT("PNP_GetRelatedDeviceInstance() done (returns %lx)\n", ret);
if (ret == 0)
if (ret == CR_SUCCESS)
{
DPRINT("RelatedDevice: %wZ\n", &PlugPlayData.RelatedDeviceInstance);
}
@ -246,6 +249,59 @@ PNP_GetRelatedDeviceInstance(handle_t BindingHandle,
}
CONFIGRET
PNP_EnumerateSubKeys(handle_t BindingHandle,
unsigned long Branch,
unsigned long Index,
wchar_t *Buffer,
unsigned long Length,
unsigned long *RequiredLength,
DWORD Flags)
{
CONFIGRET ret = CR_SUCCESS;
HKEY hKey;
DWORD dwError;
DPRINT1("PNP_EnumerateSubKeys() called\n");
switch (Branch)
{
case 1:
hKey = hEnumKey;
break;
case 2:
hKey = hClassKey;
break;
default:
return CR_FAILURE;
}
*RequiredLength = Length;
dwError = RegEnumKeyExW(hKey,
Index,
Buffer,
RequiredLength,
NULL,
NULL,
NULL,
NULL);
if (dwError != ERROR_SUCCESS)
{
ret = CR_FAILURE;
}
DPRINT1("PNP_EnumerateSubKeys() done (returns %lx)\n", ret);
if (ret == CR_SUCCESS)
{
DPRINT1("Sub key: %S\n", Buffer);
}
return ret;
}
CONFIGRET
PNP_GetDepth(handle_t BindingHandle,
wchar_t *DeviceInstance,
@ -256,7 +312,7 @@ PNP_GetDepth(handle_t BindingHandle,
CONFIGRET ret = CR_SUCCESS;
NTSTATUS Status;
DPRINT1("PNP_GetDepth() called\n");
DPRINT("PNP_GetDepth() called\n");
RtlInitUnicodeString(&PlugPlayData.DeviceInstance,
DeviceInstance);
@ -273,7 +329,60 @@ PNP_GetDepth(handle_t BindingHandle,
ret = CR_FAILURE; /* FIXME */
}
DPRINT1("PNP_GetDepth() done (returns %lx)\n", ret);
DPRINT("PNP_GetDepth() done (returns %lx)\n", ret);
return ret;
}
CONFIGRET
PNP_SetDeviceRegProp(handle_t BindingHandle,
wchar_t *DeviceId,
unsigned long Property,
unsigned long DataType,
char *Buffer,
unsigned long Length,
unsigned long Flags)
{
CONFIGRET ret = CR_SUCCESS;
// ULONG Data;
DPRINT1("PNP_SetDeviceRegProp() called\n");
DPRINT1("DeviceId: %S\n", DeviceId);
DPRINT1("Property: %lu\n", Property);
DPRINT1("DataType: %lu\n", DataType);
DPRINT1("Length: %lu\n", Length);
DPRINT1("Data: %lx\n", *((PULONG)Buffer));
DPRINT1("PNP_SetDeviceRegProp() done (returns %lx)\n", ret);
return ret;
}
CONFIGRET
PNP_GetDeviceRegProp(handle_t BindingHandle,
wchar_t *DeviceInstance,
unsigned long Property,
unsigned long *DataType,
char *Buffer,
unsigned long *TransferLen,
unsigned long *Length,
DWORD Flags)
{
CONFIGRET ret = CR_SUCCESS;
ULONG Data;
DPRINT1("PNP_GetDeviceRegProp() called\n");
Data = 0xbaadf00d;
memcpy(Buffer, &Data, sizeof(ULONG));
*Length = sizeof(ULONG);
DPRINT1("PNP_GetDeviceRegProp() done (returns %lx)\n", ret);
return ret;
}
@ -290,7 +399,7 @@ PNP_GetDeviceStatus(handle_t BindingHandle,
CONFIGRET ret = CR_SUCCESS;
NTSTATUS Status;
DPRINT1("PNP_GetDeviceStatus() called\n");
DPRINT("PNP_GetDeviceStatus() called\n");
RtlInitUnicodeString(&PlugPlayData.DeviceInstance,
DeviceInstance);
@ -309,7 +418,7 @@ PNP_GetDeviceStatus(handle_t BindingHandle,
ret = CR_FAILURE; /* FIXME */
}
DPRINT1("PNP_GetDeviceStatus() done (returns %lx)\n", ret);
DPRINT("PNP_GetDeviceStatus() done (returns %lx)\n", ret);
return ret;
}
@ -424,8 +533,32 @@ ServiceMain(DWORD argc, LPTSTR *argv)
int
main(int argc, char *argv[])
{
DWORD dwError;
DPRINT("Umpnpmgr: main() started\n");
dwError = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
L"System\\CurrentControlSet\\Enum",
0,
KEY_ALL_ACCESS,
&hEnumKey);
if (dwError != ERROR_SUCCESS)
{
DPRINT1("Could not open the Enum Key! (Error %lu)\n", dwError);
return dwError;
}
dwError = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
L"System\\CurrentControlSet\\Control\\Class",
0,
KEY_ALL_ACCESS,
&hClassKey);
if (dwError != ERROR_SUCCESS)
{
DPRINT1("Could not open the Class Key! (Error %lu)\n", dwError);
return dwError;
}
StartServiceCtrlDispatcher(ServiceTable);
DPRINT("Umpnpmgr: main() done\n");

View file

@ -1017,7 +1017,69 @@ CM_Get_Device_ID_Size_Ex(
/* FIXME: Obsolete CM_Get_Device_Interface_List_Size_Ex */
/* FIXME: Obsolete CM_Get_DevNode_Custom_Property */
/* FIXME: Obsolete CM_Get_DevNode_Custom_Property_Ex */
/* FIXME: Obsolete CM_Get_DevNode_Registry_Property */
CMAPI
CONFIGRET
WINAPI
CM_Get_DevNode_Registry_PropertyA(
IN DEVINST dnDevInst,
IN ULONG ulProperty,
OUT PULONG pulRegDataType, OPTIONAL
OUT PVOID Buffer, OPTIONAL
IN OUT PULONG pulLength,
IN ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_DevNode_Registry_PropertyW(
IN DEVINST dnDevInst,
IN ULONG ulProperty,
OUT PULONG pulRegDataType, OPTIONAL
OUT PVOID Buffer, OPTIONAL
IN OUT PULONG pulLength,
IN ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Get_DevNode_Registry_Property_ExA(
IN DEVINST dnDevInst,
IN ULONG ulProperty,
OUT PULONG pulRegDataType, OPTIONAL
OUT PVOID Buffer, OPTIONAL
IN OUT PULONG pulLength,
IN ULONG ulFlags,
IN HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Get_DevNode_Registry_Property_ExW(
IN DEVINST dnDevInst,
IN ULONG ulProperty,
OUT PULONG pulRegDataType, OPTIONAL
OUT PVOID Buffer, OPTIONAL
IN OUT PULONG pulLength,
IN ULONG ulFlags,
IN HMACHINE hMachine);
#define CM_Get_DevInst_Registry_PropertyW CM_Get_DevNode_Registry_PropertyW
#define CM_Get_DevInst_Registry_PropertyA CM_Get_DevNode_Registry_PropertyA
#define CM_Get_DevInst_Registry_Property_ExW CM_Get_DevNode_Registry_Property_ExW
#define CM_Get_DevInst_Registry_Property_ExA CM_Get_DevNode_Registry_Property_ExA
#ifdef UNICODE
#define CM_Get_DevInst_Registry_Property CM_Get_DevNode_Registry_PropertyW
#define CM_Get_DevInst_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExW
#define CM_Get_DevNode_Registry_Property CM_Get_DevNode_Registry_PropertyW
#define CM_Get_DevNode_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExW
#else
#define CM_Get_DevInst_Registry_Property CM_Get_DevNode_Registry_PropertyA
#define CM_Get_DevInst_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExA
#define CM_Get_DevNode_Registry_Property CM_Get_DevNode_Registry_PropertyA
#define CM_Get_DevNode_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExA
#endif /* UNICODE */
CMAPI
CONFIGRET
@ -1513,8 +1575,66 @@ CM_Request_Device_EjectW(
/* FIXME: Obsolete CM_Set_Class_Registry_Property */
/* FIXME: Obsolete CM_Set_DevNode_Problem */
/* FIXME: Obsolete CM_Set_DevNode_Problem_Ex */
/* FIXME: Obsolete CM_Set_DevNode_Registry_Property */
/* FIXME: Obsolete CM_Set_DevNode_Registry_Property_Ex */
CMAPI
CONFIGRET
WINAPI
CM_Set_DevNode_Registry_PropertyA(
IN DEVINST dnDevInst,
IN ULONG ulProperty,
IN PCVOID Buffer, OPTIONAL
IN ULONG ulLength,
IN ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Set_DevNode_Registry_PropertyW(
IN DEVINST dnDevInst,
IN ULONG ulProperty,
IN PCVOID Buffer, OPTIONAL
IN ULONG ulLength,
IN ULONG ulFlags);
CMAPI
CONFIGRET
WINAPI
CM_Set_DevNode_Registry_Property_ExA(
IN DEVINST dnDevInst,
IN ULONG ulProperty,
IN PCVOID Buffer, OPTIONAL
IN ULONG ulLength,
IN ULONG ulFlags,
IN HMACHINE hMachine);
CMAPI
CONFIGRET
WINAPI
CM_Set_DevNode_Registry_Property_ExW(
IN DEVINST dnDevInst,
IN ULONG ulProperty,
IN PCVOID Buffer, OPTIONAL
IN ULONG ulLength,
IN ULONG ulFlags,
IN HMACHINE hMachine);
#define CM_Set_DevInst_Registry_PropertyW CM_Set_DevNode_Registry_PropertyW
#define CM_Set_DevInst_Registry_PropertyA CM_Set_DevNode_Registry_PropertyA
#define CM_Set_DevInst_Registry_Property_ExW CM_Set_DevNode_Registry_Property_ExW
#define CM_Set_DevInst_Registry_Property_ExA CM_Set_DevNode_Registry_Property_ExA
#ifdef UNICODE
#define CM_Set_DevInst_Registry_Property CM_Set_DevNode_Registry_PropertyW
#define CM_Set_DevInst_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExW
#define CM_Set_DevNode_Registry_Property CM_Set_DevNode_Registry_PropertyW
#define CM_Set_DevNode_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExW
#else
#define CM_Set_DevInst_Registry_Property CM_Set_DevNode_Registry_PropertyA
#define CM_Set_DevInst_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExA
#define CM_Set_DevNode_Registry_Property CM_Set_DevNode_Registry_PropertyA
#define CM_Set_DevNode_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExA
#endif /* UNICODE */
/* FIXME: Obsolete CM_Set_HW_Prof */
/* FIXME: Obsolete CM_Set_HW_Prof_Ex */
/* FIXME: Obsolete CM_Set_HW_Prof_Flags */