Win32 API 日本語リファレンス
ホームSystem.DeploymentServices › WDS_TRANSPORTCLIENT_REQUEST

WDS_TRANSPORTCLIENT_REQUEST

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

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

フィールド

フィールドサイズx64x86説明
ulLengthDWORD4+0+0この構造体のバイトサイズ。
ulApiVersionDWORD4+4+4クライアントAPIのバージョン。
ulAuthLevelWDS_TRANSPORTCLIENT_REQUEST_AUTH_LEVEL4+8+8要求する認証レベル(WDS_TRANSPORTCLIENT_REQUEST_AUTH_LEVEL)。
pwszServerLPWSTR8/4+16+12接続先サーバー名(ワイド文字列)。
pwszNamespaceLPWSTR8/4+24+16対象名前空間(ワイド文字列)。
pwszObjectNameLPWSTR8/4+32+20取得対象オブジェクト名(ワイド文字列)。
ulCacheSizeDWORD4+40+24クライアント側キャッシュのサイズ。
ulProtocolDWORD4+44+28使用するトランスポートプロトコルの識別値。
pvProtocolDatavoid*8/4+48+32プロトコル固有データへのポインタ。
ulProtocolDataLengthDWORD4+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 Structure
import 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: uint32
struct 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