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

📄 jwalpmapi.pas

📁 比较全面的win32api开发包
💻 PAS
📖 第 1 页 / 共 4 页
字号:

//#define errspec4_enode  errs_u.errs_ipv4.errs_errnode
//#define errspec4_code   errs_u.errs_ipv4.errs_code
//#define errspec4_value  errs_u.errs_ipv4.errs_value
//#define errspec4_flags  errs_u.errs_ipv4.errs_flags

(*
 *  POLICY_DATA object class
 *
 *      Contents are Opaque RSVP/SBM
 *)

const
  ctype_POLICY_DATA = 1;
  {$EXTERNALSYM ctype_POLICY_DATA}

type
  POLICY_DATA = record
    PolicyObjHdr: RsvpObjHdr;
    usPeOffset: USHORT;     // Offset to the start of Policy Elements from the begining of Policy Data
    usReserved: USHORT;
  end;
  {$EXTERNALSYM POLICY_DATA}
  TPolicyData = POLICY_DATA;
  PPolicyData = ^POLICY_DATA;

const
  PD_HDR_LEN  = SizeOf(POLICY_DATA);
  {$EXTERNALSYM PD_HDR_LEN}

type
  POLICY_ELEMENT = record
    usPeLength: USHORT;     // Policy Element length
    usPeType: USHORT;       // Policy Element type
    ucPeData: array [0..3] of UCHAR;    // Just a place holder to the start of Policy Element data
  end;
  {$EXTERNALSYM POLICY_ELEMENT}
  TPolicyElement = POLICY_ELEMENT;
  PPolicyElement = ^POLICY_ELEMENT;

const
  PE_HDR_LEN = 2 * SizeOf(USHORT);
  {$EXTERNALSYM PE_HDR_LEN}

(**************************************************************************
 *
 *  Int-Serv Data Structures
 *
 **************************************************************************)

(*
 *  Service numbers
 *)

const
  GENERAL_INFO          = 1;
  {$EXTERNALSYM GENERAL_INFO}
  GUARANTEED_SERV       = 2;
  {$EXTERNALSYM GUARANTEED_SERV}
  PREDICTIVE_SERV       = 3;
  {$EXTERNALSYM PREDICTIVE_SERV}
  CONTROLLED_DELAY_SERV = 4;
  {$EXTERNALSYM CONTROLLED_DELAY_SERV}
  CONTROLLED_LOAD_SERV  = 5;
  {$EXTERNALSYM CONTROLLED_LOAD_SERV}
  QUALITATIVE_SERV      = 6;
  {$EXTERNALSYM QUALITATIVE_SERV}

(*
 *  Well-known parameter IDs
 *)

const
  IS_WKP_HOP_CNT =        4;
  {$EXTERNALSYM IS_WKP_HOP_CNT}
  IS_WKP_PATH_BW =        6;
  {$EXTERNALSYM IS_WKP_PATH_BW}
  IS_WKP_MIN_LATENCY =    8;
  {$EXTERNALSYM IS_WKP_MIN_LATENCY}
  IS_WKP_COMPOSED_MTU =   10;
  {$EXTERNALSYM IS_WKP_COMPOSED_MTU}
  IS_WKP_TB_TSPEC =       127; (* Token-bucket TSPEC parm *)
  {$EXTERNALSYM IS_WKP_TB_TSPEC}
  IS_WKP_Q_TSPEC =        128;
  {$EXTERNALSYM IS_WKP_Q_TSPEC}

type
  int_serv_wkp = DWORD;
  {$EXTERNALSYM int_serv_wkp}
  TIntServWkp = int_serv_wkp;

(*
 *  Int-serv Main header
 *)

  IntServMainHdr = record
    ismh_version: UCHAR;    // Version
    ismh_unused: UCHAR;
    ismh_len32b: USHORT;    // # 32-bit words excluding this hdr
  end;
  {$EXTERNALSYM IntServMainHdr}
  TIntServMainHdr = IntServMainHdr;
  PIntServMainHdr = ^IntServMainHdr;

const
  INTSERV_VERS_MASK   = $f0;
  {$EXTERNALSYM INTSERV_VERS_MASK}
  INTSERV_VERSION0    = 0;
  {$EXTERNALSYM INTSERV_VERSION0}

function Intserv_Version(x: DWORD): DWORD;
{$EXTERNALSYM Intserv_Version}
function Intserv_Version_OK(const x: TIntServMainHdr): Boolean;
{$EXTERNALSYM Intserv_Version_OK}

// Convert ishm_length to equivalent RSVP object size, for checking

function Intserv_Obj_size(const x: TIntServMainHdr): DWORD;
{$EXTERNALSYM Intserv_Obj_size}

(*
 *  Int-serv Service Element Header
 *)

// Flag: Break bit

const
  ISSH_BREAK_BIT = $80;
  {$EXTERNALSYM ISSH_BREAK_BIT}

type
  IntServServiceHdr = record
    issh_service: UCHAR;   // Service number
    issh_flags: UCHAR;     // Flag byte
    issh_len32b: USHORT;    // #32-bit words excluding this hdr
  end;
  {$EXTERNALSYM IntServServiceHdr}
  TIntServServiceHdr = IntServServiceHdr;
  PIntServServiceHdr = ^IntServServiceHdr;

function Issh_len32b(const p: TIntServServiceHdr): USHORT;
{$EXTERNALSYM Issh_len32b}

(*
 *  Int-serv Parameter Element Header
 *)

const
  ISPH_FLG_INV = $80; // Flag: Invalid
  {$EXTERNALSYM ISPH_FLG_INV}

type
  IntServParmHdr = record
    isph_parm_num: UCHAR;  // Parameter number
    isph_flags: UCHAR;     // Flags
    isph_len32b: USHORT;    // #32-bit words excluding this hdr
  end;
  {$EXTERNALSYM IntServParmHdr}
  TIntServParmHdr = IntServParmHdr;
  PIntServParmHdr = ^IntServParmHdr;

{
function Next_Main_Hdr(const p: TIntServMainHdr): PIntServMainHdr;
begin
   TODO (IntServMainHdr *)((ULONG *)(p)+1+(p)->ismh_len32b)
end;

function Next_Serv_Hdr(const p: TIntServMainHdr): ULONG;
begin
   TODO (IntServServiceHdr *)((ULONG *)(p)+1+(p)->issh_len32b)
end;

function Next_Parm_Hdr(const p: TIntServParmHdr): ULONG;
begin
   TODO (IntServParmHdr *)((ULONG *)(p)+1+(p)->isph_len32b)
end;
}

(*
 *  Generic Tspec Parameters
 *)

type
  GenTspecParms = record
    TB_Tspec_r: FLOAT;     // Token bucket rate (B/sec)
    TB_Tspec_b: FLOAT;     // Token bucket depth (B)
    TB_Tspec_p: FLOAT;     // Peak data rate (B/sec)
    TB_Tspec_m: ULONG;     // Min Policed Unit (B)
    TB_Tspec_M_: ULONG;     // Max pkt size (B)
  end;
  {$EXTERNALSYM GenTspecParms}
  TGenTspecParms = GenTspecParms;
  PGenTspecParms = ^GenTspecParms;

(*
 *  Generic Tspec
 *)

  GenTspec = record
    gen_Tspec_serv_hdr: IntServServiceHdr; // (GENERAL_INFO, length)
    gen_Tspec_parm_hdr: IntServParmHdr; // (IS_WKP_TB_TSPEC)
    gen_Tspec_parms: GenTspecParms;
  end;
  {$EXTERNALSYM GenTspec}
  TGenTspec = GenTspec;
  PGenTspec = ^GenTspec;

//#define gtspec_r        gen_Tspec_parms.TB_Tspec_r
//#define gtspec_b        gen_Tspec_parms.TB_Tspec_b
//#define gtspec_m        gen_Tspec_parms.TB_Tspec_m
//#define gtspec_M        gen_Tspec_parms.TB_Tspec_M
//#define gtspec_p        gen_Tspec_parms.TB_Tspec_p
//#define gtspec_parmno   gen_Tspec_parm_hdr.isph_parm_num
//#define gtspec_flags    gen_Tspec_parm_hdr.isph_flags

//#define gtspec_len      (sizeof(GenTspec) - sizeof(IntServServiceHdr))

(* contents of qualitative tspec *)

type
  QualTspecParms = record
    TB_Tspec_M: ULONG;     // Max pkt size (M)
  end;
  {$EXTERNALSYM QualTspecParms}
  TQualTspecParms = QualTspecParms;
  PQualTspecParms = ^QualTspecParms;

  QualTspec = record
    qual_Tspec_serv_hdr: IntServServiceHdr; // (QUALITATIVE_SERV, length)
    qual_Tspec_parm_hdr: IntServParmHdr; // (IS_WKP_Q_TSPEC)
    qual_Tspec_parms: QualTspecParms;
  end;
  {$EXTERNALSYM QualTspec}
  TQualTspec = QualTspec;
  PQualTspec = ^QualTspec;

  QualAppFlowSpec = record
    Q_spec_serv_hdr: IntServServiceHdr;    // (QUALITATIVE_SERV,0,len)
    Q_spec_parm_hdr: IntServParmHdr;    // (IS_WKP_Q_TSPEC)
    Q_spec_parms: QualTspecParms;       // QUALITATIVE Tspec parameters
  end;
  {$EXTERNALSYM QualAppFlowSpec}
  TQualAppFlowSpec = QualAppFlowSpec;
  PQualAppFlowSpec = ^QualAppFlowSpec;

//#define QAspec_M        Q_spec_parms.TB_Tspec_M

(*
 *  Contents of int-serv Tspec
 *)

  IntServTspecBody = record
    st_mh: IntServMainHdr;
    case Integer of
      0: (gen_stspec: GenTspec); // Generic Tspec
      1: (qual_stspec: QualTspec);
  end;
  {$EXTERNALSYM IntServTspecBody}
  TIntServTspecBody = IntServTspecBody;
  PIntServTspecBody = ^IntServTspecBody;

(*
 *  SENDER_TSPEC class object
 *)

const
  ctype_SENDER_TSPEC = 2;
  {$EXTERNALSYM ctype_SENDER_TSPEC}

type
  SENDER_TSPEC = record
    stspec_header: RsvpObjHdr;
    stspec_body: IntServTspecBody;
  end;
  {$EXTERNALSYM SENDER_TSPEC}
  TSenderTSpec = SENDER_TSPEC;
  PSenderTSpec = ^SENDER_TSPEC;

(*
 *  Controlled-Load Flowspec
 *)

  CtrlLoadFlowspec = record
    CL_spec_serv_hdr: IntServServiceHdr;    // (CONTROLLED_LOAD_SERV,0,len)
    CL_spec_parm_hdr: IntServParmHdr;    // (IS_WKP_TB_TSPEC)
    CL_spec_parms: GenTspecParms;       // GENERIC Tspec parameters
  end;
  {$EXTERNALSYM CtrlLoadFlowspec}
  TCtrlLoadFlowspec = CtrlLoadFlowspec;
  PCtrlLoadFlowspec = ^CtrlLoadFlowspec;

//#define CLspec_r        CL_spec_parms.TB_Tspec_r
//#define CLspec_b        CL_spec_parms.TB_Tspec_b
//#define CLspec_p        CL_spec_parms.TB_Tspec_p
//#define CLspec_m        CL_spec_parms.TB_Tspec_m
//#define CLspec_M        CL_spec_parms.TB_Tspec_M
//#define CLspec_parmno   CL_spec_parm_hdr.isph_parm_num
//#define CLspec_flags    CL_spec_parm_hdr.isph_flags
//#define CLspec_len32b   CL_spec_parm_hdr.isph_len32b

//#define CLspec_len      (sizeof(CtrlLoadFlowspec) - sizeof(IntServServiceHdr))

(*  Service-specific Parameter IDs
 *)

const
  IS_GUAR_RSPEC     = 130;
  {$EXTERNALSYM IS_GUAR_RSPEC}

  GUAR_ADSPARM_C    = 131;
  {$EXTERNALSYM GUAR_ADSPARM_C}
  GUAR_ADSPARM_D    = 132;
  {$EXTERNALSYM GUAR_ADSPARM_D}
  GUAR_ADSPARM_Ctot = 133;
  {$EXTERNALSYM GUAR_ADSPARM_Ctot}
  GUAR_ADSPARM_Dtot = 134;
  {$EXTERNALSYM GUAR_ADSPARM_Dtot}
  GUAR_ADSPARM_Csum = 135;
  {$EXTERNALSYM GUAR_ADSPARM_Csum}
  GUAR_ADSPARM_Dsum = 136;
  {$EXTERNALSYM GUAR_ADSPARM_Dsum}

(*
 *  Guaranteed Rspec parameters
 *)

type
  GuarRspec = record
    Guar_R: FLOAT;         //  Guaranteed Rate B/s
    Guar_S: ULONG;         //  Slack term secs
  end;
  {$EXTERNALSYM GuarRspec}
  TGuarRspec = GuarRspec;
  PGuarRspec = ^GuarRspec;

(*
 *  Guaranteed Flowspec
 *)

  GuarFlowSpec = record
    Guar_serv_hdr: IntServServiceHdr;      // (GUARANTEED, 0, length)
    Guar_Tspec_hdr: IntServParmHdr;     // (IS_WKP_TB_TSPEC,)
    Guar_Tspec_parms: GenTspecParms;   // GENERIC Tspec parms
    Guar_Rspec_hdr: IntServParmHdr;     // (IS_GUAR_RSPEC)
    Guar_Rspec: GuarRspec;         // Guaranteed rate (B/sec)
  end;
  {$EXTERNALSYM GuarFlowSpec}
  TGuarFlowSpec = GuarFlowSpec;
  PGuarFlowSpec = ^GuarFlowSpec;

//#define Gspec_r         Guar_Tspec_parms.TB_Tspec_r
//#define Gspec_b         Guar_Tspec_parms.TB_Tspec_b
//#define Gspec_p         Guar_Tspec_parms.TB_Tspec_p
//#define Gspec_m         Guar_Tspec_parms.TB_Tspec_m
//#define Gspec_M         Guar_Tspec_parms.TB_Tspec_M
//#define Gspec_R         Guar_Rspec.Guar_R
//#define Gspec_S         Guar_Rspec.Guar_S
//#define Gspec_T_parmno  Guar_Tspec_hdr.isph_parm_num
//#define Gspec_T_flags   Guar_Tspec_hdr.isph_flags
//#define Gspec_R_parmno  Guar_Rspec_hdr.isph_parm_num
//#define Gspec_R_flags   Guar_Rspec_hdr.isph_flags

//#define Gspec_len       (sizeof(GuarFlowSpec) - sizeof(IntServServiceHdr))

(*
 *  Contents of int-serv flowspec
 *)

type
  IntServFlowSpec = record
    spec_mh: IntServMainHdr;
    case Integer of
        0: (CL_spec: CtrlLoadFlowspec);   // Controlled-Load service
        1: (G_spec: GuarFlowSpec);    // Guaranteed service
        2: (Q_spec: QualAppFlowSpec);
  end;
  {$EXTERNALSYM IntServFlowSpec}
  TIntServFlowSpec = IntServFlowSpec;
  PIntServFlowSpec = ^IntServFlowSpec;

//#define ISmh_len32b     spec_mh.ismh_len32b
//#define ISmh_version    spec_mh.ismh_version
//#define ISmh_unused     spec_mh.ismh_unused

(*
 *  Int-Serv FLOWSPEC object
 *)

const
  ctype_FLOWSPEC_Intserv0 = 2; // The int-serv flowspec (v.0)
  {$EXTERNALSYM ctype_FLOWSPEC_Intserv0}

type
  IS_FLOWSPEC = record
    flow_header: RsvpObjHdr;
    flow_body: IntServFlowSpec;
  end;
  {$EXTERNALSYM IS_FLOWSPEC}
  TIsFlowSpec = IS_FLOWSPEC;
  PIsFlowSpec = ^IS_FLOWSPEC;

(*
 *  FLOW DESCRIPTOR
 *)

  FLOW_DESC = record
    u1: record
    case Integer of
      0: (stspec: ^SENDER_TSPEC);
      1: (isflow: ^IS_FLOWSPEC);
    end;
    u2: record
    case Integer of
      0: (stemp: ^SENDER_TEMPLATE);
      1: (fspec: ^FILTER_SPEC);
    end;
  end;
  {$EXTERNALSYM FLOW_DESC}
  TFlowDesc = FLOW_DESC;

⌨️ 快捷键说明

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