📄 winmm.c
字号:
//---------------------------------------------------------------------------
#define _INC_MMSYSTEM
#include <windows.h>
#include <mmsystem.h>
#include <math.h>
#include "jr.h"
#include "futaba.h"
#define PW_FUTABA 6.623
#define PW_JR 7.340
#define PPM_MIN 30.0
#define PPM_MAX 100.0
#define PPM_TRIG 200
//#define FUTABA_PCM
//#define FUTABA_PPM
#define JR_PCM
//#define JR_PPM
#pragma argsused
#define MAXPNAMELEN 32 /* max product name length (including NULL) */
#define MAXERRORLENGTH 256 /* max error text length (including NULL) */
#define MAX_JOYSTICKOEMVXDNAME 260 /* max oem vxd name length (including NULL) */
#define JOYCAPS_HASV 0x0008
#define JOYERR_NOERROR (0) /* no error */
#define JOYERR_BASE 160
#define JOYERR_UNPLUGGED (JOYERR_BASE+7) /* joystick is unplugged */
#define WAVERR_BASE 32
#define WAVERR_STILLPLAYING (WAVERR_BASE + 1) /* still something playing */
#define WIM_DATA 0x3C0
#define WAVE_FORMAT_PCM 1
#define WAVE_MAPPER ((UINT)-1)
#define CALLBACK_FUNCTION 0x00030000l /* dwCallback is a FARPROC */
DECLARE_HANDLE(HWAVEIN);
typedef struct {
WORD wFormatTag; /* format type */
WORD nChannels; /* number of channels (i.e. mono, stereo...) */
DWORD nSamplesPerSec; /* sample rate */
DWORD nAvgBytesPerSec; /* for buffer estimation */
WORD nBlockAlign; /* block size of data */
WORD wBitsPerSample; /* number of bits per sample of mono data */
WORD cbSize; /* the count in bytes of the size of */
/* extra information (after cbSize) */
} WAVEFORMATEX;
typedef struct wavehdr_tag {
LPSTR lpData; /* pointer to locked data buffer */
DWORD dwBufferLength; /* length of data buffer */
DWORD dwBytesRecorded; /* used for input only */
DWORD dwUser; /* for client's use */
DWORD dwFlags; /* assorted flags (see defines) */
DWORD dwLoops; /* loop control counter */
struct wavehdr_tag FAR *lpNext; /* reserved for driver */
DWORD reserved; /* reserved for driver */
} WAVEHDR;
static struct {
char Path[MAX_PATH];
HANDLE Handle;
DWORD TlsIndex;
void (*CloseDriver)(void);
void (*DefDriverProc)(void);
void (*DriverCallback)(void);
void (*DrvGetModuleHandle)(void);
void (*GetDriverModuleHandle)(void);
void (*MigrateAllDrivers)(void);
void (*MigrateMidiUser)(void);
void (*MigrateSoundEvents)(void);
void (*NotifyCallbackData)(void);
void (*OpenDriver)(void);
void (*PlaySound)(void);
void (*PlaySoundA)(void);
void (*PlaySoundW)(void);
void (*SendDriverMessage)(void);
void (*WOW32DriverCallback)(void);
void (*WOW32ResolveMultiMediaHandle)(void);
void (*WOWAppExit)(void);
void (*WinmmLogoff)(void);
void (*WinmmLogon)(void);
void (*aux32Message)(void);
void (*auxGetDevCapsA)(void);
void (*auxGetDevCapsW)(void);
void (*auxGetNumDevs)(void);
void (*auxGetVolume)(void);
void (*auxOutMessage)(void);
void (*auxSetVolume)(void);
void (*joy32Message)(void);
void (*joyConfigChanged)(void);
void (*joyGetDevCapsA)(void);
void (*joyGetDevCapsW)(void);
void (*joyGetNumDevs)(void);
void (*joyGetPos)(void);
void (*joyGetPosEx)(void);
void (*joyGetThreshold)(void);
void (*joyReleaseCapture)(void);
void (*joySetCapture)(void);
void (*joySetThreshold)(void);
void (*mci32Message)(void);
void (*mciDriverNotify)(void);
void (*mciDriverYield)(void);
void (*mciExecute)(void);
void (*mciFreeCommandResource)(void);
void (*mciGetCreatorTask)(void);
void (*mciGetDeviceIDA)(void);
void (*mciGetDeviceIDFromElementIDA)(void);
void (*mciGetDeviceIDFromElementIDW)(void);
void (*mciGetDeviceIDW)(void);
void (*mciGetDriverData)(void);
void (*mciGetErrorStringA)(void);
void (*mciGetErrorStringW)(void);
void (*mciGetYieldProc)(void);
void (*mciLoadCommandResource)(void);
void (*mciSendCommandA)(void);
void (*mciSendCommandW)(void);
void (*mciSendStringA)(void);
void (*mciSendStringW)(void);
void (*mciSetDriverData)(void);
void (*mciSetYieldProc)(void);
void (*mid32Message)(void);
void (*midiConnect)(void);
void (*midiDisconnect)(void);
void (*midiInAddBuffer)(void);
void (*midiInClose)(void);
void (*midiInGetDevCapsA)(void);
void (*midiInGetDevCapsW)(void);
void (*midiInGetErrorTextA)(void);
void (*midiInGetErrorTextW)(void);
void (*midiInGetID)(void);
void (*midiInGetNumDevs)(void);
void (*midiInMessage)(void);
void (*midiInOpen)(void);
void (*midiInPrepareHeader)(void);
void (*midiInReset)(void);
void (*midiInStart)(void);
void (*midiInStop)(void);
void (*midiInUnprepareHeader)(void);
void (*midiOutCacheDrumPatches)(void);
void (*midiOutCachePatches)(void);
void (*midiOutClose)(void);
void (*midiOutGetDevCapsA)(void);
void (*midiOutGetDevCapsW)(void);
void (*midiOutGetErrorTextA)(void);
void (*midiOutGetErrorTextW)(void);
void (*midiOutGetID)(void);
void (*midiOutGetNumDevs)(void);
void (*midiOutGetVolume)(void);
void (*midiOutLongMsg)(void);
void (*midiOutMessage)(void);
void (*midiOutOpen)(void);
void (*midiOutPrepareHeader)(void);
void (*midiOutReset)(void);
void (*midiOutSetVolume)(void);
void (*midiOutShortMsg)(void);
void (*midiOutUnprepareHeader)(void);
void (*midiStreamClose)(void);
void (*midiStreamOpen)(void);
void (*midiStreamOut)(void);
void (*midiStreamPause)(void);
void (*midiStreamPosition)(void);
void (*midiStreamProperty)(void);
void (*midiStreamRestart)(void);
void (*midiStreamStop)(void);
void (*mixerClose)(void);
void (*mixerGetControlDetailsA)(void);
void (*mixerGetControlDetailsW)(void);
void (*mixerGetDevCapsA)(void);
void (*mixerGetDevCapsW)(void);
void (*mixerGetID)(void);
void (*mixerGetLineControlsA)(void);
void (*mixerGetLineControlsW)(void);
void (*mixerGetLineInfoA)(void);
void (*mixerGetLineInfoW)(void);
void (*mixerGetNumDevs)(void);
void (*mixerMessage)(void);
void (*mixerOpen)(void);
void (*mixerSetControlDetails)(void);
void (*mmDrvInstall)(void);
void (*mmGetCurrentTask)(void);
void (*mmTaskBlock)(void);
void (*mmTaskCreate)(void);
void (*mmTaskSignal)(void);
void (*mmTaskYield)(void);
void (*mmioAdvance)(void);
void (*mmioAscend)(void);
void (*mmioClose)(void);
void (*mmioCreateChunk)(void);
void (*mmioDescend)(void);
void (*mmioFlush)(void);
void (*mmioGetInfo)(void);
void (*mmioInstallIOProcA)(void);
void (*mmioInstallIOProcW)(void);
void (*mmioOpenA)(void);
void (*mmioOpenW)(void);
void (*mmioRead)(void);
void (*mmioRenameA)(void);
void (*mmioRenameW)(void);
void (*mmioSeek)(void);
void (*mmioSendMessage)(void);
void (*mmioSetBuffer)(void);
void (*mmioSetInfo)(void);
void (*mmioStringToFOURCCA)(void);
void (*mmioStringToFOURCCW)(void);
void (*mmioWrite)(void);
void (*mmsystemGetVersion)(void);
void (*mod32Message)(void);
void (*mxd32Message)(void);
void (*sndPlaySoundA)(void);
void (*sndPlaySoundW)(void);
void (*tid32Message)(void);
void (*timeBeginPeriod)(void);
void (*timeEndPeriod)(void);
void (*timeGetDevCaps)(void);
void (*timeGetSystemTime)(void);
void (*timeGetTime)(void);
void (*timeKillEvent)(void);
void (*timeSetEvent)(void);
// void (*waveInAddBuffer)(void);
UINT WINAPI (*waveInAddBuffer)(HWAVEIN, void*, UINT);
// void (*waveInClose)(void);
UINT WINAPI (*waveInClose)(HWAVEIN hwi);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -