День добрый, Господа! Прошу Вашей помощи вот в каком вопросе: есть сервер под управлением WinNT Server 4.0 SP 6. К нему пишется программа для отслеживания, добавления и удаления назначенных заданий. Решил я начать со списка уже имеющихся заданий, почитал MSDN и придумал такой код: Код (Text): #include <vcl.h> #include <lm.h> #include <lmat.h> AT_ENUM *pBuffer,*pTemp; DWORD dwErrorCode,dwTotal,dwResume,dwReaded; NET_API_STATUS Result; dwResume=0; Result=NetScheduleJobEnum(0,(LPBYTE*)&pBuffer,MAX_PREFERRED_LENGTH, &dwTotal,&dwReaded,&dwResume); if(Result!= NERR_Success ) { dwErrorCode=GetLastError();///++++ Memo1->Lines->Add("Error code= "+IntToStr(dwErrorCode)); if(pBuffer!=NULL) NetApiBufferFree(pBuffer); return; } if(pBuffer==NULL) { Memo1->Font->Color=clRed; Memo1->Lines->Add("NULL value obtained"); return; } int i; for ( pTemp = pBuffer, i = 0; i < dwReaded; ++ i, ++ pTemp ) Memo1->Lines->Add((pTemp->Command)); //???? NetApiBufferFree(pBuffer); При анализе результата вызова функции получаю, что dwErrorcode=997(Overlapped I/O operation is in progress.) Вопрос номер раз: что значит эта ошибка и как ее придушить, если это возможно. При попытке плюнуть на ошибку и продолжить программу дальше в строке Memo1->Lines->Add((pTemp->Command)); получаю по роже Access Violation и т.д. Вопрос номер два: как вообще правильно работать с функцией NetScheduleJobEnum. Заранее всем спасибо за ответы. С уважением, pateykin
Это работает, впрочем также как и твой пример. hxxp://www.computerbooks.ru/books/Programming/04/index_web/winapi_faq/winapifaq39.html
Перекомпилировал, перекрутил, в результате от Access Violation и ошибки "overlapped I/O" избавился, но назначенные задания упорно не хотят распечатываться, хотя они есть. Может, проблема в том, что я этот код проверяю на Win2k Professional SP4? Хотя взял из MSDN пример на эту же тему(работа сназначенными заданиями), только реализованный не через API, а через СОМ, так этот пример работает. Прямо мистика какая-то