struktur NET_PNP_EVENT (netpnp.h)
Struktur NET_PNP_EVENT menjelaskan peristiwa Plug and Play jaringan (PnP), peristiwa PnP NDIS, atau peristiwa manajemen daya.
Sintaks
typedef struct _NET_PNP_EVENT {
NET_PNP_EVENT_CODE NetEvent;
PVOID Buffer;
ULONG BufferLength;
ULONG_PTR NdisReserved[4];
ULONG_PTR TransportReserved[4];
ULONG_PTR TdiReserved[4];
ULONG_PTR TdiClientReserved[4];
} NET_PNP_EVENT, *PNET_PNP_EVENT;
Anggota
NetEvent
Kode peristiwa yang menjelaskan peristiwa sebagai salah satu hal berikut:
NetEventSetPower
Menunjukkan bahwa manajer daya telah mengirim permintaan Atur Daya, yang menentukan transisi ke status daya sistem. NDIS menerjemahkan status ini ke status daya perangkat yang sesuai untuk perangkat.
Untuk informasi lebih lanjut, lihat bagian Keterangan.
NetEventQueryPower
Menunjukkan bahwa manajer daya telah mengirim permintaan Daya Kueri, yang meminta transisi ke status daya sistem. NDIS menerjemahkan status ini ke status daya perangkat yang sesuai untuk perangkat.
Untuk informasi lebih lanjut, lihat bagian Keterangan.
NetEventQueryRemoveDevice
Menunjukkan bahwa Manajer PnP telah mengirim permintaan Hapus Kueri Perangkat. Manajer PnP mengirimkan permintaan ini untuk mengkueri apakah perangkat dapat dihapus tanpa mengganggu operasi.
NetEventCancelRemoveDevice
Menunjukkan bahwa Manajer PnP telah mengirim permintaan Batalkan Hapus Perangkat. Manajer PnP mengirimkan permintaan ini untuk membatalkan penghapusan perangkat setelah Manajer PnP mengirim permintaan Hapus Kueri Perangkat.
NetEventReconfigure
Menunjukkan bahwa konfigurasi telah berubah untuk komponen jaringan. Misalnya, jika pengguna, melalui folder Connections Jaringan dan Dial-up, mengubah alamat IP untuk TCP/IP, NDIS menunjukkan peristiwa NetEventReconfigure ke protokol TCP/IP. Selain itu, driver perantara biasanya menggunakan kejadian ini sebagai pemicu untuk memanggil Fungsi NdisIMInitializeDeviceInstanceEx dan memulai miniport virtualnya. Untuk informasi selengkapnya tentang NetEventReconfigure, lihat NetEventIMReEnableDevice.
NetEventBindList
Menunjukkan kepada driver protokol bahwa urutan pemrosesan daftar ikatannya telah dikonfigurasi ulang. Daftar ini menunjukkan urutan relatif yang berlaku untuk pengikatan saat memproses, misalnya, permintaan pengguna yang mungkin dirutekan ke salah satu dari beberapa pengikatan. Buffer yang diteruskan dengan kejadian ini berisi daftar nama perangkat yang diformat sebagai string Unicode yang dihentikan null. Format setiap nama perangkat identik dengan anggota AdapterName yang diteruskan ke panggilan ke fungsi ProtocolBindAdapterEx .
NetEventBindsComplete
Menunjukkan bahwa driver protokol telah terikat ke semua NIC yang dapat diikatnya. NDIS tidak akan menunjukkan NIC lagi ke protokol kecuali PnP NIC dicolokkan ke dalam sistem.
NetEventPnPCapabilities
Menunjukkan bahwa pengguna mengaktifkan atau menonaktifkan kemampuan bangun adaptor yang mendasar. (Pengikatan ditentukan oleh parameter ProtocolBindingContext yang diteruskan ke fungsi ProtocolNetPnPEvent .)
NetEventPause
Menunjukkan bahwa pengikatan protokol yang ditentukan harus memasuki status Jeda. Pengikatan akan memasuki status Dijeda setelah NDIS menyelesaikan semua permintaan pengiriman yang beredar untuk pengikatan.
NetEventRestart
Menunjukkan bahwa pengikatan protokol yang ditentukan telah memasuki status Memulai Ulang. Setelah driver protokol siap untuk melanjutkan operasi kirim dan terima untuk pengikatan, pengikatan memasuki status Berjalan.
NetEventPortActivation
Menunjukkan aktivasi daftar port yang terkait dengan pengikatan yang ditentukan.
NetEventPortDeactivation
Menunjukkan pennonaktifkan daftar port yang terkait dengan pengikatan yang ditentukan.
NetEventIMReEnableDevice
Menunjukkan bahwa konfigurasi telah berubah untuk miniport virtual NDIS 6.0 atau driver menengah yang lebih baru. NetEventIMReEnableDevice mirip dengan peristiwa NetEventReconfigure kecuali bahwa driver perantara menerima peristiwa ini untuk satu miniport virtual dan peristiwa NetEventReconfigure berlaku untuk semua miniport virtual driver perantara. Misalnya, driver perantara menerima peristiwa NetEventIMReEnableDevice saat pengguna menonaktifkan lalu mengaktifkan satu miniport virtual dari Manajer Perangkat atau sumber lain. Untuk contoh manajemen daya driver perantara, lihat sampel driver NDIS MUX Intermediate Driver dan Notify Object yang tersedia di repositori sampel driver Windows di GitHub.
NetEventNDKEnable
Menunjukkan bahwa Network Direct Kernel (NDK) saat ini diaktifkan.
NetEventNDKDisable
Menunjukkan bahwa NDK saat ini dinonaktifkan.
NetEventFilterPredetach
Menunjukkan bahwa filter akan dilepas, sehingga filter dapat melakukan pembersihan yang diperlukan yang tidak dimungkinkan di handler FilterDetach (karena jalur OID dan indikasi ditutup pada saat itu).
NetEventBindFailed
Menunjukkan bahwa kegagalan peristiwa pengikatan telah terjadi.
NetEventSwitchActivate
Menunjukkan bahwa Hyper-V Extensible Switch telah menyelesaikan aktivasi, dan ekstensi switch sekarang dapat dengan aman mengkueri untuk konfigurasi pengalihan lebih lanjut. Indikasi ini hanya digunakan dalam tumpukan Hyper-V Extensible Switch, yang dikeluarkan oleh miniport ekstensi. Lihat Mengkueri Konfigurasi Sakelar Yang Dapat Diperluas Hyper-V dan NDIS_SWITCH_PARAMETERS untuk detail selengkapnya.
NetEventInhibitBindsAbove
Peristiwa sinkron yang mencegah filter dan protokol lain mengikat ke adaptor miniport. Filter atau protokol apa pun yang sebelumnya terikat akan tidak terikat sebelum peristiwa selesai. Aturan penggunaan ada di bawah ini.
- Hindari meninggalkan adaptor miniport dalam status penghambatan, selama lebih dari 1000 milidetik.
- Kejadian ini hanya dapat dikeluarkan setelah MiniportInitializeEx dimulai dan tidak boleh dikeluarkan setelah MiniportHaltEx kembali.
- Kejadian ini hanya dapat dikeluarkan ketika adaptor miniport berada dalam status D0.
- Karena peristiwa ini memblokir, tidak boleh dikeluarkan oleh konteks apa pun yang akan menyebabkan kebuntuan.
- Kunci tidak boleh ditahan saat mengeluarkan kejadian ini.
- Kejadian ini harus dikeluarkan pada PASSIVE_LEVEL.
NetEventAllowBindsAbove
Peristiwa asinkron yang membalikkan efek NetEventInhibitBindsAbove. Aturan penggunaan ada di bawah ini.
- Kejadian ini hanya dapat dikeluarkan setelah MiniportInitializeEx dimulai dan tidak boleh dikeluarkan setelah MiniportHaltEx kembali.
- Kejadian ini hanya dapat dikeluarkan ketika adaptor miniport berada dalam status D0.
- Kunci tidak boleh ditahan saat mengeluarkan kejadian ini.
- Kejadian ini harus dikeluarkan pada PASSIVE_LEVEL.
NetEventRequirePause
Peristiwa sinkron yang menunjukkan protokol dan filter termasuk adaptor miniport harus dijeda. Protokol dan filter serta adaptor miniport dijamin akan dijeda saat rutinitas NdisMNetPnPEvent kembali. Aturan penggunaan ada di bawah ini.
- Hindari penundaan antara peristiwa NetEventAllowStart dan NetEventRequirePause selama lebih dari 1000 milidetik untuk mencegah penundaan dalam aplikasi pengguna.
- Kejadian ini hanya dapat dikeluarkan setelah MiniportInitializeEx dimulai dan tidak boleh dikeluarkan setelah MiniportHaltEx kembali.
- Tidak ada jaminan bahwa NDIS akan memanggil MiniportPause setelah peristiwa ini diterbitkan. Secara khusus, jika adaptor miniport Anda sudah dijeda, NDIS tidak akan memperkenalkan perulangan start-pause tambahan. Ini berarti bahwa berapa kali MiniportPause yang disebut tidak lebih besar dari, kurang dari, atau sama dengan jumlah peristiwa ini dikeluarkan.
- Karena peristiwa ini memblokir, tidak boleh dikeluarkan oleh konteks apa pun yang akan menyebabkan kebuntuan.
- Kunci tidak boleh ditahan saat mengeluarkan kejadian ini.
NetEventAllowStart
Peristiwa asinkron yang menunjukkan protokol dan filter termasuk adaptor miniport tidak perlu dijeda. Aturan penggunaan di bawah ini. Tidak ada jaminan status jeda untuk driver apa pun dalam protokol dan filter setelah NdisMNetPnPEvent rutin kembali.
- Kejadian ini hanya dapat dikeluarkan setelah MiniportInitializeEx dimulai dan tidak boleh dikeluarkan setelah MiniportHaltEx kembali.
- Karena peristiwa ini memblokir, tidak boleh dikeluarkan oleh konteks apa pun yang akan menyebabkan kebuntuan.
- Kunci tidak boleh ditahan saat mengeluarkan kejadian ini.
Buffer
Alamat buffer yang berisi informasi yang khusus untuk peristiwa yang ditunjukkan dalam anggota NetEvent . Untuk setiap jenis peristiwa, buffer berisi informasi berikut:
NetEventSetPower
Buffer berisi status daya perangkat tempat perangkat bertransisi.
Ketika NDIS memanggil fungsi ProtocolNetPnPEvent driver protokol, status perangkat NDIS_DEVICE_POWER_STATE, yang dapat menjadi salah satu nilai berikut:
NdisDeviceStateUnspecified
Perangkat jaringan tidak mendukung manajemen daya.
NdisDeviceStateD0
Status yang sepenuhnya didukung, di mana perangkat memberikan fungsionalitas dan performa penuh.
NdisDeviceStateD1
Status daya rendah, di mana permintaan transmisi dari host tidak dihormati oleh perangkat, data yang diterima oleh perangkat tidak ditransfer ke memori host, dan tidak ada gangguan yang dapat terjadi. Beberapa konteks perangkat mungkin hilang. Tergantung pada kemampuan NIC dan driver miniportnya, perangkat mungkin dapat menghasilkan sinyal bangun.
NdisDeviceStateD2
Status daya rendah yang mirip dengan NdisDeviceStateD1, kecuali bahwa lebih banyak daya dan konteks yang lebih sedikit biasanya disimpan dan lebih banyak waktu diperlukan untuk beralih ke keadaan yang sepenuhnya didukung.
NdisDeviceStateD3
Status nonaktif, di mana daya telah sepenuhnya dilepas dari perangkat.
Untuk driver protokol, NdisDeviceStateD0 berarti bahwa NIC sepenuhnya didukung dan tersedia untuk operasi normal. Status perangkat lain berarti bahwa perangkat tidak sepenuhnya didukung dan tidak tersedia untuk mengirim dan menerima data jaringan.
NetEventQueryPower
Buffer berisi status daya perangkat yang diminta untuk perangkat. Status perangkat NDIS_DEVICE_POWER_STATE (yang dijelaskan dalam deskripsi nilai NetEventSetPower ).
NetEventQueryRemoveDevice
Konten buffer NULL.
NetEventCancelRemoveDevice
Konten buffer NULL.
NetEventReconfigure
Buffer dapat berisi data khusus protokol. Driver protokol bertanggung jawab untuk memvalidasi data ini.
NetEventBindList
Buffer berisi daftar pengikatan yang direvisi untuk komponen jaringan yang NET_PNP_EVENT_NOTIFICATION struktur sedang diteruskan ke. Daftar ikatan, yang merupakan serangkaian string Unicode yang dihentikan null, memiliki format REG_MULTI_SZ. Masing-masing string adalah nama adaptor. Klien TDI yang terikat pada protokol menggunakan daftar ikatan ini untuk menyusun ulang pengikatan mereka. Driver protokol bertanggung jawab untuk memvalidasi daftar ini.
NetEventBindsComplete
Konten buffer NULL.
NetEventPnPCapabilities
Buffer adalah ULONG yang berisi bitmask. Ketika bendera NDIS_DEVICE_WAKE_UP_ENABLE diatur dalam bitmask, kemampuan bangun NIC diaktifkan. Jika tidak, kemampuan bangun NIC dinonaktifkan. (Pengikatan ditentukan oleh parameter ProtocolBindingContext yang diteruskan ke ProtocolNetPnPEvent.) Ketika diatur ke nol, bendera ini menunjukkan bahwa kemampuan bangun NIC dinonaktifkan.
NetEventPause
Buffer berisi NDIS_PROTOCOL_PAUSE_PARAMETERS struktur.
NetEventRestart
Buffer mungkin berisi NULL atau NDIS_PROTOCOL_RESTART_PARAMETERS struktur. NDIS menyediakan penunjuk ke struktur NDIS_RESTART_ATTRIBUTES di anggota RestartAttributes dari struktur NDIS_PROTOCOL_RESTART_PARAMETERS.
NetEventPortActivation
Buffer berisi entri pertama dalam daftar struktur NDIS_PORT yang mengidentifikasi port yang akan diaktifkan NDIS. Anda dapat menggunakan anggota berikutnya dari struktur NDIS_PORT untuk mendapatkan struktur berikutnya dalam daftar.
NetEventPortDeactivation
Buffer berisi array nomor port, jenis NDIS_PORT_NUMBER (didefinisikan sebagai ULONG), yang mengidentifikasi port NDIS yang akan dinonaktifkan NDIS. Untuk menghitung jumlah elemen dalam array, bagi nilai anggota BufferLength , yang ada dalam struktur NET_PNP_EVENT yang ditentukan dalam anggota NetPnPEventdari NET_PNP_EVENT_NOTIFICATION, menurut sizeof(NDIS_PORT_NUMBER).
NetEventIMReEnableDevice
Buffer berisi penunjuk ke variabel jenis NDIS_STRING yang berisi string Unicode null-dihentikan yang memberi nama objek perangkat miniport virtual untuk perangkat yang sedang diaktifkan. String adalah nama jalur lengkap—misalnya, \Device\DeviceName.
NetEventNDKEnable
Anggota Buffer adalah NULL.
NetEventNDKDisable
Anggota Buffer adalah NULL.
NetEventFilterPredetach
Anggota Buffer adalah NULL.
NetEventBindFailed
Buffer berisi struktur NDIS_BIND_FAILED_NOTIFICATION .
NetEventSwitchActivate
Konten buffer NULL.
NetEventAllowBindsAbove
Konten buffer NULL.
NetEventInhibitBindsAbove
Konten buffer NULL.
NetEventAllowStart
Konten buffer NULL.
NetEventRequirePause
Konten buffer NULL.
BufferLength
Jumlah byte informasi khusus peristiwa di Buffer.
NdisReserved[4]
Area yang dicadangkan untuk digunakan oleh NDIS.
TransportReserved[4]
Area yang disediakan untuk digunakan oleh pengemudi transportasi.
TdiReserved[4]
Area yang dicadangkan untuk digunakan oleh TDI.
TdiClientReserved[4]
Area yang dicadangkan untuk digunakan oleh klien TDI.
Keterangan
Di NDIS 6.0 dan versi yang lebih baru, ketika sistem operasi mengeluarkan peristiwa PnP sistem atau peristiwa manajemen daya ke objek perangkat target yang mewakili adaptor miniport, NDIS menerjemahkan peristiwa menjadi NET_PNP_EVENT_NOTIFICATION struktur. Anggota NetPnPEvent dari struktur NET_PNP_EVENT_NOTIFICATION adalah struktur NET_PNP_EVENT .
NDIS meneruskan pointer ke struktur NET_PNP_EVENT ke setiap driver protokol yang terikat ke adaptor miniport dengan memanggil fungsi ProtocolNetPnPEvent driver protokol. Driver protokol harus menyimpan pointer ini, karena pointer adalah parameter input ke fungsi NdisCompleteNetPnPEvent , yang dipanggil driver untuk menyelesaikan panggilan ke ProtocolNetPnPEvent secara asinkron.
NDIS meneruskan penunjuk ke struktur NET_PNP_EVENT ke setiap driver filter yang terikat ke adaptor miniport dengan memanggil fungsi FilterNetPnPEvent driver filter. Driver filter tidak harus menyimpan pointer ini karena driver harus menyelesaikan panggilan ke FilterNetPnPEvent secara sinkron.
Dimulai dengan NDIS 6.30, protokol atau driver filter harus mengikuti panduan ini ketika NDIS memanggil fungsi ProtocolNetPnPEvent atau FilterNetPnPEvent :
-
Jika anggota NetEvent dari struktur NET_PNP_EVENT diatur ke NetEventSetPower, driver harus berhenti menghasilkan permintaan I/O baru. Selain itu, driver tidak boleh menunggu penyelesaian permintaan I/O yang tertunda.
Setelah protokol atau driver filter kembali dari ProtocolNetPnPEvent atau FilterNetPnPEvent, NDIS tidak akan menjeda dan memulai ulang driver ini 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 dilampirkan ke driver miniport mendukung NDIS 6.30 atau versi NDIS yang lebih baru.
- Semua driver protokol yang terikat ke driver miniport mendukung NDIS 6.30 atau versi NDIS yang lebih baru.
- Jika anggota NetEvent dari struktur NET_PNP_EVENT diatur ke NetEventSetPower atau NetEventQueryPower, driver tidak boleh menunggu penyelesaian permintaan I/O yang tertunda.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Didukung di NDIS 5.1, dan NDIS 6.0 dan yang lebih baru. Untuk informasi selengkapnya tentang versi NDIS 5.1 dari struktur ini, lihat NET_PNP_EVENT (NDIS 5.1). |
Header | netpnp.h (termasuk Ndis.h, Netpnp.h) |