10/04/09 01:23:23 /kvxwmCw
やっと規制解除された・・・・
一つのBonDriverで複数のチューナーを制御するには、チューナーのDisplayName
を元に名前付きSemaphoreを作成し排他制御すればOK.
===== こんな感じ =======
WCHAR wszSemName[_MAX_PATH] ← DisplayNameの'\'を'/'に置き換えた物('\'は使えないので)
HANDLE hSem = CreateSemaphoreW( NULL, 1, 1, wszSemName ) ;
if ( WaitForSingleObject( hSem, 0 ) != WAIT_OBJECT_0 ) {
// 使用中だった
CloseHandle( hSem ) ;
========================
既に使用されていれば、WaitForSingleObject()はWAIT_TIMEOUTを返す。
複数のチューナーを制御する時に、Tunerに対応したCaptureを見つける簡単な
方法は、TunerのDisplayNameのHardware-IDの部分が一致するCaptureを探せばOK.
たとえば、TunerのDisplayNameは
\\?\PCI#VEN_14F1&DEV_8852&SUBSYS_20050001&REV_04#4&279e7bdf&0&00E2#{71985f48-1ca1-11d3-
9cc8-00c04f7971e0}\{ede18552-45e6-469f-93b5-27e94296de38}
CaptureのDisplayNameは
\\?\PCI#VEN_14F1&DEV_8852&SUBSYS_20050001&REV_04#4&279e7bdf&0&00E2#{fd0a5af4-b41d-11d2-
9c95-00c04f7971e0}\{76310c7b-e712-4564-94cc-dd69d6608989}
で、最初の'{'までが一致する