DLL内の関数からCreateThread APIでスレッドを起動するプログラムを
書いているのですが、グローバル変数に保存したはずの値の一部が
消えてしまいます。

まず、以下のような構造体を定義し、グローバル変数としてこの
構造体のインスタンスを1つ用意しました。

// パラメータ
struct TEST_PARAM
{
  const char *aaa;
  const char *bbb;
  int ccc;
  const char *ddd;
  const char *eee;
  int fff;
  int ggg;
  const char *hhh;
  const char *iii;
};

// パラメータ
TEST_PARAM *g_pTestParam = new TEST_PARAM();