The XOR in this case is a common used assembly shortcut for zeroing a register, as it will zero any similarities between source and destination. Most CPU architectures perform this faster than pushing a zero value onto the register. You will see this kind of behavior in a lot of functions.
I'm pretty sure this has no application to the actual function of walking through a linked list. Rather, it is just a simple register cleaning operation. It may be involved in a related linked list function, but it in itself does not perform much outside of cleaning up a register for use.
Btw, concerning XOR on linked lists, yes, a XOR linked list is double. However, I'm personally not aware of how to do XOR lists at all if it's through a Windows API call. I'm pretty sure those require actual addresses and nor XOR differences. Correct me if I'm wrong.