Eric Kohl wrote:
"Filip Navara" <xnavara(a)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(a)reactos.com
http://reactos.com:8080/mailman/listinfo/ros-dev