//+--------------------------------------------------------------------------
//
// 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";

cpp_quote("#define EXITEVENT_INVALID               ( 0x0 )  // Invalid event")
cpp_quote("#define EXITEVENT_CERTISSUED            ( 0x1 )  // Certificate issued")
cpp_quote("#define EXITEVENT_CERTPENDING           ( 0x2 )  // Certificate pending")
cpp_quote("#define EXITEVENT_CERTDENIED            ( 0x4 )  // Certificate denied")
cpp_quote("#define EXITEVENT_CERTREVOKED           ( 0x8 )  // Certificate revoked")
cpp_quote("#define EXITEVENT_CERTRETRIEVEPENDING   ( 0x10 ) // Certificate retrieval")
cpp_quote("#define EXITEVENT_CRLISSUED             ( 0x20 ) // CRL issued")
cpp_quote("#define EXITEVENT_SHUTDOWN              ( 0x40 ) // Service shutdown")
cpp_quote("#define EXITEVENT_STARTUP               ( 0x80 ) // Service startup, fake event generated by exit module")


//+--------------------------------------------------------------------------
// 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);
};
