Bagikan melalui


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:

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


MiniportInitializeEx

MiniportPause

MiniportRestart

MiniportReturnNetBufferLists

MiniportSendNetBufferLists

NDIS_DEVICE_POWER_STATE

NdisMIndicateReceiveNetBufferLists

NdisMSendNetBufferListsComplete

NET_BUFFER_LIST