- Implement CM_Is_Dock_Station_Present[_Ex]
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-09-25 20:56:58 UTC (rev
18071)
+++ trunk/reactos/include/idl/pnp.idl 2005-09-25 21:02:43 UTC (rev
18072)
@@ -5,6 +5,7 @@
#define WORD unsigned short
#define DWORD unsigned long
#define CONFIGRET unsigned long
+#define PBOOL unsigned long *
[
uuid (809F4e40-A03D-11CE-8F69-08003E30051B),
@@ -14,21 +15,32 @@
]
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,
[out] WORD *Version);
+ /* Function 3 */
CONFIGRET PNP_GetGlobalState(handle_t BindingHandle,
[out] unsigned long *State,
[in] unsigned long Flags);
+ /* Function 6 */
CONFIGRET PNP_ValidateDeviceInstance(handle_t BindingHandle,
[in, string] wchar_t
*DeviceInstance,
[in] DWORD Flags);
+ /* Function 7 */
CONFIGRET PNP_GetRootDeviceInstance(handle_t BindingHandle,
[out, string, size_is(Length)]
wchar_t *DeviceInstance,
[in] DWORD Length);
+ /* Function 8 */
cpp_quote("#define PNP_DEVICE_PARENT 1")
cpp_quote("#define PNP_DEVICE_CHILD 2")
cpp_quote("#define PNP_DEVICE_SIBLING 3")
@@ -39,6 +51,7 @@
[in] DWORD Length,
[in] DWORD Flags);
+ /* Function 9 */
cpp_quote("#define PNP_BRANCH_ENUM 1")
cpp_quote("#define PNP_BRANCH_CLASS 2")
CONFIGRET PNP_EnumerateSubKeys(handle_t BindingHandle,
@@ -49,22 +62,26 @@
[out] unsigned long *RequiredLength,
[in] DWORD Flags);
+ /* Function 10 */
// CONFIGRET PNP_GetDeviceList(handle_t BindingHandle,
// [in, unique, string] wchar_t *Filter,
// [out, string, size_is(*Length)]
unsigned char *Buffer
// [in, out] unsigned long *Length,
// [in] DWORD Flags);
+ /* Function 11 */
CONFIGRET PNP_GetDeviceListSize(handle_t BindingHandle,
[in, unique, string] wchar_t *Filter,
[out] unsigned long *Length,
[in] DWORD Flags);
+ /* Function 12 */
CONFIGRET PNP_GetDepth(handle_t BindingHandle,
[in, string] wchar_t *DeviceInstance,
[out] unsigned long *Depth,
[in] DWORD Flags);
+ /* Function 13 */
CONFIGRET PNP_GetDeviceRegProp(handle_t BindingHandle,
[in, string] wchar_t *DeviceInstance,
[in] unsigned long Property,
@@ -74,6 +91,7 @@
[in, out] unsigned long *Length,
[in] DWORD Flags);
+ /* Function 14 */
CONFIGRET PNP_SetDeviceRegProp(handle_t BindingHandle,
[in, string] wchar_t *DeviceId,
[in] unsigned long Property,
@@ -82,24 +100,38 @@
[in] unsigned long Length,
[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,
[in, string] wchar_t *ClassGuid,
[out, string, size_is(*Length)] wchar_t
*Buffer,
[in, out] unsigned long *Length,
[in] unsigned long Flags);
+ /* Function 20 */
CONFIGRET PNP_DeleteClassKey(handle_t BindingHandle,
[in, string] wchar_t *ClassGuid,
[in] unsigned long Flags);
+ /* Function 30 */
CONFIGRET PNP_GetDeviceStatus(handle_t BindingHandle,
[in, string] wchar_t *DeviceInstance,
[out] unsigned long *Status,
[out] unsigned long *Problem,
[in] DWORD Flags);
+ /* Function 31 */
CONFIGRET PNP_SetDeviceProblem(handle_t BindingHandle,
[in, string] wchar_t *DeviceInstance,
[in] unsigned long Problem,
[in] DWORD Flags);
+
+ /* Function 38 */
+ CONFIGRET PNP_IsDockStationPresent(handle_t BindingHandle,
+ [out]PBOOL Present);
}
_____
Modified: trunk/reactos/include/wine/cfgmgr32.h
--- trunk/reactos/include/wine/cfgmgr32.h 2005-09-25 20:56:58 UTC
(rev 18071)
+++ trunk/reactos/include/wine/cfgmgr32.h 2005-09-25 21:02:43 UTC
(rev 18072)
@@ -207,6 +207,8 @@
WORD WINAPI CM_Get_Version( VOID );
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_DevNodeW(PDEVINST, DEVINSTID_W, ULONG);
#define CM_Locate_DevNode WINELIB_NAME_AW(CM_Locate_DevNode)
_____
Modified: trunk/reactos/lib/setupapi/cfgmgr.c
--- trunk/reactos/lib/setupapi/cfgmgr.c 2005-09-25 20:56:58 UTC (rev
18071)
+++ trunk/reactos/lib/setupapi/cfgmgr.c 2005-09-25 21:02:43 UTC (rev
18072)
@@ -1521,6 +1521,49 @@
/***********************************************************************
+ * 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.@]
*/
CONFIGRET WINAPI CM_Locate_DevNodeA(
_____
Modified: trunk/reactos/lib/setupapi/setupapi.spec
--- trunk/reactos/lib/setupapi/setupapi.spec 2005-09-25 20:56:58 UTC
(rev 18071)
+++ trunk/reactos/lib/setupapi/setupapi.spec 2005-09-25 21:02:43 UTC
(rev 18072)
@@ -127,8 +127,8 @@
@ stdcall CM_Get_Version_Ex(long)
@ stub CM_Intersect_Range_List
@ stub CM_Invert_Range_List
-@ stub CM_Is_Dock_Station_Present
-@ stub CM_Is_Dock_Station_Present_Ex
+@ stdcall CM_Is_Dock_Station_Present(ptr)
+@ stdcall CM_Is_Dock_Station_Present_Ex(ptr long)
@ stdcall CM_Locate_DevNodeA(ptr str long)
@ stdcall CM_Locate_DevNodeW(ptr wstr long)
@ stdcall CM_Locate_DevNode_ExA(ptr str long long)
_____
Modified: trunk/reactos/services/umpnpmgr/umpnpmgr.c
--- trunk/reactos/services/umpnpmgr/umpnpmgr.c 2005-09-25 20:56:58 UTC
(rev 18071)
+++ trunk/reactos/services/umpnpmgr/umpnpmgr.c 2005-09-25 21:02:43 UTC
(rev 18072)
@@ -794,6 +794,56 @@
}
+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
PnpEventThread(LPVOID lpParameter)
{
_____
Modified: trunk/reactos/w32api/include/ddk/cfgmgr32.h
--- trunk/reactos/w32api/include/ddk/cfgmgr32.h 2005-09-25 20:56:58 UTC
(rev 18071)
+++ trunk/reactos/w32api/include/ddk/cfgmgr32.h 2005-09-25 21:02:43 UTC
(rev 18072)
@@ -587,6 +587,13 @@
+/* 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 */
#define PRIORITY_EQUAL_FIRST 0x00000008
#define PRIORITY_EQUAL_LAST 0x00000000
@@ -1452,21 +1459,32 @@
/* FIXME: Obsolete CM_Intersect_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 */
-#define CM_LOCATE_DEVNODE_NORMAL 0x00000000
-#define CM_LOCATE_DEVNODE_PHANTOM 0x00000001
-#define CM_LOCATE_DEVNODE_CANCELREMOVE 0x00000002
-#define CM_LOCATE_DEVNODE_NOVALIDATION 0x00000004
-#define CM_LOCATE_DEVNODE_BITS 0x00000007
+#define CM_LOCATE_DEVNODE_NORMAL 0x00000000
+#define CM_LOCATE_DEVNODE_PHANTOM 0x00000001
+#define CM_LOCATE_DEVNODE_CANCELREMOVE 0x00000002
+#define CM_LOCATE_DEVNODE_NOVALIDATION 0x00000004
+#define CM_LOCATE_DEVNODE_BITS 0x00000007
-#define CM_LOCATE_DEVINST_NORMAL
CM_LOCATE_DEVNODE_NORMAL
-#define CM_LOCATE_DEVINST_PHANTOM
CM_LOCATE_DEVNODE_PHANTOM
-#define CM_LOCATE_DEVINST_CANCELREMOVE
CM_LOCATE_DEVNODE_CANCELREMOVE
-#define CM_LOCATE_DEVINST_NOVALIDATION
CM_LOCATE_DEVNODE_NOVALIDATION
-#define CM_LOCATE_DEVINST_BITS
CM_LOCATE_DEVNODE_BITS
+#define CM_LOCATE_DEVINST_NORMAL CM_LOCATE_DEVNODE_NORMAL
+#define CM_LOCATE_DEVINST_PHANTOM CM_LOCATE_DEVNODE_PHANTOM
+#define CM_LOCATE_DEVINST_CANCELREMOVE CM_LOCATE_DEVNODE_CANCELREMOVE
+#define CM_LOCATE_DEVINST_NOVALIDATION CM_LOCATE_DEVNODE_NOVALIDATION
+#define CM_LOCATE_DEVINST_BITS CM_LOCATE_DEVNODE_BITS
CMAPI
CONFIGRET