SCF_Session_close(3SMARTCASmartcard Library FunctSCF_Session_close(3SMARTCARD)NAME
SCF_Session_close, SCF_Terminal_close, SCF_Card_close - close a smart‐
card session, terminal, or card
SYNOPSIS
cc [ flag... ] file... -lsmartcard [ library...]
#include <smartcard/scf.h>
SCF_Status_t SCF_Session_close(SCF_Session_t session);
SCF_Status_t SCF_Terminal_close(SCF_Terminal_t terminal);
SCF_Status_t SCF_Card_close(SCF_Card_t card);
PARAMETERS
card An object that was returned from SCF_Terminal_get‐
Card(3SMARTCARD)
session An object that was returned from SCF_Session_getSes‐
sion(3SMARTCARD)
terminal An object that was returned from SCF_Session_getTermi‐
nal(3SMARTCARD)DESCRIPTION
These functions release the resources (memory, threads, and others)
that were allocated within the library when the session, terminal, or
card was opened. Any storage allocated by calls to SCF_Session_get‐
Info(3SMARTCARD), SCF_Terminal_getInfo(3SMARTCARD), or SCF_Card_get‐
Info(3SMARTCARD) is deallocated when the associated object is closed.
Attempts to access results from these interfaces after the object has
been closed results in undefined behavior.
If a card that was locked by SCF_Card_lock(3SMARTCARD) is closed, the
lock is automatically released. When a terminal is closed, any event
listeners on that terminal object are removed and any cards that were
obtained with the terminal are closed. Similarly, closing a session
will close any terminals or cards obtained with that session. These are
the only cases where the library will automatically perform a close.
Once closed, a session, terminal, or card object can no longer be used
by an SCF function. Any attempt to do so results in an SCF_STATUS_BAD‐
HANDLE error. The sole exception is that closing an object, even if
already closed, is always a successful operation.
RETURN VALUES
Closing a handle is always a successful operation that returns SCF_STA‐
TUS_SUCCESS. The library can safely detect handles that are invalid or
already closed.
EXAMPLES
Example 1: Close each object explicitly.
SCF_Status_t status;
SCF_Session_t mySession;
SCF_Terminal_t myTerminal;
SCF_Card_t myCard;
status = SCF_Session_getSession(&mySession);
if (status != SCF_STATUS_SUCCESS) exit(1);
status = SCF_Session_getTerminal(mySession, NULL, &myTerminal);
if (status != SCF_STATUS_SUCCESS) exit(1);
status = SCF_Terminal_getCard(myTerminal, &myCard);
if (status != SCF_STATUS_SUCCESS) exit(1);
/* (Do interesting things with smartcard...) */
SCF_Card_close(myCard);
SCF_Terminal_close(myTerminal);
SCF_Session_close(mySession);
Example 2: Allow the library to close objects.
SCF_Status_t status;
SCF_Session_t mySession;
SCF_Terminal_t myTerminal;
SCF_Card_t myCard;
status = SCF_Session_getSession(&mySession);
if (status != SCF_STATUS_SUCCESS) exit(1);
status = SCF_Session_getTerminal(mySession, NULL, &myTerminal);
if (status != SCF_STATUS_SUCCESS) exit(1);
status = SCF_Terminal_getCard(myTerminal, &myCard);
if (status != SCF_STATUS_SUCCESS) exit(1);
/* (Do interesting things with smartcard...) */
SCF_Session_close(mySession);
/* myTerminal and myCard have been closed by the library. */
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
┌─────────────────────────────┬─────────────────────────────┐
│ ATTRIBUTE TYPE │ ATTRIBUTE VALUE │
├─────────────────────────────┼─────────────────────────────┤
│Interface Stability │Evolving │
├─────────────────────────────┼─────────────────────────────┤
│MT-Level │MT-Safe │
└─────────────────────────────┴─────────────────────────────┘
SEE ALSOlibsmartcard(3LIB), SCF_Card_getInfo(3SMARTCARD), SCF_Card_lock(3SMART‐
CARD), SCF_Session_getInfo(3SMARTCARD), SCF_Session_getSession(3SMART‐
CARD), SCF_Session_getTerminal(3SMARTCARD), SCF_Terminal_get‐
Card(3SMARTCARD), SCF_Terminal_getInfo(3SMARTCARD), attributes(5)SunOS 5.10 14 May 2002 SCF_Session_close(3SMARTCARD)