Implement CM_Get_DevNode_Registry_Property[_Ex]A/W and
CM_Set_DevNode_Registry_Property[_Ex]A/W partially.
Modified: trunk/reactos/include/idl/pnp.idl
Modified: trunk/reactos/include/wine/cfgmgr32.h
Modified: trunk/reactos/lib/setupapi/cfgmgr.c
Modified: trunk/reactos/lib/setupapi/setupapi.spec
Modified: trunk/reactos/services/umpnpmgr/umpnpmgr.c
Modified: trunk/reactos/w32api/include/ddk/cfgmgr32.h
_____
Modified: trunk/reactos/include/idl/pnp.idl
--- trunk/reactos/include/idl/pnp.idl 2005-08-01 18:11:54 UTC (rev
16963)
+++ trunk/reactos/include/idl/pnp.idl 2005-08-01 19:42:19 UTC (rev
16964)
@@ -39,11 +39,36 @@
[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,
_____
Modified: trunk/reactos/include/wine/cfgmgr32.h
--- trunk/reactos/include/wine/cfgmgr32.h 2005-08-01 18:11:54 UTC
(rev 16963)
+++ trunk/reactos/include/wine/cfgmgr32.h 2005-08-01 19:42:19 UTC
(rev 16964)
@@ -50,10 +50,12 @@
#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_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 @@
#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_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_ */
_____
Modified: trunk/reactos/lib/setupapi/cfgmgr.c
--- trunk/reactos/lib/setupapi/cfgmgr.c 2005-08-01 18:11:54 UTC (rev
16963)
+++ trunk/reactos/lib/setupapi/cfgmgr.c 2005-08-01 19:42:19 UTC (rev
16964)
@@ -373,6 +373,128 @@
/***********************************************************************
+ * 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.@]
*/
CONFIGRET WINAPI CM_Get_DevNode_Status(
@@ -1171,3 +1293,105 @@
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);
+}
_____
Modified: trunk/reactos/lib/setupapi/setupapi.spec
--- trunk/reactos/lib/setupapi/setupapi.spec 2005-08-01 18:11:54 UTC
(rev 16963)
+++ trunk/reactos/lib/setupapi/setupapi.spec 2005-08-01 19:42:19 UTC
(rev 16964)
@@ -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
_____
Modified: trunk/reactos/services/umpnpmgr/umpnpmgr.c
--- trunk/reactos/services/umpnpmgr/umpnpmgr.c 2005-08-01 18:11:54 UTC
(rev 16963)
+++ trunk/reactos/services/umpnpmgr/umpnpmgr.c 2005-08-01 19:42:19 UTC
(rev 16964)
@@ -54,6 +54,9 @@
static WCHAR szRootDeviceId[] = L"HTREE\\ROOT\\0";
+static HKEY hEnumKey = NULL;
+static HKEY hClassKey = NULL;
+
/* FUNCTIONS
*****************************************************************/
static DWORD WINAPI
@@ -237,7 +240,7 @@
}
DPRINT("PNP_GetRelatedDeviceInstance() done (returns %lx)\n", ret);
- if (ret == 0)
+ if (ret == CR_SUCCESS)
{
DPRINT("RelatedDevice: %wZ\n",
&PlugPlayData.RelatedDeviceInstance);
}
@@ -247,6 +250,59 @@
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,
unsigned long *Depth,
@@ -256,7 +312,7 @@
CONFIGRET ret = CR_SUCCESS;
NTSTATUS Status;
- DPRINT1("PNP_GetDepth() called\n");
+ DPRINT("PNP_GetDepth() called\n");
RtlInitUnicodeString(&PlugPlayData.DeviceInstance,
DeviceInstance);
@@ -273,13 +329,66 @@
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;
+}
+
+
+CONFIGRET
PNP_GetDeviceStatus(handle_t BindingHandle,
wchar_t *DeviceInstance,
unsigned long *pStatus,
@@ -290,7 +399,7 @@
CONFIGRET ret = CR_SUCCESS;
NTSTATUS Status;
- DPRINT1("PNP_GetDeviceStatus() called\n");
+ DPRINT("PNP_GetDeviceStatus() called\n");
RtlInitUnicodeString(&PlugPlayData.DeviceInstance,
DeviceInstance);
@@ -309,7 +418,7 @@
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 @@
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");
_____
Modified: trunk/reactos/w32api/include/ddk/cfgmgr32.h
--- trunk/reactos/w32api/include/ddk/cfgmgr32.h 2005-08-01 18:11:54 UTC
(rev 16963)
+++ trunk/reactos/w32api/include/ddk/cfgmgr32.h 2005-08-01 19:42:19 UTC
(rev 16964)
@@ -1017,11 +1017,73 @@
/* 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
+WINAPI
CM_Get_DevNode_Status(
OUT PULONG pulStatus,
OUT PULONG pulProblemNumber,
@@ -1513,8 +1575,66 @@
/* 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 */