ホーム › Media.Audio.DirectSound › DSCAPS
DSCAPS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| dwSize | DWORD | 4 | +0 | +0 | この構造体のバイトサイズ。呼び出し前に設定する。 |
| dwFlags | DWORD | 4 | +4 | +4 | デバイスの能力を示すビットフラグ(DSCAPS_*)。 |
| dwMinSecondarySampleRate | DWORD | 4 | +8 | +8 | セカンダリバッファで使用可能な最小サンプリングレート(Hz)。 |
| dwMaxSecondarySampleRate | DWORD | 4 | +12 | +12 | セカンダリバッファで使用可能な最大サンプリングレート(Hz)。 |
| dwPrimaryBuffers | DWORD | 4 | +16 | +16 | サポートするプライマリバッファ数(通常1)。 |
| dwMaxHwMixingAllBuffers | DWORD | 4 | +20 | +20 | ハードウェアミキシング可能な全バッファの最大数。 |
| dwMaxHwMixingStaticBuffers | DWORD | 4 | +24 | +24 | ハードウェアミキシング可能な静的バッファの最大数。 |
| dwMaxHwMixingStreamingBuffers | DWORD | 4 | +28 | +28 | ハードウェアミキシング可能なストリーミングバッファの最大数。 |
| dwFreeHwMixingAllBuffers | DWORD | 4 | +32 | +32 | 現在空きのあるハードウェアミキシング全バッファ数。 |
| dwFreeHwMixingStaticBuffers | DWORD | 4 | +36 | +36 | 現在空きのあるハードウェアミキシング静的バッファ数。 |
| dwFreeHwMixingStreamingBuffers | DWORD | 4 | +40 | +40 | 現在空きのあるハードウェアミキシングストリーミングバッファ数。 |
| dwMaxHw3DAllBuffers | DWORD | 4 | +44 | +44 | ハードウェア3D処理可能な全バッファの最大数。 |
| dwMaxHw3DStaticBuffers | DWORD | 4 | +48 | +48 | ハードウェア3D処理可能な静的バッファの最大数。 |
| dwMaxHw3DStreamingBuffers | DWORD | 4 | +52 | +52 | ハードウェア3D処理可能なストリーミングバッファの最大数。 |
| dwFreeHw3DAllBuffers | DWORD | 4 | +56 | +56 | 現在空きのあるハードウェア3D全バッファ数。 |
| dwFreeHw3DStaticBuffers | DWORD | 4 | +60 | +60 | 現在空きのあるハードウェア3D静的バッファ数。 |
| dwFreeHw3DStreamingBuffers | DWORD | 4 | +64 | +64 | 現在空きのあるハードウェア3Dストリーミングバッファ数。 |
| dwTotalHwMemBytes | DWORD | 4 | +68 | +68 | ハードウェアサウンドメモリの総バイト容量。 |
| dwFreeHwMemBytes | DWORD | 4 | +72 | +72 | ハードウェアサウンドメモリの空きバイト容量。 |
| dwMaxContigFreeHwMemBytes | DWORD | 4 | +76 | +76 | 連続して確保可能なハードウェアメモリの最大バイト数。 |
| dwUnlockTransferRateHwBuffers | DWORD | 4 | +80 | +80 | ハードウェアバッファのアンロック時データ転送速度(KB/秒)。 |
| dwPlayCpuOverheadSwBuffers | DWORD | 4 | +84 | +84 | ソフトウェアバッファ再生時のCPUオーバーヘッド(パーセント)。 |
| dwReserved1 | DWORD | 4 | +88 | +88 | 予約済み。使用されない。 |
| dwReserved2 | DWORD | 4 | +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 Structureimport 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: uint32struct 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