]>
Commit | Line | Data |
---|---|---|
8faf50e0 XL |
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 | use shared::basetsd::UINT64; | |
7 | use shared::d3d9::IDirect3DDevice9; | |
8 | use shared::d3d9types::D3DFORMAT; | |
9 | use shared::guiddef::GUID; | |
10 | use shared::minwindef::{BYTE, DWORD, ULONG}; | |
11 | use shared::windef::HMONITOR; | |
12 | use um::dxva2api::DXVA2_SampleFormat; | |
13 | use um::unknwnbase::{IUnknown, IUnknownVtbl}; | |
14 | use um::winnt::{HRESULT, LUID}; | |
15 | DEFINE_GUID!{OPM_GET_CURRENT_HDCP_SRM_VERSION, | |
16 | 0x99c5ceff, 0x5f1d, 0x4879, 0x81, 0xc1, 0xc5, 0x24, 0x43, 0xc9, 0x48, 0x2b} | |
17 | DEFINE_GUID!{OPM_GET_CONNECTED_HDCP_DEVICE_INFORMATION, | |
18 | 0x0db59d74, 0xa992, 0x492e, 0xa0, 0xbd, 0xc2, 0x3f, 0xda, 0x56, 0x4e, 0x00} | |
19 | DEFINE_GUID!{OPM_GET_ACP_AND_CGMSA_SIGNALING, | |
20 | 0x6629a591, 0x3b79, 0x4cf3, 0x92, 0x4a, 0x11, 0xe8, 0xe7, 0x81, 0x16, 0x71} | |
21 | DEFINE_GUID!{OPM_GET_CONNECTOR_TYPE, | |
22 | 0x81d0bfd5, 0x6afe, 0x48c2, 0x99, 0xc0, 0x95, 0xa0, 0x8f, 0x97, 0xc5, 0xda} | |
23 | DEFINE_GUID!{OPM_GET_SUPPORTED_PROTECTION_TYPES, | |
24 | 0x38f2a801, 0x9a6c, 0x48bb, 0x91, 0x07, 0xb6, 0x69, 0x6e, 0x6f, 0x17, 0x97} | |
25 | DEFINE_GUID!{OPM_GET_VIRTUAL_PROTECTION_LEVEL, | |
26 | 0xb2075857, 0x3eda, 0x4d5d, 0x88, 0xdb, 0x74, 0x8f, 0x8c, 0x1a, 0x05, 0x49} | |
27 | DEFINE_GUID!{OPM_GET_ACTUAL_PROTECTION_LEVEL, | |
28 | 0x1957210a, 0x7766, 0x452a, 0xb9, 0x9a, 0xd2, 0x7a, 0xed, 0x54, 0xf0, 0x3a} | |
29 | DEFINE_GUID!{OPM_GET_ACTUAL_OUTPUT_FORMAT, | |
30 | 0xd7bf1ba3, 0xad13, 0x4f8e, 0xaf, 0x98, 0x0d, 0xcb, 0x3c, 0xa2, 0x04, 0xcc} | |
31 | DEFINE_GUID!{OPM_GET_ADAPTER_BUS_TYPE, | |
32 | 0xc6f4d673, 0x6174, 0x4184, 0x8e, 0x35, 0xf6, 0xdb, 0x52, 0x0, 0xbc, 0xba} | |
33 | DEFINE_GUID!{OPM_GET_OUTPUT_ID, | |
34 | 0x72cb6df3, 0x244f, 0x40ce, 0xb0, 0x9e, 0x20, 0x50, 0x6a, 0xf6, 0x30, 0x2f} | |
35 | DEFINE_GUID!{OPM_GET_DVI_CHARACTERISTICS, | |
36 | 0xa470b3bb, 0x5dd7, 0x4172, 0x83, 0x9c, 0x3d, 0x37, 0x76, 0xe0, 0xeb, 0xf5} | |
37 | DEFINE_GUID!{OPM_GET_CODEC_INFO, | |
38 | 0x4f374491, 0x8f5f, 0x4445, 0x9d, 0xba, 0x95, 0x58, 0x8f, 0x6b, 0x58, 0xb4} | |
39 | DEFINE_GUID!{OPM_GET_OUTPUT_HARDWARE_PROTECTION_SUPPORT, | |
40 | 0x3b129589, 0x2af8, 0x4ef0, 0x96, 0xa2, 0x70, 0x4a, 0x84, 0x5a, 0x21, 0x8e} | |
41 | DEFINE_GUID!{OPM_SET_PROTECTION_LEVEL, | |
42 | 0x9bb9327c, 0x4eb5, 0x4727, 0x9f, 0x00, 0xb4, 0x2b, 0x09, 0x19, 0xc0, 0xda} | |
43 | DEFINE_GUID!{OPM_SET_ACP_AND_CGMSA_SIGNALING, | |
44 | 0x09a631a5, 0xd684, 0x4c60, 0x8e, 0x4d, 0xd3, 0xbb, 0x0f, 0x0b, 0xe3, 0xee} | |
45 | DEFINE_GUID!{OPM_SET_HDCP_SRM, | |
46 | 0x8b5ef5d1, 0xc30d, 0x44ff, 0x84, 0xa5, 0xea, 0x71, 0xdc, 0xe7, 0x8f, 0x13} | |
47 | DEFINE_GUID!{OPM_SET_PROTECTION_LEVEL_ACCORDING_TO_CSS_DVD, | |
48 | 0x39ce333e, 0x4cc0, 0x44ae, 0xbf, 0xcc, 0xda, 0x50, 0xb5, 0xf8, 0x2e, 0x72} | |
49 | ENUM!{enum __MIDL___MIDL_itf_opmapi_0000_0000_0001 { | |
50 | OPM_OMAC_SIZE = 16, | |
51 | OPM_128_BIT_RANDOM_NUMBER_SIZE = 16, | |
52 | OPM_ENCRYPTED_INITIALIZATION_PARAMETERS_SIZE = 256, | |
53 | OPM_CONFIGURE_SETTING_DATA_SIZE = 4056, | |
54 | OPM_GET_INFORMATION_PARAMETERS_SIZE = 4056, | |
55 | OPM_REQUESTED_INFORMATION_SIZE = 4076, | |
56 | OPM_HDCP_KEY_SELECTION_VECTOR_SIZE = 5, | |
57 | OPM_PROTECTION_TYPE_SIZE = 4, | |
58 | OPM_BUS_TYPE_MASK = 0xffff, | |
59 | OPM_BUS_IMPLEMENTATION_MODIFIER_MASK = 0x7fff, | |
60 | }} | |
61 | ENUM!{enum OPM_VIDEO_OUTPUT_SEMANTICS { | |
62 | OPM_VOS_COPP_SEMANTICS = 0, | |
63 | OPM_VOS_OPM_SEMANTICS = 1, | |
64 | OPM_VOS_OPM_INDIRECT_DISPLAY = 2, | |
65 | }} | |
66 | ENUM!{enum __MIDL___MIDL_itf_opmapi_0000_0000_0002 { | |
67 | OPM_HDCP_FLAG_NONE = 0, | |
68 | OPM_HDCP_FLAG_REPEATER = 0x1, | |
69 | }} | |
70 | ENUM!{enum __MIDL___MIDL_itf_opmapi_0000_0000_0003 { | |
71 | OPM_STATUS_NORMAL = 0, | |
72 | OPM_STATUS_LINK_LOST = 0x1, | |
73 | OPM_STATUS_RENEGOTIATION_REQUIRED = 0x2, | |
74 | OPM_STATUS_TAMPERING_DETECTED = 0x4, | |
75 | OPM_STATUS_REVOKED_HDCP_DEVICE_ATTACHED = 0x8, | |
76 | }} | |
77 | ENUM!{enum __MIDL___MIDL_itf_opmapi_0000_0000_0004 { | |
78 | OPM_CONNECTOR_TYPE_OTHER = -1i32 as u32, | |
79 | OPM_CONNECTOR_TYPE_VGA = 0, | |
80 | OPM_CONNECTOR_TYPE_SVIDEO = 1, | |
81 | OPM_CONNECTOR_TYPE_COMPOSITE_VIDEO = 2, | |
82 | OPM_CONNECTOR_TYPE_COMPONENT_VIDEO = 3, | |
83 | OPM_CONNECTOR_TYPE_DVI = 4, | |
84 | OPM_CONNECTOR_TYPE_HDMI = 5, | |
85 | OPM_CONNECTOR_TYPE_LVDS = 6, | |
86 | OPM_CONNECTOR_TYPE_D_JPN = 8, | |
87 | OPM_CONNECTOR_TYPE_SDI = 9, | |
88 | OPM_CONNECTOR_TYPE_DISPLAYPORT_EXTERNAL = 10, | |
89 | OPM_CONNECTOR_TYPE_DISPLAYPORT_EMBEDDED = 11, | |
90 | OPM_CONNECTOR_TYPE_UDI_EXTERNAL = 12, | |
91 | OPM_CONNECTOR_TYPE_UDI_EMBEDDED = 13, | |
92 | OPM_CONNECTOR_TYPE_RESERVED = 14, | |
93 | OPM_CONNECTOR_TYPE_MIRACAST = 15, | |
94 | OPM_CONNECTOR_TYPE_TRANSPORT_AGNOSTIC_DIGITAL_MODE_A = 16, | |
95 | OPM_CONNECTOR_TYPE_TRANSPORT_AGNOSTIC_DIGITAL_MODE_B = 17, | |
96 | OPM_COPP_COMPATIBLE_CONNECTOR_TYPE_INTERNAL = 0x80000000, | |
97 | }} | |
98 | ENUM!{enum __MIDL___MIDL_itf_opmapi_0000_0000_0005 { | |
99 | OPM_DVI_CHARACTERISTIC_1_0 = 1, | |
100 | OPM_DVI_CHARACTERISTIC_1_1_OR_ABOVE = 2, | |
101 | }} | |
102 | ENUM!{enum OPM_OUTPUT_HARDWARE_PROTECTION { | |
103 | OPM_OUTPUT_HARDWARE_PROTECTION_NOT_SUPPORTED = 0, | |
104 | OPM_OUTPUT_HARDWARE_PROTECTION_SUPPORTED = 0x1, | |
105 | }} | |
106 | ENUM!{enum __MIDL___MIDL_itf_opmapi_0000_0000_0006 { | |
107 | OPM_BUS_TYPE_OTHER = 0, | |
108 | OPM_BUS_TYPE_PCI = 0x1, | |
109 | OPM_BUS_TYPE_PCIX = 0x2, | |
110 | OPM_BUS_TYPE_PCIEXPRESS = 0x3, | |
111 | OPM_BUS_TYPE_AGP = 0x4, | |
112 | OPM_BUS_IMPLEMENTATION_MODIFIER_INSIDE_OF_CHIPSET = 0x10000, | |
113 | OPM_BUS_IMPLEMENTATION_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_CHIP = 0x20000, | |
114 | OPM_BUS_IMPLEMENTATION_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_SOCKET = 0x30000, | |
115 | OPM_BUS_IMPLEMENTATION_MODIFIER_DAUGHTER_BOARD_CONNECTOR = 0x40000, | |
116 | OPM_BUS_IMPLEMENTATION_MODIFIER_DAUGHTER_BOARD_CONNECTOR_INSIDE_OF_NUAE = 0x50000, | |
117 | OPM_BUS_IMPLEMENTATION_MODIFIER_NON_STANDARD = 0x80000000, | |
118 | OPM_COPP_COMPATIBLE_BUS_TYPE_INTEGRATED = 0x80000000, | |
119 | }} | |
120 | ENUM!{enum OPM_DPCP_PROTECTION_LEVEL { | |
121 | OPM_DPCP_OFF = 0, | |
122 | OPM_DPCP_ON = 1, | |
123 | OPM_DPCP_FORCE_ULONG = 0x7fffffff, | |
124 | }} | |
125 | ENUM!{enum OPM_HDCP_PROTECTION_LEVEL { | |
126 | OPM_HDCP_OFF = 0, | |
127 | OPM_HDCP_ON = 1, | |
128 | OPM_HDCP_FORCE_ULONG = 0x7fffffff, | |
129 | }} | |
130 | ENUM!{enum OPM_TYPE_ENFORCEMENT_HDCP_PROTECTION_LEVEL { | |
131 | OPM_TYPE_ENFORCEMENT_HDCP_OFF = OPM_HDCP_OFF, | |
132 | OPM_TYPE_ENFORCEMENT_HDCP_ON_WITH_NO_TYPE_RESTRICTION = OPM_HDCP_ON, | |
133 | OPM_TYPE_ENFORCEMENT_HDCP_ON_WITH_TYPE1_RESTRICTION = OPM_HDCP_ON + 1, | |
134 | OPM_TYPE_ENFORCEMENT_HDCP_FORCE_ULONG = 0x7fffffff, | |
135 | }} | |
136 | ENUM!{enum __MIDL___MIDL_itf_opmapi_0000_0000_0007 { | |
137 | OPM_CGMSA_OFF = 0, | |
138 | OPM_CGMSA_COPY_FREELY = 0x1, | |
139 | OPM_CGMSA_COPY_NO_MORE = 0x2, | |
140 | OPM_CGMSA_COPY_ONE_GENERATION = 0x3, | |
141 | OPM_CGMSA_COPY_NEVER = 0x4, | |
142 | OPM_CGMSA_REDISTRIBUTION_CONTROL_REQUIRED = 0x8, | |
143 | }} | |
144 | ENUM!{enum OPM_ACP_PROTECTION_LEVEL { | |
145 | OPM_ACP_OFF = 0, | |
146 | OPM_ACP_LEVEL_ONE = 1, | |
147 | OPM_ACP_LEVEL_TWO = 2, | |
148 | OPM_ACP_LEVEL_THREE = 3, | |
149 | OPM_ACP_FORCE_ULONG = 0x7fffffff, | |
150 | }} | |
151 | ENUM!{enum __MIDL___MIDL_itf_opmapi_0000_0000_0008 { | |
152 | OPM_PROTECTION_TYPE_OTHER = 0x80000000, | |
153 | OPM_PROTECTION_TYPE_NONE = 0, | |
154 | OPM_PROTECTION_TYPE_COPP_COMPATIBLE_HDCP = 0x1, | |
155 | OPM_PROTECTION_TYPE_ACP = 0x2, | |
156 | OPM_PROTECTION_TYPE_CGMSA = 0x4, | |
157 | OPM_PROTECTION_TYPE_HDCP = 0x8, | |
158 | OPM_PROTECTION_TYPE_DPCP = 0x10, | |
159 | OPM_PROTECTION_TYPE_TYPE_ENFORCEMENT_HDCP = 0x20, | |
160 | }} | |
161 | ENUM!{enum __MIDL___MIDL_itf_opmapi_0000_0000_0009 { | |
162 | OPM_PROTECTION_STANDARD_OTHER = 0x80000000, | |
163 | OPM_PROTECTION_STANDARD_NONE = 0, | |
164 | OPM_PROTECTION_STANDARD_IEC61880_525I = 0x1, | |
165 | OPM_PROTECTION_STANDARD_IEC61880_2_525I = 0x2, | |
166 | OPM_PROTECTION_STANDARD_IEC62375_625P = 0x4, | |
167 | OPM_PROTECTION_STANDARD_EIA608B_525 = 0x8, | |
168 | OPM_PROTECTION_STANDARD_EN300294_625I = 0x10, | |
169 | OPM_PROTECTION_STANDARD_CEA805A_TYPEA_525P = 0x20, | |
170 | OPM_PROTECTION_STANDARD_CEA805A_TYPEA_750P = 0x40, | |
171 | OPM_PROTECTION_STANDARD_CEA805A_TYPEA_1125I = 0x80, | |
172 | OPM_PROTECTION_STANDARD_CEA805A_TYPEB_525P = 0x100, | |
173 | OPM_PROTECTION_STANDARD_CEA805A_TYPEB_750P = 0x200, | |
174 | OPM_PROTECTION_STANDARD_CEA805A_TYPEB_1125I = 0x400, | |
175 | OPM_PROTECTION_STANDARD_ARIBTRB15_525I = 0x800, | |
176 | OPM_PROTECTION_STANDARD_ARIBTRB15_525P = 0x1000, | |
177 | OPM_PROTECTION_STANDARD_ARIBTRB15_750P = 0x2000, | |
178 | OPM_PROTECTION_STANDARD_ARIBTRB15_1125I = 0x4000, | |
179 | }} | |
180 | ENUM!{enum OPM_IMAGE_ASPECT_RATIO_EN300294 { | |
181 | OPM_ASPECT_RATIO_EN300294_FULL_FORMAT_4_BY_3 = 0, | |
182 | OPM_ASPECT_RATIO_EN300294_BOX_14_BY_9_CENTER = 1, | |
183 | OPM_ASPECT_RATIO_EN300294_BOX_14_BY_9_TOP = 2, | |
184 | OPM_ASPECT_RATIO_EN300294_BOX_16_BY_9_CENTER = 3, | |
185 | OPM_ASPECT_RATIO_EN300294_BOX_16_BY_9_TOP = 4, | |
186 | OPM_ASPECT_RATIO_EN300294_BOX_GT_16_BY_9_CENTER = 5, | |
187 | OPM_ASPECT_RATIO_EN300294_FULL_FORMAT_4_BY_3_PROTECTED_CENTER = 6, | |
188 | OPM_ASPECT_RATIO_EN300294_FULL_FORMAT_16_BY_9_ANAMORPHIC = 7, | |
189 | OPM_ASPECT_RATIO_FORCE_ULONG = 0x7fffffff, | |
190 | }} | |
191 | STRUCT!{#[repr(packed)] struct OPM_RANDOM_NUMBER { | |
192 | abRandomNumber: [BYTE; 16], | |
193 | }} | |
194 | STRUCT!{#[repr(packed)] struct OPM_OMAC { | |
195 | abOMAC: [BYTE; 16], | |
196 | }} | |
197 | STRUCT!{#[repr(packed)] struct OPM_ENCRYPTED_INITIALIZATION_PARAMETERS { | |
198 | abEncryptedInitializationParameters: [BYTE; 256], | |
199 | }} | |
200 | STRUCT!{#[repr(packed)] struct OPM_GET_INFO_PARAMETERS { | |
201 | omac: OPM_OMAC, | |
202 | rnRandomNumber: OPM_RANDOM_NUMBER, | |
203 | guidInformation: GUID, | |
204 | ulSequenceNumber: ULONG, | |
205 | cbParametersSize: ULONG, | |
206 | abParameters: [BYTE; 4056], | |
207 | }} | |
208 | STRUCT!{#[repr(packed)] struct OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS { | |
209 | rnRandomNumber: OPM_RANDOM_NUMBER, | |
210 | guidInformation: GUID, | |
211 | ulSequenceNumber: ULONG, | |
212 | cbParametersSize: ULONG, | |
213 | abParameters: [BYTE; 4056], | |
214 | }} | |
215 | STRUCT!{#[repr(packed)] struct OPM_HDCP_KEY_SELECTION_VECTOR { | |
216 | abKeySelectionVector: [BYTE; 5], | |
217 | }} | |
218 | STRUCT!{#[repr(packed)] struct OPM_CONNECTED_HDCP_DEVICE_INFORMATION { | |
219 | rnRandomNumber: OPM_RANDOM_NUMBER, | |
220 | ulStatusFlags: ULONG, | |
221 | ulHDCPFlags: ULONG, | |
222 | ksvB: OPM_HDCP_KEY_SELECTION_VECTOR, | |
223 | Reserved: [BYTE; 11], | |
224 | Reserved2: [BYTE; 16], | |
225 | Reserved3: [BYTE; 16], | |
226 | }} | |
227 | STRUCT!{#[repr(packed)] struct OPM_REQUESTED_INFORMATION { | |
228 | omac: OPM_OMAC, | |
229 | cbRequestedInformationSize: ULONG, | |
230 | abRequestedInformation: [BYTE; 4076], | |
231 | }} | |
232 | STRUCT!{#[repr(packed)] struct OPM_STANDARD_INFORMATION { | |
233 | rnRandomNumber: OPM_RANDOM_NUMBER, | |
234 | ulStatusFlags: ULONG, | |
235 | ulInformation: ULONG, | |
236 | ulReserved: ULONG, | |
237 | ulReserved2: ULONG, | |
238 | }} | |
239 | STRUCT!{#[repr(packed)] struct OPM_ACTUAL_OUTPUT_FORMAT { | |
240 | rnRandomNumber: OPM_RANDOM_NUMBER, | |
241 | ulStatusFlags: ULONG, | |
242 | ulDisplayWidth: ULONG, | |
243 | ulDisplayHeight: ULONG, | |
244 | dsfSampleInterleaveFormat: DXVA2_SampleFormat, | |
245 | d3dFormat: D3DFORMAT, | |
246 | ulFrequencyNumerator: ULONG, | |
247 | ulFrequencyDenominator: ULONG, | |
248 | }} | |
249 | STRUCT!{#[repr(packed)] struct OPM_ACP_AND_CGMSA_SIGNALING { | |
250 | rnRandomNumber: OPM_RANDOM_NUMBER, | |
251 | ulStatusFlags: ULONG, | |
252 | ulAvailableTVProtectionStandards: ULONG, | |
253 | ulActiveTVProtectionStandard: ULONG, | |
254 | ulReserved: ULONG, | |
255 | ulAspectRatioValidMask1: ULONG, | |
256 | ulAspectRatioData1: ULONG, | |
257 | ulAspectRatioValidMask2: ULONG, | |
258 | ulAspectRatioData2: ULONG, | |
259 | ulAspectRatioValidMask3: ULONG, | |
260 | ulAspectRatioData3: ULONG, | |
261 | ulReserved2: [ULONG; 4], | |
262 | ulReserved3: [ULONG; 4], | |
263 | }} | |
264 | STRUCT!{#[repr(packed)] struct OPM_OUTPUT_ID_DATA { | |
265 | rnRandomNumber: OPM_RANDOM_NUMBER, | |
266 | ulStatusFlags: ULONG, | |
267 | OutputId: UINT64, | |
268 | }} | |
269 | STRUCT!{#[repr(packed)] struct OPM_CONFIGURE_PARAMETERS { | |
270 | omac: OPM_OMAC, | |
271 | guidSetting: GUID, | |
272 | ulSequenceNumber: ULONG, | |
273 | cbParametersSize: ULONG, | |
274 | abParameters: [BYTE; 4056], | |
275 | }} | |
276 | STRUCT!{#[repr(packed)] struct OPM_SET_PROTECTION_LEVEL_PARAMETERS { | |
277 | ulProtectionType: ULONG, | |
278 | ulProtectionLevel: ULONG, | |
279 | Reserved: ULONG, | |
280 | Reserved2: ULONG, | |
281 | }} | |
282 | STRUCT!{#[repr(packed)] struct OPM_SET_ACP_AND_CGMSA_SIGNALING_PARAMETERS { | |
283 | ulNewTVProtectionStandard: ULONG, | |
284 | ulAspectRatioChangeMask1: ULONG, | |
285 | ulAspectRatioData1: ULONG, | |
286 | ulAspectRatioChangeMask2: ULONG, | |
287 | ulAspectRatioData2: ULONG, | |
288 | ulAspectRatioChangeMask3: ULONG, | |
289 | ulAspectRatioData3: ULONG, | |
290 | ulReserved: [ULONG; 4], | |
291 | ulReserved2: [ULONG; 4], | |
292 | ulReserved3: ULONG, | |
293 | }} | |
294 | STRUCT!{#[repr(packed)] struct OPM_SET_HDCP_SRM_PARAMETERS { | |
295 | ulSRMVersion: ULONG, | |
296 | }} | |
297 | STRUCT!{#[repr(packed)] struct OPM_GET_CODEC_INFO_PARAMETERS { | |
298 | cbVerifier: DWORD, | |
299 | Verifier: [BYTE; 4052], | |
300 | }} | |
301 | STRUCT!{#[repr(packed)] struct OPM_GET_CODEC_INFO_INFORMATION { | |
302 | rnRandomNumber: OPM_RANDOM_NUMBER, | |
303 | Merit: DWORD, | |
304 | }} | |
305 | DEFINE_GUID!{IID_IOPMVideoOutput, | |
306 | 0x0a15159d, 0x41c7, 0x4456, 0x93, 0xe1, 0x28, 0x4c, 0xd6, 0x1d, 0x4e, 0x8d} | |
307 | RIDL!{#[uuid(0x0a15159d, 0x41c7, 0x4456, 0x93, 0xe1, 0x28, 0x4c, 0xd6, 0x1d, 0x4e, 0x8d)] | |
308 | interface IOPMVideoOutput(IOPMVideoOutputVtbl): IUnknown(IUnknownVtbl) { | |
309 | fn StartInitialization( | |
310 | prnRandomNumber: *mut OPM_RANDOM_NUMBER, | |
311 | ppbCertificate: *mut *mut BYTE, | |
312 | pulCertificateLength: *mut ULONG, | |
313 | ) -> HRESULT, | |
314 | fn FinishInitialization( | |
315 | pParameters: *const OPM_ENCRYPTED_INITIALIZATION_PARAMETERS, | |
316 | ) -> HRESULT, | |
317 | fn GetInformation( | |
318 | pParameters: *const OPM_GET_INFO_PARAMETERS, | |
319 | pRequestedInformation: *mut OPM_REQUESTED_INFORMATION, | |
320 | ) -> HRESULT, | |
321 | fn COPPCompatibleGetInformation( | |
322 | pParameters: *const OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS, | |
323 | pRequestedInformation: *mut OPM_REQUESTED_INFORMATION, | |
324 | ) -> HRESULT, | |
325 | fn Configure( | |
326 | pParameters: *const OPM_CONFIGURE_PARAMETERS, | |
327 | ulAdditionalParametersSize: ULONG, | |
328 | pbAdditionalParameters: *const BYTE, | |
329 | ) -> HRESULT, | |
330 | }} | |
331 | #[inline] | |
332 | pub fn GetBusType(ulBusTypeAndImplementation: ULONG) -> ULONG { | |
333 | ulBusTypeAndImplementation & OPM_BUS_TYPE_MASK | |
334 | } | |
335 | #[inline] | |
336 | pub fn GetBusImplementation(ulBusTypeAndImplementation: ULONG) -> ULONG { | |
337 | (ulBusTypeAndImplementation & OPM_BUS_IMPLEMENTATION_MODIFIER_MASK) >> 16 | |
338 | } | |
339 | #[inline] | |
340 | pub fn IsNonStandardBusImplementation(ulBusTypeAndImplementation: ULONG) -> ULONG { | |
341 | ulBusTypeAndImplementation & OPM_BUS_IMPLEMENTATION_MODIFIER_NON_STANDARD | |
342 | } | |
343 | extern "system" { | |
344 | pub fn OPMGetVideoOutputsFromHMONITOR( | |
345 | hMonitor: HMONITOR, | |
346 | vos: OPM_VIDEO_OUTPUT_SEMANTICS, | |
347 | pulNumVideoOutputs: *mut ULONG, | |
348 | pppOPMVideoOutputArray: *mut *mut *mut IOPMVideoOutput, | |
349 | ) -> HRESULT; | |
350 | pub fn OPMGetVideoOutputForTarget( | |
351 | pAdapterLuid: *mut LUID, | |
352 | VidPnTarget: ULONG, | |
353 | vos: OPM_VIDEO_OUTPUT_SEMANTICS, | |
354 | ppOPMVideoOutput: *mut *mut IOPMVideoOutput, | |
355 | ) -> HRESULT; | |
356 | pub fn OPMGetVideoOutputsFromIDirect3DDevice9Object( | |
357 | pDirect3DDevice9: *mut IDirect3DDevice9, | |
358 | vos: OPM_VIDEO_OUTPUT_SEMANTICS, | |
359 | pulNumVideoOutputs: *mut ULONG, | |
360 | pppOPMVideoOutputArray: *mut *mut *mut IOPMVideoOutput, | |
361 | ) -> HRESULT; | |
362 | } |