Fungsi SpbRequestGetTransferParameters (spbcx.h)

Metode SpbRequestGetTransferParameters mengambil parameter transfer untuk transfer individual dalam urutan transfer I/O.

Sintaks

void SpbRequestGetTransferParameters(
  [in]            SPBREQUEST              SpbRequest,
  [in]            ULONG                   Index,
  [out, optional] SPB_TRANSFER_DESCRIPTOR *TransferDescriptor,
  [out, optional] PMDL                    *TransferBuffer
);

Parameter

[in] SpbRequest

Handel SPBREQUEST ke permintaan I/O untuk mengambil parameter transfer. Parameter ini harus menjadi handel untuk permintaan IOCTL_SPB_EXECUTE_SEQUENCE .

[in] Index

Indeks transfer dalam urutan transfer I/O. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini.

[out, optional] TransferDescriptor

Penunjuk ke struktur SPB_TRANSFER_DESCRIPTOR yang dialokasikan pemanggil tempat metode menulis parameter transfer. Parameter TransferDescriptor bersifat opsional dan dapat ditentukan sebagai NULL jika pemanggil tidak memerlukan parameter transfer. Untuk informasi selengkapnya, lihat bagian Keterangan.

[out, optional] TransferBuffer

Pointer ke lokasi tempat metode menulis pointer ke MDL (atau rantai MDL) yang menjelaskan memori fisik dalam buffer transfer. Pemanggil tidak boleh mengubah isi MDL ini. Parameter ini bersifat opsional dan dapat diatur ke NULL jika MDL tidak diperlukan. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini.

Nilai kembali

Tidak ada

Keterangan

Untuk meminta urutan transfer I/O, klien (driver periferal) driver pengontrol SPB mengirimkan permintaan IOCTL_SPB_EXECUTE_SEQUENCE yang berisi daftar transfer secara berurutan. Driver pengontrol Anda dapat memanggil SpbRequestGetTransferParameters untuk mendapatkan informasi tentang transfer tertentu dalam urutan.

Parameter Indeks adalah indeks yang mengidentifikasi transfer tertentu dalam urutan. Jika N adalah jumlah transfer dalam urutan, indeks yang valid berkisar dari 0 hingga N–1. Untuk menentukan jumlah transfer secara berurutan, panggil metode SpbRequestGetParameters . Metode ini mengambil struktur SPB_TRANSFER_DESCRIPTOR yang berisi parameter permintaan. Anggota TransferCount dari struktur ini menentukan jumlah transfer dalam urutan.

Jika TransferDescriptor bukan NULL, pemanggil harus memanggil fungsi SPB_TRANSFER_DESCRIPTOR_INIT untuk menginisialisasi struktur sebelum memanggil SpbRequestGetTransferParameters. Setelah struktur diinisialisasi, struktur dapat digunakan kembali sebanyak yang diperlukan tanpa diinisialisasi ulang.

TransferBuffer adalah penunjuk opsional di mana SpbRequestGetTransferParameters menulis penunjuk ke MDL yang menjelaskan tata letak halaman fisik untuk buffer transfer. Buffer transfer dapat dijelaskan oleh satu MDL atau oleh rantai MDL. Buffer sederhana, yang terdiri dari blok memori virtual yang berdekatan, dijelaskan oleh satu MDL. Jika buffer transfer diformat sebagai daftar pengumpulan sebar, setiap blok memori virtual yang berdekatan dalam buffer dijelaskan oleh MDL dalam rantai MDL. Untuk informasi selengkapnya tentang MDL, lihat Menggunakan MDL.

Contoh

//
// Note that this snippet shows a transfer completing synchronously. This
// is a horrible thing for a driver to do, but demonstrates the DDI nicely.
//

WDF_REQUEST_PARAMETERS parameters;
WDF_TRANSFER_DESCRIPTOR transfer;

WDF_REQUEST_PARAMETERS_INIT(&parameters);
WDF_TRANSFER_DESCRIPTOR_INIT(&transfer);

SpbRequestGetParameters(request, &parameters);

for (ULONG i = 0; i < parameters.SequenceCount; i += 1)
{
    WDFMEMORY buffer;

    SpbRequestGetTransferParameters(request, i, &transfer, &buffer);

    MyDriverPerformTransfer(deviceContext, 
                            request,
                            transfer,
                            buffer);
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia dimulai dengan Windows 8.
Target Platform Universal
Header spbcx.h
Pustaka Spbcxstubs.lib
IRQL <= DISPATCH_LEVEL

Lihat juga