480 lines
11 KiB
C
480 lines
11 KiB
C
|
//--------------------------------------------------------------------------
|
||
|
//
|
||
|
// Module Name: ULSAPI.H
|
||
|
//
|
||
|
// Brief Description:
|
||
|
// This module contains declarations for all COM style APIs
|
||
|
// of ULS Client.
|
||
|
//
|
||
|
// Author: Chu, Lon-Chan (lonchanc)
|
||
|
//
|
||
|
// Copyright (c) 1996 Microsoft Corporation
|
||
|
//
|
||
|
//--------------------------------------------------------------------------
|
||
|
|
||
|
|
||
|
#ifndef _ULSAPI_H_
|
||
|
#define _ULSAPI_H_
|
||
|
|
||
|
#include <winnt.h>
|
||
|
#include <basetyps.h> // IUnknown & IClassFactory
|
||
|
#include <mapidefs.h>
|
||
|
#include "ulserror.h"
|
||
|
#include "ulstags.h"
|
||
|
#include "ulp.h"
|
||
|
|
||
|
#ifdef IN
|
||
|
#undef IN
|
||
|
#endif
|
||
|
#define IN
|
||
|
|
||
|
#ifdef OUT
|
||
|
#undef OUT
|
||
|
#endif
|
||
|
#define OUT
|
||
|
|
||
|
// client specific definitions. (in between stub and service)
|
||
|
#define CLIENT_MESSAGE_ID_LOGON 1
|
||
|
#define CLIENT_MESSAGE_ID_LOGOFF 2
|
||
|
#define CLIENT_MESSAGE_ID_RESOLVE 3
|
||
|
#define CLIENT_MESSAGE_ID_DIRECTORY 4
|
||
|
#define CLIENT_MESSAGE_ID_KEEPALIVE 5
|
||
|
|
||
|
|
||
|
// define ULS Client version
|
||
|
#ifndef ULS_VERSION
|
||
|
#define ULS_VERSION MAKELONG (1, 1) // version 1.1
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#define ULS_MAX_GUID_LENGTH 16
|
||
|
#define ULS_MAX_IP_ADDR_LENGTH 20
|
||
|
|
||
|
// window messages
|
||
|
#define ULS_MSG_DIRECTORY_UI 0x5001
|
||
|
#define ULS_MSG_LAUNCH 0x5002
|
||
|
|
||
|
|
||
|
#define ULS_DEFAULT_CRP 2 // refresh period 2 minutes, Internal, BUGS BUGS
|
||
|
|
||
|
|
||
|
/* ----- ULS_F_* (common flags) ------ */
|
||
|
|
||
|
#define ULS_F_ASYNC 0x10000000UL
|
||
|
#define ULS_F_CONN_EXISTS 0x20000000UL // use existing connection
|
||
|
|
||
|
|
||
|
/* ----- ULSLOGON_F_* (logon flags) ------ */
|
||
|
|
||
|
#define ULSREG_F_PUBLISH 0x00000001UL // indicates server publishes client's name (also used in PR_ULS_MODE)
|
||
|
#define ULSREG_F_REGISTER 0x00000010UL // register objects
|
||
|
#define ULSREG_F_UNREGISTER 0x00000020UL // unregister objects
|
||
|
|
||
|
|
||
|
/* ----- ULSRESOLVE_F_* (resolve flags) ------ */
|
||
|
|
||
|
|
||
|
/* ----- ULSDIR_F_* (directory flags) ------ */
|
||
|
|
||
|
#define ULSDIR_F_DEF_PROPS 0x00000400UL // indicates default properties to retrieve
|
||
|
#define ULSDIR_F_LAST_SERVER 0x00000800UL // indicates using the server in registry
|
||
|
|
||
|
|
||
|
/* ----- ULSCONF_F_* ------ */
|
||
|
|
||
|
#define ULSCONF_F_PUBLISH 0X00000001UL
|
||
|
#define ULSCONF_F_SERVER_NAME 0X00000002UL
|
||
|
#define ULSCONF_F_FIRST_NAME 0X00000004UL
|
||
|
#define ULSCONF_F_EMAIL_NAME 0X00000008UL
|
||
|
#define ULSCONF_F_LAST_NAME 0X00000010UL
|
||
|
#define ULSCONF_F_CITY 0X00000020UL
|
||
|
#define ULSCONF_F_COUNTRY 0X00000040UL
|
||
|
#define ULSCONF_F_COMMENTS 0X00000080UL
|
||
|
#define ULSCONF_F_USER_NAME 0x00000100UL
|
||
|
|
||
|
#define ULSCONF_F_DEF_SERVER_NAME 0X00001000UL // use default uls.microsoft.com
|
||
|
|
||
|
|
||
|
/* ----- ULSWIZ_F_* ------ */
|
||
|
|
||
|
#define ULSWIZ_F_SHOW_BACK 0X00010000UL
|
||
|
#define ULSWIZ_F_NO_FINISH 0X00020000UL
|
||
|
|
||
|
|
||
|
/* ----- ULSQUERYPROVIDER_F_* ------ */
|
||
|
|
||
|
#define ULSQUERYPROVIDER_F_ALL 0x00000001UL
|
||
|
#define ULSQUERYPROVIDER_F_ENABLED 0x00000002UL
|
||
|
#define ULSQUERYPROVIDER_F_DISABLED 0x00000004UL
|
||
|
|
||
|
|
||
|
/* ------ common handle types ------ */
|
||
|
|
||
|
typedef PVOID ULS_HCONN; // handle of connection
|
||
|
typedef PVOID ULS_HOBJECT; // handle of object
|
||
|
typedef PVOID ULS_HASYNC; // handle of async operation
|
||
|
typedef WCHAR ULS_GUID_W[ULS_MAX_GUID_LENGTH];
|
||
|
typedef CHAR ULS_GUID_A[ULS_MAX_GUID_LENGTH];
|
||
|
|
||
|
|
||
|
/* ----- ULS_OBJECT_TYPE ------ */
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
ULSOBJECT_PERSON,
|
||
|
ULSOBJECT_APPLICATION,
|
||
|
ULSOBJECT_PROTOCOL,
|
||
|
ULSOBJECT_CONFERENCE,
|
||
|
ULSOBJECT_ALIAS_TO_PERSON,
|
||
|
ULSOBJECT_ALIAS_TO_CONFERENCE,
|
||
|
}
|
||
|
ULS_OBJECT_TYPE;
|
||
|
|
||
|
|
||
|
/* ------ async callback procedures ------ */
|
||
|
|
||
|
typedef HRESULT (WINAPI *ULS_SIMPLE_CB) (
|
||
|
IN ULS_HASYNC hAsyncReq,
|
||
|
IN LPARAM lParamCB,
|
||
|
IN HRESULT hr,
|
||
|
IN DWORD dwResult );
|
||
|
|
||
|
/* ------ ULS_CONN ------ */
|
||
|
|
||
|
typedef struct tag_ULS_CONN_INFO_W
|
||
|
{
|
||
|
DWORD dwFlags;
|
||
|
ULONG nTimeout;
|
||
|
PWSTR pszServerName;
|
||
|
PWSTR pszUlsBase; // eg. "c=US, o=Microsoft, ou=ULS"
|
||
|
PWSTR pszUserName; // if NULL, the client puts default
|
||
|
PWSTR pszPassword; // if NULL, the client puts default
|
||
|
}
|
||
|
ULS_CONN_INFO_W;
|
||
|
|
||
|
typedef struct tag_ULS_CONN_INFO_A
|
||
|
{
|
||
|
DWORD dwFlags;
|
||
|
ULONG nTimeout;
|
||
|
PSTR pszServerName;
|
||
|
PSTR pszUlsBase; // eg. "c=US, o=Microsoft, ou=ULS"
|
||
|
PSTR pszUserName; // if NULL, the client puts default
|
||
|
PSTR pszPassword; // if NULL, the client puts default
|
||
|
}
|
||
|
ULS_CONN_INFO_A;
|
||
|
|
||
|
#ifdef UNICODE
|
||
|
typedef ULS_CONN_INFO_W ULS_CONN_INFO;
|
||
|
#else
|
||
|
typedef ULS_CONN_INFO_A ULS_CONN_INFO;
|
||
|
#endif
|
||
|
|
||
|
|
||
|
/* ------ ULS_CONN_REQ ------ */
|
||
|
|
||
|
typedef struct tag_ULS_CONN_REQ_W
|
||
|
{
|
||
|
DWORD dwFlags;
|
||
|
ULS_CONN_INFO_W ConnInfo;
|
||
|
ULS_SIMPLE_CB pfnCB; // callback function
|
||
|
LPARAM lParamCB; // 32-bit callback parameter
|
||
|
}
|
||
|
ULS_CONN_REQ_W;
|
||
|
|
||
|
typedef struct tag_ULS_CONN_REQ_A
|
||
|
{
|
||
|
DWORD dwFlags;
|
||
|
ULS_CONN_INFO_A ConnInfo;
|
||
|
ULS_SIMPLE_CB pfnCB; // callback function
|
||
|
LPARAM lParamCB; // 32-bit callback parameter
|
||
|
}
|
||
|
ULS_CONN_REQ_A;
|
||
|
|
||
|
#ifdef UNICODE
|
||
|
typedef ULS_CONN_REQ_W ULS_CONN_REQ;
|
||
|
#else
|
||
|
typedef ULS_CONN_REQ_A ULS_CONN_REQ;
|
||
|
#endif
|
||
|
|
||
|
|
||
|
/* ------ ULS_DISCONN_REQ ------ */
|
||
|
|
||
|
typedef struct tag_ULS_DISCONN_REQ_W
|
||
|
{
|
||
|
DWORD dwFlags;
|
||
|
ULS_HCONN hConn;
|
||
|
ULS_SIMPLE_CB pfnCB; // callback function
|
||
|
LPARAM lParamCB; // 32-bit callback parameter
|
||
|
}
|
||
|
ULS_DISCONN_REQ_W;
|
||
|
|
||
|
typedef struct tag_ULS_DISCONN_REQ_A
|
||
|
{
|
||
|
DWORD dwFlags;
|
||
|
ULS_HCONN hConn;
|
||
|
ULS_SIMPLE_CB pfnCB; // callback function
|
||
|
LPARAM lParamCB; // 32-bit callback parameter
|
||
|
}
|
||
|
ULS_DISCONN_REQ_A;
|
||
|
|
||
|
#ifdef UNICODE
|
||
|
typedef ULS_DISCONN_REQ_W ULS_DISCONN_REQ;
|
||
|
#else
|
||
|
typedef ULS_DISCONN_REQ_A ULS_DISCONN_REQ;
|
||
|
#endif
|
||
|
|
||
|
|
||
|
/* ------ ULS_REG_REQ ------ */
|
||
|
|
||
|
typedef struct tag_ULS_REG_REQ_W
|
||
|
{
|
||
|
DWORD dwFlags; // 32-bit flags.
|
||
|
ULS_HCONN hConn; // handle to connection to server
|
||
|
ULS_CONN_INFO_W ConnInfo;
|
||
|
ULS_HOBJECT hObject1; // first level object
|
||
|
ULS_HOBJECT hObject2; // second level object
|
||
|
ULS_SIMPLE_CB pfnCB; // callback function
|
||
|
LPARAM lParamCB; // 32-bit callback parameter
|
||
|
}
|
||
|
ULS_REG_REQ_W;
|
||
|
|
||
|
typedef struct tag_ULS_REG_REQ_A
|
||
|
{
|
||
|
DWORD dwFlags; // 32-bit flags.
|
||
|
ULS_HCONN hConnect; // handle to connection to server
|
||
|
ULS_CONN_INFO_A ConnInfo;
|
||
|
ULS_HOBJECT hObject1; // first level object
|
||
|
ULS_HOBJECT hObject2; // second level object
|
||
|
ULS_SIMPLE_CB pfnCB; // callback function
|
||
|
LPARAM lParamCB; // 32-bit callback parameter
|
||
|
}
|
||
|
ULS_REG_REQ_A;
|
||
|
|
||
|
#ifdef UNICODE
|
||
|
typedef ULS_REG_REQ_W ULS_REG_REQ;
|
||
|
#else
|
||
|
typedef ULS_REG_REQ_A ULS_REG_REQ;
|
||
|
#endif
|
||
|
|
||
|
|
||
|
/* ------ ULS_RESOLVE_REQ ------ */
|
||
|
|
||
|
typedef struct tag_ULS_RESOLVE_REQ_W
|
||
|
{
|
||
|
DWORD dwFlags;
|
||
|
ULS_OBJECT_TYPE ObjectType;
|
||
|
PWSTR pszObject1Uid;
|
||
|
PWSTR pszObject2Uid;
|
||
|
ULONG cPropTags;
|
||
|
PDWORD pdwPropTags;
|
||
|
ULS_HCONN hConn;
|
||
|
ULS_CONN_INFO_W ConnInfo;
|
||
|
ULS_SIMPLE_CB pfnCB; // callback function
|
||
|
LPARAM lParamCB; // 32-bit callback parameter
|
||
|
}
|
||
|
ULS_RESOLVE_REQ_W;
|
||
|
|
||
|
typedef struct tag_ULS_RESOLVE_REQ_A
|
||
|
{
|
||
|
DWORD dwFlags;
|
||
|
ULS_OBJECT_TYPE ObjectType;
|
||
|
PSTR pszObject1Uid;
|
||
|
PSTR pszObject2Uid;
|
||
|
ULONG cPropTags;
|
||
|
PDWORD pdwPropTags;
|
||
|
ULS_HCONN hConn;
|
||
|
ULS_CONN_INFO_A ConnInfo;
|
||
|
ULS_SIMPLE_CB pfnCB; // callback function
|
||
|
LPARAM lParamCB; // 32-bit callback parameter
|
||
|
}
|
||
|
ULS_RESOLVE_REQ_A;
|
||
|
|
||
|
#ifdef UNICODE
|
||
|
typedef ULS_RESOLVE_REQ_W ULS_RESOLVE_REQ;
|
||
|
#else
|
||
|
typedef ULS_RESOLVE_REQ_A ULS_RESOLVE_REQ;
|
||
|
#endif
|
||
|
|
||
|
|
||
|
/* ------ ULS_DIR_REQ ------ */
|
||
|
|
||
|
typedef struct tag_ULS_DIR_REQ_W
|
||
|
{
|
||
|
DWORD dwFlags;
|
||
|
ULS_OBJECT_TYPE ObjectType;
|
||
|
PWSTR pszFilter;
|
||
|
PWSTR pszToMatch;
|
||
|
ULONG cPropTags;
|
||
|
PDWORD pdwPropTags;
|
||
|
ULS_HCONN hConn;
|
||
|
ULS_CONN_INFO_W ConnInfo;
|
||
|
ULS_SIMPLE_CB pfnCB; // callback function
|
||
|
LPARAM lParamCB; // 32-bit callback parameter
|
||
|
}
|
||
|
ULS_DIR_REQ_W;
|
||
|
|
||
|
typedef struct tag_ULS_DIR_REQ_A
|
||
|
{
|
||
|
DWORD dwFlags;
|
||
|
ULS_OBJECT_TYPE ObjectType;
|
||
|
PSTR pszFilter;
|
||
|
PSTR pszToMatch;
|
||
|
ULONG cPropTags;
|
||
|
PDWORD pdwPropTags;
|
||
|
ULS_HCONN hConn;
|
||
|
ULS_CONN_INFO_A ConnInfo;
|
||
|
ULS_SIMPLE_CB pfnCB; // callback function
|
||
|
LPARAM lParamCB; // 32-bit callback parameter
|
||
|
}
|
||
|
ULS_DIR_REQ_A;
|
||
|
|
||
|
#ifdef UNICODE
|
||
|
typedef ULS_DIR_REQ_W ULS_DIR_REQ;
|
||
|
#else
|
||
|
typedef ULS_DIR_REQ_A ULS_DIR_REQ;
|
||
|
#endif
|
||
|
|
||
|
|
||
|
/* ------ ULS_DIR_UNIT ------ */
|
||
|
|
||
|
typedef struct tag_ULS_DIR_UNIT_W
|
||
|
{
|
||
|
ULONG cProps;
|
||
|
SPropValue *pProps;
|
||
|
}
|
||
|
ULS_DIR_UNIT_W;
|
||
|
|
||
|
typedef ULS_DIR_UNIT_W ULS_DIR_UNIT_A;
|
||
|
|
||
|
#ifdef UNICODE
|
||
|
typedef ULS_DIR_UNIT_W ULS_DIR_UNIT;
|
||
|
#else
|
||
|
typedef ULS_DIR_UNIT_A ULS_DIR_UNIT;
|
||
|
#endif
|
||
|
|
||
|
|
||
|
/* ------ ULS_DIR_RESULT ------ */
|
||
|
|
||
|
typedef struct tag_ULS_DIR_RESULT_W
|
||
|
{
|
||
|
ULONG cbSize;
|
||
|
ULONG cEntries;
|
||
|
ULS_DIR_UNIT_W audeiEntries[1];
|
||
|
}
|
||
|
ULS_DIR_RESULT_W;
|
||
|
|
||
|
typedef ULS_DIR_RESULT_W ULS_DIR_RESULT_A;
|
||
|
|
||
|
#ifdef UNICODE
|
||
|
typedef ULS_DIR_RESULT_W ULS_DIR_RESULT;
|
||
|
#else
|
||
|
typedef ULS_DIR_RESULT_A ULS_DIR_RESULT;
|
||
|
#endif
|
||
|
|
||
|
|
||
|
/* ------ ULS_ASYNC_DIR_RESULT ------ */
|
||
|
|
||
|
typedef struct tag_ULS_ASYNC_DIR_RESULT_W
|
||
|
{
|
||
|
ULONG cbSize;
|
||
|
ULONG cTotalEntries;
|
||
|
ULONG cbTotalDataSize;
|
||
|
ULONG nFirstEntry;
|
||
|
ULONG cEntriess;
|
||
|
ULS_DIR_UNIT_W audeiEntries[1];
|
||
|
}
|
||
|
ULS_ASYNC_DIR_RESULT_W;
|
||
|
|
||
|
typedef struct tag_ULS_ASYNC_DIR_RESULT_A
|
||
|
{
|
||
|
ULONG cbSize;
|
||
|
ULONG nFirstEntry;
|
||
|
ULONG cEntriess;
|
||
|
ULS_DIR_UNIT_A audeiEntries[1];
|
||
|
}
|
||
|
ULS_ASYNC_DIR_RESULT_A;
|
||
|
|
||
|
#ifdef UNICODE
|
||
|
typedef ULS_ASYNC_DIR_RESULT_W ULS_ASYNC_DIR_RESULT;
|
||
|
#else
|
||
|
typedef ULS_ASYNC_DIR_RESULT_A ULS_ASYNC_DIR_RESULT;
|
||
|
#endif
|
||
|
|
||
|
|
||
|
/* ------ ULS_CONF ------ */
|
||
|
|
||
|
// same as INTERNET_MAX_USER_NAME_LENGTH in wininet.h.
|
||
|
#define ULS_MAX_UID_LENGTH 256
|
||
|
#define ULS_MAX_SERVER_NAME_LENGTH 128
|
||
|
#define ULS_MAX_FIRST_NAME_LENGTH 128
|
||
|
#define ULS_MAX_LAST_NAME_LENGTH 128
|
||
|
#define ULS_MAX_EMAIL_NAME_LENGTH 128
|
||
|
#define ULS_MAX_CITY_NAME_LENGTH 128
|
||
|
#define ULS_MAX_COUNTRY_NAME_LENGTH 128
|
||
|
#define ULS_MAX_COMMENTS_LENGTH 256
|
||
|
#define ULS_MAX_CLNTSTRING_LENGTH 256 //max of above
|
||
|
//SS: username is concatenated first name with last name with space in between
|
||
|
#define ULS_MAX_USER_NAME_LENGTH (ULS_MAX_FIRST_NAME_LENGTH + ULS_MAX_LAST_NAME_LENGTH)
|
||
|
#define UI_COMMENTS_LENGTH 60 // ;Internal BUGS BUGS to remove
|
||
|
|
||
|
#define MAX_IP_ADDRESS_STRING_LENGTH 20
|
||
|
|
||
|
typedef struct tagULS_HTTP_RESP
|
||
|
{
|
||
|
ULONG cbSize;
|
||
|
ULONG nCmdId;
|
||
|
HRESULT hr;
|
||
|
ULONG nPort;
|
||
|
DWORD dwAppSession;
|
||
|
DWORD dwClientSession;
|
||
|
DWORD dwClientId;
|
||
|
CHAR *pszUID;
|
||
|
CHAR *pszURL;
|
||
|
CHAR szIPAddress[MAX_IP_ADDRESS_STRING_LENGTH];
|
||
|
CHAR szMimeType[MAX_MIME_TYPE_LENGTH];
|
||
|
CHAR szAppMime[MAX_MIME_TYPE_LENGTH];
|
||
|
CHAR szProtMime[MAX_MIME_TYPE_LENGTH];
|
||
|
CHAR szAppId[MAX_NM_APP_ID];
|
||
|
CHAR szProtId[MAX_PROTOCOL_ID];
|
||
|
ULONG nApps;
|
||
|
}
|
||
|
ULS_HTTP_RESP;
|
||
|
|
||
|
/* ------ ULS_PROVIDER_INFO ------ */
|
||
|
|
||
|
#define ULS_MAX_PROVIDER_COMPANY_NAME_LENGTH 64
|
||
|
#define ULS_MAX_PROVIDER_PRODUCT_NAME_LENGTH 64
|
||
|
#define ULS_MAX_PROVIDER_PROTOCOL_NAME_LENGTH 16
|
||
|
|
||
|
typedef struct tag_ULS_PROVIDER_INFO_W
|
||
|
{
|
||
|
ULONG cbSize;
|
||
|
DWORD dwVersion; // hiword major; loword minor
|
||
|
ULONG nProviderId; // created by the uls client, valid only in this process
|
||
|
WCHAR szCompanyName[ULS_MAX_PROVIDER_COMPANY_NAME_LENGTH];
|
||
|
WCHAR szProductName[ULS_MAX_PROVIDER_PRODUCT_NAME_LENGTH];
|
||
|
WCHAR szProtocolName[ULS_MAX_PROVIDER_PROTOCOL_NAME_LENGTH];
|
||
|
}
|
||
|
ULS_PROVIDER_INFO_W;
|
||
|
|
||
|
typedef struct tag_ULS_PROVIDER_INFO_A
|
||
|
{
|
||
|
ULONG cbSize;
|
||
|
DWORD dwVersion; // hiword major; loword minor
|
||
|
ULONG nProviderId; // created by the uls client, valid only in this process
|
||
|
CHAR szCompanyName[ULS_MAX_PROVIDER_COMPANY_NAME_LENGTH];
|
||
|
CHAR szProductName[ULS_MAX_PROVIDER_PRODUCT_NAME_LENGTH];
|
||
|
CHAR szProtocolName[ULS_MAX_PROVIDER_PROTOCOL_NAME_LENGTH];
|
||
|
}
|
||
|
ULS_PROVIDER_INFO_A;
|
||
|
|
||
|
#ifdef UNICODE
|
||
|
typedef ULS_PROVIDER_INFO_W ULS_PROVIDER_INFO;
|
||
|
#else
|
||
|
typedef ULS_PROVIDER_INFO_A ULS_PROVIDER_INFO;
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#endif // _ULSAPI_H_
|
||
|
|