⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iocommon.h

📁 James Antognini和Tom Divine提供的PASSTHRU的编成实例。
💻 H
字号:
#ifndef __IOCOMMON__H
#define __IOCOMMON__H

// Copyright And Configuration Management ----------------------------------
//
//                   User I/O Common Header - iocommon.h
//
//                  Companion Sample Code for the Article
//
//        "Extending the Microsoft PassThru NDIS Intermediate Driver"
//
//    Copyright (c) 2003 Printing Communications Associates, Inc. (PCAUSA)
//                          http://www.pcausa.com
//
// The right to use this code in your own derivative works is granted so long
// as 1.) your own derivative works include significant modifications of your
// own, 2.) you retain the above copyright notices and this paragraph in its
// entirety within sources derived from this code.
// This product includes software developed by PCAUSA. The name of PCAUSA
// may not be used to endorse or promote products derived from this software
// without specific prior written permission.
// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
// WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
//
// End ---------------------------------------------------------------------

#define FSCTL_PTUSERIO_BASE      FILE_DEVICE_NETWORK

#define _PTUSERIO_CTL_CODE(_Function, _Method, _Access)  \
            CTL_CODE(FSCTL_PTUSERIO_BASE, _Function, _Method, _Access)

#define IOCTL_PTUSERIO_ENUMERATE   \
            _PTUSERIO_CTL_CODE(0x201, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
    
#define IOCTL_PTUSERIO_OPEN_ADAPTER   \
            _PTUSERIO_CTL_CODE(0x202, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
    
#define IOCTL_PTUSERIO_QUERY_INFORMATION   \
            _PTUSERIO_CTL_CODE(0x203, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
    
#define IOCTL_PTUSERIO_SET_INFORMATION   \
            _PTUSERIO_CTL_CODE(0x204, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
    
#define IOCTL_PTUSERIO_QUERY_IPv4_BLOCK_STATISTICS   \
            _PTUSERIO_CTL_CODE(0x205, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
    
#define IOCTL_PTUSERIO_RESET_IPv4_BLOCK_STATISTICS   \
            _PTUSERIO_CTL_CODE(0x206, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
    
#define IOCTL_PTUSERIO_SET_IPv4_BLOCK_FILTER   \
            _PTUSERIO_CTL_CODE(0x207, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
    
#define IOCTL_PTUSERIO_QUERY_IPv6_BLOCK_STATISTICS   \
            _PTUSERIO_CTL_CODE(0x208, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
    
#define IOCTL_PTUSERIO_RESET_IPv6_BLOCK_STATISTICS   \
            _PTUSERIO_CTL_CODE(0x209, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
    
#define IOCTL_PTUSERIO_SET_IPv6_BLOCK_FILTER   \
            _PTUSERIO_CTL_CODE(0x20A, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
    
/////////////////////////////////////////////////////////////////////////////
//                     IP Block Definitions and Structures                 //
/////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////
//// SPECIFY STRUCTURE PACKING

#pragma pack(push,4)

typedef
struct _IPv4AddrStats
{
   ULONG    MPSendPktsCt;      // Packets through MPSendPackets.
   ULONG    MPSendPktsDropped; // Packets dropped in MPSendPackets.
   ULONG    PTRcvCt;           // Packets through PTReceive.
   ULONG    PTRcvDropped;      // Packets dropped in PTReceive.
   ULONG    PTRcvPktCt;        // Packets through PTReceivePacket.
   ULONG    PTRcvPktDropped;   // Packets dropped in PTReceivePacket.
}
   IPv4AddrStats, *PIPv4AddrStats;

typedef
struct _PassthruStatistics
{
    // Number of array elements.
    ULONG         NumberElements;

    // The statistics.
    IPv4AddrStats Stats;
}
   PassthruStatistics, *PPassthruStatistics;

typedef
struct _IPv4BlockAddrArray
{
    // Number of array elements.
    ULONG NumberElements;

    // The array.
    ULONG IPAddrArray[1];
}
   IPv4BlockAddrArray, *PIPv4BlockAddrArray, **HIPv4BlockAddrArray;

/////////////////////////////////////////////////////////////////////////////
//// REVERT TO DEFAULT STRUCTURE PACKING

#pragma pack(pop)

#endif // __IOCOMMON__H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -