blob: 7f93aeb0d251d6c3e6b02f39ba27499418722453 [file] [log] [blame]
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
*/
#ifndef __INC_DEVICETOPOLOGY__
#define __INC_DEVICETOPOLOGY__
#if (_WIN32_WINNT >= 0x0600)
#include <windef.h>
typedef enum _ConnectorType {
Unknown_Connector = 0,
Physical_Internal,
Physical_External,
Software_IO,
Software_Fixed,
Network
} ConnectorType;
typedef enum _DataFlow {
In,
Out
} DataFlow;
typedef enum _PartType {
Connector,
Subunit
} PartType;
/* NOTE: EChannelMapping enumeration is obsoleted in Windows/7:
* SPEAKER_FRONT_LEFT and friends from ksmedia.h are to
* be used as KSJACK_DESCRIPTION->ChannelMapping member
* values who also changed to a DWORD. See:
* http://msdn.microsoft.com/en-us/library/dd316543(VS.85).aspx
*/
typedef enum _EChannelMapping {
ePcxChanMap_FL_FR = 0,
ePcxChanMap_FC_LFE,
ePcxChanMap_BL_BR,
ePcxChanMap_FLC_FRC,
ePcxChanMap_SL_SR,
ePcxChanMap_Unknown
} EChannelMapping;
typedef enum _EPcxConnectionType {
eConnTypeUnknown = 0,
eConnTypeEighth,
eConnType3Point5mm = eConnTypeEighth,
eConnTypeQuarter,
eConnTypeAtapiInternal,
eConnTypeRCA,
eConnTypeOptical,
eConnTypeOtherDigital,
eConnTypeOtherAnalog,
eConnTypeMultichannelAnalogDIN,
eConnTypeXlrProfessional,
eConnTypeRJ11Modem,
eConnTypeCombination
} EPcxConnectionType;
typedef enum _EPcxGeoLocation {
eGeoLocRear = 0,
eGeoLocFront,
eGeoLocLeft,
eGeoLocRight,
eGeoLocTop,
eGeoLocBottom,
eGeoLocRearOPanel,
eGeoLocRearPanel = eGeoLocRearOPanel,
eGeoLocRiser,
eGeoLocInsideMobileLid,
eGeoLocDrivebay,
eGeoLocHDMI,
eGeoLocOutsideMobileLid,
eGeoLocATAPI
} EPcxGeoLocation;
typedef enum _EPcxGenLocation {
eGenLocPrimaryBox = 0,
eGenLocInternal,
eGenLocSeperate,
eGenLocSeparate = eGenLocSeperate,
eGenLocOther
} EPcxGenLocation;
typedef enum _EPxcPortConnection {
ePortConnJack = 0,
ePortConnIntegratedDevice,
ePortConnBothIntegratedAndJack,
ePortConnUnknown
} EPxcPortConnection;
typedef struct _KSJACK_DESCRIPTION {
EChannelMapping ChannelMapping; /* see note up above for EChannelMapping */
COLORREF Color;
EPcxConnectionType ConnectionType;
EPcxGeoLocation GeoLocation;
EPcxGenLocation GenLocation;
EPxcPortConnection PortConnection;
BOOL IsConnected;
} KSJACK_DESCRIPTION, *PKSJACK_DESCRIPTION;
#define SPEAKER_FRONT_LEFT 0x1
#define SPEAKER_FRONT_RIGHT 0x2
#define SPEAKER_FRONT_CENTER 0x4
#define SPEAKER_LOW_FREQUENCY 0x8
#define SPEAKER_BACK_LEFT 0x10
#define SPEAKER_BACK_RIGHT 0x20
#define SPEAKER_FRONT_LEFT_OF_CENTER 0x40
#define SPEAKER_FRONT_RIGHT_OF_CENTER 0x80
#define SPEAKER_BACK_CENTER 0x100
#define SPEAKER_SIDE_LEFT 0x200
#define SPEAKER_SIDE_RIGHT 0x400
#define SPEAKER_TOP_CENTER 0x800
#define SPEAKER_TOP_FRONT_LEFT 0x1000
#define SPEAKER_TOP_FRONT_CENTER 0x2000
#define SPEAKER_TOP_FRONT_RIGHT 0x4000
#define SPEAKER_TOP_BACK_LEFT 0x8000
#define SPEAKER_TOP_BACK_CENTER 0x10000
#define SPEAKER_TOP_BACK_RIGHT 0x20000
#endif /*(_WIN32_WINNT >= 0x0600)*/
#if (_WIN32_WINNT >= 0x0601)
typedef enum _KSJACK_SINK_CONNECTIONTYPE {
KSJACK_SINK_CONNECTIONTYPE_HDMI = 0,
KSJACK_SINK_CONNECTIONTYPE_DISPLAYPORT = 1
} KSJACK_SINK_CONNECTIONTYPE;
typedef struct _KSJACK_DESCRIPTION2 {
DWORD DeviceStateInfo;
DWORD JackCapabilities;
} KSJACK_DESCRIPTION2, *PKSJACK_DESCRIPTION2;
#define JACKDESC2_PRESENCE_DETECT_CAPABILITY (0x00000001)
#define JACKDESC2_DYNAMIC_FORMAT_CHANGE_CAPABILITY (0x00000002)
#define MAX_SINK_DESCRIPTION_NAME_LENGTH 32
typedef struct _KSJACK_SINK_INFORMATION {
KSJACK_SINK_CONNECTIONTYPE ConnType;
WORD ManufacturerId;
WORD ProductId;
WORD AudioLatency;
WINBOOL HDCPCapable;
WINBOOL AICapable;
UCHAR SinkDescriptionLength;
WCHAR SinkDescription [MAX_SINK_DESCRIPTION_NAME_LENGTH];
LUID PortId;
} KSJACK_SINK_INFORMATION, *PKSJACK_SINK_INFORMATION;
#endif /*(_WIN32_WINNT >= 0x0601)*/
#endif /*__INC_DEVICETOPOLOGY__*/