In "What is ADL and how to use it.doc", included into ADL SDK, I've read following:
Here’s an example of how information about each adapter is obtained. In this example, the allocation of the memory for the AdapterInfo structure is done through malloc. Most of the ADL APIs allocate memory that way, while some APIs (see the last example) use the memory allocation function whose address is passed by the ADL_Main_Control_Create API. The documentation points those APIs out.
Let’s now get the number of the adapters in the system.