diff options
| author | Daniel Rugerio <[email protected]> | 2019-12-04 09:56:11 -0800 |
|---|---|---|
| committer | Adonais Romero González <[email protected]> | 2019-12-04 09:56:11 -0800 |
| commit | ba80e2f67f8c1fb9013f05bfffdf649220327902 (patch) | |
| tree | dd4b5585b3e410eb57f82c9d958a5f26a2233b53 /audio/sysvad/PhoneAudioSample/speakerhstopo.cpp | |
| parent | d805073e39ec65e391b4fc2141ecb2120755a76c (diff) | |
Updates on the SysVAD driver sample (#443)104069
* Update SysVAD public sample.
* Add WaveTest public sample.
* Modify the componentized audio samples to include the addComponent directive.
* Dropped the Phone Audio sample.
* Updated README.md.
* Added explanation for the Phone Audio sample.
Diffstat (limited to 'audio/sysvad/PhoneAudioSample/speakerhstopo.cpp')
| -rw-r--r-- | audio/sysvad/PhoneAudioSample/speakerhstopo.cpp | 275 |
1 files changed, 0 insertions, 275 deletions
diff --git a/audio/sysvad/PhoneAudioSample/speakerhstopo.cpp b/audio/sysvad/PhoneAudioSample/speakerhstopo.cpp deleted file mode 100644 index bbd7a97c..00000000 --- a/audio/sysvad/PhoneAudioSample/speakerhstopo.cpp +++ /dev/null @@ -1,275 +0,0 @@ -/*++ - -Copyright (c) Microsoft Corporation All Rights Reserved - -Module Name: - - speakerhstopo.cpp - -Abstract: - - Implementation of topology miniport for the speaker (external: headset). - ---*/ - -#pragma warning (disable : 4127) - -#include <sysvad.h> -#include "simple.h" -#include "mintopo.h" -#include "speakerhstopo.h" -#include "speakerhstoptable.h" - - -#pragma code_seg("PAGE") - -//============================================================================= -NTSTATUS -PropertyHandler_SpeakerHsJackDescription -( - _In_ PPCPROPERTY_REQUEST PropertyRequest -) -/*++ - -Routine Description: - - Handles ( KSPROPSETID_Jack, KSPROPERTY_JACK_DESCRIPTION ) - -Arguments: - - PropertyRequest - - -Return Value: - - NT status code. - ---*/ -{ - PAGED_CODE(); - - ASSERT(PropertyRequest); - - DPF_ENTER(("[PropertyHandler_SpeakerHsJackDescription]")); - - NTSTATUS ntStatus = STATUS_INVALID_DEVICE_REQUEST; - ULONG nPinId = (ULONG)-1; - - ULONG cJackDescriptions = ARRAYSIZE(SpeakerHsJackDescriptions); - PKSJACK_DESCRIPTION * JackDescriptions = SpeakerHsJackDescriptions; - - if (PropertyRequest->InstanceSize >= sizeof(ULONG)) - { - nPinId = *(PULONG(PropertyRequest->Instance)); - - if ((nPinId < cJackDescriptions) && (JackDescriptions[nPinId] != NULL)) - { - if (PropertyRequest->Verb & KSPROPERTY_TYPE_BASICSUPPORT) - { - ntStatus = - PropertyHandler_BasicSupport - ( - PropertyRequest, - KSPROPERTY_TYPE_BASICSUPPORT | KSPROPERTY_TYPE_GET, - VT_ILLEGAL - ); - } - else - { - ULONG cbNeeded = sizeof(KSMULTIPLE_ITEM) + sizeof(KSJACK_DESCRIPTION); - - if (PropertyRequest->ValueSize == 0) - { - PropertyRequest->ValueSize = cbNeeded; - ntStatus = STATUS_BUFFER_OVERFLOW; - } - else if (PropertyRequest->ValueSize < cbNeeded) - { - ntStatus = STATUS_BUFFER_TOO_SMALL; - } - else - { - if (PropertyRequest->Verb & KSPROPERTY_TYPE_GET) - { - PKSMULTIPLE_ITEM pMI = (PKSMULTIPLE_ITEM)PropertyRequest->Value; - PKSJACK_DESCRIPTION pDesc = (PKSJACK_DESCRIPTION)(pMI+1); - - pMI->Size = cbNeeded; - pMI->Count = 1; - - RtlCopyMemory(pDesc, JackDescriptions[nPinId], sizeof(KSJACK_DESCRIPTION)); - ntStatus = STATUS_SUCCESS; - } - } - } - } - } - - return ntStatus; -} - -//============================================================================= -NTSTATUS -PropertyHandler_SpeakerHsJackDescription2 -( - _In_ PPCPROPERTY_REQUEST PropertyRequest -) -/*++ - -Routine Description: - - Handles ( KSPROPSETID_Jack, KSPROPERTY_JACK_DESCRIPTION2 ) - -Arguments: - - PropertyRequest - - -Return Value: - - NT status code. - ---*/ -{ - PAGED_CODE(); - - ASSERT(PropertyRequest); - - DPF_ENTER(("[PropertyHandler_SpeakerHsJackDescription2]")); - - NTSTATUS ntStatus = STATUS_INVALID_DEVICE_REQUEST; - ULONG nPinId = (ULONG)-1; - - ULONG cJackDescriptions = ARRAYSIZE(SpeakerHsJackDescriptions); - PKSJACK_DESCRIPTION * JackDescriptions = SpeakerHsJackDescriptions; - - if (PropertyRequest->InstanceSize >= sizeof(ULONG)) - { - nPinId = *(PULONG(PropertyRequest->Instance)); - - if ((nPinId < cJackDescriptions) && (JackDescriptions[nPinId] != NULL)) - { - if (PropertyRequest->Verb & KSPROPERTY_TYPE_BASICSUPPORT) - { - ntStatus = - PropertyHandler_BasicSupport - ( - PropertyRequest, - KSPROPERTY_TYPE_BASICSUPPORT | KSPROPERTY_TYPE_GET, - VT_ILLEGAL - ); - } - else - { - ULONG cbNeeded = sizeof(KSMULTIPLE_ITEM) + sizeof(KSJACK_DESCRIPTION2); - - if (PropertyRequest->ValueSize == 0) - { - PropertyRequest->ValueSize = cbNeeded; - ntStatus = STATUS_BUFFER_OVERFLOW; - } - else if (PropertyRequest->ValueSize < cbNeeded) - { - ntStatus = STATUS_BUFFER_TOO_SMALL; - } - else - { - if (PropertyRequest->Verb & KSPROPERTY_TYPE_GET) - { - PKSMULTIPLE_ITEM pMI = (PKSMULTIPLE_ITEM)PropertyRequest->Value; - PKSJACK_DESCRIPTION2 pDesc = (PKSJACK_DESCRIPTION2)(pMI+1); - - pMI->Size = cbNeeded; - pMI->Count = 1; - - RtlZeroMemory(pDesc, sizeof(KSJACK_DESCRIPTION2)); - - // - // Specifies the lower 16 bits of the DWORD parameter. This parameter indicates whether - // the jack is currently active, streaming, idle, or hardware not ready. - // - pDesc->DeviceStateInfo = 0; - - // - // From MSDN: - // "If an audio device lacks jack presence detection, the IsConnected member of - // the KSJACK_DESCRIPTION structure must always be set to TRUE. To remove the - // ambiguity that results from this dual meaning of the TRUE value for IsConnected, - // a client application can call IKsJackDescription2::GetJackDescription2 to read - // the JackCapabilities flag of the KSJACK_DESCRIPTION2 structure. If this flag has - // the JACKDESC2_PRESENCE_DETECT_CAPABILITY bit set, it indicates that the endpoint - // does in fact support jack presence detection. In that case, the return value of - // the IsConnected member can be interpreted to accurately reflect the insertion status - // of the jack." - // - // Bit definitions: - // 0x00000001 - JACKDESC2_PRESENCE_DETECT_CAPABILITY - // 0x00000002 - JACKDESC2_DYNAMIC_FORMAT_CHANGE_CAPABILITY - // - pDesc->JackCapabilities = JACKDESC2_PRESENCE_DETECT_CAPABILITY; - - ntStatus = STATUS_SUCCESS; - } - } - } - } - } - - return ntStatus; -} - - -//============================================================================= -NTSTATUS -PropertyHandler_SpeakerHsTopoFilter -( - _In_ PPCPROPERTY_REQUEST PropertyRequest -) -/*++ - -Routine Description: - - Redirects property request to miniport object - -Arguments: - - PropertyRequest - - -Return Value: - - NT status code. - ---*/ -{ - PAGED_CODE(); - - ASSERT(PropertyRequest); - - DPF_ENTER(("[PropertyHandler_SpeakerHsTopoFilter]")); - - // PropertryRequest structure is filled by portcls. - // MajorTarget is a pointer to miniport object for miniports. - // - NTSTATUS ntStatus = STATUS_INVALID_DEVICE_REQUEST; - - // - // This line shows how to get a pointer to the miniport topology object. - // - PCMiniportTopology pMiniport = (PCMiniportTopology)PropertyRequest->MajorTarget; - UNREFERENCED_VAR(pMiniport); - - if (IsEqualGUIDAligned(*PropertyRequest->PropertyItem->Set, KSPROPSETID_Jack)) - { - if (PropertyRequest->PropertyItem->Id == KSPROPERTY_JACK_DESCRIPTION) - { - ntStatus = PropertyHandler_SpeakerHsJackDescription(PropertyRequest); - } - else if (PropertyRequest->PropertyItem->Id == KSPROPERTY_JACK_DESCRIPTION2) - { - ntStatus = PropertyHandler_SpeakerHsJackDescription2(PropertyRequest); - } - } - - return ntStatus; -} // PropertyHandler_SpeakerHsTopoFilter - -#pragma code_seg() - |
