2 #define STR_MODULENAME "AC97 Miniport: " 304 #pragma code_seg("PAGE") 337 if (PropertyRequest->ValueSize <
sizeof(
LONG))
341 if (PropertyRequest->Value)
406 int nWavePlaybackEntries = 0;
407 int nWaveRecordingEntries = 0;
412 DOUT (
DBG_PRINT, (
"[CMiniport::BuildDataRangeInformation]"));
460 nWavePlaybackEntries++;
490 nWaveRecordingEntries++;
551 ASSERT (OutFilterDescriptor);
587 PVOID ResultantFormat,
588 PULONG ResultantFormatLength
610 DOUT (
DBG_PRINT, (
"[DataRangeIntersection] We don't support DSOUND specifier"));
640 DOUT (
DBG_WARNING, (
"[DataRangeIntersection] Mono requested for WaveIn or WaveOut"));
672 if (nMaxChannels & 0x01)
771 DOUT (
DBG_STREAM, (
"[DataRangeIntersection] Frequency: %d, Channels: %d, bps: %d, ChannelMask: %X",
811 DOUT (
DBG_VSR, (
"[NewStream] TestDataFormat failed!"));
902 DOUT (
DBG_WARNING, (
"[TestDataFormat] Unsupported WAVEFORMATEXTENSIBLE!"));
930 DOUT (
DBG_WARNING, (
"[TestDataFormat] Invalid Number of Channels for PIN_MICIN!"));
937 DOUT (
DBG_WARNING, (
"[TestDataFormat] Invalid Number of Channels for PIN_WAVEIN!"));
944 DOUT (
DBG_WARNING, (
"[TestDataFormat] Invalid Number of Channels for PIN_WAVEOUT!"));
955 DOUT (
DBG_STREAM, (
"[TestDataFormat] PCMEX - Frequency: %d, Channels: %d, bps: %d, ChannelMask: %X",
961 DOUT (
DBG_STREAM, (
"[TestDataFormat] PCM - Frequency: %d, Channels: %d, bps: %d",
1029 DOUT (
DBG_ERROR, (
"Failed to connect the ISR with InterruptSync!"));
1090 DOUT (
DBG_ERROR, (
"Unknown configuration for wave miniport!"));
1104 if (!
NT_SUCCESS (ntStatus) || !InterruptSync)
1113 ntStatus = InterruptSync->RegisterServiceRoutine (InterruptServiceRoutine,
1124 ntStatus = InterruptSync->Connect ();
1127 DOUT (
DBG_ERROR, (
"Failed to connect the ISR with InterruptSync!"));
1155 DOUT (
DBG_PRINT, (
"[CMiniport::NonDelegatingQueryInterface]"));
1222 NTSTATUS ntStatus = UnknownAdapter->
1326 USHORT DMAStatusRegister;
1365 if (!GlobalStatus || (GlobalStatus == 0xFFFFFFFF))
1380 ReadBMControlRegister16 (
PO_SR);
1412 ReadBMControlRegister16 (
PI_SR);
1441 ReadBMControlRegister16 (
MC_SR);
ULONG GetCurrentSampleRate(void)
return STATUS_NOT_SUPPORTED
#define STATUS_INSUFFICIENT_RESOURCES
const int PIN_MICIN_OFFSET
NTSTATUS ValidateFormat(IN PKSDATAFORMAT DataFormat, IN WavePins Pin)
static PCCONNECTION_DESCRIPTOR MiniportConnections[]
union KSDATAFORMAT KSDATARANGE
#define UNREFERENCED_PARAMETER(P)
#define STATUS_INVALID_PARAMETER
ULONG MaximumBitsPerSample
static HRESULT QueryInterface(REFIID, void **)
NTSTATUS NonDelegatingQueryInterface(_In_ REFIID Interface, _COM_Outptr_ PVOID *Object, _In_ REFIID iMiniPort, _In_ PMINIPORT miniPort)
void PowerChangeNotify(IN POWER_STATE NewState)
PINTERRUPTSYNC InterruptSync
static PCPIN_DESCRIPTOR MiniportPins[]
static KSDATARANGE_AUDIO PinDataRangesPCMStreamCapture[WAVE_SAMPLERATES_TESTED]
BOOL Init(PUSERCONNECT UserCon)
KSPIN_DESCRIPTOR KsPinDescriptor
_In_ PRESOURCELIST _In_ PPORT Port_
static PCNODE_DESCRIPTOR MiniportNodes[]
#define DOUT(lvl, strings)
static KSDATARANGE_AUDIO PinDataRangesPCMStreamRender[WAVE_SAMPLERATES_TESTED]
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
#define STATUS_BUFFER_TOO_SMALL
#define _Use_decl_annotations_
GLsizei GLsizei GLuint * obj
#define IsEqualGUIDAligned(guid1, guid2)
_In_ WDFREQUEST _In_ size_t OutputBufferLength
const GUID KSCATEGORY_AUDIO
static KSDATARANGE PinDataRangesAnalogBridge[]
static NTSTATUS NTAPI PropertyChannelConfig(IN PPCPROPERTY_REQUEST PropertyRequest)
const int WAVE_SAMPLERATES_TESTED
NTSTATUS TestDataFormat(IN PKSDATAFORMAT Format, IN WavePins Pin)
const GUID KSDATAFORMAT_SPECIFIER_NONE
const ULONG GLOB_STA_POINT
const int PIN_WAVEIN_OFFSET
const ULONG GLOB_STA_MINT
IMiniportWavePci * PMINIPORTWAVEPCI
const ULONG GLOB_STA_PIINT
PADAPTERCOMMON AdapterCommon
void __fastcall obj_Release(void **ppvObject)
static PKSDATARANGE PinDataRangePointersAnalogBridge[]
IN PDCB IN VBO IN ULONG IN BOOLEAN Pin
#define NT_SUCCESS(StatCode)
union WAVEFORMATEXTENSIBLE::@2979 Samples
DEVICE_POWER_STATE m_PowerState
ULONG MinimumSampleFrequency
const GUID KSNODETYPE_DAC
NTSTATUS NTAPI PcNewInterruptSync(OUT PINTERRUPTSYNC *OutInterruptSync, IN PUNKNOWN OuterUnknown OPTIONAL, IN PRESOURCELIST ResourceList, IN ULONG ResourceIndex, IN INTERRUPTSYNCMODE Mode)
#define STATICGUIDOF(guid)
const DWORD dwMicSampleRates[MIC_SAMPLERATES_TESTED]
#define STATUS_UNSUCCESSFUL
static PKSDATARANGE PinDataRangePointersMicStream[MIC_SAMPLERATES_TESTED]
static PCFILTER_DESCRIPTOR MiniportFilterDescriptor
NTSTATUS BuildDataRangeInformation(void)
REFIID LPVOID * ppvObject
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
STDMETHODIMP_(NTSTATUS) CMiniport
const int PIN_WAVEOUT_OFFSET
IResourceList * PRESOURCELIST
static PCPROPERTY_ITEM PropertiesDAC[]
union KSDATAFORMAT * PKSDATARANGE
const GUID KSNODETYPE_ADC
#define STATUS_BUFFER_OVERFLOW
NTSTATUS ProcessResources(IN PRESOURCELIST ResourceList)
IN PVOID IN PVOID IN USHORT IN USHORT IN PINTERFACE Interface
ULONG MaximumSampleFrequency
CMiniportStream * Streams[PIN_MICIN_OFFSET+1]
const int MIC_SAMPLERATES_TESTED
static KSDATARANGE_AUDIO PinDataRangesMicStream[MIC_SAMPLERATES_TESTED]
static ULONG WINAPI AddRef(IStream *iface)
IInterruptSync * PINTERRUPTSYNC
ULONG MinimumBitsPerSample
IPowerNotify * PPOWERNOTIFY
virtual void InterruptServiceRoutine() PURE
const DWORD dwWaveSampleRates[WAVE_SAMPLERATES_TESTED]
static PKSDATARANGE PinDataRangePointersPCMStreamRender[WAVE_SAMPLERATES_TESTED]
WAVEFORMATPCMEX * PWAVEFORMATPCMEX
#define STATUS_DEVICE_CONFIGURATION_ERROR
#define KSPROPERTY_TYPE_SET
DEFINE_PCAUTOMATION_TABLE_PROP(AutomationDAC, PropertiesDAC)
static NTSTATUS NTAPI InterruptServiceRoutine(IN PINTERRUPTSYNC InterruptSync, IN PVOID StaticContext)
void __fastcall obj_AddRef(PUNKNOWN obj, void **ppvObject)
KSDATAFORMAT * PKSDATAFORMAT
static PKSDATARANGE PinDataRangePointersPCMStreamCapture[WAVE_SAMPLERATES_TESTED]
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *