/////////////////////////////////////////////////////////////////////////////// // // OPM API // // Copyright (c) 2005, Microsoft Corporation. All rights reserved. /////////////////////////////////////////////////////////////////////////////// import "unknwn.idl"; import "dxva2api.idl"; cpp_quote("#ifndef OPM_API_DEFINED") cpp_quote("#define OPM_API_DEFINED") cpp_quote("#pragma pack( push, 1 )") //============================================================================= // Description: // // OPM Information GUIDs. These GUIDs are used by IOPMVideoOutput::GetInformation() // cpp_quote( "DEFINE_GUID( OPM_GET_CURRENT_HDCP_SRM_VERSION, 0x99c5ceff, 0x5f1d, 0x4879, 0x81, 0xc1, 0xc5, 0x24, 0x43, 0xc9, 0x48, 0x2b );" ) //============================================================================= // Description: // // OPM Information GUIDs. These GUIDs are used by // IOPMVideoOutput::COPPCompatibleGetInformation(). // cpp_quote( "DEFINE_GUID( OPM_GET_CONNECTED_HDCP_DEVICE_INFORMATION, 0x0db59d74, 0xa992, 0x492e, 0xa0, 0xbd, 0xc2, 0x3f, 0xda, 0x56, 0x4e, 0x00 );" ) cpp_quote( "DEFINE_GUID( OPM_GET_ACP_AND_CGMSA_SIGNALING, 0x6629a591, 0x3b79, 0x4cf3, 0x92, 0x4a, 0x11, 0xe8, 0xe7, 0x81, 0x16, 0x71 );" ) //============================================================================= // Description: // // OPM Information GUIDs. These GUIDs are used by IOPMVideoOutput::GetInformation() // and IOPMVideoOutput::COPPCompatibleGetInformation(). // cpp_quote( "DEFINE_GUID( OPM_GET_CONNECTOR_TYPE, 0x81d0bfd5, 0x6afe, 0x48c2, 0x99, 0xc0, 0x95, 0xa0, 0x8f, 0x97, 0xc5, 0xda );" ) cpp_quote( "DEFINE_GUID( OPM_GET_SUPPORTED_PROTECTION_TYPES, 0x38f2a801, 0x9a6c, 0x48bb, 0x91, 0x07, 0xb6, 0x69, 0x6e, 0x6f, 0x17, 0x97 );" ) cpp_quote( "DEFINE_GUID( OPM_GET_VIRTUAL_PROTECTION_LEVEL, 0xb2075857, 0x3eda, 0x4d5d, 0x88, 0xdb, 0x74, 0x8f, 0x8c, 0x1a, 0x05, 0x49 );" ) cpp_quote( "DEFINE_GUID( OPM_GET_ACTUAL_PROTECTION_LEVEL, 0x1957210a, 0x7766, 0x452a, 0xb9, 0x9a, 0xd2, 0x7a, 0xed, 0x54, 0xf0, 0x3a );" ) cpp_quote( "DEFINE_GUID( OPM_GET_ACTUAL_OUTPUT_FORMAT, 0xd7bf1ba3, 0xad13, 0x4f8e, 0xaf, 0x98, 0x0d, 0xcb, 0x3c, 0xa2, 0x04, 0xcc );" ) cpp_quote( "DEFINE_GUID( OPM_GET_ADAPTER_BUS_TYPE, 0xc6f4d673, 0x6174, 0x4184, 0x8e, 0x35, 0xf6, 0xdb, 0x52, 0x0, 0xbc, 0xba );" ) cpp_quote( "DEFINE_GUID( OPM_GET_OUTPUT_ID, 0x72cb6df3, 0x244f, 0x40ce, 0xb0, 0x9e, 0x20, 0x50, 0x6a, 0xf6, 0x30, 0x2f );" ) cpp_quote( "DEFINE_GUID( OPM_GET_DVI_CHARACTERISTICS, 0xa470b3bb, 0x5dd7, 0x4172, 0x83, 0x9c, 0x3d, 0x37, 0x76, 0xe0, 0xeb, 0xf5 );" ) // {4F374491-8F5F-4445-9DBA-95588F6B58B4} cpp_quote( "DEFINE_GUID( OPM_GET_CODEC_INFO, 0x4f374491, 0x8f5f, 0x4445, 0x9d, 0xba, 0x95, 0x58, 0x8f, 0x6b, 0x58, 0xb4);") //============================================================================= // Description: // // OPM Configuration GUIDs. These GUIDs are used by IOPMVideoOutput::Configure(). // cpp_quote( "DEFINE_GUID( OPM_SET_PROTECTION_LEVEL, 0x9bb9327c, 0x4eb5, 0x4727, 0x9f, 0x00, 0xb4, 0x2b, 0x09, 0x19, 0xc0, 0xda );" ) cpp_quote( "DEFINE_GUID( OPM_SET_ACP_AND_CGMSA_SIGNALING, 0x09a631a5, 0xd684, 0x4c60, 0x8e, 0x4d, 0xd3, 0xbb, 0x0f, 0x0b, 0xe3, 0xee );" ) cpp_quote( "DEFINE_GUID( OPM_SET_HDCP_SRM, 0x8b5ef5d1, 0xc30d, 0x44ff, 0x84, 0xa5, 0xea, 0x71, 0xdc, 0xe7, 0x8f, 0x13 );" ) cpp_quote( "DEFINE_GUID( OPM_SET_PROTECTION_LEVEL_ACCORDING_TO_CSS_DVD, 0x39ce333e, 0x4cc0, 0x44ae, 0xbf, 0xcc, 0xda, 0x50, 0xb5, 0xf8, 0x2e, 0x72);" ) //============================================================================= // Description: // // Constants used by the OPM API // enum { OPM_OMAC_SIZE = 16, OPM_128_BIT_RANDOM_NUMBER_SIZE = 16, OPM_ENCRYPTED_INITIALIZATION_PARAMETERS_SIZE = 256, OPM_CONFIGURE_SETTING_DATA_SIZE = 4056, OPM_GET_INFORMATION_PARAMETERS_SIZE = 4056, OPM_REQUESTED_INFORMATION_SIZE = 4076, OPM_HDCP_KEY_SELECTION_VECTOR_SIZE = 5, OPM_PROTECTION_TYPE_SIZE = 4, OPM_BUS_TYPE_MASK = 0xFFFF, OPM_BUS_IMPLEMENTATION_MODIFIER_MASK = 0x7FFF, }; //============================================================================= // Description: // // Enumerations used by OPMGetVideoOutputFromHMONITOR() and // OPMGetVideoOutputFromIDirect3DDevice9Object(). // typedef enum _OPM_VIDEO_OUTPUT_SEMANTICS { OPM_VOS_COPP_SEMANTICS = 0, OPM_VOS_OPM_SEMANTICS = 1 } OPM_VIDEO_OUTPUT_SEMANTICS; //============================================================================= // Description: // // Enumerations used by IOPMVideoOutput::COPPCompatibleGetInformation() // enum { OPM_HDCP_FLAG_NONE = 0x00, OPM_HDCP_FLAG_REPEATER = 0x01 }; //============================================================================= // Description: // // Enumerations used by IOPMVideoOutput::GetInformation() and // IOPMVideoOutput::COPPCompatibleGetInformation() // enum { OPM_STATUS_NORMAL = 0x00, OPM_STATUS_LINK_LOST = 0x01, OPM_STATUS_RENEGOTIATION_REQUIRED = 0x02, OPM_STATUS_TAMPERING_DETECTED = 0x04, OPM_STATUS_REVOKED_HDCP_DEVICE_ATTACHED = 0x08 }; enum { OPM_CONNECTOR_TYPE_OTHER = -1, OPM_CONNECTOR_TYPE_VGA = 0, OPM_CONNECTOR_TYPE_SVIDEO = 1, OPM_CONNECTOR_TYPE_COMPOSITE_VIDEO = 2, OPM_CONNECTOR_TYPE_COMPONENT_VIDEO = 3, OPM_CONNECTOR_TYPE_DVI = 4, OPM_CONNECTOR_TYPE_HDMI = 5, OPM_CONNECTOR_TYPE_LVDS = 6, OPM_CONNECTOR_TYPE_D_JPN = 8, OPM_CONNECTOR_TYPE_SDI = 9, OPM_CONNECTOR_TYPE_DISPLAYPORT_EXTERNAL = 10, OPM_CONNECTOR_TYPE_DISPLAYPORT_EMBEDDED = 11, OPM_CONNECTOR_TYPE_UDI_EXTERNAL = 12, OPM_CONNECTOR_TYPE_UDI_EMBEDDED = 13, OPM_COPP_COMPATIBLE_CONNECTOR_TYPE_INTERNAL = 0x80000000 }; enum { OPM_DVI_CHARACTERISTIC_1_0 = 1, OPM_DVI_CHARACTERISTIC_1_1_OR_ABOVE = 2 }; // NUAE stands for Non-User Accessible Enclosure enum { OPM_BUS_TYPE_OTHER = 0x00000000, OPM_BUS_TYPE_PCI = 0x00000001, OPM_BUS_TYPE_PCIX = 0x00000002, OPM_BUS_TYPE_PCIEXPRESS = 0x00000003, OPM_BUS_TYPE_AGP = 0x00000004, OPM_BUS_IMPLEMENTATION_MODIFIER_INSIDE_OF_CHIPSET = 0x00010000, OPM_BUS_IMPLEMENTATION_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_CHIP = 0x00020000, OPM_BUS_IMPLEMENTATION_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_SOCKET = 0x00030000, OPM_BUS_IMPLEMENTATION_MODIFIER_DAUGHTER_BOARD_CONNECTOR = 0x00040000, OPM_BUS_IMPLEMENTATION_MODIFIER_DAUGHTER_BOARD_CONNECTOR_INSIDE_OF_NUAE = 0x00050000, OPM_BUS_IMPLEMENTATION_MODIFIER_NON_STANDARD = 0x80000000, OPM_COPP_COMPATIBLE_BUS_TYPE_INTEGRATED = 0x80000000 }; //============================================================================= // Description: // // Enumerations used by IOPMVideoOutput::COPPCompatibleGetInformation(), // IOPMVideoOutput::GetInformation() and IOPMVideoOutput::Configure(). // typedef enum _OPM_DPCP_PROTECTION_LEVEL { OPM_DPCP_OFF = 0, OPM_DPCP_ON = 1, OPM_DPCP_FORCE_ULONG = 0x7fffffff } OPM_DPCP_PROTECTION_LEVEL; typedef enum _OPM_HDCP_PROTECTION_LEVEL { OPM_HDCP_OFF = 0, OPM_HDCP_ON = 1, OPM_HDCP_FORCE_ULONG = 0x7fffffff } OPM_HDCP_PROTECTION_LEVEL; enum { OPM_CGMSA_OFF = 0x00, OPM_CGMSA_COPY_FREELY = 0x01, OPM_CGMSA_COPY_NO_MORE = 0x02, OPM_CGMSA_COPY_ONE_GENERATION = 0x03, OPM_CGMSA_COPY_NEVER = 0x04, OPM_CGMSA_REDISTRIBUTION_CONTROL_REQUIRED = 0x08, }; typedef enum _OPM_ACP_PROTECTION_LEVEL { OPM_ACP_OFF = 0, OPM_ACP_LEVEL_ONE = 1, OPM_ACP_LEVEL_TWO = 2, OPM_ACP_LEVEL_THREE = 3, OPM_ACP_FORCE_ULONG = 0x7fffffff } OPM_ACP_PROTECTION_LEVEL; enum { OPM_PROTECTION_TYPE_OTHER = 0x80000000, OPM_PROTECTION_TYPE_NONE = 0x00000000, OPM_PROTECTION_TYPE_COPP_COMPATIBLE_HDCP = 0x00000001, OPM_PROTECTION_TYPE_ACP = 0x00000002, OPM_PROTECTION_TYPE_CGMSA = 0x00000004, OPM_PROTECTION_TYPE_HDCP = 0x00000008, OPM_PROTECTION_TYPE_DPCP = 0x00000010 }; enum { OPM_PROTECTION_STANDARD_OTHER = 0x80000000, OPM_PROTECTION_STANDARD_NONE = 0x00000000, OPM_PROTECTION_STANDARD_IEC61880_525I = 0x00000001, OPM_PROTECTION_STANDARD_IEC61880_2_525I = 0x00000002, OPM_PROTECTION_STANDARD_IEC62375_625P = 0x00000004, OPM_PROTECTION_STANDARD_EIA608B_525 = 0x00000008, OPM_PROTECTION_STANDARD_EN300294_625I = 0x00000010, OPM_PROTECTION_STANDARD_CEA805A_TYPEA_525P = 0x00000020, OPM_PROTECTION_STANDARD_CEA805A_TYPEA_750P = 0x00000040, OPM_PROTECTION_STANDARD_CEA805A_TYPEA_1125I = 0x00000080, OPM_PROTECTION_STANDARD_CEA805A_TYPEB_525P = 0x00000100, OPM_PROTECTION_STANDARD_CEA805A_TYPEB_750P = 0x00000200, OPM_PROTECTION_STANDARD_CEA805A_TYPEB_1125I = 0x00000400, OPM_PROTECTION_STANDARD_ARIBTRB15_525I = 0x00000800, OPM_PROTECTION_STANDARD_ARIBTRB15_525P = 0x00001000, OPM_PROTECTION_STANDARD_ARIBTRB15_750P = 0x00002000, OPM_PROTECTION_STANDARD_ARIBTRB15_1125I = 0x00004000, }; typedef enum _OPM_IMAGE_ASPECT_RATIO_EN300294 { OPM_ASPECT_RATIO_EN300294_FULL_FORMAT_4_BY_3 = 0, OPM_ASPECT_RATIO_EN300294_BOX_14_BY_9_CENTER = 1, OPM_ASPECT_RATIO_EN300294_BOX_14_BY_9_TOP = 2, OPM_ASPECT_RATIO_EN300294_BOX_16_BY_9_CENTER = 3, OPM_ASPECT_RATIO_EN300294_BOX_16_BY_9_TOP = 4, OPM_ASPECT_RATIO_EN300294_BOX_GT_16_BY_9_CENTER = 5, OPM_ASPECT_RATIO_EN300294_FULL_FORMAT_4_BY_3_PROTECTED_CENTER = 6, OPM_ASPECT_RATIO_EN300294_FULL_FORMAT_16_BY_9_ANAMORPHIC = 7, OPM_ASPECT_RATIO_FORCE_ULONG = 0x7FFFFFFF } OPM_IMAGE_ASPECT_RATIO_EN300294; //============================================================================= // Description: // // Structures used by several functions // typedef struct _OPM_RANDOM_NUMBER { BYTE abRandomNumber[OPM_128_BIT_RANDOM_NUMBER_SIZE]; } OPM_RANDOM_NUMBER; typedef struct _OPM_OMAC { BYTE abOMAC[OPM_OMAC_SIZE]; } OPM_OMAC; //============================================================================= // Description: // // Structures used by IOPMVideoOutput::FinishInitialization() // typedef struct _OPM_ENCRYPTED_INITIALIZATION_PARAMETERS { BYTE abEncryptedInitializationParameters[OPM_ENCRYPTED_INITIALIZATION_PARAMETERS_SIZE]; } OPM_ENCRYPTED_INITIALIZATION_PARAMETERS; //============================================================================= // Description: // // Structures used by IOPMVideoOutput::GetInformation() // typedef struct _OPM_GET_INFO_PARAMETERS { OPM_OMAC omac; OPM_RANDOM_NUMBER rnRandomNumber; GUID guidInformation; ULONG ulSequenceNumber; ULONG cbParametersSize; BYTE abParameters[OPM_GET_INFORMATION_PARAMETERS_SIZE]; } OPM_GET_INFO_PARAMETERS; //============================================================================= // Description: // // Structures used by IOPMVideoOutput::COPPCompatibleGetInformation() // typedef struct _OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS { OPM_RANDOM_NUMBER rnRandomNumber; GUID guidInformation; ULONG ulSequenceNumber; ULONG cbParametersSize; BYTE abParameters[OPM_GET_INFORMATION_PARAMETERS_SIZE]; } OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS; typedef struct _OPM_HDCP_KEY_SELECTION_VECTOR { BYTE abKeySelectionVector[OPM_HDCP_KEY_SELECTION_VECTOR_SIZE]; } OPM_HDCP_KEY_SELECTION_VECTOR; typedef struct _OPM_CONNECTED_HDCP_DEVICE_INFORMATION { OPM_RANDOM_NUMBER rnRandomNumber; ULONG ulStatusFlags; ULONG ulHDCPFlags; OPM_HDCP_KEY_SELECTION_VECTOR ksvB; BYTE Reserved[11]; BYTE Reserved2[16]; BYTE Reserved3[16]; } OPM_CONNECTED_HDCP_DEVICE_INFORMATION; //============================================================================= // Description: // // Structures used by IOPMVideoOutput::GetInformation() and // IOPMVideoOutput::COPPCompatibleGetInformation() // typedef struct _OPM_REQUESTED_INFORMATION { OPM_OMAC omac; ULONG cbRequestedInformationSize; BYTE abRequestedInformation[OPM_REQUESTED_INFORMATION_SIZE]; } OPM_REQUESTED_INFORMATION; typedef struct _OPM_STANDARD_INFORMATION { OPM_RANDOM_NUMBER rnRandomNumber; ULONG ulStatusFlags; ULONG ulInformation; ULONG ulReserved; ULONG ulReserved2; } OPM_STANDARD_INFORMATION; cpp_quote("#ifndef DO_NOT_USE_DIRECTX_OR_DXVA2") typedef struct _OPM_ACTUAL_OUTPUT_FORMAT { OPM_RANDOM_NUMBER rnRandomNumber; ULONG ulStatusFlags; ULONG ulDisplayWidth; ULONG ulDisplayHeight; DXVA2_SampleFormat dsfSampleInterleaveFormat; D3DFORMAT d3dFormat; ULONG ulFrequencyNumerator; ULONG ulFrequencyDenominator; } OPM_ACTUAL_OUTPUT_FORMAT; cpp_quote("#endif // DO_NOT_USE_DIRECTX_OR_DXVA2") typedef struct _OPM_ACP_AND_CGMSA_SIGNALING { OPM_RANDOM_NUMBER rnRandomNumber; ULONG ulStatusFlags; ULONG ulAvailableTVProtectionStandards; ULONG ulActiveTVProtectionStandard; ULONG ulReserved; ULONG ulAspectRatioValidMask1; ULONG ulAspectRatioData1; ULONG ulAspectRatioValidMask2; ULONG ulAspectRatioData2; ULONG ulAspectRatioValidMask3; ULONG ulAspectRatioData3; ULONG ulReserved2[4]; ULONG ulReserved3[4]; } OPM_ACP_AND_CGMSA_SIGNALING; typedef struct _OPM_OUTPUT_ID_DATA { OPM_RANDOM_NUMBER rnRandomNumber; ULONG ulStatusFlags; UINT64 OutputId; } OPM_OUTPUT_ID_DATA; //============================================================================= // Description: // // Structures used by IOPMVideoOutput::Configure() // typedef struct _OPM_CONFIGURE_PARAMETERS { OPM_OMAC omac; GUID guidSetting; ULONG ulSequenceNumber; ULONG cbParametersSize; BYTE abParameters[OPM_CONFIGURE_SETTING_DATA_SIZE]; } OPM_CONFIGURE_PARAMETERS; typedef struct _OPM_SET_PROTECTION_LEVEL_PARAMETERS { ULONG ulProtectionType; ULONG ulProtectionLevel; ULONG Reserved; ULONG Reserved2; } OPM_SET_PROTECTION_LEVEL_PARAMETERS; typedef struct _OPM_SET_ACP_AND_CGMSA_SIGNALING_PARAMETERS { ULONG ulNewTVProtectionStandard; ULONG ulAspectRatioChangeMask1; ULONG ulAspectRatioData1; ULONG ulAspectRatioChangeMask2; ULONG ulAspectRatioData2; ULONG ulAspectRatioChangeMask3; ULONG ulAspectRatioData3; ULONG ulReserved[4]; ULONG ulReserved2[4]; ULONG ulReserved3; } OPM_SET_ACP_AND_CGMSA_SIGNALING_PARAMETERS; typedef struct _OPM_SET_HDCP_SRM_PARAMETERS { ULONG ulSRMVersion; } OPM_SET_HDCP_SRM_PARAMETERS; //============================================================================= // Description: // // Input parameter for OPM_GET_CODEC_INFO GetInformation request // This data is stored in the abParameters array of OPM_GET_INFO_PARAMETERS typedef struct _OPM_GET_CODEC_INFO_PARAMETERS { DWORD cbVerifier; BYTE Verifier[OPM_GET_INFORMATION_PARAMETERS_SIZE - 4]; // Class ID of MFT or symbolic link for AVStream // drivers } OPM_GET_CODEC_INFO_PARAMETERS; //============================================================================= // Description: // // Output information for OPM_GET_CODEC_INFO GetInformation request // This data is returned in the abRequestedInformation array of // OPM_REQUESTED_INFORMATION structure typedef struct _OPM_GET_CODEC_INFO_INFORMATION { OPM_RANDOM_NUMBER rnRandomNumber; DWORD Merit; // Merit assigned to the codec } OPM_GET_CODEC_INFO_INFORMATION; //============================================================================= // Description: // // IOPMVideoOutput represents a virtualized video output. It is used to // establish a protected communications channel with an output, get // information from an output and configure an output. // cpp_quote( "#if defined( _WIN32 ) && !defined( _NO_COM )" ) cpp_quote( "DEFINE_GUID( IID_IOPMVideoOutput, 0x0A15159D, 0x41C7, 0x4456, 0x93, 0xE1, 0x28, 0x4C, 0xD6, 0x1D, 0x4E, 0x8D );" ) cpp_quote( "#endif // defined( _WIN32 ) && !defined( _NO_COM )" ) [ object, uuid(0A15159D-41C7-4456-93E1-284CD61D4E8D), local ] interface IOPMVideoOutput : IUnknown { HRESULT StartInitialization( [out] [annotation("__out")] OPM_RANDOM_NUMBER* prnRandomNumber, [out] [annotation("__deref_out_bcount(*pulCertificateLength)")] BYTE** ppbCertificate, [out] [annotation("__out")] ULONG* pulCertificateLength ); HRESULT FinishInitialization( [in] [annotation("__in")] const OPM_ENCRYPTED_INITIALIZATION_PARAMETERS* pParameters ); HRESULT GetInformation( [in] [annotation("__in")] const OPM_GET_INFO_PARAMETERS* pParameters, [out][annotation("__out")] OPM_REQUESTED_INFORMATION* pRequestedInformation ); HRESULT COPPCompatibleGetInformation( [in] [annotation("__in")] const OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS* pParameters, [out][annotation("__out")] OPM_REQUESTED_INFORMATION* pRequestedInformation ); HRESULT Configure( [in] [annotation("__in")] const OPM_CONFIGURE_PARAMETERS* pParameters, [in] [annotation("__in")] ULONG ulAdditionalParametersSize, [in] [annotation("__in_bcount_opt(ulAdditionalParametersSize)")] const BYTE* pbAdditionalParameters ); }; //============================================================================= // Description: // // Ks Property set to use with AVStram drivers // KSPROPSETID_OPMVideoOutput {06F414BB-F43A-4fe2-A566-774B4C81F0DB} cpp_quote( "#ifdef DEFINE_GUIDSTRUCT " ) cpp_quote( "#define STATIC_KSPROPSETID_OPMVideoOutput \\" ) cpp_quote( "0x6f414bb, 0xf43a, 0x4fe2, 0xa5, 0x66, 0x77, 0x4b, 0x4c, 0x81, 0xf0, 0xdb " ) cpp_quote( "DEFINE_GUIDSTRUCT(\"06F414BB-F43A-4fe2-A566-774B4C81F0DB\", KSPROPSETID_OPMVideoOutput); " ) cpp_quote( "#define KSPROPSETID_OPMVideoOutput DEFINE_GUIDNAMED(KSPROPSETID_OPMVideoOutput) " ) cpp_quote( " " ) cpp_quote( "typedef enum { " ) cpp_quote( " // Output is OPM_RANDOM_NUMBER followed by certifiate " ) cpp_quote( " KSMETHOD_OPMVIDEOOUTPUT_STARTINITIALIZATION = 0, " ) cpp_quote( " " ) cpp_quote( " // Input OPM_ENCRYPTED_INITIALIZATION_PARAMETERS " ) cpp_quote( " // Output OPM_STANDARD_INFORMATION " ) cpp_quote( " KSMETHOD_OPMVIDEOOUTPUT_FINISHINITIALIZATION = 1, " ) cpp_quote( " " ) cpp_quote( " // Input is OPM_GET_INFO_PARAMETERS, output is OPM_REQUESTED_INFORMATION " ) cpp_quote( " // Use KsMethod - both input and output in the buffer (not after the KSMETHOD structure) " ) cpp_quote( " KSMETHOD_OPMVIDEOOUTPUT_GETINFORMATION = 2 " ) cpp_quote( "} KSMETHOD_OPMVIDEOOUTPUT; " ) cpp_quote( "#endif " ) //============================================================================= // Description: // // These macros parse a ULONG which contains an OPM bus type constant and // possibly an OPM implementation constant. // cpp_quote( "#define GetBusType( ulBusTypeAndImplementation ) ((ulBusTypeAndImplementation) & OPM_BUS_TYPE_MASK)" ) cpp_quote( "#define GetBusImplementation( ulBusTypeAndImplementation ) (((ulBusTypeAndImplementation) & OPM_BUS_IMPLEMENTATION_MODIFIER_MASK) >> 16) " ) cpp_quote( "#define IsNonStandardBusImplementation( ulBusTypeAndImplementation ) ((ulBusTypeAndImplementation) & OPM_BUS_IMPLEMENTATION_MODIFIER_NON_STANDARD) " ) //============================================================================= // Description: // // These functions create IOPMVideoOutput objects. // cpp_quote( "STDAPI OPMGetVideoOutputsFromHMONITOR( " ) cpp_quote( " __in HMONITOR hMonitor, " ) cpp_quote( " __in OPM_VIDEO_OUTPUT_SEMANTICS vos, " ) cpp_quote( " __out ULONG* pulNumVideoOutputs, " ) cpp_quote( " __deref_out_ecount(*pulNumVideoOutputs) IOPMVideoOutput*** pppOPMVideoOutputArray " ) cpp_quote( " ); " ) cpp_quote("#ifndef DO_NOT_USE_DIRECTX_OR_DXVA2") cpp_quote( "STDAPI OPMGetVideoOutputsFromIDirect3DDevice9Object( " ) cpp_quote( " __in IDirect3DDevice9* pDirect3DDevice9, " ) cpp_quote( " __in OPM_VIDEO_OUTPUT_SEMANTICS vos, " ) cpp_quote( " __out ULONG* pulNumVideoOutputs, " ) cpp_quote( " __deref_out_ecount(*pulNumVideoOutputs) IOPMVideoOutput*** pppOPMVideoOutputArray " ) cpp_quote( " ); " ) cpp_quote("#endif // DO_NOT_USE_DIRECTX_OR_DXVA2") cpp_quote("#pragma pack( pop )") cpp_quote("#endif // OPM_API_DEFINED ")