Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#ifndef _CODER_HPP
#define _CODER_HPP
#define ObjectID_ ASN1objectidentifier_s
typedef struct { ASN1encoding_t pEncInfo; ASN1decoding_t pDecInfo; }ASN1_CODER_INFO;
typedef struct { ULONG length; PBYTE value; }ASN1_BUF;
#include "t126.h"
extern "C" { int T126_InitModule(void); int T126_TermModule(void); int T126_InitCoder(ASN1_CODER_INFO *pCoder); int T126_TermCoder(ASN1_CODER_INFO *pCoder); int T126_Encode(ASN1_CODER_INFO *pCoder, void *pStruct, int nPDU, ASN1_BUF *pBuf); int T126_Decode(ASN1_CODER_INFO *pCoder, void **ppStruct, int nPDU, ASN1_BUF *pBuf); }
// DEBUG OPTIONS
#define CODER_DEBUG 0x00000001
#define CODER_SUPER_DEBUG 0x00000002
// Coder Error Messages
#define CODER_NOERROR 0
#define CODER_ERROR 1
// Protocol version information
#define ITU_T 0
#define RECOMMENDATION 0
#define SERIES 20 // H225.0
#define RECOMM_NUMBER 126
#define VERSION 0
#define ADDITIONAL 1
class Coder{
private: ASN1_CODER_INFO p_Coder; CRITICAL_SECTION m_critSec;
public: struct ObjectID_ m_protocolIdentifier1,m_protocolIdentifier2,m_protocolIdentifier3, m_protocolIdentifier4,m_protocolIdentifier5,m_protocolIdentifier6;
public: Coder(); ~Coder();
int InitCoder(); // Creates an OssBuf
int Encode(SIPDU *pInputData, ASN1_BUF *pOutputOssBuf); // Create memory to hold decoded OssBuf
// For H323 this is a rasStruct
int Decode(ASN1_BUF *pInputOssBuf, SIPDU **pOutputData); // Used to free buffer created by decode
int Free(SIPDU *pData); // Used to free buffer created by encode
void Free(ASN1_BUF Asn1Buf); // Returns TRUE if protocols match, FALSE - otherwise
__inline int freePDU(ASN1_CODER_INFO *pCoder, int nPDU, void *pDecoded, ASN1module_t pModule) { ASN1_FreeDecoded(pCoder->pDecInfo, pDecoded, nPDU); return ASN1_SUCCESS; }
};
#endif
|