summaryrefslogtreecommitdiffstats
path: root/librpc/idl/mdssvc.idl
blob: e7004f074195223191ac4d7c6f132276b500aef0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import "misc.idl";
[
	uuid("885d85fb-c754-4062-a0e7-6872ce0064f4"),
	endpoint("ncacn_np:[\\pipe\\mdssvc]", "ncalrpc:"),
	version(2.0),
	helpstring("Spotlight metadata search service")
]
interface mdssvc
{
	void mdssvc_open(
		[in,out,ref]                             uint32         *device_id,
		[in,out,ref]                             uint32         *unkn2, /* always 0x17 ? */
		[in,out,ref]                             uint32         *unkn3, /* always 0 ? */
		[in][string,charset(UTF8),size_is(1025)] uint8           share_mount_path[],
		[in][string,charset(UTF8),size_is(1025)] uint8           share_name[],
		[out,string,charset(UTF8),size_is(1025)] uint8           share_path[],
		[out,ref]                                policy_handle  *handle
	);

	void mdssvc_unknown1(
		[in]        policy_handle   *handle,
		[in]        uint32          unkn1, /* always 0, some status ? */
		[in]        uint32          device_id,
		[in]        uint32          unkn3, /* = mdssvc_open.unkn2 ? */
		[in]        uint32          unkn4, /* always 0, some status ? */
		[in]        uint32          uid,
		[in]        uint32          gid,
		[out,ref]   uint32         *status,
		[out,ref]   uint32         *flags, /* always 0x6b000001 ? */
		[out,ref]   uint32         *unkn7  /* always 0 ? */
	);

	typedef [public] struct {
		uint32 length;
		uint32 size;
		[size_is(size),length_is(length)] uint8 *spotlight_blob;
	} mdssvc_blob;

	void mdssvc_cmd(
		[in]        policy_handle   *handle,
		[in]        uint32          unkn1, /* always 0, status ? */
		[in]        uint32          device_id,
		[in]        uint32          unkn3, /* = mdssvc_open.unkn2 ? */
		[in]        uint32          unkn4, /* always 0 ? */
		[in]        uint32          flags, /* always 0x6b000001 ? */
		[in]        mdssvc_blob     request_blob,
		[in]        uint32          unkn5, /* always 0 ? */
		[in]        uint32          max_fragment_size1,
		[in]        uint32          unkn6, /* always 1 ? */
		/* always max_fragment_size1 = max_fragment_size2 ? */
		[in]        uint32          max_fragment_size2,
		[in]        uint32          unkn7, /* always 0 ? */
		[in]        uint32          unkn8, /* always 0 ? */
		[out,ref]   uint32         *fragment,
		[out,ref]   mdssvc_blob    *response_blob,
		[out,ref]   uint32         *unkn9  /* always 0 ? */
	);

	void mdssvc_close(
		[in]        policy_handle   *in_handle,
		[in]        uint32          unkn1, /* always 0, some status ? */
		[in]        uint32          device_id,
		[in]        uint32          unkn2, /* = mdssvc_open.unkn2 ? */
		[in]        uint32          unkn3, /* always 0, some status ? */
		[out,ref]   policy_handle  *out_handle,
		[out,ref]   uint32         *status
	);
}