ReactOS 0.4.16-dev-340-g0540c21
CPortPinWavePci Class Reference
Inheritance diagram for CPortPinWavePci:
Collaboration diagram for CPortPinWavePci:

Public Member Functions

STDMETHODIMP QueryInterface (REFIID InterfaceId, PVOID *Interface)
 
 CPortPinWavePci (IUnknown *OuterUnknown)
 
virtual ~CPortPinWavePci ()
 
- Public Member Functions inherited from CUnknownImpl< IPortPinWavePci, IServiceSink, IPortWavePciStream >
 STDMETHODIMP_ (ULONG) AddRef()
 
 STDMETHODIMP_ (ULONG) Release()
 

Public Attributes

 IMP_IPortPinWavePci
 
 IMP_IServiceSink
 
 IMP_IPortWavePciStream
 

Protected Member Functions

NTSTATUS NTAPI HandleKsProperty (IN PIRP Irp)
 
NTSTATUS NTAPI HandleKsStream (IN PIRP Irp)
 
- Protected Member Functions inherited from CUnknownImpl< IPortPinWavePci, IServiceSink, IPortWavePciStream >
 CUnknownImpl ()
 
virtual ~CUnknownImpl ()
 

Protected Attributes

IPortWavePci * m_Port
 
IPortFilterWavePci * m_Filter
 
KSPIN_DESCRIPTOR * m_KsPinDescriptor
 
PMINIPORTWAVEPCI m_Miniport
 
PSERVICEGROUP m_ServiceGroup
 
PDMACHANNEL m_DmaChannel
 
PMINIPORTWAVEPCISTREAM m_Stream
 
KSSTATE m_State
 
PKSDATAFORMAT m_Format
 
KSPIN_CONNECTm_ConnectDetails
 
BOOL m_Capture
 
PDEVICE_OBJECT m_DeviceObject
 
IIrpQueue * m_IrpQueue
 
ULONG m_TotalPackets
 
KSAUDIO_POSITION m_Position
 
ULONG m_StopCount
 
BOOL m_bUsePrefetch
 
ULONG m_PrefetchOffset
 
SUBDEVICE_DESCRIPTOR m_Descriptor
 
KSALLOCATOR_FRAMING m_AllocatorFraming
 

Friends

NTSTATUS NTAPI PinWavePciState (IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
 
NTSTATUS NTAPI PinWavePciDataFormat (IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
 
NTSTATUS NTAPI PinWavePciAudioPosition (IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
 
NTSTATUS NTAPI PinWavePciAllocatorFraming (IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
 

Detailed Description

Definition at line 14 of file pin_wavepci.cpp.

Constructor & Destructor Documentation

◆ CPortPinWavePci()

CPortPinWavePci::CPortPinWavePci ( IUnknown OuterUnknown)
inline

Definition at line 22 of file pin_wavepci.cpp.

22{}

◆ ~CPortPinWavePci()

virtual CPortPinWavePci::~CPortPinWavePci ( )
inlinevirtual

Definition at line 23 of file pin_wavepci.cpp.

23{}

Member Function Documentation

◆ HandleKsProperty()

NTSTATUS NTAPI CPortPinWavePci::HandleKsProperty ( IN PIRP  Irp)
protected

Definition at line 472 of file pin_wavepci.cpp.

474{
475 //PKSPROPERTY Property;
477 //UNICODE_STRING GuidString;
478 PIO_STACK_LOCATION IoStack;
479
480 //DPRINT("IPortPinWave_HandleKsProperty entered\n");
481
483
484 if (IoStack->Parameters.DeviceIoControl.IoControlCode != IOCTL_KS_PROPERTY)
485 {
486 //DPRINT("Unhandled function %lx Length %x\n", IoStack->Parameters.DeviceIoControl.IoControlCode, IoStack->Parameters.DeviceIoControl.InputBufferLength);
487
488 Irp->IoStatus.Status = STATUS_SUCCESS;
489
491 return STATUS_SUCCESS;
492 }
493
495
497 {
498 //Property = (PKSPROPERTY)IoStack->Parameters.DeviceIoControl.Type3InputBuffer;
499#if 0
501 //DPRINT("Unhandled property Set |%S| Id %u Flags %x\n", GuidString.Buffer, Property->Id, Property->Flags);
503#endif
504 }
505
506 if (Status != STATUS_PENDING)
507 {
508 Irp->IoStatus.Status = Status;
510 }
511
512 return Status;
513}
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
LONG NTSTATUS
Definition: precomp.h:26
SUBDEVICE_DESCRIPTOR m_Descriptor
Definition: pin_wavepci.cpp:52
_In_ PIRP Irp
Definition: csq.h:116
#define STATUS_PENDING
Definition: d3dkmdt.h:43
Status
Definition: gdiplustypes.h:25
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
#define IOCTL_KS_PROPERTY
Definition: ks.h:127
static PWSTR GuidString
Definition: apphelp.c:93
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
#define IoCompleteRequest
Definition: irp.c:1240
NTSTATUS NTAPI PcHandlePropertyWithTable(IN PIRP Irp, IN ULONG PropertySetCount, IN PKSPROPERTY_SET PropertySet, IN PSUBDEVICE_DESCRIPTOR Descriptor)
Definition: undoc.cpp:78
#define STATUS_SUCCESS
Definition: shellext.h:65
#define STATUS_NOT_FOUND
Definition: shellext.h:72
PKSPROPERTY_SET FilterPropertySet
Definition: interfaces.hpp:210
union _IO_STACK_LOCATION::@1581 Parameters
struct _IO_STACK_LOCATION::@1581::@1582 DeviceIoControl
#define IO_NO_INCREMENT
Definition: iotypes.h:598

◆ HandleKsStream()

NTSTATUS NTAPI CPortPinWavePci::HandleKsStream ( IN PIRP  Irp)
protected

Definition at line 517 of file pin_wavepci.cpp.

519{
521 ULONG Data = 0;
523
524 DPRINT("IPortPinWaveCyclic_HandleKsStream entered Total %u State %x MinData %u\n", m_TotalPackets, m_State, m_IrpQueue->NumData());
525
526 Status = m_IrpQueue->AddMapping(Irp, &Data);
527
528 if (NT_SUCCESS(Status))
529 {
530 if (m_Capture)
532 else
534
535 if (m_State == KSSTATE_RUN)
536 {
537 // notify stream of new mapping
538 m_Stream->MappingAvailable();
539 }
540
541 return STATUS_PENDING;
542 }
543
544 return Status;
545}
#define InterlockedIncrement
Definition: armddk.h:53
KSAUDIO_POSITION m_Position
Definition: pin_wavepci.cpp:47
PMINIPORTWAVEPCISTREAM m_Stream
Definition: pin_wavepci.cpp:37
IIrpQueue * m_IrpQueue
Definition: pin_wavepci.cpp:44
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
@ KSSTATE_RUN
Definition: ks.h:1218
#define DPRINT
Definition: sndvol32.h:73
DWORDLONG WriteOffset
Definition: ksmedia.h:1251
DWORDLONG PlayOffset
Definition: ksmedia.h:1250
int32_t * PLONG
Definition: typedefs.h:58
uint32_t ULONG
Definition: typedefs.h:59

◆ QueryInterface()

NTSTATUS NTAPI CPortPinWavePci::QueryInterface ( REFIID  InterfaceId,
PVOID Interface 
)

Definition at line 370 of file pin_wavepci.cpp.

373{
374 //DPRINT("CPortPinWavePci::QueryInterface entered\n");
375
376 if (IsEqualGUIDAligned(refiid, IID_IIrpTarget) ||
378 {
379 *Output = PVOID(PUNKNOWN((IIrpTarget*)this));
380 PUNKNOWN(*Output)->AddRef();
381 return STATUS_SUCCESS;
382 }
383
384 if (IsEqualGUIDAligned(refiid, IID_IServiceSink))
385 {
386 *Output = PVOID(PSERVICESINK(this));
387 PUNKNOWN(*Output)->AddRef();
388 return STATUS_SUCCESS;
389 }
390
391 if (IsEqualGUIDAligned(refiid, IID_IPortWavePciStream))
392 {
394 PUNKNOWN(*Output)->AddRef();
395 return STATUS_SUCCESS;
396 }
397
398 return STATUS_UNSUCCESSFUL;
399}
const GUID IID_IUnknown
IUnknown * PUNKNOWN
Definition: com_apitest.h:45
ULONG AddRef()
IServiceSink * PSERVICESINK
Definition: portcls.h:569
IPortWavePciStream * PPORTWAVEPCISTREAM
Definition: portcls.h:1590
@ Output
Definition: arc.h:85
void * PVOID
Definition: typedefs.h:50
#define STATUS_UNSUCCESSFUL
Definition: udferr_usr.h:132
#define IsEqualGUIDAligned(guid1, guid2)
Definition: wdm.template.h:235

Friends And Related Function Documentation

◆ PinWavePciAllocatorFraming

NTSTATUS NTAPI PinWavePciAllocatorFraming ( IN PIRP  Irp,
IN PKSIDENTIFIER  Request,
IN OUT PVOID  Data 
)
friend

Definition at line 95 of file pin_wavepci.cpp.

99{
102
103 // get sub device descriptor
104 Descriptor = (PSUBDEVICE_DESCRIPTOR)KSPROPERTY_ITEM_IRP_STORAGE(Irp);
105
106 // sanity check
108 PC_ASSERT(Descriptor->PortPin);
110
111 // cast to pin impl
112 Pin = (CPortPinWavePci*)Descriptor->PortPin;
113
115 {
116 // copy pin framing
117 RtlMoveMemory(Data, &Pin->m_AllocatorFraming, sizeof(KSALLOCATOR_FRAMING));
118
119 Irp->IoStatus.Information = sizeof(KSALLOCATOR_FRAMING);
120 return STATUS_SUCCESS;
121 }
122
123 // not supported
125}
struct SUBDEVICE_DESCRIPTOR * PSUBDEVICE_DESCRIPTOR
#define STATUS_NOT_SUPPORTED
Definition: d3dkmdt.h:48
#define KSPROPERTY_TYPE_GET
Definition: dmksctrl.h:42
#define DISPATCH_LEVEL
Definition: env_spec_w32.h:696
IN PDCB IN VBO IN ULONG IN BOOLEAN Pin
Definition: fatprocs.h:428
if(dx< 0)
Definition: linetemp.h:194
#define PC_ASSERT_IRQL(x)
Definition: private.hpp:30
#define PC_ASSERT(exp)
Definition: private.hpp:26
#define RtlMoveMemory(Destination, Source, Length)
Definition: typedefs.h:264
_In_ WDFREQUEST Request
Definition: wdfdevice.h:547
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
Definition: wdfresource.h:342

◆ PinWavePciAudioPosition

NTSTATUS NTAPI PinWavePciAudioPosition ( IN PIRP  Irp,
IN PKSIDENTIFIER  Request,
IN OUT PVOID  Data 
)
friend

Definition at line 129 of file pin_wavepci.cpp.

133{
136
137 // get sub device descriptor
138 Descriptor = (PSUBDEVICE_DESCRIPTOR)KSPROPERTY_ITEM_IRP_STORAGE(Irp);
139
140 // sanity check
142 PC_ASSERT(Descriptor->PortPin);
144
145 // cast to pin impl
146 Pin = (CPortPinWavePci*)Descriptor->PortPin;
147
148 //sanity check
149 PC_ASSERT(Pin->m_Stream);
150
151 if (Request->Flags & KSPROPERTY_TYPE_GET)
152 {
153 // FIXME non multithreading-safe
154 // copy audio position
155 RtlMoveMemory(Data, &Pin->m_Position, sizeof(KSAUDIO_POSITION));
156
157 DPRINT("Play %lu Record %lu\n", Pin->m_Position.PlayOffset, Pin->m_Position.WriteOffset);
158 Irp->IoStatus.Information = sizeof(KSAUDIO_POSITION);
159 return STATUS_SUCCESS;
160 }
161
162 // not supported
164}

◆ PinWavePciDataFormat

NTSTATUS NTAPI PinWavePciDataFormat ( IN PIRP  Irp,
IN PKSIDENTIFIER  Request,
IN OUT PVOID  Data 
)
friend

Definition at line 254 of file pin_wavepci.cpp.

258{
262 PIO_STACK_LOCATION IoStack;
263
264 // get current irp stack location
266
267 // get sub device descriptor
268 Descriptor = (PSUBDEVICE_DESCRIPTOR)KSPROPERTY_ITEM_IRP_STORAGE(Irp);
269
270 // sanity check
272 PC_ASSERT(Descriptor->PortPin);
273
274 // cast to pin impl
275 Pin = (CPortPinWavePci*)Descriptor->PortPin;
276
277 //sanity check
278 PC_ASSERT(Pin->m_Stream);
279 PC_ASSERT(Pin->m_Format);
280
281 if (Request->Flags & KSPROPERTY_TYPE_SET)
282 {
283 // try to change data format
284 PKSDATAFORMAT NewDataFormat, DataFormat = (PKSDATAFORMAT)Irp->UserBuffer;
285 ULONG Size = min(Pin->m_Format->FormatSize, DataFormat->FormatSize);
286
287 if (RtlCompareMemory(DataFormat, Pin->m_Format, Size) == Size)
288 {
289 // format is identical
290 Irp->IoStatus.Information = DataFormat->FormatSize;
291 return STATUS_SUCCESS;
292 }
293
294 // new change request
295 PC_ASSERT(Pin->m_State == KSSTATE_STOP);
296 // FIXME queue a work item when Irql != PASSIVE_LEVEL
298
299 // allocate new data format
300 NewDataFormat = (PKSDATAFORMAT)AllocateItem(NonPagedPool, DataFormat->FormatSize, TAG_PORTCLASS);
301 if (!NewDataFormat)
302 {
303 // not enough memory
304 return STATUS_NO_MEMORY;
305 }
306
307 // copy new data format
308 RtlMoveMemory(NewDataFormat, DataFormat, DataFormat->FormatSize);
309
310 // set new format
311 Status = Pin->m_Stream->SetFormat(NewDataFormat);
312 if (NT_SUCCESS(Status))
313 {
314 // free old format
315 FreeItem(Pin->m_Format, TAG_PORTCLASS);
316
317 // store new format
318 Pin->m_Format = NewDataFormat;
319 Irp->IoStatus.Information = NewDataFormat->FormatSize;
320
321#if 0
322 PC_ASSERT(NewDataFormat->FormatSize == sizeof(KSDATAFORMAT_WAVEFORMATEX));
326
327 DPRINT("NewDataFormat: Channels %u Bits %u Samples %u\n", ((PKSDATAFORMAT_WAVEFORMATEX)NewDataFormat)->WaveFormatEx.nChannels,
328 ((PKSDATAFORMAT_WAVEFORMATEX)NewDataFormat)->WaveFormatEx.wBitsPerSample,
329 ((PKSDATAFORMAT_WAVEFORMATEX)NewDataFormat)->WaveFormatEx.nSamplesPerSec);
330#endif
331
332 }
333 else
334 {
335 // failed to set format
336 FreeItem(NewDataFormat, TAG_PORTCLASS);
337 }
338
339 // done
340 return Status;
341 }
342 else if (Request->Flags & KSPROPERTY_TYPE_GET)
343 {
344 // get current data format
345 PC_ASSERT(Pin->m_Format);
346
347 if (Pin->m_Format->FormatSize > IoStack->Parameters.DeviceIoControl.OutputBufferLength)
348 {
349 // buffer too small
350 Irp->IoStatus.Information = Pin->m_Format->FormatSize;
351 return STATUS_MORE_ENTRIES;
352 }
353 // copy data format
354 RtlMoveMemory(Data, Pin->m_Format, Pin->m_Format->FormatSize);
355 // store result size
356 Irp->IoStatus.Information = Pin->m_Format->FormatSize;
357
358 // done
359 return STATUS_SUCCESS;
360 }
361
362 // unsupported request
364}
#define STATUS_NO_MEMORY
Definition: d3dkmdt.h:51
KSDATAFORMAT * PKSDATAFORMAT
#define KSPROPERTY_TYPE_SET
Definition: dmksctrl.h:43
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
#define RtlCompareMemory(s1, s2, l)
Definition: env_spec_w32.h:465
#define KeGetCurrentIrql()
Definition: env_spec_w32.h:706
#define NonPagedPool
Definition: env_spec_w32.h:307
@ KSSTATE_STOP
Definition: ks.h:1215
PVOID AllocateItem(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes)
Definition: misc.c:29
VOID FreeItem(IN PVOID Item)
Definition: misc.c:37
#define KSDATAFORMAT_SUBTYPE_PCM
Definition: ksmedia.h:1021
#define KSDATAFORMAT_TYPE_AUDIO
Definition: ksmedia.h:983
#define KSDATAFORMAT_SPECIFIER_WAVEFORMATEX
Definition: ksmedia.h:1031
#define min(a, b)
Definition: monoChain.cc:55
#define TAG_PORTCLASS
Definition: private.hpp:24
#define STATUS_MORE_ENTRIES
Definition: udferr_usr.h:124
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4533

◆ PinWavePciState

NTSTATUS NTAPI PinWavePciState ( IN PIRP  Irp,
IN PKSIDENTIFIER  Request,
IN OUT PVOID  Data 
)
friend

Definition at line 168 of file pin_wavepci.cpp.

172{
176 PVOID FirstTag, LastTag;
177 ULONG MappingsRevoked;
179
180 // get sub device descriptor
181 Descriptor = (PSUBDEVICE_DESCRIPTOR)KSPROPERTY_ITEM_IRP_STORAGE(Irp);
182
183 // sanity check
185 PC_ASSERT(Descriptor->PortPin);
187
188 // cast to pin impl
189 Pin = (CPortPinWavePci*)Descriptor->PortPin;
190
191 //sanity check
192 PC_ASSERT(Pin->m_Stream);
193
194 if (Request->Flags & KSPROPERTY_TYPE_SET)
195 {
196 // try set stream
197 Status = Pin->m_Stream->SetState(*State);
198
199 DPRINT("Setting state %u %x\n", *State, Status);
200 if (NT_SUCCESS(Status))
201 {
202 // store new state
203 Pin->m_State = *State;
204 if (Pin->m_ConnectDetails->Interface.Id == KSINTERFACE_STANDARD_LOOPED_STREAMING && Pin->m_State == KSSTATE_STOP)
205 {
206 // FIXME
207 // complete with successful state
208 Pin->m_IrpQueue->CancelBuffers();
209 while(Pin->m_IrpQueue->GetAcquiredTagRange(&FirstTag, &LastTag))
210 {
211 Status = Pin->m_Stream->RevokeMappings(FirstTag, LastTag, &MappingsRevoked);
212 DPRINT("RevokeMappings Status %lx MappingsRevoked: %lu\n", Status, MappingsRevoked);
214 }
215 Pin->m_Position.PlayOffset = 0;
216 Pin->m_Position.WriteOffset = 0;
217 }
218 else if (Pin->m_State == KSSTATE_STOP)
219 {
220 Pin->m_IrpQueue->CancelBuffers();
221 while(Pin->m_IrpQueue->GetAcquiredTagRange(&FirstTag, &LastTag))
222 {
223 Status = Pin->m_Stream->RevokeMappings(FirstTag, LastTag, &MappingsRevoked);
224 DPRINT("RevokeMappings Status %lx MappingsRevoked: %lu\n", Status, MappingsRevoked);
226 }
227 Pin->m_Position.PlayOffset = 0;
228 Pin->m_Position.WriteOffset = 0;
229 }
230 // store result
231 Irp->IoStatus.Information = sizeof(KSSTATE);
232
233 }
234 // store result
235 Irp->IoStatus.Information = sizeof(KSSTATE);
236 return Status;
237 }
238 else if (Request->Flags & KSPROPERTY_TYPE_GET)
239 {
240 // get current stream state
241 *State = Pin->m_State;
242 // store result
243 Irp->IoStatus.Information = sizeof(KSSTATE);
244
245 return STATUS_SUCCESS;
246 }
247
248 // unsupported request
250}
enum KSSTATE * PKSSTATE
KSSTATE
Definition: ks.h:1214
@ KSINTERFACE_STANDARD_LOOPED_STREAMING
Definition: ks.h:284
#define KeStallExecutionProcessor(MicroSeconds)
Definition: precomp.h:27

Member Data Documentation

◆ IMP_IPortPinWavePci

CPortPinWavePci::IMP_IPortPinWavePci

Definition at line 19 of file pin_wavepci.cpp.

◆ IMP_IPortWavePciStream

CPortPinWavePci::IMP_IPortWavePciStream

Definition at line 21 of file pin_wavepci.cpp.

◆ IMP_IServiceSink

CPortPinWavePci::IMP_IServiceSink

Definition at line 20 of file pin_wavepci.cpp.

◆ m_AllocatorFraming

KSALLOCATOR_FRAMING CPortPinWavePci::m_AllocatorFraming
protected

Definition at line 54 of file pin_wavepci.cpp.

◆ m_bUsePrefetch

BOOL CPortPinWavePci::m_bUsePrefetch
protected

Definition at line 50 of file pin_wavepci.cpp.

◆ m_Capture

BOOL CPortPinWavePci::m_Capture
protected

Definition at line 42 of file pin_wavepci.cpp.

Referenced by HandleKsStream().

◆ m_ConnectDetails

KSPIN_CONNECT* CPortPinWavePci::m_ConnectDetails
protected

Definition at line 40 of file pin_wavepci.cpp.

◆ m_Descriptor

SUBDEVICE_DESCRIPTOR CPortPinWavePci::m_Descriptor
protected

Definition at line 52 of file pin_wavepci.cpp.

Referenced by HandleKsProperty().

◆ m_DeviceObject

PDEVICE_OBJECT CPortPinWavePci::m_DeviceObject
protected

Definition at line 43 of file pin_wavepci.cpp.

◆ m_DmaChannel

PDMACHANNEL CPortPinWavePci::m_DmaChannel
protected

Definition at line 36 of file pin_wavepci.cpp.

◆ m_Filter

IPortFilterWavePci* CPortPinWavePci::m_Filter
protected

Definition at line 32 of file pin_wavepci.cpp.

◆ m_Format

PKSDATAFORMAT CPortPinWavePci::m_Format
protected

Definition at line 39 of file pin_wavepci.cpp.

◆ m_IrpQueue

IIrpQueue* CPortPinWavePci::m_IrpQueue
protected

Definition at line 44 of file pin_wavepci.cpp.

Referenced by HandleKsStream().

◆ m_KsPinDescriptor

KSPIN_DESCRIPTOR* CPortPinWavePci::m_KsPinDescriptor
protected

Definition at line 33 of file pin_wavepci.cpp.

◆ m_Miniport

PMINIPORTWAVEPCI CPortPinWavePci::m_Miniport
protected

Definition at line 34 of file pin_wavepci.cpp.

◆ m_Port

IPortWavePci* CPortPinWavePci::m_Port
protected

Definition at line 31 of file pin_wavepci.cpp.

◆ m_Position

KSAUDIO_POSITION CPortPinWavePci::m_Position
protected

Definition at line 47 of file pin_wavepci.cpp.

Referenced by HandleKsStream().

◆ m_PrefetchOffset

ULONG CPortPinWavePci::m_PrefetchOffset
protected

Definition at line 51 of file pin_wavepci.cpp.

◆ m_ServiceGroup

PSERVICEGROUP CPortPinWavePci::m_ServiceGroup
protected

Definition at line 35 of file pin_wavepci.cpp.

◆ m_State

KSSTATE CPortPinWavePci::m_State
protected

Definition at line 38 of file pin_wavepci.cpp.

Referenced by HandleKsStream().

◆ m_StopCount

ULONG CPortPinWavePci::m_StopCount
protected

Definition at line 48 of file pin_wavepci.cpp.

◆ m_Stream

PMINIPORTWAVEPCISTREAM CPortPinWavePci::m_Stream
protected

Definition at line 37 of file pin_wavepci.cpp.

Referenced by HandleKsStream().

◆ m_TotalPackets

ULONG CPortPinWavePci::m_TotalPackets
protected

Definition at line 46 of file pin_wavepci.cpp.

Referenced by HandleKsStream().


The documentation for this class was generated from the following file: