當應用程式需讓使用者選擇裝置、需多裝置支援、或需查詢特定能力時,必須列舉可用捕捉裝置。
BOOL CALLBACK DSEnumProc(
LPGUID lpGUID, // 裝置 GUID (首個裝置為 NULL)
LPCTSTR lpszDesc, // 裝置描述字串
LPCTSTR lpszDrvName, // 驅動程式名稱
LPVOID lpContext // 使用者自訂內容指標
);
TRUE 繼續列舉,FALSE 停止lpGUID == NULLBOOL CALLBACK DSEnumProc(LPGUID lpGUID, LPCTSTR lpszDesc,
LPCTSTR lpszDrvName, LPVOID lpContext) {
HWND hCombo = (HWND)lpContext;
LPGUID pGuidCopy = nullptr;
if (lpGUID) {
pGuidCopy = (LPGUID)malloc(sizeof(GUID));
memcpy(pGuidCopy, lpGUID, sizeof(GUID));
}
int idx = ComboBox_AddString(hCombo, lpszDesc);
ComboBox_SetItemData(hCombo, idx, pGuidCopy); // 存儲 GUID 指標
return TRUE;
}
// 對話方塊初始化時呼叫
if (FAILED(DirectSoundCaptureEnumerate(DSEnumProc, (void*)&hCombo))) {
EndDialog(hDlg, TRUE);
}
若僅需使用系統預設捕捉裝置,無需列舉,直接呼叫
DirectSoundCaptureCreate8(nullptr, ...)即可。
第一篇:列舉裝置 ← 當前 | 第二篇:建立裝置物件 | 第三篇:查詢裝置能力