tdipeg.h
来自「wince下的源代码集合打包」· C头文件 代码 · 共 278 行
H
278 行
/********************************************************************//** Microsoft LAN Manager **//** Copyright (c) 1990-2000 Microsoft Corporation. All rights reserved./********************************************************************//* :ts=4 *///** TDIVXD.H - VXD specific TDI definitions. //// This file contains VXD specific TDI definitions, primarily related// to the TdiDispatch Table.//// Begin code take from WSAHELP.H//// Notification event definitions. A helper DLL returns a mask of the// events for which it wishes to be notified, and the Windows Sockets// DLL calls the helper DLL in WSHNotify for each requested event.//#define WSH_NOTIFY_BIND 0x01#define WSH_NOTIFY_LISTEN 0x02#define WSH_NOTIFY_CONNECT 0x04#define WSH_NOTIFY_ACCEPT 0x08#define WSH_NOTIFY_SHUTDOWN_RECEIVE 0x10#define WSH_NOTIFY_SHUTDOWN_SEND 0x20#define WSH_NOTIFY_SHUTDOWN_ALL 0x40#define WSH_NOTIFY_CLOSE 0x80#define WSH_NOTIFY_CONNECT_ERROR 0x100//// Definitions for various internal socket options. These are used// by the Windows Sockets DLL to communicate information to the helper// DLL via get and set socket information calls.//#define SOL_INTERNAL 0xFFFE#define SO_CONTEXT 1//// Address manipulation routine.//typedef enum _SOCKADDR_ADDRESS_INFO { SockaddrAddressInfoNormal, SockaddrAddressInfoWildcard, SockaddrAddressInfoBroadcast, SockaddrAddressInfoLoopback} SOCKADDR_ADDRESS_INFO, *PSOCKADDR_ADDRESS_INFO;typedef enum _SOCKADDR_ENDPOINT_INFO { SockaddrEndpointInfoNormal, SockaddrEndpointInfoWildcard, SockaddrEndpointInfoReserved} SOCKADDR_ENDPOINT_INFO, *PSOCKADDR_ENDPOINT_INFO;typedef struct _SOCKADDR_INFO { SOCKADDR_ADDRESS_INFO AddressInfo; SOCKADDR_ENDPOINT_INFO EndpointInfo;} SOCKADDR_INFO, *PSOCKADDR_INFO;//// Structure and routine for determining the address family/socket// type/protocol triples supported by an individual Windows Sockets// Helper DLL. The Rows field of WINSOCK_MAPPING determines the// number of entries in the Mapping[] array; the Columns field is// always 3.//typedef struct _WINSOCK_MAPPING { DWORD Rows; DWORD Columns; struct { DWORD AddressFamily; DWORD SocketType; DWORD Protocol; } Mapping[1];} WINSOCK_MAPPING, *PWINSOCK_MAPPING;//// WSRegister takes the (device) name of the helper VxD,// the (device) name of the associated TDI transport, and// a pointer to the helper's WSHTABLE.//// It returns a pointer to a location where the TDIDispatchTable// for the helper's associated transport is stored.//typedef struct TDIDispatchTable *PTDIDispatch;TDI_STATUSWSRegister ( IN PWSTR TransportName, IN PTDIDispatch DispatchTable );//// WSDeregister takes the (device) name of the helper VxD.//INTWSDeregister ( IN PWSTR HelperName );// Typedef of Register Functionstypedef TDI_STATUS (*PWSRegister) (IN PWSTR TransportName, IN PTDIDispatch DispatchTable);typedef void (*PRegisterProc) (IN PWSRegister, IN CRITICAL_SECTION *AfdCS);// This is the format used to register, helper dll's will most// likely have different uses for the parameterstypedef BOOL (*PHelperProc)(DWORD Context, DWORD OpCode, PBYTE pVTable, DWORD cVTable, PBYTE pMTable, DWORD cMTable, PDWORD pUnused);typedef void (*PReadyProc)(void);// End code take from WSAHELP.Hstruct TDIDispatchTable { TDI_STATUS (*TdiOpenAddressEntry)(PTDI_REQUEST, PTRANSPORT_ADDRESS, uint, PVOID); TDI_STATUS (*TdiCloseAddressEntry)(PTDI_REQUEST); TDI_STATUS (*TdiOpenConnectionEntry)(PTDI_REQUEST, PVOID); TDI_STATUS (*TdiCloseConnectionEntry)(PTDI_REQUEST); TDI_STATUS (*TdiAssociateAddressEntry)(PTDI_REQUEST, HANDLE); TDI_STATUS (*TdiDisAssociateAddressEntry)(PTDI_REQUEST); TDI_STATUS (*TdiConnectEntry)(PTDI_REQUEST, PVOID, PTDI_CONNECTION_INFORMATION, PTDI_CONNECTION_INFORMATION); TDI_STATUS (*TdiDisconnectEntry)(PTDI_REQUEST, PVOID, ushort, PTDI_CONNECTION_INFORMATION, PTDI_CONNECTION_INFORMATION); TDI_STATUS (*TdiListenEntry)(PTDI_REQUEST, ushort, PTDI_CONNECTION_INFORMATION, PTDI_CONNECTION_INFORMATION); TDI_STATUS (*TdiAcceptEntry)(PTDI_REQUEST, PTDI_CONNECTION_INFORMATION, PTDI_CONNECTION_INFORMATION); TDI_STATUS (*TdiReceiveEntry)(PTDI_REQUEST, ushort *, uint *, PNDIS_BUFFER); TDI_STATUS (*TdiSendEntry)(PTDI_REQUEST, ushort, uint, PNDIS_BUFFER); TDI_STATUS (*TdiSendDatagramEntry)(PTDI_REQUEST, PTDI_CONNECTION_INFORMATION, uint, uint *, PNDIS_BUFFER); TDI_STATUS (*TdiReceiveDatagramEntry)(PTDI_REQUEST, PTDI_CONNECTION_INFORMATION, PTDI_CONNECTION_INFORMATION, uint, uint *, PNDIS_BUFFER); TDI_STATUS (*TdiSetEventEntry)(PVOID, int, PVOID, PVOID); TDI_STATUS (*TdiQueryInformationEntry)(PTDI_REQUEST, uint, PNDIS_BUFFER, uint *, uint); TDI_STATUS (*TdiSetInformationEntry)(PTDI_REQUEST, uint, PNDIS_BUFFER, uint, uint); TDI_STATUS (*TdiActionEntry)(PTDI_REQUEST, uint, PNDIS_BUFFER, uint); TDI_STATUS (*TdiQueryInformationExEntry)(PTDI_REQUEST, struct TDIObjectID *, PNDIS_BUFFER, uint *, void *); TDI_STATUS (*TdiSetInformationExEntry)(PTDI_REQUEST, struct TDIObjectID *, void *, uint); // Versions of the helper functions // PWSH_GET_SOCKADDR_TYPE GetSockaddrType; TDI_STATUS (*TdiGetSockaddrType)( IN PSOCKADDR Sockaddr, IN DWORD SockaddrLength, OUT PSOCKADDR_INFO SockaddrInfo); // PWSH_GET_WILDCARD_SOCKADDR GetWildcardSockaddr; TDI_STATUS (*TdiGetWildcardSockaddr) ( IN PVOID HelperDllSocketContext, OUT PSOCKADDR Sockaddr, OUT PINT SockaddrLength); // PWSH_GET_SOCKET_INFORMATION GetSocketInformation; TDI_STATUS (*TdiGetSocketInformation) ( IN PVOID HelperDllSocketContext, IN SOCKET SocketHandle, IN HANDLE TdiAddressObjectHandle, IN HANDLE TdiConnectionObjectHandle, IN INT Level, IN INT OptionName, OUT PCHAR OptionValue, OUT PINT OptionLength); // PWSH_GET_WINSOCK_MAPPING GetWinsockMapping; DWORD (*TdiGetWinsockMapping) ( OUT PWINSOCK_MAPPING Mapping, IN DWORD MappingLength); // PWSH_NOTIFY Notify; TDI_STATUS (*TdiNotify) ( IN PVOID HelperDllSocketContext, IN SOCKET SocketHandle, IN HANDLE TdiAddressObjectHandle, IN HANDLE TdiConnectionObjectHandle, IN DWORD NotifyEvent); // PWSH_OPEN_SOCKET OpenSocket; TDI_STATUS (*TdiOpenSocket) ( IN OUT PINT AddressFamily, IN OUT PINT SocketType, IN OUT PINT Protocol, OUT PWSTR TransportDeviceName, OUT PVOID *HelperDllSocketContext, OUT PDWORD NotificationEvents); // PWSH_SET_SOCKET_INFORMATION SetSocketInformation; TDI_STATUS (*TdiSetSocketInformation) ( IN PVOID HelperDllSocketContext, IN SOCKET SocketHandle, IN HANDLE TdiAddressObjectHandle, IN HANDLE TdiConnectionObjectHandle, IN INT Level, IN INT OptionName, IN PCHAR OptionValue, IN INT OptionLength);// PWSH_ENUM_PROTOCOLS EnumProtocols; TDI_STATUS (*TdiEnumProtocols) ( IN LPINT lpiProtocols, IN LPTSTR lpTransportKeyName, IN OUT LPVOID lpProtocolBuffer, IN OUT LPDWORD lpdwBufferLength);};typedef struct TDIDispatchTable TDIDispatchTable;typedef struct EventRcvBuffer { PNDIS_BUFFER erb_buffer; uint erb_size; CTEReqCmpltRtn erb_rtn; // Completion routine. PVOID erb_context; // User context. DWORD erb_access; // this is used to store the Permissions of the thread ushort *erb_flags; // Pointer to user flags. DWORD erb_procprm; // proc permissions for faster rcvs.- this is NEW} EventRcvBuffer;// the erb_access allows the another thread to write to the user space, we use this while doing pending recv'stypedef struct ConnectEventInfo { CTEReqCmpltRtn cei_rtn; // Completion routine. PVOID cei_context;// User context. PTDI_CONNECTION_INFORMATION cei_acceptinfo; // Connection information for // the accept. PTDI_CONNECTION_INFORMATION cei_conninfo; // Connection information to be // returned.} ConnectEventInfo;typedef TDI_STATUS (*PConnectEvent)(PVOID EventContext, uint AddressLength, PTRANSPORT_ADDRESS Address, uint UserDataLength, PVOID UserData, uint OptionsLength, PVOID Options, PVOID *AcceptingID, ConnectEventInfo *EventInfo);typedef TDI_STATUS (*PDisconnectEvent)(PVOID EventContext, PVOID ConnectionContext, uint DisconnectDataLength, PVOID DisconnectData, uint OptionsLength, PVOID Options, ulong Flags);typedef TDI_STATUS (*PErrorEvent)(PVOID EventContext, uint Status);typedef TDI_STATUS (*PRcvEvent)(PVOID EventContext, PVOID ConnectionContext, ulong Flags, uint Indicated, uint Available, uint *Taken, uchar *Data, EventRcvBuffer *Buffer);typedef TDI_STATUS (*PRcvDGEvent)(PVOID EventContext, uint AddressLength, PTRANSPORT_ADDRESS Address, uint OptionsLength, PVOID Options, uint Flags, uint Indicated, uint Available, uint *Taken, uchar *Data, EventRcvBuffer **Buffer);typedef TDI_STATUS (*PRcvExpEvent)(PVOID EventContext, PVOID ConnectionContext, ulong Flags, uint Indicated, uint Available, uint *Taken, uchar *Data, EventRcvBuffer *Buffer);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?