Я много лет не работал с VB6, поэтому примите приведенную ниже информацию со здоровой дозой скептицизма. Но вот с чего бы я начал, если бы сегодня столкнулся с этой проблемой.
Поскольку вы работаете в VB6, я предполагаю, что это 32-битный код.
Типы PTR являются указателями на блоки памяти, которые были выделены чем-то другим. Чтобы получить доступ к этой памяти, вам нужно разыменовать указатель.
Все значения PTR являются 32-битными, поэтому, когда вы создаете для этого структуру VB6, поместите DWORD или LONG или любое другое 32-битное значение VB6.
Чтобы разыменовать указатели, вам нужно вызвать функцию Windows API RtlMoveMemory, как описано здесь . Все три параметра RtlMoveMemory являются 32-битными значениями.