mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
Added networking code from Casper Hornstrup
svn path=/trunk/; revision=1281
This commit is contained in:
parent
2c41cbbe57
commit
792773e953
13 changed files with 7275 additions and 228 deletions
|
@ -1,110 +0,0 @@
|
|||
# $Id: Makefile_rex,v 1.2 2000/03/08 22:37:02 ea Exp $
|
||||
#
|
||||
# TCPIP.SYS build spec
|
||||
#
|
||||
|
||||
TARGETNAME=tcpip
|
||||
|
||||
BASE_CFLAGS = -I../../../include
|
||||
|
||||
OBJECTS_MISC = misc/main.o misc/iface.o misc/$(TARGETNAME).coff
|
||||
|
||||
OBJECTS = $(OBJECTS_MISC)
|
||||
|
||||
all: $(TARGETNAME).sys
|
||||
|
||||
misc/$(TARGETNAME).coff: misc/$(TARGETNAME).rc ../../../include/reactos/resource.h
|
||||
|
||||
ifeq ($(DOSCLI),yes)
|
||||
CLEAN_FILES = \
|
||||
misc\*.o misc\*.coff \
|
||||
$(TARGETNAME).o $(TARGETNAME).a \
|
||||
junk.tmp base.tmp temp.exp \
|
||||
$(TARGETNAME).sys $(TARGETNAME).sym
|
||||
else
|
||||
CLEAN_FILES = \
|
||||
misc/*.o misc/*.coff \
|
||||
$(TARGETNAME).o $(TARGETNAME).a \
|
||||
junk.tmp base.tmp temp.exp \
|
||||
$(TARGETNAME).sys $(TARGETNAME).sym
|
||||
endif
|
||||
|
||||
$(TARGETNAME).sys: $(OBJECTS) misc/$(TARGETNAME).def
|
||||
$(LD) -r $(OBJECTS) -o $(TARGETNAME).o
|
||||
$(DLLTOOL) \
|
||||
--dllname $(TARGETNAME).sys \
|
||||
--def misc/$(TARGETNAME).def \
|
||||
--output-lib $(TARGETNAME).a \
|
||||
--kill-at
|
||||
$(CC) \
|
||||
--subsystem=native \
|
||||
-mdll \
|
||||
--dll \
|
||||
-e _DriverEntry@8 \
|
||||
-o junk.tmp \
|
||||
-Wl,--image-base,0x0 \
|
||||
-Wl,--file-alignment,0x1000 \
|
||||
-Wl,--section-alignment,0x1000 \
|
||||
-Wl,--defsym,_end=end \
|
||||
-Wl,--defsym,_edata=__data_end__ \
|
||||
-Wl,--defsym,_etext=etext \
|
||||
-Wl,--base-file,base.tmp $(TARGETNAME).o \
|
||||
-specs=../../../specs \
|
||||
../../../ntoskrnl/ntoskrnl.a
|
||||
- $(RM) junk.tmp
|
||||
$(DLLTOOL) \
|
||||
--dllname $(TARGETNAME).sys \
|
||||
--base-file base.tmp \
|
||||
--output-exp temp.exp \
|
||||
--def misc/$(TARGETNAME).edf \
|
||||
--kill-at
|
||||
- $(RM) base.tmp
|
||||
$(CC) \
|
||||
--subsystem=native \
|
||||
-mdll \
|
||||
--dll \
|
||||
-e _DllMain@8 \
|
||||
-o $(TARGETNAME).sys \
|
||||
$(TARGETNAME).o \
|
||||
../../../ntoskrnl/ntoskrnl.a \
|
||||
-Wl,--image-base,0x0 \
|
||||
-Wl,--file-alignment,0x1000 \
|
||||
-Wl,--section-alignment,0x1000 \
|
||||
-Wl,--defsym,_end=end \
|
||||
-Wl,--defsym,_edata=__data_end__ \
|
||||
-Wl,--defsym,_etext=etext \
|
||||
-Wl,temp.exp \
|
||||
-specs=../../../specs
|
||||
- $(RM) temp.exp
|
||||
$(NM) --numeric-sort $(TARGETNAME).sys > $(TARGETNAME).sym
|
||||
|
||||
clean: $(CLEAN_FILES:%=%_clean)
|
||||
|
||||
$(CLEAN_FILES:%=%_clean): %_clean:
|
||||
- $(RM) $*
|
||||
|
||||
.PHONY: clean $(CLEAN_FILES:%=%_clean)
|
||||
|
||||
floppy: $(FLOPPY_DIR)/drivers/$(TARGETNAME).sys
|
||||
|
||||
$(FLOPPY_DIR)/drivers/$(TARGETNAME).sys: $(TARGETNAME).sys
|
||||
ifeq ($(DOSCLI),yes)
|
||||
$(CP) $(TARGETNAME).sys $(FLOPPY_DIR)\drivers\$(TARGETNAME).sys
|
||||
else
|
||||
$(CP) $(TARGETNAME).sys $(FLOPPY_DIR)/drivers/$(TARGETNAME).sys
|
||||
endif
|
||||
|
||||
dist: $(DIST_DIR)/drivers/$(TARGETNAME).sys
|
||||
|
||||
$(DIST_DIR)/drivers/$(TARGETNAME).sys: $(TARGETNAME).sys
|
||||
ifeq ($(DOSCLI),yes)
|
||||
$(CP) $(TARGETNAME).sys ..\..\$(DIST_DIR)\drivers\$(TARGETNAME).sys
|
||||
else
|
||||
$(CP) $(TARGETNAME).sys ../../$(DIST_DIR)/drivers/$(TARGETNAME).sys
|
||||
endif
|
||||
|
||||
#WITH_DEBUGGING = yes
|
||||
#WIN32_LEAN_AND_MEAN = yes
|
||||
#WARNINGS_ARE_ERRORS = yes
|
||||
include ../../../rules.mak
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
/* $Id: iface.c,v 1.1 1999/11/20 20:36:46 ea Exp $
|
||||
*
|
||||
* reactos/services/net/tcpip/misc/iface.c
|
||||
*/
|
||||
#include <ntos.h>
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
IPAddInterface (
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2,
|
||||
DWORD Unknown3,
|
||||
DWORD Unknown4
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
IPDelInterface (
|
||||
DWORD Unknown0
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
LookupRoute (
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/* EOF */
|
|
@ -1,16 +0,0 @@
|
|||
/* $Id: main.c,v 1.2 2000/03/08 22:37:02 ea Exp $ */
|
||||
#include <ntos.h>
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
DriverEntry (
|
||||
IN PDRIVER_OBJECT DriverObject,
|
||||
IN PUNICODE_STRING RegistryPath
|
||||
)
|
||||
{
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* EOF */
|
|
@ -1,12 +0,0 @@
|
|||
; $Id: tcpip.def,v 1.1 1999/11/20 20:36:46 ea Exp $
|
||||
;
|
||||
; TCPIP.SYS
|
||||
;
|
||||
LIBRARY tcpip.sys
|
||||
|
||||
EXPORTS
|
||||
IPAddInterface@20
|
||||
IPDelInterface@4
|
||||
LookupRoute@8
|
||||
|
||||
; EOF
|
|
@ -1,12 +0,0 @@
|
|||
; $Id: tcpip.edf,v 1.1 1999/11/20 20:36:46 ea Exp $
|
||||
;
|
||||
; TCPIP.SYS
|
||||
;
|
||||
LIBRARY tcpip.sys
|
||||
|
||||
EXPORTS
|
||||
IPAddInterface=IPAddInterface@20
|
||||
IPDelInterface=IPDelInterface@4
|
||||
LookupRoute=LookupRoute@8
|
||||
|
||||
; EOF
|
|
@ -1,39 +0,0 @@
|
|||
/* $Id: tcpip.rc,v 1.1 1999/11/20 20:36:46 ea Exp $ */
|
||||
#include <defines.h>
|
||||
#include <reactos/resource.h>
|
||||
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION RES_UINT_FV_MAJOR,RES_UINT_FV_MINOR,RES_UINT_FV_REVISION,RES_UINT_FV_BUILD
|
||||
PRODUCTVERSION RES_UINT_PV_MAJOR,RES_UINT_PV_MINOR,RES_UINT_PV_REVISION,RES_UINT_PV_BUILD
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x40004L
|
||||
FILETYPE 0x2L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904b0"
|
||||
BEGIN
|
||||
VALUE "CompanyName", RES_STR_COMPANY_NAME
|
||||
VALUE "FileDescription", "TCP/IP kernel module\0"
|
||||
VALUE "FileVersion", "0.0.0\0"
|
||||
VALUE "InternalName", "tcpip\0"
|
||||
VALUE "LegalCopyright", RES_STR_LEGAL_COPYRIGHT
|
||||
VALUE "OriginalFilename", "tcpip.sys\0"
|
||||
VALUE "ProductName", RES_STR_PRODUCT_NAME
|
||||
VALUE "ProductVersion", RES_STR_PRODUCT_VERSION
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1200
|
||||
END
|
||||
END
|
||||
|
849
reactos/include/net/miniport.h
Normal file
849
reactos/include/net/miniport.h
Normal file
|
@ -0,0 +1,849 @@
|
|||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS NDIS library
|
||||
* FILE: include/net/miniport.h
|
||||
* PURPOSE: Type definitions available only to NDIS miniport drivers
|
||||
*/
|
||||
#ifndef __MINIPORT_H
|
||||
#define __MINIPORT_H
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#include <ntstatus.h>
|
||||
#else /* _MSC_VER */
|
||||
#include <ddk/status.h>
|
||||
#endif /* _MSC_VER */
|
||||
|
||||
/* Base types */
|
||||
|
||||
#define IN
|
||||
#define OUT
|
||||
#define OPTIONAL
|
||||
|
||||
#define ANYSIZE_ARRAY 1
|
||||
|
||||
#define CONST const
|
||||
|
||||
#ifdef _MSC_VER
|
||||
|
||||
#ifdef i386
|
||||
#define STDCALL _stdcall
|
||||
#define CDECL _cdecl
|
||||
#else /* i386 */
|
||||
#define STDCALL
|
||||
#define CDECL
|
||||
#endif /* i386 */
|
||||
|
||||
#else /* _MSC_VER */
|
||||
|
||||
#ifdef i386
|
||||
#define STDCALL __attribute__ ((stdcall))
|
||||
#define CDECL __attribute__ ((cdecl))
|
||||
#else /* i386 */
|
||||
#define STDCALL
|
||||
#define CDECL
|
||||
#endif /* i386 */
|
||||
|
||||
#endif /* _MSC_VER */
|
||||
|
||||
typedef void VOID, *PVOID;
|
||||
typedef char CHAR, *PCHAR;
|
||||
typedef unsigned char UCHAR, *PUCHAR;
|
||||
typedef short SHORT, *PSHORT;
|
||||
typedef unsigned short USHORT, *PUSHORT;
|
||||
typedef long LONG,*PLONG;
|
||||
typedef unsigned long ULONG,*PULONG;
|
||||
typedef double DOUBLE, *PDOUBLE;
|
||||
typedef struct _QUAD {
|
||||
double DoNotUseThisField;
|
||||
} QUAD,*PQUAD;
|
||||
typedef QUAD UQUAD, *PUQUAD;
|
||||
typedef signed int INT, *PINT;
|
||||
typedef unsigned int UINT, *PUINT;
|
||||
typedef double LONGLONG, *PLONGLONG;
|
||||
typedef double ULONGLONG, *PULONGLONG;
|
||||
|
||||
typedef UCHAR BOOLEAN, *PBOOLEAN;
|
||||
typedef ULONG DWORD, *PDWORD;
|
||||
|
||||
/* Cardinal types */
|
||||
typedef CHAR CCHAR, *PCCHAR;
|
||||
typedef SHORT CSHORT, *PCSHORT;
|
||||
typedef ULONG CLONG, *PCLONG;
|
||||
|
||||
/* UNICODE (wide character) types */
|
||||
#ifndef __cplusplus
|
||||
typedef short unsigned int wchar_t;
|
||||
#endif /* __cplusplus */
|
||||
typedef wchar_t WCHAR;
|
||||
typedef WCHAR *PWCHAR;
|
||||
typedef WCHAR *LPWCH, *PWCH;
|
||||
typedef CONST WCHAR *LPCWCH, *PCWCH;
|
||||
typedef WCHAR *NWPSTR;
|
||||
typedef WCHAR *LPWSTR, *PWSTR;
|
||||
typedef CONST WCHAR *LPCWSTR, *PCWSTR;
|
||||
|
||||
/* ANSI (multi-byte character) types */
|
||||
typedef CHAR *LPCH, *PCH;
|
||||
typedef CONST CHAR *LPCCH, *PCCH;
|
||||
typedef CHAR *NPSTR;
|
||||
typedef CHAR *LPSTR, *PSTR;
|
||||
typedef CONST CHAR *LPCSTR, *PCSTR;
|
||||
|
||||
/* Neutral ANSI/UNICODE types */
|
||||
#ifdef UNICODE
|
||||
|
||||
typedef WCHAR TCHAR, *PTCHAR;
|
||||
typedef WCHAR TUCHAR, *PTUCHAR;
|
||||
|
||||
typedef LPWSTR LPTCH, PTCH;
|
||||
typedef LPWSTR PTSTR, LPTSTR;
|
||||
typedef LPCWSTR LPCTSTR;
|
||||
typedef LPWSTR LP;
|
||||
#define _TEXT(string) L##string
|
||||
#define _T(string) L##string
|
||||
|
||||
#else /* UNICODE */
|
||||
|
||||
typedef CHAR TCHAR, *PTCHAR;
|
||||
typedef UCHAR TUCHAR, *PTUCHAR;
|
||||
|
||||
typedef LPSTR LPTCH, PTCH;
|
||||
typedef LPSTR PTSTR, LPTSTR;
|
||||
typedef LPCSTR LPCTSTR;
|
||||
#define _TEXT(string) string
|
||||
#define _T(string) string
|
||||
|
||||
#endif /* UNICODE */
|
||||
|
||||
#define TEXT(string) __TEXT(string)
|
||||
|
||||
|
||||
typedef union _LARGE_INTEGER {
|
||||
struct {
|
||||
ULONG LowPart;
|
||||
LONG HighPart;
|
||||
};
|
||||
struct {
|
||||
ULONG LowPart;
|
||||
LONG HighPart;
|
||||
} u;
|
||||
LONGLONG QuadPart;
|
||||
} LARGE_INTEGER;
|
||||
|
||||
typedef LARGE_INTEGER *PLARGE_INTEGER;
|
||||
|
||||
typedef union _ULARGE_INTEGER {
|
||||
struct {
|
||||
ULONG LowPart;
|
||||
ULONG HighPart;
|
||||
};
|
||||
struct {
|
||||
ULONG LowPart;
|
||||
ULONG HighPart;
|
||||
} u;
|
||||
ULONGLONG QuadPart;
|
||||
} ULARGE_INTEGER;
|
||||
|
||||
typedef ULARGE_INTEGER *PULARGE_INTEGER;
|
||||
|
||||
|
||||
typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;
|
||||
|
||||
|
||||
|
||||
/* NT status type and macros for checking status */
|
||||
typedef LONG NTSTATUS;
|
||||
typedef NTSTATUS *PNTSTATUS;
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#define NT_SUCCESS(Status) ((ULONG)(Status) >= 0)
|
||||
#endif /* _MSC_VER */
|
||||
#define NT_INFORMATION(Status) ((ULONG)(Status) >> 30 == 1)
|
||||
#define NT_WARNING(Status) ((ULONG)(Status) >> 30 == 2)
|
||||
#define NT_ERROR(Status) ((ULONG)(Status) >> 30 == 3)
|
||||
|
||||
#define APPLICATION_ERROR_MASK 0x20000000
|
||||
#define ERROR_SEVERITY_SUCCESS 0x00000000
|
||||
#define ERROR_SEVERITY_INFORMATIONAL 0x40000000
|
||||
#define ERROR_SEVERITY_WARNING 0x80000000
|
||||
#define ERROR_SEVERITY_ERROR 0xC0000000
|
||||
|
||||
|
||||
|
||||
/* Basic constants */
|
||||
|
||||
#define FALSE 0
|
||||
#define TRUE 1
|
||||
|
||||
#define NULL ((PVOID)0)
|
||||
|
||||
|
||||
|
||||
/* Counted strings */
|
||||
|
||||
typedef struct _STRING
|
||||
{
|
||||
USHORT Length;
|
||||
USHORT MaximumLength;
|
||||
PCHAR Buffer;
|
||||
} STRING, *PSTRING;
|
||||
|
||||
typedef STRING ANSI_STRING, *PANSI_STRING;
|
||||
typedef STRING OEM_STRING, *POEM_STRING;
|
||||
|
||||
#define ANSI_NULL ((CHAR)0)
|
||||
|
||||
typedef struct _CSTRING
|
||||
{
|
||||
USHORT Length;
|
||||
USHORT MaximumLength;
|
||||
CONST CHAR *Buffer;
|
||||
} CSTRING, *PCSTRING;
|
||||
|
||||
typedef CSTRING CANSI_STRING, *PCANSI_STRING;
|
||||
|
||||
|
||||
typedef struct _UNICODE_STRING
|
||||
{
|
||||
USHORT Length;
|
||||
USHORT MaximumLength;
|
||||
PWSTR Buffer;
|
||||
} UNICODE_STRING, *PUNICODE_STRING;
|
||||
|
||||
typedef struct _CUNICODE_STRING
|
||||
{
|
||||
USHORT Length;
|
||||
USHORT MaximumLength;
|
||||
CONST PWSTR Buffer;
|
||||
} CUNICODE_STRING, *PCUNICODE_STRING;
|
||||
|
||||
#define UNICODE_NULL ((WCHAR)0)
|
||||
|
||||
|
||||
|
||||
/* Linked lists */
|
||||
|
||||
typedef struct _LIST_ENTRY
|
||||
{
|
||||
struct _LIST_ENTRY *Flink;
|
||||
struct _LIST_ENTRY *Blink;
|
||||
} LIST_ENTRY, *PLIST_ENTRY;
|
||||
|
||||
typedef struct _SINGLE_LIST_ENTRY
|
||||
{
|
||||
struct _SINGLE_LIST_ENTRY *Next;
|
||||
} SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
|
||||
|
||||
|
||||
/*
|
||||
* VOID InitializeListHead(
|
||||
* PLIST_ENTRY ListHead);
|
||||
*/
|
||||
#define InitializeListHead(ListHead) \
|
||||
{ \
|
||||
(ListHead)->Flink = (ListHead); \
|
||||
(ListHead)->Blink = (ListHead); \
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* VOID InsertHeadList(
|
||||
* LIST_ENTRY ListHead,
|
||||
* PLIST_ENTRY Entry);
|
||||
*/
|
||||
#define InsertHeadList(ListHead, ListEntry) \
|
||||
{ \
|
||||
PLIST_ENTRY OldFlink; \
|
||||
OldFlink = (ListHead)->Flink; \
|
||||
(ListEntry)->Flink = OldFlink; \
|
||||
(ListEntry)->Blink = (ListHead); \
|
||||
OldFlink->Blink = (ListEntry); \
|
||||
(ListHead)->Flink = (ListEntry); \
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* VOID InsertTailList(
|
||||
* PLIST_ENTRY ListHead,
|
||||
* PLIST_ENTRY Entry);
|
||||
*/
|
||||
#define InsertTailList(ListHead, ListEntry) \
|
||||
{ \
|
||||
PLIST_ENTRY OldBlink; \
|
||||
OldBlink = (ListHead)->Blink; \
|
||||
(ListEntry)->Flink = (ListHead); \
|
||||
(ListEntry)->Blink = OldBlink; \
|
||||
OldBlink->Flink = (ListEntry); \
|
||||
(ListHead)->Blink = (ListEntry); \
|
||||
}
|
||||
|
||||
/*
|
||||
* BOOLEAN IsListEmpty(
|
||||
* PLIST_ENTRY ListHead);
|
||||
*/
|
||||
#define IsListEmpty(ListHead) \
|
||||
((ListHead)->Flink == (ListHead))
|
||||
|
||||
|
||||
/*
|
||||
* PSINGLE_LIST_ENTRY PopEntryList(
|
||||
* PSINGLE_LIST_ENTRY ListHead);
|
||||
*/
|
||||
#define PopEntryList(ListHead) \
|
||||
(ListHead)->Next; \
|
||||
{ \
|
||||
PSINGLE_LIST_ENTRY FirstEntry; \
|
||||
\
|
||||
FirstEntry = (ListHead)->Next; \
|
||||
if (FirstEntry != NULL) \
|
||||
{ \
|
||||
(ListHead)->Next = FirstEntry->Next; \
|
||||
} \
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* VOID PushEntryList(
|
||||
* PSINGLE_LIST_ENTRY ListHead,
|
||||
* PSINGLE_LIST_ENTRY Entry);
|
||||
*/
|
||||
#define PushEntryList(ListHead, Entry) \
|
||||
(Entry)->Next = (ListHead)->Next; \
|
||||
(ListHead)->Next = (Entry)
|
||||
|
||||
|
||||
/*
|
||||
* VOID RemoveEntryList(
|
||||
* PLIST_ENTRY Entry);
|
||||
*/
|
||||
#define RemoveEntryList(ListEntry) \
|
||||
{ \
|
||||
PLIST_ENTRY OldFlink; \
|
||||
PLIST_ENTRY OldBlink; \
|
||||
OldFlink = (ListEntry)->Flink; \
|
||||
OldBlink = (ListEntry)->Blink; \
|
||||
OldFlink->Blink = OldBlink; \
|
||||
OldBlink->Flink = OldFlink; \
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* PLIST_ENTRY RemoveHeadList(
|
||||
* PLIST_ENTRY ListHead);
|
||||
*/
|
||||
#define RemoveHeadList(ListHead) \
|
||||
(ListHead)->Flink; \
|
||||
{ \
|
||||
RemoveEntryList((ListHead)->Flink) \
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* PLIST_ENTRY RemoveTailList(
|
||||
* PLIST_ENTRY ListHead);
|
||||
*/
|
||||
#define RemoveTailList(ListHead) \
|
||||
(ListHead)->Blink; \
|
||||
{ \
|
||||
RemoveEntryList((ListHead)->Blink) \
|
||||
}
|
||||
|
||||
|
||||
/* Hardware */
|
||||
|
||||
typedef UCHAR KIRQL, *PKIRQL;
|
||||
|
||||
typedef struct _KSPIN_LOCK
|
||||
{
|
||||
ULONG Lock;
|
||||
} KSPIN_LOCK, *PKSPIN_LOCK;
|
||||
|
||||
|
||||
typedef struct _ADAPTER_OBJECT *PADAPTER_OBJECT;
|
||||
typedef struct _DEVICE_OBJECT *PDEVICE_OBJECT;
|
||||
typedef struct _DRIVER_OBJECT *PDRIVER_OBJECT;
|
||||
typedef struct _FILE_OBJECT *PFILE_OBJECT;
|
||||
|
||||
typedef struct _KINTERRUPT *PKINTERRUPT;
|
||||
|
||||
|
||||
/* Memory Descriptor List */
|
||||
typedef struct _MDL {
|
||||
struct _MDL *Next;
|
||||
CSHORT Size;
|
||||
CSHORT MdlFlags;
|
||||
struct _EPROCESS *Process;
|
||||
PVOID MappedSystemVa;
|
||||
PVOID StartVa;
|
||||
ULONG ByteCount;
|
||||
ULONG ByteOffset;
|
||||
} MDL, *PMDL;
|
||||
|
||||
#define MDL_MAPPED_TO_SYSTEM_VA 0x0001
|
||||
#define MDL_PAGES_LOCKED 0x0002
|
||||
#define MDL_SOURCE_IS_NONPAGED_POOL 0x0004
|
||||
#define MDL_ALLOCATED_FIXED_SIZE 0x0008
|
||||
#define MDL_PARTIAL 0x0010
|
||||
#define MDL_PARTIAL_HAS_BEEN_MAPPED 0x0020
|
||||
#define MDL_IO_PAGE_READ 0x0040
|
||||
#define MDL_WRITE_OPERATION 0x0080
|
||||
#define MDL_PARENT_MAPPED_SYSTEM_VA 0x0100
|
||||
#define MDL_LOCK_HELD 0x0200
|
||||
#define MDL_PHYSICAL_VIEW 0x0400
|
||||
#define MDL_IO_SPACE 0x0800
|
||||
#define MDL_NETWORK_HEADER 0x1000
|
||||
#define MDL_MAPPING_CAN_FAIL 0x2000
|
||||
#define MDL_ALLOCATED_MUST_SUCCEED 0x4000
|
||||
|
||||
|
||||
#define MDL_MAPPING_FLAGS (MDL_MAPPED_TO_SYSTEM_VA | \
|
||||
MDL_PAGES_LOCKED | \
|
||||
MDL_SOURCE_IS_NONPAGED_POOL | \
|
||||
MDL_PARTIAL_HAS_BEEN_MAPPED | \
|
||||
MDL_PARENT_MAPPED_SYSTEM_VA | \
|
||||
MDL_LOCK_HELD | \
|
||||
MDL_SYSTEM_VA | \
|
||||
MDL_IO_SPACE )
|
||||
|
||||
|
||||
typedef struct _DISPATCHER_HEADER
|
||||
{
|
||||
UCHAR Type;
|
||||
UCHAR Absolute;
|
||||
UCHAR Size;
|
||||
UCHAR Inserted;
|
||||
LONG SignalState;
|
||||
LIST_ENTRY WaitListHead;
|
||||
} DISPATCHER_HEADER;
|
||||
|
||||
typedef struct _KEVENT
|
||||
{
|
||||
DISPATCHER_HEADER Header;
|
||||
} KEVENT, *PKEVENT;
|
||||
|
||||
|
||||
typedef struct _KTIMER
|
||||
{
|
||||
DISPATCHER_HEADER Header;
|
||||
ULARGE_INTEGER DueTime;
|
||||
LIST_ENTRY TimerListEntry;
|
||||
struct _KDPC *Dpc;
|
||||
LONG Period;
|
||||
} KTIMER, *PKTIMER;
|
||||
|
||||
|
||||
typedef enum _KDPC_IMPORTANCE
|
||||
{
|
||||
LowImportance,
|
||||
MediumImportance,
|
||||
HighImportance
|
||||
} KDPC_IMPORTANCE;
|
||||
|
||||
/* Forward declaration */
|
||||
struct _KDPC;
|
||||
|
||||
typedef VOID (*PKDEFERRED_ROUTINE)(
|
||||
IN struct _KDPC *Dpc,
|
||||
IN PVOID DeferredContext,
|
||||
IN PVOID SystemArgument1,
|
||||
IN PVOID SystemArgument2);
|
||||
|
||||
/* Deferred Procedure Call */
|
||||
|
||||
typedef struct _KDPC {
|
||||
CSHORT Type;
|
||||
UCHAR Number;
|
||||
UCHAR Importance;
|
||||
LIST_ENTRY DpcListEntry;
|
||||
PKDEFERRED_ROUTINE DeferredRoutine;
|
||||
PVOID DeferredContext;
|
||||
PVOID SystemArgument1;
|
||||
PVOID SystemArgument2;
|
||||
PULONG Lock;
|
||||
} KDPC, *PKDPC;
|
||||
|
||||
|
||||
typedef enum _INTERFACE_TYPE
|
||||
{
|
||||
InterfaceTypeUndefined = -1,
|
||||
Internal,
|
||||
Isa,
|
||||
Eisa,
|
||||
MicroChannel,
|
||||
TurboChannel,
|
||||
PCIBus,
|
||||
VMEBus,
|
||||
NuBus,
|
||||
PCMCIABus,
|
||||
CBus,
|
||||
MPIBus,
|
||||
MPSABus,
|
||||
ProcessorInternal,
|
||||
InternalPowerBus,
|
||||
PNPISABus,
|
||||
MaximumInterfaceType
|
||||
} INTERFACE_TYPE, *PINTERFACE_TYPE;
|
||||
|
||||
|
||||
typedef enum _DMA_WIDTH
|
||||
{
|
||||
Width8Bits,
|
||||
Width16Bits,
|
||||
Width32Bits,
|
||||
MaximumDmaWidth
|
||||
} DMA_WIDTH, *PDMA_WIDTH;
|
||||
|
||||
typedef enum _DMA_SPEED
|
||||
{
|
||||
Compatible,
|
||||
TypeA,
|
||||
TypeB,
|
||||
TypeC,
|
||||
TypeF,
|
||||
MaximumDmaSpeed
|
||||
} DMA_SPEED, *PDMA_SPEED;
|
||||
|
||||
|
||||
typedef enum _KINTERRUPT_MODE
|
||||
{
|
||||
LevelSensitive,
|
||||
Latched
|
||||
} KINTERRUPT_MODE;
|
||||
|
||||
|
||||
typedef struct _DMA_CONFIGURATION_BYTE0
|
||||
{
|
||||
UCHAR Channel:3;
|
||||
UCHAR Reserved:3;
|
||||
UCHAR Shared:1;
|
||||
UCHAR MoreEntries:1;
|
||||
} DMA_CONFIGURATION_BYTE0;
|
||||
|
||||
typedef struct _DMA_CONFIGURATION_BYTE1
|
||||
{
|
||||
UCHAR Reserved0:2;
|
||||
UCHAR TransferSize:2;
|
||||
UCHAR Timing:2;
|
||||
UCHAR Reserved1:2;
|
||||
} DMA_CONFIGURATION_BYTE1;
|
||||
|
||||
|
||||
typedef struct _CM_MCA_POS_DATA
|
||||
{
|
||||
USHORT AdapterId;
|
||||
UCHAR PosData1;
|
||||
UCHAR PosData2;
|
||||
UCHAR PosData3;
|
||||
UCHAR PosData4;
|
||||
} CM_MCA_POS_DATA, *PCM_MCA_POS_DATA;
|
||||
|
||||
typedef struct _EISA_MEMORY_TYPE
|
||||
{
|
||||
UCHAR ReadWrite:1;
|
||||
UCHAR Cached:1;
|
||||
UCHAR Reserved0:1;
|
||||
UCHAR Type:2;
|
||||
UCHAR Shared:1;
|
||||
UCHAR Reserved1:1;
|
||||
UCHAR MoreEntries:1;
|
||||
} EISA_MEMORY_TYPE, *PEISA_MEMORY_TYPE;
|
||||
|
||||
typedef struct _EISA_MEMORY_CONFIGURATION
|
||||
{
|
||||
EISA_MEMORY_TYPE ConfigurationByte;
|
||||
UCHAR DataSize;
|
||||
USHORT AddressLowWord;
|
||||
UCHAR AddressHighByte;
|
||||
USHORT MemorySize;
|
||||
} EISA_MEMORY_CONFIGURATION, *PEISA_MEMORY_CONFIGURATION;
|
||||
|
||||
|
||||
typedef struct _EISA_IRQ_DESCRIPTOR
|
||||
{
|
||||
UCHAR Interrupt:4;
|
||||
UCHAR Reserved:1;
|
||||
UCHAR LevelTriggered:1;
|
||||
UCHAR Shared:1;
|
||||
UCHAR MoreEntries:1;
|
||||
} EISA_IRQ_DESCRIPTOR, *PEISA_IRQ_DESCRIPTOR;
|
||||
|
||||
typedef struct _EISA_IRQ_CONFIGURATION
|
||||
{
|
||||
EISA_IRQ_DESCRIPTOR ConfigurationByte;
|
||||
UCHAR Reserved;
|
||||
} EISA_IRQ_CONFIGURATION, *PEISA_IRQ_CONFIGURATION;
|
||||
|
||||
typedef struct _EISA_DMA_CONFIGURATION
|
||||
{
|
||||
DMA_CONFIGURATION_BYTE0 ConfigurationByte0;
|
||||
DMA_CONFIGURATION_BYTE1 ConfigurationByte1;
|
||||
} EISA_DMA_CONFIGURATION, *PEISA_DMA_CONFIGURATION;
|
||||
|
||||
|
||||
typedef struct _EISA_PORT_DESCRIPTOR
|
||||
{
|
||||
UCHAR NumberPorts:5;
|
||||
UCHAR Reserved:1;
|
||||
UCHAR Shared:1;
|
||||
UCHAR MoreEntries:1;
|
||||
} EISA_PORT_DESCRIPTOR, *PEISA_PORT_DESCRIPTOR;
|
||||
|
||||
typedef struct _EISA_PORT_CONFIGURATION
|
||||
{
|
||||
EISA_PORT_DESCRIPTOR Configuration;
|
||||
USHORT PortAddress;
|
||||
} EISA_PORT_CONFIGURATION, *PEISA_PORT_CONFIGURATION;
|
||||
|
||||
typedef struct _CM_EISA_SLOT_INFORMATION
|
||||
{
|
||||
UCHAR ReturnCode;
|
||||
UCHAR ReturnFlags;
|
||||
UCHAR MajorRevision;
|
||||
UCHAR MinorRevision;
|
||||
USHORT Checksum;
|
||||
UCHAR NumberFunctions;
|
||||
UCHAR FunctionInformation;
|
||||
ULONG CompressedId;
|
||||
} CM_EISA_SLOT_INFORMATION, *PCM_EISA_SLOT_INFORMATION;
|
||||
|
||||
typedef struct _CM_EISA_FUNCTION_INFORMATION
|
||||
{
|
||||
ULONG CompressedId;
|
||||
UCHAR IdSlotFlags1;
|
||||
UCHAR IdSlotFlags2;
|
||||
UCHAR MinorRevision;
|
||||
UCHAR MajorRevision;
|
||||
UCHAR Selections[26];
|
||||
UCHAR FunctionFlags;
|
||||
UCHAR TypeString[80];
|
||||
EISA_MEMORY_CONFIGURATION EisaMemory[9];
|
||||
EISA_IRQ_CONFIGURATION EisaIrq[7];
|
||||
EISA_DMA_CONFIGURATION EisaDma[4];
|
||||
EISA_PORT_CONFIGURATION EisaPort[20];
|
||||
UCHAR InitializationData[60];
|
||||
} CM_EISA_FUNCTION_INFORMATION, *PCM_EISA_FUNCTION_INFORMATION;
|
||||
|
||||
|
||||
typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR
|
||||
{
|
||||
UCHAR Type;
|
||||
UCHAR ShareDisposition;
|
||||
USHORT Flags;
|
||||
union {
|
||||
struct {
|
||||
PHYSICAL_ADDRESS Start;
|
||||
ULONG Length;
|
||||
} Generic;
|
||||
|
||||
struct {
|
||||
PHYSICAL_ADDRESS Start;
|
||||
ULONG Length;
|
||||
} Port;
|
||||
|
||||
struct {
|
||||
ULONG Level;
|
||||
ULONG Vector;
|
||||
ULONG Affinity;
|
||||
} Interrupt;
|
||||
|
||||
struct {
|
||||
PHYSICAL_ADDRESS Start;
|
||||
ULONG Length;
|
||||
} Memory;
|
||||
|
||||
struct {
|
||||
ULONG Channel;
|
||||
ULONG Port;
|
||||
ULONG Reserved1;
|
||||
} Dma;
|
||||
|
||||
struct {
|
||||
ULONG Data[3];
|
||||
} DevicePrivate;
|
||||
|
||||
struct {
|
||||
ULONG Start;
|
||||
ULONG Length;
|
||||
ULONG Reserved;
|
||||
} BusNumber;
|
||||
|
||||
struct {
|
||||
ULONG DataSize;
|
||||
ULONG Reserved1;
|
||||
ULONG Reserved2;
|
||||
} DeviceSpecificData;
|
||||
} u;
|
||||
} CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;
|
||||
|
||||
typedef struct _CM_PARTIAL_RESOURCE_LIST
|
||||
{
|
||||
USHORT Version;
|
||||
USHORT Revision;
|
||||
ULONG Count;
|
||||
CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1];
|
||||
} CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST;
|
||||
|
||||
typedef struct _CM_FULL_RESOURCE_DESCRIPTOR
|
||||
{
|
||||
INTERFACE_TYPE InterfaceType;
|
||||
ULONG BusNumber;
|
||||
CM_PARTIAL_RESOURCE_LIST PartialResourceList;
|
||||
} CM_FULL_RESOURCE_DESCRIPTOR, *PCM_FULL_RESOURCE_DESCRIPTOR;
|
||||
|
||||
typedef struct _CM_RESOURCE_LIST
|
||||
{
|
||||
ULONG Count;
|
||||
CM_FULL_RESOURCE_DESCRIPTOR List[1];
|
||||
} CM_RESOURCE_LIST, *PCM_RESOURCE_LIST;
|
||||
|
||||
|
||||
|
||||
/* Operating System services */
|
||||
|
||||
/* Debugging */
|
||||
|
||||
ULONG CDECL DbgPrint(
|
||||
PCH Format,
|
||||
...);
|
||||
|
||||
#ifdef DBG
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
RtlAssert(
|
||||
PVOID FailedAssertion,
|
||||
PVOID FileName,
|
||||
ULONG LineNumber,
|
||||
PCHAR Message);
|
||||
|
||||
#define ASSERT(exp) \
|
||||
if (!(exp)) \
|
||||
RtlAssert(#exp, __FILE__, __LINE__, NULL)
|
||||
|
||||
#define ASSERTMSG(msg, exp) \
|
||||
if (!(exp)) \
|
||||
RtlAssert(#exp, __FILE__, __LINE__, msg)
|
||||
|
||||
#else /* DBG */
|
||||
|
||||
#define ASSERT(exp)
|
||||
#define ASSERTMSG(msg, exp)
|
||||
|
||||
#endif /* DBG */
|
||||
|
||||
|
||||
/* Runtime library */
|
||||
|
||||
#define RtlEqualMemory(Destination,Source,Length) (!memcmp((Destination), (Source), (Length)))
|
||||
#define RtlMoveMemory(Destination,Source,Length) memmove((Destination), (Source), (Length))
|
||||
#define RtlCopyMemory(Destination,Source,Length) memcpy((Destination), (Source), (Length))
|
||||
#define RtlFillMemory(Destination,Length,Fill) memset((Destination), (Fill),(Length))
|
||||
#define RtlZeroMemory(Destination,Length) memset((Destination), 0, (Length))
|
||||
|
||||
|
||||
/* Core kernel functions */
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeStallExecutionProcessor(
|
||||
ULONG MicroSeconds);
|
||||
|
||||
|
||||
/* I/O functions */
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
READ_PORT_BUFFER_UCHAR(
|
||||
PUCHAR Port,
|
||||
PUCHAR Value,
|
||||
ULONG Count);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
READ_PORT_BUFFER_ULONG(
|
||||
PULONG Port,
|
||||
PULONG Value,
|
||||
ULONG Count);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
READ_PORT_BUFFER_USHORT(
|
||||
PUSHORT Port,
|
||||
PUSHORT Value,
|
||||
ULONG Count);
|
||||
|
||||
UCHAR
|
||||
STDCALL
|
||||
READ_PORT_UCHAR(
|
||||
PUCHAR Port);
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
READ_PORT_ULONG(
|
||||
PULONG Port);
|
||||
|
||||
USHORT
|
||||
STDCALL
|
||||
READ_PORT_USHORT(
|
||||
PUSHORT Port);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
WRITE_PORT_BUFFER_UCHAR(
|
||||
PUCHAR Port,
|
||||
PUCHAR Value,
|
||||
ULONG Count);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
WRITE_PORT_BUFFER_ULONG(
|
||||
PULONG Port,
|
||||
PULONG Value,
|
||||
ULONG Count);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
WRITE_PORT_BUFFER_USHORT(
|
||||
PUSHORT Port,
|
||||
PUSHORT Value,
|
||||
ULONG Count);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
WRITE_PORT_UCHAR(
|
||||
PUCHAR Port,
|
||||
UCHAR Value);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
WRITE_PORT_ULONG(
|
||||
PULONG Port,
|
||||
ULONG Value);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
WRITE_PORT_USHORT(
|
||||
PUSHORT Port,
|
||||
USHORT Value);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
WRITE_REGISTER_UCHAR(
|
||||
PUCHAR Register,
|
||||
UCHAR Value);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
WRITE_REGISTER_ULONG(
|
||||
PULONG Register,
|
||||
ULONG Value);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
WRITE_REGISTER_USHORT(
|
||||
PUSHORT Register,
|
||||
USHORT Value);
|
||||
|
||||
#endif /* __MINIPORT_H */
|
||||
|
||||
/* EOF */
|
4455
reactos/include/net/ndis.h
Normal file
4455
reactos/include/net/ndis.h
Normal file
File diff suppressed because it is too large
Load diff
410
reactos/include/net/ndisoid.h
Normal file
410
reactos/include/net/ndisoid.h
Normal file
|
@ -0,0 +1,410 @@
|
|||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS NDIS library
|
||||
* FILE: include/net/ndisoid.h
|
||||
* PURPOSE: NDIS Object ID constants
|
||||
*/
|
||||
#ifndef __NDISOID_H
|
||||
#define __NDISOID_H
|
||||
|
||||
|
||||
typedef ULONG NDIS_OID, *PNDIS_OID;
|
||||
|
||||
/* Self-contained variable data structure */
|
||||
typedef struct _NDIS_VAR_DATA_DESC
|
||||
{
|
||||
USHORT Length; /* Number of bytes of data */
|
||||
USHORT MaximumLength; /* Number of bytes available */
|
||||
LONG Offset; /* Offset of data relative to the descriptor */
|
||||
} NDIS_VAR_DATA_DESC, *PNDIS_VAR_DATA_DESC;
|
||||
|
||||
|
||||
|
||||
/* NDIS 4.0 structures */
|
||||
|
||||
/* Structure used by TRANSLATE_NAME IOCTL */
|
||||
typedef struct _NET_PNP_ID
|
||||
{
|
||||
ULONG ClassId;
|
||||
ULONG Token;
|
||||
} NET_PNP_ID, *PNET_PNP_ID;
|
||||
|
||||
|
||||
typedef struct _NET_PNP_TRANSLATE_LIST
|
||||
{
|
||||
ULONG BytesNeeded;
|
||||
NET_PNP_ID IdArray[ANYSIZE_ARRAY];
|
||||
} NET_PNP_TRANSLATE_LIST, *PNET_PNP_TRANSLATE_LIST;
|
||||
|
||||
|
||||
|
||||
/* Generel objects */
|
||||
|
||||
/* General operational characteristics */
|
||||
|
||||
/* Mandatory */
|
||||
#define OID_GEN_SUPPORTED_LIST 0x00010101
|
||||
#define OID_GEN_HARDWARE_STATUS 0x00010102
|
||||
#define OID_GEN_MEDIA_SUPPORTED 0x00010103
|
||||
#define OID_GEN_MEDIA_IN_USE 0x00010104
|
||||
#define OID_GEN_MAXIMUM_LOOKAHEAD 0x00010105
|
||||
#define OID_GEN_MAXIMUM_FRAME_SIZE 0x00010106
|
||||
#define OID_GEN_LINK_SPEED 0x00010107
|
||||
#define OID_GEN_TRANSMIT_BUFFER_SPACE 0x00010108
|
||||
#define OID_GEN_RECEIVE_BUFFER_SPACE 0x00010109
|
||||
#define OID_GEN_TRANSMIT_BLOCK_SIZE 0x0001010A
|
||||
#define OID_GEN_RECEIVE_BLOCK_SIZE 0x0001010B
|
||||
#define OID_GEN_VENDOR_ID 0x0001010C
|
||||
#define OID_GEN_VENDOR_DESCRIPTION 0x0001010D
|
||||
#define OID_GEN_CURRENT_PACKET_FILTER 0x0001010E
|
||||
#define OID_GEN_CURRENT_LOOKAHEAD 0x0001010F
|
||||
#define OID_GEN_DRIVER_VERSION 0x00010110
|
||||
#define OID_GEN_MAXIMUM_TOTAL_SIZE 0x00010111
|
||||
#define OID_GEN_PROTOCOL_OPTIONS 0x00010112
|
||||
#define OID_GEN_MAC_OPTIONS 0x00010113
|
||||
#define OID_GEN_MEDIA_CONNECT_STATUS 0x00010114
|
||||
#define OID_GEN_MAXIMUM_SEND_PACKETS 0x00010115
|
||||
#define OID_GEN_VENDOR_DRIVER_VERSION 0x00010116
|
||||
|
||||
/* Optional */
|
||||
#define OID_GEN_SUPPORTED_GUIDS 0x00010117
|
||||
#define OID_GEN_NETWORK_LAYER_ADDRESSES 0x00010118
|
||||
#define OID_GEN_TRANSPORT_HEADER_OFFSET 0x00010119
|
||||
|
||||
/* General statistics */
|
||||
|
||||
/* Mandatory */
|
||||
#define OID_GEN_XMIT_OK 0x00020101
|
||||
#define OID_GEN_RCV_OK 0x00020102
|
||||
#define OID_GEN_XMIT_ERROR 0x00020103
|
||||
#define OID_GEN_RCV_ERROR 0x00020104
|
||||
#define OID_GEN_RCV_NO_BUFFER 0x00020105
|
||||
|
||||
/* Optional */
|
||||
#define OID_GEN_DIRECTED_BYTES_XMIT 0x00020201
|
||||
#define OID_GEN_DIRECTED_FRAMES_XMIT 0x00020202
|
||||
#define OID_GEN_MULTICAST_BYTES_XMIT 0x00020203
|
||||
#define OID_GEN_MULTICAST_FRAMES_XMIT 0x00020204
|
||||
#define OID_GEN_BROADCAST_BYTES_XMIT 0x00020205
|
||||
#define OID_GEN_BROADCAST_FRAMES_XMIT 0x00020206
|
||||
#define OID_GEN_DIRECTED_BYTES_RCV 0x00020207
|
||||
#define OID_GEN_DIRECTED_FRAMES_RCV 0x00020208
|
||||
#define OID_GEN_MULTICAST_BYTES_RCV 0x00020209
|
||||
#define OID_GEN_MULTICAST_FRAMES_RCV 0x0002020A
|
||||
#define OID_GEN_BROADCAST_BYTES_RCV 0x0002020B
|
||||
#define OID_GEN_BROADCAST_FRAMES_RCV 0x0002020C
|
||||
#define OID_GEN_RCV_CRC_ERROR 0x0002020D
|
||||
#define OID_GEN_TRANSMIT_QUEUE_LENGTH 0x0002020E
|
||||
|
||||
|
||||
/* Ethernet objects */
|
||||
|
||||
/* Ethernet operational characteristics */
|
||||
|
||||
/* Mandatory */
|
||||
#define OID_802_3_PERMANENT_ADDRESS 0x01010101
|
||||
#define OID_802_3_CURRENT_ADDRESS 0x01010102
|
||||
#define OID_802_3_MULTICAST_LIST 0x01010103
|
||||
#define OID_802_3_MAXIMUM_LIST_SIZE 0x01010104
|
||||
|
||||
/* Optional */
|
||||
#define OID_802_3_MAC_OPTIONS 0x01010105
|
||||
|
||||
/* Ethernet statistics */
|
||||
|
||||
/* Mandatory */
|
||||
#define OID_802_3_RCV_ERROR_ALIGNMENT 0x01020101
|
||||
#define OID_802_3_XMIT_ONE_COLLISION 0x01020102
|
||||
#define OID_802_3_XMIT_MORE_COLLISIONS 0x01020103
|
||||
|
||||
/* Optional */
|
||||
#define OID_802_3_XMIT_DEFERRED 0x01020201
|
||||
#define OID_802_3_XMIT_MAX_COLLISIONS 0x01020202
|
||||
#define OID_802_3_RCV_OVERRUN 0x01020203
|
||||
#define OID_802_3_XMIT_UNDERRUN 0x01020204
|
||||
#define OID_802_3_XMIT_HEARTBEAT_FAILURE 0x01020205
|
||||
#define OID_802_3_XMIT_TIMES_CRS_LOST 0x01020206
|
||||
#define OID_802_3_XMIT_LATE_COLLISIONS 0x01020207
|
||||
|
||||
|
||||
/* Token Ring objects */
|
||||
|
||||
/* Token Ring operational characteristics */
|
||||
|
||||
/* Mandatory */
|
||||
#define OID_802_5_PERMANENT_ADDRESS 0x02010101
|
||||
#define OID_802_5_CURRENT_ADDRESS 0x02010102
|
||||
#define OID_802_5_CURRENT_FUNCTIONAL 0x02010103
|
||||
#define OID_802_5_CURRENT_GROUP 0x02010104
|
||||
#define OID_802_5_LAST_OPEN_STATUS 0x02010105
|
||||
#define OID_802_5_CURRENT_RING_STATUS 0x02010106
|
||||
#define OID_802_5_CURRENT_RING_STATE 0x02010107
|
||||
|
||||
/* Token Ring statistics */
|
||||
|
||||
/* Mandatory */
|
||||
#define OID_802_5_LINE_ERRORS 0x02020101
|
||||
#define OID_802_5_LOST_FRAMES 0x02020102
|
||||
#define OID_802_5_BURST_ERRORS 0x02020201
|
||||
#define OID_802_5_AC_ERRORS 0x02020202
|
||||
#define OID_802_5_ABORT_DELIMETERS 0x02020203
|
||||
#define OID_802_5_FRAME_COPIED_ERRORS 0x02020204
|
||||
#define OID_802_5_FREQUENCY_ERRORS 0x02020205
|
||||
#define OID_802_5_TOKEN_ERRORS 0x02020206
|
||||
#define OID_802_5_INTERNAL_ERRORS 0x02020207
|
||||
|
||||
|
||||
/* FDDI objects */
|
||||
|
||||
/* FDDI operational characteristics */
|
||||
|
||||
/* Mandatory */
|
||||
#define OID_FDDI_LONG_PERMANENT_ADDR 0x03010101
|
||||
#define OID_FDDI_LONG_CURRENT_ADDR 0x03010102
|
||||
#define OID_FDDI_LONG_MULTICAST_LIST 0x03010103
|
||||
#define OID_FDDI_LONG_MAX_LIST_SIZE 0x03010104
|
||||
#define OID_FDDI_SHORT_PERMANENT_ADDR 0x03010105
|
||||
#define OID_FDDI_SHORT_CURRENT_ADDR 0x03010106
|
||||
#define OID_FDDI_SHORT_MULTICAST_LIST 0x03010107
|
||||
#define OID_FDDI_SHORT_MAX_LIST_SIZE 0x03010108
|
||||
|
||||
/* FDDI statistics */
|
||||
|
||||
/* Mandatory */
|
||||
#define OID_FDDI_ATTACHMENT_TYPE 0x03020101
|
||||
#define OID_FDDI_UPSTREAM_NODE_LONG 0x03020102
|
||||
#define OID_FDDI_DOWNSTREAM_NODE_LONG 0x03020103
|
||||
#define OID_FDDI_FRAME_ERRORS 0x03020104
|
||||
#define OID_FDDI_FRAMES_LOST 0x03020105
|
||||
#define OID_FDDI_RING_MGT_STATE 0x03020106
|
||||
#define OID_FDDI_LCT_FAILURES 0x03020107
|
||||
#define OID_FDDI_LEM_REJECTS 0x03020108
|
||||
#define OID_FDDI_LCONNECTION_STATE 0x03020109
|
||||
|
||||
|
||||
/* LocalTalk objects */
|
||||
|
||||
/* LocalTalk operational characteristics */
|
||||
|
||||
/* Mandatory */
|
||||
#define OID_LTALK_CURRENT_NODE_ID 0x05010102
|
||||
|
||||
/* LocalTalk statistics */
|
||||
|
||||
/* Mandatory */
|
||||
#define OID_LTALK_IN_BROADCASTS 0x05020101
|
||||
#define OID_LTALK_IN_LENGTH_ERRORS 0x05020102
|
||||
|
||||
/* Optional */
|
||||
#define OID_LTALK_OUT_NO_HANDLERS 0x05020201
|
||||
#define OID_LTALK_COLLISIONS 0x05020202
|
||||
#define OID_LTALK_DEFERS 0x05020203
|
||||
#define OID_LTALK_NO_DATA_ERRORS 0x05020204
|
||||
#define OID_LTALK_RANDOM_CTS_ERRORS 0x05020205
|
||||
#define OID_LTALK_FCS_ERRORS 0x05020206
|
||||
|
||||
|
||||
/* ARCNET objects */
|
||||
|
||||
/* ARCNET operational characteristics */
|
||||
|
||||
/* Mandatory */
|
||||
#define OID_ARCNET_PERMANENT_ADDRESS 0x06010101
|
||||
#define OID_ARCNET_CURRENT_ADDRESS 0x06010102
|
||||
|
||||
/* ARCNET statistics */
|
||||
|
||||
/* Optional */
|
||||
#define OID_ARCNET_RECONFIGURATIONS 0x06020201
|
||||
|
||||
|
||||
/* WAN objects */
|
||||
|
||||
/* Mandatory */
|
||||
#define OID_WAN_PERMANENT_ADDRESS 0x04010101
|
||||
#define OID_WAN_CURRENT_ADDRESS 0x04010102
|
||||
#define OID_WAN_QUALITY_OF_SERVICE 0x04010103
|
||||
#define OID_WAN_PROTOCOL_TYPE 0x04010104
|
||||
#define OID_WAN_MEDIUM_SUBTYPE 0x04010105
|
||||
#define OID_WAN_HEADER_FORMAT 0x04010106
|
||||
#define OID_WAN_GET_INFO 0x04010107
|
||||
#define OID_WAN_SET_LINK_INFO 0x04010108
|
||||
#define OID_WAN_GET_LINK_INFO 0x04010109
|
||||
#define OID_WAN_LINE_COUNT 0x0401010A
|
||||
#define OID_WAN_PROTOCOL_CAPS 0x0401010B
|
||||
#define OID_WAN_GET_BRIDGE_INFO 0x0401020A
|
||||
#define OID_WAN_SET_BRIDGE_INFO 0x0401020B
|
||||
|
||||
/* Optional */
|
||||
#define OID_WAN_GET_COMP_INFO 0x0401020C
|
||||
#define OID_WAN_SET_COMP_INFO 0x0401020D
|
||||
#define OID_WAN_GET_STATS_INFO 0x0401020E
|
||||
|
||||
|
||||
/* TAPI objects */
|
||||
|
||||
/* Madatory */
|
||||
#define OID_TAPI_ANSWER 0x07030102
|
||||
#define OID_TAPI_CLOSE 0x07030103
|
||||
#define OID_TAPI_CLOSE_CALL 0x07030104
|
||||
#define OID_TAPI_CONDITIONAL_MEDIA_DETECTION 0x07030105
|
||||
#define OID_TAPI_DROP 0x07030109
|
||||
#define OID_TAPI_GET_ADDRESS_CAPS 0x0703010A
|
||||
#define OID_TAPI_GET_ADDRESS_ID 0x0703010B
|
||||
#define OID_TAPI_GET_ADDRESS_STATUS 0x0703010C
|
||||
#define OID_TAPI_GET_CALL_ADDRESS_ID 0x0703010D
|
||||
#define OID_TAPI_GET_CALL_INFO 0x0703010E
|
||||
#define OID_TAPI_GET_CALL_STATUS 0x0703010F
|
||||
#define OID_TAPI_GET_DEV_CAPS 0x07030110
|
||||
#define OID_TAPI_GET_DEV_CONFIG 0x07030111
|
||||
#define OID_TAPI_GET_ID 0x07030113
|
||||
#define OID_TAPI_GET_LINE_DEV_STATUS 0x07030114
|
||||
#define OID_TAPI_MAKE_CALL 0x07030115
|
||||
#define OID_TAPI_OPEN 0x07030117
|
||||
#define OID_TAPI_PROVIDER_INITIALIZE 0x07030118
|
||||
#define OID_TAPI_PROVIDER_SHUTDOWN 0x07030119
|
||||
#define OID_TAPI_SET_APP_SPECIFIC 0x0703011D
|
||||
#define OID_TAPI_SET_CALL_PARAMS 0x0703011E
|
||||
#define OID_TAPI_SET_DEFAULT_MEDIA_DETECTION 0x0703011F
|
||||
#define OID_TAPI_SET_MEDIA_MODE 0x07030121
|
||||
#define OID_TAPI_SET_STATUS_MESSAGES 0x07030122
|
||||
|
||||
/* Optional */
|
||||
#define OID_TAPI_ACCEPT 0x07030101
|
||||
#define OID_TAPI_CONFIG_DIALOG 0x07030106
|
||||
#define OID_TAPI_DEV_SPECIFIC 0x07030107
|
||||
#define OID_TAPI_DIAL 0x07030108
|
||||
#define OID_TAPI_GET_EXTENSION_ID 0x07030112
|
||||
#define OID_TAPI_NEGOTIATE_EXT_VERSION 0x07030116
|
||||
#define OID_TAPI_SET_DEV_CONFIG 0x07030120
|
||||
#define OID_TAPI_SECURE_CALL 0x0703011A
|
||||
#define OID_TAPI_SELECT_EXT_VERSION 0x0703011B
|
||||
#define OID_TAPI_SEND_USER_USER_INFO 0x0703011C
|
||||
|
||||
|
||||
/* Wireless objects */
|
||||
|
||||
/* Mandatory */
|
||||
#define OID_WW_GEN_NETWORK_TYPES_SUPPORTED 0x09010101
|
||||
#define OID_WW_GEN_NETWORK_TYPE_IN_USE 0x09010102
|
||||
#define OID_WW_GEN_HEADER_FORMATS_SUPPORTED 0x09010103
|
||||
#define OID_WW_GEN_HEADER_FORMAT_IN_USE 0x09010104
|
||||
#define OID_WW_GEN_INDICATION_REQUEST 0x09010105
|
||||
#define OID_WW_GEN_DEVICE_INFO 0x09010106
|
||||
#define OID_WW_GEN_OPERATION_MODE 0x09010107
|
||||
#define OID_WW_GEN_LOCK_STATUS 0x09010108
|
||||
#define OID_WW_GEN_DISABLE_TRANSMITTER 0x09010109
|
||||
#define OID_WW_GEN_NETWORK_ID 0x0901010A
|
||||
#define OID_WW_GEN_PERMANENT_ADDRESS 0x0901010B
|
||||
#define OID_WW_GEN_CURRENT_ADDRESS 0x0901010C
|
||||
#define OID_WW_GEN_SUSPEND_DRIVER 0x0901010D
|
||||
#define OID_WW_GEN_BASESTATION_ID 0x0901010E
|
||||
#define OID_WW_GEN_CHANNEL_ID 0x0901010F
|
||||
#define OID_WW_GEN_ENCRYPTION_SUPPORTED 0x09010110
|
||||
#define OID_WW_GEN_ENCRYPTION_IN_USE 0x09010111
|
||||
#define OID_WW_GEN_ENCRYPTION_STATE 0x09010112
|
||||
#define OID_WW_GEN_CHANNEL_QUALITY 0x09010113
|
||||
#define OID_WW_GEN_REGISTRATION_STATUS 0x09010114
|
||||
#define OID_WW_GEN_RADIO_LINK_SPEED 0x09010115
|
||||
#define OID_WW_GEN_LATENCY 0x09010116
|
||||
#define OID_WW_GEN_BATTERY_LEVEL 0x09010117
|
||||
#define OID_WW_GEN_EXTERNAL_POWER 0x09010118
|
||||
|
||||
/* Optional */
|
||||
#define OID_WW_GEN_PING_ADDRESS 0x09010201
|
||||
#define OID_WW_GEN_RSSI 0x09010202
|
||||
#define OID_WW_GEN_SIM_STATUS 0x09010203
|
||||
#define OID_WW_GEN_ENABLE_SIM_PIN 0x09010204
|
||||
#define OID_WW_GEN_CHANGE_SIM_PIN 0x09010205
|
||||
#define OID_WW_GEN_SIM_PUK 0x09010206
|
||||
#define OID_WW_GEN_SIM_EXCEPTION 0x09010207
|
||||
|
||||
/* Metricom OIDs */
|
||||
#define OID_WW_MET_FUNCTION 0x09190101
|
||||
|
||||
/* DataTac OIDs */
|
||||
#define OID_WW_TAC_COMPRESSION 0x09150101
|
||||
|
||||
#define OID_WW_TAC_SET_CONFIG 0x09150102
|
||||
#define OID_WW_TAC_GET_STATUS 0x09150103
|
||||
#define OID_WW_TAC_USER_HEADER 0x09150104
|
||||
|
||||
/* Ardis OIDs */
|
||||
|
||||
#define OID_WW_ARD_SNDCP 0x09110101
|
||||
#define OID_WW_ARD_TMLY_MSG 0x09110102
|
||||
#define OID_WW_ARD_DATAGRAM 0x09110103
|
||||
|
||||
/* CDPD OIDs */
|
||||
|
||||
#define OID_WW_CDPD_CIRCUIT_SWITCHED 0x090D010E
|
||||
#define OID_WW_CDPD_TEI 0x090D010F
|
||||
#define OID_WW_CDPD_RSSI 0x090D0110
|
||||
|
||||
#define OID_WW_CDPD_CS_SERVICE_PREFERENCE 0x090D0111
|
||||
#define OID_WW_CDPD_CS_SERVICE_STATUS 0x090D0112
|
||||
#define OID_WW_CDPD_CS_INFO 0x090D0113
|
||||
#define OID_WW_CDPD_CS_SUSPEND 0x090D0114
|
||||
#define OID_WW_CDPD_CS_DEFAULT_DIAL_CODE 0x090D0115
|
||||
#define OID_WW_CDPD_CS_CALLBACK 0x090D0116
|
||||
#define OID_WW_CDPD_CS_SID_LIST 0x090D0117
|
||||
#define OID_WW_CDPD_CS_CONFIGURATION 0x090D0118
|
||||
|
||||
/* Pinpoint OIDs */
|
||||
|
||||
#define OID_WW_PIN_LOC_AUTHORIZE 0x09090101
|
||||
#define OID_WW_PIN_LAST_LOCATION 0x09090102
|
||||
#define OID_WW_PIN_LOC_FIX 0x09090103
|
||||
|
||||
/* Mobitex OIDs */
|
||||
#define OID_WW_MBX_SUBADDR 0x09050101
|
||||
/* OID 0x09050102 is reserved and may not be used */
|
||||
#define OID_WW_MBX_FLEXLIST 0x09050103
|
||||
#define OID_WW_MBX_GROUPLIST 0x09050104
|
||||
#define OID_WW_MBX_TRAFFIC_AREA 0x09050105
|
||||
#define OID_WW_MBX_LIVE_DIE 0x09050106
|
||||
#define OID_WW_MBX_TEMP_DEFAULTLIST 0x09050107
|
||||
|
||||
|
||||
/* Connection-oriented objects */
|
||||
|
||||
/* Connection-oriented operational characteristics */
|
||||
|
||||
/* Mandatory */
|
||||
#define OID_GEN_CO_SUPPORTED_LIST OID_GEN_SUPPORTED_LIST
|
||||
#define OID_GEN_CO_HARDWARE_STATUS OID_GEN_HARDWARE_STATUS
|
||||
#define OID_GEN_CO_MEDIA_SUPPORTED OID_GEN_MEDIA_SUPPORTED
|
||||
#define OID_GEN_CO_MEDIA_IN_USE OID_GEN_MEDIA_IN_USE
|
||||
#define OID_GEN_CO_LINK_SPEED OID_GEN_LINK_SPEED
|
||||
#define OID_GEN_CO_VENDOR_ID OID_GEN_VENDOR_ID
|
||||
#define OID_GEN_CO_VENDOR_DESCRIPTION OID_GEN_VENDOR_DESCRIPTION
|
||||
#define OID_GEN_CO_DRIVER_VERSION OID_GEN_DRIVER_VERSION
|
||||
#define OID_GEN_CO_PROTOCOL_OPTIONS OID_GEN_PROTOCOL_OPTIONS
|
||||
#define OID_GEN_CO_MAC_OPTIONS OID_GEN_MAC_OPTIONS
|
||||
#define OID_GEN_CO_MEDIA_CONNECT_STATUS OID_GEN_MEDIA_CONNECT_STATUS
|
||||
#define OID_GEN_CO_VENDOR_DRIVER_VERSION OID_GEN_VENDOR_DRIVER_VERSION
|
||||
|
||||
/* Optional */
|
||||
#define OID_GEN_CO_SUPPORTED_GUIDS OID_GEN_SUPPORTED_GUIDS
|
||||
#define OID_GEN_CO_GET_TIME_CAPS OID_GEN_GET_TIME_CAPS
|
||||
#define OID_GEN_CO_GET_NETCARD_TIME OID_GEN_GET_NETCARD_TIME
|
||||
#define OID_GEN_CO_MINIMUM_LINK_SPEED 0x00020120
|
||||
|
||||
/* Connection-oriented statistics */
|
||||
|
||||
#define OID_GEN_CO_XMIT_PDUS_OK OID_GEN_XMIT_OK
|
||||
#define OID_GEN_CO_RCV_PDUS_OK OID_GEN_RCV_OK
|
||||
#define OID_GEN_CO_XMIT_PDUS_ERROR OID_GEN_XMIT_ERROR
|
||||
#define OID_GEN_CO_RCV_PDUS_ERROR OID_GEN_RCV_ERROR
|
||||
#define OID_GEN_CO_RCV_PDUS_NO_BUFFER OID_GEN_RCV_NO_BUFFER
|
||||
#define OID_GEN_CO_RCV_CRC_ERROR OID_GEN_RCV_CRC_ERROR
|
||||
#define OID_GEN_CO_TRANSMIT_QUEUE_LENGTH OID_GEN_TRANSMIT_QUEUE_LENGTH
|
||||
#define OID_GEN_CO_BYTES_XMIT OID_GEN_DIRECTED_BYTES_XMIT
|
||||
#define OID_GEN_CO_BYTES_RCV OID_GEN_DIRECTED_BYTES_RCV
|
||||
#define OID_GEN_CO_NETCARD_LOAD OID_GEN_NETCARD_LOAD
|
||||
#define OID_GEN_CO_DEVICE_PROFILE OID_GEN_DEVICE_PROFILE
|
||||
#define OID_GEN_CO_BYTES_XMIT_OUTSTANDING 0x00020221
|
||||
|
||||
#endif /* __NDISOID_H */
|
||||
|
||||
/* EOF */
|
16
reactos/include/net/netevent.h
Normal file
16
reactos/include/net/netevent.h
Normal file
|
@ -0,0 +1,16 @@
|
|||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS NDIS library
|
||||
* FILE: include/net/netevent.h
|
||||
* PURPOSE: Network event constants
|
||||
*/
|
||||
#ifndef __NETEVENT_H
|
||||
#define __NETEVENT_H
|
||||
|
||||
#define EVENT_TRANSPORT_REGISTER_FAILED 0xC000232CL
|
||||
|
||||
#define EVENT_TRANSPORT_ADAPTER_NOT_FOUND 0xC000232EL
|
||||
|
||||
#endif /* __NETEVENT_H */
|
||||
|
||||
/* EOF */
|
644
reactos/include/net/tdi.h
Normal file
644
reactos/include/net/tdi.h
Normal file
|
@ -0,0 +1,644 @@
|
|||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS TDI library
|
||||
* FILE: include/net/tdi.h
|
||||
* PURPOSE: TDI definitions for user mode clients
|
||||
*/
|
||||
#ifndef __TDI_H
|
||||
#define __TDI_H
|
||||
|
||||
/* FIXME: Missed some definitions in ntddk.h */
|
||||
|
||||
/* Could be defined in ndis.h */
|
||||
#ifndef __NDIS_H
|
||||
typedef signed int INT, *PINT;
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/* Basic types */
|
||||
|
||||
typedef LONG TDI_STATUS;
|
||||
typedef PVOID CONNECTION_CONTEXT;
|
||||
|
||||
|
||||
|
||||
/* TDI status codes */
|
||||
|
||||
#define TDI_SUCCESS STATUS_SUCCESS
|
||||
#define TDI_NO_RESOURCES STATUS_INSUFFICIENT_RESOURCES
|
||||
#define TDI_ADDR_IN_USE STATUS_ADDRESS_ALREADY_EXISTS
|
||||
#define TDI_BAD_ADDR STATUS_INVALID_ADDRESS_COMPONENT
|
||||
#define TDI_NO_FREE_ADDR STATUS_TOO_MANY_ADDRESSES
|
||||
#define TDI_ADDR_INVALID STATUS_INVALID_ADDRESS
|
||||
#define TDI_ADDR_DELETED STATUS_ADDRESS_CLOSED
|
||||
#define TDI_BUFFER_OVERFLOW STATUS_BUFFER_OVERFLOW
|
||||
#define TDI_BAD_EVENT_TYPE STATUS_INVALID_PARAMETER
|
||||
#define TDI_BAD_OPTION STATUS_INVALID_PARAMETER
|
||||
#define TDI_CONN_REFUSED STATUS_CONNECTION_REFUSED
|
||||
#define TDI_INVALID_CONNECTION STATUS_CONNECTION_INVALID
|
||||
#define TDI_ALREADY_ASSOCIATED STATUS_ADDRESS_ALREADY_ASSOCIATED
|
||||
#define TDI_NOT_ASSOCIATED STATUS_ADDRESS_NOT_ASSOCIATED
|
||||
#define TDI_CONNECTION_ACTIVE STATUS_CONNECTION_ACTIVE
|
||||
#define TDI_CONNECTION_ABORTED STATUS_CONNECTION_ABORTED
|
||||
#define TDI_CONNECTION_RESET STATUS_CONNECTION_RESET
|
||||
#define TDI_TIMED_OUT STATUS_IO_TIMEOUT
|
||||
#define TDI_GRACEFUL_DISC STATUS_GRACEFUL_DISCONNECT
|
||||
#define TDI_NOT_ACCEPTED STATUS_DATA_NOT_ACCEPTED
|
||||
#define TDI_MORE_PROCESSING STATUS_MORE_PROCESSING_REQUIRED
|
||||
#define TDI_INVALID_STATE STATUS_INVALID_DEVICE_STATE
|
||||
#define TDI_INVALID_PARAMETER STATUS_INVALID_PARAMETER
|
||||
#define TDI_DEST_NET_UNREACH STATUS_NETWORK_UNREACHABLE
|
||||
#define TDI_DEST_HOST_UNREACH STATUS_HOST_UNREACHABLE
|
||||
#define TDI_DEST_UNREACHABLE TDI_DEST_HOST_UNREACH
|
||||
#define TDI_DEST_PROT_UNREACH STATUS_PROTOCOL_UNREACHABLE
|
||||
#define TDI_DEST_PORT_UNREACH STATUS_PORT_UNREACHABLE
|
||||
#define TDI_INVALID_QUERY STATUS_INVALID_DEVICE_REQUEST
|
||||
#define TDI_REQ_ABORTED STATUS_REQUEST_ABORTED
|
||||
#define TDI_BUFFER_TOO_SMALL STATUS_BUFFER_TOO_SMALL
|
||||
#define TDI_CANCELLED STATUS_CANCELLED
|
||||
#define TDI_BUFFER_TOO_BIG STATUS_INVALID_BUFFER_SIZE
|
||||
#define TDI_INVALID_REQUEST STATUS_INVALID_DEVICE_REQUEST
|
||||
#define TDI_PENDING STATUS_PENDING
|
||||
#define TDI_ITEM_NOT_FOUND STATUS_OBJECT_NAME_NOT_FOUND
|
||||
|
||||
#define TDI_OPTION_EOL 0
|
||||
#define TDI_ADDRESS_OPTION_REUSE 1
|
||||
#define TDI_ADDRESS_OPTION_DHCP 2
|
||||
|
||||
|
||||
|
||||
/* TDI IOCTL codes */
|
||||
|
||||
#define TDI_CONTROL_CODE(Request, Method) \
|
||||
CTL_CODE(FILE_DEVICE_TRANSPORT, Request, Method, FILE_ANY_ACCESS)
|
||||
|
||||
#define IOCTL_TDI_ACCEPT TDI_CONTROL_CODE(0, METHOD_BUFFERED)
|
||||
#define IOCTL_TDI_CONNECT TDI_CONTROL_CODE(1, METHOD_BUFFERED)
|
||||
#define IOCTL_TDI_DISCONNECT TDI_CONTROL_CODE(2, METHOD_BUFFERED)
|
||||
#define IOCTL_TDI_LISTEN TDI_CONTROL_CODE(3, METHOD_BUFFERED)
|
||||
#define IOCTL_TDI_QUERY_INFORMATION TDI_CONTROL_CODE(4, METHOD_OUT_DIRECT)
|
||||
#define IOCTL_TDI_RECEIVE TDI_CONTROL_CODE(5, METHOD_OUT_DIRECT)
|
||||
#define IOCTL_TDI_RECEIVE_DATAGRAM TDI_CONTROL_CODE(6, METHOD_OUT_DIRECT)
|
||||
#define IOCTL_TDI_SEND TDI_CONTROL_CODE(7, METHOD_IN_DIRECT)
|
||||
#define IOCTL_TDI_SEND_DATAGRAM TDI_CONTROL_CODE(8, METHOD_IN_DIRECT)
|
||||
#define IOCTL_TDI_SET_EVENT_HANDLER TDI_CONTROL_CODE(9, METHOD_BUFFERED)
|
||||
#define IOCTL_TDI_SET_INFORMATION TDI_CONTROL_CODE(10, METHOD_IN_DIRECT)
|
||||
#define IOCTL_TDI_ASSOCIATE_ADDRESS TDI_CONTROL_CODE(11, METHOD_BUFFERED)
|
||||
#define IOCTL_TDI_DISASSOCIATE_ADDRESS TDI_CONTROL_CODE(12, METHOD_BUFFERED)
|
||||
#define IOCTL_TDI_ACTION TDI_CONTROL_CODE(13, METHOD_OUT_DIRECT)
|
||||
|
||||
|
||||
|
||||
/* TDI transport driver dispatch routines */
|
||||
|
||||
NTSTATUS TdiDispatchCleanup(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp);
|
||||
|
||||
NTSTATUS TdiDispatchClose(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp);
|
||||
|
||||
NTSTATUS TdiDispatchCreate(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp);
|
||||
|
||||
NTSTATUS TdiDispatchDeviceControl(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp,
|
||||
IN PIO_STACK_LOCATION IrpSp);
|
||||
|
||||
BOOLEAN TdiDispatchFastDeviceControl(
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN BOOLEAN Wait,
|
||||
IN PVOID InputBuffer,
|
||||
IN ULONG InputBufferLength,
|
||||
IN OUT PVOID OutputBuffer,
|
||||
IN ULONG OutputBufferLength,
|
||||
IN ULONG IoControlCode,
|
||||
OUT PIO_STATUS_BLOCK IoStatus);
|
||||
|
||||
NTSTATUS TdiDispatchInternalDeviceControl(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp);
|
||||
|
||||
|
||||
|
||||
/* TDI structures */
|
||||
|
||||
typedef struct _TDI_CONNECTION_INFORMATION
|
||||
{
|
||||
LONG UserDataLength;
|
||||
PVOID UserData;
|
||||
LONG OptionsLength;
|
||||
PVOID Options;
|
||||
LONG RemoteAddressLength;
|
||||
PVOID RemoteAddress;
|
||||
} TDI_CONNECTION_INFORMATION, *PTDI_CONNECTION_INFORMATION;
|
||||
|
||||
typedef struct _TDI_REQUEST
|
||||
{
|
||||
union {
|
||||
HANDLE AddressHandle;
|
||||
CONNECTION_CONTEXT ConnectionContext;
|
||||
HANDLE ControlChannel;
|
||||
} Handle;
|
||||
PVOID RequestNotifyObject;
|
||||
PVOID RequestContext;
|
||||
TDI_STATUS TdiStatus;
|
||||
} TDI_REQUEST, *PTDI_REQUEST;
|
||||
|
||||
typedef struct _TDI_REQUEST_STATUS
|
||||
{
|
||||
TDI_STATUS Status;
|
||||
PVOID RequestContext;
|
||||
ULONG BytesTransferred;
|
||||
} TDI_REQUEST_STATUS, *PTDI_REQUEST_STATUS;
|
||||
|
||||
|
||||
typedef struct _TA_ADDRESS
|
||||
{
|
||||
USHORT AddressLength;
|
||||
USHORT AddressType;
|
||||
UCHAR Address[1];
|
||||
} TA_ADDRESS, *PTA_ADDRESS;
|
||||
|
||||
#define TDI_ADDRESS_TYPE_UNSPEC 0
|
||||
#define TDI_ADDRESS_TYPE_UNIX 1
|
||||
#define TDI_ADDRESS_TYPE_IP 2
|
||||
#define TDI_ADDRESS_TYPE_IMPLINK 3
|
||||
#define TDI_ADDRESS_TYPE_PUP 4
|
||||
#define TDI_ADDRESS_TYPE_CHAOS 5
|
||||
#define TDI_ADDRESS_TYPE_NS 6
|
||||
#define TDI_ADDRESS_TYPE_IPX 6
|
||||
#define TDI_ADDRESS_TYPE_NBS 7
|
||||
#define TDI_ADDRESS_TYPE_ECMA 8
|
||||
#define TDI_ADDRESS_TYPE_DATAKIT 9
|
||||
#define TDI_ADDRESS_TYPE_CCITT 10
|
||||
#define TDI_ADDRESS_TYPE_SNA 11
|
||||
#define TDI_ADDRESS_TYPE_DECnet 12
|
||||
#define TDI_ADDRESS_TYPE_DLI 13
|
||||
#define TDI_ADDRESS_TYPE_LAT 14
|
||||
#define TDI_ADDRESS_TYPE_HYLINK 15
|
||||
#define TDI_ADDRESS_TYPE_APPLETALK 16
|
||||
#define TDI_ADDRESS_TYPE_NETBIOS 17
|
||||
#define TDI_ADDRESS_TYPE_8022 18
|
||||
#define TDI_ADDRESS_TYPE_OSI_TSAP 19
|
||||
#define TDI_ADDRESS_TYPE_NETONE 20
|
||||
#define TDI_ADDRESS_TYPE_VNS 21
|
||||
#define TDI_ADDRESS_TYPE_NETBIOS_EX 22
|
||||
|
||||
|
||||
#define TdiTransportAddress "TransportAddress"
|
||||
#define TdiConnectionContext "ConnectionContext"
|
||||
#define TDI_TRANSPORT_ADDRESS_LENGTH (sizeof(TdiTransportAddress) - 1)
|
||||
#define TDI_CONNECTION_CONTEXT_LENGTH (sizeof(TdiConnectionContext) - 1)
|
||||
|
||||
|
||||
typedef struct _TRANSPORT_ADDRESS
|
||||
{
|
||||
LONG TAAddressCount;
|
||||
TA_ADDRESS Address[1];
|
||||
} TRANSPORT_ADDRESS, *PTRANSPORT_ADDRESS;
|
||||
|
||||
typedef struct _TDI_ADDRESS_INFO
|
||||
{
|
||||
ULONG ActivityCount;
|
||||
TRANSPORT_ADDRESS Address;
|
||||
} TDI_ADDRESS_INFO, *PTDI_ADDRESS_INFO;
|
||||
|
||||
typedef struct _TDI_ACTION_HEADER
|
||||
{
|
||||
ULONG TransportId;
|
||||
USHORT ActionCode;
|
||||
USHORT Reserved;
|
||||
} TDI_ACTION_HEADER, *PTDI_ACTION_HEADER;
|
||||
|
||||
typedef struct _TDI_ADDRESS_8022
|
||||
{
|
||||
UCHAR MACAddress[6];
|
||||
} TDI_ADDRESS_8022, *PTDI_ADDRESS_8022;
|
||||
|
||||
typedef struct _TDI_ADDRESS_APPLETALK
|
||||
{
|
||||
USHORT Network;
|
||||
UCHAR Node;
|
||||
UCHAR Socket;
|
||||
} TDI_ADDRESS_APPLETALK, *PTDI_ADDRESS_APPLETALK;
|
||||
|
||||
#define TDI_ADDRESS_LENGTH_APPLETALK sizeof(TDI_ADDRESS_APPLETALK)
|
||||
|
||||
typedef struct _TDI_ADDRESS_IP
|
||||
{
|
||||
USHORT sin_port;
|
||||
ULONG in_addr;
|
||||
UCHAR sin_zero[8];
|
||||
} TDI_ADDRESS_IP, *PTDI_ADDRESS_IP;
|
||||
|
||||
#define TDI_ADDRESS_LENGTH_IP sizeof(TDI_ADDRESS_IP)
|
||||
|
||||
typedef struct _TDI_ADDRESS_IPX
|
||||
{
|
||||
ULONG NetworkAddress;
|
||||
UCHAR NodeAddress[6];
|
||||
USHORT Socket;
|
||||
} TDI_ADDRESS_IPX, *PTDI_ADDRESS_IPX;
|
||||
|
||||
#define TDI_ADDRESS_LENGTH_IPX sizeof(TDI_ADDRESS_IPX)
|
||||
|
||||
typedef struct _TDI_ADDRESS_NETBIOS
|
||||
{
|
||||
USHORT NetbiosNameType;
|
||||
UCHAR NetbiosName[16];
|
||||
} TDI_ADDRESS_NETBIOS, *PTDI_ADDRESS_NETBIOS;
|
||||
|
||||
#define TDI_ADDRESS_NETBIOS_TYPE_UNIQUE 0x0000
|
||||
#define TDI_ADDRESS_NETBIOS_TYPE_GROUP 0x0001
|
||||
#define TDI_ADDRESS_NETBIOS_TYPE_QUICK_UNIQUE 0x0002
|
||||
#define TDI_ADDRESS_NETBIOS_TYPE_QUICK_GROUP 0x0003
|
||||
|
||||
#define TDI_ADDRESS_LENGTH_NETBIOS sizeof(TDI_ADDRESS_NETBIOS)
|
||||
|
||||
typedef struct _TDI_ADDRESS_NETBIOS_EX
|
||||
{
|
||||
UCHAR EndpointName[16];
|
||||
TDI_ADDRESS_NETBIOS NetbiosAddress;
|
||||
} TDI_ADDRESS_NETBIOS_EX, *PTDI_ADDRESS_NETBIOS_EX;
|
||||
|
||||
#define TDI_ADDRESS_LENGTH_NETBIOS_EX sizeof(TDI_ADDRESS_NETBIOS_EX)
|
||||
|
||||
typedef struct _TDI_ADDRESS_NETONE
|
||||
{
|
||||
USHORT NetoneNameType;
|
||||
UCHAR NetoneName[20];
|
||||
} TDI_ADDRESS_NETONE, *PTDI_ADDRESS_NETONE;
|
||||
|
||||
#define TDI_ADDRESS_NETONE_TYPE_UNIQUE 0x0000
|
||||
#define TDI_ADDRESS_NETONE_TYPE_ROTORED 0x0001
|
||||
|
||||
#define TDI_ADDRESS_LENGTH_NETONE sizeof(TDI_ADDRESS_NETONE)
|
||||
|
||||
typedef struct _TDI_ADDRESS_NS
|
||||
{
|
||||
ULONG NetworkAddress;
|
||||
UCHAR NodeAddress[6];
|
||||
USHORT Socket;
|
||||
} TDI_ADDRESS_NS, *PTDI_ADDRESS_NS;
|
||||
|
||||
#define TDI_ADDRESS_LENGTH_NS sizeof(TDI_ADDRESS_NS)
|
||||
|
||||
#define ISO_MAX_ADDR_LENGTH 64
|
||||
|
||||
#define ISO_HIERARCHICAL 0
|
||||
#define ISO_NON_HIERARCHICAL 1
|
||||
|
||||
typedef struct _TDI_ADDRESS_OSI_TSAP
|
||||
{
|
||||
USHORT tp_addr_type;
|
||||
USHORT tp_taddr_len;
|
||||
USHORT tp_tsel_len;
|
||||
UCHAR tp_addr[ISO_MAX_ADDR_LENGTH];
|
||||
} TDI_ADDRESS_OSI_TSAP, *PTDI_ADDRESS_OSI_TSAP;
|
||||
|
||||
#define TDI_ADDRESS_LENGTH_OSI_TSAP sizeof(TDI_ADDRESS_OSI_TSAP)
|
||||
|
||||
typedef struct _TDI_ADDRESS_VNS
|
||||
{
|
||||
UCHAR net_address[4];
|
||||
UCHAR subnet_addr[2];
|
||||
UCHAR port[2];
|
||||
UCHAR hops;
|
||||
UCHAR filler[5];
|
||||
} TDI_ADDRESS_VNS, *PTDI_ADDRESS_VNS;
|
||||
|
||||
#define TDI_ADDRESS_LENGTH_VNS sizeof(TDI_ADDRESS_VNS)
|
||||
|
||||
|
||||
/* TDI request structures */
|
||||
|
||||
typedef struct _TDI_CONNECT_REQUEST
|
||||
{
|
||||
TDI_REQUEST Request;
|
||||
PTDI_CONNECTION_INFORMATION RequestConnectionInformation;
|
||||
PTDI_CONNECTION_INFORMATION ReturnConnectionInformation;
|
||||
LARGE_INTEGER Timeout;
|
||||
} TDI_REQUEST_CONNECT, *PTDI_REQUEST_CONNECT;
|
||||
|
||||
typedef struct _TDI_REQUEST_ACCEPT
|
||||
{
|
||||
TDI_REQUEST Request;
|
||||
PTDI_CONNECTION_INFORMATION RequestConnectionInformation;
|
||||
PTDI_CONNECTION_INFORMATION ReturnConnectionInformation;
|
||||
} TDI_REQUEST_ACCEPT, *PTDI_REQUEST_ACCEPT;
|
||||
|
||||
typedef struct _TDI_REQUEST_LISTEN
|
||||
{
|
||||
TDI_REQUEST Request;
|
||||
PTDI_CONNECTION_INFORMATION RequestConnectionInformation;
|
||||
PTDI_CONNECTION_INFORMATION ReturnConnectionInformation;
|
||||
USHORT ListenFlags;
|
||||
} TDI_REQUEST_LISTEN, *PTDI_REQUEST_LISTEN;
|
||||
|
||||
typedef struct _TDI_DISCONNECT_REQUEST
|
||||
{
|
||||
TDI_REQUEST Request;
|
||||
LARGE_INTEGER Timeout;
|
||||
} TDI_REQUEST_DISCONNECT, *PTDI_REQUEST_DISCONNECT;
|
||||
|
||||
typedef struct _TDI_REQUEST_SEND
|
||||
{
|
||||
TDI_REQUEST Request;
|
||||
USHORT SendFlags;
|
||||
} TDI_REQUEST_SEND, *PTDI_REQUEST_SEND;
|
||||
|
||||
typedef struct _TDI_REQUEST_RECEIVE
|
||||
{
|
||||
TDI_REQUEST Request;
|
||||
USHORT ReceiveFlags;
|
||||
} TDI_REQUEST_RECEIVE, *PTDI_REQUEST_RECEIVE;
|
||||
|
||||
typedef struct _TDI_REQUEST_SEND_DATAGRAM
|
||||
{
|
||||
TDI_REQUEST Request;
|
||||
PTDI_CONNECTION_INFORMATION SendDatagramInformation;
|
||||
} TDI_REQUEST_SEND_DATAGRAM, *PTDI_REQUEST_SEND_DATAGRAM;
|
||||
|
||||
typedef struct _TDI_REQUEST_RECEIVE_DATAGRAM
|
||||
{
|
||||
TDI_REQUEST Request;
|
||||
PTDI_CONNECTION_INFORMATION ReceiveDatagramInformation;
|
||||
PTDI_CONNECTION_INFORMATION ReturnInformation;
|
||||
USHORT ReceiveFlags;
|
||||
} TDI_REQUEST_RECEIVE_DATAGRAM, *PTDI_REQUEST_RECEIVE_DATAGRAM;
|
||||
|
||||
typedef struct _TDI_REQUEST_SET_EVENT
|
||||
{
|
||||
TDI_REQUEST Request;
|
||||
LONG EventType;
|
||||
PVOID EventHandler;
|
||||
PVOID EventContext;
|
||||
} TDI_REQUEST_SET_EVENT_HANDLER, *PTDI_REQUEST_SET_EVENT_HANDLER;
|
||||
|
||||
#define TDI_RECEIVE_BROADCAST 0x00000004
|
||||
#define TDI_RECEIVE_MULTICAST 0x00000008
|
||||
#define TDI_RECEIVE_PARTIAL 0x00000010
|
||||
#define TDI_RECEIVE_NORMAL 0x00000020
|
||||
#define TDI_RECEIVE_EXPEDITED 0x00000040
|
||||
#define TDI_RECEIVE_PEEK 0x00000080
|
||||
#define TDI_RECEIVE_NO_RESPONSE_EXP 0x00000100
|
||||
#define TDI_RECEIVE_COPY_LOOKAHEAD 0x00000200
|
||||
#define TDI_RECEIVE_ENTIRE_MESSAGE 0x00000400
|
||||
#define TDI_RECEIVE_AT_DISPATCH_LEVEL 0x00000800
|
||||
|
||||
/* Listen flags */
|
||||
#define TDI_QUERY_ACCEPT 0x00000001
|
||||
|
||||
/* Options used for both SendOptions and ReceiveIndicators */
|
||||
#define TDI_SEND_EXPEDITED 0x0020
|
||||
#define TDI_SEND_PARTIAL 0x0040
|
||||
#define TDI_SEND_NO_RESPONSE_EXPECTED 0x0080
|
||||
#define TDI_SEND_NON_BLOCKING 0x0100
|
||||
|
||||
/* Disconnect Flags */
|
||||
#define TDI_DISCONNECT_WAIT 0x0001
|
||||
#define TDI_DISCONNECT_ABORT 0x0002
|
||||
#define TDI_DISCONNECT_RELEASE 0x0004
|
||||
|
||||
/* TdiRequest structure for TdiQueryInformation request */
|
||||
typedef struct _TDI_REQUEST_QUERY_INFORMATION
|
||||
{
|
||||
TDI_REQUEST Request;
|
||||
ULONG QueryType;
|
||||
PTDI_CONNECTION_INFORMATION RequestConnectionInformation;
|
||||
} TDI_REQUEST_QUERY_INFORMATION, *PTDI_REQUEST_QUERY_INFORMATION;
|
||||
|
||||
/* TdiRequest structure for TdiSetInformation request */
|
||||
typedef struct _TDI_REQUEST_SET_INFORMATION
|
||||
{
|
||||
TDI_REQUEST Request;
|
||||
ULONG SetType;
|
||||
PTDI_CONNECTION_INFORMATION RequestConnectionInformation;
|
||||
} TDI_REQUEST_SET_INFORMATION, *PTDI_REQUEST_SET_INFORMATION;
|
||||
|
||||
typedef union _TDI_REQUEST_TYPE
|
||||
{
|
||||
TDI_REQUEST_ACCEPT TdiAccept;
|
||||
TDI_REQUEST_CONNECT TdiConnect;
|
||||
TDI_REQUEST_DISCONNECT TdiDisconnect;
|
||||
TDI_REQUEST_LISTEN TdiListen;
|
||||
TDI_REQUEST_QUERY_INFORMATION TdiQueryInformation;
|
||||
TDI_REQUEST_RECEIVE TdiReceive;
|
||||
TDI_REQUEST_RECEIVE_DATAGRAM TdiReceiveDatagram;
|
||||
TDI_REQUEST_SEND TdiSend;
|
||||
TDI_REQUEST_SEND_DATAGRAM TdiSendDatagram;
|
||||
TDI_REQUEST_SET_EVENT_HANDLER TdiSetEventHandler;
|
||||
TDI_REQUEST_SET_INFORMATION TdiSetInformation;
|
||||
} TDI_REQUEST_TYPE, *PTDI_REQUEST_TYPE;
|
||||
|
||||
|
||||
|
||||
/* Query information types */
|
||||
|
||||
/* Generic query info types that must be supported by all transports */
|
||||
#define TDI_QUERY_BROADCAST_ADDRESS 0x00000001
|
||||
#define TDI_QUERY_PROVIDER_INFO 0x00000002
|
||||
#define TDI_QUERY_ADDRESS_INFO 0x00000003
|
||||
#define TDI_QUERY_CONNECTION_INFO 0x00000004
|
||||
#define TDI_QUERY_PROVIDER_STATISTICS 0x00000005
|
||||
#define TDI_QUERY_DATAGRAM_INFO 0x00000006
|
||||
#define TDI_QUERY_DATA_LINK_ADDRESS 0x00000007
|
||||
#define TDI_QUERY_NETWORK_ADDRESS 0x00000008
|
||||
#define TDI_QUERY_MAX_DATAGRAM_INFO 0x00000009
|
||||
|
||||
/* Netbios specific query information types */
|
||||
#define TDI_QUERY_ADAPTER_STATUS 0x00000100
|
||||
#define TDI_QUERY_SESSION_STATUS 0x00000200
|
||||
#define TDI_QUERY_FIND_NAME 0x00000300
|
||||
|
||||
typedef struct _TA_APPLETALK_ADDR
|
||||
{
|
||||
LONG TAAddressCount;
|
||||
struct _AddrAtalk {
|
||||
USHORT AddressLength;
|
||||
USHORT AddressType;
|
||||
TDI_ADDRESS_APPLETALK Address[1];
|
||||
} Address[1];
|
||||
} TA_APPLETALK_ADDRESS, *PTA_APPLETALK_ADDRESS;
|
||||
|
||||
typedef struct _TA_ADDRESS_IP
|
||||
{
|
||||
LONG TAAddressCount;
|
||||
struct _AddrIp {
|
||||
USHORT AddressLength;
|
||||
USHORT AddressType;
|
||||
TDI_ADDRESS_IP Address[1];
|
||||
} Address[1];
|
||||
} TA_ADDRESS_IP, *PTA_ADDRESS_IP;
|
||||
|
||||
typedef struct _TA_ADDRESS_IPX
|
||||
{
|
||||
LONG TAAddressCount;
|
||||
struct _AddrIpx {
|
||||
USHORT AddressLength;
|
||||
USHORT AddressType;
|
||||
TDI_ADDRESS_IP Address[1];
|
||||
} Address[1];
|
||||
} TA_IPX_ADDRESS, *PTA_IPX_ADDRESS;
|
||||
|
||||
typedef struct _TA_NETBIOS_ADDRESS
|
||||
{
|
||||
LONG TAAddressCount;
|
||||
struct _Addr{
|
||||
USHORT AddressLength;
|
||||
USHORT AddressType;
|
||||
TDI_ADDRESS_NETBIOS Address[1];
|
||||
} Address[1];
|
||||
} TA_NETBIOS_ADDRESS, *PTA_NETBIOS_ADDRESS;
|
||||
|
||||
typedef struct _TA_ADDRESS_NS
|
||||
{
|
||||
LONG TAAddressCount;
|
||||
struct _AddrNs {
|
||||
USHORT AddressLength;
|
||||
USHORT AddressType;
|
||||
TDI_ADDRESS_NS Address[1];
|
||||
} Address[1];
|
||||
} TA_NS_ADDRESS, *PTA_NS_ADDRESS;
|
||||
|
||||
typedef struct _TA_ADDRESS_VNS
|
||||
{
|
||||
LONG TAAddressCount;
|
||||
struct _AddrVns {
|
||||
USHORT AddressLength;
|
||||
USHORT AddressType;
|
||||
TDI_ADDRESS_VNS Address[1];
|
||||
} Address[1];
|
||||
} TA_VNS_ADDRESS, *PTA_VNS_ADDRESS;
|
||||
|
||||
|
||||
/* Structures used for TdiQueryInformation and TdiSetInformation */
|
||||
|
||||
typedef struct _TDI_ENDPOINT_INFO
|
||||
{
|
||||
ULONG State;
|
||||
ULONG Event;
|
||||
ULONG TransmittedTsdus;
|
||||
ULONG ReceivedTsdus;
|
||||
ULONG TransmissionErrors;
|
||||
ULONG ReceiveErrors;
|
||||
ULONG MinimumLookaheadData;
|
||||
ULONG MaximumLookaheadData;
|
||||
ULONG PriorityLevel;
|
||||
ULONG SecurityLevel;
|
||||
ULONG SecurityCompartment;
|
||||
} TDI_ENDPOINT_INFO, *PTDI_ENDPOINT_INFO;
|
||||
|
||||
typedef struct _TDI_CONNECTION_INFO
|
||||
{
|
||||
ULONG State;
|
||||
ULONG Event;
|
||||
ULONG TransmittedTsdus;
|
||||
ULONG ReceivedTsdus;
|
||||
ULONG TransmissionErrors;
|
||||
ULONG ReceiveErrors;
|
||||
LARGE_INTEGER Throughput;
|
||||
LARGE_INTEGER Delay;
|
||||
ULONG SendBufferSize;
|
||||
ULONG ReceiveBufferSize;
|
||||
BOOLEAN Unreliable;
|
||||
} TDI_CONNECTION_INFO, *PTDI_CONNECTION_INFO;
|
||||
|
||||
typedef struct _TDI_DATAGRAM_INFO
|
||||
{
|
||||
ULONG MaximumDatagramBytes;
|
||||
ULONG MaximumDatagramCount;
|
||||
} TDI_DATAGRAM_INFO, *PTDI_DATAGRAM_INFO;
|
||||
|
||||
typedef struct _TDI_MAX_DATAGRAM_INFO
|
||||
{
|
||||
ULONG MaxDatagramSize;
|
||||
} TDI_MAX_DATAGRAM_INFO, *PTDI_MAX_DATAGRAM_INFO;
|
||||
|
||||
typedef struct _TDI_PROVIDER_INFO
|
||||
{
|
||||
ULONG Version;
|
||||
ULONG MaxSendSize;
|
||||
ULONG MaxConnectionUserData;
|
||||
ULONG MaxDatagramSize;
|
||||
ULONG ServiceFlags;
|
||||
ULONG MinimumLookaheadData;
|
||||
ULONG MaximumLookaheadData;
|
||||
ULONG NumberOfResources;
|
||||
LARGE_INTEGER StartTime;
|
||||
} TDI_PROVIDER_INFO, *PTDI_PROVIDER_INFO;
|
||||
|
||||
#define TDI_SERVICE_CONNECTION_MODE 0x00000001
|
||||
#define TDI_SERVICE_ORDERLY_RELEASE 0x00000002
|
||||
#define TDI_SERVICE_CONNECTIONLESS_MODE 0x00000004
|
||||
#define TDI_SERVICE_ERROR_FREE_DELIVERY 0x00000008
|
||||
#define TDI_SERVICE_SECURITY_LEVEL 0x00000010
|
||||
#define TDI_SERVICE_BROADCAST_SUPPORTED 0x00000020
|
||||
#define TDI_SERVICE_MULTICAST_SUPPORTED 0x00000040
|
||||
#define TDI_SERVICE_DELAYED_ACCEPTANCE 0x00000080
|
||||
#define TDI_SERVICE_EXPEDITED_DATA 0x00000100
|
||||
#define TDI_SERVICE_INTERNAL_BUFFERING 0x00000200
|
||||
#define TDI_SERVICE_ROUTE_DIRECTED 0x00000400
|
||||
#define TDI_SERVICE_NO_ZERO_LENGTH 0x00000800
|
||||
#define TDI_SERVICE_POINT_TO_POINT 0x00001000
|
||||
#define TDI_SERVICE_MESSAGE_MODE 0x00002000
|
||||
#define TDI_SERVICE_HALF_DUPLEX 0x00004000
|
||||
|
||||
typedef struct _TDI_PROVIDER_RESOURCE_STATS
|
||||
{
|
||||
ULONG ResourceId;
|
||||
ULONG MaximumResourceUsed;
|
||||
ULONG AverageResourceUsed;
|
||||
ULONG ResourceExhausted;
|
||||
} TDI_PROVIDER_RESOURCE_STATS, *PTDI_PROVIDER_RESOURCE_STATS;
|
||||
|
||||
typedef struct _TDI_PROVIDER_STATISTICS
|
||||
{
|
||||
ULONG Version;
|
||||
ULONG OpenConnections;
|
||||
ULONG ConnectionsAfterNoRetry;
|
||||
ULONG ConnectionsAfterRetry;
|
||||
ULONG LocalDisconnects;
|
||||
ULONG RemoteDisconnects;
|
||||
ULONG LinkFailures;
|
||||
ULONG AdapterFailures;
|
||||
ULONG SessionTimeouts;
|
||||
ULONG CancelledConnections;
|
||||
ULONG RemoteResourceFailures;
|
||||
ULONG LocalResourceFailures;
|
||||
ULONG NotFoundFailures;
|
||||
ULONG NoListenFailures;
|
||||
ULONG DatagramsSent;
|
||||
LARGE_INTEGER DatagramBytesSent;
|
||||
ULONG DatagramsReceived;
|
||||
LARGE_INTEGER DatagramBytesReceived;
|
||||
ULONG PacketsSent;
|
||||
ULONG PacketsReceived;
|
||||
ULONG DataFramesSent;
|
||||
LARGE_INTEGER DataFrameBytesSent;
|
||||
ULONG DataFramesReceived;
|
||||
LARGE_INTEGER DataFrameBytesReceived;
|
||||
ULONG DataFramesResent;
|
||||
LARGE_INTEGER DataFrameBytesResent;
|
||||
ULONG DataFramesRejected;
|
||||
LARGE_INTEGER DataFrameBytesRejected;
|
||||
ULONG ResponseTimerExpirations;
|
||||
ULONG AckTimerExpirations;
|
||||
ULONG MaximumSendWindow;
|
||||
ULONG AverageSendWindow;
|
||||
ULONG PiggybackAckQueued;
|
||||
ULONG PiggybackAckTimeouts;
|
||||
LARGE_INTEGER WastedPacketSpace;
|
||||
ULONG WastedSpacePackets;
|
||||
ULONG NumberOfResources;
|
||||
TDI_PROVIDER_RESOURCE_STATS Resources[1];
|
||||
} TDI_PROVIDER_STATISTICS, *PTDI_PROVIDER_STATISTICS;
|
||||
|
||||
#endif /* __TDI_H */
|
||||
|
||||
/* EOF */
|
96
reactos/include/net/tdiinfo.h
Normal file
96
reactos/include/net/tdiinfo.h
Normal file
|
@ -0,0 +1,96 @@
|
|||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS TDI library
|
||||
* FILE: include/net/tdiinfo.h
|
||||
* PURPOSE: TDI definitions for Tdi(Query/Set)InformationEx
|
||||
*/
|
||||
#ifndef __TDIINFO_H
|
||||
#define __TDIINFO_H
|
||||
|
||||
typedef struct TDIEntityID
|
||||
{
|
||||
ULONG tei_entity;
|
||||
ULONG tei_instance;
|
||||
} TDIEntityID;
|
||||
|
||||
typedef struct TDIObjectID
|
||||
{
|
||||
TDIEntityID toi_entity;
|
||||
ULONG toi_class;
|
||||
ULONG toi_type;
|
||||
ULONG toi_id;
|
||||
} TDIObjectID;
|
||||
|
||||
#define CONTEXT_SIZE 16
|
||||
|
||||
#define MAX_TDI_ENTITIES 512
|
||||
|
||||
#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 IF_ENTITY 0x200
|
||||
|
||||
#define AT_ENTITY 0x280
|
||||
|
||||
#define CO_NL_ENTITY 0x300
|
||||
#define CL_NL_ENTITY 0x301
|
||||
|
||||
#define ER_ENTITY 0x380
|
||||
|
||||
#define CO_TL_ENTITY 0x400
|
||||
#define CL_TL_ENTITY 0x401
|
||||
|
||||
|
||||
/* IDs supported by all entities */
|
||||
|
||||
#define ENTITY_TYPE_ID 1
|
||||
|
||||
|
||||
#define IF_GENERIC 0x200
|
||||
#define IF_MIB 0x202
|
||||
|
||||
#define AT_ARP 0x280
|
||||
#define AT_NULL 0x282
|
||||
|
||||
#define CL_NL_IPX 0x301
|
||||
#define CL_NL_IP 0x303
|
||||
|
||||
#define ER_ICMP 0x380
|
||||
|
||||
#define CO_TL_NBF 0x400
|
||||
#define CO_TL_SPX 0x402
|
||||
#define CO_TL_TCP 0x404
|
||||
#define CO_TL_SPP 0x406
|
||||
|
||||
#define CL_TL_NBF 0x401
|
||||
#define CL_TL_UDP 0x403
|
||||
|
||||
/* TCP specific structures */
|
||||
|
||||
typedef struct _TCP_REQUEST_QUERY_INFORMATION_EX
|
||||
{
|
||||
TDIObjectID ID;
|
||||
UCHAR Context[CONTEXT_SIZE];
|
||||
} TCP_REQUEST_QUERY_INFORMATION_EX, *PTCP_REQUEST_QUERY_INFORMATION_EX;
|
||||
|
||||
typedef struct _TCP_REQUEST_SET_INFORMATION_EX
|
||||
{
|
||||
TDIObjectID ID;
|
||||
UINT BufferSize;
|
||||
UCHAR Buffer[1];
|
||||
} TCP_REQUEST_SET_INFORMATION_EX, *PTCP_REQUEST_SET_INFORMATION_EX;
|
||||
|
||||
#endif /* __TDIINFO_H */
|
||||
|
||||
/* EOF */
|
805
reactos/include/net/tdikrnl.h
Normal file
805
reactos/include/net/tdikrnl.h
Normal file
|
@ -0,0 +1,805 @@
|
|||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS TDI library
|
||||
* FILE: include/net/tdikrnl.h
|
||||
* PURPOSE: TDI definitions for kernel mode drivers
|
||||
*/
|
||||
#ifndef __TDIKRNL_H
|
||||
#define __TDIKRNL_H
|
||||
|
||||
#include "tdi.h"
|
||||
|
||||
#ifndef STDCALL
|
||||
#define STDCALL
|
||||
#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;
|
||||
|
||||
/* 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
|
||||
|
||||
typedef NTSTATUS (*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);
|
||||
|
||||
NTSTATUS STDCALL 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 (*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);
|
||||
|
||||
NTSTATUS STDCALL 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 (*PTDI_IND_ERROR)(
|
||||
IN PVOID TdiEventContext,
|
||||
IN NTSTATUS Status);
|
||||
|
||||
NTSTATUS STDCALL TdiDefaultErrorHandler(
|
||||
IN PVOID TdiEventContext,
|
||||
IN NTSTATUS Status);
|
||||
|
||||
typedef NTSTATUS (*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);
|
||||
|
||||
NTSTATUS STDCALL 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 (*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);
|
||||
|
||||
NTSTATUS STDCALL 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 (*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);
|
||||
|
||||
NTSTATUS STDCALL 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 (*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);
|
||||
|
||||
NTSTATUS STDCALL 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 (*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);
|
||||
|
||||
NTSTATUS STDCALL 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 (*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);
|
||||
|
||||
NTSTATUS STDCALL 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 (*PTDI_IND_SEND_POSSIBLE)(
|
||||
IN PVOID TdiEventContext,
|
||||
IN PVOID ConnectionContext,
|
||||
IN ULONG BytesAvailable);
|
||||
|
||||
NTSTATUS STDCALL TdiDefaultSendPossibleHandler(
|
||||
IN PVOID TdiEventContext,
|
||||
IN PVOID ConnectionContext,
|
||||
IN ULONG BytesAvailable);
|
||||
|
||||
|
||||
|
||||
/* Macros and functions to build IRPs */
|
||||
|
||||
#define TdiBuildBaseIrp( \
|
||||
Irp, DevObj, FileObj, CompRoutine, Contxt, IrpSp, Minor) \
|
||||
{ \
|
||||
IrpSp = IoGetNextIrpStackLocation(Irp); \
|
||||
IrpSp->MajorFunction = IRP_MJ_INTERNAL_DEVICE_CONTROL; \
|
||||
IrpSp->MinorFunction = (Minor); \
|
||||
IrpSp->DeviceObject = (DevObj); \
|
||||
IrpSp->FileObject = (FileObj); \
|
||||
\
|
||||
if (CompRoutine) \
|
||||
IoSetCompletionRoutine(Irp, CompRoutine, Contxt, TRUE, TRUE, TRUE) \
|
||||
else \
|
||||
IoSetCompletionRoutine(Irp, NULL, NULL, FALSE, FALSE, FALSE); \
|
||||
}
|
||||
|
||||
/*
|
||||
* VOID TdiBuildAccept(
|
||||
* IN PIRP Irp,
|
||||
* IN PDEVICE_OBJECT DevObj,
|
||||
* IN PFILE_OBJECT FileObj,
|
||||
* IN PVOID CompRoutine,
|
||||
* IN PVOID Contxt,
|
||||
* IN PTDI_CONNECTION_INFORMATION RequestConnectionInfo,
|
||||
* OUT PTDI_CONNECTION_INFORMATION ReturnConnectionInfo);
|
||||
*/
|
||||
#define TdiBuildAccept( \
|
||||
Irp, DevObj, FileObj, CompRoutine, Contxt, \
|
||||
RequestConnectionInfo, ReturnConnectionInfo) \
|
||||
{ \
|
||||
PTDI_REQUEST_KERNEL_ACCEPT _Request; \
|
||||
PIO_STACK_LOCATION _IrpSp; \
|
||||
\
|
||||
_IrpSp = IoGetNextIrpStackLocation(Irp); \
|
||||
\
|
||||
TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
|
||||
Contxt, _IrpSp, TDI_ACCEPT); \
|
||||
\
|
||||
_Request = (PTDI_REQUEST_KERNEL_ACCEPT)&_IrpSp->Parameters; \
|
||||
_Request->RequestConnectionInformation = (RequestConnectionInfo); \
|
||||
_Request->ReturnConnectionInformation = (ReturnConnectionInfo); \
|
||||
}
|
||||
|
||||
/*
|
||||
* VOID TdiBuildAction(
|
||||
* IN PIRP Irp,
|
||||
* IN PDEVICE_OBJECT DevObj,
|
||||
* IN PFILE_OBJECT FileObj,
|
||||
* IN PVOID CompRoutine,
|
||||
* IN PVOID Contxt,
|
||||
* IN PMDL MdlAddr);
|
||||
*/
|
||||
#define TdiBuildAction( \
|
||||
Irp, DevObj, FileObj, CompRoutine, Contxt, MdlAddr) \
|
||||
{ \
|
||||
PIO_STACK_LOCATION _IrpSp; \
|
||||
\
|
||||
_IrpSp = IoGetNextIrpStackLocation(Irp); \
|
||||
\
|
||||
TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
|
||||
Contxt, _IrpSp, TDI_ACTION); \
|
||||
\
|
||||
(Irp)->MdlAddress = (MdlAddr); \
|
||||
}
|
||||
|
||||
/*
|
||||
* VOID TdiBuildAssociateAddress(
|
||||
* IN PIRP Irp,
|
||||
* IN PDEVICE_OBJECT DevObj,
|
||||
* IN PFILE_OBJECT FileObj,
|
||||
* IN PVOID CompRoutine,
|
||||
* IN PVOID Contxt,
|
||||
* IN HANDLE AddrHandle);
|
||||
*/
|
||||
#define TdiBuildAssociateAddress( \
|
||||
Irp, DevObj, FileObj, CompRoutine, Contxt, AddrHandle) \
|
||||
{ \
|
||||
PTDI_REQUEST_KERNEL_ASSOCIATE _Request; \
|
||||
PIO_STACK_LOCATION _IrpSp; \
|
||||
\
|
||||
_IrpSp = IoGetNextIrpStackLocation(Irp); \
|
||||
\
|
||||
TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
|
||||
Contxt, _IrpSp, TDI_ASSOCIATE_ADDRESS); \
|
||||
\
|
||||
_Request = (PTDI_REQUEST_KERNEL_ASSOCIATE)&_IrpSp->Parameters; \
|
||||
_Request->AddressHandle = (HANDLE)(AddrHandle); \
|
||||
}
|
||||
|
||||
/*
|
||||
* VOID TdiBuildConnect(
|
||||
* IN PIRP Irp,
|
||||
* IN PDEVICE_OBJECT DevObj,
|
||||
* IN PFILE_OBJECT FileObj,
|
||||
* IN PVOID CompRoutine,
|
||||
* IN PVOID Contxt,
|
||||
* IN PLARGE_INTEGER Time,
|
||||
* IN PTDI_CONNECTION_INFORMATION RequestConnectionInfo,
|
||||
* OUT PTDI_CONNECTION_INFORMATION ReturnConnectionInfo);
|
||||
*/
|
||||
#define TdiBuildConnect( \
|
||||
Irp, DevObj, FileObj, CompRoutine, Contxt, \
|
||||
Time, RequestConnectionInfo, ReturnConnectionInfo) \
|
||||
{ \
|
||||
PTDI_REQUEST_KERNEL _Request; \
|
||||
PIO_STACK_LOCATION _IrpSp; \
|
||||
\
|
||||
_IrpSp = IoGetNextIrpStackLocation(Irp); \
|
||||
\
|
||||
TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
|
||||
Contxt, _IrpSp, TDI_CONNECT); \
|
||||
\
|
||||
_Request = (PTDI_REQUEST_KERNEL)&_IrpSp->Parameters; \
|
||||
_Request->RequestConnectionInformation = (RequestConnectionInfo); \
|
||||
_Request->ReturnConnectionInformation = (ReturnConnectionInfo); \
|
||||
_Request->RequestSpecific = (PVOID)(Time); \
|
||||
}
|
||||
|
||||
/*
|
||||
* VOID TdiBuildDisassociateAddress(
|
||||
* IN PIRP Irp,
|
||||
* IN PDEVICE_OBJECT DevObj,
|
||||
* IN PFILE_OBJECT FileObj,
|
||||
* IN PVOID CompRoutine,
|
||||
* IN PVOID Contxt);
|
||||
*/
|
||||
#define TdiBuildDisassociateAddress( \
|
||||
Irp, DevObj, FileObj, CompRoutine, Contxt) \
|
||||
{ \
|
||||
PIO_STACK_LOCATION _IrpSp; \
|
||||
\
|
||||
_IrpSp = IoGetNextIrpStackLocation(Irp); \
|
||||
\
|
||||
TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
|
||||
Contxt, _IrpSp, TDI_DISASSOCIATE_ADDRESS); \
|
||||
}
|
||||
|
||||
/*
|
||||
* VOID TdiBuildDisconnect(
|
||||
* IN PIRP Irp,
|
||||
* IN PDEVICE_OBJECT DevObj,
|
||||
* IN PFILE_OBJECT FileObj,
|
||||
* IN PVOID CompRoutine,
|
||||
* IN PVOID Contxt,
|
||||
* IN PLARGE_INTEGER Time,
|
||||
* IN PULONG Flags,
|
||||
* IN PTDI_CONNECTION_INFORMATION RequestConnectionInfo,
|
||||
* OUT PTDI_CONNECTION_INFORMATION ReturnConnectionInfo);
|
||||
*/
|
||||
#define TdiBuildDisconnect( \
|
||||
Irp, DevObj, FileObj, CompRoutine, Contxt, Time, \
|
||||
Flags, RequestConnectionInfo, ReturnConnectionInfo) \
|
||||
{ \
|
||||
PTDI_REQUEST_KERNEL _Request; \
|
||||
PIO_STACK_LOCATION _IrpSp; \
|
||||
\
|
||||
_IrpSp = IoGetNextIrpStackLocation(Irp); \
|
||||
\
|
||||
TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
|
||||
Contxt, _IrpSp, TDI_DISCONNECT); \
|
||||
\
|
||||
_Request = (PTDI_REQUEST_KERNEL)&_IrpSp->Parameters; \
|
||||
_Request->RequestConnectionInformation = (RequestConnectionInfo); \
|
||||
_Request->ReturnConnectionInformation = (ReturnConnectionInfo); \
|
||||
_Request->RequestSpecific = (PVOID)(Time); \
|
||||
_Request->RequestFlags = (Flags); \
|
||||
}
|
||||
|
||||
/*
|
||||
* PIRP TdiBuildInternalDeviceControlIrp(
|
||||
* IN CCHAR IrpSubFunction,
|
||||
* IN PDEVICE_OBJECT DeviceObject,
|
||||
* IN PFILE_OBJECT FileObject,
|
||||
* IN PKEVENT Event,
|
||||
* IN PIO_STATUS_BLOCK IoStatusBlock);
|
||||
*/
|
||||
#define TdiBuildInternalDeviceControlIrp( \
|
||||
IrpSubFunction, DeviceObject, \
|
||||
FileObject, Event, IoStatusBlock) \
|
||||
IoBuildDeviceIoControlRequest( \
|
||||
0x00000003, DeviceObject, \
|
||||
NULL, 0, NULL, 0, \
|
||||
TRUE, Event, IoStatusBlock)
|
||||
|
||||
/*
|
||||
* VOID TdiBuildListen(
|
||||
* IN PIRP Irp,
|
||||
* IN PDEVICE_OBJECT DevObj,
|
||||
* IN PFILE_OBJECT FileObj,
|
||||
* IN PVOID CompRoutine,
|
||||
* IN PVOID Contxt,
|
||||
* IN ULONG Flags,
|
||||
* IN PTDI_CONNECTION_INFORMATION RequestConnectionInfo,
|
||||
* OUT PTDI_CONNECTION_INFORMATION ReturnConnectionInfo);
|
||||
*/
|
||||
#define TdiBuildListen( \
|
||||
Irp, DevObj, FileObj, CompRoutine, Contxt, \
|
||||
Flags, RequestConnectionInfo, ReturnConnectionInfo) \
|
||||
{ \
|
||||
PTDI_REQUEST_KERNEL _Request; \
|
||||
PIO_STACK_LOCATION _IrpSp; \
|
||||
\
|
||||
_IrpSp = IoGetNextIrpStackLocation(Irp); \
|
||||
\
|
||||
TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
|
||||
Contxt, _IrpSp, TDI_LISTEN); \
|
||||
\
|
||||
_Request = (PTDI_REQUEST_KERNEL)&_IrpSp->Parameters; \
|
||||
_Request->RequestConnectionInformation = (RequestConnectionInfo); \
|
||||
_Request->ReturnConnectionInformation = (ReturnConnectionInfo); \
|
||||
_Request->RequestFlags = (Flags); \
|
||||
}
|
||||
|
||||
VOID STDCALL TdiBuildNetbiosAddress(
|
||||
IN PUCHAR NetbiosName,
|
||||
IN BOOLEAN IsGroupName,
|
||||
IN OUT PTA_NETBIOS_ADDRESS NetworkName);
|
||||
|
||||
NTSTATUS STDCALL TdiBuildNetbiosAddressEa(
|
||||
IN PUCHAR Buffer,
|
||||
IN BOOLEAN IsGroupName,
|
||||
IN PUCHAR NetbiosName);
|
||||
|
||||
/*
|
||||
* VOID TdiBuildQueryInformation(
|
||||
* IN PIRP Irp,
|
||||
* IN PDEVICE_OBJECT DevObj,
|
||||
* IN PFILE_OBJECT FileObj,
|
||||
* IN PVOID CompRoutine,
|
||||
* IN PVOID Contxt,
|
||||
* IN UINT QType,
|
||||
* IN PMDL MdlAddr);
|
||||
*/
|
||||
#define TdiBuildQueryInformation( \
|
||||
Irp, DevObj, FileObj, CompRoutine, Contxt, QType, MdlAddr) \
|
||||
{ \
|
||||
PTDI_REQUEST_KERNEL_QUERY_INFORMATION _Request; \
|
||||
PIO_STACK_LOCATION _IrpSp; \
|
||||
\
|
||||
_IrpSp = IoGetNextIrpStackLocation(Irp); \
|
||||
\
|
||||
TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
|
||||
Contxt, _IrpSp, TDI_QUERY_INFORMATION); \
|
||||
\
|
||||
_Request = (PTDI_REQUEST_KERNEL_QUERY_INFORMATION)&_IrpSp->Parameters; \
|
||||
_Request->RequestConnectionInformation = NULL; \
|
||||
_Request->QueryType = (ULONG)(QType); \
|
||||
(Irp)->MdlAddress = (MdlAddr); \
|
||||
}
|
||||
|
||||
/*
|
||||
* VOID TdiBuildReceive(
|
||||
* IN PIRP Irp,
|
||||
* IN PDEVICE_OBJECT DevObj,
|
||||
* IN PFILE_OBJECT FileObj,
|
||||
* IN PVOID CompRoutine,
|
||||
* IN PVOID Contxt,
|
||||
* IN PMDL MdlAddr,
|
||||
* IN ULONG InFlags,
|
||||
* IN ULONG ReceiveLen);
|
||||
*/
|
||||
#define TdiBuildReceive( \
|
||||
Irp, DevObj, FileObj, CompRoutine, Contxt, \
|
||||
MdlAddr, InFlags, ReceiveLen) \
|
||||
{ \
|
||||
PTDI_REQUEST_KERNEL_RECEIVE _Request; \
|
||||
PIO_STACK_LOCATION _IrpSp; \
|
||||
\
|
||||
_IrpSp = IoGetNextIrpStackLocation(Irp); \
|
||||
\
|
||||
TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
|
||||
Contxt, _IrpSp, TDI_RECEIVE); \
|
||||
\
|
||||
_Request = (PTDI_REQUEST_KERNEL_RECEIVE)&_IrpSp->Parameters; \
|
||||
_Request->ReceiveFlags = (InFlags); \
|
||||
_Request->ReceiveLength = (ReceiveLen); \
|
||||
(Irp)->MdlAddress = (MdlAddr); \
|
||||
}
|
||||
|
||||
/*
|
||||
* VOID TdiBuildReceiveDatagram(
|
||||
* IN PIRP Irp,
|
||||
* IN PDEVICE_OBJECT DevObj,
|
||||
* IN PFILE_OBJECT FileObj,
|
||||
* IN PVOID CompRoutine,
|
||||
* IN PVOID Contxt,
|
||||
* IN PMDL MdlAddr,
|
||||
* IN ULONG ReceiveLen,
|
||||
* IN PTDI_CONNECTION_INFORMATION ReceiveDatagramInfo,
|
||||
* OUT PTDI_CONNECTION_INFORMATION ReturnInfo,
|
||||
* ULONG InFlags);
|
||||
*/
|
||||
#define TdiBuildReceiveDatagram( \
|
||||
Irp, DevObj, FileObj, CompRoutine, Contxt, MdlAddr, \
|
||||
ReceiveLen, ReceiveDatagramInfo, ReturnInfo, InFlags) \
|
||||
{ \
|
||||
PTDI_REQUEST_KERNEL_RECEIVEDG _Request; \
|
||||
PIO_STACK_LOCATION _IrpSp; \
|
||||
\
|
||||
_IrpSp = IoGetNextIrpStackLocation(Irp); \
|
||||
\
|
||||
TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
|
||||
Contxt, _IrpSp, TDI_RECEIVE_DATAGRAM); \
|
||||
\
|
||||
_Request = (PTDI_REQUEST_KERNEL_RECEIVEDG)&_IrpSp->Parameters; \
|
||||
_Request->ReceiveDatagramInformation = (ReceiveDatagramInfo); \
|
||||
_Request->ReturnDatagramInformation = (ReturnInfo); \
|
||||
_Request->ReceiveLength = (ReceiveLen); \
|
||||
_Request->ReceiveFlags = (InFlags); \
|
||||
(Irp)->MdlAddress = (MdlAddr); \
|
||||
}
|
||||
|
||||
/*
|
||||
* VOID TdiBuildSend(
|
||||
* IN PIRP Irp,
|
||||
* IN PDEVICE_OBJECT DevObj,
|
||||
* IN PFILE_OBJECT FileObj,
|
||||
* IN PVOID CompRoutine,
|
||||
* IN PVOID Contxt,
|
||||
* IN PMDL MdlAddr,
|
||||
* IN ULONG InFlags,
|
||||
* IN ULONG SendLen);
|
||||
*/
|
||||
#define TdiBuildSend( \
|
||||
Irp, DevObj, FileObj, CompRoutine, Contxt, \
|
||||
MdlAddr, InFlags, SendLen) \
|
||||
{ \
|
||||
PTDI_REQUEST_KERNEL_SEND _Request; \
|
||||
PIO_STACK_LOCATION _IrpSp; \
|
||||
\
|
||||
_IrpSp = IoGetNextIrpStackLocation(Irp); \
|
||||
\
|
||||
TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
|
||||
Contxt, _IrpSp, TDI_SEND); \
|
||||
\
|
||||
_Request = (PTDI_REQUEST_KERNEL_SEND)&_IrpSp->Parameters; \
|
||||
_Request->SendFlags = (InFlags); \
|
||||
_Request->SendLength = (SendLen); \
|
||||
(Irp)->MdlAddress = (MdlAddr); \
|
||||
}
|
||||
|
||||
/*
|
||||
* VOID TdiBuildSendDatagram(
|
||||
* IN PIRP Irp,
|
||||
* IN PDEVICE_OBJECT DevObj,
|
||||
* IN PFILE_OBJECT FileObj,
|
||||
* IN PVOID CompRoutine,
|
||||
* IN PVOID Contxt,
|
||||
* IN PMDL MdlAddr,
|
||||
* IN ULONG SendLen,
|
||||
* IN PTDI_CONNECTION_INFORMATION SendDatagramInfo);
|
||||
*/
|
||||
#define TdiBuildSendDatagram( \
|
||||
Irp, DevObj, FileObj, CompRoutine, Contxt, \
|
||||
MdlAddr, SendLen, SendDatagramInfo) \
|
||||
{ \
|
||||
PTDI_REQUEST_KERNEL_SENDDG _Request; \
|
||||
PIO_STACK_LOCATION _IrpSp; \
|
||||
\
|
||||
_IrpSp = IoGetNextIrpStackLocation(Irp); \
|
||||
\
|
||||
TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
|
||||
Contxt, _IrpSp, TDI_SEND_DATAGRAM); \
|
||||
\
|
||||
_Request = (PTDI_REQUEST_KERNEL_SENDDG)&_IrpSp->Parameters; \
|
||||
_Request->SendDatagramInformation = (SendDatagramInfo); \
|
||||
_Request->SendLength = (SendLen); \
|
||||
(Irp)->MdlAddress = (MdlAddr); \
|
||||
}
|
||||
|
||||
/*
|
||||
* VOID TdiBuildSetEventHandler(
|
||||
* IN PIRP Irp,
|
||||
* IN PDEVICE_OBJECT DevObj,
|
||||
* IN PFILE_OBJECT FileObj,
|
||||
* IN PVOID CompRoutine,
|
||||
* IN PVOID Contxt,
|
||||
* IN INT InEventType,
|
||||
* IN PVOID InEventHandler,
|
||||
* IN PVOID InEventContext);
|
||||
*/
|
||||
#define TdiBuildSetEventHandler( \
|
||||
Irp, DevObj, FileObj, CompRoutine, Contxt, \
|
||||
InEventType, InEventHandler, InEventContext) \
|
||||
{ \
|
||||
PTDI_REQUEST_KERNEL_SET_EVENT _Request; \
|
||||
PIO_STACK_LOCATION _IrpSp; \
|
||||
\
|
||||
_IrpSp = IoGetNextIrpStackLocation(Irp); \
|
||||
\
|
||||
TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
|
||||
Contxt, _IrpSp, TDI_SET_EVENT_HANDLER); \
|
||||
\
|
||||
_Request = (PTDI_REQUEST_KERNEL_SET_EVENT)&_IrpSp->Parameters; \
|
||||
_Request->EventType = (InEventType); \
|
||||
_Request->EventHandler = (PVOID)(InEventHandler); \
|
||||
_Request->EventContext = (PVOID)(InEventContext); \
|
||||
}
|
||||
|
||||
/*
|
||||
* VOID TdiBuildSetInformation(
|
||||
* IN PIRP Irp,
|
||||
* IN PDEVICE_OBJECT DevObj,
|
||||
* IN PFILE_OBJECT FileObj,
|
||||
* IN PVOID CompRoutine,
|
||||
* IN PVOID Contxt,
|
||||
* IN UINT SType,
|
||||
* IN PMDL MdlAddr);
|
||||
*/
|
||||
#define TdiBuildSetInformation( \
|
||||
Irp, DevObj, FileObj, CompRoutine, Contxt, SType, MdlAddr) \
|
||||
{ \
|
||||
PTDI_REQUEST_KERNEL_SET_INFORMATION _Request; \
|
||||
PIO_STACK_LOCATION _IrpSp; \
|
||||
\
|
||||
_IrpSp = IoGetNextIrpStackLocation(Irp); \
|
||||
\
|
||||
TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
|
||||
Contxt, _IrpSp, TDI_SET_INFORMATION); \
|
||||
\
|
||||
_Request = (PTDI_REQUEST_KERNEL_SET_INFORMATION)&_IrpSp->Parameters; \
|
||||
_Request->RequestConnectionInformation = NULL; \
|
||||
_Request->SetType = (ULONG)(SType); \
|
||||
(Irp)->MdlAddress = (MdlAddr); \
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* TDI functions */
|
||||
|
||||
/*
|
||||
* VOID TdiCompleteRequest(
|
||||
* IN PIRP Irp,
|
||||
* IN NTSTATUS Status);
|
||||
*/
|
||||
#define TdiCompleteRequest(Irp, Status) \
|
||||
{ \
|
||||
(Irp)->IoStatus.Status = (Status); \
|
||||
IoCompleteRequest((Irp), IO_NETWORK_INCREMENT); \
|
||||
}
|
||||
|
||||
NTSTATUS STDCALL TdiCopyBufferToMdl(
|
||||
IN PVOID SourceBuffer,
|
||||
IN ULONG SourceOffset,
|
||||
IN ULONG SourceBytesToCopy,
|
||||
IN PMDL DestinationMdlChain,
|
||||
IN ULONG DestinationOffset,
|
||||
IN PULONG BytesCopied);
|
||||
|
||||
/*
|
||||
* VOID TdiCopyLookaheadData(
|
||||
* IN PVOID Destination,
|
||||
* IN PVOID Source,
|
||||
* IN ULONG Length,
|
||||
* IN ULONG ReceiveFlags);
|
||||
*/
|
||||
#define TdiCopyLookaheadData(Destination, Source, Length, ReceiveFlags) \
|
||||
RtlCopyMemory(Destination, Source, Length)
|
||||
|
||||
NTSTATUS STDCALL TdiCopyMdlToBuffer(
|
||||
IN PMDL SourceMdlChain,
|
||||
IN ULONG SourceOffset,
|
||||
IN PVOID DestinationBuffer,
|
||||
IN ULONG DestinationOffset,
|
||||
IN ULONG DestinationBufferSize,
|
||||
OUT PULONG BytesCopied);
|
||||
|
||||
VOID STDCALL TdiMapBuffer(
|
||||
IN PMDL MdlChain);
|
||||
|
||||
NTSTATUS STDCALL TdiMapUserRequest(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp,
|
||||
IN PIO_STACK_LOCATION IrpSp);
|
||||
|
||||
VOID STDCALL TdiReturnChainedReceives(
|
||||
IN PVOID *TsduDescriptors,
|
||||
IN ULONG NumberOfTsdus);
|
||||
|
||||
VOID STDCALL TdiUnmapBuffer(
|
||||
IN PMDL MdlChain);
|
||||
|
||||
#endif /* __TDIKRNL_H */
|
||||
|
||||
/* EOF */
|
Loading…
Reference in a new issue