internal void GetNames() { this._lob.AssertConnectionIsOpen(); short num5 = this.Connection.EnvironmentHandle.IsUnicode ? ((short) 2) : ((short) 1); ushort num = (ushort) (30 * num5); int offset = num; ushort num3 = (ushort) (0xff * num5); NativeBuffer scratchBuffer = this.Connection.GetScratchBuffer(num + num3); bool success = false; RuntimeHelpers.PrepareConstrainedRegions(); try { scratchBuffer.DangerousAddRef(ref success); int rc = TracedNativeMethods.OCILobFileGetName(this.Connection.EnvironmentHandle, this.ErrorHandle, this.Descriptor, scratchBuffer.DangerousGetDataPtr(), ref num, scratchBuffer.DangerousGetDataPtr(offset), ref num3); if (rc != 0) { this.Connection.CheckError(this.ErrorHandle, rc); } this._directoryAlias = this.Connection.GetString(scratchBuffer.ReadBytes(0, num)); this._fileName = this.Connection.GetString(scratchBuffer.ReadBytes(offset, num3)); } finally { if (success) { scratchBuffer.DangerousRelease(); } } }
internal void GetNames() { _lob.AssertConnectionIsOpen(); int charSize = (Connection.EnvironmentHandle.IsUnicode) ? 2 : 1; short directoryAliasLength = (short)(charSize * 30); short fileAliasLength = (short)(charSize * 255); NativeBuffer buffer = Connection.ScratchBuffer; Debug.Assert(buffer.Length > (directoryAliasLength + fileAliasLength), "connection's scratch buffer is too small"); HandleRef directoryAlias = buffer.Ptr; HandleRef fileAlias = buffer.PtrOffset(directoryAliasLength); int rc = TracedNativeMethods.OCILobFileGetName( Connection.EnvironmentHandle, ErrorHandle, Descriptor, directoryAlias, ref directoryAliasLength, fileAlias, ref fileAliasLength ); if (0 != rc) { Connection.CheckError(ErrorHandle, rc); } _directoryAlias = Connection.GetString((IntPtr)directoryAlias, directoryAliasLength, false); _fileName = Connection.GetString((IntPtr)fileAlias, fileAliasLength, false); GC.KeepAlive(buffer); }