Re: Using TLSAlloc to read data into a DLL
On Dec 31, 12:18 pm, "Igor Tandetnik" <itandet...@mvps.org> wrote:
"Sanjay" <sanjay.gangadh...@gmail.com> wrote in message
news:98123adf-deae-4300-ac94-e51386c97a95@i29g2000prf.googlegroups.com
Thanks for your response. I was a bit unclear in my earlier message,
which may or may not affect your answer. The DLL I am building is
multi-threaded. I want to be able to read in the data during the
DLL_PROCESS_ATTACH, as you indicate (when the DLL is first loaded). I
then want this data to be available to other threads of the DLL, which
may be called at various times. I thought that you would need to use
TlsAlloc, etc. to be able to do this - that global variables are not
passed between threads. Is this correct?
This is incorrect. All threads have access to global variables. Just do
it, you don't need anything special.
--
With best wishes,
Igor Tandetnik
With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going to
land, and it could be dangerous sitting under them as they fly
overhead. -- RFC 1925
How would I go about defining a global variable for this simple
example? (I want "x" to be the global variable):
#define MAX_LENGTH 100
BOOL WINAPI DllMain (HANDLE hInst, ULONG ul_reason_for_call, LPVOID
lpReserved)
{
static double *x=NULL;
FILE *in;
char out[MAX_LENGTH];
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
x = malloc(MAX_LENGTH);
in = fopen("Test.txt", "rt")
fgets(out, MAX_LENGTH, in);
x = strtod(out,NULL);
close (in);
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
int __declspec(dllexport) APIENTRY Test(Data *y)
{
static double *x, *y;
y = x*x
return 0;
}
This is just a very simple example, in which I want to read the value
of x from a file, but I only want to read it once, when the DLL is
first loaded. I then want to "pass" this value to the code for
analysis (i.e. calculate x squared). I do not think that I should be
using STATIC variable types, because this doesn't seem to work. Any
help would be greatly appreciated. Thanks for all of your help thus
far!