ホーム › System.DeploymentServices › WDS_TRANSPORTCLIENT_REQUEST
WDS_TRANSPORTCLIENT_REQUEST
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| ulLength | DWORD | 4 | +0 | +0 | この構造体のバイトサイズ。 |
| ulApiVersion | DWORD | 4 | +4 | +4 | クライアントAPIのバージョン。 |
| ulAuthLevel | WDS_TRANSPORTCLIENT_REQUEST_AUTH_LEVEL | 4 | +8 | +8 | 要求する認証レベル(WDS_TRANSPORTCLIENT_REQUEST_AUTH_LEVEL)。 |
| pwszServer | LPWSTR | 8/4 | +16 | +12 | 接続先サーバー名(ワイド文字列)。 |
| pwszNamespace | LPWSTR | 8/4 | +24 | +16 | 対象名前空間(ワイド文字列)。 |
| pwszObjectName | LPWSTR | 8/4 | +32 | +20 | 取得対象オブジェクト名(ワイド文字列)。 |
| ulCacheSize | DWORD | 4 | +40 | +24 | クライアント側キャッシュのサイズ。 |
| ulProtocol | DWORD | 4 | +44 | +28 | 使用するトランスポートプロトコルの識別値。 |
| pvProtocolData | void* | 8/4 | +48 | +32 | プロトコル固有データへのポインタ。 |
| ulProtocolDataLength | DWORD | 4 | +56 | +36 | プロトコルデータのバイト長。 |
各言語での定義
#include <windows.h>
// WDS_TRANSPORTCLIENT_REQUEST (x64 64 / x86 40 バイト)
typedef struct WDS_TRANSPORTCLIENT_REQUEST {
DWORD ulLength;
DWORD ulApiVersion;
WDS_TRANSPORTCLIENT_REQUEST_AUTH_LEVEL ulAuthLevel;
LPWSTR pwszServer;
LPWSTR pwszNamespace;
LPWSTR pwszObjectName;
DWORD ulCacheSize;
DWORD ulProtocol;
void* pvProtocolData;
DWORD ulProtocolDataLength;
} WDS_TRANSPORTCLIENT_REQUEST;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct WDS_TRANSPORTCLIENT_REQUEST
{
public uint ulLength;
public uint ulApiVersion;
public uint ulAuthLevel;
public IntPtr pwszServer;
public IntPtr pwszNamespace;
public IntPtr pwszObjectName;
public uint ulCacheSize;
public uint ulProtocol;
public IntPtr pvProtocolData;
public uint ulProtocolDataLength;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure WDS_TRANSPORTCLIENT_REQUEST
Public ulLength As UInteger
Public ulApiVersion As UInteger
Public ulAuthLevel As UInteger
Public pwszServer As IntPtr
Public pwszNamespace As IntPtr
Public pwszObjectName As IntPtr
Public ulCacheSize As UInteger
Public ulProtocol As UInteger
Public pvProtocolData As IntPtr
Public ulProtocolDataLength As UInteger
End Structureimport ctypes
from ctypes import wintypes
class WDS_TRANSPORTCLIENT_REQUEST(ctypes.Structure):
_fields_ = [
("ulLength", wintypes.DWORD),
("ulApiVersion", wintypes.DWORD),
("ulAuthLevel", wintypes.DWORD),
("pwszServer", ctypes.c_void_p),
("pwszNamespace", ctypes.c_void_p),
("pwszObjectName", ctypes.c_void_p),
("ulCacheSize", wintypes.DWORD),
("ulProtocol", wintypes.DWORD),
("pvProtocolData", ctypes.c_void_p),
("ulProtocolDataLength", wintypes.DWORD),
]#[repr(C)]
pub struct WDS_TRANSPORTCLIENT_REQUEST {
pub ulLength: u32,
pub ulApiVersion: u32,
pub ulAuthLevel: u32,
pub pwszServer: *mut core::ffi::c_void,
pub pwszNamespace: *mut core::ffi::c_void,
pub pwszObjectName: *mut core::ffi::c_void,
pub ulCacheSize: u32,
pub ulProtocol: u32,
pub pvProtocolData: *mut core::ffi::c_void,
pub ulProtocolDataLength: u32,
}import "golang.org/x/sys/windows"
type WDS_TRANSPORTCLIENT_REQUEST struct {
ulLength uint32
ulApiVersion uint32
ulAuthLevel uint32
pwszServer uintptr
pwszNamespace uintptr
pwszObjectName uintptr
ulCacheSize uint32
ulProtocol uint32
pvProtocolData uintptr
ulProtocolDataLength uint32
}type
WDS_TRANSPORTCLIENT_REQUEST = record
ulLength: DWORD;
ulApiVersion: DWORD;
ulAuthLevel: DWORD;
pwszServer: Pointer;
pwszNamespace: Pointer;
pwszObjectName: Pointer;
ulCacheSize: DWORD;
ulProtocol: DWORD;
pvProtocolData: Pointer;
ulProtocolDataLength: DWORD;
end;const WDS_TRANSPORTCLIENT_REQUEST = extern struct {
ulLength: u32,
ulApiVersion: u32,
ulAuthLevel: u32,
pwszServer: ?*anyopaque,
pwszNamespace: ?*anyopaque,
pwszObjectName: ?*anyopaque,
ulCacheSize: u32,
ulProtocol: u32,
pvProtocolData: ?*anyopaque,
ulProtocolDataLength: u32,
};type
WDS_TRANSPORTCLIENT_REQUEST {.bycopy.} = object
ulLength: uint32
ulApiVersion: uint32
ulAuthLevel: uint32
pwszServer: pointer
pwszNamespace: pointer
pwszObjectName: pointer
ulCacheSize: uint32
ulProtocol: uint32
pvProtocolData: pointer
ulProtocolDataLength: uint32struct WDS_TRANSPORTCLIENT_REQUEST
{
uint ulLength;
uint ulApiVersion;
uint ulAuthLevel;
void* pwszServer;
void* pwszNamespace;
void* pwszObjectName;
uint ulCacheSize;
uint ulProtocol;
void* pvProtocolData;
uint ulProtocolDataLength;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; WDS_TRANSPORTCLIENT_REQUEST サイズ: 40 バイト(x86)
dim st, 10 ; 4byte整数×10(構造体サイズ 40 / 4 切り上げ)
; ulLength : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; ulApiVersion : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; ulAuthLevel : WDS_TRANSPORTCLIENT_REQUEST_AUTH_LEVEL (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; pwszServer : LPWSTR (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; pwszNamespace : LPWSTR (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; pwszObjectName : LPWSTR (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; ulCacheSize : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; ulProtocol : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; pvProtocolData : void* (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; ulProtocolDataLength : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; WDS_TRANSPORTCLIENT_REQUEST サイズ: 64 バイト(x64)
dim st, 16 ; 4byte整数×16(構造体サイズ 64 / 4 切り上げ)
; ulLength : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; ulApiVersion : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; ulAuthLevel : WDS_TRANSPORTCLIENT_REQUEST_AUTH_LEVEL (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; pwszServer : LPWSTR (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; pwszNamespace : LPWSTR (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; pwszObjectName : LPWSTR (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; ulCacheSize : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; ulProtocol : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; pvProtocolData : void* (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; ulProtocolDataLength : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global WDS_TRANSPORTCLIENT_REQUEST
#field int ulLength
#field int ulApiVersion
#field int ulAuthLevel
#field intptr pwszServer
#field intptr pwszNamespace
#field intptr pwszObjectName
#field int ulCacheSize
#field int ulProtocol
#field intptr pvProtocolData
#field int ulProtocolDataLength
#endstruct
stdim st, WDS_TRANSPORTCLIENT_REQUEST ; NSTRUCT 変数を確保
st->ulLength = 100
mes "ulLength=" + st->ulLength