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

📄 jwaqossp.pas

📁 比较全面的win32api开发包
💻 PAS
📖 第 1 页 / 共 3 页
字号:
    ObjectHdr: QOS_OBJECT_HDR; // Object Hdr
    StatusCode: ULONG; // Error or Status Information see Winsock2.h
    ExtendedStatus1: ULONG; // Provider specific status extension
    ExtendedStatus2: ULONG; // Provider specific status extension
  end;
  {$EXTERNALSYM _RSVP_STATUS_INFO}
  RSVP_STATUS_INFO = _RSVP_STATUS_INFO;
  {$EXTERNALSYM RSVP_STATUS_INFO}
  TRsvpStatusInfo = RSVP_STATUS_INFO;
  PRsvpStatusInfo = LPRSVP_STATUS_INFO;

  LPCRSVP_STATUS_INFO = ^RSVP_STATUS_INFO;
  {$EXTERNALSYM LPCRSVP_STATUS_INFO}

(*
 * QOS_DestAddr structure -- used for WSAIoctl(SIO_SET_QOS) when we
 * do not want to issue a connect for a sending socket.  The destination
 * address is required so we can generate the session information for
 * RSVP signalling.
*)

  LPQOS_DESTADDR = ^QOS_DESTADDR;
  {$EXTERNALSYM LPQOS_DESTADDR}
  _QOS_DESTADDR = record
    ObjectHdr: QOS_OBJECT_HDR; // Object header
    SocketAddress: PSockAddr; // Destination socket address
    SocketAddressLength: ULONG; // Length of the address structure
  end;
  {$EXTERNALSYM _QOS_DESTADDR}
  QOS_DESTADDR = _QOS_DESTADDR;
  {$EXTERNALSYM QOS_DESTADDR}
  TQosDestAddr = QOS_DESTADDR;
  PQosDestAddr = LPQOS_DESTADDR;

  LPCQOS_DESTADDR = ^QOS_DESTADDR;
  {$EXTERNALSYM LPCQOS_DESTADDR}

(*
 * this structure defines the "General Characterization Parameters" contained in
 * the RSVP Adspec object
 *)

  LPAD_GENERAL_PARAMS = ^AD_GENERAL_PARAMS;
  {$EXTERNALSYM LPAD_GENERAL_PARAMS}
  _AD_GENERAL_PARAMS = record
    IntServAwareHopCount: ULONG; // number of hops that conform to
    // Integrated Services requirements *)
    PathBandwidthEstimate: ULONG; // minimum bandwidth available from
    // sender to receiver *)
    MinimumLatency: ULONG; // sum of minimum latency of the packet
    // forwarding process in routers
    // (in usec)*)
    PathMTU: ULONG; // max transmission unit end to end that
    // will not incur fragmentation *)
    Flags: ULONG; // used to hold break bits.*)
  end;
  {$EXTERNALSYM _AD_GENERAL_PARAMS}
  AD_GENERAL_PARAMS = _AD_GENERAL_PARAMS;
  {$EXTERNALSYM AD_GENERAL_PARAMS}
  TAdGeneralParams = AD_GENERAL_PARAMS;
  PAdGeneralParams = LPAD_GENERAL_PARAMS;

(*
 * Minimum Latency may be set to this "undefined" value
 *)

const
  INDETERMINATE_LATENCY = DWORD($FFFFFFFF);
  {$EXTERNALSYM INDETERMINATE_LATENCY}

(*
 * This Flag is used to indicate the existence of a network element not 
 * supporting  QoS control services somewhere in the data path. If this bit 
 * is set in the specific service override then it indicates that that
 * service was not supported at at least one hop.
 *)

  AD_FLAG_BREAK_BIT = $00000001;
  {$EXTERNALSYM AD_FLAG_BREAK_BIT}

(*
 * this structure describes the Guaranteed service parameters
 *)

type
  LPAD_GUARANTEED = ^AD_GUARANTEED;
  {$EXTERNALSYM LPAD_GUARANTEED}
  _AD_GUARANTEED = record
    CTotal: ULONG;
    DTotal: ULONG;
    CSum: ULONG;
    DSum: ULONG;
  end;
  {$EXTERNALSYM _AD_GUARANTEED}
  AD_GUARANTEED = _AD_GUARANTEED;
  {$EXTERNALSYM AD_GUARANTEED}
  TAdGuaranteed = AD_GUARANTEED;
  PAdGuaranteed = LPAD_GUARANTEED;

(*
 * this structure describes the format of the parameter buffer that can be
 * included in the Service_Type structure below.  This structure allows an
 * application to include any valid Int Serv service parameter in the Buffer 
 * value, after providing the Int Serv parameter id in the ParameterId field.
 *)

  LPPARAM_BUFFER = ^PARAM_BUFFER;
  {$EXTERNALSYM LPPARAM_BUFFER}
  _PARAM_BUFFER = record
    ParameterId: ULONG; // Int Server parameter ID
    Length: ULONG; // total length of this structure
    // ( 8 bytes + length of Buffer )
    Buffer: array [0..1 - 1] of UCHAR; // Paramter itself
  end;
  {$EXTERNALSYM _PARAM_BUFFER}
  PARAM_BUFFER = _PARAM_BUFFER;
  {$EXTERNALSYM PARAM_BUFFER}
  TParamBuffer = PARAM_BUFFER;
  PParamBuffer = LPPARAM_BUFFER;


(*
 * this structure contains the service types supported
 *)

  LPCONTROL_SERVICE = ^CONTROL_SERVICE;
  {$EXTERNALSYM LPCONTROL_SERVICE}
  _CONTROL_SERVICE = record

    //
    // the length of this entire structure including the following buffer.
    // This length value can be added to the ptr to the structure to get the ptr
    // to the next SERVICE_TYPE structure in the list, until the
    // NumberOfServices count has been exhausted.
    //

    Length: ULONG;
    Service: SERVICETYPE;
    Overrides: AD_GENERAL_PARAMS;

    //
    // service specific information ( controlled load has no service specific
    // info here )
    //

    case Integer of
      0: (Guaranteed: AD_GUARANTEED);
      1: (ParamBuffer: array [0..0] of PARAM_BUFFER); // allows for other services down the road

  end;
  {$EXTERNALSYM _CONTROL_SERVICE}
  CONTROL_SERVICE = _CONTROL_SERVICE;
  {$EXTERNALSYM CONTROL_SERVICE}
  TControlService = CONTROL_SERVICE;
  PControlService = LPCONTROL_SERVICE;

(*
 * This structure defines the information which is carried in the Rsvp 
 * Adspec.  This Rsvp object typically indicates which service types are 
 * available ( Controlled Load and/or Guaranteed Service ), if a non-Rsvp
 * hop has been encountered by the Path message, and the minumum MTU along 
 * the path. The services array indicates which services are supported
 *)

  LPRSVP_ADSPEC = ^RSVP_ADSPEC;
  {$EXTERNALSYM LPRSVP_ADSPEC}
  _RSVP_ADSPEC = record
    ObjectHdr: QOS_OBJECT_HDR;
    GeneralParams: AD_GENERAL_PARAMS; // contains the general characterization paramters
    NumberOfServices: ULONG; // count of the number of services
    Services: array [0..0] of CONTROL_SERVICE; // a list of the services supported/requested
  end;
  {$EXTERNALSYM _RSVP_ADSPEC}
  RSVP_ADSPEC = _RSVP_ADSPEC;
  {$EXTERNALSYM RSVP_ADSPEC}
  TRsvpAdSpec = RSVP_ADSPEC;
  PRsvpAdSpec = LPRSVP_ADSPEC;

//
// Opcode for the SIO_CHK_QOS ioctl
// (specific for the Microsoft QOS Service Provider
//
// Bascially:
//
// SIO_CHK_QOS = _WSAIORW(IOC_VENDOR,1)
//             = mIOC_IN | mIOC_OUT | mIOC_VENDOR | mCOMPANY | ioctl_code
//    where
//         mIOC_IN     = 0x80000000
//         mIOC_OUT    = 0x40000000
//         mIOC_VENDOR = 0x04000000
//         mCOMPANY    = 0x18000000
//         ioctl_code  = 0x00000001
//         
// See WSAIoctl man page for details.
//

const
  mIOC_IN     = DWORD($80000000);
  {$EXTERNALSYM mIOC_IN}
  mIOC_OUT    = $40000000;
  {$EXTERNALSYM mIOC_OUT}
  mIOC_VENDOR = $04000000;
  {$EXTERNALSYM mIOC_VENDOR}
  mCOMPANY    = $18000000;
  {$EXTERNALSYM mCOMPANY}
  ioctl_code  = $00000001;
  {$EXTERNALSYM ioctl_code}

  SIO_CHK_QOS = mIOC_IN or mIOC_OUT or mIOC_VENDOR or mCOMPANY or ioctl_code;
  {$EXTERNALSYM SIO_CHK_QOS}

//
// The following may be specified in the input buffer 
// of the SIO_CHK_IOCTL ioctl call 
//

  QOSSPBASE = 50000;
  {$EXTERNALSYM QOSSPBASE}

  ALLOWED_TO_SEND_DATA = (QOSSPBASE+1); // query the SBM/BEST_EFFORT limit
  {$EXTERNALSYM ALLOWED_TO_SEND_DATA}
                                                //   -- result is based on a comparison between
                                                //      the user-specified token rate and the
                                                //      SBM/BEST_EFFORT bandwidth parameters in
                                                //      the system
                                                //   -- result is a YES(1) or NO(0) answer
                                                //      in the output buffer 

  ABLE_TO_RECV_RSVP = (QOSSPBASE+2); // query the SBM/BEST_EFFORT limit
  {$EXTERNALSYM ABLE_TO_RECV_RSVP}
                                                //   -- result is based on a comparison between
                                                //      the user-specified token rate and the
                                                //      SBM/BEST_EFFORT bandwidth parameters in
                                                //      the system
                                                //   -- result is a YES(1) or NO(0) answer
                                                //      in the output buffer 

  LINE_RATE = (QOSSPBASE+3); // query the interface capacity
  {$EXTERNALSYM LINE_RATE}
                                                //   -- result returned in the output buffer
                                                //      in kilo-bits per second

  LOCAL_TRAFFIC_CONTROL = (QOSSPBASE+4); // check if Kernel Traffic Control is available or not
  {$EXTERNALSYM LOCAL_TRAFFIC_CONTROL}
                                                //   -- 0 if not available
                                                //   -- 1 if avaiable
                                                //   -- INFO_NOT_AVAILABLE if there is no way to check

  LOCAL_QOSABILITY = (QOSSPBASE+5); // The followings are for
  {$EXTERNALSYM LOCAL_QOSABILITY}
                                                // the Discovery of Local QOSability
                                                //   -- 0 if no local QOS support
                                                //   -- 1 if local QOS support available
                                                //   -- INFO_NOT_AVAILABLE if there is no way to check

  END_TO_END_QOSABILITY = (QOSSPBASE+6); // The followings are for
  {$EXTERNALSYM END_TO_END_QOSABILITY}
                                                // the Discovery of End-to-End QOSability
                                                //   -- 0 if no end-to-end QOS support
                                                //   -- 1 if end-to-end QOS support available
                                                //   -- INFO_NOT_AVAILABLE if there is no way to check

  INFO_NOT_AVAILABLE = DWORD($FFFFFFFF); // used when LINE_RATE is not known
  {$EXTERNALSYM INFO_NOT_AVAILABLE}


  ANY_DEST_ADDR = DWORD($FFFFFFFF); // for QOS_OBJECT_DEST_ADDR
  {$EXTERNALSYM ANY_DEST_ADDR}


// The followings are for Guaranteed_Service+Latency -> ISSLOW_Traffic_Class Mapping

  MODERATELY_DELAY_SENSITIVE = DWORD($FFFFFFFD);
  {$EXTERNALSYM MODERATELY_DELAY_SENSITIVE}

  HIGHLY_DELAY_SENSITIVE = DWORD($FFFFFFFE);
  {$EXTERNALSYM HIGHLY_DELAY_SENSITIVE}

//
// QOSSP Error Code/Value
//

  QOSSP_ERR_BASE = (QOSSPBASE+6000);
  {$EXTERNALSYM QOSSP_ERR_BASE}

// No error

  GQOS_NO_ERRORCODE = (0);
  {$EXTERNALSYM GQOS_NO_ERRORCODE}

  GQOS_NO_ERRORVALUE = (0);
  {$EXTERNALSYM GQOS_NO_ERRORVALUE}

// Unknown error

  GQOS_ERRORCODE_UNKNOWN = DWORD($FFFFFFFF);
  {$EXTERNALSYM GQOS_ERRORCODE_UNKNOWN}

  GQOS_ERRORVALUE_UNKNOWN = DWORD($FFFFFFFF);
  {$EXTERNALSYM GQOS_ERRORVALUE_UNKNOWN}

// Admission (Resource) Error

  GQOS_NET_ADMISSION = (QOSSP_ERR_BASE+100);
  {$EXTERNALSYM GQOS_NET_ADMISSION}

  GQOS_OTHER     = (QOSSP_ERR_BASE+100+1);
  {$EXTERNALSYM GQOS_OTHER}
  GQOS_DELAYBND  = (QOSSP_ERR_BASE+100+2);
  {$EXTERNALSYM GQOS_DELAYBND}
  GQOS_BANDWIDTH = (QOSSP_ERR_BASE+100+3);
  {$EXTERNALSYM GQOS_BANDWIDTH}
  GQOS_MTU       = (QOSSP_ERR_BASE+100+4);
  {$EXTERNALSYM GQOS_MTU}
  GQOS_FLOW_RATE = (QOSSP_ERR_BASE+100+5);
  {$EXTERNALSYM GQOS_FLOW_RATE}
  GQOS_PEAK_RATE = (QOSSP_ERR_BASE+100+6);
  {$EXTERNALSYM GQOS_PEAK_RATE}
  GQOS_AGG_PEAK_RATE = (QOSSP_ERR_BASE+100+7);
  {$EXTERNALSYM GQOS_AGG_PEAK_RATE}

// Policy Error

  GQOS_NET_POLICY = (QOSSP_ERR_BASE+200);
  {$EXTERNALSYM GQOS_NET_POLICY}

  GQOS_POLICY_ERROR_UNKNOWN = (QOSSP_ERR_BASE+200+0);
  {$EXTERNALSYM GQOS_POLICY_ERROR_UNKNOWN}

  GQOS_POLICY_GLOBAL_DEF_FLOW_COUNT      = (QOSSP_ERR_BASE+200+1);
  {$EXTERNALSYM GQOS_POLICY_GLOBAL_DEF_FLOW_COUNT}
  GQOS_POLICY_GLOBAL_GRP_FLOW_COUNT      = (QOSSP_ERR_BASE+200+2);
  {$EXTERNALSYM GQOS_POLICY_GLOBAL_GRP_FLOW_COUNT}
  GQOS_POLICY_GLOBAL_USER_FLOW_COUNT     = (QOSSP_ERR_BASE+200+3);
  {$EXTERNALSYM GQOS_POLICY_GLOBAL_USER_FLOW_COUNT}
  GQOS_POLICY_GLOBAL_UNK_USER_FLOW_COUNT = (QOSSP_ERR_BASE+200+4);
  {$EXTERNALSYM GQOS_POLICY_GLOBAL_UNK_USER_FLOW_COUNT}
  GQOS_POLICY_SUBNET_DEF_FLOW_COUNT      = (QOSSP_ERR_BASE+200+5);
  {$EXTERNALSYM GQOS_POLICY_SUBNET_DEF_FLOW_COUNT}
  GQOS_POLICY_SUBNET_GRP_FLOW_COUNT      = (QOSSP_ERR_BASE+200+6);
  {$EXTERNALSYM GQOS_POLICY_SUBNET_GRP_FLOW_COUNT}
  GQOS_POLICY_SUBNET_USER_FLOW_COUNT     = (QOSSP_ERR_BASE+200+7);
  {$EXTERNALSYM GQOS_POLICY_SUBNET_USER_FLOW_COUNT}
  GQOS_POLICY_SUBNET_UNK_USER_FLOW_COUNT = (QOSSP_ERR_BASE+200+8);
  {$EXTERNALSYM GQOS_POLICY_SUBNET_UNK_USER_FLOW_COUNT}

  GQOS_POLICY_GLOBAL_DEF_FLOW_DURATION      = (QOSSP_ERR_BASE+200+9);
  {$EXTERNALSYM GQOS_POLICY_GLOBAL_DEF_FLOW_DURATION}
  GQOS_POLICY_GLOBAL_GRP_FLOW_DURATION      = (QOSSP_ERR_BASE+200+10);
  {$EXTERNALSYM GQOS_POLICY_GLOBAL_GRP_FLOW_DURATION}
  GQOS_POLICY_GLOBAL_USER_FLOW_DURATION     = (QOSSP_ERR_BASE+200+11);

⌨️ 快捷键说明

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