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

139 lines
4.2 KiB
C

/****************************************************************************
*
* $Archive: S:/STURGEON/SRC/INCLUDE/VCS/mspbuffs.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.7 $
* $Date: Apr 25 1996 10:46:04 $
* $Author: MLEWIS1 $
*
* Deliverable:
*
* Abstract:
*
* Notes:
*
***************************************************************************/
#ifndef MSPBUFFS_H
#define MSPBUFFS_H
#ifdef __cplusplus
extern "C" { // Assume C declarations for C++.
#endif // __cplusplus
//////////////////////////////////////////////////////
// Buffer Manager typedef Section
//////////////////////////////////////////////////////
typedef DWORD STATUS, *LPSTATUS;
typedef LPBYTE BUFPTR;
typedef DWORD HBUFQUEUE;
//////////////////////////////////////////////////////
// Buffer Manager Error Code Section
//////////////////////////////////////////////////////
#define MBE_OK 0
#define MBE_EMPTY 1000
#define MBE_NOMEM 1001
#define MBE_PARAM 1002
#define MBE_STATE 1003
#define MBE_EMPTYQ MBE_EMPTY
//////////////////////////////////////////////////////
// Buffer Manager Prototypes Section
//////////////////////////////////////////////////////
// create a buffer of the specified size
BUFPTR MB_CreateBuffer(UINT size, LPSTATUS lpStatus);
// delete the buffer. must not be on a queue
STATUS MB_DeleteBuffer(BUFPTR pBuf);
// get the size a buffer
UINT MB_BufSize(BUFPTR pBuf);
// associate user data with a buffer
STATUS MB_Associate(BUFPTR pBuf, LPVOID pAssc);
// retrieve the user data associated with a buffer
LPVOID MB_GetAssociation(BUFPTR pBuf, LPSTATUS lpStatus);
//////////////////////////////////////////////////////
// Queue Manager Prototypes Section
//////////////////////////////////////////////////////
// create a FIFO queue (empty)
HBUFQUEUE MB_CreateQueue(LPSTATUS lpStatus);
// delete the FIFO queue. must be empty
STATUS MB_DeleteQueue(HBUFQUEUE hQue);
// add a buffer to the tail of the queue
STATUS MB_Enqueue(HBUFQUEUE hQue, BUFPTR pBuf);
// get the next buffer from the head of the queue (NULL if empty)
BUFPTR MB_Dequeue(HBUFQUEUE hQue, LPSTATUS lpStatus);
// remove a specified buffer from anywhere in the queue
STATUS MB_Remove(HBUFQUEUE hQue, BUFPTR pBuf);
// refer to buffer on the head of the queue (not dequeued, NULL if empty)
BUFPTR MB_Front(HBUFQUEUE hQue, LPSTATUS lpStatus);
// refer to buffer at the tail of the queue (not dequeued, NULL if empty)
BUFPTR MB_Back(HBUFQUEUE hQue, LPSTATUS lpStatus);
// refer to next buffer in the queue (NULL if last)
BUFPTR MB_Next(BUFPTR pBuf, LPSTATUS lpStatus);
// refer to previous buffer in the queue (NULL if first)
BUFPTR MB_Prev(BUFPTR pBuf, LPSTATUS lpStatus);
// count of buffers in a queue
UINT MB_QCount(HBUFQUEUE hQue, LPSTATUS lpStatus);
// get a buffer with specified associated data (dequeued, NULL if not found)
BUFPTR MB_RemoveByAssociation(HBUFQUEUE hQue, LPVOID pAssc, LPSTATUS lpStatus);
// get the queue a buffer is on (NULL if not on queue)
HBUFQUEUE MB_OnQueue(BUFPTR pBuf, LPSTATUS lpStatus);
// add a buffer to the head of the queue
STATUS MB_GetAndResetWatermarks(HBUFQUEUE hQue, UINT *lpHiWater, UINT *lpLoWater);
// Get and reset watermarks on the queue
STATUS MB_Requeue(HBUFQUEUE hQue, BUFPTR pBuf);
// get a buffer with specified associated data ( leave queued, NULL if not found)
BUFPTR MB_FindByAssociation(HBUFQUEUE hQue, LPVOID pAssc, LPSTATUS lpStatus);
// Restrict queue access to the calling thread
STATUS MB_QLock(HBUFQUEUE hQue);
// Restore queue access to all threads
STATUS MB_QUnlock(HBUFQUEUE hQue);
//////////////////////////////////////////////////////
// Pool Manager Prototypes Section
//////////////////////////////////////////////////////
// create a pool(queue) with the specified number and size of buffers
HBUFQUEUE MB_CreatePool(UINT bufSize, UINT count, LPSTATUS lpStatus);
// delete a pool(queue) and all buffers queued on it
STATUS MB_DeletePool(HBUFQUEUE hPool);
#ifdef __cplusplus
} // End of extern "C" {
#endif // __cplusplus
#endif // MSPBUFFS_H