Regarding the question "This code is in C++, which I'm not too familiar with. Is there any other way I can do this using either VB.NET or C#?" - not really. The GINA code needs to be very lightweight and have minimal dependencies on other code, especially the CLR or even MFC.
The recommended approach for a GINA replacement is to write it in native code. See
http://msdn.microsoft.com/en-us/magazine/cc163803.aspx[
^] for more information.