AVCSTRM_READ

Kode fungsi AVCSTRM_READ digunakan untuk mengirimkan buffer data avcstrm.sys yang diisi dengan data dari aliran yang ditentukan.

Blok Status I/O

Jika berhasil, avcstrm.sys mengatur Irp-IoStatus.Status> ke STATUS_SUCCESS.

Kemungkinan nilai pengembalian kesalahan meliputi:

Status Kesalahan Deskripsi
STATUS_DEVICE_REMOVED Perangkat yang sesuai dengan operasi AVCSTRM_READ tidak ada lagi.
STATUS_CANCELLED Permintaan tidak dapat diselesaikan.
STATUS_INVALID_PARAMETER Parameter yang ditentukan dalam IRP salah,
STATUS_INSUFFICIENT_RESOURCES Tidak ada sumber daya sistem yang memadai untuk menyelesaikan permintaan.
STATUS_PENDING Permintaan telah diterima tetapi memerlukan pemrosesan lebih lanjut. Rutinitas penyelesaian I/O akan menangani respons akhir.

AVC_STREAM_REQUEST_BLOCK Input

SizeOfThisBlock, Versi dan Fungsi
Gunakan makro INIT_AVCSTRM_HEADER untuk menginisialisasi anggota ini. Teruskan AVCSTRM_READ dalam argumen Permintaan makro.

AVCStreamContext
Menentukan konteks aliran (handel) yang dikembalikan oleh panggilan AVCSTRM_OPEN sebelumnya yang merupakan sumber data untuk operasi baca.

BufferStruct
Menentukan buffer tempat operasi baca harus menempatkan data.

Driver subunit harus terlebih dahulu mengalokasikan IRP dan struktur AVC_STREAM_REQUEST_BLOCK .

Selanjutnya, ini harus menggunakan makro INIT_AVCSTRM_HEADER untuk menginisialisasi struktur AVC_STREAM_REQUEST_BLOCK, meneruskan AVCSTRM_READ sebagai argumen Permintaan ke makro.

Selanjutnya, driver subunit mengatur anggota AVCStreamContext ke konteks aliran (handel) aliran yang menyediakan data yang akan dibaca. Terakhir, driver subunit menetapkan anggota BufferStruct dari serikat CommandData yang menjelaskan buffer tempat operasi baca menempatkan data.

Untuk mengirim permintaan ini, subunit mengirimkan IRP IRP_MJ_INTERNAL_DEVICE_CONTROL dengan anggota IoControlCode dari IRP yang diatur ke IOCTL_AVCSTRM_CLASS dan anggota IRP Argumen1 yang diatur ke struktur AVC_STREAM_REQUEST_BLOCK yang menjelaskan operasi baca yang akan berlangsung.

Perintah ini selesai secara asinkron. Setelah selesai, rutinitas penyelesaian I/O yang diatur dalam IRP dipanggil.

Kode fungsi ini harus dipanggil di IRQL = PASSIVE_LEVEL.

Komentar

Fungsi ini menggunakan anggota BufferStruct dari union CommandData dalam struktur AVC_STREAM_REQUEST_BLOCK seperti yang ditunjukkan di bawah ini.

typedef struct _AVC_STREAM_REQUEST_BLOCK {
  ULONG  SizeOfThisBlock;
  ULONG  Version;
  AVCSTRM_FUNCTION  Function;
  .
  .
  PVOID AVCStreamContext;
  .
  .
  union _tagCommandData {
    .
    .
    AVCSTRM_BUFFER_STRUCT  BufferStruct;
    .
    .
  } CommandData;
} AVC_STREAM_REQUEST_BLOCK, *PAVC_STREAM_REQUEST_BLOCK;

Persyaratan

Header: Dinyatakan dalam avcstrm.h. Sertakan avcstrm.h.

Lihat juga

AVC_STREAM_REQUEST_BLOCK

INIT_AVCSTRM_HEADER

IRP_MJ_INTERNAL_DEVICE_CONTROL

IOCTL_AVCSTRM_CLASS

AVCSTRM_BUFFER_STRUCT

AVCSTRM_FUNCTION