Pointers
VDDEP field vddep_vddp points to the associated chain of VDDPROC structures. One is allocated for each VDD the registers entry points under the same name.
_phdlVddHead points to the head of a chain of HDLVDD structures. One is allocated for each open VDD. The handle returned is the address of the associated HDLVDD.
_ppddephead points to the head of a chain of PDDEP structures. One is allocated for each Physical Device Driver that registers an entry point for VDD/PDD communication. The entry point is registered using DevHlp_RegisterPDD, and accessed using VDHRequestPDD.
VDDPROC owner id: vddproc (0xffdb).
HDLVDD owner id: vddlr (0xffd7).
PDDEP owner id: vddpddep (0xffda).
VDDEP
┌────────────────┬──────┬──────┬────┬────────────────────────────────────────┐│Field Name │Offset│Length│Type│Description │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │vddep_szVDD │+0 │9 │A │VDD Name │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │vddep_vddp │+9 │4 │D │VDD entry points (pointer to VDDPROC) │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │vddep_hmte │+d │4 │D │VDD hmte for deregistering if VDD fails │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │vddep_pvddep │+11 │4 │D │Next VDD (pointer to next VDDEP) │ └────────────────┴──────┴──────┴────┴────────────────────────────────────────┘
VDDPROC
┌────────────────┬──────┬──────┬────┬────────────────────────────────────────┐ │Field Name │Offset│Length│Type│Description │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │vddproc_pfnvdd │+0 │4 │D │Entry point for VDD/VDD comm. │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │vddproc_pfnos2 │+4 │4 │D │Entry point for OS2/VDD comm. │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │pvddproc │+4 │4 │D │Entry points registered with same name │ └────────────────┴──────┴──────┴────┴────────────────────────────────────────┘
HDLVDD
┌────────────────┬──────┬──────┬────┬────────────────────────────────────────┐ │Field Name │Offset│Length│Type│Description │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │hdlvdd_pvddproc │+0 │4 │D │VDD routine to be called (pointer to │ │ │ │ │ │VDDPROC) │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │hdlvdd │+4 │4 │D │Pointer to next VDD handle;NULL if no │ │ │ │ │ │more │ └────────────────┴──────┴──────┴────┴────────────────────────────────────────┘
PDDEP
┌────────────────┬──────┬──────┬────┬────────────────────────────────────────┐ │Field Name │Offset│Length│Type│Description │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │pddep_szPDD │+0 │9 │A │PDD name │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │pddep_fpfn │+9 │4 │D │Entry point routine │ ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │pddep_ppddep │+d │4 │D │Next entry point (PDDEP) │ └────────────────┴──────┴──────┴────┴────────────────────────────────────────┘