Notes

1) The  cmarshaldll folder  contains all the C source files and a project 
   to generate the cmarshaldll.dll. This dll in common with dlls in
   general, must be in the search path of the runtime system. You can 
   be extend the search path from the control panel. Alternatively the dll 
   can be placed in a system directory containing system dlls thereby 
   ensuring that it is in the search path of the runtime system.

2)  The C# source files with calls to the cmarshaldll.dll are all in the 
    c#source folder.

3) The c#callingcmarshaldll folder contains sample console projects folders. 
   They all follow the same naming convention. For example the  enumstringcs 
   project folder has a just the one source file, enumstring.cs. This in turn 
   calls the C function enumstring.c 
   