Bagikan melalui


Fungsi IoAttachDeviceToDeviceStackSafe (ntddk.h)

Rutinitas IoAttachDeviceToDeviceStackSafe melampirkan objek perangkat pemanggil ke objek perangkat paling atas dalam tumpukan driver.

Sintaks

NTSTATUS IoAttachDeviceToDeviceStackSafe(
  [in]  PDEVICE_OBJECT SourceDevice,
  [in]  PDEVICE_OBJECT TargetDevice,
  [out] PDEVICE_OBJECT *AttachedToDeviceObject
);

Parameter

[in] SourceDevice

Arahkan ke objek perangkat yang dibuat penelepon.

[in] TargetDevice

Penunjuk ke objek perangkat di tumpukan tempat objek SourceDevice akan dilampirkan.

[out] AttachedToDeviceObject

Pada input, parameter ini menentukan alamat SourceDevice-DeviceExtension-AttachedToDeviceObject>>, yang harus berisi pointer NULL. Pada output, parameter ini menerima pointer ke objek perangkat tempat SourceDevice dilampirkan.

Nilai kembali

IoAttachDeviceToDeviceStackSafe mengembalikan STATUS_SUCCESS jika SourceDevice berhasil dilampirkan di atas TargetDevice; jika tidak, ia mengembalikan STATUS_NO_SUCH_DEVICE.

Keterangan

Seperti IoAttachDeviceToDeviceStack, IoAttachDeviceToDeviceStackSafe membuat lapisan antar driver sehingga IRP yang sama dikirim ke setiap driver di tumpukan. Namun, tidak seperti IoAttachDeviceToDeviceStack, IoAttachDeviceToDeviceStackSafe memiliki parameter tambahan, AttachedToDeviceObject, yang digunakan driver filter untuk meneruskan alamat bidang AttachedToDeviceObject objek SourceDevice . IoAttachDeviceToDeviceStackSafe memperbarui bidang ini sambil menahan kunci database sistem I/O. Karena memegang kunci ini, IoAttachDeviceToDeviceStackSafe menghindari kondisi balapan yang dapat terjadi jika objek SourceDevice menerima IRP sebelum bidang AttachedToDeviceObject diperbarui.

Driver filter sistem file memanggil IoAttachDeviceToDeviceStackSafe untuk melampirkan objek perangkat filternya sendiri (SourceDevice) di atas objek perangkat (TargetDevice) milik sistem file atau driver filter lainnya. Permintaan I/O berikutnya yang dikirim ke AttachedToDeviceObject diterima terlebih dahulu oleh driver filter, yang memprosesnya dan meneruskannya ke driver berikutnya di tumpukan dengan memanggil IoCallDriver.

Jika objek perangkat yang ditentukan oleh TargetDevice saat ini berada di bagian atas tumpukan driver, SourceDevice dilampirkan langsung ke TargetDevice. Dalam hal ini, TargetDevice dan penunjuk AttachedToDeviceObject yang dikembalikan sama.

Jika satu atau beberapa objek perangkat filter sudah terpasang di atas TargetDevice di tumpukan driver, IoAttachDeviceToDeviceStackSafe melampirkan SourceDevice ke objek perangkat filter paling atas. Penunjuk ke yang terakhir dikembalikan di AttachedToDeviceObject.

Saat ini setelah terpasang ke bagian atas tumpukan, SourceDevice menempati bagian atas tumpukan driver. Namun, perhatikan bahwa ini tidak selalu berarti bahwa SourceDevice akan tetap berada di bagian atas tumpukan driver. Filter lain dapat melampirkan objek perangkat filter mereka sendiri di atas SourceDevice di tumpukan.

IoAttachDeviceToDeviceStackSafe mengatur anggota AlignmentRequirement objek perangkat yang ditunjukkan oleh SourceDevice ke nilai yang sesuai di objek perangkat berikutnya yang lebih rendah dan mengatur StackSize di SourceDevice ke nilai di objek berikutnya yang lebih rendah ditambah satu.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Rutinitas ini tersedia pada Pembaruan Rollup untuk Windows 2000 Paket Layanan 4 (SP4) dan pada Windows XP dan yang lebih baru.
Target Platform Universal
Header ntddk.h (termasuk Ntddk.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
Aturan kepatuhan DDI HwStorPortProhibitedDDIs(storport)

Lihat juga

IoAttachDeviceToDeviceStack

IoCallDriver