共用方式為


建立新功能

下列函式是可擴充的 CryptoAPI 函式。

CryptoAPI 函式 OID 函式名稱定義 OID 函式名稱字串
CryptEncodeObject CRYPT_OID_ENCODE_ OBJECT_FUNC
「CryptDllEncodeObject」
CryptDecodeObject CRYPT_OID_DECODE_ OBJECT_FUNC
「CryptDllDecodeObject」
CertOpenStore CRYPT_OID_OPEN_ STORE_PROV_FUNC
「CertDllOpenStoreProv」
CertVerifyCTLUsage CRYPT_OID_VERIFY_ CTL_USAGE_FUNC
「CertDllVerifyCTLUsage」
CertVerifyRevocation CRYPT_OID_VERIFY_ REVOCATION_FUNC
「CertDllVerifyRevocation」

 

在一般搭配現有的 OID 和編碼類型使用時,會使用 CryptoAPI 函式本身中的程式碼。 如果使用 OID 呼叫其中一個函式,且密碼編譯API 函式中的程式碼未設計為處理,則必須在 DLL 中建立包含新功能的新函式。 該 DLL 必須在登錄中註冊,或安裝在記憶體中。

使用新指定的 OID 和編碼類型呼叫其中一個列出的函式時,會使用新 DLL 中的程式碼,而不是在 CryptoAPI 函式中提供的程式碼。

新開發函式的名稱可以是上表中的 「OID 函式名稱字串」 下所列的名稱,也可以在註冊新的函式程式碼時提供不同的名稱。

新的函式必須使用適當的原型。 除了 CertOpenStore以外的所有案例中,此原型與呼叫新函式的 CryptoAPI 函式相同。 在 CertOpenStore 案例中,原型如下所示。

#include <windows.h>

BOOL WINAPI CertDllOpenStoreProv(
  IN LPCSTR lpszStoreProvider,
  IN DWORD dwEncodingType,
  IN HCRYPTPROV hCryptProv,
  IN DWORD dwFlags,
  IN const void *pvPara,
  IN HCERTSTORE hCertStore,
  IN OUT PCERT_STORE_PROV_INFO pStoreProvInfo
);

注意

如果原型不相符,系統堆疊將會損毀。

 

除了在 DLL 中提供新函式的程式碼之外,擴充 CryptEncodeObjectCryptDecodeObject 的功能,還需要將新 C 資料結構的類型定義放在編譯使用者程式時所包含的標頭檔中。