I currently have a COM component (and source) that talks to a printer and also a hardware port through a Vendor supplied DLL that makes fairly low level calls, and was wondering if there is a reference for displaying how to create a Managed Assembly in C++ that can performed the unmanaged calls, but present a nice .Net interface for the other developers. It does lots of GetProcAddress and I would prefer not to interop to my existing COM Component, because I am trying to get a clean project. I could possibly do it in C#, but wondering if it would be better in managed C++? PORTOUT PortOut; PORTWORDOUT PortWordOut; PORTDWORDOUT PortDWordOut; PORTIN PortIn; PORTWORDIN PortWordIn; PORTDWORDIN PortDWordIn; SETPORTBIT SetPortBit; CLRPORTBIT ClrPortBit; NOTPORTBIT NotPortBit; GETPORTBIT GetPortBit; RIGHTPORTSHIFT RightPortShift; LEFTPORTSHIFT LeftPortShift; ISDRIVERINSTALLED IsDriverInstalled; ... and then makes calls like this ... LoadIODLL(); PortOut(0x2E,(unsigned char) 0x87); PortOut(0x2E,(unsigned char) 0x87); PortOut(0x2E,(unsigned char) 0x07); PortOut(0x2F,(unsigned char) 0x07); PortOut(0x2E,(unsigned char) 0xf1); ... hio = LoadLibrary("cashdrawerio.dll"); if (hio == NULL) { return; } else { PortOut = (PORTOUT)GetProcAddress(hio, "PortOut"); PortWordOut = (PORTWORDOUT)GetProcAddress(hio, "PortWordOut"); PortDWordOut = (PORTDWORDOUT)GetProcAddress(hio, "PortDWordOut"); PortIn = (PORTIN)GetProcAddress(hio, "PortIn"); PortWordIn = (PORTWORDIN)GetProcAddress(hio, "PortWordIn"); PortDWordIn = (PORTDWORDIN)GetProcAddress(hio, "PortDWordIn"); SetPortBit = (SETPORTBIT)GetProcAddress(hio, "SetPortBit"); ClrPortBit = (CLRPORTBIT)GetProcAddress(hio, "ClrPortBit"); NotPortBit = (NOTPORTBIT)GetProcAddress(hio, "NotPortBit"); GetPortBit = (GETPORTBIT)GetProcAddress(hio, "GetPortBit"); RightPortShift = (RIGHTPORTSHIFT)GetProcAddress(hio, "RightPortShift"); LeftPortShift = (LEFTPORTSHIFT)GetProcAddress(hio, "LeftPortShift"); IsDriverInstalled = (ISDRIVERINSTALLED)GetProcAddress(hio, "IsDriverInstalled"); }