📄 rndis.h
字号:
{
RNDIS_STATUS DiagStatus;
UINT32 ErrorOffset;
} RNDIS_DIAGNOSTIC_INFO, *PRNDIS_DIAGNOSTIC_INFO;
//
// NdisKeepAlive message
//
typedef struct _RNDIS_KEEPALIVE_REQUEST
{
RNDIS_REQUEST_ID RequestId;
} RNDIS_KEEPALIVE_REQUEST, *PRNDIS_KEEPALIVE_REQUEST;
//
// Response to NdisKeepAlive
//
typedef struct _RNDIS_KEEPALIVE_COMPLETE
{
RNDIS_REQUEST_ID RequestId;
RNDIS_STATUS Status;
} RNDIS_KEEPALIVE_COMPLETE, *PRNDIS_KEEPALIVE_COMPLETE;
//
// Data message. All Offset fields contain byte offsets from the beginning
// of the RNDIS_PACKET structure. All Length fields are in bytes.
// VcHandle is set to 0 for connectionless data, otherwise it
// contains the VC handle.
//
typedef struct _RNDIS_PACKET
{
UINT32 DataOffset;
UINT32 DataLength;
UINT32 OOBDataOffset;
UINT32 OOBDataLength;
UINT32 NumOOBDataElements;
UINT32 PerPacketInfoOffset;
UINT32 PerPacketInfoLength;
RNDIS_HANDLE VcHandle;
UINT32 Reserved;
} RNDIS_PACKET, *PRNDIS_PACKET;
//
// Optional Out of Band data associated with a Data message.
//
typedef struct _RNDIS_OOBD
{
UINT32 Size;
RNDIS_CLASS_ID Type;
UINT32 ClassInformationOffset;
} RNDIS_OOBD, *PRNDIS_OOBD;
//
// Packet extension field contents associated with a Data message.
//
typedef struct _RNDIS_PER_PACKET_INFO
{
UINT32 Size;
UINT32 Type;
UINT32 PerPacketInformationOffset;
} RNDIS_PER_PACKET_INFO, *PRNDIS_PER_PACKET_INFO;
//
// CONDIS Miniport messages for connection oriented devices
// that do not implement a call manager.
//
//
// CoNdisMiniportCreateVc message
//
typedef struct _RCONDIS_MP_CREATE_VC
{
RNDIS_REQUEST_ID RequestId;
RNDIS_HANDLE NdisVcHandle;
} RCONDIS_MP_CREATE_VC, *PRCONDIS_MP_CREATE_VC;
//
// Response to CoNdisMiniportCreateVc
//
typedef struct _RCONDIS_MP_CREATE_VC_COMPLETE
{
RNDIS_REQUEST_ID RequestId;
RNDIS_HANDLE DeviceVcHandle;
RNDIS_STATUS Status;
} RCONDIS_MP_CREATE_VC_COMPLETE, *PRCONDIS_MP_CREATE_VC_COMPLETE;
//
// CoNdisMiniportDeleteVc message
//
typedef struct _RCONDIS_MP_DELETE_VC
{
RNDIS_REQUEST_ID RequestId;
RNDIS_HANDLE DeviceVcHandle;
} RCONDIS_MP_DELETE_VC, *PRCONDIS_MP_DELETE_VC;
//
// Response to CoNdisMiniportDeleteVc
//
typedef struct _RCONDIS_MP_DELETE_VC_COMPLETE
{
RNDIS_REQUEST_ID RequestId;
RNDIS_STATUS Status;
} RCONDIS_MP_DELETE_VC_COMPLETE, *PRCONDIS_MP_DELETE_VC_COMPLETE;
//
// CoNdisMiniportQueryRequest message
//
typedef struct _RCONDIS_MP_QUERY_REQUEST
{
RNDIS_REQUEST_ID RequestId;
RNDIS_REQUEST_TYPE RequestType;
RNDIS_OID Oid;
RNDIS_HANDLE DeviceVcHandle;
UINT32 InformationBufferLength;
UINT32 InformationBufferOffset;
} RCONDIS_MP_QUERY_REQUEST, *PRCONDIS_MP_QUERY_REQUEST;
//
// CoNdisMiniportSetRequest message
//
typedef struct _RCONDIS_MP_SET_REQUEST
{
RNDIS_REQUEST_ID RequestId;
RNDIS_REQUEST_TYPE RequestType;
RNDIS_OID Oid;
RNDIS_HANDLE DeviceVcHandle;
UINT32 InformationBufferLength;
UINT32 InformationBufferOffset;
} RCONDIS_MP_SET_REQUEST, *PRCONDIS_MP_SET_REQUEST;
//
// CoNdisIndicateStatus message
//
typedef struct _RCONDIS_INDICATE_STATUS
{
RNDIS_HANDLE NdisVcHandle;
RNDIS_STATUS Status;
UINT32 StatusBufferLength;
UINT32 StatusBufferOffset;
} RCONDIS_INDICATE_STATUS, *PRCONDIS_INDICATE_STATUS;
//
// CONDIS Call/VC parameters
//
typedef struct _RCONDIS_SPECIFIC_PARAMETERS
{
UINT32 ParameterType;
UINT32 ParameterLength;
UINT32 ParameterOffset;
} RCONDIS_SPECIFIC_PARAMETERS, *PRCONDIS_SPECIFIC_PARAMETERS;
typedef struct _RCONDIS_MEDIA_PARAMETERS
{
UINT32 Flags;
UINT32 Reserved1;
UINT32 Reserved2;
RCONDIS_SPECIFIC_PARAMETERS MediaSpecific;
} RCONDIS_MEDIA_PARAMETERS, *PRCONDIS_MEDIA_PARAMETERS;
typedef struct _RNDIS_FLOWSPEC
{
UINT32 TokenRate;
UINT32 TokenBucketSize;
UINT32 PeakBandwidth;
UINT32 Latency;
UINT32 DelayVariation;
UINT32 ServiceType;
UINT32 MaxSduSize;
UINT32 MinimumPolicedSize;
} RNDIS_FLOWSPEC, *PRNDIS_FLOWSPEC;
typedef struct _RCONDIS_CALL_MANAGER_PARAMETERS
{
RNDIS_FLOWSPEC Transmit;
RNDIS_FLOWSPEC Receive;
RCONDIS_SPECIFIC_PARAMETERS CallMgrSpecific;
} RCONDIS_CALL_MANAGER_PARAMETERS, *PRCONDIS_CALL_MANAGER_PARAMETERS;
//
// CoNdisMiniportActivateVc message
//
typedef struct _RCONDIS_MP_ACTIVATE_VC_REQUEST
{
RNDIS_REQUEST_ID RequestId;
UINT32 Flags;
RNDIS_HANDLE DeviceVcHandle;
UINT32 MediaParamsOffset;
UINT32 MediaParamsLength;
UINT32 CallMgrParamsOffset;
UINT32 CallMgrParamsLength;
} RCONDIS_MP_ACTIVATE_VC_REQUEST, *PRCONDIS_MP_ACTIVATE_VC_REQUEST;
//
// Response to CoNdisMiniportActivateVc
//
typedef struct _RCONDIS_MP_ACTIVATE_VC_COMPLETE
{
RNDIS_REQUEST_ID RequestId;
RNDIS_STATUS Status;
} RCONDIS_MP_ACTIVATE_VC_COMPLETE, *PRCONDIS_MP_ACTIVATE_VC_COMPLETE;
//
// CoNdisMiniportDeactivateVc message
//
typedef struct _RCONDIS_MP_DEACTIVATE_VC_REQUEST
{
RNDIS_REQUEST_ID RequestId;
UINT32 Flags;
RNDIS_HANDLE DeviceVcHandle;
} RCONDIS_MP_DEACTIVATE_VC_REQUEST, *PRCONDIS_MP_DEACTIVATE_VC_REQUEST;
//
// Response to CoNdisMiniportDeactivateVc
//
typedef struct _RCONDIS_MP_DEACTIVATE_VC_COMPLETE
{
RNDIS_REQUEST_ID RequestId;
RNDIS_STATUS Status;
} RCONDIS_MP_DEACTIVATE_VC_COMPLETE, *PRCONDIS_MP_DEACTIVATE_VC_COMPLETE;
//
// union with all of the RNDIS messages
//
typedef union _RNDIS_MESSAGE_CONTAINER
{
RNDIS_PACKET Packet;
RNDIS_INITIALIZE_REQUEST InitializeRequest;
RNDIS_HALT_REQUEST HaltRequest;
RNDIS_QUERY_REQUEST QueryRequest;
RNDIS_SET_REQUEST SetRequest;
RNDIS_RESET_REQUEST ResetRequest;
RNDIS_KEEPALIVE_REQUEST KeepaliveRequest;
RNDIS_INDICATE_STATUS IndicateStatus;
RNDIS_INITIALIZE_COMPLETE InitializeComplete;
RNDIS_QUERY_COMPLETE QueryComplete;
RNDIS_SET_COMPLETE SetComplete;
RNDIS_RESET_COMPLETE ResetComplete;
RNDIS_KEEPALIVE_COMPLETE KeepaliveComplete;
RCONDIS_MP_CREATE_VC CoMiniportCreateVc;
RCONDIS_MP_DELETE_VC CoMiniportDeleteVc;
RCONDIS_INDICATE_STATUS CoIndicateStatus;
RCONDIS_MP_ACTIVATE_VC_REQUEST CoMiniportActivateVc;
RCONDIS_MP_DEACTIVATE_VC_REQUEST CoMiniportDeactivateVc;
RCONDIS_MP_CREATE_VC_COMPLETE CoMiniportCreateVcComplete;
RCONDIS_MP_DELETE_VC_COMPLETE CoMiniportDeleteVcComplete;
RCONDIS_MP_ACTIVATE_VC_COMPLETE CoMiniportActivateVcComplete;
RCONDIS_MP_DEACTIVATE_VC_COMPLETE CoMiniportDeactivateVcComplete;
} RNDIS_MESSAGE_CONTAINER, *PRNDIS_MESSAGE_CONTAINER;
//
// Remote NDIS message format
//
typedef struct _RNDIS_MESSAGE
{
UINT32 NdisMessageType;
//
// Total length of this message, from the beginning
// of the RNDIS_MESSAGE struct, in bytes.
//
UINT32 MessageLength;
// Actual message
RNDIS_MESSAGE_CONTAINER Message;
} RNDIS_MESSAGE, *PRNDIS_MESSAGE;
//
// Handy macros
// get the size of an RNDIS message. Pass in the message type,
// RNDIS_SET_REQUEST, RNDIS_PACKET for example
#define RNDIS_MESSAGE_SIZE(Message) \
(sizeof(Message) + (sizeof(RNDIS_MESSAGE) - sizeof(RNDIS_MESSAGE_CONTAINER)))
// get pointer to info buffer with message pointer
#define MESSAGE_TO_INFO_BUFFER(Message) \
(((PUCHAR)(Message)) + Message->InformationBufferOffset)
// get pointer to status buffer with message pointer
#define MESSAGE_TO_STATUS_BUFFER(Message) \
(((PUCHAR)(Message)) + Message->StatusBufferOffset)
// get pointer to OOBD buffer with message pointer
#define MESSAGE_TO_OOBD_BUFFER(Message) \
(((PUCHAR)(Message)) + Message->OOBDataOffset)
// get pointer to data buffer with message pointer
#define MESSAGE_TO_DATA_BUFFER(Message) \
(((PUCHAR)(Message)) + Message->PerPacketInfoOffset)
// get pointer to contained message from NDIS_MESSAGE pointer
#define RNDIS_MESSAGE_PTR_TO_MESSAGE_PTR(RndisMessage) \
((PVOID) &RndisMessage->Message)
#endif // _RNDIS_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -