mirror of https://github.com/tongzx/nt5src
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.
455 lines
8.6 KiB
455 lines
8.6 KiB
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1992 - 1995.
|
|
//
|
|
// File: ccache.cxx
|
|
//
|
|
// Contents: Class Cache functionality for the NwCompat Provider
|
|
//
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
#include "nwcompat.hxx"
|
|
|
|
|
|
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
|
|
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
|
|
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
|
|
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;
|
|
|
|
if(!pPropertyCache){
|
|
RRETURN(E_POINTER);
|
|
}
|
|
|
|
hr = pPropertyCache->unmarshallproperty(
|
|
pszProperty,
|
|
(LPBYTE)pszValue,
|
|
1,
|
|
NT_SYNTAX_ID_DelimitedString,
|
|
fExplicit
|
|
);
|
|
BAIL_ON_FAILURE(hr);
|
|
|
|
error:
|
|
|
|
RRETURN(hr);
|
|
}
|
|
|
|
|
|
HRESULT
|
|
SetNulledStringPropertyInCache(
|
|
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_NulledString,
|
|
fExplicit
|
|
);
|
|
BAIL_ON_FAILURE(hr);
|
|
|
|
error:
|
|
|
|
RRETURN(hr);
|
|
|
|
}
|
|
|
|
|
|
HRESULT
|
|
GetPropertyFromCache(
|
|
CPropertyCache * pPropertyCache,
|
|
LPTSTR pszProperty,
|
|
LPBYTE pValue
|
|
)
|
|
{
|
|
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,
|
|
pValue
|
|
);
|
|
BAIL_ON_FAILURE(hr);
|
|
|
|
error:
|
|
if (pNTObject)
|
|
NTTypeFreeNTObjects(pNTObject, dwNumValues);
|
|
RRETURN (hr);
|
|
}
|
|
|
|
|
|
HRESULT
|
|
GetLPTSTRPropertyFromCache(
|
|
CPropertyCache * pPropertyCache,
|
|
LPTSTR pszProperty,
|
|
LPTSTR * ppszValue
|
|
)
|
|
{
|
|
HRESULT hr;
|
|
hr = GetPropertyFromCache(pPropertyCache,
|
|
pszProperty,
|
|
(LPBYTE)ppszValue);
|
|
RRETURN(hr);
|
|
}
|
|
|
|
|
|
HRESULT
|
|
GetDelimitedStringPropertyFromCache(
|
|
CPropertyCache * pPropertyCache,
|
|
LPTSTR pszProperty,
|
|
LPTSTR * ppszValue
|
|
)
|
|
{
|
|
HRESULT hr;
|
|
hr = GetPropertyFromCache(pPropertyCache,
|
|
pszProperty,
|
|
(LPBYTE)ppszValue);
|
|
RRETURN (hr);
|
|
}
|
|
|
|
|
|
HRESULT
|
|
GetNulledStringPropertyFromCache(
|
|
CPropertyCache * pPropertyCache,
|
|
LPTSTR pszProperty,
|
|
LPTSTR * ppszValue
|
|
)
|
|
{
|
|
HRESULT hr;
|
|
hr = GetPropertyFromCache(pPropertyCache,
|
|
pszProperty,
|
|
(LPBYTE)ppszValue);
|
|
RRETURN(hr);
|
|
}
|
|
|
|
|
|
HRESULT
|
|
GetBOOLPropertyFromCache(
|
|
CPropertyCache * pPropertyCache,
|
|
LPTSTR pszProperty,
|
|
PBOOL pBool
|
|
)
|
|
{
|
|
HRESULT hr;
|
|
hr = GetPropertyFromCache(pPropertyCache,
|
|
pszProperty,
|
|
(LPBYTE)pBool);
|
|
RRETURN(hr);
|
|
}
|
|
|
|
|
|
HRESULT
|
|
GetOctetPropertyFromCache(
|
|
CPropertyCache * pPropertyCache,
|
|
LPTSTR pszProperty,
|
|
OctetString *pOctet)
|
|
{
|
|
HRESULT hr;
|
|
hr = GetPropertyFromCache(pPropertyCache,
|
|
pszProperty,
|
|
(LPBYTE)pOctet);
|
|
RRETURN(hr);
|
|
}
|
|
|
|
|
|
HRESULT
|
|
GetDWORDPropertyFromCache(
|
|
CPropertyCache * pPropertyCache,
|
|
LPTSTR pszProperty,
|
|
LPDWORD pdwDWORD
|
|
)
|
|
{
|
|
HRESULT hr;
|
|
hr = GetPropertyFromCache(pPropertyCache,
|
|
pszProperty,
|
|
(LPBYTE)pdwDWORD);
|
|
RRETURN(hr);
|
|
}
|
|
|
|
|
|
HRESULT
|
|
GetDATEPropertyFromCache(
|
|
CPropertyCache * pPropertyCache,
|
|
LPTSTR pszProperty,
|
|
PDWORD pdwDate
|
|
)
|
|
{
|
|
HRESULT hr;
|
|
hr = GetPropertyFromCache(pPropertyCache,
|
|
pszProperty,
|
|
(LPBYTE)pdwDate);
|
|
RRETURN(hr);
|
|
}
|
|
|
|
|
|
HRESULT
|
|
GetNw312DATEPropertyFromCache(
|
|
CPropertyCache * pPropertyCache,
|
|
LPTSTR pszProperty,
|
|
BYTE byDateTime[]
|
|
)
|
|
{
|
|
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)byDateTime
|
|
);
|
|
}
|
|
|
|
error:
|
|
if (pNTObject)
|
|
NTTypeFreeNTObjects(pNTObject, dwNumValues);
|
|
RRETURN (hr);
|
|
}
|
|
|
|
|
|
HRESULT
|
|
SetNw312DATEPropertyInCache(
|
|
CPropertyCache *pPropertyCache,
|
|
LPTSTR pszProperty,
|
|
BYTE byDateTime[],
|
|
BOOL fExplicit
|
|
)
|
|
{
|
|
HRESULT hr;
|
|
|
|
if(!pPropertyCache){
|
|
RRETURN(E_POINTER);
|
|
}
|
|
|
|
hr = pPropertyCache->unmarshallproperty(
|
|
pszProperty,
|
|
(LPBYTE)byDateTime,
|
|
1,
|
|
NT_SYNTAX_ID_NW312DATE,
|
|
fExplicit
|
|
);
|
|
BAIL_ON_FAILURE(hr);
|
|
|
|
error:
|
|
|
|
RRETURN(hr);
|
|
}
|