Most smartcards have a PKCS#11 Interface. The GnuTLS Tools collection can access Smartcards through PKCS#11. There is a Windows Version of GnuTLS on the Project Homepage.
There is a short Example Section in the GnuTLS Documentation
What you also need is a PKCS#11 driver for your Smartcard, which you will probably find on the Homepage of the Manufacturer of the Card.
You can point GnuTLS to the driver using the
Some Smartcards might have an Option to import self-made keys and mark these "non exportable".
Others have pre-installed Keys, which are "non-exportable" by default. You can create certificates (or cert requests) for this Keys using the
certtool from GnuTLS.
It is open for discussion whether you want to trust key material, that comes pre-installed. But manufacturers usually advertise that the key material was created in a safe environment from specialized hardware-appliances without any external connections.