Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1136 lines
34 KiB

// winsip.idl
//
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("// winsip.idl")
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("// (C) Copyright 2000-2001 Microsoft Corporation. All Rights Reserved.")
cpp_quote("//")
cpp_quote("// THIS CODE AND INFORMATION IS PROVIDED \"AS IS\" WITHOUT WARRANTY OF")
cpp_quote("// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO")
cpp_quote("// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A")
cpp_quote("// PARTICULAR PURPOSE.")
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("")
cpp_quote("#include <windows.h>")
import "unknwn.idl";
import "ocidl.idl";
import "wbemcli.idl";
//
// STRING is the struct defined in ntdef.h
//
cpp_quote("#ifndef _NTDEF_")
typedef char * PCHAR;
typedef BYTE * PBYTE;
typedef struct _STRING {
USHORT Length;
USHORT MaximumLength;
[size_is(MaximumLength), length_is(Length) ]
PCHAR Buffer;
} STRING;
typedef STRING *PSTRING;
cpp_quote("#endif // _NTDEF_")
typedef ULONG_PTR SIP_HANDLE;
typedef SIP_HANDLE* PSIP_HANDLE;
// SIP header types %11
typedef DWORD SIPHeaderID;
const SIPHeaderID SIP_HID_UNKNOWN = 0; // 1 or more
const SIPHeaderID SIP_HID_VIA = 1; // 1 or more headers
const SIPHeaderID SIP_HID_CONTACT = 2; // 1+
const SIPHeaderID SIP_HID_ROUTE = 3; // 1+
const SIPHeaderID SIP_HID_TO = 4;
const SIPHeaderID SIP_HID_FROM = 5;
const SIPHeaderID SIP_HID_CALL_ID = 6;
const SIPHeaderID SIP_HID_CSEQ = 7;
const SIPHeaderID SIP_HID_CONTENT_LENGTH = 8;
const SIPHeaderID SIP_HID_RECORD_ROUTE = 9;
const SIPHeaderID SIP_HID_PROXY_AUTHORIZATION = 10;
const SIPHeaderID SIP_HID_AUTHENTICATION_INFO = 14;
const SIPHeaderID SIP_HID_AUTHORIZATION = 15;
const SIPHeaderID SIP_HID_EVENT = 16;
const SIPHeaderID SIP_HID_EXPIRES = 17;
const SIPHeaderID SIP_HID_MAX_FORWARDS = 18;
const SIPHeaderID SIP_HID_PROXY_AUTHENTICATE = 19;
const SIPHeaderID SIP_HID_PROXY_AUTHENTICATION_INFO = 20;
const SIPHeaderID SIP_HID_SOAPACTION = 24;
const SIPHeaderID SIP_HID_ACCEPT = 25;
const SIPHeaderID SIP_HID_ACCEPT_CONTACT = 26;
const SIPHeaderID SIP_HID_ACCEPT_ENCODING = 27;
const SIPHeaderID SIP_HID_ACCEPT_LANGUAGE = 28;
const SIPHeaderID SIP_HID_ALLOW = 29;
const SIPHeaderID SIP_HID_ALLOW_EVENTS = 30;
const SIPHeaderID SIP_HID_CONTENT_DISPOSITION = 31;
const SIPHeaderID SIP_HID_CONTENT_ENCODING = 32;
const SIPHeaderID SIP_HID_CONTENT_FUNCTION = 33;
const SIPHeaderID SIP_HID_CONTENT_LANGUAGE = 34;
const SIPHeaderID SIP_HID_CONTENT_KEY = 35;
const SIPHeaderID SIP_HID_CONTENT_TYPE = 36;
const SIPHeaderID SIP_HID_DATE = 37;
const SIPHeaderID SIP_HID_ENCRYPTION = 38;
const SIPHeaderID SIP_HID_HIDE = 39;
const SIPHeaderID SIP_HID_IN_REPLY_TO = 40;
const SIPHeaderID SIP_HID_MIME_VERSION = 41;
const SIPHeaderID SIP_HID_ORGANIZATION = 42;
const SIPHeaderID SIP_HID_PRIORITY = 43;
const SIPHeaderID SIP_HID_PROXY_REQUIRE = 44;
const SIPHeaderID SIP_HID_PROXY_TYPE = 45;
const SIPHeaderID SIP_HID_REJECT_CONTACT = 46;
const SIPHeaderID SIP_HID_REQUEST_DISPOSITION = 47;
const SIPHeaderID SIP_HID_REQUIRE = 48;
const SIPHeaderID SIP_HID_RESPONSE_KEY = 49;
const SIPHeaderID SIP_HID_RETRY_AFTER = 50;
const SIPHeaderID SIP_HID_SERVER = 51;
const SIPHeaderID SIP_HID_SUBJECT = 52;
const SIPHeaderID SIP_HID_SUPPORTED = 53;
const SIPHeaderID SIP_HID_TIMESTAMP = 54;
const SIPHeaderID SIP_HID_UNSUPPORTED = 55;
const SIPHeaderID SIP_HID_USER_AGENT = 56;
const SIPHeaderID SIP_HID_WARNING = 57;
const SIPHeaderID SIP_HID_WWW_AUTHENTICATE = 58;
typedef enum {
URI_SCHEME_UNKNOWN,
URI_SCHEME_SIP
} URI_SCHEME;
typedef enum {
CONTACT_ACTION_UNKNOWN,
CONTACT_ACTION_PROXY,
CONTACT_ACTION_REDIRECT
} CONTACT_ACTION;
typedef enum {
SIP_MODULE_INCOMING_PROCESSING,
SIP_MODULE_ROUTING_PROCESSING,
SIP_MODULE_OUTGOING_PROCESSING
} SIP_MODULE_TYPE;
typedef enum {
SIP_AUTH_PKG_UNKNOWN = 0x00,
SIP_AUTH_PKG_NONE = 0x01,
SIP_AUTH_PKG_NEGOTIATE = 0x02,
SIP_AUTH_PKG_KERBEROS = 0x04,
SIP_AUTH_PKG_NTLM = 0x08,
SIP_AUTH_PKG_DIGEST = 0x10,
SIP_AUTH_PKG_BASIC = 0x20,
SIP_AUTH_PKG_ANY = 0xFF,
} SIP_AUTH_PACKAGEID;
const USHORT SIP_AUTH_PACKAGES = 0x7;
//
// values used by extension modules to register for state events
//
typedef enum
{
SIP_REGISTRATION_RAW_SIP_MESSAGES = 0x1, // all sip messages, no state
SIP_REGISTRATION_TRANSACTION_EVENTS = 0x2,
SIP_REGISTRATION_DIALOG_EVENTS = 0x4
} SIPRegistrationType;
//
// definitions for session types observed by the state manager
//
typedef enum
{
SIP_SESSION_TYPE_TRANSACTION,
SIP_SESSION_TYPE_DIALOG
} SIPEventType;
//
// possible transaction state events
//
typedef enum
{
// helper flags
SIP_COMPLETED_FLAG = 0x100,
SIP_REPLY_FLAG = 0x200,
SIP_RETRANSMISSION_FLAG = 0x400,
SIP_REROUTE_FLAG = 0x800,
// the actual possible transaction state events
SIP_TRANSACTION_NONE = 0x0,
// received a message that started a new transaction
SIP_TRANSACTION_REQUEST_STARTED = 0x1,
SIP_TRANSACTION_REQUEST_STARTED_REROUTE = SIP_TRANSACTION_REQUEST_STARTED | SIP_REROUTE_FLAG,
// received a retransmission for an existing transaction
SIP_TRANSACTION_REQUEST_RETRANSMISSION = 0x2 | SIP_RETRANSMISSION_FLAG,
SIP_TRANSACTION_REQUEST_RETRANSMISSION_REROUTE = SIP_TRANSACTION_REQUEST_RETRANSMISSION | SIP_REROUTE_FLAG,
// received a cancel for an existing transaction
SIP_TRANSACTION_REQUEST_CANCEL_ATTEMPTED = 0x3,
SIP_TRANSACTION_REQUEST_CANCEL_ATTEMPTED_REROUTE = SIP_TRANSACTION_REQUEST_CANCEL_ATTEMPTED | SIP_REROUTE_FLAG,
// received a provisional reply for an existing transaction
SIP_TRANSACTION_REPLY_PROVISIONAL = 0x4 | SIP_REPLY_FLAG,
// received a final reply for an existing transaction
SIP_TRANSACTION_REPLY_ERROR_COMPLETED = 0x5 | SIP_COMPLETED_FLAG | SIP_REPLY_FLAG,
SIP_TRANSACTION_REPLY_CANCELLED_COMPLETED = 0x6 | SIP_COMPLETED_FLAG | SIP_REPLY_FLAG,
SIP_TRANSACTION_REPLY_REDIRECT_COMPLETED = 0x7 | SIP_COMPLETED_FLAG | SIP_REPLY_FLAG,
SIP_TRANSACTION_REPLY_SUCCESS_COMPLETED = 0x8 | SIP_COMPLETED_FLAG | SIP_REPLY_FLAG,
// transaction completed due to a timeout
SIP_TRANSACTION_TIMEOUT_COMPLETED = 0x9 | SIP_COMPLETED_FLAG,
// transaction completed due to a timeout that took place after cancel successfully completed
SIP_TRANSACTION_TIMEOUT_CANCEL_COMPLETED = 0xa | SIP_COMPLETED_FLAG,
// we received a terminating non-success response to cancel
SIP_TRANSACTION_REQUEST_CANCEL_CANCELLED = 0xb,
// we received a success reply to the cancel
SIP_TRANSACTION_REQUEST_CANCEL_REPLIED = 0xc | SIP_REPLY_FLAG,
//
// ack is a transaction in itself
//
SIP_TRANSACTION_REQUEST_ACK = 0xd | SIP_COMPLETED_FLAG,
SIP_TRANSACTION_REQUEST_ACK_REROUTE = SIP_TRANSACTION_REQUEST_ACK | SIP_REROUTE_FLAG
} SIPTransactionEvent;
//
// Multimedia Session State events
//
typedef enum
{
SIP_DIALOG_NONE = 0x0,
SIP_DIALOG_INITIATED = 0x1,
SIP_DIALOG_INITIATED_REROUTE = SIP_DIALOG_INITIATED | SIP_REROUTE_FLAG,
SIP_DIALOG_CONFIRMED = 0x2,
SIP_DIALOG_ESTABLISHED = 0x3,
SIP_DIALOG_ESTABLISHED_REROUTE = SIP_DIALOG_ESTABLISHED | SIP_REROUTE_FLAG,
SIP_DIALOG_REINITIATED = 0x4,
SIP_DIALOG_REINITIATED_REROUTE = SIP_DIALOG_REINITIATED | SIP_REROUTE_FLAG,
SIP_DIALOG_RECONFIRMED = 0x5,
SIP_DIALOG_REESTABLISHED = 0x6,
SIP_DIALOG_REESTABLISHED_REROUTE = SIP_DIALOG_REESTABLISHED | SIP_REROUTE_FLAG,
SIP_DIALOG_REINITIATION_TIMED_OUT = 0x7,
SIP_DIALOG_RECONFIRMATION_TIMED_OUT = 0x8,
SIP_DIALOG_REINITIATION_REJECTED = 0x9,
SIP_DIALOG_REINITIATION_CANCELLED = 0xa,
SIP_DIALOG_CLOSED = 0xb | SIP_COMPLETED_FLAG,
SIP_DIALOG_CLOSED_TIMED_OUT = 0xc | SIP_COMPLETED_FLAG,
SIP_DIALOG_CLOSED_REJECTED = 0xd | SIP_COMPLETED_FLAG,
SIP_DIALOG_CLOSED_CANCELLED = 0xe | SIP_COMPLETED_FLAG,
SIP_DIALOG_MAX = 0xf
} SIPDialogEvent;
//
// Status code definition
//
//Informational
cpp_quote("#define STATUS_CODE_TRYING 100")
cpp_quote("#define STATUS_CODE_RINGING 180")
cpp_quote("#define STATUS_CODE_FORWARDED 181")
cpp_quote("#define STATUS_CODE_QUEUED 182")
cpp_quote("#define STATUS_CODE_SESSION_PROGRESS 183")
//Successful
cpp_quote("#define STATUS_CODE_OK 200")
cpp_quote("#define STATUS_CODE_ACCEPTED 202")
//Redirection
cpp_quote("#define STATUS_CODE_MULTIPLE_CHOICES 300")
cpp_quote("#define STATUS_CODE_MOVED_PERMANENTLY 301")
cpp_quote("#define STATUS_CODE_MOVED_TEMPORARILY 302")
cpp_quote("#define STATUS_CODE_USE_PROXY 305")
cpp_quote("#define STATUS_CODE_ALTERNATIVE_SERVICES 380")
//Request Failure
cpp_quote("#define STATUS_CODE_BAD_REQUEST 400")
cpp_quote("#define STATUS_CODE_UNAUTHORIZED 401")
cpp_quote("#define STATUS_CODE_PAYMENT_REQUIRED 402")
cpp_quote("#define STATUS_CODE_FORBIDDEN 403")
cpp_quote("#define STATUS_CODE_NOT_FOUND 404")
cpp_quote("#define STATUS_CODE_METHOD_UNALLOWED 405")
cpp_quote("#define STATUS_CODE_NOT_ACCEPTABLE 406")
cpp_quote("#define STATUS_CODE_PXY_AUTHENTICATION_REQUIRED 407")
cpp_quote("#define STATUS_CODE_TIMEOUT 408")
cpp_quote("#define STATUS_CODE_CONFLICT 409")
cpp_quote("#define STATUS_CODE_GONE 410")
cpp_quote("#define STATUS_CODE_LENGTH_REQUIRED 411")
cpp_quote("#define STATUS_CODE_ENTITY_TOOLARGE 413")
cpp_quote("#define STATUS_CODE_URI_TOOLONG 414")
cpp_quote("#define STATUS_CODE_UNSUPPORTED_MEDIA_TYPE 415")
cpp_quote("#define STATUS_CODE_BAD_EXTENSION 420")
cpp_quote("#define STATUS_CODE_TEMP_UNAVAILABLE 480")
cpp_quote("#define STATUS_CODE_CALLLEG_UNAVAILABLE 481")
cpp_quote("#define STATUS_CODE_LOOP_DETECTED 482")
cpp_quote("#define STATUS_CODE_TOOMANY_HOPS 483")
cpp_quote("#define STATUS_CODE_ADDRESS_INCOMPLETE 484")
cpp_quote("#define STATUS_CODE_AMBIGUOUS 485")
cpp_quote("#define STATUS_CODE_BUSY_HERE 486")
cpp_quote("#define STATUS_CODE_TERMINATED 487")
cpp_quote("#define STATUS_CODE_NOT_ACCEPTABLE_HERE 488")
//Server Failure
cpp_quote("#define STATUS_CODE_SERVER_INTERNAL 500")
cpp_quote("#define STATUS_CODE_NOT_IMPLEMENTED 501")
cpp_quote("#define STATUS_CODE_BAD_GATEWAY 502")
cpp_quote("#define STATUS_CODE_SERVICE_UNAVAILABLE 503")
cpp_quote("#define STATUS_CODE_SERVER_TIMEOUT 504")
cpp_quote("#define STATUS_CODE_VERSION_INCOMPATIBLE 505")
//Global Failure
cpp_quote("#define STATUS_CODE_BUSY_ALL 600")
cpp_quote("#define STATUS_CODE_DECLINE 603")
cpp_quote("#define STATUS_CODE_NONEXIST_ALL 604")
cpp_quote("#define STATUS_CODE_NOT_ACCEPTABLE_ALL 606")
interface ISIPElement;
interface ISIPHeader;
interface IUri;
interface ISIPUrl;
interface ISIPFromToHeader;
interface ISIPContactEntry;
interface ISIPContactEnum;
interface ISIPMessage;
interface ISIPRequest;
interface ISIPResponse;
interface ISIPEvent;
interface ISIPController;
interface ISIPModuleControl;
interface ISIPModuleCallback;
interface IEnumSIPModule;
interface ISIPProxy;
interface ISIPRegistrationDB;
interface ISIPEventLogging;
interface ISIPAuthRequest;
interface ISIPExtensionModulePropertyPages;
interface ISIPSerialize;
/////////////////////////////////////////////////////////////////
// ISIPElement
/////////////////////////////////////////////////////////////////
[
local,
object,
uuid(8eeebdef-acd5-467e-b631-fe5650f065bd),
helpstring("ISIPElement Interface"),
pointer_default(unique)
]
interface ISIPElement : IUnknown
{
HRESULT GetContentString(
[out] PSTRING pstrContent
);
}
/////////////////////////////////////////////////////////////////
// ISIPHeader
/////////////////////////////////////////////////////////////////
[
local,
object,
uuid(f59970a5-6f54-4269-9b96-416f8d231a85),
helpstring("ISIPHeader Interface"),
pointer_default(unique)
]
interface ISIPHeader : ISIPElement
{
HRESULT GetHeaderID(
[out] SIPHeaderID * pHeaderID
);
HRESULT GetHeaderNameString(
[out] PSTRING pstrHeaderNameString
);
}
/////////////////////////////////////////////////////////////////
// IUri
/////////////////////////////////////////////////////////////////
[
local,
object,
uuid(3ff9e85e-b735-4384-aff8-0f72d6dad59d),
helpstring("IUri Interface"),
pointer_default(unique)
]
interface IUri : ISIPElement
{
HRESULT GetURIScheme(
[out] URI_SCHEME * pUriScheme
);
HRESULT GetDisplayName(
[out] PSTRING pstrDisplayName
);
HRESULT GetUser(
[out] PSTRING pstrUser
);
HRESULT GetPassword(
[out] PSTRING pstrPassword
);
HRESULT GetHost(
[out] PSTRING pstrHost
);
HRESULT GetPort(
[out] PSTRING pstrPort
);
//
// Return a NULL-terminated normalized "user@host" string
//
HRESULT GetUserAtHost(
[out] PSTRING pstrUserName
);
}
/////////////////////////////////////////////////////////////////
// ISIPUrl
/////////////////////////////////////////////////////////////////
[
local,
object,
uuid(45af89e5-b0aa-423f-bb54-d623b1505642),
helpstring("ISIPUrl Interface"),
pointer_default(unique)
]
interface ISIPUrl : IUri
{
HRESULT GetTransport(
[out] PSTRING pstrTransport
);
HRESULT GetUserParam(
[out] PSTRING pstrUserParam
);
HRESULT GetMethod(
[out] PSTRING pstrMethod
);
HRESULT GetTtl(
[out] PSTRING pstrTtl
);
HRESULT GetMaddr(
[out] PSTRING pstrMaddr
);
HRESULT GetHeaders(
[out] PSTRING pstrHeaders
);
}
/////////////////////////////////////////////////////////////////
// ISIPFromToHeader
/////////////////////////////////////////////////////////////////
[
local,
object,
uuid(4fd9e8f8-b6a4-4391-b03b-9d89b8b0a02b),
helpstring("ISIPFromToHeader Interface"),
pointer_default(unique)
]
interface ISIPFromToHeader : ISIPHeader
{
HRESULT GetUri(
[out] IUri ** ppUri
);
HRESULT GetTag(
[out] STRING * pstrTag
);
}
/////////////////////////////////////////////////////////////////
// ISIPContactEntry
/////////////////////////////////////////////////////////////////
[
local,
object,
uuid(0c64209e-6276-4b95-baee-20e0b0e8332b),
helpstring("ISIPContactEntry Interface"),
pointer_default(unique)
]
interface ISIPContactEntry : ISIPElement
{
// Is the entry '*' ?
HRESULT IsAll(
[out] BOOL * pbAll
);
HRESULT GetUri(
[out] IUri ** ppUri
);
HRESULT GetAction(
[out] CONTACT_ACTION* pAction
);
HRESULT GetQValue(
[out] DWORD * pdwQValue
);
HRESULT GetExpires(
[out] PSTRING pstrExpires
);
HRESULT SetExpires(
[in] PSTRING pstrExpires
);
HRESULT GetGenericParameter(
[in] PSTRING pstrParamName,
[out] PSTRING pstrParamValue
);
}
/////////////////////////////////////////////////////////////////
// ISIPContactEnum
/////////////////////////////////////////////////////////////////
[
local,
object,
uuid(7b219813-0e07-49d5-b029-289f3de2e12c),
helpstring("ISIPContactEnum Interface"),
pointer_default(unique)
]
interface ISIPContactEnum : IUnknown
{
HRESULT Next(
[out] ISIPContactEntry ** ppContactEntry
);
HRESULT Reset();
HRESULT Clone(
[out] ISIPContactEnum ** ppTwinContactEnum
);
}
/////////////////////////////////////////////////////////////////
// ISIPMessage
/////////////////////////////////////////////////////////////////
[
local,
object,
uuid(48F2C19C-CB7A-4231-82EB-A6B5EC0A250A),
helpstring("ISIPMessage Interface"),
pointer_default(unique)
]
interface ISIPMessage : IUnknown
{
HRESULT IsIncomingMessage(
[out, retval] BOOL * pbIncomingMessage
);
HRESULT GetSipVersion(
[out] PSTRING pstrSipVersion
);
// Generic header interface
HRESULT GetHeader(
[in] SIPHeaderID headerID,
[out, retval] ISIPHeader ** ppSipHeader
);
// Get the next SIP header of the same header type
HRESULT GetNextHeader(
[in] ISIPHeader * pSipHeader,
[out, retval] ISIPHeader ** ppNextSipHeader
);
//
// They will be put ahead of the existing headers
//
HRESULT AddHeader(
[in] SIPHeaderID headerID,
[in] PSTRING pstrBuffer
);
HRESULT DeleteHeader(
[in] ISIPHeader * pSipHeader
);
// Body interface
HRESULT GetBody(
[out] PSTRING pstrBody
);
HRESULT SetBody(
[in] PSTRING pstrBody
);
HRESULT GetContactEnum(
[out, retval] ISIPContactEnum ** ppContactEnum
);
HRESULT Discard();
// Only used for locally generated message
HRESULT Send();
//
// functions for manipulating message context
//
HRESULT SetMessageContext([in] IUnknown *pMessageContext);
HRESULT GetMessageContext([out] IUnknown **ppMessageContext);
}
/////////////////////////////////////////////////////////////////
// ISIPRequest
/////////////////////////////////////////////////////////////////
[
local,
object,
uuid(BB3BCA24-CD24-401c-9B0F-1223C13AEF57),
helpstring("ISIPRequest Interface"),
pointer_default(unique)
]
interface ISIPRequest : ISIPMessage
{
// Start line interface
HRESULT GetMethod(
[out] PSTRING pstrMethod
);
HRESULT GetRequestURI(
[out] IUri ** ppSipRequestUri
);
//
// Authentication
//
HRESULT GetAuthenticationInfo(
[out] ISIPAuthRequest** ppAuthentication
);
//
// Proxy Request Info will be used to reconstruct this
// request to be forwarded
//
HRESULT GetProxyRequestInfo(
[out] IUnknown ** ppProxyRequestInfo
);
// A routing method
// only valid for routing-processing E.M.
HRESULT SetRequestURI(
[in] IUri * pSipRequestUri
);
// Reply with the default Reason Phrase
HRESULT Reply(
[in] DWORD dwStatusCode
);
// Create a request with those typical headers from the current request
HRESULT CreateTypicalRequest(
[in] PSTRING pstrMethod,
[in] IUri * pSipRequestUri,
[in] IUnknown * pProxyRequestInfo,
[out] ISIPRequest ** ppNewRequest
);
HRESULT CreateTypicalResponse(
[in] DWORD dwStatusCode,
[in] PSTRING pstrReasonPhrase,
[out] ISIPResponse ** ppSipResponse
);
// Instruct the proxy to add a record route header
// for this request...
HRESULT AddRecordRoute();
}
/////////////////////////////////////////////////////////////////
// ISIPAuthRequest
/////////////////////////////////////////////////////////////////
[
local,
object,
uuid(6D63F6AD-92B0-4cc0-B600-672773B81261),
helpstring("ISIPAuthRequest Interface"),
pointer_default(unique)
]
interface ISIPAuthRequest : IUnknown
{
HRESULT GetProtocol(
[out] SIP_AUTH_PACKAGEID* psaPackageID
);
HRESULT GetUser(
[out] PSTRING pstrUser
);
HRESULT GetSecurityHandle(
[out] HANDLE* pSecHandle
);
HRESULT GetDelegatable(
[out] BOOL* pDelegatable
);
HRESULT Authenticate(
[in] DWORD dwPackages
);
}
/////////////////////////////////////////////////////////////////
// ISIPResponse
/////////////////////////////////////////////////////////////////
[
local,
object,
uuid(C2B69E61-52C1-4c9d-A86F-1AD115AF219B),
helpstring("ISIPResponse Interface"),
pointer_default(unique)
]
interface ISIPResponse : ISIPMessage
{
// Start line interface
HRESULT GetStatusCode(
[out] DWORD * pdwStatusCode
);
HRESULT GetReasonPhrase(
[out] PSTRING pstrReasonPhrase
);
}
/////////////////////////////////////////////////////////////////
// ISIPEvent
/////////////////////////////////////////////////////////////////
[
local,
object,
uuid(9f35f2f6-2a3d-465a-94e8-452b049a88d7),
helpstring("ISIPEvent Interface"),
pointer_default(unique)
]
interface ISIPEvent : IUnknown
{
HRESULT GetMessage(
[out] ISIPMessage ** ppSipMessage
);
HRESULT GetStateEvents(
[out] SIPTransactionEvent *pTransactionEvent,
[out] SIPDialogEvent *pDialogEvent
);
HRESULT GetRegistrationContext(
[in] SIPRegistrationType enRegistrationContext,
[out] IUnknown ** ppRegistrationContext
);
//
// The Extension module maintains its context
// by these Set/Get methods
//
HRESULT SetStateContext(
[in] SIPEventType enSessionType,
[in] IUnknown * pEventContext
);
HRESULT GetStateContext(
[in] SIPEventType enSessionType,
[out] IUnknown ** ppEventContext
);
HRESULT CompleteProcessing();
}
/////////////////////////////////////////////////////////////////
// ISIPController
/////////////////////////////////////////////////////////////////
[
local,
object,
uuid(f2d8cbbb-aa79-4577-a4b6-d6e78d243c7d),
helpstring("ISIPController Interface"),
pointer_default(unique)
]
interface ISIPController : IUnknown
{
//
// event handler
//
HRESULT OnError(
[in] SIP_HANDLE hModuleHandle,
[in] HRESULT hrError,
[in] DWORD Reserved,
[in,unique,string]
LPWSTR szErrorDescription);
//
// method used by extension modules to get private interfaces on other extension modules
//
HRESULT GetModule(
[in] SIP_HANDLE hModuleHandle,
[in] CLSID *pProvidingEMClassID,
[in] SIP_MODULE_TYPE ProvidingEMType,
[in] IID *pRequestedInterface,
[out] IUnknown **ppIUnknown
);
}
/////////////////////////////////////////////////////////////////
// ISIPModuleControl
/////////////////////////////////////////////////////////////////
[
local,
object,
uuid(A1ED44F2-39DE-4d51-B252-25CF6071FABF),
helpstring("ISIPModuleControl Interface"),
pointer_default(unique)
]
interface ISIPModuleControl : IUnknown
{
//
// Lifetime control
//
HRESULT Initialize(
[in] ISIPController * pController,
[in] ISIPProxy * pSIPProxy,
[in] ISIPEventLogging * pEventLogging,
[in] SIP_MODULE_TYPE ModuleType,
[in] SIP_HANDLE hModuleHandle,
[out] ISIPRegistrationDB ** ppISIPRegistrationDB
);
HRESULT Shutdown();
//
// service control
//
HRESULT Start();
HRESULT Stop();
//
// Communication between extension modules
//
HRESULT GetPrivateInterface(
[in] CLSID * pRequestingEM,
[in] IID * pRequestedInterface,
[out] IUnknown ** ppIUnknown
);
}
/////////////////////////////////////////////////////////////////
// ISIPModuleCallback
/////////////////////////////////////////////////////////////////
[
local,
object,
uuid(4c14b478-67d6-4677-b456-4096c2edd36b),
helpstring("ISIPModuleCallback Interface"),
pointer_default(unique)
]
interface ISIPModuleCallback : IUnknown
{
HRESULT OnEvent(
[in] ISIPEvent * pSipEvent
);
}
/////////////////////////////////////////////////////////////////
// ISIPExtensionModulePropertyPages
/////////////////////////////////////////////////////////////////
[
object,
uuid(1184A566-9CD8-487e-8B27-6F1D687A8E1F),
dual,
helpstring("ISIPExtensionModulePropertyPages Interface"),
pointer_default(unique)
]
interface ISIPExtensionModulePropertyPages : ISpecifyPropertyPages
{
HRESULT SetInstance(
[in] IWbemClassObject *pInstance
);
HRESULT GetTitle(
[out] BSTR *pbstrTitle
);
};
/////////////////////////////////////////////////////////////////
// ISIPAdminCredentials
/////////////////////////////////////////////////////////////////
[
object,
uuid(1A9683B4-BA07-4d94-B384-E54E645121FA),
dual,
helpstring("ISIPAdminCredentials Interface"),
pointer_default(unique)
]
interface ISIPAdminCredentials : IUnknown
{
HRESULT putMachineName(
[in] const LPCWSTR pwszMachineName
);
HRESULT putUserName(
[in] const LPCWSTR pwszUserName
);
HRESULT putPassword(
[in] const LPCWSTR pwszPassword
);
HRESULT getMachineName(
[out] BSTR *pbstrMachineName
);
HRESULT getUserName(
[out] BSTR *pbstrUserName
);
HRESULT getPassword(
[out] BSTR *pbstrPassword
);
};
/////////////////////////////////////////////////////////////////
// ISIPCreateExtensionModule
/////////////////////////////////////////////////////////////////
[
object,
uuid(0F926CF4-C18A-47de-8F2A-532349D8C83B),
dual,
helpstring("ISIPCreateExtensionModule Interface"),
pointer_default(unique)
]
interface ISIPCreateExtensionModule : IUnknown
{
HRESULT CreateNewExtensionModuleInstance(
[in] IWbemServices *pIService,
[out] IWbemClassObject **ppIClassObject
);
};
/////////////////////////////////////////////////////////////////
// ISIPRegistrationDB
/////////////////////////////////////////////////////////////////
[
local,
object,
uuid(97b805b8-812e-4eda-adbd-7a003f047cc3),
helpstring("ISIPRegistrationDB Interface"),
pointer_default(unique)
]
interface ISIPRegistrationDB : IUnknown
{
HRESULT IsDomainSupported(
[in] PSTRING pstrDomain,
[out] BOOL * pbSupported
);
HRESULT GetAllContacts(
[in] PSTRING pstrUserAtHost,
[in] PSTRING pstrMethod,
[in] BOOL bMethodsOnly,
[out] SAFEARRAY(ISIPContactEntry*) * ppsaContacts
);
HRESULT GetPreferredContact(
[in] PSTRING strUserAtHost,
[in] PSTRING pstrMethod,
[in] BOOL bMethodsOnly,
[out] ISIPContactEntry ** ppContactEntry
);
}
/////////////////////////////////////////////////////////////////
// ISIPProxy
/////////////////////////////////////////////////////////////////
[
local,
object,
uuid(FA9C6B4E-E338-4D14-B5D2-9EF95EA0A4C4),
helpstring("ISIPProxy Interface"),
pointer_default(unique)
]
interface ISIPProxy : IUnknown
{
HRESULT CreateRequest(
[in] SIP_HANDLE hModuleHandle,
[in] PSTRING pstrMethod,
[in] IUri * pUri,
[in] PSTRING pstrFromHeaderContent,
[in] PSTRING pstrToHeaderContent,
[in] PSTRING pstrCallIDHeaderContent,
[in] PSTRING pstrCSeqHeaderContent,
[in] IUnknown * pProxyRequestInfo,
[out] ISIPRequest ** ppRequest
);
HRESULT CreateRequestEx(
[in] SIP_HANDLE hModuleHandle,
[in] PSTRING pstrMethod,
[in] ISIPContactEntry * pContact,
[in] PSTRING pstrFromHeaderContent,
[in] PSTRING pstrToHeaderContent,
[in] PSTRING pstrCallIDHeaderContent,
[in] PSTRING pstrCSeqHeaderContent,
[in] IUnknown * pProxyRequestInfo,
[out] ISIPRequest ** ppRequest
);
HRESULT CreateProxyRequestInfoObject(
[out] IUnknown ** ppProxyRequestInfo
);
HRESULT CreateUri(
[in] URI_SCHEME uriScheme,
[in] PSTRING pstrDisplayName,
[in] PSTRING pstrUriString,
[out] IUri ** ppUri
);
HRESULT GetHeaderID(
[in] PSTRING pstrHeaderName,
[out] SIPHeaderID * pHeaderID
);
HRESULT GetHeaderName(
[in] SIPHeaderID headerID,
[out] PSTRING pstrHeaderName
);
HRESULT GetRegistrationDB(
[out] ISIPRegistrationDB ** ppRegistrationDB
);
HRESULT RegisterURI(
[in] SIP_HANDLE hModuleHandle,
[in] IUri * pSipRequestURI,
// this must be "INVITE" if session types includes SIP_REGISTRATION_DIALOG_EVENTS
[in] PSTRING pstrMethod,
[in] DWORD dwSessionTypes, // or'ed SIPRegistrationType values
[in] IUnknown *punkRegistrationContext // the context that
// the module wants
// to associate with
// the uri pattern
// requested in IUri
);
HRESULT DeregisterURI(
[in] SIP_HANDLE hModuleHandle,
[in] IUri * pSipRequestUri
);
HRESULT FindRegistrationContext(
[in] SIP_HANDLE hModuleHandle,
[in] STRING *pstrMethod,
[in] SIPRegistrationType enRegistrationType,
[in] IUri *pURI,
[out] IUnknown **ppUnkRegistrationContext
);
}
/////////////////////////////////////////////////////////////////
// ISIPEventLogging
/////////////////////////////////////////////////////////////////
[
object,
uuid(834673F0-3076-427a-9D1E-3E3768E6AF5C),
helpstring("Event Logging"),
pointer_default(unique)
]
interface ISIPEventLogging : IUnknown
{
// ReportEvent methods should be called
// only between RegisterEventSource and DeregisterEventSource
HRESULT ReportEvent(
[in] WORD wType,
// Event type such as EVENTLOG_ERROR_TYPE
[in] WORD wCategory,
// Event category
[in] DWORD dwEventID
// The event ID
);
HRESULT ReportEventBLOB(
[in] WORD wType,
// Event type such as EVENTLOG_ERROR_TYPE
[in] WORD wCategory,
// Event category
[in] DWORD dwEventID,
// The event ID
[in] WORD wNumStrings,
// number of insertion strings
[in,size_is(wNumStrings)] LPCWSTR *lpStrings,
// Array of insertion strings (for %1 etc)
[in] DWORD dwDataSize,
// Size of binary data in bytes
[in,size_is(dwDataSize)] const BYTE *lpRawData
// Custom binary data buffer that will be attached to the event
);
};
/////////////////////////////////////////////////////////////////
// ISIPSerialize
/////////////////////////////////////////////////////////////////
[
object,
uuid(de680840-d7b3-427a-9d00-9d4a45ff9b8c),
helpstring("Serializing"),
pointer_default(unique)
]
interface ISIPSerialize : IUnknown
{
HRESULT Store(
[out] DWORD * pdwBufferSize,
[out,size_is(, *pdwBufferSize)] BYTE ** ppbBuffer
);
HRESULT Restore(
[in] const DWORD dwBufferSize,
[in,size_is(dwBufferSize)] const BYTE * pbBuffer
);
};