sig
  type 'a interface
  type 'a iid
  type clsid
  type 'a opaque
  exception Error of int * string * string
  val initialize : unit -> unit
  val uninitialize : unit -> unit
  val query_interface : 'Com.interface -> 'Com.iid -> 'Com.interface
  type iUnknown
  type iDispatch
  val iUnknown_of : 'Com.interface -> Com.iUnknown Com.interface
  val combine : 'Com.interface -> 'Com.interface -> 'Com.interface
  val clsid : string -> Com.clsid
  val create_instance : Com.clsid -> 'Com.iid -> 'Com.interface
  type 'a component_factory = {
    create : unit -> 'Com.interface;
    clsid : Com.clsid;
    friendly_name : string;
    ver_ind_prog_id : string;
    prog_id : string;
  }
  val register_factory : 'Com.component_factory -> unit
  type hRESULT_int = int
  type hRESULT_bool = bool
  type bSTR = string
  val _parse_iid : string -> 'Com.iid
end