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

RADIUS_ATTRIBUTE_ARRAY

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

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

フィールド

フィールドサイズx64x86説明
cbSizeDWORD4+0+0構造体のサイズを指定します。
AddINT_PTR8/4+8+4

NPS が提供する Add 関数へのポインターです。このメンバーの値は NPS が設定します。

This

指定した属性を追加する対象の属性配列を表す RADIUS_ATTRIBUTE_ARRAY 構造体へのポインターです。

GetRequest 関数および GetResponse 関数は、 RADIUS_ATTRIBUTE_ARRAY 構造体へのポインターを返します。

pAttr

配列に追加する属性を表す RADIUS_ATTRIBUTE 構造体へのポインターです。

AttributeAtINT_PTR8/4+16+8

NPS が提供する AttributeAt 関数へのポインターです。このメンバーの値は NPS が設定します。

AttributeAt 関数は、配列内の指定した属性への const ポインターを返します。

This

指定した属性を取得する対象の属性配列を表す RADIUS_ATTRIBUTE_ARRAY 構造体へのポインターです。

GetRequest 関数および GetResponse 関数は、 RADIUS_ATTRIBUTE_ARRAY 構造体へのポインターを返します。

dwIndex

取得する属性のインデックスを指定します。このインデックスが範囲外の場合、関数は NULL を返します。

配列のサイズを調べるには GetSize 関数を使用します。最大のインデックスは、配列のサイズより 1 小さい値です。

GetSizeINT_PTR8/4+24+12

NPS が提供する GetSize 関数へのポインターです。このメンバーの値は NPS が設定します。

GetSize 関数は、属性配列のサイズを返します。

GetSize 関数が返すのは属性配列のサイズであり、最大のインデックスではありません。属性配列は 0 から始まるインデックスを使用するため、配列のサイズは最大のインデックスより 1 大きい値になります。

This

サイズを取得する対象の属性配列を表す RADIUS_ATTRIBUTE_ARRAY 構造体へのポインターです。

GetRequest 関数および GetResponse 関数は、 RADIUS_ATTRIBUTE_ARRAY 構造体へのポインターを返します。

InsertAtINT_PTR8/4+32+16

NPS が提供する InsertAt 関数へのポインターです。このメンバーの値は NPS が設定します。

InsertAt 関数は、配列内の指定したインデックスに、指定した属性を挿入します。

InsertAt 関数が配列に新しい属性を挿入すると、そのインデックスに既に存在していた属性のインデックスは 1 つ増加します。同様に、それより大きいインデックスにある既存の属性のインデックスもすべて 1 つ増加します。

属性を属性配列の末尾に追加するには、 Add 関数を使用します。

This

指定した属性を挿入する対象の属性配列を表す RADIUS_ATTRIBUTE_ARRAY 構造体へのポインターです。

GetRequest 関数および GetResponse 関数は、 RADIUS_ATTRIBUTE_ARRAY 構造体へのポインターを返します。

dwIndex

指定した属性を挿入するインデックスを指定します。

配列のサイズを調べるには GetSize 関数を使用します。最大のインデックスは、配列のサイズより 1 小さい値です。

pAttr

配列に挿入する属性を表す RADIUS_ATTRIBUTE 構造体へのポインターです。

RemoveAtINT_PTR8/4+40+20

NPS が提供する RemoveAt 関数へのポインターです。このメンバーの値は NPS が設定します。

RemoveAt 関数は、配列内の指定したインデックスにある属性を削除します。

RemoveAt 関数が配列から属性を削除すると、それより大きいインデックスにある既存の属性のインデックスはすべて 1 つ減少します。

This

指定した属性を削除する対象の属性配列を表す RADIUS_ATTRIBUTE_ARRAY 構造体へのポインターです。

GetRequest 関数および GetResponse 関数は、 RADIUS_ATTRIBUTE_ARRAY 構造体へのポインターを返します。

dwIndex

削除する属性のインデックスを指定します。

配列のサイズを調べるには GetSize 関数を使用します。最大のインデックスは、配列のサイズより 1 小さい値です。

SetAtINT_PTR8/4+48+24

NPS が提供する SetAt 関数へのポインターです。このメンバーの値は NPS が設定します。

SetAt 関数は、指定したインデックスにある属性を、指定した属性で置き換えます。

This

置き換える属性を含む属性配列を表す RADIUS_ATTRIBUTE_ARRAY 構造体へのポインターです。

GetRequest 関数および GetResponse 関数は、 RADIUS_ATTRIBUTE_ARRAY 構造体へのポインターを返します。

dwIndex

置き換える属性のインデックスを指定します。

配列のサイズを調べるには GetSize 関数を使用します。最大のインデックスは、配列のサイズより 1 小さい値です。

pAttr

RADIUS_ATTRIBUTE 構造体へのポインターです。この構造体が表す属性が、指定したインデックスにある属性を置き換えます。

公式ドキュメント

Note インターネット認証サービス (IAS) は、Windows Server 2008 以降、ネットワーク ポリシー サーバー (NPS) に名称が変更されました。このトピックの内容は IAS と NPS の両方に適用されます。本文中では、元々 IAS と呼ばれていたバージョンを含め、すべてのバージョンのサービスを指して NPS と表記します。
RADIUS_ATTRIBUTE_ARRAY 構造体は、属性の配列を表します。

解説(Remarks)

拡張 DLL は、この構造体を変更してはなりません。属性配列への変更は、この構造体のメンバーとして提供される関数を呼び出して行う必要があります。

この構造体は、 RadiusExtensionProcess2 をエクスポートする拡張 DLL で使用されます。配列に属性を追加する次の関数:

Add InsertAt は、呼び出し元が指定した RADIUS_ATTRIBUTE 構造体の内容をコピーします。そのため、 RadiusExtensionProcess2 をエクスポートする拡張 DLL は、 RadiusExtensionFreeAttributes をエクスポートする必要はありません。

この構造体は、 GetRequest 関数および GetResponse 関数によって返されます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#include <windows.h>

// RADIUS_ATTRIBUTE_ARRAY  (x64 56 / x86 28 バイト)
typedef struct RADIUS_ATTRIBUTE_ARRAY {
    DWORD cbSize;
    INT_PTR Add;
    INT_PTR AttributeAt;
    INT_PTR GetSize;
    INT_PTR InsertAt;
    INT_PTR RemoveAt;
    INT_PTR SetAt;
} RADIUS_ATTRIBUTE_ARRAY;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct RADIUS_ATTRIBUTE_ARRAY
{
    public uint cbSize;
    public IntPtr Add;
    public IntPtr AttributeAt;
    public IntPtr GetSize;
    public IntPtr InsertAt;
    public IntPtr RemoveAt;
    public IntPtr SetAt;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure RADIUS_ATTRIBUTE_ARRAY
    Public cbSize As UInteger
    Public Add As IntPtr
    Public AttributeAt As IntPtr
    Public GetSize As IntPtr
    Public InsertAt As IntPtr
    Public RemoveAt As IntPtr
    Public SetAt As IntPtr
End Structure
import ctypes
from ctypes import wintypes

class RADIUS_ATTRIBUTE_ARRAY(ctypes.Structure):
    _fields_ = [
        ("cbSize", wintypes.DWORD),
        ("Add", ctypes.c_ssize_t),
        ("AttributeAt", ctypes.c_ssize_t),
        ("GetSize", ctypes.c_ssize_t),
        ("InsertAt", ctypes.c_ssize_t),
        ("RemoveAt", ctypes.c_ssize_t),
        ("SetAt", ctypes.c_ssize_t),
    ]
#[repr(C)]
pub struct RADIUS_ATTRIBUTE_ARRAY {
    pub cbSize: u32,
    pub Add: isize,
    pub AttributeAt: isize,
    pub GetSize: isize,
    pub InsertAt: isize,
    pub RemoveAt: isize,
    pub SetAt: isize,
}
import "golang.org/x/sys/windows"

type RADIUS_ATTRIBUTE_ARRAY struct {
	cbSize uint32
	Add uintptr
	AttributeAt uintptr
	GetSize uintptr
	InsertAt uintptr
	RemoveAt uintptr
	SetAt uintptr
}
type
  RADIUS_ATTRIBUTE_ARRAY = record
    cbSize: DWORD;
    Add: NativeInt;
    AttributeAt: NativeInt;
    GetSize: NativeInt;
    InsertAt: NativeInt;
    RemoveAt: NativeInt;
    SetAt: NativeInt;
  end;
const RADIUS_ATTRIBUTE_ARRAY = extern struct {
    cbSize: u32,
    Add: isize,
    AttributeAt: isize,
    GetSize: isize,
    InsertAt: isize,
    RemoveAt: isize,
    SetAt: isize,
};
type
  RADIUS_ATTRIBUTE_ARRAY {.bycopy.} = object
    cbSize: uint32
    Add: int
    AttributeAt: int
    GetSize: int
    InsertAt: int
    RemoveAt: int
    SetAt: int
struct RADIUS_ATTRIBUTE_ARRAY
{
    uint cbSize;
    ptrdiff_t Add;
    ptrdiff_t AttributeAt;
    ptrdiff_t GetSize;
    ptrdiff_t InsertAt;
    ptrdiff_t RemoveAt;
    ptrdiff_t SetAt;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; RADIUS_ATTRIBUTE_ARRAY サイズ: 28 バイト(x86)
dim st, 7    ; 4byte整数×7(構造体サイズ 28 / 4 切り上げ)
; cbSize : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; Add : INT_PTR (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; AttributeAt : INT_PTR (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; GetSize : INT_PTR (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; InsertAt : INT_PTR (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; RemoveAt : INT_PTR (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; SetAt : INT_PTR (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; RADIUS_ATTRIBUTE_ARRAY サイズ: 56 バイト(x64)
dim st, 14    ; 4byte整数×14(構造体サイズ 56 / 4 切り上げ)
; cbSize : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; Add : INT_PTR (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; AttributeAt : INT_PTR (+16, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; GetSize : INT_PTR (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; InsertAt : INT_PTR (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; RemoveAt : INT_PTR (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; SetAt : INT_PTR (+48, 8byte)  qpoke st,48,値 / qpeek(st,48)  ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global RADIUS_ATTRIBUTE_ARRAY
    #field int cbSize
    #field intptr Add
    #field intptr AttributeAt
    #field intptr GetSize
    #field intptr InsertAt
    #field intptr RemoveAt
    #field intptr SetAt
#endstruct

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