私はCNG(Cryptography Next Generation)の下で、ユーザモードのハッシュプロバイダとまったく同じアルゴリズムプロバイダを作成します。
CNG Development Kitヘルプの指示に従って、「ハッシュプロバイダはGetHashInterface
関数を実装し、名前でエクスポートする必要があります」。
アルゴリズムプロバイダを実装するには、CNG開発キットの "bcrypt.h"ファイルを含める必要があります。このファイルには、正確に、GetHashInterface
機能のためではなく、export
ディレクティブなしのインタフェースを定義します。GetHashInterface機能をエクスポートするには?
__checkReturn
NTSTATUS
WINAPI
GetHashInterface(
__in LPCWSTR pszProviderName,
__in LPCWSTR pszAlgId,
__out BCRYPT_HASH_FUNCTION_TABLE **ppFunctionTable,
__in ULONG dwFlags);
私はエクスポート機能としての私のヘッダファイル内の関数を再定義する場合、例えば
#ifndef __CngHashProvider
#define __CngHashProvider
///////////////////////////////////////////////////////////////
#ifndef EXPORT
#define EXPORT extern "C" __declspec(dllexport)
#endif
EXPORT NTSTATUS WINAPI GetHashInterface(
__in LPCWSTR pszProviderName,
__in LPCWSTR pszAlgId,
__out BCRYPT_HASH_FUNCTION_TABLE **ppFunctionTable,
__in ULONG dwFlags
);
////////////////////////////////////////////////////////////////
#endif __CngHashProvider
私が取得する必要エラーメッセージ:
エラーC2375 'GetHashInterface':再定義;異なるリンケージ
私はEXPORTディレクティブを削除(または機能のためのインタフェースの事前定義の全体を削除する)、エラーメッセージが消えるはずですが、機能は私のDLLからエクスポートすることができない場合。
問題を解決して、必要なGetHashInterface
関数をエクスポートする方法を教えてください。
よろしくお願いいたします。