[
uuid(2BC66860-E91E-11CE-B2F0-00AA00510E3B),
version(1.0),
pointer_default(unique)
]
#define MAX_ALIAS_SIZE 16+1
#define MAX_STRING_SIZE 32+1
#define MAX_PHONE_SIZE 12+1
#define MAX_COMMENT_SIZE 79+1
#define MAX_PASSWORD_SIZE MAX_ALIAS_SIZE
interface WINDSADM
{
// ANSI data structures
typedef struct _ADM_MAILBOX_INFO_A
{
char szMailboxName[MAX_ALIAS_SIZE];
char szFullName[MAX_STRING_SIZE];
char szJobTitle[MAX_STRING_SIZE];
char szOffice[MAX_STRING_SIZE];
char szPhone[MAX_PHONE_SIZE];
char szAltPhone[MAX_PHONE_SIZE];
char szFax[MAX_PHONE_SIZE];
char szPassword[MAX_ALIAS_SIZE];
char szCompany[MAX_STRING_SIZE];
char szDepartment[MAX_STRING_SIZE];
char szComments[MAX_COMMENT_SIZE];
char szManagerName[MAX_STRING_SIZE];
char szManagerAlias[MAX_STRING_SIZE];
unsigned long dwManagerID;
unsigned long dwObjID;
unsigned long dwFlags;
} ADM_MAILBOX_INFO_A;
typedef struct _DLM_INFO_A
{
char szMemberName[36];
char szMemberAlias[20];
unsigned long dwMemberID;
unsigned long dwMemberType;
} DLM_INFO_A;
typedef struct _DLM_LIST_A
{
DLM_INFO_A Info;
struct _DLM_LIST_A * pNext;
} DLM_LIST_A;
typedef struct _DLM_ARRAY_A
{
unsigned long dwCount;
[size_is(dwCount)] DLM_INFO_A pMembers[];
} DLM_ARRAY_A;
typedef [transmit_as(DLM_ARRAY_A)] DLM_LIST_A DLM_XMIT_LIST_A;
// UNICODE data structures
typedef struct _ADM_MAILBOX_INFO_W
{
wchar_t szMailboxName[MAX_ALIAS_SIZE];
wchar_t szFullName[MAX_STRING_SIZE];
wchar_t szJobTitle[MAX_STRING_SIZE];
wchar_t szOffice[MAX_STRING_SIZE];
wchar_t szPhone[MAX_PHONE_SIZE];
wchar_t szAltPhone[MAX_PHONE_SIZE];
wchar_t szFax[MAX_PHONE_SIZE];
wchar_t szPassword[MAX_ALIAS_SIZE];
wchar_t szCompany[MAX_STRING_SIZE];
wchar_t szDepartment[MAX_STRING_SIZE];
wchar_t szComments[MAX_COMMENT_SIZE];
wchar_t szManagerName[MAX_STRING_SIZE];
wchar_t szManagerAlias[MAX_STRING_SIZE];
unsigned long dwManagerID;
unsigned long dwObjID;
unsigned long dwFlags;
} ADM_MAILBOX_INFO_W;
typedef struct _DLM_INFO_W
{
wchar_t szMemberName[36];
wchar_t szMemberAlias[20];
unsigned long dwMemberID;
unsigned long dwMemberType;
} DLM_INFO_W;
typedef struct _DLM_LIST_W
{
DLM_INFO_W Info;
struct _DLM_LIST_W * pNext;
} DLM_LIST_W;
typedef struct _DLM_ARRAY_W
{
unsigned long dwCount;
[size_is(dwCount)] DLM_INFO_W pMembers[];
} DLM_ARRAY_W;
typedef [transmit_as(DLM_ARRAY_W)] DLM_LIST_W DLM_XMIT_LIST_W;
long RemoteAdmIsServerRunning
();
long RemoteAdmDeleteObject
([in] unsigned long dwObjID);
long RemoteAdmGetServerMailboxes
([out] long * pPipeNumber);
long RemoteAdmGetServerDistLists
([out] long * pPipeNumber);
long RemoteAdmEmptyMailbox
([in] unsigned long dwMailboxID);
long RemoteAdmGetGALDirectory
([in] unsigned long dwFlags,
[out] long * pPipeNumber);
// ANSI version of the RPC calls
long RemoteAdmTerminateNotifA
([in, string] unsigned char * szComputerName,
[in] unsigned long ulConnectionID);
long RemoteAdmValidateNotifA
([in, string] unsigned char * szComputerName,
[in] unsigned long ulNotifMask,
[out] unsigned long * pulConnectionID);
long RemoteAdmCreateMailboxA
([in] ADM_MAILBOX_INFO_A * pMailboxInfo);
long RemoteAdmGetMailboxPropsA
([in] unsigned long dwObjID,
[out] unsigned long * pdwObjType,
[out] ADM_MAILBOX_INFO_A * pMailboxInfo);
long RemoteAdmSetMailboxPropsA
([in] ADM_MAILBOX_INFO_A * pMailboxInfo);
long RemoteAdmCreateDistListA
([in, string] unsigned char * szDLAlias,
[in, string] unsigned char * szDLFullName,
[in] unsigned long dwFlags,
[in, string] unsigned char * szOwnerAlias,
[in, string] unsigned char * szOwnerName,
[in] unsigned long dwOwnerID,
[in] DLM_XMIT_LIST_A * pMembers);
long RemoteAdmGetDLPropsA
([in] unsigned long dwObjID,
[out, string, size_is(MAX_ALIAS_SIZE)] unsigned char * szDLAlias,
[out, string, size_is(MAX_STRING_SIZE)] unsigned char * szDLFullName,
[out] unsigned long * pdwFlags,
[out, string, size_is(MAX_ALIAS_SIZE)] unsigned char * szOwnerAlias,
[out, string, size_is(MAX_STRING_SIZE)] unsigned char * szOwnerName,
[out] unsigned long * pdwOwnerID,
[out, string, size_is(MAX_COMMENT_SIZE)] unsigned char * szComments,
[in, out] DLM_XMIT_LIST_A * pMembers);
long RemoteAdmSetDLPropsA
([in] unsigned long dwObjID,
[in, string] unsigned char * szDLAlias,
[in, string] unsigned char * szDLFullName,
[in] unsigned long dwFlags,
[in, string] unsigned char * szOwnerAlias,
[in, string] unsigned char * szOwnerName,
[in] unsigned long dwOwnerID,
[in, string] unsigned char * szComments,
[in, out] DLM_XMIT_LIST_A * pMembers);
// UNICODE version of the RPC calls
long RemoteAdmTerminateNotifW
([in, string] wchar_t * szComputerName,
[in] unsigned long ulConnectionID);
long RemoteAdmValidateNotifW
([in, string] wchar_t * szComputerName,
[in] unsigned long ulNotifMask,
[out] unsigned long * pulConnectionID);
long RemoteAdmCreateMailboxW
([in] ADM_MAILBOX_INFO_W * pMailboxInfo);
long RemoteAdmGetMailboxPropsW
([in] unsigned long dwObjID,
[out] unsigned long * pdwObjType,
[out] ADM_MAILBOX_INFO_W * pMailboxInfo);
long RemoteAdmSetMailboxPropsW
([in] ADM_MAILBOX_INFO_W * pMailboxInfo);
long RemoteAdmCreateDistListW
([in, string] wchar_t * szDLAlias,
[in, string] wchar_t * szDLFullName,
[in] unsigned long dwFlags,
[in, string] wchar_t * szOwnerAlias,
[in, string] wchar_t * szOwnerName,
[in] unsigned long dwOwnerID,
[in] DLM_XMIT_LIST_W * pMembers);
long RemoteAdmGetDLPropsW
([in] unsigned long dwObjID,
[out, string, size_is(MAX_ALIAS_SIZE)] wchar_t * szDLAlias,
[out, string, size_is(MAX_STRING_SIZE)] wchar_t * szDLFullName,
[out] unsigned long * pdwFlags,
[out, string, size_is(MAX_ALIAS_SIZE)] wchar_t * szOwnerAlias,
[out, string, size_is(MAX_STRING_SIZE)] wchar_t * szOwnerName,
[out] unsigned long * pdwOwnerID,
[out, string, size_is(MAX_COMMENT_SIZE)] wchar_t * szComments,
[in, out] DLM_XMIT_LIST_W * pMembers);
long RemoteAdmSetDLPropsW
([in] unsigned long dwObjID,
[in, string] wchar_t * szDLAlias,
[in, string] wchar_t * szDLFullName,
[in] unsigned long dwFlags,
[in, string] wchar_t * szOwnerAlias,
[in, string] wchar_t * szOwnerName,
[in] unsigned long dwOwnerID,
[in, string] wchar_t * szComments,
[in, out] DLM_XMIT_LIST_W * pMembers);
}