//[ IRawRpc_itf
//+-------------------------------------------------------------------
//
//  Interface:	IRawRpc
//
//  Purpose:	Interface for testing Rpc calls via Raw Rpc interfaces
//
//  History:	23-Nov-92   Rickhi	Created
//
//  Notes:
//
//--------------------------------------------------------------------

[ uuid(00000145-0001-0008-C000-000000000046),
  pointer_default(unique) ]

interface IRawRpc
{
    import "wtypes.idl";

    //	tells server process to exit.
    SCODE   Quit([in] handle_t hRpc);

    //	test passing void parameters
    SCODE Void([in] handle_t hRpc);
    SCODE VoidRC([in] handle_t hRpc);

    //	test passing void ptr parameters ie byte arrays
    SCODE VoidPtrIn([in] handle_t hRpc,
		    [in] ULONG cb,
		    [in, size_is(cb)] BYTE *pv);

    SCODE VoidPtrOut([in] handle_t hRpc,
		     [in] ULONG cb,
		     [out] ULONG *pcb,
		     [out, size_is(cb), length_is(*pcb)] BYTE *pv);

    //	test passing dword parameters
    SCODE DwordIn([in] handle_t hRpc, [in] DWORD dw);
    SCODE DwordOut([in] handle_t hRpc, [out] DWORD *pdw);
    SCODE DwordInOut([in] handle_t hRpc, [in,out] DWORD *pdw);

    //	test passing LARGE_INTEGER parameters
    SCODE LiIn([in] handle_t hRpc, [in] LARGE_INTEGER li);
    SCODE LiOut([in] handle_t hRpc, [out] LARGE_INTEGER *pli);
    SCODE ULiIn([in] handle_t hRpc, [in] ULARGE_INTEGER uli);
    SCODE ULiOut([in] handle_t hRpc, [out] ULARGE_INTEGER *puli);

    //	test passing string parameters
    SCODE StringIn([in] handle_t hRpc, [in,string] LPWSTR pwsz);
    SCODE StringOut([in] handle_t hRpc, [out,string] LPWSTR *ppwsz);
    SCODE StringInOut([in] handle_t hRpc, [in,out,string] LPWSTR pwsz);

    //	test passing GUID parameters
    SCODE GuidIn([in] handle_t hRpc, [in] GUID guid);
    SCODE GuidOut([in] handle_t hRpc, [out] GUID *pguid);
}

//]
