Fungsi NdisIMRegisterLayeredMiniport (ndis.h)

Catatan NDIS 5. x telah tidak digunakan lagi dan digantikan oleh NDIS 6. x. Untuk pengembangan driver NDIS baru, lihat Driver Jaringan Yang Dimulai dengan Windows Vista. Untuk informasi tentang port NDIS 5. x driver ke NDIS 6. x, lihat Memindahkan Driver NDIS 5.x ke NDIS 6.0.

NdisIMRegisterLayeredMiniport mendaftarkan titik masuk miniportXxx driver perantara dan nama dengan pustaka NDIS saat driver menginisialisasi.

Sintaks

NDIS_STATUS NdisIMRegisterLayeredMiniport(
  [in]  NDIS_HANDLE                    NdisWrapperHandle,
  [in]  PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics,
  [in]  UINT                           CharacteristicsLength,
  [out] PNDIS_HANDLE                   DriverHandle
);

Parameter

[in] NdisWrapperHandle

Menentukan handel yang dikembalikan oleh NdisMInitializeWrapper.

[in] MiniportCharacteristics

Arahkan ke struktur NDIS XX_MINIPORT_CHARACTERISTICS yang disiapkan oleh pemanggil. Struktur di MiniportCharacteristics didefinisikan sebagai berikut:

        typedef struct _NDIS_MINIPORT_CHARACTERISTICS {
            UCHAR MajorNdisVersion;
            UCHAR MinorNdisVersion;
            UINT Reserved;
            W_CHECK_FOR_HANG_HANDLER CheckForHangHandler;
            W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler;
            W_ENABLE_INTERRUPT_HANDLER  EnableInterruptHandler;
            W_HALT_HANDLER HaltHandler;
            W_HANDLE_INTERRUPT_HANDLER  HandleInterruptHandler;
            W_INITIALIZE_HANDLER InitializeHandler;
            W_ISR_HANDLER ISRHandler;
            W_QUERY_INFORMATION_HANDLER QueryInformationHandler;
            W_RECONFIGURE_HANDLER ReconfigureHandler;
            W_RESET_HANDLER ResetHandler;
            W_SEND_HANDLER SendHandler; 
            W_SET_INFORMATION_HANDLER SetInformationHandler;
            W_TRANSFER_DATA_HANDLER TransferDataHandler;
        //
        // Version used is V4.0 or V5.0
        // with following members
        //
            W_RETURN_PACKET_HANDLER ReturnPacketHandler;
            W_SEND_PACKETS_HANDLER SendPacketsHandler;
            W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler;
        //
        // Version used is V5.0 with the following members
        //
            W_CO_CREATE_VC_HANDLER CoCreateVcHandler;
            W_CO_DELETE_VC_HANDLER CoDeleteVcHandler;
            W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler;
            W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler;
            W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler;
            W_CO_REQUEST_HANDLER CoRequestHandler;
        //
        // Version used is V5.1 with the following members
        //
            W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler;
            W_MINIPORT_PNPEVENTNOTIFY_HANDLER PnPEventNotifyHandler;
            W_MINIPORT_SHUTDOWN_HANDLER AdapterShutdownHandler;
        } NDIS_MINIPORT_CHARACTERISTICS, *PNDIS_MINIPORT_CHARACTERISTICS;

Driver perantara NDIS harus menginisialisasi struktur ini dengan nol sebelum menyiapkan salah satu anggota berikut:

  • MajorNdisVersion
    Menentukan versi utama pustaka NDIS yang digunakan driver. Nilai saat ini 0x05, meskipun pustaka NDIS terus mendukung driver miniport yang ada yang dikembangkan untuk NDIS 4.0.

  • MinorNdisVersion
    Menentukan versi minor pustaka NDIS yang digunakan driver. Nilai saat ini 0x00, meskipun NDIS terus mendukung driver yang ada.

  • Dicadangkan
    Anggota ini dicadangkan untuk penggunaan sistem.

  • CheckForHangHandler
    Menentukan titik masuk fungsi MiniportCheckForHang pemanggil, jika ada, atau NULL.

  • DisableInterruptHandler
    Menentukan NULL.

  • EnableInterruptHandler
    Menentukan NULL.

  • HaltHandler
    Menentukan titik masuk fungsi MiniportHalt pemanggil.

  • HandleInterruptHandler
    Menentukan NULL.

  • InitializeHandler
    Menentukan titik masuk fungsi MiniportInitialize pemanggil.

  • ISRHandler
    Menentukan NULL.

  • QueryInformationHandler
    Menentukan titik masuk fungsi MiniportQueryInformation penelepon.

  • Konfigurasi ulangHandler
    Menentukan NULL.

  • ResetHandler
    Menentukan titik masuk fungsi MiniportReset pemanggil.

  • SendHandler
    Menentukan titik masuk fungsi MiniportSend pemanggil, fungsi MiniportWanSend , atau NULL jika pemanggil menyediakan fungsi MiniportSendPackets .

    Jika driver mendukung pengiriman multipaket atau informasi khusus media, driver akan mengatur anggota SendPacketsHandler sebagai gantinya dan mengatur anggota ini ke NULL.

  • SetInformationHandler Menentukan titik masuk fungsi MiniportSetInformation penelepon.

  • TransferDataHandler
    Menentukan titik masuk fungsi MiniportTransferData pemanggil, jika ada, atau NULL. Fungsi driver miniport ini diperlukan kecuali pemanggil adalah driver WAN NIC atau pemanggil mendukung penerimaan multipaket dan, oleh karena itu, menyediakan titik masuk fungsi MiniportReturnPacket di ReturnPacketHandler.

  • ReturnPacketHandler
    Menentukan titik masuk fungsi MiniportReturnPacket penelepon, jika ada, atau NULL.

  • SendPacketsHandler
    Menentukan titik masuk fungsi MiniportSendPackets pemanggil, jika ada, atau NULL.

  • AlokasikanCompleteHandler
    Menentukan NULL.

  • CoCreateVcHandler
    Menentukan NULL.

  • CoDeleteVcHandler
    Menentukan NULL.

  • CoActivateVcHandler
    Menentukan NULL.

  • CoDeactivateVcHandler
    Menentukan NULL.

  • CoSendPacketsHandler
    Menentukan NULL.

  • CoRequestHandler
    Menentukan NULL.

  • CancelSendPacketsHandler
    Menentukan titik masuk fungsi MiniportCancelSendPackets pemanggil, jika ada, atau NULL. Driver perantara yang mengirim paket antrean selama lebih dari satu detik harus mendaftarkan fungsi MiniportCancelSendPackets .

  • PnPEventNotifyHandler
    Menentukan titik masuk fungsi MiniportPnPEventNotify pemanggil. Driver miniport NDIS 5.1 harus mendaftarkan fungsi MiniportPnPEventNotify . Driver miniport ''yang memiliki tepi bawah WDM harus mendaftarkan fungsi MiniportPnPEventNotify .

  • AdapterShutdownHandler
    Menentukan titik masuk fungsi MiniportShutdown penelepon, jika ada, atau NULL. Driver perantara NDIS 5.1 harus mendaftarkan fungsi MiniportShutdown . Driver perantara NDIS 5.1 harus mendaftarkan fungsi MiniportShutdown dengan memanggil NdisIMRegisterLayeredMiniport--bukan dengan memanggil NdisMRegisterAdapterShutdownHandler.

[in] CharacteristicsLength

Menentukan panjang dalam byte buffer karakteristik yang disediakan pemanggil. Tergantung pada nilai MajorNdisVersion, parameter ini harus berupa sizeof(NDIS50_MINIPORT_CHARACTERISTICS) jika driver memasok struktur atau sizeof(NDIS40_MINIPORT_CHARACTERISTICS) NDIS50_MINIPORT_CHARACTERISTICS jika driver memasok struktur NDIS40_MINIPORT_CHARACTERISTICS.

Jika driver menyertakan instruksi build NDIS50_MINIPORT (atau NDIS40_MINIPORT, yang sesuai) di sumbernya atau jika penulis driver menggunakan -NDIS50_MINIPORT (atau .. . 40..) sakelar pengkompilasi, parameter ini diatur ketika driver dibangun.

[out] DriverHandle

Penunjuk ke variabel tempat NdisIMRegisterLayeredMiniport, jika panggilan ini berhasil, mengembalikan handel yang harus disimpan pemanggil. Pemanggil kemudian harus meneruskan handel ini ke NdisIMInitializeDeviceInstance, biasanya dari fungsi ProtocolBindAdapter-nya .

Nilai kembali

NdisIMRegisterLayeredMiniport mengembalikan NDIS_STATUS_SUCCESS jika mendaftarkan pemanggil sebagai driver miniport, atau dapat mengembalikan salah satu nilai status berikut:

Menampilkan kode Deskripsi
NDIS_STATUS_BAD_CHARACTERISTICS CharacteristicsLength terlalu kecil untuk MajorNdisVersion yang ditentukan dalam buffer di MiniportCharacteristics.
NDIS_STATUS_BAD_VERSION MajorNdisVersion atau MajorNdisVersion yang ditentukan dalam struktur karakteristik tidak valid.
NDIS_STATUS_RESOURCES Kekurangan sumber daya, mungkin memori, mencegah pustaka NDIS mendaftarkan pemanggil sebagai driver miniport.
NDIS_STATUS_FAILURE Ini adalah status kesalahan default, dikembalikan ketika tidak ada kesalahan sebelumnya yang menyebabkan pendaftaran gagal. Misalnya, jika pustaka NDIS tidak dapat memuat gambar driver dan menguncinya ke memori sistem, pustaka akan mengembalikan kesalahan ini.

Keterangan

Setiap driver perantara NDIS yang mengekspor fungsi MiniportXxx dan ProtocolXxx menyiapkan struktur karakteristik dan memanggil NdisIMRegisterLayeredMiniport dari fungsi DriverEntry setelah DriverEntry memanggil NdisMInitializeWrapper. Struktur ini disalin dalam permintaan NdisIMRegisterLayeredMiniport ke penyimpanan internal pustaka NDIS. Dengan demikian, setelah terdaftar, driver seperti itu tidak dapat mengubah fungsi handler-nya.

Setelah driver perantara NDIS yang disebut NdisIMRegisterLayeredMiniport berhasil, ia harus memanggil NdisRegisterProtocol untuk mendaftarkan fungsi ProtocolXxx-nya dengan pustaka NDIS. Driver seperti itu biasanya memiliki fungsi ProtocolBindAdapter dan ProtocolUnbindAdapter . Fungsi ProtocolBindAdapter akan dipanggil berikutnya ketika driver NIC yang mendasar telah berhasil diinisialisasi. ProtocolBindAdapter kemudian dapat membuat pengikatan ke driver NIC tersebut dengan NdisOpenAdapter.

Driver perantara NDIS harus memiliki fungsi MiniportSendPackets jika driver NIC yang mendasar mungkin mendukung multipaket mengirim atau menggunakan informasi khusus media, seperti prioritas paket, yang dikirim dalam array paket dari protokol tingkat yang lebih tinggi. Driver perantara NDIS harus memiliki fungsi MiniportReturnPacket jika driver NIC yang mendasar mungkin mendukung indikasi penerimaan multipaket atau menunjukkan array paket yang berisi informasi khusus media. Pustaka NDIS menangani array paket yang ditransfer antara driver NIC yang mendasar dan protokol tingkat yang lebih tinggi yang hanya mendukung transfer paket tunggal atas nama driver perantara tersebut.

  • Platform target: Universal
  • Versi: Tidak didukung untuk driver NDIS 6.0 di Windows Vista. Gunakan NdisMRegisterMiniportDriversebagai gantinya. Didukung untuk driver NDIS 5.1 di Windows Vista dan Windows XP.

Persyaratan

Persyaratan Nilai
Header ndis.h (termasuk Ndis.h)
Pustaka Ndis.lib
IRQL PASSIVE_LEVEL

Lihat juga