W systemie Windows XP istnieje funkcja spuścizna
waveInGetNumDevs(void)
że powinien powrócić 0, chyba że gniazdo słuchawkowe jest podłączony. Zresztą dokładne zachowanie zależy od rzeczywistego sterownika sprzętowego. Zobacz także: http://msdn.microsoft.com/en-us/library/ms713732%28VS.85%29.aspx
Istnieje kilka kart dźwiękowych, w których to nie działa, ale jeśli sterownik ma narzędzie, które uruchamia się, gdy coś jest podłączone do gniazda słuchawkowego (np. Niektóre karty mają wspólne gniazdo dla słuchawek/mikrofonu a jeśli włożysz urządzenie, zapyta cię, jakiego rodzaju urządzenia właśnie podłączyłeś) - niż możesz napisać własną "aplikację wykrywającą", , która jakoś raportuje (np. gniazda, rury, pamięć współdzielona), jeśli coś zostało podłączone do twoja główna aplikacja. Zazwyczaj jest to plik exe w katalogu instalacyjnym sterownika - można to po prostu zastąpić "aplikacją do wykrywania", która zaczyna się, jeśli coś zostało automatycznie podłączone w ten sposób.
Obawiam się, że oprócz tych dwóch "rozwiązań" (lub lepszego sposobu obejścia tego drugiego), system Windows XP nie może wykryć, czy urządzenie było podłączone do gniazda słuchawkowego. W systemach Windows Vista i nowszych dostępny jest nowy interfejs dla tych zdarzeń o nazwie IKsJackDescription.