瀏覽單個文章
tw1965
Master Member
 

加入日期: Jun 2003
文章: 1,593
引用:
作者tw1965
因為驅動程式收到的Bandwidth參數不正確.
這是已知Windows 2000, Windows XP, Windows XP SP1 的 BUG.
Windows XP SP2, Windows MCE2005 Rollup 2 之後才解決.
當然Windows Vista 沒有這個問題.

所以在Windows 2000下, 你需要一個特別修改的驅動程式(Bandwidth參數固定成6MHz).



我舉的例子是WinFast DTV1000 T (PCI) 有一個特別修改的驅動程式.
不是要大家把WinFast DTV1000 T (PCI) 的驅動程式給USB 電視棒用.

在Windows 2000下, 你需要一個特別修改的"USB 電視棒驅動程式"(Bandwidth參數固定成6MHz).

引用:
You can add the "bandwidth" registry key and assign the value to 6.

In the DIBCOM STK300P driver source code driver.cpp :
int gBandwidth = 8;
// Driver entry point
extern "C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath)
{
NTSTATUS status;
OBJECT_ATTRIBUTES attributes;
HANDLE serviceKey;
KEY_VALUE_PARTIAL_INFORMATION keyValueInfo;
ULONG ulLength;
UNICODE_STRING bwUniString;


DbgLogTrace(("Modbda: +DriverEntry\n"));

//
// Open the global hack key and retrieve the global hack table
//
InitializeObjectAttributes(&attributes,
RegistryPath,
OBJ_CASE_INSENSITIVE,
NULL,
NULL
);

status = ZwOpenKey(&serviceKey,
KEY_QUERY_VALUE ,
&attributes
);



if ( NT_SUCCESS( status))
{
// get default bandwidth value from registry
RtlInitUnicodeString( &bwUniString, L"bandwidth");

status = ZwQueryValueKey( serviceKey,
&bwUniString,
KeyValuePartialInformation,
(PVOID)&keyValueInfo,
sizeof(KEY_VALUE_PARTIAL_INFORMATION),
&ulLength);

if ( NT_SUCCESS( status))
{
gBandwidth = *(int *)keyValueInfo.Data;

}
...
舊 2007-04-26, 12:28 AM #216
回應時引用此文章
tw1965離線中