DFS_INFO_6
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| EntryPath | LPWSTR | 8/4 | +0 | +0 | DFS ルートまたはリンクの Universal Naming Convention (UNC) パスを指定する、null で終わる Unicode 文字列へのポインターです。 リンクの場合、文字列は次の 2 つの形式のいずれかになります。1 つ目の形式は次のとおりです。 \\ServerName\DfsName\link_path ここで ServerName はスタンドアロン DFS 名前空間をホストするルート ターゲット サーバーの名前、DfsName は DFS 名前空間の名前、link_path は DFS リンクです。 2 つ目の形式は次のとおりです。 \\DomainName\DomDfsname\link_path ここで DomainName はドメインベースの DFS 名前空間をホストするドメインの名前、DomDfsname は DFS 名前空間の名前、link_path は DFS リンクです。 ルートの場合、文字列は次の 2 つの形式のいずれかになります。 \\ServerName\DfsName または \\DomainName\DomDfsname ここで各名前の値は前述のものと同じです。 |
| Comment | LPWSTR | 8/4 | +8 | +4 | DFS ルートまたはリンクに関連付けられたコメントを格納する、null で終わる Unicode 文字列へのポインターです。 |
| State | DWORD | 4 | +16 | +8 | DFS ルートまたはリンクを表すビット フラグのセットを指定します。DFS_VOLUME_STATE フラグが 1 つ設定され、DFS_VOLUME_FLAVOR フラグが 1 つ設定されます。DFS 名前空間のフレーバーを取り出すには DFS_VOLUME_FLAVORS ビットマスク (0x00000300) を使用し、このメンバーから DFS ルートまたはリンクの状態を取り出すには DFS_VOLUME_STATES ビットマスク (0x0000000F) を使用しなければなりません。フラグの解釈方法を示す例については、DFS_INFO_2 の解説セクションを参照してください。 DFS_VOLUME_STATE_OK (0x00000001)指定された DFS ルートまたはリンクは正常な状態です。 DFS_VOLUME_STATE_INCONSISTENT (0x00000002)内部の DFS データベースが、指定された DFS ルートまたはリンクと矛盾しています。矛盾を修復する試みは失敗しました。 DFS_VOLUME_STATE_OFFLINE (0x00000003)指定された DFS ルートまたはリンクはオフラインであるか、利用できません。 DFS_VOLUME_STATE_ONLINE (0x00000004)指定された DFS ルートまたはリンクは利用可能です。 DFS_VOLUME_FLAVOR_STANDALONE (0x00000100)ルートがスタンドアロン DFS 名前空間に関連付けられている場合、システムはこのフラグを設定します。 DFS_VOLUME_FLAVOR_AD_BLOB (0x00000200)ルートがドメインベースの DFS 名前空間に関連付けられている場合、システムはこのフラグを設定します。 |
| Timeout | DWORD | 4 | +20 | +12 | DFS ルートまたはリンクのタイムアウトを秒単位で指定します。 |
| Guid | GUID | 16 | +24 | +16 | DFS ルートまたはリンクの GUID を指定します。 |
| PropertyFlags | DWORD | 4 | +40 | +32 | DFS 名前空間、ルート、またはリンクの特定のプロパティを表すフラグのセットを指定します。 DFS_PROPERTY_FLAG_INSITE_REFERRALS (0x00000001)適用範囲: ドメイン ルート、スタンドアロン ルート、およびリンク。このフラグが DFS ルートで設定されている場合はすべてのリンクに適用されます。それ以外の場合、このフラグの値は個々のリンクごとに考慮されます。 このフラグが設定されている場合、"INSITE" オプションが有効な DFS ルートまたはリンクに対する DFS サーバーからの DFS 参照応答には、参照を要求した DFS クライアントと同じサイトにあるターゲットのみが含まれます。2 つのグローバル優先度クラスに属するターゲットは、サイトの場所に関係なく常に返されます。 DFS_PROPERTY_FLAG_ROOT_SCALABILITY (0x00000002)適用範囲: ドメインベースの DFS 名前空間のみにおける、DFS 名前空間全体。 既定では、DFS ルート ターゲット サーバーは DFS メタデータの変更を検出するために PDC をポーリングします。PDC に高い負荷がかかるのを防ぐため、DFS 名前空間に対してルート スケーラビリティを有効にできます。このフラグを設定すると、DFS サーバーは共通の名前空間の DFS メタデータの変更について、PDC ではなく最も近いドメイン コントローラーをポーリングするようになります。ただし、メタデータへの変更は引き続き PDC で行う必要があります。 DFS_PROPERTY_FLAG_SITE_COSTING (0x00000004)適用範囲: ドメインベースおよびスタンドアロンの両方の DFS 名前空間における、DFS 名前空間全体。 既定では、DFS ルートまたはリンクに対して DFS サーバーから DFS クライアントへ返される参照応答に含まれるターゲットは、クライアントと同じサイトにあるターゲットと、サイト外のターゲットという 2 つのグループで構成されます。 Active Directory でサイト コストが有効になっている場合、応答には 3 つ以上のグループを含めることができ、各グループには参照を要求した特定の DFS クライアントに対して同じサイト コストを持つターゲットが含まれます。グループはサイト コストの昇順に並べられます。サイト コストを使用してターゲットの優先順位を決める方法の詳細については、 DFS Server Target Prioritization を参照してください。 DFS_PROPERTY_FLAG_TARGET_FAILBACK (0x00000008)適用範囲: ドメインベースの DFS ルート、スタンドアロン DFS ルート、および DFS リンク。このフラグが DFS ルートで設定されている場合はすべてのリンクに適用されます。それ以外の場合、このフラグの値は個々のリンクごとに考慮されます。 このフラグが設定されている場合、V4 DFS クライアントに対して最適なターゲットへのフェールバックが有効になり、最適でないターゲットにフェールオーバーした後に最適なターゲットへフェールバックできるようになります。ターゲット フェールバックの設定は、DFS サーバーによる V4 参照応答で DFS クライアントに提供されます。 DFS_PROPERTY_FLAG_CLUSTER_ENABLED (0x00000010)適用範囲: スタンドアロン DFS ルートおよびリンクのみ。 ストレージのフェールオーバーに対する高可用性を提供するために、DFS ルートがクラスター化されています。このフラグを NetDfsSetInfo 関数で設定することはできません。 DFS_PROPERTY_FLAG_ABDE (0x00000020)適用範囲: ドメインベースの DFS ルートおよびスタンドアロン DFS ルート。 このフラグが設定されている場合、DFS 名前空間の DFS ルート ターゲット共有全体でアクセスベースのディレクトリ列挙 (ABDE) モードのサポートが有効になります。このフラグが有効なのは、DFS_NAMESPACE_CAPABILITY_ABDE 機能フラグが設定されている DFS 名前空間のみです。詳細については、 DFS_INFO_50 および DFS_SUPPORTED_NAMESPACE_VERSION_INFO を参照してください。 DFS_PROPERTY_FLAG_ABDE フラグが有効なのは DFS 名前空間ルートのみであり、ルート ターゲット、リンク、リンク ターゲットでは有効ではありません。DFS リンクにセキュリティ記述子を関連付けるには、このフラグを有効にする必要があります。 |
| MetadataSize | DWORD | 4 | +44 | +36 | ドメインベースの DFS 名前空間の場合、このメンバーは対応する Active Directory データ BLOB のサイズをバイト単位で指定します。スタンドアロン DFS 名前空間の場合、このフィールドはレジストリに格納されているメタデータのサイズを指定します。これにはキー名と値名、およびそれらに関連付けられた個々のデータ項目が含まれます。 このフィールドは DFS ルートに対してのみ有効です。 |
| NumberOfStorages | DWORD | 4 | +48 | +40 | DFS ルートまたはリンクのターゲット数を指定します。これらのターゲットは、この構造体の Storage メンバーに格納されます。 |
| Storage | DFS_STORAGE_INFO_1* | 8/4 | +56 | +44 | DFS ターゲットの情報を格納する DFS_STORAGE_INFO_1 構造体の配列を指定します。 |
公式ドキュメント
分散ファイル システム (DFS) のルートまたはリンクに関する情報を格納します。この構造体には、ルートまたはリンクの名前、状態、GUID、タイムアウト、名前空間/ルート/リンクのプロパティ、メタデータのサイズ、ターゲット数、および各ターゲットの情報が含まれます。この構造体は、 NetDfsEnum、 NetDfsGetClientInfo、 NetDfsGetInfo の各関数でのみ使用します。
ターゲット情報を含まない DFS 名前空間の情報を取得するには、代わりに DFS_INFO_5 を使用してください。
解説(Remarks)
サーバー ターゲットの優先順位がどのように決定されるかの詳細については、 DFS Server Target Prioritization を参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// DFS_INFO_6 (x64 64 / x86 48 バイト)
typedef struct DFS_INFO_6 {
LPWSTR EntryPath;
LPWSTR Comment;
DWORD State;
DWORD Timeout;
GUID Guid;
DWORD PropertyFlags;
DWORD MetadataSize;
DWORD NumberOfStorages;
DFS_STORAGE_INFO_1* Storage;
} DFS_INFO_6;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DFS_INFO_6
{
public IntPtr EntryPath;
public IntPtr Comment;
public uint State;
public uint Timeout;
public Guid Guid;
public uint PropertyFlags;
public uint MetadataSize;
public uint NumberOfStorages;
public IntPtr Storage;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DFS_INFO_6
Public EntryPath As IntPtr
Public Comment As IntPtr
Public State As UInteger
Public Timeout As UInteger
Public Guid As Guid
Public PropertyFlags As UInteger
Public MetadataSize As UInteger
Public NumberOfStorages As UInteger
Public Storage As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class DFS_INFO_6(ctypes.Structure):
_fields_ = [
("EntryPath", ctypes.c_void_p),
("Comment", ctypes.c_void_p),
("State", wintypes.DWORD),
("Timeout", wintypes.DWORD),
("Guid", GUID),
("PropertyFlags", wintypes.DWORD),
("MetadataSize", wintypes.DWORD),
("NumberOfStorages", wintypes.DWORD),
("Storage", ctypes.c_void_p),
]#[repr(C)]
pub struct DFS_INFO_6 {
pub EntryPath: *mut core::ffi::c_void,
pub Comment: *mut core::ffi::c_void,
pub State: u32,
pub Timeout: u32,
pub Guid: GUID,
pub PropertyFlags: u32,
pub MetadataSize: u32,
pub NumberOfStorages: u32,
pub Storage: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type DFS_INFO_6 struct {
EntryPath uintptr
Comment uintptr
State uint32
Timeout uint32
Guid windows.GUID
PropertyFlags uint32
MetadataSize uint32
NumberOfStorages uint32
Storage uintptr
}type
DFS_INFO_6 = record
EntryPath: Pointer;
Comment: Pointer;
State: DWORD;
Timeout: DWORD;
Guid: TGUID;
PropertyFlags: DWORD;
MetadataSize: DWORD;
NumberOfStorages: DWORD;
Storage: Pointer;
end;const DFS_INFO_6 = extern struct {
EntryPath: ?*anyopaque,
Comment: ?*anyopaque,
State: u32,
Timeout: u32,
Guid: GUID,
PropertyFlags: u32,
MetadataSize: u32,
NumberOfStorages: u32,
Storage: ?*anyopaque,
};type
DFS_INFO_6 {.bycopy.} = object
EntryPath: pointer
Comment: pointer
State: uint32
Timeout: uint32
Guid: GUID
PropertyFlags: uint32
MetadataSize: uint32
NumberOfStorages: uint32
Storage: pointerstruct DFS_INFO_6
{
void* EntryPath;
void* Comment;
uint State;
uint Timeout;
GUID Guid;
uint PropertyFlags;
uint MetadataSize;
uint NumberOfStorages;
void* Storage;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; DFS_INFO_6 サイズ: 48 バイト(x86)
dim st, 12 ; 4byte整数×12(構造体サイズ 48 / 4 切り上げ)
; EntryPath : LPWSTR (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; Comment : LPWSTR (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; State : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; Timeout : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; Guid : GUID (+16, 16byte) varptr(st)+16 を基点に操作(16byte:入れ子/配列)
; PropertyFlags : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; MetadataSize : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; NumberOfStorages : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; Storage : DFS_STORAGE_INFO_1* (+44, 4byte) varptr(st)+44 を基点に操作(4byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DFS_INFO_6 サイズ: 64 バイト(x64)
dim st, 16 ; 4byte整数×16(構造体サイズ 64 / 4 切り上げ)
; EntryPath : LPWSTR (+0, 8byte) qpoke st,0,値 / qpeek(st,0) ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; Comment : LPWSTR (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; State : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; Timeout : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; Guid : GUID (+24, 16byte) varptr(st)+24 を基点に操作(16byte:入れ子/配列)
; PropertyFlags : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; MetadataSize : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; NumberOfStorages : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; Storage : DFS_STORAGE_INFO_1* (+56, 8byte) varptr(st)+56 を基点に操作(8byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global GUID, pack=1
#field int Data1
#field short Data2
#field short Data3
#field byte Data4 8
#endstruct
#defstruct global DFS_INFO_6
#field intptr EntryPath
#field intptr Comment
#field int State
#field int Timeout
#field GUID Guid
#field int PropertyFlags
#field int MetadataSize
#field int NumberOfStorages
#field intptr Storage
#endstruct
stdim st, DFS_INFO_6 ; NSTRUCT 変数を確保
st->State = 100
mes "State=" + st->State