Leaked source code of windows server 2003
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.
|
|
/*****************************************************************************\
* MODULE: respdata.cpp * * PURPOSE: Implementation of COM interface for BidiSpooler * * Copyright (C) 2000 Microsoft Corporation * * History: * * 03/08/00 Weihai Chen (weihaic) Created * \*****************************************************************************/
#include "precomp.h"
#include "priv.h"
TResponseData::TResponseData ( IN CONST LPCWSTR pszSchema, IN CONST DWORD dwType, IN CONST BYTE *pData, IN CONST ULONG uSize): m_dwType (dwType), m_pData (NULL), m_uSize (uSize), m_pSchema (NULL), m_bValid (FALSE) { BOOL bValid = FALSE;
//
// In the response, the schema string can be NULL for GET operation
//
if (pszSchema) {
DWORD dwLen = lstrlen (pszSchema) + 1; m_pSchema = new WCHAR [dwLen];
if (m_pSchema) { if (SUCCEEDED(StringCchCopy (m_pSchema, dwLen, pszSchema))) bValid = TRUE; } } else bValid = TRUE;
if (bValid) {
// Validate the type and size
BOOL bRet;
switch (dwType) { case BIDI_NULL: bRet = uSize == BIDI_NULL_SIZE; break; case BIDI_INT: bRet = uSize == BIDI_INT_SIZE; break; case BIDI_FLOAT: bRet = uSize == BIDI_FLOAT_SIZE; break; case BIDI_BOOL: bRet = uSize == BIDI_BOOL_SIZE; break; case BIDI_ENUM: bRet = (uSize > 0); break;
case BIDI_STRING: case BIDI_TEXT: case BIDI_BLOB: bRet = TRUE; break;
default: bRet = FALSE; }
if (bRet) {
if (uSize) {
m_pData = new BYTE [uSize]; if (m_pData) { CopyMemory (m_pData, pData, uSize); m_bValid = TRUE; } } else m_bValid = TRUE; } } }
TResponseData::~TResponseData () { if (m_pData) { delete [] m_pData; m_pData = NULL; }
if (m_pSchema) { delete [] m_pSchema; m_pSchema = NULL; } }
|