//+--------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1996 - 1999
//
// File:        certexit.idl
//
// Contents:    IDL source for certexit.dll
//
//---------------------------------------------------------------------------

// This file will be processed by the MIDL tool to produce the type library
// (certexit.tlb) and marshalling code.

import "wtypes.idl";
import "certmod.idl";

const LONG EXITEVENT_INVALID =    	   0x00000000;	// invalid event
const LONG EXITEVENT_CERTISSUED =	   0x00000001;	// Certificate issued
const LONG EXITEVENT_CERTPENDING =	   0x00000002;	// Certificate pending
const LONG EXITEVENT_CERTDENIED = 	   0x00000004;	// Certificate denied
const LONG EXITEVENT_CERTREVOKED = 	   0x00000008;	// Certificate revoked
const LONG EXITEVENT_CERTRETRIEVEPENDING = 0x00000010;	// Certificate retrieval
const LONG EXITEVENT_CRLISSUED =	   0x00000020;	// CRL issued
const LONG EXITEVENT_SHUTDOWN =		   0x00000040;	// Server shutdown


//+--------------------------------------------------------------------------
// ICertExit class -- local COM interface, local implementation
//+--------------------------------------------------------------------------

[
    object,
    uuid(e19ae1a0-7364-11d0-8816-00a0c903b83c),
    dual,
    helpstring("ICertExit Interface"),
    pointer_default(unique)
]

interface ICertExit: IDispatch
{
    import "oaidl.idl";

    HRESULT Initialize(
		[in] BSTR const strConfig,
		[out, retval] LONG *pEventMask);

    HRESULT Notify(
		[in] LONG ExitEvent,
		[in] LONG Context);

    HRESULT GetDescription(
		[out, retval] BSTR *pstrDescription);
};


//+--------------------------------------------------------------------------
// ICertExit2 -- local COM interface
//+--------------------------------------------------------------------------

[
    object,
    uuid(0abf484b-d049-464d-a7ed-552e7529b0ff),
    dual,
    helpstring("ICertExit2 Interface"),
    pointer_default(unique)
]

interface ICertExit2: ICertExit
{
    HRESULT GetManageModule(
		[out, retval] ICertManageModule **ppManageModule);
};
