|
|
/****************************************************************************
* * $Archive: S:/STURGEON/SRC/INCLUDE/VCS/apimsm.h_v $ * * INTEL Corporation Prorietary Information * * This listing is supplied under the terms of a license agreement * with INTEL Corporation and may not be copied nor disclosed except * in accordance with the terms of that agreement. * * Copyright (c) 1993-1994 Intel Corporation. * * $Revision: 1.11 $ * $Date: Apr 15 1996 08:52:10 $ * $Author: RKUHN $ * * Deliverable: * * Abstract: * Media Service Manager "public" header file. This file contains * #defines, typedefs, struct definitions and prototypes used by * and in conjunction with MSM. Any EXE or DLL which interacts with * MSM will include this header file. * * Notes: * ***************************************************************************/
#ifndef APIMSM_H
#define APIMSM_H
#include <apierror.h>
#ifdef __cplusplus
extern "C" { // Assume C declarations for C++.
#endif // __cplusplus
#ifndef DllImport
#define DllImport __declspec( dllimport )
#endif // DllImport
#ifndef DllExport
#define DllExport __declspec( dllexport )
#endif // DllExport
// Product Identifier
//
#define MAX_PRODUCTID_LENGTH 50
typedef char PRODUCTID[MAX_PRODUCTID_LENGTH], *LPPRODUCTID;
// Service identifier
//
#define MAX_SERVICEID_LENGTH 50
typedef char SERVICEID[MAX_SERVICEID_LENGTH], *LPSERVICEID;
// Registry defines
//
#define MSM_REG_SERVICEID "MediaServiceManager"
#define MSM_REG_RMSPATH "RMSPath"
#define MSM_REG_SERVICES "Services"
// Defines for handle returned by MSM
//
typedef DWORD HSESSION, *LPHSESSION; typedef DWORD HSERVICE, *LPHSERVICE; typedef DWORD HPORT, *LPHPORT; typedef DWORD HLINK, *LPHLINK; typedef DWORD HSYNC, *LPHSYNC;
// Defines for cookies passed in by application
//
typedef DWORD ERRORCOOKIE, *LPERRORCOOKIE; typedef DWORD SERVICECOOKIE, *LPSERVICECOOKIE; typedef DWORD PORTCOOKIE, *LPPORTCOOKIE;
// Typedef for application callbacks made by MSM
//
typedef void (CALLBACK *MSM_ERRORCALLBACK) (ERRORCOOKIE, HRESULT); typedef HRESULT (CALLBACK *MSM_SERVICECALLBACK) (HSERVICE, SERVICECOOKIE, WPARAM, LPARAM, LPARAM); typedef HRESULT (CALLBACK *MSM_PORTCALLBACK) (HSERVICE, HPORT, PORTCOOKIE, WPARAM, LPARAM, LPARAM);
// Typedefs for MSM application entry points to ensure stricter checking
// when functions are called via pointers
//
typedef HRESULT (*MSM_OPENSESSION) (LPPRODUCTID, MSM_ERRORCALLBACK, DWORD, LPHSESSION); typedef HRESULT (*MSM_CLOSESESSION) (HSESSION); typedef HRESULT (*MSM_OPENSERVICE) (HSESSION, LPSERVICEID, MSM_SERVICECALLBACK, SERVICECOOKIE, LPARAM, LPARAM, LPHSERVICE); typedef HRESULT (*MSM_CLOSESERVICE) (HSERVICE); typedef HRESULT (*MSM_SENDSERVICECMD) (HSERVICE, HPORT, WORD, LPARAM, LPARAM); typedef HRESULT (*MSM_OPENPORT) (HSERVICE, MSM_PORTCALLBACK, PORTCOOKIE, LPARAM, LPARAM, LPHPORT); typedef HRESULT (*MSM_CLOSEPORT) (HPORT); typedef HRESULT (*MSM_LINKPORTS) (HPORT, HPORT, LPHLINK); typedef HRESULT (*MSM_UNLINKPORTS) (HLINK); typedef HRESULT (*MSM_SYNCPORTS) (HPORT, HPORT, LPHSYNC); typedef HRESULT (*MSM_UNSYNCPORTS) (HSYNC);
typedef struct _MSMAPI { MSM_OPENSESSION MSM_OpenSession; MSM_CLOSESESSION MSM_CloseSession; MSM_OPENSERVICE MSM_OpenService; MSM_CLOSESERVICE MSM_CloseService; MSM_SENDSERVICECMD MSM_SendServiceCmd; MSM_OPENPORT MSM_OpenPort; MSM_CLOSEPORT MSM_ClosePort; MSM_LINKPORTS MSM_LinkPorts; MSM_UNLINKPORTS MSM_UnlinkPorts; MSM_SYNCPORTS MSM_SyncPorts; MSM_UNSYNCPORTS MSM_UnsyncPorts; } MSMAPI, *LPMSMAPI;
// ERROR CALLBACK
//
extern void CALLBACK MSM_ErrorCallback ( ERRORCOOKIE dAppErrorCookie,// Application error cookie
HRESULT hResult // Error information.
);
// SESSION CONTROL
//
extern DllExport HRESULT MSM_OpenSession ( LPPRODUCTID pszAppId, // String identifies app's registry section.
MSM_ERRORCALLBACK pErrorCallback, // Pointer to callback function for errors
ERRORCOOKIE dAppErrorCookie,// Application error cookie returned on aync errors
LPHSESSION phSession // Pointer to location to store the session handle
);
extern DllExport HRESULT MSM_CloseSession ( HSESSION hSession // Handle of session to be closed.
);
// SERVICE CONTROL
//
extern HRESULT CALLBACK MSM_ServiceCallback ( HSERVICE hService, // Handle of service to be closed.
SERVICECOOKIE dServiceCookie, // Application service cookie
WPARAM wParam, // Pass through word param
LPARAM lParamIn, // Pass through long param in
LPARAM lParamOut // Pass through long param out
);
extern DllExport HRESULT MSM_OpenService ( HSESSION hSession, // MSM session-instance handle.
LPSERVICEID pszServiceId, // Unique service-type identifier.
MSM_SERVICECALLBACK pServiceCallback,// Application callback for service
SERVICECOOKIE dAppServiceCookie,// Application service cookie
LPARAM lParamIn, // Pass through long param in
LPARAM lParamOut, // Pass through long param out
LPHSERVICE phService // Pointer to location to store the service handle
);
extern DllExport HRESULT MSM_CloseService ( HSERVICE hService // Handle of service to be closed.
);
extern DllExport HRESULT MSM_SendServiceCmd ( HSERVICE hService, // Service-instance handle.
HPORT hPort, // Port-instance handle.
WORD wCommand, // Service-specific command.
LPARAM lParamIn, // Pass through long param in
LPARAM lParamOut // Pass through long param out
);
// PORT CONTROL
//
extern HRESULT CALLBACK MSM_PortCallback ( HSERVICE hService, // Handle of service.
HPORT hPort, // Handle of port.
PORTCOOKIE dAppPortCookie, // Application port cookie
WPARAM wParam, // Pass through word param
LPARAM lParamIn, // Pass through long param in
LPARAM lParamOut // Pass through long param out
);
extern DllExport HRESULT MSM_OpenPort ( HSERVICE hService, // Service-instance handle.
MSM_PORTCALLBACK pPortCallback, // Application callback for port
PORTCOOKIE dAppPortCookie, // Application port cookie
LPARAM lParamIn, // Pass through long param in
LPARAM lParamOut, // Pass through long param out
LPHPORT phPort // Pointer to location to store the port handle
);
extern DllExport HRESULT MSM_ClosePort ( HPORT hPort // Handle of port to be closed.
);
// LINK CONTROL
//
extern DllExport HRESULT MSM_LinkPorts ( HPORT hSrcPort, // Source port of linked stream.
HPORT hSnkPort, // Sink port of linked stream.
LPHLINK phLink // Pointer to location to store the link handle
);
extern DllExport HRESULT MSM_UnlinkPorts ( HLINK hLink // Handle of link to be disabled.
);
// SYNC CONTROL
//
extern DllExport HRESULT MSM_SyncPorts ( HPORT hTargetPort, // Target port to sync with
HPORT hSyncPort, // Syncbc port to be sync'ed
LPHSYNC phSync // Pointer to location to store the sync handle
);
extern DllExport HRESULT MSM_UnsyncPorts ( HSYNC hSync // Handle of sync to be disabled.
);
#ifdef __cplusplus
} // End of extern "C" {
#endif // __cplusplus
#endif // APIMSM_H
|