Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / Data / System / Data / OleDb / PropertyIDSet.cs / 1 / 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.
//------------------------------------------------------------------------------
//
// 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
- MarshalByValueComponent.cs
- SqlWebEventProvider.cs
- HttpsHostedTransportConfiguration.cs
- EdgeProfileValidation.cs
- WsdlInspector.cs
- RenderingBiasValidation.cs
- HttpCacheVary.cs
- ToolStripDropDownItem.cs
- FrameSecurityDescriptor.cs
- ConstraintManager.cs
- DbConnectionPoolIdentity.cs
- SeekableReadStream.cs
- DatagridviewDisplayedBandsData.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- TextContainerChangeEventArgs.cs
- AttributeData.cs
- LocalizableAttribute.cs
- OdbcConnectionStringbuilder.cs
- basecomparevalidator.cs
- StringStorage.cs
- OrderPreservingMergeHelper.cs
- ConstNode.cs
- LinqDataSourceEditData.cs
- RequestNavigateEventArgs.cs
- SpeechSynthesizer.cs
- PostBackOptions.cs
- MouseButtonEventArgs.cs
- MenuCommand.cs
- smtppermission.cs
- ping.cs
- DrawingCollection.cs
- ComponentResourceKey.cs
- AsyncPostBackErrorEventArgs.cs
- SvcMapFileSerializer.cs
- UrlAuthFailureHandler.cs
- Expressions.cs
- Soap.cs
- CompoundFileStreamReference.cs
- WindowsHyperlink.cs
- LoginDesignerUtil.cs
- PeerNodeTraceRecord.cs
- BooleanFunctions.cs
- HttpServerProtocol.cs
- Hex.cs
- ServiceParser.cs
- URL.cs
- ListViewHitTestInfo.cs
- QuaternionAnimation.cs
- XmlWriterTraceListener.cs
- StreamGeometry.cs
- _HelperAsyncResults.cs
- OperationResponse.cs
- AssemblyCache.cs
- RegexCapture.cs
- FindCriteriaCD1.cs
- StylusCollection.cs
- RawStylusActions.cs
- SqlExpressionNullability.cs
- x509store.cs
- XmlSchemaSimpleTypeUnion.cs
- FieldToken.cs
- ChangeNode.cs
- ContextDataSource.cs
- XMLDiffLoader.cs
- MappedMetaModel.cs
- BinaryKeyIdentifierClause.cs
- StyleSheetRefUrlEditor.cs
- PersonalizationAdministration.cs
- TextSchema.cs
- PermissionRequestEvidence.cs
- ComponentResourceKey.cs
- NonSerializedAttribute.cs
- ColorTranslator.cs
- FlowNode.cs
- SHA256.cs
- ExpressionLexer.cs
- DesignerCapabilities.cs
- DataGridState.cs
- SqlCachedBuffer.cs
- ArgumentNullException.cs
- AddressHeaderCollectionElement.cs
- DBParameter.cs
- Button.cs
- DefaultBinder.cs
- ResourcePool.cs
- ZipFileInfo.cs
- PublisherIdentityPermission.cs
- TemplateKeyConverter.cs
- ControllableStoryboardAction.cs
- XmlSerializerNamespaces.cs
- Opcode.cs
- ListItemsCollectionEditor.cs
- DefaultObjectMappingItemCollection.cs
- ConfigXmlText.cs
- PeerDefaultCustomResolverClient.cs
- ExpandCollapsePattern.cs
- WebServicesInteroperability.cs
- ServiceContractAttribute.cs
- HttpListenerException.cs
- DocumentViewerBaseAutomationPeer.cs