MalwareSourceCode/MSIL/Virus/Win32/E/Virus.Win32.Expiro.w-69bb73081eac86b8cf86f45e33515d0095855636967076e2b593d7a30cd80a07/Microsoft/InfoCards/DeleteCardRequest.cs
2022-08-18 06:28:56 -05:00

92 lines
2.7 KiB
C#

// Decompiled with JetBrains decompiler
// Type: Microsoft.InfoCards.DeleteCardRequest
// Assembly: infocard, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// MVID: 516D8B44-4448-4D2C-8B8E-FFBB3FFE472B
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Virus.Win32.Expiro.w-69bb73081eac86b8cf86f45e33515d0095855636967076e2b593d7a30cd80a07.exe
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
namespace Microsoft.InfoCards
{
internal class DeleteCardRequest : UIAgentRequest
{
private Uri m_cardId;
public DeleteCardRequest(
IntPtr rpcHandle,
Stream inArgs,
Stream outArgs,
ClientUIRequest parent)
: base(rpcHandle, inArgs, outArgs, parent)
{
}
protected override void OnInitializeAsSystem() => base.OnInitializeAsSystem();
protected override void OnMarshalInArgs() => this.m_cardId = Utility.DeserializeUri((BinaryReader) new InfoCardBinaryReader(this.InArgs, Encoding.Unicode));
protected override void OnProcess()
{
StoreConnection connection = StoreConnection.GetConnection();
try
{
connection.BeginTransaction();
try
{
DataRow singleRow = connection.GetSingleRow(QueryDetails.FullRow, new QueryParameter("ix_globalid", new object[1]
{
(object) GlobalId.DeriveFrom(this.m_cardId.ToString())
}));
if (singleRow != null)
{
byte[] dataField = singleRow.GetDataField();
try
{
using (MemoryStream memoryStream = new MemoryStream(dataField))
{
string name = new InfoCard((Stream) memoryStream).Name;
}
}
finally
{
connection.Delete(singleRow);
Array.Clear((Array) dataField, 0, dataField.Length);
}
}
ICollection collection = (ICollection) connection.Query(QueryDetails.Identifiers, new List<QueryParameter>()
{
new QueryParameter("ix_parentid", new object[1]
{
(object) GlobalId.DeriveFrom(this.m_cardId.ToString())
})
}.ToArray());
if (collection != null && collection.Count > 0)
{
foreach (DataRow row in (IEnumerable) collection)
connection.Delete(row);
}
connection.CommitTransaction();
AuditLog.AuditCardDeletion();
}
catch
{
connection.RollbackTransaction();
throw;
}
}
finally
{
connection.Close();
}
}
protected override void OnMarshalOutArgs()
{
}
}
}