阅读:1783回复:8
我是菜鸟,有没有一种简单的方法知道pci基址寄存器的内容,送20分
哪位大虾可以告诉我啊?送20分
|
|
最新喜欢:theseu... |
沙发#
发布于:2003-03-05 12:10
在DDK中有一个PCI工具,叫什么PCIXXX(记不太清了),可以用来观看PCI的一些信息,你可以试试。
|
|
板凳#
发布于:2003-03-06 21:39
windriver可以,win2k的话,驱动加载了就可以看了。
|
|
|
地板#
发布于:2003-03-07 08:37
2K的DDK安装好后有个TOOL叫PCI configuration,
安装后在控制面板下! 用windriver更好! |
|
|
地下室#
发布于:2003-08-13 11:48
2000DDK下有个工具叫做PCIConfigruation
|
|
5楼#
发布于:2003-08-14 15:52
给你两个程序。
一个是纯DOS下的, 一个是在Windows 2000下的。 |
|
|
6楼#
发布于:2003-08-14 15:53
这个是DOS下的。
|
|
|
7楼#
发布于:2003-08-20 09:40
给你这个函数就可以读取:
NTSTATUS HtsReadWriteConfig( PDEVICE_OBJECT DeviceObject, ULONG WhichSpace, PVOID Buffer, ULONG Offset, ULONG Length, BOOLEAN ReadConfig) { PIRP Irp; KEVENT Event; PIO_STACK_LOCATION IoStack; NTSTATUS Status; ASSERT(DeviceObject); ASSERT(Buffer); ASSERT(Length); Irp = IoAllocateIrp(DeviceObject->StackSize, FALSE); if (!Irp) { return STATUS_INSUFFICIENT_RESOURCES; } Irp->IoStatus.Status = STATUS_NOT_SUPPORTED; KeInitializeEvent(&Event, NotificationEvent, FALSE); IoSetCompletionRoutine(Irp,HtsGenericCompletion, &Event, TRUE, TRUE, TRUE); IoStack = IoGetNextIrpStackLocation(Irp); IoStack->MajorFunction= IRP_MJ_PNP; IoStack->MinorFunction= ReadConfig ? IRP_MN_READ_CONFIG : IRP_MN_WRITE_CONFIG; IoStack->Parameters.ReadWriteConfig.WhichSpace = WhichSpace; IoStack->Parameters.ReadWriteConfig.Buffer = Buffer; IoStack->Parameters.ReadWriteConfig.Offset = Offset; IoStack->Parameters.ReadWriteConfig.Length = Length; if (ReadConfig) { RtlZeroMemory(Buffer, Length); } Status = IoCallDriver(DeviceObject, Irp); if (Status == STATUS_PENDING) { KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL); Status = Irp->IoStatus.Status; } IoFreeIrp(Irp); return Status; } NTSTATUS HtsGenericCompletion ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context ) { UNREFERENCED_PARAMETER (DeviceObject); KeSetEvent ((PKEVENT) Context, IO_NO_INCREMENT, FALSE); return STATUS_MORE_PROCESSING_REQUIRED; // Keep this IRP } 调用方法: NTSTATUS Dispatch_AddDevice( IN PDRIVER_OBJECT driverObj, IN PDEVICE_OBJECT physicalDevObj ) { 。。。。。。。。。。。。。 HtsReadWriteConfig( physicalDevObj, PCI_WHICHSPACE_CONFIG, &pciConfig, 0, sizeof(PCI_COMMON_CONFIG), TRUE/*Read*/); pciConfig.DeviceSpecific[6]=0x20; pciConfig.DeviceSpecific[7]=0x00; HtsReadWriteConfig( physicalDevObj, PCI_WHICHSPACE_CONFIG, &pciConfig, 0, sizeof(PCI_COMMON_CONFIG), FALSE/*Write*/); 。。。。。。。。。。。。。。。。。 } 如果能用,别忘了分点分给我哦 :P |
|
8楼#
发布于:2003-08-20 15:03
有一个简单的办法.如果你是用DS的话.
里面有一个类KPciConfiguration,用他的成员函数ReadBaseAddress即可. ------------------------------------------------------------ 答得好请给分 |
|
|