' ########################################################################################
' Microsoft Windows
' File: PhysicalMonitorEnumerationAPI.inc (Windows Vista)
' Contents: Windows Installer (MSI)
' Copyright (c) 2011 Jos? Roca
' Portions Copyright (c) Microsoft Corporation.
' All Rights Reserved.
' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
' EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
' MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
' ########################################################################################
#IF NOT %DEF(PBX_physicalmonitorenumerationapi_PBI)
#DEFINE PBX_physicalmonitorenumerationapi_PBI
%EQUATE `PHYSICALMONITORENUMERATIONAPI_INC = 1
#INCLUDE ONCE "Legacy/Graphics/d3d9.inc"
'#pragma pack( push, 1 )
'/******************************************************************************
' Physical Monitor Type Definitions
'******************************************************************************/
'typedef __success(return == TRUE) BOOL _BOOL;
'/******************************************************************************
' Physical Monitor Constants
'******************************************************************************/
'// A physical monitor description is always an array of 128 characters. Some
'// of the characters may not be used.
%EQUATE `PHYSICAL_MONITOR_DESCRIPTION_SIZE = 128
'/******************************************************************************
' Physical Monitor Structures
'******************************************************************************/
' // Size = 260 bytes
TYPE PHYSICAL_MONITOR DWORD
 hPhysicalMonitor AS DWORD
 szPhysicalMonitorDescription AS STRING * %PHYSICAL_MONITOR_DESCRIPTION_SIZE * 2 ' WCHAR
END TYPE
'/******************************************************************************
' Physical Monitor Enumeration Functions
'******************************************************************************/
DECLARE FUNCTION GetNumberOfPhysicalMonitorsFromHMONITOR LIB "dxva2.dll" ALIAS "GetNumberOfPhysicalMonitorsFromHMONITOR" ( BYVAL hMonitor AS QUAD ) AS LONG ' HMONITOR hMonitor , BYREF pdwNumberOfPhysicalMonitors AS QUAD
DECLARE FUNCTION GetNumberOfPhysicalMonitorsFromIDirect3DDevice9 LIB "dxva2.dll" ALIAS "GetNumberOfPhysicalMonitorsFromIDirect3DDevice9" ( BYVAL pDirect3DDevice9 AS IDirect3DDevice9
 , BYREF pdwNumberOfPhysicalMonitors AS DWORD
 ) AS LONG
DECLARE FUNCTION GetPhysicalMonitorsFromHMONITOR LIB "dxva2.dll" ALIAS "GetPhysicalMonitorsFromHMONITOR" ( BYVAL hMonitor AS DWORD
 , BYVAL dwPhysicalMonitorArraySize AS DWORD
 , BYREF pPhysicalMonitorArray AS PHYSICAL_MONITOR
 ) AS LONG
DECLARE FUNCTION GetPhysicalMonitorsFromIDirect3DDevice9 LIB "dxva2.dll" ALIAS "GetPhysicalMonitorsFromIDirect3DDevice9" ( BYVAL pDirect3DDevice9 AS IDirect3DDevice9
 , BYVAL dwPhysicalMonitorArraySize AS DWORD
 , BYREF pPhysicalMonitorArray AS PHYSICAL_MONITOR
 ) AS LONG
DECLARE FUNCTION DestroyPhysicalMonitor LIB "dxva2.dll" ALIAS "DestroyPhysicalMonitor" ( BYVAL hMonitor AS DWORD
 ) AS LONG
DECLARE FUNCTION DestroyPhysicalMonitors LIB "dxva2.dll" ALIAS "DestroyPhysicalMonitors" ( BYVAL dwPhysicalMonitorArraySize AS DWORD
 , BYREF pPhysicalMonitorArray AS PHYSICAL_MONITOR
 ) AS LONG
'#pragma pack( pop )
#ENDIF
