mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 08:25:03 +00:00
Forward CM_Create_DevNode[_Ex]A/W to umpnpmgr.
svn path=/trunk/; revision=20978
This commit is contained in:
parent
833f60112b
commit
746d400729
7 changed files with 395 additions and 161 deletions
|
@ -16,163 +16,170 @@
|
|||
]
|
||||
interface pnp
|
||||
{
|
||||
/* Function 0 */
|
||||
// CONFIGRET PNP_Unknown0(handle_t BindingHandle);
|
||||
/* Function 0 */
|
||||
// CONFIGRET PNP_Unknown0(handle_t BindingHandle);
|
||||
|
||||
/* Function 1 */
|
||||
// CONFIGRET PNP_Unknown1(handle_t BindingHandle);
|
||||
/* Function 1 */
|
||||
// CONFIGRET PNP_Unknown1(handle_t BindingHandle);
|
||||
|
||||
/* Function 2 */
|
||||
CONFIGRET PNP_GetVersion(handle_t BindingHandle,
|
||||
[out] WORD *Version);
|
||||
/* 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 4 */
|
||||
CONFIGRET PNP_InitDetection(handle_t BindingHandle);
|
||||
|
||||
/* Function 5 */
|
||||
CONFIGRET PNP_ReportLogOn(handle_t BindingHandle,
|
||||
[in] BOOL Admin,
|
||||
[in] DWORD ProcessId);
|
||||
|
||||
/* 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")
|
||||
CONFIGRET PNP_GetRelatedDeviceInstance(handle_t BindingHandle,
|
||||
[in] DWORD Relationship,
|
||||
[in, string] wchar_t *DeviceId,
|
||||
[out, string, size_is(Length)] wchar_t *RelatedDeviceId,
|
||||
[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,
|
||||
[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);
|
||||
|
||||
/* 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,
|
||||
[in, out] unsigned long *DataType,
|
||||
[out, size_is(*TransferLen)] char *Buffer,
|
||||
[in, out] unsigned long *TransferLen,
|
||||
[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,
|
||||
[in] unsigned long DataType,
|
||||
[in, size_is(Length)] char *Buffer,
|
||||
[in] unsigned long Length,
|
||||
/* Function 3 */
|
||||
CONFIGRET PNP_GetGlobalState(handle_t BindingHandle,
|
||||
[out] unsigned long *State,
|
||||
[in] unsigned long Flags);
|
||||
|
||||
/* Function 15 */
|
||||
CONFIGRET PNP_GetClassInstance(handle_t BindingHandle,
|
||||
[in, string] wchar_t *DeviceId,
|
||||
[out, string, size_is(Length)] wchar_t *Buffer,
|
||||
[in] unsigned long Length);
|
||||
/* Function 4 */
|
||||
CONFIGRET PNP_InitDetection(handle_t BindingHandle);
|
||||
|
||||
/* Function 16 */
|
||||
CONFIGRET PNP_CreateKey(handle_t BindingHandle,
|
||||
[in, string] wchar_t *SubKey,
|
||||
[in] unsigned long DesiredAccess,
|
||||
[in] unsigned long Flags);
|
||||
/* Function 5 */
|
||||
CONFIGRET PNP_ReportLogOn(handle_t BindingHandle,
|
||||
[in] BOOL Admin,
|
||||
[in] DWORD ProcessId);
|
||||
|
||||
/* Function 17 */
|
||||
CONFIGRET PNP_DeleteRegistryKey(handle_t BindingHandle,
|
||||
[in, string] wchar_t *DeviceId,
|
||||
[in, string] wchar_t *ParentKey,
|
||||
[in, string] wchar_t *ChildKey,
|
||||
[in] unsigned long Flags);
|
||||
/* Function 6 */
|
||||
CONFIGRET PNP_ValidateDeviceInstance(handle_t BindingHandle,
|
||||
[in, string] wchar_t *DeviceInstance,
|
||||
[in] DWORD 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 7 */
|
||||
CONFIGRET PNP_GetRootDeviceInstance(handle_t BindingHandle,
|
||||
[out, string, size_is(Length)] wchar_t *DeviceInstance,
|
||||
[in] DWORD Length);
|
||||
|
||||
/* Function 20 */
|
||||
CONFIGRET PNP_DeleteClassKey(handle_t BindingHandle,
|
||||
/* Function 8 */
|
||||
cpp_quote("#define PNP_DEVICE_PARENT 1")
|
||||
cpp_quote("#define PNP_DEVICE_CHILD 2")
|
||||
cpp_quote("#define PNP_DEVICE_SIBLING 3")
|
||||
CONFIGRET PNP_GetRelatedDeviceInstance(handle_t BindingHandle,
|
||||
[in] DWORD Relationship,
|
||||
[in, string] wchar_t *DeviceId,
|
||||
[out, string, size_is(Length)] wchar_t *RelatedDeviceId,
|
||||
[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,
|
||||
[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);
|
||||
|
||||
/* 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,
|
||||
[in, out] unsigned long *DataType,
|
||||
[out, size_is(*TransferLen)] char *Buffer,
|
||||
[in, out] unsigned long *TransferLen,
|
||||
[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,
|
||||
[in] unsigned long DataType,
|
||||
[in, size_is(Length)] char *Buffer,
|
||||
[in] unsigned long Length,
|
||||
[in] unsigned long Flags);
|
||||
|
||||
/* Function 15 */
|
||||
CONFIGRET PNP_GetClassInstance(handle_t BindingHandle,
|
||||
[in, string] wchar_t *DeviceId,
|
||||
[out, string, size_is(Length)] wchar_t *Buffer,
|
||||
[in] unsigned long Length);
|
||||
|
||||
/* Function 16 */
|
||||
CONFIGRET PNP_CreateKey(handle_t BindingHandle,
|
||||
[in, string] wchar_t *SubKey,
|
||||
[in] unsigned long DesiredAccess,
|
||||
[in] unsigned long Flags);
|
||||
|
||||
/* Function 17 */
|
||||
CONFIGRET PNP_DeleteRegistryKey(handle_t BindingHandle,
|
||||
[in, string] wchar_t *DeviceId,
|
||||
[in, string] wchar_t *ParentKey,
|
||||
[in, string] wchar_t *ChildKey,
|
||||
[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 29 */
|
||||
CONFIGRET PNP_DeviceInstanceAction(handle_t BindingHandle,
|
||||
[in] unsigned long MajorAction,
|
||||
[in] unsigned long MinorAction,
|
||||
[in, unique, string] wchar_t *DeviceInstance1,
|
||||
[in, unique, string] wchar_t *DeviceInstance2);
|
||||
/* 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 28 */
|
||||
CONFIGRET PNP_CreateDevInst(handle_t BindingHandle,
|
||||
[in, out, string, size_is(Length)] wchar_t *DeviceId,
|
||||
[in, string] wchar_t *ParentDeviceId,
|
||||
[in] unsigned long Length,
|
||||
[in] unsigned long Flags);
|
||||
|
||||
/* Function 31 */
|
||||
CONFIGRET PNP_SetDeviceProblem(handle_t BindingHandle,
|
||||
[in, string] wchar_t *DeviceInstance,
|
||||
[in] unsigned long Problem,
|
||||
[in] DWORD Flags);
|
||||
/* Function 29 */
|
||||
CONFIGRET PNP_DeviceInstanceAction(handle_t BindingHandle,
|
||||
[in] unsigned long MajorAction,
|
||||
[in] unsigned long MinorAction,
|
||||
[in, unique, string] wchar_t *DeviceInstance1,
|
||||
[in, unique, string] wchar_t *DeviceInstance2);
|
||||
|
||||
/* Function 33 */
|
||||
CONFIGRET PNP_UninstallDevInst(handle_t BindingHandle,
|
||||
[in, string] wchar_t *DeviceInstance,
|
||||
[in] DWORD 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 38 */
|
||||
CONFIGRET PNP_IsDockStationPresent(handle_t BindingHandle,
|
||||
[out]PBOOL Present);
|
||||
/* Function 31 */
|
||||
CONFIGRET PNP_SetDeviceProblem(handle_t BindingHandle,
|
||||
[in, string] wchar_t *DeviceInstance,
|
||||
[in] unsigned long Problem,
|
||||
[in] DWORD Flags);
|
||||
|
||||
/* Function 39 */
|
||||
CONFIGRET PNP_RequestEjectPC(handle_t BindingHandle);
|
||||
/* Function 33 */
|
||||
CONFIGRET PNP_UninstallDevInst(handle_t BindingHandle,
|
||||
[in, string] wchar_t *DeviceInstance,
|
||||
[in] DWORD Flags);
|
||||
|
||||
/* Function 58 */
|
||||
CONFIGRET PNP_RunDetection(handle_t BindingHandle,
|
||||
[in] unsigned long Flags);
|
||||
/* Function 38 */
|
||||
CONFIGRET PNP_IsDockStationPresent(handle_t BindingHandle,
|
||||
[out]PBOOL Present);
|
||||
|
||||
/* Function 39 */
|
||||
CONFIGRET PNP_RequestEjectPC(handle_t BindingHandle);
|
||||
|
||||
/* Function 58 */
|
||||
CONFIGRET PNP_RunDetection(handle_t BindingHandle,
|
||||
[in] unsigned long Flags);
|
||||
}
|
||||
|
|
|
@ -163,6 +163,22 @@ DECL_WINELIB_CFGMGR32_TYPE_AW(DEVINSTID)
|
|||
#define CM_SETUP_DEVINST_RESET CM_SETUP_DEVNODE_RESET
|
||||
#define CM_SETUP_BITS 0x00000007
|
||||
|
||||
/* ulFlags for CM_Create_DevNode[_Ex]A/W */
|
||||
#define CM_CREATE_DEVNODE_NORMAL 0x00000000
|
||||
#define CM_CREATE_DEVNODE_NO_WAIT_INSTALL 0x00000001
|
||||
#define CM_CREATE_DEVNODE_PHANTOM 0x00000002
|
||||
#define CM_CREATE_DEVNODE_GENERATE_ID 0x00000004
|
||||
#define CM_CREATE_DEVNODE_DO_NOT_INSTALL 0x00000008
|
||||
#define CM_CREATE_DEVNODE_BITS 0x0000000F
|
||||
|
||||
#define CM_CREATE_DEVINST_NORMAL CM_CREATE_DEVNODE_NORMAL
|
||||
#define CM_CREATE_DEVINST_NO_WAIT_INSTALL CM_CREATE_DEVNODE_NO_WAIT_INSTALL
|
||||
#define CM_CREATE_DEVINST_PHANTOM CM_CREATE_DEVNODE_PHANTOM
|
||||
#define CM_CREATE_DEVINST_GENERATE_ID CM_CREATE_DEVNODE_GENERATE_ID
|
||||
#define CM_CREATE_DEVINST_DO_NOT_INSTALL CM_CREATE_DEVNODE_DO_NOT_INSTALL
|
||||
#define CM_CREATE_DEVINST_BITS CM_CREATE_DEVNODE_BITS
|
||||
|
||||
|
||||
#define CMP_MAGIC 0x01234567
|
||||
|
||||
|
||||
|
@ -172,6 +188,12 @@ CONFIGRET WINAPI CMP_Report_LogOn( DWORD, DWORD );
|
|||
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_Create_DevNodeA( PDEVINST, DEVINSTID_A, DEVINST, ULONG );
|
||||
CONFIGRET WINAPI CM_Create_DevNodeW( PDEVINST, DEVINSTID_W, DEVINST, ULONG );
|
||||
#define CM_Create_DevNode WINELIB_NAME_AW(CM_Create_DevNode)
|
||||
CONFIGRET WINAPI CM_Create_DevNode_ExA( PDEVINST, DEVINSTID_A, DEVINST, ULONG, HANDLE );
|
||||
CONFIGRET WINAPI CM_Create_DevNode_ExW( PDEVINST, DEVINSTID_W, DEVINST, ULONG, HANDLE );
|
||||
#define CM_Create_DevNode_Ex WINELIB_NAME_AW(CM_Create_DevNode_Ex)
|
||||
CONFIGRET WINAPI CM_Delete_Class_Key( LPGUID, ULONG );
|
||||
CONFIGRET WINAPI CM_Delete_Class_Key_Ex( LPGUID, ULONG, HANDLE );
|
||||
CONFIGRET WINAPI CM_Disable_DevNode( DEVINST, ULONG );
|
||||
|
|
|
@ -36,10 +36,10 @@ EXPORTS
|
|||
;CM_Add_Res_Des_Ex
|
||||
CM_Connect_MachineA@8=SETUPAPI.CM_Connect_MachineA
|
||||
CM_Connect_MachineW@8=SETUPAPI.CM_Connect_MachineW
|
||||
;CM_Create_DevNodeA
|
||||
;CM_Create_DevNodeW
|
||||
;CM_Create_DevNode_ExA
|
||||
;CM_Create_DevNode_ExW
|
||||
CM_Create_DevNodeA@16=SETUPAPI.CM_Create_DevNodeA
|
||||
CM_Create_DevNodeW@16=SETUPAPI.CM_Create_DevNodeW
|
||||
CM_Create_DevNode_ExA@20=SETUPAPI.CM_Create_DevNode_ExA
|
||||
CM_Create_DevNode_ExW@20=SETUPAPI.CM_Create_DevNode_ExW
|
||||
;CM_Create_Range_List
|
||||
CM_Delete_Class_Key@8=SETUPAPI.CM_Delete_Class_Key
|
||||
CM_Delete_Class_Key_Ex@12=SETUPAPI.CM_Delete_Class_Key_Ex
|
||||
|
@ -48,12 +48,12 @@ CM_Delete_Class_Key_Ex@12=SETUPAPI.CM_Delete_Class_Key_Ex
|
|||
;CM_Delete_Range
|
||||
;CM_Detect_Resource_Conflict
|
||||
;CM_Detect_Resource_Conflict_Ex
|
||||
;CM_Disable_DevNode
|
||||
;CM_Disable_DevNode_Ex
|
||||
CM_Disable_DevNode@8=SETUPAPI.CM_Disable_DevNode
|
||||
CM_Disable_DevNode_Ex@12=SETUPAPI.CM_Disable_DevNode_Ex
|
||||
CM_Disconnect_Machine@4=SETUPAPI.CM_Disconnect_Machine
|
||||
;CM_Dup_Range_List
|
||||
;CM_Enable_DevNode
|
||||
;CM_Enable_DevNode_Ex
|
||||
CM_Enable_DevNode@8=SETUPAPI.CM_Enable_DevNode
|
||||
CM_Enable_DevNode_Ex@12=SETUPAPI.CM_Enable_DevNode_Ex
|
||||
CM_Enumerate_Classes@12=SETUPAPI.CM_Enumerate_Classes
|
||||
CM_Enumerate_Classes_Ex@16=SETUPAPI.CM_Enumerate_Classes_Ex
|
||||
CM_Enumerate_EnumeratorsA@16=SETUPAPI.CM_Enumerate_EnumeratorsA
|
||||
|
@ -143,8 +143,8 @@ CM_Get_Version@0=SETUPAPI.CM_Get_Version
|
|||
CM_Get_Version_Ex@4=SETUPAPI.CM_Get_Version_Ex
|
||||
;CM_Intersect_Range_List
|
||||
;CM_Invert_Range_List
|
||||
;CM_Is_Dock_Station_Present
|
||||
;CM_Is_Dock_Station_Present_Ex
|
||||
CM_Is_Dock_Station_Present@4=SETUPAPI.CM_Is_Dock_Station_Present
|
||||
CM_Is_Dock_Station_Present_Ex@8=SETUPAPI.CM_Is_Dock_Station_Present_Ex
|
||||
CM_Locate_DevNodeA@12=SETUPAPI.CM_Locate_DevNodeA
|
||||
CM_Locate_DevNodeW@12=SETUPAPI.CM_Locate_DevNodeW
|
||||
CM_Locate_DevNode_ExA@16=SETUPAPI.CM_Locate_DevNode_ExA
|
||||
|
@ -181,11 +181,12 @@ CM_Open_Class_Key_ExW@28=SETUPAPI.CM_Open_Class_Key_ExW
|
|||
;CM_Remove_Unmarked_Children_Ex
|
||||
;CM_Request_Device_EjectA
|
||||
;CM_Request_Device_EjectW
|
||||
;CM_Request_Eject_PC
|
||||
CM_Request_Eject_PC@0=SETUPAPI.CM_Request_Eject_PC
|
||||
CM_Request_Eject_PC_Ex@4=SETUPAPI.CM_Request_Eject_PC_Ex
|
||||
;CM_Reset_Children_Marks
|
||||
;CM_Reset_Children_Marks_Ex
|
||||
;CM_Run_Detection
|
||||
;CM_Run_Detection_Ex
|
||||
CM_Run_Detection@4=SETUPAPI.CM_Run_Detection
|
||||
CM_Run_Detection_Ex@8=SETUPAPI.CM_Run_Detection_Ex
|
||||
CM_Set_DevNode_Problem@12=SETUPAPI.CM_Set_DevNode_Problem
|
||||
CM_Set_DevNode_Problem_Ex@16=SETUPAPI.CM_Set_DevNode_Problem_Ex
|
||||
CM_Set_DevNode_Registry_PropertyA@20=SETUPAPI.CM_Set_DevNode_Registry_PropertyA
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* Configuration manager functions
|
||||
*
|
||||
* Copyright 2000 James Hatheway
|
||||
* Copyright 2005 Eric Kohl
|
||||
* Copyright 2005, 2006 Eric Kohl
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -184,6 +184,125 @@ CONFIGRET WINAPI CM_Connect_MachineW(
|
|||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* CM_Create_DevNodeA [SETUPAPI.@]
|
||||
*/
|
||||
CONFIGRET WINAPI CM_Create_DevNodeA(
|
||||
PDEVINST pdnDevInst, DEVINSTID_A pDeviceID, DEVINST dnParent,
|
||||
ULONG ulFlags)
|
||||
{
|
||||
TRACE("%p %s %p %lx\n",
|
||||
pdnDevInst, debugstr_a(pDeviceID), dnParent, ulFlags);
|
||||
return CM_Create_DevNode_ExA(pdnDevInst, pDeviceID, dnParent,
|
||||
ulFlags, NULL);
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* CM_Create_DevNodeW [SETUPAPI.@]
|
||||
*/
|
||||
CONFIGRET WINAPI CM_Create_DevNodeW(
|
||||
PDEVINST pdnDevInst, DEVINSTID_W pDeviceID, DEVINST dnParent,
|
||||
ULONG ulFlags)
|
||||
{
|
||||
TRACE("%p %s %p %lx\n",
|
||||
pdnDevInst, debugstr_w(pDeviceID), dnParent, ulFlags);
|
||||
return CM_Create_DevNode_ExW(pdnDevInst, pDeviceID, dnParent,
|
||||
ulFlags, NULL);
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* CM_Create_DevNode_ExA [SETUPAPI.@]
|
||||
*/
|
||||
CONFIGRET WINAPI CM_Create_DevNode_ExA(
|
||||
PDEVINST pdnDevInst, DEVINSTID_A pDeviceID, DEVINST dnParent,
|
||||
ULONG ulFlags, HANDLE hMachine)
|
||||
{
|
||||
DEVINSTID_W pDeviceIDW;
|
||||
CONFIGRET ret;
|
||||
|
||||
TRACE("%p %s %p %lx %p\n",
|
||||
pdnDevInst, debugstr_a(pDeviceID), dnParent, ulFlags, hMachine);
|
||||
|
||||
if (CaptureAndConvertAnsiArg(pDeviceID, &pDeviceIDW))
|
||||
return CR_INVALID_DATA;
|
||||
|
||||
ret = CM_Create_DevNode_ExW(pdnDevInst, pDeviceIDW, dnParent, ulFlags,
|
||||
hMachine);
|
||||
|
||||
MyFree(pDeviceIDW);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* CM_Create_DevNode_ExW [SETUPAPI.@]
|
||||
*/
|
||||
CONFIGRET WINAPI CM_Create_DevNode_ExW(
|
||||
PDEVINST pdnDevInst, DEVINSTID_W pDeviceID, DEVINST dnParent,
|
||||
ULONG ulFlags, HANDLE hMachine)
|
||||
{
|
||||
RPC_BINDING_HANDLE BindingHandle = NULL;
|
||||
HSTRING_TABLE StringTable = NULL;
|
||||
LPWSTR lpParentDevInst;
|
||||
CONFIGRET ret = CR_SUCCESS;
|
||||
|
||||
FIXME("%p %s %p %lx %p\n",
|
||||
pdnDevInst, debugstr_w(pDeviceID), dnParent, ulFlags, hMachine);
|
||||
|
||||
if (!IsUserAdmin())
|
||||
return CR_ACCESS_DENIED;
|
||||
|
||||
if (pdnDevInst == NULL)
|
||||
return CR_INVALID_POINTER;
|
||||
|
||||
if (pDeviceID == NULL || wcslen(pDeviceID) == 0)
|
||||
return CR_INVALID_DEVICE_ID;
|
||||
|
||||
if (dnParent == 0)
|
||||
return CR_INVALID_DEVNODE;
|
||||
|
||||
if (ulFlags & ~CM_CREATE_DEVNODE_BITS)
|
||||
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;
|
||||
}
|
||||
|
||||
lpParentDevInst = StringTableStringFromId(StringTable, dnParent);
|
||||
if (lpParentDevInst == NULL)
|
||||
return CR_INVALID_DEVNODE;
|
||||
|
||||
ret = PNP_CreateDevInst(BindingHandle,
|
||||
pDeviceID,
|
||||
lpParentDevInst,
|
||||
MAX_DEVICE_ID_LEN,
|
||||
ulFlags);
|
||||
if (ret == CR_SUCCESS)
|
||||
{
|
||||
*pdnDevInst = StringTableAddString(StringTable, pDeviceID, 1);
|
||||
if (*pdnDevInst == 0)
|
||||
ret = CR_NO_SUCH_DEVNODE;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* CM_Delete_Class_Key [SETUPAPI.@]
|
||||
*/
|
||||
|
|
|
@ -20,10 +20,10 @@
|
|||
@ stub CM_Add_Res_Des_Ex
|
||||
@ stdcall CM_Connect_MachineA(str ptr)
|
||||
@ stdcall CM_Connect_MachineW(wstr ptr)
|
||||
@ stub CM_Create_DevNodeA
|
||||
@ stub CM_Create_DevNodeW
|
||||
@ stub CM_Create_DevNode_ExA
|
||||
@ stub CM_Create_DevNode_ExW
|
||||
@ stdcall CM_Create_DevNodeA(ptr str long long)
|
||||
@ stdcall CM_Create_DevNodeW(ptr wstr long long)
|
||||
@ stdcall CM_Create_DevNode_ExA(ptr str long long long)
|
||||
@ stdcall CM_Create_DevNode_ExW(ptr wstr long long long)
|
||||
@ stub CM_Create_Range_List
|
||||
@ stdcall CM_Delete_Class_Key(ptr long)
|
||||
@ stdcall CM_Delete_Class_Key_Ex(ptr long long)
|
||||
|
|
|
@ -893,6 +893,24 @@ PNP_DeleteClassKey(handle_t BindingHandle,
|
|||
}
|
||||
|
||||
|
||||
/* Function 28 */
|
||||
CONFIGRET
|
||||
PNP_CreateDevInst(handle_t BindingHandle,
|
||||
wchar_t *DeviceId, /* [in, out, string, size_is(Length)] */
|
||||
wchar_t *ParentDeviceId, /* [in, string] */
|
||||
unsigned long Length, /* [in] */
|
||||
unsigned long Flags) /* [in] */
|
||||
{
|
||||
CONFIGRET ret = CR_CALL_NOT_IMPLEMENTED;
|
||||
|
||||
DPRINT1("PNP_CreateDevInst() called\n");
|
||||
|
||||
DPRINT1("PNP_CreateDevInst() done (returns %lx)\n", ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/* Function 29 */
|
||||
CONFIGRET
|
||||
PNP_DeviceInstanceAction(handle_t BindingHandle,
|
||||
|
|
|
@ -736,8 +736,75 @@ CM_Connect_MachineW(
|
|||
#define CM_Connect_Machine CM_Connect_MachineA
|
||||
#endif /* UNICODE */
|
||||
|
||||
/* FIXME: Obsolete CM_Create_DevNode */
|
||||
/* FIXME: Obsolete CM_Create_DevNodeEx */
|
||||
/* Flags for CM_Create_DevNode[_Ex].ulFlags constants */
|
||||
#define CM_CREATE_DEVNODE_NORMAL 0x00000000
|
||||
#define CM_CREATE_DEVNODE_NO_WAIT_INSTALL 0x00000001
|
||||
#define CM_CREATE_DEVNODE_PHANTOM 0x00000002
|
||||
#define CM_CREATE_DEVNODE_GENERATE_ID 0x00000004
|
||||
#define CM_CREATE_DEVNODE_DO_NOT_INSTALL 0x00000008
|
||||
#define CM_CREATE_DEVNODE_BITS 0x0000000F
|
||||
|
||||
#define CM_CREATE_DEVINST_NORMAL CM_CREATE_DEVNODE_NORMAL
|
||||
#define CM_CREATE_DEVINST_NO_WAIT_INSTALL CM_CREATE_DEVNODE_NO_WAIT_INSTALL
|
||||
#define CM_CREATE_DEVINST_PHANTOM CM_CREATE_DEVNODE_PHANTOM
|
||||
#define CM_CREATE_DEVINST_GENERATE_ID CM_CREATE_DEVNODE_GENERATE_ID
|
||||
#define CM_CREATE_DEVINST_DO_NOT_INSTALL CM_CREATE_DEVNODE_DO_NOT_INSTALL
|
||||
#define CM_CREATE_DEVINST_BITS CM_CREATE_DEVNODE_BITS
|
||||
|
||||
CMAPI
|
||||
CONFIGRET
|
||||
WINAPI
|
||||
CM_Create_DevNodeA(
|
||||
OUT PDEVINST pdnDevInst,
|
||||
IN DEVINSTID_A pDeviceID,
|
||||
IN DEVINST dnParent,
|
||||
IN ULONG ulFlags);
|
||||
|
||||
CMAPI
|
||||
CONFIGRET
|
||||
WINAPI
|
||||
CM_Create_DevNodeW(
|
||||
OUT PDEVINST pdnDevInst,
|
||||
IN DEVINSTID_W pDeviceID,
|
||||
IN DEVINST dnParent,
|
||||
IN ULONG ulFlags);
|
||||
|
||||
CMAPI
|
||||
CONFIGRET
|
||||
WINAPI
|
||||
CM_Create_DevNode_ExA(
|
||||
OUT PDEVINST pdnDevInst,
|
||||
IN DEVINSTID_A pDeviceID,
|
||||
IN DEVINST dnParent,
|
||||
IN ULONG ulFlags,
|
||||
IN HANDLE hMachine);
|
||||
|
||||
CMAPI
|
||||
CONFIGRET
|
||||
WINAPI
|
||||
CM_Create_DevNode_ExW(
|
||||
OUT PDEVINST pdnDevInst,
|
||||
IN DEVINSTID_W pDeviceID,
|
||||
IN DEVINST dnParent,
|
||||
IN ULONG ulFlags,
|
||||
IN HANDLE hMachine);
|
||||
|
||||
#define CM_Create_DevInstW CM_Create_DevNodeW
|
||||
#define CM_Create_DevInstA CM_Create_DevNodeA
|
||||
#define CM_Create_DevInst_ExW CM_Create_DevNode_ExW
|
||||
#define CM_Create_DevInst_ExA CM_Create_DevNode_ExA
|
||||
#ifdef UNICODE
|
||||
#define CM_Create_DevNode CM_Create_DevNodeW
|
||||
#define CM_Create_DevInst CM_Create_DevNodeW
|
||||
#define CM_Create_DevNode_Ex CM_Create_DevNode_ExW
|
||||
#define CM_Create_DevInst_Ex CM_Create_DevInst_ExW
|
||||
#else
|
||||
#define CM_Create_DevNode CM_Create_DevNodeA
|
||||
#define CM_Create_DevInst CM_Create_DevNodeA
|
||||
#define CM_Create_DevNode_Ex CM_Create_DevNode_ExA
|
||||
#define CM_Create_DevInst_Ex CM_Create_DevNode_ExA
|
||||
#endif /* UNICODE */
|
||||
|
||||
/* FIXME: Obsolete CM_Create_Range_List */
|
||||
|
||||
/* Flags for CM_Delete_Class_Key.ulFlags constants */
|
||||
|
|
Loading…
Reference in a new issue