// IDBInfo.GetLiteralInfo internal DualCoTaskMem(UnsafeNativeMethods.IDBInfo dbInfo, int[] literals, out int literalCount, out IntPtr literalInfo, out OleDbHResult hr) : this() { int count = (null != literals) ? literals.Length : 0; hr = dbInfo.GetLiteralInfo(count, literals, out literalCount, out base.handle, out this.handle2); literalInfo = base.handle; }
internal DualCoTaskMem(UnsafeNativeMethods.IDBInfo dbInfo, int[] literals, out int literalCount, out IntPtr literalInfo, out OleDbHResult hr) : this() { int cLiterals = (literals != null) ? literals.Length : 0; Bid.Trace("<oledb.IDBInfo.GetLiteralInfo|API|OLEDB>\n"); hr = dbInfo.GetLiteralInfo(cLiterals, literals, out literalCount, out this.handle, out this.handle2); literalInfo = base.handle; Bid.Trace("<oledb.IDBInfo.GetLiteralInfo|API|OLEDB|RET> %08X{HRESULT}\n", hr); }
public void Dispose() { object o = this._unknown; this._unknown = null; this._value = null; if (o != null) { Marshal.ReleaseComObject(o); } }
public void Dispose() { object unknown = _unknown; _unknown = null !; _value = null !; if (null != unknown) { Marshal.ReleaseComObject(unknown); } }
public void Dispose() { object o = this._unknown; this._unknown = null; this._value = null; if (o != null) { Marshal.ReleaseComObject(o); } }
internal string GetLiteralInfo(int literal) { using (IDBInfoWrapper wrapper = IDBInfo()) { UnsafeNativeMethods.IDBInfo dbInfo = wrapper.Value; if (null == dbInfo) { return(null); } string literalValue = null; IntPtr literalInfo = ADP.PtrZero; int literalCount = 0; OleDbHResult hr; using (DualCoTaskMem handle = new DualCoTaskMem(dbInfo, new int[1] { literal }, out literalCount, out literalInfo, out hr)) { // All literals were either invalid or unsupported. The provider allocates memory for *prgLiteralInfo and sets the value of the fSupported element in all of the structures to FALSE. The consumer frees this memory when it no longer needs the information. if (OleDbHResult.DB_E_ERRORSOCCURRED != hr) { if ((1 == literalCount) && Marshal.ReadInt32(literalInfo, ODB.OffsetOf_tagDBLITERALINFO_it) == literal) { literalValue = Marshal.PtrToStringUni(Marshal.ReadIntPtr(literalInfo, 0)); } if (hr < 0) { // ignore infomsg ProcessResults(hr); } } else { SafeNativeMethods.Wrapper.ClearErrorInfo(); } } return(literalValue); } }
internal bool AddInfoKeywordsToTable(DataTable table, DataColumn keyword) { using (IDBInfoWrapper wrapper = IDBInfo()) { UnsafeNativeMethods.IDBInfo dbInfo = wrapper.Value; if (null == dbInfo) { return(false); } OleDbHResult hr; string keywords; Bid.Trace("<oledb.IDBInfo.GetKeywords|API|OLEDB> %d#\n", ObjectID); hr = dbInfo.GetKeywords(out keywords); Bid.Trace("<oledb.IDBInfo.GetKeywords|API|OLEDB|RET> %08X{HRESULT}\n", hr); if (hr < 0) // ignore infomsg { ProcessResults(hr); } if (null != keywords) { string[] values = keywords.Split(new char[1] { ',' }); for (int i = 0; i < values.Length; ++i) { DataRow row = table.NewRow(); row[keyword] = values[i]; table.Rows.Add(row); row.AcceptChanges(); } } return(true); } }
internal DataTable BuildInfoLiterals() { using (IDBInfoWrapper wrapper = IDBInfo()) { UnsafeNativeMethods.IDBInfo dbInfo = wrapper.Value; if (null == dbInfo) { return(null); } DataTable table = new DataTable("DbInfoLiterals"); table.Locale = CultureInfo.InvariantCulture; DataColumn literalName = new DataColumn("LiteralName", typeof(String)); DataColumn literalValue = new DataColumn("LiteralValue", typeof(String)); DataColumn invalidChars = new DataColumn("InvalidChars", typeof(String)); DataColumn invalidStart = new DataColumn("InvalidStartingChars", typeof(String)); DataColumn literal = new DataColumn("Literal", typeof(Int32)); DataColumn maxlen = new DataColumn("Maxlen", typeof(Int32)); table.Columns.Add(literalName); table.Columns.Add(literalValue); table.Columns.Add(invalidChars); table.Columns.Add(invalidStart); table.Columns.Add(literal); table.Columns.Add(maxlen); OleDbHResult hr; int literalCount = 0; IntPtr literalInfo = ADP.PtrZero; using (DualCoTaskMem handle = new DualCoTaskMem(dbInfo, null, out literalCount, out literalInfo, out hr)) { // All literals were either invalid or unsupported. The provider allocates memory for *prgLiteralInfo and sets the value of the fSupported element in all of the structures to FALSE. The consumer frees this memory when it no longer needs the information. if (OleDbHResult.DB_E_ERRORSOCCURRED != hr) { long offset = literalInfo.ToInt64(); tagDBLITERALINFO tag = new tagDBLITERALINFO(); for (int i = 0; i < literalCount; ++i, offset += ODB.SizeOf_tagDBLITERALINFO) { Marshal.PtrToStructure((IntPtr)offset, tag); DataRow row = table.NewRow(); row[literalName] = ((OleDbLiteral)tag.it).ToString(); row[literalValue] = tag.pwszLiteralValue; row[invalidChars] = tag.pwszInvalidChars; row[invalidStart] = tag.pwszInvalidStartingChars; row[literal] = tag.it; row[maxlen] = tag.cchMaxLen; table.Rows.Add(row); row.AcceptChanges(); } if (hr < 0) { // ignore infomsg ProcessResults(hr); } } else { SafeNativeMethods.Wrapper.ClearErrorInfo(); } } return(table); } }
internal IDBInfoWrapper(object unknown) { _unknown = unknown; _value = (unknown as UnsafeNativeMethods.IDBInfo) !; }
public void Dispose() { object unknown = _unknown; _unknown = null; _value = null; if (null != unknown) { Marshal.ReleaseComObject(unknown); } }
internal IDBInfoWrapper(object unknown) { _unknown = unknown; _value = (unknown as UnsafeNativeMethods.IDBInfo); }
internal IDBInfoWrapper(object unknown) { this._unknown = unknown; this._value = unknown as UnsafeNativeMethods.IDBInfo; }
internal IDBInfoWrapper(object unknown) { this._unknown = unknown; this._value = unknown as UnsafeNativeMethods.IDBInfo; }