Mail Archives: cygwin-developers/1999/04/27/22:28:18
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!!
- Raw text -