Cryptographic Token Interface Standard

PKCS#11


Win32

Developers using Microsoft Developer Studio 5.0 to produce C or C++ code which implements or makes use of a Win32 Cryptoki .dll might issue the following directives before including any Cryptoki header files:

#pragma pack(push, cryptoki, 1)
#define CK_IMPORT_SPEC __declspec(dllimport)
/* Define CRYPTOKI_EXPORTS during the build of cryptoki
* libraries. Do not define it in applications.
*/
#ifdef CRYPTOKI_EXPORTS
#define CK_EXPORT_SPEC __declspec(dllexport) 
#else
#define CK_EXPORT_SPEC CK_IMPORT_SPEC 
#endif
/* Ensures the calling convention for Win32 builds */
#define CK_CALL_SPEC __cdecl
#define CK_PTR *
#define CK_DEFINE_FUNCTION(returnType, name) \
returnType CK_EXPORT_SPEC CK_CALL_SPEC name
#define CK_DECLARE_FUNCTION(returnType, name) \
returnType CK_EXPORT_SPEC CK_CALL_SPEC name
#define CK_DECLARE_FUNCTION_POINTER(returnType, name) \
returnType CK_IMPORT_SPEC (CK_CALL_SPEC CK_PTR name)
#define CK_CALLBACK_FUNCTION(returnType, name) \
returnType (CK_CALL_SPEC CK_PTR name)
#ifndef NULL_PTR
#define NULL_PTR 0
#endif

After including any Cryptoki header files, they might issue the following directives to reset the structure packing to its earlier value:

#pragma pack(pop, cryptoki)

RSA Security Inc. Public-Key Cryptography Standards - PKCS#11 - v211