// SAFSessionResolver.idl : IDL source for SAFSessionResolver.dll
//

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

import "oaidl.idl";
import "ocidl.idl";

    /**
    **  ISAFRemoteDesktopCallback Interface
    **/
    cpp_quote("")
    cpp_quote("#define DISPID_RDSCALLBACK_RESOLVEUSERSESSIONID     1")
    cpp_quote("#define DISPID_RDSCALLBACK_ONDISCONNECT             2")
    cpp_quote("")
    #define DISPID_RDSCALLBACK_RESOLVEUSERSESSIONID       1
    #define DISPID_RDSCALLBACK_ONDISCONNECT               2

    [
        object,
        uuid(A39442C2-10A5-4805-BE54-5E6BA334DC29),
        dual,
        helpstring("ISAFRemoteDesktopServer Interface"),
        pointer_default(unique)
    ]
    interface ISAFRemoteDesktopCallback : IDispatch
    {
        [id(DISPID_RDSCALLBACK_RESOLVEUSERSESSIONID), helpstring("method ResolveUserSessionID")] 
        HRESULT ResolveUserSessionID(
                        [in] BSTR connectParms, 
                        [in] BSTR userSID, 
                        [in] BSTR expertHelpBlob,
                        [in] BSTR userHelpBlob,
                        [out] long *sessionID,
                        [in]  DWORD dwPID,
                        [out] ULONG_PTR* hHelpCtr,
                        [out, retval] int* userResponse
                        );

        [id(DISPID_RDSCALLBACK_ONDISCONNECT), helpstring("method OnDisconnect")]
        HRESULT OnDisconnect([in] BSTR connectParms, [in] BSTR userSID, [in] long sessionID);
    };



[
	uuid(087EAABE-39BA-47C2-AB77-A93009A70F0A),
	version(1.0),
	helpstring("SAFSessionResolver 1.0 Type Library")
]
library SAFSESSIONRESOLVERLib
{
	importlib("stdole32.tlb");
	importlib("stdole2.tlb");

	[
		uuid(A55737AB-5B26-4A21-99B7-6D0C606F515E),
		helpstring("SessionResolver Class")
	]
	coclass SessionResolver
	{
		[default] interface ISAFRemoteDesktopCallback;

	}
};
