CNG (Kriptografi Yeni Nesil) altında, tam olarak bir kullanıcı modu Karma Sağlayıcısı altında basit bir algoritma sağlayıcısı yazacağım.
CNG Geliştirme Kiti Yardımındaki yönergelere göre "Bir karma sağlayıcı, GetHashInterface
işlevini uygulamalı ve adıyla dışa aktarmalıdır".
Bir algoritma sağlayıcısı uygulamak için CNG Geliştirme Seti'nden "bcrypt.h" dosyasını eklemem gerekir. Bu dosya da aynen, GetHashInterface
fonksiyonu için ancak bir export
yönergesi OLMADAN arabirimini tanımlayın:GetHashInterface fermesyonu nasıl dışa aktarılır?
__checkReturn
NTSTATUS
WINAPI
GetHashInterface(
__in LPCWSTR pszProviderName,
__in LPCWSTR pszAlgId,
__out BCRYPT_HASH_FUNCTION_TABLE **ppFunctionTable,
__in ULONG dwFlags);
Ben verilebilir bir fonksiyonu olarak benim başlık dosyasına işlevini yeniden tanımlamak için, örneğin
#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
Ben almalısınız bir hata iletisi:
Hata C2375 'GetHashInterface': redefinition; Farklı bağlantı
Ben İHRACAT yönergesi kaldırmak (veya işlev için arayüz önceden tanımlanmasını bütününü kaldırırsanız)
, hata mesajı geçecektir ama işlevi benim DLL ihraç edilemez.Lütfen bana, bana gerekli olan
GetHashInterface
işlevini vermek için sorunu çözmenin yolunu söyleyin.
Saygılarımızla!