struktur NDIS_OID_REQUEST (ndis/oidrequest.h)
Untuk mengkueri atau mengatur informasi OID, NDIS mengirimkan struktur NDIS_OID_REQUEST untuk memfilter driver dan driver miniport.
Sintaksis
typedef struct _NDIS_OID_REQUEST {
NDIS_OBJECT_HEADER Header;
NDIS_REQUEST_TYPE RequestType;
NDIS_PORT_NUMBER PortNumber;
UINT Timeout;
PVOID RequestId;
NDIS_HANDLE RequestHandle;
union {
NDIS_OID Oid;
struct {
NDIS_OID Oid;
PVOID InformationBuffer;
UINT InformationBufferLength;
UINT BytesWritten;
UINT BytesNeeded;
} QUERY_INFORMATION;
struct {
NDIS_OID Oid;
PVOID InformationBuffer;
UINT InformationBufferLength;
UINT BytesRead;
UINT BytesNeeded;
} SET_INFORMATION;
struct {
NDIS_OID Oid;
PVOID InformationBuffer;
ULONG InputBufferLength;
ULONG OutputBufferLength;
ULONG MethodId;
UINT BytesWritten;
UINT BytesRead;
UINT BytesNeeded;
} METHOD_INFORMATION;
} DATA;
_REQUEST_DATA _REQUEST_DATA;
UCHAR *NdisReserved[NDIS_OID_REQUEST_NDIS_RESERVED_SIZE sizeof(PVOID)];
UCHAR *MiniportReserved[2 sizeof(PVOID)];
UCHAR *SourceReserved[2 sizeof(PVOID)];
UCHAR SupportedRevision;
UCHAR Reserved1;
USHORT Reserved2;
NDIS_NIC_SWITCH_ID SwitchId;
NDIS_NIC_SWITCH_VPORT_ID VPortId;
ULONG Flags;
} NDIS_OID_REQUEST, *PNDIS_OID_REQUEST;
Anggota
Header
Struktur NDIS_OBJECT_HEADER untuk struktur NDIS_OID_REQUEST. Atur anggota Tipe
NDIS_OID_REQUEST_REVISION_2
Menambahkan
Atur anggota Ukuran
NDIS_OID_REQUEST_REVISION_1
Versi asli untuk NDIS 6.0.
Atur anggota Ukuran
RequestType
Jenis permintaan sebagai salah satu nilai enumerasi NDIS_REQUEST_TYPE.
PortNumber
Port tempat permintaan dikirim. Jika port tidak diketahui atau default, anggota ini adalah nol.
Timeout
Waktu habis, dalam detik, untuk permintaan. NDIS dapat mengatur ulang driver atau membatalkan permintaan jika waktu habis kedaluwarsa sebelum driver menyelesaikan permintaan.
RequestId
Pengidentifikasi untuk permintaan tersebut. Jika driver miniport harus segera menyelesaikan permintaan dan menyelesaikan permintaan dengan status NDIS_STATUS_INDICATION_REQUIRED, driver miniport menggunakan nilai
NDIS atau driver yang terlalu berlebihan juga dapat menggunakan RequestId
RequestHandle
Handel yang mengidentifikasi sumber yang mengeluarkan permintaan OID. Jika driver miniport harus segera menyelesaikan permintaan dan menyelesaikan permintaan dengan status NDIS_STATUS_INDICATION_REQUIRED, driver miniport menggunakan nilai requestHandle ini untuk mengatur DestinationHandle anggota struktur NDIS_STATUS_INDICATION terkait. Dalam hal ini, NDIS hanya akan mengirim indikasi status berikutnya ke sumber yang mengeluarkan permintaan OID.
Untuk informasi selengkapnya tentang indikasi status, lihat bagian Keterangan berikut ini.
DATA
Serikat yang menentukan data permintaan. Informasi dalam data bervariasi sesuai dengan jenis permintaan seperti yang ditentukan oleh RequestType anggota. Struktur anggota berikut ditentukan:
DATA.Oid
DATA.QUERY_INFORMATION
Struktur ini berisi parameter untuk NdisRequestQueryInformation atau NdisRequestQueryStatistics jenis permintaan. Struktur ini ditentukan sebagai berikut:
struct _QUERY
{
NDIS_OID Oid;
PVOID InformationBuffer;
UINT InformationBufferLength;
UINT BytesWritten;
UINT BytesNeeded;
} QUERY_INFORMATION;
DATA.QUERY_INFORMATION.Oid
Pengidentifikasi objek dari operasi yang diminta. Nilainya adalah kode XXX OID_
DATA.QUERY_INFORMATION.InformationBuffer
Penunjuk ke buffer tempat driver atau NDIS yang mendasar mengembalikan informasi yang diminta untuk permintaan informasi kueri.
DATA.QUERY_INFORMATION.InformationBufferLength
Ukuran, dalam byte, buffer di InformationBuffer. Nilai di Oid menentukan nilai yang sesuai untuk anggota ini.
DATA.QUERY_INFORMATION.BytesWritten
Jumlah byte yang ditransfer driver atau NDIS yang mendasar ke buffer di InformationBuffer untuk permintaan informasi kueri. Jika fungsi
DATA.QUERY_INFORMATION.BytesNeeded
Jumlah byte yang diperlukan untuk mengembalikan informasi kueri yang diminta oleh kode OID_
Jika NdisOidRequest mengembalikan NDIS_STATUS_SUCCESS, nilai anggota ini tidak ada artinya. Jika
DATA.SET_INFORMATION
Struktur ini berisi parameter untuk jenis permintaan NdisRequestSetInformation. Struktur ini ditentukan sebagai berikut:
struct _SET
{
NDIS_OID Oid;
PVOID InformationBuffer;
UINT InformationBufferLength;
UINT BytesRead;
UINT BytesNeeded;
} SET_INFORMATION;
DATA.SET_INFORMATION.Oid
Pengidentifikasi objek dari operasi yang diminta. Nilainya adalah kode XXX OID_
DATA.SET_INFORMATION.InformationBuffer
Pointer ke buffer tempat driver yang mendasar membaca informasi yang disediakan penelepon untuk permintaan set-information.
DATA.SET_INFORMATION.InformationBufferLength
Ukuran, dalam byte, buffer di InformationBuffer. Nilai di Oid menentukan nilai yang sesuai untuk anggota ini.
DATA.SET_INFORMATION.BytesRead
Jumlah byte yang dibaca driver yang mendasar dari buffer di InformationBuffer untuk permintaan set-information.
DATA.SET_INFORMATION.BytesNeeded
Jumlah byte yang diperlukan untuk melakukan operasi yang ditetapkan yang diminta oleh kode OID_
Jika NdisOidRequest mengembalikan NDIS_STATUS_SUCCESS, nilai anggota ini tidak ada artinya. Jika buffer di
DATA.METHOD_INFORMATION
Struktur ini berisi parameter untuk jenis permintaan NdisRequestMethod. Struktur ini ditentukan sebagai berikut:
struct _METHOD
{
NDIS_OID Oid;
PVOID InformationBuffer;
ULONG InputBufferLength;
ULONG OutputBufferLength;
ULONG MethodId;
UINT BytesWritten;
UINT BytesRead;
UINT BytesNeeded;
} METHOD_INFORMATION;
DATA.METHOD_INFORMATION.Oid
Pengidentifikasi objek dari operasi yang diminta. Nilainya adalah kode XXX OID_
DATA.METHOD_INFORMATION.InformationBuffer
Penunjuk ke buffer tempat driver atau NDIS yang mendasar mengembalikan informasi yang diminta untuk operasi kueri atau dari mana driver yang mendasar membaca informasi yang disediakan pemanggil untuk operasi yang ditetapkan. Operasi ini khusus untuk jenis permintaan NdisRequestMethod yang sedang dibuat.
DATA.METHOD_INFORMATION.InputBufferLength
Ukuran, dalam byte, dari data yang dapat dibaca di buffer di InformationBuffer. Nilai di Oid menentukan nilai yang sesuai untuk anggota ini.
DATA.METHOD_INFORMATION.OutputBufferLength
Jumlah byte dalam buffer di InformationBuffer yang dapat ditulis driver.
DATA.METHOD_INFORMATION.MethodId
Metode yang akan dijalankan untuk metode OID. Permintaan OID metode dapat mendukung beberapa operasi seperti yang didefinisikan oleh MethodId. Ini bisa menjadi nilai apa pun yang lebih besar atau sama dengan nol. Zero menunjukkan metode default. NDIS dapat menentukan OID metode publik dengan beberapa metode yang telah ditentukan sebelumnya. Driver miniport dapat menentukan OID metode kustom. Untuk informasi selengkapnya tentang OID kustom, lihat OID_GEN_SUPPORTED_GUIDS.
DATA.METHOD_INFORMATION.BytesWritten
Jumlah byte yang ditransfer driver atau NDIS yang mendasar ke buffer di InformationBuffer untuk permintaan informasi kueri. Jika fungsi
Untuk OID metode,
DATA.METHOD_INFORMATION.BytesRead
Jumlah byte yang dibaca driver yang mendasar dari buffer di InformationBuffer untuk permintaan set-information.
Untuk OID metode, BytesRead
DATA.METHOD_INFORMATION.BytesNeeded
Jumlah byte yang diperlukan untuk mengembalikan informasi kueri atau untuk melakukan operasi set yang diminta oleh kode OID_
Jika NdisOidRequest mengembalikan NDIS_STATUS_SUCCESS, nilai anggota ini tidak ada artinya. Jika
_REQUEST_DATA
NdisReserved[NDIS_OID_REQUEST_NDIS_RESERVED_SIZE * sizeof(PVOID)]
Area yang dicadangkan untuk NDIS.
MiniportReserved[2 * sizeof(PVOID)]
Area yang dicadangkan untuk pengemudi miniport.
SourceReserved[2 * sizeof(PVOID)]
Area yang dicadangkan untuk driver asal. Dicadangkan untuk alokator struktur NDIS_OID_REQUEST. Ini biasanya driver protokol NDIS atau driver filter NDIS.
SupportedRevision
Revisi struktur NDIS yang didukung oleh driver NDIS 6.0 atau yang lebih baru saat menangani permintaan OID. Struktur yang direvisi adalah struktur NDIS 6.0 apa pun yang memiliki struktur NDIS_OBJECT_HEADER di dalamnya. Ketika driver berhasil mengatur OID, driver harus mengatur SupportedRevision ke nomor revisi struktur yang didukungnya. Untuk informasi selengkapnya tentang informasi versi NDIS, lihat Menentukan Informasi Versi NDIS.
Reserved1
Dicadangkan untuk digunakan di masa mendatang.
Reserved2
Dicadangkan untuk digunakan di masa mendatang.
SwitchId
Nilai NDIS_NIC_SWITCH_ID yang mengidentifikasi sakelar tempat VPort target, yang ditentukan oleh VPortId, sedang berjalan.
Nota
Bidang ini didukung di NDIS 6.50 dan yang lebih baru.
VPortId
Nilai NDIS_NIC_SWITCH_VPORT_ID yang mengidentifikasi VPort yang ditargetkan permintaan OID ini. Bidang ini dianggap valid hanya jika bendera NDIS_OID_REQUEST_FLAGS_VPORT_ID_VALID diatur.
Nota
Bidang ini didukung di NDIS 6.50 dan yang lebih baru.
Flags
Nilai ULONG yang berisi bitwise ATAU bendera untuk permintaan OID ini. Saat ini, bendera ini didukung:
Bendera | Nilai | Deskripsi |
---|---|---|
NDIS_OID_REQUEST_FLAGS_VPORT_ID_VALID | 0x0001 | Ketika bendera ini diatur, anggota VportId dianggap valid dan mengidentifikasi VPort tempat OID ditargetkan. Jika bendera ini tidak diatur, maka OID adalah untuk adaptor miniport itu sendiri. |
Nota
Bidang ini didukung di NDIS 6.50 dan yang lebih baru.
Komentar
Driver protokol atau driver filter harus mengalokasikan memori yang tidak di-patok untuk buffer pada InformationBuffer dan untuk struktur NDIS_OID_REQUEST. Menggunakan data yang dialokasikan dari memori halaman dapat menyebabkan kesalahan halaman fatal karena driver yang mendasarinya berjalan di IRQL = DISPATCH_LEVEL untuk melakukan operasi yang diminta.
NDIS_OID_REQUEST berisi substruktur DATA untuk setiap jenis operasi yang dapat diminta driver protokol dari driver yang mendasar. Sebelum memanggil
Beberapa permintaan OID memungkinkan driver miniport untuk memberikan status penyelesaian OID dengan indikasi status. Dalam hal ini, driver miniport mengembalikan NDIS_STATUS_INDICATION_REQUIRED untuk status penyelesaian permintaan OID. Driver miniport tidak dapat mengembalikan status ini kecuali OID tertentu mengizinkannya. Untuk menentukan apakah status ini diizinkan, lihat halaman referensi OID.
Jika indikasi status dikaitkan dengan permintaan OID tempat driver miniport mengembalikan NDIS_STATUS_INDICATION_REQUIRED, driver yang membuat indikasi status harus mengatur DestinationHandle
Dalam hal ini, driver mengatur DestinationHandle
Misalnya, dalam jaringan nirkabel, pemrosesan permintaan OID dapat memakan waktu yang sangat lama untuk diselesaikan. Dalam hal ini, driver miniport dapat segera menyelesaikan permintaan OID dan memberikan indikasi status nanti untuk memberikan hasil akhir untuk permintaan OID.
Jenis NdisRequestGenericn(1-4) tersedia untuk driver miniport yang membuat permintaan internal mereka sendiri. Untuk menerapkan permintaan seperti itu, driver miniport menetapkan variabel internal ke salah satu jenis generik ini.
Persyaratan
Syarat | Nilai |
---|---|
klien minimum yang didukung | Didukung di NDIS 6.0 dan yang lebih baru. |
Header |
ndis/oidrequest.h (termasuk ndis.h) |