السلام عليكم ورحمة الله ،
ارجو اني لا اكون ازعجكم بكثرة اسئلتي ،
جزاكم الله خيرا
،
انا احاول كتابة اداة بسيطة لتحميل درايفر كنت كاتبه بأستخدام ال ddk
هذا الجزء
invoke OpenSCManager,NULL, NULL,SC_MANAGER_ALL_ACCESS
mov hSCManager,eax
.if hSCManager ==0
invoke MessageBox,hWin,addr manager,addr cool,MB_OK
.else
invoke CreateService,hSCManager,addr serv,addr loadserv, SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ERROR_IGNORE,addr aPath, NULL, NULL, NULL, NULL, NULL
mov hService,eax
.if hService==0
invoke GetLastError
.if eax==ERROR_SERVICE_EXISTS
invoke MessageBox,hWin,addr exists,addr cool,MB_OK
invoke OpenService,hSCManager, addr serv, SERVICE_ALL_ACCESS;
.endif
.endif
mov hService,eax
.if hService==0
invoke MessageBox,hWin,addr creat,addr cool,MB_OK
.else
invoke StartService,hService,0,NULL
;mov hstart,eax
.if eax==0
invoke GetLastError
.if eax==ERROR_ACCESS_DENIED
invoke MessageBox ,hWin,CTXT("ERROR_ACCESS_DENIED"),addr titl,MB_OK
.elseif eax==ERROR_INVALID_HANDLE
invoke MessageBox ,hWin,CTXT("ERROR_INVALID_HANDLE"),addr titl,MB_OK
.elseif eax==ERROR_PATH_NOT_FOUND
invoke MessageBox ,hWin,CTXT("ERROR_PATH_NOT_FOUND"),addr titl,MB_OK
.elseif eax==ERROR_SERVICE_ALREADY_RUNNING
invoke MessageBox ,hWin,CTXT("ERROR_SERVICE_ALREADY_RUNNING"),addr titl,MB_OK
.elseif eax==ERROR_SERVICE_DATABASE_LOCKED
invoke MessageBox ,hWin,CTXT("ERROR_SERVICE_DATABASE_LOCKED"),addr titl,MB_OK
.elseif eax==ERROR_SERVICE_DEPENDENCY_DELETED
invoke MessageBox ,hWin,CTXT("ERROR_SERVICE_DEPENDENCY_DELETED"),addr titl,MB_OK
.elseif eax==ERROR_SERVICE_DEPENDENCY_FAIL
invoke MessageBox ,hWin,CTXT("ERROR_SERVICE_DEPENDENCY_FAIL"),addr titl,MB_OK
.elseif eax==ERROR_SERVICE_DISABLED
invoke MessageBox ,hWin,CTXT("ERROR_SERVICE_DISABLED"),addr titl,MB_OK
.elseif eax==ERROR_SERVICE_LOGON_FAILED
invoke MessageBox ,hWin,CTXT("ERROR_SERVICE_LOGON_FAILED"),addr titl,MB_OK
.elseif eax==ERROR_SERVICE_MARKED_FOR_DELETE
invoke MessageBox ,hWin,CTXT("ERROR_SERVICE_MARKED_FOR_DELETE"),addr titl,MB_OK
.elseif eax==ERROR_SERVICE_NO_THREAD
invoke MessageBox ,hWin,CTXT("ERROR_SERVICE_NO_THREAD"),addr titl,MB_OK
.elseif eax==ERROR_SERVICE_REQUEST_TIMEOUT
invoke MessageBox ,hWin,CTXT("ERROR_SERVICE_REQUEST_TIMEOUT"),addr titl,MB_OK
.else
invoke MessageBox ,hWin,CTXT("no thing "),addr titl,MB_OK
.endif
....
........
........
دالة StartService
تفشل ويرجع لي ال eax=0
وتظهر المسج بوكس الي انا واضعها للتأكد ،
لا ادري لماذا بقية الدوال تنجح وهذه الدالة تفشل ،
انا قلت اوكي استدعي دالة GetLastError لأعرف لماذا تفشل هذه الدالة
و وضعت مسج بوكس لأرى النتيجة ،
الغريب ان هذا الجزء هو الذي يتنفذ
.else
invoke MessageBox ,hWin,CTXT("no thing "),addr titl,MB_OK
.endifلا ادري ما السبب ؟؟
------