37 lines
711 B
C
37 lines
711 B
C
|
#pragma once
|
||
|
|
||
|
#include <vector>
|
||
|
|
||
|
#include <windows.h>
|
||
|
|
||
|
#define DRVERR -5000
|
||
|
#define DRVERR_INVALID_PARAM DRVERR-1
|
||
|
#define DRVERR_DEVICE_ALREADY_OPEN DRVERR-2
|
||
|
#define DRVERR_DEVICE_NOT_FOUND DRVERR-3
|
||
|
|
||
|
#define MAXPATHLEN 512
|
||
|
#define MAXDRVNAMELEN 128
|
||
|
|
||
|
struct AsioDriver {
|
||
|
size_t id;
|
||
|
char name[MAXDRVNAMELEN];
|
||
|
char dll_path[MAXPATHLEN];
|
||
|
CLSID clsid;
|
||
|
void *instance;
|
||
|
struct AsioDriver *next;
|
||
|
};
|
||
|
|
||
|
class AsioDriverList {
|
||
|
public:
|
||
|
AsioDriverList();
|
||
|
~AsioDriverList();
|
||
|
|
||
|
LONG open_driver(size_t driver_id, void **asio_driver);
|
||
|
LONG close_driver(size_t driver_id);
|
||
|
|
||
|
std::vector<AsioDriver> driver_list;
|
||
|
|
||
|
private:
|
||
|
bool co_initialized = false;
|
||
|
};
|