mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
- Implement CM_Is_Dock_Station_Present[_Ex]
svn path=/trunk/; revision=18072
This commit is contained in:
parent
6cc1784d0b
commit
c4035780df
6 changed files with 159 additions and 14 deletions
|
@ -5,6 +5,7 @@
|
||||||
#define WORD unsigned short
|
#define WORD unsigned short
|
||||||
#define DWORD unsigned long
|
#define DWORD unsigned long
|
||||||
#define CONFIGRET unsigned long
|
#define CONFIGRET unsigned long
|
||||||
|
#define PBOOL unsigned long *
|
||||||
|
|
||||||
[
|
[
|
||||||
uuid (809F4e40-A03D-11CE-8F69-08003E30051B),
|
uuid (809F4e40-A03D-11CE-8F69-08003E30051B),
|
||||||
|
@ -14,21 +15,32 @@
|
||||||
]
|
]
|
||||||
interface pnp
|
interface pnp
|
||||||
{
|
{
|
||||||
|
/* Function 0 */
|
||||||
|
// CONFIGRET PNP_Unknown0(handle_t BindingHandle);
|
||||||
|
|
||||||
|
/* Function 1 */
|
||||||
|
// CONFIGRET PNP_Unknown1(handle_t BindingHandle);
|
||||||
|
|
||||||
|
/* Function 2 */
|
||||||
CONFIGRET PNP_GetVersion(handle_t BindingHandle,
|
CONFIGRET PNP_GetVersion(handle_t BindingHandle,
|
||||||
[out] WORD *Version);
|
[out] WORD *Version);
|
||||||
|
|
||||||
|
/* Function 3 */
|
||||||
CONFIGRET PNP_GetGlobalState(handle_t BindingHandle,
|
CONFIGRET PNP_GetGlobalState(handle_t BindingHandle,
|
||||||
[out] unsigned long *State,
|
[out] unsigned long *State,
|
||||||
[in] unsigned long Flags);
|
[in] unsigned long Flags);
|
||||||
|
|
||||||
|
/* Function 6 */
|
||||||
CONFIGRET PNP_ValidateDeviceInstance(handle_t BindingHandle,
|
CONFIGRET PNP_ValidateDeviceInstance(handle_t BindingHandle,
|
||||||
[in, string] wchar_t *DeviceInstance,
|
[in, string] wchar_t *DeviceInstance,
|
||||||
[in] DWORD Flags);
|
[in] DWORD Flags);
|
||||||
|
|
||||||
|
/* Function 7 */
|
||||||
CONFIGRET PNP_GetRootDeviceInstance(handle_t BindingHandle,
|
CONFIGRET PNP_GetRootDeviceInstance(handle_t BindingHandle,
|
||||||
[out, string, size_is(Length)] wchar_t *DeviceInstance,
|
[out, string, size_is(Length)] wchar_t *DeviceInstance,
|
||||||
[in] DWORD Length);
|
[in] DWORD Length);
|
||||||
|
|
||||||
|
/* Function 8 */
|
||||||
cpp_quote("#define PNP_DEVICE_PARENT 1")
|
cpp_quote("#define PNP_DEVICE_PARENT 1")
|
||||||
cpp_quote("#define PNP_DEVICE_CHILD 2")
|
cpp_quote("#define PNP_DEVICE_CHILD 2")
|
||||||
cpp_quote("#define PNP_DEVICE_SIBLING 3")
|
cpp_quote("#define PNP_DEVICE_SIBLING 3")
|
||||||
|
@ -39,6 +51,7 @@ interface pnp
|
||||||
[in] DWORD Length,
|
[in] DWORD Length,
|
||||||
[in] DWORD Flags);
|
[in] DWORD Flags);
|
||||||
|
|
||||||
|
/* Function 9 */
|
||||||
cpp_quote("#define PNP_BRANCH_ENUM 1")
|
cpp_quote("#define PNP_BRANCH_ENUM 1")
|
||||||
cpp_quote("#define PNP_BRANCH_CLASS 2")
|
cpp_quote("#define PNP_BRANCH_CLASS 2")
|
||||||
CONFIGRET PNP_EnumerateSubKeys(handle_t BindingHandle,
|
CONFIGRET PNP_EnumerateSubKeys(handle_t BindingHandle,
|
||||||
|
@ -49,22 +62,26 @@ interface pnp
|
||||||
[out] unsigned long *RequiredLength,
|
[out] unsigned long *RequiredLength,
|
||||||
[in] DWORD Flags);
|
[in] DWORD Flags);
|
||||||
|
|
||||||
|
/* Function 10 */
|
||||||
// CONFIGRET PNP_GetDeviceList(handle_t BindingHandle,
|
// CONFIGRET PNP_GetDeviceList(handle_t BindingHandle,
|
||||||
// [in, unique, string] wchar_t *Filter,
|
// [in, unique, string] wchar_t *Filter,
|
||||||
// [out, string, size_is(*Length)] unsigned char *Buffer
|
// [out, string, size_is(*Length)] unsigned char *Buffer
|
||||||
// [in, out] unsigned long *Length,
|
// [in, out] unsigned long *Length,
|
||||||
// [in] DWORD Flags);
|
// [in] DWORD Flags);
|
||||||
|
|
||||||
|
/* Function 11 */
|
||||||
CONFIGRET PNP_GetDeviceListSize(handle_t BindingHandle,
|
CONFIGRET PNP_GetDeviceListSize(handle_t BindingHandle,
|
||||||
[in, unique, string] wchar_t *Filter,
|
[in, unique, string] wchar_t *Filter,
|
||||||
[out] unsigned long *Length,
|
[out] unsigned long *Length,
|
||||||
[in] DWORD Flags);
|
[in] DWORD Flags);
|
||||||
|
|
||||||
|
/* Function 12 */
|
||||||
CONFIGRET PNP_GetDepth(handle_t BindingHandle,
|
CONFIGRET PNP_GetDepth(handle_t BindingHandle,
|
||||||
[in, string] wchar_t *DeviceInstance,
|
[in, string] wchar_t *DeviceInstance,
|
||||||
[out] unsigned long *Depth,
|
[out] unsigned long *Depth,
|
||||||
[in] DWORD Flags);
|
[in] DWORD Flags);
|
||||||
|
|
||||||
|
/* Function 13 */
|
||||||
CONFIGRET PNP_GetDeviceRegProp(handle_t BindingHandle,
|
CONFIGRET PNP_GetDeviceRegProp(handle_t BindingHandle,
|
||||||
[in, string] wchar_t *DeviceInstance,
|
[in, string] wchar_t *DeviceInstance,
|
||||||
[in] unsigned long Property,
|
[in] unsigned long Property,
|
||||||
|
@ -74,6 +91,7 @@ interface pnp
|
||||||
[in, out] unsigned long *Length,
|
[in, out] unsigned long *Length,
|
||||||
[in] DWORD Flags);
|
[in] DWORD Flags);
|
||||||
|
|
||||||
|
/* Function 14 */
|
||||||
CONFIGRET PNP_SetDeviceRegProp(handle_t BindingHandle,
|
CONFIGRET PNP_SetDeviceRegProp(handle_t BindingHandle,
|
||||||
[in, string] wchar_t *DeviceId,
|
[in, string] wchar_t *DeviceId,
|
||||||
[in] unsigned long Property,
|
[in] unsigned long Property,
|
||||||
|
@ -82,24 +100,38 @@ interface pnp
|
||||||
[in] unsigned long Length,
|
[in] unsigned long Length,
|
||||||
[in] unsigned long Flags);
|
[in] unsigned long Flags);
|
||||||
|
|
||||||
|
/* Function 16 */
|
||||||
|
CONFIGRET PNP_CreateKey(handle_t BindingHandle,
|
||||||
|
[in, string] wchar_t *SubKey,
|
||||||
|
[in] unsigned long DesiredAccess,
|
||||||
|
[in] unsigned long Flags);
|
||||||
|
|
||||||
|
/* Function 19 */
|
||||||
CONFIGRET PNP_GetClassName(handle_t BindingHandle,
|
CONFIGRET PNP_GetClassName(handle_t BindingHandle,
|
||||||
[in, string] wchar_t *ClassGuid,
|
[in, string] wchar_t *ClassGuid,
|
||||||
[out, string, size_is(*Length)] wchar_t *Buffer,
|
[out, string, size_is(*Length)] wchar_t *Buffer,
|
||||||
[in, out] unsigned long *Length,
|
[in, out] unsigned long *Length,
|
||||||
[in] unsigned long Flags);
|
[in] unsigned long Flags);
|
||||||
|
|
||||||
|
/* Function 20 */
|
||||||
CONFIGRET PNP_DeleteClassKey(handle_t BindingHandle,
|
CONFIGRET PNP_DeleteClassKey(handle_t BindingHandle,
|
||||||
[in, string] wchar_t *ClassGuid,
|
[in, string] wchar_t *ClassGuid,
|
||||||
[in] unsigned long Flags);
|
[in] unsigned long Flags);
|
||||||
|
|
||||||
|
/* Function 30 */
|
||||||
CONFIGRET PNP_GetDeviceStatus(handle_t BindingHandle,
|
CONFIGRET PNP_GetDeviceStatus(handle_t BindingHandle,
|
||||||
[in, string] wchar_t *DeviceInstance,
|
[in, string] wchar_t *DeviceInstance,
|
||||||
[out] unsigned long *Status,
|
[out] unsigned long *Status,
|
||||||
[out] unsigned long *Problem,
|
[out] unsigned long *Problem,
|
||||||
[in] DWORD Flags);
|
[in] DWORD Flags);
|
||||||
|
|
||||||
|
/* Function 31 */
|
||||||
CONFIGRET PNP_SetDeviceProblem(handle_t BindingHandle,
|
CONFIGRET PNP_SetDeviceProblem(handle_t BindingHandle,
|
||||||
[in, string] wchar_t *DeviceInstance,
|
[in, string] wchar_t *DeviceInstance,
|
||||||
[in] unsigned long Problem,
|
[in] unsigned long Problem,
|
||||||
[in] DWORD Flags);
|
[in] DWORD Flags);
|
||||||
|
|
||||||
|
/* Function 38 */
|
||||||
|
CONFIGRET PNP_IsDockStationPresent(handle_t BindingHandle,
|
||||||
|
[out]PBOOL Present);
|
||||||
}
|
}
|
||||||
|
|
|
@ -207,6 +207,8 @@ CONFIGRET WINAPI CM_Get_Sibling_Ex( PDEVINST, DEVINST, ULONG, HMACHINE );
|
||||||
WORD WINAPI CM_Get_Version( VOID );
|
WORD WINAPI CM_Get_Version( VOID );
|
||||||
WORD WINAPI CM_Get_Version_Ex( HMACHINE );
|
WORD WINAPI CM_Get_Version_Ex( HMACHINE );
|
||||||
|
|
||||||
|
CONFIGRET WINAPI CM_Is_Dock_Station_Present( PBOOL );
|
||||||
|
CONFIGRET WINAPI CM_Is_Dock_Station_Present_Ex( PBOOL, HMACHINE );
|
||||||
CONFIGRET WINAPI CM_Locate_DevNodeA(PDEVINST, DEVINSTID_A, ULONG);
|
CONFIGRET WINAPI CM_Locate_DevNodeA(PDEVINST, DEVINSTID_A, ULONG);
|
||||||
CONFIGRET WINAPI CM_Locate_DevNodeW(PDEVINST, DEVINSTID_W, ULONG);
|
CONFIGRET WINAPI CM_Locate_DevNodeW(PDEVINST, DEVINSTID_W, ULONG);
|
||||||
#define CM_Locate_DevNode WINELIB_NAME_AW(CM_Locate_DevNode)
|
#define CM_Locate_DevNode WINELIB_NAME_AW(CM_Locate_DevNode)
|
||||||
|
|
|
@ -1520,6 +1520,49 @@ WORD WINAPI CM_Get_Version_Ex(HMACHINE hMachine)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* CM_Is_Dock_Station_Present [SETUPAPI.@]
|
||||||
|
*/
|
||||||
|
CONFIGRET WINAPI CM_Is_Dock_Station_Present(
|
||||||
|
PBOOL pbPresent)
|
||||||
|
{
|
||||||
|
TRACE("%p\n", pbPresent);
|
||||||
|
return CM_Is_Dock_Station_Present_Ex(pbPresent, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* CM_Is_Dock_Station_Present_Ex [SETUPAPI.@]
|
||||||
|
*/
|
||||||
|
CONFIGRET WINAPI CM_Is_Dock_Station_Present_Ex(
|
||||||
|
PBOOL pbPresent, HMACHINE hMachine)
|
||||||
|
{
|
||||||
|
RPC_BINDING_HANDLE BindingHandle = NULL;
|
||||||
|
|
||||||
|
FIXME("%p %lx\n", pbPresent, hMachine);
|
||||||
|
|
||||||
|
if (pbPresent == NULL)
|
||||||
|
return CR_INVALID_POINTER;
|
||||||
|
|
||||||
|
*pbPresent = FALSE;
|
||||||
|
|
||||||
|
if (hMachine != NULL)
|
||||||
|
{
|
||||||
|
BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
|
||||||
|
if (BindingHandle == NULL)
|
||||||
|
return CR_FAILURE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!PnpGetLocalHandles(&BindingHandle, NULL))
|
||||||
|
return CR_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return PNP_IsDockStationPresent(BindingHandle,
|
||||||
|
(unsigned long *)pbPresent);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* CM_Locate_DevNodeA [SETUPAPI.@]
|
* CM_Locate_DevNodeA [SETUPAPI.@]
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -127,8 +127,8 @@
|
||||||
@ stdcall CM_Get_Version_Ex(long)
|
@ stdcall CM_Get_Version_Ex(long)
|
||||||
@ stub CM_Intersect_Range_List
|
@ stub CM_Intersect_Range_List
|
||||||
@ stub CM_Invert_Range_List
|
@ stub CM_Invert_Range_List
|
||||||
@ stub CM_Is_Dock_Station_Present
|
@ stdcall CM_Is_Dock_Station_Present(ptr)
|
||||||
@ stub CM_Is_Dock_Station_Present_Ex
|
@ stdcall CM_Is_Dock_Station_Present_Ex(ptr long)
|
||||||
@ stdcall CM_Locate_DevNodeA(ptr str long)
|
@ stdcall CM_Locate_DevNodeA(ptr str long)
|
||||||
@ stdcall CM_Locate_DevNodeW(ptr wstr long)
|
@ stdcall CM_Locate_DevNodeW(ptr wstr long)
|
||||||
@ stdcall CM_Locate_DevNode_ExA(ptr str long long)
|
@ stdcall CM_Locate_DevNode_ExA(ptr str long long)
|
||||||
|
|
|
@ -794,6 +794,56 @@ PNP_SetDeviceProblem(handle_t BindingHandle,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CONFIGRET
|
||||||
|
PNP_IsDockStationPresent(handle_t BindingHandle,
|
||||||
|
unsigned long *Present)
|
||||||
|
{
|
||||||
|
HKEY hKey;
|
||||||
|
DWORD dwType;
|
||||||
|
DWORD dwValue;
|
||||||
|
DWORD dwSize;
|
||||||
|
CONFIGRET ret = CR_SUCCESS;
|
||||||
|
|
||||||
|
DPRINT1("PNP_IsDockStationPresent() called\n");
|
||||||
|
|
||||||
|
*Present = FALSE;
|
||||||
|
|
||||||
|
if (RegOpenKeyExW(HKEY_CURRENT_CONFIG,
|
||||||
|
L"CurrentDockInfo",
|
||||||
|
0,
|
||||||
|
KEY_READ,
|
||||||
|
&hKey) != ERROR_SUCCESS)
|
||||||
|
return CR_REGISTRY_ERROR;
|
||||||
|
|
||||||
|
dwSize = sizeof(DWORD);
|
||||||
|
if (RegQueryValueExW(hKey,
|
||||||
|
L"DockingState",
|
||||||
|
NULL,
|
||||||
|
&dwType,
|
||||||
|
(LPBYTE)&dwValue,
|
||||||
|
&dwSize) != ERROR_SUCCESS)
|
||||||
|
ret = CR_REGISTRY_ERROR;
|
||||||
|
|
||||||
|
RegCloseKey(hKey);
|
||||||
|
|
||||||
|
if (ret == CR_SUCCESS)
|
||||||
|
{
|
||||||
|
if (dwType != REG_DWORD || dwSize != sizeof(DWORD))
|
||||||
|
{
|
||||||
|
ret = CR_REGISTRY_ERROR;
|
||||||
|
}
|
||||||
|
else if (dwValue != 0)
|
||||||
|
{
|
||||||
|
*Present = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DPRINT1("PNP_IsDockStationPresent() done (returns %lx)\n", ret);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static DWORD WINAPI
|
static DWORD WINAPI
|
||||||
PnpEventThread(LPVOID lpParameter)
|
PnpEventThread(LPVOID lpParameter)
|
||||||
{
|
{
|
||||||
|
|
|
@ -587,6 +587,13 @@ typedef PCONFLICT_DETAILS_A PCONFLICT_DETAILS;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* FIXME: Missing CMP_Init_Detection */
|
||||||
|
/* FIXME: Missing CMP_RegisterNotification */
|
||||||
|
/* FIXME: Missing CMP_Report_LogOn */
|
||||||
|
/* FIXME: Missing CMP_UnregisterNotification */
|
||||||
|
/* FIXME: Missing CMP_WaitNoPendingInstallEvents */
|
||||||
|
/* FIXME: Missing CMP_WaitServicesAvailable */
|
||||||
|
|
||||||
/* CM_Add_Empty_Log_Conf.ulFlags constants */
|
/* CM_Add_Empty_Log_Conf.ulFlags constants */
|
||||||
#define PRIORITY_EQUAL_FIRST 0x00000008
|
#define PRIORITY_EQUAL_FIRST 0x00000008
|
||||||
#define PRIORITY_EQUAL_LAST 0x00000000
|
#define PRIORITY_EQUAL_LAST 0x00000000
|
||||||
|
@ -1452,8 +1459,19 @@ CM_Get_Version_Ex(
|
||||||
|
|
||||||
/* FIXME: Obsolete CM_Intersect_Range_List */
|
/* FIXME: Obsolete CM_Intersect_Range_List */
|
||||||
/* FIXME: Obsolete CM_Invert_Range_List */
|
/* FIXME: Obsolete CM_Invert_Range_List */
|
||||||
/* FIXME: Obsolete CM_Is_Dock_Station_Present */
|
|
||||||
/* FIXME: Obsolete CM_Is_Dock_Station_Present_Ex */
|
CMAPI
|
||||||
|
CONFIGRET
|
||||||
|
WINAPI
|
||||||
|
CM_Is_Dock_Station_Present(
|
||||||
|
OUT PBOOL pbPresent);
|
||||||
|
|
||||||
|
CMAPI
|
||||||
|
CONFIGRET
|
||||||
|
WINAPI
|
||||||
|
CM_Is_Dock_Station_Present_Ex(
|
||||||
|
OUT PBOOL pbPresent,
|
||||||
|
IN HMACHINE hMachine);
|
||||||
|
|
||||||
/* CM_Locate_DevNode.ulFlags constants */
|
/* CM_Locate_DevNode.ulFlags constants */
|
||||||
#define CM_LOCATE_DEVNODE_NORMAL 0x00000000
|
#define CM_LOCATE_DEVNODE_NORMAL 0x00000000
|
||||||
|
|
Loading…
Reference in a new issue