Win32 API 日本語リファレンス
ホームMedia.MediaFoundation › MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS

MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS

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

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

フィールド

フィールドサイズx64x86説明
dwSizeDWORD4+0+0この構造体全体のバイトサイズ。
dwVerDWORD4+4+4構造体のバージョン番号。
cbSignatureOffsetDWORD4+8+8署名データの構造体先頭からのオフセット(バイト)。
cbSignatureSizeDWORD4+12+12署名データのバイトサイズ。
cbExtensionOffsetDWORD4+16+16拡張データの構造体先頭からのオフセット(バイト)。
cbExtensionSizeDWORD4+20+20拡張データのバイトサイズ。
cActionsDWORD4+24+24許可アクションの数。
rgOutputActionsMFINPUTTRUSTAUTHORITY_ACCESS_ACTION24/12+32+28出力アクションの配列(MFINPUTTRUSTAUTHORITY_ACCESS_ACTION)。可変長配列の先頭。

各言語での定義

#include <windows.h>

// MFINPUTTRUSTAUTHORITY_ACCESS_ACTION  (x64 24 / x86 12 バイト)
typedef struct MFINPUTTRUSTAUTHORITY_ACCESS_ACTION {
    MFPOLICYMANAGER_ACTION Action;
    BYTE* pbTicket;
    DWORD cbTicket;
} MFINPUTTRUSTAUTHORITY_ACCESS_ACTION;

// MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS  (x64 56 / x86 40 バイト)
typedef struct MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS {
    DWORD dwSize;
    DWORD dwVer;
    DWORD cbSignatureOffset;
    DWORD cbSignatureSize;
    DWORD cbExtensionOffset;
    DWORD cbExtensionSize;
    DWORD cActions;
    MFINPUTTRUSTAUTHORITY_ACCESS_ACTION rgOutputActions[1];
} MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MFINPUTTRUSTAUTHORITY_ACCESS_ACTION
{
    public int Action;
    public IntPtr pbTicket;
    public uint cbTicket;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS
{
    public uint dwSize;
    public uint dwVer;
    public uint cbSignatureOffset;
    public uint cbSignatureSize;
    public uint cbExtensionOffset;
    public uint cbExtensionSize;
    public uint cActions;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)] public MFINPUTTRUSTAUTHORITY_ACCESS_ACTION[] rgOutputActions;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MFINPUTTRUSTAUTHORITY_ACCESS_ACTION
    Public Action As Integer
    Public pbTicket As IntPtr
    Public cbTicket As UInteger
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS
    Public dwSize As UInteger
    Public dwVer As UInteger
    Public cbSignatureOffset As UInteger
    Public cbSignatureSize As UInteger
    Public cbExtensionOffset As UInteger
    Public cbExtensionSize As UInteger
    Public cActions As UInteger
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=1)> Public rgOutputActions() As MFINPUTTRUSTAUTHORITY_ACCESS_ACTION
End Structure
import ctypes
from ctypes import wintypes

class MFINPUTTRUSTAUTHORITY_ACCESS_ACTION(ctypes.Structure):
    _fields_ = [
        ("Action", ctypes.c_int),
        ("pbTicket", ctypes.c_void_p),
        ("cbTicket", wintypes.DWORD),
    ]

class MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS(ctypes.Structure):
    _fields_ = [
        ("dwSize", wintypes.DWORD),
        ("dwVer", wintypes.DWORD),
        ("cbSignatureOffset", wintypes.DWORD),
        ("cbSignatureSize", wintypes.DWORD),
        ("cbExtensionOffset", wintypes.DWORD),
        ("cbExtensionSize", wintypes.DWORD),
        ("cActions", wintypes.DWORD),
        ("rgOutputActions", MFINPUTTRUSTAUTHORITY_ACCESS_ACTION * 1),
    ]
#[repr(C)]
pub struct MFINPUTTRUSTAUTHORITY_ACCESS_ACTION {
    pub Action: i32,
    pub pbTicket: *mut core::ffi::c_void,
    pub cbTicket: u32,
}

#[repr(C)]
pub struct MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS {
    pub dwSize: u32,
    pub dwVer: u32,
    pub cbSignatureOffset: u32,
    pub cbSignatureSize: u32,
    pub cbExtensionOffset: u32,
    pub cbExtensionSize: u32,
    pub cActions: u32,
    pub rgOutputActions: [MFINPUTTRUSTAUTHORITY_ACCESS_ACTION; 1],
}
import "golang.org/x/sys/windows"

type MFINPUTTRUSTAUTHORITY_ACCESS_ACTION struct {
	Action int32
	pbTicket uintptr
	cbTicket uint32
}

type MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS struct {
	dwSize uint32
	dwVer uint32
	cbSignatureOffset uint32
	cbSignatureSize uint32
	cbExtensionOffset uint32
	cbExtensionSize uint32
	cActions uint32
	rgOutputActions [1]MFINPUTTRUSTAUTHORITY_ACCESS_ACTION
}
type
  MFINPUTTRUSTAUTHORITY_ACCESS_ACTION = record
    Action: Integer;
    pbTicket: Pointer;
    cbTicket: DWORD;
  end;

  MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS = record
    dwSize: DWORD;
    dwVer: DWORD;
    cbSignatureOffset: DWORD;
    cbSignatureSize: DWORD;
    cbExtensionOffset: DWORD;
    cbExtensionSize: DWORD;
    cActions: DWORD;
    rgOutputActions: array[0..0] of MFINPUTTRUSTAUTHORITY_ACCESS_ACTION;
  end;
const MFINPUTTRUSTAUTHORITY_ACCESS_ACTION = extern struct {
    Action: i32,
    pbTicket: ?*anyopaque,
    cbTicket: u32,
};

const MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS = extern struct {
    dwSize: u32,
    dwVer: u32,
    cbSignatureOffset: u32,
    cbSignatureSize: u32,
    cbExtensionOffset: u32,
    cbExtensionSize: u32,
    cActions: u32,
    rgOutputActions: [1]MFINPUTTRUSTAUTHORITY_ACCESS_ACTION,
};
type
  MFINPUTTRUSTAUTHORITY_ACCESS_ACTION {.bycopy.} = object
    Action: int32
    pbTicket: pointer
    cbTicket: uint32

  MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS {.bycopy.} = object
    dwSize: uint32
    dwVer: uint32
    cbSignatureOffset: uint32
    cbSignatureSize: uint32
    cbExtensionOffset: uint32
    cbExtensionSize: uint32
    cActions: uint32
    rgOutputActions: array[1, MFINPUTTRUSTAUTHORITY_ACCESS_ACTION]
struct MFINPUTTRUSTAUTHORITY_ACCESS_ACTION
{
    int Action;
    void* pbTicket;
    uint cbTicket;
}

struct MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS
{
    uint dwSize;
    uint dwVer;
    uint cbSignatureOffset;
    uint cbSignatureSize;
    uint cbExtensionOffset;
    uint cbExtensionSize;
    uint cActions;
    MFINPUTTRUSTAUTHORITY_ACCESS_ACTION[1] rgOutputActions;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS サイズ: 40 バイト(x86)
dim st, 10    ; 4byte整数×10(構造体サイズ 40 / 4 切り上げ)
; dwSize : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; dwVer : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; cbSignatureOffset : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; cbSignatureSize : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; cbExtensionOffset : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; cbExtensionSize : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; cActions : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; rgOutputActions : MFINPUTTRUSTAUTHORITY_ACCESS_ACTION (+28, 12byte)  varptr(st)+28 を基点に操作(12byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS サイズ: 56 バイト(x64)
dim st, 14    ; 4byte整数×14(構造体サイズ 56 / 4 切り上げ)
; dwSize : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; dwVer : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; cbSignatureOffset : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; cbSignatureSize : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; cbExtensionOffset : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; cbExtensionSize : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; cActions : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; rgOutputActions : MFINPUTTRUSTAUTHORITY_ACCESS_ACTION (+32, 24byte)  varptr(st)+32 を基点に操作(24byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global MFINPUTTRUSTAUTHORITY_ACCESS_ACTION
    #field int Action
    #field intptr pbTicket
    #field int cbTicket
#endstruct

#defstruct global MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS
    #field int dwSize
    #field int dwVer
    #field int cbSignatureOffset
    #field int cbSignatureSize
    #field int cbExtensionOffset
    #field int cbExtensionSize
    #field int cActions
    #field MFINPUTTRUSTAUTHORITY_ACCESS_ACTION rgOutputActions 1
#endstruct

stdim st, MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS        ; NSTRUCT 変数を確保
st->dwSize = 100
mes "dwSize=" + st->dwSize