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, CharSet = CharSet.Auto)]

public static extern uint waveOutGetDevCaps(IntPtr hwo,ref WAVEOUTCAPS pwoc,uint cbwoc);

VB Signature:

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

Constants Used:

Public Const C_MAXPNAMELEN As Integer = 32
Public Const WAVE_MAPPER As Integer = -1    'Specifies default device ID

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 Integer

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

     Public dwFormats As Integer
     Public wChannels As Short
     Public wReserved As Short
     Public dwSupport As Integer
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
         waveOutGetDevCaps(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