MinGW3.4.0での質問です。

cp.c
#include <windows.h>

int main(void) {
    PROCESS_INFORMATION ps;
    STARTUPINFO si;
    GetStartupInfo(&si);
    CreateProcess(NULL, TEXT("notepad.exe"), NULL, NULL, FALSE, 0, NULL, NULL, &si, &ps);
}
というコードを
gcc -DUNICODE cp.c -o cp
とコンパイルして実行するとアクセス違反で落ちます。STARTUPINFOA/Wの別が関わっているとは思うのですが、解決法が分かりません。
どなたか解決法をご存知でしたらご教示頂けないでしょうか。