Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*****************************************************************************
* minwave.h - SB16 wave miniport private definitions ***************************************************************************** * Copyright (c) 1997-2000 Microsoft Corporation. All Rights Reserved. */
#ifndef _SB16WAVE_PRIVATE_H_
#define _SB16WAVE_PRIVATE_H_
#if OVERRIDE_DMA_CHANNEL
#define PC_IMPLEMENTATION
#endif // OVERRIDE_DMA_CHANNEL
#include "common.h"
/*****************************************************************************
* Classes */
/*****************************************************************************
* CMiniportWaveCyclicSB16 ***************************************************************************** * SB16 wave miniport. This object is associated with the device and is * created when the device is started. The class inherits IMiniportWaveCyclic * so it can expose this interface and CUnknown so it automatically gets * reference counting and aggregation support. */ class CMiniportWaveCyclicSB16 : public IMiniportWaveCyclic, public IWaveMiniportSB16, public CUnknown { private: PADAPTERCOMMON AdapterCommon; // Adapter common object.
PPORTWAVECYCLIC Port; // Callback interface.
ULONG NotificationInterval; // In milliseconds.
ULONG SamplingFrequency; // Frames per second.
BOOLEAN AllocatedCapture; // Capture in use.
BOOLEAN AllocatedRender; // Render in use.
BOOLEAN Allocated8Bit; // 8-bit DMA in use.
BOOLEAN Allocated16Bit; // 16-bit DMA in use.
PDMACHANNELSLAVE DmaChannel8; // Abstracted channel.
PDMACHANNELSLAVE DmaChannel16; // Abstracted channel.
PSERVICEGROUP ServiceGroup; // For notification.
KMUTEX SampleRateSync; // Sync for sample rate changes.
/*************************************************************************
* CMiniportWaveCyclicSB16 methods * * These are private member functions used internally by the object. See * MINIPORT.CPP for specific descriptions. */ BOOLEAN ConfigureDevice ( IN ULONG Interrupt, IN ULONG DMA8Bit, IN ULONG DMA16Bit ); NTSTATUS ProcessResources ( IN PRESOURCELIST ResourceList ); NTSTATUS ValidateFormat ( IN PKSDATAFORMAT Format );
public: /*************************************************************************
* The following two macros are from STDUNK.H. DECLARE_STD_UNKNOWN() * defines inline IUnknown implementations that use CUnknown's aggregation * support. NonDelegatingQueryInterface() is declared, but it cannot be * implemented generically. Its definition appears in MINIPORT.CPP. * DEFINE_STD_CONSTRUCTOR() defines inline a constructor which accepts * only the outer unknown, which is used for aggregation. The standard * create macro (in MINIPORT.CPP) uses this constructor. */ DECLARE_STD_UNKNOWN(); DEFINE_STD_CONSTRUCTOR(CMiniportWaveCyclicSB16);
~CMiniportWaveCyclicSB16();
/*************************************************************************
* This macro is from PORTCLS.H. It lists all the interface's functions. */ IMP_IMiniportWaveCyclic;
/*************************************************************************
* IWaveMiniportSB16 methods */ STDMETHODIMP_(void) RestoreSampleRate (void); STDMETHODIMP_(void) ServiceWaveISR (void); /*************************************************************************
* Friends * * The miniport stream class is a friend because it needs to access the * private member variables of this class. */ friend class CMiniportWaveCyclicStreamSB16; };
/*****************************************************************************
* CMiniportWaveCyclicStreamSB16 ***************************************************************************** * SB16 wave miniport stream. This object is associated with a streaming pin * and is created when a pin is created on the filter. The class inherits * IMiniportWaveCyclicStream so it can expose this interface and CUnknown so * it automatically gets reference counting and aggregation support. */ class CMiniportWaveCyclicStreamSB16 : public IMiniportWaveCyclicStream, public IDrmAudioStream, #if OVERRIDE_DMA_CHANNEL
public IDmaChannel, #endif // OVERRIDE_DMA_CHANNEL
public CUnknown { private: CMiniportWaveCyclicSB16 * Miniport; // Miniport that created us.
ULONG Channel; // Index into channel list.
BOOLEAN Capture; // Capture or render.
BOOLEAN Format16Bit; // 16- or 8-bit samples.
BOOLEAN FormatStereo; // Two or one channel.
KSSTATE State; // Stop, pause, run.
PDMACHANNELSLAVE DmaChannel; // DMA channel to use.
BOOLEAN RestoreInputMixer; // Restore input mixer.
UCHAR InputMixerLeft; // Cache for left input mixer.
public: /*************************************************************************
* The following two macros are from STDUNK.H. DECLARE_STD_UNKNOWN() * defines inline IUnknown implementations that use CUnknown's aggregation * support. NonDelegatingQueryInterface() is declared, but it cannot be * implemented generically. Its definition appears in MINIPORT.CPP. * DEFINE_STD_CONSTRUCTOR() defines inline a constructor which accepts * only the outer unknown, which is used for aggregation. The standard * create macro (in MINIPORT.CPP) uses this constructor. */ DECLARE_STD_UNKNOWN(); DEFINE_STD_CONSTRUCTOR(CMiniportWaveCyclicStreamSB16);
~CMiniportWaveCyclicStreamSB16(); NTSTATUS Init ( IN CMiniportWaveCyclicSB16 * Miniport, IN ULONG Channel, IN BOOLEAN Capture, IN PKSDATAFORMAT DataFormat, OUT PDMACHANNELSLAVE DmaChannel );
/*************************************************************************
* Include IMiniportWaveCyclicStream public/exported methods (portcls.h) */ IMP_IMiniportWaveCyclicStream;
/*************************************************************************
* Include IDrmAudioStream public/exported methods (drmk.h) ************************************************************************* */ IMP_IDrmAudioStream; #if OVERRIDE_DMA_CHANNEL
/*************************************************************************
* Include IDmaChannel public/exported methods (portcls.h) ************************************************************************* */ IMP_IDmaChannel; #endif // OVERRIDE_DMA_CHANNEL
};
#endif
|