struktur CMSG_STREAM_INFO (wincrypt.h)
Struktur CMSG_STREAM_INFO digunakan untuk mengaktifkan pemrosesan aliran data daripada pemrosesan blok tunggal. pemrosesan Stream paling sering digunakan saat memproses pesan besar. pesan yang diproses Stream dapat berasal dari sumber berseri seperti file pada hard disk, server, atau CD ROM.
Struktur ini diteruskan ke fungsi CryptMsgOpenToEncode dan CryptMsgOpenToDecode .
Sintaks
typedef struct _CMSG_STREAM_INFO {
DWORD cbContent;
PFN_CMSG_STREAM_OUTPUT pfnStreamOutput;
void *pvArg;
} CMSG_STREAM_INFO, *PCMSG_STREAM_INFO;
Anggota
cbContent
Menentukan ukuran, dalam byte, konten. Pengodean normal Distinguished Encoding Rules (DER) digunakan kecuali CMSG_INDEFINITE_LENGTH (0xFFFFFFFF) diteruskan, menunjukkan bahwa aplikasi tidak menentukan panjang konten. Ini memaksa penggunaan pengodean Aturan Pengodean Dasar (BER) dengan panjang yang tidak terbatas.
pfnStreamOutput
Alamat fungsi panggilan balik yang digunakan untuk membaca dari dan menulis data ke disk saat memproses pesan besar.
Fungsi panggilan balik harus memiliki tanda tangan dan parameter berikut:
#include <windows.h>
#include <Wincrypt.h>
BOOL WINAPI CmsgStreamOutputCallback(
IN const void *pvArg, //in
IN BYTE *pbData, //in
IN DWORD cbData, //in
IN BOOL fFinal //in
);
pvArg
Penunjuk ke argumen untuk diteruskan ke fungsi panggilan balik. Biasanya, ini digunakan untuk data status yang mencakup handel ke pesan yang lebih dalam berlapis (saat mendekode) atau pesan yang kurang dalam (saat pengodean).
Keterangan
Pesan bisa sangat besar sehingga memproses semuanya sekaligus dengan menyimpan seluruh pesan dalam memori bisa sulit, jika tidak mustahil. Dimungkinkan untuk memproses pesan besar tanpa mengalami batasan memori dengan mengalirkan data yang akan diproses menjadi blok berukuran dapat dikelola. Fungsi pesan tingkat rendah dapat digunakan dengan streaming untuk mengodekan atau mendekode pesan. Tingkat berlapis pesan apa pun didukung saat streaming untuk mengodekan dan melakukan streaming untuk mendekode.
Pesan input yang akan diproses sebagai umpan aliran ke CryptMsgUpdate satu blok sekaligus, dengan aplikasi yang menentukan ukuran blok. Saat pesan yang dialirkan diproses untuk pengodean atau pendekodean, data output yang dihasilkan diteruskan kembali ke aplikasi melalui fungsi panggilan balik yang ditentukan aplikasi yang ditentukan oleh anggota pfnStreamOutput .
Tidak ada asumsi yang dapat dibuat tentang ukuran blok data output karena ukurannya dapat bervariasi karena beberapa alasan, seperti jitter dalam ukuran blok output yang disebabkan oleh ukuran blok untuk algoritma enkripsi saat memproses pesan yang diselimuti, atau ketika blok yang berisi header pesan dan SignerInfo seperti yang didefinisikan oleh PKCS # 7 diproses.
Ukuran blok output diteruskan ke fungsi panggilan balik dalam parameter cbData-nya . Penggunaan data output ditentukan dalam aplikasi panggilan. Biasanya, output dari pemrosesan aliran tidak akan bertahan dalam memori secara keseluruhan karena keterbatasan memori; sebaliknya, itu akan diserialisasikan ke disk atau file server.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2003 [hanya aplikasi desktop] |
Header | wincrypt.h |
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk