summaryrefslogblamecommitdiffstats
path: root/private/net/svcdlls/dfs/netdfs.idl
blob: 9e14baf5f28e279da92f1c682e1404fbbdf12790 (plain) (tree)












































































































































































                                                                             
/*++

Copyright (c) 1996  Microsoft Corporation

Module Name:

    NETDFS.IDL

Abstract:

    Contains the Netr (Net Remote) RPC interface specification for the
    API associated with the Dfs Manager Service.  This includes the following
    APIs:

        NetDfsEnum

    Also contains the RPC specific data structures for these API.

Author:

    Milan Shah    (milans)  08-Jan-1996

Environment:

    User Mode - Win32 - MIDL

Revision History:

    08-Jan-1996         Milans Created.

--*/


//
// Interface Attributes
//

[
    uuid(4fc742e0-4a10-11cf-8273-00aa004ae673),
    version(3.0),
#ifdef __midl
        ms_union,
#endif // __midl
    pointer_default(unique)
]


interface netdfs

{

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

//
// Data structures used by the public Dfs interface
//

typedef struct _DFS_INFO_1_CONTAINER {
        DWORD   EntriesRead;
        [size_is(EntriesRead)] LPDFS_INFO_1 Buffer;
} DFS_INFO_1_CONTAINER, *LPDFS_INFO_1_CONTAINER;

typedef struct _DFS_INFO_2_CONTAINER {
        DWORD   EntriesRead;
        [size_is(EntriesRead)] LPDFS_INFO_2 Buffer;
} DFS_INFO_2_CONTAINER, *LPDFS_INFO_2_CONTAINER;

typedef struct _DFS_INFO_3_CONTAINER {
        DWORD   EntriesRead;
        [size_is(EntriesRead)] LPDFS_INFO_3 Buffer;
} DFS_INFO_3_CONTAINER, *LPDFS_INFO_3_CONTAINER;

typedef struct _DFS_INFO_ENUM_STRUCT {
        DWORD   Level;
        [switch_is(Level)] union {
            [case(1)]
                LPDFS_INFO_1_CONTAINER DfsInfo1Container;
            [case(2)]
                LPDFS_INFO_2_CONTAINER DfsInfo2Container;
            [case(3)]
                LPDFS_INFO_3_CONTAINER DfsInfo3Container;
        } DfsInfoContainer;
} DFS_INFO_ENUM_STRUCT, *LPDFS_INFO_ENUM_STRUCT;

typedef [switch_type(unsigned long)] union _DFS_INFO_STRUCT {
        [case(1)]
                LPDFS_INFO_1    DfsInfo1;
        [case(2)]
                LPDFS_INFO_2    DfsInfo2;
        [case(3)]
                LPDFS_INFO_3    DfsInfo3;
        [case(100)]
                LPDFS_INFO_100  DfsInfo100;
        [case(101)]
                LPDFS_INFO_101  DfsInfo101;
        [default]
                ;
} DFS_INFO_STRUCT, *LPDFS_INFO_STRUCT;

//
// Data structures are used by the private Dfs Manager interface
//

typedef struct _DFSM_ENTRY_ID {
        GUID idSubordinate;
        [string, unique] LPWSTR wszSubordinate;
} DFSM_ENTRY_ID, *LPDFSM_ENTRY_ID;

typedef struct _DFSM_RELATION_INFO {
        DWORD   cSubordinates;
        [size_is(cSubordinates)] DFSM_ENTRY_ID eid[];
} DFSM_RELATION_INFO, *LPDFSM_RELATION_INFO;

//
// The public Dfs interface methods
//

DWORD NetrDfsManagerGetVersion();

NET_API_STATUS NetrDfsAdd(
        [in,string]             LPWSTR DfsEntryPath,
        [in,string]             LPWSTR ServerName,
        [in,unique,string]      LPWSTR ShareName,
        [in,unique,string]      LPWSTR Comment,
        [in]                    DWORD  Flags);

NET_API_STATUS NetrDfsRemove(
        [in,string]             LPWSTR DfsEntryPath,
        [in,unique,string]      LPWSTR ServerName,
        [in,unique,string]      LPWSTR ShareName);

NET_API_STATUS NetrDfsSetInfo(
        [in,string]             LPWSTR DfsEntryPath,
        [in,unique,string]      LPWSTR ServerName,
        [in,unique,string]      LPWSTR ShareName,
        [in]                    DWORD  Level,
        [in,switch_is(Level)]   LPDFS_INFO_STRUCT DfsInfo);

NET_API_STATUS NetrDfsGetInfo(
        [in,string]             LPWSTR  DfsEntryPath,
        [in,unique,string]      LPWSTR  ServerName,
        [in,unique,string]      LPWSTR  ShareName,
        [in]                    DWORD   Level,
        [out,switch_is(Level)]  LPDFS_INFO_STRUCT DfsInfo);

NET_API_STATUS NetrDfsEnum(
        [in]                    DWORD   Level,
        [in]                    DWORD   PrefMaxLen,
        [in,out,unique]         LPDFS_INFO_ENUM_STRUCT DfsEnum,
        [in,out,unique]         LPDWORD ResumeHandle);

NET_API_STATUS NetrDfsMove(
        [in,string]             LPWSTR DfsEntryPath,
        [in,string]             LPWSTR NewDfsEntryPath);

NET_API_STATUS NetrDfsRename(
        [in,string]             LPWSTR Path,
        [in,string]             LPWSTR NewPath);

//
// The private Dfs Manager methods
//

NET_API_STATUS NetrDfsManagerGetConfigInfo(
        [in, string]    LPWSTR wszServer,
        [in, string]    LPWSTR wszLocalVolumeEntryPath,
        [in]            GUID   idLocalVolume,
        [in, out, unique] LPDFSM_RELATION_INFO *ppRelationInfo);

}