Добавлю, что в HANDLE (равно как и в DWORD) ничего особенного нет, т.к. это просто
Код:
typedef PVOID HANDLE;
где PVOID (как это нетрудно догадаться) - нетипизированный указатель:
Код:
typedef void *PVOID;
DWORD (от double word - двойное машинное слово) объявляется так:
Код:
typedef unsigned long DWORD;
Т.е. ни то, ни другое не представляют из себя какую-либо специфичную языковую конструкцию, это просто - переименования известных стандартных типов.
Поэтому переменные обоих типов запросто могут быть элементами массивов.