home *** CD-ROM | disk | FTP | other *** search
- /*++
-
- Copyright (c) 1996 Microsoft Corporation
-
- Module Name:
-
- SCardSrv
-
- Abstract:
-
- IDL source for SCardSrv.DLL. This in-process server (DLL)
- encapsulates the services oriented COM interfaces for the
- Smart Card Service Provider (SSP) ISO 7816 Services.
-
- Author:
-
- Michael Gallagher (a-mgalla) 10/21/1996
-
- Environment:
-
- Win32
-
- Revision History:
-
- Mike Gallagher (a-mgalla) 2/4/1997
- Chris Dudley (cdudley) 4/11/1997
- Chris Dudley (cdudley) 7/7/1997
-
- Notes:
-
- 1. This file will be processed by the MIDL tool to produce
- the type library (SCardSrv.tlb) and marshalling code. A
- header file named SCardSrv.h will be generated by the
- MIDL compiler for the ATL CPP code to use.
-
- 2. Rather than create separate IDL files for the C/C++, VB
- and Java languages, the decision has been made to create
- one IDL file that can be used by any language environment
- using standardized OLE Automation types.
-
- 3. The #define'd constants in this MIDL file will NOT be
- registered into the type library! You will need to define
- these constants in your Visual Basic, Delphi, etc. code
- as needed unless the constant is not defined as a const
- variable in this IDL file. The constants will be defined
- for Java users. And, of course, the C/C++ coders can use
- the header file generated by the MIDL compiler as described
- above.
-
- --*/
-
-
- cpp_quote("//+-------------------------------------------------------------------------")
- cpp_quote("//")
- cpp_quote("// Microsoft Smart Cards Support")
- cpp_quote("// Copyright (C) Microsoft Corporation, 1996.")
- cpp_quote("//")
- cpp_quote("//")
- cpp_quote("// File: SCardSrv.h")
- cpp_quote("//")
- cpp_quote("//--------------------------------------------------------------------------")
-
-
- cpp_quote("")
- cpp_quote("//////////////////////////////////////////////////////////////////")
- cpp_quote("//")
- cpp_quote("// Imports")
- cpp_quote("//")
-
- #ifndef DO_NO_IMPORTS
- import "SspsIdl.idl";
- #endif
-
- interface ISCardISO7816;
-
-
- cpp_quote("")
- cpp_quote("//////////////////////////////////////////////////////////////////")
- cpp_quote("//")
- cpp_quote("// Constants and Types")
- cpp_quote("//")
-
- cpp_quote("#ifndef _NULL_DEFINED")
- cpp_quote("#define _NULL_DEFINED")
- #define NULL 0
- cpp_quote("#endif // !_NULL_DEFINED")
-
- cpp_quote("#ifndef _NULL_BYTE_DEFINED")
- cpp_quote("#define _NULL_BYTE_DEFINED")
- cpp_quote("#define NULL_BYTE (0x00)")
- #define NULL_BYTE (0x00)
- cpp_quote("#endif // !_NULL_BYTE_DEFINED")
-
- //
- // The following values are merely defined as default states for use
- // here in this IDL file. They will NOT be bound into the type library
- // for use.
- //
- // These codes are defined in \\nt\private\ispu\calais\ssps\inc\IsoCodes.h
- // for use and redefinition, if wanted, in the sources of the SCardSrv.DLL.
- //
- //
- #define ISO_OPEN_LOGICAL_CHANNEL (0x00)
- #define ISO_CLOSE_LOGICAL_CHANNEL (0x80)
-
- #define ISO_LOGICAL_CHANNEL_0 (0x00)
- #define ISO_LOGICAL_CHANNEL_1 (0x01)
- #define ISO_LOGICAL_CHANNEL_2 (0x02)
- #define ISO_LOGICAL_CHANNEL_3 (0x03)
- //
- //
-
-
- cpp_quote("")
- cpp_quote("//////////////////////////////////////////////////////////////////")
- cpp_quote("//")
- cpp_quote("// ISCardISO7816 Interface Definition")
- cpp_quote("//")
-
- cpp_quote("#ifndef _LPSCARDISO7816_DEFINED")
- cpp_quote("#define _LPSCARDISO7816_DEFINED")
- [
- object,
- uuid(53B6AA68-3F56-11D0-916B-00AA00C18068),
- dual,
- helpstring("ISCardISO7816 Interface"),
- //hidden,
- //restricted, // prevent macro programming?
- //version(1.0),
- pointer_default(unique)
- ]
- interface ISCardISO7816 : IDispatch
- {
- // Include(s) -
-
- import "oaidl.idl";
-
- // Pointer(s) -
-
- typedef [unique] ISCardISO7816 *LPSCARDISO;
- typedef [unique] LPSCARDISO LPSCARDISO7816;
-
- // Methods -
-
- [id(0),
- helpstring("Write a record to the end of an EF of linear structure of location one of a cyclic structure")]
- HRESULT AppendRecord([in, defaultvalue(NULL_BYTE)] BYTE byRefCtrl, // currently selected EF
- [in] LPBYTEBUFFER pData,
- [in, out] LPSCARDCMD *ppCmd);
-
- [id(1),
- helpstring("Set part of an EF file content to its erased state sequentially")]
- HRESULT EraseBinary([in] BYTE byP1,
- [in] BYTE byP2,
- [in, defaultvalue(NULL)]LPBYTEBUFFER pData,
- [in, out] LPSCARDCMD *ppCmd);
-
- [id(2),
- helpstring("Update the card after a GET CHALLENGE command serviced")]
- HRESULT ExternalAuthenticate([in,defaultvalue(NULL_BYTE)]BYTE byAlgorithmRef,
- [in, defaultvalue(NULL_BYTE)] BYTE bySecretRef,
- [in, defaultvalue(NULL)] LPBYTEBUFFER pChallenge,
- [in, out] LPSCARDCMD *ppCmd);
-
- [id(3),
- helpstring("Issue a challenge for use in a security related procedure")]
- HRESULT GetChallenge([in, defaultvalue(0)] LONG lBytesExpected,
- [in, out] LPSCARDCMD *ppCmd);
-
- [id(4),
- helpstring("Retrieve a primitive data object")]
- HRESULT GetData([in] BYTE byP1,
- [in] BYTE byP2,
- [in, defaultvalue(0)] LONG lBytesToGet,
- [in, out] LPSCARDCMD *ppCmd);
-
- [id(5),
- helpstring("Retrieve further data")]
- HRESULT GetResponse([in, defaultvalue(0)] BYTE byP1, //=0
- [in, defaultvalue(0)] BYTE byP2, //=0
- [in, defaultvalue(0)] LONG lDataLength, // =0
- [in, out] LPSCARDCMD *ppCmd);
-
- [id(6),
- helpstring("Compute authentication data on card using challenge data sent to card")]
- HRESULT InternalAuthenticate([in, defaultvalue(NULL_BYTE)] BYTE byAlgorithmRef,
- [in, defaultvalue(NULL_BYTE)] BYTE bySecretRef,
- [in] LPBYTEBUFFER pChallenge,
- [in, defaultvalue(0)] LONG lReplyBytes,
- [in, out] LPSCARDCMD *ppCmd);
-
- [id(7),
- helpstring("Open or close a logical channel")]
- HRESULT ManageChannel([in, defaultvalue(ISO_CLOSE_LOGICAL_CHANNEL)] BYTE byChannelState,
- [in, defaultvalue(ISO_LOGICAL_CHANNEL_0)] BYTE byChannel,
- [in, out] LPSCARDCMD *ppCmd);
-
- [id(8),
- helpstring("Write a primitive data object")]
- HRESULT PutData([in] BYTE byP1,
- [in] BYTE byP2,
- [in] LPBYTEBUFFER pData,
- [in, out] LPSCARDCMD *ppCmd);
-
- [id(9),
- helpstring("Read part of the content of an EF with transparent structure")]
- HRESULT ReadBinary([in] BYTE byP1,
- [in] BYTE byP2,
- [in, defaultvalue(0)] LONG lBytesToRead,
- [in, out] LPSCARDCMD *ppCmd);
-
- [id(10),
- helpstring("Read contents of a specified record from an EF")]
- HRESULT ReadRecord([in, defaultvalue(NULL_BYTE)] BYTE byRecordId, // current record
- [in] BYTE byRefCtrl,
- [in, defaultvalue(0)] LONG lBytesToRead,
- [in, out] LPSCARDCMD *ppCmd);
-
- [id(11),
- helpstring("Set a current file within a logical channel")]
- HRESULT SelectFile([in] BYTE byP1,
- [in] BYTE byP2,
- [in, defaultvalue(NULL)] LPBYTEBUFFER pData,
- [in, defaultvalue(0)] LONG lBytesToRead,
- [in, out] LPSCARDCMD *ppCmd);
-
- [id(12),
- helpstring("Change the default class ID used in command construction")]
- HRESULT SetDefaultClassId([in] BYTE byClass);
-
- [id(13),
- helpstring("Update bits already present in an EF with command APDU bits")]
- HRESULT UpdateBinary([in] BYTE byP1,
- [in] BYTE byP2,
- [in] LPBYTEBUFFER pData,
- [in, out] LPSCARDCMD *ppCmd);
-
- [id(14),
- helpstring("Update a specific record with the APDU bits")]
- HRESULT UpdateRecord([in, defaultvalue(NULL_BYTE)] BYTE byRecordId, // current record
- [in, defaultvalue(NULL_BYTE)] BYTE byRefCtrl, // first record in currently selected EF
- [in] LPBYTEBUFFER pData,
- [in, out] LPSCARDCMD *ppCmd);
-
- [id(15),
- helpstring("Compare the verification data sent to the card with its stored reference data")]
- HRESULT Verify([in, defaultvalue(NULL_BYTE)] BYTE byRefCtrl, // no info is given
- [in, defaultvalue(NULL)] LPBYTEBUFFER pData,
- [in, out] LPSCARDCMD *ppCmd);
-
- [id(16),
- helpstring("Write binary values into an EF")]
- HRESULT WriteBinary([in] BYTE byP1,
- [in] BYTE byP2,
- [in] LPBYTEBUFFER pData,
- [in, out] LPSCARDCMD *ppCmd);
-
- [id(17),
- helpstring("Write to the specified record in an EF")]
- HRESULT WriteRecord([in, defaultvalue(NULL_BYTE)] BYTE byRecordId, // current record
- [in, defaultvalue(NULL_BYTE)] BYTE byRefCtrl, // first record in currently selected EF
- [in] LPBYTEBUFFER pData,
- [in, out] LPSCARDCMD *ppCmd);
- };
- cpp_quote("#endif //!_LPSCARDISO7816_DEFINED")
-
-
- cpp_quote("")
- cpp_quote("//////////////////////////////////////////////////////////////////")
- cpp_quote("//")
- cpp_quote("// SCardSrv Type Library")
- cpp_quote("//")
-
- [
- uuid(53B6AA61-3F56-11D0-916B-00AA00C18068),
- version(1.0),
- //hidden,
- //lcid(0x0409), // general language
- helpstring("SCardSrv 1.0 Type Library")
- ]
- library SCardSrvLib
- {
- // NOTE: must include stdole2.tlb due to problems with the Alpha stdole32.tlb.
- // This will generate warnings during build, but compile is successful.
- #ifdef _ALPHA_
- importlib("stdole2.tlb");
- #else
- importlib("stdole32.tlb");
- #endif
-
- [
- uuid(53B6AA6C-3F56-11D0-916B-00AA00C18068),
- helpstring("SCardISO7816 Class"),
- //hidden,
- //licensed,
- aggregatable
- ]
- coclass CSCardISO7816
- {
- [default] interface ISCardISO7816;
- };
-
- };
-