windows-nt/Source/XPSP1/NT/public/sdk/inc/tdiinfo.h

147 lines
3.8 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
tdiinfo.h
Abstract:
This file contains definitions for the extended TDI query and set info.
calls.
Revision History:
--*/
#ifndef TDI_INFO_INCLUDED
#define TDI_INFO_INCLUDED
#ifndef CTE_TYPEDEFS_DEFINED
#define CTE_TYPEDEFS_DEFINED
typedef unsigned long ulong;
typedef unsigned short ushort;
typedef unsigned char uchar;
typedef unsigned int uint;
#endif // CTE_TYPEDEFS_DEFINED
//* Structure of an entity ID.
typedef struct TDIEntityID {
ulong tei_entity;
ulong tei_instance;
} TDIEntityID;
//* Structure of an object ID.
typedef struct TDIObjectID {
TDIEntityID toi_entity;
ulong toi_class;
ulong toi_type;
ulong toi_id;
} TDIObjectID;
#define MAX_TDI_ENTITIES 4096
#define INFO_CLASS_GENERIC 0x100
#define INFO_CLASS_PROTOCOL 0x200
#define INFO_CLASS_IMPLEMENTATION 0x300
#define INFO_TYPE_PROVIDER 0x100
#define INFO_TYPE_ADDRESS_OBJECT 0x200
#define INFO_TYPE_CONNECTION 0x300
#define ENTITY_LIST_ID 0
#define GENERIC_ENTITY 0
#define CO_TL_ENTITY 0x400
#define CL_TL_ENTITY 0x401
#define ER_ENTITY 0x380
#define CO_NL_ENTITY 0x300
#define CL_NL_ENTITY 0x301
#define AT_ENTITY 0x280
#define IF_ENTITY 0x200
#define INVALID_ENTITY_INSTANCE -1
#define CONTEXT_SIZE 16
//* The following are IDs supported by all entities. They are of class
// GENERIC and type PROVIDER.
#define ENTITY_TYPE_ID 1 // The ID to get the entity
// type. The return from this
// type is an unsigned integer
// (see below).
// Valid values to get back from entity type ID query.
#define CO_TL_NBF 0x400 // Entity implements NBF prot.
#define CO_TL_SPX 0x402 // Entity implements SPX prot.
#define CO_TL_TCP 0x404 // Entity implements TCP prot.
#define CO_TL_SPP 0x406 // Entity implements SPP prot.
#define CL_TL_NBF 0x401 // CL NBF protocol.
#define CL_TL_UDP 0x403 // Entity implements UDP.
#define ER_ICMP 0x380 // The ICMP protocol.
#define CL_NL_IPX 0x301 // Entity implements IPX.
#define CL_NL_IP 0x303 // Entity implements IP.
#define AT_ARP 0x280 // Entity implements ARP.
#define AT_NULL 0x282 // Entity does no address
// translation.
#define IF_GENERIC 0x200 // Generic interface.
#define IF_MIB 0x202 // Supports MIB-2 interface.
/*NOINC*/
//
// NT DeviceIoControl definitions for TdiExtendedInformationEx functions.
//
//
// QueryInformationEx IOCTL. The return buffer is passed as the OutputBuffer
// in the DeviceIoControl request. This structure is passed as the
// InputBuffer.
//
typedef struct tcp_request_query_information_ex {
TDIObjectID ID; // object ID to query.
ULONG_PTR Context[CONTEXT_SIZE/sizeof(ULONG_PTR)]; // multi-request
// context. Zeroed for the first request.
} TCP_REQUEST_QUERY_INFORMATION_EX, *PTCP_REQUEST_QUERY_INFORMATION_EX;
#if defined(_WIN64)
typedef struct tcp_request_query_information_ex32 {
TDIObjectID ID;
ULONG32 Context[CONTEXT_SIZE/sizeof(ULONG32)];
} TCP_REQUEST_QUERY_INFORMATION_EX32, *PTCP_REQUEST_QUERY_INFORMATION_EX32;
#endif // _WIN64
//
// SetInformationEx IOCTL request structure. This structure is passed as the
// InputBuffer. The space allocated for the structure must be large enough
// to contain the structure and the set data buffer, which begins at the
// Buffer field. The OutputBuffer parameter in the DeviceIoControl is not used.
//
typedef struct tcp_request_set_information_ex {
TDIObjectID ID; // object ID to set.
unsigned int BufferSize; // size of the set data buffer in bytes
unsigned char Buffer[1]; // beginning of the set data buffer
} TCP_REQUEST_SET_INFORMATION_EX, *PTCP_REQUEST_SET_INFORMATION_EX;
#endif // TDI_INFO_INCLUDED