So the problem I was having was related to how I declared the pointer to the array pMyConfigArray. I had defined it as a pointer to a 2D array of T_MY_STRUCTS structs:

T_MY_STRUCT (*pMyConfigArray)[][2];

In fact what I required was an array of pointers to an array of structs:

T_MY_STRUCT (*pMyConfigArray[])[2] = {NULL, NULL};

This semantic difference uses a different declaration syntax, and must be defined.

This resource in the C Wikibook may prove useful to people in a similar situation. It lists various array/pointer constructs for reference:

int i; // integer variable 'i'
int *p; // pointer 'p' to an integer
int a[]; // array 'a' of integers
int f(); // function 'f' with return value of type integer
int **pp; // pointer 'pp' to a pointer to an integer
int (*pa)[]; // pointer 'pa' to an array of integer
int (*pf)(); // pointer 'pf' to a function with return value integer
int *ap[]; // array 'ap' of pointers to an integer
int *fp(); // function 'fp' which returns a pointer to an integer
int ***ppp; // pointer 'ppp' to a pointer to a pointer to an integer
int (**ppa)[]; // pointer 'ppa' to a pointer to an array of integers
int (**ppf)(); // pointer 'ppf' to a pointer to a function with return value of type integer
int *(*pap)[]; // pointer 'pap' to an array of pointers to an integer
int *(*pfp)(); // pointer 'pfp' to function with return value of type pointer to an integer
int **app[]; // array of pointers 'app' that point to pointers to integer values
int (*apa[])[];// array of pointers 'apa' to arrays of integers
int (*apf[])();// array of pointers 'apf' to functions with return values of type integer
int ***fpp(); // function 'fpp' which returns a pointer to a pointer to a pointer to an int
int (*fpa())[];// function 'fpa' with return value of a pointer to array of integers
int (*fpf())();// function 'fpf' with return value of a pointer to function which returns an integer

Email codedump link for Prototype to for updating pointer to 2D array with unknown dimensions