If I may answer my own question, I've just got it to work by using a DeviceID number instead of a handle for the hwi parameter in waveInMessage. This in spite of the SDK documentation for waveInMessage saying that hwi is a "handle to the waveform-audio input device" and the DDK documentation saying it should work with either. Agh!! Jeff ----- Original Message ----- From: Jeff Pages To: wdmaudiodev@xxxxxxxxxxxxx Sent: Thursday, November 13, 2003 4:29 PM Subject: [wdmaudiodev] Does DRV_QUERYDEVICEINTERFACE work? I'm trying to use DRV_QUERYDEVICEINTERFACESIZE and DRV_QUERYDEVICEINTERFACE in a call to waveInMessage, as per the documentation in the current DDK under "Obtaining a Device Interface Name", but waveInMessage returns MMSYSERR_NOTSUPPORTED. This happens on both Windows 2000 (SP4) and Windows XP (SP1). Has anyone managed to get these calls to work? Jeff Pages Innes Corporation Pty Ltd ----- Original Message ----- From: wade To: wdmaudiodev@xxxxxxxxxxxxx Sent: Thursday, November 13, 2003 5:48 AM Subject: [wdmaudiodev] Blocky looking metering in SoundForge I have written an AVStreams capture driver. I am experiencing a clunky, blocky display in audio applications that provide visual metering of the audio signal. Upon closer inspection, in Soundforge, If I set the "Status Format" to "samples", and record, the "time recorded" field on the record window increments by ~12k samples (48kBytes). Other audio cards increment by MUCH smaller amounts. I notice that 12k*2channels*2bytes is about one AVSream queue's worth of data (6 * 8192k frames). I am KsEditing the Allocator structure to allow selection of frame size, but in this instance, 6, 8k frames were alloc'd. I am completing the frames with the following code: .... transfer the data to the StreamPointerBuffer StreamPointer -> StreamHeader -> DataUsed += TransferSize; Pin->audioPosition.WriteOffset += TransferSize; // Now figure the duration StreamPointer -> StreamHeader ->OptionsFlags = (KSSTREAM_HEADER_OPTIONSF_DURATIONVALID); StreamPointer -> StreamHeader->PresentationTime.Numerator = Pin->kstimeNumer; StreamPointer -> StreamHeader->PresentationTime.Denominator = Pin->kstimeDenom; StreamPointer -> StreamHeader->Duration = (TransferSize); if (STATUS_DEVICE_NOT_READY == (status=KsStreamPointerAdvanceOffsets (StreamPointer,0,StreamPointer->OffsetOut.Remaining,FALSE))) { status = STATUS_PENDING; } else { status = STATUS_SUCCESS; // KsStreamPointerUnlock(StreamPointer,FALSE/*(!Pin->streamRunning)*/); } . . . break; return status; Any ideas? ---------------------------------------------------------------------------- Do you Yahoo!? Protect your identity with Yahoo! Mail AddressGuard