Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  devicetopology.rs   Sprache: unbekannt

 
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
// All files in the project carrying such notice may not be copied, modified, or distributed
// except according to those terms.
//! The DeviceTopology API gives clients control over a variety of internal functions of audio
//! adapters that they cannot access through the MMDevice API, WASAPI, or the EndpointVolume API.
use ctypes::{c_float, c_void};
use shared::guiddef::{GUID, LPCGUID, REFGUID, REFIID};
use shared::minwindef::{BOOL, DWORD, UCHAR, UINT, ULONG, WORD};
use shared::windef::COLORREF;
use shared::wtypes::VARTYPE;
use um::unknwnbase::{IUnknown, IUnknownVtbl};
use um::winnt::{HRESULT, LONG, LONGLONG, LPWSTR, WCHAR};
DEFINE_GUID!{EVENTCONTEXT_VOLUMESLIDER,
    0xe2c2e9de, 0x09b1, 0x4b04, 0x84, 0xe5, 0x07, 0x93, 0x12, 0x25, 0xee, 0x04}
STRUCT!{struct KSDATAFORMAT {
    FormatSize: ULONG,
    Flags: ULONG,
    SampleSize: ULONG,
    Reserved: ULONG,
    MajorFormat: GUID,
    SubFormat: GUID,
    Specifier: GUID,
}}
pub type PKSDATAFORMAT = *mut KSDATAFORMAT;
STRUCT!{struct KSIDENTIFIER_s {
    Set: GUID,
    Id: ULONG,
    Flags: ULONG,
}}
UNION!{union KSIDENTIFIER {
    [u64; 3],
    s s_mut: KSIDENTIFIER_s,
    Alignment Alignment_mut: LONGLONG,
}}
pub type KSPROPERTY = KSIDENTIFIER;
pub type PKSPROPERTY = *mut KSIDENTIFIER;
pub type KSMETHOD = KSIDENTIFIER;
pub type PKSMETHOD = *mut KSIDENTIFIER;
pub type KSEVENT = KSIDENTIFIER;
pub type PKSEVENT = *mut KSIDENTIFIER;
ENUM!{enum EPcxConnectionType {
    eConnTypeUnknown = 0,
    eConnType3Point5mm = 1,
    eConnTypeQuarter = 2,
    eConnTypeAtapiInternal = 3,
    eConnTypeRCA = 4,
    eConnTypeOptical = 5,
    eConnTypeOtherDigital = 6,
    eConnTypeOtherAnalog = 7,
    eConnTypeMultichannelAnalogDIN = 8,
    eConnTypeXlrProfessional = 9,
    eConnTypeRJ11Modem = 10,
    eConnTypeCombination = 11,
}}
ENUM!{enum EPcxGeoLocation {
    eGeoLocRear = 1,
    eGeoLocFront = 2,
    eGeoLocLeft = 3,
    eGeoLocRight = 4,
    eGeoLocTop = 5,
    eGeoLocBottom = 6,
    eGeoLocRearPanel = 7,
    eGeoLocRiser = 8,
    eGeoLocInsideMobileLid = 9,
    eGeoLocDrivebay = 10,
    eGeoLocHDMI = 11,
    eGeoLocOutsideMobileLid = 12,
    eGeoLocATAPI = 13,
    eGeoLocNotApplicable = 14,
    eGeoLocReserved6 = 15,
}}
ENUM!{enum EPcxGenLocation {
    eGenLocPrimaryBox = 0,
    eGenLocInternal = 1,
    eGenLocSeparate = 2,
    eGenLocOther = 3,
}}
ENUM!{enum EPxcPortConnection {
    ePortConnJack = 0,
    ePortConnIntegratedDevice = 1,
    ePortConnBothIntegratedAndJack = 2,
    ePortConnUnknown = 3,
}}
STRUCT!{struct KSJACK_DESCRIPTION {
    ChannelMapping: DWORD,
    Color: COLORREF,
    ConnectionType: EPcxConnectionType,
    GeoLocation: EPcxGeoLocation,
    GenLocation: EPcxGenLocation,
    PortConnection: EPxcPortConnection,
    IsConnected: BOOL,
}}
pub type PKSJACK_DESCRIPTION = *mut KSJACK_DESCRIPTION;
STRUCT!{struct LUID {
    LowPart: DWORD,
    HighPart: LONG,
}}
pub type PLUID = *mut LUID;
ENUM!{enum KSJACK_SINK_CONNECTIONTYPE {
    KSJACK_SINK_CONNECTIONTYPE_HDMI = 0,
    KSJACK_SINK_CONNECTIONTYPE_DISPLAYPORT = 1,
}}
STRUCT!{struct KSJACK_SINK_INFORMATION {
    ConnType: KSJACK_SINK_CONNECTIONTYPE,
    ManufacturerId: WORD,
    ProductId: WORD,
    AudioLatency: WORD,
    HDCPCapable: BOOL,
    AICapable: BOOL,
    SinkDescriptionLength: UCHAR,
    SinkDescription: [WCHAR; 32],
    PortId: LUID,
}}
STRUCT!{struct KSJACK_DESCRIPTION2 {
    DeviceStateInfo: DWORD,
    JackCapabilities: DWORD,
}}
pub type PKSJACK_DESCRIPTION2 = *mut KSJACK_DESCRIPTION2;
ENUM!{enum DataFlow {
    In = 0,
    Out = 1,
}}
ENUM!{enum PartType {
    Connector = 0,
    Subunit = 1,
}}
ENUM!{enum ConnectorType {
    Unknown_Connector = 0,
    Physical_Internal = 1,
    Physical_External = 2,
    Software_IO = 3,
    Software_Fixed = 4,
    Network = 5,
}}
RIDL!{#[uuid(0x28f54685, 0x06fd, 0x11d2, 0xb2, 0x7a, 0x00, 0xa0, 0xc9, 0x22, 0x31, 0x96)]
interface IKsControl(IKsControlVtbl): IUnknown(IUnknownVtbl) {
    fn KsProperty(
        Property: PKSPROPERTY,
        PropertyLength: ULONG,
        PropertyData: *mut c_void,
        DataLength: ULONG,
        BytesReturned: *mut ULONG,
    ) -> HRESULT,
    fn KsMethod(
        Method: PKSMETHOD,
        MethodLength: ULONG,
        MethodData: *mut c_void,
        DataLength: ULONG,
        BytesReturned: *mut ULONG,
    ) -> HRESULT,
    fn KsEvent(
        Event: PKSEVENT,
        EventLength: ULONG,
        EventData: *mut c_void,
        DataLength: ULONG,
        BytesReturned: *mut ULONG,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0xc2f8e001, 0xf205, 0x4bc9, 0x99, 0xbc, 0xc1, 0x3b, 0x1e, 0x04, 0x8c, 0xcb)]
interface IPerChannelDbLevel(IPerChannelDbLevelVtbl): IUnknown(IUnknownVtbl) {
    fn GetChannelCount(
        pcChannels: *mut UINT,
    ) -> HRESULT,
    fn GetLevelRange(
        nChannel: UINT,
        pfMinLevelDB: *mut c_float,
        pfMaxLevelDB: *mut c_float,
        pfStepping: *mut c_float,
    ) -> HRESULT,
    fn GetLevel(
        nChannel: UINT,
        pfLevelDB: *mut c_float,
    ) -> HRESULT,
    fn SetLevel(
        nChannel: UINT,
        fLevelDB: c_float,
        pguidEventContext: LPCGUID,
    ) -> HRESULT,
    fn SetLevelUniform(
        fLevelDB: c_float,
        pguidEventContext: LPCGUID,
    ) -> HRESULT,
    fn SetLevelAllChannels(
        aLevelsDB: *mut c_float,
        cChannels: ULONG,
        pguidEventContext: LPCGUID,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0x7fb7b48f, 0x531d, 0x44a2, 0xbc, 0xb3, 0x5a, 0xd5, 0xa1, 0x34, 0xb3, 0xdc)]
interface IAudioVolumeLevel(IAudioVolumeLevelVtbl): IPerChannelDbLevel(IPerChannelDbLevelVtbl) {}}
RIDL!{#[uuid(0xbb11c46f, 0xec28, 0x493c, 0xb8, 0x8a, 0x5d, 0xb8, 0x80, 0x62, 0xce, 0x98)]
interface IAudioChannelConfig(IAudioChannelConfigVtbl): IUnknown(IUnknownVtbl) {
    fn SetChannelConfig(
        dwConfig: DWORD,
        pguidEventContext: LPCGUID,
    ) -> HRESULT,
    fn GetChannelConfig(
        pdwConfig: *mut DWORD,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0x7d8b1437, 0xdd53, 0x4350, 0x9c, 0x1b, 0x1e, 0xe2, 0x89, 0x0b, 0xd9, 0x38)]
interface IAudioLoudness(IAudioLoudnessVtbl): IUnknown(IUnknownVtbl) {
    fn GetEnabled(
        pbEnabled: *mut BOOL,
    ) -> HRESULT,
    fn SetEnabled(
        bEnable: BOOL,
        pguidEventContext: LPCGUID,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0x4f03dc02, 0x5e6e, 0x4653, 0x8f, 0x72, 0xa0, 0x30, 0xc1, 0x23, 0xd5, 0x98)]
interface IAudioInputSelector(IAudioInputSelectorVtbl): IUnknown(IUnknownVtbl) {
    fn GetSelection(
        pnIdSelected: *mut UINT,
    ) -> HRESULT,
    fn SetSelection(
        nIdSelect: UINT,
        pguidEventContext: LPCGUID,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0xbb515f69, 0x94a7, 0x429e, 0x8b, 0x9c, 0x27, 0x1b, 0x3f, 0x11, 0xa3, 0xab)]
interface IAudioOutputSelector(IAudioOutputSelectorVtbl): IUnknown(IUnknownVtbl) {
    fn GetSelection(
        pnIdSelected: *mut UINT,
    ) -> HRESULT,
    fn SetSelection(
        nIdSelect: UINT,
        pguidEventContext: LPCGUID,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0xdf45aeea, 0xb74a, 0x4b6b, 0xaf, 0xad, 0x23, 0x66, 0xb6, 0xaa, 0x01, 0x2e)]
interface IAudioMute(IAudioMuteVtbl): IUnknown(IUnknownVtbl) {
    fn SetMute(
        bMuted: BOOL,
        pguidEventContext: LPCGUID,
    ) -> HRESULT,
    fn GetMute(
        pbMuted: *mut BOOL,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0xa2b1a1d9, 0x4db3, 0x425d, 0xa2, 0xb2, 0xbd, 0x33, 0x5c, 0xb3, 0xe2, 0xe5)]
interface IAudioBass(IAudioBassVtbl): IPerChannelDbLevel(IPerChannelDbLevelVtbl) {}}
RIDL!{#[uuid(0x5e54b6d7, 0xb44b, 0x40d9, 0x9a, 0x9e, 0xe6, 0x91, 0xd9, 0xce, 0x6e, 0xdf)]
interface IAudioMidrange(IAudioMidrangeVtbl): IPerChannelDbLevel(IPerChannelDbLevelVtbl) {}}
RIDL!{#[uuid(0x0a717812, 0x694e, 0x4907, 0xb7, 0x4b, 0xba, 0xfa, 0x5c, 0xfd, 0xca, 0x7b)]
interface IAudioTreble(IAudioTrebleVtbl): IPerChannelDbLevel(IPerChannelDbLevelVtbl) {}}
RIDL!{#[uuid(0x85401fd4, 0x6de4, 0x4b9d, 0x98, 0x69, 0x2d, 0x67, 0x53, 0xa8, 0x2f, 0x3c)]
interface IAudioAutoGainControl(IAudioAutoGainControlVtbl): IUnknown(IUnknownVtbl) {
    fn GetEnabled(
        pbEnabled: *mut BOOL,
    ) -> HRESULT,
    fn SetEnabled(
        bEnable: BOOL,
        pguidEventContext: LPCGUID,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0xdd79923c, 0x0599, 0x45e0, 0xb8, 0xb6, 0xc8, 0xdf, 0x7d, 0xb6, 0xe7, 0x96)]
interface IAudioPeakMeter(IAudioPeakMeterVtbl): IUnknown(IUnknownVtbl) {
    fn GetChannelCount(
        pcChannels: *mut UINT,
    ) -> HRESULT,
    fn GetLevel(
        nChannel: UINT,
        pfLevel: *mut c_float,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0x3b22bcbf, 0x2586, 0x4af0, 0x85, 0x83, 0x20, 0x5d, 0x39, 0x1b, 0x80, 0x7c)]
interface IDeviceSpecificProperty(IDeviceSpecificPropertyVtbl): IUnknown(IUnknownVtbl) {
    fn GetType(
        pVType: *mut VARTYPE,
    ) -> HRESULT,
    fn GetValue(
        pvValue: *mut c_void,
        pcbValue: *mut DWORD,
    ) -> HRESULT,
    fn SetValue(
        pvValue: *mut c_void,
        cbValue: DWORD,
        pguidEventContext: LPCGUID,
    ) -> HRESULT,
    fn Get4BRange(
        plMin: *mut LONG,
        plMax: *mut LONG,
        plStepping: *mut LONG,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0x3cb4a69d, 0xbb6f, 0x4d2b, 0x95, 0xb7, 0x45, 0x2d, 0x2c, 0x15, 0x5d, 0xb5)]
interface IKsFormatSupport(IKsFormatSupportVtbl): IUnknown(IUnknownVtbl) {
    fn IsFormatSupported(
        pKsFormat: PKSDATAFORMAT,
        cbFormat: DWORD,
        pbSupported: *mut BOOL,
    ) -> HRESULT,
    fn GetDevicePreferredFormat(
        ppKsFormat: *mut PKSDATAFORMAT,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0x4509f757, 0x2d46, 0x4637, 0x8e, 0x62, 0xce, 0x7d, 0xb9, 0x44, 0xf5, 0x7b)]
interface IKsJackDescription(IKsJackDescriptionVtbl): IUnknown(IUnknownVtbl) {
    fn GetJackCount(
        pcJacks: *mut UINT,
    ) -> HRESULT,
    fn GetJackDescription(
        nJack: UINT,
        pDescription: *mut KSJACK_DESCRIPTION,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0x478f3a9b, 0xe0c9, 0x4827, 0x92, 0x28, 0x6f, 0x55, 0x05, 0xff, 0xe7, 0x6a)]
interface IKsJackDescription2(IKsJackDescription2Vtbl): IUnknown(IUnknownVtbl) {
    fn GetJackCount(
        pcJacks: *mut UINT,
    ) -> HRESULT,
    fn GetJackDescription2(
        nJack: UINT,
        pDescription2: *mut KSJACK_DESCRIPTION2,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0xd9bd72ed, 0x290f, 0x4581, 0x9f, 0xf3, 0x61, 0x02, 0x7a, 0x8f, 0xe5, 0x32)]
interface IKsJackSinkInformation(IKsJackSinkInformationVtbl): IUnknown(IUnknownVtbl) {
    fn GetJackSinkInformation(
        pJackSinkInformation: *mut KSJACK_SINK_INFORMATION,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0xc99af463, 0xd629, 0x4ec4, 0x8c, 0x00, 0xe5, 0x4d, 0x68, 0x15, 0x42, 0x48)]
interface IKsJackContainerId(IKsJackContainerIdVtbl): IUnknown(IUnknownVtbl) {
    fn GetJackContainerId(
        pJackContainerId: *mut GUID,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0x6daa848c, 0x5eb0, 0x45cc, 0xae, 0xa5, 0x99, 0x8a, 0x2c, 0xda, 0x1f, 0xfb)]
interface IPartsList(IPartsListVtbl): IUnknown(IUnknownVtbl) {
    fn GetCount(
        pCount: *mut UINT,
    ) -> HRESULT,
    fn GetPart(
        nIndex: UINT,
        ppPart: *mut *mut IPart,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0xae2de0e4, 0x5bca, 0x4f2d, 0xaa, 0x46, 0x5d, 0x13, 0xf8, 0xfd, 0xb3, 0xa9)]
interface IPart(IPartVtbl): IUnknown(IUnknownVtbl) {
    fn GetName(
        ppwstrName: *mut LPWSTR,
    ) -> HRESULT,
    fn GetLocalId(
        pnId: *mut UINT,
    ) -> HRESULT,
    fn GetGlobalId(
        ppwstrGlobalId: *mut LPWSTR,
    ) -> HRESULT,
    fn GetPartType(
        pPartType: *mut PartType,
    ) -> HRESULT,
    fn GetSubType(
        pSubType: *mut GUID,
    ) -> HRESULT,
    fn GetControlInterfaceCount(
        pCount: *mut UINT,
    ) -> HRESULT,
    fn GetControlInterface(
        nIndex: UINT,
        ppInterfaceDesc: *mut *mut IControlInterface,
    ) -> HRESULT,
    fn EnumPartsIncoming(
        ppParts: *mut *mut IPartsList,
    ) -> HRESULT,
    fn EnumPartsOutgoing(
        ppParts: *mut *mut IPartsList,
    ) -> HRESULT,
    fn GetTopologyObject(
        ppTopology: *mut *mut IDeviceTopology,
    ) -> HRESULT,
    fn Activate(
        dwClsContext: DWORD,
        refiid: REFIID,
        ppvObject: *mut *mut c_void,
    ) -> HRESULT,
    fn RegisterControlChangeCallback(
        riid: REFGUID,
        pNotify: *mut IControlChangeNotify,
    ) -> HRESULT,
    fn UnregisterControlChangeCallback(
        pNotify: *mut IControlChangeNotify,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0x9c2c4058, 0x23f5, 0x41de, 0x87, 0x7a, 0xdf, 0x3a, 0xf2, 0x36, 0xa0, 0x9e)]
interface IConnector(IConnectorVtbl): IUnknown(IUnknownVtbl) {
    fn GetType(
        pType: *mut ConnectorType,
    ) -> HRESULT,
    fn GetDataFlow(
        pFlow: *mut DataFlow,
    ) -> HRESULT,
    fn ConnectTo(
        pConnectTo: *mut IConnector,
    ) -> HRESULT,
    fn Disconnect() -> HRESULT,
    fn IsConnected(
        pbConnected: *mut BOOL,
    ) -> HRESULT,
    fn GetConnectedTo(
        ppConTo: *mut *mut IConnector,
    ) -> HRESULT,
    fn GetConnectorIdConnectedTo(
        ppwstrConnectorId: *mut LPWSTR,
    ) -> HRESULT,
    fn GetDeviceIdConnectedTo(
        ppwstrDeviceId: *mut LPWSTR,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0x82149a85, 0xdba6, 0x4487, 0x86, 0xbb, 0xea, 0x8f, 0x7f, 0xef, 0xcc, 0x71)]
interface ISubunit(ISubunitVtbl): IUnknown(IUnknownVtbl) {}}
RIDL!{#[uuid(0x45d37c3f, 0x5140, 0x444a, 0xae, 0x24, 0x40, 0x07, 0x89, 0xf3, 0xcb, 0xf3)]
interface IControlInterface(IControlInterfaceVtbl): IUnknown(IUnknownVtbl) {
    fn GetName(
        ppwstrName: *mut LPWSTR,
    ) -> HRESULT,
    fn GetIID(
        pIID: *mut GUID,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0xa09513ed, 0xc709, 0x4d21, 0xbd, 0x7b, 0x5f, 0x34, 0xc4, 0x7f, 0x39, 0x47)]
interface IControlChangeNotify(IControlChangeNotifyVtbl): IUnknown(IUnknownVtbl) {
    fn OnNotify(
        dwSenderProcessId: DWORD,
        pguidEventContext: LPCGUID,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0x2a07407e, 0x6497, 0x4a18, 0x97, 0x87, 0x32, 0xf7, 0x9b, 0xd0, 0xd9, 0x8f)]
interface IDeviceTopology(IDeviceTopologyVtbl): IUnknown(IUnknownVtbl) {
    fn GetConnectorCount(
        pCount: *mut UINT,
    ) -> HRESULT,
    fn GetConnector(
        nIndex: UINT,
        ppConnector: *mut *mut IConnector,
    ) -> HRESULT,
    fn GetSubunitCount(
        pCount: *mut UINT,
    ) -> HRESULT,
    fn GetSubunit(
        nIndex: UINT,
        ppSubunit: *mut *mut ISubunit,
    ) -> HRESULT,
    fn GetPartById(
        nId: UINT,
        ppPart: *mut *mut IPart,
    ) -> HRESULT,
    fn GetDeviceId(
        ppwstrDeviceId: *mut LPWSTR,
    ) -> HRESULT,
    fn GetSignalPath(
        pIPartFrom: *mut IPart,
        pIPartTo: *mut IPart,
        bRejectMixedPaths: BOOL,
        ppParts: *mut *mut IPartsList,
    ) -> HRESULT,
}}
RIDL!{#[uuid(0x1df639d0, 0x5ec1, 0x47aa, 0x93, 0x79, 0x82, 0x8d, 0xc1, 0xaa, 0x8c, 0x59)]
class DeviceTopology;}

[ Dauer der Verarbeitung: 0.29 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge