/*++ Copyright (c) 1995 Microsoft Corporation Module Name: PNP.IDL Abstract: Contains the PnPr APIs which are used to remote the plug-and-play APIs to the local or remote server via RPC. Also contains the RPC specific data structures for these API. Author: Paula Tomlinson (paulat) 06-June-1995 Environment: User-mode - Win32 - MIDL Revision History: 06-June-1995 PaulaT created --*/ // // Interface Attributes // [ uuid(8D9F4E40-A03D-11CE-8F69-08003E30051B), version(0.0), #ifdef __midl ms_union, #endif // __midl pointer_default(unique) ] // // Interface Keyword // interface pnp // // Interface Body // { import "imports.idl"; // import all the include files // // PnP Generic Handle used to bind from client to server. // typedef [handle,unique] LPWSTR PNP_HANDLE; // // Function Prototypes (UNICODE only, PNP is unicode internally) // // // NOTE: // The names of the functions are short so that when RPC // prepends the interface name to the names, they are still // unique. // // // NOTE: Whenever [out,string] is used for an attribute, that means the // client and server are assuming valid (predefined) sizes of buffers // in order to more efficiently copy the data between address spaces // (this is generally only used for internal buffers, not user buffers) // these two routines are place holders -------------- CONFIGRET PNP_Connect( [in,string,unique] PNP_HANDLE UNCServerName ); CONFIGRET PNP_Disconnect( [in,string,unique] PNP_HANDLE UNCServerName ); // these two routines are place holders ------------- // // rmisc.c // CONFIGRET PNP_GetVersion( [in] handle_t hBinding, [out] WORD *pVersion ); CONFIGRET PNP_GetGlobalState( [in] handle_t hBinding, [out] PULONG pulState, [in] ULONG ulFlags ); CONFIGRET PNP_InitDetection( [in] handle_t hBinding ); CONFIGRET PNP_ReportLogOn( [in] handle_t hBinding, [in] BOOL bAdmin ); // // rtraver.c // CONFIGRET PNP_ValidateDeviceInstance( [in] handle_t hBinding, [in,string,ref] LPWSTR pDeviceID, [in] ULONG ulFlags ); CONFIGRET PNP_GetRootDeviceInstance( [in] handle_t hBinding, [out,string,size_is(ulLength)] LPWSTR pDeviceID, [in] ULONG ulLength ); CONFIGRET PNP_GetRelatedDeviceInstance( [in] handle_t hBinding, [in] ULONG ulRelationship, [in,string,ref] LPWSTR pDeviceID, [out,string,size_is(*pulLength)] LPWSTR pRelatedDeviceID, [in,out] PULONG pulLength, [in] ULONG ulFlags ); CONFIGRET PNP_EnumerateSubKeys( [in] handle_t hBinding, [in] ULONG ulBranch, [in] ULONG ulIndex, [out,string,size_is(ulLength)] PWSTR Buffer, [in] ULONG ulLength, [out] PULONG pulRequiredLen, [in] ULONG ulFlags ); CONFIGRET PNP_GetDeviceList( [in] handle_t hBinding, [in,string,unique] LPCWSTR pszFilter, [out,size_is(*pulLength),length_is(*pulLength)] LPWSTR Buffer, [in,out] PULONG pulLength, [in] ULONG ulFlags ); CONFIGRET PNP_GetDeviceListSize( [in] handle_t hBinding, [in,string,unique] LPCWSTR pszFilter, [out] PULONG pulLen, [in] ULONG ulFlags ); CONFIGRET PNP_GetDepth( [in] handle_t hBinding, [in,string,ref] LPCWSTR pszDeviceID, [out] PULONG pulDepth, [in] ULONG ulFlags ); // // rregprop.c // CONFIGRET PNP_GetDeviceRegProp( [in] handle_t hBinding, [in,string,ref] LPCWSTR pDeviceID, [in] ULONG ulProperty, [in,out] PULONG pulRegDataType, [out,size_is(*pulTransferLen),length_is(*pulTransferLen)] LPBYTE Buffer, [in,out] PULONG pulTransferLen, [in,out] PULONG pulLength, [in] ULONG ulFlags ); CONFIGRET PNP_SetDeviceRegProp( [in] handle_t hBinding, [in,string,ref] LPCWSTR pDeviceID, [in] ULONG ulProperty, [in] ULONG ulDataType, [in,size_is(ulLength)] LPBYTE Buffer, [in] ULONG ulLength, [in] ULONG ulFlags ); CONFIGRET PNP_GetClassInstance( [in] handle_t hBinding, [in,string,ref] LPCWSTR pDeviceID, [out,string,size_is(ulLength)] LPWSTR pszClassInstance, [in] ULONG ulLength ); CONFIGRET PNP_CreateKey( [in] handle_t hBinding, [in,string,ref] LPCWSTR pszSubKey, [in] REGSAM samDesired, [in] ULONG ulFlags ); CONFIGRET PNP_DeleteRegistryKey( [in] handle_t hBinding, [in,string,ref] LPCWSTR pszDeviceID, [in,string,ref] LPCWSTR pszParentKey, [in,string,ref] LPCWSTR pszChildKey, [in] ULONG ulFlags ); CONFIGRET PNP_GetClassCount( [in] handle_t hBinding, [out] PULONG pulClassCount, [in] ULONG ulFlags ); CONFIGRET PNP_GetClassName( [in] handle_t hBinding, [in,string,ref] PCWSTR pszClassGuid, [out,string,size_is(*pulLength)] PWSTR Buffer, [in,out] PULONG pulLength, [in] ULONG ulFlags ); CONFIGRET PNP_DeleteClassKey( [in] handle_t hBinding, [in,string,ref] PCWSTR pszClassGuid, [in] ULONG ulFlags ); // // rdevnode.c // CONFIGRET PNP_CreateDevInst( [in] handle_t hBinding, [in,out,string,size_is(ulLength)] LPWSTR pszDeviceID, [in,string,ref] LPWSTR pszParentDeviceID, [in] ULONG ulLength, [in] ULONG ulFlags ); CONFIGRET PNP_DeviceInstanceAction( [in] handle_t hBinding, [in] ULONG ulMajorAction, [in] ULONG ulMinorAction, [in,string,unique] PCWSTR pszDeviceInstance1, [in,string,unique] PCWSTR pszDeviceInstance2 ); CONFIGRET PNP_GetDeviceStatus( [in] handle_t hBinding, [in,string,unique] LPCWSTR pDeviceID, [out] PULONG pulStatus, [out] PULONG pulProblem, [in] ULONG ulFlags ); CONFIGRET PNP_UninstallDevInst( [in] handle_t hBinding, [in,string,unique] LPCWSTR pDeviceID, [in] ULONG ulFlags ); CONFIGRET PNP_AddID( [in] handle_t hBinding, [in,string,unique] LPCWSTR pszDeviceID, [in,string,ref] LPCWSTR pszID, [in] ULONG ulFlags ); // // rhwprof.c // CONFIGRET PNP_HwProfFlags( [in] handle_t hBinding, [in] ULONG ulAction, [in,string,ref] LPCWSTR pDeviceID, [in] ULONG ulConfig, [in,out] PULONG pulValue, [in] ULONG ulFlags ); CONFIGRET PNP_GetHwProfInfo( [in] handle_t hBinding, [in] ULONG ulIndex, [in,out,ref] HWPROFILEINFO *pHWProfileInfo, [in] ULONG ulProfileInfoSize, [in] ULONG ulFlags ); // // rlogconf.c // CONFIGRET PNP_AddEmptyLogConf( [in] handle_t hBinding, [in,string,ref] LPWSTR pDeviceID, [in] ULONG ulPriority, [out] PULONG pulLogConfTag, [in] ULONG ulFlags ); CONFIGRET PNP_FreeLogConf( [in] handle_t hBinding, [in,string,ref] LPWSTR pDeviceID, [in] ULONG ulLogConfType, [in] ULONG ulLogConfTag, [in] ULONG ulFlags ); CONFIGRET PNP_GetFirstLogConf( [in] handle_t hBinding, [in,string,ref] LPWSTR pDeviceID, [in] ULONG ulLogConfType, [out] PULONG pulLogConfTag, [in] ULONG ulFlags ); CONFIGRET PNP_GetNextLogConf( [in] handle_t hBinding, [in,string,ref] LPWSTR pDeviceID, [in] ULONG ulLogConfType, [in] ULONG ulCurrentTag, [out] PULONG pulNextTag, [in] ULONG ulFlags ); // // rresdes.c // CONFIGRET PNP_AddResDes( [in] handle_t hBinding, [in,string,ref] LPWSTR pDeviceID, [in] ULONG ulLogConfTag, [in] ULONG ulLogConfType, [in] RESOURCEID ResourceID, [out] PULONG pulResourceTag, [in,size_is(ResourceLen)] LPBYTE ResourceData, [in] ULONG ResourceLen, [in] ULONG ulFlags ); CONFIGRET PNP_FreeResDes( [in] handle_t hBinding, [in,string,ref] LPWSTR pDeviceID, [in] ULONG ulLogConfTag, [in] ULONG ulLogConfType, [in] RESOURCEID ResourceID, [in] ULONG ulResourceTag, [out] PULONG pulPreviousResType, [out] PULONG pulPreviousResTag, [in] ULONG ulFlags ); CONFIGRET PNP_GetNextResDes( [in] handle_t hBinding, [in,string,ref] LPWSTR pDeviceID, [in] ULONG ulLogConfTag, [in] ULONG ulLogConfType, [in] RESOURCEID ResourceID, [in] ULONG ulResourceTag, [out] PULONG pulNextResDesTag, [out] PULONG pulNextResDesType, [in] ULONG ulFlags ); CONFIGRET PNP_GetResDesData( [in] handle_t hBinding, [in,string,ref] LPWSTR pDeviceID, [in] ULONG ulLogConfTag, [in] ULONG ulLogConfType, [in] RESOURCEID ResourceID, [in] ULONG ulResourceTag, [out,size_is(BufferLen)] LPBYTE Buffer, [in] ULONG BufferLen, [in] ULONG ulFlags ); CONFIGRET PNP_GetResDesDataSize( [in] handle_t hBinding, [in,string,ref] LPWSTR pDeviceID, [in] ULONG ulLogConfTag, [in] ULONG ulLogConfType, [in] RESOURCEID ResourceID, [in] ULONG ulResourceTag, [out] PULONG pulSize, [in] ULONG ulFlags ); CONFIGRET PNP_ModifyResDes( [in] handle_t hBinding, [in,string,ref] LPWSTR pDeviceID, [in] ULONG ulLogConfTag, [in] ULONG ulLogConfType, [in] RESOURCEID CurrentResourceID, [in] RESOURCEID NewResourceID, [in] ULONG ulResourceTag, [in,size_is(ResourceLen)] LPBYTE ResourceData, [in] ULONG ResourceLen, [in] ULONG ulFlags ); CONFIGRET PNP_DetectResourceConflict( [in] handle_t hBinding, [in,string,ref] LPWSTR pDeviceID, [in] RESOURCEID ResourceID, [in,size_is(ResourceLen)] LPBYTE ResourceData, [in] ULONG ResourceLen, [out] PBOOL pbConflictDetected, [in] ULONG ulFlags ); //--------------------------------------------------------- // misc unimplemented stubs //--------------------------------------------------------- CONFIGRET PNP_SetHwProf( [in] handle_t hBinding, [in] ULONG ulHardwareProfile, [in] ULONG ulFlags ); CONFIGRET PNP_QueryArbitratorFreeData( [in] handle_t hBinding, [out,size_is(ulDataLen)] LPBYTE pData, [in] ULONG ulDataLen, [in,string,ref] LPCWSTR pszDeviceID, [in] RESOURCEID ResourceID, [in] ULONG ulFlags ); CONFIGRET PNP_QueryArbitratorFreeSize( [in] handle_t hBinding, [out] PULONG pulSize, [in,string,ref] LPCWSTR pszDeviceID, [in] RESOURCEID ResourceID, [in] ULONG ulFlags ); CONFIGRET PNP_RunDetection( [in] handle_t hBinding, [in] ULONG ulFlags ); // [out, string, size_is( MAX_PATH)] WCHAR * ChildDeviceInstance // [out,length_is(*pulLength),size_is(*pulLength)] LPWSTR RelatedDeviceInstance, // [out,string] WCHAR *ChildDeviceInstance // [out,length_is(*OutputStringLength),size_is(512)] WCHAR *OutputString, // [in,out] PDWORD OutputStringLength, }