public unsafe HRESULT Stat(STATSTG *pstatstg, STATFLAG grfStatFlag) { if (pstatstg == null) { return(HRESULT.E_POINTER); } *pstatstg = new STATSTG { cbSize = (ulong)_dataStream.Length, type = STGTY.STREAM, // Default read/write access is STGM_READ, which == 0 grfMode = _dataStream.CanWrite ? _dataStream.CanRead ? STGM.READWRITE : STGM.WRITE : STGM.Default }; if (grfStatFlag == STATFLAG.DEFAULT) { // Caller wants a name pstatstg->AllocName(_dataStream is FileStream fs ? fs.Name : _dataStream.ToString()); } return(HRESULT.S_OK); }
public void Stat(out ComTypes.STATSTG pstatstg, STATFLAG grfStatFlag) { pstatstg = new ComTypes.STATSTG(); pstatstg.type = (int)STGTY.Stream; pstatstg.cbSize = this.stream.Length; pstatstg.grfLocksSupported = (int)LOCKTYPE.Exclusive; }
public void Stat(out STATSTG pstatstg, STATFLAG grfStatFlag) { pstatstg = new STATSTG { cbSize = (ulong)_dataStream.Length, type = STGTY.STREAM, // Default read/write access is READ, which == 0 grfMode = _dataStream.CanWrite ? _dataStream.CanRead ? STGM.READWRITE : STGM.WRITE : STGM.Default }; if (grfStatFlag == STATFLAG.DEFAULT) { // Caller wants a name pstatstg.AllocName(_dataStream is FileStream fs ? fs.Name : _dataStream.ToString()); } }
public void Stat(ref STATSTG pstatstg, STATFLAG grfStatFlag) { pstatstg = new STATSTG(); pstatstg.type = STGTY.STGTY_STREAM; pstatstg.cbSize = UnderlyingStream.Length; pstatstg.grfMode = 0; if (UnderlyingStream.CanRead && UnderlyingStream.CanWrite) { pstatstg.grfMode |= STGM.STGM_READWRITE; } else if (UnderlyingStream.CanRead) { pstatstg.grfMode |= STGM.STGM_READ; } else if (UnderlyingStream.CanWrite) { pstatstg.grfMode |= STGM.STGM_WRITE; } else { throw new ObjectDisposedException(null); } }
void Stat(out STATSTG pstatstg, [In] STATFLAG grfStatFlag);
internal static System.Runtime.InteropServices.ComTypes.STATSTG GetStatistics(this IStorage storage, STATFLAG statflag) { System.Runtime.InteropServices.ComTypes.STATSTG statstg = default(System.Runtime.InteropServices.ComTypes.STATSTG); uint grfStatFlag = (uint)statflag; storage.Stat(out statstg, grfStatFlag); return(statstg); }