OID_PNP_SET_POWER
OID OID_PNP_SET_POWER memberi tahu driver miniport bahwa adaptor jaringan yang mendasarnya akan beralih ke status daya perangkat yang ditentukan dalam InformationBuffer. Status daya perangkat ditentukan sebagai salah satu nilai NDIS_DEVICE_POWER_STATE berikut:
- NdisDeviceStateD0
- NdisDeviceStateD1
- NdisDeviceStateD2
- NdisDeviceStateD3
Permintaan OID_PNP_SET_POWER mungkin didahului oleh permintaan OID_PNP_QUERY_POWER .
Dimulai dengan NDIS 6.30, NDIS tidak akan menjeda dan memulai ulang driver NDIS di tumpukan driver selama transisi status daya jika kondisi berikut ini benar:
Driver miniport yang mendasar mengatur bendera NDIS_MINIPORT_ATTRIBUTES_NO_PAUSE_ON_SUSPEND dalam struktur NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES . Driver meneruskan pointer ke struktur ini dalam panggilannya ke fungsi NdisMSetMiniportAttributes .
Semua driver filter yang terlalu berlebihan yang melekat pada driver miniport mendukung NDIS 6.30 atau versi NDIS yang lebih baru.
Semua driver protokol yang terlalu berlebihan yang terikat pada driver miniport mendukung NDIS 6.30 atau versi NDIS yang lebih baru.
Transisi ke Status Low-Power (D1-D3)
Ketika driver miniport menangani permintaan set OID_PNP_SET_POWER untuk beralih ke status daya rendah, driver harus melakukan hal berikut:
Siapkan sepenuhnya adaptor jaringan untuk status daya perangkat jaringan yang ditunjukkan. Tugas yang dilakukan oleh driver miniport untuk menyelesaikan ini tergantung pada perangkat.
Tunggu hingga panggilan ke fungsi NdisMIndicateReceiveNetBufferLists kembali.
Tunggu hingga permintaan pengiriman yang diproses oleh adaptor jaringan selesai. Setelah selesai, driver miniport harus memanggil fungsi NdisMSendNetBufferListsComplete . Driver harus mengatur anggota Status di setiap struktur NET_BUFFER_LIST ke nilai NDIS_STATUS_Xxx yang sesuai.
Selesaikan semua permintaan pengiriman yang tertunda dengan memanggil fungsi NdisMSendNetBufferListsComplete . Driver harus mengatur anggota Status di setiap struktur NET_BUFFER_LIST ke NDIS_STATUS_LOW_POWER_STATE.
Tolak semua permintaan pengiriman baru yang dibuat ke fungsi MiniportSendNetBufferLists segera dengan memanggil fungsi NdisMSendNetBufferListsComplete . Driver harus mengatur anggota Status di setiap struktur NET_BUFFER_LIST ke NDIS_STATUS_LOW_POWER_STATE.
Driver miniport yang mendukung NDIS 6.30 dan versi NDIS yang lebih baru juga harus melakukan hal berikut:
Tidak menunggu penyelesaian tertunda menerima indikasi melalui panggilan ke fungsi MiniportReturnNetBufferLists-nya . Selain itu, driver miniport tidak boleh mengubah struktur atau data NET_BUFFER_LIST untuk paket apa pun yang menunggu untuk diselesaikan.
Tangani permintaan OID_PNP_SET_POWER ke status daya rendah dari status adaptor Dijeda atau Berjalan. Untuk informasi selengkapnya tentang status ini, lihat Status dan Operasi Adaptor Miniport.
Sebelum adaptor jaringan beralih ke status D3, driver miniport harus mematikan semuanya di bawah kontrol driver miniport dengan melakukan tugas-tugas berikut:
Nonaktifkan gangguan dan mesin DMA pada adaptor jaringan.
Hentikan mesin penerima pada adaptor jaringan.
Jangan membatalkan alokasi atau memodifikasi deskriptor penerima dan buffer paket yang terkait dengan indikasi penerimaan yang tertunda.
Batalkan semua timer NDIS.
Catatan Driver miniport tidak dapat mengakses adaptor jaringan setelah driver bus mentransisikan adaptor jaringan ke status D3.
Transisi ke Status Full-Power (D0)
Ketika driver miniport menangani permintaan set OID_PNP_SET_POWER untuk beralih ke status daya penuh, driver miniport harus memulihkan mesin penerima adaptor jaringan ke keadaan yang sama dengan tempat mesin penerima berada sebelum adaptor ditransisikan ke status daya rendah.
Catatan Driver miniport tidak boleh mengakses atau mengubah buffer penerima apa pun yang terkait dengan indikasi penerimaan yang tertunda.
NDIS memanggil fungsi MiniportRestart driver miniport setelah transisi ke status daya penuh hanya jika NDIS memanggil fungsi MiniportPause driver sebelum transisi ke status daya rendah.
Catatan Driver perantara harus selalu mengembalikan NDIS_STATUS_SUCCESS ke kueri OID_PNP_SET_POWER. Driver perantara tidak boleh menyebarluaskan permintaan OID_PNP_SET_POWER ke driver miniport yang mendasar.
Mengembalikan kode status
Fungsi MiniportOidRequest driver miniport mengembalikan salah satu nilai berikut untuk permintaan ini:
Istilah | Deskripsi |
---|---|
NDIS_STATUS_SUCCESS |
Driver miniport berhasil menyelesaikan permintaan. |
NDIS_STATUS_PENDING |
Driver miniport akan menyelesaikan permintaan secara asinkron. Setelah driver miniport menyelesaikan semua pemrosesan, itu harus berhasil permintaan dengan memanggil fungsi NdisMOidRequestComplete , meneruskan NDIS_STATUS_SUCCESS untuk parameter Status . |
NDIS_STATUS_NOT_ACCEPTED |
Driver miniport sedang mengatur ulang. |
Persyaratan
Versi |
Didukung untuk NDIS 5.1, dan NDIS 6.0 dan yang lebih baru. |
Header |
Ntddndis.h (termasuk Ndis.h) |
Lihat juga
NdisMIndicateReceiveNetBufferLists
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk