delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2002/09/03/07:52:22

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Date: Tue, 3 Sep 2002 13:51:35 +0200
From: Corinna Vinschen <corinna-cygwin AT cygwin DOT com>
To: cygwin AT cygwin DOT com
Subject: Re: A Simple Real World Benchmark for cygwin
Message-ID: <20020903135135.Z12899@cygbert.vinschen.de>
Reply-To: cygwin AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
References: <20020902155542 DOT GC14051 AT redhat DOT com> <CHEDKHJJDLOCCOFLMGEAOEHMCLAA DOT dvasaru AT broadpark DOT no> <20020902220234 DOT GA22844 AT redhat DOT com> <20020903102756 DOT V12899 AT cygbert DOT vinschen DOT de> <1031045914 DOT 3d74831ad243d AT mail DOT broadpark DOT no>
Mime-Version: 1.0
In-Reply-To: <1031045914.3d74831ad243d@mail.broadpark.no>
User-Agent: Mutt/1.3.22.1i

On Tue, Sep 03, 2002 at 11:38:34AM +0200, dvasaru AT broadpark DOT no wrote:
> Quoting Corinna Vinschen <corinna-cygwin AT cygwin DOT com>:
> 
> > Uhm... it should have nothing to do with NTFS vs. other FS.  The shortcut
> > symlinks are used on all FS.
> 
> That's what I thought to begin with, but cygwin cunningly uses Extended Attributes where available,  bypassing the check_shortcut and the whole COM world altogether on NTFS.

Yeah, that's right, of course.

> > The question is if we can drop CoUninitialize() completely.  If the call
> > to CoUninitialize() is dropped, it should not matter to call CoInitialize()
> > multiple times since it should only return a "The COM library is already
> > initialized on this thread" return code.  That shouldn't take that much
> > time.  The slowness results from the need to load DLLs and such stuff.
> 
> To quote from the MSDN:
> "To close the COM library gracefully, each successful call to CoInitialize or CoInitializeEx, including those that return S_FALSE, must be balanced by a corresponding call to CoUninitialize"
> 
> Another relevant quote:
> "Because there is no way to control the order in which in-process servers are loaded or unloaded, it is not safe to call CoInitialize, CoInitializeEx, or CoUninitialize from the DllMain function"

Yep, that's the problem.  And the reasoning for calling CoInit/CoUnint
always as pair here since there's no way to rely on that the application
will *not* call CoUnit somewhere in the middle of its processing.

> On the other hand, if the shortcut file format is known(?), one could maybe bypass the COM/ IShellXXXX interfaces completely  and read the link directly from the file.

That's ok.  The format is partly known, at least it should be enough
to read the info from Cygwin created shortcuts.  The creation itself
already uses plain WriteFile() calls.  However, the code in shortcut.c
was meant to read all shortcuts (see the

 #if TREAT_NATIVE_SHORTCUTS_AS_SYMLINKS

part of the code.  Since we are confident that treating natively created
shortcuts as symlinks is a fault, we could drop that requirement and
just use ReadFile() for that.  This would obviously speed up Cygwin
when reading shortcuts.

Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Developer                                mailto:cygwin AT cygwin DOT com
Red Hat, Inc.

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019