tdikrnl.h
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C头文件 代码 · 共 1,163 行 · 第 1/3 页
H
1,163 行
/*
* tdikrnl.h
*
* TDI kernel 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 __TDIKRNL_H
#define __TDIKRNL_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#include "ntddk.h"
#include "tdi.h"
#if defined(_TDI_)
#define TDIKRNLAPI DECLSPEC_EXPORT
#else
#define TDIKRNLAPI DECLSPEC_IMPORT
#endif
typedef struct _TDI_REQUEST_KERNEL {
ULONG RequestFlags;
PTDI_CONNECTION_INFORMATION RequestConnectionInformation;
PTDI_CONNECTION_INFORMATION ReturnConnectionInformation;
PVOID RequestSpecific;
} TDI_REQUEST_KERNEL, *PTDI_REQUEST_KERNEL;
/* Request codes */
#define TDI_ASSOCIATE_ADDRESS 0x01
#define TDI_DISASSOCIATE_ADDRESS 0x02
#define TDI_CONNECT 0x03
#define TDI_LISTEN 0x04
#define TDI_ACCEPT 0x05
#define TDI_DISCONNECT 0x06
#define TDI_SEND 0x07
#define TDI_RECEIVE 0x08
#define TDI_SEND_DATAGRAM 0x09
#define TDI_RECEIVE_DATAGRAM 0x0A
#define TDI_SET_EVENT_HANDLER 0x0B
#define TDI_QUERY_INFORMATION 0x0C
#define TDI_SET_INFORMATION 0x0D
#define TDI_ACTION 0x0E
#define TDI_DIRECT_SEND 0x27
#define TDI_DIRECT_SEND_DATAGRAM 0x29
#define TDI_TRANSPORT_ADDRESS_FILE 1
#define TDI_CONNECTION_FILE 2
#define TDI_CONTROL_CHANNEL_FILE 3
/* Internal TDI IOCTLS */
#define IOCTL_TDI_QUERY_DIRECT_SEND_HANDLER _TDI_CONTROL_CODE(0x80, METHOD_NEITHER)
#define IOCTL_TDI_QUERY_DIRECT_SENDDG_HANDLER _TDI_CONTROL_CODE(0x81, METHOD_NEITHER)
/* TdiAssociateAddress */
typedef struct _TDI_REQUEST_KERNEL_ASSOCIATE {
HANDLE AddressHandle;
} TDI_REQUEST_KERNEL_ASSOCIATE, *PTDI_REQUEST_KERNEL_ASSOCIATE;
/* TdiDisassociateAddress */
typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_DISASSOCIATE,
*PTDI_REQUEST_KERNEL_DISASSOCIATE;
/* TdiAccept */
typedef struct _TDI_REQUEST_KERNEL_ACCEPT {
PTDI_CONNECTION_INFORMATION RequestConnectionInformation;
PTDI_CONNECTION_INFORMATION ReturnConnectionInformation;
} TDI_REQUEST_KERNEL_ACCEPT, *PTDI_REQUEST_KERNEL_ACCEPT;
/* TdiConnect */
typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_CONNECT,
*PTDI_REQUEST_KERNEL_CONNECT;
/* TdiDisconnect */
typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_DISCONNECT,
*PTDI_REQUEST_KERNEL_DISCONNECT;
/* TdiListen */
typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_LISTEN,
*PTDI_REQUEST_KERNEL_LISTEN;
/* TdiReceive */
typedef struct _TDI_REQUEST_KERNEL_RECEIVE {
ULONG ReceiveLength;
ULONG ReceiveFlags;
} TDI_REQUEST_KERNEL_RECEIVE, *PTDI_REQUEST_KERNEL_RECEIVE;
/* TdiReceiveDatagram */
typedef struct _TDI_REQUEST_KERNEL_RECEIVEDG {
ULONG ReceiveLength;
PTDI_CONNECTION_INFORMATION ReceiveDatagramInformation;
PTDI_CONNECTION_INFORMATION ReturnDatagramInformation;
ULONG ReceiveFlags;
} TDI_REQUEST_KERNEL_RECEIVEDG, *PTDI_REQUEST_KERNEL_RECEIVEDG;
/* TdiSend */
typedef struct _TDI_REQUEST_KERNEL_SEND {
ULONG SendLength;
ULONG SendFlags;
} TDI_REQUEST_KERNEL_SEND, *PTDI_REQUEST_KERNEL_SEND;
/* TdiSendDatagram */
typedef struct _TDI_REQUEST_KERNEL_SENDDG {
ULONG SendLength;
PTDI_CONNECTION_INFORMATION SendDatagramInformation;
} TDI_REQUEST_KERNEL_SENDDG, *PTDI_REQUEST_KERNEL_SENDDG;
/* TdiSetEventHandler */
typedef struct _TDI_REQUEST_KERNEL_SET_EVENT {
LONG EventType;
PVOID EventHandler;
PVOID EventContext;
} TDI_REQUEST_KERNEL_SET_EVENT, *PTDI_REQUEST_KERNEL_SET_EVENT;
/* TdiQueryInformation */
typedef struct _TDI_REQUEST_KERNEL_QUERY_INFO {
LONG QueryType;
PTDI_CONNECTION_INFORMATION RequestConnectionInformation;
} TDI_REQUEST_KERNEL_QUERY_INFORMATION, *PTDI_REQUEST_KERNEL_QUERY_INFORMATION;
/* TdiSetInformation */
typedef struct _TDI_REQUEST_KERNEL_SET_INFO {
LONG SetType;
PTDI_CONNECTION_INFORMATION RequestConnectionInformation;
} TDI_REQUEST_KERNEL_SET_INFORMATION, *PTDI_REQUEST_KERNEL_SET_INFORMATION;
/* Event types */
#define TDI_EVENT_CONNECT 0
#define TDI_EVENT_DISCONNECT 1
#define TDI_EVENT_ERROR 2
#define TDI_EVENT_RECEIVE 3
#define TDI_EVENT_RECEIVE_DATAGRAM 4
#define TDI_EVENT_RECEIVE_EXPEDITED 5
#define TDI_EVENT_SEND_POSSIBLE 6
#define TDI_EVENT_CHAINED_RECEIVE 7
#define TDI_EVENT_CHAINED_RECEIVE_DATAGRAM 8
#define TDI_EVENT_CHAINED_RECEIVE_EXPEDITED 9
#define TDI_EVENT_ERROR_EX 10
typedef NTSTATUS DDKAPI
(*PTDI_IND_CONNECT)(
/*IN*/ PVOID TdiEventContext,
/*IN*/ LONG RemoteAddressLength,
/*IN*/ PVOID RemoteAddress,
/*IN*/ LONG UserDataLength,
/*IN*/ PVOID UserData,
/*IN*/ LONG OptionsLength,
/*IN*/ PVOID Options,
/*OUT*/ CONNECTION_CONTEXT *ConnectionContext,
/*OUT*/ PIRP *AcceptIrp);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiDefaultConnectHandler(
/*IN*/ PVOID TdiEventContext,
/*IN*/ LONG RemoteAddressLength,
/*IN*/ PVOID RemoteAddress,
/*IN*/ LONG UserDataLength,
/*IN*/ PVOID UserData,
/*IN*/ LONG OptionsLength,
/*IN*/ PVOID Options,
/*OUT*/ CONNECTION_CONTEXT *ConnectionContext,
/*OUT*/ PIRP *AcceptIrp);
typedef NTSTATUS DDKAPI
(*PTDI_IND_DISCONNECT)(
/*IN*/ PVOID TdiEventContext,
/*IN*/ CONNECTION_CONTEXT ConnectionContext,
/*IN*/ LONG DisconnectDataLength,
/*IN*/ PVOID DisconnectData,
/*IN*/ LONG DisconnectInformationLength,
/*IN*/ PVOID DisconnectInformation,
/*IN*/ ULONG DisconnectFlags);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiDefaultDisconnectHandler(
/*IN*/ PVOID TdiEventContext,
/*IN*/ CONNECTION_CONTEXT ConnectionContext,
/*IN*/ LONG DisconnectDataLength,
/*IN*/ PVOID DisconnectData,
/*IN*/ LONG DisconnectInformationLength,
/*IN*/ PVOID DisconnectInformation,
/*IN*/ ULONG DisconnectFlags);
typedef NTSTATUS DDKAPI
(*PTDI_IND_ERROR)(
/*IN*/ PVOID TdiEventContext,
/*IN*/ NTSTATUS Status);
typedef NTSTATUS DDKAPI
(*PTDI_IND_ERROR_EX)(
/*IN*/ PVOID TdiEventContext,
/*IN*/ NTSTATUS Status,
/*IN*/ PVOID Buffer);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiDefaultErrorHandler(
/*IN*/ PVOID TdiEventContext,
/*IN*/ NTSTATUS Status);
typedef NTSTATUS DDKAPI
(*PTDI_IND_RECEIVE)(
/*IN*/ PVOID TdiEventContext,
/*IN*/ CONNECTION_CONTEXT ConnectionContext,
/*IN*/ ULONG ReceiveFlags,
/*IN*/ ULONG BytesIndicated,
/*IN*/ ULONG BytesAvailable,
/*OUT*/ ULONG *BytesTaken,
/*IN*/ PVOID Tsdu,
/*OUT*/ PIRP *IoRequestPacket);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiDefaultReceiveHandler(
/*IN*/ PVOID TdiEventContext,
/*IN*/ CONNECTION_CONTEXT ConnectionContext,
/*IN*/ ULONG ReceiveFlags,
/*IN*/ ULONG BytesIndicated,
/*IN*/ ULONG BytesAvailable,
/*OUT*/ ULONG *BytesTaken,
/*IN*/ PVOID Tsdu,
/*OUT*/ PIRP *IoRequestPacket);
typedef NTSTATUS DDKAPI
(*PTDI_IND_RECEIVE_DATAGRAM)(
/*IN*/ PVOID TdiEventContext,
/*IN*/ LONG SourceAddressLength,
/*IN*/ PVOID SourceAddress,
/*IN*/ LONG OptionsLength,
/*IN*/ PVOID Options,
/*IN*/ ULONG ReceiveDatagramFlags,
/*IN*/ ULONG BytesIndicated,
/*IN*/ ULONG BytesAvailable,
/*OUT*/ ULONG *BytesTaken,
/*IN*/ PVOID Tsdu,
/*OUT*/ PIRP *IoRequestPacket);
TDIKRNLAPI
NTSTATUS DDKAPI
TdiDefaultRcvDatagramHandler(
/*IN*/ PVOID TdiEventContext,
/*IN*/ LONG SourceAddressLength,
/*IN*/ PVOID SourceAddress,
/*IN*/ LONG OptionsLength,
/*IN*/ PVOID Options,
/*IN*/ ULONG ReceiveDatagramFlags,
/*IN*/ ULONG BytesIndicated,
/*IN*/ ULONG BytesAvailable,
/*OUT*/ ULONG *BytesTaken,
/*IN*/ PVOID Tsdu,
/*OUT*/ PIRP *IoRequestPacket);
typedef NTSTATUS DDKAPI
(*PTDI_IND_RECEIVE_EXPEDITED)(
/*IN*/ PVOID TdiEventContext,
/*IN*/ CONNECTION_CONTEXT ConnectionContext,
/*IN*/ ULONG ReceiveFlags,
/*IN*/ ULONG BytesIndicated,
/*IN*/ ULONG BytesAvailable,
/*OUT*/ ULONG *BytesTaken,
/*IN*/ PVOID Tsdu,
/*OUT*/ PIRP *IoRequestPacket);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiDefaultRcvExpeditedHandler(
/*IN*/ PVOID TdiEventContext,
/*IN*/ CONNECTION_CONTEXT ConnectionContext,
/*IN*/ ULONG ReceiveFlags,
/*IN*/ ULONG BytesIndicated,
/*IN*/ ULONG BytesAvailable,
/*OUT*/ ULONG *BytesTaken,
/*IN*/ PVOID Tsdu,
/*OUT*/ PIRP *IoRequestPacket);
typedef NTSTATUS DDKAPI
(*PTDI_IND_CHAINED_RECEIVE)(
/*IN*/ PVOID TdiEventContext,
/*IN*/ CONNECTION_CONTEXT ConnectionContext,
/*IN*/ ULONG ReceiveFlags,
/*IN*/ ULONG ReceiveLength,
/*IN*/ ULONG StartingOffset,
/*IN*/ PMDL Tsdu,
/*IN*/ PVOID TsduDescriptor);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiDefaultChainedReceiveHandler(
/*IN*/ PVOID TdiEventContext,
/*IN*/ CONNECTION_CONTEXT ConnectionContext,
/*IN*/ ULONG ReceiveFlags,
/*IN*/ ULONG ReceiveLength,
/*IN*/ ULONG StartingOffset,
/*IN*/ PMDL Tsdu,
/*IN*/ PVOID TsduDescriptor);
typedef NTSTATUS DDKAPI
(*PTDI_IND_CHAINED_RECEIVE_DATAGRAM)(
/*IN*/ PVOID TdiEventContext,
/*IN*/ LONG SourceAddressLength,
/*IN*/ PVOID SourceAddress,
/*IN*/ LONG OptionsLength,
/*IN*/ PVOID Options,
/*IN*/ ULONG ReceiveDatagramFlags,
/*IN*/ ULONG ReceiveDatagramLength,
/*IN*/ ULONG StartingOffset,
/*IN*/ PMDL Tsdu,
/*IN*/ PVOID TsduDescriptor);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiDefaultChainedRcvDatagramHandler(
/*IN*/ PVOID TdiEventContext,
/*IN*/ LONG SourceAddressLength,
/*IN*/ PVOID SourceAddress,
/*IN*/ LONG OptionsLength,
/*IN*/ PVOID Options,
/*IN*/ ULONG ReceiveDatagramFlags,
/*IN*/ ULONG ReceiveDatagramLength,
/*IN*/ ULONG StartingOffset,
/*IN*/ PMDL Tsdu,
/*IN*/ PVOID TsduDescriptor);
typedef NTSTATUS DDKAPI
(*PTDI_IND_CHAINED_RECEIVE_EXPEDITED)(
/*IN*/ PVOID TdiEventContext,
/*IN*/ CONNECTION_CONTEXT ConnectionContext,
/*IN*/ ULONG ReceiveFlags,
/*IN*/ ULONG ReceiveLength,
/*IN*/ ULONG StartingOffset,
/*IN*/ PMDL Tsdu,
/*IN*/ PVOID TsduDescriptor);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiDefaultChainedRcvExpeditedHandler(
/*IN*/ PVOID TdiEventContext,
/*IN*/ CONNECTION_CONTEXT ConnectionContext,
/*IN*/ ULONG ReceiveFlags,
/*IN*/ ULONG ReceiveLength,
/*IN*/ ULONG StartingOffset,
/*IN*/ PMDL Tsdu,
/*IN*/ PVOID TsduDescriptor);
typedef NTSTATUS DDKAPI
(*PTDI_IND_SEND_POSSIBLE)(
/*IN*/ PVOID TdiEventContext,
/*IN*/ PVOID ConnectionContext,
/*IN*/ ULONG BytesAvailable);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiDefaultSendPossibleHandler(
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?