ホーム › Networking.ActiveDirectory › ADSPROPINITPARAMS
ADSPROPINITPARAMS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| dwSize | DWORD | 4 | +0 | +0 | ADSPROPINITPARAMS 構造体のサイズ (バイト単位)。ADsPropGetInitInfo を呼び出す前にこの値を設定します。 |
| dwFlags | DWORD | 4 | +4 | +4 | 予約済みです。 |
| hr | HRESULT | 4 | +8 | +8 | バインド/取得操作の結果を示す HRESULT 値が格納されます。この値が S_OK でない場合、残りの構造体メンバーは初期化されておらず、無視する必要があります。 |
| pDsObj | IDirectoryObject* | 8/4 | +16 | +12 | 表示指定子が適用されるディレクトリオブジェクトを表す IDirectoryObject インターフェイスへのポインター。このインターフェイスを解放しないでください。 |
| pwzCN | LPWSTR | 8/4 | +24 | +16 | ディレクトリオブジェクトの共通名 (CN) を格納する、NULL 終端の Unicode 文字列へのポインター。 |
| pWritableAttrs | ADS_ATTR_INFO* | 8/4 | +32 | +20 | ディレクトリオブジェクトの属性データを格納する ADS_ATTR_INFO 構造体へのポインター。 |
公式ドキュメント
ADSPROPINITPARAMS 構造体は、表示指定子 (display specifier) が適用されるオブジェクトのデータを取得するために、ADsPropGetInitInfo 関数と共に使用されます。
解説(Remarks)
ADsPropGetInitInfo 関数は、pwzCN メンバーおよび pWritableAttrs メンバー用のメモリを割り当てます。このメモリは、すべての表示指定子オブジェクトが破棄された後にシステムによって解放されます。ADsPropGetInitInfo を呼び出しても pDsObj のインターフェイスポインターの参照カウントは増加しないため、呼び出し元はこのインターフェイスを解放してはなりません。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// ADSPROPINITPARAMS (x64 40 / x86 24 バイト)
typedef struct ADSPROPINITPARAMS {
DWORD dwSize;
DWORD dwFlags;
HRESULT hr;
IDirectoryObject* pDsObj;
LPWSTR pwzCN;
ADS_ATTR_INFO* pWritableAttrs;
} ADSPROPINITPARAMS;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct ADSPROPINITPARAMS
{
public uint dwSize;
public uint dwFlags;
public int hr;
public IntPtr pDsObj;
public IntPtr pwzCN;
public IntPtr pWritableAttrs;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure ADSPROPINITPARAMS
Public dwSize As UInteger
Public dwFlags As UInteger
Public hr As Integer
Public pDsObj As IntPtr
Public pwzCN As IntPtr
Public pWritableAttrs As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class ADSPROPINITPARAMS(ctypes.Structure):
_fields_ = [
("dwSize", wintypes.DWORD),
("dwFlags", wintypes.DWORD),
("hr", ctypes.c_int),
("pDsObj", ctypes.c_void_p),
("pwzCN", ctypes.c_void_p),
("pWritableAttrs", ctypes.c_void_p),
]#[repr(C)]
pub struct ADSPROPINITPARAMS {
pub dwSize: u32,
pub dwFlags: u32,
pub hr: i32,
pub pDsObj: *mut core::ffi::c_void,
pub pwzCN: *mut core::ffi::c_void,
pub pWritableAttrs: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type ADSPROPINITPARAMS struct {
dwSize uint32
dwFlags uint32
hr int32
pDsObj uintptr
pwzCN uintptr
pWritableAttrs uintptr
}type
ADSPROPINITPARAMS = record
dwSize: DWORD;
dwFlags: DWORD;
hr: Integer;
pDsObj: Pointer;
pwzCN: Pointer;
pWritableAttrs: Pointer;
end;const ADSPROPINITPARAMS = extern struct {
dwSize: u32,
dwFlags: u32,
hr: i32,
pDsObj: ?*anyopaque,
pwzCN: ?*anyopaque,
pWritableAttrs: ?*anyopaque,
};type
ADSPROPINITPARAMS {.bycopy.} = object
dwSize: uint32
dwFlags: uint32
hr: int32
pDsObj: pointer
pwzCN: pointer
pWritableAttrs: pointerstruct ADSPROPINITPARAMS
{
uint dwSize;
uint dwFlags;
int hr;
void* pDsObj;
void* pwzCN;
void* pWritableAttrs;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; ADSPROPINITPARAMS サイズ: 24 バイト(x86)
dim st, 6 ; 4byte整数×6(構造体サイズ 24 / 4 切り上げ)
; dwSize : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; dwFlags : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; hr : HRESULT (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; pDsObj : IDirectoryObject* (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; pwzCN : LPWSTR (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; pWritableAttrs : ADS_ATTR_INFO* (+20, 4byte) varptr(st)+20 を基点に操作(4byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; ADSPROPINITPARAMS サイズ: 40 バイト(x64)
dim st, 10 ; 4byte整数×10(構造体サイズ 40 / 4 切り上げ)
; dwSize : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; dwFlags : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; hr : HRESULT (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; pDsObj : IDirectoryObject* (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; pwzCN : LPWSTR (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; pWritableAttrs : ADS_ATTR_INFO* (+32, 8byte) varptr(st)+32 を基点に操作(8byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global ADSPROPINITPARAMS
#field int dwSize
#field int dwFlags
#field int hr
#field intptr pDsObj
#field intptr pwzCN
#field intptr pWritableAttrs
#endstruct
stdim st, ADSPROPINITPARAMS ; NSTRUCT 変数を確保
st->dwSize = 100
mes "dwSize=" + st->dwSize