windows-nt/Source/XPSP1/NT/net/tapi/skywalker/cc/inc/apimsm.h
2020-09-26 16:20:57 +08:00

253 lines
6.9 KiB
C

/****************************************************************************
*
* $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