ホーム › Media.MediaFoundation › MFP_ACQUIRE_USER_CREDENTIAL_EVENT
MFP_ACQUIRE_USER_CREDENTIAL_EVENT
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| header | MFP_EVENT_HEADER | 32/20 | +0 | +0 | イベント共通情報を示すMFP_EVENT_HEADER。 |
| dwUserData | UINT_PTR | 8/4 | +32 | +20 | メディア項目作成時に指定されたユーザーデータ。 |
| fProceedWithAuthentication | BOOL | 4 | +40 | +24 | 認証を続行する場合はTRUEを設定する。中止する場合はFALSE。 |
| hrAuthenticationStatus | HRESULT | 4 | +44 | +28 | 認証処理の結果を示すHRESULT。 |
| pwszURL | LPWSTR | 8/4 | +48 | +32 | 認証対象のURLを示すワイド文字列。 |
| pwszSite | LPWSTR | 8/4 | +56 | +36 | 認証対象のサイト名を示すワイド文字列。 |
| pwszRealm | LPWSTR | 8/4 | +64 | +40 | 認証レルム名を示すワイド文字列。 |
| pwszPackage | LPWSTR | 8/4 | +72 | +44 | 使用する認証パッケージ名を示すワイド文字列。 |
| nRetries | INT | 4 | +80 | +48 | 残りの認証再試行回数。 |
| flags | DWORD | 4 | +84 | +52 | 資格情報取得に関する属性を示すビットフラグ。 |
| pCredential | IMFNetCredential* | 8/4 | +88 | +56 | 資格情報を設定するIMFNetCredentialへのポインタ。 |
各言語での定義
#include <windows.h>
// MFP_EVENT_HEADER (x64 32 / x86 20 バイト)
typedef struct MFP_EVENT_HEADER {
MFP_EVENT_TYPE eEventType;
HRESULT hrEvent;
IMFPMediaPlayer* pMediaPlayer;
MFP_MEDIAPLAYER_STATE eState;
IPropertyStore* pPropertyStore;
} MFP_EVENT_HEADER;
// MFP_ACQUIRE_USER_CREDENTIAL_EVENT (x64 96 / x86 60 バイト)
typedef struct MFP_ACQUIRE_USER_CREDENTIAL_EVENT {
MFP_EVENT_HEADER header;
UINT_PTR dwUserData;
BOOL fProceedWithAuthentication;
HRESULT hrAuthenticationStatus;
LPWSTR pwszURL;
LPWSTR pwszSite;
LPWSTR pwszRealm;
LPWSTR pwszPackage;
INT nRetries;
DWORD flags;
IMFNetCredential* pCredential;
} MFP_ACQUIRE_USER_CREDENTIAL_EVENT;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MFP_EVENT_HEADER
{
public int eEventType;
public int hrEvent;
public IntPtr pMediaPlayer;
public int eState;
public IntPtr pPropertyStore;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MFP_ACQUIRE_USER_CREDENTIAL_EVENT
{
public MFP_EVENT_HEADER header;
public UIntPtr dwUserData;
[MarshalAs(UnmanagedType.Bool)] public bool fProceedWithAuthentication;
public int hrAuthenticationStatus;
public IntPtr pwszURL;
public IntPtr pwszSite;
public IntPtr pwszRealm;
public IntPtr pwszPackage;
public int nRetries;
public uint flags;
public IntPtr pCredential;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MFP_EVENT_HEADER
Public eEventType As Integer
Public hrEvent As Integer
Public pMediaPlayer As IntPtr
Public eState As Integer
Public pPropertyStore As IntPtr
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MFP_ACQUIRE_USER_CREDENTIAL_EVENT
Public header As MFP_EVENT_HEADER
Public dwUserData As UIntPtr
<MarshalAs(UnmanagedType.Bool)> Public fProceedWithAuthentication As Boolean
Public hrAuthenticationStatus As Integer
Public pwszURL As IntPtr
Public pwszSite As IntPtr
Public pwszRealm As IntPtr
Public pwszPackage As IntPtr
Public nRetries As Integer
Public flags As UInteger
Public pCredential As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class MFP_EVENT_HEADER(ctypes.Structure):
_fields_ = [
("eEventType", ctypes.c_int),
("hrEvent", ctypes.c_int),
("pMediaPlayer", ctypes.c_void_p),
("eState", ctypes.c_int),
("pPropertyStore", ctypes.c_void_p),
]
class MFP_ACQUIRE_USER_CREDENTIAL_EVENT(ctypes.Structure):
_fields_ = [
("header", MFP_EVENT_HEADER),
("dwUserData", ctypes.c_size_t),
("fProceedWithAuthentication", wintypes.BOOL),
("hrAuthenticationStatus", ctypes.c_int),
("pwszURL", ctypes.c_void_p),
("pwszSite", ctypes.c_void_p),
("pwszRealm", ctypes.c_void_p),
("pwszPackage", ctypes.c_void_p),
("nRetries", ctypes.c_int),
("flags", wintypes.DWORD),
("pCredential", ctypes.c_void_p),
]#[repr(C)]
pub struct MFP_EVENT_HEADER {
pub eEventType: i32,
pub hrEvent: i32,
pub pMediaPlayer: *mut core::ffi::c_void,
pub eState: i32,
pub pPropertyStore: *mut core::ffi::c_void,
}
#[repr(C)]
pub struct MFP_ACQUIRE_USER_CREDENTIAL_EVENT {
pub header: MFP_EVENT_HEADER,
pub dwUserData: usize,
pub fProceedWithAuthentication: i32,
pub hrAuthenticationStatus: i32,
pub pwszURL: *mut core::ffi::c_void,
pub pwszSite: *mut core::ffi::c_void,
pub pwszRealm: *mut core::ffi::c_void,
pub pwszPackage: *mut core::ffi::c_void,
pub nRetries: i32,
pub flags: u32,
pub pCredential: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type MFP_EVENT_HEADER struct {
eEventType int32
hrEvent int32
pMediaPlayer uintptr
eState int32
pPropertyStore uintptr
}
type MFP_ACQUIRE_USER_CREDENTIAL_EVENT struct {
header MFP_EVENT_HEADER
dwUserData uintptr
fProceedWithAuthentication int32
hrAuthenticationStatus int32
pwszURL uintptr
pwszSite uintptr
pwszRealm uintptr
pwszPackage uintptr
nRetries int32
flags uint32
pCredential uintptr
}type
MFP_EVENT_HEADER = record
eEventType: Integer;
hrEvent: Integer;
pMediaPlayer: Pointer;
eState: Integer;
pPropertyStore: Pointer;
end;
MFP_ACQUIRE_USER_CREDENTIAL_EVENT = record
header: MFP_EVENT_HEADER;
dwUserData: NativeUInt;
fProceedWithAuthentication: BOOL;
hrAuthenticationStatus: Integer;
pwszURL: Pointer;
pwszSite: Pointer;
pwszRealm: Pointer;
pwszPackage: Pointer;
nRetries: Integer;
flags: DWORD;
pCredential: Pointer;
end;const MFP_EVENT_HEADER = extern struct {
eEventType: i32,
hrEvent: i32,
pMediaPlayer: ?*anyopaque,
eState: i32,
pPropertyStore: ?*anyopaque,
};
const MFP_ACQUIRE_USER_CREDENTIAL_EVENT = extern struct {
header: MFP_EVENT_HEADER,
dwUserData: usize,
fProceedWithAuthentication: i32,
hrAuthenticationStatus: i32,
pwszURL: ?*anyopaque,
pwszSite: ?*anyopaque,
pwszRealm: ?*anyopaque,
pwszPackage: ?*anyopaque,
nRetries: i32,
flags: u32,
pCredential: ?*anyopaque,
};type
MFP_EVENT_HEADER {.bycopy.} = object
eEventType: int32
hrEvent: int32
pMediaPlayer: pointer
eState: int32
pPropertyStore: pointer
MFP_ACQUIRE_USER_CREDENTIAL_EVENT {.bycopy.} = object
header: MFP_EVENT_HEADER
dwUserData: uint
fProceedWithAuthentication: int32
hrAuthenticationStatus: int32
pwszURL: pointer
pwszSite: pointer
pwszRealm: pointer
pwszPackage: pointer
nRetries: int32
flags: uint32
pCredential: pointerstruct MFP_EVENT_HEADER
{
int eEventType;
int hrEvent;
void* pMediaPlayer;
int eState;
void* pPropertyStore;
}
struct MFP_ACQUIRE_USER_CREDENTIAL_EVENT
{
MFP_EVENT_HEADER header;
size_t dwUserData;
int fProceedWithAuthentication;
int hrAuthenticationStatus;
void* pwszURL;
void* pwszSite;
void* pwszRealm;
void* pwszPackage;
int nRetries;
uint flags;
void* pCredential;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; MFP_ACQUIRE_USER_CREDENTIAL_EVENT サイズ: 60 バイト(x86)
dim st, 15 ; 4byte整数×15(構造体サイズ 60 / 4 切り上げ)
; header : MFP_EVENT_HEADER (+0, 20byte) varptr(st)+0 を基点に操作(20byte:入れ子/配列)
; dwUserData : UINT_PTR (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; fProceedWithAuthentication : BOOL (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; hrAuthenticationStatus : HRESULT (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; pwszURL : LPWSTR (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; pwszSite : LPWSTR (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; pwszRealm : LPWSTR (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; pwszPackage : LPWSTR (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; nRetries : INT (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; flags : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; pCredential : IMFNetCredential* (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; MFP_ACQUIRE_USER_CREDENTIAL_EVENT サイズ: 96 バイト(x64)
dim st, 24 ; 4byte整数×24(構造体サイズ 96 / 4 切り上げ)
; header : MFP_EVENT_HEADER (+0, 32byte) varptr(st)+0 を基点に操作(32byte:入れ子/配列)
; dwUserData : UINT_PTR (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; fProceedWithAuthentication : BOOL (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; hrAuthenticationStatus : HRESULT (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; pwszURL : LPWSTR (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; pwszSite : LPWSTR (+56, 8byte) qpoke st,56,値 / qpeek(st,56) ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; pwszRealm : LPWSTR (+64, 8byte) qpoke st,64,値 / qpeek(st,64) ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; pwszPackage : LPWSTR (+72, 8byte) qpoke st,72,値 / qpeek(st,72) ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; nRetries : INT (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; flags : DWORD (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; pCredential : IMFNetCredential* (+88, 8byte) qpoke st,88,値 / qpeek(st,88) ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global MFP_EVENT_HEADER
#field int eEventType
#field int hrEvent
#field intptr pMediaPlayer
#field int eState
#field intptr pPropertyStore
#endstruct
#defstruct global MFP_ACQUIRE_USER_CREDENTIAL_EVENT
#field MFP_EVENT_HEADER header
#field intptr dwUserData
#field bool fProceedWithAuthentication
#field int hrAuthenticationStatus
#field intptr pwszURL
#field intptr pwszSite
#field intptr pwszRealm
#field intptr pwszPackage
#field int nRetries
#field int flags
#field intptr pCredential
#endstruct
stdim st, MFP_ACQUIRE_USER_CREDENTIAL_EVENT ; NSTRUCT 変数を確保
st->dwUserData = 100
mes "dwUserData=" + st->dwUserData