ホーム › Media.DirectShow › BDA_WMDRM_STATUS
BDA_WMDRM_STATUS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| lResult | INT | 4 | +0 | +0 | 操作の結果コードを示す。 |
| ulMaxCaptureTokenSize | DWORD | 4 | +4 | +4 | 最大キャプチャトークンサイズをバイト単位で示す。 |
| uMaxStreamingPid | DWORD | 4 | +8 | +8 | ストリーミング可能な最大PID数を示す。 |
| ulMaxLicense | DWORD | 4 | +12 | +12 | 保持可能な最大ライセンス数を示す。 |
| ulMinSecurityLevel | DWORD | 4 | +16 | +16 | 要求される最小セキュリティレベルを示す。 |
| ulRevInfoSequenceNumber | DWORD | 4 | +20 | +20 | 失効情報のシーケンス番号を示す。 |
| ulRevInfoIssuedTime | ULONGLONG | 8 | +24 | +24 | 失効情報の発行時刻を示す。 |
| ulRevListVersion | DWORD | 4 | +32 | +32 | 失効リストのバージョンを示す。 |
| ulRevInfoTTL | DWORD | 4 | +36 | +36 | 失効情報の有効期間(TTL)を示す。 |
| ulState | DWORD | 4 | +40 | +40 | WMDRMの現在の状態を示す。 |
各言語での定義
#include <windows.h>
// BDA_WMDRM_STATUS (x64 48 / x86 48 バイト)
typedef struct BDA_WMDRM_STATUS {
INT lResult;
DWORD ulMaxCaptureTokenSize;
DWORD uMaxStreamingPid;
DWORD ulMaxLicense;
DWORD ulMinSecurityLevel;
DWORD ulRevInfoSequenceNumber;
ULONGLONG ulRevInfoIssuedTime;
DWORD ulRevListVersion;
DWORD ulRevInfoTTL;
DWORD ulState;
} BDA_WMDRM_STATUS;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct BDA_WMDRM_STATUS
{
public int lResult;
public uint ulMaxCaptureTokenSize;
public uint uMaxStreamingPid;
public uint ulMaxLicense;
public uint ulMinSecurityLevel;
public uint ulRevInfoSequenceNumber;
public ulong ulRevInfoIssuedTime;
public uint ulRevListVersion;
public uint ulRevInfoTTL;
public uint ulState;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure BDA_WMDRM_STATUS
Public lResult As Integer
Public ulMaxCaptureTokenSize As UInteger
Public uMaxStreamingPid As UInteger
Public ulMaxLicense As UInteger
Public ulMinSecurityLevel As UInteger
Public ulRevInfoSequenceNumber As UInteger
Public ulRevInfoIssuedTime As ULong
Public ulRevListVersion As UInteger
Public ulRevInfoTTL As UInteger
Public ulState As UInteger
End Structureimport ctypes
from ctypes import wintypes
class BDA_WMDRM_STATUS(ctypes.Structure):
_fields_ = [
("lResult", ctypes.c_int),
("ulMaxCaptureTokenSize", wintypes.DWORD),
("uMaxStreamingPid", wintypes.DWORD),
("ulMaxLicense", wintypes.DWORD),
("ulMinSecurityLevel", wintypes.DWORD),
("ulRevInfoSequenceNumber", wintypes.DWORD),
("ulRevInfoIssuedTime", ctypes.c_ulonglong),
("ulRevListVersion", wintypes.DWORD),
("ulRevInfoTTL", wintypes.DWORD),
("ulState", wintypes.DWORD),
]#[repr(C)]
pub struct BDA_WMDRM_STATUS {
pub lResult: i32,
pub ulMaxCaptureTokenSize: u32,
pub uMaxStreamingPid: u32,
pub ulMaxLicense: u32,
pub ulMinSecurityLevel: u32,
pub ulRevInfoSequenceNumber: u32,
pub ulRevInfoIssuedTime: u64,
pub ulRevListVersion: u32,
pub ulRevInfoTTL: u32,
pub ulState: u32,
}import "golang.org/x/sys/windows"
type BDA_WMDRM_STATUS struct {
lResult int32
ulMaxCaptureTokenSize uint32
uMaxStreamingPid uint32
ulMaxLicense uint32
ulMinSecurityLevel uint32
ulRevInfoSequenceNumber uint32
ulRevInfoIssuedTime uint64
ulRevListVersion uint32
ulRevInfoTTL uint32
ulState uint32
}type
BDA_WMDRM_STATUS = record
lResult: Integer;
ulMaxCaptureTokenSize: DWORD;
uMaxStreamingPid: DWORD;
ulMaxLicense: DWORD;
ulMinSecurityLevel: DWORD;
ulRevInfoSequenceNumber: DWORD;
ulRevInfoIssuedTime: UInt64;
ulRevListVersion: DWORD;
ulRevInfoTTL: DWORD;
ulState: DWORD;
end;const BDA_WMDRM_STATUS = extern struct {
lResult: i32,
ulMaxCaptureTokenSize: u32,
uMaxStreamingPid: u32,
ulMaxLicense: u32,
ulMinSecurityLevel: u32,
ulRevInfoSequenceNumber: u32,
ulRevInfoIssuedTime: u64,
ulRevListVersion: u32,
ulRevInfoTTL: u32,
ulState: u32,
};type
BDA_WMDRM_STATUS {.bycopy.} = object
lResult: int32
ulMaxCaptureTokenSize: uint32
uMaxStreamingPid: uint32
ulMaxLicense: uint32
ulMinSecurityLevel: uint32
ulRevInfoSequenceNumber: uint32
ulRevInfoIssuedTime: uint64
ulRevListVersion: uint32
ulRevInfoTTL: uint32
ulState: uint32struct BDA_WMDRM_STATUS
{
int lResult;
uint ulMaxCaptureTokenSize;
uint uMaxStreamingPid;
uint ulMaxLicense;
uint ulMinSecurityLevel;
uint ulRevInfoSequenceNumber;
ulong ulRevInfoIssuedTime;
uint ulRevListVersion;
uint ulRevInfoTTL;
uint ulState;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; BDA_WMDRM_STATUS サイズ: 48 バイト(x64)
dim st, 12 ; 4byte整数×12(構造体サイズ 48 / 4 切り上げ)
; lResult : INT (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; ulMaxCaptureTokenSize : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; uMaxStreamingPid : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; ulMaxLicense : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; ulMinSecurityLevel : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; ulRevInfoSequenceNumber : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; ulRevInfoIssuedTime : ULONGLONG (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; ulRevListVersion : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; ulRevInfoTTL : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; ulState : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global BDA_WMDRM_STATUS
#field int lResult
#field int ulMaxCaptureTokenSize
#field int uMaxStreamingPid
#field int ulMaxLicense
#field int ulMinSecurityLevel
#field int ulRevInfoSequenceNumber
#field int64 ulRevInfoIssuedTime
#field int ulRevListVersion
#field int ulRevInfoTTL
#field int ulState
#endstruct
stdim st, BDA_WMDRM_STATUS ; NSTRUCT 変数を確保
st->lResult = 100
mes "lResult=" + st->lResult