mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 01:24:38 +00:00
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:
parent
2b6bb7a79e
commit
226f6c1ce2
6 changed files with 535 additions and 19 deletions
|
@ -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,
|
||||
|
|
|
@ -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_ */
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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 */
|
||||
|
|
Loading…
Reference in a new issue