This is the mail archive of the cygwin-developers@sourceware.cygnus.com mailing list for the Cygwin project. See the Cygwin home page for more information.
Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: cygwin1.dll startup and GDB




DJ Delorie wrote:
> 
> >       Either way, mapname will be NULL since NULL is being passed as the
> > first parameter to open_shared.
> 
> Not always.  When NULL is passed, we musn't call OpenFileMapping(),
> because it doesn't fail gracefully when passed NULL.
> 

Sorry, I meant in the specific case I had described later  where NULL
was passed.

> There are three cases this code handles:
> 
> * name==NULL - create a private shared memory area
> 
> * name!=NULL, area doesn't exist - create a public named area
> 
> * name!=NULL, area does exist - attach to existing public named area
> 
> > My understanding ( misunderstanding :) ) was that with OpenFileMapping()
> > a name for the shared memory was needed.  However, we are passing a NULL
> > pointer to it instead...
> 
> Not always.  Sometimes we pass a name.  When we pass a name, we try
> OpenFileMapping() to see if the area exists (was created by another
> process, for example).  If the area doesn't exist, we drop through and
> try creating it.  If we pass NULL, we will always be creating the area
> anyway, so skip the open and go right to the create.
> 

Again, I didn't mean the general case, i meant the specific indicated in
the code fragments.

> > Is OpenFileMappingA() different.  I only have a reference for
> > OpenFileMapping().
> 
> FooA() and FooW() are the ascii/wchar variants of Foo().  Windows
> macros normally hide them.

Thanks, I didn't know that!!