📄 ndis.h
字号:
struct ndis_binary_data { USHORT len; void *buf;};enum ndis_config_param_type { NDIS_CONFIG_PARAM_INT, NDIS_CONFIG_PARAM_HEXINT, NDIS_CONFIG_PARAM_STRING, NDIS_CONFIG_PARAM_MULTISTRING, NDIS_CONFIG_PARAM_BINARY, NDIS_CONFIG_PARAM_NONE,};struct ndis_config_param { enum ndis_config_param_type type; union { ULONG intval; struct unicode_string ustring; struct ndis_binary_data binary_data; } data;};struct device_setting { struct list_head list; char name[MAX_NDIS_SETTING_NAME_LEN]; char value[MAX_NDIS_SETTING_VALUE_LEN]; struct ndis_config_param config_param;};struct ndis_bin_file { char name[MAX_NDIS_SETTING_NAME_LEN]; int size; void *data;};/* * There is one of these per driver. One per loaded driver exists. * */struct ndis_driver { CSHORT type; CSHORT size; void *dev_object; ULONG flags; void *driver_start; ULONG driver_size; void *driver_section; void *driver_extension; struct ustring *driver_name; void *hardware_database; void *fast_io_dispatch; void *driver_init; void *driver_start_io; void (*driver_unload)(struct ndis_driver *driver) STDCALL; void *major_func[IRP_MJ_MAXIMUM_FUNCTION + 1]; /* rest is ndiswrapper specific info */ void *entry; struct list_head list; char name[MAX_NDIS_SETTING_NAME_LEN]; char version[MAX_NDIS_SETTING_VALUE_LEN]; int bustype; unsigned int num_pe_images; struct pe_image pe_images[MAX_PE_IMAGES]; int num_bin_files; struct ndis_bin_file *bin_files; atomic_t users; struct miniport_char miniport_char;};struct ndis_handle;/* * There is one of these per handeled device-id * */struct ndis_device { struct list_head settings; int bustype; int vendor; int device; int subvendor; int subdevice; struct ndis_driver *driver; char driver_name[MAX_DRIVER_NAME_LEN]; struct ndis_handle *handle; char conf_file_name[MAX_DRIVER_NAME_LEN];};struct ndis_wireless_stats { LARGE_INTEGER length; LARGE_INTEGER tx_frag; LARGE_INTEGER tx_multi_frag; LARGE_INTEGER failed; LARGE_INTEGER retry; LARGE_INTEGER multi_retry; LARGE_INTEGER rtss_succ; LARGE_INTEGER rtss_fail; LARGE_INTEGER ack_fail; LARGE_INTEGER frame_dup; LARGE_INTEGER rx_frag; LARGE_INTEGER rx_multi_frag; LARGE_INTEGER fcs_err;};enum ndis_status_type { Ndis802_11StatusType_Authentication, Ndis802_11StatusType_PMKID_CandidateList, Ndis802_11StatusType_MediaStreamMode, Ndis802_11StatusType_RadioState,};struct ndis_status_indication{ enum ndis_status_type status_type;};enum ndis_radio_status { Ndis802_11RadioStatusOn, Ndis802_11RadioStatusHardwareOff, Ndis802_11RadioStatusSoftwareOff,};struct ndis_radio_status_indication{ enum ndis_status_type status_type; enum ndis_radio_status radio_state;};enum wrapper_work { LINK_STATUS_CHANGED, SET_INFRA_MODE, SET_ESSID, SET_PACKET_FILTER, COLLECT_STATS, SUSPEND_RESUME, /* do not work when this is set */ SHUTDOWN};enum ndis_attributes { ATTR_SERIALIZED, ATTR_SURPRISE_REMOVE, ATTR_HALT_ON_SUSPEND,};enum hw_status { HW_NORMAL, HW_SUSPENDED, HW_HALTED, HW_UNAVAILABLE,};struct encr_info { struct encr_key { ULONG length; UCHAR key[NDIS_ENCODING_TOKEN_MAX]; } keys[MAX_ENCR_KEYS]; unsigned short tx_key_index;};struct ndis_essid { ULONG length; UCHAR essid[NDIS_ESSID_MAX_SIZE];};enum network_infrastructure { Ndis802_11IBSS, Ndis802_11Infrastructure, Ndis802_11AutoUnknown, Ndis802_11InfrastructureMax};enum authentication_mode { Ndis802_11AuthModeOpen, Ndis802_11AuthModeShared, Ndis802_11AuthModeAutoSwitch, Ndis802_11AuthModeWPA, Ndis802_11AuthModeWPAPSK, Ndis802_11AuthModeWPANone, Ndis802_11AuthModeWPA2, Ndis802_11AuthModeWPA2PSK, Ndis802_11AuthModeMax};enum encryption_status { Ndis802_11WEPEnabled, Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled, Ndis802_11WEPDisabled, Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled, Ndis802_11WEPKeyAbsent, Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent, Ndis802_11WEPNotSupported, Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported, Ndis802_11Encryption2Enabled, Ndis802_11Encryption2KeyAbsent, Ndis802_11Encryption3Enabled, Ndis802_11Encryption3KeyAbsent};struct ndis_timer { struct ktimer ktimer; struct kdpc kdpc;};struct ndis_miniport_timer { struct ktimer ktimer; struct kdpc kdpc; void *timer_func; void *timer_ctx; struct ndis_handle *handle; struct ndis_miniport_timer *next;};#pragma pack(push,4)struct ndis_resource_entry { UCHAR type; UCHAR share; USHORT flags; union { struct { PHYSICAL_ADDRESS start; ULONG length; } generic; struct { PHYSICAL_ADDRESS start; ULONG length; } port; struct { ULONG level; ULONG vector; KAFFINITY affinity; } interrupt; struct { PHYSICAL_ADDRESS start; ULONG length; } memory; struct { ULONG channel; ULONG port; ULONG reserved1; } dma; struct { ULONG data[3]; } device_private; struct { ULONG start; ULONG length; ULONG reserved; } bus_number; struct { ULONG data_size; ULONG reserved1; ULONG reserved2; } device_specific_data; } u;};#pragma pack(pop)struct ndis_resource_list { USHORT version; USHORT revision; ULONG length; struct ndis_resource_entry list[0];};struct ndis_event { struct kevent kevent;};struct ndis_bind_paths { UINT number; struct unicode_string paths[1];};struct ndis_reference { KSPIN_LOCK lock; USHORT ref_count; BOOLEAN closing;};struct ndis_miniport_interrupt { void *object; KSPIN_LOCK dpc_count_lock; void *reserved; ndis_isr_handler irq_th; ndis_interrupt_handler irq_bh; struct kdpc interrupt_dpc; struct ndis_miniport_block *miniport; UCHAR dpc_count; BOOLEAN filler1; struct kevent dpcs_completed_event; BOOLEAN shared_interrupt; BOOLEAN isr_requested;};struct ndis_filterdbs { union { void *eth_db; void *null_db; } u; void *trdb; void *fddidb; void *arcdb;};enum ndis_interface_type { NdisInterfaceInternal, NdisInterfaceIsa, NdisInterfaceEisa, NdisInterfaceMca, NdisInterfaceTurboChannel, NdisInterfacePci, NdisInterfacePcMcia,};/* * This is the per device struct. One per PCI-device exists. * * This struct contains function pointers that the drivers references * directly via macros, so it's important that they are at the correct * position hence the paddings. *//* This is called NDIS_MINIPORT_BLOCK in NDIS; however, when using it * in Ndis functions, it is passed as void *handle. To avoid * unnecessary typecasting, we declare it as ndis_handle */struct ndis_handle { void *signature; struct ndis_handle *next; struct ndis_driver *driver; void *adapter_ctx; struct unicode_string name; struct ndis_bind_paths *bindpaths; void *openqueue; struct ndis_reference reference; void *device_ctx; UCHAR padding; UCHAR lock_acquired; UCHAR pmode_opens; UCHAR assigned_cpu; KSPIN_LOCK kspin_lock; enum ndis_request_type *mediarequest; struct ndis_miniport_interrupt *interrupt; ULONG flags; ULONG pnp_flags; struct list_entry packet_list; struct ndis_packet *first_pending_tx_packet; struct ndis_packet *return_packet_queue; ULONG request_buffer; void *set_mcast_buffer; struct ndis_handle *primary_miniport; void *wrapper_ctx; void *bus_data_ctx; ULONG pnp_capa; void *resources; struct ndis_timer wakeup_dpc_timer; struct unicode_string basename; struct unicode_string symlink_name; ULONG ndis_hangcheck_interval; USHORT hanghcheck_ticks; USHORT hangcheck_tick; NDIS_STATUS ndis_reset_status; void *resetopen; struct ndis_filterdbs filterdbs; void *rx_packet; void *send_complete; void *send_resource_avail; void *reset_complete; enum ndis_medium media_type; ULONG bus_number; enum ndis_interface_type bus_type; enum ndis_interface_type adapter_type; struct device_object *device_obj; struct device_object *phys_device_obj; struct device_object *next_device_obj; void *mapreg; void *call_mgraflist; void *miniport_thread; void *setinfobuf; USHORT setinfo_buf_len; USHORT max_send_pkts; NDIS_STATUS fake_status; void *lock_handler; struct unicode_string *adapter_instance_name; void *timer_queue; UINT mac_options; void *pending_req; UINT max_long_addrs; UINT max_short_addrs; UINT cur_lookahead; UINT max_lookahead; ndis_interrupt_handler irq_bh; void *disable_intr; void *enable_intr; void *send_pkts; void *deferred_send; void *eth_rx_indicate; void *txrx_indicate; void *fddi_rx_indicate; void *eth_rx_complete; void *txrx_complete; void *fddi_rx_complete; void *status; void *status_complete; void *td_complete; void *query_complete; void *set_complete; void *wan_tx_complete; void *wan_rx; void *wan_rx_complete; /* the rest are ndiswrapper specific */ /* keep a barrier in cases of over-stepping */ char barrier[200]; union { struct pci_dev *pci; struct usb_device *usb;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -