RNDIS_MSG_HALT=0x00000003UL,///< Sent by the host to halt the device. This does not have a response. It is optional for the device to send this message to the host.
RNDIS_MSG_KEEP_ALIVE=0x00000008UL,///< During idle periods, sent every few seconds by the host to check that the device is still responsive. It is optional for the device to send this message to check if the host is active.
RNDIS_MSG_KEEP_ALIVE_CMPLT=0x80000008UL///< The device response to a keepalivemessage. The host can respond with this message to a keepalive message from the device when the device implements the optional KeepAliveTimer.
uint32_ttype;///< Message Type, must be \ref RNDIS_MSG_INITIALIZE_CMPLT
uint32_tlength;///< Message length in bytes, must be 0x30
uint32_trequest_id;///< A 32-bit integer value from \a request_id field of the \ref rndis_msg_initialize_t to which this message is a response.
uint32_tstatus;///< The initialization status of the device, has value from \ref rndis_msg_status_t
uint32_tmajor_version;///< the highest-numbered RNDIS Protocol version supported by the device.
uint32_tminor_version;///< the highest-numbered RNDIS Protocol version supported by the device.
uint32_tdevice_flags;///< MUST be set to 0x000000010. Other values are reserved for future use.
uint32_tmedium;///< is 0x00 for RNDIS_MEDIUM_802_3
uint32_tmax_packet_per_xfer;///< The maximum number of concatenated \ref RNDIS_MSG_PACKET messages that the device can handle in a single bus transfer to it. This value MUST be at least 1.
uint32_tmax_xfer_size;///< The maximum size, in bytes, of any single bus data transfer that the device expects to receive from the host.
uint32_tpacket_alignment_factor;///< The byte alignment the device expects for each RNDIS message that is part of a multimessage transfer to it. The value is specified as an exponent of 2; for example, the host uses 2<SUP>{PacketAlignmentFactor}</SUP> as the alignment value.
uint32_ttype;///< Message Type, must be \ref RNDIS_MSG_QUERY
uint32_tlength;///< Message length in bytes, including the header and the \a oid_buffer
uint32_trequest_id;///< A 32-bit integer value, generated by the host, used to match the host's sent request to the response from the device.
uint32_toid;///< The integer value of the host operating system-defined identifier, for the parameter of the device being queried for.
uint32_tbuffer_length;///< The length, in bytes, of the input data required for the OID query. This MUST be set to 0 when there is no input data associated with the OID.
uint32_tbuffer_offset;///< The offset, in bytes, from the beginning of \a request_id field where the input data for the query is located in the message. This value MUST be set to 0 when there is no input data associated with the OID.
uint32_treserved;
uint8_toid_buffer[];///< Flexible array contains the input data supplied by the host, required for the OID query request processing by the device, as per the host NDIS specification.
uint32_ttype;///< Message Type, must be \ref RNDIS_MSG_QUERY_CMPLT
uint32_tlength;///< Message length in bytes, including the header and the \a oid_buffer
uint32_trequest_id;///< A 32-bit integer value from \a request_id field of the \ref rndis_msg_query_t to which this message is a response.
uint32_tstatus;///< The status of processing for the query request, has value from \ref rndis_msg_status_t.
uint32_tbuffer_length;///< The length, in bytes, of the data in the response to the query. This MUST be set to 0 when there is no OIDInputBuffer.
uint32_tbuffer_offset;///< The offset, in bytes, from the beginning of \a request_id field where the response data for the query is located in the message. This MUST be set to 0 when there is no \ref oid_buffer.
uint8_toid_buffer[];///< Flexible array member contains the response data to the OID query request as specified by the host.
uint32_ttype;///< Message Type, must be \ref RNDIS_MSG_RESET_CMPLT
uint32_tlength;///< Message length in bytes, MUST be 0x10
uint32_tstatus;///< The status of processing for the \ref rndis_msg_reset_t, has value from \ref rndis_msg_status_t.
uint32_taddressing_reset;///< This field indicates whether the addressing information, which is the multicast address list or packet filter, has been lost during the reset operation. This MUST be set to 0x00000001 if the device requires that the host to resend addressing information or MUST be set to zero otherwise.
/// \details This message MUST be sent by the host to check that device is still responsive. It is optional for the device to send this message to check if the host is active
uint32_ttype;///< Message Type, must be \ref RNDIS_MSG_PACKET
uint32_tlength;///< Message length in bytes, The total length of this RNDIS message including the header, payload, and padding.
uint32_tdata_offset;///< Specifies the offset, in bytes, from the start of this \a data_offset field of this message to the start of the data. This MUST be an integer multiple of 4.
uint32_tdata_length;///< Specifies the number of bytes in the payload of this message.
uint32_tout_of_band_data_offet;///< Specifies the offset, in bytes, of the first out-of-band data record from the start of the DataOffset field in this message. MUST be an integer multiple of 4 when out-of-band data is present or set to 0 otherwise. When there are multiple out-ofband data records, each subsequent record MUST immediately follow the previous out-of-band data record.
uint32_tout_of_band_data_length;///< Specifies, in bytes, the total length of the out-of-band data.
uint32_tnum_out_of_band_data_elements;///< Specifies the number of out-of-band records in this message.
uint32_tper_packet_info_offset;///< Specifies the offset, in bytes, of the start of per-packet-info data record from the start of the \a data_offset field in this message. MUST be an integer multiple of 4 when per-packet-info data record is present or MUST be set to 0 otherwise. When there are multiple per-packet-info data records, each subsequent record MUST immediately follow the previous record.
uint32_tper_packet_info_length;///< Specifies, in bytes, the total length of per-packetinformation contained in this message.
uint32_treserved[2];
uint32_tpayload[0];///< Network data contained in this message.
// uint8_t padding[0]
// Additional bytes of zeros added at the end of the message to comply with
//------------- General Required OIDs -------------//
RNDIS_OID_GEN_SUPPORTED_LIST=0x00010101,///< List of supported OIDs
RNDIS_OID_GEN_HARDWARE_STATUS=0x00010102,///< Hardware status
RNDIS_OID_GEN_MEDIA_SUPPORTED=0x00010103,///< Media types supported (encoded)
RNDIS_OID_GEN_MEDIA_IN_USE=0x00010104,///< Media types in use (encoded)
RNDIS_OID_GEN_MAXIMUM_LOOKAHEAD=0x00010105,///<
RNDIS_OID_GEN_MAXIMUM_FRAME_SIZE=0x00010106,///< Maximum frame size in bytes
RNDIS_OID_GEN_LINK_SPEED=0x00010107,///< Link speed in units of 100 bps
RNDIS_OID_GEN_TRANSMIT_BUFFER_SPACE=0x00010108,///< Transmit buffer space
RNDIS_OID_GEN_RECEIVE_BUFFER_SPACE=0x00010109,///< Receive buffer space
RNDIS_OID_GEN_TRANSMIT_BLOCK_SIZE=0x0001010A,///< Minimum amount of storage, in bytes, that a single packet occupies in the transmit buffer space of the NIC
RNDIS_OID_GEN_RECEIVE_BLOCK_SIZE=0x0001010B,///< Amount of storage, in bytes, that a single packet occupies in the receive buffer space of the NIC
RNDIS_OID_GEN_VENDOR_ID=0x0001010C,///< Vendor NIC code
RNDIS_OID_GEN_MAC_OPTIONS=0x00010113,///< Optional NIC flags (encoded)
RNDIS_OID_GEN_MEDIA_CONNECT_STATUS=0x00010114,///< Whether the NIC is connected to the network
RNDIS_OID_GEN_MAXIMUM_SEND_PACKETS=0x00010115,///< The maximum number of send packets the driver can accept per call to its MiniportSendPacketsfunction
//------------- General Optional OIDs -------------//
RNDIS_OID_GEN_VENDOR_DRIVER_VERSION=0x00010116,///< Vendor-assigned version number of the driver
RNDIS_OID_GEN_SUPPORTED_GUIDS=0x00010117,///< The custom GUIDs (Globally Unique Identifier) supported by the miniport driver
RNDIS_OID_GEN_NETWORK_LAYER_ADDRESSES=0x00010118,///< List of network-layer addresses associated with the binding between a transport and the driver
RNDIS_OID_GEN_TRANSPORT_HEADER_OFFSET=0x00010119,///< Size of packets' additional headers
RNDIS_OID_GEN_MEDIA_CAPABILITIES=0x00010201,///<
RNDIS_OID_GEN_PHYSICAL_MEDIUM=0x00010202,///< Physical media supported by the miniport driver (encoded)
RNDIS_PACKET_TYPE_SOURCE_ROUTING=0x00000010,///< All source routing packets. If the protocol driver sets this bit, the NDIS library attempts to act as a source routing bridge.
RNDIS_PACKET_TYPE_PROMISCUOUS=0x00000020,///< Specifies all packets regardless of whether VLAN filtering is enabled or not and whether the VLAN identifier matches or not.
RNDIS_PACKET_TYPE_SMT=0x00000040,///< SMT packets that an FDDI NIC receives.
RNDIS_PACKET_TYPE_ALL_LOCAL=0x00000080,///< All packets sent by installed protocols and all packets indicated by the NIC that is identified by a given NdisBindingHandle.
RNDIS_PACKET_TYPE_GROUP=0x00001000,///< Packets sent to the current group address.
RNDIS_PACKET_TYPE_ALL_FUNCTIONAL=0x00002000,///< All functional address packets, not just the ones in the current functional address.
RNDIS_PACKET_TYPE_FUNCTIONAL=0x00004000,///< Functional address packets sent to addresses included in the current functional address.
RNDIS_PACKET_TYPE_MAC_FRAME=0x00008000,///< NIC driver frames that a Token Ring NIC receives.