95 lines
3 KiB
Plaintext
95 lines
3 KiB
Plaintext
|
// ISSUE-2000/10/25-FrankYe Default to unique pointers
|
||
|
// Probably should default pointer to unique, then won't
|
||
|
// need so much redefinition of data structures to have
|
||
|
// unique embedded pointers
|
||
|
[
|
||
|
uuid(3faf4738-3a21-4307-b46c-fdda9bb8c0d5),
|
||
|
version(1.0),
|
||
|
endpoint("ncalrpc:[AudioSrv]")]
|
||
|
interface AudioSrv
|
||
|
{
|
||
|
import "wtypes.idl";
|
||
|
|
||
|
typedef __int3264 RHANDLE;
|
||
|
|
||
|
typedef [string, unique] wchar_t * UNIQUE_PWSTR;
|
||
|
|
||
|
typedef struct {
|
||
|
unsigned long Data1;
|
||
|
unsigned short Data2;
|
||
|
unsigned short Data3;
|
||
|
byte Data4[ 8 ];
|
||
|
} RPC_GUID;
|
||
|
|
||
|
typedef RPC_GUID RPC_CLSID;
|
||
|
|
||
|
typedef struct _DILIST {
|
||
|
int Count;
|
||
|
[size_is(Count)] UNIQUE_PWSTR DeviceInterface[];
|
||
|
} DILIST;
|
||
|
|
||
|
typedef [unique] DILIST *UNIQUE_PDILIST;
|
||
|
|
||
|
typedef struct _GFX {
|
||
|
unsigned int Id;
|
||
|
UNIQUE_PWSTR GfxFactoryDi;
|
||
|
RPC_CLSID Clsid;
|
||
|
unsigned int Type;
|
||
|
unsigned int Order;
|
||
|
} GFX, *PGFX;
|
||
|
|
||
|
typedef struct _PGFXLIST {
|
||
|
int Count;
|
||
|
[size_is(Count)] GFX Gfx[];
|
||
|
} GFXLIST;
|
||
|
|
||
|
typedef [unique] GFXLIST *UNIQUE_PGFXLIST;
|
||
|
|
||
|
long s_gfxCreateZoneFactoriesList([out] UNIQUE_PDILIST *ppDiList);
|
||
|
|
||
|
long s_gfxCreateGfxFactoriesList([in, string] wchar_t *pZoneDi,
|
||
|
[out] UNIQUE_PDILIST *ppDiList);
|
||
|
|
||
|
long s_gfxCreateGfxList([in, string] wchar_t *pZoneDi,
|
||
|
[out] UNIQUE_PGFXLIST *ppGfxList);
|
||
|
|
||
|
long s_gfxRemoveGfx([in] unsigned long Id);
|
||
|
|
||
|
long s_gfxAddGfx([in, string] wchar_t *ZoneFactoryDi,
|
||
|
[in, string] wchar_t *GfxFactoryDi,
|
||
|
[in] unsigned long Type,
|
||
|
[in] unsigned long Order,
|
||
|
[out] unsigned long *pNewId);
|
||
|
|
||
|
long s_gfxModifyGfx([in] unsigned long Id,
|
||
|
[in] unsigned long Order);
|
||
|
|
||
|
// TODO learn how to pass HANDLE as OUT param
|
||
|
long s_gfxOpenGfx([in] unsigned long dwProcessId,
|
||
|
[in] unsigned long dwGfxId,
|
||
|
[out] RHANDLE *pFileHandle);
|
||
|
|
||
|
void s_gfxLogon([in] handle_t hBinding,
|
||
|
[in] unsigned long dwProcessId);
|
||
|
|
||
|
void s_gfxLogoff(void);
|
||
|
|
||
|
typedef [context_handle] void * HANDLE_SESSIONNOTIFICATION;
|
||
|
typedef [ref] HANDLE_SESSIONNOTIFICATION *PHANDLE_SESSIONNOTIFICATION;
|
||
|
|
||
|
long s_winmmRegisterSessionNotificationEvent([in] unsigned long dwProcessId,
|
||
|
[in] RHANDLE hEvent,
|
||
|
[out] PHANDLE_SESSIONNOTIFICATION phSessionNotification);
|
||
|
|
||
|
long s_winmmUnregisterSessionNotification([in, out] PHANDLE_SESSIONNOTIFICATION phSessionNotification);
|
||
|
|
||
|
long s_winmmSessionConnectState([in] unsigned long dwProcessId, [out] int *ConnectState);
|
||
|
|
||
|
long s_wdmDriverOpenDrvRegKey([in] DWORD dwProcessId, [in] LPCTSTR DeviceInterface, [in] ULONG samDesired, [out] RHANDLE *phkey);
|
||
|
|
||
|
void s_winmmAdvisePreferredDeviceChange(void);
|
||
|
|
||
|
long s_winmmGetPnpInfo([out] long *pcbPnpInfo, [out, size_is(,*pcbPnpInfo)] BYTE **PnpInfo);
|
||
|
}
|
||
|
|