ホーム › Media.KernelStreaming › KSWAVE_INPUT_CAPABILITIES
KSWAVE_INPUT_CAPABILITIES
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| MaximumChannelsPerConnection | DWORD | 4 | +0 | +0 | 1接続あたりの最大チャンネル数を示す。 |
| MinimumBitsPerSample | DWORD | 4 | +4 | +4 | 1サンプルあたりの最小ビット数を示す。 |
| MaximumBitsPerSample | DWORD | 4 | +8 | +8 | 1サンプルあたりの最大ビット数を示す。 |
| MinimumSampleFrequency | DWORD | 4 | +12 | +12 | 最小サンプリング周波数をHzで示す。 |
| MaximumSampleFrequency | DWORD | 4 | +16 | +16 | 最大サンプリング周波数をHzで示す。 |
| TotalConnections | DWORD | 4 | +20 | +20 | サポートする入力接続の総数を示す。 |
| ActiveConnections | DWORD | 4 | +24 | +24 | 現在アクティブな入力接続の数を示す。 |
各言語での定義
#include <windows.h>
// KSWAVE_INPUT_CAPABILITIES (x64 28 / x86 28 バイト)
typedef struct KSWAVE_INPUT_CAPABILITIES {
DWORD MaximumChannelsPerConnection;
DWORD MinimumBitsPerSample;
DWORD MaximumBitsPerSample;
DWORD MinimumSampleFrequency;
DWORD MaximumSampleFrequency;
DWORD TotalConnections;
DWORD ActiveConnections;
} KSWAVE_INPUT_CAPABILITIES;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct KSWAVE_INPUT_CAPABILITIES
{
public uint MaximumChannelsPerConnection;
public uint MinimumBitsPerSample;
public uint MaximumBitsPerSample;
public uint MinimumSampleFrequency;
public uint MaximumSampleFrequency;
public uint TotalConnections;
public uint ActiveConnections;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure KSWAVE_INPUT_CAPABILITIES
Public MaximumChannelsPerConnection As UInteger
Public MinimumBitsPerSample As UInteger
Public MaximumBitsPerSample As UInteger
Public MinimumSampleFrequency As UInteger
Public MaximumSampleFrequency As UInteger
Public TotalConnections As UInteger
Public ActiveConnections As UInteger
End Structureimport ctypes
from ctypes import wintypes
class KSWAVE_INPUT_CAPABILITIES(ctypes.Structure):
_fields_ = [
("MaximumChannelsPerConnection", wintypes.DWORD),
("MinimumBitsPerSample", wintypes.DWORD),
("MaximumBitsPerSample", wintypes.DWORD),
("MinimumSampleFrequency", wintypes.DWORD),
("MaximumSampleFrequency", wintypes.DWORD),
("TotalConnections", wintypes.DWORD),
("ActiveConnections", wintypes.DWORD),
]#[repr(C)]
pub struct KSWAVE_INPUT_CAPABILITIES {
pub MaximumChannelsPerConnection: u32,
pub MinimumBitsPerSample: u32,
pub MaximumBitsPerSample: u32,
pub MinimumSampleFrequency: u32,
pub MaximumSampleFrequency: u32,
pub TotalConnections: u32,
pub ActiveConnections: u32,
}import "golang.org/x/sys/windows"
type KSWAVE_INPUT_CAPABILITIES struct {
MaximumChannelsPerConnection uint32
MinimumBitsPerSample uint32
MaximumBitsPerSample uint32
MinimumSampleFrequency uint32
MaximumSampleFrequency uint32
TotalConnections uint32
ActiveConnections uint32
}type
KSWAVE_INPUT_CAPABILITIES = record
MaximumChannelsPerConnection: DWORD;
MinimumBitsPerSample: DWORD;
MaximumBitsPerSample: DWORD;
MinimumSampleFrequency: DWORD;
MaximumSampleFrequency: DWORD;
TotalConnections: DWORD;
ActiveConnections: DWORD;
end;const KSWAVE_INPUT_CAPABILITIES = extern struct {
MaximumChannelsPerConnection: u32,
MinimumBitsPerSample: u32,
MaximumBitsPerSample: u32,
MinimumSampleFrequency: u32,
MaximumSampleFrequency: u32,
TotalConnections: u32,
ActiveConnections: u32,
};type
KSWAVE_INPUT_CAPABILITIES {.bycopy.} = object
MaximumChannelsPerConnection: uint32
MinimumBitsPerSample: uint32
MaximumBitsPerSample: uint32
MinimumSampleFrequency: uint32
MaximumSampleFrequency: uint32
TotalConnections: uint32
ActiveConnections: uint32struct KSWAVE_INPUT_CAPABILITIES
{
uint MaximumChannelsPerConnection;
uint MinimumBitsPerSample;
uint MaximumBitsPerSample;
uint MinimumSampleFrequency;
uint MaximumSampleFrequency;
uint TotalConnections;
uint ActiveConnections;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; KSWAVE_INPUT_CAPABILITIES サイズ: 28 バイト(x64)
dim st, 7 ; 4byte整数×7(構造体サイズ 28 / 4 切り上げ)
; MaximumChannelsPerConnection : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; MinimumBitsPerSample : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; MaximumBitsPerSample : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; MinimumSampleFrequency : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; MaximumSampleFrequency : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; TotalConnections : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; ActiveConnections : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global KSWAVE_INPUT_CAPABILITIES
#field int MaximumChannelsPerConnection
#field int MinimumBitsPerSample
#field int MaximumBitsPerSample
#field int MinimumSampleFrequency
#field int MaximumSampleFrequency
#field int TotalConnections
#field int ActiveConnections
#endstruct
stdim st, KSWAVE_INPUT_CAPABILITIES ; NSTRUCT 変数を確保
st->MaximumChannelsPerConnection = 100
mes "MaximumChannelsPerConnection=" + st->MaximumChannelsPerConnection