#include "basetsd.idl"


[ uuid(2F5F6521-CA47-1068-B31A-00DD010662DB),
  version(1.0),
#ifdef __midl
        ms_union,
#endif // __midl
  pointer_default(unique)
]

interface esp

{

long
ESPAttach(
    [in]    long        lProcessID,
    [out]   ULONG_PTR  *phShutdownEvent,
    [out]   ULONG_PTR  *phDebugOutputEvent,
    [out]   ULONG_PTR  *phWidgetEventsEvent
    );

void
ESPSetOptions(
    [in]    long        lDebugOptions,
    [in]    long        lCompletionMode
    );

void
ESPCompleteRequest(
    [in]    ULONG_PTR   lAsyncReqInfo,
    [in]    long        lResult
    );

long
ESPEvent(
    [in]    ULONG_PTR   htDevice,
    [in]    ULONG_PTR   htCall,
    [in]    ULONG_PTR   Msg,
    [in]    ULONG_PTR   Param1,
    [in]    ULONG_PTR   Param2,
    [in]    ULONG_PTR   Param3
    );

void
ESPGetDebugOutput(
    [out, length_is(*plSize), size_is(*plSize)] char pBuffer[],
    [in, out]   long   *plSize
    );

void
ESPGetWidgetEvents(
    [out, length_is(*plSize), size_is(*plSize)] char pBuffer[],
    [in, out]   long   *plSize
    );

long
ESPStartPBXThread(
    [in, length_is(lSize), size_is(lSize)] char pBuffer[],
    [in]    long    lSize
    );

long
ESPStopPBXThread(
    [in]    long    dummy
    );

}
