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

KSWAVE_INPUT_CAPABILITIES

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

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

フィールド

フィールドサイズx64x86説明
MaximumChannelsPerConnectionDWORD4+0+01接続あたりの最大チャンネル数を示す。
MinimumBitsPerSampleDWORD4+4+41サンプルあたりの最小ビット数を示す。
MaximumBitsPerSampleDWORD4+8+81サンプルあたりの最大ビット数を示す。
MinimumSampleFrequencyDWORD4+12+12最小サンプリング周波数をHzで示す。
MaximumSampleFrequencyDWORD4+16+16最大サンプリング周波数をHzで示す。
TotalConnectionsDWORD4+20+20サポートする入力接続の総数を示す。
ActiveConnectionsDWORD4+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 Structure
import 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: uint32
struct 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