Bagikan melalui


MINIPORT_PAUSE fungsi panggilan balik (ndis.h)

NDIS memanggil fungsi MiniportPause driver miniport untuk menghentikan aliran data jaringan melalui adaptor miniport tertentu.

Catatan Anda harus mendeklarasikan fungsi dengan menggunakan jenis MINIPORT_PAUSE . Untuk informasi selengkapnya, lihat bagian Contoh berikut ini.
 

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
NDIS_STATUS_SUCCESS
MiniportPause berhasil menghentikan aliran data jaringan melalui adaptor miniport.
NDIS_STATUS_PENDING
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:

NDIS tidak memulai operasi PnP lainnya untuk adaptor miniport, seperti menghentikan, menginisialisasi, mengubah daya, menjeda, atau memulai ulang permintaan, sementara adaptor miniport berada dalam status Jeda . NDIS dapat memulai operasi PnP ini setelah adaptor miniport dalam status Dijeda .

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 .
Driver Miniport tidak dapat gagal dalam permintaan jeda. Oleh karena itu, jika driver miniport memerlukan sumber daya apa pun untuk menangani permintaan jeda, driver tersebut harus melakukan pra-alokasi sumber daya selama inisialisasi.

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

Lihat juga

MiniportDevicePnPEventNotify

MiniportInitializeEx

MiniportInterrupt

MiniportInterruptDPC

MiniportResetEx

MiniportRestart

MiniportReturnNetBufferLists

MiniportSendNetBufferLists

NDIS_MINIPORT_PAUSE_PARAMETERS

NET_BUFFER_LIST

NdisMIndicateReceiveNetBufferLists

NdisMIndicateStatusEx

NdisMPauseComplete

NdisMRegisterMiniportDriver

NdisMSendNetBufferListsComplete

NetTimerCallback