Всем привет! Не могу создать поток средствами ntdll. Мой код в аттаче, что я не так делаю? _736257124__CreateThread.txt
Тут лежит pdf Неббета, в нем есть пример создания процесса и потока, может это тебе пригодится http://www.volynkin.ru/references.htm
Я по Неббету писал, не выходит, в его примере CsrClientCallServer возвращает STATUS_INVALID_HANDLE, хотя все хендлы я передаю правильно. Хочу разобраться сначала с созданием потока, потом переходить к процессу. В моей процедуре создания потока все апи возвращают STATUS_SUCCESS, но контрольный MessageBox не срабатывает. Почему?
Еще наблюдается необьяснимый эффект, если перед моей процедурой запуска треда выполнить этот код (подключение к базе в котой лежат все NTSTATUSы) Код (Text): NTStatusInit proc uses edi esi ebx LOCAL buffer1[MAX_PATH]:byte LOCAL buffer2[MAX_PATH]:byte LOCAL hFile :dword LOCAL temp :dword invoke GetTempPath,sizeof buffer1,addr buffer1 invoke GetTempFileName,addr buffer1,addr szPrefix,0,addr szMdbName invoke CreateMutex,0,0,addr szPrefix mov hMutext,eax invoke GetLastError .if eax!=ERROR_ALREADY_EXISTS invoke CreateFile,addr szMdbName,GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0 .if eax!=-1 mov hFile,eax lea edi,Table mov ebx,sizeof_Table xor eax,eax mov temp,eax .repeat invoke WriteFile,hFile,edi,ebx,addr temp,0 sub ebx,temp add edi,temp .until !ebx invoke CloseHandle,hFile .endif .endif invoke ODBCConnect,0,addr szMdbName invoke SQLAllocHandle,SQL_HANDLE_STMT,hConn,addr hStmtNTStatus .if ax==SQL_SUCCESS || ax==SQL_SUCCESS_WITH_INFO invoke SQLPrepare,hStmtNTStatus,addr szSQl_SelectNTStatus,SQL_NTS .if ax==SQL_SUCCESS || ax==SQL_SUCCESS_WITH_INFO invoke SQLBindParameter,hStmtNTStatus,1,SQL_PARAM_INPUT,SQL_C_LONG, SQL_INTEGER,0,0,addr dwNTStatus,0,addr dwStrLen invoke SQLBindCol,hStmtNTStatus,1,SQL_C_CHAR,addr szNTStatus,sizeof szNTStatus,addr dwStrLen .endif .endif ret NTStatusInit endp то поток запускается и MessageBox срабатывает, как так получается не пойму?