À©µµ¿ì ÇÁ·Î±×·¡¹Ö ÀÚ·á |
---|
Á¦¸ñ | Service Á¦¾î 1998/07/20 (21:24) |
À̸§ | ±èÈ¿¿ø |
¹øÈ£ | 38 |
Á¶È¸ | 473 |
º»¹® |
°üÁö¶ó´Â ¼ºñ½º ½ÃÀÛ, ÁßÁö, ÀϽà ÁßÁö, °è¼ÓµîÀÇ Á¦¾î ÀÛ¾÷À» ÇÒ ¼ö ÀÖ´Ù. SCP ÇÁ·Î±×·¥À» °³·«ÀûÀ¸·Î »ìÆì º¸¸é, Á¢±Ù ¿É¼ÇÀ» SC_MANAGER_CONNECT·Î ÁÖ°í OpenSCManager·Î È£Ãâ OpenService È£Ãâ --> SERVICE_START, SERVICE_STOP, SERVICE_PAUSE --> SERVICE_CONTINUE, SERVICE_USERDEFINED_CONTROL --> SERVICE_INTERROGATE ¸¦ Á¶ÇÕÇؼ »ç¿ë StartService¸¦ È£ÃâÇÏ¿© ¼ºñ½º ½ÃÀÛ BOOL StartService( SC_HANDLE hService, DWORD dwNumServiceArgs, LPCTSTR *lpServiceArgVectors); StartService°¡ ½ÇÆÐÇÏ´Â ÁÖµÈ ÀÌÀ¯ : OpenSerivce°¡ ¹ÝȯÇÑ ÇÚµéÀÌ Á¦´ë·Î µÈ Á¢±Ù ¿É¼ÇÀ» °¡Áö°í ÀÖÁö ¾Ê´Ù. : ¼ºñ½º ½ÇÇà ÈÀÏÀÌ ÁöÁ¤µÈ µð·ºÅ丮¿¡ Á¸ÀçÇÏÁö ¾Ê´Â´Ù. : ¼ºñ½º°¡ ÀÌ¹Ì ½ÇÇàÁßÀ̰ųª »èÁ¦ Ç¥½Ã°¡ µÇ¾î ÀÖ´Â °æ¿ì : SCM DB°¡ Àá°Ü ÀÖ´Ù. : ¼ºñ½º°¡ Á¸ÀçÇÏÁö ¾Ê°Å³ª, Á¾¼ÓÀûÀÌ´Ù. : »ç¿ëÀÚ °èÁ¤ÀÌ À߸øµÇ¾î´Ù. : ¼ºñ½º°¡ ½ÃÀ۵ǰí ÀûÀýÇÑ ½Ã°£ÀÌ Áö³ªµµ ÀÀ´äÇÏÁö ¾Ê´Â´Ù. ¼ºñ½º°¡ ½ÇÇàÁßÀÎ °æ¿ì¿¡´Â ControlService¸¦ ÀÌ¿ëÇÏ¿© Á¦¾î BOOL ControlService( SC_HANDLE dwControl, DWORD dwControl, LPSERVICE_STATUS lpServiceStatus); --> dwControl : SERVIVE_CONTROL_STOP : SERVICE_CONTROL_PAUSE, SERVICE_CONTROL_CONTINUE, : SERVICE_CONTROL_INTERROGATE : SERVICE_CONTROL_SHUTDOWN --> ControlService´Â ½ÇÆÐ : (½Ã½ºÅÛ¸¸ÀÌ ÀÌ Äڵ带 ¼ºñ½º Çڵ鷯¿¡ º¸³¾ ¼ö ÀÖ´Ù.) --> lpService Status : SERVICE_STATUS Struct ControlService°¡ ½ÇÆÐÇÏ´Â °æ¿ì : OpenService°¡ ¹ÝȯÇÑ ÇÚµéÀÌ Á¦´ë·Î µÈ Á¢±Ù ¿É¼ÇÀ» °¡Áö°í ÀÖÁö ¾Ê´Ù. : ´Ù¸¥ ¼ºñ½º°¡ ÀÇÁ¸ÇÏ°í ÀÖ¾î¼ ¸ØÃâ ¼ö ¾ø´Ù. : Á¦¾î Äڵ尡 ÀûÀýÄ¡ ¸øÇÏ´Ù. : ¼ºñ½º°¡ SERVICE_STOPPED, SERVICE_START_PENDING, SERVICE_STOP_PENDING : ÁßÀÌ¶ó¼ ¼ºñ½º¿¡ Á¦¾îÄڵ带 º¸³¾ ¼ö ¾ø´Ù. : ¼ºñ½º°¡ ½ÇÇàÁßÀÌ ¾Æ´Ï´Ù. : Á¦¾î ¿ä±¸°¡ µé¾î¿Ô´Âµ¥ ÀûÀýÇÑ ½Ã°£ÀÌ È帥 µÚ¿¡ ÀÀ´äÀÌ ¾ø´Ù. SCP´Â ÀϹÝÀûÀ¸·Î ¼ºñ½º¸¦ ´Ý´Â ¹æ¹ýÀ» Á¦°øÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î »ç¿ëÀÚ´Â ¼ºñ½º Á¦¾îÆÇ¿¡ ÀÖ´Â Stop¹öÆ°À» ´©¸£¸é SCM¿¡°Ô ¼±ÅÃµÈ ¼ºñ½º°¡ ÁßÁöµÉ °ÍÀÓÀ» ¾Ë·ÁÁØ´Ù. SCMÀº À̸¦ ¼ºñ½º¿¡ ¾Ë¸®°í ¼ºñ½º´Â dwCurrentState¸â¹ö¸¦ SERVICE_STOP_PENDINGÀ¸·Î ¼³Á¤ÇÔÀ¸·Î½á ÀÀ´äÇÑ´Ù. ÇÏÁö¸¸ ¼ºñ½º´Â ÁߴܵÇÁö ¾ÊÀ¸¸ç ÀÌ·± ÀÌÀ¯·Î Á¦¾îÆÇÀº ¼ºñ½º°¡ ÁߴܵǾú´Ù´Â °ÍÀ» ÀÎÅÍÆäÀ̽º°Ô ¹Ý¿µÇÒ ¼ö ¾ø°Ô µÈ´Ù. ½Ã½ºÅÛÀº ¼ºñ½º »óÅ°¡ º¯°æµÇ¾ú´Ù´Â °ÍÀ» ÀÀ¿ëÇÁ·Î±×·¥¿¡°Ô ¾Ë¸± ¹æ¹ýÀ» Á¦°øÇÏÁö ¾Ê´Â´Ù. µû¶ó¼ SCP´Â ÁÖ±âÀûÀ¸·Î ¼ºñ½º »óÅ°¡ º¯Çß´ÂÁö pollingÇÏ°í ÀÖ¾î¾ß ÇÑ´Ù. WaitForServiceToReachState ÇÔ¼ö´Â ¼ºñ½º Æú¸µÀ» ÀûÀýÈ÷ ´Ù·ç´Â ¹æ¹ýÀ» º¸¿©ÁØ´Ù. Æú¸µÀº CPU¸¦ ¸¹ÀÌ Á¡À¯ÇÏÁö¸¸, ´Ù¸¥ ¼±ÅÂÀÇ ¿©Áö°¡ ¾ø´Ù. ÇÏÁö¸¸, SERVICE_STATUS Struct°¡ dwWaitHint ¸â¹ö¸¦ °¡Áö°í Àִµ¥, ¼ºñ½º°¡ SetServiceStatus¸¦ È£ÃâÇÒ ¶§ ÀÌ ¸â¹ö´Â Á¦¾î Äڵ带 º¸³½ ÇÁ·Î±×·¥ÀÌ ¸î ¹Ð¸®Ãʵ¿¾È ±â´Ù·Á¾ß ÇÏ´ÂÁö¸¦ ³ªÅ¸³»±â ¶§¹®¿¡ ±×´ÙÁö ¹®Á¦°¡ ½É°¢ÇÏÁø ¾Ê´Ù. SCP´Â ¶ÇÇÑ ¼ºñ½º¿¡¼ ¹øȯµÈ checkpoint°¡ Ç×»ó Áõ°¡ÇÏ´ÂÁöµµ °Ë»çÇØ¾ß ÇÑ´Ù. ¸¸¾à¿¡ ¼ºñ½º°¡ ÀÌÀü°ú °°°Å³ª ÀÛÀº °ªÀ» ¹ÝȯÇϸé SCP´Â ¼ºñ½º°¡ ½ÇÆÐÇß´Ù°í °¡Á¤ÇØ¾ß ÇÑ´Ù. ÀÌ ºÎºÐÀº ¼ºñ½º ±¸Á¶°¡ ¾à°£ ºÒÆíÇÏ°Ô µÇ¾î ÀÖ¾î °³¼±ÀÇ ¿©Áö°¡ ÀÖ´Ù. |