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 のバージョン。マルチキャストクライアントは、この値に基づいて要求を拒否する場合があります。

このメンバーには次の値を格納しなければなりません。

意味
WDS_TRANSPORT_CLIENT_CURRENT_API_VERSION
1
現在のバージョンです。
ulAuthLevelWDS_TRANSPORTCLIENT_REQUEST_AUTH_LEVEL4+8+8

このメンバーには次のいずれかの値を指定できます。

意味
WDS_TRANSPORTCLIENT_AUTH
0x1
このユーザーの認証情報がサーバーに送信されます。サーバーはこの情報を使用して、ユーザーがこのファイルへのアクセス権を持つかどうかを判断します。
WDS_TRANSPORTCLIENT_NO_AUTH
0x2
認証情報はサーバーに送信されません。サーバーがこれらの要求を受け入れるように構成されていない場合、要求は失敗します。
pwszServerLPWSTR8/4+16+12サーバー名。
pwszNamespaceLPWSTR8/4+24+16取得するオブジェクトの名前空間。
pwszObjectNameLPWSTR8/4+32+20取得するオブジェクトの名前を指定します。オブジェクト名はプロバイダーに依存します。
ulCacheSizeDWORD4+40+24コンシューマーがキューに保持できるデータ量をバイト単位で指定します。このしきい値に達すると、WdsTransportClientCompleteWrite によってメモリが解放されるまで、クライアントはコンシューマーへの書き込みを行いません。
ulProtocolDWORD4+44+28

この転送に使用するプロトコルを指定します。

このメンバーには次の値を指定できます。

意味
WDS_TRANSPORTCLIENT_PROTOCOL_MULTICAST
0x00000001
効率的なマルチキャストプロトコルを使用してファイルが転送されます。
pvProtocolDatavoid*8/4+48+32そのプロトコル用のプロトコルデータ構造体。WDS_TRANSPORTCLIENT_PROTOCOL_MULTICAST プロトコルの場合、この構造体は NULL です。
ulProtocolDataLengthDWORD4+56+36pvProtocolData が指すプロトコルデータの長さ。

公式ドキュメント

この構造体は WdsTransportClientStartSession 関数で使用されます。

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

各言語での定義

#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