FN_VMB_CHANNEL_PACKET_GET_EXTERNAL_DATA fungsi panggilan balik (vmbuskernelmodeclientlibapi.h)

[Beberapa informasi berkaitan dengan produk pra-rilis yang mungkin dimodifikasi secara substansial sebelum dirilis secara komersial. Microsoft tidak memberikan jaminan, tersurat atau tersirat, sehubungan dengan informasi yang diberikan di sini.]

Fungsi VmbChannelPacketGetExternalData mendapatkan Lists Deskriptor Memori (MDL) eksternal yang terkait dengan paket selama pemrosesan paket.

Sintaks

FN_VMB_CHANNEL_PACKET_GET_EXTERNAL_DATA FnVmbChannelPacketGetExternalData;

NTSTATUS FnVmbChannelPacketGetExternalData(
  VMBPACKETCOMPLETION PacketCompletionContext,
  UINT32 Flags,
  PMDL *Mdl
)
{...}

Parameter

PacketCompletionContext

Handel yang mengidentifikasi paket masuk dan digunakan untuk merujuk ke paket setelah pemrosesan selesai.

Flags

Bendera yang mengontrol bagaimana MDL dipetakan. Nilai bendera yang mungkin adalah:

Nilai Makna
VMBUS_CHANNEL_PACKET_EXTERNAL_DATA_FLAG_READ_ONLY
Petakan MDL sebagai baca-saja.

Mdl

Penunjuk ke MDL yang dipetakan.

Mengembalikan nilai

VmbChannelPacketGetExternalData mengembalikan kode status. Jika fungsi ini mengembalikan STATUS_PENDING, pemanggil harus kembali dari panggilan balik pemrosesan paket, yang akan dipanggil lagi, mungkin di IRQL yang berbeda, ketika data eksternal siap. Pada titik ini, panggilan ke fungsi ini akan berhasil dan mengembalikan data eksternal.

Keterangan

Membuat MDL yang mewakili memori yang dijelaskan oleh transaksi ini menyebabkan wilayah komputer virtual ini disematkan dalam memori selama sisa masa pakai transaksi. Inilah yang dapat menyebabkan fungsi mengembalikan STATUS_PENDING, karena wilayah komputer virtual mungkin perlu di-paged in.

MDL yang dikembalikan oleh fungsi ini menjelaskan memori yang sudah dikunci di tempatnya. Oleh karena itu, tidak perlu memanggil fungsi MmProbeAndLockPages . Namun, MDL tidak akan memiliki alamat virtual mode pengguna atau alamat virtual mode kernel. Jika driver yang memanggil fungsi ini memerlukan alamat virtual untuk memanipulasi memori dalam komputer virtual, driver tersebut harus memanggil MmMapLockedPagesSpecifyCache, atau MmGetSystemAddressForMdlSafe, dan fungsi buka kunci yang sesuai nanti, seperti MmUnmapLockedPages. Alternatif untuk menggunakan alamat virtual adalah dengan hanya meneruskan MDL ke driver yang menggunakannya untuk akses memori langsung.

Driver yang memanggil fungsi ini tidak diperlukan untuk merilis MDL. Ini menjadi tidak valid setelah memanggil fungsi VmbChannelPacketComplete . Pustaka Klien Mode Kernel (KMCL) kemudian merilisnya.

Penting

Fungsi ini dipanggil melalui antarmuka VMBus Kernel Mode Client Library (KMCL), yang disediakan oleh driver bus Vmbkmcl.sys. Ini adalah fungsi klien yang diakses dari struktur KMCL_CLIENT_INTERFACE_V1 .

Untuk informasi selengkapnya, lihat bagian Keterangan dari KMCL_CLIENT_INTERFACE_V1.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 10, versi 1803
Header vmbuskernelmodeclientlibapi.h

Lihat juga

MmGetSystemAddressForMdlSafe

MmMapLockedPagesSpecifyCache

MmProbeAndLockPages

MmUnmapLockedPages

VmbChannelPacketComplete