Make plug-and-play RPC interface more compatible with MS Windows

svn path=/trunk/; revision=32948
This commit is contained in:
Hervé Poussineau
2008-04-14 10:48:38 +00:00
parent 4701861bd0
commit b1d8d1dded
3 changed files with 1509 additions and 627 deletions
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -810,7 +810,7 @@ CONFIGRET WINAPI CM_Enumerate_Classes_Ex(
}
ret = PNP_EnumerateSubKeys(BindingHandle,
PNP_BRANCH_CLASS,
PNP_CLASS_SUBKEYS,
ulClassIndex,
szBuffer,
MAX_GUID_STRING_LEN,
@@ -933,7 +933,7 @@ CONFIGRET WINAPI CM_Enumerate_Enumerators_ExW(
}
return PNP_EnumerateSubKeys(BindingHandle,
PNP_BRANCH_ENUM,
PNP_ENUMERATOR_SUBKEYS,
ulEnumIndex,
Buffer,
*pulLength,
@@ -1042,7 +1042,7 @@ CONFIGRET WINAPI CM_Get_Child_Ex(
RPC_BINDING_HANDLE BindingHandle = NULL;
HSTRING_TABLE StringTable = NULL;
LPWSTR lpDevInst;
DWORD dwIndex;
DWORD dwIndex, dwLength = MAX_DEVICE_ID_LEN;
CONFIGRET ret;
TRACE("%p %lx %lx %lx\n", pdnDevInst, dnDevInst, ulFlags, hMachine);
@@ -1079,10 +1079,10 @@ CONFIGRET WINAPI CM_Get_Child_Ex(
return CR_INVALID_DEVNODE;
ret = PNP_GetRelatedDeviceInstance(BindingHandle,
PNP_DEVICE_CHILD,
PNP_GET_CHILD_DEVICE_INSTANCE,
lpDevInst,
szRelatedDevInst,
MAX_DEVICE_ID_LEN,
&dwLength,
0);
if (ret != CR_SUCCESS)
return ret;
@@ -2181,8 +2181,8 @@ CONFIGRET WINAPI CM_Get_HW_Prof_Flags_ExW(
return CR_FAILURE;
}
return PNP_HwProfFlags(BindingHandle, PNP_GET_HW_PROFILE_FLAGS, szDevInstName,
ulHardwareProfile, pulValue, 0);
return PNP_HwProfFlags(BindingHandle, PNP_GET_HWPROFFLAGS, szDevInstName,
ulHardwareProfile, pulValue, NULL, NULL, 0, 0);
}
@@ -2356,7 +2356,7 @@ CONFIGRET WINAPI CM_Get_Parent_Ex(
RPC_BINDING_HANDLE BindingHandle = NULL;
HSTRING_TABLE StringTable = NULL;
LPWSTR lpDevInst;
DWORD dwIndex;
DWORD dwIndex, dwLength = MAX_DEVICE_ID_LEN;
CONFIGRET ret;
TRACE("%p %lx %lx %lx\n", pdnDevInst, dnDevInst, ulFlags, hMachine);
@@ -2393,10 +2393,10 @@ CONFIGRET WINAPI CM_Get_Parent_Ex(
return CR_INVALID_DEVNODE;
ret = PNP_GetRelatedDeviceInstance(BindingHandle,
PNP_DEVICE_PARENT,
PNP_GET_PARENT_DEVICE_INSTANCE,
lpDevInst,
szRelatedDevInst,
MAX_DEVICE_ID_LEN,
&dwLength,
0);
if (ret != CR_SUCCESS)
return ret;
@@ -2434,7 +2434,7 @@ CONFIGRET WINAPI CM_Get_Sibling_Ex(
RPC_BINDING_HANDLE BindingHandle = NULL;
HSTRING_TABLE StringTable = NULL;
LPWSTR lpDevInst;
DWORD dwIndex;
DWORD dwIndex, dwLength = MAX_DEVICE_ID_LEN;
CONFIGRET ret;
TRACE("%p %lx %lx %lx\n", pdnDevInst, dnDevInst, ulFlags, hMachine);
@@ -2471,10 +2471,10 @@ CONFIGRET WINAPI CM_Get_Sibling_Ex(
return CR_INVALID_DEVNODE;
ret = PNP_GetRelatedDeviceInstance(BindingHandle,
PNP_DEVICE_SIBLING,
PNP_GET_SIBLING_DEVICE_INSTANCE,
lpDevInst,
szRelatedDevInst,
MAX_DEVICE_ID_LEN,
&dwLength,
0);
if (ret != CR_SUCCESS)
return ret;
@@ -3407,7 +3407,7 @@ CONFIGRET WINAPI CM_Set_DevNode_Registry_Property_ExW(
lpDevInst,
ulProperty,
ulType,
(char *)Buffer,
(BYTE *)Buffer,
ulLength,
ulFlags);
}
@@ -3502,8 +3502,8 @@ CONFIGRET WINAPI CM_Set_HW_Prof_Flags_ExW(
return CR_FAILURE;
}
return PNP_HwProfFlags(BindingHandle, PNP_SET_HW_PROFILE_FLAGS, szDevInstName,
ulConfig, &ulValue, 0);
return PNP_HwProfFlags(BindingHandle, PNP_SET_HWPROFFLAGS, szDevInstName,
ulConfig, &ulValue, NULL, NULL, 0, 0);
}
+721 -151
View File
@@ -4,7 +4,243 @@
#include "include/reactos/idl/wtypes.idl"
#define CONFIGRET unsigned long
const unsigned long PNP_MAX_STRING_LEN = 32767;
const unsigned long PNP_MAX_DEVICE_ID_LEN = 200;
const unsigned long PNP_MAX_GUID_STRING_LEN = 39;
const unsigned long PNP_MAX_DEVINTERFACE_LEN = PNP_MAX_STRING_LEN;
const unsigned long PNP_MAX_CULTURE_NAME_LEN = 85;
const unsigned long PNP_MAX_CM_PATH = 360;
const unsigned long PNP_MAX_PROP_SIZE = 65534;
const unsigned long PNP_MAX_PROP_COUNT = 32767;
const unsigned long PNP_MAX_BUFFER_SIZE = 16000000;
typedef unsigned long RESOURCEID;
typedef unsigned long DEVPROPTYPE;
typedef [range(0, PNP_MAX_PROP_SIZE)] unsigned long PNP_PROP_SIZE, *PPNP_PROP_SIZE;
typedef [range(0, PNP_MAX_PROP_COUNT)] unsigned long PNP_PROP_COUNT, *PPNP_PROP_COUNT;
typedef [range(0, PNP_MAX_STRING_LEN)] unsigned long PNP_RPC_STRING_LEN, *PPNP_RPC_STRING_LEN;
typedef [range(0, PNP_MAX_BUFFER_SIZE)] unsigned long PNP_RPC_BUFFER_SIZE, *PPNP_RPC_BUFFER_SIZE;
cpp_quote("#ifndef _CFG_INCLUDED_")
typedef enum _PNP_VETO_TYPE {
PNP_VetoTypeUnknown = 0,
PNP_VetoLegacyDevice = 1,
PNP_VetoPendingClose = 2,
PNP_VetoWindowsApp = 3,
PNP_VetoWindowsService = 4,
PNP_VetoOutstandingOpen = 5,
PNP_VetoDevice = 6,
PNP_VetoDriver = 7,
PNP_VetoIllegalDeviceRequest = 8,
PNP_VetoInsufficientPower = 9,
PNP_VetoNonDisableable = 10,
PNP_VetoLegacyDriver = 11,
PNP_VetoInsufficientRights = 12,
} *PPNP_VETO_TYPE;
cpp_quote("#endif")
cpp_quote("#if 0")
typedef struct _BUSNUMBER_DES {
DWORD BUSD_Count;
DWORD BUSD_Type;
DWORD BUSD_Flags;
DWORD BUSD_Alloc_Base;
DWORD BUSD_Alloc_End;
} BUSNUMBER_DES, *PBUSNUMBER_DES;
typedef struct _BUSNUMBER_RANGE {
DWORD BUSR_Min;
DWORD BUSR_Max;
DWORD BUSR_nBusNumbers;
DWORD BUSR_Flags;
} BUSNUMBER_RANGE, *PBUSNUMBER_RANGE;
typedef struct _BUSNUMBER_RESOURCE {
BUSNUMBER_DES BusNumber_Header;
BUSNUMBER_RANGE BusNumber_Data[1];
} BUSNUMBER_RESOURCE, *PBUSNUMBER_RESOURCE;
typedef struct _CS_DES {
DWORD CSD_SignatureLength;
DWORD CSD_LegacyDataOffset;
DWORD CSD_LegacyDataSize;
DWORD CSD_Flags;
GUID CSD_ClassGuid;
BYTE CSD_Signature[1];
} CS_DES, *PCS_DES;
typedef struct _CS_RESOURCE {
CS_DES CS_Header;
} CS_RESOURCE, *PCS_RESOURCE;
typedef struct _DEVPRIVATE_DES {
DWORD PD_Count;
DWORD PD_Type;
DWORD PD_Data1;
DWORD PD_Data2;
DWORD PD_Data3;
DWORD PD_Flags;
} DEVPRIVATE_DES, *PDEVPRIVATE_DES;
typedef struct _DEVPRIVATE_RANGE {
DWORD PR_Data1;
DWORD PR_Data2;
DWORD PR_Data3;
} DEVPRIVATE_RANGE, *PDEVPRIVATE_RANGE;
typedef struct _DEVPRIVATE_RESOURCE {
DEVPRIVATE_DES PRV_Header;
DEVPRIVATE_RANGE PRV_Data[1];
} DEVPRIVATE_RESOURCE, *PDEVPRIVATE_RESOURCE;
typedef struct _DMA_DES {
DWORD DD_Count;
DWORD DD_Type;
DWORD DD_Flags;
unsigned long DD_Alloc_Chan;
} DMA_DES, *PDMA_DES;
typedef struct _DMA_RANGE {
DWORD DR_Min;
DWORD DR_Max;
DWORD DR_Flags;
} DMA_RANGE, *PDMA_RANGE;
typedef struct _DMA_RESOURCE {
DMA_DES DMA_Header;
DMA_RANGE DMA_Data[1];
} DMA_RESOURCE, *PDMA_RESOURCE;
typedef struct _IO_DES {
DWORD IOD_Count;
DWORD IOD_Type;
unsigned __int64 IOD_AllocBase;
unsigned __int64 IOD_AllocEnd;
DWORD IOD_DesFlags;
} IO_DES, *PIO_DES;
typedef struct _IO_RANGE {
unsigned __int64 IOR_Align;
DWORD IOR_nPorts;
unsigned __int64 IOR_Min;
unsigned __int64 IOR_Max;
DWORD IOR_RangeFlags;
unsigned __int64 IOR_Alias;
} IO_RANGE, *PIO_RANGE;
typedef struct _IO_RESOURCE {
IO_DES IO_Header;
IO_RANGE IO_Data[1];
} IO_RESOURCE, *PIO_RESOURCE;
typedef struct _IRQ_DES {
DWORD IRQD_Count;
DWORD IRQD_Type;
DWORD IRQD_Flags;
DWORD IRQD_Alloc_Num;
DWORD IRQD_Affinity;
} IRQ_DES, *PIRQ_DES;
typedef struct _IRQ_RANGE {
DWORD IRQR_Min;
DWORD IRQR_Max;
DWORD IRQR_Flags;
} IRQ_RANGE, *PIRQ_RANGE;
typedef struct _IRQ_RESOURCE {
IRQ_DES IO_Header;
IRQ_RANGE IO_Data[1];
} IRQ_RESOURCE, *PIRQ_RESOURCE;
typedef struct _MEM_DES {
DWORD MD_Count;
DWORD MD_Type;
unsigned __int64 MD_Alloc_Base;
unsigned __int64 MD_Alloc_End;
DWORD MD_Flags;
DWORD Reserved;
} MEM_DES, *PMEM_DES;
typedef struct _MEM_RANGE {
__int64 MR_Align;
DWORD MR_nBytes;
__int64 MR_Min;
__int64 MR_Max;
DWORD MR_Flags;
DWORD MR_Reserved;
} MEM_RANGE, *PMEM_RANGE;
typedef struct _MEM_RESOURCE {
MEM_DES MEM_Header;
MEM_RANGE MEM_Data[1];
} MEM_RESOURCE, *PMEM_RESOURCE;
typedef struct _MFCARD_DES {
DWORD PMF_Count;
DWORD PMF_Type;
DWORD PMF_Flags;
BYTE PMF_ConfigOptions;
BYTE PMF_IoResourceIndex;
BYTE PMF_Reserved[2];
DWORD PMF_ConfigRegisterBase;
} MFCARD_DES, *PMFCARD_DES;
typedef struct _MFCARD_RESOURCE {
MFCARD_DES MfCard_Header;
} MFCARD_RESOURCE, *PMFCARD_RESOURCE;
typedef struct _PCCARD_DES {
DWORD PCD_Count;
DWORD PCD_Type;
DWORD PCD_Flags;
BYTE PCD_ConfigIndex;
BYTE PCD_Reserved[3];
DWORD PCD_MemoryCardBase1;
DWORD PCD_MemoryCardBase2;
} PCCARD_DES, *PPCCARD_DES;
typedef struct _PCCARD_RESOURCE {
PCCARD_DES PcCard_Header;
} PCCARD_RESOURCE, *PPCARD_RESOURCE;
cpp_quote("#endif")
typedef struct _PNP_CONFLICT_ENTRY {
DWORD DeviceInstance;
DWORD DeviceFlags;
DWORD ResourceType;
__int64 ResourceStart;
__int64 ResourceEnd;
DWORD ResourceFlags;
} PNP_CONFLICT_ENTRY, *PPNP_CONFLICT_ENTRY;
typedef struct _PNP_CONFLICT_LIST {
DWORD Reserved1;
DWORD Reserved2;
DWORD ConflictsCounted;
DWORD ConflictsListed;
DWORD RequiredBufferSize;
PNP_CONFLICT_ENTRY ConflictEntry[1];
} PNP_CONFLICT_LIST, *PPNP_CONFLICT_LIST;
typedef struct _PNP_CONFLICT_STRINGS {
DWORD NullDeviceInstance;
WCHAR DeviceInstanceStrings[1];
} PNP_CONFLICT_STRINGS, *PPNP_CONFLICT_STRINGS;
typedef struct _DEVPROPKEY {
GUID fmtid;
DWORD pid;
} DEVPROPKEY;
typedef struct _HWPROFILEINFO {
DWORD HWPI_ulHWProfile;
WCHAR HWPI_szFriendlyName[80];
DWORD HWPI_dwFlags;
} HWPROFILEINFO;
[
uuid (809F4e40-A03D-11CE-8F69-08003E30051B),
@@ -17,222 +253,556 @@
interface pnp
{
/* Function 0 */
// CONFIGRET PNP_Unknown0(handle_t BindingHandle);
DWORD PNP_Function0(
[in] handle_t hBinding); /* FIXME */
/* Function 1 */
// CONFIGRET PNP_Unknown1(handle_t BindingHandle);
DWORD PNP_Function1(
[in] handle_t hBinding); /* FIXME */
/* Function 2 */
CONFIGRET PNP_GetVersion(handle_t BindingHandle,
[out] WORD *Version);
DWORD PNP_GetVersion(
[in] handle_t hBinding,
[out] WORD *pVersion);
/* Function 3 */
CONFIGRET PNP_GetGlobalState(handle_t BindingHandle,
[out] unsigned long *State,
[in] unsigned long Flags);
DWORD PNP_GetGlobalState(
[in] handle_t hBinding,
[out] DWORD *pulState,
[in] DWORD ulFlags);
/* Function 4 */
CONFIGRET PNP_InitDetection(handle_t BindingHandle);
DWORD PNP_InitDetection(
[in] handle_t hBinding);
/* Function 5 */
CONFIGRET PNP_ReportLogOn(handle_t BindingHandle,
[in] BOOL Admin,
[in] DWORD ProcessId);
DWORD PNP_ReportLogOn(
[in] handle_t hBinding,
[in] BOOL Admin,
[in] DWORD ProcessId);
/* Function 6 */
CONFIGRET PNP_ValidateDeviceInstance(handle_t BindingHandle,
[in, string] wchar_t *DeviceInstance,
[in] DWORD Flags);
DWORD PNP_ValidateDeviceInstance(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceID,
[in] DWORD ulFlags);
/* Function 7 */
CONFIGRET PNP_GetRootDeviceInstance(handle_t BindingHandle,
[out, string, size_is(Length)] wchar_t *DeviceInstance,
[in] DWORD Length);
DWORD PNP_GetRootDeviceInstance(
[in] handle_t hBinding,
[out, string, size_is(ulLength)] LPWSTR pDeviceID,
[in] PNP_RPC_STRING_LEN ulLength);
/* 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);
cpp_quote("#define PNP_GET_PARENT_DEVICE_INSTANCE 0x1");
cpp_quote("#define PNP_GET_CHILD_DEVICE_INSTANCE 0x2");
cpp_quote("#define PNP_GET_SIBLING_DEVICE_INSTANCE 0x3");
DWORD PNP_GetRelatedDeviceInstance(
[in] handle_t hBinding,
[in] DWORD ulRelationship,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceID,
[out, string, size_is(*pulLength)] LPWSTR pRelatedDeviceId,
[in, out] PNP_RPC_STRING_LEN *pulLength,
[in] DWORD ulFlags);
/* Function 9 */
cpp_quote("#define PNP_BRANCH_ENUM 1")
cpp_quote("#define PNP_BRANCH_CLASS 2")
CONFIGRET PNP_EnumerateSubKeys(handle_t BindingHandle,
[in] DWORD Branch,
[in] DWORD Index,
[out, string, size_is(Length)] wchar_t *Buffer,
[in] DWORD Length,
[out] DWORD *RequiredLength,
[in] DWORD Flags);
cpp_quote("#define PNP_ENUMERATOR_SUBKEYS 0x1");
cpp_quote("#define PNP_CLASS_SUBKEYS 0x2");
DWORD PNP_EnumerateSubKeys(
[in] handle_t hBinding,
[in] DWORD ulBranch,
[in] DWORD ulIndex,
[out, string, size_is(ulLength)] LPWSTR Buffer,
[in] PNP_RPC_STRING_LEN ulLength,
[out] PNP_RPC_STRING_LEN *pulRequiredLen,
[in] DWORD ulFlags);
/* 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);
DWORD PNP_GetDeviceList(
[in] handle_t hBinding,
[in, string, unique, range(0, PNP_MAX_STRING_LEN)] LPWSTR pszFilter,
[out, size_is(*pulLength), length_is(*pulLength)] LPWSTR Buffer,
[in, out] PNP_RPC_STRING_LEN *pulLength,
[in] DWORD ulFlags);
/* Function 11 */
CONFIGRET PNP_GetDeviceListSize(handle_t BindingHandle,
[in, unique, string] wchar_t *Filter,
[out] unsigned long *Length,
[in] DWORD Flags);
DWORD PNP_GetDeviceListSize(
[in] handle_t hBinding,
[in, string, unique, range(0, PNP_MAX_STRING_LEN)] LPWSTR pszFilter,
[out] PNP_RPC_BUFFER_SIZE *pulLen,
[in] DWORD ulFlags);
/* Function 12 */
CONFIGRET PNP_GetDepth(handle_t BindingHandle,
[in, string] wchar_t *DeviceInstance,
[out] unsigned long *Depth,
[in] DWORD Flags);
DWORD PNP_GetDepth(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pszDeviceID,
[out] DWORD *pulDepth,
[in] DWORD ulFlags);
/* Function 13 */
CONFIGRET PNP_GetDeviceRegProp(handle_t BindingHandle,
[in, string] wchar_t *DeviceInstance,
[in] DWORD Property,
[in, out] DWORD *DataType,
[out, size_is(*TransferLen)] char *Buffer,
[in, out] DWORD *TransferLen,
[in, out] DWORD *Length,
[in] DWORD Flags);
DWORD PNP_GetDeviceRegProp(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceID,
[in] DWORD ulProperty,
[in, out] DWORD *pulRegDataType,
[out, size_is(*pulTransferLen), length_is(*pulTransferLen)] BYTE *Buffer,
[in, out] PNP_PROP_SIZE *pulTransferLen,
[in, out] PNP_PROP_SIZE *pulLength,
[in] DWORD ulFlags);
/* 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);
DWORD PNP_SetDeviceRegProp(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceId,
[in] DWORD ulProperty,
[in] DWORD ulDataType,
[in, size_is(ulLength)] BYTE *Buffer,
[in] PNP_PROP_SIZE ulLength,
[in] DWORD ulFlags);
/* 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);
DWORD PNP_GetClassInstance(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceId,
[out, string, size_is(ulLength)] LPWSTR pszClassInstance,
[in] PNP_RPC_STRING_LEN ulLength);
/* Function 16 */
CONFIGRET PNP_CreateKey(handle_t BindingHandle,
[in, string] wchar_t *SubKey,
[in] unsigned long DesiredAccess,
[in] unsigned long Flags);
DWORD PNP_CreateKey(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_CM_PATH)] LPWSTR pszSubKey,
[in] DWORD samDesired,
[in] DWORD ulFlags);
/* 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);
DWORD PNP_DeleteRegistryKey(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pszDeviceID,
[in, string, ref, range(0, PNP_MAX_CM_PATH)] LPWSTR pszParentKey,
[in, string, ref, range(0, PNP_MAX_CM_PATH)] LPWSTR pszChildKey,
[in] DWORD ulFlags);
/* Function 18 */
DWORD PNP_GetClassCount(
[in] handle_t hBinding,
[out] DWORD *pulClassCount,
[in] DWORD ulFlags);
/* 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);
DWORD PNP_GetClassName(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_GUID_STRING_LEN)] LPWSTR pszClassGuid,
[out, string, size_is(*pulLength)] LPWSTR Buffer,
[in, out] PNP_RPC_STRING_LEN *pulLength,
[in] DWORD ulFlags);
/* Function 20 */
CONFIGRET PNP_DeleteClassKey(handle_t BindingHandle,
[in, string] wchar_t *ClassGuid,
[in] unsigned long Flags);
DWORD PNP_DeleteClassKey(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_GUID_STRING_LEN)] LPWSTR pszClassGuid,
[in] DWORD ulFlags);
/* Function 21 */
DWORD PNP_GetInterfaceDeviceAlias(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVINTERFACE_LEN)] LPWSTR pszInterfaceDevice,
[in] GUID *AliasInterfaceGuid,
[out, string, size_is(*pulTransferLen)] LPWSTR pszAliasInterfaceDevice,
[in, out] PNP_RPC_STRING_LEN *pulLength,
[in, out] PNP_RPC_STRING_LEN *pulTransferLen,
[in] DWORD ulFlags);
/* Function 22 */
DWORD PNP_GetInterfaceDeviceList(
[in] handle_t hBinding,
[in] GUID *InterfaceGuid,
[in, string, unique, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pszDeviceID,
[out, size_is(*pulLength), length_is(*pulLength)] BYTE *Buffer,
[in, out] PNP_RPC_BUFFER_SIZE *pulLength,
[in] DWORD ulFlags);
/* Function 23 */
DWORD PNP_GetInterfaceDeviceListSize(
[in] handle_t hBinding,
[out] PNP_RPC_BUFFER_SIZE *pulLen,
[in] GUID *InterfaceGuid,
[in, string, unique, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pszDeviceID,
[in] DWORD ulFlags);
/* Function 24 */
DWORD PNP_RegisterDeviceClassAssociation(
[in] handle_t hBinding,
[in, string, unique, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pszDeviceID,
[in] GUID *InterfaceGuid,
[in, string, unique, range(0, PNP_MAX_STRING_LEN)] LPWSTR pszReference,
[out, string, size_is(*pulTransferLen)] LPWSTR pszSymLink,
[in, out] PNP_RPC_STRING_LEN *pulLength,
[in, out] PNP_RPC_STRING_LEN *pulTransferLen,
[in] DWORD ulFlags);
/* Function 25 */
DWORD PNP_UnregisterDeviceClassAssociation(
[in] handle_t hBinding,
[in, string, unique, range(0, PNP_MAX_DEVINTERFACE_LEN)] LPWSTR pszInterfaceDevice,
[in] DWORD ulFlags);
/* Function 26 */
DWORD PNP_GetClassRegProp(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_GUID_STRING_LEN)] LPWSTR pszClassGuid,
[in] DWORD ulProperty,
[in, out] DWORD *pulRegDataType,
[out, size_is(*pulTransferLen), length_is(*pulTransferLen)] BYTE *Buffer,
[in, out] PNP_RPC_STRING_LEN *pulTransferLen,
[in, out] PNP_RPC_STRING_LEN *pulLength,
[in] DWORD ulFlags);
/* Function 27 */
DWORD PNP_SetClassRegProp(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_GUID_STRING_LEN)] LPWSTR *pszClassGuid,
[in] DWORD ulProperty,
[in] DWORD ulDataType,
[in, size_is(ulLength)] BYTE *Buffer,
[in] PNP_PROP_SIZE ulLength,
[in] DWORD ulFlags);
/* 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);
DWORD PNP_CreateDevInst(
[in] handle_t hBinding,
[in, out, string, size_is(ulLength)] LPWSTR pszDeviceID,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pszParentDeviceID,
[in] PNP_RPC_STRING_LEN ulLength,
[in] DWORD ulFlags);
/* 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);
DWORD PNP_DeviceInstanceAction(
[in] handle_t hBinding,
[in] DWORD ulMajorAction,
[in] DWORD ulMinorAction,
[in, string, unique, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pszDeviceInstance1,
[in, string, unique, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pszDeviceInstance2);
/* Function 30 */
CONFIGRET PNP_GetDeviceStatus(handle_t BindingHandle,
[in, string] wchar_t *DeviceInstance,
[out] unsigned long *Status,
[out] unsigned long *Problem,
[in] DWORD Flags);
DWORD PNP_GetDeviceStatus(
[in] handle_t hBinding,
[in, string, unique, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceID,
[out] DWORD *pulStatus,
[out] DWORD *pulProblem,
[in] DWORD ulFlags);
/* Function 31 */
CONFIGRET PNP_SetDeviceProblem(handle_t BindingHandle,
[in, string] wchar_t *DeviceInstance,
[in] unsigned long Problem,
[in] DWORD Flags);
DWORD PNP_SetDeviceProblem(
[in] handle_t hBinding,
[in, string, unique, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceID,
[in] DWORD ulProblem,
[in] DWORD ulFlags);
/* Function 32 */
DWORD PNP_DisableDevInst(
[in] handle_t hBinding,
[in, string, unique, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceID,
[in, out, unique] PPNP_VETO_TYPE pVetoType,
[in, out, string, unique, size_is(ulNameLength), range(0, PNP_MAX_STRING_LEN)] LPWSTR pszVetoName,
/* FIXME: should be [in, out, string, unique, max_is(ulNameLength), range(0, PNP_MAX_STRING_LEN)] LPWSTR pszVetoName, */
[in] DWORD ulNameLength,
[in] DWORD ulFlags);
/* Function 33 */
CONFIGRET PNP_UninstallDevInst(handle_t BindingHandle,
[in, string] wchar_t *DeviceInstance,
[in] DWORD Flags);
DWORD PNP_UninstallDevInst(
[in] handle_t hBinding,
[in, string, unique, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceID,
[in] DWORD ulFlags);
/* Function 34 */
CONFIGRET PNP_AddID(handle_t BindingHandle,
[in, string, unique] wchar_t *DeviceInstance,
[in, string] wchar_t *DeviceId,
[in] DWORD Flags);
DWORD PNP_AddID(
[in] handle_t hBinding,
[in, string, unique, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pszDeviceID,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pszID,
[in] DWORD ulFlags);
/* Function 35 */
DWORD PNP_RegisterDriver(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pszDeviceID,
[in] DWORD ulFlags);
/* Function 36 */
DWORD PNP_QueryRemove(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pszDeviceID,
[in, out, unique] PPNP_VETO_TYPE pVetoType,
[in, out, string, unique, size_is(ulNameLength), range(0, PNP_MAX_STRING_LEN)] LPWSTR pszVetoName,
/* FIXME: should be [in, out, string, unique, max_is(ulNameLength), range(0, PNP_MAX_STRING_LEN)] LPWSTR pszVetoName, */
[in] DWORD ulNameLength,
[in] DWORD ulFlags);
/* Function 37 */
DWORD PNP_RequestDeviceEject(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pszDeviceID,
[in, out, unique] PPNP_VETO_TYPE pVetoType,
[in, out, string, unique, size_is(ulNameLength), range(0, PNP_MAX_STRING_LEN)] LPWSTR pszVetoName,
/* FIXME: should be [in, out, string, unique, max_is(ulNameLength), range(0, PNP_MAX_STRING_LEN)] LPWSTR pszVetoName, */
[in] DWORD ulNameLength,
[in] DWORD ulFlags);
/* Function 38 */
CONFIGRET PNP_IsDockStationPresent(handle_t BindingHandle,
[out]PBOOL Present);
DWORD PNP_IsDockStationPresent(
[in] handle_t hBinding,
[in, out, unique] BOOL *Present);
/* Function 39 */
CONFIGRET PNP_RequestEjectPC(handle_t BindingHandle);
DWORD PNP_RequestEjectPC(
[in] handle_t hBinding);
/* Function 40 */
cpp_quote("#define PNP_SET_HW_PROFILE_FLAGS 0")
cpp_quote("#define PNP_GET_HW_PROFILE_FLAGS 1")
CONFIGRET PNP_HwProfFlags(handle_t BindingHandle,
[in] DWORD Action,
[in, string] wchar_t *DeviceId,
[in] DWORD ProfileId,
[in, out] DWORD *Value,
[in] DWORD Flags);
cpp_quote("#define PNP_GET_HWPROFFLAGS 0x1");
cpp_quote("#define PNP_SET_HWPROFFLAGS 0x2");
DWORD PNP_HwProfFlags(
[in] handle_t hBinding,
[in] DWORD ulAction,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceID,
[in] DWORD ulConfig,
[in, out] DWORD *pulValue,
[in, out, unique] PPNP_VETO_TYPE pVetoType,
[in, out, string, unique, size_is(ulNameLength), range(0, PNP_MAX_STRING_LEN)] LPWSTR pszVetoName,
/* FIXME: should be [in, out, string, unique, max_is(ulNameLength), range(0, PNP_MAX_STRING_LEN)] LPWSTR pszVetoName, */
[in] DWORD ulNameLength,
[in] DWORD ulFlags);
/* Function 41 */
DWORD PNP_GetHwProfInfo(
[in] handle_t hBinding,
[in] DWORD ulIndex,
[in, out, ref] HWPROFILEINFO *pHWProfileInfo,
[in, range(0, 168)] DWORD ulProfileInfoSize,
/* FIXME: should be [in, range(0, sizeof(HWPROFILEINFO))] DWORD ulProfileInfoSize, */
[in] DWORD ulFlags);
/* Function 42 */
CONFIGRET PNP_AddEmptyLogConf(handle_t BindingHandle,
[in, string] wchar_t *DeviceInstance,
[in] ULONG ulPriority,
[out] ULONG *pulLogConfTag,
[in] ULONG ulFlags);
DWORD PNP_AddEmptyLogConf(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceID,
[in] DWORD ulPriority,
[out] DWORD *pulLogConfTag,
[in] DWORD ulFlags);
/* Function 43 */
CONFIGRET PNP_FreeLogConf(handle_t BindingHandle,
[in, string] wchar_t *DeviceInstance,
[in] ULONG ulType,
[in] ULONG ulLogConfTag,
[in] ULONG ulFlags);
DWORD PNP_FreeLogConf(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceID,
[in] DWORD ulLogConfType,
[in] DWORD ulLogConfTag,
[in] DWORD ulFlags);
/* Function 44 */
CONFIGRET PNP_GetFirstLogConf(handle_t BindingHandle,
[in, string] wchar_t *DeviceInstance,
[in] ULONG ulPriority,
[out] ULONG *pulLogConfTag,
[in] ULONG ulFlags);
DWORD PNP_GetFirstLogConf(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceID,
[in] DWORD ulLogConfType,
[out] DWORD *pulLogConfTag,
[in] DWORD ulFlags);
/* Function 45 */
CONFIGRET PNP_GetNextLogConf(handle_t BindingHandle,
[in, string] wchar_t *DeviceInstance,
[in] ULONG ulLogConfType,
[in] ULONG ulCurrentTag,
[out] ULONG *pulNextTag,
[in] ULONG ulFlags);
DWORD PNP_GetNextLogConf(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceID,
[in] DWORD ulLogConfType,
[in] DWORD ulCurrentTag,
[out] DWORD *pulNextTag,
[in] DWORD ulFlags);
/* Function 46 */
CONFIGRET PNP_GetLogConfPriority(handle_t BindingHandle,
[in, string] wchar_t *DeviceInstance,
[in] ULONG ulLogConfType,
[in] ULONG ulCurrentTag,
[out] ULONG *pPriority,
[in] ULONG ulFlags);
DWORD PNP_GetLogConfPriority(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceID,
[in] DWORD ulType,
[in] DWORD ulTag,
[out] DWORD *pPriority,
[in] DWORD ulFlags);
/* Function 47 */
DWORD PNP_AddResDes(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceID,
[in] DWORD ulLogConfTag,
[in] DWORD ulLogConfType,
[in] RESOURCEID ResourceID,
[out] DWORD *pulResourceTag,
[in, size_is(ResourceLen)] BYTE *ResourceData,
[in] PNP_RPC_BUFFER_SIZE ResourceLen,
[in] DWORD ulFlags);
/* Function 48 */
DWORD PNP_FreeResDes(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceID,
[in] DWORD ulLogConfTag,
[in] DWORD ulLogConfType,
[in] RESOURCEID ResourceID,
[in] DWORD ulResourceTag,
[out] DWORD *pulPreviousResType,
[out] DWORD *pulPreviousResTag,
[in] DWORD ulFlags);
/* Function 49 */
DWORD PNP_GetNextResDes(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceID,
[in] DWORD ulLogConfTag,
[in] DWORD ulLogConfType,
[in] RESOURCEID ResourceID,
[in] DWORD ulResourceTag,
[out] DWORD *pulNextResType,
[out] DWORD *pulNextResTag,
[in] DWORD ulFlags);
/* Function 50 */
DWORD PNP_GetResDesData(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceID,
[in] DWORD ulLogConfTag,
[in] DWORD ulLogConfType,
[in] RESOURCEID ResourceID,
[in] DWORD ulResourceTag,
[out, size_is(BufferLen)] BYTE *Buffer,
[in] PNP_RPC_BUFFER_SIZE BufferLen,
[in] DWORD ulFlags);
/* Function 51 */
DWORD PNP_GetResDesDataSize(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceID,
[in] DWORD ulLogConfTag,
[in] DWORD ulLogConfType,
[in] RESOURCEID ResourceID,
[in] DWORD ulResourceTag,
[out] DWORD *pulSize,
[in] DWORD ulFlags);
/* Function 52 */
DWORD PNP_ModifyResDes(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceID,
[in] DWORD ulLogConfTag,
[in] DWORD ulLogConfType,
[in] RESOURCEID CurrentResourceID,
[in] RESOURCEID NewResourceID,
[in] DWORD ulResourceTag,
[in, size_is(ResourceLen)] BYTE *ResourceData,
[in] PNP_RPC_BUFFER_SIZE ResourceLen,
[in] DWORD ulFlags);
/* Function 53 */
DWORD PNP_DetectResourceConflict(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceID,
[in] RESOURCEID ResourceID,
[in, size_is(ResourceLen)] BYTE *ResourceData,
[in] PNP_RPC_BUFFER_SIZE ResourceLen,
[out] BOOL *pbConflictDetected,
[in] DWORD ulFlags);
/* Function 54 */
DWORD PNP_QueryResConfList(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceID,
[in] RESOURCEID ResourceID,
[in, size_is(ResourceLen)] BYTE *ResourceData,
[in] PNP_RPC_BUFFER_SIZE ResourceLen,
[out, size_is(BufferLen)] BYTE *Buffer,
[in] PNP_RPC_BUFFER_SIZE BufferLen,
[in] DWORD ulFlags);
/* Function 55 */
DWORD PNP_Function55(
[in] handle_t hBinding);
/* Function 56 */
DWORD PNP_Function56(
[in] handle_t hBinding);
/* Function 57 */
DWORD PNP_Function57(
[in] handle_t hBinding);
/* Function 58 */
CONFIGRET PNP_RunDetection(handle_t BindingHandle,
[in] unsigned long Flags);
DWORD PNP_RunDetection(
[in] handle_t hBinding,
[in] DWORD ulFlags);
/* Function 59 */
DWORD PNP_Function59(
[in] handle_t hBinding);
/* Function 60 */
DWORD PNP_Function60(
[in] handle_t hBinding);
/* Function 61 */
DWORD PNP_GetCustomDevProp(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_DEVICE_ID_LEN)] LPWSTR pDeviceID,
[in, string, ref, range(0, PNP_MAX_STRING_LEN)] LPWSTR CustomPropName,
[out] DWORD *pulRegDataType,
[out, size_is(*pulLength), length_is(*pulTransferLen)] BYTE *Buffer,
[out] PNP_RPC_STRING_LEN *pulTransferLen,
[in, out] PNP_RPC_STRING_LEN *pulLength,
[in] DWORD ulFlags);
/* Function 62 */
DWORD PNP_GetVersionInternal(
[in] handle_t hBinding,
[in, out] WORD *pwVersion);
/* Function 63 */
DWORD PNP_GetBlockedDriverInfo(
[in] handle_t hBinding,
[out, size_is(*pulLength), length_is(*pulTransferLen)] BYTE *Buffer,
[out] PNP_RPC_BUFFER_SIZE *pulTransferLen,
[in, out] PNP_RPC_BUFFER_SIZE *pulLength,
[in] DWORD ulFlags);
/* Function 64 */
DWORD PNP_GetServerSideDeviceInstallFlags(
[in] handle_t hBinding,
[out] DWORD *pulSSDIFlags,
[in] DWORD ulFlags);
/* Function 65 */
DWORD PNP_GetObjectPropKeys(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_STRING_LEN)] LPWSTR ObjectName,
[in] DWORD ObjectType,
[in, string, unique, range(0, PNP_MAX_CULTURE_NAME_LEN)] LPWSTR PropertyCultureName,
[in, out] PNP_PROP_COUNT *PropertyCount,
[out] PNP_PROP_COUNT *TransferLen,
[out, size_is(*PropertyCount), length_is(*TransferLen)] DEVPROPKEY *PropertyKeys,
[in] DWORD Flags);
/* Function 66 */
DWORD PNP_GetObjectProp(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_STRING_LEN)] LPWSTR ObjectName,
[in] DWORD ObjectType,
[in, string, unique, range(0, PNP_MAX_CULTURE_NAME_LEN)] LPWSTR PropertyCultureName,
[in] const DEVPROPKEY *PropertyKey,
[out] DEVPROPTYPE *PropertyType,
[in, out] PNP_PROP_SIZE *PropertySize,
[out] PNP_PROP_SIZE *TransferLen,
[out, size_is(*PropertySize), length_is(*TransferLen)] BYTE *PropertyBuffer,
[in] DWORD Flags);
/* Function 67 */
DWORD PNP_SetObjectProp(
[in] handle_t hBinding,
[in, string, ref, range(0, PNP_MAX_STRING_LEN)] LPWSTR ObjectName,
[in] DWORD ObjectType,
[in, string, unique, range(0, PNP_MAX_CULTURE_NAME_LEN)] LPWSTR PropertyCultureName,
[in] const DEVPROPKEY *PropertyKey,
[in] DEVPROPTYPE PropertyType,
[in] PNP_PROP_SIZE PropertySize,
[in, unique, size_is(PropertySize)] BYTE *PropertyBuffer,
[in] DWORD Flags);
}