共用方式為


建立新功能

下列函式是可以擴充的 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 數據結構類型定義放在編譯使用者程式時所包含的頭檔中。