nucomcore 0.1.1

Nucom, cross-platform Component Object Model implementation
Documentation
import "iunknown.idl";
import "istream.idl";
include "imarshal_.h";

[
    object,
    uuid(00000003-0000-0000-c000-000000000046)
]
interface IMarshal : IUnknown
{
    HRESULT GetUnmarshalClass(
        [in] const GUID *iid,
        [in, poly(iid)] void *itf,
        [in] MarshalContext dest_context,
        [in] void *unused,
        [in] MarshalFlags marshal_flags,
        [out, retval] GUID *class_id,
    );

    HRESULT GetMarshalSizeMax(
        [in] const GUID *iid,
        [in, poly(iid)] void *itf,
        [in] MarshalContext dest_context,
        [in] void *unused,
        [in] MarshalFlags marshal_flags,
        [out, retval] size_t *size,
    );

    HRESULT Marshal(
        [in] IStream *stream,
        [in] const GUID *iid,
        [in, poly(iid)] void *itf,
        [in] MarshalContext dest_context,
        [in] void *unused,
        [in] MarshalFlags marshal_flags,
    );

    HRESULT Unmarshal(
        [in] IStream *stream,
        [in] const GUID *iid,
        [out, poly(iid)] void **itf,
    );

    HRESULT ReleaseMarshalData(
        [in] IStream *stream,
    );

    HRESULT DisconnectObject(
        [in] uint32_t unused,
    );
};