Win32 API 日本語リファレンス
ホームNetworking.WindowsWebServices › WS_CUSTOM_CHANNEL_CALLBACKS

WS_CUSTOM_CHANNEL_CALLBACKS

構造体
サイズx64: 112 バイト / x86: 56 バイト

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

フィールド

フィールドサイズx64x86説明
createChannelCallbackWS_CREATE_CHANNEL_CALLBACK8/4+0+0WsCreateChannel を実装するコールバックです。 詳細については WS_CREATE_CHANNEL_CALLBACK を参照してください。
freeChannelCallbackWS_FREE_CHANNEL_CALLBACK8/4+8+4WsFreeChannel を実装するコールバックです。 詳細については WS_FREE_CHANNEL_CALLBACK を参照してください。
resetChannelCallbackWS_RESET_CHANNEL_CALLBACK8/4+16+8WsResetChannel を実装するコールバックです。 詳細については WS_RESET_CHANNEL_CALLBACK を参照してください。
openChannelCallbackWS_OPEN_CHANNEL_CALLBACK8/4+24+12WsOpenChannel を実装するコールバックです。 詳細については WS_OPEN_CHANNEL_CALLBACK を参照してください。
closeChannelCallbackWS_CLOSE_CHANNEL_CALLBACK8/4+32+16WsCloseChannel を実装するコールバックです。 詳細については WS_CLOSE_CHANNEL_CALLBACK を参照してください。
abortChannelCallbackWS_ABORT_CHANNEL_CALLBACK8/4+40+20WsAbortChannel を実装するコールバックです。 詳細については WS_ABORT_CHANNEL_CALLBACK を参照してください。
getChannelPropertyCallbackWS_GET_CHANNEL_PROPERTY_CALLBACK8/4+48+24WsGetChannelProperty を実装するコールバックです。 詳細については WS_GET_CHANNEL_PROPERTY_CALLBACK を参照してください。
setChannelPropertyCallbackWS_SET_CHANNEL_PROPERTY_CALLBACK8/4+56+28WsSetChannelProperty を実装するコールバックです。 詳細については WS_SET_CHANNEL_PROPERTY_CALLBACK を参照してください。
writeMessageStartCallbackWS_WRITE_MESSAGE_START_CALLBACK8/4+64+32WsWriteMessageStart を実装するコールバックです。 詳細については WS_WRITE_MESSAGE_START_CALLBACK を参照してください。
writeMessageEndCallbackWS_WRITE_MESSAGE_END_CALLBACK8/4+72+36WsWriteMessageEnd を実装するコールバックです。 詳細については WS_WRITE_MESSAGE_END_CALLBACK を参照してください。
readMessageStartCallbackWS_READ_MESSAGE_START_CALLBACK8/4+80+40WsReadMessageStart を実装するコールバックです。 詳細については WS_READ_MESSAGE_START_CALLBACK を参照してください。
readMessageEndCallbackWS_READ_MESSAGE_END_CALLBACK8/4+88+44WsReadMessageEnd を実装するコールバックです。 詳細については WS_READ_MESSAGE_END_CALLBACK を参照してください。
abandonMessageCallbackWS_ABANDON_MESSAGE_CALLBACK8/4+96+48WsAbandonMessage を実装するコールバックです。 詳細については WS_ABANDON_MESSAGE_CALLBACK を参照してください。
shutdownSessionChannelCallbackWS_SHUTDOWN_SESSION_CHANNEL_CALLBACK8/4+104+52WsShutdownSessionChannel を実装するコールバックです。 詳細については WS_SHUTDOWN_SESSION_CHANNEL_CALLBACK を参照してください。

公式ドキュメント

カスタムチャネルの実装を構成する一連のコールバックを 指定するために使用される構造体です。

解説(Remarks)

この構造体は、 WsCreateChannel または WsCreateChannelForListener でチャネルを作成する際に、WS_CHANNEL_PROPERTY_CUSTOM_CHANNEL_CALLBACKS を使用して指定します。

特に記載がない限り、各コールバックは、すべてのパラメーターを検証し、 要求された操作が現在の WS_CHANNEL_STATE において受け入れ可能であることを確認する責任を負います。

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

各言語での定義

#include <windows.h>

// WS_CUSTOM_CHANNEL_CALLBACKS  (x64 112 / x86 56 バイト)
typedef struct WS_CUSTOM_CHANNEL_CALLBACKS {
    WS_CREATE_CHANNEL_CALLBACK createChannelCallback;
    WS_FREE_CHANNEL_CALLBACK freeChannelCallback;
    WS_RESET_CHANNEL_CALLBACK resetChannelCallback;
    WS_OPEN_CHANNEL_CALLBACK openChannelCallback;
    WS_CLOSE_CHANNEL_CALLBACK closeChannelCallback;
    WS_ABORT_CHANNEL_CALLBACK abortChannelCallback;
    WS_GET_CHANNEL_PROPERTY_CALLBACK getChannelPropertyCallback;
    WS_SET_CHANNEL_PROPERTY_CALLBACK setChannelPropertyCallback;
    WS_WRITE_MESSAGE_START_CALLBACK writeMessageStartCallback;
    WS_WRITE_MESSAGE_END_CALLBACK writeMessageEndCallback;
    WS_READ_MESSAGE_START_CALLBACK readMessageStartCallback;
    WS_READ_MESSAGE_END_CALLBACK readMessageEndCallback;
    WS_ABANDON_MESSAGE_CALLBACK abandonMessageCallback;
    WS_SHUTDOWN_SESSION_CHANNEL_CALLBACK shutdownSessionChannelCallback;
} WS_CUSTOM_CHANNEL_CALLBACKS;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct WS_CUSTOM_CHANNEL_CALLBACKS
{
    public IntPtr createChannelCallback;
    public IntPtr freeChannelCallback;
    public IntPtr resetChannelCallback;
    public IntPtr openChannelCallback;
    public IntPtr closeChannelCallback;
    public IntPtr abortChannelCallback;
    public IntPtr getChannelPropertyCallback;
    public IntPtr setChannelPropertyCallback;
    public IntPtr writeMessageStartCallback;
    public IntPtr writeMessageEndCallback;
    public IntPtr readMessageStartCallback;
    public IntPtr readMessageEndCallback;
    public IntPtr abandonMessageCallback;
    public IntPtr shutdownSessionChannelCallback;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure WS_CUSTOM_CHANNEL_CALLBACKS
    Public createChannelCallback As IntPtr
    Public freeChannelCallback As IntPtr
    Public resetChannelCallback As IntPtr
    Public openChannelCallback As IntPtr
    Public closeChannelCallback As IntPtr
    Public abortChannelCallback As IntPtr
    Public getChannelPropertyCallback As IntPtr
    Public setChannelPropertyCallback As IntPtr
    Public writeMessageStartCallback As IntPtr
    Public writeMessageEndCallback As IntPtr
    Public readMessageStartCallback As IntPtr
    Public readMessageEndCallback As IntPtr
    Public abandonMessageCallback As IntPtr
    Public shutdownSessionChannelCallback As IntPtr
End Structure
import ctypes
from ctypes import wintypes

class WS_CUSTOM_CHANNEL_CALLBACKS(ctypes.Structure):
    _fields_ = [
        ("createChannelCallback", ctypes.c_void_p),
        ("freeChannelCallback", ctypes.c_void_p),
        ("resetChannelCallback", ctypes.c_void_p),
        ("openChannelCallback", ctypes.c_void_p),
        ("closeChannelCallback", ctypes.c_void_p),
        ("abortChannelCallback", ctypes.c_void_p),
        ("getChannelPropertyCallback", ctypes.c_void_p),
        ("setChannelPropertyCallback", ctypes.c_void_p),
        ("writeMessageStartCallback", ctypes.c_void_p),
        ("writeMessageEndCallback", ctypes.c_void_p),
        ("readMessageStartCallback", ctypes.c_void_p),
        ("readMessageEndCallback", ctypes.c_void_p),
        ("abandonMessageCallback", ctypes.c_void_p),
        ("shutdownSessionChannelCallback", ctypes.c_void_p),
    ]
#[repr(C)]
pub struct WS_CUSTOM_CHANNEL_CALLBACKS {
    pub createChannelCallback: *mut core::ffi::c_void,
    pub freeChannelCallback: *mut core::ffi::c_void,
    pub resetChannelCallback: *mut core::ffi::c_void,
    pub openChannelCallback: *mut core::ffi::c_void,
    pub closeChannelCallback: *mut core::ffi::c_void,
    pub abortChannelCallback: *mut core::ffi::c_void,
    pub getChannelPropertyCallback: *mut core::ffi::c_void,
    pub setChannelPropertyCallback: *mut core::ffi::c_void,
    pub writeMessageStartCallback: *mut core::ffi::c_void,
    pub writeMessageEndCallback: *mut core::ffi::c_void,
    pub readMessageStartCallback: *mut core::ffi::c_void,
    pub readMessageEndCallback: *mut core::ffi::c_void,
    pub abandonMessageCallback: *mut core::ffi::c_void,
    pub shutdownSessionChannelCallback: *mut core::ffi::c_void,
}
import "golang.org/x/sys/windows"

type WS_CUSTOM_CHANNEL_CALLBACKS struct {
	createChannelCallback uintptr
	freeChannelCallback uintptr
	resetChannelCallback uintptr
	openChannelCallback uintptr
	closeChannelCallback uintptr
	abortChannelCallback uintptr
	getChannelPropertyCallback uintptr
	setChannelPropertyCallback uintptr
	writeMessageStartCallback uintptr
	writeMessageEndCallback uintptr
	readMessageStartCallback uintptr
	readMessageEndCallback uintptr
	abandonMessageCallback uintptr
	shutdownSessionChannelCallback uintptr
}
type
  WS_CUSTOM_CHANNEL_CALLBACKS = record
    createChannelCallback: Pointer;
    freeChannelCallback: Pointer;
    resetChannelCallback: Pointer;
    openChannelCallback: Pointer;
    closeChannelCallback: Pointer;
    abortChannelCallback: Pointer;
    getChannelPropertyCallback: Pointer;
    setChannelPropertyCallback: Pointer;
    writeMessageStartCallback: Pointer;
    writeMessageEndCallback: Pointer;
    readMessageStartCallback: Pointer;
    readMessageEndCallback: Pointer;
    abandonMessageCallback: Pointer;
    shutdownSessionChannelCallback: Pointer;
  end;
const WS_CUSTOM_CHANNEL_CALLBACKS = extern struct {
    createChannelCallback: ?*anyopaque,
    freeChannelCallback: ?*anyopaque,
    resetChannelCallback: ?*anyopaque,
    openChannelCallback: ?*anyopaque,
    closeChannelCallback: ?*anyopaque,
    abortChannelCallback: ?*anyopaque,
    getChannelPropertyCallback: ?*anyopaque,
    setChannelPropertyCallback: ?*anyopaque,
    writeMessageStartCallback: ?*anyopaque,
    writeMessageEndCallback: ?*anyopaque,
    readMessageStartCallback: ?*anyopaque,
    readMessageEndCallback: ?*anyopaque,
    abandonMessageCallback: ?*anyopaque,
    shutdownSessionChannelCallback: ?*anyopaque,
};
type
  WS_CUSTOM_CHANNEL_CALLBACKS {.bycopy.} = object
    createChannelCallback: pointer
    freeChannelCallback: pointer
    resetChannelCallback: pointer
    openChannelCallback: pointer
    closeChannelCallback: pointer
    abortChannelCallback: pointer
    getChannelPropertyCallback: pointer
    setChannelPropertyCallback: pointer
    writeMessageStartCallback: pointer
    writeMessageEndCallback: pointer
    readMessageStartCallback: pointer
    readMessageEndCallback: pointer
    abandonMessageCallback: pointer
    shutdownSessionChannelCallback: pointer
struct WS_CUSTOM_CHANNEL_CALLBACKS
{
    void* createChannelCallback;
    void* freeChannelCallback;
    void* resetChannelCallback;
    void* openChannelCallback;
    void* closeChannelCallback;
    void* abortChannelCallback;
    void* getChannelPropertyCallback;
    void* setChannelPropertyCallback;
    void* writeMessageStartCallback;
    void* writeMessageEndCallback;
    void* readMessageStartCallback;
    void* readMessageEndCallback;
    void* abandonMessageCallback;
    void* shutdownSessionChannelCallback;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; WS_CUSTOM_CHANNEL_CALLBACKS サイズ: 56 バイト(x86)
dim st, 14    ; 4byte整数×14(構造体サイズ 56 / 4 切り上げ)
; createChannelCallback : WS_CREATE_CHANNEL_CALLBACK (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; freeChannelCallback : WS_FREE_CHANNEL_CALLBACK (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; resetChannelCallback : WS_RESET_CHANNEL_CALLBACK (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; openChannelCallback : WS_OPEN_CHANNEL_CALLBACK (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; closeChannelCallback : WS_CLOSE_CHANNEL_CALLBACK (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; abortChannelCallback : WS_ABORT_CHANNEL_CALLBACK (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; getChannelPropertyCallback : WS_GET_CHANNEL_PROPERTY_CALLBACK (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; setChannelPropertyCallback : WS_SET_CHANNEL_PROPERTY_CALLBACK (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; writeMessageStartCallback : WS_WRITE_MESSAGE_START_CALLBACK (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; writeMessageEndCallback : WS_WRITE_MESSAGE_END_CALLBACK (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; readMessageStartCallback : WS_READ_MESSAGE_START_CALLBACK (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; readMessageEndCallback : WS_READ_MESSAGE_END_CALLBACK (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; abandonMessageCallback : WS_ABANDON_MESSAGE_CALLBACK (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; shutdownSessionChannelCallback : WS_SHUTDOWN_SESSION_CHANNEL_CALLBACK (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; WS_CUSTOM_CHANNEL_CALLBACKS サイズ: 112 バイト(x64)
dim st, 28    ; 4byte整数×28(構造体サイズ 112 / 4 切り上げ)
; createChannelCallback : WS_CREATE_CHANNEL_CALLBACK (+0, 8byte)  qpoke st,0,値 / qpeek(st,0)  ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; freeChannelCallback : WS_FREE_CHANNEL_CALLBACK (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; resetChannelCallback : WS_RESET_CHANNEL_CALLBACK (+16, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; openChannelCallback : WS_OPEN_CHANNEL_CALLBACK (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; closeChannelCallback : WS_CLOSE_CHANNEL_CALLBACK (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; abortChannelCallback : WS_ABORT_CHANNEL_CALLBACK (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; getChannelPropertyCallback : WS_GET_CHANNEL_PROPERTY_CALLBACK (+48, 8byte)  qpoke st,48,値 / qpeek(st,48)  ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; setChannelPropertyCallback : WS_SET_CHANNEL_PROPERTY_CALLBACK (+56, 8byte)  qpoke st,56,値 / qpeek(st,56)  ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; writeMessageStartCallback : WS_WRITE_MESSAGE_START_CALLBACK (+64, 8byte)  qpoke st,64,値 / qpeek(st,64)  ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; writeMessageEndCallback : WS_WRITE_MESSAGE_END_CALLBACK (+72, 8byte)  qpoke st,72,値 / qpeek(st,72)  ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; readMessageStartCallback : WS_READ_MESSAGE_START_CALLBACK (+80, 8byte)  qpoke st,80,値 / qpeek(st,80)  ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; readMessageEndCallback : WS_READ_MESSAGE_END_CALLBACK (+88, 8byte)  qpoke st,88,値 / qpeek(st,88)  ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; abandonMessageCallback : WS_ABANDON_MESSAGE_CALLBACK (+96, 8byte)  qpoke st,96,値 / qpeek(st,96)  ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; shutdownSessionChannelCallback : WS_SHUTDOWN_SESSION_CHANNEL_CALLBACK (+104, 8byte)  qpoke st,104,値 / qpeek(st,104)  ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global WS_CUSTOM_CHANNEL_CALLBACKS
    #field intptr createChannelCallback
    #field intptr freeChannelCallback
    #field intptr resetChannelCallback
    #field intptr openChannelCallback
    #field intptr closeChannelCallback
    #field intptr abortChannelCallback
    #field intptr getChannelPropertyCallback
    #field intptr setChannelPropertyCallback
    #field intptr writeMessageStartCallback
    #field intptr writeMessageEndCallback
    #field intptr readMessageStartCallback
    #field intptr readMessageEndCallback
    #field intptr abandonMessageCallback
    #field intptr shutdownSessionChannelCallback
#endstruct

stdim st, WS_CUSTOM_CHANNEL_CALLBACKS        ; NSTRUCT 変数を確保