home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
viscobv6.zip
/
vac22os2
/
ibmcobol
/
samples
/
toolkit
/
mm
/
mcdtemp
/
mcdinfo.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-11-19
|
8KB
|
155 lines
/****************************************************************************/
/* */
/* SOURCE FILE NAME: MCDINFO.C */
/* */
/* DESCRIPTIVE NAME: MCI_INFO MESSAGE HANDLER */
/* */
/* COPYRIGHT: (c) IBM Corp. 1991 - 1993 */
/* */
/* FUNCTION: This file contains routines to handle the mci_info message. */
/* The two items shown here are infor file name and info product */
/* See the programming reference for details of the info message.*/
/* */
/* ENTRY POINTS: */
/* MCIInfo() - MCI_INFO message handler */
/* MCIInfoErr() - Error handler for MCI_INFO message */
/****************************************************************************/
#define INCL_BASE // Base OS2 functions
#define INCL_DOSSEMAPHORES // OS2 Semaphore function
#define INCL_MCIOS2 // use the OS/2 like MMPM/2 headers
#include <os2.h> // OS2 defines.
#include <string.h> // C string functions
#include <os2me.h> // MME includes files.
#include <stdlib.h> // Math functions
#include "mcdtemp.h" // Function Prototypes.
/****************************************************************************/
/* */
/* SUBROUTINE NAME: MCIInfo */
/* */
/* DESCRIPTIVE NAME: MCI_INFO message processor */
/* */
/* FUNCTION: Process the MCI_INFO message. */
/* */
/* PARAMETERS: */
/* FUNCTION_PARM_BLOCK *pFuncBlock -- Pointer to function parameter */
/* block. */
/* EXIT CODES: */
/* MCIERR_SUCCESS -- Action completed without error. */
/* . */
/* . */
/* . */
/* . */
/* */
/****************************************************************************/
RC MCIInfo (FUNCTION_PARM_BLOCK *pFuncBlock)
{
ULONG ulrc = MCIERR_SUCCESS; // Propogated Error Code
ULONG ulParam1; // Message flags
PMCI_INFO_PARMS pInfoParms; // Pointer to info structure
PINSTANCE pInstance; // Pointer to instance
/*****************************************************/
/* dereference the values from pFuncBlock */
/*****************************************************/
ulParam1 = pFuncBlock->ulParam1;
pInstance = pFuncBlock->pInstance;
pInfoParms = (PMCI_INFO_PARMS)pFuncBlock->pParam2;
/**********************************************************/
/* Lock access to this instance until this command is done*/
/**********************************************************/
DosRequestMutexSem (pInstance->hmtxAccessSem, -2); // wait for semaphore
switch (ulParam1 & MCD_INFO_FLAGS)
{
/**********************************************************/
/* Return a description of the hardware this device */
/* represents */
/**********************************************************/
case MCI_INFO_PRODUCT:
if (pInfoParms->ulRetSize < MAX_PRODINFO)
strncpy(pInfoParms->pszReturn, pInstance->szProductInfo, pInfoParms->ulRetSize);
else
strncpy(pInfoParms->pszReturn, pInstance->szProductInfo, MAX_PRODINFO);
break;
/**********************************************************/
/* Return the file name associated with this device */
/* instance */
/**********************************************************/
case MCI_INFO_FILE:
if (pInfoParms->ulRetSize < MAX_FILE_NAME)
strncpy(pInfoParms->pszReturn, pInstance->szFileName, pInfoParms->ulRetSize);
else
strncpy(pInfoParms->pszReturn, pInstance->szFileName, MAX_FILE_NAME);
break;
default:
ulrc = MCIERR_UNSUPPORTED_FLAG;
break;
} /* Switch */
DosReleaseMutexSem (pInstance->hmtxAccessSem); // release semaphore
/***************************************************************/
/* Send back a notification if the notify flag was on */
/* and no error */
/***************************************************************/
if ((ulParam1 & MCI_NOTIFY) & (!ulrc))
mdmDriverNotify (pInstance->usDeviceID,
pInfoParms->hwndCallback,
MM_MCINOTIFY,
pFuncBlock->usUserParm,
MAKEULONG (MCI_INFO, MCI_NOTIFY_SUCCESSFUL));
return (ulrc);
} /* end of MCIInfo */
/****************************************************************************/
/* */
/* SUBROUTINE NAME: MCIInfoErr */
/* */
/* DESCRIPTIVE NAME: MCI_INFO message error processor */
/* */
/* FUNCTION: Process the MCI_INFO message for errors. */
/* */
/* PARAMETERS: */
/* FUNCTION_PARM_BLOCK *pFuncBlock -- Pointer to function parameter */
/* block. */
/* EXIT CODES: */
/* MCIERR_SUCCESS -- Action completed without error. */
/* . */
/* . */
/* . */
/* . */
/* */
/****************************************************************************/
RC MCIInfoErr (FUNCTION_PARM_BLOCK *pFuncBlock)
{
ULONG ulrc = MCIERR_SUCCESS; // Propogated Error Code
ULONG ulParam1; // Message flags
PMCI_INFO_PARMS pInfoParms; // Pointer to info structure
PINSTANCE pInstance; // Pointer to instance
/*****************************************************/
/* dereference the values from pFuncBlock */
/*****************************************************/
ulParam1 = pFuncBlock->ulParam1;
pInstance = pFuncBlock->pInstance;
pInfoParms = (PMCI_INFO_PARMS)pFuncBlock->pParam2;
return (ulrc);
} /* end of MCIInfoErr */