/*++

Copyright (c) 1990  Microsoft Corporation

Module Name:

    w3svc.idl

Abstract:

    Contains the W3 (w3svc Remote) RPC interface specification for the
    APIs associated with the W3 Daemon service.
    Also contains the RPC specific data structures for these API.

Author:

    Dan Hinsley (DanHi)  23-Mar-1993

Environment:

    User Mode - Win32 - MIDL

Revision History:

--*/

//
// Interface Attributes
//

[
    uuid(53E75790-D96B-11CD-BA18-08002B2DFEAD),
    version(2.0),
#ifdef __midl
	ms_union,
#endif // __midl
    pointer_default(unique)
]


//
// Interface Keyword
//

interface w3svc


//
// Interface Body
//

{

import   "infoimp.idl";
#include <lmcons.h>

//
// ---------------------------------------------------------------//
//


typedef [handle] LPWSTR W3_IMPERSONATE_HANDLE;

typedef [handle] LPWSTR W3_IDENTIFY_HANDLE;


//
// W3 Daemon APIs
//

NET_API_STATUS
NET_API_FUNCTION
W3rGetAdminInformation(
    [in, string, unique] W3_IMPERSONATE_HANDLE      pszServer,
    [out]                LPW3_CONFIG_INFO *         ppConfig
    );

NET_API_STATUS
NET_API_FUNCTION
W3rSetAdminInformation(
    [in, string, unique] W3_IMPERSONATE_HANDLE      pszServer,
    [in]                 LPW3_CONFIG_INFO           pConfig
    );

typedef struct _W3_USER_ENUM_STRUCT {
    DWORD   EntriesRead;
    [size_is(EntriesRead)] LPW3_USER_INFO Buffer;
} W3_USER_ENUM_STRUCT, *LPW3_USER_ENUM_STRUCT;

NET_API_STATUS
NET_API_FUNCTION
W3rEnumerateUsers(
    [in, string, unique]     W3_IMPERSONATE_HANDLE pszServer,
    [out]                    LPW3_USER_ENUM_STRUCT Buffer );

NET_API_STATUS
NET_API_FUNCTION
W3rDisconnectUser(
    [in,string,unique]       W3_IMPERSONATE_HANDLE  pszServer,
    [in]                     DWORD idUser );

typedef [switch_type(unsigned long)] union _STATISTICS_INFO
{
    [case(0)]
        LPW3_STATISTICS_0 W3Stats0;
    [default]
        ;
} STATISTICS_INFO, * LPSTATISTICS_INFO;

NET_API_STATUS
NET_API_FUNCTION
W3rQueryStatistics(
    [in, string, unique]     W3_IMPERSONATE_HANDLE pszServer,
    [in]                     DWORD                  Level,
    [out, switch_is(Level)]  LPSTATISTICS_INFO      StatsInfo );

NET_API_STATUS
NET_API_FUNCTION
W3rClearStatistics(
    [in, string, unique]     W3_IMPERSONATE_HANDLE pszServer );

}