|  | /* | 
|  | * Copyright 2021 Rémi Bernon for CodeWeavers | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  | * | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | * Lesser General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU Lesser General Public | 
|  | * License along with this library; if not, write to the Free Software | 
|  | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
|  | */ | 
|  |  | 
|  | #ifdef __WIDL__ | 
|  | #pragma winrt ns_prefix | 
|  | #endif | 
|  |  | 
|  | import "inspectable.idl"; | 
|  | import "asyncinfo.idl"; | 
|  | import "eventtoken.idl"; | 
|  | import "windowscontracts.idl"; | 
|  | import "windows.foundation.idl"; | 
|  |  | 
|  | namespace Windows.System | 
|  | { | 
|  | typedef enum DispatcherQueuePriority DispatcherQueuePriority; | 
|  | typedef enum ProcessorArchitecture ProcessorArchitecture; | 
|  | typedef enum VirtualKey VirtualKey; | 
|  | typedef enum VirtualKeyModifiers VirtualKeyModifiers; | 
|  |  | 
|  | interface IDispatcherQueue; | 
|  | interface IDispatcherQueue2; | 
|  | interface IDispatcherQueueController; | 
|  | interface IDispatcherQueueControllerStatics; | 
|  | interface IDispatcherQueueShutdownStartingEventArgs; | 
|  | interface IDispatcherQueueStatics; | 
|  | interface IDispatcherQueueTimer; | 
|  | interface IUser; | 
|  | interface IUserStatics; | 
|  | interface IUserChangedEventArgs; | 
|  | interface IUserChangedEventArgs2; | 
|  |  | 
|  | runtimeclass DispatcherQueue; | 
|  | runtimeclass DispatcherQueueController; | 
|  | runtimeclass DispatcherQueueShutdownStartingEventArgs; | 
|  | runtimeclass DispatcherQueueTimer; | 
|  | runtimeclass User; | 
|  | runtimeclass UserChangedEventArgs; | 
|  |  | 
|  | declare | 
|  | { | 
|  | interface Windows.Foundation.TypedEventHandler<Windows.System.DispatcherQueue *, IInspectable *>; | 
|  | interface Windows.Foundation.TypedEventHandler<Windows.System.DispatcherQueue *, Windows.System.DispatcherQueueShutdownStartingEventArgs *>; | 
|  | interface Windows.Foundation.TypedEventHandler<Windows.System.DispatcherQueueTimer *, IInspectable *>; | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 5.0) | 
|  | ] | 
|  | enum DispatcherQueuePriority | 
|  | { | 
|  | Low    = -10, | 
|  | Normal = 0, | 
|  | High   = 10, | 
|  | }; | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 1.0) | 
|  | ] | 
|  | enum ProcessorArchitecture | 
|  | { | 
|  | X86        = 0, | 
|  | Arm        = 5, | 
|  | X64        = 9, | 
|  | Neutral    = 11, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 8.0)] | 
|  | Arm64      = 12, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 8.0)] | 
|  | X86OnArm64 = 14, | 
|  | Unknown    = 65535 | 
|  | }; | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 1.0) | 
|  | ] | 
|  | enum VirtualKey | 
|  | { | 
|  | None                         = 0, | 
|  | LeftButton                   = 1, | 
|  | RightButton                  = 2, | 
|  | Cancel                       = 3, | 
|  | MiddleButton                 = 4, | 
|  | XButton1                     = 5, | 
|  | XButton2                     = 6, | 
|  | Back                         = 8, | 
|  | Tab                          = 9, | 
|  | Clear                        = 12, | 
|  | Enter                        = 13, | 
|  | Shift                        = 16, | 
|  | Control                      = 17, | 
|  | Menu                         = 18, | 
|  | Pause                        = 19, | 
|  | CapitalLock                  = 20, | 
|  | Kana                         = 21, | 
|  | Hangul                       = 21, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 10.0)] | 
|  | ImeOn                        = 22, | 
|  | Junja                        = 23, | 
|  | Final                        = 24, | 
|  | Hanja                        = 25, | 
|  | Kanji                        = 25, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 10.0)] | 
|  | ImeOff                       = 26, | 
|  | Escape                       = 27, | 
|  | Convert                      = 28, | 
|  | NonConvert                   = 29, | 
|  | Accept                       = 30, | 
|  | ModeChange                   = 31, | 
|  | Space                        = 32, | 
|  | PageUp                       = 33, | 
|  | PageDown                     = 34, | 
|  | End                          = 35, | 
|  | Home                         = 36, | 
|  | Left                         = 37, | 
|  | Up                           = 38, | 
|  | Right                        = 39, | 
|  | Down                         = 40, | 
|  | Select                       = 41, | 
|  | Print                        = 42, | 
|  | Execute                      = 43, | 
|  | Snapshot                     = 44, | 
|  | Insert                       = 45, | 
|  | Delete                       = 46, | 
|  | Help                         = 47, | 
|  | Number0                      = 48, | 
|  | Number1                      = 49, | 
|  | Number2                      = 50, | 
|  | Number3                      = 51, | 
|  | Number4                      = 52, | 
|  | Number5                      = 53, | 
|  | Number6                      = 54, | 
|  | Number7                      = 55, | 
|  | Number8                      = 56, | 
|  | Number9                      = 57, | 
|  | A                            = 65, | 
|  | B                            = 66, | 
|  | C                            = 67, | 
|  | D                            = 68, | 
|  | E                            = 69, | 
|  | F                            = 70, | 
|  | G                            = 71, | 
|  | H                            = 72, | 
|  | I                            = 73, | 
|  | J                            = 74, | 
|  | K                            = 75, | 
|  | L                            = 76, | 
|  | M                            = 77, | 
|  | N                            = 78, | 
|  | O                            = 79, | 
|  | P                            = 80, | 
|  | Q                            = 81, | 
|  | R                            = 82, | 
|  | S                            = 83, | 
|  | T                            = 84, | 
|  | U                            = 85, | 
|  | V                            = 86, | 
|  | W                            = 87, | 
|  | X                            = 88, | 
|  | Y                            = 89, | 
|  | Z                            = 90, | 
|  | LeftWindows                  = 91, | 
|  | RightWindows                 = 92, | 
|  | Application                  = 93, | 
|  | Sleep                        = 95, | 
|  | NumberPad0                   = 96, | 
|  | NumberPad1                   = 97, | 
|  | NumberPad2                   = 98, | 
|  | NumberPad3                   = 99, | 
|  | NumberPad4                   = 100, | 
|  | NumberPad5                   = 101, | 
|  | NumberPad6                   = 102, | 
|  | NumberPad7                   = 103, | 
|  | NumberPad8                   = 104, | 
|  | NumberPad9                   = 105, | 
|  | Multiply                     = 106, | 
|  | Add                          = 107, | 
|  | Separator                    = 108, | 
|  | Subtract                     = 109, | 
|  | Decimal                      = 110, | 
|  | Divide                       = 111, | 
|  | F1                           = 112, | 
|  | F2                           = 113, | 
|  | F3                           = 114, | 
|  | F4                           = 115, | 
|  | F5                           = 116, | 
|  | F6                           = 117, | 
|  | F7                           = 118, | 
|  | F8                           = 119, | 
|  | F9                           = 120, | 
|  | F10                          = 121, | 
|  | F11                          = 122, | 
|  | F12                          = 123, | 
|  | F13                          = 124, | 
|  | F14                          = 125, | 
|  | F15                          = 126, | 
|  | F16                          = 127, | 
|  | F17                          = 128, | 
|  | F18                          = 129, | 
|  | F19                          = 130, | 
|  | F20                          = 131, | 
|  | F21                          = 132, | 
|  | F22                          = 133, | 
|  | F23                          = 134, | 
|  | F24                          = 135, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | NavigationView               = 136, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | NavigationMenu               = 137, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | NavigationUp                 = 138, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | NavigationDown               = 139, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | NavigationLeft               = 140, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | NavigationRight              = 141, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | NavigationAccept             = 142, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | NavigationCancel             = 143, | 
|  | NumberKeyLock                = 144, | 
|  | Scroll                       = 145, | 
|  | LeftShift                    = 160, | 
|  | RightShift                   = 161, | 
|  | LeftControl                  = 162, | 
|  | RightControl                 = 163, | 
|  | LeftMenu                     = 164, | 
|  | RightMenu                    = 165, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GoBack                       = 166, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GoForward                    = 167, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | Refresh                      = 168, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | Stop                         = 169, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | Search                       = 170, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | Favorites                    = 171, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GoHome                       = 172, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadA                     = 195, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadB                     = 196, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadX                     = 197, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadY                     = 198, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadRightShoulder         = 199, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadLeftShoulder          = 200, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadLeftTrigger           = 201, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadRightTrigger          = 202, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadDPadUp                = 203, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadDPadDown              = 204, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadDPadLeft              = 205, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadDPadRight             = 206, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadMenu                  = 207, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadView                  = 208, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadLeftThumbstickButton  = 209, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadRightThumbstickButton = 210, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadLeftThumbstickUp      = 211, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadLeftThumbstickDown    = 212, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadLeftThumbstickRight   = 213, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadLeftThumbstickLeft    = 214, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadRightThumbstickUp     = 215, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadRightThumbstickDown   = 216, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadRightThumbstickRight  = 217, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | GamepadRightThumbstickLeft   = 218 | 
|  | }; | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 1.0), | 
|  | flags | 
|  | ] | 
|  | enum VirtualKeyModifiers | 
|  | { | 
|  | None    = 0x0, | 
|  | Control = 0x1, | 
|  | Menu    = 0x2, | 
|  | Shift   = 0x4, | 
|  | Windows = 0x8 | 
|  | }; | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 5.0), | 
|  | uuid(dfa2dc9c-1a2d-4917-98f2-939af1d6e0c8) | 
|  | ] | 
|  | delegate HRESULT DispatcherQueueHandler(); | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 5.0), | 
|  | exclusiveto(Windows.System.DispatcherQueue), | 
|  | uuid(603e88e4-a338-4ffe-a457-a5cfb9ceb899) | 
|  | ] | 
|  | interface IDispatcherQueue : IInspectable | 
|  | { | 
|  | HRESULT CreateTimer([out, retval] Windows.System.DispatcherQueueTimer **result); | 
|  | [overload("TryEnqueue")] HRESULT TryEnqueue([in] Windows.System.DispatcherQueueHandler *callback, [out, retval] boolean *result); | 
|  | [overload("TryEnqueue")] HRESULT TryEnqueueWithPriority([in] Windows.System.DispatcherQueuePriority priority, [in] Windows.System.DispatcherQueueHandler *callback, | 
|  | [out, retval] boolean *result); | 
|  | [eventadd] HRESULT ShutdownStarting([in] Windows.Foundation.TypedEventHandler<Windows.System.DispatcherQueue *, Windows.System.DispatcherQueueShutdownStartingEventArgs *> *handler, | 
|  | [out, retval] EventRegistrationToken *token); | 
|  | [eventremove] HRESULT ShutdownStarting([in] EventRegistrationToken token); | 
|  | [eventadd] HRESULT ShutdownCompleted([in] Windows.Foundation.TypedEventHandler<Windows.System.DispatcherQueue *, IInspectable *> *handler, [out, retval] EventRegistrationToken *token); | 
|  | [eventremove] HRESULT ShutdownCompleted([in] EventRegistrationToken token); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 8.0), | 
|  | exclusiveto(Windows.System.DispatcherQueue), | 
|  | uuid(c822c647-30ef-506e-bd1e-a647ae6675ff) | 
|  | ] | 
|  | interface IDispatcherQueue2 : IInspectable | 
|  | { | 
|  | [propget] HRESULT HasThreadAccess([out, retval] boolean *value); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 5.0), | 
|  | exclusiveto(Windows.System.DispatcherQueueController), | 
|  | uuid(22f34e66-50db-4e36-a98d-61c01b384d20) | 
|  | ] | 
|  | interface IDispatcherQueueController : IInspectable | 
|  | { | 
|  | [propget] HRESULT DispatcherQueue([out, retval] Windows.System.DispatcherQueue **value); | 
|  | HRESULT ShutdownQueueAsync([out, retval] Windows.Foundation.IAsyncAction **operation); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 5.0), | 
|  | exclusiveto(Windows.System.DispatcherQueueController), | 
|  | uuid(0a6c98e0-5198-49a2-a313-3f70d1f13c27) | 
|  | ] | 
|  | interface IDispatcherQueueControllerStatics : IInspectable | 
|  | { | 
|  | HRESULT CreateOnDedicatedThread([out, retval] Windows.System.DispatcherQueueController **result); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 5.0), | 
|  | exclusiveto(Windows.System.DispatcherQueueShutdownStartingEventArgs), | 
|  | uuid(c4724c4c-ff97-40c0-a226-cc0aaa545e89) | 
|  | ] | 
|  | interface IDispatcherQueueShutdownStartingEventArgs : IInspectable | 
|  | { | 
|  | HRESULT GetDeferral([out, retval] Windows.Foundation.Deferral **result); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 5.0), | 
|  | exclusiveto(Windows.System.DispatcherQueue), | 
|  | uuid(a96d83d7-9371-4517-9245-d0824ac12c74) | 
|  | ] | 
|  | interface IDispatcherQueueStatics : IInspectable | 
|  | { | 
|  | HRESULT GetForCurrentThread([out, retval] Windows.System.DispatcherQueue **result); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 5.0), | 
|  | exclusiveto(Windows.System.DispatcherQueueTimer), | 
|  | uuid(5feabb1d-a31c-4727-b1ac-37454649d56a) | 
|  | ] | 
|  | interface IDispatcherQueueTimer : IInspectable | 
|  | { | 
|  | [propget] HRESULT Interval([out, retval] Windows.Foundation.TimeSpan *value); | 
|  | [propput] HRESULT Interval([in] Windows.Foundation.TimeSpan value); | 
|  | [propget] HRESULT IsRunning([out, retval] boolean *value); | 
|  | [propget] HRESULT IsRepeating([out, retval] boolean *value); | 
|  | [propput] HRESULT IsRepeating([in] boolean value); | 
|  | HRESULT Start(); | 
|  | HRESULT Stop(); | 
|  | [eventadd] HRESULT Tick([in] Windows.Foundation.TypedEventHandler<Windows.System.DispatcherQueueTimer *, IInspectable *> *handler, [out, retval] EventRegistrationToken *token); | 
|  | [eventremove] HRESULT Tick([in] EventRegistrationToken token); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 1.0), | 
|  | exclusiveto(Windows.System.UserChangedEventArgs), | 
|  | uuid(086459dc-18c6-48db-bc99-724fb9203ccc) | 
|  | ] | 
|  | interface IUserChangedEventArgs : IInspectable | 
|  | { | 
|  | [propget] HRESULT User([out, retval] Windows.System.User **value); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 5.0), | 
|  | marshaling_behavior(agile), | 
|  | static(Windows.System.IDispatcherQueueStatics, Windows.Foundation.UniversalApiContract, 5.0), | 
|  | threading(both) | 
|  | ] | 
|  | runtimeclass DispatcherQueue | 
|  | { | 
|  | [default] interface Windows.System.IDispatcherQueue; | 
|  | [contract(Windows.Foundation.UniversalApiContract, 8.0)] interface Windows.System.IDispatcherQueue2; | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 5.0), | 
|  | marshaling_behavior(agile), | 
|  | static(Windows.System.IDispatcherQueueControllerStatics, Windows.Foundation.UniversalApiContract, 5.0), | 
|  | threading(both) | 
|  | ] | 
|  | runtimeclass DispatcherQueueController | 
|  | { | 
|  | [default] interface Windows.System.IDispatcherQueueController; | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 5.0), | 
|  | marshaling_behavior(agile) | 
|  | ] | 
|  | runtimeclass DispatcherQueueShutdownStartingEventArgs | 
|  | { | 
|  | [default] interface Windows.System.IDispatcherQueueShutdownStartingEventArgs; | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 5.0), | 
|  | marshaling_behavior(agile) | 
|  | ] | 
|  | runtimeclass DispatcherQueueTimer | 
|  | { | 
|  | [default] interface Windows.System.IDispatcherQueueTimer; | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 1.0), | 
|  | marshaling_behavior(agile), | 
|  | static(Windows.System.IUserStatics, Windows.Foundation.UniversalApiContract, 1.0), | 
|  | threading(both), | 
|  | ] | 
|  | runtimeclass User | 
|  | { | 
|  | [default] interface Windows.System.IUser; | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 1.0), | 
|  | marshaling_behavior(agile) | 
|  | ] | 
|  | runtimeclass UserChangedEventArgs | 
|  | { | 
|  | [default] interface Windows.System.IUserChangedEventArgs; | 
|  | [contract(Windows.Foundation.UniversalApiContract, 10.0)] interface Windows.System.IUserChangedEventArgs2; | 
|  | } | 
|  | } |