Fungsi KsStreamIo (ks.h)
Fungsi KsStreamIo melakukan pembacaan atau penulisan aliran terhadap objek file yang ditentukan. Fungsi ini mencoba menggunakan FastIoDispatch jika memungkinkan, atau menghasilkan permintaan baca atau tulis terhadap objek perangkat.
Sintaksis
KSDDKAPI NTSTATUS KsStreamIo(
[in] PFILE_OBJECT FileObject,
[in, optional] PKEVENT Event,
[in, optional] PVOID PortContext,
[in, optional] PIO_COMPLETION_ROUTINE CompletionRoutine,
[in, optional] PVOID CompletionContext,
[in, optional] KSCOMPLETION_INVOCATION CompletionInvocationFlags,
[out] PIO_STATUS_BLOCK IoStatusBlock,
[in, out] PVOID StreamHeaders,
[in] ULONG Length,
[in] ULONG Flags,
[in] KPROCESSOR_MODE RequestorMode
);
Parameter
[in] FileObject
Menentukan objek file untuk melakukan I/O terhadap.
[in, optional] Event
Secara opsional berisi peristiwa yang akan digunakan dalam I/O. Jika tidak ada yang diteruskan, panggilan diasumsikan berada di objek file sinkron atau pemanggil sedang menunggu peristiwa objek file, atau panggilan dapat diselesaikan secara asinkron. Jika digunakan, dan bendera KSSTREAM_SYNCHRONOUS tidak diatur, ini harus merupakan peristiwa yang dialokasikan oleh manajer objek. Jika penelepon melakukan I/O asinkron, penelepon harus menunggu peristiwa objek file atau meneruskan peristiwa dalam parameter ini dan menunggunya. Jika ini tidak dilakukan, maka tidak ada cara bagi pemanggil untuk mengetahui kapan IoStatusBlock telah diperbarui oleh panggilan.
[in, optional] PortContext
Secara opsional berisi informasi konteks untuk port penyelesaian.
[in, optional] CompletionRoutine
Secara opsional menunjuk ke rutinitas penyelesaian untuk IRP ini.
[in, optional] CompletionContext
Jika CompletionRoutine ditentukan, ini menyediakan penunjuk konteks dalam panggilan balik rutin penyelesaian.
[in, optional] CompletionInvocationFlags
Menentukan bendera pemanggilan yang menentukan kapan rutinitas penyelesaian dipanggil. Lihat tabel berikut untuk nilai yang digunakan.
[out] IoStatusBlock
Lokasi untuk mengembalikan informasi status. Ini selalu diasumsikan sebagai alamat yang valid, terlepas dari mode pemohon. Nilai harus tetap valid hingga panggilan memperbarui status. Pemanggil harus melakukan I/O sinkron atau harus menunggu peristiwa objek file atau peristiwa yang diteruskan dalam parameter Peristiwa sebelum mengizinkan alamat ini menjadi tidak valid.
[in, out] StreamHeaders
Menentukan daftar header stream. Alamat ini, serta alamat buffer data, diasumsikan telah diperiksa untuk akses yang sesuai. Klien mode kernel yang mengirimkan header streaming harus mengalokasikan header dari memori NonPagedPool.
[in] Length
Menentukan ukuran StreamHeaders yang diteruskan.
[in] Flags
Menentukan berbagai bendera untuk I/O. Lihat tabel berikut untuk nilai yang digunakan.
[in] RequestorMode
Menunjukkan mode prosesor untuk ditempatkan di IRP jika perlu dibuat. Variabel ini juga menentukan apakah panggilan I/O cepat dapat dilakukan. Jika mode pemohon bukan mode kernel, tetapi mode sebelumnya adalah, maka I/O cepat tidak dapat digunakan.
Mengembalikan nilai
Fungsi KsStreamIo mengembalikan STATUS_SUCCESS jika berhasil, STATUS_PENDING jika tindakan tertunda, atau jika tidak berhasil, tindakan tersebut mengembalikan kesalahan I/O.
Komentar
Nilai enumerasi berikut digunakan untuk variabel CompletionInvocationFlags dan berjenis KSCOMPLETION_INVOCATION:
CompletionInvocationFlags | Deskripsi |
---|---|
KsInvokeOnSuccess | Memanggil rutinitas penyelesaian pada keberhasilan. |
KsInvokeOnError | Memanggil rutinitas penyelesaian pada kesalahan. |
KsInvokeOnCancel | Memanggil rutinitas penyelesaian pada pembatalan. |
Nilai yang ditentukan berikut digunakan untuk variabel Bendera:
Bendera | Deskripsi |
---|---|
KSSTREAM_READ | Menentukan bahwa IRP IOCTL_KS_STREAMREAD akan dibangun. Ini adalah default. |
KSSTREAM_WRITE | Menentukan bahwa IRP IOCTL_KS_STREAMWRITE akan dibuat. |
KSSTREAM_PAGED_DATA | Menentukan bahwa data dapat di-pageable. Ini adalah default dan dapat digunakan setiap saat. |
KSSTREAM_NONPAGED_DATA | Menentukan bahwa data tidak disebarkan dan dapat digunakan sebagai peningkatan performa. |
KSSTREAM_SYNCHRONOUS | Menentukan bahwa IRP sinkron. Ini berarti bahwa jika parameter Peristiwa diteruskan, parameter tersebut tidak diperlakukan sebagai peristiwa pengelola objek dan tidak direferensikan atau didereferensikan. |
KSSTREAM_READ setara dengan KSPROBE_STREAMREAD.
Demikian pula, KSSTREAM_WRITE setara dengan KSPROBE_STREAMWRITE.
Persyaratan
Syarat | Nilai |
---|---|
Platform Target | Universal |
Header | ks.h (termasuk Ks.h) |
Pustaka | Ks.lib |