/*++ Copyright (c) 1990 Microsoft Corporation Module Name: info.idl Abstract: Contains the Internet Information Services admin RPC spec. APIs associated with the common TCPSvcs dll. Also contains the RPC specific data structures for these API. Author: Madan Appiah (Madana) 10-Oct-1995 Environment: User Mode - Win32 - MIDL Revision History: MuraliK 12-Oct-1995 -- Tailored naming to suit conventions (Inet) MingLu 21-Nov-1999 -- Added APIs for optimized W3 performance counters --*/ // // Interface Attributes // [ uuid(82ad4280-036b-11cf-972c-00aa006887b0), version(2.0), #ifdef __midl ms_union, #endif // __midl pointer_default(unique) ] // // Interface Keyword // interface inetinfo // // Interface Body // { import "imports.idl"; #include // // ---------------------------------------------------------------// // typedef [handle] LPWSTR INET_INFO_IMPERSONATE_HANDLE; typedef [handle] LPWSTR INET_INFO_IDENTIFY_HANDLE; // // Common TCP Services APIs // typedef struct _INET_INFO_CAPABILITIES_STRUCT { DWORD CapVersion; // Version number of this structure DWORD ProductType; // Product type DWORD MajorVersion; // Major version number DWORD MinorVersion; // Minor Version number DWORD BuildNumber; // Build number DWORD NumCapFlags; // Number of capabilities structures [size_is(NumCapFlags)] LPINET_INFO_CAP_FLAGS CapFlags; } INET_INFO_CAPABILITIES_STRUCT, * LPINET_INFO_CAPABILITIES_STRUCT; NET_API_STATUS NET_API_FUNCTION R_InetInfoGetVersion( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwReserved, [out] DWORD *pdwVersion ); NET_API_STATUS NET_API_FUNCTION R_InetInfoGetAdminInformation( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwServerMask, [out] LPINET_INFO_CONFIG_INFO *ppConfig ); NET_API_STATUS NET_API_FUNCTION R_InetInfoGetSites( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwServerMask, [out] LPINET_INFO_SITE_LIST * ppSites ); NET_API_STATUS NET_API_FUNCTION R_InetInfoSetAdminInformation( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwServerMask, [in, ref] INET_INFO_CONFIG_INFO *pConfig ); NET_API_STATUS NET_API_FUNCTION R_InetInfoGetGlobalAdminInformation( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwServerMask, [out] LPINET_INFO_GLOBAL_CONFIG_INFO *ppConfig ); NET_API_STATUS NET_API_FUNCTION R_InetInfoSetGlobalAdminInformation( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwServerMask, [in, ref] INET_INFO_GLOBAL_CONFIG_INFO * pConfig ); typedef [switch_type(unsigned long)] union _INET_INFO_STATISTICS_INFO { [case(0)] LPINET_INFO_STATISTICS_0 InetStats0; [default] ; } INET_INFO_STATISTICS_INFO, *LPINET_INFO_STATISTICS_INFO; NET_API_STATUS NET_API_FUNCTION R_InetInfoQueryStatistics( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD Level, [in] DWORD dwServerMask, [out, switch_is(Level)] LPINET_INFO_STATISTICS_INFO StatsInfo ); NET_API_STATUS NET_API_FUNCTION R_InetInfoClearStatistics( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwServerMask ); NET_API_STATUS NET_API_FUNCTION R_InetInfoFlushMemoryCache( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwServerMask ); NET_API_STATUS NET_API_FUNCTION R_InetInfoGetServerCapabilities( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwReserved, [out] LPINET_INFO_CAPABILITIES_STRUCT *ppCap ); // // IIS 4.0 // typedef [switch_type(unsigned long)] union _W3_STATISTICS_UNION { [case(0)] LPW3_STATISTICS_1 StatInfo1; [default] ; } W3_STATISTICS_STRUCT, *LPW3_STATISTICS_STRUCT; NET_API_STATUS NET_API_FUNCTION R_W3QueryStatistics2( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwLevel, [in] DWORD dwInstance, [in] DWORD dwReserved, [out,switch_is(dwLevel)] LPW3_STATISTICS_STRUCT InfoStruct ); NET_API_STATUS NET_API_FUNCTION R_W3ClearStatistics2( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwInstance ); typedef [switch_type(unsigned long)] union _FTP_STATISTICS_UNION { [case(0)] LPFTP_STATISTICS_0 StatInfo0; [default] ; } FTP_STATISTICS_STRUCT, *LPFTP_STATISTICS_STRUCT; NET_API_STATUS NET_API_FUNCTION R_FtpQueryStatistics2( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwLevel, [in] DWORD dwInstance, [in] DWORD dwReserved, [out,switch_is(dwLevel)] LPFTP_STATISTICS_STRUCT InfoStruct ); NET_API_STATUS NET_API_FUNCTION R_FtpClearStatistics2( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwInstance ); // // User info // typedef struct _IIS_USER_INFO_1_CONTAINER { DWORD EntriesRead; [size_is(EntriesRead)] LPIIS_USER_INFO_1 Buffer; } IIS_USER_INFO_1_CONTAINER, *LPIIS_USER_INFO_1_CONTAINER; typedef struct _IIS_USER_ENUM_STRUCT { DWORD Level; [switch_is(Level)] union _USER_ENUM_UNION { [case(1)] LPIIS_USER_INFO_1_CONTAINER Level1; [default] ; } ConfigInfo; } IIS_USER_ENUM_STRUCT, *LPIIS_USER_ENUM_STRUCT; NET_API_STATUS NET_API_FUNCTION R_IISEnumerateUsers( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwServiceId, [in] DWORD dwInstance, [in,out] LPIIS_USER_ENUM_STRUCT InfoStruct ); NET_API_STATUS NET_API_FUNCTION R_IISDisconnectUser( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwServiceId, [in] DWORD dwInstance, [in] DWORD dwIdUser ); NET_API_STATUS NET_API_FUNCTION R_InitW3CounterStructure( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [out, ref] LPDWORD lpcbTotalRequired ); NET_API_STATUS NET_API_FUNCTION R_CollectW3PerfData( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in, string] LPWSTR lpValueName, [in, out, size_is(*lpcbTotalBytes)] LPBYTE lppData, [in, out, ref] LPDWORD lpcbTotalBytes, [out, ref] LPDWORD lpNumObjectTypes ); #if 0 // only used for K2 Alpha typedef [switch_type(unsigned long)] union _INSTANCE_INFO_UNION { [case(1)] LPIIS_INSTANCE_INFO_1 ConfigInfo1; [case(2)] LPIIS_INSTANCE_INFO_2 ConfigInfo2; [default] ; } INSTANCE_INFO_STRUCT, *LPINSTANCE_INFO_STRUCT; // // User info // typedef struct _IIS_USER_INFO_1_CONTAINER { DWORD EntriesRead; [size_is(EntriesRead)] LPIIS_USER_INFO_1 Buffer; } IIS_USER_INFO_1_CONTAINER, *LPIIS_USER_INFO_1_CONTAINER; typedef struct _IIS_USER_ENUM_STRUCT { DWORD Level; [switch_is(Level)] union _USER_ENUM_UNION { [case(1)] LPIIS_USER_INFO_1_CONTAINER Level1; [default] ; } ConfigInfo; } IIS_USER_ENUM_STRUCT, *LPIIS_USER_ENUM_STRUCT; // // // Common APIs // NET_API_STATUS NET_API_FUNCTION R_IISGetAdminInformation( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwLevel, [in] DWORD dwServiceId, [in] DWORD dwInstance, [out,switch_is(dwLevel)] LPINSTANCE_INFO_STRUCT InfoStruct ); NET_API_STATUS NET_API_FUNCTION R_IISSetAdminInformation( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwLevel, [in] DWORD dwServiceId, [in] DWORD dwInstance, [in, switch_is(dwLevel)] LPINSTANCE_INFO_STRUCT InfoStruct ); NET_API_STATUS NET_API_FUNCTION R_IISEnumerateUsers( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwServiceId, [in] DWORD dwInstance, [in,out] LPIIS_USER_ENUM_STRUCT InfoStruct ); NET_API_STATUS NET_API_FUNCTION R_IISDisconnectUser( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwServiceId, [in] DWORD dwInstance, [in] DWORD dwIdUser ); // // W3 // typedef [switch_type(unsigned long)] union _W3_CONFIG_INFO_UNION { [case(1)] LPW3_CONFIG_INFO_1 ConfigInfo1; [default] ; } W3_CONFIG_INFO_STRUCT, *LPW3_CONFIG_INFO_STRUCT; NET_API_STATUS NET_API_FUNCTION R_W3GetAdminInformation2( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwLevel, [in] DWORD dwInstance, [out,switch_is(dwLevel)] LPW3_CONFIG_INFO_STRUCT InfoStruct ); NET_API_STATUS NET_API_FUNCTION R_W3SetAdminInformation2( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwLevel, [in] DWORD dwInstance, [in, switch_is(dwLevel)] LPW3_CONFIG_INFO_STRUCT InfoStruct ); // // FTP // typedef [switch_type(unsigned long)] union _FTP_CONFIG_INFO_UNION { [case(1)] LPFTP_CONFIG_INFO_1 ConfigInfo1; [default] ; } FTP_CONFIG_INFO_STRUCT, *LPFTP_CONFIG_INFO_STRUCT; NET_API_STATUS NET_API_FUNCTION R_FtpGetAdminInformation2( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwLevel, [in] DWORD dwInstance, [out,switch_is(dwLevel)] LPFTP_CONFIG_INFO_STRUCT InfoStruct ); NET_API_STATUS NET_API_FUNCTION R_FtpSetAdminInformation2( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwLevel, [in] DWORD dwInstance, [in, switch_is(dwLevel)] LPFTP_CONFIG_INFO_STRUCT InfoStruct ); // // Gopher // typedef [switch_type(unsigned long)] union _GOPHERD_CONFIG_INFO_UNION { [case(1)] LPGOPHERD_CONFIG_INFO_1 ConfigInfo1; [default] ; } GOPHERD_CONFIG_INFO_STRUCT, *LPGOPHERD_CONFIG_INFO_STRUCT; typedef [switch_type(unsigned long)] union _GOPHERD_STATISTICS_UNION { [case(0)] LPGOPHERD_STATISTICS_0 StatInfo0; [default] ; } GOPHERD_STATISTICS_STRUCT, *LPGOPHERD_STATISTICS_STRUCT; NET_API_STATUS NET_API_FUNCTION R_GdGetAdminInformation2( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwLevel, [in] DWORD dwInstance, [out,switch_is(dwLevel)] LPGOPHERD_CONFIG_INFO_STRUCT InfoStruct ); NET_API_STATUS NET_API_FUNCTION R_GdSetAdminInformation2( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwLevel, [in] DWORD dwInstance, [in, switch_is(dwLevel)] LPGOPHERD_CONFIG_INFO_STRUCT InfoStruct ); NET_API_STATUS NET_API_FUNCTION R_GdQueryStatistics2( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwLevel, [in] DWORD dwInstance, [in] DWORD dwReserved, [out,switch_is(dwLevel)] LPGOPHERD_STATISTICS_STRUCT InfoStruct ); NET_API_STATUS NET_API_FUNCTION R_GdClearStatistics2( [in, string, unique] INET_INFO_IMPERSONATE_HANDLE pszServer, [in] DWORD dwInstance ); #endif //0 }