1 /* 2 * tdiinfo.h 3 * 4 * TDI set and query information interface 5 * 6 * This file is part of the w32api package. 7 * 8 * Contributors: 9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> 10 * 11 * THIS SOFTWARE IS NOT COPYRIGHTED 12 * 13 * This source code is offered for use in the public domain. You may 14 * use, modify or distribute it freely. 15 * 16 * This code is distributed in the hope that it will be useful but 17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 18 * DISCLAIMED. This includes but is not limited to warranties of 19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 20 * 21 */ 22 23 #ifndef __TDIINFO_H 24 #define __TDIINFO_H 25 26 #ifdef __cplusplus 27 extern "C" { 28 #endif 29 30 typedef struct _TDIEntityID { 31 ULONG tei_entity; 32 ULONG tei_instance; 33 } TDIEntityID; 34 35 #define MAX_TDI_ENTITIES 4096 36 #define INVALID_ENTITY_INSTANCE -1 37 #define GENERIC_ENTITY 0 38 #define ENTITY_LIST_ID 0 39 #define ENTITY_TYPE_ID 1 40 41 #define AT_ENTITY 0x280 42 #define CL_NL_ENTITY 0x301 43 #define CL_TL_ENTITY 0x401 44 #define CO_NL_ENTITY 0x300 45 #define CO_TL_ENTITY 0x400 46 #define ER_ENTITY 0x380 47 #define IF_ENTITY 0x200 48 49 #define AT_ARP 0x280 50 #define AT_NULL 0x282 51 #define CL_TL_NBF 0x401 52 #define CL_TL_UDP 0x403 53 #define CL_NL_IPX 0x301 54 #define CL_NL_IP 0x303 55 #define CO_TL_NBF 0x400 56 #define CO_TL_SPX 0x402 57 #define CO_TL_TCP 0x404 58 #define CO_TL_SPP 0x406 59 #define ER_ICMP 0x380 60 #define IF_GENERIC 0x200 61 #define IF_MIB 0x202 62 63 /* TDIObjectID.toi_class constants */ 64 #define INFO_CLASS_GENERIC 0x100 65 #define INFO_CLASS_PROTOCOL 0x200 66 #define INFO_CLASS_IMPLEMENTATION 0x300 67 68 /* TDIObjectID.toi_type constants */ 69 #define INFO_TYPE_PROVIDER 0x100 70 #define INFO_TYPE_ADDRESS_OBJECT 0x200 71 #define INFO_TYPE_CONNECTION 0x300 72 73 typedef struct _TDIObjectID { 74 TDIEntityID toi_entity; 75 ULONG toi_class; 76 ULONG toi_type; 77 ULONG toi_id; 78 } TDIObjectID; 79 80 #define CONTEXT_SIZE 16 81 82 typedef struct _TCP_REQUEST_QUERY_INFORMATION_EX { 83 TDIObjectID ID; 84 ULONG_PTR Context[CONTEXT_SIZE / sizeof(ULONG_PTR)]; 85 } TCP_REQUEST_QUERY_INFORMATION_EX, *PTCP_REQUEST_QUERY_INFORMATION_EX; 86 87 #if defined(_WIN64) 88 typedef struct _TCP_REQUEST_QUERY_INFORMATION_EX32 { 89 TDIObjectID ID; 90 ULONG32 Context[CONTEXT_SIZE / sizeof(ULONG32)]; 91 } TCP_REQUEST_QUERY_INFORMATION_EX32, *PTCP_REQUEST_QUERY_INFORMATION_EX32; 92 #endif /* _WIN64 */ 93 94 typedef struct _TCP_REQUEST_SET_INFORMATION_EX { 95 TDIObjectID ID; 96 unsigned int BufferSize; 97 unsigned char Buffer[1]; 98 } TCP_REQUEST_SET_INFORMATION_EX, *PTCP_REQUEST_SET_INFORMATION_EX; 99 100 #ifdef __cplusplus 101 } 102 #endif 103 104 #endif /* __TDIINFO_H */ 105