Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Data / System / Data / OleDb / PropertyIDSet.cs / 1305376 / PropertyIDSet.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
// [....]
//-----------------------------------------------------------------------------
using System;
using System.Data;
using System.Data.Common;
using System.Data.ProviderBase;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;
using System.Security;
using System.Security.Permissions;
namespace System.Data.OleDb {
internal sealed class PropertyIDSet : DbBuffer {
static private readonly int PropertyIDSetAndValueSize = ODB.SizeOf_tagDBPROPIDSET + ADP.PtrSize; // sizeof(tagDBPROPIDSET) + sizeof(int)
static private readonly int PropertyIDSetSize = ODB.SizeOf_tagDBPROPIDSET;
private int _count;
// the PropertyID is stored at the end of the tagDBPROPIDSET structure
// this way only a single memory allocation is required instead of two
internal PropertyIDSet(Guid propertySet, int propertyID) : base(PropertyIDSetAndValueSize) {
_count = 1;
// rgPropertyIDs references where that PropertyID is stored
// depending on IntPtr.Size, tagDBPROPIDSET is either 24 or 28 bytes long
IntPtr ptr = ADP.IntPtrOffset(base.handle, PropertyIDSetSize);
Marshal.WriteIntPtr(base.handle, 0, ptr);
Marshal.WriteInt32(base.handle, ADP.PtrSize, /*propertyid count*/1);
ptr = ADP.IntPtrOffset(base.handle, ODB.OffsetOf_tagDBPROPIDSET_PropertySet);
Marshal.StructureToPtr(propertySet, ptr, false/*deleteold*/);
// write the propertyID at the same offset
Marshal.WriteInt32(base.handle, PropertyIDSetSize, propertyID);
}
// no propertyIDs, just the propertyset guids
internal PropertyIDSet(Guid[] propertySets) : base(PropertyIDSetSize * propertySets.Length) {
_count = propertySets.Length;
for(int i = 0; i < propertySets.Length; ++i) {
IntPtr ptr = ADP.IntPtrOffset(base.handle, (i * PropertyIDSetSize) + ODB.OffsetOf_tagDBPROPIDSET_PropertySet);
Marshal.StructureToPtr(propertySets[i], ptr, false/*deleteold*/);
}
}
internal int Count {
get {
return _count;
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SourceFileBuildProvider.cs
- CodeCatchClauseCollection.cs
- FormDesigner.cs
- KeyGesture.cs
- ISAPIWorkerRequest.cs
- MemberRestriction.cs
- WebHttpBindingElement.cs
- AuthenticationException.cs
- IgnoreSectionHandler.cs
- SemanticResultKey.cs
- XsltLibrary.cs
- CommandBinding.cs
- TimeZoneNotFoundException.cs
- ResourceIDHelper.cs
- DeclarationUpdate.cs
- PersistStreamTypeWrapper.cs
- AddressingVersion.cs
- ControlEvent.cs
- safePerfProviderHandle.cs
- ApplicationId.cs
- ExpandSegmentCollection.cs
- DivideByZeroException.cs
- RegistryPermission.cs
- Utils.cs
- EntityDataSourceValidationException.cs
- QilLoop.cs
- QilXmlReader.cs
- RbTree.cs
- EventMappingSettingsCollection.cs
- Rect3D.cs
- TemplateNameScope.cs
- ButtonRenderer.cs
- EtwProvider.cs
- Int16Storage.cs
- EmptyEnumerator.cs
- XmlILModule.cs
- _LazyAsyncResult.cs
- ScrollEventArgs.cs
- ParallelEnumerable.cs
- EnumType.cs
- Menu.cs
- WindowsToolbar.cs
- TypedElement.cs
- SqlDataSourceEnumerator.cs
- GcSettings.cs
- TemplateBaseAction.cs
- CodeVariableReferenceExpression.cs
- TouchFrameEventArgs.cs
- BuildManager.cs
- XmlWrappingWriter.cs
- ListItemCollection.cs
- HttpContextServiceHost.cs
- StringUtil.cs
- IISMapPath.cs
- OperationResponse.cs
- RichTextBoxConstants.cs
- SoapEnumAttribute.cs
- KerberosTicketHashIdentifierClause.cs
- DataGridColumnCollection.cs
- GroupItemAutomationPeer.cs
- BufferBuilder.cs
- IgnoreDataMemberAttribute.cs
- KernelTypeValidation.cs
- SerializationObjectManager.cs
- Int32CAMarshaler.cs
- WindowAutomationPeer.cs
- RTLAwareMessageBox.cs
- BrushConverter.cs
- TypeUtils.cs
- DecimalSumAggregationOperator.cs
- _ShellExpression.cs
- EntityDataSourceState.cs
- LoadedOrUnloadedOperation.cs
- TableLayoutColumnStyleCollection.cs
- IntegrationExceptionEventArgs.cs
- StreamDocument.cs
- EntityTemplateUserControl.cs
- XslCompiledTransform.cs
- tooltip.cs
- FormsAuthenticationCredentials.cs
- PageBreakRecord.cs
- EntityDataReader.cs
- TypeSystemProvider.cs
- GenerateHelper.cs
- CompilationUtil.cs
- WindowsComboBox.cs
- IntSecurity.cs
- DesigntimeLicenseContext.cs
- RightNameExpirationInfoPair.cs
- SamlNameIdentifierClaimResource.cs
- PropertyDescriptorComparer.cs
- RegisteredExpandoAttribute.cs
- OutgoingWebRequestContext.cs
- DesignerActionVerbList.cs
- AutomationPatternInfo.cs
- DBCommand.cs
- CustomError.cs
- DecoderNLS.cs
- GridViewRow.cs
- XmlSchemaResource.cs