//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 1995. // // File: ccache.cxx // // Contents: Class Cache functionality for the NT Provider // // //---------------------------------------------------------------------------- #include "winnt.hxx" HRESULT SetOctetPropertyInCache( CPropertyCache *pPropertyCache, LPTSTR pszProperty, BYTE *pByte, DWORD dwLength, BOOL fExplicit ) { HRESULT hr; OctetString octString; if(!pPropertyCache){ RRETURN(E_POINTER); } octString.pByte = pByte; octString.dwSize = dwLength; hr = pPropertyCache->unmarshallproperty( pszProperty, (LPBYTE)&octString, 1, NT_SYNTAX_ID_OCTETSTRING, fExplicit ); BAIL_ON_FAILURE(hr); error: RRETURN(hr); } HRESULT SetLPTSTRPropertyInCache( CPropertyCache *pPropertyCache, LPTSTR pszProperty, LPTSTR pszValue, BOOL fExplicit ) { HRESULT hr; if(!pPropertyCache){ RRETURN(E_POINTER); } hr = pPropertyCache->unmarshallproperty( pszProperty, (LPBYTE)pszValue, 1, NT_SYNTAX_ID_LPTSTR, fExplicit ); BAIL_ON_FAILURE(hr); error: RRETURN(hr); } HRESULT SetDWORDPropertyInCache( CPropertyCache *pPropertyCache, LPTSTR pszProperty, DWORD dwValue, BOOL fExplicit ) { HRESULT hr; if(!pPropertyCache){ RRETURN(E_POINTER); } hr = pPropertyCache->unmarshallproperty( pszProperty, (LPBYTE)&dwValue, 1, NT_SYNTAX_ID_DWORD, fExplicit ); BAIL_ON_FAILURE(hr); error: RRETURN(hr); } HRESULT SetDATE70PropertyInCache( CPropertyCache *pPropertyCache, LPTSTR pszProperty, DWORD dwValue, BOOL fExplicit ) { HRESULT hr; if(!pPropertyCache){ RRETURN(E_POINTER); } hr = pPropertyCache->unmarshallproperty( pszProperty, (LPBYTE)&dwValue, 1, NT_SYNTAX_ID_DATE_1970, fExplicit ); BAIL_ON_FAILURE(hr); error: RRETURN(hr); } HRESULT SetDATEPropertyInCache( CPropertyCache *pPropertyCache, LPTSTR pszProperty, DWORD dwValue, BOOL fExplicit ) { HRESULT hr; if(!pPropertyCache){ RRETURN(E_POINTER); } hr = pPropertyCache->unmarshallproperty( pszProperty, (LPBYTE)&dwValue, 1, NT_SYNTAX_ID_DATE, fExplicit ); BAIL_ON_FAILURE(hr); error: RRETURN(hr); } HRESULT SetBOOLPropertyInCache( CPropertyCache *pPropertyCache, LPTSTR pszProperty, BOOL fValue, BOOL fExplicit ) { HRESULT hr; if(!pPropertyCache){ RRETURN(E_POINTER); } hr = pPropertyCache->unmarshallproperty( pszProperty, (LPBYTE)&fValue, 1, NT_SYNTAX_ID_BOOL, fExplicit ); BAIL_ON_FAILURE(hr); error: RRETURN(hr); } HRESULT SetSYSTEMTIMEPropertyInCache( CPropertyCache *pPropertyCache, LPTSTR pszProperty, SYSTEMTIME stValue, BOOL fExplicit ) { HRESULT hr; if(!pPropertyCache){ RRETURN(E_POINTER); } hr = pPropertyCache->unmarshallproperty( pszProperty, (LPBYTE)&stValue, 1, NT_SYNTAX_ID_SYSTEMTIME, fExplicit ); BAIL_ON_FAILURE(hr); error: RRETURN(hr); } HRESULT SetDelimitedStringPropertyInCache( CPropertyCache *pPropertyCache, LPTSTR pszProperty, LPTSTR pszValue, BOOL fExplicit ) { HRESULT hr; DWORD dwNumValues = 0; LPWSTR pszString = AllocADsStr(pszValue); if(!pszString){ hr = E_OUTOFMEMORY; goto error; } if(!pPropertyCache){ RRETURN(E_POINTER); } // // Find the size of the delimited String // if((dwNumValues = DelimitedStrSize(pszString, TEXT(',')))== 0){ hr = E_FAIL; goto error; } hr = pPropertyCache->unmarshallproperty( pszProperty, (LPBYTE)pszString, dwNumValues, NT_SYNTAX_ID_DelimitedString, fExplicit ); BAIL_ON_FAILURE(hr); error: if(pszString){ FreeADsStr(pszString); } RRETURN(hr); } HRESULT SetNulledStringPropertyInCache( CPropertyCache *pPropertyCache, LPTSTR pszProperty, LPTSTR pszValue, BOOL fExplicit ) { HRESULT hr; DWORD dwNumValues = 0; if(!pPropertyCache){ RRETURN(E_POINTER); } // // Find the size of the nulled String // if((dwNumValues = NulledStrSize(pszValue))== 0){ hr = E_FAIL; goto error; } hr = pPropertyCache->unmarshallproperty( pszProperty, (LPBYTE)pszValue, dwNumValues, NT_SYNTAX_ID_NulledString, fExplicit ); BAIL_ON_FAILURE(hr); error: RRETURN(hr); } HRESULT GetOctetPropertyFromCache( CPropertyCache * pPropertyCache, LPTSTR pszProperty, OctetString *pOctet) { HRESULT hr = S_OK; DWORD dwSyntaxId = 0; DWORD dwNumValues = 0; PNTOBJECT pNTObject = NULL; hr = pPropertyCache->marshallgetproperty( pszProperty, &dwSyntaxId, &dwNumValues, &pNTObject ); BAIL_ON_FAILURE(hr); hr = MarshallNTSynIdToNT( dwSyntaxId, pNTObject, dwNumValues, (LPBYTE)pOctet ); BAIL_ON_FAILURE(hr); error: if (pNTObject) { NTTypeFreeNTObjects( pNTObject, dwNumValues ); } RRETURN (hr); } HRESULT GetLPTSTRPropertyFromCache( CPropertyCache * pPropertyCache, LPTSTR pszProperty, LPTSTR * ppszValue ) { HRESULT hr = S_OK; DWORD dwSyntaxId = 0; DWORD dwNumValues = 0; PNTOBJECT pNTObject = NULL; hr = pPropertyCache->marshallgetproperty( pszProperty, &dwSyntaxId, &dwNumValues, &pNTObject ); BAIL_ON_FAILURE(hr); hr = MarshallNTSynIdToNT( dwSyntaxId, pNTObject, dwNumValues, (LPBYTE)ppszValue ); BAIL_ON_FAILURE(hr); error: if (pNTObject) { NTTypeFreeNTObjects( pNTObject, dwNumValues ); } RRETURN (hr); } HRESULT GetDelimitedStringPropertyFromCache( CPropertyCache * pPropertyCache, LPTSTR pszProperty, LPTSTR * ppszValue ) { HRESULT hr = S_OK; DWORD dwSyntaxId = 0; DWORD dwNumValues = 0; PNTOBJECT pNTObject = NULL; hr = pPropertyCache->marshallgetproperty( pszProperty, &dwSyntaxId, &dwNumValues, &pNTObject ); BAIL_ON_FAILURE(hr); if(SUCCEEDED(hr)){ hr = MarshallNTSynIdToNT( dwSyntaxId, pNTObject, dwNumValues, (LPBYTE)ppszValue ); } error: if (pNTObject) { NTTypeFreeNTObjects( pNTObject, dwNumValues ); } RRETURN (hr); } HRESULT GetNulledStringPropertyFromCache( CPropertyCache * pPropertyCache, LPTSTR pszProperty, LPTSTR * ppszValue ) { HRESULT hr = S_OK; DWORD dwSyntaxId = 0; DWORD dwNumValues = 0; PNTOBJECT pNTObject = NULL; hr = pPropertyCache->marshallgetproperty( pszProperty, &dwSyntaxId, &dwNumValues, &pNTObject ); BAIL_ON_FAILURE(hr); if(SUCCEEDED(hr)){ hr = MarshallNTSynIdToNT( dwSyntaxId, pNTObject, dwNumValues, (LPBYTE)ppszValue ); } error: if (pNTObject) { NTTypeFreeNTObjects( pNTObject, dwNumValues ); } RRETURN (hr); } HRESULT GetBOOLPropertyFromCache( CPropertyCache * pPropertyCache, LPTSTR pszProperty, PBOOL pBool ) { HRESULT hr = S_OK; DWORD dwSyntaxId = 0; DWORD dwNumValues = 0; PNTOBJECT pNTObject = NULL; hr = pPropertyCache->marshallgetproperty( pszProperty, &dwSyntaxId, &dwNumValues, &pNTObject ); BAIL_ON_FAILURE(hr); if(SUCCEEDED(hr)){ hr = MarshallNTSynIdToNT( dwSyntaxId, pNTObject, dwNumValues, (LPBYTE)pBool ); } error: if (pNTObject) { NTTypeFreeNTObjects( pNTObject, dwNumValues ); } RRETURN (hr); } HRESULT GetDWORDPropertyFromCache( CPropertyCache * pPropertyCache, LPTSTR pszProperty, LPDWORD pdwDWORD ) { HRESULT hr = S_OK; DWORD dwSyntaxId = 0; DWORD dwNumValues = 0; PNTOBJECT pNTObject = NULL; hr = pPropertyCache->marshallgetproperty( pszProperty, &dwSyntaxId, &dwNumValues, &pNTObject ); BAIL_ON_FAILURE(hr); if(SUCCEEDED(hr)){ hr = MarshallNTSynIdToNT( dwSyntaxId, pNTObject, dwNumValues, (LPBYTE)pdwDWORD ); } error: if (pNTObject) { NTTypeFreeNTObjects( pNTObject, dwNumValues ); } RRETURN (hr); } HRESULT GetDATE70PropertyFromCache( CPropertyCache * pPropertyCache, LPTSTR pszProperty, LPDWORD pdwDWORD ) { HRESULT hr = S_OK; DWORD dwSyntaxId = 0; DWORD dwNumValues = 0; PNTOBJECT pNTObject = NULL; hr = pPropertyCache->marshallgetproperty( pszProperty, &dwSyntaxId, &dwNumValues, &pNTObject ); BAIL_ON_FAILURE(hr); if(SUCCEEDED(hr)){ hr = MarshallNTSynIdToNT( dwSyntaxId, pNTObject, dwNumValues, (LPBYTE)pdwDWORD ); } error: if (pNTObject) { NTTypeFreeNTObjects( pNTObject, dwNumValues ); } RRETURN (hr); } HRESULT GetDATEPropertyFromCache( CPropertyCache * pPropertyCache, LPTSTR pszProperty, PDWORD pdwDate ) { HRESULT hr = S_OK; DWORD dwSyntaxId = 0; DWORD dwNumValues = 0; PNTOBJECT pNTObject = NULL; hr = pPropertyCache->marshallgetproperty( pszProperty, &dwSyntaxId, &dwNumValues, &pNTObject ); BAIL_ON_FAILURE(hr); if(SUCCEEDED(hr)){ hr = MarshallNTSynIdToNT( dwSyntaxId, pNTObject, dwNumValues, (LPBYTE)pdwDate ); } error: if (pNTObject) { NTTypeFreeNTObjects( pNTObject, dwNumValues ); } RRETURN (hr); } HRESULT GetSYSTEMTIMEPropertyFromCache( CPropertyCache * pPropertyCache, LPTSTR pszProperty, SYSTEMTIME * pstTime ) { HRESULT hr = S_OK; DWORD dwSyntaxId = 0; DWORD dwNumValues = 0; PNTOBJECT pNTObject = NULL; hr = pPropertyCache->marshallgetproperty( pszProperty, &dwSyntaxId, &dwNumValues, &pNTObject ); BAIL_ON_FAILURE(hr); if(SUCCEEDED(hr)){ hr = MarshallNTSynIdToNT( dwSyntaxId, pNTObject, dwNumValues, (LPBYTE)pstTime ); } error: if (pNTObject) { NTTypeFreeNTObjects( pNTObject, dwNumValues ); } RRETURN (hr); }