MINIPORT_PAUSE fungsi panggilan balik (ndis.h)
NDIS memanggil fungsi MiniportPause driver miniport untuk menghentikan aliran data jaringan melalui adaptor miniport tertentu.
Sintaks
MINIPORT_PAUSE MiniportPause;
NDIS_STATUS MiniportPause(
[in] NDIS_HANDLE MiniportAdapterContext,
[in] PNDIS_MINIPORT_PAUSE_PARAMETERS PauseParameters
)
{...}
Parameter
[in] MiniportAdapterContext
Handel ke area konteks yang dialokasikan driver miniport dalam fungsi MiniportInitializeEx-nya . Driver miniport menggunakan area konteks ini untuk mempertahankan informasi status untuk adaptor miniport.
[in] PauseParameters
Penunjuk ke NDIS_MINIPORT_PAUSE_PARAMETERS struktur yang menentukan parameter jeda untuk adaptor miniport.
Nilai kembali
MiniportPause mengembalikan salah satu nilai status berikut:
Menampilkan kode | Deskripsi |
---|---|
|
MiniportPause berhasil menghentikan aliran data jaringan melalui adaptor miniport. |
|
MiniportPause tidak menyelesaikan operasi jeda dan operasi akan diselesaikan secara asinkron. Driver miniport harus memanggil fungsi NdisMPauseComplete ketika operasi selesai. |
Keterangan
Driver menentukan titik masuk MiniportPause saat memanggil Fungsi NdisMRegisterMiniportDriver .
NDIS menjeda adaptor miniport untuk menghentikan aliran data yang dapat mengganggu operasi PnP seperti menambahkan atau menghapus driver filter, atau mengikat atau membatalkan pengandar protokol.
NDIS memanggil fungsi MiniportPause driver miniport untuk memulai permintaan jeda untuk adaptor miniport yang ditentukan di MiniportAdapterContext. Adaptor miniport tetap dalam status Jeda hingga operasi jeda selesai.
Untuk adaptor miniport dalam status Jeda , driver miniport:
- Menunggu semua panggilan ke Fungsi NdisMIndicateReceiveNetBufferLists untuk ditampilkan.
- Menunggu NDIS mengembalikan kepemilikan semua struktur NET_BUFFER_LIST dari indikasi penerimaan yang luar biasa ke pengemudi miniport Fungsi MiniportReturnNetBufferLists .
- Menyelesaikan semua permintaan pengiriman yang terutang dan memanggil Fungsi NdisMSendNetBufferListsComplete untuk semua permintaan pengiriman yang luar biasa.
- Menolak semua permintaan pengiriman baru yang dibuat ke permintaan Fungsi MiniportSendNetBufferLists segera dengan memanggil NdisMSendNetBufferListsComplete. Ini harus mengatur status lengkap di setiap NET_BUFFER_LIST ke NDIS_STATUS_PAUSED.
- Dapat memberikan indikasi status dengan Fungsi NdisMIndicateStatusEx .
- Harus menangani permintaan OID dalam fungsi MiniportOidRequest .
- Tidak boleh menghentikan adaptor miniport sepenuhnya jika menghentikan adaptor miniport mencegah driver menangani permintaan atau memberikan indikasi status.
- Tidak boleh membebaskan sumber daya yang dialokasikan driver selama inisialisasi.
Setelah driver miniport menyelesaikan semua permintaan pengiriman yang luar biasa dan NDIS mengembalikan semua struktur data jaringan yang diterima (dari indikasi penerima yang luar biasa), driver harus menyelesaikan operasi jeda. Jika driver mengembalikan NDIS_STATUS_SUCCESS dari MiniportPause, operasi jeda selesai. Jika driver mengembalikan NDIS_STATUS_PENDING, adaptor miniport dapat tetap dalam status Jeda dan operasi jeda selesai setelah driver memanggil fungsi NdisMPauseComplete . Setelah operasi jeda selesai, adaptor miniport berada dalam status Dijeda .
Untuk adaptor miniport dalam status Dijeda , driver miniport:
- Harus segera menolak semua permintaan pengiriman yang dibuat ke MiniportSendNetBufferLists dengan memanggil NdisMSendNetBufferListsComplete. Ini harus mengatur anggota Status di setiap NET_BUFFER_LIST ke NDIS_STATUS_PAUSED.
- Dapat menangani interupsi penerimaan (lihat fungsi MiniportInterrupt ) dan mengganggu DPC (lihat fungsi MiniportInterruptDPC ), tetapi tidak boleh menunjukkan data jaringan yang diterima.
- Dapat memberikan indikasi status dengan fungsi NdisMIndicateStatusEx .
- Harus menangani permintaan OID dalam fungsi MiniportOidRequest .
- Harus menangani permintaan untuk mengubah status daya perangkat di Fungsi MiniportDevicePnPEventNotify .
- Dapat menangani panggilan ke fungsi NetTimerCallback .
- Dapat menangani permintaan untuk mengatur ulang perangkat keras dalam fungsi MiniportResetEx .
NDIS memanggil fungsi MiniportRestart untuk memulai permintaan hidupkan ulang untuk adaptor miniport yang dijeda.
NDIS memanggil MiniportPause di IRQL = PASSIVE_LEVEL.
Contoh
Untuk menentukan fungsi MiniportPause , Anda harus terlebih dahulu memberikan deklarasi fungsi yang mengidentifikasi jenis fungsi yang Anda tentukan. Windows menyediakan sekumpulan tipe fungsi untuk pengandar. Mendeklarasikan fungsi menggunakan jenis fungsi membantu Analisis Kode untuk Driver, Pemverifikasi Driver Statis (SDV), dan alat verifikasi lainnya menemukan kesalahan, dan itu adalah persyaratan untuk menulis driver untuk sistem operasi Windows.Misalnya, untuk menentukan fungsi MiniportPause yang diberi nama "MyPause", gunakan jenis MINIPORT_PAUSE seperti yang ditunjukkan dalam contoh kode ini:
MINIPORT_PAUSE MyPause;
Kemudian, terapkan fungsi Anda sebagai berikut:
_Use_decl_annotations_
NDIS_STATUS
MyPause(
NDIS_HANDLE MiniportAdapterContext,
PNDIS_MINIPORT_PAUSE_PARAMETERS MiniportPauseParameters
)
{...}
Jenis fungsi MINIPORT_PAUSE didefinisikan dalam file header Ndis.h. Untuk mengidentifikasi kesalahan secara lebih akurat saat Anda menjalankan alat analisis kode, pastikan untuk menambahkan anotasi Use_decl_annotations ke definisi fungsi Anda. Anotasi Use_decl_annotations memastikan bahwa anotasi yang diterapkan ke jenis fungsi MINIPORT_PAUSE dalam file header digunakan. Untuk informasi selengkapnya tentang persyaratan untuk deklarasi fungsi, lihat Mendeklarasikan Fungsi dengan Menggunakan Jenis Peran Fungsi untuk Driver NDIS.
Untuk informasi tentang Use_decl_annotations, lihat Perilaku Fungsi Anotasi.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Didukung di NDIS 6.0 dan yang lebih baru. |
Target Platform | Windows |
Header | ndis.h (termasuk Ndis.h) |
IRQL | PASSIVE_LEVEL |