📄 tdi.h
字号:
/* * tdi.h * * TDI user mode definitions * * This file is part of the w32api package. * * Contributors: * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> * * THIS SOFTWARE IS NOT COPYRIGHTED * * This source code is offered for use in the public domain. You may * use, modify or distribute it freely. * * This code is distributed in the hope that it will be useful but * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY * DISCLAIMED. This includes but is not limited to warranties of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */#ifndef __TDI_H#define __TDI_H#if __GNUC__ >=3#pragma GCC system_header#endif#ifdef __cplusplusextern "C" {#endif#include "ntddk.h"#include "ntddtdi.h"#include "tdistat.h"#include "netpnp.h"/* Basic types */typedef LONG TDI_STATUS;typedef PVOID CONNECTION_CONTEXT;typedef struct _TDI_CONNECTION_INFORMATION { LONG UserDataLength; PVOID UserData; LONG OptionsLength; PVOID Options; LONG RemoteAddressLength; PVOID RemoteAddress;} TDI_CONNECTION_INFORMATION, *PTDI_CONNECTION_INFORMATION;typedef struct _TDI_REQUEST { union { HANDLE AddressHandle; CONNECTION_CONTEXT ConnectionContext; HANDLE ControlChannel; } Handle; PVOID RequestNotifyObject; PVOID RequestContext; TDI_STATUS TdiStatus;} TDI_REQUEST, *PTDI_REQUEST;typedef struct _TDI_REQUEST_STATUS { TDI_STATUS Status; PVOID RequestContext; ULONG BytesTransferred;} TDI_REQUEST_STATUS, *PTDI_REQUEST_STATUS;typedef struct _TDI_CONNECT_REQUEST { TDI_REQUEST Request; PTDI_CONNECTION_INFORMATION RequestConnectionInformation; PTDI_CONNECTION_INFORMATION ReturnConnectionInformation; LARGE_INTEGER Timeout;} TDI_REQUEST_CONNECT, *PTDI_REQUEST_CONNECT;typedef struct _TDI_REQUEST_ACCEPT { TDI_REQUEST Request; PTDI_CONNECTION_INFORMATION RequestConnectionInformation; PTDI_CONNECTION_INFORMATION ReturnConnectionInformation;} TDI_REQUEST_ACCEPT, *PTDI_REQUEST_ACCEPT;typedef struct _TDI_REQUEST_LISTEN { TDI_REQUEST Request; PTDI_CONNECTION_INFORMATION RequestConnectionInformation; PTDI_CONNECTION_INFORMATION ReturnConnectionInformation; USHORT ListenFlags;} TDI_REQUEST_LISTEN, *PTDI_REQUEST_LISTEN;typedef struct _TDI_DISCONNECT_REQUEST { TDI_REQUEST Request; LARGE_INTEGER Timeout;} TDI_REQUEST_DISCONNECT, *PTDI_REQUEST_DISCONNECT;typedef struct _TDI_REQUEST_SEND { TDI_REQUEST Request; USHORT SendFlags;} TDI_REQUEST_SEND, *PTDI_REQUEST_SEND;typedef struct _TDI_REQUEST_RECEIVE { TDI_REQUEST Request; USHORT ReceiveFlags;} TDI_REQUEST_RECEIVE, *PTDI_REQUEST_RECEIVE;typedef struct _TDI_REQUEST_SEND_DATAGRAM { TDI_REQUEST Request; PTDI_CONNECTION_INFORMATION SendDatagramInformation;} TDI_REQUEST_SEND_DATAGRAM, *PTDI_REQUEST_SEND_DATAGRAM;typedef struct _TDI_REQUEST_RECEIVE_DATAGRAM { TDI_REQUEST Request; PTDI_CONNECTION_INFORMATION ReceiveDatagramInformation; PTDI_CONNECTION_INFORMATION ReturnInformation; USHORT ReceiveFlags;} TDI_REQUEST_RECEIVE_DATAGRAM, *PTDI_REQUEST_RECEIVE_DATAGRAM;typedef struct _TDI_REQUEST_SET_EVENT { TDI_REQUEST Request; LONG EventType; PVOID EventHandler; PVOID EventContext;} TDI_REQUEST_SET_EVENT_HANDLER, *PTDI_REQUEST_SET_EVENT_HANDLER;#define TDI_RECEIVE_BROADCAST 0x00000004#define TDI_RECEIVE_MULTICAST 0x00000008#define TDI_RECEIVE_PARTIAL 0x00000010#define TDI_RECEIVE_NORMAL 0x00000020#define TDI_RECEIVE_EXPEDITED 0x00000040#define TDI_RECEIVE_PEEK 0x00000080#define TDI_RECEIVE_NO_RESPONSE_EXP 0x00000100#define TDI_RECEIVE_COPY_LOOKAHEAD 0x00000200#define TDI_RECEIVE_ENTIRE_MESSAGE 0x00000400#define TDI_RECEIVE_AT_DISPATCH_LEVEL 0x00000800#define TDI_RECEIVE_CONTROL_INFO 0x00001000/* Listen flags */#define TDI_QUERY_ACCEPT 0x00000001/* Options used for both SendOptions and ReceiveIndicators */#define TDI_SEND_EXPEDITED 0x0020#define TDI_SEND_PARTIAL 0x0040#define TDI_SEND_NO_RESPONSE_EXPECTED 0x0080#define TDI_SEND_NON_BLOCKING 0x0100#define TDI_SEND_AND_DISCONNECT 0x0200/* Disconnect Flags */#define TDI_DISCONNECT_WAIT 0x0001#define TDI_DISCONNECT_ABORT 0x0002#define TDI_DISCONNECT_RELEASE 0x0004/* TdiRequest structure for TdiQueryInformation request */typedef struct _TDI_REQUEST_QUERY_INFORMATION { TDI_REQUEST Request; ULONG QueryType; PTDI_CONNECTION_INFORMATION RequestConnectionInformation;} TDI_REQUEST_QUERY_INFORMATION, *PTDI_REQUEST_QUERY_INFORMATION;/* TdiRequest structure for TdiSetInformation request */typedef struct _TDI_REQUEST_SET_INFORMATION { TDI_REQUEST Request; ULONG SetType; PTDI_CONNECTION_INFORMATION RequestConnectionInformation;} TDI_REQUEST_SET_INFORMATION, *PTDI_REQUEST_SET_INFORMATION;typedef TDI_REQUEST_SET_INFORMATION TDI_REQ_SET_INFORMATION, *PTDI_REQ_SET_INFORMATION;typedef union _TDI_REQUEST_TYPE { TDI_REQUEST_ACCEPT TdiAccept; TDI_REQUEST_CONNECT TdiConnect; TDI_REQUEST_DISCONNECT TdiDisconnect; TDI_REQUEST_LISTEN TdiListen; TDI_REQUEST_QUERY_INFORMATION TdiQueryInformation; TDI_REQUEST_RECEIVE TdiReceive; TDI_REQUEST_RECEIVE_DATAGRAM TdiReceiveDatagram; TDI_REQUEST_SEND TdiSend; TDI_REQUEST_SEND_DATAGRAM TdiSendDatagram; TDI_REQUEST_SET_EVENT_HANDLER TdiSetEventHandler; TDI_REQUEST_SET_INFORMATION TdiSetInformation;} TDI_REQUEST_TYPE, *PTDI_REQUEST_TYPE;/* Query information types *//* Generic query info types that must be supported by all transports */#define TDI_QUERY_BROADCAST_ADDRESS 0x00000001#define TDI_QUERY_PROVIDER_INFO 0x00000002#define TDI_QUERY_ADDRESS_INFO 0x00000003#define TDI_QUERY_CONNECTION_INFO 0x00000004#define TDI_QUERY_PROVIDER_STATISTICS 0x00000005#define TDI_QUERY_DATAGRAM_INFO 0x00000006#define TDI_QUERY_DATA_LINK_ADDRESS 0x00000007#define TDI_QUERY_NETWORK_ADDRESS 0x00000008#define TDI_QUERY_MAX_DATAGRAM_INFO 0x00000009/* Netbios specific query information types */#define TDI_QUERY_ADAPTER_STATUS 0x00000100#define TDI_QUERY_SESSION_STATUS 0x00000200#define TDI_QUERY_FIND_NAME 0x00000300/* Structures used for TdiQueryInformation and TdiSetInformation */typedef struct _TDI_ENDPOINT_INFO { ULONG State; ULONG Event; ULONG TransmittedTsdus; ULONG ReceivedTsdus; ULONG TransmissionErrors; ULONG ReceiveErrors; ULONG MinimumLookaheadData; ULONG MaximumLookaheadData; ULONG PriorityLevel; ULONG SecurityLevel; ULONG SecurityCompartment;} TDI_ENDPOINT_INFO, *PTDI_ENDPOINT_INFO;typedef struct _TDI_CONNECTION_INFO { ULONG State; ULONG Event; ULONG TransmittedTsdus; ULONG ReceivedTsdus; ULONG TransmissionErrors; ULONG ReceiveErrors; LARGE_INTEGER Throughput; LARGE_INTEGER Delay; ULONG SendBufferSize; ULONG ReceiveBufferSize; BOOLEAN Unreliable;} TDI_CONNECTION_INFO, *PTDI_CONNECTION_INFO;typedef struct _TDI_DATAGRAM_INFO { ULONG MaximumDatagramBytes; ULONG MaximumDatagramCount;} TDI_DATAGRAM_INFO, *PTDI_DATAGRAM_INFO;typedef struct _TDI_MAX_DATAGRAM_INFO { ULONG MaxDatagramSize;} TDI_MAX_DATAGRAM_INFO, *PTDI_MAX_DATAGRAM_INFO;typedef struct _TDI_PROVIDER_INFO { ULONG Version; ULONG MaxSendSize; ULONG MaxConnectionUserData; ULONG MaxDatagramSize; ULONG ServiceFlags; ULONG MinimumLookaheadData; ULONG MaximumLookaheadData; ULONG NumberOfResources; LARGE_INTEGER StartTime;} TDI_PROVIDER_INFO, *PTDI_PROVIDER_INFO;#define TDI_SERVICE_CONNECTION_MODE 0x00000001#define TDI_SERVICE_ORDERLY_RELEASE 0x00000002#define TDI_SERVICE_CONNECTIONLESS_MODE 0x00000004#define TDI_SERVICE_ERROR_FREE_DELIVERY 0x00000008#define TDI_SERVICE_SECURITY_LEVEL 0x00000010#define TDI_SERVICE_BROADCAST_SUPPORTED 0x00000020#define TDI_SERVICE_MULTICAST_SUPPORTED 0x00000040#define TDI_SERVICE_DELAYED_ACCEPTANCE 0x00000080#define TDI_SERVICE_EXPEDITED_DATA 0x00000100#define TDI_SERVICE_INTERNAL_BUFFERING 0x00000200#define TDI_SERVICE_ROUTE_DIRECTED 0x00000400#define TDI_SERVICE_NO_ZERO_LENGTH 0x00000800#define TDI_SERVICE_POINT_TO_POINT 0x00001000#define TDI_SERVICE_MESSAGE_MODE 0x00002000#define TDI_SERVICE_HALF_DUPLEX 0x00004000#define TDI_SERVICE_DGRAM_CONNECTION 0x00008000#define TDI_SERVICE_FORCE_ACCESS_CHECK 0x00010000#define TDI_SERVICE_SEND_AND_DISCONNECT 0x00020000#define TDI_SERVICE_DIRECT_ACCEPT 0x00040000#define TDI_SERVICE_ACCEPT_LOCAL_ADDR 0x00080000typedef struct _TDI_PROVIDER_RESOURCE_STATS { ULONG ResourceId; ULONG MaximumResourceUsed; ULONG AverageResourceUsed; ULONG ResourceExhausted;} TDI_PROVIDER_RESOURCE_STATS, *PTDI_PROVIDER_RESOURCE_STATS;typedef struct _TDI_PROVIDER_STATISTICS { ULONG Version; ULONG OpenConnections; ULONG ConnectionsAfterNoRetry; ULONG ConnectionsAfterRetry; ULONG LocalDisconnects; ULONG RemoteDisconnects; ULONG LinkFailures; ULONG AdapterFailures; ULONG SessionTimeouts; ULONG CancelledConnections; ULONG RemoteResourceFailures; ULONG LocalResourceFailures; ULONG NotFoundFailures; ULONG NoListenFailures; ULONG DatagramsSent; LARGE_INTEGER DatagramBytesSent; ULONG DatagramsReceived; LARGE_INTEGER DatagramBytesReceived; ULONG PacketsSent;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -