<?xml version="1.0"?>
<doc>
    <assembly>
        <name>pcsc-sharp</name>
    </assembly>
    <members>
        <member name="T:PCSC.CardInitializedEvent">
            <summary>The reader has been Initialized.</summary>
            <param name="sender">The <see cref="T:PCSC.SCardMonitor"/> sender object.</param>
            <param name="e">Reader status information.</param>
            <remarks>
                <example>
                    <code lang="C#">
            // Create a monitor object with its own PC/SC context.
            SCardMonitor monitor = new SCardMonitor(
            	new SCardContext(),
            	SCardScope.System);
            
            // Point the callback function(s) to the pre-defined method MyCardInitializedMethod.
            monitor.Initialized += new CardInitializedEvent(MyCardInitializedMethod);
            
            // Start to monitor the reader
            monitor.Start("OMNIKEY CardMan 5x21 00 01");
            </code>
                </example>
            </remarks>
        </member>
        <member name="T:PCSC.CardInsertedEvent">
            <summary>A new card has been inserted.</summary>
            <param name="sender">The <see cref="T:PCSC.SCardMonitor"/> sender object</param>
            <param name="e">Reader status information.</param>
            <remarks>
                <example>
                    <code lang="C#">
            // Create a monitor object with its own PC/SC context.
            SCardMonitor monitor = new SCardMonitor(
                new SCardContext(),
                SCardScope.System);
            
            // Point the callback function(s) to the pre-defined method MyCardInsertedMethod.
            monitor.CardInserted += new CardInsertedEvent(MyCardInsertedMethod);
            
            // Start to monitor the reader
            monitor.Start("OMNIKEY CardMan 5x21 00 01");
              </code>
                </example>
            </remarks>
        </member>
        <member name="T:PCSC.CardRemovedEvent">
            <summary>A card has been removed.</summary>
            <param name="sender">The <see cref="T:PCSC.SCardMonitor"/> sender object.</param>
            <param name="e">Reader status information.</param>
            <remarks>
                <example>
                    <code lang="C#">
            // Create a monitor object with its own PC/SC context.
            SCardMonitor monitor = new SCardMonitor(
            	new SCardContext(),
            	SCardScope.System);
            
            // Point the callback function(s) to the pre-defined method MyCardRemovedMethod.
            monitor.CardRemoved += new CardRemovedEvent(MyCardRemovedMethod);
            
            // Start to monitor the reader
            monitor.Start("OMNIKEY CardMan 5x21 00 01");
              </code>
                </example>
            </remarks>
        </member>
        <member name="T:PCSC.MonitorExceptionEvent">
            <summary>An PC/SC error occurred during monitoring.</summary>
            <param name="sender">The <see cref="T:PCSC.SCardMonitor" /> sender object.</param>
            <param name="exception">An exception containting the PC/SC error code returned from the native library.</param>
        </member>
        <member name="T:PCSC.StatusChangeEvent">
            <summary>A general reader status change.</summary>
            <param name="sender">The <see cref="T:PCSC.ISCardMonitor" /> sender object.</param>
            <param name="e">Reader status information.</param>
            <remarks>
                <example>
                    <code lang="C#">
            // Create a monitor object with its own PC/SC context.
            var monitor = new SCardMonitor(
            	new SCardContext(),
            	SCardScope.System,
                true);
            
            // Point the callback function(s) to the pre-defined method MyStatusChangedMethod.
            monitor.StatusChanged += new StatusChangeEvent(MyStatusChangedMethod);
            
            // Start to monitor the reader
            monitor.Start("OMNIKEY CardMan 5x21 00 01");
              </code>
                </example>
            </remarks>
        </member>
        <member name="T:PCSC.SCardAttribute">
             <summary>Smart card reader attribute enumeration.</summary>
            <remarks>Can be used as parameter for the following methods:
            <list type="bullet">
            <item><term><see cref="M:PCSC.SCardReader.GetAttrib(PCSC.SCardAttribute,System.Byte[]@)" /></term></item>
            <item><term><see cref="M:PCSC.SCardReader.GetAttrib(PCSC.SCardAttribute,System.Byte[],System.Int32@)" /></term></item>
            <item><term><see cref="M:PCSC.SCardReader.SetAttrib(PCSC.SCardAttribute,System.Byte[])" /></term></item>
            <item><term><see cref="M:PCSC.SCardReader.SetAttrib(PCSC.SCardAttribute,System.Byte[],System.Int32)" /></term></item>
            </list></remarks>
        </member>
        <member name="F:PCSC.SCardAttribute.VendorName">
            <summary>
            Vendor name. (SCARD_ATTR_VENDOR_NAME)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.VendorInterfaceDeviceType">
            <summary>
            Vendor-supplied interface device type (model designation of reader). (SCARD_ATTR_VENDOR_IFD_TYPE)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.VendorInterfaceDeviceTypeVersion">
            <summary>
            Vendor-supplied interface device version (DWORD in the form 0xMMmmbbbb where MM = major version, mm = minor version, and bbbb = build number).  (SCARD_ATTR_VENDOR_IFD_VERSION)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.VendorInterfaceDeviceTypeSerialNumber">
            <summary>
            Vendor-supplied interface device serial number. (SCARD_ATTR_VENDOR_IFD_SERIAL_NO)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.ChannelId">
            <summary>
            DWORD encoded as 0xDDDDCCCC, where DDDD = data channel type and CCCC = channel number (SCARD_ATTR_CHANNEL_ID)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.AsyncProtocolTypes">
            <summary>
            Asynchronous protocol types (SCARD_ATTR_ASYNC_PROTOCOL_TYPES)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.DefaultClockRate">
            <summary>
            Default clock rate, in kHz. (SCARD_ATTR_DEFAULT_CLK)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.MaxClockRate">
            <summary>
            Maximum clock rate, in kHz. (SCARD_ATTR_MAX_CLK)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.DefaultDataRate">
            <summary>
            Default data rate, in bps. (SCARD_ATTR_DEFAULT_DATA_RATE)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.MaxDataRate">
            <summary>
            Maximum data rate, in bps. (SCARD_ATTR_MAX_DATA_RATE)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.MaxInformationFileSizeDevice">
            <summary>
            Maximum bytes for information file size device. (SCARD_ATTR_MAX_IFSD)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.SyncProtocolTypes">
            <summary>
            Synchronous protocol types (SCARD_ATTR_SYNC_PROTOCOL_TYPES)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.PowerManagementSupport">
            <summary>
            Zero if device does not support power down while smart card is inserted. Nonzero otherwise. (SCARD_ATTR_POWER_MGMT_SUPPORT)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.UserToCardAuthDevice">
            <summary>
            User to card authentication device (SCARD_ATTR_USER_TO_CARD_AUTH_DEVICE)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.UserAuthInputDevice">
            <summary>
            User authentication input device (SCARD_ATTR_USER_AUTH_INPUT_DEVICE)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.Characteristics">
            <summary>
            DWORD indicating which mechanical characteristics are supported. If zero, no special characteristics are supported. Note that multiple bits can be set (SCARD_ATTR_CHARACTERISTICS)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.CurrentProtocolType">
            <summary>
            Current protocol type (SCARD_ATTR_CURRENT_PROTOCOL_TYPE)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.CurrentClockRate">
            <summary>
            Current clock rate, in kHz. (SCARD_ATTR_CURRENT_CLK)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.CurrentClockConversionFactor">
            <summary>
            Clock conversion factor. (SCARD_ATTR_CURRENT_F)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.CurrentBitRateConversionFactor">
            <summary>
            Bit rate conversion factor. (SCARD_ATTR_CURRENT_D)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.CurrentGuardTime">
            <summary>
            Current guard time. (SCARD_ATTR_CURRENT_N)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.CurrentWaitingTime">
            <summary>
            Current work waiting time. (SCARD_ATTR_CURRENT_W)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.CurrentInformationFieldSizeCard">
            <summary>
            Current byte size for information field size card. (SCARD_ATTR_CURRENT_IFSC)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.CurrentInformationFieldSizeDevice">
            <summary>
            Current byte size for information field size device. (SCARD_ATTR_CURRENT_IFSD)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.CurrentBlockWaitingTime">
            <summary>
            Current block waiting time. (SCARD_ATTR_CURRENT_BWT)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.CurrentCharacterWaitingTime">
            <summary>
            Current character waiting time. (SCARD_ATTR_CURRENT_CWT)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.CurrentErrorBlockControlEncoding">
            <summary>
            Current error block control encoding. (SCARD_ATTR_CURRENT_EBC_ENCODING)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.ExtendedBlockWaitTime">
            <summary>
            Extended block wait time. (SCARD_ATTR_EXTENDED_BWT)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.ICCPresence">
            <summary>
            Single byte indicating smart card presence(SCARD_ATTR_ICC_PRESENCE)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.ICCInterfaceStatus">
            <summary>
            Single byte. Zero if smart card electrical contact is not active; nonzero if contact is active. (SCARD_ATTR_ICC_INTERFACE_STATUS)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.CurrentIOState">
            <summary>
            Current IO state (SCARD_ATTR_CURRENT_IO_STATE)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.AtrString">
            <summary>
            Answer to reset (ATR) string. (SCARD_ATTR_ATR_STRING)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.AnswerToResetString">
            <summary>
            Answer to reset (ATR) string. (SCARD_ATTR_ATR_STRING)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.ICCTypePerAtr">
            <summary>
            Single byte indicating smart card type (SCARD_ATTR_ICC_TYPE_PER_ATR)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.EscReset">
            <summary>
            Esc reset (SCARD_ATTR_ESC_RESET)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.EscCancel">
            <summary>
            Esc cancel (SCARD_ATTR_ESC_CANCEL)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.EscAuthRequest">
            <summary>
            Esc authentication request (SCARD_ATTR_ESC_AUTHREQUEST)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.MaxInput">
            <summary>
            Maximum input (SCARD_ATTR_MAXINPUT)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.DeviceUnit">
            <summary>
            Instance of this vendor's reader attached to the computer. The first instance will be device unit 0, the next will be unit 1 (if it is the same brand of reader) and so on. Two different brands of readers will both have zero for this value. (SCARD_ATTR_DEVICE_UNIT)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.DeviceInUse">
            <summary>
            Reserved for future use. (SCARD_ATTR_DEVICE_IN_USE)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.DeviceFriendlyNameA">
            <summary>
            Device friendly name ASCII (SCARD_ATTR_DEVICE_FRIENDLY_NAME_A)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.DeviceSystemNameA">
            <summary>
            Device system name ASCII (SCARD_ATTR_DEVICE_SYSTEM_NAME_A)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.DeviceFriendlyNameW">
            <summary>
            Device friendly name UNICODE (SCARD_ATTR_DEVICE_FRIENDLY_NAME_W)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.DeviceSystemNameW">
            <summary>
            Device system name UNICODE (SCARD_ATTR_DEVICE_SYSTEM_NAME_W)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.SupressT1InformationFileSizeRequest">
            <summary>
            Supress T1 information file size request (SCARD_ATTR_SUPRESS_T1_IFS_REQUEST)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.DeviceFriendlyName">
            <summary>
            Device friendly name (SCARD_ATTR_DEVICE_FRIENDLY_NAME)
            </summary>
        </member>
        <member name="F:PCSC.SCardAttribute.DeviceSystemName">
            <summary>
            Device system name (SCARD_ATTR_DEVICE_SYSTEM_NAME)
            </summary>
        </member>
        <member name="T:PCSC.SCardClass">
            <summary>
            Smart card class
            </summary>
        </member>
        <member name="F:PCSC.SCardClass.VendorInfo">
            <summary>Vendor information definitions</summary>
        </member>
        <member name="F:PCSC.SCardClass.Communication">
            <summary>Communication definitions</summary>
        </member>
        <member name="F:PCSC.SCardClass.Protocol">
            <summary>Protocol definitions</summary>
        </member>
        <member name="F:PCSC.SCardClass.PowerManagement">
            <summary>Power Management definitions</summary>
        </member>
        <member name="F:PCSC.SCardClass.Security">
            <summary>Security Assurance definitions</summary>
        </member>
        <member name="F:PCSC.SCardClass.Mechanical">
            <summary>Mechanical characteristic definitions</summary>
        </member>
        <member name="F:PCSC.SCardClass.VendorDefined">
            <summary>Vendor specific definitions</summary>
        </member>
        <member name="F:PCSC.SCardClass.InterfaceDeviceProtocol">
            <summary>Interface Device Protocol options</summary>
        </member>
        <member name="F:PCSC.SCardClass.ICCState">
            <summary>ICC State specific definitions</summary>
        </member>
        <member name="F:PCSC.SCardClass.System">
            <summary>System-specific definitions</summary>
        </member>
        <member name="T:PCSC.SCardError">
            <summary>Error and return codes.</summary>
        </member>
        <member name="F:PCSC.SCardError.Success">
            <summary>No error. (SCARD_S_SUCCESS)</summary>
        </member>
        <member name="F:PCSC.SCardError.InternalError">
            <summary>An internal consistency check failed. (SCARD_F_INTERNAL_ERROR)</summary>
        </member>
        <member name="F:PCSC.SCardError.Cancelled">
            <summary>The action was cancelled by an <see cref="M:PCSC.ISCardContext.Cancel"/> request. (SCARD_E_CANCELLED)</summary>
        </member>
        <member name="F:PCSC.SCardError.InvalidHandle">
            <summary>The supplied handle was invalid. (SCARD_E_INVALID_HANDLE)</summary>
        </member>
        <member name="F:PCSC.SCardError.InvalidParameter">
            <summary>One or more of the supplied parameters could not be properly interpreted. (SCARD_E_INVALID_PARAMETER)</summary>
        </member>
        <member name="F:PCSC.SCardError.InvalidTarget">
            <summary>Registry startup information is missing or invalid. (SCARD_E_INVALID_TARGET)</summary>
        </member>
        <member name="F:PCSC.SCardError.NoMemory">
            <summary>Not enough memory available to complete this command. (SCARD_E_NO_MEMORY)</summary>
        </member>
        <member name="F:PCSC.SCardError.WaitedTooLong">
            <summary>An internal consistency timer has expired. (SCARD_F_WAITED_TOO_LONG)</summary>
        </member>
        <member name="F:PCSC.SCardError.InsufficientBuffer">
            <summary>The data buffer to receive returned data is too small for the returned data. (SCARD_E_INSUFFICIENT_BUFFER)</summary>
        </member>
        <member name="F:PCSC.SCardError.UnknownReader">
            <summary>The specified reader name is not recognized. (SCARD_E_UNKNOWN_READER)</summary>
        </member>
        <member name="F:PCSC.SCardError.Timeout">
            <summary>The user-specified timeout value has expired. (SCARD_E_TIMEOUT)</summary>
        </member>
        <member name="F:PCSC.SCardError.SharingViolation">
            <summary>The smart card cannot be accessed because of other connections outstanding. (SCARD_E_SHARING_VIOLATION)</summary>
        </member>
        <member name="F:PCSC.SCardError.NoSmartcard">
            <summary>The operation requires a Smart Card, but no Smart Card is currently in the device. (SCARD_E_NO_SMARTCARD)</summary>
        </member>
        <member name="F:PCSC.SCardError.UnknownCard">
            <summary>The specified smart card name is not recognized. (SCARD_E_UNKNOWN_CARD)</summary>
        </member>
        <member name="F:PCSC.SCardError.CannotDispose">
            <summary>The system could not dispose of the media in the requested manner. (SCARD_E_CANT_DISPOSE)</summary>
        </member>
        <member name="F:PCSC.SCardError.ProtocolMismatch">
            <summary>The requested protocols are incompatible with the protocol currently in use with the smart card. (SCARD_E_PROTO_MISMATCH)</summary>
        </member>
        <member name="F:PCSC.SCardError.NotReady">
            <summary>The reader or smart card is not ready to accept commands. (SCARD_E_NOT_READY)</summary>
        </member>
        <member name="F:PCSC.SCardError.InvalidValue">
            <summary>One or more of the supplied parameters values could not be properly interpreted. (SCARD_E_INVALID_VALUE)</summary>
        </member>
        <member name="F:PCSC.SCardError.SystemCancelled">
            <summary>The action was cancelled by the system, presumably to log off or shut down. (SCARD_E_SYSTEM_CANCELLED)</summary>
        </member>
        <member name="F:PCSC.SCardError.CommunicationError">
            <summary>An internal communications error has been detected. (SCARD_F_COMM_ERROR)</summary>
        </member>
        <member name="F:PCSC.SCardError.UnknownError">
            <summary>An internal error has been detected, but the source is unknown. (SCARD_F_UNKNOWN_ERROR)</summary>
        </member>
        <member name="F:PCSC.SCardError.InvalidAtr">
            <summary>An ATR obtained from the registry is not a valid ATR string. (SCARD_E_INVALID_ATR)</summary>
        </member>
        <member name="F:PCSC.SCardError.NotTransacted">
            <summary>An attempt was made to end a non-existent transaction. (SCARD_E_NOT_TRANSACTED)</summary>
        </member>
        <member name="F:PCSC.SCardError.ReaderUnavailable">
            <summary>The specified reader is not currently available for use. (SCARD_E_READER_UNAVAILABLE)</summary>
        </member>
        <member name="F:PCSC.SCardError.Shutdown">
            <summary>The operation has been aborted to allow the server application to exit. (SCARD_P_SHUTDOWN)</summary>
        </member>
        <member name="F:PCSC.SCardError.UnsupportedCard">
            <summary>The reader cannot communicate with the card, due to ATR string configuration conflicts. (SCARD_W_UNSUPPORTED_CARD)</summary>
        </member>
        <member name="F:PCSC.SCardError.UnresponsiveCard">
            <summary>The smart card is not responding to a reset. (SCARD_W_UNRESPONSIVE_CARD)</summary>
        </member>
        <member name="F:PCSC.SCardError.UnpoweredCard">
            <summary>Power has been removed from the smart card, so that further communication is not possible. (SCARD_W_UNPOWERED_CARD)</summary>
        </member>
        <member name="F:PCSC.SCardError.ResetCard">
            <summary>The smart card has been reset, so any shared state information is invalid. (SCARD_W_RESET_CARD)</summary>
        </member>
        <member name="F:PCSC.SCardError.RemovedCard">
            <summary>The smart card has been removed, so further communication is not possible. (SCARD_W_REMOVED_CARD)</summary>
        </member>
        <member name="F:PCSC.SCardError.PciTooSmall">
            <summary>The PCI Receive buffer was too small. (SCARD_E_PCI_TOO_SMALL)</summary>
        </member>
        <member name="F:PCSC.SCardError.ReaderUnsupported">
            <summary>The reader driver does not meet minimal requirements for support. (SCARD_E_READER_UNSUPPORTED)</summary>
        </member>
        <member name="F:PCSC.SCardError.DuplicateReader">
            <summary>The reader driver did not produce a unique reader name. (SCARD_E_DUPLICATE_READER)</summary>
        </member>
        <member name="F:PCSC.SCardError.CardUnsupported">
            <summary>The smart card does not meet minimal requirements for support. (SCARD_E_CARD_UNSUPPORTED)</summary>
        </member>
        <member name="F:PCSC.SCardError.NoService">
            <summary>The Smart card resource manager is not running. (SCARD_E_NO_SERVICE)</summary>
        </member>
        <member name="F:PCSC.SCardError.ServiceStopped">
            <summary>The Smart card resource manager has shut down. (SCARD_E_SERVICE_STOPPED)</summary>
        </member>
        <member name="F:PCSC.SCardError.Unexpected">
            <summary>An unexpected card error has occurred. (SCARD_E_UNEXPECTED)</summary>
        </member>
        <member name="F:PCSC.SCardError.NoReadersAvailable">
            <summary>Cannot find a smart card reader. (SCARD_E_NO_READERS_AVAILABLE)</summary>
        </member>
        <member name="F:PCSC.SCardError.InsertedCard">
            PC/SC Lite specific extensions 
            <summary>The smart card has been inserted. (Obsolete)</summary>
        </member>
        <member name="F:PCSC.SCardError.UnsupportedFeature">
            <summary>Feature not supported. (SCARD_E_UNSUPPORTED_FEATURE)</summary>
        </member>
        <member name="F:PCSC.SCardError.ICCInstallation">
            <summary>No primary provider can be found for the smart card. (SCARD_E_ICC_INSTALLATION)</summary>
        </member>
        <member name="F:PCSC.SCardError.ICCCreateOrder">
            <summary>The requested order of object creation is not supported. (SCARD_E_ICC_CREATEORDER)</summary>
        </member>
        <member name="F:PCSC.SCardError.DirectoryNotFound">
            <summary>The identified directory does not exist in the smart card. (SCARD_E_DIR_NOT_FOUND)</summary>
        </member>
        <member name="F:PCSC.SCardError.FileNotFound">
            <summary>The identified file does not exist in the smart card. (SCARD_E_FILE_NOT_FOUND)</summary>
        </member>
        <member name="F:PCSC.SCardError.NoDir">
            <summary>The supplied path does not represent a smart card directory. (SCARD_E_NO_DIR)</summary>
        </member>
        <member name="F:PCSC.SCardError.NoFile">
            <summary>The supplied path does not represent a smart card file. (SCARD_E_NO_FILE)</summary>
        </member>
        <member name="F:PCSC.SCardError.NoAccess">
            <summary>Access is denied to this file. (SCARD_E_NO_ACCESS)</summary>
        </member>
        <member name="F:PCSC.SCardError.WriteTooMany">
            <summary>The smart card does not have enough memory to store the information. (SCARD_E_WRITE_TOO_MANY)</summary>
        </member>
        <member name="F:PCSC.SCardError.BadSeek">
            <summary>There was an error trying to set the smart card file object pointer. (SCARD_E_BAD_SEEK)</summary>
        </member>
        <member name="F:PCSC.SCardError.InvalidCHV">
            <summary>The supplied PIN is incorrect. (SCARD_E_INVALID_CHV)</summary>
        </member>
        <member name="F:PCSC.SCardError.UnknownResMng">
            <summary>An unrecognized error code was returned from a layered component. (SCARD_E_UNKNOWN_RES_MNG)</summary>
        </member>
        <member name="F:PCSC.SCardError.NoSuchCertificate">
            <summary>The requested certificate does not exist. (SCARD_E_NO_SUCH_CERTIFICATE)</summary>
        </member>
        <member name="F:PCSC.SCardError.CertificateUnavailable">
            <summary>The requested certificate could not be obtained. (SCARD_E_CERTIFICATE_UNAVAILABLE)</summary>
        </member>
        <member name="F:PCSC.SCardError.CommunicationDataLost">
            <summary>A communications error with the smart card has been detected. (SCARD_E_COMM_DATA_LOST)</summary>
        </member>
        <member name="F:PCSC.SCardError.NoKeyContainer">
            <summary>The requested key container does not exist on the smart card. (SCARD_E_NO_KEY_CONTAINER)</summary>
        </member>
        <member name="F:PCSC.SCardError.ServerTooBusy">
            <summary>The Smart Card Resource Manager is too busy to complete this operation. (SCARD_E_SERVER_TOO_BUSY)</summary>
        </member>
        <member name="F:PCSC.SCardError.SecurityViolation">
            <summary>Access was denied because of a security violation. (SCARD_W_SECURITY_VIOLATION)</summary>
        </member>
        <member name="F:PCSC.SCardError.WrongCHV">
            <summary>The card cannot be accessed because the wrong PIN was presented. (SCARD_W_WRONG_CHV)</summary>
        </member>
        <member name="F:PCSC.SCardError.CHVBlocked">
            <summary>The card cannot be accessed because the maximum number of PIN entry attempts has been reached. (SCARD_W_CHV_BLOCKED)</summary>
        </member>
        <member name="F:PCSC.SCardError.Eof">
            <summary>The end of the smart card file has been reached. (SCARD_W_EOF)</summary>
        </member>
        <member name="F:PCSC.SCardError.CancelledByUser">
            <summary>The user pressed "Cancel" on a Smart Card Selection Dialog. (SCARD_W_CANCELLED_BY_USER)</summary>
        </member>
        <member name="F:PCSC.SCardError.CardNotAuthenticated">
            <summary>No PIN was presented to the smart card. (SCARD_W_CARD_NOT_AUTHENTICATED)</summary>
        </member>
        <member name="T:PCSC.SCardProtocol">
            <summary>Communication protocol use with the Smart Card.</summary>
            <remarks>This is a bit mask of acceptable protocols for the connection. You can use (<see cref="F:PCSC.SCardProtocol.T0" /> | <see cref="F:PCSC.SCardProtocol.T1" />) if you do not have a preferred protocol. </remarks>
        </member>
        <member name="F:PCSC.SCardProtocol.Unset">
            <summary>
            Protocol not defined.
            </summary>
        </member>
        <member name="F:PCSC.SCardProtocol.T0">
            <summary>T=0 active protocol.</summary>
        </member>
        <member name="F:PCSC.SCardProtocol.T1">
            <summary>T=1 active protocol.</summary>
        </member>
        <member name="F:PCSC.SCardProtocol.Raw">
            <summary>Raw active protocol. Use with memory type cards.</summary>
        </member>
        <member name="F:PCSC.SCardProtocol.T15">
            <summary>T=15 protocol.</summary>
        </member>
        <member name="F:PCSC.SCardProtocol.Any">
            <summary>(<see cref="F:PCSC.SCardProtocol.T0" /> | <see cref="F:PCSC.SCardProtocol.T1" />). IFD (Interface device) determines protocol.</summary>
        </member>
        <member name="T:PCSC.SCardReaderDisposition">
            <summary>Action to be taken on the reader.</summary>
            <remarks>The disposition action is not currently used in PC/SC Lite.</remarks>
        </member>
        <member name="F:PCSC.SCardReaderDisposition.Leave">
            <summary>Do nothing. (SCARD_LEAVE_CARD)</summary>
        </member>
        <member name="F:PCSC.SCardReaderDisposition.Reset">
            <summary>Reset the card. (SCARD_RESET_CARD)</summary>
        </member>
        <member name="F:PCSC.SCardReaderDisposition.Unpower">
            <summary>Unpower the card. (SCARD_UNPOWER_CARD)</summary>
        </member>
        <member name="F:PCSC.SCardReaderDisposition.Eject">
            <summary>Eject the card. (SCARD_EJECT_CARD)</summary>
        </member>
        <member name="T:PCSC.SCardState">
            <summary>State of the smart card in the reader.</summary>
            <remarks>Is a bit mask that represents the current reader status.</remarks>
        </member>
        <member name="F:PCSC.SCardState.Unknown">
            <summary>Unknown status.</summary>
        </member>
        <member name="F:PCSC.SCardState.Absent">
            <summary>There is no card in the reader.</summary>
        </member>
        <member name="F:PCSC.SCardState.Present">
            <summary>There is a card in the reader, but it has not been moved into position for use.</summary>
        </member>
        <member name="F:PCSC.SCardState.Swallowed">
            <summary>There is a card in the reader in position for use. The card is not powered.</summary>
        </member>
        <member name="F:PCSC.SCardState.Powered">
            <summary>Power is being provided to the card, but the reader driver is unaware of the mode of the card.</summary>
        </member>
        <member name="F:PCSC.SCardState.Negotiable">
            <summary>The card has been reset and is awaiting PTS negotiation.</summary>
        </member>
        <member name="F:PCSC.SCardState.Specific">
            <summary>The card has been reset and specific communication protocols have been established.</summary>
        </member>
        <member name="T:PCSC.CardEventArgs">
            <summary>
            Smart card event.
            </summary>
        </member>
        <member name="M:PCSC.CardEventArgs.#ctor">
            <summary>
            Creates a new instance.
            </summary>
        </member>
        <member name="M:PCSC.CardEventArgs.#ctor(System.String,System.Byte[])">
            <summary>
            Creates a new instance.
            </summary>
            <param name="readerName">Name of the reader that has raised the event.</param>
            <param name="atr">The card's ATR (if present), otherwise <c>null</c>.</param>
        </member>
        <member name="P:PCSC.CardEventArgs.ReaderName">
            <summary>
            Name of the reader that has raised the event.
            </summary>
            <remarks>A human readable string of the reader name.</remarks>
        </member>
        <member name="P:PCSC.CardEventArgs.Atr">
            <summary>
            The card's ATR (if present), otherwise <c>null</c>.
            </summary>
        </member>
        <member name="T:PCSC.CardStatusEventArgs">
            <summary>
                Information about a smart card reader status.
            </summary>
        </member>
        <member name="M:PCSC.CardStatusEventArgs.#ctor">
            <summary>
                Creates a new instance.
            </summary>
        </member>
        <member name="M:PCSC.CardStatusEventArgs.#ctor(System.String,PCSC.SCRState,System.Byte[])">
            <summary>
                Creates a new instance.
            </summary>
            <param name="readerName">Name of the smard card reader</param>
            <param name="state">The reader's state</param>
            <param name="atr">The card's ATR.</param>
        </member>
        <member name="P:PCSC.CardStatusEventArgs.State">
            <summary>The current reader status.</summary>
            <remarks>
                <para>
                    Is a bit mask containing one or more of the following values:
                </para>
                <list type="table">
                    <listheader>
                        <term>State</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCRState.Unaware" />
                        </term>
                        <description>The application is unaware of the current state, and would like to know. The use of this value results in an immediate return from state transition monitoring services. This is represented by all bits set to zero.</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCRState.Ignore" />
                        </term>
                        <description>This reader should be ignored</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCRState.Changed" />
                        </term>
                        <description>There is a difference between the state believed by the application, and the state known by the resource manager. When this bit is set, the application may assume a significant state change has occurred on this reader.</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCRState.Unknown" />
                        </term>
                        <description>
                            The given reader name is not recognized by the resource manager. If this bit is set, then
                            <see
                                cref="F:PCSC.SCRState.Changed" />
                            and
                            <see
                                cref="F:PCSC.SCRState.Ignore" />
                            will also be set
                        </description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCRState.Unavailable" />
                        </term>
                        <description>The actual state of this reader is not available. If this bit is set, then all the following bits are clear.</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCRState.Empty" />
                        </term>
                        <description>There is no card in the reader. If this bit is set, all the following bits will be clear</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCRState.Present" />
                        </term>
                        <description>There is a card in the reader</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCRState.Exclusive" />
                        </term>
                        <description>
                            The card in the reader is allocated for exclusive use by another application. If this bit is set,
                            <see
                                cref="F:PCSC.SCRState.Present" />
                            will also be set.
                        </description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCRState.InUse" />
                        </term>
                        <description>
                            The card in the reader is in use by one or more other applications, but may be connected to in shared mode. If this bit is set,
                            <see
                                cref="F:PCSC.SCRState.Present" />
                            will also be set.
                        </description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCRState.Mute" />
                        </term>
                        <description>There is an unresponsive card in the reader.</description>
                    </item>
                </list>
            </remarks>
        </member>
        <member name="T:PCSC.StatusChangeEventArgs">
            <summary>Information about a smart card reader status change.</summary>
        </member>
        <member name="M:PCSC.StatusChangeEventArgs.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.StatusChangeEventArgs"/> class.
            </summary>
        </member>
        <member name="M:PCSC.StatusChangeEventArgs.#ctor(System.String,PCSC.SCRState,PCSC.SCRState,System.Byte[])">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.StatusChangeEventArgs"/> class.
            </summary>
            <param name="readerName">Name of the reader.</param>
            <param name="lastState">The last state.</param>
            <param name="newState">The new state.</param>
            <param name="atr">The card's ATR.</param>
        </member>
        <member name="P:PCSC.StatusChangeEventArgs.LastState">
            <summary>The reader's status before this event.</summary>
            <remarks>
                <para>Is a bit mask containing one or more of the following values:</para>
                <list type="table">
                    <listheader><term>State</term><description>Description</description></listheader>
                    <item><term><see cref="F:PCSC.SCRState.Unaware" /></term><description>The application is unaware of the current state, and would like to know. The use of this value results in an immediate return from state transition monitoring services. This is represented by all bits set to zero.</description></item>
                    <item><term><see cref="F:PCSC.SCRState.Ignore" /></term><description>This reader should be ignored</description></item>
                    <item><term><see cref="F:PCSC.SCRState.Changed" /></term><description>There is a difference between the state believed by the application, and the state known by the resource manager. When this bit is set, the application may assume a significant state change has occurred on this reader.</description></item>
                    <item><term><see cref="F:PCSC.SCRState.Unknown" /></term><description>The given reader name is not recognized by the resource manager. If this bit is set, then <see cref="F:PCSC.SCRState.Changed" /> and <see cref="F:PCSC.SCRState.Ignore" /> will also be set</description></item>
                    <item><term><see cref="F:PCSC.SCRState.Unavailable" /></term><description>The actual state of this reader is not available. If this bit is set, then all the following bits are clear.</description></item>
                    <item><term><see cref="F:PCSC.SCRState.Empty" /></term><description>There is no card in the reader. If this bit is set, all the following bits will be clear</description></item>
                    <item><term><see cref="F:PCSC.SCRState.Present" /></term><description>There is a card in the reader</description></item>
                    <item><term><see cref="F:PCSC.SCRState.Exclusive" /></term><description>The card in the reader is allocated for exclusive use by another application. If this bit is set, <see cref="F:PCSC.SCRState.Present" /> will also be set.</description></item>
                    <item><term><see cref="F:PCSC.SCRState.InUse" /></term><description>The card in the reader is in use by one or more other applications, but may be connected to in shared mode. If this bit is set, <see cref="F:PCSC.SCRState.Present" /> will also be set.</description></item>
                    <item><term><see cref="F:PCSC.SCRState.Mute" /></term><description>There is an unresponsive card in the reader.</description></item>
                </list>
            </remarks>
        </member>
        <member name="P:PCSC.StatusChangeEventArgs.NewState">
            <summary>The new status of this reader.</summary>
            <remarks>
                <para>Is a bit mask containing one or more of the following values:</para>
                <list type="table">
                    <listheader><term>State</term><description>Description</description></listheader>
                    <item><term><see cref="F:PCSC.SCRState.Unaware" /></term><description>The application is unaware of the current state, and would like to know. The use of this value results in an immediate return from state transition monitoring services. This is represented by all bits set to zero.</description></item>
                    <item><term><see cref="F:PCSC.SCRState.Ignore" /></term><description>This reader should be ignored</description></item>
                    <item><term><see cref="F:PCSC.SCRState.Changed" /></term><description>There is a difference between the state believed by the application, and the state known by the resource manager. When this bit is set, the application may assume a significant state change has occurred on this reader.</description></item>
                    <item><term><see cref="F:PCSC.SCRState.Unknown" /></term><description>The given reader name is not recognized by the resource manager. If this bit is set, then <see cref="F:PCSC.SCRState.Changed" /> and <see cref="F:PCSC.SCRState.Ignore" /> will also be set</description></item>
                    <item><term><see cref="F:PCSC.SCRState.Unavailable" /></term><description>The actual state of this reader is not available. If this bit is set, then all the following bits are clear.</description></item>
                    <item><term><see cref="F:PCSC.SCRState.Empty" /></term><description>There is no card in the reader. If this bit is set, all the following bits will be clear</description></item>
                    <item><term><see cref="F:PCSC.SCRState.Present" /></term><description>There is a card in the reader</description></item>
                    <item><term><see cref="F:PCSC.SCRState.Exclusive" /></term><description>The card in the reader is allocated for exclusive use by another application. If this bit is set, <see cref="F:PCSC.SCRState.Present" /> will also be set.</description></item>
                    <item><term><see cref="F:PCSC.SCRState.InUse" /></term><description>The card in the reader is in use by one or more other applications, but may be connected to in shared mode. If this bit is set, <see cref="F:PCSC.SCRState.Present" /> will also be set.</description></item>
                    <item><term><see cref="F:PCSC.SCRState.Mute" /></term><description>There is an unresponsive card in the reader.</description></item>
                </list>
            </remarks>
        </member>
        <member name="T:PCSC.CommunicationErrorException">
            <summary>
            A communication error occurred.
            </summary>
        </member>
        <member name="T:PCSC.PCSCException">
            <summary>
            A general PC/SC exception.
            </summary>
        </member>
        <member name="M:PCSC.PCSCException.#ctor(PCSC.SCardError)">
            <summary>
            Creates a new instance.
            </summary>
            <param name="serr">System's error code</param>
        </member>
        <member name="M:PCSC.PCSCException.#ctor(PCSC.SCardError,System.String)">
            <summary>
            Creates a new instance.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
        </member>
        <member name="M:PCSC.PCSCException.#ctor(PCSC.SCardError,System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.PCSCException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
            <param name="innerException">The inner exception.</param>
        </member>
        <member name="P:PCSC.PCSCException.SCardError">
            <summary>
            The system's error code.
            </summary>
        </member>
        <member name="M:PCSC.CommunicationErrorException.#ctor(PCSC.SCardError)">
            <summary>
            Creates a new instance.
            </summary>
            <param name="serr">Error number.</param>
        </member>
        <member name="M:PCSC.CommunicationErrorException.#ctor(PCSC.SCardError,System.String)">
            <summary>
            Creates a new instance.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">Error message</param>
        </member>
        <member name="M:PCSC.CommunicationErrorException.#ctor(PCSC.SCardError,System.String,System.Exception)">
            <summary>
            Creates a new instance.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">Error message</param>
            <param name="innerException">Inner exception.</param>
        </member>
        <member name="T:PCSC.InsufficientBufferException">
            <summary>
            A supplied buffer is insufficient.
            </summary>
        </member>
        <member name="M:PCSC.InsufficientBufferException.#ctor(PCSC.SCardError)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.InsufficientBufferException"/> class.
            </summary>
            <param name="serr">System's error code</param>
        </member>
        <member name="M:PCSC.InsufficientBufferException.#ctor(PCSC.SCardError,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.InsufficientBufferException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
        </member>
        <member name="M:PCSC.InsufficientBufferException.#ctor(PCSC.SCardError,System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.InsufficientBufferException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
            <param name="innerException">The inner exception.</param>
        </member>
        <member name="T:PCSC.InternalErrorException">
            <summary>
            An internal error occurred.
            </summary>
        </member>
        <member name="M:PCSC.InternalErrorException.#ctor(PCSC.SCardError)">
            <summary>
            Creates a new instance.
            </summary>
            <param name="serr">System's error code</param>
        </member>
        <member name="M:PCSC.InternalErrorException.#ctor(PCSC.SCardError,System.String)">
            <summary>
            Creates a new instance.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">Error message</param>
        </member>
        <member name="M:PCSC.InternalErrorException.#ctor(PCSC.SCardError,System.String,System.Exception)">
            <summary>
            Creates a new instance.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">Error message</param>
            <param name="innerException">Inner exception</param>
        </member>
        <member name="T:PCSC.InvalidParameterException">
            <summary>
            One or more arguments contain invalid parameters.
            </summary>
        </member>
        <member name="M:PCSC.InvalidParameterException.#ctor(PCSC.SCardError)">
            <summary>
            Creates a new instance.
            </summary>
            <param name="serr">System's error code</param>
        </member>
        <member name="M:PCSC.InvalidParameterException.#ctor(PCSC.SCardError,System.String)">
            <summary>
            Creates a new instance.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">Error message</param>
        </member>
        <member name="M:PCSC.InvalidParameterException.#ctor(PCSC.SCardError,System.String,System.Exception)">
            <summary>
            Creates a new instance.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">Error message</param>
            <param name="innerException">Inner exception</param>
        </member>
        <member name="T:PCSC.InvalidProtocolException">
            <summary>
            An invalid protocol has been requested.
            </summary>
        </member>
        <member name="M:PCSC.InvalidProtocolException.#ctor(PCSC.SCardError)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.InvalidProtocolException"/> class.
            </summary>
            <param name="serr">System's error code</param>
        </member>
        <member name="M:PCSC.InvalidProtocolException.#ctor(PCSC.SCardError,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.InvalidProtocolException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
        </member>
        <member name="M:PCSC.InvalidProtocolException.#ctor(PCSC.SCardError,System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.InvalidProtocolException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
            <param name="innerException">The inner exception.</param>
        </member>
        <member name="T:PCSC.InvalidValueException">
            <summary>
            One or more arguments contain invalid values.
            </summary>
        </member>
        <member name="M:PCSC.InvalidValueException.#ctor(PCSC.SCardError)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.InvalidValueException"/> class.
            </summary>
            <param name="serr">System's error code</param>
        </member>
        <member name="M:PCSC.InvalidValueException.#ctor(PCSC.SCardError,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.InvalidValueException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
        </member>
        <member name="M:PCSC.InvalidValueException.#ctor(PCSC.SCardError,System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.InvalidValueException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
            <param name="innerException">The inner exception.</param>
        </member>
        <member name="T:PCSC.RemovedCardException">
            <summary>
            A smart card has been removed.
            </summary>
        </member>
        <member name="M:PCSC.RemovedCardException.#ctor(PCSC.SCardError)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.RemovedCardException"/> class.
            </summary>
            <param name="serr">System's error code</param>
        </member>
        <member name="M:PCSC.RemovedCardException.#ctor(PCSC.SCardError,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.RemovedCardException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
        </member>
        <member name="M:PCSC.RemovedCardException.#ctor(PCSC.SCardError,System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.RemovedCardException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
            <param name="innerException">The inner exception.</param>
        </member>
        <member name="T:PCSC.UnknownReaderException">
            <summary>
            The requested reader name is unknown.
            </summary>
        </member>
        <member name="M:PCSC.UnknownReaderException.#ctor(PCSC.SCardError)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.UnknownReaderException"/> class.
            </summary>
            <param name="serr">System's error code</param>
        </member>
        <member name="M:PCSC.UnknownReaderException.#ctor(PCSC.SCardError,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.UnknownReaderException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
        </member>
        <member name="M:PCSC.UnknownReaderException.#ctor(PCSC.SCardError,System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.UnknownReaderException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
            <param name="innerException">The inner exception.</param>
        </member>
        <member name="T:PCSC.InvalidShareModeException">
            <summary>
            The share mode is invalid.
            </summary>
        </member>
        <member name="M:PCSC.InvalidShareModeException.#ctor(PCSC.SCardError)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.InvalidShareModeException"/> class.
            </summary>
            <param name="serr">System's error code</param>
        </member>
        <member name="M:PCSC.InvalidShareModeException.#ctor(PCSC.SCardError,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.InvalidShareModeException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
        </member>
        <member name="M:PCSC.InvalidShareModeException.#ctor(PCSC.SCardError,System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.InvalidShareModeException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
            <param name="innerException">The inner exception.</param>
        </member>
        <member name="T:PCSC.NotReadyException">
            <summary>
            The reader or the smart card is not ready.
            </summary>
        </member>
        <member name="M:PCSC.NotReadyException.#ctor(PCSC.SCardError)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.NotReadyException"/> class.
            </summary>
            <param name="serr">System's error code</param>
        </member>
        <member name="M:PCSC.NotReadyException.#ctor(PCSC.SCardError,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.NotReadyException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
        </member>
        <member name="M:PCSC.NotReadyException.#ctor(PCSC.SCardError,System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.NotReadyException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
            <param name="innerException">The inner exception.</param>
        </member>
        <member name="T:PCSC.NoServiceException">
            <summary>
            The PC/SC service is not running.
            </summary>
        </member>
        <member name="M:PCSC.NoServiceException.#ctor(PCSC.SCardError)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.NoServiceException"/> class.
            </summary>
            <param name="serr">System's error code</param>
        </member>
        <member name="M:PCSC.NoServiceException.#ctor(PCSC.SCardError,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.NoServiceException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
        </member>
        <member name="M:PCSC.NoServiceException.#ctor(PCSC.SCardError,System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.NoServiceException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
            <param name="innerException">The inner exception.</param>
        </member>
        <member name="T:PCSC.NoSmartcardException">
            <summary>
            No smart card is currently inserted.
            </summary>
        </member>
        <member name="M:PCSC.NoSmartcardException.#ctor(PCSC.SCardError)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.NoSmartcardException"/> class.
            </summary>
            <param name="serr">System's error code</param>
        </member>
        <member name="M:PCSC.NoSmartcardException.#ctor(PCSC.SCardError,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.NoSmartcardException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
        </member>
        <member name="M:PCSC.NoSmartcardException.#ctor(PCSC.SCardError,System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.NoSmartcardException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
            <param name="innerException">The inner exception.</param>
        </member>
        <member name="T:PCSC.ReaderUnavailableException">
            <summary>
            The requested reader is unavailable.
            </summary>
        </member>
        <member name="M:PCSC.ReaderUnavailableException.#ctor(PCSC.SCardError)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.ReaderUnavailableException"/> class.
            </summary>
            <param name="serr">System's error code</param>
        </member>
        <member name="M:PCSC.ReaderUnavailableException.#ctor(PCSC.SCardError,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.ReaderUnavailableException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
        </member>
        <member name="M:PCSC.ReaderUnavailableException.#ctor(PCSC.SCardError,System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.ReaderUnavailableException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
            <param name="innerException">The inner exception.</param>
        </member>
        <member name="T:PCSC.SharingViolationException">
            <summary>
            A sharing violation occurred.
            </summary>
        </member>
        <member name="M:PCSC.SharingViolationException.#ctor(PCSC.SCardError)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.SharingViolationException"/> class.
            </summary>
            <param name="serr">System's error code</param>
        </member>
        <member name="M:PCSC.SharingViolationException.#ctor(PCSC.SCardError,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.SharingViolationException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
        </member>
        <member name="M:PCSC.SharingViolationException.#ctor(PCSC.SCardError,System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.SharingViolationException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
            <param name="innerException">The inner exception.</param>
        </member>
        <member name="T:PCSC.UnpoweredCardException">
            <summary>
            The smart card is unpowered.
            </summary>
        </member>
        <member name="M:PCSC.UnpoweredCardException.#ctor(PCSC.SCardError)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.UnpoweredCardException"/> class.
            </summary>
            <param name="serr">System's error code</param>
        </member>
        <member name="M:PCSC.UnpoweredCardException.#ctor(PCSC.SCardError,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.UnpoweredCardException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
        </member>
        <member name="M:PCSC.UnpoweredCardException.#ctor(PCSC.SCardError,System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.UnpoweredCardException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
            <param name="innerException">The inner exception.</param>
        </member>
        <member name="T:PCSC.UnresponsiveCardException">
            <summary>
            The smart card is unresponsive.
            </summary>
        </member>
        <member name="M:PCSC.UnresponsiveCardException.#ctor(PCSC.SCardError)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.UnresponsiveCardException"/> class.
            </summary>
            <param name="serr">System's error code</param>
        </member>
        <member name="M:PCSC.UnresponsiveCardException.#ctor(PCSC.SCardError,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.UnresponsiveCardException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
        </member>
        <member name="M:PCSC.UnresponsiveCardException.#ctor(PCSC.SCardError,System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.UnresponsiveCardException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
            <param name="innerException">The inner exception.</param>
        </member>
        <member name="T:PCSC.UnsupportedFeatureException">
            <summary>
            The requested feature is unsupported.
            </summary>
        </member>
        <member name="M:PCSC.UnsupportedFeatureException.#ctor(PCSC.SCardError)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.UnsupportedFeatureException"/> class.
            </summary>
            <param name="serr">System's error code</param>
        </member>
        <member name="M:PCSC.UnsupportedFeatureException.#ctor(PCSC.SCardError,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.UnsupportedFeatureException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
        </member>
        <member name="M:PCSC.UnsupportedFeatureException.#ctor(PCSC.SCardError,System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.UnsupportedFeatureException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
            <param name="innerException">The inner exception.</param>
        </member>
        <member name="T:PCSC.ISCardContext">
            <summary>An application context to the PC/SC Resource Manager.</summary>
            <remarks>Each thread of an application shall use its own context.</remarks>
        </member>
        <member name="M:PCSC.ISCardContext.Establish(PCSC.SCardScope)">
            <summary>Creates an Application Context to the PC/SC Resource Manager.</summary>
            <param name="scope">Scope of the establishment. This can either be a local or remote connection.</param>
            <remarks>
                <para>Creates an Application Context for a client. This must be the first WinSCard function called in a PC/SC application. Each thread of an application shall use its own <see cref="T:PCSC.SCardContext" />.</para>
                <para>This method calls the API function SCardEstablishContext().</para>
                <example>
                    <code lang="C#">
            var context = new SCardContext();
            context.Establish(SCardScope.System);
              </code>
                </example>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardContext.Release">
            <summary>Destroys a communication context to the PC/SC Resource Manager and frees unmanaged resources.</summary>
            <remarks>
                <para>This must be the last method called in a PC/SC application. <see cref="M:PCSC.SCardContext.Dispose"/> calls this method silently.</para>
                <para>This method calls the API function SCardReleaseContext().</para>
                <example>
                    <code lang="C#">
            var context = new SCardContext();
            
            // establish context
            context.Establish(SCardScope.System);
            
            // release context
            context.Release();
              </code>
                </example>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardContext.CheckValidity">
            <summary>Checks the validity of the current context.</summary>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>The context is valid. (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>The context is invalid. (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>Call this function to determine whether a smart card context handle is still valid. After a smart card context handle has been set by <see cref="M:PCSC.SCardContext.Establish(PCSC.SCardScope)" />, it may become not valid if the resource manager service has been shut down.</para>
                <para>This method calls the API function SCardIsValidContext().</para>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardContext.IsValid">
            <summary>Checks the validity of the current context.</summary>
            <returns><see langword="true" /> if the context is valid.</returns>
            <remarks>Call this function to determine whether a smart card context handle is still valid. After a smart card context handle has been set by <see cref="M:PCSC.SCardContext.Establish(PCSC.SCardScope)" />, it may become not valid if the resource manager service has been shut down.
                <example>
                    <code lang="C#">
            using (var context = new SCardContext()) {
                context.Establish(SCardScope.System);
                Console.WriteLine("Context is valid? {0}", context.IsValid());
            }
              </code>
                </example>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardContext.ReEstablish">
            <summary>Re-Establishes an Application Context to the PC/SC Resource Manager with the last used <see cref="T:PCSC.SCardScope"/>.</summary>
            <remarks>This method must not be called before <see cref="M:PCSC.SCardContext.Establish(PCSC.SCardScope)"/></remarks>
        </member>
        <member name="M:PCSC.ISCardContext.GetReaders(System.String[])">
            <summary>Returns a list of currently available readers on the system.</summary>
            <param name="groups">List of groups to list readers.</param>
            <returns>An array of <see cref="T:System.String" />s containing all Smart Card readers found by the PC/SC Resource Manager.</returns>
            <remarks>
                <para>Groups are not used on Linux/UNIX machines using the PC/SC Lite daemon.</para>
                <para>This method calls the API function SCardListReaders().</para>
                <example>
                    <code lang="C#">
            using (var context = new SCardContext()) {
                context.Establish(SCardScope.System);
            
                // list all configured reader groups
                Console.WriteLine("\nCurrently configured readers groups: ");
                var groups = context.GetReaderGroups();
                foreach (string group in groups) {
            	    Console.WriteLine("\t" + group);
                }
            
                // list readers for each group
                foreach (string group in groups) {
            	    Console.WriteLine("\nGroup " + group + " contains ");
            	    foreach (string reader in context.GetReaders(new string[] {group})) {
            		    Console.WriteLine("\t" + reader);
                    }
                }
            }
              </code>
                </example>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardContext.GetReaders">
            <summary>Returns a list of currently available readers on the system.</summary>
            <returns>An array of <see cref="T:System.String" />s containing all Smart Card readers found by the PC/SC Resource Manager.</returns>
            <remarks>
                <para>This method calls the API function SCardListReaders().</para>
                <example>
                    <code lang="C#">
            using (var context = new SCardContext()) {
                context.Establish(SCardScope.System);
            
                // list all (smart card) readers
                Console.WriteLine("Currently connected readers: ");
                var readers = context.GetReaders();
                foreach (string reader in readers) {
            	    Console.WriteLine("\t" + reader);
                }
            }
              </code>
                </example>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardContext.GetReaderGroups">
            <summary>Returns a list of currently available reader groups on the system. </summary>
            <returns>An array of <see cref="T:System.String" />s containing all Smart Card reader groups found by the PC/SC Resource Manager.</returns>
            <remarks>
                <para>This method calls the API function SCardListReaderGroups().</para>
                <example>
                    <code lang="C#">
            using (var context = new SCardContext()) {
                context.Establish(SCardScope.System);
            
                // list all configured reader groups
                Console.WriteLine("Currently configured readers groups: ");
                var groups = context.GetReaderGroups();
                foreach (string group in groups) {
            	    Console.WriteLine("\t" + group);
                }
            }
              </code>
                </example>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardContext.GetReaderStatus(System.String)">
            <summary>Returns the current reader status.</summary>
            <param name="readerName">The requested reader.</param>
            <returns>A <see cref="T:PCSC.SCardReaderState" /> that contains the current reader status.</returns>
            <remarks>
                <para>This method uses the <see cref="M:PCSC.SCardContext.GetStatusChange(System.IntPtr,PCSC.SCardReaderState[])" /> method with a timeout of zero.</para>
                <example>
                    <code lang="C#">
            // Retrieve the names of all installed readers.
            using (var ctx = new SCardContext()) {
                ctx.Establish(SCardScope.System);
                var readerNames = ctx.GetReaders();
            
                // Get the current status of the first reader.
                var state = ctx.GetReaderStatus(readerNames[0]);
            
                Console.WriteLine("Reader: " + state.ReaderName);
                Console.WriteLine("CurrentState: " + state.CurrentState 
            	    + " EventState: " + state.EventState + "\n"
            	    + "CurrentStateValue: " + state.CurrentStateValue 
            	    + " EventStateValue: " + state.EventStateValue);
                Console.WriteLine("UserData: " + state.UserData.ToString()
            	    + " CardChangeEventCnt: " + state.CardChangeEventCnt);
                Console.WriteLine("ATR: " + BitConverter.ToString(state.Atr));
            }
              </code>
                </example>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardContext.GetReaderStatus(System.String[])">
            <summary>Returns the current reader status of all requested readers.</summary>
            <param name="readerNames">Requested reader names.</param>
            <returns>An array of <see cref="T:PCSC.SCardReaderState" />s that contains the current reader status of each requested reader.</returns>
            <remarks>
                <para>This method uses the <see cref="M:PCSC.SCardContext.GetStatusChange(System.IntPtr,PCSC.SCardReaderState[])" /> method with a timeout of zero.</para>
                <example>
                    <code lang="C#">
            // Retrieve the names of all installed readers.
            using (var ctx = new SCardContext()) {
                ctx.Establish(SCardScope.System);
                var readerNames = ctx.GetReaders();
            
                // Get the current status for all readers.
                var states = ctx.GetReaderStatus(readerNames);
            
                foreach (var state in states) {
            	    Console.WriteLine("------------------------------");
            	    Console.WriteLine("Reader: " + state.ReaderName);
            	    Console.WriteLine("CurrentState: " + state.CurrentState 
            		    + " EventState: " + state.EventState + "\n"
            		    + "CurrentStateValue: " + state.CurrentStateValue 
            		    + " EventStateValue: " + state.EventStateValue);
            	    Console.WriteLine("UserData: " + state.UserData.ToString()
            		    + " CardChangeEventCnt: " + state.CardChangeEventCnt);
            	    Console.WriteLine("ATR: " + BitConverter.ToString(state.Atr));
                }
            }
              </code>
                </example>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardContext.GetStatusChange(System.IntPtr,PCSC.SCardReaderState[])">
            <summary>Blocks execution until the current availability of the cards in a specific set of readers changes.</summary>
            <param name="timeout">Maximum waiting time (in milliseconds) for status change, zero or <see cref="P:PCSC.SCardContext.INFINITE"/> for infinite.</param>
            <param name="readerStates">Structures of readers with current states.</param>
            <returns>
                <para>A <see cref="F:PCSC.SCardError.Success"/> indicating an error or the success.The caller receives status changes through the <see cref="F:PCSC.SCardError.NoService"/> array.</para>
                <list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter"/>
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService"/>
                        </term>
                        <description>Server is not running (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue"/>
                        </term>
                        <description>
                            <paramref name="readerStates"/> is invalid or <see langword="null"/> (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable"/>
                        </term>
                        <description>Invalid States, reader name, etc (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Timeout"/>
                        </term>
                        <description>Invalid context (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable"/>
                        </term>
                        <description>The reader is unavailable (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="P:PCSC.SCardReaderState.EventState"/>
                        </term>
                        <description>The user-specified timeout value has expired (SCARD_E_TIMEOUT)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>This method receives a structure or list of structures containing reader names. It then blocks for a change in state to occur for a maximum blocking time of <paramref name="timeout"/> or forever if <see cref="P:PCSC.SCardContext.INFINITE"/> is used.</para>
                <para>The new event state will be contained in <see cref="P:PCSC.SCardContext.Infinite"/>. A status change might be a card insertion or removal event, a change in ATR, etc.</para>
                <para>To wait for a reader event (reader added or removed) you may use the special reader name "\\?PnP?\Notification". If a reader event occurs the state of this reader will change and the bit <see cref="T:PCSC.SCardContext"/> will be set.</para>
                <para>This method calls the API function SCardGetStatusChange().</para>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardContext.Cancel">
            <summary>Cancels all pending blocking requests on the <see cref="M:PCSC.SCardContext.GetStatusChange(System.IntPtr,PCSC.SCardReaderState[])" /> method.</summary>
            <returns>
                <list type="table">
                    <listheader><term>Return value</term><description>Description</description></listheader>
                    <item><term><see cref="F:PCSC.SCardError.Success" /></term><description>Successful (SCARD_S_SUCCESS)</description></item>
                    <item><term><see cref="F:PCSC.SCardError.InvalidHandle" /></term><description>Invalid context (SCARD_E_INVALID_HANDLE)</description></item>
                    <item><term><see cref="F:PCSC.SCardError.NoService" /></term><description>Server is not running (SCARD_E_NO_SERVICE)</description></item>
                    <item><term><see cref="F:PCSC.SCardError.CommunicationError" /></term><description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description></item>
                </list>
            </returns>
            <remarks>This method calls the API function SCardCancel().</remarks>
        </member>
        <member name="P:PCSC.ISCardContext.Handle">
            <summary>A pointer (Application Context) that can be used for C API calls.</summary>
            <value>The returned Application Context handle. Is <see cref="F:System.IntPtr.Zero"/> if not context has been established.</value>
            <remarks>This is the Application Context handle that is returned when calling the C API function SCardEstablishContext().</remarks>
        </member>
        <member name="P:PCSC.ISCardContext.MaxAtrSize">
            <summary>Maximum ATR size.</summary>
            <value>
                <list type="table">
                    <listheader><term>Platform</term><description>Maximum ATR size</description></listheader>
                    <item>
                        <term>Windows (Winscard.dll)</term>
                        <description>36</description>
                    </item>
                    <item>
                        <term>UNIX/Linux (PC/SClite)</term>
                        <description>33</description>
                    </item>
                </list>
            </value>
            <remarks>Attention: Size depends on platform.</remarks>
        </member>
        <member name="P:PCSC.ISCardContext.Infinite">
            <summary>Infinite timeout.</summary>
            <value>0xFFFFFFFF</value>
        </member>
        <member name="T:PCSC.ISCardMonitor">
            <summary>Monitors a Smart Card reader and triggers events on status changes.</summary>
        </member>
        <member name="M:PCSC.ISCardMonitor.GetCurrentStateValue(System.Int32)">
            <summary>Returns the current state of a reader that is currently being monitored.</summary>
            <param name="index">The number of the desired reader. The index must be between 0 and (<see cref="P:PCSC.SCardMonitor.ReaderCount"/> - 1).</param>
            <returns>The current state of reader with index number <paramref name="index"/>.</returns>
            <remarks>This method will throw an <see cref="T:System.ArgumentOutOfRangeException"/> if the specified <paramref name="index"/> is invalid. You can enumerate all readers currently monitored with the <see cref="P:PCSC.SCardMonitor.ReaderNames"/> property.</remarks>
            <exception cref="T:System.ArgumentOutOfRangeException">If the specified <paramref name="index"/> is invalid.</exception>
        </member>
        <member name="M:PCSC.ISCardMonitor.GetCurrentState(System.Int32)">
            <summary>Returns the current state of a reader that is currently being monitored.</summary>
            <param name="index">The number of the desired reader. The index must be between 0 and (<see cref="P:PCSC.SCardMonitor.ReaderCount"/> - 1).</param>
            <returns>The current state of reader with index number <paramref name="index"/>.</returns>
            <remarks>This method will throw an <see cref="T:System.ArgumentOutOfRangeException"/> if the specified <paramref name="index"/> is invalid. You can enumerate all readers currently monitored with the <see cref="P:PCSC.SCardMonitor.ReaderNames"/> property.</remarks>
            <exception cref="T:System.ArgumentOutOfRangeException">If the specified <paramref name="index"/> is invalid.</exception>
        </member>
        <member name="M:PCSC.ISCardMonitor.GetReaderName(System.Int32)">
            <summary>Returns the reader name of a given <paramref name="index"/>.</summary>
            <param name="index">The number of the desired reader. The index must be between 0 and (<see cref="P:PCSC.SCardMonitor.ReaderCount"/> - 1).</param>
            <returns>A reader name.</returns>
            <remarks>This method will throw an <see cref="T:System.ArgumentOutOfRangeException"/> if the specified <paramref name="index"/> is invalid. You can enumerate all readers currently monitored with the <see cref="P:PCSC.SCardMonitor.ReaderNames"/> property.</remarks>
            <exception cref="T:System.ArgumentOutOfRangeException">If the specified <paramref name="index"/> is invalid.</exception>
        </member>
        <member name="M:PCSC.ISCardMonitor.Cancel">
            <summary>Cancels the monitoring of all readers that are currently being monitored.</summary>
            <remarks>This will end the monitoring. The method calls the <see cref="M:PCSC.ISCardContext.Cancel"/> method of its Application Context to the PC/SC Resource Manager.</remarks>
        </member>
        <member name="M:PCSC.ISCardMonitor.Start(System.String)">
            <param name="readerName">The Smart Card reader that shall be monitored.</param>
            <summary>Starts to monitor a single Smart Card reader for status changes.</summary>
            <remarks>
                <example>
                    <code lang="C#">
            // Create a new monitor object with its own PC/SC context.
            var monitor = new SCardMonitor(
            	new SCardContext(),
            	SCardScope.System,
                true);
            
            // Start to monitor a single reader.
            monitor.Start("OMNIKEY CardMan 5x21 00 00");
              </code>
                </example>
                <para>Do not forget to register for at least one event:
                    <list type="table">
                        <listheader><term>Event</term><description>Description</description></listheader>
                        <item><term><see cref="E:PCSC.SCardMonitor.CardInserted" /></term><description>A new card has been inserted.</description></item>
                        <item><term><see cref="E:PCSC.SCardMonitor.CardRemoved" /></term><description>A card has been removed.</description></item>
                        <item><term><see cref="E:PCSC.SCardMonitor.Initialized" /></term><description>Initial status.</description></item>
                        <item><term><see cref="E:PCSC.SCardMonitor.StatusChanged" /></term><description>A general status change.</description></item>
                        <item><term><see cref="E:PCSC.SCardMonitor.MonitorException" /></term><description>An error occurred.</description></item>
                    </list></para>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardMonitor.Start(System.String[])">
            <param name="readerNames">A <see cref="T:System.String" /> array of reader names that shall be monitored.</param>
            <summary>Starts to monitor a range Smart Card readers for status changes.</summary>
            <remarks>
                <example>
                    <code lang="C#">
            string [] readerNames;
            using (var ctx = new SCardContext()) {
                ctx.Establish(SCardScope.System);
                // Retrieve the names of all installed readers.
                readerNames = ctx.GetReaders();
                ctx.Release();
            }
            
            // Create a new monitor object with its own PC/SC context.
            var monitor = new SCardMonitor(
            	new SCardContext(),
            	SCardScope.System,
                true);
            
            foreach (string reader in readerNames) {
            	Console.WriteLine("Start monitoring for reader {0}.", reader);
            }
                    
            // Start monitoring multiple readers.
            monitor.Start(readerNames);
            </code>
                </example>
                <para>Do not forget to register for at least one event:
                    <list type="table">
                        <listheader><term>Event</term><description>Description</description></listheader>
                        <item><term><see cref="E:PCSC.SCardMonitor.CardInserted" /></term><description>A new card has been inserted.</description></item>
                        <item><term><see cref="E:PCSC.SCardMonitor.CardRemoved" /></term><description>A card has been removed.</description></item>
                        <item><term><see cref="E:PCSC.SCardMonitor.Initialized" /></term><description>Initial status.</description></item>
                        <item><term><see cref="E:PCSC.SCardMonitor.StatusChanged" /></term><description>A general status change.</description></item>
                        <item><term><see cref="E:PCSC.SCardMonitor.MonitorException" /></term><description>An error occurred.</description></item>
                    </list></para>
            </remarks>
        </member>
        <member name="E:PCSC.ISCardMonitor.StatusChanged">
            <summary>A general reader status change.</summary>
            <remarks>
                <example>
                    <code lang="C#">
            // Create a monitor object with its own PC/SC context.
            var monitor = new SCardMonitor(
            	new SCardContext(),
            	SCardScope.System,
                true);
            
            // Point the callback function(s) to the pre-defined method MyStatusChangedMethod.
            monitor.StatusChanged += new StatusChangeEvent(MyStatusChangedMethod);
            
            // Start to monitor the reader
            monitor.Start("OMNIKEY CardMan 5x21 00 01");
              </code>
                </example>
            </remarks>
        </member>
        <member name="E:PCSC.ISCardMonitor.CardInserted">
            <summary>A new card has been inserted.</summary>
            <remarks>
                <example>
                    <code lang="C#">
            // Create a monitor object with its own PC/SC context.
            var monitor = new SCardMonitor(
            	new SCardContext(),
            	SCardScope.System,
                true);
            
            monitor.CardInserted += new CardInsertedEvent(MyCardInsertedMethod);
            
            // Start to monitor the reader
            monitor.Start("OMNIKEY CardMan 5x21 00 01");
              </code>
                </example>
            </remarks>
        </member>
        <member name="E:PCSC.ISCardMonitor.CardRemoved">
            <summary>A card has been removed.</summary>
            <remarks>
                <example>
                    <code lang="C#">
            // Create a monitor object with its own PC/SC context.
            var monitor = new SCardMonitor(
            	new SCardContext(),
            	SCardScope.System,
                true);
            
            monitor.CardRemoved += new CardRemovedEvent(MyCardRemovedMethod);
            
            // Start to monitor the reader
            monitor.Start("OMNIKEY CardMan 5x21 00 01");
              </code>
                </example>
            </remarks>
        </member>
        <member name="E:PCSC.ISCardMonitor.Initialized">
            <summary>The monitor object has been initialized.</summary>
            <remarks>
                <para>This event appears only once for each reader after calling <see cref="M:PCSC.SCardMonitor.Start(System.String)"/> or <see cref="M:PCSC.SCardMonitor.Start(System.String[])"/>.</para>
                <example>
                    <code lang="C#">
            // Create a monitor object with its own PC/SC context.
            var monitor = new SCardMonitor(
            	new SCardContext(),
            	SCardScope.System,
                true);
            
            monitor.Initialized += new CardInitializedEvent(MyCardInitializedMethod);
            
            // Start to monitor the reader
            monitor.Start("OMNIKEY CardMan 5x21 00 01");
              </code>
                </example>
            </remarks>
        </member>
        <member name="E:PCSC.ISCardMonitor.MonitorException">
            <summary>An PC/SC error occurred during monitoring.</summary>
            <remarks>
                <example>
                    <code lang="C#">
            // Create a monitor object with its own PC/SC context.
            var monitor = new SCardMonitor(
            	new SCardContext(),
            	SCardScope.System,
                true);
            
            monitor.MonitorException += new MonitorExceptionEvent(MyMonitorExceptionMethod);
            
            // Start to monitor the reader
            monitor.Start("OMNIKEY CardMan 5x21 00 01");
              </code>
                </example>
            </remarks>
        </member>
        <member name="P:PCSC.ISCardMonitor.ReaderNames">
            <summary>All readers that are currently being monitored.</summary>
            <value>A <see cref="T:System.String" /> array of reader names. <see langword="null" /> if no readers is being monitored.</value>
        </member>
        <member name="P:PCSC.ISCardMonitor.Monitoring">
            <summary>Indicates if there are readers currently monitored.</summary>
            <value>
                <list type="table">
                    <listheader>
                        <term>Value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see langword="true" />
                        </term>
                        <description>Monitoring process ongoing.</description>
                    </item>
                    <item>
                        <term>
                            <see langword="false" />
                        </term>
                        <description>No monitoring.</description>
                    </item>
                </list>
            </value>
        </member>
        <member name="P:PCSC.ISCardMonitor.ReaderCount">
            <summary>The number of readers that currently being monitored.</summary>
            <value>Return 0 if no reader is being monitored.</value>
        </member>
        <member name="T:PCSC.Iso7816.ClassByte">
            <summary>A class the can be used to build or parse the CLA (Class byte) of a APDU.</summary>
        </member>
        <member name="M:PCSC.Iso7816.ClassByte.#ctor(System.Byte)">
            <summary>Initializes a new instance of the <see cref="T:PCSC.Iso7816.ClassByte"/> class.</summary>
            <param name="cla">The CLA as byte that will be parsed.</param>
        </member>
        <member name="M:PCSC.Iso7816.ClassByte.#ctor(PCSC.Iso7816.ClaHighPart,PCSC.Iso7816.SecureMessagingFormat,System.Int32)">
            <summary>Initializes a new instance of the <see cref="T:PCSC.Iso7816.ClassByte"/> class.</summary>
            <param name="highPart">The high part of the CLA</param>
            <param name="secureMessagingFormat">The secure messaging format.</param>
            <param name="logicalChannelNumber">The logical channel number.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">logicalChannelNumber;Logical channels must be in the range between 0 and 3.</exception>
        </member>
        <member name="M:PCSC.Iso7816.ClassByte.op_Implicit(PCSC.Iso7816.ClassByte)~System.Byte">
            <summary>Implicitly converts a <see cref="T:PCSC.Iso7816.ClassByte"/> to a <see cref="T:System.Byte"/>.</summary>
            <param name="classByte"></param>
            <returns>The CLA as byte</returns>
        </member>
        <member name="M:PCSC.Iso7816.ClassByte.op_Implicit(System.Byte)~PCSC.Iso7816.ClassByte">
            <summary>Implicitly converts a <see cref="T:System.Byte"/> to an <see cref="T:PCSC.Iso7816.ClassByte"/> instance.</summary>
            <param name="byte">CLA as byte.</param>
            <returns>The parsed CLA.</returns>
        </member>
        <member name="P:PCSC.Iso7816.ClassByte.Value">
            <summary>Returns the CLA as byte.</summary>
        </member>
        <member name="P:PCSC.Iso7816.ClassByte.HighPart">
            <summary>Gets or sets the high part of the CLA </summary>
            <value>The high part of the CLA.</value>
        </member>
        <member name="P:PCSC.Iso7816.ClassByte.Security">
            <summary>Gets or sets the secure messaging (SM) format. </summary>
        </member>
        <member name="P:PCSC.Iso7816.ClassByte.LogicalChannel">
            <summary>Gets or sets the logical channel number.</summary>
            <value>The logical channel number.</value>
            <exception cref="T:System.ArgumentOutOfRangeException">value;Logical channels must be in the range between 0 and 3.</exception>
        </member>
        <member name="T:PCSC.InvalidContextException">
            <summary>
            Invalid PC/SC context exception.
            </summary>
        </member>
        <member name="M:PCSC.InvalidContextException.#ctor(PCSC.SCardError)">
            <summary>
            Creates a new instance.
            </summary>
            <param name="serr">System's error code</param>
        </member>
        <member name="M:PCSC.InvalidContextException.#ctor(PCSC.SCardError,System.String)">
            <summary>
            Creates a new instance.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">Error message</param>
        </member>
        <member name="M:PCSC.InvalidContextException.#ctor(PCSC.SCardError,System.String,System.Exception)">
            <summary>
            Creates a new instance.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">Error message</param>
            <param name="innerException">Inner exception</param>
        </member>
        <member name="T:PCSC.InvalidScopeTypeException">
            <summary>
            Invalid PC/SC scope exception.
            </summary>
        </member>
        <member name="M:PCSC.InvalidScopeTypeException.#ctor(PCSC.SCardError)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.InvalidScopeTypeException"/> class.
            </summary>
            <param name="serr">System's error code</param>
        </member>
        <member name="M:PCSC.InvalidScopeTypeException.#ctor(PCSC.SCardError,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.InvalidScopeTypeException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
        </member>
        <member name="M:PCSC.InvalidScopeTypeException.#ctor(PCSC.SCardError,System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.InvalidScopeTypeException"/> class.
            </summary>
            <param name="serr">System's error code</param>
            <param name="message">An error message text.</param>
            <param name="innerException">The inner exception.</param>
        </member>
        <member name="T:PCSC.Interop.ISCardAPI">
            <summary>
            Gives access to the system's smart card API
            </summary>
        </member>
        <member name="T:PCSC.Interop.Windows.WinSCardAPI">
            <summary>
            PC/SC API for Microsoft Win32/Win64 (x86/x64/IA64) 
            </summary>
        </member>
        <member name="T:PCSC.Interop.Unix.PCSCliteAPI">
            <summary>
            PC/SC API for most Unix and Unix-like systems (x86/x64/IA64) 
            </summary>
        </member>
        <member name="T:PCSC.Interop.Platform">
            <summary>
            Platform selector (Windows or UNIX)
            </summary>
        </member>
        <member name="P:PCSC.Interop.Platform.IsWindows">
            <summary>
            Returns <c>true</c> if the operation system runs on Windows. <c>false</c> otherwise.
            </summary>
        </member>
        <member name="P:PCSC.Interop.Platform.Lib">
            <summary>
            Platform smart card library.
            </summary>
        </member>
        <member name="T:PCSC.ISCardReader">
            <summary>Common functions that are needed to operate on Smart Card readers.</summary>
            <remarks>See <see cref="T:PCSC.SCardReader" />.</remarks>
        </member>
        <member name="M:PCSC.ISCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)">
            <summary>Establishes a connection to the Smart Card reader.</summary>
            <param name="readerName">Reader name to connect to.</param>
            <param name="mode">Mode of connection type: exclusive or shared.
                <list type="table">
                    <listheader><term>Value</term><description>Description</description></listheader>
                    <item><term><see cref="F:PCSC.SCardShareMode.Shared" /></term><description>This application will allow others to share the reader. (SCARD_SHARE_SHARED)</description></item>
                    <item><term><see cref="F:PCSC.SCardShareMode.Exclusive" /></term><description>This application will NOT allow others to share the reader. (SCARD_SHARE_EXCLUSIVE)</description></item>
                </list>
            </param>
            <param name="preferredProtocol">Desired protocol use.</param>
            <returns>An error code / return value:
                <para>
                    <list type="table">
                        <listheader><term>Error code</term><description>Description</description></listheader>
                        <item><term><see cref="F:PCSC.SCardError.Success" /></term><description>Successful (SCARD_S_SUCCESS)</description></item>
                        <item><term><see cref="F:PCSC.SCardError.InvalidHandle" /></term><description>Invalid context handle (SCARD_E_INVALID_HANDLE)</description></item>
                        <item><term><see cref="F:PCSC.SCardError.InvalidParameter" /></term><description><paramref name="preferredProtocol" /> is invalid or <see langword="null" />  (SCARD_E_INVALID_PARAMETER)</description></item>
                        <item><term><see cref="F:PCSC.SCardError.InvalidValue" /></term><description>Invalid sharing mode, requested protocol, or reader name (SCARD_E_INVALID_VALUE)</description></item>
                        <item><term><see cref="F:PCSC.SCardError.NoService" /></term><description>The server is not runing (SCARD_E_NO_SERVICE)</description></item>
                        <item><term><see cref="F:PCSC.SCardError.NoSmartcard" /></term><description>No smart card present (SCARD_E_NO_SMARTCARD)</description></item>
                        <item><term><see cref="F:PCSC.SCardError.NotReady" /></term><description>Could not allocate the desired port (SCARD_E_NOT_READY)</description></item>
                        <item><term><see cref="F:PCSC.SCardError.ProtocolMismatch" /></term><description>Requested protocol is unknown (SCARD_E_PROTO_MISMATCH)</description></item>
                        <item><term><see cref="F:PCSC.SCardError.ReaderUnavailable" /></term><description>Could not power up the reader or card (SCARD_E_READER_UNAVAILABLE)</description></item>
                        <item><term><see cref="F:PCSC.SCardError.SharingViolation" /></term><description>Someone else has exclusive rights (SCARD_E_SHARING_VIOLATION)</description></item>
                        <item><term><see cref="F:PCSC.SCardError.UnknownReader" /></term><description>The reader name is <see langword="null" /> (SCARD_E_UNKNOWN_READER)</description></item>
                        <item><term><see cref="F:PCSC.SCardError.UnsupportedFeature" /></term><description>Protocol not supported (SCARD_E_UNSUPPORTED_FEATURE)</description></item>
                        <item><term><see cref="F:PCSC.SCardError.CommunicationError" /></term><description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description></item>
                        <item><term><see cref="F:PCSC.SCardError.InternalError" /></term><description>An internal consistency check failed (SCARD_F_INTERNAL_ERROR)</description></item>
                        <item><term><see cref="F:PCSC.SCardError.UnpoweredCard" /></term><description>Card is not powered (SCARD_W_UNPOWERED_CARD)</description></item>
                        <item><term><see cref="F:PCSC.SCardError.UnresponsiveCard" /></term><description>Card is mute (SCARD_W_UNRESPONSIVE_CARD)</description></item>
                    </list>
                </para>
            </returns>
            <remarks>
                <para>
                    <paramref name="preferredProtocol" />  is a bit mask of acceptable protocols for the connection. You can use (<see cref="F:PCSC.SCardProtocol.T0" /> | <see cref="F:PCSC.SCardProtocol.T1" />) if you do not have a preferred protocol. The protocol used with this connection will be stored in <see cref="P:PCSC.ISCardReader.ActiveProtocol" />.</para>
                <para>This method calls the API function SCardConnect().</para>
                <example>
                    <code lang="C#">
            // Establish PC/SC context.
            SCardContext ctx = new SCardContext();
            ctx.Establish(SCardScope.System);
            
            // Create a Smart Card reader object and connect to it.
            ISCardReader reader = new SCardReader(ctx);
            SCardError serr = reader.Connect("OMNIKEY CardMan 5x21 00 00",
            	SCardShareMode.Shared,
            	SCardProtocol.Any);
              </code>
                </example>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardReader.Disconnect(PCSC.SCardReaderDisposition)">
            <summary>Terminates a connection made through <see cref="M:PCSC.ISCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)" />.</summary>
            <param name="disconnectExecution">Reader function to execute.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue" />
                        </term>
                        <description>Invalid <paramref name="disconnectExecution" /> (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoSmartcard" />
                        </term>
                        <description>No smart card present (SCARD_E_NO_SMARTCARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>This method calls the API function SCardDisconnect().</para>
                <example>
                    <code lang="C#">
            // Establish PC/SC context.
            SCardContext ctx = new SCardContext();
            ctx.Establish(SCardScope.System);
            
            // Create a Smart Card reader object and connect to it.
            ISCardReader reader = new SCardReader(ctx);
            SCardError serr = reader.Connect("OMNIKEY", SCardShareMode.Shared, SCardProtocol.Any);
            
            // Disconnect the reader and reset the SmartCard.
            reader.Disconnect(SCardReaderDisposition.Reset);
              </code>
                </example>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardReader.Reconnect(PCSC.SCardShareMode,PCSC.SCardProtocol,PCSC.SCardReaderDisposition)">
            <summary>Reestablishes a connection to a reader that was previously connected to using
                <see
                    cref="M:PCSC.ISCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)" />
                .</summary>
            <param name="mode">Mode of connection type: exclusive/shared.
                <list type="table">
                    <listheader>
                        <term>Value</term><description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardShareMode.Shared" />
                        </term>
                        <description>This application will allow others to share the reader. (SCARD_SHARE_SHARED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardShareMode.Exclusive" />
                        </term>
                        <description>This application will NOT allow others to share the reader. (SCARD_SHARE_EXCLUSIVE)</description>
                    </item>
                </list>
            </param>
            <param name="preferredProtocol">Desired protocol use.</param>
            <param name="initialExecution">Desired action taken on the card/reader before reconnect.</param>
            <returns>An error code / return value:
                <list type="table">
                    <listheader>
                        <term>Error code</term><description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid context handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>
                            <paramref name="preferredProtocol" /> is invalid or <see langword="null" />  (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue" />
                        </term>
                        <description>Invalid sharing mode, requested protocol, or reader name (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoSmartcard" />
                        </term>
                        <description>No smart card present (SCARD_E_NO_SMARTCARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotReady" />
                        </term>
                        <description>Could not allocate the desired port (SCARD_E_NOT_READY)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ProtocolMismatch" />
                        </term>
                        <description>Requested protocol is unknown (SCARD_E_PROTO_MISMATCH)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>Could not power up the reader or card (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.SharingViolation" />
                        </term>
                        <description>Someone else has exclusive rights (SCARD_E_SHARING_VIOLATION)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.UnsupportedFeature" />
                        </term>
                        <description>Protocol not supported (SCARD_E_UNSUPPORTED_FEATURE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InternalError" />
                        </term>
                        <description>An internal consistency check failed (SCARD_F_INTERNAL_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.RemovedCard" />
                        </term>
                        <description>The smart card has been removed (SCARD_W_REMOVED_CARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.UnresponsiveCard" />
                        </term>
                        <description>Card is mute (SCARD_W_UNRESPONSIVE_CARD)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>
                    <paramref name="preferredProtocol" />  is a bit mask of acceptable protocols for the connection. You can use (<see cref="F:PCSC.SCardProtocol.T0" /> | <see cref="F:PCSC.SCardProtocol.T1" />) if you do not have a preferred protocol. The protocol used with this connection will be stored in <see cref="P:PCSC.ISCardReader.ActiveProtocol" />.</para>
                <para>This method calls the API function SCardReconnect().</para>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardReader.BeginTransaction">
            <summary>Establishes a temporary exclusive access mode for doing a serie of commands in a transaction.</summary>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.SharingViolation" />
                        </term>
                        <description>Someone else has exclusive rights (SCARD_E_SHARING_VIOLATION)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>You might want to use this when you are selecting a few files and then writing a large file so you can make sure that another application will not change the current file. If another application has a lock on this reader or this application is in
                    <see cref="F:PCSC.SCardShareMode.Exclusive" /> there will be no action taken.</para>
                <para>This method calls the API function SCardBeginTransaction().</para>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardReader.EndTransaction(PCSC.SCardReaderDisposition)">
            <summary>Ends a previously begun transaction.</summary>
            <param name="disposition">Action to be taken on the reader.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue" />
                        </term>
                        <description>Invalid value for <paramref name="disposition" /> (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.SharingViolation" />
                        </term>
                        <description>Someone else has exclusive rights (SCARD_E_SHARING_VIOLATION)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The calling application must be the owner of the previously begun transaction or an error will occur.</para>
                <para>This method calls the API function SCardEndTransaction().</para>
                <block subset="none" type="note">
                    <para>The disposition action is not currently used in PC/SC Lite on UNIX/Linux machines.</para>
                </block>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardReader.Transmit(System.IntPtr,System.Byte[],System.Int32,PCSC.SCardPCI,System.Byte[],System.Int32@)">
            <summary>Sends an APDU to the smart card that was previously connected by <see cref="M:PCSC.ISCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)" />. </summary>
            <param name="sendPci">A pointer to a pre-defined Structure of Protocol Control Information. You can use one of the following:
                <list type="table"><listheader><term>Protocol Control Information</term><description>Description</description></listheader><item><term><see cref="P:PCSC.SCardPCI.T0" /></term><description>Pre-defined T=0 PCI structure. (SCARD_PCI_T0)</description></item><item><term><see cref="P:PCSC.SCardPCI.T1" /></term><description>Pre-defined T=1 PCI structure. (SCARD_PCI_T1)</description></item><item><term><see cref="P:PCSC.SCardPCI.Raw" /></term><description>Pre-defined RAW PCI structure. (SCARD_PCI_RAW)</description></item></list></param>
            <param name="sendBuffer">APDU to send to the card. </param>
            <param name="sendBufferLength">The buffer size of <paramref name="sendBuffer" /> in bytes.</param>
            <param name="receivePci">Structure of protocol information. </param>
            <param name="receiveBuffer">Response from the card.</param>
            <param name="receiveBufferLength">The buffer size of <paramref name="receiveBuffer" /> in bytes.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description> 	Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> are too big (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> or <paramref name="sendPci" /> is <see langword="null" /> (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue" />
                        </term>
                        <description>Invalid Protocol, reader name, etc (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>APDU exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ProtocolMismatch" />
                        </term>
                        <description>Connect protocol is different than desired (SCARD_E_PROTO_MISMATCH)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ResetCard" />
                        </term>
                        <description>The card has been reset by another application (SCARD_W_RESET_CARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.RemovedCard" />
                        </term>
                        <description>The card has been removed from the reader (SCARD_W_REMOVED_CARD)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The card responds from the APDU and stores this response in <paramref name="receiveBuffer" />. The size of the returned data will be stored in <paramref name="receiveBufferLength" />. This method will return with error code <see cref="F:PCSC.SCardError.InsufficientBuffer" /> if the buffer size of <paramref name="receiveBuffer" /> is too small for the result. If one of the parameters <paramref name="sendBufferLength" /> or <paramref name="receiveBufferLength" /> is invalid, the method will throw an <see cref="T:System.ArgumentOutOfRangeException" />.</para>
                <para>This method calls the API function SCardTransmit(). The pointers to the pre-defined / built-in PCI structures are determinated with dlsym() on UNIX/Linux hosts and GetProcAddress() on Windows hosts.</para>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardReader.Transmit(System.IntPtr,System.Byte[],PCSC.SCardPCI,System.Byte[]@)">
            <summary>Sends an APDU to the smart card that was previously connected by <see cref="M:PCSC.ISCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)" />. </summary>
            <param name="sendPci">A pointer to a pre-defined Structure of Protocol Control Information. You can use one of the following:
                <list type="table"><listheader><term>Protocol Control Information</term><description>Description</description></listheader><item><term><see cref="P:PCSC.SCardPCI.T0" /></term><description>Pre-defined T=0 PCI structure. (SCARD_PCI_T0)</description></item><item><term><see cref="P:PCSC.SCardPCI.T1" /></term><description>Pre-defined T=1 PCI structure. (SCARD_PCI_T1)</description></item><item><term><see cref="P:PCSC.SCardPCI.Raw" /></term><description>Pre-defined RAW PCI structure. (SCARD_PCI_RAW)</description></item></list></param>
            <param name="sendBuffer">APDU to send to the card. </param>
            <param name="receivePci">Structure of protocol information. </param>
            <param name="receiveBuffer">Response from the card. </param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description> 	Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> are too big (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> or <paramref name="sendPci" /> is <see langword="null" /> (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue" />
                        </term>
                        <description>Invalid Protocol, reader name, etc (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>APDU exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ProtocolMismatch" />
                        </term>
                        <description>Connect protocol is different than desired (SCARD_E_PROTO_MISMATCH)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ResetCard" />
                        </term>
                        <description>The card has been reset by another application (SCARD_W_RESET_CARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.RemovedCard" />
                        </term>
                        <description>The card has been removed from the reader (SCARD_W_REMOVED_CARD)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The card responds from the APDU and stores this response in <paramref name="receiveBuffer" />. <paramref name="receivePci" /> is a structure containing the following (implemented in <see cref="T:PCSC.SCardPCI" />):
                    <example><code lang="C">
            typedef struct {
            	DWORD dwProtocol;    // SCARD_PROTOCOL_T0 or SCARD_PROTOCOL_T1
            	DWORD cbPciLength;   // Length of this structure - not used
            } SCARD_IO_REQUEST;
              </code></example>
                </para>
                <para>This method calls the API function SCardTransmit(). The pointers to the pre-defined / built-in PCI structures are determinated with dlsym() on UNIX/Linux hosts and GetProcAddress() on Windows hosts.</para>
                <example>
                    <code lang="C#">
            // Create a new PC/SC context.
            var ctx = new SCardContext();
            ctx.Establish(SCardScope.System);
            
            // Connect to the reader
            var rfidReader = new SCardReader(ctx);
            SCardError rc = rfidReader.Connect(
            	"OMNIKEY CardMan 5x21 00 01", 
            	SCardShareMode.Shared, 
            	SCardProtocol.T1);
            
            if (rc != SCardError.Success) {
            	Console.WriteLine("Unable to connect to RFID card / chip. Error: " + SCardHelper.StringifyError(rc));
            	return;
            }
            
            // prepare APDU
            byte[] ucByteSend = new byte[] 
            	{
            		0xFF,   // the instruction class
            		0xCA,   // the instruction code 
            		0x00,   // parameter to the instruction
            		0x00,   // parameter to the instruction
            		0x00    // size of I/O transfer
            	};
            
            rc = rfidReader.BeginTransaction();
            if (rc != SCardError.Success) {
            	throw new Exception("Could not begin transaction.");
            }
            
            Console.Out.WriteLine("Retrieving the UID .... ");
            
            SCardPCI ioreq = new SCardPCI();   // IO returned protocol control information.
            byte[] ucByteReceive = new byte[10];
            rc = rfidReader.Transmit(
            	SCardPCI.T1,// Protocol control information, T0, T1 and Raw
            	            // are global defined protocol header structures. 
            	ucByteSend, // the actual data to be written to the card 
            	ioreq,      // The returned protocol control information 
            	ref ucByteReceive);
            
            if (rc == SCardError.Success) {
            	Console.WriteLine("Uid: {0}", BitConverter.ToString(ucByteReceive));
            } else {
            	Console.WriteLine("Error: " + SCardHelper.StringifyError(rc));
            }
                        
            rfidReader.EndTransaction(SCardReaderDisposition.Leave);
            rfidReader.Disconnect(SCardReaderDisposition.Reset);
            ctx.Release()
              </code>
                </example>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardReader.Transmit(System.IntPtr,System.Byte[],System.Byte[]@)">
            <summary>Sends an APDU to the smart card that was previously connected by <see cref="M:PCSC.ISCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)" />. </summary>
            <param name="sendPci">A pointer to a pre-defined Structure of Protocol Control Information. You can use one of the following:
                <list type="table">
                    <listheader><term>Protocol Control Information</term><description>Description</description></listheader>
                    <item><term><see cref="P:PCSC.SCardPCI.T0" /></term><description>Pre-defined T=0 PCI structure. (SCARD_PCI_T0)</description></item>
                    <item><term><see cref="P:PCSC.SCardPCI.T1" /></term><description>Pre-defined T=1 PCI structure. (SCARD_PCI_T1)</description></item>
                    <item><term><see cref="P:PCSC.SCardPCI.Raw" /></term><description>Pre-defined RAW PCI structure. (SCARD_PCI_RAW)</description></item>
                </list></param>
            <param name="sendBuffer">APDU to send to the card. </param>
            <param name="receiveBuffer">Response from the card.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description> 	Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> are too big (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> or <paramref name="sendPci" /> is <see langword="null" /> (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue" />
                        </term>
                        <description>Invalid Protocol, reader name, etc (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>APDU exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ProtocolMismatch" />
                        </term>
                        <description>Connect protocol is different than desired (SCARD_E_PROTO_MISMATCH)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ResetCard" />
                        </term>
                        <description>The card has been reset by another application (SCARD_W_RESET_CARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.RemovedCard" />
                        </term>
                        <description>The card has been removed from the reader (SCARD_W_REMOVED_CARD)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The card responds from the APDU and stores this response in <paramref name="receiveBuffer" />.</para>
                <para>This method calls the API function SCardTransmit(). The pointers to the pre-defined / built-in PCI structures are determinated with dlsym() on UNIX/Linux hosts and GetProcAddress() on Windows hosts.</para>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardReader.Transmit(PCSC.SCardPCI,System.Byte[],PCSC.SCardPCI,System.Byte[]@)">
            <summary>Sends an APDU to the smart card that was previously connected by <see cref="M:PCSC.ISCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)" />.</summary>
            <param name="sendPci">Structure of Protocol Control Information.</param>
            <param name="sendBuffer">APDU to send to the card.</param>
            <param name="receivePci">Structure of protocol information.</param>
            <param name="receiveBuffer">Response from the card.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description> 	Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> are too big (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> or <paramref name="sendPci" /> is <see langword="null" /> (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue" />
                        </term>
                        <description>Invalid Protocol, reader name, etc (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>APDU exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ProtocolMismatch" />
                        </term>
                        <description>Connect protocol is different than desired (SCARD_E_PROTO_MISMATCH)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ResetCard" />
                        </term>
                        <description>The card has been reset by another application (SCARD_W_RESET_CARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.RemovedCard" />
                        </term>
                        <description>The card has been removed from the reader (SCARD_W_REMOVED_CARD)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The card responds from the APDU and stores this response in <paramref name="receiveBuffer" />. <paramref name="sendPci" /> and <paramref name="receivePci" /> are structures containing the following (implemented in <see cref="T:PCSC.SCardPCI" />):
                    <example><code lang="C">
            typedef struct {
            	DWORD dwProtocol;    // SCARD_PROTOCOL_T0 or SCARD_PROTOCOL_T1
            	DWORD cbPciLength;   // Length of this structure - not used
            } SCARD_IO_REQUEST;
              </code></example>
                </para>
                <para>It is recommended to use pre-defined / built-in PCI structures by calling one of the following methods:
                    <list type="bullet">
                        <item><term><see cref="M:PCSC.ISCardReader.Transmit(System.IntPtr,System.Byte[],PCSC.SCardPCI,System.Byte[]@)" /></term></item>
                        <item><term><see cref="M:PCSC.ISCardReader.Transmit(System.IntPtr,System.Byte[],System.Byte[]@)" /></term></item></list></para>
                <para>This method calls the API function SCardTransmit(). The pointers to the pre-defined / built-in PCI structures are determinated with dlsym() on UNIX/Linux hosts and GetProcAddress() on Windows hosts.</para>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardReader.Transmit(System.Byte[],System.Int32,System.Byte[],System.Int32@)">
            <summary>Sends an APDU to the smart card that was previously connected by <see cref="M:PCSC.ISCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)" />. </summary>
            <param name="sendBuffer">APDU to send to the card. </param>
            <param name="sendBufferLength">The buffer size of <paramref name="sendBuffer" /> in bytes.</param>
            <param name="receiveBuffer">Response from the card.</param>
            <param name="receiveBufferLength">The buffer size of <paramref name="receiveBuffer" /> in bytes.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description> 	Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> are too big (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> is <see langword="null" /> (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue" />
                        </term>
                        <description>Invalid Protocol, reader name, etc (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>APDU exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ProtocolMismatch" />
                        </term>
                        <description>Connect protocol is different than desired (SCARD_E_PROTO_MISMATCH)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ResetCard" />
                        </term>
                        <description>The card has been reset by another application (SCARD_W_RESET_CARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.RemovedCard" />
                        </term>
                        <description>The card has been removed from the reader (SCARD_W_REMOVED_CARD)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The card responds from the APDU and stores this response in <paramref name="receiveBuffer" />.  The buffer <paramref name="receiveBuffer" /> must be initialized. The size of the returned data will be stored in <paramref name="receiveBufferLength" />. This method will return with error code <see cref="F:PCSC.SCardError.InsufficientBuffer" /> if the buffer size of <paramref name="receiveBuffer" /> is too small for the result. If one of the parameters <paramref name="sendBufferLength" /> or <paramref name="receiveBufferLength" /> is invalid, the method will throw an <see cref="T:System.ArgumentOutOfRangeException" />.</para>
                <para>This method calls the API function SCardTransmit().</para>
                <block subset="none" type="note">
                    <para>This method will only work if the reader has been connected with one of the following protocols:
                        <list type="table">
                            <listheader><term>Protocol</term><description>Description</description></listheader>
                            <item><term><see cref="F:PCSC.SCardProtocol.T0" /></term><description>T=0 active protocol.</description></item>
                            <item><term><see cref="F:PCSC.SCardProtocol.T1" /></term><description>T=1 active protocol.</description></item>
                            <item><term><see cref="F:PCSC.SCardProtocol.Raw" /></term><description>Raw active protocol.</description></item>
                        </list></para>
                </block>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardReader.Transmit(System.Byte[],System.Byte[],System.Int32@)">
            <summary>Sends an APDU to the smart card that was previously connected by <see cref="M:PCSC.ISCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)"/>.</summary>
            <param name="sendBuffer">APDU to send to the card. </param>
            <param name="receiveBuffer">Response from the card.</param>
            <param name="receiveBufferLength">The buffer size of <paramref name="receiveBuffer"/> in bytes.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success"/>
                        </term>
                        <description> 	Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer"/>
                        </term>
                        <description>
                            <paramref name="sendBuffer"/> or <paramref name="receiveBuffer"/> are too big (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle"/>
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter"/>
                        </term>
                        <description>
                            <paramref name="sendBuffer"/> or <paramref name="receiveBuffer"/> is <see langword="null"/> (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue"/>
                        </term>
                        <description>Invalid Protocol, reader name, etc (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService"/>
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted"/>
                        </term>
                        <description>APDU exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ProtocolMismatch"/>
                        </term>
                        <description>Connect protocol is different than desired (SCARD_E_PROTO_MISMATCH)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable"/>
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError"/>
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ResetCard"/>
                        </term>
                        <description>The card has been reset by another application (SCARD_W_RESET_CARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.RemovedCard"/>
                        </term>
                        <description>The card has been removed from the reader (SCARD_W_REMOVED_CARD)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The card responds from the APDU and stores this response in <paramref name="receiveBuffer"/>.  The buffer <paramref name="receiveBuffer"/> must be initialized. The size of the returned data will be stored in <paramref name="receiveBufferLength"/>. This method will return with error code <see cref="F:PCSC.SCardError.InsufficientBuffer"/> if the buffer size of <paramref name="receiveBuffer"/> is too small for the result. If the parameter <paramref name="receiveBufferLength"/> is invalid, the method will throw an <see cref="T:System.ArgumentOutOfRangeException"/>.</para>
                <para>This method calls the API function SCardTransmit().</para>
                <block subset="none" type="note">
                    <para>This method will only work if the reader has been connected with one of the following protocols:
                        <list type="table"><listheader><term>Protocol</term><description>Description</description></listheader><item><term><see cref="F:PCSC.SCardProtocol.T0"/></term><description>T=0 active protocol.</description></item><item><term><see cref="F:PCSC.SCardProtocol.T1"/></term><description>T=1 active protocol.</description></item><item><term><see cref="F:PCSC.SCardProtocol.Raw"/></term><description>Raw active protocol.</description></item></list></para>
                </block>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardReader.Transmit(System.Byte[],System.Byte[]@)">
            <summary>Sends an APDU to the smart card that was previously connected by <see cref="M:PCSC.ISCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)" />.</summary>
            <param name="sendBuffer">APDU to send to the card.</param>
            <param name="receiveBuffer">Response from the card.</param>
            <returns><list type="table">
                    <listheader><term>Return value</term><description>Description</description></listheader>
                    <item><term><see cref="F:PCSC.SCardError.Success" /></term><description>Successful (SCARD_S_SUCCESS)</description></item>
                    <item><term><see cref="F:PCSC.SCardError.InsufficientBuffer" /></term><description><paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> are too big (SCARD_E_INSUFFICIENT_BUFFER)</description></item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> is <see langword="null" /> (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue" />
                        </term>
                        <description>Invalid Protocol, reader name, etc (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>APDU exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ProtocolMismatch" />
                        </term>
                        <description>Connect protocol is different than desired (SCARD_E_PROTO_MISMATCH)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ResetCard" />
                        </term>
                        <description>The card has been reset by another application (SCARD_W_RESET_CARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.RemovedCard" />
                        </term>
                        <description>The card has been removed from the reader (SCARD_W_REMOVED_CARD)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The card responds from the APDU and stores this response in <paramref name="receiveBuffer" />. The buffer <paramref name="receiveBuffer" /> must be initialized and will be resized, if the buffer was too big.</para>
                <para>This method calls the API function SCardTransmit().</para>
                <block subset="none" type="note">
                    <para>This method will only work if the reader has been connected with one of the following protocols:
                        <list type="table">
                            <listheader><term>Protocol</term><description>Description</description></listheader>
                            <item><term><see cref="F:PCSC.SCardProtocol.T0" /></term><description>T=0 active protocol.</description></item>
                            <item><term><see cref="F:PCSC.SCardProtocol.T1" /></term><description>T=1 active protocol.</description></item>
                            <item><term><see cref="F:PCSC.SCardProtocol.Raw" /></term><description>Raw active protocol.</description></item>
                        </list></para>
                </block>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardReader.Control(System.IntPtr,System.Byte[],System.Byte[]@)">
            <summary>Sends a command directly to the IFD Handler (reader driver) to be processed by the reader.</summary>
            <param name="controlCode">Control code for the operation.</param>
            <param name="sendBuffer">Command to send to the reader.</param>
            <param name="receiveBuffer">Response from the reader.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return code</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> are too big (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> is <see langword="null" /> and the IFDHandler is version 2.0 (without
                            <paramref
                                name="controlCode" />
                            ) (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue" />
                        </term>
                        <description>Invalid value was presented (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>Data exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed(SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.UnsupportedFeature" />
                        </term>
                        <description>Driver does not support (SCARD_E_UNSUPPORTED_FEATURE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.RemovedCard" />
                        </term>
                        <description>The card has been removed from the reader(SCARD_W_REMOVED_CARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ResetCard" />
                        </term>
                        <description>The card has been reset by another application (SCARD_W_RESET_CARD)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>This method is useful for creating client side reader drivers for functions like PIN pads, biometrics, or other extensions to the normal smart card reader that are not normally handled by PC/SC.</para>
                <para>This method calls the API function SCardControl().</para>
                <block subset="none" type="note">
                    <para>The API of this function changed. In pcsc-lite 1.2.0 and before the API was not Windows(R) PC/SC compatible. This has been corrected.</para>
                </block>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardReader.Status(System.String[]@,PCSC.SCardState@,PCSC.SCardProtocol@,System.Byte[]@)">
            <summary>Returns the current status of the reader and the connected card.</summary>
            <param name="readerName">The connected readers's friendly name.</param>
            <param name="state">The current state.</param>
            <param name="protocol">The card's currently used protocol.</param>
            <param name="atr">The card's ATR.</param>
            <returns><list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>The reader object did not allocate enough memory for <paramref name="readerName" /> or for <paramref name="atr" /> (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>The reader object got invalid. Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>The reader object passed a size of null for <paramref name="readerName" /> or <paramref name="atr" />  (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoMemory" />
                        </term>
                        <description>Memory allocation failed (SCARD_E_NO_MEMORY)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description> The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InternalError" />
                        </term>
                        <description>An internal consistency check failed (SCARD_F_INTERNAL_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.RemovedCard" />
                        </term>
                        <description>The smart card has been removed (SCARD_W_REMOVED_CARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ResetCard" />
                        </term>
                        <description>The smart card has been reset (SCARD_W_RESET_CARD)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The connected readers's friendly name will be stored in <paramref name="readerName" />. The card's ATR will be stored in <paramref name="atr" />. The current state, and protocol will be stored in <paramref name="state" /> and <paramref name="protocol" /> respectively.</para>
                <para>This method calls the API function SCardStatus().</para>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardReader.GetAttrib(System.IntPtr,System.Byte[],System.Int32@)">
            <summary>Gets an attribute from the IFD Handler (reader driver).</summary>
            <param name="attributeId">Identifier for the attribute to get.</param>
            <param name="attribute">A buffer that receives the attribute.</param>
            <param name="attributeBufferLength">Size of the result contained in attribute (in bytes).</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return code</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>
                            <paramref name="attribute" /> is too big  - indicates an error in the PC/SC class library. (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>Reader buffer <paramref name="attribute" /> not large enough  - indicates an error in the PC/SC class library. (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>A parameter is <see langword="null" /> and should not (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoMemory" />
                        </term>
                        <description>Memory allocation failed (SCARD_E_NO_MEMORY)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>Data exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                </list>
                <para>The method will return <see cref="F:PCSC.SCardError.InsufficientBuffer" /> if <paramref name="attribute" /> is
                    <see langword="null" /> or if the buffer size is not sufficient.
                    <paramref name="attributeBufferLength" /> contains the required amount of bytes (size).</para>
                <para>If the method returned with <see cref="F:PCSC.SCardError.Success" /> then <paramref name="attributeBufferLength" /> contains the exact size of the result in
                    <paramref
                        name="attribute" />
                    .</para>
                <para>For an example please see <see cref="M:PCSC.ISCardReader.GetAttrib(PCSC.SCardAttribute,System.Byte[]@)" />.</para>
            </returns>
            <remarks>This method calls the API function SCardGetAttrib().</remarks>
        </member>
        <member name="M:PCSC.ISCardReader.GetAttrib(System.IntPtr,System.Byte[]@)">
            <summary>Gets an attribute from the IFD Handler (reader driver).</summary>
            <param name="attributeId">Identifier for the attribute to get.</param>
            <param name="attribute">A buffer that receives the attribute.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return code</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>
                            <paramref name="attribute" /> is too big  - indicates an error in the PC/SC class library. (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>Reader buffer <paramref name="attribute" /> not large enough  - indicates an error in the PC/SC class library. (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>A parameter is <see langword="null" /> and should not (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoMemory" />
                        </term>
                        <description>Memory allocation failed (SCARD_E_NO_MEMORY)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>Data exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                </list>
            </returns>
            <remarks>This method calls the API function SCardGetAttrib().</remarks>
        </member>
        <member name="M:PCSC.ISCardReader.GetAttrib(PCSC.SCardAttribute,System.Byte[],System.Int32@)">
            <summary>Gets an attribute from the IFD Handler (reader driver).</summary>
            <param name="attributeId">Identifier for the attribute to get.</param>
            <param name="attribute">A buffer that receives the attribute.</param>
            <param name="attributeBufferLength">Size of the result contained in attribute (in bytes).</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return code</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>
                            <paramref name="attribute" /> is too big  - indicates an error in the PC/SC class library. (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>Reader buffer <paramref name="attribute" /> not large enough  - indicates an error in the PC/SC class library. (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>A parameter is <see langword="null" /> and should not (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoMemory" />
                        </term>
                        <description>Memory allocation failed (SCARD_E_NO_MEMORY)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>Data exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                </list>
                <para>The method will return <see cref="F:PCSC.SCardError.InsufficientBuffer" /> if <paramref name="attribute" /> is
                    <see langword="null" /> or if the buffer size is not sufficient.
                    <paramref name="attributeBufferLength" /> contains the required amount of bytes (size).</para>
                <para>If the method returned with <see cref="F:PCSC.SCardError.Success" /> then <paramref name="attributeBufferLength" /> contains the exact size of the result in
                    <paramref
                        name="attribute" />
                    .</para>
                <para>For an example please see <see cref="M:PCSC.ISCardReader.GetAttrib(PCSC.SCardAttribute,System.Byte[]@)" />.</para>
            </returns>
            <remarks>This method calls the API function SCardGetAttrib().</remarks>
        </member>
        <member name="M:PCSC.ISCardReader.GetAttrib(PCSC.SCardAttribute,System.Byte[]@)">
            <summary>Gets an attribute from the IFD Handler (reader driver).</summary>
            <param name="attributeId">Identifier for the attribute to get.</param>
            <param name="attribute">A buffer that receives the attribute.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return code</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>
                            <paramref name="attribute" /> is too big  - indicates an error in the PC/SC class library. (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>Reader buffer <paramref name="attribute" /> not large enough  - indicates an error in the PC/SC class library. (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>A parameter is <see langword="null" /> and should not (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoMemory" />
                        </term>
                        <description>Memory allocation failed (SCARD_E_NO_MEMORY)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>Data exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                </list>
            </returns>
            <remarks>This method calls the API function SCardGetAttrib().</remarks>
        </member>
        <member name="M:PCSC.ISCardReader.SetAttrib(System.IntPtr,System.Byte[],System.Int32)">
            <summary>Set an attribute of the IFD Handler.</summary>
            <param name="attributeId">Identifier for the attribute to set.</param>
            <param name="attribute">Buffer that contains the new value of the attribute.</param>
            <param name="attributeBufferLength">Length of the <paramref name="attribute" /> buffer in bytes.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Column</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>attribute is too big (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>A parameter is <see langword="null" /> and should not (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>Data exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The list of attributes you can set depends on the IFD handler you are using.</para>
                <para>This method calls the API function SCardSetAttrib().</para>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardReader.SetAttrib(System.IntPtr,System.Byte[])">
            <summary>Set an attribute of the IFD Handler.</summary>
            <param name="attributeId">Identifier for the attribute to set.</param>
            <param name="attribute">Buffer that contains the new value of the attribute.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Column</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>attribute is too big (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>A parameter is <see langword="null" /> and should not (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>Data exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The list of attributes you can set depends on the IFD handler you are using.</para>
                <para>This method calls the API function SCardSetAttrib().</para>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardReader.SetAttrib(PCSC.SCardAttribute,System.Byte[],System.Int32)">
            <summary>Set an attribute of the IFD Handler.</summary>
            <param name="attributeId">Identifier for the attribute to set.</param>
            <param name="attribute">Buffer that contains the new value of the attribute.</param>
            <param name="attributeBufferLength">Length of the <paramref name="attribute" /> buffer in bytes.</param>
            <returns><list type="table">
                    <listheader>
                        <term>Column</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>attribute is too big (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>A parameter is <see langword="null" /> and should not (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>Data exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The list of attributes you can set depends on the IFD handler you are using.</para>
                <para>This method calls the API function SCardSetAttrib().</para>
            </remarks>
        </member>
        <member name="M:PCSC.ISCardReader.SetAttrib(PCSC.SCardAttribute,System.Byte[])">
            <summary>Set an attribute of the IFD Handler.</summary>
            <param name="attributeId">Identifier for the attribute to set.</param>
            <param name="attribute">Buffer that contains the new value of the attribute.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>attribute is too big (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>A parameter is <see langword="null" /> and should not (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>Data exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The list of attributes you can set depends on the IFD handler you are using.</para>
                <para>This method calls the API function SCardSetAttrib().</para>
            </remarks>
        </member>
        <member name="P:PCSC.ISCardReader.ReaderName">
            <summary>The connected reader's friendly name.</summary>
            <value>A human readable string of the reader name or <see langword="null" /> if the reader object is currently not connected.</value>
        </member>
        <member name="P:PCSC.ISCardReader.CurrentContext">
            <summary>The Smart Card context that will be used for this connection.</summary>
            <value>
                <see langword="null" /> if the reader is not connected.</value>
        </member>
        <member name="P:PCSC.ISCardReader.CurrentShareMode">
            <summary>The current mode of connection type: exclusive or shared.</summary>
        </member>
        <member name="P:PCSC.ISCardReader.ActiveProtocol">
            <summary>The currently used protocol to communicate with the card.</summary>
            <value>
                <see cref="F:PCSC.SCardProtocol.Unset" /> if not connected.</value>
        </member>
        <member name="P:PCSC.ISCardReader.CardHandle">
            <summary>A pointer (Card Handle) that can be used for C API calls.</summary>
            <value>0 if not connected.</value>
            <remarks>
                <para>This is the card handle that is returned when calling the C API function SCardConnect().</para>
            </remarks>
        </member>
        <member name="P:PCSC.ISCardReader.IsConnected">
            <summary>The current connection state of the reader.</summary>
            <value><see langword="true" /> if the reader is connected. Otherwise <see langword="false" />.</value>
        </member>
        <member name="T:PCSC.Iso7816.ClaHighPart">
            <summary>
            Coding and meaning of the class byte
            </summary>
        </member>
        <member name="F:PCSC.Iso7816.ClaHighPart.Iso0x">
            <summary>The structure and coding of command and response are as described in ISO/IEC 7816. 'x' contains the options for secure messaging <see cref="T:PCSC.Iso7816.SecureMessagingFormat"/> and the logical channel.</summary>
        </member>
        <member name="F:PCSC.Iso7816.ClaHighPart.Rfu1x">
            <summary>Reserved for future use.</summary>
        </member>
        <member name="F:PCSC.Iso7816.ClaHighPart.Rfu2x">
            <summary>Reserved for future use.</summary>
        </member>
        <member name="F:PCSC.Iso7816.ClaHighPart.Rfu3x">
            <summary>Reserved for future use.</summary>
        </member>
        <member name="F:PCSC.Iso7816.ClaHighPart.Rfu4x">
            <summary>Reserved for future use.</summary>
        </member>
        <member name="F:PCSC.Iso7816.ClaHighPart.Rfu5x">
            <summary>Reserved for future use.</summary>
        </member>
        <member name="F:PCSC.Iso7816.ClaHighPart.Rfu6x">
            <summary>Reserved for future use.</summary>
        </member>
        <member name="F:PCSC.Iso7816.ClaHighPart.Rfu7x">
            <summary>Reserved for future use.</summary>
        </member>
        <member name="F:PCSC.Iso7816.ClaHighPart.Iso8x">
            <summary>The structure of command and response are as described in ISO/IEC 7816. 'x' contains the options for secure messaging <see cref="T:PCSC.Iso7816.SecureMessagingFormat"/> and the logical channel.
            The coding (and meaning) of command and response are proprietary.</summary>
        </member>
        <member name="F:PCSC.Iso7816.ClaHighPart.Iso9x">
            <summary>The structure of command and response are as described in ISO/IEC 7816. 'x' contains the options for secure messaging <see cref="T:PCSC.Iso7816.SecureMessagingFormat"/> and the logical channel.
            The coding (and meaning) of command and response are proprietary.</summary>
        </member>
        <member name="F:PCSC.Iso7816.ClaHighPart.IsoAx">
            <summary>If not specified by the application context, structure and coding of command and response are as described in ISO/IEC 7816. 'x' contains the options for secure messaging <see cref="T:PCSC.Iso7816.SecureMessagingFormat"/> and the logical channel.</summary>
        </member>
        <member name="F:PCSC.Iso7816.ClaHighPart.IsoBx">
            <summary>The structure of command and response are as described in ISO/IEC 7816.</summary>
        </member>
        <member name="F:PCSC.Iso7816.ClaHighPart.IsoCx">
            <summary>The structure of command and response are as described in ISO/IEC 7816.</summary>
        </member>
        <member name="F:PCSC.Iso7816.ClaHighPart.ProprietaryDx">
            <summary>The structure of command and response are proprietary.</summary>
        </member>
        <member name="F:PCSC.Iso7816.ClaHighPart.ProprietaryEx">
            <summary>The structure of command and response are proprietary.</summary>
        </member>
        <member name="F:PCSC.Iso7816.ClaHighPart.ProprietaryFx">
            <summary>The structure of command and response are proprietary.</summary>
        </member>
        <member name="T:PCSC.Iso7816.ExtendedFileType">
            <summary>Category of file types</summary>
        </member>
        <member name="F:PCSC.Iso7816.ExtendedFileType.WorkingElementary">
            <summary>Working elementary file (Working EF) that is intended for storing data not interpreted by the card.</summary>
        </member>
        <member name="F:PCSC.Iso7816.ExtendedFileType.InternalElementary">
            <summary>Internal elementary file (Internal EF) that is intended for storing data interpreted and/or analyzed by the card and for control purposes.</summary>
        </member>
        <member name="F:PCSC.Iso7816.ExtendedFileType.Proprietary">
            <summary>Proprietary file type.</summary>
        </member>
        <member name="F:PCSC.Iso7816.ExtendedFileType.Dedicated">
            <summary>Dedicated file (DF) that is used for logical organization of data in a card.</summary>
        </member>
        <member name="T:PCSC.Iso7816.FileShareMode">
            <summary>
            File share mode
            </summary>
        </member>
        <member name="F:PCSC.Iso7816.FileShareMode.Shareable">
            <summary>Shareable file that supports at least concurrent access on different logical channels.</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileShareMode.NotShareable">
            <summary>Non shareable file.</summary>
        </member>
        <member name="T:PCSC.Iso7816.FileStructureType">
            <summary>File structure types</summary>
            <remarks>The following structures of elementary files are defined:
                <list type="bullet">
                    <item><description>Transparent structure; the EF contains a sequence of data units.</description></item>
                    <item><description>Record structure; the EF contains a sequence of individually identifiable records.</description></item>
                </list>
                <para>When using a record structure, the size of the particular records is either fixed or variable. Furthermore records are organized as a sequence (linear) or as a ring (cyclic).</para>
            </remarks>
        </member>
        <member name="F:PCSC.Iso7816.FileStructureType.NoInformation">
            <summary>No information about file structure given</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileStructureType.Transparent">
            <summary>Transparent. The EF has a sequence of data units</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileStructureType.LinearFixed">
            <summary>Linear fixed, no further info</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileStructureType.LinearFixedSimpleTlv">
            <summary>Linear fixed SIMPLE-TLV (Type-length-value)</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileStructureType.LinearVariable">
            <summary>Linear variable, no further info</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileStructureType.LinearVariableSimpleTlv">
            <summary>Linear variable SIMPLE-TLV (Type-length-value)</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileStructureType.Cyclic">
            <summary>Cyclic, no further info </summary>
        </member>
        <member name="F:PCSC.Iso7816.FileStructureType.CyclicSimpleTlv">
            <summary>Cyclic, SIMPLE-TLV (Type-length-value)</summary>
        </member>
        <member name="T:PCSC.Iso7816.FileType">
            <summary>File type</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileType.Dedicated">
            <summary>Dedicated file (DF) that is used for logical organization of data in the card.</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileType.Elementary">
            <summary>Elementary file (EF) that is used for storing data.</summary>
            <remarks>The data may or may not be interpreted/analyzed by the card. You need to check the extended file type <see cref="T:PCSC.Iso7816.ExtendedFileType"/>.</remarks>
        </member>
        <member name="T:PCSC.Iso7816.InstructionCode">
            <summary>
            Basic instruction codes defined in ISO/IEC 7816-4
            </summary>
        </member>
        <member name="F:PCSC.Iso7816.InstructionCode.EraseBinary">
            <summary>Erase binary</summary>
        </member>
        <member name="F:PCSC.Iso7816.InstructionCode.Verify">
            <summary>Verify</summary>
        </member>
        <member name="F:PCSC.Iso7816.InstructionCode.ManageChannel">
            <summary>Manage channel</summary>
        </member>
        <member name="F:PCSC.Iso7816.InstructionCode.ExternalAuthenticate">
            <summary>External authenticate</summary>
        </member>
        <member name="F:PCSC.Iso7816.InstructionCode.GetChallenge">
            <summary>Get challenge</summary>
        </member>
        <member name="F:PCSC.Iso7816.InstructionCode.InternalAuthenticate">
            <summary>Internal authenticate</summary>
        </member>
        <member name="F:PCSC.Iso7816.InstructionCode.InternalAuthenticateObsolete">
            <summary>Internal authenticate (obsolete)</summary>
        </member>
        <member name="F:PCSC.Iso7816.InstructionCode.SelectFile">
            <summary>Select file</summary>
        </member>
        <member name="F:PCSC.Iso7816.InstructionCode.ReadBinary">
            <summary>Read binary</summary>
        </member>
        <member name="F:PCSC.Iso7816.InstructionCode.ReadRecord">
            <summary>Read record(s)</summary>
        </member>
        <member name="F:PCSC.Iso7816.InstructionCode.GetResponse">
            <summary>Get response</summary>
        </member>
        <member name="F:PCSC.Iso7816.InstructionCode.Envelope">
            <summary>Envelope</summary>
        </member>
        <member name="F:PCSC.Iso7816.InstructionCode.GetData">
            <summary>Get data</summary>
        </member>
        <member name="F:PCSC.Iso7816.InstructionCode.WriteBinary">
            <summary>Write binary</summary>
        </member>
        <member name="F:PCSC.Iso7816.InstructionCode.WriteRecord">
            <summary>Write record</summary>
        </member>
        <member name="F:PCSC.Iso7816.InstructionCode.UpdateBinary">
            <summary>Update binary</summary>
        </member>
        <member name="F:PCSC.Iso7816.InstructionCode.PutData">
            <summary>Put data</summary>
        </member>
        <member name="F:PCSC.Iso7816.InstructionCode.UpdateData">
            <summary>Update data</summary>
        </member>
        <member name="F:PCSC.Iso7816.InstructionCode.AppendRecord">
            <summary>Append record</summary>
        </member>
        <member name="T:PCSC.Iso7816.IsoCase">
            <summary>APDU message structure for the command-response pair.</summary>
            <remarks>
                <list type="table">
                    <listheader><term>ISO case</term><description>Command data, Expected response data</description></listheader>
                    <item><term>1</term><description>Command: no data, Expected response: no data</description></item>
                    <item><term>2</term><description>Command: no data, Expected response:  data</description></item>
                    <item><term>3</term><description>Command: data, Expected response: no data</description></item>
                    <item><term>4</term><description>Command: data, Expected response: data</description></item>
                </list>
                <para>In the card capabilities, the card states that the Lc and the Le field should either be short or extended. A short command has one byte for each length field, an extended command has two bytes for each length field.</para>
            </remarks>
        </member>
        <member name="F:PCSC.Iso7816.IsoCase.Case1">
            <summary>No command data. No response data.</summary>
            <remarks>
                <list type="bullet">
                    <item><description>Lc is valued to 0.</description></item>
                    <item><description>Le is valued to 0.</description></item>
                    <item><description>No data byte is present.</description></item>
                </list>
            </remarks>
        </member>
        <member name="F:PCSC.Iso7816.IsoCase.Case2Short">
            <summary>No command data. Expected response data.</summary>
            <remarks>
                <list type="bullet">
                    <item><description>Lc is valued to 0.</description></item>
                    <item><description>Le is valued from 1 to 256.</description></item>
                    <item><description>No data byte is present.</description></item>
                </list>
            </remarks>
        </member>
        <member name="F:PCSC.Iso7816.IsoCase.Case3Short">
            <summary>Command data. No response data.</summary>
            <remarks>
                <list type="bullet">
                    <item><description>Lc is valued from 1 to 255.</description></item>
                    <item><description>Le is valued to 0.</description></item>
                    <item><description>Lc data bytes are present.</description></item>
                </list>
            </remarks>
        </member>
        <member name="F:PCSC.Iso7816.IsoCase.Case4Short">
            <summary>Command data. Expected response data.</summary>
            <remarks>
                <list type="bullet">
                    <item><description>Lc is valued from 1 to 255.</description></item>
                    <item><description>Le is valued from 1 to 256.</description></item>
                    <item><description>Lc data bytes are present.</description></item>
                </list>
            </remarks>
        </member>
        <member name="F:PCSC.Iso7816.IsoCase.Case2Extended">
            <summary>No command data. Expected response data.</summary>
            <remarks>
                <list type="bullet">
                    <item><description>Lc is valued to 0.</description></item>
                    <item><description>Le is valued from 1 to 65536.</description></item>
                    <item><description>No data byte is present.</description></item>
                </list>
            </remarks>
        </member>
        <member name="F:PCSC.Iso7816.IsoCase.Case3Extended">
            <summary>Command data. No response data.</summary>
            <remarks>
                <list type="bullet">
                    <item><description>Lc is valued from 1 to 65536.</description></item>
                    <item><description>Le is valued to 0.</description></item>
                    <item><description>Lc data bytes are present.</description></item>
                </list>
            </remarks>
        </member>
        <member name="F:PCSC.Iso7816.IsoCase.Case4Extended">
            <summary>Command data. Expected response data.</summary>
            <remarks>
                <list type="bullet">
                    <item><description>Lc is valued from 1 to 65535.</description></item>
                    <item><description>Le is valued from 1 to 65536.</description></item>
                    <item><description>Lc data bytes are present.</description></item>
                </list>
            </remarks>
        </member>
        <member name="T:PCSC.Iso7816.SecureMessagingFormat">
            <summary>
            Secure messaging (SM) format
            </summary>
        </member>
        <member name="F:PCSC.Iso7816.SecureMessagingFormat.None">
            <summary>No secure messaging</summary>
        </member>
        <member name="F:PCSC.Iso7816.SecureMessagingFormat.Proprietary">
            <summary>Proprietary secure messaging format</summary>
        </member>
        <member name="F:PCSC.Iso7816.SecureMessagingFormat.CommandHeaderNotAuthenticated">
            <summary>Command header not authenticated</summary>
        </member>
        <member name="F:PCSC.Iso7816.SecureMessagingFormat.CommandHeaderAuthenticated">
            <summary>Command header authenticated</summary>
        </member>
        <member name="T:PCSC.Iso7816.SW1Code">
            <summary>Meaning for the first status word SW1 (ISO7816-4).</summary>
        </member>
        <member name="F:PCSC.Iso7816.SW1Code.NormalDataResponse">
            <summary>Normal data response. SW2 indicates the number of remaining response bytes.</summary>
        </member>
        <member name="F:PCSC.Iso7816.SW1Code.WarningNVDataNotChanged">
            <summary>Warning. The state of non-volatile memory has not been changed.</summary>
            <remarks>SW2 could have one of the following values:
                <list type="table">
                    <listheader><term>SW2</term><description>Meaning</description></listheader>
                    <item><term>0x00</term><description>No information.</description></item>
                    <item><term>0x81</term><description>Returned data may be corrupted.</description></item>
                    <item><term>0x82</term><description>End of file or end of record reached. The number of bytes read is less than specified in <see cref="P:PCSC.Iso7816.CommandApdu.Le"/></description></item>
                    <item><term>0x83</term><description>The selected file invalidated.</description></item>
                    <item><term>0x84</term><description>FCI is not correctly formatted.</description></item>
                </list>
            </remarks>
        </member>
        <member name="F:PCSC.Iso7816.SW1Code.WarningNVDataChanged">
            <summary>Warning. The state of non-volatile memory has been changed.</summary>
            <remarks>SW2 could have one of the following values:
                <list type="table">
                    <listheader><term>SW2</term><description>Meaning</description></listheader>
                    <item><term>0x00</term><description>No information.</description></item>
                    <item><term>0x81</term><description>File filled up.</description></item>
                </list>
            </remarks>
        </member>
        <member name="F:PCSC.Iso7816.SW1Code.ErrorNVDataNotChanged">
            <summary>An error occurred. The state of non-volatile memory has not been changed.</summary>
            <remarks>SW2 should be 0x00.</remarks>
        </member>
        <member name="F:PCSC.Iso7816.SW1Code.ErrorNVDataChanged">
            <summary>An error occurred. The state of non-volatile memory has been changed.</summary>
            <remarks>SW2 could have one of the following values:
                <list type="table">
                    <listheader><term>SW2</term><description>Meaning</description></listheader>
                    <item><term>0x00</term><description>No information.</description></item>
                    <item><term>0x81</term><description>Memory failure.</description></item>
                </list>
            </remarks>
        </member>
        <member name="F:PCSC.Iso7816.SW1Code.ErrorSecurity">
            <summary>An security error occurred.</summary>
        </member>
        <member name="F:PCSC.Iso7816.SW1Code.ErrorLengthIncorrect">
            <summary>Error wrong length.</summary>
        </member>
        <member name="F:PCSC.Iso7816.SW1Code.ErrorFunctionNotSupported">
            <summary>The function defined in CLA is not supported.</summary>
            <remarks>SW2 could have one of the following values:
                <list type="table">
                    <listheader><term>SW2</term><description>Meaning</description></listheader>
                    <item><term>0x00</term><description>No information.</description></item>
                    <item><term>0x81</term><description>Logical channel not supported</description></item>
                    <item><term>0x82</term><description>Secure messaging not supported</description></item>
                </list>
            </remarks>
        </member>
        <member name="F:PCSC.Iso7816.SW1Code.ErrorCmdNotAllowed">
            <summary>Error command not allowed</summary>
            <remarks>SW2 could have one of the following values:
                <list type="table">
                    <listheader><term>SW2</term><description>Meaning</description></listheader>
                    <item><term>0x00</term><description>No information.</description></item>
                    <item><term>0x81</term><description>The command is not compatible with the file structure.</description></item>
                    <item><term>0x82</term><description>The security status is not satisfied.</description></item>
                    <item><term>0x83</term><description>The authentication method is blocked.</description></item>
                    <item><term>0x84</term><description>The referenced data has been invalidated.</description></item>
                    <item><term>0x85</term><description>The conditions are not satisfied.</description></item>
                    <item><term>0x86</term><description>The command is not allowed. No current elementary file (EF).</description></item>
                    <item><term>0x87</term><description>Expected secure messaging data objects are missing.</description></item>
                    <item><term>0x88</term><description>Secure messaging data objects are incorrect.</description></item>
                </list>
            </remarks>
        </member>
        <member name="F:PCSC.Iso7816.SW1Code.ErrorP1P2Incorrect">
            <summary>Error wrong parameters P1 and P2</summary>
            <remarks>SW2 could have one of the following values:
                <list type="table">
                    <listheader><term>SW2</term><description>Meaning</description></listheader>
                    <item><term>0x00</term><description>No information.</description></item>
                    <item><term>0x80</term><description>The parameters in the data field are incorrect.</description></item>
                    <item><term>0x81</term><description>The requested function is not supported.</description></item>
                    <item><term>0x82</term><description>File not found.</description></item>
                    <item><term>0x83</term><description>Record not found.</description></item>
                    <item><term>0x84</term><description>The file has not enough free space.</description></item>
                    <item><term>0x85</term><description>The <see cref="P:PCSC.Iso7816.CommandApdu.Lc"/> parameter is inconsistent with the TLV structure.</description></item>
                    <item><term>0x86</term><description>The parameters <see cref="P:PCSC.Iso7816.CommandApdu.P1"/> and <see cref="P:PCSC.Iso7816.CommandApdu.P2"/> are incorrect.</description></item>
                    <item><term>0x87</term><description><see cref="P:PCSC.Iso7816.CommandApdu.Lc"/> is not consistent with <see cref="P:PCSC.Iso7816.CommandApdu.P1P2"/>.</description></item>
                    <item><term>0x88</term><description></description>The referenced data was not found.</item>
                </list>
            </remarks>
        </member>
        <member name="F:PCSC.Iso7816.SW1Code.ErrorParameterIncorrect">
            <summary>Error wrong parameters P1 and P2</summary>
        </member>
        <member name="F:PCSC.Iso7816.SW1Code.ErrorP3Incorrect">
            <summary><see cref="P:PCSC.Iso7816.CommandApdu.Le"/> has the wrong length.</summary>
            <remarks>SW2 contains the exact length.</remarks>
        </member>
        <member name="F:PCSC.Iso7816.SW1Code.ErrorInsNotSupported">
            <summary>The instruction code is invalid or not supported.</summary>
        </member>
        <member name="F:PCSC.Iso7816.SW1Code.ErrorClassNotSupported">
            <summary>The Class is not supported.</summary>
        </member>
        <member name="F:PCSC.Iso7816.SW1Code.ErrorNoPreciseDiagnostic">
            <summary>No precise diagnosis available.</summary>
        </member>
        <member name="F:PCSC.Iso7816.SW1Code.Normal">
            <summary>Normal data response.</summary>
        </member>
        <member name="F:PCSC.Iso7816.SW1Code.ErrorPurseBalance">
            <summary>Error purse balance.</summary>
        </member>
        <member name="F:PCSC.Iso7816.SW1Code.ErrorMemory">
            <summary>Memory error.</summary>
        </member>
        <member name="F:PCSC.Iso7816.SW1Code.ErrorFile">
            <summary>File error.</summary>
        </member>
        <member name="F:PCSC.Iso7816.SW1Code.ErrorAuthorization">
            <summary>Error authorization.</summary>
        </member>
        <member name="F:PCSC.Iso7816.SW1Code.NormalGetResponse">
            <summary>Normal GET response</summary>
        </member>
        <member name="T:PCSC.Iso7816.TlvDataType">
            <summary>TLV (tag-length-value) type.</summary>
        </member>
        <member name="F:PCSC.Iso7816.TlvDataType.Simple">
            <summary>Simple</summary>
        </member>
        <member name="F:PCSC.Iso7816.TlvDataType.BasicEncodingRules">
            <summary>ASN.1 (abstract syntax notation) structured using basic encoding rules defined in ISO/IEC8825.</summary>
        </member>
        <member name="T:PCSC.Iso7816.InvalidApduException">
            <summary>The APDU is invalid.</summary>
        </member>
        <member name="M:PCSC.Iso7816.InvalidApduException.#ctor(System.String)">
            <summary>Initializes a new instance of the <see cref="T:PCSC.Iso7816.InvalidApduException"/> class.</summary>
            <param name="message">The error message.</param>
        </member>
        <member name="M:PCSC.Iso7816.InvalidApduException.#ctor(System.String,System.Exception)">
            <summary>Initializes a new instance of the <see cref="T:PCSC.Iso7816.InvalidApduException"/> class.</summary>
            <param name="message">The error message.</param>
            <param name="innerException">The inner exception.</param>
        </member>
        <member name="M:PCSC.Iso7816.InvalidApduException.#ctor(System.String,PCSC.Iso7816.Apdu,System.Exception)">
            <summary>Initializes a new instance of the <see cref="T:PCSC.Iso7816.InvalidApduException"/> class.</summary>
            <param name="message">The error message.</param>
            <param name="apdu">The APDU.</param>
            <param name="innerException">The inner exception.</param>
        </member>
        <member name="P:PCSC.Iso7816.InvalidApduException.InvalidApdu">
            <summary>Gets the invalid APDU.</summary>
            <value>The invalid APDU.</value>
        </member>
        <member name="T:PCSC.Iso7816.FileDescriptor">
            <summary>A file descriptor. See ISO/IEC7816-4 File control information (FCI) for more information.</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileDescriptor.FILE_TYPE_MASK">
            <summary>File type bit mask.</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileDescriptor.FILE_TYPE_DF">
            <summary>Dedicated file (DF) bit.</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileDescriptor.FILE_TYPE_WORKING_EF">
            <summary>Working elementary file (EF) bit.</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileDescriptor.FILE_TYPE_INTERNAL_EF">
            <summary>Internal elementary file (EF) bit.</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileDescriptor.FILE_SHARE_MODE_MASK">
            <summary>Sharemode bit mask.</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileDescriptor.FILE_SHARE_MODE_SHAREABLE">
            <summary>Shareable bit.</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileDescriptor.FILE_SHARE_MODE_NOTSHAREABLE">
            <summary>Non shareable bit.</summary>
        </member>
        <member name="M:PCSC.Iso7816.FileDescriptor.#ctor(System.Byte)">
            <summary>Initializes a new instance of the <see cref="T:PCSC.Iso7816.FileDescriptor"/> class.</summary>
            <param name="fileDescriptorByte">The file descriptor byte that shall be parsed.</param>
        </member>
        <member name="M:PCSC.Iso7816.FileDescriptor.IsSet(System.Byte,System.Byte)">
            <summary>Determines whether the specified bits are set.</summary>
            <param name="mask">The a bit mask.</param>
            <param name="bits">The bits to check for.</param>
            <returns>
                <c>true</c> if the specified bits are set; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:PCSC.Iso7816.FileDescriptor.op_Implicit(PCSC.Iso7816.FileDescriptor)~System.Byte">
            <summary>Implicitly converts a <see cref="T:PCSC.Iso7816.FileDescriptor"/> to a single byte.</summary>
            <param name="fd">The file descriptor.</param>
            <returns>A file descriptor as byte.</returns>
        </member>
        <member name="M:PCSC.Iso7816.FileDescriptor.op_Implicit(System.Byte)~PCSC.Iso7816.FileDescriptor">
            <summary>Implicitly converts a single byte to a <see cref="T:PCSC.Iso7816.FileDescriptor"/>.</summary>
            <param name="fd">The file descriptor as byte.</param>
            <returns>A <see cref="T:PCSC.Iso7816.FileDescriptor"/> instance as parsed result.</returns>
        </member>
        <member name="P:PCSC.Iso7816.FileDescriptor.Descriptor">
            <summary>The file descriptor as single byte structure.</summary>
        </member>
        <member name="P:PCSC.Iso7816.FileDescriptor.Type">
            <summary>Gets the file type.</summary>
        </member>
        <member name="P:PCSC.Iso7816.FileDescriptor.ExtendedType">
            <summary>Gets the extended file type.</summary>
        </member>
        <member name="P:PCSC.Iso7816.FileDescriptor.ShareMode">
            <summary>Gets the file sharing mode.</summary>
        </member>
        <member name="P:PCSC.Iso7816.FileDescriptor.Structure">
            <summary>Gets file structure information.</summary>
        </member>
        <member name="T:PCSC.Iso7816.FileStructureInfo">
            <summary>File structure information for elementary file (EF).</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileStructureInfo.FILE_STRUCTURE_MASK">
            <summary>File structure mask bits.</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileStructureInfo.FILE_STRUCTURE_NO_INFO">
            <summary>File has not structure information bit.</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileStructureInfo.FILE_STRUCTURE_TRANSPARENT">
            <summary>Transparent bit.</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileStructureInfo.FILE_STRUCTURE_LINEAR_FIXED">
            <summary>Linear fixed bit.</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileStructureInfo.FILE_STRUCTURE_LINEAR_FIXED_TLV">
            <summary>Linear fixed TLV bit.</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileStructureInfo.FILE_STRUCTURE_LINEAR_VARIABLE">
            <summary>Linear variable bit.</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileStructureInfo.FILE_STRUCTURE_LINEAR_VARIABLE_TLV">
            <summary>Linear variable TLV bit.</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileStructureInfo.FILE_STRUCTURE_CYCLIC">
            <summary>Cyclic bit.</summary>
        </member>
        <member name="F:PCSC.Iso7816.FileStructureInfo.FILE_STRUCTURE_CYCLIC_TLV">
            <summary>Cyclic TLV bit.</summary>
        </member>
        <member name="M:PCSC.Iso7816.FileStructureInfo.#ctor(System.Byte)">
            <summary>Initializes a new instance of the <see cref="T:PCSC.Iso7816.FileStructureInfo"/> class.</summary>
            <param name="fileDescriptor">The file descriptor containing the file structure information.</param>
        </member>
        <member name="P:PCSC.Iso7816.FileStructureInfo.Type">
            <summary>Gets the file structure type.</summary>
        </member>
        <member name="P:PCSC.Iso7816.FileStructureInfo.IsTransparent">
            <summary>Gets a value indicating whether the structuring method is a transparent EF.</summary>
        </member>
        <member name="P:PCSC.Iso7816.FileStructureInfo.RecordInfo">
            <summary>Gets the record information.</summary>
            <remarks>Returns a <see cref="P:PCSC.Iso7816.FileStructureInfo.RecordInfo"/> instance if the file structuring method is a record EF. Otherwise <see langword="null"/>.</remarks>
        </member>
        <member name="P:PCSC.Iso7816.FileStructureInfo.FileDescriptor">
            <summary>Gets the file descriptor.</summary>
            <value>The file descriptor as byte.</value>
        </member>
        <member name="P:PCSC.Iso7816.FileStructureInfo.IsRecord">
            <summary>Gets a value indicating whether the structuring method is a record EF.</summary>
            <value>
                <c>true</c> if the EF is record; otherwise, <c>false</c>.</value>
        </member>
        <member name="T:PCSC.Iso7816.IIsoReader">
            <summary>A ISO/IEC 7816 compliant reader.</summary>
        </member>
        <member name="M:PCSC.Iso7816.IIsoReader.ConstructCommandApdu(PCSC.Iso7816.IsoCase)">
            <summary>Constructs a command APDU using the active protocol of the reader.</summary>
            <param name="isoCase">The ISO case that shall be used for this command.</param>
            <returns>An empty command APDU.</returns>
        </member>
        <member name="M:PCSC.Iso7816.IIsoReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)">
            <summary>Connects the specified reader.</summary>
            <param name="readerName">Name of the reader.</param>
            <param name="mode">The share mode.</param>
            <param name="protocol">The communication protocol. <seealso cref="M:PCSC.ISCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)"/></param>
        </member>
        <member name="M:PCSC.Iso7816.IIsoReader.Disconnect(PCSC.SCardReaderDisposition)">
            <summary>Disconnects the currently connected reader.</summary>
            <param name="disposition">The action that shall be executed after disconnect.</param>
        </member>
        <member name="M:PCSC.Iso7816.IIsoReader.Transmit(PCSC.Iso7816.CommandApdu)">
            <summary>Transmits the specified command APDU.</summary>
            <param name="commandApdu">The command APDU.</param>
            <returns>A response containing one ore more <see cref="T:PCSC.Iso7816.ResponseApdu"/>.</returns>
        </member>
        <member name="P:PCSC.Iso7816.IIsoReader.CurrentContext">
            <summary>Gets the current context.</summary>
        </member>
        <member name="P:PCSC.Iso7816.IIsoReader.Reader">
            <summary>Gets the current reader.</summary>
        </member>
        <member name="P:PCSC.Iso7816.IIsoReader.ReaderName">
            <summary>Gets the name of the reader.</summary>
        </member>
        <member name="P:PCSC.Iso7816.IIsoReader.ActiveProtocol">
            <summary>Gets the active protocol.</summary>
        </member>
        <member name="P:PCSC.Iso7816.IIsoReader.CurrentShareMode">
            <summary>Gets the current share mode.</summary>
        </member>
        <member name="P:PCSC.Iso7816.IIsoReader.RetransmitWaitTime">
            <summary>Gets or sets the wait time in milliseconds that is used if an APDU needs to be retransmitted.</summary>
        </member>
        <member name="P:PCSC.Iso7816.IIsoReader.MaxReceiveSize">
            <summary>Gets the maximum number of bytes that can be received.</summary>
        </member>
        <member name="T:PCSC.Iso7816.InstructionByte">
            <summary>A class that describes the instruction of a command APDU.</summary>
        </member>
        <member name="M:PCSC.Iso7816.InstructionByte.#ctor(PCSC.Iso7816.InstructionCode)">
            <summary>Initializes a new instance of the <see cref="T:PCSC.Iso7816.InstructionByte"/> class.</summary>
            <param name="code">The instruction code.</param>
        </member>
        <member name="M:PCSC.Iso7816.InstructionByte.#ctor(System.Byte)">
            <summary>Initializes a new instance of the <see cref="T:PCSC.Iso7816.InstructionByte"/> class.</summary>
            <param name="instruction">The instruction as byte.</param>
        </member>
        <member name="M:PCSC.Iso7816.InstructionByte.op_Implicit(PCSC.Iso7816.InstructionByte)~System.Byte">
            <summary>Implicitly converts a <see cref="T:PCSC.Iso7816.InstructionByte"/> to a single INS byte.</summary>
            <returns>A byte containing INS.</returns>
        </member>
        <member name="M:PCSC.Iso7816.InstructionByte.op_Implicit(System.Byte)~PCSC.Iso7816.InstructionByte">
            <summary>Implicitly converts a byte to a <see cref="T:PCSC.Iso7816.InstructionByte"/> instance.</summary>
            <param name="instruction">The instruction as byte.</param>
            <returns>A <see cref="T:PCSC.Iso7816.InstructionByte"/> class</returns>
        </member>
        <member name="M:PCSC.Iso7816.InstructionByte.op_Implicit(PCSC.Iso7816.InstructionCode)~PCSC.Iso7816.InstructionByte">
            <summary>Implicitly converts a <see cref="T:PCSC.Iso7816.InstructionCode"/> to a <see cref="T:PCSC.Iso7816.InstructionByte"/> instance.</summary>
            <param name="code">The instruction code.</param>
            <returns>A <see cref="T:PCSC.Iso7816.InstructionByte"/> instance</returns>
        </member>
        <member name="P:PCSC.Iso7816.InstructionByte.Code">
            <summary>Gets or sets the instruction code.</summary>
        </member>
        <member name="P:PCSC.Iso7816.InstructionByte.Value">
            <summary>Gets or sets the instruction as value.</summary>
        </member>
        <member name="T:PCSC.Iso7816.RecordInfo">
            <summary>Record structure information.</summary>
            <remarks>Elementary files (EF) that have a sequence of individually identifiable records should use one of the following methods for structuring:
                <list type="bullet">
                    <item><description>Linear elementary file (EF) with records of variable size.</description></item>
                    <item><description>Linear elementary file (EF) with records of fixed size.</description></item>
                    <item><description>Cyclic elementary file (EF) with records of fixed size.</description></item>
                </list>
            </remarks>
        </member>
        <member name="F:PCSC.Iso7816.RecordInfo.FILE_STRUCTURING_MASK">
            <summary>File structuring mask bits.</summary>
        </member>
        <member name="F:PCSC.Iso7816.RecordInfo.FILE_STRUCTURE_IS_LINEAR_FIXED">
            <summary>Linear fixed bit.</summary>
        </member>
        <member name="F:PCSC.Iso7816.RecordInfo.FILE_STRUCTURE_IS_LINEAR_VARIABLE">
            <summary>Linear variable bit.</summary>
        </member>
        <member name="F:PCSC.Iso7816.RecordInfo.FILE_STRUCTURE_IS_CYCLIC">
            <summary>Cyclic bit.</summary>
        </member>
        <member name="M:PCSC.Iso7816.RecordInfo.#ctor(System.Byte)">
            <summary>Initializes a new instance of the <see cref="T:PCSC.Iso7816.RecordInfo"/> class.</summary>
            <param name="fileDescriptor">The file descriptor.</param>
        </member>
        <member name="P:PCSC.Iso7816.RecordInfo.IsCyclic">
            <summary>Gets a value indicating whether the EF has cyclic records.</summary>
            <value><c>true</c> if the EF is cyclic; otherwise, <c>false</c>.</value>
        </member>
        <member name="P:PCSC.Iso7816.RecordInfo.IsLinear">
            <summary>Gets a value indicating whether the EF has linear records.</summary>
            <value><c>true</c> if the EF is linear; otherwise, <c>false</c>.</value>
        </member>
        <member name="P:PCSC.Iso7816.RecordInfo.IsFixed">
            <summary>Gets a value indicating whether the EF's record size is fixed.</summary>
            <value><c>true</c> if the record's size is fixed; otherwise, <c>false</c>.</value>
        </member>
        <member name="P:PCSC.Iso7816.RecordInfo.IsVariable">
            <summary>Gets a value indicating whether the EF's record size is variable.</summary>
            <value><c>true</c> if the record's size is variable; otherwise, <c>false</c>.</value>
        </member>
        <member name="P:PCSC.Iso7816.RecordInfo.IsSimpleTlv">
            <summary>Gets a value indicating whether the EF contains simple TLV records.</summary>
            <value><c>true</c> if the EF contains simple TLV records; otherwise, <c>false</c>.</value>
        </member>
        <member name="P:PCSC.Iso7816.RecordInfo.FileDescriptor">
            <summary>Gets the file descriptor.</summary>
            <value>The file descriptor as byte.</value>
        </member>
        <member name="T:PCSC.Iso7816.Response">
            <summary>An aggregation of <see cref="T:PCSC.Iso7816.ResponseApdu"/> instances.</summary>
            <remarks>When using <see cref="M:PCSC.Iso7816.IIsoReader.Transmit(PCSC.Iso7816.CommandApdu)"/> the result can consist of one or more <see cref="T:PCSC.Iso7816.ResponseApdu"/>. If the <see cref="T:PCSC.Iso7816.IIsoReader"/> receives a SW1=0x61 status word, it will automatically transmit a GET RESPONSE command to reader (after waiting <see cref="P:PCSC.Iso7816.IIsoReader.RetransmitWaitTime"/> ms) to catch all remaining <see cref="T:PCSC.Iso7816.ResponseApdu"/>.</remarks>
        </member>
        <member name="M:PCSC.Iso7816.Response.#ctor">
            <summary>Initializes a new instance of the <see cref="T:PCSC.Iso7816.Response"/> class.</summary>
        </member>
        <member name="M:PCSC.Iso7816.Response.Add(PCSC.Iso7816.ResponseApdu)">
            <summary>Adds the specified response APDU.</summary>
            <param name="responseApdu">The response APDU.</param>
        </member>
        <member name="M:PCSC.Iso7816.Response.Add(PCSC.SCardPCI)">
            <summary>Adds the specified PCI.</summary>
            <param name="receivePci">The PCI.</param>
        </member>
        <member name="M:PCSC.Iso7816.Response.GetData">
            <summary>An aggregation of all data bytes in receive order.</summary>
            <returns>An aggregation of all data bytes from all <see cref="T:PCSC.Iso7816.ResponseApdu"/>.</returns>
        </member>
        <member name="M:PCSC.Iso7816.Response.Get(System.Int32)">
            <summary>Gets the <see cref="T:PCSC.Iso7816.ResponseApdu"/> of the specified index.</summary>
            <param name="index">The index.</param>
            <returns>The <see cref="T:PCSC.Iso7816.ResponseApdu"/> of the specified index.</returns>
        </member>
        <member name="M:PCSC.Iso7816.Response.GetPci(System.Int32)">
            <summary>Gets the <see cref="T:PCSC.SCardPCI"/> of the specified index.</summary>
            <param name="index">The index.</param>
            <returns>The <see cref="T:PCSC.SCardPCI"/> of the specified index.</returns>
        </member>
        <member name="M:PCSC.Iso7816.Response.GetEnumerator">
            <summary>Returns an enumerator.</summary>
            <returns>A <see cref="T:System.Collections.Generic.IEnumerator`1"/>, that enumerates all received <see cref="T:PCSC.Iso7816.ResponseApdu"/> instance.</returns>
        </member>
        <member name="M:PCSC.Iso7816.Response.System#Collections#IEnumerable#GetEnumerator">
            <summary>Returns an enumerator.</summary>
            <returns>A <see cref="T:System.Collections.Generic.IEnumerator`1"/>, that enumerates all received <see cref="T:PCSC.Iso7816.ResponseApdu"/> instance.</returns>
        </member>
        <member name="P:PCSC.Iso7816.Response.Item(System.Int32)">
            <summary>Gets the <see cref="T:PCSC.Iso7816.ResponseApdu"/> at the specified index.</summary>
            <value>The <see cref="T:PCSC.Iso7816.ResponseApdu"/>.</value>
            <param name="index">The index.</param>
            <returns>The <see cref="T:PCSC.Iso7816.ResponseApdu"/> at the specified index.</returns>
        </member>
        <member name="P:PCSC.Iso7816.Response.SW1">
            <summary>The SW1 status of the last received <see cref="T:PCSC.Iso7816.ResponseApdu"/>.</summary>
        </member>
        <member name="P:PCSC.Iso7816.Response.SW2">
            <summary>The SW2 status of the last received <see cref="T:PCSC.Iso7816.ResponseApdu"/>.</summary>
        </member>
        <member name="P:PCSC.Iso7816.Response.Count">
            <summary>Gets the number of received <see cref="T:PCSC.Iso7816.ResponseApdu"/>.</summary>
        </member>
        <member name="P:PCSC.Iso7816.Response.PciCount">
            <summary>Gets the number of received <see cref="T:PCSC.SCardPCI"/>.</summary>
        </member>
        <member name="P:PCSC.Iso7816.Response.StatusWord">
            <summary>A combination of SW1 and SW2 as 16bit status word.</summary>
            <remarks>It contains the status word of the last received <see cref="T:PCSC.Iso7816.ResponseApdu"/>.</remarks>
        </member>
        <member name="P:PCSC.Iso7816.Response.HasData">
            <summary>
                <see langword="true"/> if at least one <see cref="T:PCSC.Iso7816.ResponseApdu"/> contains data bytes.</summary>
        </member>
        <member name="T:PCSC.Iso7816.IsoReader">
            <summary>A ISO/IEC 7816 compliant reader.</summary>
        </member>
        <member name="M:PCSC.Iso7816.IsoReader.Finalize">
            <summary>Finalizes an instance of the <see cref="T:PCSC.Iso7816.IsoReader"/> class.</summary>
        </member>
        <member name="M:PCSC.Iso7816.IsoReader.#ctor(PCSC.ISCardReader,System.Boolean)">
            <summary>Initializes a new instance of the <see cref="T:PCSC.Iso7816.IsoReader"/> class.</summary>
            <param name="reader">The supplied reader will be used for communication with the smart card.</param>
            <param name="disconnectReaderOnDispose">if set to <c>true</c> the supplied <paramref name="reader"/> will be disconnected on <see cref="M:PCSC.Iso7816.IsoReader.Dispose"/>.</param>
            <exception cref="T:System.ArgumentNullException">If reader is <see langword="null"/></exception>
        </member>
        <member name="M:PCSC.Iso7816.IsoReader.#ctor(PCSC.ISCardReader,System.String,PCSC.SCardShareMode,PCSC.SCardProtocol,System.Boolean)">
            <summary>Initializes a new instance of the <see cref="T:PCSC.Iso7816.IsoReader"/> class and immediately connects to the reader.</summary>
            <param name="reader">The supplied reader will be used for communication with the smart card.</param>
            <param name="readerName">Name of the reader to connect with.</param>
            <param name="mode">The share mode.</param>
            <param name="protocol">The communication protocol. <seealso cref="M:PCSC.ISCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)"/></param>
            <param name="disconnectReaderOnDispose">if set to <c>true</c> the supplied <paramref name="reader"/> will be disconnected on <see cref="M:PCSC.Iso7816.IsoReader.Dispose"/>.</param>
        </member>
        <member name="M:PCSC.Iso7816.IsoReader.#ctor(PCSC.ISCardContext,System.Boolean)">
            <summary>Initializes a new instance of the <see cref="T:PCSC.Iso7816.IsoReader"/> class that will create its own instance of a <see cref="T:PCSC.SCardReader"/>.</summary>
            <param name="context">A context to the PC/SC Resource Manager.</param>
            <param name="releaseContextOnDispose">if set to <c>true</c> the <paramref name="context"/> will be released on <see cref="M:PCSC.Iso7816.IsoReader.Dispose"/>.</param>
            <exception cref="T:System.ArgumentNullException">If <paramref name="context"/> is <see langword="null"/></exception>
        </member>
        <member name="M:PCSC.Iso7816.IsoReader.#ctor(PCSC.ISCardContext,System.String,PCSC.SCardShareMode,PCSC.SCardProtocol,System.Boolean)">
            <summary>Initializes a new instance of the <see cref="T:PCSC.Iso7816.IsoReader"/> class that will create its own instance of a <see cref="T:PCSC.SCardReader"/> and immediately connect.</summary>
            <param name="context">A context to the PC/SC Resource Manager.</param>
            <param name="readerName">Name of the reader to connect with.</param>
            <param name="mode">The share mode.</param>
            <param name="protocol">The communication protocol. <seealso cref="M:PCSC.ISCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)"/></param>
            <param name="releaseContextOnDispose">if set to <c>true</c> the <paramref name="context"/> will be released on <see cref="M:PCSC.Iso7816.IsoReader.Dispose"/>.</param>
        </member>
        <member name="M:PCSC.Iso7816.IsoReader.ConstructCommandApdu(PCSC.Iso7816.IsoCase)">
            <summary>Constructs a command APDU using the active protocol of the reader.</summary>
            <param name="isoCase">The ISO case that shall be used for this command.</param>
            <returns>An empty command APDU.</returns>
        </member>
        <member name="M:PCSC.Iso7816.IsoReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)">
            <summary>Connects the specified reader.</summary>
            <param name="readerName">Name of the reader.</param>
            <param name="mode">The share mode.</param>
            <param name="protocol">The communication protocol. <seealso cref="M:PCSC.ISCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)"/></param>
        </member>
        <member name="M:PCSC.Iso7816.IsoReader.Disconnect(PCSC.SCardReaderDisposition)">
            <summary>Disconnects the currently connected reader.</summary>
            <param name="disposition">The action that shall be executed after disconnect.</param>
        </member>
        <member name="M:PCSC.Iso7816.IsoReader.ThrowExceptionOnSCardError(PCSC.SCardError)">
            <summary>Throws an exception if <paramref name="sc" /> is not <see cref="F:PCSC.SCardError.Success" />.</summary>
            <param name="sc">The error code returned from the native PC/SC library.</param>
        </member>
        <member name="M:PCSC.Iso7816.IsoReader.Transmit(PCSC.Iso7816.CommandApdu)">
            <summary>Transmits the specified command APDU.</summary>
            <param name="commandApdu">The command APDU.</param>
            <returns>A response containing one ore more <see cref="T:PCSC.Iso7816.ResponseApdu"/>.</returns>
        </member>
        <member name="M:PCSC.Iso7816.IsoReader.Dispose">
            <summary>
            Releases unmanaged and managed resources.
            </summary>
        </member>
        <member name="M:PCSC.Iso7816.IsoReader.Dispose(System.Boolean)">
            <summary>
            Releases unmanaged and - optionally - managed resources.
            </summary>
            <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
        </member>
        <member name="P:PCSC.Iso7816.IsoReader.CurrentContext">
            <summary>Gets the current context.</summary>
        </member>
        <member name="P:PCSC.Iso7816.IsoReader.Reader">
            <summary>Gets the current reader.</summary>
        </member>
        <member name="P:PCSC.Iso7816.IsoReader.ReaderName">
            <summary>Gets the name of the reader.</summary>
        </member>
        <member name="P:PCSC.Iso7816.IsoReader.ActiveProtocol">
            <summary>Gets the active protocol.</summary>
        </member>
        <member name="P:PCSC.Iso7816.IsoReader.CurrentShareMode">
            <summary>Gets the current share mode.</summary>
        </member>
        <member name="P:PCSC.Iso7816.IsoReader.RetransmitWaitTime">
            <summary>Gets or sets the wait time in milliseconds that is used if an APDU needs to be retransmitted.</summary>
            <value>Default is 0 ms</value>
        </member>
        <member name="P:PCSC.Iso7816.IsoReader.MaxReceiveSize">
            <summary>Gets the maximum number of bytes that can be received.</summary>
            <value>Default is 128 bytes.</value>
        </member>
        <member name="T:PCSC.Iso7816.ResponseApduEnumerator">
            <summary>
            A <see cref="T:PCSC.Iso7816.ResponseApdu"/> enumerator.
            </summary>
        </member>
        <member name="M:PCSC.Iso7816.ResponseApduEnumerator.#ctor(System.Collections.Generic.List{PCSC.Iso7816.ResponseApdu})">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.Iso7816.ResponseApduEnumerator"/> class.
            </summary>
            <param name="lst">A list of <see cref="T:PCSC.Iso7816.ResponseApdu"/>.</param>
        </member>
        <member name="M:PCSC.Iso7816.ResponseApduEnumerator.#ctor(System.Collections.Generic.IEnumerable{PCSC.Iso7816.ResponseApdu})">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.Iso7816.ResponseApduEnumerator"/> class.
            </summary>
            <param name="apdus">An enumeration of <see cref="T:PCSC.Iso7816.ResponseApdu"/>.</param>
        </member>
        <member name="M:PCSC.Iso7816.ResponseApduEnumerator.#ctor(PCSC.Iso7816.ResponseApdu[])">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.Iso7816.ResponseApduEnumerator"/> class.
            </summary>
            <param name="apdus">An array of <see cref="T:PCSC.Iso7816.ResponseApdu"/>.</param>
        </member>
        <member name="M:PCSC.Iso7816.ResponseApduEnumerator.System#Collections#IEnumerable#GetEnumerator">
            <summary>
            Returns an enumerator.
            </summary>
            <returns>
            A <see cref="T:System.Collections.IEnumerator"/> objekt, that can be used to enumerate through all <see cref="T:PCSC.Iso7816.ResponseApdu"/>.
            </returns>
        </member>
        <member name="M:PCSC.Iso7816.ResponseApduEnumerator.GetEnumerator">
            <summary>
            Returns an enumerator.
            </summary>
            <returns>
            A <see cref="T:System.Collections.IEnumerator"/> objekt, that can be used to enumerate through all <see cref="T:PCSC.Iso7816.ResponseApdu"/>.
            </returns>
        </member>
        <member name="M:PCSC.Iso7816.ResponseApduEnumerator.MoveNext">
            <summary>
            Sets the enumerator the the next element.
            </summary>
            <returns><c>true</c> if there exists another element. Otherwise <c>false</c>.</returns>
        </member>
        <member name="M:PCSC.Iso7816.ResponseApduEnumerator.Reset">
            <summary>
            Resets the enumerator to the beginning.
            </summary>
        </member>
        <member name="M:PCSC.Iso7816.ResponseApduEnumerator.Dispose">
            <summary>
            Disposes the enumerator and releases all managed resources.
            </summary>
        </member>
        <member name="M:PCSC.Iso7816.ResponseApduEnumerator.Dispose(System.Boolean)">
            <summary>
            Releases unmanaged and - optionally - managed resources.
            </summary>
            <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
        </member>
        <member name="P:PCSC.Iso7816.ResponseApduEnumerator.Current">
            <summary>
            Returns the current element.
            </summary>
            <returns>The current element.</returns>
            <exception cref="T:System.InvalidOperationException"> if the enumerator reaches the end and therefore <see cref="P:PCSC.Iso7816.ResponseApduEnumerator.Current"/> is invalid.</exception>
        </member>
        <member name="P:PCSC.Iso7816.ResponseApduEnumerator.System#Collections#IEnumerator#Current">
            <summary>
            Returns the current element.
            </summary>
            <returns>The current element.</returns>
            <exception cref="T:System.InvalidOperationException"> if the enumerator reaches the end and therefore <see cref="P:PCSC.Iso7816.ResponseApduEnumerator.Current"/> is invalid.</exception>
        </member>
        <member name="T:PCSC.SCardContext">
            <summary>Manages an application context to the PC/SC Resource Manager.</summary>
            <remarks>Each thread of an application shall use its own SCardContext.</remarks>
        </member>
        <member name="M:PCSC.SCardContext.Finalize">
            <summary>
            Destroys application context to the PC/SC Resource Manager.
            </summary>
        </member>
        <member name="M:PCSC.SCardContext.Establish(PCSC.SCardScope)">
            <summary>Creates an Application Context to the PC/SC Resource Manager.</summary>
            <param name="scope">Scope of the establishment. This can either be a local or remote connection.</param>
            <remarks>
                <para>Creates an Application Context for a client. This must be the first WinSCard function called in a PC/SC application. Each thread of an application shall use its own <see cref="T:PCSC.SCardContext" />.</para>
                <para>This method calls the API function SCardEstablishContext().</para>
                <example>
                    <code lang="C#">
            var context = new SCardContext();
            context.Establish(SCardScope.System);
              </code>
                </example>
            </remarks>
        </member>
        <member name="M:PCSC.SCardContext.Release">
            <summary>Destroys a communication context to the PC/SC Resource Manager and frees unmanaged resources.</summary>
            <remarks>
                <para>This must be the last method called in a PC/SC application. <see cref="M:PCSC.SCardContext.Dispose"/> calls this method silently.</para>
                <para>This method calls the API function SCardReleaseContext().</para>
                <example>
                    <code lang="C#">
            var context = new SCardContext();
            
            // establish context
            context.Establish(SCardScope.System);
            
            // release context
            context.Release();
              </code>
                </example>
            </remarks>
        </member>
        <member name="M:PCSC.SCardContext.CheckValidity">
            <summary>Checks the validity of the current context.</summary>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>The context is valid. (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>The context is invalid. (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>Call this function to determine whether a smart card context handle is still valid. After a smart card context handle has been set by <see cref="M:PCSC.SCardContext.Establish(PCSC.SCardScope)" />, it may become not valid if the resource manager service has been shut down.</para>
                <para>This method calls the API function SCardIsValidContext().</para>
            </remarks>
        </member>
        <member name="M:PCSC.SCardContext.IsValid">
            <summary>Checks the validity of the current context.</summary>
            <returns><see langword="true" /> if the context is valid.</returns>
            <remarks>Call this function to determine whether a smart card context handle is still valid. After a smart card context handle has been set by <see cref="M:PCSC.SCardContext.Establish(PCSC.SCardScope)" />, it may become not valid if the resource manager service has been shut down.
                <example>
                    <code lang="C#">
            using (var context = new SCardContext()) {
                context.Establish(SCardScope.System);
                Console.WriteLine("Context is valid? {0}", context.IsValid());
            }
              </code>
                </example>
            </remarks>
        </member>
        <member name="M:PCSC.SCardContext.ReEstablish">
            <summary>Re-Establishes an Application Context to the PC/SC Resource Manager with the last used <see cref="T:PCSC.SCardScope"/>.</summary>
            <remarks>This method must not be called before <see cref="M:PCSC.SCardContext.Establish(PCSC.SCardScope)"/></remarks>
        </member>
        <member name="M:PCSC.SCardContext.Dispose">
            <summary>Disposes a PC/SC application context.</summary>
            <remarks>If a context to the PC/SC Resource Manager is established, Dispose() will call the <see cref="M:PCSC.SCardContext.Release"/> method silently.</remarks>
        </member>
        <member name="M:PCSC.SCardContext.Dispose(System.Boolean)">
            <summary>Disposes a PC/SC application context.</summary>
            <param name="disposing">Ignored. If an application context to the PC/SC Resource Manager has been established it will call the <see cref="M:PCSC.SCardContext.Release"/> method.</param>
        </member>
        <member name="M:PCSC.SCardContext.GetReaders(System.String[])">
            <summary>Returns a list of currently available readers on the system.</summary>
            <param name="groups">List of groups to list readers.</param>
            <returns>An array of <see cref="T:System.String" />s containing all Smart Card readers found by the PC/SC Resource Manager.</returns>
            <remarks>
                <para>Groups are not used on Linux/UNIX machines using the PC/SC Lite daemon.</para>
                <para>This method calls the API function SCardListReaders().</para>
                <example>
                    <code lang="C#">
            using (var context = new SCardContext()) {
                context.Establish(SCardScope.System);
            
                // list all configured reader groups
                Console.WriteLine("\nCurrently configured readers groups: ");
                var groups = context.GetReaderGroups();
                foreach (string group in groups) {
            	    Console.WriteLine("\t" + group);
                }
            
                // list readers for each group
                foreach (string group in groups) {
            	    Console.WriteLine("\nGroup " + group + " contains ");
            	    foreach (string reader in context.GetReaders(new string[] {group})) {
            		    Console.WriteLine("\t" + reader);
                    }
                }
            }
              </code>
                </example>
            </remarks>
        </member>
        <member name="M:PCSC.SCardContext.GetReaders">
            <summary>Returns a list of currently available readers on the system.</summary>
            <returns>An array of <see cref="T:System.String" />s containing all Smart Card readers found by the PC/SC Resource Manager.</returns>
            <remarks>
                <para>This method calls the API function SCardListReaders().</para>
                <example>
                    <code lang="C#">
            using (var context = new SCardContext()) {
                context.Establish(SCardScope.System);
            
                // list all (smart card) readers
                Console.WriteLine("Currently connected readers: ");
                var readers = context.GetReaders();
                foreach (string reader in readers) {
            	    Console.WriteLine("\t" + reader);
                }
            }
              </code>
                </example>
            </remarks>
        </member>
        <member name="M:PCSC.SCardContext.GetReaderGroups">
            <summary>Returns a list of currently available reader groups on the system. </summary>
            <returns>An array of <see cref="T:System.String" />s containing all Smart Card reader groups found by the PC/SC Resource Manager.</returns>
            <remarks>
                <para>This method calls the API function SCardListReaderGroups().</para>
                <example>
                    <code lang="C#">
            using (var context = new SCardContext()) {
                context.Establish(SCardScope.System);
            
                // list all configured reader groups
                Console.WriteLine("Currently configured readers groups: ");
                var groups = context.GetReaderGroups();
                foreach (string group in groups) {
            	    Console.WriteLine("\t" + group);
                }
            }
              </code>
                </example>
            </remarks>
        </member>
        <member name="M:PCSC.SCardContext.GetReaderStatus(System.String)">
            <summary>Returns the current reader status.</summary>
            <param name="readerName">The requested reader.</param>
            <returns>A <see cref="T:PCSC.SCardReaderState" /> that contains the current reader status.</returns>
            <remarks>
                <para>This method uses the <see cref="M:PCSC.SCardContext.GetStatusChange(System.IntPtr,PCSC.SCardReaderState[])" /> method with a timeout of zero.</para>
                <example>
                    <code lang="C#">
            // Retrieve the names of all installed readers.
            using (var ctx = new SCardContext()) {
                ctx.Establish(SCardScope.System);
                var readerNames = ctx.GetReaders();
            
                // Get the current status of the first reader.
                var state = ctx.GetReaderStatus(readerNames[0]);
            
                Console.WriteLine("Reader: " + state.ReaderName);
                Console.WriteLine("CurrentState: " + state.CurrentState 
            	    + " EventState: " + state.EventState + "\n"
            	    + "CurrentStateValue: " + state.CurrentStateValue 
            	    + " EventStateValue: " + state.EventStateValue);
                Console.WriteLine("UserData: " + state.UserData.ToString()
            	    + " CardChangeEventCnt: " + state.CardChangeEventCnt);
                Console.WriteLine("ATR: " + BitConverter.ToString(state.Atr));
            }
              </code>
                </example>
            </remarks>
        </member>
        <member name="M:PCSC.SCardContext.GetReaderStatus(System.String[])">
            <summary>Returns the current reader status of all requested readers.</summary>
            <param name="readerNames">Requested reader names.</param>
            <returns>An array of <see cref="T:PCSC.SCardReaderState" />s that contains the current reader status of each requested reader.</returns>
            <remarks>
                <para>This method uses the <see cref="M:PCSC.SCardContext.GetStatusChange(System.IntPtr,PCSC.SCardReaderState[])" /> method with a timeout of zero.</para>
                <example>
                    <code lang="C#">
            // Retrieve the names of all installed readers.
            using (var ctx = new SCardContext()) {
                ctx.Establish(SCardScope.System);
                var readerNames = ctx.GetReaders();
            
                // Get the current status for all readers.
                var states = ctx.GetReaderStatus(readerNames);
            
                foreach (var state in states) {
            	    Console.WriteLine("------------------------------");
            	    Console.WriteLine("Reader: " + state.ReaderName);
            	    Console.WriteLine("CurrentState: " + state.CurrentState 
            		    + " EventState: " + state.EventState + "\n"
            		    + "CurrentStateValue: " + state.CurrentStateValue 
            		    + " EventStateValue: " + state.EventStateValue);
            	    Console.WriteLine("UserData: " + state.UserData.ToString()
            		    + " CardChangeEventCnt: " + state.CardChangeEventCnt);
            	    Console.WriteLine("ATR: " + BitConverter.ToString(state.Atr));
                }
            }
              </code>
                </example>
            </remarks>
        </member>
        <member name="M:PCSC.SCardContext.GetStatusChange(System.IntPtr,PCSC.SCardReaderState[])">
            <summary>Blocks execution until the current availability of the cards in a specific set of readers changes.</summary>
            <param name="timeout">Maximum waiting time (in milliseconds) for status change, zero or <see cref="P:PCSC.SCardContext.INFINITE"/> for infinite.</param>
            <param name="readerStates">Structures of readers with current states.</param>
            <returns>
                <para>A <see cref="T:PCSC.SCardError"/> indicating an error or the success.The caller receives status changes through the <see cref="T:PCSC.SCardReaderState"/> array.</para>
                <list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success"/>
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService"/>
                        </term>
                        <description>Server is not running (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter"/>
                        </term>
                        <description>
                            <paramref name="readerStates"/> is invalid or <see langword="null"/> (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue"/>
                        </term>
                        <description>Invalid States, reader name, etc (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle"/>
                        </term>
                        <description>Invalid context (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable"/>
                        </term>
                        <description>The reader is unavailable (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Timeout"/>
                        </term>
                        <description>The user-specified timeout value has expired (SCARD_E_TIMEOUT)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>This method receives a structure or list of structures containing reader names. It then blocks for a change in state to occur for a maximum blocking time of <paramref name="timeout"/> or forever if <see cref="P:PCSC.SCardContext.INFINITE"/> is used.</para>
                <para>The new event state will be contained in <see cref="P:PCSC.SCardReaderState.EventState"/>. A status change might be a card insertion or removal event, a change in ATR, etc.</para>
                <para>To wait for a reader event (reader added or removed) you may use the special reader name "\\?PnP?\Notification". If a reader event occurs the state of this reader will change and the bit <see cref="F:PCSC.SCRState.Changed"/> will be set.</para>
                <para>This method calls the API function SCardGetStatusChange().</para>
            </remarks>
        </member>
        <member name="M:PCSC.SCardContext.Cancel">
            <summary>Cancels all pending blocking requests on the <see cref="M:PCSC.SCardContext.GetStatusChange(System.IntPtr,PCSC.SCardReaderState[])" /> method.</summary>
            <returns>
                <list type="table">
                    <listheader><term>Return value</term><description>Description</description></listheader>
                    <item><term><see cref="F:PCSC.SCardError.Success" /></term><description>Successful (SCARD_S_SUCCESS)</description></item>
                    <item><term><see cref="F:PCSC.SCardError.InvalidHandle" /></term><description>Invalid context (SCARD_E_INVALID_HANDLE)</description></item>
                    <item><term><see cref="F:PCSC.SCardError.NoService" /></term><description>Server is not running (SCARD_E_NO_SERVICE)</description></item>
                    <item><term><see cref="F:PCSC.SCardError.CommunicationError" /></term><description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description></item>
                </list>
            </returns>
            <remarks>This method calls the API function SCardCancel().</remarks>
        </member>
        <member name="P:PCSC.SCardContext.Handle">
            <summary>A pointer (Application Context) that can be used for C API calls.</summary>
            <value>The returned Application Context handle. Is <see cref="F:System.IntPtr.Zero"/> if not context has been established.</value>
            <remarks>This is the Application Context handle that is returned when calling the C API function SCardEstablishContext().</remarks>
        </member>
        <member name="P:PCSC.SCardContext.MaxAtrSize">
            <summary>Maximum ATR size.</summary>
            <value>
                <list type="table">
                    <listheader><term>Platform</term><description>Maximum ATR size</description></listheader>
                    <item>
                        <term>Windows (Winscard.dll)</term>
                        <description>36</description>
                    </item>
                    <item>
                        <term>UNIX/Linux (PC/SClite)</term>
                        <description>33</description>
                    </item>
                </list>
            </value>
            <remarks>Attention: Size depends on platform.</remarks>
        </member>
        <member name="P:PCSC.SCardContext.Infinite">
            <summary>Infinite timeout.</summary>
            <value>0xFFFFFFFF</value>
        </member>
        <member name="P:PCSC.SCardContext.MAX_ATR_SIZE">
            <summary>Maximum ATR size.</summary>
            <value>
                <list type="table">
                    <listheader><term>Platform</term><description>Maximum ATR size</description></listheader>
                    <item>
                        <term>Windows (Winscard.dll)</term>
                        <description>36</description>
                    </item>
                    <item>
                        <term>UNIX/Linux (PC/SClite)</term>
                        <description>33</description>
                    </item>
                </list>
            </value>
            <remarks>Attention: Size depends on platform.</remarks>
        </member>
        <member name="P:PCSC.SCardContext.INFINITE">
            <summary>Infinite timeout.</summary>
            <value>0xFFFFFFFF</value>
        </member>
        <member name="T:PCSC.SCardHelper">
            <summary>
            Helper class that offers methods to convert various values into strings.
            </summary>
        </member>
        <member name="M:PCSC.SCardHelper.StringifyError(PCSC.SCardError)">
            <summary>
            Returns a human readable text for the given PC/SC error code.
            </summary>
            <param name="code">Error or return code.</param>
            <returns>A human readable string.</returns>
            <remarks>Warning! This method behaves differently compared to the original PC/SC-Lite pcsc_stringify_error function. Instead of the (const) variable name it returns a short text description.</remarks>
        </member>
        <member name="M:PCSC.SCardHelper.GetAttrDesc``1(``0)">
            <summary>
            Returns a description string of an enumeration attribute.
            </summary>
            <typeparam name="T">attribute type</typeparam>
            <param name="attr">attribute</param>
            <returns>If available: a description string of the specified attribute. Otherwise null.</returns>
        </member>
        <member name="T:PCSC.SCardMonitor">
            <summary>Monitors a Smart Card reader and triggers events on status changes.</summary>
            <remarks>Creates a new thread and calls the <see cref="M:PCSC.SCardContext.GetStatusChange(System.IntPtr,PCSC.SCardReaderState[])" /> of the given <see cref="T:PCSC.ISCardContext" /> object.</remarks>
        </member>
        <member name="M:PCSC.SCardMonitor.Finalize">
            <summary>
            Releases unmanaged resources and stops the background thread (if running).
            </summary>
        </member>
        <member name="M:PCSC.SCardMonitor.#ctor(PCSC.ISCardContext,System.Boolean)">
            <summary>Creates a new SCardMonitor object that is able to listen for certain smart card / reader changes.</summary>
            <param name="context">A new Application Context to the PC/SC Resource Manager.</param>
            <param name="releaseContextOnDispose">If <see langword="true"/> the supplied <paramref name="context"/> will be released (using <see cref="M:PCSC.ISCardContext.Release"/>) on <see cref="M:PCSC.SCardMonitor.Dispose"/></param>
            <remarks>The monitor object should use its own application context to the PC/SC Resource Manager. It will create a (new) backgroud thread that will listen for status changes.
                <para>Warning: You MUST dispose the monitor instance otherwise the background thread will run forever!</para>
            </remarks>
        </member>
        <member name="M:PCSC.SCardMonitor.#ctor(PCSC.ISCardContext,PCSC.SCardScope,System.Boolean)">
            <summary>Creates a new SCardMonitor object that is able to listen for certain smart card / reader changes.</summary>
            <param name="context">A new Application Context to the PC/SC Resource Manager.</param>
            <param name="scope">Scope of the establishment. This can either be a local or remote connection.</param>
            <param name="releaseContextOnDispose">If <see langword="true"/> the supplied <paramref name="context"/> will be released (using <see cref="M:PCSC.ISCardContext.Release"/>) on <see cref="M:PCSC.SCardMonitor.Dispose"/></param>
            <remarks>The monitor object should use its own application context to the PC/SC Resource Manager. It will create a (new) backgroud thread that will listen for status changes.
                <para>Warning: You MUST dispose the monitor instance otherwise the background thread will run forever!</para>
            </remarks>
        </member>
        <member name="M:PCSC.SCardMonitor.GetCurrentStateValue(System.Int32)">
            <summary>Returns the current state of a reader that is currently being monitored.</summary>
            <param name="index">The number of the desired reader. The index must be between 0 and (<see cref="P:PCSC.SCardMonitor.ReaderCount"/> - 1).</param>
            <returns>The current state of reader with index number <paramref name="index"/>.</returns>
            <remarks>This method will throw an <see cref="T:System.ArgumentOutOfRangeException"/> if the specified <paramref name="index"/> is invalid. You can enumerate all readers currently monitored with the <see cref="P:PCSC.SCardMonitor.ReaderNames"/> property.</remarks>
            <exception cref="T:System.ArgumentOutOfRangeException">If the specified <paramref name="index"/> is invalid.</exception>
        </member>
        <member name="M:PCSC.SCardMonitor.GetCurrentState(System.Int32)">
            <summary>Returns the current state of a reader that is currently being monitored.</summary>
            <param name="index">The number of the desired reader. The index must be between 0 and (<see cref="P:PCSC.SCardMonitor.ReaderCount"/> - 1).</param>
            <returns>The current state of reader with index number <paramref name="index"/>.</returns>
            <remarks>This method will throw an <see cref="T:System.ArgumentOutOfRangeException"/> if the specified <paramref name="index"/> is invalid. You can enumerate all readers currently monitored with the <see cref="P:PCSC.SCardMonitor.ReaderNames"/> property.</remarks>
            <exception cref="T:System.ArgumentOutOfRangeException">If the specified <paramref name="index"/> is invalid.</exception>
        </member>
        <member name="M:PCSC.SCardMonitor.GetReaderName(System.Int32)">
            <summary>Returns the reader name of a given <paramref name="index"/>.</summary>
            <param name="index">The number of the desired reader. The index must be between 0 and (<see cref="P:PCSC.SCardMonitor.ReaderCount"/> - 1).</param>
            <returns>A reader name.</returns>
            <remarks>This method will throw an <see cref="T:System.ArgumentOutOfRangeException"/> if the specified <paramref name="index"/> is invalid. You can enumerate all readers currently monitored with the <see cref="P:PCSC.SCardMonitor.ReaderNames"/> property.</remarks>
            <exception cref="T:System.ArgumentOutOfRangeException">If the specified <paramref name="index"/> is invalid.</exception>
        </member>
        <member name="M:PCSC.SCardMonitor.Dispose">
            <summary>Disposes the object.</summary>
            <remarks>Dispose will call <see cref="M:PCSC.SCardMonitor.Cancel"/> in order to stop the background thread. The application context will be disposed if you configured the monitor to do so at construction time.</remarks>
        </member>
        <member name="M:PCSC.SCardMonitor.Dispose(System.Boolean)">
            <summary>Disposes the object.</summary>
            <param name="disposing">Ignored. It will call <see cref="M:PCSC.SCardMonitor.Cancel"/> in order to stop the background thread. The application context will be disposed if the user configured the monitor to do so at construction time.</param>
        </member>
        <member name="M:PCSC.SCardMonitor.Cancel">
            <summary>Cancels the monitoring of all readers that are currently being monitored.</summary>
            <remarks>This will end the monitoring. The method calls the <see cref="M:PCSC.ISCardContext.Cancel"/> method of its Application Context to the PC/SC Resource Manager.</remarks>
        </member>
        <member name="M:PCSC.SCardMonitor.Start(System.String)">
            <param name="readerName">The Smart Card reader that shall be monitored.</param>
            <summary>Starts to monitor a single Smart Card reader for status changes.</summary>
            <remarks>
                <example>
                    <code lang="C#">
            // Create a new monitor object with its own PC/SC context.
            var monitor = new SCardMonitor(
            	new SCardContext(),
            	SCardScope.System,
                true);
            
            // Start to monitor a single reader.
            monitor.Start("OMNIKEY CardMan 5x21 00 00");
              </code>
                </example>
                <para>Do not forget to register for at least one event:
                    <list type="table">
                        <listheader><term>Event</term><description>Description</description></listheader>
                        <item><term><see cref="E:PCSC.SCardMonitor.CardInserted" /></term><description>A new card has been inserted.</description></item>
                        <item><term><see cref="E:PCSC.SCardMonitor.CardRemoved" /></term><description>A card has been removed.</description></item>
                        <item><term><see cref="E:PCSC.SCardMonitor.Initialized" /></term><description>Initial status.</description></item>
                        <item><term><see cref="E:PCSC.SCardMonitor.StatusChanged" /></term><description>A general status change.</description></item>
                        <item><term><see cref="E:PCSC.SCardMonitor.MonitorException" /></term><description>An error occurred.</description></item>
                    </list></para>
            </remarks>
        </member>
        <member name="M:PCSC.SCardMonitor.Start(System.String[])">
            <param name="readerNames">A <see cref="T:System.String" /> array of reader names that shall be monitored.</param>
            <summary>Starts to monitor a range Smart Card readers for status changes.</summary>
            <remarks>
                <example>
                    <code lang="C#">
            string [] readerNames;
            using (var ctx = new SCardContext()) {
                ctx.Establish(SCardScope.System);
                // Retrieve the names of all installed readers.
                readerNames = ctx.GetReaders();
                ctx.Release();
            }
            
            // Create a new monitor object with its own PC/SC context.
            var monitor = new SCardMonitor(
            	new SCardContext(),
            	SCardScope.System,
                true);
            
            foreach (string reader in readerNames) {
            	Console.WriteLine("Start monitoring for reader {0}.", reader);
            }
                    
            // Start monitoring multiple readers.
            monitor.Start(readerNames);
            </code>
                </example>
                <para>Do not forget to register for at least one event:
                    <list type="table">
                        <listheader><term>Event</term><description>Description</description></listheader>
                        <item><term><see cref="E:PCSC.SCardMonitor.CardInserted" /></term><description>A new card has been inserted.</description></item>
                        <item><term><see cref="E:PCSC.SCardMonitor.CardRemoved" /></term><description>A card has been removed.</description></item>
                        <item><term><see cref="E:PCSC.SCardMonitor.Initialized" /></term><description>Initial status.</description></item>
                        <item><term><see cref="E:PCSC.SCardMonitor.StatusChanged" /></term><description>A general status change.</description></item>
                        <item><term><see cref="E:PCSC.SCardMonitor.MonitorException" /></term><description>An error occurred.</description></item>
                    </list></para>
            </remarks>
        </member>
        <member name="E:PCSC.SCardMonitor.StatusChanged">
            <summary>A general reader status change.</summary>
            <remarks>
                <example>
                    <code lang="C#">
            // Create a monitor object with its own PC/SC context.
            var monitor = new SCardMonitor(
            	new SCardContext(),
            	SCardScope.System,
                true);
            
            // Point the callback function(s) to the pre-defined method MyStatusChangedMethod.
            monitor.StatusChanged += new StatusChangeEvent(MyStatusChangedMethod);
            
            // Start to monitor the reader
            monitor.Start("OMNIKEY CardMan 5x21 00 01");
              </code>
                </example>
            </remarks>
        </member>
        <member name="E:PCSC.SCardMonitor.CardInserted">
            <summary>A new card has been inserted.</summary>
            <remarks>
                <example>
                    <code lang="C#">
            // Create a monitor object with its own PC/SC context.
            var monitor = new SCardMonitor(
            	new SCardContext(),
            	SCardScope.System,
                true);
            
            monitor.CardInserted += new CardInsertedEvent(MyCardInsertedMethod);
            
            // Start to monitor the reader
            monitor.Start("OMNIKEY CardMan 5x21 00 01");
              </code>
                </example>
            </remarks>
        </member>
        <member name="E:PCSC.SCardMonitor.CardRemoved">
            <summary>A card has been removed.</summary>
            <remarks>
                <example>
                    <code lang="C#">
            // Create a monitor object with its own PC/SC context.
            var monitor = new SCardMonitor(
            	new SCardContext(),
            	SCardScope.System,
                true);
            
            monitor.CardRemoved += new CardRemovedEvent(MyCardRemovedMethod);
            
            // Start to monitor the reader
            monitor.Start("OMNIKEY CardMan 5x21 00 01");
              </code>
                </example>
            </remarks>
        </member>
        <member name="E:PCSC.SCardMonitor.Initialized">
            <summary>The monitor object has been initialized.</summary>
            <remarks>
                <para>This event appears only once for each reader after calling <see cref="M:PCSC.SCardMonitor.Start(System.String)"/> or <see cref="M:PCSC.SCardMonitor.Start(System.String[])"/>.</para>
                <example>
                    <code lang="C#">
            // Create a monitor object with its own PC/SC context.
            var monitor = new SCardMonitor(
            	new SCardContext(),
            	SCardScope.System,
                true);
            
            monitor.Initialized += new CardInitializedEvent(MyCardInitializedMethod);
            
            // Start to monitor the reader
            monitor.Start("OMNIKEY CardMan 5x21 00 01");
              </code>
                </example>
            </remarks>
        </member>
        <member name="E:PCSC.SCardMonitor.MonitorException">
            <summary>An PC/SC error occurred during monitoring.</summary>
            <remarks>
                <example>
                    <code lang="C#">
            // Create a monitor object with its own PC/SC context.
            var monitor = new SCardMonitor(
            	new SCardContext(),
            	SCardScope.System,
                true);
            
            monitor.MonitorException += new MonitorExceptionEvent(MyMonitorExceptionMethod);
            
            // Start to monitor the reader
            monitor.Start("OMNIKEY CardMan 5x21 00 01");
              </code>
                </example>
            </remarks>
        </member>
        <member name="P:PCSC.SCardMonitor.ReaderNames">
            <summary>All readers that are currently being monitored.</summary>
            <value>A <see cref="T:System.String" /> array of reader names. <see langword="null" /> if no readers is being monitored.</value>
        </member>
        <member name="P:PCSC.SCardMonitor.Monitoring">
            <summary>Indicates if there are readers currently monitored.</summary>
            <value>
                <list type="table">
                    <listheader>
                        <term>Value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see langword="true" />
                        </term>
                        <description>Monitoring process ongoing.</description>
                    </item>
                    <item>
                        <term>
                            <see langword="false" />
                        </term>
                        <description>No monitoring.</description>
                    </item>
                </list>
            </value>
        </member>
        <member name="P:PCSC.SCardMonitor.ReaderCount">
            <summary>The number of readers that currently being monitored.</summary>
            <value>Return 0 if no reader is being monitored.</value>
        </member>
        <member name="T:PCSC.SCardPCI">
            <summary>Structure of protocol control information.</summary>
            <remarks>
                <para>Is a structure containing the following:</para>
                <para>
                    <example>
                        <code lang="C">
            typedef struct {
            	DWORD dwProtocol;    // SCARD_PROTOCOL_T0 or SCARD_PROTOCOL_T1
            	DWORD cbPciLength;   // Length of this structure - not used
            } SCARD_IO_REQUEST;
            </code>
                    </example>
                </para>
                <para>The pointers to the pre-defined / built-in PCI structures are determinated with dlsym() on UNIX/Linux hosts and GetProcAddress() on Windows hosts.</para>
            </remarks>
        </member>
        <member name="M:PCSC.SCardPCI.Finalize">
            <summary>Destroys the object and frees unmanaged memory.</summary>
        </member>
        <member name="M:PCSC.SCardPCI.#ctor">
            <summary>Initializes a new instance of the <see cref="T:PCSC.SCardPCI"/> class.</summary>
        </member>
        <member name="M:PCSC.SCardPCI.#ctor(PCSC.SCardProtocol,System.Int32)">
            <summary>Creates a new SCardPCI object.</summary>
            <param name="protocol">
                <list type="table"><listheader><term>Protocol Control Information</term><description>Description</description></listheader>
                    <item><term><see cref="P:PCSC.SCardPCI.T0" /></term><description>Pre-defined T=0 PCI structure. (SCARD_PCI_T0)</description></item>
                    <item><term><see cref="P:PCSC.SCardPCI.T1" /></term><description>Pre-defined T=1 PCI structure. (SCARD_PCI_T1)</description></item>
                    <item><term><see cref="P:PCSC.SCardPCI.Raw" /></term><description>Pre-defined RAW PCI structure. (SCARD_PCI_RAW)</description></item>
                </list>
            </param>
            <param name="bufLength">Size of this structure in bytes.</param>
        </member>
        <member name="M:PCSC.SCardPCI.#ctor(PCSC.SCardProtocol,System.Byte[])">
            <summary>Creates a new SCardPCI object.</summary>
            <param name="protocol">
                <list type="table">
                    <listheader><term>Protocol Control Information</term><description>Description</description></listheader>
                    <item><term><see cref="P:PCSC.SCardPCI.T0" /></term><description>Pre-defined T=0 PCI structure. (SCARD_PCI_T0)</description></item>
                    <item><term><see cref="P:PCSC.SCardPCI.T1" /></term><description>Pre-defined T=1 PCI structure. (SCARD_PCI_T1)</description></item>
                    <item><term><see cref="P:PCSC.SCardPCI.Raw" /></term><description>Pre-defined RAW PCI structure. (SCARD_PCI_RAW)</description></item>
                </list>
            </param>
            <param name="pciData">User data.</param>
        </member>
        <member name="M:PCSC.SCardPCI.Dispose">
            <summary>Disposes the instance and frees unmanaged memory.</summary>
        </member>
        <member name="M:PCSC.SCardPCI.Dispose(System.Boolean)">
            <summary>
            Disposes the instance and frees unmanaged memory.
            </summary>
            <param name="disposing">Ignored</param>
        </member>
        <member name="M:PCSC.SCardPCI.GetPci(PCSC.SCardProtocol)">
            <summary>Receives a PCI pointer to a given protocol.</summary>
            <param name="protocol">The desired protocol.</param>
            <returns>A pointer to the PCI structure in the native system library.</returns>
        </member>
        <member name="P:PCSC.SCardPCI.Protocol">
            <summary>Protocol</summary>
            <value>
                <list type="table">
                    <listheader><term>Protocol Control Information</term><description>Description</description></listheader>
                    <item><term><see cref="P:PCSC.SCardPCI.T0" /></term><description>Pre-defined T=0 PCI structure. (SCARD_PCI_T0)</description></item>
                    <item><term><see cref="P:PCSC.SCardPCI.T1" /></term><description>Pre-defined T=1 PCI structure. (SCARD_PCI_T1)</description></item>
                    <item><term><see cref="P:PCSC.SCardPCI.Raw" /></term><description>Pre-defined RAW PCI structure. (SCARD_PCI_RAW)</description></item>
                </list>
            </value>
        </member>
        <member name="P:PCSC.SCardPCI.PciLength">
            <summary>Size of this structure in bytes.</summary>
        </member>
        <member name="P:PCSC.SCardPCI.Data">
            <summary>User data.</summary>
        </member>
        <member name="P:PCSC.SCardPCI.T0">
            <summary>Pre-defined T=0 PCI structure. (SCARD_PCI_T0)</summary>
            <value>A pointer to the C structure in the system library.</value>
            <remarks>This pointer to the pre-defined / built-in PCI structure is determinated with dlsym() on UNIX/Linux hosts and GetProcAddress() on Windows hosts.</remarks>
        </member>
        <member name="P:PCSC.SCardPCI.T1">
            <summary>Pre-defined T=1 PCI structure. (SCARD_PCI_T1)</summary>
            <value>A pointer to the C structure in the system library.</value>
            <remarks>This pointer to the pre-defined / built-in PCI structure is determinated with dlsym() on UNIX/Linux hosts and GetProcAddress() on Windows hosts.</remarks>
        </member>
        <member name="P:PCSC.SCardPCI.Raw">
            <summary>Pre-defined RAW PCI structure. (SCARD_PCI_RAW)</summary>
            <value>A pointer to the C structure in the system library.</value>
            <remarks>This pointer to the pre-defined / built-in PCI structure is determinated with dlsym() on UNIX/Linux hosts and GetProcAddress() on Windows hosts.</remarks>
        </member>
        <member name="T:PCSC.SCardReader">
            <summary>A reader class that implements the most basic PC/SC functions to operate on smart cards, RFID tags and so on.</summary>
            <remarks>It will use the system's native PC/SC API.</remarks>
        </member>
        <member name="M:PCSC.SCardReader.Finalize">
            <summary>Unmanaged resources (card handle) are released!</summary>
        </member>
        <member name="M:PCSC.SCardReader.#ctor(PCSC.ISCardContext)">
            <summary>Creates a new smart card reader object.</summary>
            <param name="context">Connection context to the PC/SC Resource Manager.</param>
            <remarks>
                <example>
                    <code lang="C#">
            // Create PC/SC context
            var ctx = new SCardContext();
            ctx.Establish(SCardScope.System);
            
            // Create reader object and connect to the Smart Card
            var myReader = new SCardReader(ctx);
            var rc = myReader.Connect(
            	"OMNIKEY CardMan 5321", 
            	SCardShareMode.Shared, 
            	SCardProtocol.T1);
              </code>
                </example>
            </remarks>
            <exception cref="T:System.ArgumentNullException">If <paramref name="context"/> is <see langword="null"/></exception>
        </member>
        <member name="M:PCSC.SCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)">
            <summary>Establishes a connection to the Smart Card reader.</summary>
            <param name="readerName">Reader name to connect to.</param>
            <param name="mode">Mode of connection type: exclusive or shared.
                <list type="table">
                    <listheader>
                        <term>Value</term><description>Description</description>
                    </listheader>
                    <item>
                        <term><see cref="F:PCSC.SCardShareMode.Shared" /></term>
                        <description>This application will allow others to share the reader. (SCARD_SHARE_SHARED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardShareMode.Exclusive" />
                        </term>
                        <description>This application will NOT allow others to share the reader. (SCARD_SHARE_EXCLUSIVE)</description>
                    </item>
                </list>
            </param>
            <param name="preferredProtocol">Desired protocol use.</param>
            <returns>An error code / return value:
                <para>
                    <list type="table">
                        <listheader>
                            <term>Error code</term><description>Description</description>
                        </listheader>
                        <item>
                            <term>
                                <see cref="F:PCSC.SCardError.Success" />
                            </term>
                            <description>Successful (SCARD_S_SUCCESS)</description>
                        </item>
                        <item>
                            <term>
                                <see cref="F:PCSC.SCardError.InvalidHandle" />
                            </term>
                            <description>Invalid context handle (SCARD_E_INVALID_HANDLE)</description>
                        </item>
                        <item>
                            <term>
                                <see cref="F:PCSC.SCardError.InvalidParameter" />
                            </term>
                            <description>
                                <paramref name="preferredProtocol" /> is invalid or <see langword="null" />  (SCARD_E_INVALID_PARAMETER)</description>
                        </item>
                        <item>
                            <term>
                                <see cref="F:PCSC.SCardError.InvalidValue" />
                            </term>
                            <description>Invalid sharing mode, requested protocol, or reader name (SCARD_E_INVALID_VALUE)</description>
                        </item>
                        <item>
                            <term>
                                <see cref="F:PCSC.SCardError.NoService" />
                            </term>
                            <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                        </item>
                        <item>
                            <term>
                                <see cref="F:PCSC.SCardError.NoSmartcard" />
                            </term>
                            <description>No smart card present (SCARD_E_NO_SMARTCARD)</description>
                        </item>
                        <item>
                            <term>
                                <see cref="F:PCSC.SCardError.NotReady" />
                            </term>
                            <description>Could not allocate the desired port (SCARD_E_NOT_READY)</description>
                        </item>
                        <item>
                            <term>
                                <see cref="F:PCSC.SCardError.ProtocolMismatch" />
                            </term>
                            <description>Requested protocol is unknown (SCARD_E_PROTO_MISMATCH)</description>
                        </item>
                        <item>
                            <term>
                                <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                            </term>
                            <description>Could not power up the reader or card (SCARD_E_READER_UNAVAILABLE)</description>
                        </item>
                        <item>
                            <term>
                                <see cref="F:PCSC.SCardError.SharingViolation" />
                            </term>
                            <description>Someone else has exclusive rights (SCARD_E_SHARING_VIOLATION)</description>
                        </item>
                        <item>
                            <term>
                                <see cref="F:PCSC.SCardError.UnknownReader" />
                            </term>
                            <description>The reader name is <see langword="null" /> (SCARD_E_UNKNOWN_READER)</description>
                        </item>
                        <item>
                            <term>
                                <see cref="F:PCSC.SCardError.UnsupportedFeature" />
                            </term>
                            <description>Protocol not supported (SCARD_E_UNSUPPORTED_FEATURE)</description>
                        </item>
                        <item>
                            <term>
                                <see cref="F:PCSC.SCardError.CommunicationError" />
                            </term>
                            <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                        </item>
                        <item>
                            <term>
                                <see cref="F:PCSC.SCardError.InternalError" />
                            </term>
                            <description>An internal consistency check failed (SCARD_F_INTERNAL_ERROR)</description>
                        </item>
                        <item>
                            <term>
                                <see cref="F:PCSC.SCardError.UnpoweredCard" />
                            </term>
                            <description>Card is not powered (SCARD_W_UNPOWERED_CARD)</description>
                        </item>
                        <item>
                            <term>
                                <see cref="F:PCSC.SCardError.UnresponsiveCard" />
                            </term>
                            <description>Card is mute (SCARD_W_UNRESPONSIVE_CARD)</description>
                        </item>
                    </list>
                </para>
            </returns>
            <remarks>
                <para>
                    <paramref name="preferredProtocol" />  is a bit mask of acceptable protocols for the connection. You can use (<see cref="F:PCSC.SCardProtocol.T0" /> | <see cref="F:PCSC.SCardProtocol.T1" />) if you do not have a preferred protocol. The protocol used with this connection will be stored in <see cref="P:PCSC.ISCardReader.ActiveProtocol" />.</para>
                <para>This method calls the API function SCardConnect().</para>
                <example>
                    <code lang="C#">
            // Establish PC/SC context.
            SCardContext ctx = new SCardContext();
            ctx.Establish(SCardScope.System);
            
            // Create a Smart Card reader object and connect to it.
            ISCardReader reader = new SCardReader(ctx);
            SCardError serr = reader.Connect("OMNIKEY CardMan 5x21 00 00",
            	SCardShareMode.Shared,
            	SCardProtocol.Any);
              </code>
                </example>
            </remarks>
        </member>
        <member name="M:PCSC.SCardReader.Disconnect(PCSC.SCardReaderDisposition)">
            <summary>Terminates a connection made through <see cref="M:PCSC.ISCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)" />.</summary>
            <param name="disconnectExecution">Reader function to execute.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue" />
                        </term>
                        <description>Invalid <paramref name="disconnectExecution" /> (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoSmartcard" />
                        </term>
                        <description>No smart card present (SCARD_E_NO_SMARTCARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>This method calls the API function SCardDisconnect().</para>
                <example>
                    <code lang="C#">
            // Establish PC/SC context.
            SCardContext ctx = new SCardContext();
            ctx.Establish(SCardScope.System);
            
            // Create a Smart Card reader object and connect to it.
            ISCardReader reader = new SCardReader(ctx);
            SCardError serr = reader.Connect("OMNIKEY", SCardShareMode.Shared, SCardProtocol.Any);
            
            // Disconnect the reader and reset the SmartCard.
            reader.Disconnect(SCardReaderDisposition.Reset);
              </code>
                </example>
            </remarks>
        </member>
        <member name="M:PCSC.SCardReader.Reconnect(PCSC.SCardShareMode,PCSC.SCardProtocol,PCSC.SCardReaderDisposition)">
            <summary>Reestablishes a connection to a reader that was previously connected to using
                <see
                    cref="M:PCSC.ISCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)" />
                .</summary>
            <param name="mode">Mode of connection type: exclusive/shared.
                <list type="table">
                    <listheader>
                        <term>Value</term><description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardShareMode.Shared" />
                        </term>
                        <description>This application will allow others to share the reader. (SCARD_SHARE_SHARED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardShareMode.Exclusive" />
                        </term>
                        <description>This application will NOT allow others to share the reader. (SCARD_SHARE_EXCLUSIVE)</description>
                    </item>
                </list>
            </param>
            <param name="preferredProtocol">Desired protocol use.</param>
            <param name="initialExecution">Desired action taken on the card/reader before reconnect.</param>
            <returns>An error code / return value:
                <list type="table">
                    <listheader>
                        <term>Error code</term><description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid context handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>
                            <paramref name="preferredProtocol" /> is invalid or <see langword="null" />  (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue" />
                        </term>
                        <description>Invalid sharing mode, requested protocol, or reader name (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoSmartcard" />
                        </term>
                        <description>No smart card present (SCARD_E_NO_SMARTCARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotReady" />
                        </term>
                        <description>Could not allocate the desired port (SCARD_E_NOT_READY)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ProtocolMismatch" />
                        </term>
                        <description>Requested protocol is unknown (SCARD_E_PROTO_MISMATCH)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>Could not power up the reader or card (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.SharingViolation" />
                        </term>
                        <description>Someone else has exclusive rights (SCARD_E_SHARING_VIOLATION)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.UnsupportedFeature" />
                        </term>
                        <description>Protocol not supported (SCARD_E_UNSUPPORTED_FEATURE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InternalError" />
                        </term>
                        <description>An internal consistency check failed (SCARD_F_INTERNAL_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.RemovedCard" />
                        </term>
                        <description>The smart card has been removed (SCARD_W_REMOVED_CARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.UnresponsiveCard" />
                        </term>
                        <description>Card is mute (SCARD_W_UNRESPONSIVE_CARD)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>
                    <paramref name="preferredProtocol" />  is a bit mask of acceptable protocols for the connection. You can use (<see cref="F:PCSC.SCardProtocol.T0" /> | <see cref="F:PCSC.SCardProtocol.T1" />) if you do not have a preferred protocol. The protocol used with this connection will be stored in <see cref="P:PCSC.ISCardReader.ActiveProtocol" />.</para>
                <para>This method calls the API function SCardReconnect().</para>
            </remarks>
        </member>
        <member name="M:PCSC.SCardReader.BeginTransaction">
            <summary>Establishes a temporary exclusive access mode for doing a serie of commands in a transaction.</summary>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.SharingViolation" />
                        </term>
                        <description>Someone else has exclusive rights (SCARD_E_SHARING_VIOLATION)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>You might want to use this when you are selecting a few files and then writing a large file so you can make sure that another application will not change the current file. If another application has a lock on this reader or this application is in
                    <see cref="F:PCSC.SCardShareMode.Exclusive" /> there will be no action taken.</para>
                <para>This method calls the API function SCardBeginTransaction().</para>
            </remarks>
        </member>
        <member name="M:PCSC.SCardReader.EndTransaction(PCSC.SCardReaderDisposition)">
            <summary>Ends a previously begun transaction.</summary>
            <param name="disposition">Action to be taken on the reader.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue" />
                        </term>
                        <description>Invalid value for <paramref name="disposition" /> (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.SharingViolation" />
                        </term>
                        <description>Someone else has exclusive rights (SCARD_E_SHARING_VIOLATION)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The calling application must be the owner of the previously begun transaction or an error will occur.</para>
                <para>This method calls the API function SCardEndTransaction().</para>
                <block subset="none" type="note">
                    <para>The disposition action is not currently used in PC/SC Lite on UNIX/Linux machines.</para>
                </block>
            </remarks>
        </member>
        <member name="M:PCSC.SCardReader.Transmit(PCSC.SCardPCI,System.Byte[],PCSC.SCardPCI,System.Byte[]@)">
            <summary>Sends an APDU to the smart card that was previously connected by <see cref="M:PCSC.ISCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)" />.</summary>
            <param name="sendPci">Structure of Protocol Control Information.</param>
            <param name="sendBuffer">APDU to send to the card.</param>
            <param name="receivePci">Structure of protocol information.</param>
            <param name="receiveBuffer">Response from the card.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description> 	Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> are too big (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> or <paramref name="sendPci" /> is <see langword="null" /> (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue" />
                        </term>
                        <description>Invalid Protocol, reader name, etc (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>APDU exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ProtocolMismatch" />
                        </term>
                        <description>Connect protocol is different than desired (SCARD_E_PROTO_MISMATCH)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ResetCard" />
                        </term>
                        <description>The card has been reset by another application (SCARD_W_RESET_CARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.RemovedCard" />
                        </term>
                        <description>The card has been removed from the reader (SCARD_W_REMOVED_CARD)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The card responds from the APDU and stores this response in <paramref name="receiveBuffer" />. <paramref name="sendPci" /> and <paramref name="receivePci" /> are structures containing the following (implemented in <see cref="T:PCSC.SCardPCI" />):
                    <example><code lang="C">
            typedef struct {
            	DWORD dwProtocol;    // SCARD_PROTOCOL_T0 or SCARD_PROTOCOL_T1
            	DWORD cbPciLength;   // Length of this structure - not used
            } SCARD_IO_REQUEST;
              </code></example>
                </para>
                <para>It is recommended to use pre-defined / built-in PCI structures by calling one of the following methods:
                    <list type="bullet">
                        <item><term><see cref="M:PCSC.ISCardReader.Transmit(System.IntPtr,System.Byte[],PCSC.SCardPCI,System.Byte[]@)" /></term></item>
                        <item><term><see cref="M:PCSC.ISCardReader.Transmit(System.IntPtr,System.Byte[],System.Byte[]@)" /></term></item></list></para>
                <para>This method calls the API function SCardTransmit(). The pointers to the pre-defined / built-in PCI structures are determinated with dlsym() on UNIX/Linux hosts and GetProcAddress() on Windows hosts.</para>
            </remarks>
        </member>
        <member name="M:PCSC.SCardReader.Transmit(System.IntPtr,System.Byte[],System.Byte[]@)">
            <summary>Sends an APDU to the smart card that was previously connected by <see cref="M:PCSC.ISCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)" />. </summary>
            <param name="sendPci">A pointer to a pre-defined Structure of Protocol Control Information. You can use one of the following:
                <list type="table">
                    <listheader><term>Protocol Control Information</term><description>Description</description></listheader>
                    <item><term><see cref="P:PCSC.SCardPCI.T0" /></term><description>Pre-defined T=0 PCI structure. (SCARD_PCI_T0)</description></item>
                    <item><term><see cref="P:PCSC.SCardPCI.T1" /></term><description>Pre-defined T=1 PCI structure. (SCARD_PCI_T1)</description></item>
                    <item><term><see cref="P:PCSC.SCardPCI.Raw" /></term><description>Pre-defined RAW PCI structure. (SCARD_PCI_RAW)</description></item>
                </list></param>
            <param name="sendBuffer">APDU to send to the card. </param>
            <param name="receiveBuffer">Response from the card.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description> 	Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> are too big (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> or <paramref name="sendPci" /> is <see langword="null" /> (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue" />
                        </term>
                        <description>Invalid Protocol, reader name, etc (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>APDU exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ProtocolMismatch" />
                        </term>
                        <description>Connect protocol is different than desired (SCARD_E_PROTO_MISMATCH)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ResetCard" />
                        </term>
                        <description>The card has been reset by another application (SCARD_W_RESET_CARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.RemovedCard" />
                        </term>
                        <description>The card has been removed from the reader (SCARD_W_REMOVED_CARD)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The card responds from the APDU and stores this response in <paramref name="receiveBuffer" />.</para>
                <para>This method calls the API function SCardTransmit(). The pointers to the pre-defined / built-in PCI structures are determinated with dlsym() on UNIX/Linux hosts and GetProcAddress() on Windows hosts.</para>
            </remarks>
        </member>
        <member name="M:PCSC.SCardReader.Transmit(System.IntPtr,System.Byte[],System.Int32,PCSC.SCardPCI,System.Byte[],System.Int32@)">
            <summary>Sends an APDU to the smart card that was previously connected by <see cref="M:PCSC.ISCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)" />. </summary>
            <param name="sendPci">A pointer to a pre-defined Structure of Protocol Control Information. You can use one of the following:
                <list type="table"><listheader><term>Protocol Control Information</term><description>Description</description></listheader><item><term><see cref="P:PCSC.SCardPCI.T0" /></term><description>Pre-defined T=0 PCI structure. (SCARD_PCI_T0)</description></item><item><term><see cref="P:PCSC.SCardPCI.T1" /></term><description>Pre-defined T=1 PCI structure. (SCARD_PCI_T1)</description></item><item><term><see cref="P:PCSC.SCardPCI.Raw" /></term><description>Pre-defined RAW PCI structure. (SCARD_PCI_RAW)</description></item></list></param>
            <param name="sendBuffer">APDU to send to the card. </param>
            <param name="sendBufferLength">The buffer size of <paramref name="sendBuffer" /> in bytes.</param>
            <param name="receivePci">Structure of protocol information. </param>
            <param name="receiveBuffer">Response from the card.</param>
            <param name="receiveBufferLength">The buffer size of <paramref name="receiveBuffer" /> in bytes.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description> 	Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> are too big (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> or <paramref name="sendPci" /> is <see langword="null" /> (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue" />
                        </term>
                        <description>Invalid Protocol, reader name, etc (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>APDU exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ProtocolMismatch" />
                        </term>
                        <description>Connect protocol is different than desired (SCARD_E_PROTO_MISMATCH)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ResetCard" />
                        </term>
                        <description>The card has been reset by another application (SCARD_W_RESET_CARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.RemovedCard" />
                        </term>
                        <description>The card has been removed from the reader (SCARD_W_REMOVED_CARD)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The card responds from the APDU and stores this response in <paramref name="receiveBuffer" />. The size of the returned data will be stored in <paramref name="receiveBufferLength" />. This method will return with error code <see cref="F:PCSC.SCardError.InsufficientBuffer" /> if the buffer size of <paramref name="receiveBuffer" /> is too small for the result. If one of the parameters <paramref name="sendBufferLength" /> or <paramref name="receiveBufferLength" /> is invalid, the method will throw an <see cref="T:System.ArgumentOutOfRangeException" />.</para>
                <para>This method calls the API function SCardTransmit(). The pointers to the pre-defined / built-in PCI structures are determinated with dlsym() on UNIX/Linux hosts and GetProcAddress() on Windows hosts.</para>
            </remarks>
        </member>
        <member name="M:PCSC.SCardReader.Transmit(System.IntPtr,System.Byte[],PCSC.SCardPCI,System.Byte[]@)">
            <summary>Sends an APDU to the smart card that was previously connected by <see cref="M:PCSC.ISCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)" />. </summary>
            <param name="sendPci">A pointer to a pre-defined Structure of Protocol Control Information. You can use one of the following:
                <list type="table"><listheader><term>Protocol Control Information</term><description>Description</description></listheader><item><term><see cref="P:PCSC.SCardPCI.T0" /></term><description>Pre-defined T=0 PCI structure. (SCARD_PCI_T0)</description></item><item><term><see cref="P:PCSC.SCardPCI.T1" /></term><description>Pre-defined T=1 PCI structure. (SCARD_PCI_T1)</description></item><item><term><see cref="P:PCSC.SCardPCI.Raw" /></term><description>Pre-defined RAW PCI structure. (SCARD_PCI_RAW)</description></item></list></param>
            <param name="sendBuffer">APDU to send to the card. </param>
            <param name="receivePci">Structure of protocol information. </param>
            <param name="receiveBuffer">Response from the card. </param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description> 	Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> are too big (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> or <paramref name="sendPci" /> is <see langword="null" /> (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue" />
                        </term>
                        <description>Invalid Protocol, reader name, etc (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>APDU exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ProtocolMismatch" />
                        </term>
                        <description>Connect protocol is different than desired (SCARD_E_PROTO_MISMATCH)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ResetCard" />
                        </term>
                        <description>The card has been reset by another application (SCARD_W_RESET_CARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.RemovedCard" />
                        </term>
                        <description>The card has been removed from the reader (SCARD_W_REMOVED_CARD)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The card responds from the APDU and stores this response in <paramref name="receiveBuffer" />. <paramref name="receivePci" /> is a structure containing the following (implemented in <see cref="T:PCSC.SCardPCI" />):
                    <example><code lang="C">
            typedef struct {
            	DWORD dwProtocol;    // SCARD_PROTOCOL_T0 or SCARD_PROTOCOL_T1
            	DWORD cbPciLength;   // Length of this structure - not used
            } SCARD_IO_REQUEST;
              </code></example>
                </para>
                <para>This method calls the API function SCardTransmit(). The pointers to the pre-defined / built-in PCI structures are determinated with dlsym() on UNIX/Linux hosts and GetProcAddress() on Windows hosts.</para>
                <example>
                    <code lang="C#">
            // Create a new PC/SC context.
            var ctx = new SCardContext();
            ctx.Establish(SCardScope.System);
            
            // Connect to the reader
            var rfidReader = new SCardReader(ctx);
            SCardError rc = rfidReader.Connect(
            	"OMNIKEY CardMan 5x21 00 01", 
            	SCardShareMode.Shared, 
            	SCardProtocol.T1);
            
            if (rc != SCardError.Success) {
            	Console.WriteLine("Unable to connect to RFID card / chip. Error: " + SCardHelper.StringifyError(rc));
            	return;
            }
            
            // prepare APDU
            byte[] ucByteSend = new byte[] 
            	{
            		0xFF,   // the instruction class
            		0xCA,   // the instruction code 
            		0x00,   // parameter to the instruction
            		0x00,   // parameter to the instruction
            		0x00    // size of I/O transfer
            	};
            
            rc = rfidReader.BeginTransaction();
            if (rc != SCardError.Success) {
            	throw new Exception("Could not begin transaction.");
            }
            
            Console.Out.WriteLine("Retrieving the UID .... ");
            
            SCardPCI ioreq = new SCardPCI();   // IO returned protocol control information.
            byte[] ucByteReceive = new byte[10];
            rc = rfidReader.Transmit(
            	SCardPCI.T1,// Protocol control information, T0, T1 and Raw
            	            // are global defined protocol header structures. 
            	ucByteSend, // the actual data to be written to the card 
            	ioreq,      // The returned protocol control information 
            	ref ucByteReceive);
            
            if (rc == SCardError.Success) {
            	Console.WriteLine("Uid: {0}", BitConverter.ToString(ucByteReceive));
            } else {
            	Console.WriteLine("Error: " + SCardHelper.StringifyError(rc));
            }
                        
            rfidReader.EndTransaction(SCardReaderDisposition.Leave);
            rfidReader.Disconnect(SCardReaderDisposition.Reset);
            ctx.Release()
              </code>
                </example>
            </remarks>
        </member>
        <member name="M:PCSC.SCardReader.Transmit(System.Byte[],System.Int32,System.Byte[],System.Int32@)">
            <summary>Sends an APDU to the smart card that was previously connected by <see cref="M:PCSC.ISCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)" />. </summary>
            <param name="sendBuffer">APDU to send to the card. </param>
            <param name="sendBufferLength">The buffer size of <paramref name="sendBuffer" /> in bytes.</param>
            <param name="receiveBuffer">Response from the card.</param>
            <param name="receiveBufferLength">The buffer size of <paramref name="receiveBuffer" /> in bytes.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description> 	Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> are too big (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> is <see langword="null" /> (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue" />
                        </term>
                        <description>Invalid Protocol, reader name, etc (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>APDU exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ProtocolMismatch" />
                        </term>
                        <description>Connect protocol is different than desired (SCARD_E_PROTO_MISMATCH)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ResetCard" />
                        </term>
                        <description>The card has been reset by another application (SCARD_W_RESET_CARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.RemovedCard" />
                        </term>
                        <description>The card has been removed from the reader (SCARD_W_REMOVED_CARD)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The card responds from the APDU and stores this response in <paramref name="receiveBuffer" />.  The buffer <paramref name="receiveBuffer" /> must be initialized. The size of the returned data will be stored in <paramref name="receiveBufferLength" />. This method will return with error code <see cref="F:PCSC.SCardError.InsufficientBuffer" /> if the buffer size of <paramref name="receiveBuffer" /> is too small for the result. If one of the parameters <paramref name="sendBufferLength" /> or <paramref name="receiveBufferLength" /> is invalid, the method will throw an <see cref="T:System.ArgumentOutOfRangeException" />.</para>
                <para>This method calls the API function SCardTransmit().</para>
                <block subset="none" type="note">
                    <para>This method will only work if the reader has been connected with one of the following protocols:
                        <list type="table">
                            <listheader><term>Protocol</term><description>Description</description></listheader>
                            <item><term><see cref="F:PCSC.SCardProtocol.T0" /></term><description>T=0 active protocol.</description></item>
                            <item><term><see cref="F:PCSC.SCardProtocol.T1" /></term><description>T=1 active protocol.</description></item>
                            <item><term><see cref="F:PCSC.SCardProtocol.Raw" /></term><description>Raw active protocol.</description></item>
                        </list></para>
                </block>
            </remarks>
        </member>
        <member name="M:PCSC.SCardReader.Transmit(System.Byte[],System.Byte[],System.Int32@)">
            <summary>Sends an APDU to the smart card that was previously connected by <see cref="M:PCSC.ISCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)"/>.</summary>
            <param name="sendBuffer">APDU to send to the card. </param>
            <param name="receiveBuffer">Response from the card.</param>
            <param name="receiveBufferLength">The buffer size of <paramref name="receiveBuffer"/> in bytes.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success"/>
                        </term>
                        <description> 	Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer"/>
                        </term>
                        <description>
                            <paramref name="sendBuffer"/> or <paramref name="receiveBuffer"/> are too big (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle"/>
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter"/>
                        </term>
                        <description>
                            <paramref name="sendBuffer"/> or <paramref name="receiveBuffer"/> is <see langword="null"/> (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue"/>
                        </term>
                        <description>Invalid Protocol, reader name, etc (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService"/>
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted"/>
                        </term>
                        <description>APDU exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ProtocolMismatch"/>
                        </term>
                        <description>Connect protocol is different than desired (SCARD_E_PROTO_MISMATCH)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable"/>
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError"/>
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ResetCard"/>
                        </term>
                        <description>The card has been reset by another application (SCARD_W_RESET_CARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.RemovedCard"/>
                        </term>
                        <description>The card has been removed from the reader (SCARD_W_REMOVED_CARD)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The card responds from the APDU and stores this response in <paramref name="receiveBuffer"/>.  The buffer <paramref name="receiveBuffer"/> must be initialized. The size of the returned data will be stored in <paramref name="receiveBufferLength"/>. This method will return with error code <see cref="F:PCSC.SCardError.InsufficientBuffer"/> if the buffer size of <paramref name="receiveBuffer"/> is too small for the result. If the parameter <paramref name="receiveBufferLength"/> is invalid, the method will throw an <see cref="T:System.ArgumentOutOfRangeException"/>.</para>
                <para>This method calls the API function SCardTransmit().</para>
                <block subset="none" type="note">
                    <para>This method will only work if the reader has been connected with one of the following protocols:
                        <list type="table"><listheader><term>Protocol</term><description>Description</description></listheader><item><term><see cref="F:PCSC.SCardProtocol.T0"/></term><description>T=0 active protocol.</description></item><item><term><see cref="F:PCSC.SCardProtocol.T1"/></term><description>T=1 active protocol.</description></item><item><term><see cref="F:PCSC.SCardProtocol.Raw"/></term><description>Raw active protocol.</description></item></list></para>
                </block>
            </remarks>
        </member>
        <member name="M:PCSC.SCardReader.Transmit(System.Byte[],System.Byte[]@)">
            <summary>Sends an APDU to the smart card that was previously connected by <see cref="M:PCSC.ISCardReader.Connect(System.String,PCSC.SCardShareMode,PCSC.SCardProtocol)" />.</summary>
            <param name="sendBuffer">APDU to send to the card.</param>
            <param name="receiveBuffer">Response from the card.</param>
            <returns><list type="table">
                    <listheader><term>Return value</term><description>Description</description></listheader>
                    <item><term><see cref="F:PCSC.SCardError.Success" /></term><description>Successful (SCARD_S_SUCCESS)</description></item>
                    <item><term><see cref="F:PCSC.SCardError.InsufficientBuffer" /></term><description><paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> are too big (SCARD_E_INSUFFICIENT_BUFFER)</description></item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> is <see langword="null" /> (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue" />
                        </term>
                        <description>Invalid Protocol, reader name, etc (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>APDU exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ProtocolMismatch" />
                        </term>
                        <description>Connect protocol is different than desired (SCARD_E_PROTO_MISMATCH)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ResetCard" />
                        </term>
                        <description>The card has been reset by another application (SCARD_W_RESET_CARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.RemovedCard" />
                        </term>
                        <description>The card has been removed from the reader (SCARD_W_REMOVED_CARD)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The card responds from the APDU and stores this response in <paramref name="receiveBuffer" />. The buffer <paramref name="receiveBuffer" /> must be initialized and will be resized, if the buffer was too big.</para>
                <para>This method calls the API function SCardTransmit().</para>
                <block subset="none" type="note">
                    <para>This method will only work if the reader has been connected with one of the following protocols:
                        <list type="table">
                            <listheader><term>Protocol</term><description>Description</description></listheader>
                            <item><term><see cref="F:PCSC.SCardProtocol.T0" /></term><description>T=0 active protocol.</description></item>
                            <item><term><see cref="F:PCSC.SCardProtocol.T1" /></term><description>T=1 active protocol.</description></item>
                            <item><term><see cref="F:PCSC.SCardProtocol.Raw" /></term><description>Raw active protocol.</description></item>
                        </list></para>
                </block>
            </remarks>
        </member>
        <member name="M:PCSC.SCardReader.Control(System.IntPtr,System.Byte[],System.Byte[]@)">
            <summary>Sends a command directly to the IFD Handler (reader driver) to be processed by the reader.</summary>
            <param name="controlCode">Control code for the operation.</param>
            <param name="sendBuffer">Command to send to the reader.</param>
            <param name="receiveBuffer">Response from the reader.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return code</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> or <paramref name="receiveBuffer" /> are too big (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>
                            <paramref name="sendBuffer" /> is <see langword="null" /> and the IFDHandler is version 2.0 (without
                            <paramref
                                name="controlCode" />
                            ) (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidValue" />
                        </term>
                        <description>Invalid value was presented (SCARD_E_INVALID_VALUE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>Data exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed(SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.UnsupportedFeature" />
                        </term>
                        <description>Driver does not support (SCARD_E_UNSUPPORTED_FEATURE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.RemovedCard" />
                        </term>
                        <description>The card has been removed from the reader(SCARD_W_REMOVED_CARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ResetCard" />
                        </term>
                        <description>The card has been reset by another application (SCARD_W_RESET_CARD)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>This method is useful for creating client side reader drivers for functions like PIN pads, biometrics, or other extensions to the normal smart card reader that are not normally handled by PC/SC.</para>
                <para>This method calls the API function SCardControl().</para>
                <block subset="none" type="note">
                    <para>The API of this function changed. In pcsc-lite 1.2.0 and before the API was not Windows(R) PC/SC compatible. This has been corrected.</para>
                </block>
            </remarks>
        </member>
        <member name="M:PCSC.SCardReader.Status(System.String[]@,PCSC.SCardState@,PCSC.SCardProtocol@,System.Byte[]@)">
            <summary>Returns the current status of the reader and the connected card.</summary>
            <param name="readerName">The connected readers's friendly name.</param>
            <param name="state">The current state.</param>
            <param name="protocol">The card's currently used protocol.</param>
            <param name="atr">The card's ATR.</param>
            <returns><list type="table">
                    <listheader>
                        <term>Return value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>The reader object did not allocate enough memory for <paramref name="readerName" /> or for <paramref name="atr" /> (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>The reader object got invalid. Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>The reader object passed a size of null for <paramref name="readerName" /> or <paramref name="atr" />  (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoMemory" />
                        </term>
                        <description>Memory allocation failed (SCARD_E_NO_MEMORY)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description> The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InternalError" />
                        </term>
                        <description>An internal consistency check failed (SCARD_F_INTERNAL_ERROR)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.RemovedCard" />
                        </term>
                        <description>The smart card has been removed (SCARD_W_REMOVED_CARD)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ResetCard" />
                        </term>
                        <description>The smart card has been reset (SCARD_W_RESET_CARD)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The connected readers's friendly name will be stored in <paramref name="readerName" />. The card's ATR will be stored in <paramref name="atr" />. The current state, and protocol will be stored in <paramref name="state" /> and <paramref name="protocol" /> respectively.</para>
                <para>This method calls the API function SCardStatus().</para>
            </remarks>
        </member>
        <member name="M:PCSC.SCardReader.GetAttrib(PCSC.SCardAttribute,System.Byte[]@)">
            <summary>Gets an attribute from the IFD Handler (reader driver).</summary>
            <param name="attributeId">Identifier for the attribute to get.</param>
            <param name="attribute">A buffer that receives the attribute.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return code</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>
                            <paramref name="attribute" /> is too big  - indicates an error in the PC/SC class library. (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>Reader buffer <paramref name="attribute" /> not large enough  - indicates an error in the PC/SC class library. (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>A parameter is <see langword="null" /> and should not (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoMemory" />
                        </term>
                        <description>Memory allocation failed (SCARD_E_NO_MEMORY)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>Data exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                </list>
            </returns>
            <remarks>This method calls the API function SCardGetAttrib().</remarks>
        </member>
        <member name="M:PCSC.SCardReader.GetAttrib(System.IntPtr,System.Byte[]@)">
            <summary>Gets an attribute from the IFD Handler (reader driver).</summary>
            <param name="attributeId">Identifier for the attribute to get.</param>
            <param name="attribute">A buffer that receives the attribute.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return code</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>
                            <paramref name="attribute" /> is too big  - indicates an error in the PC/SC class library. (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>Reader buffer <paramref name="attribute" /> not large enough  - indicates an error in the PC/SC class library. (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>A parameter is <see langword="null" /> and should not (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoMemory" />
                        </term>
                        <description>Memory allocation failed (SCARD_E_NO_MEMORY)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>Data exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                </list>
            </returns>
            <remarks>This method calls the API function SCardGetAttrib().</remarks>
        </member>
        <member name="M:PCSC.SCardReader.GetAttrib(PCSC.SCardAttribute,System.Byte[],System.Int32@)">
            <summary>Gets an attribute from the IFD Handler (reader driver).</summary>
            <param name="attributeId">Identifier for the attribute to get.</param>
            <param name="attribute">A buffer that receives the attribute.</param>
            <param name="attributeBufferLength">Size of the result contained in attribute (in bytes).</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return code</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>
                            <paramref name="attribute" /> is too big  - indicates an error in the PC/SC class library. (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>Reader buffer <paramref name="attribute" /> not large enough  - indicates an error in the PC/SC class library. (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>A parameter is <see langword="null" /> and should not (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoMemory" />
                        </term>
                        <description>Memory allocation failed (SCARD_E_NO_MEMORY)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>Data exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                </list>
                <para>The method will return <see cref="F:PCSC.SCardError.InsufficientBuffer" /> if <paramref name="attribute" /> is
                    <see langword="null" /> or if the buffer size is not sufficient.
                    <paramref name="attributeBufferLength" /> contains the required amount of bytes (size).</para>
                <para>If the method returned with <see cref="F:PCSC.SCardError.Success" /> then <paramref name="attributeBufferLength" /> contains the exact size of the result in
                    <paramref
                        name="attribute" />
                    .</para>
                <para>For an example please see <see cref="M:PCSC.ISCardReader.GetAttrib(PCSC.SCardAttribute,System.Byte[]@)" />.</para>
            </returns>
            <remarks>This method calls the API function SCardGetAttrib().</remarks>
        </member>
        <member name="M:PCSC.SCardReader.GetAttrib(System.IntPtr,System.Byte[],System.Int32@)">
            <summary>Gets an attribute from the IFD Handler (reader driver).</summary>
            <param name="attributeId">Identifier for the attribute to get.</param>
            <param name="attribute">A buffer that receives the attribute.</param>
            <param name="attributeBufferLength">Size of the result contained in attribute (in bytes).</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Return code</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>
                            <paramref name="attribute" /> is too big  - indicates an error in the PC/SC class library. (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>Reader buffer <paramref name="attribute" /> not large enough  - indicates an error in the PC/SC class library. (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>A parameter is <see langword="null" /> and should not (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoMemory" />
                        </term>
                        <description>Memory allocation failed (SCARD_E_NO_MEMORY)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>Data exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                </list>
                <para>The method will return <see cref="F:PCSC.SCardError.InsufficientBuffer" /> if <paramref name="attribute" /> is
                    <see langword="null" /> or if the buffer size is not sufficient.
                    <paramref name="attributeBufferLength" /> contains the required amount of bytes (size).</para>
                <para>If the method returned with <see cref="F:PCSC.SCardError.Success" /> then <paramref name="attributeBufferLength" /> contains the exact size of the result in
                    <paramref
                        name="attribute" />
                    .</para>
                <para>For an example please see <see cref="M:PCSC.ISCardReader.GetAttrib(PCSC.SCardAttribute,System.Byte[]@)" />.</para>
            </returns>
            <remarks>This method calls the API function SCardGetAttrib().</remarks>
        </member>
        <member name="M:PCSC.SCardReader.SetAttrib(PCSC.SCardAttribute,System.Byte[])">
            <summary>Set an attribute of the IFD Handler.</summary>
            <param name="attributeId">Identifier for the attribute to set.</param>
            <param name="attribute">Buffer that contains the new value of the attribute.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Value</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>attribute is too big (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>A parameter is <see langword="null" /> and should not (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>Data exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The list of attributes you can set depends on the IFD handler you are using.</para>
                <para>This method calls the API function SCardSetAttrib().</para>
            </remarks>
        </member>
        <member name="M:PCSC.SCardReader.SetAttrib(System.IntPtr,System.Byte[])">
            <summary>Set an attribute of the IFD Handler.</summary>
            <param name="attributeId">Identifier for the attribute to set.</param>
            <param name="attribute">Buffer that contains the new value of the attribute.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Column</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>attribute is too big (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>A parameter is <see langword="null" /> and should not (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>Data exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The list of attributes you can set depends on the IFD handler you are using.</para>
                <para>This method calls the API function SCardSetAttrib().</para>
            </remarks>
        </member>
        <member name="M:PCSC.SCardReader.SetAttrib(PCSC.SCardAttribute,System.Byte[],System.Int32)">
            <summary>Set an attribute of the IFD Handler.</summary>
            <param name="attributeId">Identifier for the attribute to set.</param>
            <param name="attribute">Buffer that contains the new value of the attribute.</param>
            <param name="attributeBufferLength">Length of the <paramref name="attribute" /> buffer in bytes.</param>
            <returns><list type="table">
                    <listheader>
                        <term>Column</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>attribute is too big (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>A parameter is <see langword="null" /> and should not (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>Data exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The list of attributes you can set depends on the IFD handler you are using.</para>
                <para>This method calls the API function SCardSetAttrib().</para>
            </remarks>
        </member>
        <member name="M:PCSC.SCardReader.SetAttrib(System.IntPtr,System.Byte[],System.Int32)">
            <summary>Set an attribute of the IFD Handler.</summary>
            <param name="attributeId">Identifier for the attribute to set.</param>
            <param name="attribute">Buffer that contains the new value of the attribute.</param>
            <param name="attributeBufferLength">Length of the <paramref name="attribute" /> buffer in bytes.</param>
            <returns>
                <list type="table">
                    <listheader>
                        <term>Column</term>
                        <description>Description</description>
                    </listheader>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.Success" />
                        </term>
                        <description>Successful (SCARD_S_SUCCESS)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InsufficientBuffer" />
                        </term>
                        <description>attribute is too big (SCARD_E_INSUFFICIENT_BUFFER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidHandle" />
                        </term>
                        <description>Invalid card handle (SCARD_E_INVALID_HANDLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.InvalidParameter" />
                        </term>
                        <description>A parameter is <see langword="null" /> and should not (SCARD_E_INVALID_PARAMETER)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NoService" />
                        </term>
                        <description>The server is not runing (SCARD_E_NO_SERVICE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.NotTransacted" />
                        </term>
                        <description>Data exchange not successful (SCARD_E_NOT_TRANSACTED)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.ReaderUnavailable" />
                        </term>
                        <description>The reader has been removed (SCARD_E_READER_UNAVAILABLE)</description>
                    </item>
                    <item>
                        <term>
                            <see cref="F:PCSC.SCardError.CommunicationError" />
                        </term>
                        <description>An internal communications error has been detected (SCARD_F_COMM_ERROR)</description>
                    </item>
                </list>
            </returns>
            <remarks>
                <para>The list of attributes you can set depends on the IFD handler you are using.</para>
                <para>This method calls the API function SCardSetAttrib().</para>
            </remarks>
        </member>
        <member name="M:PCSC.SCardReader.Dispose">
            <summary>This will disconnect the reader if it is currently connected using <see cref="F:PCSC.SCardReaderDisposition.Leave"/>.</summary>
        </member>
        <member name="M:PCSC.SCardReader.Dispose(System.Boolean)">
            <summary>This will disconnect the reader if it is currently connected using <see cref="F:PCSC.SCardReaderDisposition.Leave"/>.</summary>
            <param name="disposing">Ignored. The reader will be disconnected.</param>
        </member>
        <member name="P:PCSC.SCardReader.ReaderName">
            <summary>The connected reader's friendly name.</summary>
            <value>A human readable string of the reader name or <see langword="null" /> if the reader object is currently not connected.</value>
        </member>
        <member name="P:PCSC.SCardReader.CurrentContext">
            <summary>The Smart Card context that will be used for this connection.</summary>
            <value><see langword="null" /> if the reader is not connected.</value>
        </member>
        <member name="P:PCSC.SCardReader.CurrentShareMode">
            <summary>The current mode of connection type: exclusive or shared.</summary>
        </member>
        <member name="P:PCSC.SCardReader.ActiveProtocol">
            <summary>The currently used protocol to communicate with the card.</summary>
            <value>
                <see cref="F:PCSC.SCardProtocol.Unset" /> if not connected.</value>
        </member>
        <member name="P:PCSC.SCardReader.CardHandle">
            <summary>A pointer (Card Handle) that can be used for C API calls.</summary>
            <value>0 if not connected.</value>
            <remarks>
                <para>This is the card handle that is returned when calling the C API function SCardConnect().</para>
            </remarks>
        </member>
        <member name="P:PCSC.SCardReader.IsConnected">
            <summary>The current connection state of the reader.</summary>
            <value><see langword="true" /> if the reader is connected. Otherwise <see langword="false" />.</value>
        </member>
        <member name="T:PCSC.SCardReaderState">
            <summary>A structures that contains the old and the new Smart Card reader status.</summary>
            <remarks>
                <para>Is used as parameter in <see cref="M:PCSC.ISCardContext.GetStatusChange(System.IntPtr,PCSC.SCardReaderState[])" />.</para>
                <para>The new event state will be contained in <see cref="P:PCSC.SCardReaderState.EventState" />. A status change might be a card insertion or removal event, a change in ATR, etc. To wait for a reader event (reader added or removed) you may use the special reader name "\\?PnP?\Notification". If a reader event occurs the state of this reader will change and the bit <see cref="F:PCSC.SCRState.Changed" /> will be set.</para>
            </remarks>
        </member>
        <member name="M:PCSC.SCardReaderState.Finalize">
            <summary>
            Frees unmanaged resources.
            </summary>
        </member>
        <member name="M:PCSC.SCardReaderState.Dispose">
            <summary>
            Frees unmanaged resources.
            </summary>
        </member>
        <member name="M:PCSC.SCardReaderState.Dispose(System.Boolean)">
            <summary>
            Frees unmanaged resources.
            </summary>
            <param name="disposing">Ignored.</param>
        </member>
        <member name="M:PCSC.SCardReaderState.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:PCSC.SCardReaderState"/> class.
            </summary>
        </member>
        <member name="P:PCSC.SCardReaderState.UserData">
            <summary>
            User defined data.
            </summary>
        </member>
        <member name="P:PCSC.SCardReaderState.UserDataPointer">
            <summary>
            User defined data.
            </summary>
        </member>
        <member name="P:PCSC.SCardReaderState.CurrentState">
            <summary>
            Current state of reader.
            </summary>
        </member>
        <member name="P:PCSC.SCardReaderState.CurrentStateValue">
            <summary>
            Current state of reader.
            </summary>
        </member>
        <member name="P:PCSC.SCardReaderState.EventState">
            <summary>
            Reader state after a state change.
            </summary>
        </member>
        <member name="P:PCSC.SCardReaderState.EventStateValue">
            <summary>
            Reader state after a state change.
            </summary>
        </member>
        <member name="P:PCSC.SCardReaderState.CardChangeEventCnt">
            <summary>
            Number of change events.
            </summary>
        </member>
        <member name="P:PCSC.SCardReaderState.ReaderName">
            <summary>
            The reader's name.
            </summary>
        </member>
        <member name="P:PCSC.SCardReaderState.Atr">
            <summary>
            Answer To Reset (ATR)
            </summary>
        </member>
        <member name="T:PCSC.Iso7816.Apdu">
            <summary>Application Protocol Data Unit (APDU), defined by the ISO/IEC 7816 standards</summary>
        </member>
        <member name="M:PCSC.Iso7816.Apdu.ToArray">
            <summary>Converts the APDU structure to a transmittable byte array.</summary>
            <returns>A byte array containing the APDU parameters and data in the correct order.</returns>
        </member>
        <member name="M:PCSC.Iso7816.Apdu.op_Explicit(PCSC.Iso7816.Apdu)~System.Byte[]">
            <summary>Converts the APDU structure to a transmittable byte array.</summary>
            <param name="apdu">The APDU.</param>
            <returns>The supplied APDU as byte array.</returns>
        </member>
        <member name="P:PCSC.Iso7816.Apdu.Case">
            <summary>The currently used ISO case.</summary>
        </member>
        <member name="P:PCSC.Iso7816.Apdu.Protocol">
            <summary>The currently used protocol.</summary>
        </member>
        <member name="P:PCSC.Iso7816.Apdu.IsValid">
            <summary>Indicates if the APDU is valid.</summary>
            <value><see langword="true" /> if the APDU is valid.</value>
        </member>
        <member name="T:PCSC.Iso7816.CommandApdu">
            <summary>A Command Application Protocol Data Unit (APDU), defined by the ISO/IEC 7816 standards</summary>
            <remarks>
                <para>A <see cref="T:PCSC.Iso7816.CommandApdu"/> can be build using one of the following <see cref="T:PCSC.Iso7816.IsoCase"/>:</para>
                <list type="table">
                    <listheader><term>Case</term><description>APDU structure</description></listheader>
                    <item><term>1</term><description>CLA INS P1 P2</description></item>
                    <item><term>2</term><description>CLA INS P1 P2 Le</description></item>
                    <item><term>3</term><description>CLA INS P1 P2 Lc Data</description></item>
                    <item><term>4</term><description>CLA INS P1 P2 Lc Data Le</description></item>
                </list>
                <para>See the documentation for <see cref="T:PCSC.Iso7816.IsoCase"/> for more information.</para>
            </remarks>
        </member>
        <member name="M:PCSC.Iso7816.CommandApdu.#ctor(PCSC.Iso7816.IsoCase,PCSC.SCardProtocol)">
            <summary>Initializes a new instance of the <see cref="T:PCSC.Iso7816.CommandApdu"/> class.</summary>
            <param name="isoCase">The ISO case to use.</param>
            <param name="protocol">The protocol.</param>
        </member>
        <member name="M:PCSC.Iso7816.CommandApdu.GetClassByteInfo">
            <summary>Gets the CLA.</summary>
            <returns>The <see cref="P:PCSC.Iso7816.CommandApdu.CLA"/> as <see cref="T:PCSC.Iso7816.ClassByte"/> instance.</returns>
        </member>
        <member name="M:PCSC.Iso7816.CommandApdu.GetInstructionByteInfo">
            <summary>Gets the instruction byte info.</summary>
            <returns>The <see cref="P:PCSC.Iso7816.CommandApdu.INS"/> as <see cref="T:PCSC.Iso7816.InstructionByte"/> instance.</returns>
        </member>
        <member name="M:PCSC.Iso7816.CommandApdu.GetLength">
            <summary>Calculates the APDU size in bytes.</summary>
            <returns>The APDU size in bytes depending on the currently selected ISO case.</returns>
        </member>
        <member name="M:PCSC.Iso7816.CommandApdu.ToArray">
            <summary>Converts the command APDU to a transmittable byte array.</summary>
            <returns>The command APDU as byte array.</returns>
            <exception cref="T:System.InvalidOperationException">If the command APDU is in an invalid state.</exception>
        </member>
        <member name="M:PCSC.Iso7816.CommandApdu.Clone">
            <summary>Creates a clone of the current instance. The data is NOT copied. </summary>
            <returns>A clone of the current instance.</returns>
        </member>
        <member name="P:PCSC.Iso7816.CommandApdu.CLA">
            <summary>Gets or sets the CLA byte.</summary>
            <remarks>You can use the <see cref="T:PCSC.Iso7816.ClassByte"/> class to build a well formed CLA byte.</remarks>
        </member>
        <member name="P:PCSC.Iso7816.CommandApdu.INS">
            <summary>Gets or sets the instruction.</summary>
        </member>
        <member name="P:PCSC.Iso7816.CommandApdu.Instruction">
            <summary>Sets the instruction.</summary>
        </member>
        <member name="P:PCSC.Iso7816.CommandApdu.P1">
            <summary>The first parameter (P1)</summary>
        </member>
        <member name="P:PCSC.Iso7816.CommandApdu.P2">
            <summary>The second parameter (P2)</summary>
        </member>
        <member name="P:PCSC.Iso7816.CommandApdu.P1P2">
            <summary>A combination of parameter P1 and P2</summary>
        </member>
        <member name="P:PCSC.Iso7816.CommandApdu.Data">
            <summary>Command APDU data to be transmitted.</summary>
            <remarks>You can only set data if you created the <see cref="T:PCSC.Iso7816.CommandApdu"/> with ISO case 3 or 4.</remarks>
        </member>
        <member name="P:PCSC.Iso7816.CommandApdu.Lc">
            <summary>Length command</summary>
        </member>
        <member name="P:PCSC.Iso7816.CommandApdu.P3">
            <summary>The third parameter (P3 or Le)</summary>
        </member>
        <member name="P:PCSC.Iso7816.CommandApdu.Le">
            <summary>Length expected.</summary>
            <remarks>This is the expected number of response data bytes. Do not take account of the status word (SW1 and SW2) here!</remarks>
        </member>
        <member name="P:PCSC.Iso7816.CommandApdu.ExpectedResponseLength">
            <summary>The expected response size (Le + SW1SW2)</summary>
        </member>
        <member name="P:PCSC.Iso7816.CommandApdu.IsValid">
            <summary> Indicates if the command APDU is valid.</summary>
            <value><see langword="true" /> if the APDU is valid.</value>
        </member>
        <member name="T:PCSC.Iso7816.ResponseApdu">
            <summary>A response APDU</summary>
        </member>
        <member name="M:PCSC.Iso7816.ResponseApdu.#ctor(System.Byte[],PCSC.Iso7816.IsoCase,PCSC.SCardProtocol)">
            <summary>Initializes a new instance of the <see cref="T:PCSC.Iso7816.ResponseApdu"/> class.</summary>
            <param name="response">The response as byte array that shall be parsed.</param>
            <param name="isoCase">The ISO case that was used when sending the <see cref="T:PCSC.Iso7816.CommandApdu"/>.</param>
            <param name="protocol">The communication protocol.</param>
        </member>
        <member name="M:PCSC.Iso7816.ResponseApdu.#ctor(System.Byte[],PCSC.Iso7816.IsoCase,PCSC.SCardProtocol,System.Boolean)">
            <summary>Initializes a new instance of the <see cref="T:PCSC.Iso7816.ResponseApdu"/> class.</summary>
            <param name="response">The response as byte array that shall be parsed.</param>
            <param name="isoCase">The ISO case that was used when sending the <see cref="T:PCSC.Iso7816.CommandApdu"/>.</param>
            <param name="protocol">The communication protocol.</param>
            <param name="copy">If <see langword="true"/> the bytes of the supplied response will be copied.</param>
        </member>
        <member name="M:PCSC.Iso7816.ResponseApdu.#ctor(System.Byte[],System.Int32,PCSC.Iso7816.IsoCase,PCSC.SCardProtocol)">
            <summary>Initializes a new instance of the <see cref="T:PCSC.Iso7816.ResponseApdu"/> class.</summary>
            <param name="response">The response as byte array that shall be parsed.</param>
            <param name="length">The size of the response.</param>
            <param name="isoCase">The ISO case that was used when sending the <see cref="T:PCSC.Iso7816.CommandApdu"/>.</param>
            <param name="protocol">The communication protocol.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">If <paramref name="length"/> is greater than the <paramref name="response"/> size.</exception>
        </member>
        <member name="M:PCSC.Iso7816.ResponseApdu.#ctor(System.Byte[],System.Int32,PCSC.Iso7816.IsoCase,PCSC.SCardProtocol,System.Boolean)">
            <summary>Initializes a new instance of the <see cref="T:PCSC.Iso7816.ResponseApdu"/> class.</summary>
            <param name="response">The response as byte array that shall be parsed.</param>
            <param name="length">The size of the response.</param>
            <param name="isoCase">The ISO case that was used when sending the <see cref="T:PCSC.Iso7816.CommandApdu"/>.</param>
            <param name="protocol">The communication protocol.</param>
            <param name="copy">If <see langword="true"/> the bytes of the supplied response will be copied.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">If <paramref name="length"/> is greater than the <paramref name="response"/> size.</exception>
        </member>
        <member name="M:PCSC.Iso7816.ResponseApdu.GetData">
            <summary>
            Gets the data.
            </summary>
            <returns>The data.</returns>
            <exception cref="T:PCSC.Iso7816.InvalidApduException">The response APDU is invalid.</exception>
        </member>
        <member name="M:PCSC.Iso7816.ResponseApdu.ToArray">
            <summary>Converts the APDU structure to a transmittable byte array.</summary>
            <returns>A byte array containing the APDU parameters and data in the correct order.</returns>
        </member>
        <member name="M:PCSC.Iso7816.ResponseApdu.Clone">
            <summary>
            Creates a clone.
            </summary>
            <returns>A clone of the current instance.</returns>
        </member>
        <member name="P:PCSC.Iso7816.ResponseApdu.HasData">
            <summary>Gets a value indicating whether this response has data.</summary>
            <value>
                <c>true</c> if this response has data; otherwise, <c>false</c>.</value>
        </member>
        <member name="P:PCSC.Iso7816.ResponseApdu.IsValid">
            <summary>Indicates if the response APDU is valid.</summary>
            <value>
                <see langword="true" /> if the response APDU is valid.</value>
        </member>
        <member name="P:PCSC.Iso7816.ResponseApdu.SW1">
            <summary>Gets the SW1 status byte.</summary>
            <exception cref="T:PCSC.Iso7816.InvalidApduException">The response APDU is invalid.</exception>
        </member>
        <member name="P:PCSC.Iso7816.ResponseApdu.SW2">
            <summary>Gets the SW1 status byte.</summary>
            <exception cref="T:PCSC.Iso7816.InvalidApduException">The response APDU is invalid.</exception>
        </member>
        <member name="P:PCSC.Iso7816.ResponseApdu.StatusWord">
            <summary>Gets the combination of SW1 and SW2 as 16bit status word.</summary>
            <exception cref="T:PCSC.Iso7816.InvalidApduException">The response APDU is invalid.</exception>
        </member>
        <member name="P:PCSC.Iso7816.ResponseApdu.Length">
            <summary>
            Gets the length of the response APDU
            </summary>
        </member>
        <member name="P:PCSC.Iso7816.ResponseApdu.DataSize">
            <summary>
            Gets the size of the data.
            </summary>
        </member>
        <member name="P:PCSC.Iso7816.ResponseApdu.FullApdu">
            <summary>
            Gets the full response APDU.
            </summary>
            <value>
            The full APDU as byte array.
            </value>
        </member>
        <member name="T:PCSC.SCardScope">
            <summary>Scope of the establishment.</summary>
            <remarks>The following scopes are not used on Linux/UNIX machines using the PC/SC Lite daemon:
                <list type="bullet">
                    <item><term><see cref="F:PCSC.SCardScope.User" /></term></item>
                    <item><term><see cref="F:PCSC.SCardScope.Terminal" /></term></item>
                    <item><term><see cref="F:PCSC.SCardScope.Global" /></term></item>
                </list></remarks>
        </member>
        <member name="F:PCSC.SCardScope.User">
            <summary>Scope in user space.</summary>
        </member>
        <member name="F:PCSC.SCardScope.Terminal">
            <summary>Scope in terminal.</summary>
        </member>
        <member name="F:PCSC.SCardScope.System">
            <summary>Scope in system. Service on the local machine.</summary>
        </member>
        <member name="F:PCSC.SCardScope.Global">
            PC/SC Lite specific extensions 
            <summary>Scope is global. </summary>
        </member>
        <member name="T:PCSC.SCRState">
            <summary>Reader state.</summary>
        </member>
        <member name="F:PCSC.SCRState.Unaware">
            <summary>The application is unaware of the current state, and would like to know. The use of this value results in an immediate return from state transition monitoring services. This is represented by all bits set to zero. (SCARD_STATE_UNAWARE)</summary>
        </member>
        <member name="F:PCSC.SCRState.Ignore">
            <summary>This reader should be ignored. (SCARD_STATE_IGNORE)</summary>
        </member>
        <member name="F:PCSC.SCRState.Changed">
            <summary>There is a difference between the state believed by the application, and the state known by the resource manager. When this bit is set, the application may assume a significant state change has occurred on this reader. (SCARD_STATE_CHANGED)</summary>
        </member>
        <member name="F:PCSC.SCRState.Unknown">
            <summary>The given reader name is not recognized by the resource manager. If this bit is set, then <see cref="F:PCSC.SCRState.Changed" />  and <see cref="F:PCSC.SCRState.Ignore" /> will also be set. (SCARD_STATE_UNKNOWN)</summary>
        </member>
        <member name="F:PCSC.SCRState.Unavailable">
            <summary>The actual state of this reader is not available. If this bit is set, then all the following bits are clear. (SCARD_STATE_UNAVAILABLE)</summary>
        </member>
        <member name="F:PCSC.SCRState.Empty">
            <summary>There is no card in the reader. If this bit is set, all the following bits will be clear. (SCARD_STATE_EMPTY)</summary>
        </member>
        <member name="F:PCSC.SCRState.Present">
            <summary>There is a card in the reader. (SCARD_STATE_PRESENT)</summary>
        </member>
        <member name="F:PCSC.SCRState.AtrMatch">
            <summary>There is a card in the reader with an ATR matching one of the target cards. If this bit is set, <see cref="F:PCSC.SCRState.Present" /> will also be set. This bit is only returned on the SCardLocateCards() function. (SCARD_STATE_ATRMATCH)</summary>
        </member>
        <member name="F:PCSC.SCRState.Exclusive">
            <summary>The card in the reader is allocated for exclusive use by another application. If this bit is set, <see cref="F:PCSC.SCRState.Present" /> will also be set. (SCARD_STATE_EXCLUSIVE)</summary>
        </member>
        <member name="F:PCSC.SCRState.InUse">
            <summary>The card in the reader is in use by one or more other applications, but may be connected to in shared mode. If this bit is set, <see cref="F:PCSC.SCRState.Present" />  will also be set. (SCARD_STATE_INUSE)</summary>
        </member>
        <member name="F:PCSC.SCRState.Mute">
            <summary>There is an unresponsive card in the reader. (SCARD_STATE_MUTE)</summary>
        </member>
        <member name="F:PCSC.SCRState.Unpowered">
            <summary>The card is unpowered. (SCARD_STATE_UNPOWERED)</summary>
        </member>
        <member name="T:PCSC.SCardShareMode">
            <summary>Mode of connection type: exclusive or shared.</summary>
            <remarks>
                <see cref="F:PCSC.SCardShareMode.Direct" /> can be used before using <see cref="M:PCSC.ISCardReader.Control(System.IntPtr,System.Byte[],System.Byte[]@)" />  to send control commands to the reader even if a card is not present in the reader. Contrary to Windows winscard behavior, the reader is accessed in shared mode and not exclusive mode. </remarks>
        </member>
        <member name="F:PCSC.SCardShareMode.Exclusive">
            <summary>This application will NOT allow others to share the reader. (SCARD_SHARE_EXCLUSIVE)</summary>
        </member>
        <member name="F:PCSC.SCardShareMode.Shared">
            <summary>This application will allow others to share the reader. (SCARD_SHARE_SHARED)</summary>
        </member>
        <member name="F:PCSC.SCardShareMode.Direct">
            <summary>Direct control of the reader, even without a card. (SCARD_SHARE_DIRECT)</summary>
        </member>
    </members>
</doc>
