977 lines
22 KiB
C++
977 lines
22 KiB
C++
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1992 - 1995.
|
|
//
|
|
// File: ndsmrshl.cxx
|
|
//
|
|
// Contents:
|
|
//
|
|
// Functions:
|
|
//
|
|
// CopyABC1ToNDSSynId1
|
|
// CopyABC2ToNDSSynId2
|
|
// CopyABC3ToNDSSynId3
|
|
// CopyABC4ToNDSSynId4
|
|
// CopyABC5ToNDSSynId5
|
|
// CopyABC6ToNDSSynId6
|
|
// CopyABC7ToNDSSynId7
|
|
// CopyABC8ToNDSSynId8
|
|
// CopyABC9ToNDSSynId9
|
|
// CopyABC10ToNDSSynId10
|
|
// CopyABC11ToNDSSynId11
|
|
// CopyABC12ToNDSSynId12
|
|
// CopyABC13ToNDSSynId13
|
|
// CopyABC14ToNDSSynId14
|
|
// CopyABC15ToNDSSynId15
|
|
// CopyABC16ToNDSSynId16
|
|
// CopyABC17ToNDSSynId17
|
|
// CopyABC18ToNDSSynId18
|
|
// CopyABC19ToNDSSynId19
|
|
// CopyABC20ToNDSSynId20
|
|
// CopyABC21ToNDSSynId21
|
|
// CopyABC22ToNDSSynId22
|
|
// CopyABC23ToNDSSynId23
|
|
// CopyABC24ToNDSSynId24
|
|
// CopyABC25ToNDSSynId25
|
|
// CopyABC26ToNDSSynId26
|
|
// CopyABC27ToNDSSynId27
|
|
//
|
|
// History: 25-Apr-96 KrishnaG Created.
|
|
//
|
|
// Warnings: NDS Data type 6 is not yet supported (no problems just
|
|
// not done!
|
|
//
|
|
// NDS Data type 16 need to complete the for loop code
|
|
// NDS Data type 21 is the stream data type some stress.
|
|
//----------------------------------------------------------------------------
|
|
#include "nds.hxx"
|
|
|
|
|
|
|
|
|
|
LPBYTE
|
|
CopyNDSSynId1ToNDS1(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
LPASN1_TYPE_1 lpASN1_1 = (LPASN1_TYPE_1) lpByte;
|
|
|
|
lpASN1_1->DNString =
|
|
(LPWSTR)AllocADsStr(
|
|
lpNdsObject->NdsValue.value_1.DNString
|
|
);
|
|
|
|
lpByte = (LPBYTE ) lpASN1_1 + sizeof(ASN1_TYPE_1);
|
|
|
|
return(lpByte);
|
|
|
|
}
|
|
|
|
LPBYTE
|
|
CopyNDSSynId2ToNDS2(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
LPASN1_TYPE_2 lpASN1_2 = (LPASN1_TYPE_2) lpByte;
|
|
|
|
lpASN1_2->CaseExactString =
|
|
(LPWSTR)AllocADsStr(
|
|
lpNdsObject->NdsValue.value_2.CaseExactString
|
|
);
|
|
|
|
lpByte = (LPBYTE ) lpASN1_2 + sizeof(ASN1_TYPE_2);
|
|
|
|
return(lpByte);
|
|
}
|
|
|
|
|
|
|
|
LPBYTE
|
|
CopyNDSSynId3ToNDS3(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
LPASN1_TYPE_3 lpASN1_3 = (LPASN1_TYPE_3) lpByte;
|
|
|
|
lpASN1_3->CaseIgnoreString =
|
|
(LPWSTR)AllocADsStr(
|
|
lpNdsObject->NdsValue.value_3.CaseIgnoreString
|
|
);
|
|
|
|
lpByte = (LPBYTE ) lpASN1_3 + sizeof(ASN1_TYPE_3);
|
|
|
|
return(lpByte);
|
|
}
|
|
|
|
LPBYTE
|
|
CopyNDSSynId4ToNDS4(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
LPASN1_TYPE_4 lpASN1_4 = (LPASN1_TYPE_4) lpByte;
|
|
|
|
lpASN1_4->PrintableString =
|
|
(LPWSTR)AllocADsStr(
|
|
lpNdsObject->NdsValue.value_4.PrintableString
|
|
);
|
|
|
|
lpByte = (LPBYTE ) lpASN1_4 + sizeof(ASN1_TYPE_4);
|
|
|
|
return(lpByte);
|
|
|
|
}
|
|
|
|
|
|
LPBYTE
|
|
CopyNDSSynId5ToNDS5(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
LPASN1_TYPE_5 lpASN1_5 = (LPASN1_TYPE_5) lpByte;
|
|
|
|
lpASN1_5->NumericString =
|
|
(LPWSTR)AllocADsStr(
|
|
lpNdsObject->NdsValue.value_5.NumericString
|
|
);
|
|
|
|
lpByte = (LPBYTE ) lpASN1_5 + sizeof(ASN1_TYPE_5);
|
|
|
|
return(lpByte);
|
|
}
|
|
|
|
LPBYTE
|
|
CopyNDSSynId6ToNDS6(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
LPASN1_TYPE_6 lpASN1_6 = (LPASN1_TYPE_6) lpByte;
|
|
LPASN1_TYPE_6 lpASN1_6_Start = (LPASN1_TYPE_6) lpByte;
|
|
LPNDS_ASN1_TYPE_6 lpNdsTempASN1_6 = NULL;
|
|
|
|
lpNdsTempASN1_6 = &(lpNdsObject->NdsValue.value_6);
|
|
lpASN1_6->String =
|
|
(LPWSTR)AllocADsStr(
|
|
lpNdsTempASN1_6->String
|
|
);
|
|
|
|
if (!lpASN1_6->String)
|
|
return NULL;
|
|
|
|
while ( lpNdsTempASN1_6->Next)
|
|
{
|
|
|
|
//lpASN1_6->Next = (LPASN1_TYPE_6)((LPBYTE)lpASN1_6 +sizeof(ASN1_TYPE_6));
|
|
lpASN1_6->Next = (LPASN1_TYPE_6)AllocADsMem(sizeof(ASN1_TYPE_6));
|
|
|
|
if (!lpASN1_6->Next)
|
|
return NULL;
|
|
|
|
lpASN1_6 = (LPASN1_TYPE_6)lpASN1_6->Next;
|
|
|
|
lpNdsTempASN1_6 = lpNdsTempASN1_6->Next;
|
|
|
|
|
|
lpASN1_6->String =
|
|
(LPWSTR)AllocADsStr(
|
|
lpNdsTempASN1_6->String
|
|
);
|
|
|
|
if (!lpASN1_6->String)
|
|
return NULL;
|
|
|
|
}
|
|
lpASN1_6->Next = NULL;
|
|
|
|
lpByte = (LPBYTE ) lpASN1_6_Start + sizeof(ASN1_TYPE_6);
|
|
|
|
return(lpByte);
|
|
}
|
|
|
|
|
|
LPBYTE
|
|
CopyNDSSynId7ToNDS7(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
LPASN1_TYPE_8 lpASN1_8 = (LPASN1_TYPE_8) lpByte;
|
|
|
|
|
|
lpASN1_8->Integer = lpNdsObject->NdsValue.value_8.Integer;
|
|
|
|
lpByte = (LPBYTE ) lpASN1_8 + sizeof(ASN1_TYPE_8);
|
|
|
|
return(lpByte);
|
|
}
|
|
|
|
|
|
LPBYTE
|
|
CopyNDSSynId8ToNDS8(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
|
|
{
|
|
LPASN1_TYPE_8 lpASN1_8 = (LPASN1_TYPE_8) lpByte;
|
|
|
|
|
|
lpASN1_8->Integer = lpNdsObject->NdsValue.value_8.Integer;
|
|
|
|
lpByte = (LPBYTE ) lpASN1_8 + sizeof(ASN1_TYPE_8);
|
|
|
|
return(lpByte);
|
|
}
|
|
|
|
|
|
LPBYTE
|
|
CopyNDSSynId9ToNDS9(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
LPASN1_TYPE_9 lpASN1_9 = (LPASN1_TYPE_9) lpByte;
|
|
LPBYTE pBuffer = NULL;
|
|
|
|
|
|
lpASN1_9->Length = lpNdsObject->NdsValue.value_9.Length;
|
|
|
|
pBuffer = (LPBYTE)AllocADsMem(lpASN1_9->Length);
|
|
|
|
if (!pBuffer)
|
|
return NULL;
|
|
|
|
memcpy(
|
|
pBuffer,
|
|
lpNdsObject->NdsValue.value_9.OctetString,
|
|
lpASN1_9->Length
|
|
);
|
|
|
|
lpASN1_9->OctetString = pBuffer;
|
|
|
|
lpByte = (LPBYTE ) lpASN1_9 + sizeof(ASN1_TYPE_9);
|
|
|
|
return(lpByte);
|
|
}
|
|
|
|
LPBYTE
|
|
CopyNDSSynId10ToNDS10(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
LPASN1_TYPE_10 lpASN1_10 = (LPASN1_TYPE_10) lpByte;
|
|
|
|
lpASN1_10->TelephoneNumber =
|
|
AllocADsStr(
|
|
lpNdsObject->NdsValue.value_10.TelephoneNumber
|
|
);
|
|
|
|
lpByte = (LPBYTE ) lpASN1_10 + sizeof(ASN1_TYPE_10);
|
|
|
|
return(lpByte);
|
|
}
|
|
|
|
LPBYTE
|
|
CopyNDSSynId11ToNDS11(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
LPBYTE pBuffer = NULL;
|
|
LPASN1_TYPE_11 lpASN1_11 = (LPASN1_TYPE_11) lpByte;
|
|
|
|
lpASN1_11->NumberOfBits = lpNdsObject->NdsValue.value_11.NumberOfBits;
|
|
if (lpASN1_11->NumberOfBits) {
|
|
pBuffer = (LPBYTE)AllocADsMem(lpASN1_11->NumberOfBits);
|
|
|
|
if (!pBuffer)
|
|
return NULL;
|
|
|
|
memcpy(
|
|
pBuffer,
|
|
lpNdsObject->NdsValue.value_11.Parameters,
|
|
lpASN1_11->NumberOfBits
|
|
);
|
|
lpASN1_11->Parameters = pBuffer;
|
|
}
|
|
else {
|
|
lpASN1_11->Parameters = NULL;
|
|
}
|
|
|
|
lpASN1_11->TelephoneNumber =
|
|
(LPWSTR)AllocADsStr(
|
|
lpNdsObject->NdsValue.value_11.TelephoneNumber
|
|
);
|
|
|
|
if (!lpASN1_11->TelephoneNumber)
|
|
return NULL;
|
|
|
|
lpByte = (LPBYTE ) lpASN1_11 + sizeof(ASN1_TYPE_11);
|
|
|
|
return(lpByte);
|
|
}
|
|
|
|
LPBYTE
|
|
CopyNDSSynId12ToNDS12(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
LPASN1_TYPE_12 lpASN1_12 = (LPASN1_TYPE_12) lpByte;
|
|
LPBYTE pBuffer = NULL;
|
|
|
|
lpASN1_12->AddressType = lpNdsObject->NdsValue.value_12.AddressType;
|
|
|
|
lpASN1_12->AddressLength = lpNdsObject->NdsValue.value_12.AddressLength;
|
|
|
|
pBuffer = (LPBYTE)AllocADsMem(lpASN1_12->AddressLength);
|
|
|
|
if (!pBuffer)
|
|
return NULL;
|
|
|
|
memcpy(
|
|
pBuffer,
|
|
lpNdsObject->NdsValue.value_12.Address,
|
|
lpASN1_12->AddressLength
|
|
);
|
|
|
|
lpASN1_12->Address = pBuffer;
|
|
|
|
lpByte = (LPBYTE ) lpASN1_12 + sizeof(ASN1_TYPE_12);
|
|
|
|
return(lpByte);
|
|
}
|
|
|
|
LPBYTE
|
|
CopyNDSSynId13ToNDS13(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
LPASN1_TYPE_13 lpASN1_13 = (LPASN1_TYPE_13) lpByte;
|
|
LPASN1_TYPE_13 lpASN1_13_Start = (LPASN1_TYPE_13) lpByte;
|
|
LPNDS_ASN1_TYPE_13 lpNdsTempASN1_13 = NULL;
|
|
HRESULT hr = S_OK;
|
|
|
|
lpNdsTempASN1_13 = &(lpNdsObject->NdsValue.value_13);
|
|
hr = CopyOctetString(lpNdsTempASN1_13->Length,
|
|
lpNdsTempASN1_13->Data,
|
|
&lpASN1_13->Length,
|
|
&lpASN1_13->Data);
|
|
BAIL_ON_FAILURE(hr);
|
|
|
|
while ( lpNdsTempASN1_13->Next)
|
|
{
|
|
|
|
//lpASN1_13->Next = (LPASN1_TYPE_13)((LPBYTE)lpASN1_13 +sizeof(ASN1_TYPE_13));
|
|
lpASN1_13->Next = (LPASN1_TYPE_13)AllocADsMem(sizeof(ASN1_TYPE_13));
|
|
|
|
lpASN1_13 = (LPASN1_TYPE_13)lpASN1_13->Next;
|
|
|
|
lpNdsTempASN1_13 = lpNdsTempASN1_13->Next;
|
|
|
|
hr = CopyOctetString(lpNdsTempASN1_13->Length,
|
|
lpNdsTempASN1_13->Data,
|
|
&lpASN1_13->Length,
|
|
&lpASN1_13->Data);
|
|
BAIL_ON_FAILURE(hr);
|
|
}
|
|
lpASN1_13->Next = NULL;
|
|
|
|
lpByte = (LPBYTE ) lpASN1_13_Start + sizeof(ASN1_TYPE_13);
|
|
|
|
error:
|
|
return(lpByte);
|
|
}
|
|
|
|
|
|
LPBYTE
|
|
CopyNDSSynId14ToNDS14(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
LPASN1_TYPE_14 lpASN1_14 = (LPASN1_TYPE_14) lpByte;
|
|
|
|
lpASN1_14->Type = lpNdsObject->NdsValue.value_14.Type;
|
|
|
|
lpASN1_14->Address =
|
|
(LPWSTR)AllocADsStr(
|
|
lpNdsObject->NdsValue.value_14.Address
|
|
);
|
|
|
|
lpByte = (LPBYTE ) lpASN1_14 + sizeof(ASN1_TYPE_14);
|
|
|
|
return(lpByte);
|
|
}
|
|
|
|
|
|
LPBYTE
|
|
CopyNDSSynId15ToNDS15(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
LPASN1_TYPE_15 lpASN1_15 = (LPASN1_TYPE_15) lpByte;
|
|
|
|
lpASN1_15->Type = lpNdsObject->NdsValue.value_15.Type;
|
|
|
|
lpASN1_15->VolumeName =
|
|
(LPWSTR)AllocADsStr(
|
|
lpNdsObject->NdsValue.value_15.VolumeName
|
|
);
|
|
|
|
lpASN1_15->Path =
|
|
(LPWSTR)AllocADsStr(
|
|
lpNdsObject->NdsValue.value_15.Path
|
|
);
|
|
|
|
lpByte = (LPBYTE ) lpASN1_15 + sizeof(ASN1_TYPE_15);
|
|
|
|
return(lpByte);
|
|
}
|
|
|
|
LPBYTE
|
|
CopyNDSSynId16ToNDS16(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
LPASN1_TYPE_16 lpASN1_16 = (LPASN1_TYPE_16) lpByte;
|
|
|
|
lpASN1_16->ReplicaType =
|
|
lpNdsObject->NdsValue.value_16.ReplicaType;
|
|
lpASN1_16->ReplicaNumber =
|
|
lpNdsObject->NdsValue.value_16.ReplicaNumber;
|
|
lpASN1_16->Count =
|
|
lpNdsObject->NdsValue.value_16.Count;
|
|
|
|
lpASN1_16->ReplicaAddressHint->AddressType =
|
|
lpNdsObject->NdsValue.value_16.ReplicaAddressHints->AddressType;
|
|
|
|
CopyOctetString(lpNdsObject->NdsValue.value_16.ReplicaAddressHints->AddressLength,
|
|
lpNdsObject->NdsValue.value_16.ReplicaAddressHints->Address,
|
|
&lpASN1_16->ReplicaAddressHint->AddressLength,
|
|
&lpASN1_16->ReplicaAddressHint->Address);
|
|
lpByte = (LPBYTE ) lpASN1_16 + sizeof(ASN1_TYPE_16);
|
|
return(lpByte);
|
|
}
|
|
|
|
|
|
LPBYTE
|
|
CopyNDSSynId17ToNDS17(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
LPASN1_TYPE_17 lpASN1_17 = (LPASN1_TYPE_17) lpByte;
|
|
|
|
|
|
lpASN1_17->ProtectedAttrName =
|
|
(LPWSTR)AllocADsStr(
|
|
lpNdsObject->NdsValue.value_17.ProtectedAttrName
|
|
);
|
|
|
|
lpASN1_17->SubjectName =
|
|
(LPWSTR)AllocADsStr(
|
|
lpNdsObject->NdsValue.value_17.SubjectName
|
|
);
|
|
|
|
lpASN1_17->Privileges = lpNdsObject->NdsValue.value_17.Privileges;
|
|
|
|
lpByte = (LPBYTE ) lpASN1_17 + sizeof(ASN1_TYPE_17);
|
|
|
|
return(lpByte);
|
|
}
|
|
|
|
|
|
LPBYTE
|
|
CopyNDSSynId18ToNDS18(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
LPASN1_TYPE_18 lpASN1_18 = (LPASN1_TYPE_18) lpByte;
|
|
|
|
|
|
lpASN1_18->PostalAddress[0] =
|
|
(LPWSTR)AllocADsStr(
|
|
lpNdsObject->NdsValue.value_18.PostalAddress[0]
|
|
);
|
|
lpASN1_18->PostalAddress[1] =
|
|
(LPWSTR)AllocADsStr(
|
|
lpNdsObject->NdsValue.value_18.PostalAddress[1]
|
|
);
|
|
|
|
lpASN1_18->PostalAddress[2] =
|
|
(LPWSTR)AllocADsStr(
|
|
lpNdsObject->NdsValue.value_18.PostalAddress[2]
|
|
);
|
|
|
|
lpASN1_18->PostalAddress[3] =
|
|
(LPWSTR)AllocADsStr(
|
|
lpNdsObject->NdsValue.value_18.PostalAddress[3]
|
|
);
|
|
|
|
lpASN1_18->PostalAddress[4] =
|
|
(LPWSTR)AllocADsStr(
|
|
lpNdsObject->NdsValue.value_18.PostalAddress[4]
|
|
);
|
|
|
|
lpASN1_18->PostalAddress[5] =
|
|
(LPWSTR)AllocADsStr(
|
|
lpNdsObject->NdsValue.value_18.PostalAddress[5]
|
|
);
|
|
|
|
lpByte = (LPBYTE ) lpASN1_18 + sizeof(ASN1_TYPE_18);
|
|
|
|
|
|
return(lpByte);
|
|
}
|
|
|
|
LPBYTE
|
|
CopyNDSSynId19ToNDS19(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
|
|
LPASN1_TYPE_19 lpASN1_19 = (LPASN1_TYPE_19) lpByte;
|
|
|
|
lpNdsObject->NdsType = NDS_SYNTAX_ID_19;
|
|
|
|
lpASN1_19->WholeSeconds
|
|
= lpNdsObject->NdsValue.value_19.WholeSeconds;
|
|
|
|
|
|
lpASN1_19->EventID
|
|
= lpNdsObject->NdsValue.value_19.EventID;
|
|
|
|
lpByte = (LPBYTE ) lpASN1_19 + sizeof(ASN1_TYPE_19);
|
|
|
|
return(lpByte);
|
|
}
|
|
|
|
LPBYTE
|
|
CopyNDSSynId20ToNDS20(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
LPASN1_TYPE_20 lpASN1_20 = (LPASN1_TYPE_20) lpByte;
|
|
|
|
lpASN1_20->ClassName =
|
|
(LPWSTR)AllocADsStr(
|
|
lpNdsObject->NdsValue.value_20.ClassName
|
|
);
|
|
|
|
lpByte = (LPBYTE ) lpASN1_20 + sizeof(ASN1_TYPE_20);
|
|
|
|
return(lpByte);
|
|
}
|
|
|
|
|
|
LPBYTE
|
|
CopyNDSSynId21ToNDS21(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
LPASN1_TYPE_21 lpASN1_21 = (LPASN1_TYPE_21) lpByte;
|
|
|
|
LPBYTE pBuffer = NULL;
|
|
|
|
|
|
lpASN1_21->Length = lpNdsObject->NdsValue.value_21.Length;
|
|
|
|
if (lpASN1_21->Length) {
|
|
pBuffer = (LPBYTE)AllocADsMem(lpASN1_21->Length);
|
|
|
|
if (!pBuffer)
|
|
return NULL;
|
|
|
|
memcpy(
|
|
pBuffer,
|
|
lpNdsObject->NdsValue.value_21.Data,
|
|
lpASN1_21->Length
|
|
);
|
|
|
|
lpASN1_21->Data = pBuffer;
|
|
}
|
|
else {
|
|
lpASN1_21->Data = NULL;
|
|
}
|
|
|
|
lpByte = (LPBYTE ) lpASN1_21 + sizeof(ASN1_TYPE_21);
|
|
|
|
return(lpByte);
|
|
|
|
}
|
|
|
|
|
|
|
|
LPBYTE
|
|
CopyNDSSynId22ToNDS22(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
LPASN1_TYPE_22 lpASN1_22 = (LPASN1_TYPE_22) lpByte;
|
|
|
|
lpASN1_22->Counter = lpNdsObject->NdsValue.value_22.Counter;
|
|
|
|
lpByte = (LPBYTE ) lpASN1_22 + sizeof(ASN1_TYPE_22);
|
|
|
|
return(lpByte);
|
|
}
|
|
|
|
LPBYTE
|
|
CopyNDSSynId23ToNDS23(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
LPASN1_TYPE_23 lpASN1_23 = (LPASN1_TYPE_23) lpByte;
|
|
|
|
lpASN1_23->RemoteID = lpNdsObject->NdsValue.value_23.RemoteID;
|
|
|
|
lpASN1_23->ObjectName =
|
|
(LPWSTR)AllocADsStr(
|
|
lpNdsObject->NdsValue.value_23.ObjectName
|
|
);
|
|
|
|
lpByte = (LPBYTE ) lpASN1_23 + sizeof(ASN1_TYPE_23);
|
|
|
|
return(lpByte);
|
|
}
|
|
|
|
LPBYTE
|
|
CopyNDSSynId24ToNDS24(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
|
|
)
|
|
{
|
|
LPASN1_TYPE_24 lpASN1_24 = (LPASN1_TYPE_24) lpByte;
|
|
|
|
lpASN1_24->Time = lpNdsObject->NdsValue.value_24.Time;
|
|
|
|
lpByte = (LPBYTE ) lpASN1_24 + sizeof(ASN1_TYPE_24);
|
|
|
|
return(lpByte);
|
|
}
|
|
|
|
|
|
|
|
LPBYTE
|
|
CopyNDSSynId25ToNDS25(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
|
|
{
|
|
LPASN1_TYPE_25 lpASN1_25 = (LPASN1_TYPE_25) lpByte;
|
|
|
|
lpASN1_25->ObjectName =
|
|
(LPWSTR)AllocADsStr(
|
|
lpNdsObject->NdsValue.value_25.ObjectName
|
|
);
|
|
|
|
lpASN1_25->Level = lpNdsObject->NdsValue.value_25.Level;
|
|
|
|
lpASN1_25->Interval = lpNdsObject->NdsValue.value_25.Interval;
|
|
|
|
lpByte = (LPBYTE ) lpASN1_25 + sizeof(ASN1_TYPE_25);
|
|
|
|
return(lpByte);
|
|
}
|
|
|
|
|
|
LPBYTE
|
|
CopyNDSSynId26ToNDS26(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
LPASN1_TYPE_26 lpASN1_26 = (LPASN1_TYPE_26) lpByte;
|
|
|
|
|
|
lpASN1_26->ObjectName =
|
|
(LPWSTR)AllocADsStr(
|
|
lpNdsObject->NdsValue.value_26.ObjectName
|
|
);
|
|
|
|
lpASN1_26->Amount = lpNdsObject->NdsValue.value_26.Amount;
|
|
|
|
lpByte = (LPBYTE ) lpASN1_26 + sizeof(ASN1_TYPE_26);
|
|
|
|
return(lpByte);
|
|
}
|
|
|
|
|
|
LPBYTE
|
|
CopyNDSSynId27ToNDS27(
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
LPASN1_TYPE_27 lpASN1_27 = (LPASN1_TYPE_27) lpByte;
|
|
|
|
lpASN1_27->Interval = lpNdsObject->NdsValue.value_27.Interval;
|
|
|
|
lpByte = (LPBYTE ) lpASN1_27 + sizeof(ASN1_TYPE_27);
|
|
|
|
return(lpByte);
|
|
}
|
|
|
|
|
|
LPBYTE
|
|
CopyNDSSynIdToNDS(
|
|
DWORD dwSyntaxId,
|
|
LPBYTE lpByte,
|
|
PNDSOBJECT lpNdsObject
|
|
)
|
|
{
|
|
switch (dwSyntaxId) {
|
|
case 1:
|
|
lpByte = CopyNDSSynId1ToNDS1(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
case 2:
|
|
lpByte = CopyNDSSynId2ToNDS2(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
case 3:
|
|
lpByte = CopyNDSSynId3ToNDS3(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
case 4:
|
|
lpByte = CopyNDSSynId4ToNDS4(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
case 5:
|
|
lpByte = CopyNDSSynId5ToNDS5(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
case 6:
|
|
lpByte = CopyNDSSynId6ToNDS6(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
case 7:
|
|
lpByte = CopyNDSSynId7ToNDS7(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
case 8:
|
|
lpByte = CopyNDSSynId8ToNDS8(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
|
|
case 9:
|
|
lpByte = CopyNDSSynId9ToNDS9(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
case 10:
|
|
lpByte = CopyNDSSynId10ToNDS10(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
case 11:
|
|
lpByte = CopyNDSSynId11ToNDS11(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
case 12:
|
|
lpByte = CopyNDSSynId12ToNDS12(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
case 13:
|
|
lpByte = CopyNDSSynId13ToNDS13(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
case 14:
|
|
lpByte = CopyNDSSynId14ToNDS14(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
case 15:
|
|
lpByte = CopyNDSSynId15ToNDS15(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
case 16:
|
|
lpByte = CopyNDSSynId16ToNDS16(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
|
|
case 17:
|
|
lpByte = CopyNDSSynId17ToNDS17(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
case 18:
|
|
lpByte = CopyNDSSynId18ToNDS18(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
case 19:
|
|
lpByte = CopyNDSSynId19ToNDS19(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
case 20:
|
|
lpByte = CopyNDSSynId20ToNDS20(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
|
|
case 21:
|
|
lpByte = CopyNDSSynId21ToNDS21(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
case 22:
|
|
lpByte = CopyNDSSynId22ToNDS22(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
case 23:
|
|
lpByte = CopyNDSSynId23ToNDS23(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
case 24:
|
|
lpByte = CopyNDSSynId24ToNDS24(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
case 25:
|
|
lpByte = CopyNDSSynId25ToNDS25(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
case 26:
|
|
lpByte = CopyNDSSynId26ToNDS26(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
case 27:
|
|
lpByte = CopyNDSSynId27ToNDS27(
|
|
lpByte,
|
|
lpNdsObject
|
|
);
|
|
break;
|
|
|
|
|
|
default:
|
|
break;
|
|
|
|
}
|
|
|
|
return(lpByte);
|
|
}
|
|
|
|
|
|
HRESULT
|
|
MarshallNDSSynIdToNDS(
|
|
DWORD dwSyntaxId,
|
|
PNDSOBJECT pNdsObject,
|
|
DWORD dwNumValues,
|
|
LPBYTE lpValue
|
|
)
|
|
{
|
|
|
|
DWORD i = 0;
|
|
HRESULT hr = S_OK;
|
|
|
|
|
|
for (i = 0; i < dwNumValues; i++) {
|
|
|
|
lpValue = CopyNDSSynIdToNDS(
|
|
dwSyntaxId,
|
|
lpValue,
|
|
(pNdsObject + i)
|
|
);
|
|
|
|
if (!lpValue) {
|
|
hr = E_OUTOFMEMORY;
|
|
BAIL_ON_FAILURE(hr);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
error:
|
|
RRETURN(hr);
|
|
}
|