|
CheckForDVB()
// Checks if the TechnoTrend or other compatible drivers based on the reference
drivers are installed
// Return value: true = supported driver found ; false = no driver found
int CheckForDVB(void);
внутренности:
res : DWORD;
AdaptersCount : DWORD = 1;
hSkyAdapter : DWORD; // handle адаптера, нужен для последующей работы
dwReg : Array[0..$19] of DWORD; // структура регистра(ов)
rReg : DWORD; // регистр для установки
dwR3Q_Ctrl : DWORD;
dwR3Q_Data : DWORD;
structOpenStream1 : Array[0..$159] of DWORD;
structOpenStream2 : Array[0..$159] of DWORD;
dwR3Q_Ctrl := 0;
dwR3Q_Data := 0;
FillMemory(@structOpenStream1, $160, 0);
FillMemory(@structOpenStream2, $160, 0);
res := SkyOpen(0); if res<>0 then exit;
res := SkyGetNumAvailAdapters(AdaptersCount); if AdaptersCount = 0 then exit;
res := SkyAdapterGetHandle(0, hSkyAdapter); if res = 0 then Result := 0;
FillMemory(@dsReg, sizeof(dwReg), 0);
dwReg[0] := $208;
dwReg[1] := 1;
res := SysDriverHwRegisterGet(hSkyAdapter, dwReg, $20);
rReg := dwReg[2];
FillMemory(@dsReg, sizeof(dwReg), 0);
dwReg[0] := $208;
dwReg[1] := 0;
dwReg[2] := rReg or $40;
res := SysDriverHwRegisterSet(hSkyAdapter, dwReg, $20);
примечание:
как видите, помимо получения handle'а девайса идет установка или сброс
какого-то регистра драйвера
/
|