This article is from the Programming VCOMM FAQ, by email@example.com (Taed Nelson) with numerous contributions by others.
The GetError member function should be renamed to GetWin32Error. Although
just what a "Win32 Error" is remains a mystery.
[Fixed in version 2.02.] The parameters of VCOMM_Map_Ring3DCB_To_Ring0 are
just wrong. Right now, it has VCOMM_Map_Ring3DCB_To_Ring0 (unsigned long *,
_dcb **). It really should be VCOMM_Map_Ring3DCB_To_Ring0 (win32_dcb *, _dcb
*). Thus, you need a structure in your copy of vcomm.h for a win32_dcb. This
can be copied from \DDK\Include\Vcommw32.inc.
[Fixed in version 2.02.] The type of the referenceData in the parameters for
EnableNotification, SetReadCallback, and SetWriteCallback should be all the
same. Right now, it has the first as a PVOID, and the latter two as DWORD.
The PCOMMNOTIFYPROC callbacks in Vthunks.h use PVOID, but DWORD seems to make
more sense. Regardless, it should be consistent.
[Fixed in version 2.02.] In \vtd95\include\vcomm.h, the structure _COMM_CONFIG
is incorrect. It contains a _win32_dcb, NOT a _DCB (which is for ring 0)
the two sub-structures are different! The sizeof (_COMM_CONFIG) should be
0x34, not 0x45 as it is now.
[Fixed in version 2.02.] The VcommPort class does not initialize the data
member m_dcb. It should probably at least initialize the length, and maybe
zero out the rest. Or document that it is not initialized.
The VcommPort class should have a data member called m_commProp (of type
_COMMPROP). Every port driver must have this structure (due to the function
GetProperties). It should also be initialized in the same way as m_dcb above.