An application is required to perform a successful
FingerInitialize call before it can call any of the other
the library functions. When it has completed the use of library,
the application must call FingerUninitialize to allow the
library to free any resources allocated on behalf of the process.
Any pending blocking or asynchronous calls in this process are
canceled without posting any notification messages, and all sockets
that were opened by the process are closed.
There must be a call to FingerUninitialize for every
successful call to FingerInitialize made by a process. In a
multithreaded environment, operations for all threads in the client
are terminated.