I had the same question a while ago herehere.
hook_node_access is not recognized by views or menus. It should only be used as the last line of defense.
A better way to control node access is through hook_node_access_records and hook_node_grants as described here and herehere .