Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Fungsi NCryptStreamUpdate mengenkripsi dan mendekripsi blok data.
Sintaks
SECURITY_STATUS NCryptStreamUpdate(
[in] NCRYPT_STREAM_HANDLE hStream,
[in] const BYTE *pbData,
SIZE_T cbData,
BOOL fFinal
);
Parameter
[in] hStream
Tangani ke objek stream yang dibuat dengan memanggil NCryptStreamOpenToProtect atau NCryptStreamOpenToUnprotect.
[in] pbData
Penunjuk ke array byte yang akan diproses.
cbData
Jumlah byte dalam array biner yang ditentukan oleh parameter pbData .
fFinal
Nilai Boolean yang menentukan apakah blok data terakhir telah diproses.
Nilai kembali
Mengembalikan kode status yang menunjukkan keberhasilan atau kegagalan fungsi. Kemungkinan kode pengembalian termasuk, tetapi tidak terbatas pada, berikut ini.
| Menampilkan kode | Deskripsi |
|---|---|
|
Fungsi berhasil. |
|
Isi tidak dapat didekodekan. |
|
Handel aliran yang ditujukan oleh parameter hStream tidak valid. |
|
Tidak tersedia cukup memori untuk memproses isi. |
Keterangan
Anda harus memanggil NCryptStreamOpenToProtect atau NCryptStreamOpenToUnprotect untuk membuka aliran sebelum memanggil NCryptStreamUpdate
Pesan bisa sangat besar sehingga memproses semuanya sekaligus dengan menyimpan seluruh pesan dalam memori bisa sulit. Namun, dimungkinkan untuk memproses pesan besar dengan mempartisi data yang akan diproses menjadi blok yang dapat dikelola.
Untuk melakukan ini, gunakan NCryptStreamUpdate dalam perulangan yang maju melalui blok file menurut blok. Saat pesan yang dialirkan diproses, data output yang dihasilkan diteruskan kembali ke aplikasi Anda dengan menggunakan fungsi panggilan balik yang Anda tentukan. Ini ditunjukkan oleh contoh berikut. Untuk informasi selengkapnya tentang fungsi panggilan balik, lihat PFNCryptStreamOutputCallback.
BOOL fFinal = FALSE;
PBYTE pbBuf = NULL;
// Determine the number of bytes to read.
DWORD cbData = GetFileSize( hFileIn, NULL );
// Call NCryptStreamUpdate while there is data left to read.
while(FALSE == fFinal)
{
// Read dwBlockSize bytes from the file.
if(dwBlockSize > 1)
{
if( !ReadFile(hFileIn, pbBuf, dwBlockSize, &cbResult, NULL) )
{
hr = HRESULT_FROM_WIN32(hr);
goto CleanUp;
}
}
// Decrement the number of bytes to read by the current amount read.
cbData -= cbResult;
// Set fFinal if there are no bytes left to read.
if (cbData <= 0) fFinal = TRUE;
// Encrypt (or decrypt) the bytes pointed to by pbBuf
hr = NCryptStreamUpdate(hStream, pbBuf, cbResult, fFinal);
if( FAILED(hr) )
{
goto CleanUp;
}
}
CleanUp:
if( NULL != hStream )
{
NCryptStreamClose(hStream);
}
if( NULL != hDescriptor )
{
NCryptCloseProtectionDescriptor( hDescriptor );
}
if(NULL != pbBuf)
{
LocalFree(pbBuf);
pbBuf = NULL;
}
Persyaratan
| Persyaratan | Nilai |
|---|---|
| Klien minimum yang didukung | Windows 8 [khusus aplikasi desktop] |
| Server minimum yang didukung | Windows Server 2012 [hanya aplikasi desktop] |
| Target Platform | Windows |
| Header | ncryptprotect.h |
| Pustaka | NCrypt.lib |
| DLL | NCrypt.dll |