MINIPORT_RESTART fungsi panggilan balik (ndis.h)

Fungsi MiniportRestart memulai permintaan hidupkan ulang untuk adaptor miniport yang dijeda.

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

Sintaks

MINIPORT_RESTART MiniportRestart;

NDIS_STATUS MiniportRestart(
  [in] NDIS_HANDLE MiniportAdapterContext,
       PNDIS_MINIPORT_RESTART_PARAMETERS RestartParameters
)
{...}

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.

RestartParameters

Penunjuk ke NDIS_MINIPORT_RESTART_PARAMETERS struktur yang menentukan parameter hidupkan ulang untuk adaptor miniport.

Nilai kembali

MiniportRestart mengembalikan salah satu nilai status berikut:

Menampilkan kode Deskripsi
NDIS_STATUS_SUCCESS

MiniportRestart berhasil memulai ulang aliran data jaringan melalui adaptor miniport.

NDIS_STATUS_PENDING
MiniportRestart tidak menyelesaikan operasi hidupkan ulang dan operasi akan diselesaikan secara asinkron. Driver miniport harus memanggil fungsi NdisMRestartComplete ketika operasi selesai.
NDIS_STATUS_RESOURCES

MiniportRestart gagal karena sumber daya yang tidak mencukup.

NDIS_STATUS_FAILURE
Tidak ada nilai status sebelumnya yang berlaku. Dalam situasi ini, driver harus memanggil fungsi NdisWriteErrorLogEntry dengan parameter yang menentukan alasan kegagalan.

Keterangan

Driver menentukan titik masuk MiniportRestart saat memanggil Fungsi NdisMRegisterMiniportDriver .

Adaptor miniport yang ditentukan oleh parameter MiniportAdapterContext memasuki status Menghidupkan ulang saat NDIS memanggil MiniportRestart.

Ketika NDIS memanggil MiniportRestart, driver miniport:

  • Harus menyelesaikan tugas apa pun yang diperlukan untuk melanjutkan operasi kirim dan terima.
  • Secara opsional memodifikasi atribut hidupkan ulang yang ditentukan dalam anggota RestartAttributes dari NDIS_MINIPORT_RESTART_PARAMETERS struktur. Jika penunjuk di RestartAttributes adalah NULL, driver miniport tidak boleh memodifikasi atau menambahkan ke daftar atribut restart. Jika penunjuk di RestartAttributes bukan NULL, penunjuk menunjuk ke struktur NDIS_RESTART_ATTRIBUTES . Jika driver miniport tidak dimulai ulang, driver tidak boleh mengubah atribut apa pun.
  • Dapat memberikan indikasi status dengan Fungsi NdisMIndicateStatusEx .
  • Harus menangani permintaan status dalam fungsi MiniportOidRequest .
Jika driver miniport memodifikasi daftar atribut restart, driver miniport:
  • Dapat menambahkan atribut khusus media baru ke daftar atribut hidupkan ulang. Dalam situasi ini, pengemudi miniport harus mengalokasikan NDIS_RESTART_ATTRIBUTES struktur--misalnya, dengan Fungsi NdisAllocateMemoryWithTagPriority --dan menyediakan ruang memori untuk atribut baru. Setelah menyebarkan atribut restart ke driver yang terlalu berlebihan, NDIS membebaskan memori atribut untuk driver miniport.
  • Dapat mengubah atribut khusus media dalam daftar atribut hidupkan ulang. Jika driver miniport membutuhkan lebih banyak ruang memori, itu dapat membebaskan struktur NDIS_RESTART_ATTRIBUTES dengan fungsi NdisFreeMemory dan mengalokasikan struktur baru untuk berisi informasi yang dimodifikasi. Setelah menyebarkan atribut restart ke driver yang terlalu berlebihan, NDIS membebaskan memori atribut untuk driver miniport.
  • Dapat mengubah bidang apa pun di NDIS_RESTART_GENERAL_ATTRIBUTES struktur. Ketika NDIS menyediakan penunjuk non-NULL di anggota RestartAttributes dari NDIS_MINIPORT_RESTART_PARAMETERS struktur, daftar atribut berisi satu entri di mana anggota Oid dalam struktur NDIS_RESTART_ATTRIBUTES OID_GEN_MINIPORT_RESTART_ATTRIBUTES dan anggota Data berisi struktur NDIS_RESTART_GENERAL_ATTRIBUTES.
  • Harus memastikan bahwa NDIS_RESTART_GENERAL_ATTRIBUTES struktur berisi informasi yang benar. Untuk memastikan bahwa struktur NDIS_RESTART_GENERAL_ATTRIBUTES berisi informasi yang diperlukan, Anda harus terlebih dahulu menentukan versi struktur dengan memeriksa anggota Revisi dalam struktur NDIS_OBJECT_HEADER yang ditentukan dalam anggota Header dari struktur NDIS_RESTART_GENERAL_ATTRIBUTES.
NDIS tidak memulai operasi Plug and Play (PnP) lain untuk adaptor miniport, seperti menghentikan, menginisialisasi, mengubah daya, atau permintaan jeda, hingga operasi hidupkan ulang selesai.

Setelah driver miniport berhasil memulai ulang operasi kirim dan terima, driver miniport harus menyelesaikan operasi hidupkan ulang. Jika driver mengembalikan NDIS_STATUS_SUCCESS dari MiniportRestart, operasi hidupkan ulang selesai. Jika driver kembali NDIS_STATUS_PENDING, driver dapat melanjutkan operasi hidupkan ulang. Operasi hidupkan ulang selesai setelah driver memanggil fungsi NdisMRestartComplete . Setelah operasi hidupkan ulang selesai, adaptor miniport berada dalam status Berjalan .

Driver miniport dapat melanjutkan menunjukkan paket yang diterima untuk adaptor miniport segera setelah NDIS memanggil MiniportRestart dan sebelum driver memanggil NdisMRestartComplete. Driver miniport harus siap menerima permintaan pengiriman setelah driver menyelesaikan permintaan hidupkan ulang.

Jika driver miniport tidak memulai ulang operasi kirim dan terima, driver harus mengembalikan status kegagalan yang sesuai dari MiniportRestart. Dalam situasi ini, driver harus menghentikan operasi kirim atau terima yang dimulai lalu kembali ke status Dijeda .

NDIS memanggil MiniportRestart di IRQL = PASSIVE_LEVEL.

Contoh

Untuk menentukan fungsi MiniportRestart , 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 MiniportRestart yang diberi nama "MyRestart", gunakan jenis MINIPORT_RESTART seperti yang ditunjukkan dalam contoh kode ini:

MINIPORT_RESTART MyRestart;

Kemudian, terapkan fungsi Anda sebagai berikut:

_Use_decl_annotations_
NDIS_STATUS
 MyRestart(
    NDIS_HANDLE  MiniportAdapterContext,
    PNDIS_MINIPORT_RESTART_PARAMETERS  RestartParameters
    )
  {...}

Jenis fungsi MINIPORT_RESTART ditentukan 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_RESTART 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

MiniportInitializeEx

MiniportOidRequest

MiniportPause

NDIS_MINIPORT_RESTART_PARAMETERS

NDIS_OBJECT_HEADER

NDIS_RESTART_ATTRIBUTES

NDIS_RESTART_GENERAL_ATTRIBUTES NdisAllocateMemoryWithTagPriority

NdisFreeMemory

NdisMIndicateStatusEx

NdisMRegisterMiniportDriver

NdisMRestartComplete

NdisWriteErrorLogEntry

OID_GEN_MINIPORT_RESTART_ATTRIBUTES