How does module_hook() function work? I need to check whether a hook is implemented in a module, so I chose module_hook function. In the documentation it states that the Return Value will be:


  TRUE if the module is both installed and enabled, and the hook is
  implemented in that module.


Now, I named a callback function (not a hook) in my module as "my_module_abc()"

Note: my_module is the name of my module.


  If I test this function in module_hook like below:


module_hook('my_module', 'abc');



  It returns TRUE.



I thought It would return TRUE only for registered hooks and not for any function callbacks. Does module_hook know the difference between a function and a hook? 
Is there any function like hook_information($hook) which returns information about a hook?


Is this right? Am I missing something?
It's important to understand that a 'hook' is literally a function that's named in a certain way.

If you have a function 

function my_module_abc() { }


That is, by the nature of the hook system, my_module's implementation of hook_abc(). 

Whether hook_abc() was ever intended to be a hook is a completely different matter. The fact that the hook system works entirely on a naming convention means that it's inevitable. In fact it's working exactly as designed.

Hooks are very loose, they are not structured; they don't have meta data, beyond what the module author may choose to document in MODULE.api.php. The 'information' you're looking for doesn't exist, and until someone changes the way Drupal's hook system works, it can't and won't.