Win32 API 日本語リファレンス
ホームMedia.Audio.DirectSound › DSCAPS

DSCAPS

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

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

フィールド

フィールドサイズx64x86説明
dwSizeDWORD4+0+0この構造体のバイトサイズ。呼び出し前に設定する。
dwFlagsDWORD4+4+4デバイスの能力を示すビットフラグ(DSCAPS_*)。
dwMinSecondarySampleRateDWORD4+8+8セカンダリバッファで使用可能な最小サンプリングレート(Hz)。
dwMaxSecondarySampleRateDWORD4+12+12セカンダリバッファで使用可能な最大サンプリングレート(Hz)。
dwPrimaryBuffersDWORD4+16+16サポートするプライマリバッファ数(通常1)。
dwMaxHwMixingAllBuffersDWORD4+20+20ハードウェアミキシング可能な全バッファの最大数。
dwMaxHwMixingStaticBuffersDWORD4+24+24ハードウェアミキシング可能な静的バッファの最大数。
dwMaxHwMixingStreamingBuffersDWORD4+28+28ハードウェアミキシング可能なストリーミングバッファの最大数。
dwFreeHwMixingAllBuffersDWORD4+32+32現在空きのあるハードウェアミキシング全バッファ数。
dwFreeHwMixingStaticBuffersDWORD4+36+36現在空きのあるハードウェアミキシング静的バッファ数。
dwFreeHwMixingStreamingBuffersDWORD4+40+40現在空きのあるハードウェアミキシングストリーミングバッファ数。
dwMaxHw3DAllBuffersDWORD4+44+44ハードウェア3D処理可能な全バッファの最大数。
dwMaxHw3DStaticBuffersDWORD4+48+48ハードウェア3D処理可能な静的バッファの最大数。
dwMaxHw3DStreamingBuffersDWORD4+52+52ハードウェア3D処理可能なストリーミングバッファの最大数。
dwFreeHw3DAllBuffersDWORD4+56+56現在空きのあるハードウェア3D全バッファ数。
dwFreeHw3DStaticBuffersDWORD4+60+60現在空きのあるハードウェア3D静的バッファ数。
dwFreeHw3DStreamingBuffersDWORD4+64+64現在空きのあるハードウェア3Dストリーミングバッファ数。
dwTotalHwMemBytesDWORD4+68+68ハードウェアサウンドメモリの総バイト容量。
dwFreeHwMemBytesDWORD4+72+72ハードウェアサウンドメモリの空きバイト容量。
dwMaxContigFreeHwMemBytesDWORD4+76+76連続して確保可能なハードウェアメモリの最大バイト数。
dwUnlockTransferRateHwBuffersDWORD4+80+80ハードウェアバッファのアンロック時データ転送速度(KB/秒)。
dwPlayCpuOverheadSwBuffersDWORD4+84+84ソフトウェアバッファ再生時のCPUオーバーヘッド(パーセント)。
dwReserved1DWORD4+88+88予約済み。使用されない。
dwReserved2DWORD4+92+92予約済み。使用されない。

各言語での定義

#include <windows.h>

// DSCAPS  (x64 96 / x86 96 バイト)
typedef struct DSCAPS {
    DWORD dwSize;
    DWORD dwFlags;
    DWORD dwMinSecondarySampleRate;
    DWORD dwMaxSecondarySampleRate;
    DWORD dwPrimaryBuffers;
    DWORD dwMaxHwMixingAllBuffers;
    DWORD dwMaxHwMixingStaticBuffers;
    DWORD dwMaxHwMixingStreamingBuffers;
    DWORD dwFreeHwMixingAllBuffers;
    DWORD dwFreeHwMixingStaticBuffers;
    DWORD dwFreeHwMixingStreamingBuffers;
    DWORD dwMaxHw3DAllBuffers;
    DWORD dwMaxHw3DStaticBuffers;
    DWORD dwMaxHw3DStreamingBuffers;
    DWORD dwFreeHw3DAllBuffers;
    DWORD dwFreeHw3DStaticBuffers;
    DWORD dwFreeHw3DStreamingBuffers;
    DWORD dwTotalHwMemBytes;
    DWORD dwFreeHwMemBytes;
    DWORD dwMaxContigFreeHwMemBytes;
    DWORD dwUnlockTransferRateHwBuffers;
    DWORD dwPlayCpuOverheadSwBuffers;
    DWORD dwReserved1;
    DWORD dwReserved2;
} DSCAPS;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DSCAPS
{
    public uint dwSize;
    public uint dwFlags;
    public uint dwMinSecondarySampleRate;
    public uint dwMaxSecondarySampleRate;
    public uint dwPrimaryBuffers;
    public uint dwMaxHwMixingAllBuffers;
    public uint dwMaxHwMixingStaticBuffers;
    public uint dwMaxHwMixingStreamingBuffers;
    public uint dwFreeHwMixingAllBuffers;
    public uint dwFreeHwMixingStaticBuffers;
    public uint dwFreeHwMixingStreamingBuffers;
    public uint dwMaxHw3DAllBuffers;
    public uint dwMaxHw3DStaticBuffers;
    public uint dwMaxHw3DStreamingBuffers;
    public uint dwFreeHw3DAllBuffers;
    public uint dwFreeHw3DStaticBuffers;
    public uint dwFreeHw3DStreamingBuffers;
    public uint dwTotalHwMemBytes;
    public uint dwFreeHwMemBytes;
    public uint dwMaxContigFreeHwMemBytes;
    public uint dwUnlockTransferRateHwBuffers;
    public uint dwPlayCpuOverheadSwBuffers;
    public uint dwReserved1;
    public uint dwReserved2;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DSCAPS
    Public dwSize As UInteger
    Public dwFlags As UInteger
    Public dwMinSecondarySampleRate As UInteger
    Public dwMaxSecondarySampleRate As UInteger
    Public dwPrimaryBuffers As UInteger
    Public dwMaxHwMixingAllBuffers As UInteger
    Public dwMaxHwMixingStaticBuffers As UInteger
    Public dwMaxHwMixingStreamingBuffers As UInteger
    Public dwFreeHwMixingAllBuffers As UInteger
    Public dwFreeHwMixingStaticBuffers As UInteger
    Public dwFreeHwMixingStreamingBuffers As UInteger
    Public dwMaxHw3DAllBuffers As UInteger
    Public dwMaxHw3DStaticBuffers As UInteger
    Public dwMaxHw3DStreamingBuffers As UInteger
    Public dwFreeHw3DAllBuffers As UInteger
    Public dwFreeHw3DStaticBuffers As UInteger
    Public dwFreeHw3DStreamingBuffers As UInteger
    Public dwTotalHwMemBytes As UInteger
    Public dwFreeHwMemBytes As UInteger
    Public dwMaxContigFreeHwMemBytes As UInteger
    Public dwUnlockTransferRateHwBuffers As UInteger
    Public dwPlayCpuOverheadSwBuffers As UInteger
    Public dwReserved1 As UInteger
    Public dwReserved2 As UInteger
End Structure
import ctypes
from ctypes import wintypes

class DSCAPS(ctypes.Structure):
    _fields_ = [
        ("dwSize", wintypes.DWORD),
        ("dwFlags", wintypes.DWORD),
        ("dwMinSecondarySampleRate", wintypes.DWORD),
        ("dwMaxSecondarySampleRate", wintypes.DWORD),
        ("dwPrimaryBuffers", wintypes.DWORD),
        ("dwMaxHwMixingAllBuffers", wintypes.DWORD),
        ("dwMaxHwMixingStaticBuffers", wintypes.DWORD),
        ("dwMaxHwMixingStreamingBuffers", wintypes.DWORD),
        ("dwFreeHwMixingAllBuffers", wintypes.DWORD),
        ("dwFreeHwMixingStaticBuffers", wintypes.DWORD),
        ("dwFreeHwMixingStreamingBuffers", wintypes.DWORD),
        ("dwMaxHw3DAllBuffers", wintypes.DWORD),
        ("dwMaxHw3DStaticBuffers", wintypes.DWORD),
        ("dwMaxHw3DStreamingBuffers", wintypes.DWORD),
        ("dwFreeHw3DAllBuffers", wintypes.DWORD),
        ("dwFreeHw3DStaticBuffers", wintypes.DWORD),
        ("dwFreeHw3DStreamingBuffers", wintypes.DWORD),
        ("dwTotalHwMemBytes", wintypes.DWORD),
        ("dwFreeHwMemBytes", wintypes.DWORD),
        ("dwMaxContigFreeHwMemBytes", wintypes.DWORD),
        ("dwUnlockTransferRateHwBuffers", wintypes.DWORD),
        ("dwPlayCpuOverheadSwBuffers", wintypes.DWORD),
        ("dwReserved1", wintypes.DWORD),
        ("dwReserved2", wintypes.DWORD),
    ]
#[repr(C)]
pub struct DSCAPS {
    pub dwSize: u32,
    pub dwFlags: u32,
    pub dwMinSecondarySampleRate: u32,
    pub dwMaxSecondarySampleRate: u32,
    pub dwPrimaryBuffers: u32,
    pub dwMaxHwMixingAllBuffers: u32,
    pub dwMaxHwMixingStaticBuffers: u32,
    pub dwMaxHwMixingStreamingBuffers: u32,
    pub dwFreeHwMixingAllBuffers: u32,
    pub dwFreeHwMixingStaticBuffers: u32,
    pub dwFreeHwMixingStreamingBuffers: u32,
    pub dwMaxHw3DAllBuffers: u32,
    pub dwMaxHw3DStaticBuffers: u32,
    pub dwMaxHw3DStreamingBuffers: u32,
    pub dwFreeHw3DAllBuffers: u32,
    pub dwFreeHw3DStaticBuffers: u32,
    pub dwFreeHw3DStreamingBuffers: u32,
    pub dwTotalHwMemBytes: u32,
    pub dwFreeHwMemBytes: u32,
    pub dwMaxContigFreeHwMemBytes: u32,
    pub dwUnlockTransferRateHwBuffers: u32,
    pub dwPlayCpuOverheadSwBuffers: u32,
    pub dwReserved1: u32,
    pub dwReserved2: u32,
}
import "golang.org/x/sys/windows"

type DSCAPS struct {
	dwSize uint32
	dwFlags uint32
	dwMinSecondarySampleRate uint32
	dwMaxSecondarySampleRate uint32
	dwPrimaryBuffers uint32
	dwMaxHwMixingAllBuffers uint32
	dwMaxHwMixingStaticBuffers uint32
	dwMaxHwMixingStreamingBuffers uint32
	dwFreeHwMixingAllBuffers uint32
	dwFreeHwMixingStaticBuffers uint32
	dwFreeHwMixingStreamingBuffers uint32
	dwMaxHw3DAllBuffers uint32
	dwMaxHw3DStaticBuffers uint32
	dwMaxHw3DStreamingBuffers uint32
	dwFreeHw3DAllBuffers uint32
	dwFreeHw3DStaticBuffers uint32
	dwFreeHw3DStreamingBuffers uint32
	dwTotalHwMemBytes uint32
	dwFreeHwMemBytes uint32
	dwMaxContigFreeHwMemBytes uint32
	dwUnlockTransferRateHwBuffers uint32
	dwPlayCpuOverheadSwBuffers uint32
	dwReserved1 uint32
	dwReserved2 uint32
}
type
  DSCAPS = record
    dwSize: DWORD;
    dwFlags: DWORD;
    dwMinSecondarySampleRate: DWORD;
    dwMaxSecondarySampleRate: DWORD;
    dwPrimaryBuffers: DWORD;
    dwMaxHwMixingAllBuffers: DWORD;
    dwMaxHwMixingStaticBuffers: DWORD;
    dwMaxHwMixingStreamingBuffers: DWORD;
    dwFreeHwMixingAllBuffers: DWORD;
    dwFreeHwMixingStaticBuffers: DWORD;
    dwFreeHwMixingStreamingBuffers: DWORD;
    dwMaxHw3DAllBuffers: DWORD;
    dwMaxHw3DStaticBuffers: DWORD;
    dwMaxHw3DStreamingBuffers: DWORD;
    dwFreeHw3DAllBuffers: DWORD;
    dwFreeHw3DStaticBuffers: DWORD;
    dwFreeHw3DStreamingBuffers: DWORD;
    dwTotalHwMemBytes: DWORD;
    dwFreeHwMemBytes: DWORD;
    dwMaxContigFreeHwMemBytes: DWORD;
    dwUnlockTransferRateHwBuffers: DWORD;
    dwPlayCpuOverheadSwBuffers: DWORD;
    dwReserved1: DWORD;
    dwReserved2: DWORD;
  end;
const DSCAPS = extern struct {
    dwSize: u32,
    dwFlags: u32,
    dwMinSecondarySampleRate: u32,
    dwMaxSecondarySampleRate: u32,
    dwPrimaryBuffers: u32,
    dwMaxHwMixingAllBuffers: u32,
    dwMaxHwMixingStaticBuffers: u32,
    dwMaxHwMixingStreamingBuffers: u32,
    dwFreeHwMixingAllBuffers: u32,
    dwFreeHwMixingStaticBuffers: u32,
    dwFreeHwMixingStreamingBuffers: u32,
    dwMaxHw3DAllBuffers: u32,
    dwMaxHw3DStaticBuffers: u32,
    dwMaxHw3DStreamingBuffers: u32,
    dwFreeHw3DAllBuffers: u32,
    dwFreeHw3DStaticBuffers: u32,
    dwFreeHw3DStreamingBuffers: u32,
    dwTotalHwMemBytes: u32,
    dwFreeHwMemBytes: u32,
    dwMaxContigFreeHwMemBytes: u32,
    dwUnlockTransferRateHwBuffers: u32,
    dwPlayCpuOverheadSwBuffers: u32,
    dwReserved1: u32,
    dwReserved2: u32,
};
type
  DSCAPS {.bycopy.} = object
    dwSize: uint32
    dwFlags: uint32
    dwMinSecondarySampleRate: uint32
    dwMaxSecondarySampleRate: uint32
    dwPrimaryBuffers: uint32
    dwMaxHwMixingAllBuffers: uint32
    dwMaxHwMixingStaticBuffers: uint32
    dwMaxHwMixingStreamingBuffers: uint32
    dwFreeHwMixingAllBuffers: uint32
    dwFreeHwMixingStaticBuffers: uint32
    dwFreeHwMixingStreamingBuffers: uint32
    dwMaxHw3DAllBuffers: uint32
    dwMaxHw3DStaticBuffers: uint32
    dwMaxHw3DStreamingBuffers: uint32
    dwFreeHw3DAllBuffers: uint32
    dwFreeHw3DStaticBuffers: uint32
    dwFreeHw3DStreamingBuffers: uint32
    dwTotalHwMemBytes: uint32
    dwFreeHwMemBytes: uint32
    dwMaxContigFreeHwMemBytes: uint32
    dwUnlockTransferRateHwBuffers: uint32
    dwPlayCpuOverheadSwBuffers: uint32
    dwReserved1: uint32
    dwReserved2: uint32
struct DSCAPS
{
    uint dwSize;
    uint dwFlags;
    uint dwMinSecondarySampleRate;
    uint dwMaxSecondarySampleRate;
    uint dwPrimaryBuffers;
    uint dwMaxHwMixingAllBuffers;
    uint dwMaxHwMixingStaticBuffers;
    uint dwMaxHwMixingStreamingBuffers;
    uint dwFreeHwMixingAllBuffers;
    uint dwFreeHwMixingStaticBuffers;
    uint dwFreeHwMixingStreamingBuffers;
    uint dwMaxHw3DAllBuffers;
    uint dwMaxHw3DStaticBuffers;
    uint dwMaxHw3DStreamingBuffers;
    uint dwFreeHw3DAllBuffers;
    uint dwFreeHw3DStaticBuffers;
    uint dwFreeHw3DStreamingBuffers;
    uint dwTotalHwMemBytes;
    uint dwFreeHwMemBytes;
    uint dwMaxContigFreeHwMemBytes;
    uint dwUnlockTransferRateHwBuffers;
    uint dwPlayCpuOverheadSwBuffers;
    uint dwReserved1;
    uint dwReserved2;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DSCAPS サイズ: 96 バイト(x64)
dim st, 24    ; 4byte整数×24(構造体サイズ 96 / 4 切り上げ)
; dwSize : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; dwFlags : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; dwMinSecondarySampleRate : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; dwMaxSecondarySampleRate : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; dwPrimaryBuffers : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; dwMaxHwMixingAllBuffers : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; dwMaxHwMixingStaticBuffers : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; dwMaxHwMixingStreamingBuffers : DWORD (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; dwFreeHwMixingAllBuffers : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; dwFreeHwMixingStaticBuffers : DWORD (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; dwFreeHwMixingStreamingBuffers : DWORD (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; dwMaxHw3DAllBuffers : DWORD (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; dwMaxHw3DStaticBuffers : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; dwMaxHw3DStreamingBuffers : DWORD (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; dwFreeHw3DAllBuffers : DWORD (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; dwFreeHw3DStaticBuffers : DWORD (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; dwFreeHw3DStreamingBuffers : DWORD (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; dwTotalHwMemBytes : DWORD (+68, 4byte)  st.17 = 値  /  値 = st.17   (lpoke/lpeek も可)
; dwFreeHwMemBytes : DWORD (+72, 4byte)  st.18 = 値  /  値 = st.18   (lpoke/lpeek も可)
; dwMaxContigFreeHwMemBytes : DWORD (+76, 4byte)  st.19 = 値  /  値 = st.19   (lpoke/lpeek も可)
; dwUnlockTransferRateHwBuffers : DWORD (+80, 4byte)  st.20 = 値  /  値 = st.20   (lpoke/lpeek も可)
; dwPlayCpuOverheadSwBuffers : DWORD (+84, 4byte)  st.21 = 値  /  値 = st.21   (lpoke/lpeek も可)
; dwReserved1 : DWORD (+88, 4byte)  st.22 = 値  /  値 = st.22   (lpoke/lpeek も可)
; dwReserved2 : DWORD (+92, 4byte)  st.23 = 値  /  値 = st.23   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global DSCAPS
    #field int dwSize
    #field int dwFlags
    #field int dwMinSecondarySampleRate
    #field int dwMaxSecondarySampleRate
    #field int dwPrimaryBuffers
    #field int dwMaxHwMixingAllBuffers
    #field int dwMaxHwMixingStaticBuffers
    #field int dwMaxHwMixingStreamingBuffers
    #field int dwFreeHwMixingAllBuffers
    #field int dwFreeHwMixingStaticBuffers
    #field int dwFreeHwMixingStreamingBuffers
    #field int dwMaxHw3DAllBuffers
    #field int dwMaxHw3DStaticBuffers
    #field int dwMaxHw3DStreamingBuffers
    #field int dwFreeHw3DAllBuffers
    #field int dwFreeHw3DStaticBuffers
    #field int dwFreeHw3DStreamingBuffers
    #field int dwTotalHwMemBytes
    #field int dwFreeHwMemBytes
    #field int dwMaxContigFreeHwMemBytes
    #field int dwUnlockTransferRateHwBuffers
    #field int dwPlayCpuOverheadSwBuffers
    #field int dwReserved1
    #field int dwReserved2
#endstruct

stdim st, DSCAPS        ; NSTRUCT 変数を確保
st->dwSize = 100
mes "dwSize=" + st->dwSize