information_schema.routines is my preferred approach for getting basic information about the function itself. As AdaTheDev stated, information_schema.routine_columns is the best place to get information about columns.
You can also dig up information from system tables, but it takes a lot of effort, and you cannot count on the fact that system tables will not change in a future version. But you could if you wanted to:
select * from sys.columns where object_id = object_id(N'fnc_Document_GetInfoByIndex')
(this example is for SQL Server 2008)
source share