Eric Kohl wrote:
"Filip Navara" xnavara@volny.cz wrote:
In fact I forgot to tell that this structure actually contains the pointer to the DeviceObject you were talking about. I'm currently using it just to get access to NDIS_MINIPORT_BLOCK which is located in the DeviceExtension...
Okay, that's another sollution to the problem.
Great! I thought about doing that too :-) I have made some changes to the _DEVICE_NODE structure too, but it shouldn't be hard to sync.
Do you have an official definition of the _DEVICE_NODE structure? I am asking because I don't know whether I should keep the BusInformation component in _DEVICE_NODE or remove it. I am pretty sure we need the BusNumber and InterfaceType in _DEVICE_NODE but I am not sure about BusTypeGuid?
Eric,
Here you go:
struct _DEVICE_NODE, 44 elements, 0x114 bytes +0x000 Sibling : Ptr32 to struct _DEVICE_NODE, 44 elements, 0x114 bytes +0x004 Child : Ptr32 to struct _DEVICE_NODE, 44 elements, 0x114 bytes +0x008 Parent : Ptr32 to struct _DEVICE_NODE, 44 elements, 0x114 bytes +0x00c LastChild : Ptr32 to struct _DEVICE_NODE, 44 elements, 0x114 bytes +0x010 Level : Uint4B +0x014 Notify : Ptr32 to struct _PO_DEVICE_NOTIFY, 10 elements, 0x28 bytes +0x018 State : Enum _PNP_DEVNODE_STATE, 22 total enums
+0x01c PreviousState : Enum _PNP_DEVNODE_STATE, 22 total enums
+0x020 StateHistory : [20] Enum _PNP_DEVNODE_STATE, 22 total enums
+0x070 StateHistoryEntry : Uint4B +0x074 CompletionStatus : Int4B +0x078 PendingIrp : Ptr32 to struct _IRP, 21 elements, 0x70 bytes +0x07c Flags : Uint4B +0x080 UserFlags : Uint4B +0x084 Problem : Uint4B +0x088 PhysicalDeviceObject : Ptr32 to struct _DEVICE_OBJECT, 25 elements, 0xb8 bytes +0x08c ResourceList : Ptr32 to struct _CM_RESOURCE_LIST, 2 elements, 0x24 bytes +0x090 ResourceListTranslated : Ptr32 to struct _CM_RESOURCE_LIST, 2 elements, 0x24 bytes +0x094 InstancePath : struct _UNICODE_STRING, 3 elements, 0x8 bytes +0x09c ServiceName : struct _UNICODE_STRING, 3 elements, 0x8 bytes +0x0a4 DuplicatePDO : Ptr32 to struct _DEVICE_OBJECT, 25 elements, 0xb8 bytes +0x0a8 ResourceRequirements : Ptr32 to struct _IO_RESOURCE_REQUIREMENTS_LIST, 7 elements, 0x48 bytes +0x0ac InterfaceType : Enum _INTERFACE_TYPE, 18 total enums
+0x0b0 BusNumber : Uint4B +0x0b4 ChildInterfaceType : Enum _INTERFACE_TYPE, 18 total enums
+0x0b8 ChildBusNumber : Uint4B +0x0bc ChildBusTypeIndex : Uint2B +0x0be RemovalPolicy : UChar +0x0bf HardwareRemovalPolicy : UChar +0x0c0 TargetDeviceNotify : struct _LIST_ENTRY, 2 elements, 0x8 bytes +0x0c8 DeviceArbiterList : struct _LIST_ENTRY, 2 elements, 0x8 bytes +0x0d0 DeviceTranslatorList : struct _LIST_ENTRY, 2 elements, 0x8 bytes +0x0d8 NoTranslatorMask : Uint2B +0x0da QueryTranslatorMask : Uint2B +0x0dc NoArbiterMask : Uint2B +0x0de QueryArbiterMask : Uint2B +0x0e0 OverUsed1 : union __unnamed, 2 elements, 0x4 bytes +0x0e4 OverUsed2 : union __unnamed, 1 elements, 0x4 bytes +0x0e8 BootResources : Ptr32 to struct _CM_RESOURCE_LIST, 2 elements, 0x24 bytes +0x0ec CapabilityFlags : Uint4B +0x0f0 DockInfo : struct __unnamed, 3 elements, 0x10 bytes +0x100 DisableableDepends : Uint4B +0x104 PendedSetInterfaceState : struct _LIST_ENTRY, 2 elements, 0x8 bytes +0x10c LegacyBusListEntry : struct _LIST_ENTRY, 2 elements, 0x8 bytes
struct _PO_DEVICE_NOTIFY, 10 elements, 0x28 bytes +0x000 Link : struct _LIST_ENTRY, 2 elements, 0x8 bytes +0x008 TargetDevice : Ptr32 to struct _DEVICE_OBJECT, 25 elements, 0xb8 bytes +0x00c WakeNeeded : UChar +0x00d OrderLevel : UChar +0x010 DeviceObject : Ptr32 to struct _DEVICE_OBJECT, 25 elements, 0xb8 bytes +0x014 Node : Ptr32 to Void +0x018 DeviceName : Ptr32 to Uint2B +0x01c DriverName : Ptr32 to Uint2B +0x020 ChildCount : Uint4B +0x024 ActiveChild : Uint4B
Enum _PNP_DEVNODE_STATE, 22 total enums DeviceNodeUnspecified = 768 DeviceNodeUninitialized = 769 DeviceNodeInitialized = 770 DeviceNodeDriversAdded = 771 DeviceNodeResourcesAssigned = 772 DeviceNodeStartPending = 773 DeviceNodeStartCompletion = 774 DeviceNodeStartPostWork = 775 DeviceNodeStarted = 776 DeviceNodeQueryStopped = 777 DeviceNodeStopped = 778 DeviceNodeRestartCompletion = 779 DeviceNodeEnumeratePending = 780 DeviceNodeEnumerateCompletion = 781 DeviceNodeAwaitingQueuedDeletion = 782 DeviceNodeAwaitingQueuedRemoval = 783 DeviceNodeQueryRemoved = 784 DeviceNodeRemovePendingCloses = 785 DeviceNodeRemoved = 786 DeviceNodeDeletePendingCloses = 787 DeviceNodeDeleted = 788 MaxDeviceNodeState = 789
struct _IO_RESOURCE_REQUIREMENTS_LIST, 7 elements, 0x48 bytes +0x000 ListSize : Uint4B +0x004 InterfaceType : Enum _INTERFACE_TYPE, 18 total enums +0x008 BusNumber : Uint4B +0x00c SlotNumber : Uint4B +0x010 Reserved : [3] Uint4B +0x01c AlternativeLists : Uint4B +0x020 List : [1] struct _IO_RESOURCE_LIST, 4 elements, 0x28 bytes
I think IO_RESOURCE_LIST is already in the headers, same for CM_RESOURCE_LIST, if not, let me know.
Best regards, Alex Ionescu
Ok. So far I had only the report from Gerard who told that it wasn't enumerated. Now I've got access to a computer lab with 10 PCs with RTL8193 so I might give it a try myself...
Ooops, I forgot to mention that one of my machines freezes while pci.sys enumerates devices on the pci bus. This has nothing to do with the RTL8139 driver.
Regards, Eric
Ros-dev mailing list Ros-dev@reactos.com http://reactos.com:8080/mailman/listinfo/ros-dev