Fungsi NdisCoOidRequest (ndis.h)
Fungsi NdisCoOidRequest meneruskan permintaan ke driver CoNDIS yang ditargetkan untuk mengkueri atau mengatur informasi driver target yang ditentukan OID.
Sintaks
NDIS_STATUS NdisCoOidRequest(
[in] NDIS_HANDLE NdisBindingHandle,
[in, optional] NDIS_HANDLE NdisAfHandle,
[in, optional] NDIS_HANDLE NdisVcHandle,
[in, optional] NDIS_HANDLE NdisPartyHandle,
[in, out] PNDIS_OID_REQUEST OidRequest
);
Parameter
[in] NdisBindingHandle
Handel yang dikembalikan fungsi NdisOpenAdapterEx yang mengidentifikasi adaptor target untuk pengikatan.
[in, optional] NdisAfHandle
Handel yang mengidentifikasi keluarga alamat (AF) yang dibagikan di antara klien, manajer panggilan, dan NDIS. Handel ini diperoleh sebagai berikut:
- Jika pemanggil adalah klien yang membuat permintaan ke manajer panggilan, klien awalnya mendapatkan handel ini dari panggilan yang berhasil ke Fungsi NdisClOpenAddressFamilyEx .
- Jika pemanggil adalah manajer panggilan mandiri atau manajer panggilan miniport (MCM) yang membuat permintaan ke klien, manajer panggilan atau MCM awalnya mendapatkan handel ini sebagai parameter input untuk fungsi ProtocolCmOpenAf-nya .
[in, optional] NdisVcHandle
Handel yang mengidentifikasi koneksi virtual (VC) pemanggil meminta atau mengatur informasi, jika permintaannya khusus untuk VC. Jika tidak, jika parameter ini NULL, permintaannya tidak spesifik untuk VC. Untuk permintaan khusus VC apa pun, pemanggil awalnya mendapatkan handel ini baik ketika membuat VC dengan fungsi NdisCoCreateVc , atau sebagai parameter input untuk fungsi ProtocolCoCreateVc-nya . Untuk permintaan khusus VC yang diarahkan ke driver miniport yang mendasar, handel ini mengidentifikasi VC, sementara NdisAfHandle dan NdisPartyHandle adalah NULL.
[in, optional] NdisPartyHandle
Handel yang mengidentifikasi pihak pada VC multipoint yang diminta atau diatur informasinya, jika permintaannya khusus pihak. Jika tidak, jika parameter ini NULL, permintaannya tidak spesifik untuk pihak tertentu. Untuk permintaan khusus pihak mana pun, klien awalnya mendapatkan handel ini dari panggilan yang berhasil ke fungsi NdisClAddParty atau fungsi NdisClMakeCall atau manajer panggilan memperoleh handel ini sebagai parameter input ke fungsi ProtocolCmAddParty-nya . Jika NdisAfHandleADALAH NULL, NdisPartyHandle juga NULL.
[in, out] OidRequest
Penunjuk ke struktur NDIS_OID_REQUEST yang menentukan operasi yang diminta dengan kode OID_XXX yang diberikan untuk mengkueri atau mengatur informasi.
Nilai kembali
Driver target menentukan kode NDIS_STATUS_XXX mana yang dikembalikan NdisCoOidRequest , biasanya salah satu nilai berikut:
Menampilkan kode | Deskripsi |
---|---|
|
Operasi permintaan berhasil diselesaikan. |
|
Permintaan sedang ditangani secara asinkron, dan NDIS akan memanggil pemanggil Fungsi ProtocolCoOidRequestComplete saat permintaan selesai. |
|
Kode OID_XXX yang ditentukan dalam anggota Oid dari struktur NDIS_OID_REQUEST di parameter OidRequest tidak valid atau tidak didukung oleh driver yang mendasar. |
|
Nilai yang ditentukan dalam anggota InformationBufferLength dari buffer terstruktur NDIS_OID_REQUEST di OidRequest tidak cocok dengan persyaratan untuk kode OID_XXX yang diberikan. Jika buffer informasi terlalu kecil, anggota BytesNeeded dari NDIS_OID_REQUEST berisi nilai yang benar untuk InformationBufferLength, saat NdisCoOidRequest kembali. |
|
Data yang disediakan di InformationBuffer dalam struktur NDIS_OID_REQUEST yang diberikan tidak valid untuk kode OID_XXX yang diberikan. |
|
Driver yang mendasar tidak mendukung operasi yang diminta. |
|
Permintaan tidak dapat dipenuhi karena kekurangan sumber daya. Biasanya, nilai pengembalian ini menunjukkan bahwa upaya untuk mengalokasikan memori tidak berhasil, tetapi tidak selalu menunjukkan bahwa permintaan yang sama, jika dikirimkan nanti, akan gagal karena alasan yang sama. |
|
Driver yang mendasar mencoba operasi yang diminta, biasanya permintaan yang ditetapkan, tetapi operasi gagal. Misalnya, upaya untuk mengatur terlalu banyak alamat multicast dapat menyebabkan NdisCoOidRequest mengembalikan nilai ini. |
|
Driver yang mendasar gagal dalam operasi yang diminta karena operasi penutupan sedang berlangsung. |
|
Driver miniport yang mendasar tidak dapat memenuhi permintaan saat ini karena saat ini sedang mengatur ulang NIC yang terpengaruh. Fungsi ProtocolStatusEx penelepon adalah atau akan dipanggil dengan NDIS_STATUS_RESET_START untuk menunjukkan bahwa reset sedang berlangsung. Nilai pengembalian ini tidak selalu menunjukkan bahwa permintaan yang sama, jika dikirimkan nanti, akan gagal karena alasan yang sama. |
|
Nilai ini biasanya adalah nilai default nonspesfik yang dikembalikan ketika tidak ada NDIS_STATUS_XXX yang lebih spesifik yang menyebabkan driver yang mendasar gagal dalam permintaan. |
|
Driver miniport berhenti memproses permintaan. Misalnya, NDIS disebut MiniportResetEx driver miniport yang mendasar atau Fungsi MiniportCancelOidRequest . |
Keterangan
Klien CoNDIS dan manajer panggilan mandiri dapat memanggil fungsi NdisCoOidRequest untuk mengirim permintaan OID untuk mengkueri atau mengatur informasi yang ditentukan OID dalam driver target. Driver target dapat menjadi driver protokol CoNDIS lain atau driver yang mendasar.
Pemanggil NdisCoOidRequest harus mengalokasikan memori yang cukup untuk menahan buffer informasi yang terkait dengan OID yang ditentukan. Pemanggil juga harus mengalokasikan dan menyiapkan buffer di OidRequest sebelum memanggil NdisCoOidRequest. Kedua buffer harus dialokasikan dari kumpulan yang tidak disebarkan karena driver target dapat berjalan pada IRQL yang dinaikkan saat memproses permintaan.
Beberapa kesalahan yang dikembalikan NdisCoOidRequest dapat dipulihkan, termasuk yang berikut ini:
- NDIS_STATUS_INVALID_OID
- NDIS_STATUS_INVALID_LENGTH
- NDIS_STATUS_BUFFER_TOO_SHORT
- NDIS_STATUS_INVALID_DATA
- NDIS_STATUS_RESOURCES
- NDIS_STATUS_RESET_IN_PROGRESS
Bergantung pada nilai parameter NdisAfHandle , klien, dan manajer panggilan mandiri memanggil NdisCoOidRequest untuk berkomunikasi satu sama lain atau dengan driver miniport berorientasi koneksi yang mendasar.
Jika driver melewati NULL untuk NdisVcHandle, permintaan bersifat global, apakah permintaan diarahkan ke klien, manajer panggilan, atau driver miniport. Misalnya, jika pemanggil memasok nilai non-NULL untuk NdisVcHandle, permintaan OID OID_GEN_CO_RCV_CRC_ERROR ke driver miniport berorientasi koneksi yang mendasar mengembalikan jumlah kesalahan pemeriksaan redundansi siklik (CRC) yang ditemui untuk VC tertentu. Untuk permintaan yang sama dengan NULL untuk NdisVcHandle, driver miniport yang mendasar mengembalikan jumlah total kesalahan CRC yang ditemui untuk semua VC.
Klien dan manajer panggilan mandiri harus memanggil fungsi NdisOidRequest untuk semua OID yang tidak berorientasi koneksi, seperti yang dikembalikan dalam kueri OID_GEN_SUPPORTED_LIST , yang biasanya dikeluarkan selama inisialisasi setelah driver protokol terikat dengan driver NIC yang mendasar.
Jika NdisCoOidRequest mengembalikan NDIS_STATUS_PENDING, permintaan sedang ditangani secara asinkron dan NDIS akan memanggil driver Fungsi ProtocolCoOidRequestComplete saat permintaan selesai. Jika NdisCoOidRequest mengembalikan status lain, permintaan selesai saat NdisCoOidRequest kembali, dan NDIS tidak memanggil ProtocolCoOidRequestComplete.
Untuk informasi selengkapnya tentang kumpulan OID yang ditentukan untuk digunakan dengan NdisCoOidRequest dan NdisOidRequest, lihat OID NDIS.
Hanya klien dan manajer panggilan mandiri, yang merupakan driver protokol, yang dapat memanggil NdisCoOidRequest. MCM memanggil fungsi NdisMCmOidRequest untuk berkomunikasi dengan klien mereka.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Didukung di NDIS 6.0 dan yang lebih baru. |
Target Platform | Desktop |
Header | ndis.h (termasuk Ndis.h) |
Pustaka | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
Aturan kepatuhan DDI | Irql_Connection_Function(ndis) |