In C, you declare a struct (an aggregate data type) like this:
Code:
struct StructName {
int aVar;
int anotherVar;
};
And when you delcare a variable of that type, you say:
Code:
struct StructName stName; // or whatever you want to call it
Note that you need to use the keyword struct when declaring a struct variable.
C has a facility for creating synonyms for types, called a typedef:
Code:
typedef int AnInt;
AnInt i; // i is really an int
So you can typedef a struct like this:
Code:
typedef struct StructName {
int aVar;
int anotherVar;
} StructName;
// Now we can declare variables of this struct type like this:
StructName stName;
The only advantage is that we don't have to use the struct keyword anymore.
In the typedef you can make the typedef name the same as the struct name as I did above, but some people would rather make them different, perhaps by adding an underscore as they have done in your code.
static is a keyword that, when used globally (outside a function), makes the variable invisible to other code files (by leaving it out of the symbol table of the object file). Otherwise it would be possible for another code file to access it. That's all the keyword is doing in your case.
drvSSD1926Obj is one of those global variables.