home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tricks of the Windows Gam…ming Gurus (2nd Edition)
/
Disc2.iso
/
vc98
/
include
/
scardsrv.idl
< prev
next >
Wrap
Text File
|
1998-04-25
|
11KB
|
304 lines
/*++
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;
};
};