diff between dot and arrow

what is the difference between the dot and arrow in windbg. both seem to be
deref-ing members of a structure.

kd> dt nt!_EPROCESS 8274af18 Pcb.Header.size
+0x000 Pcb :
+0x000 Header :
+0x002 Size : 0x9a ‘’

kd> dt nt!_EPROCESS 8274af18 Pcb->Header->size
+0x000 Pcb :
+0x000 Header :
+0x002 Size : 0x9a ‘’

. (dot) will recursively expand structures within structures and can
be used like … (dot dot dot dot) will exapnd the 4th level nested
structure
on the first level a single . is equivalent to ->*

while -> will deref a pointer and you may need a name for it

lkd> $nodot
lkd> dt nt!_EPROCESS @$proc -y pc.H
+0x000 Pcb :
+0x000 Header : _DISPATCHER_HEADER
lkd> $single dot
lkd> dt nt!_EPROCESS @$proc -y pc.H.
+0x000 Pcb :
+0x000 Header :
+0x000 Type : 0x3 ‘’
+0x001 Absolute : 0 ‘’
+0x002 Size : 0x1b ‘’
+0x003 Inserted : 0 ‘’
+0x004 SignalState : 0n0
+0x008 WaitListHead : _LIST_ENTRY [0x866dd6d0 - 0x866dd6d0]
lkd> $single dot is equivalent to ->*
lkd> dt nt!_EPROCESS @$proc -y pc.H->*
+0x000 Pcb :
+0x000 Header :
+0x000 Type : 0x3 ‘’
+0x001 Absolute : 0 ‘’
+0x002 Size : 0x1b ‘’
+0x003 Inserted : 0 ‘’
+0x004 SignalState : 0n0
+0x008 WaitListHead : _LIST_ENTRY [0x866dd6d0 - 0x866dd6d0]
lkd> $double dot will expand _list_entry
lkd> dt nt!_EPROCESS @$proc -y pc.H…
+0x000 Pcb :
+0x000 Header :
+0x000 Type : 0x3 ‘’
+0x001 Absolute : 0 ‘’
+0x002 Size : 0x1b ‘’
+0x003 Inserted : 0 ‘’
+0x004 SignalState : 0n0
+0x008 WaitListHead : [0x866dd6d0 - 0x866dd6d0]
+0x000 Flink : 0x866dd6d0 _LIST_ENTRY [0x866dd6d0 - 0x866dd6d0]
+0x004 Blink : 0x866dd6d0 _LIST_ENTRY [0x866dd6d0 - 0x866dd6d0]
lkd> dt nt!_EPROCESS @$proc -y pc.H->W.
+0x000 Pcb :
+0x000 Header :
+0x008 WaitListHead : [0x866dd6d0 - 0x866dd6d0]
+0x000 Flink : 0x866dd6d0 _LIST_ENTRY [0x866dd6d0 - 0x866dd6d0]
+0x004 Blink : 0x866dd6d0 _LIST_ENTRY [0x866dd6d0 - 0x866dd6d0]
lkd> dt nt!_EPROCESS @$proc -y pc.H->W->*
+0x000 Pcb :
+0x000 Header :
+0x008 WaitListHead : [0x866dd6d0 - 0x866dd6d0]
+0x000 Flink : 0x866dd6d0 _LIST_ENTRY [ 0x866dd6d0 -
0x866dd6d0 ]
+0x004 Blink : 0x866dd6d0 _LIST_ENTRY [ 0x866dd6d0 -
0x866dd6d0 ]
lkd> dt nt!_EPROCESS @$proc -y pc.H->W…
+0x000 Pcb :
+0x000 Header :
+0x008 WaitListHead : [0x866dd6d0 - 0x866dd6d0]
+0x000 Flink :
+0x004 Blink :
Cannot find specified field members.

On 9/18/14, A P wrote:
> what is the difference between the dot and arrow in windbg. both seem to be
> deref-ing members of a structure.
>
> kd> dt nt!_EPROCESS 8274af18 Pcb.Header.size
> +0x000 Pcb :
> +0x000 Header :
> +0x002 Size : 0x9a ‘’
>
>
> kd> dt nt!_EPROCESS 8274af18 Pcb->Header->size
> +0x000 Pcb :
> +0x000 Header :
> +0x002 Size : 0x9a ‘’
>
> —
> WINDBG is sponsored by OSR
>
> OSR is hiring!! Info at http://www.osr.com/careers
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer