亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tmpnp.c

?? PNX系列設備驅動 PNX系列設備驅動
?? C
?? 第 1 頁 / 共 3 頁
字號:

tmmanPnpStartDeviceExit1:
	return Status;
}

NTSTATUS
tmmanPnpStopDevice(
	PDEVICE_OBJECT FunctionalDeviceObject )
{
	TMManDeviceObject*	TMManDevice = 
		(TMManDeviceObject*)FunctionalDeviceObject->DeviceExtension;

	tmmanExit ( TMManDevice->DSPNumber );	

	TMManGlobal->DeviceList[TMManDevice->DSPNumber] = NULL;

	TMManGlobal->DeviceCount--;

	return STATUS_SUCCESS;
}


NTSTATUS tmmanPnpComplete (
	PDEVICE_OBJECT DeviceObject,
	PIRP Irp,
	PVOID Context  )
{
    PIO_STACK_LOCATION  IoStack;
    PKEVENT Event = (PKEVENT) Context;
    NTSTATUS status = STATUS_SUCCESS;

    UNREFERENCED_PARAMETER (DeviceObject);

    IoStack = IoGetCurrentIrpStackLocation (Irp);

    if (Irp->PendingReturned) 
	{
        IoMarkIrpPending( Irp );
    }

    switch (IoStack->MajorFunction) 
	{

        case IRP_MJ_PNP:
		KeSetEvent(Event, 0, FALSE);

		//
		// Take the IRP back so that we can continue using it during
		// the IRP_MN_START_DEVICE dispatch routine.
		// NB: we will have to call IoCompleteRequest
		//
		return STATUS_MORE_PROCESSING_REQUIRED;

		break;
    }

    return status;
}


char * tmmanPnpDumpMinorCode ( ULONG MinorFunction )
{
	switch ( MinorFunction )
	{
		case IRP_MN_START_DEVICE	: return "IRP_MN_START_DEVICE";
		case IRP_MN_QUERY_REMOVE_DEVICE : return "IRP_MN_QUERY_REMOVE_DEVICE";
		case IRP_MN_REMOVE_DEVICE : return "IRP_MN_REMOVE_DEVICE";
		case IRP_MN_CANCEL_REMOVE_DEVICE : return "IRP_MN_CANCEL_REMOVE_DEVICE";
		case IRP_MN_STOP_DEVICE : return "IRP_MN_STOP_DEVICE";
		case IRP_MN_QUERY_STOP_DEVICE : return "IRP_MN_QUERY_STOP_DEVICE";
		case IRP_MN_CANCEL_STOP_DEVICE : return "IRP_MN_CANCEL_STOP_DEVICE";

		case IRP_MN_QUERY_DEVICE_RELATIONS : return "IRP_MN_QUERY_DEVICE_RELATIONS";
		case IRP_MN_QUERY_INTERFACE  : return "IRP_MN_QUERY_INTERFACE";
		case IRP_MN_QUERY_CAPABILITIES : return "IRP_MN_QUERY_CAPABILITIES";
		case IRP_MN_QUERY_RESOURCES : return "IRP_MN_QUERY_RESOURCES";
		case IRP_MN_QUERY_RESOURCE_REQUIREMENTS : return "IRP_MN_QUERY_RESOURCE_REQUIREMENTS";
		case IRP_MN_QUERY_DEVICE_TEXT : return "IRP_MN_QUERY_DEVICE_TEXT";
		case IRP_MN_FILTER_RESOURCE_REQUIREMENTS : return "IRP_MN_FILTER_RESOURCE_REQUIREMENTS";
		case 0x0e : return "IRP_MN_FUNCTION_0x0e";

		case IRP_MN_READ_CONFIG : return "IRP_MN_READ_CONFIG";
		case IRP_MN_WRITE_CONFIG : return "IRP_MN_WRITE_CONFIG";
		case IRP_MN_EJECT : return "IRP_MN_EJECT";
		case IRP_MN_SET_LOCK : return "IRP_MN_SET_LOCK";
		case IRP_MN_QUERY_ID : return "IRP_MN_QUERY_ID";
		case IRP_MN_QUERY_PNP_DEVICE_STATE : return "IRP_MN_QUERY_PNP_DEVICE_STATE";
		case IRP_MN_QUERY_BUS_INFORMATION :  return "IRP_MN_QUERY_BUS_INFORMATION";
		case IRP_MN_DEVICE_USAGE_NOTIFICATION : return "IRP_MN_DEVICE_USAGE_NOTIFICATION";
		case IRP_MN_SURPRISE_REMOVAL : return "IRP_MN_SURPRISE_REMOVAL";
		//case IRP_MN_QUERY_LEGACY_BUS_INFORMATION : return "IRP_MN_QUERY_LEGACY_BUS_INFORMATION";

		default :  return "UNKNOWN";
	}
}

char * tmmanPnpDumpState ( ULONG State )
{
	switch ( State )
	{
		case	constTMMan_DEVICE_STATE_NEVERSTARTED : return "DEVICE_STATE_NEVERSTARTED";
		case	constTMMan_DEVICE_STATE_STARTED : return "DEVICE_STATE_STARTED";
		case	constTMMan_DEVICE_STATE_REMOVEPENDING : return "DEVICE_STATE_REMOVEPENDING";
		case	constTMMan_DEVICE_STATE_REMOVED : return "DEVICE_STATE_REMOVED";
		case	constTMMan_DEVICE_STATE_STOPPENDING : return "DEVICE_STATE_STOPPENDING";
		case	constTMMan_DEVICE_STATE_STOPPED : return "DEVICE_STATE_STOPPED";
		case	constTMMan_DEVICE_STATE_SURPRISEREMOVED : return "DEVICE_STATE_SURPRISEREMOVED";

		default :  return "UNKNOWN";
	}
}

BOOLEAN	tmmanDeviceProperty ( PDEVICE_OBJECT FunctionalDeviceObject )
{
	ULONG				BufferLength;
	PVOID				BufferAddress;

	// IoGetDeviceProperty BEGIN

	//DevicePropertyLocationInformation

	IoGetDeviceProperty ( FunctionalDeviceObject,
		DevicePropertyLocationInformation,
		0,
		NULL,
		&BufferLength );

	if ( ( BufferAddress = ExAllocatePool ( PagedPool, BufferLength ) ) == NULL )
	{	
		return FALSE;
	}

	IoGetDeviceProperty ( FunctionalDeviceObject,
		DevicePropertyLocationInformation,
		BufferLength,
		BufferAddress,
		&BufferLength );

	DPF (0,("DevicePropertyLocationInformation:BufferLength[0x%x]:Data[0x%x]\n", 
		BufferLength, *(PULONG)BufferAddress ));
			
	ExFreePool ( BufferAddress );

	//DevicePropertyClassName

	IoGetDeviceProperty ( FunctionalDeviceObject,
		DevicePropertyClassName,
		0,
		NULL,
		&BufferLength );

	if ( ( BufferAddress = ExAllocatePool ( PagedPool, BufferLength ) ) == NULL )
	{	
		return FALSE;
	}

	IoGetDeviceProperty ( FunctionalDeviceObject,
		DevicePropertyClassName,
		BufferLength,
		BufferAddress,
		&BufferLength );


	DPF (0,("DevicePropertyClassName:BufferLength[0x%x]:Data[%ws]\n", 
		BufferLength, (PWCHAR)BufferAddress ));	

	ExFreePool ( BufferAddress );

	//DevicePropertyDeviceDescription 

	IoGetDeviceProperty ( FunctionalDeviceObject,
		DevicePropertyDeviceDescription,
		0,
		NULL,
		&BufferLength );

	if ( ( BufferAddress = ExAllocatePool ( PagedPool, BufferLength ) ) == NULL )
	{	
		return FALSE;
	}

	IoGetDeviceProperty ( FunctionalDeviceObject,
		DevicePropertyDeviceDescription,
		BufferLength,
		BufferAddress,
		&BufferLength );


	DPF (0,("DevicePropertyDeviceDescription:BufferLength[0x%x]:Data[%ws]\n", 
		BufferLength, (PWCHAR)BufferAddress ));	

	ExFreePool ( BufferAddress );

	//DevicePropertyManufacturer 


	IoGetDeviceProperty ( FunctionalDeviceObject,
		DevicePropertyManufacturer,
		0,
		NULL,
		&BufferLength );

	if ( ( BufferAddress = ExAllocatePool ( PagedPool, BufferLength ) ) == NULL )
	{	
		return FALSE;
	}

	IoGetDeviceProperty ( FunctionalDeviceObject,
		DevicePropertyManufacturer,
		BufferLength,
		BufferAddress,
		&BufferLength );


	DPF (0,("DevicePropertyManufacturer:BufferLength[0x%x]:Data[%ws]\n", 
		BufferLength, (PWCHAR)BufferAddress ));	

	ExFreePool ( BufferAddress );

	// DevicePropertyPhysicalDeviceObjectName 

	IoGetDeviceProperty ( FunctionalDeviceObject,
		DevicePropertyManufacturer,
		0,
		NULL,
		&BufferLength );

	if ( ( BufferAddress = ExAllocatePool ( PagedPool, BufferLength ) ) == NULL )
	{	
		return FALSE;
	}

	IoGetDeviceProperty ( FunctionalDeviceObject,
		DevicePropertyManufacturer,
		BufferLength,
		BufferAddress,
		&BufferLength );


	DPF (0,("DevicePropertyManufacturer:BufferLength[0x%x]:Data[%ws]\n", 
		BufferLength, (PWCHAR)BufferAddress ));	

	ExFreePool ( BufferAddress );

	return TRUE;
	// IoGetDeviceProperty END
}



BOOLEAN	pnpGetPCIInformation ( 
	IN USHORT Vendor, 
	IN USHORT Device,
	IN ULONG  ReferenceAddress,
	OUT	PULONG	BusNumberPtr,
	PPCI_SLOT_NUMBER SlotNumberPtr )
{
    ULONG				n;
    BOOLEAN				fNotDone;
    PCI_COMMON_CONFIG	PciData;
    NTSTATUS			Status = STATUS_UNSUCCESSFUL;
    ULONG				i = 0, j = 0, Idx;
    ULONG				ulTmp;
	ULONG				BusNumber = 0;
	PCI_SLOT_NUMBER		SlotNumber;

	BusNumber = 0;
	SlotNumber.u.bits.DeviceNumber = 0;
	SlotNumber.u.bits.FunctionNumber = 0;
	SlotNumber.u.bits.Reserved = 0;


    for (BusNumber = 0, fNotDone = TRUE; fNotDone ; BusNumber++) 
	{
        for ( i = 0 ; i < PCI_MAX_DEVICES  &&  fNotDone ; i++ ) 
		{
            for ( j = 0 ; j < PCI_MAX_FUNCTION ; j++) 
			{
				SlotNumber.u.bits.DeviceNumber = i;
				SlotNumber.u.bits.FunctionNumber = j;

                n = HalGetBusData (
                    PCIConfiguration,
                    BusNumber,
                    SlotNumber.u.AsULONG,
                    &PciData,
                    PCI_COMMON_HDR_LENGTH
                    );
				/*
				DPF (0, 
					("pnpFindPCIDevices:[Bus:%x][Dev:%x][Func:%x][Vendor:%x][Device:%x]\n",
					BusNumber, i, j, PciData.VendorID, PciData.DeviceID ));
				*/

                if (n == 0) 
				{
                    // out of buses
                    fNotDone = FALSE;
                    break;
                }

                if (PciData.VendorID == PCI_INVALID_VENDORID) 
				{
                    // Nothing in this slot, skip to next slot
                    break;
                }

                if ( ( PciData.VendorID == Vendor ) &&  
					( PciData.DeviceID == Device ) && 
					( PciData.u.type0.BaseAddresses[0] == ReferenceAddress ) )   
				{
					*SlotNumberPtr = SlotNumber;
					*BusNumberPtr = BusNumber;
					return TRUE;
					// found device node
				}
			}
		}
	}
 	return FALSE;
}

VOID	DumpPNPResources ( 
	PCM_RESOURCE_LIST	ResourceList )
{
	ULONG	i,j;
	DPF (0,("CM_RESOURCE_LIST:Count[%x]\n", ResourceList->Count ));

    for (i = 0; i < ResourceList->Count; i++) 
	{
        DPF (1,("CM_PARTIAL_RESOURCE_LIST:Version[%x]:Revision[%x]:Count[%x]\n",
            ResourceList->List[i].PartialResourceList.Version,
            ResourceList->List[i].PartialResourceList.Revision,
            ResourceList->List[i].PartialResourceList.Count));

        for (j = 0; j < ResourceList->List[i].PartialResourceList.Count; j++) 
		{
            DPF (1,("CM_PARTIAL_RESOURCE_DESCRIPTOR#[%x]:Type[%x]:ShareDisposition[%x]:Flags[%x]\n",
				j,
				ResourceList->List[i].PartialResourceList.PartialDescriptors[j].Type,
				ResourceList->List[i].PartialResourceList.PartialDescriptors[j].ShareDisposition,
				ResourceList->List[i].PartialResourceList.PartialDescriptors[j].Flags ));

            switch (ResourceList->List[i].PartialResourceList.PartialDescriptors[j].Type) 
			{
	            case CmResourceTypePort:
                DPF (1,("CmResourceTypePort:Start[%x]:Length[%x]\n",
                    ResourceList->List[i].PartialResourceList.PartialDescriptors[j].u.Port.Start,
                    ResourceList->List[i].PartialResourceList.PartialDescriptors[j].u.Port.Length));
                break;

		        case CmResourceTypeInterrupt:
                DPF (1,("CmResourceTypeInterrupt:Level[%x]:Vector[%x]:Affininty[%x]\n",
                    ResourceList->List[i].PartialResourceList.PartialDescriptors[j].u.Interrupt.Level,
                    ResourceList->List[i].PartialResourceList.PartialDescriptors[j].u.Interrupt.Vector,
                    ResourceList->List[i].PartialResourceList.PartialDescriptors[j].u.Interrupt.Affinity));
                break;

			    case CmResourceTypeMemory:
                DPF (1,("CmResourceTypeMemory:Start[%x]:Length[%x]\n",
                    ResourceList->List[i].PartialResourceList.PartialDescriptors[j].u.Memory.Start,
                    ResourceList->List[i].PartialResourceList.PartialDescriptors[j].u.Memory.Length ));
                break;

				case CmResourceTypeDma:
                DPF (1,("CmResourceTypeDma:Channel[%x]:Port[%x]:Reserved1[%x]\n",
                    ResourceList->List[i].PartialResourceList.PartialDescriptors[j].u.Dma.Channel,
                    ResourceList->List[i].PartialResourceList.PartialDescriptors[j].u.Dma.Port,
                    ResourceList->List[i].PartialResourceList.PartialDescriptors[j].u.Dma.Reserved1 ));
                break;

				case CmResourceTypeDeviceSpecific:
                DPF (1,("CmResourceTypeDeviceSpecific:DataSize[%x]:Reserved1[%x]:Reserved2[%x]\n",
                    ResourceList->List[i].PartialResourceList.PartialDescriptors[j].u.DeviceSpecificData.DataSize,
                    ResourceList->List[i].PartialResourceList.PartialDescriptors[j].u.DeviceSpecificData.Reserved1,
                    ResourceList->List[i].PartialResourceList.PartialDescriptors[j].u.DeviceSpecificData.Reserved2 ));
                break;

				case CmResourceTypeBusNumber:
                DPF (1,("CmResourceTypeBusNumber:Start[%x]:Length[%x]:Reserved[%x]\n",
                    ResourceList->List[i].PartialResourceList.PartialDescriptors[j].u.BusNumber.Start,
                    ResourceList->List[i].PartialResourceList.PartialDescriptors[j].u.BusNumber.Length,
                    ResourceList->List[i].PartialResourceList.PartialDescriptors[j].u.BusNumber.Reserved ));
				break;

				case CmResourceTypeDevicePrivate:
                DPF (1,("CmResourceTypeDevicePrivate:Data0[%x]:Data1[%x]:Data2[%x]\n",
                    ResourceList->List[i].PartialResourceList.PartialDescriptors[j].u.DevicePrivate.Data[0],
                    ResourceList->List[i].PartialResourceList.PartialDescriptors[j].u.DevicePrivate.Data[1],
                    ResourceList->List[i].PartialResourceList.PartialDescriptors[j].u.DevicePrivate.Data[2] ));
				break;

				default:
                DPF (0,("Unknown Reourcetype[0x%x]\n", 
					ResourceList->List[i].PartialResourceList.PartialDescriptors[j].Type ));
                break;
            } // end switch
        } // end for partial resource descriptors
    } // end for full resource descriptors	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩免费观看高清完整版 | 中文字幕日韩一区| 欧美一区二区三区四区视频| 欧美无乱码久久久免费午夜一区| 99久精品国产| 91免费国产在线观看| 91电影在线观看| 欧美日韩久久久久久| 在线亚洲一区二区| 欧美性色黄大片| 欧美日本在线观看| 日韩小视频在线观看专区| 欧美刺激脚交jootjob| 久久九九影视网| 中文字幕中文在线不卡住| 亚洲黄色尤物视频| 日本色综合中文字幕| 蜜臀av一区二区在线观看| 国内精品不卡在线| aa级大片欧美| 欧美精品在线一区二区三区| 欧美一级欧美三级| 国产精品乱码人人做人人爱| 亚洲欧美国产毛片在线| 青青草原综合久久大伊人精品 | 极品少妇xxxx精品少妇偷拍| 国产在线国偷精品免费看| 成人一区在线观看| 欧美日韩在线播放| 国产日韩欧美麻豆| 亚洲国产成人tv| 国产乱码精品一区二区三| 91污片在线观看| 日韩手机在线导航| 国产精品嫩草久久久久| 婷婷综合在线观看| 福利一区在线观看| 7777精品伊人久久久大香线蕉超级流畅 | 成人app在线观看| 91精品国产综合久久精品麻豆| 2023国产精华国产精品| 伊人夜夜躁av伊人久久| 精品一区二区久久久| 欧美三级电影一区| 中文字幕av一区二区三区免费看| 五月激情综合网| 91丨porny丨首页| 欧美精品一区二| 亚洲mv在线观看| 91看片淫黄大片一级在线观看| 精品少妇一区二区三区日产乱码 | 亚洲小说欧美激情另类| 国产成人精品亚洲日本在线桃色| 欧美三区在线视频| 中文字幕一区二区三区视频| 精品一区二区在线观看| 欧美日韩一区二区三区视频 | 一区二区三区在线不卡| 国产丶欧美丶日本不卡视频| 欧美一级理论片| 亚洲第一福利视频在线| 色综合久久中文字幕| 久久久久国色av免费看影院| 日本欧美久久久久免费播放网| 欧洲亚洲国产日韩| 亚洲三级在线播放| 91在线视频播放地址| 国产日产欧美一区二区三区| 精品在线免费视频| 欧美成人一区二区| 极品瑜伽女神91| 久久精品免视看| 国产精品影视在线观看| 久久综合一区二区| 国产在线不卡一区| 久久久99久久| 国产福利精品导航| 国产欧美一区二区精品性色超碰| 国产综合色在线| 国产女主播视频一区二区| 国产精品性做久久久久久| 欧美激情一区三区| 成人a免费在线看| 亚洲人成7777| 色88888久久久久久影院野外| 亚洲精品国产a久久久久久| 一本久久a久久免费精品不卡| 亚洲精品欧美激情| 欧美老女人在线| 免费成人在线观看视频| 久久一区二区视频| 成人国产亚洲欧美成人综合网| 中文字幕在线不卡| 色就色 综合激情| 天堂影院一区二区| 精品粉嫩aⅴ一区二区三区四区| 激情综合色播激情啊| 国产精品久久久久aaaa| 欧美在线一区二区三区| 青青草成人在线观看| 久久综合狠狠综合| 色综合久久久久久久| 五月综合激情日本mⅴ| 精品国产sm最大网站免费看| 国产成人精品综合在线观看 | 欧美日本韩国一区二区三区视频| 青青草原综合久久大伊人精品| 国产日韩精品久久久| 一本一本大道香蕉久在线精品| 日韩精品乱码免费| 国产精品久久看| 在线综合亚洲欧美在线视频| 国产精品一区二区91| 亚洲一区影音先锋| 久久精品欧美一区二区三区麻豆| 色屁屁一区二区| 精品亚洲成a人| 亚洲一区二区三区视频在线| 26uuu亚洲婷婷狠狠天堂| 91视频xxxx| 国产乱码精品一区二区三区五月婷| 日韩毛片一二三区| 日韩精品一区二区在线观看| 91精品办公室少妇高潮对白| 国内一区二区在线| 视频一区二区三区中文字幕| 1区2区3区国产精品| 日韩精品一区二区三区四区视频| 一本一道综合狠狠老| 国产精品1区2区| 麻豆91在线看| 一区二区三区精密机械公司| 国产午夜亚洲精品羞羞网站| 日韩三级视频中文字幕| 欧美性色黄大片| 91看片淫黄大片一级在线观看| 国产精品资源在线| 麻豆精品视频在线观看视频| 午夜精品久久久| 一区二区三区高清在线| 亚洲色欲色欲www在线观看| 国产欧美日产一区| 久久免费美女视频| 精品人在线二区三区| 91精品蜜臀在线一区尤物| 欧美理论片在线| 欧美日韩一二三| 欧美最新大片在线看| 色综合久久中文字幕| 色婷婷av一区二区三区软件| 成人福利电影精品一区二区在线观看| 激情六月婷婷综合| 精品亚洲成a人在线观看| 久久99精品视频| 精品一区二区三区免费播放| 麻豆成人91精品二区三区| 美国精品在线观看| 九色综合狠狠综合久久| 国产毛片精品视频| 风流少妇一区二区| jvid福利写真一区二区三区| 成人美女在线观看| 99视频热这里只有精品免费| 91香蕉视频在线| 欧美色图一区二区三区| 欧美日韩视频不卡| 日韩欧美一级二级三级| 精品国产露脸精彩对白| 国产视频一区不卡| 亚洲色欲色欲www在线观看| 亚洲地区一二三色| 久久国产精品99久久久久久老狼| 国产在线不卡一卡二卡三卡四卡| 国产精品亚洲成人| 色综合天天性综合| 91精品欧美久久久久久动漫| 久久综合丝袜日本网| 国产精品久久看| 午夜精品久久久| 国产aⅴ综合色| 欧美少妇bbb| 久久久久久9999| 亚洲宅男天堂在线观看无病毒| 日本亚洲天堂网| 成人高清在线视频| 欧美日韩成人综合| 久久久久久影视| 亚洲综合另类小说| 极品销魂美女一区二区三区| 99国产精品国产精品久久| 欧美另类变人与禽xxxxx| 国产精品视频一二三| 偷拍亚洲欧洲综合| 成人av网在线| 日韩一级精品视频在线观看| 亚洲人成影院在线观看| 久久99国产精品免费| 欧美日韩精品一区二区| 国产精品久久久久aaaa樱花 | 欧美日韩专区在线|