- Add stubs: CM_GetChild, CM_GetChild_Ex, CM_GetParent,
CM_GetPaarent_Ex, CM_GetSibling, CM_GetSibling_Ex, CM_Locate_DevNodeA,
CM_Locate_DevNodeW, CM_Locate_DevNode_ExA, CM_Locate_DevNode_ExW
- Implement: CM_GetVersion, CM_GetVersion_Ex, CM_Connect_MachineA,
CM_Connect_MachineW, CM_Disconnect_Machine.
- Implement RPC server in umpnpmgr.dll to reply to calls to
CM_GetVersion/CM_GetVersion_Ex.
Added: trunk/reactos/include/idl/
Added: trunk/reactos/include/idl/pnp.idl
Modified: trunk/reactos/include/wine/cfgmgr32.h
Modified: trunk/reactos/include/wine/setupapi.h
Modified: trunk/reactos/lib/setupapi/Makefile.in
Modified: trunk/reactos/lib/setupapi/cfgmgr.c
Modified: trunk/reactos/lib/setupapi/makefile
Added: trunk/reactos/lib/setupapi/rpc.c
Modified: trunk/reactos/lib/setupapi/setupapi.spec
Modified: trunk/reactos/services/umpnpmgr/makefile
Modified: trunk/reactos/services/umpnpmgr/umpnpmgr.c
Modified: trunk/reactos/w32api/include/setupapi.h
_____
Added: trunk/reactos/include/idl/pnp.idl
--- trunk/reactos/include/idl/pnp.idl 2005-03-20 20:28:19 UTC (rev
14234)
+++ trunk/reactos/include/idl/pnp.idl 2005-03-20 20:43:46 UTC (rev
14235)
@@ -0,0 +1,19 @@
+/*
+ * Plug and Play Manager interface definition
+ */
+
+#define WORD unsigned short
+
+[
+ uuid (809F4e40-A03D-11CE-8F69-08003E30051B),
+ version(1.0),
+ pointer_default(unique),
+ explicit_handle
+]
+interface pnp
+{
+// unsigned long PNP_GetRootDeviceInstance(handle_t BindingHandle,
+// [out, string, size_is(Length)]
wchar_t *DeviceInstance,
+// [in] unsigned long Length);
+ WORD PNP_GetVersion(handle_t BindingHandle);
+}
_____
Modified: trunk/reactos/include/wine/cfgmgr32.h
--- trunk/reactos/include/wine/cfgmgr32.h 2005-03-20 20:28:19 UTC
(rev 14234)
+++ trunk/reactos/include/wine/cfgmgr32.h 2005-03-20 20:43:46 UTC
(rev 14235)
@@ -19,21 +19,39 @@
#ifndef _CFGMGR32_H_
#define _CFGMGR32_H_
+/* cfgmgr32 doesn't use the normal convention, it adds an underscore
before A/W */
+#ifdef __WINESRC__
+# define DECL_WINELIB_CFGMGR32_TYPE_AW(type) /* nothing */
+#else /* __WINESRC__ */
+# define DECL_WINELIB_CFGMGR32_TYPE_AW(type) typedef
WINELIB_NAME_AW(type##_) type;
+#endif /* __WINESRC__ */
+
typedef DWORD CONFIGRET;
typedef HANDLE HMACHINE;
typedef HMACHINE *PHMACHINE;
+typedef DWORD DEVINST;
+typedef DEVINST *PDEVINST;
-#define CR_SUCCESS 0x00000000
-#define CR_INVALID_DATA 0x0000001F
-#define CR_ACCESS_DENIED 0x00000033
+typedef CHAR *DEVINSTID_A;
+typedef WCHAR *DEVINSTID_W;
+DECL_WINELIB_CFGMGR32_TYPE_AW(DEVINSTID)
+#define CR_SUCCESS 0x00000000
+#define CR_OUT_OF_MEMORY 0x00000002
+#define CR_INVALID_DATA 0x0000001F
+#define CR_INVALID_MACHINENAME 0x0000002F
+#define CR_ACCESS_DENIED 0x00000033
+
+
CONFIGRET WINAPI CM_Connect_MachineA( PCSTR, PHMACHINE );
CONFIGRET WINAPI CM_Connect_MachineW( PCWSTR, PHMACHINE );
#define CM_Connect_Machine WINELIB_NAME_AW(CM_Connect_Machine)
CONFIGRET WINAPI CM_Disconnect_Machine( HMACHINE );
+CONFIGRET WINAPI CM_Get_Child( PDEVINST, DEVINST, ULONG );
+CONFIGRET WINAPI CM_Get_Child_Ex( PDEVINST, DEVINST, ULONG, HMACHINE );
CONFIGRET WINAPI CM_Get_Device_ID_ListA( PCSTR, PCHAR, ULONG, ULONG );
CONFIGRET WINAPI CM_Get_Device_ID_ListW( PCWSTR, PWCHAR, ULONG, ULONG
);
#define CM_Get_Device_ID_List
WINELIB_NAME_AW(CM_Get_Device_ID_List)
@@ -46,5 +64,18 @@
CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExA( PULONG, PCSTR, ULONG,
HMACHINE );
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_Parent( PDEVINST, DEVINST, ULONG );
+CONFIGRET WINAPI CM_Get_Parent_Ex( PDEVINST, DEVINST, ULONG, HMACHINE
);
+CONFIGRET WINAPI CM_Get_Sibling( PDEVINST, DEVINST, ULONG );
+CONFIGRET WINAPI CM_Get_Sibling_Ex( PDEVINST, DEVINST, ULONG, HMACHINE
);
+WORD WINAPI CM_Get_Version( VOID );
+WORD WINAPI CM_Get_Version_Ex( 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)
+CONFIGRET WINAPI CM_Locate_DevNode_ExA(PDEVINST, DEVINSTID_A, ULONG,
HMACHINE);
+CONFIGRET WINAPI CM_Locate_DevNode_ExW(PDEVINST, DEVINSTID_W, ULONG,
HMACHINE);
+#define CM_Locate_DevNode_Ex WINELIB_NAME_AW(CM_Locate_DevNode_Ex)
+
#endif /* _CFGMGR32_H_ */
_____
Modified: trunk/reactos/include/wine/setupapi.h
--- trunk/reactos/include/wine/setupapi.h 2005-03-20 20:28:19 UTC
(rev 14234)
+++ trunk/reactos/include/wine/setupapi.h 2005-03-20 20:43:46 UTC
(rev 14235)
@@ -666,6 +666,8 @@
LONG WINAPI AddTagToGroupOrderList(PCWSTR lpGroupName, DWORD
dwUnknown2, DWORD dwUnknown3);
+DWORD WINAPI CaptureAndConvertAnsiArg(PCSTR lpSrc, PWSTR *lpDst);
+DWORD WINAPI CaptureStringArg(PCWSTR lpSrc, PWSTR *lpDst);
BOOL WINAPI DelayedMove(PCWSTR lpExistingFileName, PCWSTR
lpNewFileName);
BOOL WINAPI DoesUserHavePrivilege(PCWSTR lpPrivilegeName);
PWSTR WINAPI DuplicateString(PCWSTR lpSrc);
_____
Modified: trunk/reactos/lib/setupapi/Makefile.in
--- trunk/reactos/lib/setupapi/Makefile.in 2005-03-20 20:28:19 UTC
(rev 14234)
+++ trunk/reactos/lib/setupapi/Makefile.in 2005-03-20 20:43:46 UTC
(rev 14235)
@@ -18,7 +18,9 @@
parser.c \
queue.c \
setupcab.c \
- stubs.c
+ stubs.c \
+ rpc.c \
+ pnp_c.c
C_SRCS16 = \
devinst16.c \
_____
Modified: trunk/reactos/lib/setupapi/cfgmgr.c
--- trunk/reactos/lib/setupapi/cfgmgr.c 2005-03-20 20:28:19 UTC (rev
14234)
+++ trunk/reactos/lib/setupapi/cfgmgr.c 2005-03-20 20:43:46 UTC (rev
14235)
@@ -31,11 +31,20 @@
#include "cfgmgr32.h"
#include "setupapi_private.h"
+#include "rpc.h"
+
+#include "pnp.h"
+
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(setupapi);
+typedef struct _MACHINE_INFO
+{
+ RPC_BINDING_HANDLE BindingHandle;
+} MACHINE_INFO, *PMACHINE_INFO;
+
/***********************************************************************
* CM_Connect_MachineA [SETUPAPI.@]
*/
@@ -47,14 +56,10 @@
TRACE("%s %p\n", UNCServerName, phMachine);
if (UNCServerName == NULL || *UNCServerName == 0)
- {
return CM_Connect_MachineW(NULL, phMachine);
- }
if (CaptureAndConvertAnsiArg(UNCServerName, &pServerNameW))
- {
return CR_INVALID_DATA;
- }
ret = CM_Connect_MachineW(pServerNameW, phMachine);
@@ -69,8 +74,23 @@
*/
CONFIGRET WINAPI CM_Connect_MachineW(PCWSTR UNCServerName, PHMACHINE
phMachine)
{
- FIXME("%s %p\n", debugstr_w(UNCServerName), phMachine);
- return CR_ACCESS_DENIED;
+ PMACHINE_INFO pMachine;
+
+ TRACE("%s %p\n", debugstr_w(UNCServerName), phMachine);
+
+ pMachine = (PMACHINE_INFO)GlobalAlloc(GPTR, sizeof(MACHINE_INFO));
+ if (pMachine == NULL)
+ return CR_OUT_OF_MEMORY;
+
+ if (!PnpBindRpc(UNCServerName, &pMachine->BindingHandle))
+ {
+ GlobalFree(pMachine);
+ return CR_INVALID_MACHINENAME;
+ }
+
+ phMachine = (PHMACHINE)pMachine;
+
+ return CR_SUCCESS;
}
@@ -79,12 +99,46 @@
*/
CONFIGRET WINAPI CM_Disconnect_Machine(HMACHINE hMachine)
{
- FIXME("%lx\n", hMachine);
+ PMACHINE_INFO pMachine;
+
+ TRACE("%lx\n", hMachine);
+
+ if (hMachine == NULL)
+ return CR_SUCCESS;
+
+ pMachine = (PMACHINE_INFO)hMachine;
+ if (!PnpUnbindRpc(pMachine->BindingHandle))
+ return CR_ACCESS_DENIED;
+
+ GlobalFree(pMachine);
+
return CR_SUCCESS;
}
/***********************************************************************
+ * CM_Get_Child [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_Child(
+ PDEVINST pdnDevInst, DEVINST dnDevInst, ULONG ulFlags)
+{
+ TRACE("%p %p %lx\n", pdnDevInst, dnDevInst, ulFlags);
+ return CM_Get_Sibling_Ex(pdnDevInst, dnDevInst, ulFlags, NULL);
+}
+
+
+/**********************************************************************
*
+ * CM_Get_Child_Ex [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_Child_Ex(
+ PDEVINST pdnDevInst, DEVINST dnDevInst, ULONG ulFlags, HMACHINE
hMachine)
+{
+ TRACE("%p %lx %lx %lx\n", pdnDevInst, dnDevInst, ulFlags,
hMachine);
+ return CR_SUCCESS;
+}
+
+
+/**********************************************************************
*
* CM_Get_Device_ID_ListA [SETUPAPI.@]
*/
CONFIGRET WINAPI CM_Get_Device_ID_ListA(
@@ -154,9 +208,8 @@
CONFIGRET WINAPI CM_Get_Device_ID_List_SizeW(
PULONG pulLen, PCWSTR pszFilter, ULONG ulFlags)
{
- FIXME("%p %s %ld\n", pulLen, debugstr_w(pszFilter), ulFlags);
- *pulLen = 2;
- return CR_SUCCESS;
+ TRACE("%p %s %ld\n", pulLen, debugstr_w(pszFilter), ulFlags);
+ return CM_Get_Device_ID_List_Size_ExW(pulLen, pszFilter, ulFlags,
NULL);
}
@@ -182,3 +235,128 @@
*pulLen = 2;
return CR_SUCCESS;
}
+
+
+/**********************************************************************
*
+ * CM_Get_Parent [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_Parent(
+ PDEVINST pdnDevInst, DEVINST dnDevInst, ULONG ulFlags)
+{
+ TRACE("%p %p %lx\n", pdnDevInst, dnDevInst, ulFlags);
+ return CM_Get_Sibling_Ex(pdnDevInst, dnDevInst, ulFlags, NULL);
+}
+
+
+/**********************************************************************
*
+ * CM_Get_Parent_Ex [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_Parent_Ex(
+ PDEVINST pdnDevInst, DEVINST dnDevInst, ULONG ulFlags, HMACHINE
hMachine)
+{
+ TRACE("%p %lx %lx %lx\n", pdnDevInst, dnDevInst, ulFlags,
hMachine);
+ return CR_SUCCESS;
+}
+
+
+/**********************************************************************
*
+ * CM_Get_Sibling [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_Sibling(
+ PDEVINST pdnDevInst, DEVINST dnDevInst, ULONG ulFlags)
+{
+ TRACE("%p %p %lx\n", pdnDevInst, dnDevInst, ulFlags);
+ return CM_Get_Sibling_Ex(pdnDevInst, dnDevInst, ulFlags, NULL);
+}
+
+
+/**********************************************************************
*
+ * CM_Get_Sibling_Ex [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_Sibling_Ex(
+ PDEVINST pdnDevInst, DEVINST dnDevInst, ULONG ulFlags, HMACHINE
hMachine)
+{
+ TRACE("%p %lx %lx %lx\n", pdnDevInst, dnDevInst, ulFlags,
hMachine);
+ return CR_SUCCESS;
+}
+
+
+/**********************************************************************
*
+ * CM_Get_Version [SETUPAPI.@]
+ */
+WORD WINAPI CM_Get_Version(VOID)
+{
+ TRACE("\n");
+ return CM_Get_Version_Ex(NULL);
+}
+
+
+/**********************************************************************
*
+ * CM_Get_Version_Ex [SETUPAPI.@]
+ */
+WORD WINAPI CM_Get_Version_Ex(HMACHINE hMachine)
+{
+ RPC_BINDING_HANDLE BindingHandle = NULL;
+ RPC_STATUS Status;
+
+ FIXME("%lx\n", hMachine);
+
+ if (hMachine != NULL)
+ {
+ BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
+ if (BindingHandle == NULL)
+ return 0;
+ }
+ else
+ {
+ Status = PnpGetLocalBindingHandle(&BindingHandle);
+ if (Status != RPC_S_OK)
+ return 0;
+ }
+
+ return PNP_GetVersion(BindingHandle);
+}
+
+
+/**********************************************************************
*
+ * CM_Locate_DevNodeA [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Locate_DevNodeA(
+ PDEVINST pdnDevInst, DEVINSTID_A pDeviceID, ULONG ulFlags)
+{
+ FIXME("%p %p %lu\n", pdnDevInst, pDeviceID, ulFlags);
+ return CR_SUCCESS;
+}
+
+
+/**********************************************************************
*
+ * CM_Locate_DevNodeW [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Locate_DevNodeW(
+ PDEVINST pdnDevInst, DEVINSTID_W pDeviceID, ULONG ulFlags)
+{
+ TRACE("%p %p %lu\n", pdnDevInst, pDeviceID, ulFlags);
+ return CM_Locate_DevNode_ExW(pdnDevInst, pDeviceID, ulFlags, NULL);
+}
+
+
+/**********************************************************************
*
+ * CM_Locate_DevNode_ExA [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Locate_DevNode_ExA(
+ PDEVINST pdnDevInst, DEVINSTID_A pDeviceID, ULONG ulFlags, HMACHINE
hMachine)
+{
+ FIXME("%p %p %lu %lx\n", pdnDevInst, pDeviceID, ulFlags, hMachine);
+ return CR_SUCCESS;
+}
+
+
+/**********************************************************************
*
+ * CM_Locate_DevNode_ExW [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Locate_DevNode_ExW(
+ PDEVINST pdnDevInst, DEVINSTID_W pDeviceID, ULONG ulFlags, HMACHINE
hMachine)
+{
+ FIXME("%p %p %lu %lx\n", pdnDevInst, pDeviceID, ulFlags, hMachine);
+ return CR_SUCCESS;
+}
_____
Modified: trunk/reactos/lib/setupapi/makefile
--- trunk/reactos/lib/setupapi/makefile 2005-03-20 20:28:19 UTC (rev
14234)
+++ trunk/reactos/lib/setupapi/makefile 2005-03-20 20:43:46 UTC (rev
14235)
@@ -4,6 +4,15 @@
TARGET_TYPE = winedll
+TARGET_CLEAN = pnp_c.c pnp.h
+
include $(PATH_TO_TOP)/rules.mak
include $(TOOLS_PATH)/helper.mk
+
+WIDL_FLAGS = -o \
+ -D _X86_ -D MIDL_PASS \
+ -I $(PATH_TO_TOP)/w32api/include
+
+pnp_c.c pnp.h: $(PATH_TO_TOP)/include/idl/pnp.idl
+ $(WIDL) $(WIDL_FLAGS) -h -H pnp.h -c -C pnp_c.c
$(PATH_TO_TOP)/include/idl/pnp.idl
_____
Added: trunk/reactos/lib/setupapi/rpc.c
--- trunk/reactos/lib/setupapi/rpc.c 2005-03-20 20:28:19 UTC (rev
14234)
+++ trunk/reactos/lib/setupapi/rpc.c 2005-03-20 20:43:46 UTC (rev
14235)
@@ -0,0 +1,82 @@
+/* rpc.c */
+
+#include <windows.h>
+#include <rpc.h>
+#include <rpcdce.h>
+
+
+static RPC_BINDING_HANDLE LocalBindingHandle = NULL;
+
+
+RPC_STATUS
+PnpBindRpc(LPWSTR pszMachine,
+ RPC_BINDING_HANDLE* BindingHandle)
+{
+ PWSTR pszStringBinding = NULL;
+ RPC_STATUS Status;
+
+ Status = RpcStringBindingComposeW(NULL,
+ L"ncacn_np",
+ pszMachine,
+ L"\\pipe\\umpnpmgr",
+ NULL,
+ &pszStringBinding);
+ if (Status != RPC_S_OK)
+ return Status;
+
+ Status = RpcBindingFromStringBindingW(pszStringBinding,
+ BindingHandle);
+
+ RpcStringFreeW(&pszStringBinding);
+
+ return Status;
+}
+
+
+RPC_STATUS
+PnpUnbindRpc(RPC_BINDING_HANDLE *BindingHandle)
+{
+ if (BindingHandle != NULL)
+ {
+ RpcBindingFree(*BindingHandle);
+ *BindingHandle = NULL;
+ }
+
+ return RPC_S_OK;
+}
+
+
+RPC_STATUS
+PnpGetLocalBindingHandle(RPC_BINDING_HANDLE *BindingHandle)
+{
+ if (LocalBindingHandle != NULL)
+ {
+ BindingHandle = LocalBindingHandle;
+ return RPC_S_OK;
+ }
+
+ return PnpBindRpc(NULL, BindingHandle);
+}
+
+
+RPC_STATUS
+PnpUnbindLocalBindingHandle(VOID)
+{
+ return PnpUnbindRpc(&LocalBindingHandle);
+}
+
+
+void __RPC_FAR * __RPC_USER
+midl_user_allocate(size_t len)
+{
+ return GlobalAlloc(GPTR, len);
+}
+
+
+void __RPC_USER
+midl_user_free(void __RPC_FAR * ptr)
+{
+ GlobalFree(ptr);
+}
+
+/* EOF */
_____
Modified: trunk/reactos/lib/setupapi/setupapi.spec
--- trunk/reactos/lib/setupapi/setupapi.spec 2005-03-20 20:28:19 UTC
(rev 14234)
+++ trunk/reactos/lib/setupapi/setupapi.spec 2005-03-20 20:43:46 UTC
(rev 14235)
@@ -53,8 +53,8 @@
@ stub CM_Free_Res_Des
@ stub CM_Free_Res_Des_Ex
@ stub CM_Free_Res_Des_Handle
-@ stub CM_Get_Child
-@ stub CM_Get_Child_Ex
+@ stdcall CM_Get_Child(ptr long long)
+@ stdcall CM_Get_Child_Ex(ptr long long long)
@ stub CM_Get_Class_Key_NameA
@ stub CM_Get_Class_Key_NameW
@ stub CM_Get_Class_Key_Name_ExA
@@ -115,23 +115,23 @@
@ stub CM_Get_Next_Log_Conf_Ex
@ stub CM_Get_Next_Res_Des
@ stub CM_Get_Next_Res_Des_Ex
-@ stub CM_Get_Parent
-@ stub CM_Get_Parent_Ex
+@ stdcall CM_Get_Parent(ptr long long)
+@ stdcall CM_Get_Parent_Ex(ptr long long long)
@ stub CM_Get_Res_Des_Data
@ stub CM_Get_Res_Des_Data_Ex
@ stub CM_Get_Res_Des_Data_Size
@ stub CM_Get_Res_Des_Data_Size_Ex
-@ stub CM_Get_Sibling
-@ stub CM_Get_Sibling_Ex
-@ stub CM_Get_Version
-@ stub CM_Get_Version_Ex
+@ stdcall CM_Get_Sibling(ptr long long)
+@ stdcall CM_Get_Sibling_Ex(ptr long long long)
+@ stdcall CM_Get_Version()
+@ stdcall CM_Get_Version_Ex(long)
@ stub CM_Intersect_Range_List
@ stub CM_Invert_Range_List
@ stub CM_Is_Dock_Station_Present
-@ stub CM_Locate_DevNodeA
-@ stub CM_Locate_DevNodeW
-@ stub CM_Locate_DevNode_ExA
-@ stub CM_Locate_DevNode_ExW
+@ stdcall CM_Locate_DevNodeA(ptr str long)
+@ stdcall CM_Locate_DevNodeW(ptr wstr long)
+@ stdcall CM_Locate_DevNode_ExA(ptr str long long)
+@ stdcall CM_Locate_DevNode_ExW(ptr wstr long long)
@ stub CM_Merge_Range_List
@ stub CM_Modify_Res_Des
@ stub CM_Modify_Res_Des_Ex
_____
Modified: trunk/reactos/services/umpnpmgr/makefile
--- trunk/reactos/services/umpnpmgr/makefile 2005-03-20 20:28:19 UTC
(rev 14234)
+++ trunk/reactos/services/umpnpmgr/makefile 2005-03-20 20:43:46 UTC
(rev 14235)
@@ -12,12 +12,25 @@
TARGET_SDKLIBS = ntdll.a kernel32.a advapi32.a rpcrt4.a
-TARGET_OBJECTS = umpnpmgr.o
+TARGET_OBJECTS = umpnpmgr.o pnp_s.o
-TARGET_CFLAGS = -Wall -Werror -D__USE_W32API
+TARGET_CFLAGS = -Wall -Werror -D__USE_W32API -DUNICODE -D_UNICODE
+TARGET_CLEAN = pnp_s.c pnp.h
+
+DEP_OBJECTS = $(TARGET_OBJECTS)
+
include $(PATH_TO_TOP)/rules.mak
include $(TOOLS_PATH)/helper.mk
+include $(TOOLS_PATH)/depend.mk
+
+WIDL_FLAGS = \
+ -D _X86_ -D MIDL_PASS \
+ -I $(PATH_TO_TOP)/w32api/include
+
+pnp_s.c pnp.h: $(PATH_TO_TOP)/include/idl/pnp.idl
+ $(WIDL) $(WIDL_FLAGS) -h -H pnp.h -s -S pnp_s.c
$(PATH_TO_TOP)/include/idl/pnp.idl
+
# EOF
_____
Modified: trunk/reactos/services/umpnpmgr/umpnpmgr.c
--- trunk/reactos/services/umpnpmgr/umpnpmgr.c 2005-03-20 20:28:19 UTC
(rev 14234)
+++ trunk/reactos/services/umpnpmgr/umpnpmgr.c 2005-03-20 20:43:46 UTC
(rev 14235)
@@ -27,9 +27,6 @@
/* INCLUDES
*****************************************************************/
-#define UNICODE
-#define _UNICODE
-
#define NTOS_MODE_USER
#include <ntos.h>
#include <ntos/ntpnp.h>
@@ -41,6 +38,8 @@
#include <rpc.h>
#include <rpcdce.h>
+#include "pnp.h"
+
#define DBG
#define NDEBUG
#include <debug.h>
@@ -62,6 +61,66 @@
/* FUNCTIONS
*****************************************************************/
static DWORD WINAPI
+RpcServerThread(LPVOID lpParameter)
+{
+ RPC_STATUS Status;
+
+ DPRINT("RpcServerThread() called\n");
+
+ Status = RpcServerUseProtseqEpW(L"ncacn_np",
+ 20,
+ L"\\pipe\\umpnpmgr",
+ NULL); // Security descriptor
+ if (Status != RPC_S_OK)
+ {
+ DPRINT1("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status);
+ return 0;
+ }
+
+ Status = RpcServerRegisterIf(pnp_v1_0_s_ifspec,
+ NULL,
+ NULL);
+ if (Status != RPC_S_OK)
+ {
+ DPRINT1("RpcServerRegisterIf() failed (Status %lx)\n", Status);
+ return 0;
+ }
+
+ Status = RpcServerListen(1,
+ 20,
+ FALSE);
+ if (Status != RPC_S_OK)
+ {
+ DPRINT1("RpcServerListen() failed (Status %lx)\n", Status);
+ return 0;
+ }
+
+ DPRINT("RpcServerThread() done\n");
+
+ return 0;
+}
+
+
+void __RPC_FAR * __RPC_USER midl_user_allocate(size_t len)
+{
+ return GlobalAlloc(GPTR, len);
+}
+
+
+void __RPC_USER midl_user_free(void __RPC_FAR * ptr)
+{
+ GlobalFree(ptr);
+}
+
+
+//WORD PNP_GetVersion(RPC_BINDING_HANDLE BindingHandle)
+WORD PNP_GetVersion(handle_t BindingHandle)
+{
+ return 0x0400;
+}
+
+
+static DWORD WINAPI
PnpEventThread(LPVOID lpParameter)
{
PPLUGPLAY_EVENT_BLOCK PnpEvent;
@@ -134,6 +193,15 @@
if (hThread != NULL)
CloseHandle(hThread);
+ hThread = CreateThread(NULL,
+ 0,
+ RpcServerThread,
+ NULL,
+ 0,
+ &dwThreadId);
+ if (hThread != NULL)
+ CloseHandle(hThread);
+
DPRINT("ServiceMain() done\n");
}
_____
Modified: trunk/reactos/w32api/include/setupapi.h
--- trunk/reactos/w32api/include/setupapi.h 2005-03-20 20:28:19 UTC
(rev 14234)
+++ trunk/reactos/w32api/include/setupapi.h 2005-03-20 20:43:46 UTC
(rev 14235)
@@ -1031,6 +1031,15 @@
*PSP_BACKUP_QUEUE_PARAMS;
#endif /* UNICODE */
+
+WINSETUPAPI LONG WINAPI AddTagToGroupOrderList(PCWSTR, DWORD, DWORD);
+WINSETUPAPI PWSTR WINAPI DuplicateString(PCWSTR);
+WINSETUPAPI BOOL WINAPI IsUserAdmin(VOID);
+WINSETUPAPI VOID WINAPI MyFree(PVOID);
+WINSETUPAPI PVOID WINAPI MyMalloc(DWORD);
+WINSETUPAPI PVOID WINAPI MyRealloc(PVOID, DWORD);
+WINSETUPAPI LONG WINAPI QueryRegistryValue(HKEY, PCWSTR, PBYTE*,
PDWORD, PDWORD);
+
WINSETUPAPI BOOL WINAPI
SetupAddInstallSectionToDiskSpaceListA(HDSKSPC,HINF,HINF,PCSTR,PVOID,UIN
T);
WINSETUPAPI BOOL WINAPI
SetupAddInstallSectionToDiskSpaceListW(HDSKSPC,HINF,HINF,PCWSTR,PVOID,UI
NT);
WINSETUPAPI BOOL WINAPI
SetupAddSectionToDiskSpaceListA(HDSKSPC,HINF,HINF,PCSTR,UINT,PVOID,UINT)
;