Sharing only the subfolder makes sense indeed, and I even think Windows tries to avoid sharing roots for security reasons. Although on a domestic LAN (i.e. family LAN), I don't think it really matters.
Well, at least your HD is working properly. Do you have any non-vista/7 computer that can actually access your HD remotely? Do you know if that still works?
If so, then the issue is probably on vista/7 sides, probably around the netbios protocol (file sharing ability). On the win7 host, can you run a command prompt (windows key + R, type "cmd") and enter "net view \\IP.address" where IP.address corresponds to the winXP host that share the HD?