Добрый день.
Есть pipe server:
typedef struct
{
OVERLAPPED oOverlap;
HANDLE hPipeInst;
TCHAR chRequest[BUFSIZE];
DWORD cbRead;
TCHAR chReply[BUFSIZE];
DWORD cbToWrite;
DWORD dwState;
BOOL fPendingIO;
} PIPEINST, *LPPIPEINST;
PIPEINST Pipe[INSTANCES];
int _tmain(VOID)
{
fSuccess = ReadFile(
Pipe[i].hPipeInst,
Pipe[i].chRequest,
BUFSIZE*sizeof(TCHAR),
&Pipe[i].cbRead,
&Pipe[i].oOverlap);
}
Всё работает нормально, т.е. процесс ждёт поступления данных успешно читает их и идёт дальше.
Я хочу массив Pipe[INSTANCES] объявить внутри блока _tmain.
int _tmain(VOID)
{
PIPEINST Pipe[INSTANCES];
fSuccess = ReadFile(
Pipe[i].hPipeInst,
Pipe[i].chRequest,
BUFSIZE*sizeof(TCHAR),
&Pipe[i].cbRead,
&Pipe[i].oOverlap);
printf("%d \n",GetLastError());
}
Но функция возвращает ошибку 87 - "Параметр задан не верно". Не устраивает её почему-то именно последний параметр &Pipe[i].oOverlap. Если его задать NULL - то работает.
Почему нельзя массив Pipe объявить внутри блока main ? В чём разница для функции ReadFile ?