PROTOCOL_CO_OID_REQUEST_COMPLETE fungsi panggilan balik (ndis.h)

Fungsi ProtocolCoOidRequestComplete menyelesaikan pemrosesan permintaan OID CoNDIS asinkron.

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

Sintaks

PROTOCOL_CO_OID_REQUEST_COMPLETE ProtocolCoOidRequestComplete;

void ProtocolCoOidRequestComplete(
  [in]      NDIS_HANDLE ProtocolAfContext,
  [in]      NDIS_HANDLE ProtocolVcContext,
  [in]      NDIS_HANDLE ProtocolPartyContext,
  [in, out] PNDIS_OID_REQUEST OidRequest,
  [in]      NDIS_STATUS Status
)
{...}

Parameter

[in] ProtocolAfContext

Handel yang mengidentifikasi area konteks keluarga alamat (AF). Jika driver adalah klien, ia menyediakan handel ini ketika disebut Fungsi NdisClOpenAddressFamilyEx untuk menyambungkan dirinya ke manajer panggilan. Jika driver adalah manajer panggilan atau manajer panggilan miniport (MCM), driver menyediakan handel ini dari fungsi ProtocolCmOpenAf-nya .

[in] ProtocolVcContext

Handel yang mengidentifikasi koneksi virtual aktif (VC) yang diminta atau diatur informasi driver, jika permintaan tersebut khusus untuk VC. Jika tidak, parameter ini ADALAH NULL.

[in] ProtocolPartyContext

Handel yang mengidentifikasi pihak pada VC multipoint yang diminta atau ditetapkan informasi driver, jika permintaannya khusus pihak. Jika tidak, parameter ini ADALAH NULL.

[in, out] OidRequest

Penunjuk ke struktur NDIS_OID_REQUEST yang disediakan driver yang sebelumnya diteruskan ke fungsi NdisCoOidRequest atau NdisMCmOidRequest .

[in] Status

Status akhir permintaan. Driver target atau NDIS menentukan status akhir ini. Parameter ini menentukan apa yang dilakukan ProtocolCoOidRequestComplete dengan informasi di OidRequest.

Nilai kembali

Tidak ada

Keterangan

NDIS memanggil fungsi ProtocolCoOidRequestComplete untuk menyelesaikan pemrosesan klien CoNDIS, manajer panggilan, atau permintaan MCM OID yang fungsi NdisCoOidRequest atau fungsi NdisMCmOidRequest dikembalikan NDIS_STATUS_PENDING.

Untuk mendaftarkan ProtocolCoOidRequestComplete sebagai klien, driver menginisialisasi NDIS_CO_CLIENT_OPTIONAL_HANDLERS struktur dan meneruskannya di parameter OptionalHandlers dari fungsi NdisSetOptionalHandlers . Untuk mendaftarkan ProtocolCoOidRequestComplete sebagai manajer panggilan, driver menginisialisasi NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS struktur dan meneruskannya di parameter OptionalHandlersdari NdisSetOptionalHandlers.

Driver target adalah driver yang melayani permintaan informasi OID. Panggilan driver target ke NdisMCoOidRequestComplete, NdisCoOidRequestComplete, atau Fungsi NdisMCmOidRequestComplete menyebabkan NDIS memanggil fungsi ProtocolCoOidRequestComplete . NDIS meneruskan nilai parameter Status yang diteruskan ke fungsi-fungsi ini sebagai parameter Status input ke ProtocolCoOidRequestComplete.

ProtocolCoOidRequestComplete menggunakan nilai input Status sebagai berikut:

  • Jika Status NDIS_STATUS_SUCCESS, anggota BytesRead atau BytesWritten dari struktur NDIS_OID_REQUEST yang ditunjukkan parameter OidRequest untuk menentukan berapa banyak informasi yang ditransfer dari buffer di anggota InformationBuffer NDIS_OID_REQUEST ke driver target atau berapa banyak informasi yang dikembalikan di InformationBuffer, masing-masing.

    Jika driver membuat permintaan kueri, ProtocolCoOidRequestComplete dapat menggunakan data yang dikembalikan di InformationBuffer yang sesuai untuk nilai yang ditentukan dalam anggota Oid NDIS_OID_REQUEST.

  • Jika Status NDIS_STATUS_INVALID_LENGTH atau NDIS_STATUS_BUFFER_TOO_SHORT, anggota BytesNeeded dari struktur NDIS_OID_REQUEST yang ditunjuk OidRequest menentukan nilai khusus OID dari anggota informationBufferLength dari NDIS_OID_REQUEST yang diperlukan untuk melakukan operasi yang diminta.

    Dalam keadaan ini, ProtocolCoOidRequestComplete dapat mengalokasikan ruang buffer yang memadai untuk permintaan, menyiapkan struktur NDIS_OID_REQUEST lain dengan nilai yang diperlukan untuk InformationBufferLength, dan mencoba kembali permintaan OID.

  • Jika Status adalah nilai NDIS_STATUS_ XXX yang merupakan kesalahan yang tidak dapat dipulihkan, ProtocolCoOidRequestComplete harus melepaskan memori untuk struktur NDIS_OID_REQUEST. ProtocolCoOidRequestComplete juga harus menentukan apakah driver harus menutup pengikatan atau menyesuaikan informasi status khusus pengikatannya untuk menangani operasi I/O jaringan berkelanjutan pada pengikatan.
Untuk informasi selengkapnya tentang OID yang ditentukan sistem, lihat OID NDIS.

ProtocolCoOidRequestComplete dapat dipanggil sebelum driver memiliki waktu untuk memeriksa kode status yang dikembalikan NdisCoOidRequest atau NdisMCmOidRequest .

NDIS memanggil ProtocolCoOidRequestComplete di IRQL <= DISPATCH_LEVEL.

Contoh

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

PROTOCOL_CO_OID_REQUEST_COMPLETE MyCoOidRequestComplete;

Kemudian, terapkan fungsi Anda sebagai berikut:

_Use_decl_annotations_
VOID
 MyCoOidRequestComplete(
    NDIS_HANDLE  ProtocolAfContext,
    NDIS_HANDLE  ProtocolVcContext,
    NDIS_HANDLE  ProtocolPartyContext,
    PNDIS_OID_REQUEST  OidRequest,
    NDIS_STATUS  Status
    )
  {...}

Jenis fungsi PROTOCOL_CO_OID_REQUEST_COMPLETE 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 PROTOCOL_CO_OID_REQUEST_COMPLETE 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 <= DISPATCH_LEVEL (lihat bagian Keterangan)

Lihat juga

NDIS_CO_CLIENT_OPTIONAL_HANDLERS NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS

NDIS_OID_REQUEST

NdisClOpenAddressFamilyEx

NdisCooidRequest

NdisCooidRequestComplete

NdisMCmOidRequest

NdisMCmOidRequestComplete

NdismCooidRequestComplete

NdisSetOptionalHandlers

ProtocolCmOpenAf