mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 17:05:46 +00:00
- Implement CM_Get_Global_State/CM_Get_Global_State_Ex.
- All RPC-Calls to umpnpmgr return CONFIGRET. svn path=/trunk/; revision=16525
This commit is contained in:
parent
de63015392
commit
a5b363cd94
9 changed files with 300 additions and 129 deletions
|
@ -1,8 +1,9 @@
|
|||
/*
|
||||
* Plug and Play Manager interface definition
|
||||
* Plug and Play Manager RPC interface definition
|
||||
*/
|
||||
|
||||
#define WORD unsigned short
|
||||
#define DWORD unsigned long
|
||||
#define CONFIGRET unsigned long
|
||||
|
||||
[
|
||||
|
@ -13,9 +14,14 @@
|
|||
]
|
||||
interface pnp
|
||||
{
|
||||
// unsigned long PNP_GetRootDeviceInstance(handle_t BindingHandle,
|
||||
// [out, string, size_is(Length)] wchar_t *DeviceInstance,
|
||||
// [in] unsigned long Length);
|
||||
CONFIGRET PNP_GetVersion(handle_t BindingHandle,
|
||||
[out] WORD *Version);
|
||||
|
||||
CONFIGRET PNP_GetGlobalState(handle_t BindingHandle,
|
||||
[out] unsigned long *State,
|
||||
[in] unsigned long Flags);
|
||||
|
||||
// CONFIGRET PNP_GetRootDeviceInstance(handle_t BindingHandle,
|
||||
// [out, string, size_is(Length)] wchar_t *DeviceInstance,
|
||||
// [in] DWORD Length);
|
||||
}
|
||||
|
|
|
@ -31,23 +31,45 @@ typedef HANDLE HMACHINE;
|
|||
typedef HMACHINE *PHMACHINE;
|
||||
typedef DWORD DEVINST;
|
||||
typedef DEVINST *PDEVINST;
|
||||
typedef ULONG REGDISPOSITION;
|
||||
|
||||
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_FAILURE 0x00000013
|
||||
#define CR_BUFFER_SMALL 0x0000001A
|
||||
#define CR_INVALID_DATA 0x0000001F
|
||||
#define CR_SUCCESS 0x00000000
|
||||
#define CR_OUT_OF_MEMORY 0x00000002
|
||||
#define CR_INVALID_POINTER 0x00000003
|
||||
#define CR_INVALID_FLAG 0x00000004
|
||||
#define CR_INVALID_DEVNODE 0x00000005
|
||||
#define CR_INVALID_DEVINST CR_INVALID_DEVNODE
|
||||
#define CR_NO_SUCH_DEVNODE 0x0000000D
|
||||
#define CR_NO_SUCH_DEVINST CR_NO_SUCH_DEVNODE
|
||||
#define CR_FAILURE 0x00000013
|
||||
#define CR_BUFFER_SMALL 0x0000001A
|
||||
#define CR_REGISTRY_ERROR 0x0000001D
|
||||
#define CR_INVALID_DEVICE_ID 0x0000001E
|
||||
#define CR_INVALID_DATA 0x0000001F
|
||||
#define CR_NO_SUCH_VALUE 0x00000025
|
||||
#define CR_INVALID_MACHINENAME 0x0000002F
|
||||
#define CR_ACCESS_DENIED 0x00000033
|
||||
#define CR_NO_SUCH_REGISTRY_KEY 0x0000002E
|
||||
#define CR_INVALID_MACHINENAME 0x0000002F
|
||||
#define CR_ACCESS_DENIED 0x00000033
|
||||
|
||||
#define MAX_CLASS_NAME_LEN 32
|
||||
#define MAX_GUID_STRING_LEN 39
|
||||
#define MAX_PROFILE_LEN 80
|
||||
#define MAX_DEVICE_ID_LEN 200
|
||||
#define MAX_DEVNODE_ID_LEN MAX_DEVICE_ID_LEN
|
||||
|
||||
/* Disposition values for CM_Open_Class_Key[_Ex] */
|
||||
#define RegDisposition_OpenAlways 0x00000000
|
||||
#define RegDisposition_OpenExisting 0x00000001
|
||||
#define RegDisposition_Bits 0x00000001
|
||||
|
||||
/* ulFlags for CM_Open_Class_Key[_Ex] */
|
||||
#define CM_OPEN_CLASS_KEY_INSTALLER 0x00000000
|
||||
#define CM_OPEN_CLASS_KEY_INTERFACE 0x00000001
|
||||
#define CM_OPEN_CLASS_KEY_BITS 0x00000001
|
||||
|
||||
|
||||
CONFIGRET WINAPI CM_Connect_MachineA( PCSTR, PHMACHINE );
|
||||
|
@ -71,6 +93,8 @@ CONFIGRET WINAPI CM_Get_Device_ID_List_SizeW( PULONG, PCWSTR, ULONG );
|
|||
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_Global_State( PULONG, ULONG );
|
||||
CONFIGRET WINAPI CM_Get_Global_State_Ex( PULONG, ULONG, HMACHINE );
|
||||
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 );
|
||||
|
@ -85,4 +109,12 @@ 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)
|
||||
|
||||
CONFIGRET WINAPI CM_Open_Class_KeyA(LPGUID, LPCSTR, REGSAM, REGDISPOSITION, PHKEY, ULONG);
|
||||
CONFIGRET WINAPI CM_Open_Class_KeyW(LPGUID, LPCWSTR, REGSAM, REGDISPOSITION, PHKEY, ULONG);
|
||||
#define CM_Open_Class_Key WINELIB_NAME_AW(CM_Open_Class_Key)
|
||||
CONFIGRET WINAPI CM_Open_Class_Key_ExA(LPGUID, LPCSTR, REGSAM, REGDISPOSITION, PHKEY, ULONG, HMACHINE);
|
||||
CONFIGRET WINAPI CM_Open_Class_Key_ExW(LPGUID, LPCWSTR, REGSAM, REGDISPOSITION, PHKEY, ULONG, HMACHINE);
|
||||
#define CM_Open_Class_Key_Ex WINELIB_NAME_AW(CM_Open_Class_Key_Ex)
|
||||
|
||||
|
||||
#endif /* _CFGMGR32_H_ */
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#include "setupapi_private.h"
|
||||
|
||||
#include "rpc.h"
|
||||
#include "rpc_private.h"
|
||||
|
||||
#include "pnp_c.h"
|
||||
|
||||
|
@ -41,9 +42,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(setupapi);
|
|||
|
||||
/* Registry key and value names */
|
||||
static const WCHAR ControlClass[] = {'S','y','s','t','e','m','\\',
|
||||
'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\',
|
||||
'C','o','n','t','r','o','l','\\',
|
||||
'C','l','a','s','s',0};
|
||||
'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\',
|
||||
'C','o','n','t','r','o','l','\\',
|
||||
'C','l','a','s','s',0};
|
||||
|
||||
|
||||
typedef struct _MACHINE_INFO
|
||||
|
@ -137,17 +138,32 @@ CONFIGRET WINAPI CM_Enumerate_Classes(
|
|||
|
||||
static CONFIGRET GetCmCodeFromErrorCode(DWORD ErrorCode)
|
||||
{
|
||||
switch (ErrorCode)
|
||||
{
|
||||
case ERROR_SUCCESS: return CR_SUCCESS;
|
||||
case ERROR_ACCESS_DENIED: return CR_ACCESS_DENIED;
|
||||
case ERROR_INSUFFICIENT_BUFFER: return CR_BUFFER_SMALL;
|
||||
case ERROR_INVALID_DATA: return CR_INVALID_DATA;
|
||||
case ERROR_INVALID_PARAMETER: return CR_INVALID_DATA;
|
||||
case ERROR_NO_MORE_ITEMS: return CR_NO_SUCH_VALUE;
|
||||
case ERROR_NO_SYSTEM_RESOURCES: return CR_OUT_OF_MEMORY;
|
||||
default: return CR_FAILURE;
|
||||
}
|
||||
switch (ErrorCode)
|
||||
{
|
||||
case ERROR_SUCCESS:
|
||||
return CR_SUCCESS;
|
||||
|
||||
case ERROR_ACCESS_DENIED:
|
||||
return CR_ACCESS_DENIED;
|
||||
|
||||
case ERROR_INSUFFICIENT_BUFFER:
|
||||
return CR_BUFFER_SMALL;
|
||||
|
||||
case ERROR_INVALID_DATA:
|
||||
return CR_INVALID_DATA;
|
||||
|
||||
case ERROR_INVALID_PARAMETER:
|
||||
return CR_INVALID_DATA;
|
||||
|
||||
case ERROR_NO_MORE_ITEMS:
|
||||
return CR_NO_SUCH_VALUE;
|
||||
|
||||
case ERROR_NO_SYSTEM_RESOURCES:
|
||||
return CR_OUT_OF_MEMORY;
|
||||
|
||||
default:
|
||||
return CR_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -194,7 +210,7 @@ CONFIGRET WINAPI CM_Enumerate_Classes_Ex(
|
|||
Buffer[37] = UNICODE_NULL;
|
||||
/* Convert the buffer to a GUID */
|
||||
if (UuidFromStringW(&Buffer[1], ClassGuid) != RPC_S_OK)
|
||||
return CR_FAILURE;
|
||||
return CR_FAILURE;
|
||||
}
|
||||
|
||||
return GetCmCodeFromErrorCode(rc);
|
||||
|
@ -218,7 +234,7 @@ CONFIGRET WINAPI CM_Get_Child(
|
|||
CONFIGRET WINAPI CM_Get_Child_Ex(
|
||||
PDEVINST pdnDevInst, DEVINST dnDevInst, ULONG ulFlags, HMACHINE hMachine)
|
||||
{
|
||||
TRACE("%p %lx %lx %lx\n", pdnDevInst, dnDevInst, ulFlags, hMachine);
|
||||
FIXME("%p %lx %lx %lx\n", pdnDevInst, dnDevInst, ulFlags, hMachine);
|
||||
return CR_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -229,9 +245,9 @@ CONFIGRET WINAPI CM_Get_Child_Ex(
|
|||
CONFIGRET WINAPI CM_Get_Device_ID_ListA(
|
||||
PCSTR pszFilter, PCHAR Buffer, ULONG BufferLen, ULONG ulFlags )
|
||||
{
|
||||
FIXME("%p %p %ld %ld\n", pszFilter, Buffer, BufferLen, ulFlags);
|
||||
memset(Buffer,0,2);
|
||||
return CR_SUCCESS;
|
||||
TRACE("%p %p %ld %ld\n", pszFilter, Buffer, BufferLen, ulFlags);
|
||||
return CM_Get_Device_ID_List_ExA(pszFilter, Buffer, BufferLen,
|
||||
ulFlags, NULL);
|
||||
}
|
||||
|
||||
|
||||
|
@ -281,9 +297,8 @@ CONFIGRET WINAPI CM_Get_Device_ID_List_ExW(
|
|||
CONFIGRET WINAPI CM_Get_Device_ID_List_SizeA(
|
||||
PULONG pulLen, PCSTR pszFilter, ULONG ulFlags)
|
||||
{
|
||||
FIXME("%p %s %ld\n", pulLen, pszFilter, ulFlags);
|
||||
*pulLen = 2;
|
||||
return CR_SUCCESS;
|
||||
TRACE("%p %s %ld\n", pulLen, pszFilter, ulFlags);
|
||||
return CM_Get_Device_ID_List_Size_ExA(pulLen, pszFilter, ulFlags, NULL);
|
||||
}
|
||||
|
||||
|
||||
|
@ -322,6 +337,51 @@ CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExW(
|
|||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* CM_Get_Global_State [SETUPAPI.@]
|
||||
*/
|
||||
CONFIGRET WINAPI CM_Get_Global_State(
|
||||
PULONG pulState, ULONG ulFlags)
|
||||
{
|
||||
TRACE("%p %lx\n", pulState, ulFlags);
|
||||
return CM_Get_Global_State_Ex(pulState, ulFlags, NULL);
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* CM_Get_Global_State_Ex [SETUPAPI.@]
|
||||
*/
|
||||
CONFIGRET WINAPI CM_Get_Global_State_Ex(
|
||||
PULONG pulState, ULONG ulFlags, HMACHINE hMachine)
|
||||
{
|
||||
RPC_BINDING_HANDLE BindingHandle = NULL;
|
||||
RPC_STATUS Status;
|
||||
|
||||
TRACE("%p %lx %lx\n", pulState, ulFlags, hMachine);
|
||||
|
||||
if (pulState == NULL)
|
||||
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;
|
||||
}
|
||||
else
|
||||
{
|
||||
Status = PnpGetLocalBindingHandle(&BindingHandle);
|
||||
if (Status != RPC_S_OK)
|
||||
return CR_FAILURE;
|
||||
}
|
||||
|
||||
return PNP_GetGlobalState(BindingHandle, pulState, ulFlags);
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* CM_Get_Parent [SETUPAPI.@]
|
||||
*/
|
||||
|
@ -339,7 +399,7 @@ CONFIGRET WINAPI CM_Get_Parent(
|
|||
CONFIGRET WINAPI CM_Get_Parent_Ex(
|
||||
PDEVINST pdnDevInst, DEVINST dnDevInst, ULONG ulFlags, HMACHINE hMachine)
|
||||
{
|
||||
TRACE("%p %lx %lx %lx\n", pdnDevInst, dnDevInst, ulFlags, hMachine);
|
||||
FIXME("%p %lx %lx %lx\n", pdnDevInst, dnDevInst, ulFlags, hMachine);
|
||||
return CR_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -361,7 +421,7 @@ CONFIGRET WINAPI CM_Get_Sibling(
|
|||
CONFIGRET WINAPI CM_Get_Sibling_Ex(
|
||||
PDEVINST pdnDevInst, DEVINST dnDevInst, ULONG ulFlags, HMACHINE hMachine)
|
||||
{
|
||||
TRACE("%p %lx %lx %lx\n", pdnDevInst, dnDevInst, ulFlags, hMachine);
|
||||
FIXME("%p %lx %lx %lx\n", pdnDevInst, dnDevInst, ulFlags, hMachine);
|
||||
return CR_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -385,7 +445,7 @@ WORD WINAPI CM_Get_Version_Ex(HMACHINE hMachine)
|
|||
RPC_STATUS Status;
|
||||
WORD Version = 0;
|
||||
|
||||
FIXME("%lx\n", hMachine);
|
||||
TRACE("%lx\n", hMachine);
|
||||
|
||||
if (hMachine != NULL)
|
||||
{
|
||||
|
@ -413,8 +473,8 @@ WORD WINAPI CM_Get_Version_Ex(HMACHINE hMachine)
|
|||
CONFIGRET WINAPI CM_Locate_DevNodeA(
|
||||
PDEVINST pdnDevInst, DEVINSTID_A pDeviceID, ULONG ulFlags)
|
||||
{
|
||||
FIXME("%p %p %lu\n", pdnDevInst, pDeviceID, ulFlags);
|
||||
return CR_SUCCESS;
|
||||
TRACE("%p %s %lu\n", pdnDevInst, pDeviceID, ulFlags);
|
||||
return CM_Locate_DevNode_ExA(pdnDevInst, pDeviceID, ulFlags, NULL);
|
||||
}
|
||||
|
||||
|
||||
|
@ -424,8 +484,8 @@ CONFIGRET WINAPI CM_Locate_DevNodeA(
|
|||
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);
|
||||
TRACE("%p %s %lu\n", pdnDevInst, debugstr_w(pDeviceID), ulFlags);
|
||||
return CM_Locate_DevNode_ExW(pdnDevInst, pDeviceID, ulFlags, NULL);
|
||||
}
|
||||
|
||||
|
||||
|
@ -435,8 +495,23 @@ CONFIGRET WINAPI CM_Locate_DevNodeW(
|
|||
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;
|
||||
DEVINSTID_W pDevIdW = NULL;
|
||||
CONFIGRET rc = CR_SUCCESS;
|
||||
|
||||
TRACE("%p %s %lu %lx\n", pdnDevInst, pDeviceID, ulFlags, hMachine);
|
||||
|
||||
if (pDeviceID != NULL)
|
||||
{
|
||||
if (CaptureAndConvertAnsiArg(pDeviceID, &pDevIdW))
|
||||
return CR_INVALID_DEVICE_ID;
|
||||
}
|
||||
|
||||
rc = CM_Locate_DevNode_ExW(pdnDevInst, pDevIdW, ulFlags, hMachine);
|
||||
|
||||
if (pDevIdW != NULL)
|
||||
MyFree(pDevIdW);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
|
@ -446,6 +521,6 @@ CONFIGRET WINAPI CM_Locate_DevNode_ExA(
|
|||
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;
|
||||
FIXME("%p %s %lu %lx\n", pdnDevInst, debugstr_w(pDeviceID), ulFlags, hMachine);
|
||||
return CR_SUCCESS;
|
||||
}
|
||||
|
|
|
@ -1,82 +1,101 @@
|
|||
/* rpc.c */
|
||||
/*
|
||||
* RPC support routines
|
||||
*
|
||||
* Copyright 2005 Eric Kohl
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <windows.h>
|
||||
#include <rpc.h>
|
||||
#include <rpcdce.h>
|
||||
#include "rpc_private.h"
|
||||
|
||||
|
||||
static RPC_BINDING_HANDLE LocalBindingHandle = NULL;
|
||||
|
||||
|
||||
RPC_STATUS
|
||||
PnpBindRpc(LPWSTR pszMachine,
|
||||
PnpBindRpc(LPCWSTR pszMachine,
|
||||
RPC_BINDING_HANDLE* BindingHandle)
|
||||
{
|
||||
PWSTR pszStringBinding = NULL;
|
||||
RPC_STATUS Status;
|
||||
PWSTR pszStringBinding = NULL;
|
||||
RPC_STATUS Status;
|
||||
|
||||
Status = RpcStringBindingComposeW(NULL,
|
||||
L"ncacn_np",
|
||||
(LPWSTR)pszMachine,
|
||||
L"\\pipe\\umpnpmgr",
|
||||
NULL,
|
||||
&pszStringBinding);
|
||||
if (Status != RPC_S_OK)
|
||||
return Status;
|
||||
|
||||
Status = RpcBindingFromStringBindingW(pszStringBinding,
|
||||
BindingHandle);
|
||||
|
||||
RpcStringFreeW(&pszStringBinding);
|
||||
|
||||
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;
|
||||
}
|
||||
if (BindingHandle != NULL)
|
||||
{
|
||||
RpcBindingFree(*BindingHandle);
|
||||
*BindingHandle = NULL;
|
||||
}
|
||||
|
||||
return RPC_S_OK;
|
||||
return RPC_S_OK;
|
||||
}
|
||||
|
||||
|
||||
RPC_STATUS
|
||||
PnpGetLocalBindingHandle(RPC_BINDING_HANDLE *BindingHandle)
|
||||
{
|
||||
if (LocalBindingHandle != NULL)
|
||||
{
|
||||
BindingHandle = LocalBindingHandle;
|
||||
return RPC_S_OK;
|
||||
}
|
||||
if (LocalBindingHandle != NULL)
|
||||
{
|
||||
BindingHandle = LocalBindingHandle;
|
||||
return RPC_S_OK;
|
||||
}
|
||||
|
||||
return PnpBindRpc(NULL, BindingHandle);
|
||||
return PnpBindRpc(NULL, BindingHandle);
|
||||
}
|
||||
|
||||
|
||||
RPC_STATUS
|
||||
PnpUnbindLocalBindingHandle(VOID)
|
||||
{
|
||||
return PnpUnbindRpc(&LocalBindingHandle);
|
||||
return PnpUnbindRpc(&LocalBindingHandle);
|
||||
}
|
||||
|
||||
|
||||
void __RPC_FAR * __RPC_USER
|
||||
midl_user_allocate(size_t len)
|
||||
{
|
||||
return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len);
|
||||
return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len);
|
||||
}
|
||||
|
||||
|
||||
void __RPC_USER
|
||||
midl_user_free(void __RPC_FAR * ptr)
|
||||
{
|
||||
HeapFree(GetProcessHeap(), 0, ptr);
|
||||
HeapFree(GetProcessHeap(), 0, ptr);
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
29
reactos/lib/setupapi/rpc_private.h
Normal file
29
reactos/lib/setupapi/rpc_private.h
Normal file
|
@ -0,0 +1,29 @@
|
|||
/*
|
||||
* Copyright 2005 Eric Kohl
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef __RPC_PRIVATE_H
|
||||
#define __RPC_PRIVATE_H
|
||||
|
||||
RPC_STATUS PnpBindRpc(LPCWSTR pszMachine,
|
||||
RPC_BINDING_HANDLE* BindingHandle);
|
||||
RPC_STATUS PnpUnbindRpc(RPC_BINDING_HANDLE *BindingHandle);
|
||||
|
||||
RPC_STATUS PnpGetLocalBindingHandle(RPC_BINDING_HANDLE *BindingHandle);
|
||||
RPC_STATUS PnpUnbindLocalHandles(VOID);
|
||||
|
||||
#endif /* __RPC_PRIVATE_H */
|
|
@ -99,8 +99,8 @@
|
|||
@ stub CM_Get_Device_Interface_List_Size_ExW
|
||||
@ stub CM_Get_First_Log_Conf
|
||||
@ stub CM_Get_First_Log_Conf_Ex
|
||||
@ stub CM_Get_Global_State
|
||||
@ stub CM_Get_Global_State_Ex
|
||||
@ stdcall CM_Get_Global_State(ptr long)
|
||||
@ stdcall CM_Get_Global_State_Ex(ptr long long)
|
||||
@ stub CM_Get_HW_Prof_FlagsA
|
||||
@ stub CM_Get_HW_Prof_FlagsW
|
||||
@ stub CM_Get_HW_Prof_Flags_ExA
|
||||
|
|
|
@ -107,12 +107,22 @@ void __RPC_USER midl_user_free(void __RPC_FAR * ptr)
|
|||
}
|
||||
|
||||
|
||||
//WORD PNP_GetVersion(RPC_BINDING_HANDLE BindingHandle)
|
||||
//CONFIRET PNP_GetVersion(RPC_BINDING_HANDLE BindingHandle,
|
||||
// WORD *Version)
|
||||
unsigned long PNP_GetVersion(handle_t BindingHandle,
|
||||
unsigned short *Version)
|
||||
{
|
||||
*Version = 0x0400;
|
||||
return 0;
|
||||
return 0; /* CR_SUCCESS */
|
||||
}
|
||||
|
||||
|
||||
unsigned long PNP_GetGlobalState(handle_t BindingHandle,
|
||||
unsigned long *State,
|
||||
unsigned long Flags)
|
||||
{
|
||||
*State = 5;
|
||||
return 0; /* CR_SUCCESS */
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define CM_PROB_NOT_CONFIGURED 0x00000001
|
||||
#define CM_PROB_NOT_CONFIGURED 0x00000001
|
||||
#define CM_PROB_DEVLOADER_FAILED 0x00000002
|
||||
#define CM_PROB_OUT_OF_MEMORY 0x00000003
|
||||
#define CM_PROB_ENTRY_IS_WRONG_TYPE 0x00000004
|
||||
|
@ -62,13 +62,13 @@ extern "C" {
|
|||
#define CM_PROB_HARDWARE_DISABLED 0x0000001D
|
||||
#define CM_PROB_CANT_SHARE_IRQ 0x0000001E
|
||||
#define CM_PROB_FAILED_ADD 0x0000001F
|
||||
#define CM_PROB_DISABLED_SERVICE 0x00000020
|
||||
#define CM_PROB_TRANSLATION_FAILED 0x00000021
|
||||
#define CM_PROB_NO_SOFTCONFIG 0x00000022
|
||||
#define CM_PROB_BIOS_TABLE 0x00000023
|
||||
#define CM_PROB_IRQ_TRANSLATION_FAILED 0x00000024
|
||||
#define CM_PROB_FAILED_DRIVER_ENTRY 0x00000025
|
||||
#define CM_PROB_DRIVER_FAILED_PRIOR_UNLOAD 0x00000026
|
||||
#define CM_PROB_DISABLED_SERVICE 0x00000020
|
||||
#define CM_PROB_TRANSLATION_FAILED 0x00000021
|
||||
#define CM_PROB_NO_SOFTCONFIG 0x00000022
|
||||
#define CM_PROB_BIOS_TABLE 0x00000023
|
||||
#define CM_PROB_IRQ_TRANSLATION_FAILED 0x00000024
|
||||
#define CM_PROB_FAILED_DRIVER_ENTRY 0x00000025
|
||||
#define CM_PROB_DRIVER_FAILED_PRIOR_UNLOAD 0x00000026
|
||||
#define CM_PROB_DRIVER_FAILED_LOAD 0x00000027
|
||||
#define CM_PROB_DRIVER_SERVICE_KEY_INVALID 0x00000028
|
||||
#define CM_PROB_LEGACY_SERVICE_NO_DEVICES 0x00000029
|
||||
|
@ -79,7 +79,7 @@ extern "C" {
|
|||
#define CM_PROB_SYSTEM_SHUTDOWN 0x0000002E
|
||||
#define CM_PROB_HELD_FOR_EJECT 0x0000002F
|
||||
#define CM_PROB_DRIVER_BLOCKED 0x00000030
|
||||
#define CM_PROB_REGISTRY_TOO_LARGE 0x00000031
|
||||
#define CM_PROB_REGISTRY_TOO_LARGE 0x00000031
|
||||
|
||||
#define LCPRI_FORCECONFIG 0x00000000
|
||||
#define LCPRI_BOOTCONFIG 0x00000001
|
||||
|
@ -97,25 +97,25 @@ extern "C" {
|
|||
#define LCPRI_DISABLED 0x0000FFFF
|
||||
#define MAX_LCPRI 0x0000FFFF
|
||||
|
||||
#define DN_ROOT_ENUMERATED 0x00000001 /* Was enumerated by ROOT */
|
||||
#define DN_DRIVER_LOADED 0x00000002 /* Has Register_Device_Driver */
|
||||
#define DN_ENUM_LOADED 0x00000004 /* Has Register_Enumerator */
|
||||
#define DN_STARTED 0x00000008 /* Is currently configured */
|
||||
#define DN_MANUAL 0x00000010 /* Manually installed */
|
||||
#define DN_NEED_TO_ENUM 0x00000020 /* May need reenumeration */
|
||||
#define DN_NOT_FIRST_TIME 0x00000040 /* Has received a config */
|
||||
#define DN_HARDWARE_ENUM 0x00000080 /* Enum generates hardware ID */
|
||||
#define DN_LIAR 0x00000100 /* Lied about can reconfig once */
|
||||
#define DN_HAS_MARK 0x00000200 /* Not CM_Create_DevNode lately */
|
||||
#define DN_HAS_PROBLEM 0x00000400 /* Need device installer */
|
||||
#define DN_FILTERED 0x00000800 /* Is filtered */
|
||||
#define DN_MOVED 0x00001000 /* Has been moved */
|
||||
#define DN_DISABLEABLE 0x00002000 /* Can be rebalanced */
|
||||
#define DN_REMOVABLE 0x00004000 /* Can be removed */
|
||||
#define DN_PRIVATE_PROBLEM 0x00008000 /* Has a private problem */
|
||||
#define DN_MF_PARENT 0x00010000 /* Multi function parent */
|
||||
#define DN_MF_CHILD 0x00020000 /* Multi function child */
|
||||
#define DN_WILL_BE_REMOVED 0x00040000 /* Devnode is being removed */
|
||||
#define DN_ROOT_ENUMERATED 0x00000001 /* Was enumerated by ROOT */
|
||||
#define DN_DRIVER_LOADED 0x00000002 /* Has Register_Device_Driver */
|
||||
#define DN_ENUM_LOADED 0x00000004 /* Has Register_Enumerator */
|
||||
#define DN_STARTED 0x00000008 /* Is currently configured */
|
||||
#define DN_MANUAL 0x00000010 /* Manually installed */
|
||||
#define DN_NEED_TO_ENUM 0x00000020 /* May need reenumeration */
|
||||
#define DN_NOT_FIRST_TIME 0x00000040 /* Has received a config */
|
||||
#define DN_HARDWARE_ENUM 0x00000080 /* Enum generates hardware ID */
|
||||
#define DN_LIAR 0x00000100 /* Lied about can reconfig once */
|
||||
#define DN_HAS_MARK 0x00000200 /* Not CM_Create_DevNode lately */
|
||||
#define DN_HAS_PROBLEM 0x00000400 /* Need device installer */
|
||||
#define DN_FILTERED 0x00000800 /* Is filtered */
|
||||
#define DN_MOVED 0x00001000 /* Has been moved */
|
||||
#define DN_DISABLEABLE 0x00002000 /* Can be rebalanced */
|
||||
#define DN_REMOVABLE 0x00004000 /* Can be removed */
|
||||
#define DN_PRIVATE_PROBLEM 0x00008000 /* Has a private problem */
|
||||
#define DN_MF_PARENT 0x00010000 /* Multi function parent */
|
||||
#define DN_MF_CHILD 0x00020000 /* Multi function child */
|
||||
#define DN_WILL_BE_REMOVED 0x00040000 /* Devnode is being removed */
|
||||
|
||||
typedef enum _PNP_VETO_TYPE {
|
||||
PNP_VetoTypeUnknown,
|
||||
|
|
|
@ -41,27 +41,27 @@ extern "C" {
|
|||
|
||||
#include <pshpack1.h>
|
||||
|
||||
#define CR_SUCCESS 0x00000000
|
||||
#define CR_SUCCESS 0x00000000
|
||||
#define CR_DEFAULT 0x00000001
|
||||
#define CR_OUT_OF_MEMORY 0x00000002
|
||||
#define CR_INVALID_POINTER 0x00000003
|
||||
#define CR_INVALID_FLAG 0x00000004
|
||||
#define CR_INVALID_DEVNODE 0x00000005
|
||||
#define CR_INVALID_DEVINST CR_INVALID_DEVNODE
|
||||
#define CR_INVALID_DEVINST CR_INVALID_DEVNODE
|
||||
#define CR_INVALID_RES_DES 0x00000006
|
||||
#define CR_INVALID_LOG_CONF 0x00000007
|
||||
#define CR_INVALID_ARBITRATOR 0x00000008
|
||||
#define CR_INVALID_NODELIST 0x00000009
|
||||
#define CR_DEVNODE_HAS_REQS 0x0000000A
|
||||
#define CR_DEVINST_HAS_REQS CR_DEVNODE_HAS_REQS
|
||||
#define CR_DEVINST_HAS_REQS CR_DEVNODE_HAS_REQS
|
||||
#define CR_INVALID_RESOURCEID 0x0000000B
|
||||
#define CR_DLVXD_NOT_FOUND 0x0000000C
|
||||
#define CR_NO_SUCH_DEVNODE 0x0000000D
|
||||
#define CR_NO_SUCH_DEVINST CR_NO_SUCH_DEVNODE
|
||||
#define CR_NO_SUCH_DEVINST CR_NO_SUCH_DEVNODE
|
||||
#define CR_NO_MORE_LOG_CONF 0x0000000E
|
||||
#define CR_NO_MORE_RES_DES 0x0000000F
|
||||
#define CR_ALREADY_SUCH_DEVNODE 0x00000010
|
||||
#define CR_ALREADY_SUCH_DEVINST CR_ALREADY_SUCH_DEVNODE
|
||||
#define CR_ALREADY_SUCH_DEVINST CR_ALREADY_SUCH_DEVNODE
|
||||
#define CR_INVALID_RANGE_LIST 0x00000011
|
||||
#define CR_INVALID_RANGE 0x00000012
|
||||
#define CR_FAILURE 0x00000013
|
||||
|
@ -150,21 +150,21 @@ typedef ULONG REGDISPOSITION;
|
|||
typedef ULONG RESOURCEID;
|
||||
typedef RESOURCEID *PRESOURCEID;
|
||||
|
||||
#define CM_RESDES_WIDTH_DEFAULT 0x00000000
|
||||
#define CM_RESDES_WIDTH_32 0x00000001
|
||||
#define CM_RESDES_WIDTH_64 0x00000002
|
||||
#define CM_RESDES_WIDTH_BITS 0x00000003
|
||||
#define CM_RESDES_WIDTH_DEFAULT 0x00000000
|
||||
#define CM_RESDES_WIDTH_32 0x00000001
|
||||
#define CM_RESDES_WIDTH_64 0x00000002
|
||||
#define CM_RESDES_WIDTH_BITS 0x00000003
|
||||
|
||||
|
||||
#define MAX_CONFIG_VALUE 9999
|
||||
#define MAX_INSTANCE_VALUE 9999
|
||||
#define MAX_CONFIG_VALUE 9999
|
||||
#define MAX_INSTANCE_VALUE 9999
|
||||
|
||||
#define MAX_DEVICE_ID_LEN 200
|
||||
#define MAX_DEVNODE_ID_LEN MAX_DEVICE_ID_LEN
|
||||
#define MAX_DEVICE_ID_LEN 200
|
||||
#define MAX_DEVNODE_ID_LEN MAX_DEVICE_ID_LEN
|
||||
|
||||
#define MAX_CLASS_NAME_LEN 32
|
||||
#define MAX_GUID_STRING_LEN 39
|
||||
#define MAX_PROFILE_LEN 80
|
||||
#define MAX_CLASS_NAME_LEN 32
|
||||
#define MAX_GUID_STRING_LEN 39
|
||||
#define MAX_PROFILE_LEN 80
|
||||
|
||||
|
||||
#define ResType_All 0x00000000
|
||||
|
@ -183,7 +183,7 @@ typedef RESOURCEID *PRESOURCEID;
|
|||
#define ResType_PcCardConfig 0x00008002
|
||||
#define ResType_MfCardConfig 0x00008003
|
||||
|
||||
#define CM_GETIDLIST_FILTER_NONE 0x00000000
|
||||
#define CM_GETIDLIST_FILTER_NONE 0x00000000
|
||||
#define CM_GETIDLIST_FILTER_ENUMERATOR 0x00000001
|
||||
#define CM_GETIDLIST_FILTER_SERVICE 0x00000002
|
||||
#define CM_GETIDLIST_FILTER_EJECTRELATIONS 0x00000004
|
||||
|
@ -193,9 +193,9 @@ typedef RESOURCEID *PRESOURCEID;
|
|||
#define CM_GETIDLIST_DONOTGENERATE 0x10000040
|
||||
#define CM_GETIDLIST_FILTER_BITS 0x1000007F
|
||||
|
||||
#define CM_GET_DEVICE_INTERFACE_LIST_PRESENT 0x00000000
|
||||
#define CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES 0x00000001
|
||||
#define CM_GET_DEVICE_INTERFACE_LIST_BITS 0x00000001
|
||||
#define CM_GET_DEVICE_INTERFACE_LIST_PRESENT 0x00000000
|
||||
#define CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES 0x00000001
|
||||
#define CM_GET_DEVICE_INTERFACE_LIST_BITS 0x00000001
|
||||
|
||||
|
||||
typedef struct BusNumber_Des_s {
|
||||
|
|
Loading…
Reference in a new issue