Export (0) Print
Expand All

6 Appendix A: Full IDL

The DFS: Namespace Management Protocol contains one interface, whose IDL definition is listed in this section.

import "ms-dtyp.idl";
 
/* ----- structures and methods described [MS-DFSNM], section 2 and 3 ----- */

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

interface netdfs {

typedef DWORD    NET_API_STATUS;
typedef WCHAR *  NETDFS_SERVER_OR_DOMAIN_HANDLE;

typedef [v1_enum] enum _DFS_TARGET_PRIORITY_CLASS {
    DfsInvalidPriorityClass        = -1,
    DfsSiteCostNormalPriorityClass = 0,
    DfsGlobalHighPriorityClass     = 1,
    DfsSiteCostHighPriorityClass   = 2,
    DfsSiteCostLowPriorityClass    = 3,
    DfsGlobalLowPriorityClass      = 4
} DFS_TARGET_PRIORITY_CLASS;

typedef struct _DFS_TARGET_PRIORITY {
    DFS_TARGET_PRIORITY_CLASS TargetPriorityClass;    
    unsigned short            TargetPriorityRank;     
    unsigned short            Reserved;               
} DFS_TARGET_PRIORITY;

typedef struct _DFS_STORAGE_INFO {
             unsigned long State;
    [string] WCHAR       * ServerName;
    [string] WCHAR       * ShareName;
} DFS_STORAGE_INFO;

typedef struct _DFS_STORAGE_INFO_1 {
             unsigned long State;      
    [string] WCHAR       * ServerName;     
    [string] WCHAR       * ShareName;
    DFS_TARGET_PRIORITY TargetPriority;
} DFS_STORAGE_INFO_1, *PDFS_STORAGE_INFO_1, *LPDFS_STORAGE_INFO_1;

typedef struct _DFSM_ROOT_LIST_ENTRY {
    [string, unique] WCHAR * ServerShare;
} DFSM_ROOT_LIST_ENTRY;

typedef struct _DFSM_ROOT_LIST {
    DWORD   cEntries;
    [size_is(cEntries)] DFSM_ROOT_LIST_ENTRY Entry[];
} DFSM_ROOT_LIST;

typedef enum {
    DFS_NAMESPACE_VERSION_ORIGIN_COMBINED = 0,                                                  
    DFS_NAMESPACE_VERSION_ORIGIN_SERVER,
    DFS_NAMESPACE_VERSION_ORIGIN_DOMAIN
} DFS_NAMESPACE_VERSION_ORIGIN;
    
typedef struct _DFS_SUPPORTED_NAMESPACE_VERSION_INFO {
    unsigned long     DomainDfsMajorVersion;
    unsigned long     DomainDfsMinorVersion;
    ULONGLONG  DomainDfsCapabilities;
    unsigned long     StandaloneDfsMajorVersion;
    unsigned long     StandaloneDfsMinorVersion;
    ULONGLONG  StandaloneDfsCapabilities;
} DFS_SUPPORTED_NAMESPACE_VERSION_INFO,
 *PDFS_SUPPORTED_NAMESPACE_VERSION_INFO;

typedef struct _DFS_INFO_1 {
    [string] WCHAR *  EntryPath;
} DFS_INFO_1;

typedef struct _DFS_INFO_2 {
    [string] WCHAR *  EntryPath;
    [string] WCHAR *  Comment;
             DWORD    State;
             DWORD    NumberOfStorages;
} DFS_INFO_2;

typedef struct _DFS_INFO_3 {
    [string] WCHAR *  EntryPath;
    [string] WCHAR *  Comment;
             DWORD    State;
             DWORD    NumberOfStorages;
    [size_is(NumberOfStorages)] DFS_STORAGE_INFO * Storage;
} DFS_INFO_3;

typedef struct _DFS_INFO_4 {
    [string] WCHAR       * EntryPath;
    [string] WCHAR       * Comment;
             DWORD         State;
             unsigned long Timeout;
             GUID          Guid;
             DWORD         NumberOfStorages;
    [size_is(NumberOfStorages)] DFS_STORAGE_INFO * Storage;
} DFS_INFO_4;

typedef struct _DFS_INFO_5 {
    [string] WCHAR       * EntryPath;
    [string] WCHAR       * Comment;
             DWORD         State;
             unsigned long Timeout;
             GUID          Guid;
             unsigned long PropertyFlags;
             unsigned long MetadataSize;
             DWORD         NumberOfStorages;
} DFS_INFO_5;

typedef struct _DFS_INFO_6 {
    [string] WCHAR       * EntryPath;              
    [string] WCHAR       * Comment;                
             DWORD         State;                  
             unsigned long Timeout;                
             GUID          Guid;                   
             unsigned long PropertyFlags;          
             unsigned long MetadataSize;           
             DWORD         NumberOfStorages;       
    [size_is(NumberOfStorages)] DFS_STORAGE_INFO_1 * Storage;
} DFS_INFO_6;

typedef struct _DFS_INFO_7 {
             GUID          GenerationGuid;     
} DFS_INFO_7;

typedef struct _DFS_INFO_8 {
    [string] WCHAR       * EntryPath;
    [string] WCHAR       * Comment;
             DWORD         State;
             unsigned long Timeout;
             GUID          Guid;
             unsigned long PropertyFlags;
             unsigned long MetadataSize;
             ULONG   SecurityDescriptorLength;
             [size_is(SecurityDescriptorLength)] PUCHAR  pSecurityDescriptor; 
             DWORD         NumberOfStorages;
} DFS_INFO_8,
 *LPDFS_INFO_8;
    
typedef struct _DFS_INFO_9 {
    [string] WCHAR       * EntryPath;
    [string] WCHAR       * Comment;                
             DWORD         State;                  
             unsigned long Timeout;                
             GUID                 Guid;                   
             unsigned long        PropertyFlags;          
             unsigned long        MetadataSize;      
             ULONG   SecurityDescriptorLength;
             [size_is(SecurityDescriptorLength)] PUCHAR  pSecurityDescriptor; 
             DWORD                NumberOfStorages;       
             [size_is(NumberOfStorages)] LPDFS_STORAGE_INFO_1    Storage;
} DFS_INFO_9,
 *LPDFS_INFO_9;
    
typedef struct _DFS_INFO_50 {
             unsigned long    NamespaceMajorVersion;
             unsigned long    NamespaceMinorVersion;
             unsigned __int64 NamespaceCapabilities;
} DFS_INFO_50;
    
typedef struct _DFS_INFO_100 {
    [string]  WCHAR       * Comment;                
} DFS_INFO_100;

typedef struct _DFS_INFO_101 {
    unsigned long         State;                  
                                    
} DFS_INFO_101;

typedef struct _DFS_INFO_102 {
    unsigned long Timeout;                
} DFS_INFO_102;

typedef struct _DFS_INFO_103 {
    unsigned long PropertyFlagMask;   
    unsigned long PropertyFlags;      
                                    
} DFS_INFO_103;

typedef struct _DFS_INFO_104 {
    DFS_TARGET_PRIORITY TargetPriority;     
} DFS_INFO_104;

typedef struct _DFS_INFO_105 {
    [string] WCHAR       * Comment;            
             DWORD         State;              
             unsigned long Timeout;            
             unsigned long PropertyFlagMask;   
             unsigned long PropertyFlags;      
} DFS_INFO_105;

typedef struct _DFS_INFO_106 {
    DWORD               State;
    DFS_TARGET_PRIORITY TargetPriority;
} DFS_INFO_106;

typedef struct _DFS_INFO_107 {
   [string] WCHAR       * Comment;            
            DWORD         State;              
            unsigned long Timeout;            
            unsigned long PropertyFlagMask;   
            unsigned long PropertyFlags;
            ULONG   SecurityDescriptorLength;
            [size_is(SecurityDescriptorLength)] PUCHAR  pSecurityDescriptor; 
} DFS_INFO_107;
    
typedef struct _DFS_INFO_150 {
             ULONG   SecurityDescriptorLength;
             [size_is(SecurityDescriptorLength)] PUCHAR  pSecurityDescriptor; 
} DFS_INFO_150;
    
typedef struct _DFS_INFO_200 {
    [string] WCHAR       * FtDfsName;              
} DFS_INFO_200;

typedef struct _DFS_INFO_300 {
             DWORD   Flags;
    [string] WCHAR * DfsName;              
} DFS_INFO_300;

typedef [switch_type(unsigned long)] union _DFS_INFO_STRUCT {
    [case(1)]
        DFS_INFO_1   * DfsInfo1;
    [case(2)]
        DFS_INFO_2   * DfsInfo2;
    [case(3)]
        DFS_INFO_3   * DfsInfo3;
    [case(4)]
        DFS_INFO_4   * DfsInfo4;
    [case(5)]
        DFS_INFO_5   * DfsInfo5;
    [case(6)]
        DFS_INFO_6   * DfsInfo6;
    [case(7)]
        DFS_INFO_7   * DfsInfo7;
    [case(8)]
        DFS_INFO_8   * DfsInfo8;
    [case(9)]
        DFS_INFO_9   * DfsInfo9;
    [case(50)]
        DFS_INFO_50  * DfsInfo50;
    [case(100)]
        DFS_INFO_100 * DfsInfo100;
    [case(101)]
        DFS_INFO_101 * DfsInfo101;
    [case(102)]
        DFS_INFO_102 * DfsInfo102;
    [case(103)]
        DFS_INFO_103 * DfsInfo103;
    [case(104)]
        DFS_INFO_104 * DfsInfo104;
    [case(105)]
        DFS_INFO_105 * DfsInfo105;
    [case(106)]
        DFS_INFO_106 * DfsInfo106;
    [case(107)]
        DFS_INFO_107 * DfsInfo107;
    [case(150)]
        DFS_INFO_150 * DfsInfo150;
    [default]
        ;
} DFS_INFO_STRUCT;


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

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

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

typedef struct _DFS_INFO_4_CONTAINER {
    DWORD   EntriesRead;
    [size_is(EntriesRead)] DFS_INFO_4 * Buffer;
} DFS_INFO_4_CONTAINER;

typedef struct _DFS_INFO_5_CONTAINER {
    DWORD   EntriesRead;
    [size_is(EntriesRead)] DFS_INFO_5 * Buffer;
} DFS_INFO_5_CONTAINER;

typedef struct _DFS_INFO_6_CONTAINER {
    DWORD   EntriesRead;
    [size_is(EntriesRead)] DFS_INFO_6 * Buffer;
} DFS_INFO_6_CONTAINER;

typedef struct _DFS_INFO_8_CONTAINER {
    DWORD   EntriesRead;
    [size_is(EntriesRead)] LPDFS_INFO_8 Buffer;
} DFS_INFO_8_CONTAINER, 
 *LPDFS_INFO_8_CONTAINER;
    
typedef struct _DFS_INFO_9_CONTAINER {
    DWORD   EntriesRead;
    [size_is(EntriesRead)] LPDFS_INFO_9 Buffer;
} DFS_INFO_9_CONTAINER, 
 *LPDFS_INFO_9_CONTAINER;

typedef struct _DFS_INFO_200_CONTAINER {
    DWORD   EntriesRead;
    [size_is(EntriesRead)] DFS_INFO_200 * Buffer;
} DFS_INFO_200_CONTAINER;

typedef struct _DFS_INFO_300_CONTAINER {
    DWORD   EntriesRead;
    [size_is(EntriesRead)] DFS_INFO_300 * Buffer;
} DFS_INFO_300_CONTAINER;

typedef struct _DFS_INFO_ENUM_STRUCT {
    DWORD   Level;
    [switch_is(Level)] union {
        [case(1)]
            DFS_INFO_1_CONTAINER   * DfsInfo1Container;
        [case(2)]
            DFS_INFO_2_CONTAINER   * DfsInfo2Container;
        [case(3)]
            DFS_INFO_3_CONTAINER   * DfsInfo3Container;
        [case(4)]
            DFS_INFO_4_CONTAINER   * DfsInfo4Container;
        [case(5)]
            DFS_INFO_5_CONTAINER   * DfsInfo5Container;
        [case(6)]
            DFS_INFO_6_CONTAINER   * DfsInfo6Container;
        [case(8)]
            DFS_INFO_8_CONTAINER   * DfsInfo8Container;
        [case(9)]
            DFS_INFO_9_CONTAINER   * DfsInfo9Container;
        [case(200)]
            DFS_INFO_200_CONTAINER * DfsInfo200Container;
        [case(300)]
            DFS_INFO_300_CONTAINER * DfsInfo300Container;
    } DfsInfoContainer;
} DFS_INFO_ENUM_STRUCT;


DWORD NetrDfsManagerGetVersion();

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

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

NET_API_STATUS NetrDfsSetInfo(
    [in,string]             WCHAR           * DfsEntryPath,
    [in,unique,string]      WCHAR           * ServerName,
    [in,unique,string]      WCHAR           * ShareName,
    [in]                    DWORD             Level,
    [in,switch_is(Level)]   DFS_INFO_STRUCT * DfsInfo);

NET_API_STATUS NetrDfsGetInfo(
    [in,string]             WCHAR           * DfsEntryPath,
    [in,unique,string]      WCHAR           * ServerName,
    [in,unique,string]      WCHAR           * ShareName,
    [in]                    DWORD             Level,
    [out,switch_is(Level)]  DFS_INFO_STRUCT * DfsInfo);

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

NET_API_STATUS NetrDfsMove(
    [in,string]             WCHAR           * DfsEntryPath,
    [in,string]             WCHAR           * NewDfsEntryPath,
    [in]                    unsigned long     Flags);

void Opnum7NotUsedOnWire();

void Opnum8NotUsedOnWire();

void Opnum9NotUsedOnWire();

NET_API_STATUS NetrDfsAddFtRoot(
    [in,string]             WCHAR           * ServerName,
    [in,string]             WCHAR           * DcName,
    [in,string]             WCHAR           * RootShare,
    [in,string]             WCHAR           * FtDfsName,
    [in,string]             WCHAR           * Comment,
    [in,string]             WCHAR           * ConfigDN,
    [in]                    BOOLEAN           NewFtDfs,
    [in]                    DWORD             ApiFlags,
    [in,out,unique]         DFSM_ROOT_LIST ** ppRootList);

NET_API_STATUS NetrDfsRemoveFtRoot(
    [in,string]             WCHAR           * ServerName,
    [in,string]             WCHAR           * DcName,
    [in,string]             WCHAR           * RootShare,
    [in,string]             WCHAR           * FtDfsName,
    [in]                    DWORD             ApiFlags,
    [in,out,unique]         DFSM_ROOT_LIST ** ppRootList);

NET_API_STATUS NetrDfsAddStdRoot(
    [in,string]             WCHAR           * ServerName,
    [in,string]             WCHAR           * RootShare,
    [in,string]             WCHAR           * Comment,
    [in]                    DWORD             ApiFlags);

NET_API_STATUS NetrDfsRemoveStdRoot(
    [in,string]             WCHAR           * ServerName,
    [in,string]             WCHAR           * RootShare,
    [in]                    DWORD             ApiFlags);

NET_API_STATUS NetrDfsManagerInitialize(
    [in,string]             WCHAR           * ServerName,
    [in]                    DWORD             Flags);

NET_API_STATUS NetrDfsAddStdRootForced(
    [in,string]             WCHAR           * ServerName,
    [in,string]             WCHAR           * RootShare,
    [in,string]             WCHAR           * Comment,
    [in,string]             WCHAR           * Share);

NET_API_STATUS NetrDfsGetDcAddress(
    [in,string]             WCHAR           * ServerName,
    [in,out,string]         WCHAR          ** DcName,
    [in,out]                BOOLEAN         * IsRoot,
    [in,out]                unsigned long   * Timeout);

NET_API_STATUS NetrDfsSetDcAddress(
    [in,string]             WCHAR           * ServerName,
    [in,string]             WCHAR           * DcName,
    [in]                    DWORD             Timeout,
    [in]                    DWORD             Flags);

NET_API_STATUS NetrDfsFlushFtTable(
    [in,string]             WCHAR           * DcName,
    [in,string]             WCHAR           * wszFtDfsName);

NET_API_STATUS NetrDfsAdd2(
    [in,string]             WCHAR           * DfsEntryPath,
    [in,string]             WCHAR           * DcName,
    [in,string]             WCHAR           * ServerName,
    [in,unique,string]      WCHAR           * ShareName,
    [in,unique,string]      WCHAR           * Comment,
    [in]                    DWORD             Flags,
    [in,out,unique]         DFSM_ROOT_LIST ** ppRootList);

NET_API_STATUS NetrDfsRemove2(
    [in,string]             WCHAR           * DfsEntryPath,
    [in,string]             WCHAR           * DcName,
    [in,unique,string]      WCHAR           * ServerName,
    [in,unique,string]      WCHAR           * ShareName,
    [in,out,unique]         DFSM_ROOT_LIST ** ppRootList);

NET_API_STATUS NetrDfsEnumEx(
    [in,string]             WCHAR                * DfsEntryPath,
    [in]                    DWORD                  Level,
    [in]                    DWORD                  PrefMaxLen,
    [in,out,unique]         DFS_INFO_ENUM_STRUCT * DfsEnum,
    [in,out,unique]         DWORD                * ResumeHandle);

NET_API_STATUS NetrDfsSetInfo2(
    [in,string]             WCHAR           * DfsEntryPath,
    [in,string]             WCHAR           * DcName,
    [in,unique,string]      WCHAR           * ServerName,
    [in,unique,string]      WCHAR           * ShareName,
    [in]                    DWORD             Level,
    [in,switch_is(Level)]   DFS_INFO_STRUCT * pDfsInfo,
    [in,out,unique]         DFSM_ROOT_LIST ** ppRootList);

NET_API_STATUS NetrDfsAddRootTarget(
    [in,unique,string]  LPWSTR  pDfsPath,
    [in,unique,string]  LPWSTR  pTargetPath,
    [in]                ULONG   MajorVersion,
    [in,unique,string]  LPWSTR  pComment,
    [in]                BOOLEAN NewNamespace,
    [in]                ULONG   Flags);
    
NET_API_STATUS NetrDfsRemoveRootTarget(
    [in,unique,string]  LPWSTR  pDfsPath,
    [in,unique,string]  LPWSTR  pTargetPath,
    [in]                ULONG   Flags);
    
NET_API_STATUS NetrDfsGetSupportedNamespaceVersion(
    [in]               DFS_NAMESPACE_VERSION_ORIGIN   Origin,
    [in,unique,string] NETDFS_SERVER_OR_DOMAIN_HANDLE pName,
    [out]              PDFS_SUPPORTED_NAMESPACE_VERSION_INFO pVersionInfo);
}

 
Show:
© 2014 Microsoft