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

MFP_ACQUIRE_USER_CREDENTIAL_EVENT

構造体
サイズx64: 96 バイト / x86: 60 バイト

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

フィールド

フィールドサイズx64x86説明
headerMFP_EVENT_HEADER32/20+0+0イベント共通情報を示すMFP_EVENT_HEADER。
dwUserDataUINT_PTR8/4+32+20メディア項目作成時に指定されたユーザーデータ。
fProceedWithAuthenticationBOOL4+40+24認証を続行する場合はTRUEを設定する。中止する場合はFALSE。
hrAuthenticationStatusHRESULT4+44+28認証処理の結果を示すHRESULT。
pwszURLLPWSTR8/4+48+32認証対象のURLを示すワイド文字列。
pwszSiteLPWSTR8/4+56+36認証対象のサイト名を示すワイド文字列。
pwszRealmLPWSTR8/4+64+40認証レルム名を示すワイド文字列。
pwszPackageLPWSTR8/4+72+44使用する認証パッケージ名を示すワイド文字列。
nRetriesINT4+80+48残りの認証再試行回数。
flagsDWORD4+84+52資格情報取得に関する属性を示すビットフラグ。
pCredentialIMFNetCredential*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 Structure
import 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: pointer
struct 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