2013-01-07 20 views
7

Tamamen istekte bulunan CPU'ya CompleteRequest'in tamamlanmasından emin olmaya çalışıyorum. FdoDeviceControl sırasında isteği gönderen CPU'yu veya gönderim kuyruğuna girmeden önce isteğin nereden geldiğini görmek için başka bir yolu almanın bir yolu var mı?Bir WDFREQUEST oluşturan CPU'yu almak mümkün mü?

+0

Bu sevk işleminden sonra CPU'nun alınması, elbette ki yeterince basittir. Ama geri arama işlevinin, sorunlar ile aynı özde çalıştığını garanti ediyorum? –

cevap

6

DPC yordamına girdikten sonra, isteğin nereden kaynaklandığını söylemek için çok geç. Bir DPC sırasına isteği sıraya almadan önce KeGetCurrentProcessorNumberEx() yöntemini çağırmanız gerekir. Talebin bir IRP olduğunu mu sanıyorum?

+0

David, IRP'nin bir WDFREQUEST yapısına sarılması için isteği işlemek için KMDF kullanıyorum. Ben istek görüyorum noktada, o zaten bir I/O kuyruğu –

+0

geçti O KMDF kullanıyorsanız, o zaman WdfDeviceInitSetIoInCallerContextCallback() çağırmanız gerekir. Bu, I/O isteğine kmdf I/O kuyruğuna girmeden önce göz atmanıza izin verecek, I/O başlatıcısının işlem bağlamında çalışacak ve I/O başlatıcısını başlatan çekirdekte olacaksınız. O. Buradan KeGetCurrentProcessorNumberEx() öğesini arayabilir ve sonucu kaydedebilirsiniz. –

+0

Bir cevap olarak listelenen David, teşekkürler. İlgili bir ben EvtDeviceWdmIrpPreprocess de istemci bağlamında denir guarateed duyuyorum (ben sıraları ilerleme ileri garantili kullanıyorum, bu yüzden ben her zaman o do SetIoInCallerContextCallback doesnt benziyor aramayı almak emin olmak gerekir) var –

İlgili konular