Cuando enumeras las webcams, vas recuperando un moniker. Con el moniker seleccionado (o con cada uno de ellos), llamas a BindToStorage para recuperar una implementación de IPropertyBag.
Una vez que tienes el "property bag", lees las propiedades "FriendlyName", "Description" y/o "DevicePath". Las webcams no traen la propiedad "Description", según entiendo leyendo la
doc, así que tendrás que conformarte con su nombre y/o el identificador (el "DevicePath").
Si no te das maña para esto y pones la sección de código en donde obtienes el moniker del "source filter", yo te escribo lo que te falta... serán dos o tres líneas.
Imports System.Runtime.InteropServices
Imports System.Runtime.InteropServices.ComTypes
'http://sourceforge.net/projects/directshownet/files/
Imports DirectShowLib
Public Class Form1
Private IID_IPropertyBag As New Guid("55272A00-42CB-11CE-8135-00AA004BB851")
Const S_OK = 0
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim DevEnum As New CreateDevEnum()
Dim pDevEnum As ICreateDevEnum = DirectCast(DevEnum, ICreateDevEnum)
Dim pMoniker As IMoniker() = New IMoniker(0) {}
Dim pClassEnum As IEnumMoniker = Nothing
Dim pSrc As Object = Nothing
Dim pPBag As Object = Nothing
pDevEnum.CreateClassEnumerator(FilterCategory.VideoInputDevice, pClassEnum, CDef.ClassDefault)
While (pClassEnum.[Next](1, pMoniker, IntPtr.Zero) = S_OK)
pMoniker(0).BindToStorage(Nothing, Nothing, IID_IPropertyBag, pPBag)
' propiedades del dispositivo
Dim bag As IPropertyBag = DirectCast(pPBag, IPropertyBag)
Dim nombre As String = String.Empty
Dim descripcion As String = String.Empty
Dim devPath As String = String.Empty
bag.Read("FriendlyName", nombre, Nothing)
bag.Read("Description", descripcion, Nothing)
bag.Read("DevicePath", devPath, Nothing)
ListBox1.Items.Add(New With {.FriendlyName = nombre, .Description = descripcion, .DevicePath = devPath})
Marshal.ReleaseComObject(pMoniker(0))
Marshal.ReleaseComObject(pPBag)
End While
Marshal.ReleaseComObject(pClassEnum)
Marshal.ReleaseComObject(pDevEnum)
Marshal.ReleaseComObject(DevEnum)
If ListBox1.Items.Count > 0 Then
ListBox1.SelectedIndex = 0
ListBox1.DisplayMember = "FriendlyName"
Label1.DataBindings.Add("Text", ListBox1.SelectedItem, "Description")
Label2.DataBindings.Add("Text", ListBox1.SelectedItem, "DevicePath")
End If
End Sub
End Class