Win32 API 日本語リファレンス
ホームNetworkManagement.QoS › RSVP_RESERVE_INFO

RSVP_RESERVE_INFO

構造体
サイズx64: 40 バイト / x86: 28 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
ObjectHdrQOS_OBJECT_HDR8+0+0QOS オブジェクト QOS_OBJECT_HDR です。
StyleDWORD4+8+8

指定されたフローの RSVP 予約スタイルを指定します。特定の種類のフローに設定されている既定の予約スタイルを置き換えるために使用できます。RSVP 予約スタイルの詳細、および一部の QOS 対応ソケットセッションの既定の設定については、 Network-Driven QOS Components を参照してください。このメンバーには次のいずれかの値を指定できます。

意味
RSVP_WILDCARD_SYLE
WF RSVP 予約スタイルを実装します。RSVP_WILDCARD_STYLE は、マルチキャスト受信側および UDP ユニキャスト受信側の既定値です。RSVP_RESERVE_INFO を介して RSVP_WILDCARD_STYLE を指定することは、接続済みのユニキャスト受信側に適用される既定値 (RSVP_FIXED_FILTER_STYLE) を上書きする場合に役立ちます。
RSVP_FIXED_FILTER_STYLE
Fixed Filter (FF) RSVP 予約スタイルを実装します。RSVP_FIXED_FILTER_STYLE は、マルチキャスト受信側や未接続の UDP ユニキャスト受信側の既定のスタイル (RSVP_WILDCARD_STYLE) を上書きする場合に役立ちます。また、接続済みのユニキャスト受信側のように既定では単一の RSVP_FIXED_FILTER_STYLE 予約しか生成されない場合に、複数の RSVP_FIXED_FILTER_STLYE 予約を生成するためにも使用できます。
RSVP_SHARED_EXPLICIT_STYLE
Shared Explicit (SE) RSVP 予約スタイルを実装します。
RSVP_DEFAULT_STYLE
コンピューターの既定の予約スタイルを実装します。
注意 個々の RSVP_SHARED_EXPLICIT_STYLE 予約に含まれる送信側の数は 100 未満でなければならない点に注意することが重要です。100 を超える送信側が RSVP_SHARED_EXPLICIT_STYLE 予約に接続しようとした場合、100 番目以降の試行は通知なしに失敗します。
ConfirmRequestDWORD4+12+12受信側アプリケーションは、ConfirmRequest に 0 以外の値を設定することで、予約要求に対する通知を要求できます。この通知は、送信側と受信側の間 (またはその逆) のデータパス上にある RSVP 対応デバイスが、要求元のノードに向けて RESV CONFIRMATION メッセージを送信することによって実現されます。なお、RSVP ノードが RESV CONFIRMATION メッセージを自動的に生成することは必須ではありません。
PolicyElementListRSVP_POLICY_INFO*8/4+16+16ポリシー要素のセットへのポインターです。RSVP_POLICY_INFO 構造体で指定される、省略可能なポリシー情報です。
NumFlowDescDWORD4+24+20FLOWDESCRIPTOR の数を指定します。
FlowDescListFLOWDESCRIPTOR*8/4+32+24FLOWDESCRIPTOR のリストへのポインターです。

公式ドキュメント

QOS オブジェクト RSVP_RESERVE_INFO は、ProviderSpecific バッファーを介して、指定されたフローの RSVP 動作を詳細なレベルで指定または変更できるようにし、フローの既定の RSVP スタイル設定を上書きできるようにします。 RSVP_RESERVE_INFO は技術的には構造体ですが、Windows 2000 の QOS テクノロジにおける用途、特に最初のメンバーとして QOS_OBJECT_HDR を含めることが必須である点から、QOS オブジェクトとして位置付けられます。

注意 RSVP_RESERVE_INFO QOS オブジェクトは、Windows 2000 以外ではサポートされていません。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#include <windows.h>

// QOS_OBJECT_HDR  (x64 8 / x86 8 バイト)
typedef struct QOS_OBJECT_HDR {
    DWORD ObjectType;
    DWORD ObjectLength;
} QOS_OBJECT_HDR;

// RSVP_RESERVE_INFO  (x64 40 / x86 28 バイト)
typedef struct RSVP_RESERVE_INFO {
    QOS_OBJECT_HDR ObjectHdr;
    DWORD Style;
    DWORD ConfirmRequest;
    RSVP_POLICY_INFO* PolicyElementList;
    DWORD NumFlowDesc;
    FLOWDESCRIPTOR* FlowDescList;
} RSVP_RESERVE_INFO;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct QOS_OBJECT_HDR
{
    public uint ObjectType;
    public uint ObjectLength;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct RSVP_RESERVE_INFO
{
    public QOS_OBJECT_HDR ObjectHdr;
    public uint Style;
    public uint ConfirmRequest;
    public IntPtr PolicyElementList;
    public uint NumFlowDesc;
    public IntPtr FlowDescList;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure QOS_OBJECT_HDR
    Public ObjectType As UInteger
    Public ObjectLength As UInteger
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure RSVP_RESERVE_INFO
    Public ObjectHdr As QOS_OBJECT_HDR
    Public Style As UInteger
    Public ConfirmRequest As UInteger
    Public PolicyElementList As IntPtr
    Public NumFlowDesc As UInteger
    Public FlowDescList As IntPtr
End Structure
import ctypes
from ctypes import wintypes

class QOS_OBJECT_HDR(ctypes.Structure):
    _fields_ = [
        ("ObjectType", wintypes.DWORD),
        ("ObjectLength", wintypes.DWORD),
    ]

class RSVP_RESERVE_INFO(ctypes.Structure):
    _fields_ = [
        ("ObjectHdr", QOS_OBJECT_HDR),
        ("Style", wintypes.DWORD),
        ("ConfirmRequest", wintypes.DWORD),
        ("PolicyElementList", ctypes.c_void_p),
        ("NumFlowDesc", wintypes.DWORD),
        ("FlowDescList", ctypes.c_void_p),
    ]
#[repr(C)]
pub struct QOS_OBJECT_HDR {
    pub ObjectType: u32,
    pub ObjectLength: u32,
}

#[repr(C)]
pub struct RSVP_RESERVE_INFO {
    pub ObjectHdr: QOS_OBJECT_HDR,
    pub Style: u32,
    pub ConfirmRequest: u32,
    pub PolicyElementList: *mut core::ffi::c_void,
    pub NumFlowDesc: u32,
    pub FlowDescList: *mut core::ffi::c_void,
}
import "golang.org/x/sys/windows"

type QOS_OBJECT_HDR struct {
	ObjectType uint32
	ObjectLength uint32
}

type RSVP_RESERVE_INFO struct {
	ObjectHdr QOS_OBJECT_HDR
	Style uint32
	ConfirmRequest uint32
	PolicyElementList uintptr
	NumFlowDesc uint32
	FlowDescList uintptr
}
type
  QOS_OBJECT_HDR = record
    ObjectType: DWORD;
    ObjectLength: DWORD;
  end;

  RSVP_RESERVE_INFO = record
    ObjectHdr: QOS_OBJECT_HDR;
    Style: DWORD;
    ConfirmRequest: DWORD;
    PolicyElementList: Pointer;
    NumFlowDesc: DWORD;
    FlowDescList: Pointer;
  end;
const QOS_OBJECT_HDR = extern struct {
    ObjectType: u32,
    ObjectLength: u32,
};

const RSVP_RESERVE_INFO = extern struct {
    ObjectHdr: QOS_OBJECT_HDR,
    Style: u32,
    ConfirmRequest: u32,
    PolicyElementList: ?*anyopaque,
    NumFlowDesc: u32,
    FlowDescList: ?*anyopaque,
};
type
  QOS_OBJECT_HDR {.bycopy.} = object
    ObjectType: uint32
    ObjectLength: uint32

  RSVP_RESERVE_INFO {.bycopy.} = object
    ObjectHdr: QOS_OBJECT_HDR
    Style: uint32
    ConfirmRequest: uint32
    PolicyElementList: pointer
    NumFlowDesc: uint32
    FlowDescList: pointer
struct QOS_OBJECT_HDR
{
    uint ObjectType;
    uint ObjectLength;
}

struct RSVP_RESERVE_INFO
{
    QOS_OBJECT_HDR ObjectHdr;
    uint Style;
    uint ConfirmRequest;
    void* PolicyElementList;
    uint NumFlowDesc;
    void* FlowDescList;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; RSVP_RESERVE_INFO サイズ: 28 バイト(x86)
dim st, 7    ; 4byte整数×7(構造体サイズ 28 / 4 切り上げ)
; ObjectHdr : QOS_OBJECT_HDR (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; Style : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; ConfirmRequest : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; PolicyElementList : RSVP_POLICY_INFO* (+16, 4byte)  varptr(st)+16 を基点に操作(4byte:入れ子/配列)
; NumFlowDesc : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; FlowDescList : FLOWDESCRIPTOR* (+24, 4byte)  varptr(st)+24 を基点に操作(4byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; RSVP_RESERVE_INFO サイズ: 40 バイト(x64)
dim st, 10    ; 4byte整数×10(構造体サイズ 40 / 4 切り上げ)
; ObjectHdr : QOS_OBJECT_HDR (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; Style : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; ConfirmRequest : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; PolicyElementList : RSVP_POLICY_INFO* (+16, 8byte)  varptr(st)+16 を基点に操作(8byte:入れ子/配列)
; NumFlowDesc : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; FlowDescList : FLOWDESCRIPTOR* (+32, 8byte)  varptr(st)+32 を基点に操作(8byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global QOS_OBJECT_HDR
    #field int ObjectType
    #field int ObjectLength
#endstruct

#defstruct global RSVP_RESERVE_INFO
    #field QOS_OBJECT_HDR ObjectHdr
    #field int Style
    #field int ConfirmRequest
    #field intptr PolicyElementList
    #field int NumFlowDesc
    #field intptr FlowDescList
#endstruct

stdim st, RSVP_RESERVE_INFO        ; NSTRUCT 変数を確保
st->Style = 100
mes "Style=" + st->Style