PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie kann ich rausfinden welche Soundkarte im Rechner ist


Lord Nikon
2003-09-11, 12:42:08
Hi ,
womit kann man rausfinden welche Soundkarte im Rechner ist und was der entsprechende Treiber für dieses Gerät unterschützt. Die Lösung sollte am besten in c++ sein , oder ein irgendeine Api Aufruf sein.

Demirug
2003-09-11, 13:17:23
Wie wäre es mit DirectX die Caps der Soundkarte(n) auszulesen?

Lord Nikon
2003-09-11, 16:03:47
ok , dann probier ich das mal.

Lord Nikon
2003-09-12, 12:13:24
Welche Header Datei brauch ich , damit ich die DeviceInformation Structure nutzen kann ?

Demirug
2003-09-12, 12:17:24
Alles was du brauchst sollte in "Dsound.h" zu finden sein.

Lord Nikon
2003-09-12, 12:30:52
wenn ich versuche mit DeviceInformation DI; mir ein Objekt der Struktur anzulegen kommt trotz der Einbindung der Dsound.h
E2451 Undefiniertes Symbol 'DeviceInformation'
EDIT:
Hab bei Direct 9 Managed geguckt anstatt bei Direct X 9 c++.Diese Funktion gibt es anscheinend nur für die managed Version.

Lord Nikon
2003-09-12, 17:18:00
Mit

LPCGUID lpcGuidDevice;
lpcGuidDevice=NULL;
LPDIRECTSOUND8 *ppDS8;
ppDS8=new LPDIRECTSOUND8;
LPUNKNOWN unk;
hr=DirectSoundCreate8(lpcGuidDevice,ppDS8 ,unk);

erstelle ich und initializiere ein Object das die IDirectSound8 Schnittstelle unterstützt. In der Beschreibung steht :
ppDS8
Address of a variable to receive an IDirectSound8 interface pointer.

Wenn ich jetzt versuche mit ppDS8-> auf irgendeine Methode der Schnittstelle wie z.B GetCaps aufzurfen dann wird die Methode nicht gefunden. Woran liegt das ?
Wäre nett wenn man irgendjemand helfen könnte.

Demirug
2003-09-12, 17:20:58
Dumme Frage. Du hast dir das DX-SDK besorgt? Da sind für den ganzen Basis kremple schöne Beispiele dabei aus denen man sich oft einfach den Code herauskopieren kann.

Lord Nikon
2003-09-12, 17:45:37
jo , das DX-SDK hab ich mir besorgt und die besonderen Liberies für den Borland c++ Builder auch.
Bei den Bespielen hab ich

SAFE_RELEASE( m_pDS );

// Create IDirectSound using the primary sound device
if( FAILED( hr = DirectSoundCreate8( NULL, &m_pDS, NULL ) ) )
return DXTRACE_ERR( TEXT("DirectSoundCreate8"), hr );

// Set DirectSound coop level
if( FAILED( hr = m_pDS->SetCooperativeLevel( hWnd, dwCoopLevel ) ) )
return DXTRACE_ERR( TEXT("SetCooperativeLevel"), hr );

return S_OK;
}

gefunden , aber SAFE_RELEASE( m_pDS ); geht mit dem Borland c++ Builder nicht. Gibt es eine Anweisung die das gleiche macht und auch mit dem c++ builder 6.0 klappt ?

Demirug
2003-09-12, 17:58:15
SAFE_RELEASE ist ein Makro das eigentlich nur folgendes macht:


if (m_pDS != NULL)
{
m_pDS->Release ();
m_pDS = NULL;
}

Lord Nikon
2003-09-12, 23:15:52
großes thx @Demirug
Der Code klappt jetzt soweit.