ホーム › Media.MediaFoundation › MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS
MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| dwSize | DWORD | 4 | +0 | +0 | この構造体全体のバイトサイズ。 |
| dwVer | DWORD | 4 | +4 | +4 | 構造体のバージョン番号。 |
| cbSignatureOffset | DWORD | 4 | +8 | +8 | 署名データの構造体先頭からのオフセット(バイト)。 |
| cbSignatureSize | DWORD | 4 | +12 | +12 | 署名データのバイトサイズ。 |
| cbExtensionOffset | DWORD | 4 | +16 | +16 | 拡張データの構造体先頭からのオフセット(バイト)。 |
| cbExtensionSize | DWORD | 4 | +20 | +20 | 拡張データのバイトサイズ。 |
| cActions | DWORD | 4 | +24 | +24 | 許可アクションの数。 |
| rgOutputActions | MFINPUTTRUSTAUTHORITY_ACCESS_ACTION | 24/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 Structureimport 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