CertSrvBackupRead 函数 (certbcli.h)

CertSrvBackupRead 函数从证书服务文件读取字节。

语法

HRESULT CERTBCLI_API CertSrvBackupRead(
  [in]  HCSBC hbc,
  [out] VOID  *pvBuffer,
  [in]  DWORD cbBuffer,
  [out] DWORD *pcbRead
);

参数

[in] hbc

证书服务备份上下文的句柄。

[out] pvBuffer

指向存储的 Void 指针,该存储将包含从要备份的文件读取的字节。

[in] cbBuffer

pvBuffer 引用的存储区域的大小。

[out] pcbRead

指向 DWORD 值的指针,该值表示 CertSrvBackupRead 读取的实际字节数。 如果已到达文件末尾,读取的字节数可以小于分配给 pvBuffer 的 存储区域的大小。

返回值

返回值为 HRESULT。 值为 S_OK 表示成功。

注解

使用 CertSrvBackupOpenFile) 打开文件以进行备份 (后,调用 CertSrvBackupRead 检索文件的内容,并调用特定于应用程序的例程以将内容写入备份介质。 CertSrvBackupRead 和特定于应用程序的例程可以置于循环中,直到读取和备份文件的所有字节。 读取完文件后,通过调用 CertSrvBackupClose 将其关闭。

示例


#include <windows.h>
#include <stdio.h>
#include <Certbcli.h>

#define BUFFSIZE 524288

FNCERTSRVBACKUPREAD* pfnRead;
char * szBackupReadFunc = "CertSrvBackupRead";
BYTE       ReadBuff[BUFFSIZE];
DWORD      cbRead=0;
HRESULT    hr=0;

// Get the address for the desired function.    
// hInst was set by calling LoadLibrary for Certadm.dll.
pfnRead = (FNCERTSRVBACKUPREAD*)GetProcAddress(hInst,
                                          szBackupReadFunc);
if ( NULL == pfnRead )
{
    printf("Failed GetProcAddress - %s, error=%d\n",
           szBackupReadFunc,
           GetLastError() );
    exit(1); // Or other appropriate error action.
}

// Read the file.
// hCSBC represents an HCSBC used in
// an earlier call to CertSrvBackupOpenFile.
// To read the entire file, this code
// would be placed in a loop.
hr = pfnRead( hCSBC,
              &ReadBuff,
              BUFFSIZE,
              &cbRead );
if (FAILED(hr))
{
    printf("Failed pfnRead call [%x]\n", hr);
    exit(1); // Or other appropriate error action.
}

// Use the bytes read as needed. For example,
// in an application-specific routine to back
// up the file contents.
// ...

要求

要求
最低受支持的客户端 无受支持的版本
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 certbcli.h (包括 Certsrv.h)
Library Certadm.lib
DLL Certadm.dll

另请参阅

CertSrvBackupClose

CertSrvBackupOpenFile

使用证书服务备份和还原功能