Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (C) Microsoft Corporation, 1996 - 1999
Module Name:
SEnv
Abstract:
This file contains the definition of the Smartcard Common dialog CSCardEnv class. This class encapsulates Smartcard Environment information.
Author:
Chris Dudley 3/3/1997
Environment:
Win32, C++ w/Exceptions, MFC
Revision History:
Amanda Matlosz 1/29/98 Changed class structure; added Unicode support
Notes:
--*/
#ifndef __SENV_H__
#define __SENV_H__
/////////////////////////////////////////////////////////////////////////////
//
// Includes
//
#include "cmnui.h"
#include "rdrstate.h"
/////////////////////////////////////////////////////////////////////////////
//
// CSCardEnv Class - encapsulates current smartcard environment regarding
// groups of readers and associated cards/status
//
class CSCardEnv {
// Construction/Destruction
public: CSCardEnv() { m_pOCNA = NULL; m_pOCNW = NULL; m_dwReaderIndex = 0; m_hContext = NULL; } ~CSCardEnv() { // Release any attached readers
RemoveReaders(); }
// Implementation
public: // Initialization / completion routines
LONG SetOCN(LPOPENCARDNAMEA pOCNA); LONG SetOCN(LPOPENCARDNAMEW pOCNW); LONG UpdateOCN();
void SetContext( SCARDCONTEXT hContext );
// Attributes / properties
SCARDCONTEXT GetContext() { return m_hContext; } void GetCardList(LPCTSTR* pszCardList); void GetDialogTitle(CTextString *pstzTitle); HWND GetParentHwnd() { return (m_hwndOwner); } BOOL IsOCNValid() { return (NULL != m_pOCNA || NULL != m_pOCNW); } BOOL IsCallbackValid( void ); BOOL IsContextValid() { return (m_hContext != NULL); } BOOL IsArrayValid() { return (m_rgReaders.GetSize() > 0); } int NumberOfReaders() { return (int)m_rgReaders.GetSize(); } BOOL CardMeetsSearchCriteria(DWORD dwSelectedReader);
// Reader array management
LONG CreateReaderStateArray( LPSCARD_READERSTATE_A* prgReaderStateArray ); // TODO: ?? A/W ??
void DeleteReaderStateArray( LPSCARD_READERSTATE_A* prgReaderStateArray ); // TODO: ?? A/W ??
LONG FirstReader( LPSCARD_READERINFO pReaderInfo ); LONG NextReader( LPSCARD_READERINFO pReaderInfo ); void RemoveReaders( void ); LONG UpdateReaders( void );
// Methods
LONG NoUISearch( BOOL* pfEnableUI ); // try this search first...
LONG Search( int* pcMatches, DWORD* pdwIndex ); LONG ConnectToReader(DWORD dwSelectedReader); LONG ConnectInternal( DWORD dwSelectedReader, SCARDHANDLE *pHandle, DWORD dwShareMode, DWORD dwProtocols, DWORD* pdwActiveProtocols, CTextString* pszReaderName = NULL, CTextString* pszCardName = NULL); LONG ConnectUser( DWORD dwSelectedReader, SCARDHANDLE *pHandle, CTextString* pszReaderName = NULL, CTextString* pszCardName = NULL);
private: LONG BuildReaderArray( LPSTR szReaderNames ); // TODO: ?? A/W ??
void InitializeAllPossibleCardNames( void );
// Members
private:
// Reader information
CTypedPtrArray<CPtrArray, CSCardReaderState*> m_rgReaders; DWORD m_dwReaderIndex;
// external representation of OpenCardName structs are not touched unless
// SCardEnv->UpdateOCN explicitly called.
LPOPENCARDNAMEA m_pOCNA; LPOPENCARDNAMEW m_pOCNW;
// internal representation of OpenCardName struct combines ansi/
// unicode information from whichever kind of OCN user provided
CTextMultistring m_strGroupNames; CTextMultistring m_strCardNames; CTextMultistring m_strAllPossibleCardNames; CTextString m_strReader; CTextString m_strCard; CTextString m_strTitle;
// only LPOCNCONNPROC needs to differentiate between A/W
LPOCNCONNPROCA m_lpfnConnectA; LPOCNCONNPROCW m_lpfnConnectW; LPOCNCHKPROC m_lpfnCheck; LPOCNDSCPROC m_lpfnDisconnect; LPVOID m_lpUserData;
SCARDCONTEXT m_hContext; HWND m_hwndOwner; LPCGUID m_rgguidInterfaces; DWORD m_cguidInterfaces; DWORD m_dwFlags; LPVOID m_pvUserData; DWORD m_dwShareMode; DWORD m_dwPreferredProtocols; DWORD m_dwActiveProtocol; SCARDHANDLE m_hCardHandle;
};
///////////////////////////////////////////////////////////////////////////////////////
#endif //__SENV_H__
|