winapi_ui_automation/um/
oleacc.rs

1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6//! Mappings for the contents of oleacc.h
7use ctypes::{c_int, c_long, c_uchar, c_ulong, c_void};
8use shared::guiddef::{GUID, REFIID};
9use shared::minwindef::{BOOL, BYTE, DWORD, LRESULT, UINT, WPARAM};
10use shared::windef::{HMENU, HWND, POINT};
11use shared::winerror::HRESULT;
12use shared::wtypes::BSTR;
13use um::oaidl::{IDispatch, IDispatchVtbl, LPSAFEARRAY, SAFEARRAY, VARIANT};
14use um::unknwnbase::{IUnknown, IUnknownVtbl, LPUNKNOWN};
15use um::winnt::{LONG, LPCSTR, LPCWSTR, LPSTR, LPWSTR};
16FN!{stdcall LPFNLRESULTFROMOBJECT(
17    riid: REFIID,
18    wParam: WPARAM,
19    punk: LPUNKNOWN,
20) -> LRESULT}
21FN!{stdcall LPFNOBJECTFROMLRESULT(
22    lResult: LRESULT,
23    riid: REFIID,
24    wParam: WPARAM,
25    ppvObject: *mut *mut c_void,
26) -> HRESULT}
27FN!{stdcall LPFNACCESSIBLEOBJECTFROMWINDOW(
28    hwnd: HWND,
29    dwId: DWORD,
30    riid: REFIID,
31    ppvObject: *mut *mut c_void,
32) -> HRESULT}
33FN!{stdcall LPFNACCESSIBLEOBJECTFROMPOINT(
34    ptScreen: POINT,
35    ppacc: *mut *mut IAccessible,
36    pvarChild: *mut VARIANT,
37) -> HRESULT}
38FN!{stdcall LPFNCREATESTDACCESSIBLEOBJECT(
39    hwnd: HWND,
40    idObject: LONG,
41    riid: REFIID,
42    ppvObject: *mut *mut c_void,
43) -> HRESULT}
44FN!{stdcall LPFNACCESSIBLECHILDREN(
45    paccContainer: *mut IAccessible,
46    iChildStart: LONG,
47    cChildren: LONG,
48    rgvarChildren: *mut VARIANT,
49    pcObtained: *mut LONG,
50) -> HRESULT}
51DEFINE_GUID!{LIBID_Accessibility,
52    0x1ea4dbf0, 0x3c3b, 0x11cf, 0x81, 0x0c, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
53DEFINE_GUID!{IID_IAccessible,
54    0x618736e0, 0x3c3d, 0x11cf, 0x81, 0x0c, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
55DEFINE_GUID!{IID_IAccessibleHandler,
56    0x03022430, 0xABC4, 0x11d0, 0xBD, 0xE2, 0x00, 0xAA, 0x00, 0x1A, 0x19, 0x53}
57DEFINE_GUID!{IID_IAccIdentity,
58    0x7852b78d, 0x1cfd, 0x41c1, 0xa6, 0x15, 0x9c, 0x0c, 0x85, 0x96, 0x0b, 0x5f}
59DEFINE_GUID!{IID_IAccPropServer,
60    0x76c0dbbb, 0x15e0, 0x4e7b, 0xb6, 0x1b, 0x20, 0xee, 0xea, 0x20, 0x01, 0xe0}
61DEFINE_GUID!{IID_IAccPropServices,
62    0x6e26e776, 0x04f0, 0x495d, 0x80, 0xe4, 0x33, 0x30, 0x35, 0x2e, 0x31, 0x69}
63DEFINE_GUID!{IID_IAccPropMgrInternal,
64    0x2bd370a9, 0x3e7f, 0x4edd, 0x8a, 0x85, 0xf8, 0xfe, 0xd1, 0xf8, 0xe5, 0x1f}
65DEFINE_GUID!{CLSID_AccPropServices,
66    0xb5f8350b, 0x0548, 0x48b1, 0xa6, 0xee, 0x88, 0xbd, 0x00, 0xb4, 0xa5, 0xe7}
67DEFINE_GUID!{IIS_IsOleaccProxy,
68    0x902697fa, 0x80e4, 0x4560, 0x80, 0x2a, 0xa1, 0x3f, 0x22, 0xa6, 0x47, 0x09}
69DEFINE_GUID!{IIS_ControlAccessible,
70    0x38c682a6, 0x9731, 0x43f2, 0x9f, 0xae, 0xe9, 0x01, 0xe6, 0x41, 0xb1, 0x01}
71extern "C" {
72    pub fn LresultFromObject(
73        riid: REFIID,
74        wParam: WPARAM,
75        punk: LPUNKNOWN,
76    ) -> LRESULT;
77    pub fn ObjectFromLresult(
78        lResult: LRESULT,
79        riid: REFIID,
80        wParam: WPARAM,
81        ppvObject: *mut *mut c_void);
82    pub fn WindowFromAccessibleObject(
83        arg1: *mut IAccessible,
84        phwnd: *mut HWND);
85    pub fn AccessibleObjectFromWindow(
86        hwnd: HWND,
87        dwId: DWORD,
88        riid: REFIID,
89        ppvObject: *mut *mut c_void);
90    pub fn AccessibleObjectFromEvent(
91        hwnd: HWND,
92        dwId: DWORD,
93        dwChildId: DWORD,
94        ppacc: *mut *mut IAccessible,
95        pvarChild: *mut VARIANT);
96    pub fn AccessibleObjectFromPoint(
97        ptScreen: POINT,
98        ppacc: *mut *mut IAccessible,
99        pvarChild: *mut VARIANT);
100    pub fn AccessibleChildren(
101        paccContainer: *mut IAccessible,
102        iChildStart: LONG,
103        cChildren: LONG,
104        rgvarChildren: *mut VARIANT,
105        pcObtained: *mut LONG);
106    pub fn GetRoleTextA(
107        lRole: DWORD,
108        lpszRole: LPSTR,
109        cchRoleMax: UINT,
110    ) -> UINT;
111    pub fn GetRoleTextW(
112        lRole: DWORD,
113        lpszRole: LPWSTR,
114        cchRoleMax: UINT,
115    ) -> UINT;
116    pub fn GetStateTextA(
117        lStateBit: DWORD,
118        lpszState: LPSTR,
119        cchState: UINT,
120    ) -> UINT;
121    pub fn GetStateTextW(
122        lStateBit: DWORD,
123        lpszState: LPWSTR,
124        cchState: UINT,
125    ) -> UINT;
126    pub fn GetOleaccVersionInfo(
127        pVer: *mut DWORD,
128        pBuild: *mut DWORD);
129    pub fn CreateStdAccessibleObject(
130        hwnd: HWND,
131        idObject: LONG,
132        riid: REFIID,
133        ppvObject: *mut *mut c_void);
134    pub fn CreateStdAccessibleProxyA(
135        hwnd: HWND,
136        pClassName: LPCSTR,
137        idObject: LONG,
138        riid: REFIID,
139        ppvObject: *mut *mut c_void);
140    pub fn CreateStdAccessibleProxyW(
141        hwnd: HWND,
142        pClassName: LPCWSTR,
143        idObject: LONG,
144        riid: REFIID,
145        ppvObject: *mut *mut c_void);
146}
147pub const ANRUS_ON_SCREEN_KEYBOARD_ACTIVE: DWORD = 0x0000001;
148pub const ANRUS_TOUCH_MODIFICATION_ACTIVE: DWORD = 0x0000002;
149pub const ANRUS_PRIORITY_AUDIO_ACTIVE: DWORD = 0x0000004;
150pub const ANRUS_PRIORITY_AUDIO_ACTIVE_NODUCK: DWORD = 0x0000008;
151pub const ANRUS_PRIORITY_AUDIO_DYNAMIC_DUCK: DWORD = 0x0000010;
152extern "C" {
153    pub fn AccSetRunningUtilityState(
154        hwndApp: HWND,
155        dwUtilityStateMask: DWORD,
156        dwUtilityState: DWORD);
157    pub fn AccNotifyTouchInteraction(
158        hwndApp: HWND,
159        hwndTarget: HWND,
160        ptTarget: POINT);
161}
162pub const MSAA_MENU_SIG: DWORD = 0xAA0DF00D;
163STRUCT!{struct MSAAMENUINFO {
164    dwMSAASignature: DWORD,
165    cchWText: DWORD,
166    pszWText: LPWSTR,
167}}
168pub type LPMSAAMENUINFO = *mut MSAAMENUINFO;
169DEFINE_GUID!{PROPID_ACC_NAME,
170    0x608d3df8, 0x8128, 0x4aa7, 0xa4, 0x28, 0xf5, 0x5e, 0x49, 0x26, 0x72, 0x91}
171DEFINE_GUID!{PROPID_ACC_VALUE,
172    0x123fe443, 0x211a, 0x4615, 0x95, 0x27, 0xc4, 0x5a, 0x7e, 0x93, 0x71, 0x7a}
173DEFINE_GUID!{PROPID_ACC_DESCRIPTION,
174    0x4d48dfe4, 0xbd3f, 0x491f, 0xa6, 0x48, 0x49, 0x2d, 0x6f, 0x20, 0xc5, 0x88}
175DEFINE_GUID!{PROPID_ACC_ROLE,
176    0xcb905ff2, 0x7bd1, 0x4c05, 0xb3, 0xc8, 0xe6, 0xc2, 0x41, 0x36, 0x4d, 0x70}
177DEFINE_GUID!{PROPID_ACC_STATE,
178    0xa8d4d5b0, 0x0a21, 0x42d0, 0xa5, 0xc0, 0x51, 0x4e, 0x98, 0x4f, 0x45, 0x7b}
179DEFINE_GUID!{PROPID_ACC_HELP,
180    0xc831e11f, 0x44db, 0x4a99, 0x97, 0x68, 0xcb, 0x8f, 0x97, 0x8b, 0x72, 0x31}
181DEFINE_GUID!{PROPID_ACC_KEYBOARDSHORTCUT,
182    0x7d9bceee, 0x7d1e, 0x4979, 0x93, 0x82, 0x51, 0x80, 0xf4, 0x17, 0x2c, 0x34}
183DEFINE_GUID!{PROPID_ACC_DEFAULTACTION,
184    0x180c072b, 0xc27f, 0x43c7, 0x99, 0x22, 0xf6, 0x35, 0x62, 0xa4, 0x63, 0x2b}
185DEFINE_GUID!{PROPID_ACC_HELPTOPIC,
186    0x787d1379, 0x8ede, 0x440b, 0x8a, 0xec, 0x11, 0xf7, 0xbf, 0x90, 0x30, 0xb3}
187DEFINE_GUID!{PROPID_ACC_FOCUS,
188    0x6eb335df, 0x1c29, 0x4127, 0xb1, 0x2c, 0xde, 0xe9, 0xfd, 0x15, 0x7f, 0x2b}
189DEFINE_GUID!{PROPID_ACC_SELECTION,
190    0xb99d073c, 0xd731, 0x405b, 0x90, 0x61, 0xd9, 0x5e, 0x8f, 0x84, 0x29, 0x84}
191DEFINE_GUID!{PROPID_ACC_PARENT,
192    0x474c22b6, 0xffc2, 0x467a, 0xb1, 0xb5, 0xe9, 0x58, 0xb4, 0x65, 0x73, 0x30}
193DEFINE_GUID!{PROPID_ACC_NAV_UP,
194    0x016e1a2b, 0x1a4e, 0x4767, 0x86, 0x12, 0x33, 0x86, 0xf6, 0x69, 0x35, 0xec}
195DEFINE_GUID!{PROPID_ACC_NAV_DOWN,
196    0x031670ed, 0x3cdf, 0x48d2, 0x96, 0x13, 0x13, 0x8f, 0x2d, 0xd8, 0xa6, 0x68}
197DEFINE_GUID!{PROPID_ACC_NAV_LEFT,
198    0x228086cb, 0x82f1, 0x4a39, 0x87, 0x05, 0xdc, 0xdc, 0x0f, 0xff, 0x92, 0xf5}
199DEFINE_GUID!{PROPID_ACC_NAV_RIGHT,
200    0xcd211d9f, 0xe1cb, 0x4fe5, 0xa7, 0x7c, 0x92, 0x0b, 0x88, 0x4d, 0x09, 0x5b}
201DEFINE_GUID!{PROPID_ACC_NAV_PREV,
202    0x776d3891, 0xc73b, 0x4480, 0xb3, 0xf6, 0x07, 0x6a, 0x16, 0xa1, 0x5a, 0xf6}
203DEFINE_GUID!{PROPID_ACC_NAV_NEXT,
204    0x1cdc5455, 0x8cd9, 0x4c92, 0xa3, 0x71, 0x39, 0x39, 0xa2, 0xfe, 0x3e, 0xee}
205DEFINE_GUID!{PROPID_ACC_NAV_FIRSTCHILD,
206    0xcfd02558, 0x557b, 0x4c67, 0x84, 0xf9, 0x2a, 0x09, 0xfc, 0xe4, 0x07, 0x49}
207DEFINE_GUID!{PROPID_ACC_NAV_LASTCHILD,
208    0x302ecaa5, 0x48d5, 0x4f8d, 0xb6, 0x71, 0x1a, 0x8d, 0x20, 0xa7, 0x78, 0x32}
209DEFINE_GUID!{PROPID_ACC_ROLEMAP,
210    0xf79acda2, 0x140d, 0x4fe6, 0x89, 0x14, 0x20, 0x84, 0x76, 0x32, 0x82, 0x69}
211DEFINE_GUID!{PROPID_ACC_VALUEMAP,
212    0xda1c3d79, 0xfc5c, 0x420e, 0xb3, 0x99, 0x9d, 0x15, 0x33, 0x54, 0x9e, 0x75}
213DEFINE_GUID!{PROPID_ACC_STATEMAP,
214    0x43946c5e, 0x0ac0, 0x4042, 0xb5, 0x25, 0x07, 0xbb, 0xdb, 0xe1, 0x7f, 0xa7}
215DEFINE_GUID!{PROPID_ACC_DESCRIPTIONMAP,
216    0x1ff1435f, 0x8a14, 0x477b, 0xb2, 0x26, 0xa0, 0xab, 0xe2, 0x79, 0x97, 0x5d}
217DEFINE_GUID!{PROPID_ACC_DODEFAULTACTION,
218    0x1ba09523, 0x2e3b, 0x49a6, 0xa0, 0x59, 0x59, 0x68, 0x2a, 0x3c, 0x48, 0xfd}
219pub type LPACCESSIBLE = *mut IAccessible;
220pub const NAVDIR_MIN: LONG = 0;
221pub const NAVDIR_UP: LONG = 0x1;
222pub const NAVDIR_DOWN: LONG = 0x2;
223pub const NAVDIR_LEFT: LONG = 0x3;
224pub const NAVDIR_RIGHT: LONG = 0x4;
225pub const NAVDIR_NEXT: LONG = 0x5;
226pub const NAVDIR_PREVIOUS: LONG = 0x6;
227pub const NAVDIR_FIRSTCHILD: LONG = 0x7;
228pub const NAVDIR_LASTCHILD: LONG = 0x8;
229pub const NAVDIR_MAX: LONG = 0x9;
230pub const SELFLAG_NONE: LONG = 0;
231pub const SELFLAG_TAKEFOCUS: LONG = 0x1;
232pub const SELFLAG_TAKESELECTION: LONG = 0x2;
233pub const SELFLAG_EXTENDSELECTION: LONG = 0x4;
234pub const SELFLAG_ADDSELECTION: LONG = 0x8;
235pub const SELFLAG_REMOVESELECTION: LONG = 0x10;
236pub const SELFLAG_VALID: LONG = 0x1f;
237pub const STATE_SYSTEM_NORMAL: LONG = 0;
238pub const STATE_SYSTEM_UNAVAILABLE: LONG = 0x1;
239pub const STATE_SYSTEM_SELECTED: LONG = 0x2;
240pub const STATE_SYSTEM_FOCUSED: LONG = 0x4;
241pub const STATE_SYSTEM_PRESSED: LONG = 0x8;
242pub const STATE_SYSTEM_CHECKED: LONG = 0x10;
243pub const STATE_SYSTEM_MIXED: LONG = 0x20;
244pub const STATE_SYSTEM_INDETERMINATE: LONG = STATE_SYSTEM_MIXED;
245pub const STATE_SYSTEM_READONLY: LONG = 0x40;
246pub const STATE_SYSTEM_HOTTRACKED: LONG = 0x80;
247pub const STATE_SYSTEM_DEFAULT: LONG = 0x100;
248pub const STATE_SYSTEM_EXPANDED: LONG = 0x200;
249pub const STATE_SYSTEM_COLLAPSED: LONG = 0x400;
250pub const STATE_SYSTEM_BUSY: LONG = 0x800;
251pub const STATE_SYSTEM_FLOATING: LONG = 0x1000;
252pub const STATE_SYSTEM_MARQUEED: LONG = 0x2000;
253pub const STATE_SYSTEM_ANIMATED: LONG = 0x4000;
254pub const STATE_SYSTEM_INVISIBLE: LONG = 0x8000;
255pub const STATE_SYSTEM_OFFSCREEN: LONG = 0x10000;
256pub const STATE_SYSTEM_SIZEABLE: LONG = 0x20000;
257pub const STATE_SYSTEM_MOVEABLE: LONG = 0x40000;
258pub const STATE_SYSTEM_SELFVOICING: LONG = 0x80000;
259pub const STATE_SYSTEM_FOCUSABLE: LONG = 0x100000;
260pub const STATE_SYSTEM_SELECTABLE: LONG = 0x200000;
261pub const STATE_SYSTEM_LINKED: LONG = 0x400000;
262pub const STATE_SYSTEM_TRAVERSED: LONG = 0x800000;
263pub const STATE_SYSTEM_MULTISELECTABLE: LONG = 0x1000000;
264pub const STATE_SYSTEM_EXTSELECTABLE: LONG = 0x2000000;
265pub const STATE_SYSTEM_ALERT_LOW: LONG = 0x4000000;
266pub const STATE_SYSTEM_ALERT_MEDIUM: LONG = 0x8000000;
267pub const STATE_SYSTEM_ALERT_HIGH: LONG = 0x10000000;
268pub const STATE_SYSTEM_PROTECTED: LONG = 0x20000000;
269pub const STATE_SYSTEM_VALID: LONG = 0x7fffffff;
270pub const STATE_SYSTEM_HASPOPUP: LONG = 0x40000000;
271pub const ROLE_SYSTEM_TITLEBAR: LONG = 0x1;
272pub const ROLE_SYSTEM_MENUBAR: LONG = 0x2;
273pub const ROLE_SYSTEM_SCROLLBAR: LONG = 0x3;
274pub const ROLE_SYSTEM_GRIP: LONG = 0x4;
275pub const ROLE_SYSTEM_SOUND: LONG = 0x5;
276pub const ROLE_SYSTEM_CURSOR: LONG = 0x6;
277pub const ROLE_SYSTEM_CARET: LONG = 0x7;
278pub const ROLE_SYSTEM_ALERT: LONG = 0x8;
279pub const ROLE_SYSTEM_WINDOW: LONG = 0x9;
280pub const ROLE_SYSTEM_CLIENT: LONG = 0xa;
281pub const ROLE_SYSTEM_MENUPOPUP: LONG = 0xb;
282pub const ROLE_SYSTEM_MENUITEM: LONG = 0xc;
283pub const ROLE_SYSTEM_TOOLTIP: LONG = 0xd;
284pub const ROLE_SYSTEM_APPLICATION: LONG = 0xe;
285pub const ROLE_SYSTEM_DOCUMENT: LONG = 0xf;
286pub const ROLE_SYSTEM_PANE: LONG = 0x10;
287pub const ROLE_SYSTEM_CHART: LONG = 0x11;
288pub const ROLE_SYSTEM_DIALOG: LONG = 0x12;
289pub const ROLE_SYSTEM_BORDER: LONG = 0x13;
290pub const ROLE_SYSTEM_GROUPING: LONG = 0x14;
291pub const ROLE_SYSTEM_SEPARATOR: LONG = 0x15;
292pub const ROLE_SYSTEM_TOOLBAR: LONG = 0x16;
293pub const ROLE_SYSTEM_STATUSBAR: LONG = 0x17;
294pub const ROLE_SYSTEM_TABLE: LONG = 0x18;
295pub const ROLE_SYSTEM_COLUMNHEADER: LONG = 0x19;
296pub const ROLE_SYSTEM_ROWHEADER: LONG = 0x1a;
297pub const ROLE_SYSTEM_COLUMN: LONG = 0x1b;
298pub const ROLE_SYSTEM_ROW: LONG = 0x1c;
299pub const ROLE_SYSTEM_CELL: LONG = 0x1d;
300pub const ROLE_SYSTEM_LINK: LONG = 0x1e;
301pub const ROLE_SYSTEM_HELPBALLOON: LONG = 0x1f;
302pub const ROLE_SYSTEM_CHARACTER: LONG = 0x20;
303pub const ROLE_SYSTEM_LIST: LONG = 0x21;
304pub const ROLE_SYSTEM_LISTITEM: LONG = 0x22;
305pub const ROLE_SYSTEM_OUTLINE: LONG = 0x23;
306pub const ROLE_SYSTEM_OUTLINEITEM: LONG = 0x24;
307pub const ROLE_SYSTEM_PAGETAB: LONG = 0x25;
308pub const ROLE_SYSTEM_PROPERTYPAGE: LONG = 0x26;
309pub const ROLE_SYSTEM_INDICATOR: LONG = 0x27;
310pub const ROLE_SYSTEM_GRAPHIC: LONG = 0x28;
311pub const ROLE_SYSTEM_STATICTEXT: LONG = 0x29;
312pub const ROLE_SYSTEM_TEXT: LONG = 0x2a;
313pub const ROLE_SYSTEM_PUSHBUTTON: LONG = 0x2b;
314pub const ROLE_SYSTEM_CHECKBUTTON: LONG = 0x2c;
315pub const ROLE_SYSTEM_RADIOBUTTON: LONG = 0x2d;
316pub const ROLE_SYSTEM_COMBOBOX: LONG = 0x2e;
317pub const ROLE_SYSTEM_DROPLIST: LONG = 0x2f;
318pub const ROLE_SYSTEM_PROGRESSBAR: LONG = 0x30;
319pub const ROLE_SYSTEM_DIAL: LONG = 0x31;
320pub const ROLE_SYSTEM_HOTKEYFIELD: LONG = 0x32;
321pub const ROLE_SYSTEM_SLIDER: LONG = 0x33;
322pub const ROLE_SYSTEM_SPINBUTTON: LONG = 0x34;
323pub const ROLE_SYSTEM_DIAGRAM: LONG = 0x35;
324pub const ROLE_SYSTEM_ANIMATION: LONG = 0x36;
325pub const ROLE_SYSTEM_EQUATION: LONG = 0x37;
326pub const ROLE_SYSTEM_BUTTONDROPDOWN: LONG = 0x38;
327pub const ROLE_SYSTEM_BUTTONMENU: LONG = 0x39;
328pub const ROLE_SYSTEM_BUTTONDROPDOWNGRID: LONG = 0x3a;
329pub const ROLE_SYSTEM_WHITESPACE: LONG = 0x3b;
330pub const ROLE_SYSTEM_PAGETABLIST: LONG = 0x3c;
331pub const ROLE_SYSTEM_CLOCK: LONG = 0x3d;
332pub const ROLE_SYSTEM_SPLITBUTTON: LONG = 0x3e;
333pub const ROLE_SYSTEM_IPADDRESS: LONG = 0x3f;
334pub const ROLE_SYSTEM_OUTLINEBUTTON: LONG = 0x40;
335RIDL!{#[uuid(0x618736e0, 0x3c3d, 0x11cf, 0x81, 0x0c, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)]
336interface IAccessible(IAccessibleVtbl): IDispatch(IDispatchVtbl) {
337    fn get_accParent(
338        ppdispParent: *mut *mut IDispatch,
339    ) -> HRESULT,
340    fn get_accChildCount(
341        pcountChildren: *mut c_long,
342    ) -> HRESULT,
343    fn get_accChild(
344        varChild: VARIANT,
345        ppdispChild: *mut *mut IDispatch,
346    ) -> HRESULT,
347    fn get_accName(
348        varChild: VARIANT,
349        pszName: *mut BSTR,
350    ) -> HRESULT,
351    fn get_accValue(
352        varChild: VARIANT,
353        pszValue: *mut BSTR,
354    ) -> HRESULT,
355    fn get_accDescription(
356        varChild: VARIANT,
357        pszDescription: *mut BSTR,
358    ) -> HRESULT,
359    fn get_accRole(
360        varChild: VARIANT,
361        pvarRole: *mut VARIANT,
362    ) -> HRESULT,
363    fn get_accState(
364        varChild: VARIANT,
365        pvarState: *mut VARIANT,
366    ) -> HRESULT,
367    fn get_accHelp(
368        varChild: VARIANT,
369        pszHelp: *mut BSTR,
370    ) -> HRESULT,
371    fn get_accHelpTopic(
372        pszHelpFile: *mut BSTR,
373        varChild: VARIANT,
374        pidTopic: *mut c_long,
375    ) -> HRESULT,
376    fn get_accKeyboardShortcut(
377        varChild: VARIANT,
378        pszKeyboardShortcut: *mut BSTR,
379    ) -> HRESULT,
380    fn get_accFocus(
381        pvarChild: *mut VARIANT,
382    ) -> HRESULT,
383    fn get_accSelection(
384        pvarChildren: *mut VARIANT,
385    ) -> HRESULT,
386    fn get_accDefaultAction(
387        varChild: VARIANT,
388        pszDefaultAction: *mut BSTR,
389    ) -> HRESULT,
390    fn accSelect(
391        flagsSelect: c_long,
392        varChild: VARIANT,
393    ) -> HRESULT,
394    fn accLocation(
395        pxLeft: *mut c_long,
396        pyTop: *mut c_long,
397        pcxWidth: *mut c_long,
398        pcyHeight: *mut c_long,
399        varChild: VARIANT,
400    ) -> HRESULT,
401    fn accNavigate(
402        navDir: c_long,
403        varState: VARIANT,
404        pvarEndUpAt: *mut VARIANT,
405    ) -> HRESULT,
406    fn accHitTest(
407        xLeft: c_long,
408        yTop: c_long,
409        pvarChild: *mut VARIANT,
410    ) -> HRESULT,
411    fn accDoDefaultAction(
412        varChild: VARIANT,
413    ) -> HRESULT,
414    fn put_accName(
415        varChild: VARIANT,
416        szName: BSTR,
417    ) -> HRESULT,
418    fn put_accValue(
419        varChild: VARIANT,
420        szValue: BSTR,
421    ) -> HRESULT,
422}}
423pub type LPACCESSIBLEHANDLER = *mut IAccessibleHandler;
424RIDL!{#[uuid(0x03022430, 0xabc4, 0x11d0, 0xbd, 0xe2, 0x00, 0xaa, 0x00, 0x1a, 0x19, 0x53)]
425interface IAccessibleHandler(IAccessibleHandlerVtbl): IUnknown(IUnknownVtbl) {
426    fn AccessibleObjectFromID(
427        hwnd: c_long,
428        lObjectID: c_long,
429        pIAccessible: *mut LPACCESSIBLE,
430    ) -> HRESULT,
431}}
432pub type LPACCESSIBLEWINDOWLESSSITE = *mut IAccessibleWindowlessSite;
433RIDL!{#[uuid(0xbf3abd9c, 0x76da, 0x4389, 0x9e, 0xb6, 0x14, 0x27, 0xd2, 0x5a, 0xba, 0xb7)]
434interface IAccessibleWindowlessSite(IAccessibleWindowlessSiteVtbl): IUnknown(IUnknownVtbl) {
435    fn AcquireObjectIdRange(
436        rangeSize: c_long,
437        pRangeOwner: *mut IAccessibleHandler,
438        pRangeBase: *mut c_long,
439    ) -> HRESULT,
440    fn ReleaseObjectIdRange(
441        rangeBase: c_long,
442        pRangeOwner: *mut IAccessibleHandler,
443    ) -> HRESULT,
444    fn QueryObjectIdRanges(
445        pRangesOwner: *mut IAccessibleHandler,
446        psaRanges: *mut *mut SAFEARRAY,
447    ) -> HRESULT,
448    fn GetParentAccessible(
449        ppParent: *mut *mut IAccessible,
450    ) -> HRESULT,
451}}
452ENUM!{enum AnnoScope {
453    ANNO_THIS = 0,
454    ANNO_CONTAINER = 1,
455}}
456pub type MSAAPROPID = GUID;
457RIDL!{#[uuid(0x7852b78d, 0x1cfd, 0x41c1, 0xa6, 0x15, 0x9c, 0x0c, 0x85, 0x96, 0x0b, 0x5f)]
458interface IAccIdentity(IAccIdentityVtbl): IUnknown(IUnknownVtbl) {
459    fn GetIdentityString(
460        dwIDChild: DWORD,
461        ppIDString: *mut *mut BYTE,
462        pdwIDStringLen: *mut BYTE,
463    ) -> HRESULT,
464}}
465RIDL!{#[uuid(0x76c0dbbb, 0x15e0, 0x4e7b, 0xb6, 0x1b, 0x20, 0xee, 0xea, 0x20, 0x01, 0xe0)]
466interface IAccPropServer(IAccPropServerVtbl): IUnknown(IUnknownVtbl) {
467    fn GetPropValue(
468        pIDString: *const BYTE,
469        dwIDStringLen: DWORD,
470        idProp: MSAAPROPID,
471        pvarValue: VARIANT,
472        pfHasProp: *mut BOOL,
473    ) -> HRESULT,
474}}
475RIDL!{#[uuid(0x6e26e776, 0x04f0, 0x495d, 0x80, 0xe4, 0x33, 0x30, 0x35, 0x2e, 0x31, 0x69)]
476interface IAccPropServices(IAccPropServicesVtbl): IUnknown(IUnknownVtbl) {
477    fn SetPropValue(
478        pIDString: *const BYTE,
479        dwIDStringLen: DWORD,
480        idProp: MSAAPROPID,
481        var: VARIANT,
482    ) -> HRESULT,
483    fn SetPropServer(
484        pIDString: *const BYTE,
485        dwIDStringLen: DWORD,
486        paProps: *const MSAAPROPID,
487        cProps: c_int,
488        pServer: *mut IAccPropServer,
489        annoScope: AnnoScope,
490    ) -> HRESULT,
491    fn ClearProps(
492        pIDString: *const BYTE,
493        dwIDStringLen: DWORD,
494        paProps: *const MSAAPROPID,
495        cProps: c_int,
496    ) -> HRESULT,
497    fn SetHwndProp(
498        hwnd: HWND,
499        idObject: DWORD,
500        idChild: DWORD,
501        idProp: MSAAPROPID,
502        var: VARIANT,
503    ) -> HRESULT,
504    fn SetHwndPropStr(
505        hwnd: HWND,
506        idObject: DWORD,
507        idChild: DWORD,
508        idProp: MSAAPROPID,
509        str_: LPCWSTR,
510    ) -> HRESULT,
511    fn SetHwndPropServer(
512        hwnd: HWND,
513        idObject: DWORD,
514        idChild: DWORD,
515        paProps: *const MSAAPROPID,
516        cProps: c_int,
517        pServer: *mut IAccPropServer,
518        annoScope: AnnoScope,
519    ) -> HRESULT,
520    fn ClearHwndProps(
521        hwnd: HWND,
522        idObject: DWORD,
523        idChild: DWORD,
524        paProps: *const MSAAPROPID,
525        cProps: c_int,
526    ) -> HRESULT,
527    fn ComposeHwndIdentityString(
528        hwnd: HWND,
529        idObject: DWORD,
530        idChild: DWORD,
531        ppIDString: *mut *mut BYTE,
532        pdwIDStringLen: *mut DWORD,
533    ) -> HRESULT,
534    fn DecomposeHwndIdentityString(
535        pIDString: *const BYTE,
536        dwIDStringLen: DWORD,
537        phwnd: *mut HWND,
538        pidObject: *mut DWORD,
539        pidChild: *mut DWORD,
540    ) -> HRESULT,
541    fn SetHmenuProp(
542        hmenu: HMENU,
543        idChild: DWORD,
544        idProp: MSAAPROPID,
545        var: VARIANT,
546    ) -> HRESULT,
547    fn SetHmenuPropStr(
548        hmenu: HMENU,
549        idChild: DWORD,
550        idProp: MSAAPROPID,
551        str_: LPCWSTR,
552    ) -> HRESULT,
553    fn SetHmenuPropServer(
554        hmenu: HMENU,
555        idChild: DWORD,
556        paProps: *const MSAAPROPID,
557        cProps: c_int,
558        pServer: *mut IAccPropServer,
559        annoScope: AnnoScope,
560    ) -> HRESULT,
561    fn ClearHmenuProps(
562        hmenu: HMENU,
563        idChild: DWORD,
564        paProps: *const MSAAPROPID,
565        cProps: c_int,
566    ) -> HRESULT,
567    fn ComposeHmenuIdentityString(
568        hmenu: HMENU,
569        idChild: DWORD,
570        ppIDString: *mut *mut BYTE,
571        pdwIDStringLen: *mut DWORD,
572    ) -> HRESULT,
573    fn DecomposeHmenuIdentityString(
574        pIDString: *const BYTE,
575        dwIDStringLen: DWORD,
576        phmenu: *mut HMENU,
577        pidChild: *mut DWORD,
578    ) -> HRESULT,
579}}
580RIDL!{#[uuid(0xb5f8350b, 0x0548, 0x48b1, 0xa6, 0xee, 0x88, 0xbd, 0x00, 0xb4, 0xa5, 0xe7)]
581class CAccPropServices;}
582FN!{stdcall BSTR_UserSize(
583    *mut c_ulong,
584    c_ulong,
585    *mut BSTR,
586) -> c_ulong}
587FN!{stdcall BSTR_UserMarshal(
588    *mut c_ulong,
589    *mut c_uchar,
590    *mut BSTR,
591) -> *mut c_uchar}
592FN!{stdcall BSTR_UserUnmarshal(
593    *mut c_ulong,
594    *mut c_uchar,
595    *mut BSTR,
596) -> *mut c_uchar}
597FN!{stdcall BSTR_UserFree(
598    *mut c_ulong,
599    *mut BSTR,
600) -> c_void}
601FN!{stdcall HMENU_UserSize(
602    *mut c_ulong,
603    c_ulong,
604    *mut HMENU,
605) -> c_ulong}
606FN!{stdcall HMENU_UserMarshal(
607    *mut c_ulong,
608    *mut c_uchar,
609    *mut HMENU,
610) -> *mut c_uchar}
611FN!{stdcall HMENU_UserUnmarshal(
612    *mut c_ulong,
613    *mut c_uchar,
614    *mut HMENU,
615) -> *mut c_uchar}
616FN!{stdcall HMENU_UserFree(
617    *mut c_ulong,
618    *mut HMENU,
619) -> c_void}
620FN!{stdcall HWND_UserSize(
621    *mut c_ulong,
622    c_ulong,
623    *mut HWND,
624) -> c_ulong}
625FN!{stdcall HWND_UserMarshal(
626    *mut c_ulong,
627    *mut c_uchar,
628    *mut HWND,
629) -> *mut c_uchar}
630FN!{stdcall HWND_UserUnmarshal(
631    *mut c_ulong,
632    *mut c_uchar,
633    *mut HWND,
634) -> *mut c_uchar}
635FN!{stdcall HWND_UserFree(
636    *mut c_ulong,
637    *mut HWND,
638) -> c_void}
639FN!{stdcall LPSAFEARRAY_UserSize(
640    *mut c_ulong,
641    c_ulong,
642    *mut LPSAFEARRAY,
643) -> c_ulong}
644FN!{stdcall LPSAFEARRAY_UserMarshal(
645    *mut c_ulong,
646    *mut c_uchar,
647    *mut LPSAFEARRAY,
648) -> *mut c_uchar}
649FN!{stdcall LPSAFEARRAY_UserUnmarshal(
650    *mut c_ulong,
651    *mut c_uchar,
652    *mut LPSAFEARRAY,
653) -> *mut c_uchar}
654FN!{stdcall LPSAFEARRAY_UserFree(
655    *mut c_ulong,
656    *mut LPSAFEARRAY,
657) -> c_void}
658FN!{stdcall VARIANT_UserSize(
659    *mut c_ulong,
660    c_ulong,
661    *mut VARIANT,
662) -> c_ulong}
663FN!{stdcall VARIANT_UserMarshal(
664    *mut c_ulong,
665    *mut c_uchar,
666    *mut VARIANT,
667) -> *mut c_uchar}
668FN!{stdcall VARIANT_UserUnmarshal(
669    *mut c_ulong,
670    *mut c_uchar,
671    *mut VARIANT,
672) -> *mut c_uchar}
673FN!{stdcall VARIANT_UserFree(
674    *mut c_ulong,
675    *mut VARIANT,
676) -> c_void}