waveoutgetdevcaps (winmm)
Last changed: -74.69.33.164

.
Summary
The waveOutGetDevCaps function fills the WAVEOUTCAPS structure with wave device capabilities.

"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]

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

Structures Used:

VB.NET 2005 - Use the following structure: WAVEOUTCAPS

<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