let bus = DBus.Bus.get (if using_session then DBus.Bus.Session else DBus.Bus.System) in
let timeout = match timeout with None -> 0 | Some t -> int_of_float (t *. 1000.) in
- let dest = "org.xen.vm" in
let intf = Printf.sprintf "org.xen.vm.%s" (String.replace "-" "_" id) in
+ let dest = intf in
let method_name, params = query in
let msg = DBus.Message.new_method_call dest "/" intf method_name in
- DBus.Message.append msg [];
+ let params = List.map (fun (k, v) -> DBus.String k, DBus.String v) params in
+ DBus.Message.append msg [ DBus.Array (DBus.Dicts ((DBus.SigString, DBus.SigString), params)) ];
let reply = DBus.Connection.send_with_reply_and_block bus msg timeout in
let args = DBus.Message.get reply in
match DBus.Message.get_type reply, args with