I take it you are in "SQL SERVER MODE" ?
To dump the CLI handle array, CALL QSYS/QSQDMPHA. Then work with the spooled files to examine your output. To dump the CLI handle array for a stream other than the one from which you are issuing the command, CALL QSYS/QSQDMPHA PARM('xxxxxx'), where 'xxxxxx' is the job number of the job that is currently running CLI.
You did not say if you were using local or remote. Try the WRKRDBDIRE for entries already known (which I think is what you mean). Otherwise, use ADDRDBDIRE RDB(SYSNAME) RMTLOCNAME(*LOCAL)
Assuming this is your own code and you are not dependant upon a shared executable/macro library, have you preserved the earlier SQLAllocHandle() - function area/values e.g. SQL_HANDLE_DBC? You will know the last results from SQLConnect(); SQLDriverConnect(); SQLBrowseConnect() functions.
Assuming your existing connect CLI is functioning OK, you can use the usual SQLGetConnectAttr() and SQLSetConnectAttr() functions. If you try SQLDriverConnect() with the DSN string and no associated value, it returns CLI connection info with a list of source-names. You can use the SQLDataSources() function to obtain an (alphabetically) ordered list of source-names+descriptions on an iterative basis.