📄 ntddip.h
字号:
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// This source code is licensed under Microsoft Shared Source License
// Version 1.0 for Windows CE.
// For a copy of the license visit http://go.microsoft.com/fwlink/?LinkId=3223.
//
/*++
Module Name:
ntddip.h
Abstract:
This header file defines constants and types for accessing the NT
IP driver.
Mike Massa (mikemas) 13-Aug-1993
Revision History:
--*/
#pragma once
#ifndef _NTDDIP_
#define _NTDDIP_
#include <ipexport.h>
//
// Device Name - this string is the name of the device. It is the name
// that should be passed to NtOpenFile when accessing the device.
//
#ifdef UNDER_CE
#define IP_DEV_PREFIX TEXT("IPD")
#define IP_DEV_INDEX 0
#define IP_DEVICE_NAME TEXT("IPD0:")
#else
#define DD_IP_DEVICE_NAME L"\\Device\\Ip"
#define DD_IP_SYMBOLIC_DEVICE_NAME L"\\DosDevices\\Ip"
#endif // UNDER_CE
#define IP_ADDRTYPE_TRANSIENT 0x01
//
// Structures used in IOCTLs.
//
typedef struct set_ip_address_request {
USHORT Context; // Context value for the target NTE
IPAddr Address; // IP address to set, or zero to clear
IPMask SubnetMask; // Subnet mask to set
} IP_SET_ADDRESS_REQUEST, *PIP_SET_ADDRESS_REQUEST;
typedef struct set_ip_address_request_ex {
USHORT Context; // Context value for the target NTE
IPAddr Address; // IP address to set, or zero to clear
IPMask SubnetMask; // Subnet mask to set
USHORT Type; // Type of address being added
} IP_SET_ADDRESS_REQUEST_EX, *PIP_SET_ADDRESS_REQUEST_EX;
typedef struct set_dhcp_interface_request {
ULONG Context; // Context value identifying the NTE
// Valid contexts are 16 bit quantities.
} IP_SET_DHCP_INTERFACE_REQUEST, *PIP_SET_DHCP_INTERFACE_REQUEST;
typedef struct add_ip_nte_request {
ULONG InterfaceContext; // Context value for the IP interface
// to which to add the NTE
IPAddr Address; // IP address to set, or zero to clear
IPMask SubnetMask; // Subnet mask to set
UNICODE_STRING InterfaceName; // Interface name when interface context
// is 0xffff
CHAR InterfaceNameBuffer[1]; // Buffer to hold interface name
// from above
} IP_ADD_NTE_REQUEST, *PIP_ADD_NTE_REQUEST;
#if defined(_WIN64)
typedef struct add_ip_nte_request32 {
ULONG InterfaceContext; // Context value for the IP interface
// to which to add the NTE
IPAddr Address; // IP address to set, or zero to clear
IPMask SubnetMask; // Subnet mask to set
UNICODE_STRING32 InterfaceName; // Interface name when interface context
// is 0xffff
CHAR InterfaceNameBuffer[1]; // Buffer to hold interface name
// from above
} IP_ADD_NTE_REQUEST32, *PIP_ADD_NTE_REQUEST32;
#endif // _WIN64
typedef struct _ip_rtchange_notify {
IPAddr Addr;
IPMask Mask;
} IP_RTCHANGE_NOTIFY, *PIP_RTCHANGE_NOTIFY;
typedef struct _ip_addchange_notify {
IPAddr Addr;
IPMask Mask;
PVOID pContext;
USHORT IPContext;
ULONG AddrAdded;
ULONG UniAddr;
UNICODE_STRING ConfigName;
CHAR NameData[1];
} IP_ADDCHANGE_NOTIFY, *PIP_ADDCHANGE_NOTIFY;
typedef struct _ip_ifchange_notify
{
USHORT Context;
UCHAR Pad[2];
ULONG IfAdded;
} IP_IFCHANGE_NOTIFY, *PIP_IFCHANGE_NOTIFY;
typedef struct add_ip_nte_request_old {
USHORT InterfaceContext; // Context value for the IP interface
// to which to add the NTE
IPAddr Address; // IP address to set, or zero to clear
IPMask SubnetMask; // Subnet mask to set
} IP_ADD_NTE_REQUEST_OLD, *PIP_ADD_NTE_REQUEST_OLD;
typedef struct add_ip_nte_response {
USHORT Context; // Context value for the new NTE
ULONG Instance; // Instance ID for the new NTE
} IP_ADD_NTE_RESPONSE, *PIP_ADD_NTE_RESPONSE;
typedef struct delete_ip_nte_request {
USHORT Context; // Context value for the NTE
} IP_DELETE_NTE_REQUEST, *PIP_DELETE_NTE_REQUEST;
typedef struct get_ip_nte_info_request {
USHORT Context; // Context value for the NTE
} IP_GET_NTE_INFO_REQUEST, *PIP_GET_NTE_INFO_REQUEST;
typedef struct get_ip_nte_info_response {
ULONG Instance; // Instance ID for the NTE
IPAddr Address;
IPMask SubnetMask;
ULONG Flags;
} IP_GET_NTE_INFO_RESPONSE, *PIP_GET_NTE_INFO_RESPONSE;
typedef struct _net_pm_wakeup_pattern_desc {
struct _net_pm_wakeup_pattern_desc *Next; // points to the next descriptor
// on the list.
UCHAR *Ptrn; // the wakeup pattern
UCHAR *Mask; // bit mask for matching wakeup pattern,
// 1 -match, 0 - ignore
USHORT PtrnLen; // length of the Pattern. len of mask
// is retrieved via GetWakeupPatternMaskLength
} NET_PM_WAKEUP_PATTERN_DESC, *PNET_PM_WAKEUP_PATTERN_DESC;
typedef struct wakeup_pattern_request {
ULONG InterfaceContext; // Context value
PNET_PM_WAKEUP_PATTERN_DESC PtrnDesc; // higher level protocol pattern
// descriptor
BOOLEAN AddPattern; // TRUE - Add, FALSE - Delete
} IP_WAKEUP_PATTERN_REQUEST, *PIP_WAKEUP_PATTERN_REQUEST;
typedef struct ip_get_ip_event_response {
ULONG SequenceNo; // SequenceNo of the this event
USHORT ContextStart; // Context value for the first NTE of the
// adapter.
USHORT ContextEnd; // Context value for the last NTE of the adapter
IP_STATUS MediaStatus; // Status of the media.
UNICODE_STRING AdapterName;
} IP_GET_IP_EVENT_RESPONSE, *PIP_GET_IP_EVENT_RESPONSE;
typedef struct ip_get_ip_event_request {
ULONG SequenceNo; // SequenceNo of the last event notified.
} IP_GET_IP_EVENT_REQUEST, *PIP_GET_IP_EVENT_REQUEST;
#define IP_PNP_RECONFIG_VERSION 2
typedef struct ip_pnp_reconfig_request {
USHORT version;
USHORT arpConfigOffset; // If 0, this is an IP layer request;
// else this is the offset from the start
// of this structure at which the ARP layer
// reconfig request is located.
BOOLEAN gatewayListUpdate; // is gateway list changed?
BOOLEAN IPEnableRouter; // is ip forwarding on?
UCHAR PerformRouterDiscovery : 4; // is PerformRouterDiscovery on?
BOOLEAN DhcpPerformRouterDiscovery : 4; // has DHCP server specified
// IRDP?
BOOLEAN EnableSecurityFilter; // Enable/disable security filter
BOOLEAN InterfaceMetricUpdate; // re-read interface metric
UCHAR Flags; // mask of valid fields
USHORT NextEntryOffset; // the offset from the start of this
// structure at which the next
// reconfig entry for the IP layer
// (if any) is located.
} IP_PNP_RECONFIG_REQUEST, *PIP_PNP_RECONFIG_REQUEST;
#define IP_IRDP_DISABLED 0
#define IP_IRDP_ENABLED 1
#define IP_IRDP_DISABLED_USE_DHCP 2
#define IP_PNP_FLAG_IP_ENABLE_ROUTER 0x01
#define IP_PNP_FLAG_PERFORM_ROUTER_DISCOVERY 0x02
#define IP_PNP_FLAG_ENABLE_SECURITY_FILTER 0x04
#define IP_PNP_FLAG_GATEWAY_LIST_UPDATE 0x08
#define IP_PNP_FLAG_INTERFACE_METRIC_UPDATE 0x10
#define IP_PNP_FLAG_DHCP_PERFORM_ROUTER_DISCOVERY 0x20
#define IP_PNP_FLAG_INTERFACE_TCP_PARAMETER_UPDATE 0x40
#define IP_PNP_FLAG_ALL 0x6f
typedef struct ip_pnp_reconfig_header {
USHORT NextEntryOffset;
UCHAR EntryType;
} IP_PNP_RECONFIG_HEADER, *PIP_PNP_RECONFIG_HEADER;
//
// Enumerated data type for Query procedure in NetBT
//
enum DnsOption {
WinsOnly =0,
WinsThenDns,
DnsOnly
};
typedef struct netbt_pnp_reconfig_request {
USHORT version; // always 1
enum DnsOption enumDnsOption; // Enable Dns box. 3 states: WinsOnly,
// WinsThenDns, DnsOnly
BOOLEAN fLmhostsEnabled; // EnableLmhosts box is checked.
// Checked: TRUE, unchecked: FALSE
BOOLEAN fLmhostsFileSet; // TRUE <==> user has successfully
// chosen a file & filecopy succeeded
BOOLEAN fScopeIdUpdated; // True if the new value for ScopeId
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -