Content-type: text/html Man page of SCF_Session_close

SCF_Session_close

Section: Smartcard Library Functions (3SMARTCARD)
Updated: 14 May 2002
Index Return to Main Contents
 

NAME

SCF_Session_close, SCF_Terminal_close, SCF_Card_close - close a smartcard 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_getCard(3SMARTCARD)

session An object that was returned from SCF_Session_getSession(3SMARTCARD)

terminal An object that was returned from SCF_Session_getTerminal(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_getInfo(3SMARTCARD), SCF_Terminal_getInfo(3SMARTCARD), or SCF_Card_getInfo(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_BADHANDLE 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_STATUS_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 TYPEATTRIBUTE VALUE
Interface StabilityEvolving
MT-LevelMT-Safe

 

SEE ALSO

libsmartcard(3LIB), SCF_Card_getInfo(3SMARTCARD), SCF_Card_lock(3SMARTCARD), SCF_Session_getInfo(3SMARTCARD), SCF_Session_getSession(3SMARTCARD), SCF_Session_getTerminal(3SMARTCARD), SCF_Terminal_getCard(3SMARTCARD), SCF_Terminal_getInfo(3SMARTCARD), attributes(5)


 

Index

NAME
SYNOPSIS
PARAMETERS
DESCRIPTION
RETURN VALUES
EXAMPLES
ATTRIBUTES
SEE ALSO

This document was created by man2html, using the manual pages.
Time: 02:38:33 GMT, October 02, 2010