📄 ndishapi.h
字号:
#ifndef __NDISHAPI_H__
#define __NDISHAPI_H__
/* Header For IOCTL's
---------------------
* This header references the CTL_CODE macro and the METHOD_XYZ definitions.
* These are defined in the VC/SDK WinIoctl.h header for applications and
* in the DDK DevIoctl.h for drivers. Unfortunately, including WinIoctl.h
* when compiling a NT device drivers causes problems.
*
* The following preprocessor directive includes the <WinIoctl.h> header
* when compiling a Win32 application or DLL. The driver includes DevIoctl.h
* through a different mechanism.
*/
#ifdef _WINDOWS
#include <WinIoctl.h> // Compiling Win32 Applications Or DLL's
#endif // _WINDOWS
#include "PCAEnet.h"
#include "W32Ndis.h"
/////////////////////////////////////////////////////////////////////////////
//// INCLUDE FILES
// Copyright And Configuration Management ----------------------------------
//
// PCANDIS Protocol Driver IOCTL Codes - NdisHApi.H
//
// Win32 NDIS Framework (WinDis 32)
// For
// Windows NT And Windows 9X
//
// Copyright (c) 1995-2001, Printing Communications Associates, Inc.
// http://www.pcausa.com
//
// Thomas F. Divine
// 4201 Brunswick Court
// Smyrna, Georgia 30080 USA
// (770) 432-4580
// mailto:tdivine@pcausa.com
//
//
//
// End ---------------------------------------------------------------------
//
// PCANDIS Transport Name Strings
//
#define PCANDIS3_BASE_NAME_A "ZDNDIS3"
#define PCANDIS3_BASE_NAME_W L"ZDNDIS3"
#define PCANDIS3_PROTOCOL_NAME_A PCANDIS3_BASE_NAME_A
#define PCANDIS3_PROTOCOL_NAME_W PCANDIS3_BASE_NAME_W
#define PCANDIS3_DISPLAY_NAME_A "ZDNDIS3 Protocol Driver"
#define PCANDIS3_DISPLAY_NAME_W L"ZDNDIS3 Protocol Driver"
#define PCANDIS4_BASE_NAME_A "ZDNDIS4"
#define PCANDIS4_BASE_NAME_W L"ZDNDIS4"
#define PCANDIS4_PROTOCOL_NAME_A PCANDIS4_BASE_NAME_A
#define PCANDIS4_PROTOCOL_NAME_W PCANDIS4_BASE_NAME_W
#define PCANDIS4_DISPLAY_NAME_A "ZDNDIS4 Protocol Driver"
#define PCANDIS4_DISPLAY_NAME_W L"ZDNDIS4 Protocol Driver"
#define PCANDIS4_DEVICE_NAME_A "\\Device\\ZDNDIS4"
#define PCANDIS4_DEVICE_NAME_W L"\\Device\\ZDNDIS4"
#define PCANDIS5_BASE_NAME_A "ZDNDIS5"
#define PCANDIS5_BASE_NAME_W L"ZDNDIS5"
#define PCANDIS5_PROTOCOL_NAME_A PCANDIS5_BASE_NAME_A
#define PCANDIS5_PROTOCOL_NAME_W PCANDIS5_BASE_NAME_W
#define PCANDIS5_DISPLAY_NAME_A "ZDNDIS5 Protocol Driver"
#define PCANDIS5_DISPLAY_NAME_W L"ZDNDIS5 Protocol Driver"
#define PCANDIS5_DEVICE_NAME_A "\\Device\\ZDNDIS5"
#define PCANDIS5_DEVICE_NAME_W L"\\Device\\ZDNDIS5"
#ifdef UNICODE
#define PCANDIS3_BASE_NAME PCANDIS3_BASE_NAME_W
#define PCANDIS3_PROTOCOL_NAME PCANDIS3_BASE_NAME_W
#define PCANDIS3_DISPLAY_NAME PCANDIS3_DISPLAY_NAME_W
#define PCANDIS4_BASE_NAME PCANDIS4_BASE_NAME_W
#define PCANDIS4_PROTOCOL_NAME PCANDIS4_BASE_NAME_W
#define PCANDIS4_DISPLAY_NAME PCANDIS4_DISPLAY_NAME_W
#define PCANDIS4_DEVICE_NAME PCANDIS4_DEVICE_NAME_W
#define PCANDIS5_BASE_NAME PCANDIS5_BASE_NAME_W
#define PCANDIS5_PROTOCOL_NAME PCANDIS5_BASE_NAME_W
#define PCANDIS5_DISPLAY_NAME PCANDIS5_DISPLAY_NAME_W
#define PCANDIS5_DEVICE_NAME PCANDIS5_DEVICE_NAME_W
#else
#define PCANDIS3_BASE_NAME PCANDIS3_BASE_NAME_A
#define PCANDIS3_PROTOCOL_NAME PCANDIS3_BASE_NAME_A
#define PCANDIS3_DISPLAY_NAME PCANDIS3_DISPLAY_NAME_A
#define PCANDIS4_BASE_NAME PCANDIS4_BASE_NAME_A
#define PCANDIS4_PROTOCOL_NAME PCANDIS4_BASE_NAME_A
#define PCANDIS4_DISPLAY_NAME PCANDIS4_DISPLAY_NAME_A
#define PCANDIS4_DEVICE_NAME PCANDIS4_DEVICE_NAME_A
#define PCANDIS5_BASE_NAME PCANDIS5_BASE_NAME_A
#define PCANDIS5_PROTOCOL_NAME PCANDIS5_BASE_NAME_A
#define PCANDIS5_DISPLAY_NAME PCANDIS5_DISPLAY_NAME_A
#define PCANDIS5_DEVICE_NAME PCANDIS4_DEVICE_NAME_A
#endif
//
// WinDis 32 API Version Information
// ---------------------------------
// Make sure that this is coordinated with information in the VERSION
// resource.
//
#define PCANDIS_API_VERSION 0x05000D32
/////////////////////////////////////////////////////////////////////////////
//// Linked List Definitions And Macros
//
// Modeled after Kernel-Mode/NDIS LIST_ENTRY functionality
typedef
struct _W32N_LIST_ENTRY
{
struct _W32N_LIST_ENTRY *Flink;
struct _W32N_LIST_ENTRY *Blink;
}
W32N_LIST_ENTRY, *PW32N_LIST_ENTRY;
//
// VOID
// W32N_InitListHead(
// PW32N_LIST_ENTRY ListHead
// );
//
#define W32N_InitListHead(ListHead) (\
(ListHead)->Flink = (ListHead)->Blink = (ListHead) )
//
// BOOLEAN
// W32N_IsListEmpty(
// PW32N_LIST_ENTRY ListHead
// );
//
#define W32N_IsListEmpty(ListHead) (\
( ((ListHead)->Flink == (ListHead)) ? TRUE : FALSE ) )
//
// PW32N_LIST_ENTRY
// W32N_RemoveHeadList(
// PW32N_LIST_ENTRY ListHead
// );
//
#define W32N_RemoveHeadList(ListHead) \
(ListHead)->Flink;\
{\
PW32N_LIST_ENTRY FirstEntry;\
FirstEntry = (ListHead)->Flink;\
FirstEntry->Flink->Blink = (ListHead);\
(ListHead)->Flink = FirstEntry->Flink;\
}
//
// PW32N_LIST_ENTRY
// W32N_RemoveTailList(
// PW32N_LIST_ENTRY ListHead
// );
//
#define W32N_RemoveTailList(ListHead) \
(ListHead)->Blink;\
{W32N_RemoveEntryList((ListHead)->Blink)}
//
// VOID
// W32N_RemoveEntryList(
// PW32N_LIST_ENTRY Entry
// );
//
#define W32N_RemoveEntryList(Entry) {\
PW32N_LIST_ENTRY _EX_Entry;\
_EX_Entry = (Entry);\
_EX_Entry->Blink->Flink = _EX_Entry->Flink;\
_EX_Entry->Flink->Blink = _EX_Entry->Blink;\
}
//
// VOID
// W32N_InsertTailList(
// PW32N_LIST_ENTRY ListHead,
// PW32N_LIST_ENTRY Entry
// );
//
#define W32N_InsertTailList(ListHead,Entry) \
(Entry)->Flink = (ListHead);\
(Entry)->Blink = (ListHead)->Blink;\
(ListHead)->Blink->Flink = (Entry);\
(ListHead)->Blink = (Entry)
//
// VOID
// W32N_InsertHeadList(
// PW32N_LIST_ENTRY ListHead,
// PW32N_LIST_ENTRY Entry
// );
//
#define W32N_InsertHeadList(ListHead,Entry) \
(Entry)->Flink = (ListHead)->Flink;\
(Entry)->Blink = (ListHead);\
(ListHead)->Flink->Blink = (Entry);\
(ListHead)->Flink = (Entry)
/////////////////////////////////////////////////////////////////////////////
//// Function Codes For PCANDIS Protocol (Transport) Driver
//
// Passed in AL register on DeviceioControl call.
// Macros and public IOCTL device codes are defined in WINIOCTL.H.
//
#define FILE_DEVICE_PROTOCOL 0x8000
#define IOCTL_PCANDIS_BASE FILE_DEVICE_PROTOCOL
#define IOCTL_PCANDIS_BIND_ADAPTER\
CTL_CODE(IOCTL_PCANDIS_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PCANDIS_UNBIND_ADAPTER\
CTL_CODE(IOCTL_PCANDIS_BASE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PCANDIS_OPEN_ADAPTER\
CTL_CODE(IOCTL_PCANDIS_BASE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PCANDIS_CLOSE_ADAPTER\
CTL_CODE(IOCTL_PCANDIS_BASE, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PCANDIS_REQUEST\
CTL_CODE(IOCTL_PCANDIS_BASE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -