This function creates a dynamic pointer array.


HDPA DPA_Create (int cpGrow);


The cpGrow argument provides the allocation unit for the DPA, measured as a number of pointers.

Return Value

The function returns a handle to the DPA if successful, else NULL for failure.


The function creates a DPA handle as the address of a small control structure also named DPA. Memory for the control structure is obtained from the process heap in the NT implementations, else a private heap in the Windows implementations.

Memory for the pointer array itself is not obtained by this function. Instead, the memory block that contains the array grows and shrinks according to the demands of other functions, but always as a multiple of an allocation unit whose initial size is set from the cpGrow argument. This allocation unit has an effective minimum of eight: the function chooses eight as the allocation unit if given any lesser value.

This function is implemented in terms of DPA_CreateEx (with NULL for the additional hHeap argument) in version 4.71 and higher.


The DPA_Create function is exported from COMCTL32.DLL as ordinal 328 in version 3.50 and higher. The implementation for version 6.10 and higher is built into a statically linked library and thence is also exported from the Internet Explorer module IERTUTIL.DLL as ordinal 74 in version 7.0 and higher.

This function was documented among the Settlement Program Interfaces in December 2002, but with Windows 2000 cited as the minimum operating system, despite many years of earlier availability.