waveoutgetdevcaps (winmm)
Last changed: -74.69.33.164

.
Summary
The waveOutGetDevCaps function fills the WAVEOUTCAPS structure with the following information:

wMid - Manufacturer identifier

wPid - Product identifier

vDriverVersion - Version number

szPname - Product name

dwFormats - Supported formats

wChannels - Mono = 1, Stereo = 2

C# Signature:

[DllImport("winmm.dll", SetLastError=true)]
static extern TODO waveOutGetDevCaps(TODO);

VB Signature:

Declare Auto Function waveOutGetDevCapsA Lib "winmm.dll" (ByVal uDeviceID as Integer, ByRef lpCaps As WAVEOUTCAPS, ByVal uSize As Integer) As Integer

User-Defined Types:

VB.NET 2005 - Use the following structure WAVEOUTCAPS to declare function

<Runtime.InteropServices.StructLayout(Runtime.InteropServices.LayoutKind.Sequential, CharSet:=Runtime.InteropServices.CharSet.Auto)> _
Public Structure WAVEOUTCAPS
     Public wMid As Short
     Public wPid As Short
     Public vDriverVersion As Short

     <System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst:=32)> _
     Public szPname As String

     Public dwFormats As Integer
     Public wChannels As Short
End Structure

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

Remember to have the strings marshaled as ByValTStr with size of 32.

Use "Auto" in the Declare statement to have the correct character set selected automatically.

Tips & Tricks:

Please add some!

Sample Code:

Sub ShowDeviceCaps()
     Dim i As Integer
     Dim wc As New WAVEOUTCAPS

     MsgBox("Number of Wave Devices: " & waveOutGetNumDevs(), , "WAVE DEVICES")

     For i = 0 To waveOutGetNumDevs() - 1
     waveOutGetDevCapsA(i, wc, Len(wc))
     MsgBox("MID = " & wc.wMid & Chr(13) & "PID = " & wc.wPid & Chr(13) & "Version = " & _
     wc.vDriverVersion & Chr(13) & "Name = " & wc.szPname & Chr(13) & "Formats = " & wc.dwFormats & _
     Chr(13) & "Channels = " & wc.wChannels, , "Device ID = " & i + 1)
     Next i
End Sub

Documentation:

"WAVEOUTCAPS" [http://msdn2.microsoft.com/en-us/library/ms713743(d=printer).aspx]

"Manufacturer and Product Identifiers" [http://msdn2.microsoft.com/en-us/library/ms709440.aspx]