阅读:2077回复:1
usb摄像头驱动程序testcap求救
我用testcap可以产生图像,现在我想和我的硬件结合起来,但是每次安装驱动程序后,启动机器时就出现蓝屏,使得机器无法启动,请指教。
当我单独安装usb驱动程序或testcap驱动程序时,是正常的,我现在把这两个驱动程序结合在一起,就会出现蓝屏。我在HwInitialize 中加入了pSrb->Status = BulkUsb_StartDevice(pHwDevExt->PDO);// 多谢了,请指教,郁闷中!!! BOOLEAN STREAMAPI HwInitialize ( IN OUT PHW_STREAM_REQUEST_BLOCK pSrb ) { STREAM_PHYSICAL_ADDRESS adr; ULONG Size; PUCHAR pDmaBuf; int j; PPORT_CONFIGURATION_INFORMATION ConfigInfo = pSrb->CommandData.ConfigInfo; PHW_DEVICE_EXTENSION pHwDevExt = (PHW_DEVICE_EXTENSION)ConfigInfo->HwDeviceExtension; DbgLogInfo(("Testcap: HwInitialize()\n")); if (ConfigInfo->NumberOfAccessRanges != 0) { DbgLogError(("Testcap: illegal config info\n")); pSrb->Status = STATUS_NO_SUCH_DEVICE; return (FALSE); } DbgLogInfo(("TestCap: Number of access ranges = %lx\n", ConfigInfo->NumberOfAccessRanges)); DbgLogInfo(("TestCap: Memory Range = %lx\n", pHwDevExt->ioBaseLocal)); DbgLogInfo(("TestCap: IRQ = %lx\n", ConfigInfo->BusInterruptLevel)); if (ConfigInfo->NumberOfAccessRanges != 0) { pHwDevExt->ioBaseLocal = (PULONG)(ConfigInfo->AccessRanges[0].RangeStart.LowPart); } pHwDevExt->Irq = (USHORT)(ConfigInfo->BusInterruptLevel); ConfigInfo->StreamDescriptorSize = sizeof (HW_STREAM_HEADER) + DRIVER_STREAM_COUNT * sizeof (HW_STREAM_INFORMATION); pDmaBuf = StreamClassGetDmaBuffer(pHwDevExt); adr = StreamClassGetPhysicalAddress(pHwDevExt, NULL, pDmaBuf, DmaBuffer, &Size); // Init Crossbar properties pHwDevExt->VideoInputConnected = 0; // TvTuner video is the default pHwDevExt->AudioInputConnected = 5; // TvTuner audio is the default // Init VideoProcAmp properties pHwDevExt->Brightness = BrightnessDefault; pHwDevExt->BrightnessFlags = KSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO; pHwDevExt->Contrast = ContrastDefault; pHwDevExt->ContrastFlags = KSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO; pHwDevExt->ColorEnable = ColorEnableDefault; pHwDevExt->ColorEnableFlags = KSPROPERTY_VIDEOPROCAMP_FLAGS_MANUAL; // Init CameraControl properties pHwDevExt->Focus = FocusDefault; pHwDevExt->FocusFlags = KSPROPERTY_CAMERACONTROL_FLAGS_AUTO; pHwDevExt->Zoom = ZoomDefault; pHwDevExt->ZoomFlags = KSPROPERTY_CAMERACONTROL_FLAGS_AUTO; // Init TvTuner properties pHwDevExt->TunerMode = KSPROPERTY_TUNER_MODE_TV; pHwDevExt->Channel = 4; pHwDevExt->TunerInput = 0; pHwDevExt->Busy = 0; // Init TvAudio properties pHwDevExt->TVAudioMode = KS_TVAUDIO_MODE_MONO | KS_TVAUDIO_MODE_LANG_A ; // Init AnalogVideoDecoder properties pHwDevExt->VideoDecoderVideoStandard = KS_AnalogVideo_NTSC_M; pHwDevExt->VideoDecoderOutputEnable = FALSE; pHwDevExt->VideoDecoderVCRTiming = FALSE; // Init VideoControl properties pHwDevExt->VideoControlMode = 0; // Init VideoCompression properties pHwDevExt->CompressionSettings.CompressionKeyFrameRate = 15; pHwDevExt->CompressionSettings.CompressionPFramesPerKeyFrame = 3; pHwDevExt->CompressionSettings.CompressionQuality = 5000; pHwDevExt->PDO = ConfigInfo->PhysicalDeviceObject; // DbgLogInfo(("TestCap: Physical Device Object = %lx\n", pHwDevExt->PDO)); for (j = 0; j < MAX_TESTCAP_STREAMS; j++){ // For each stream, maintain a separate queue for data and control InitializeListHead (&pHwDevExt->StreamSRBList[j]); InitializeListHead (&pHwDevExt->StreamControlSRBList[j]); KeInitializeSpinLock (&pHwDevExt->StreamSRBSpinLock[j]); pHwDevExt->StreamSRBListSize[j] = 0; } // The following allows multiple instance of identical hardware // to be installed. GlobalDriverMediumInstanceCount is set in the Medium.Id field. pHwDevExt->DriverMediumInstanceCount = GlobalDriverMediumInstanceCount++; AdapterSetInstance (pSrb); DbgLogInfo(("TestCap: Exit, HwInitialize()\n")); //if (flag == 1)//modified by duanjun //{ // pSrb->Status = STATUS_SUCCESS; pSrb->Status = BulkUsb_StartDevice(pHwDevExt->PDO);//add by duanjun return (TRUE); //} |
|
最新喜欢:![]() |
沙发#
发布于:2008-06-30 16:51
你好,能够交流一下嘛?我也在弄这个testcap,是想和pci的驱动弄在一起.
我的QQ:744015483 |
|
|