NdisMCmMakeCallComplete

VOID

  NdisMCmMakeCallComplete(

    IN NDIS_STATUS  Status,

    IN NDIS_HANDLE  NdisVcHandle,

    IN NDIS_HANDLE  NdisPartyHandle  OPTIONAL,

    IN NDIS_HANDLE  CallMgrPartyContext  OPTIONAL,

    IN PCO_CALL_PARAMETERS  CallParameters

    );

NdisMCmMakeCallCompleteÇÔ¼ö´Â ³ª°¡´Â È£ÃâÀ» ¸¸µé±âÀ§ÇØ MCMµå¶óÀ̹ö°¡ ÀÌÀü¿¡ NDIS_STATUS_PENDINGÀ» ¸®ÅÏÇϴ°Ϳ¡´ëÇØ, Ŭ¶óÀ̾ðÆ®ÀÇ ÃÖÁ¾ »óŸ¦ ¸®ÅÏÇÑ´Ù.

¸Å°³º¯¼ö

Status
¿¬°áÀ» ¸¸µé±âÀ§ÇÑ ½ÃµµÀÇ ÃÖÁ¾ »óŸ¦ ÁöÁ¤ÇÑ´Ù. NDIS_STATUS_SUCCESSȤÀº NDIS_STATUS_PENDINGÀ» Á¦¿ÜÇÑ È£ÃâÀÚ ÀÇÁ¸NDIS_STATUS_XXX.

NdisVcHandle
À̰ÍÀº MCM¹Ì´ÏÆ÷Æ®°¡ ProtocolCoCreateVcÇÔ¼ö¿¡´ëÇÑ ÀÔ·Â ÆÄ¶ó¹ÌÅÍ·Î½á ¾òÀº ±×¸®°í ´õ ÃÖ±Ù¿¡, ProtocolCmMakeCallÇÔ¼ö¿¡°Ô ³Ñ°ÜÁø CallMgrVcContext·ÎºÎÅÍ ¾òÀº Ŭ¶óÀÌ¾ðÆ®°¡ »ý¼ºÇÑ VC¿¡´ëÇÑ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù.

NdisPartyHandle
Ŭ¶óÀÌ¾ðÆ® »ý¼º ¸ÖƼ Æ÷ÀÎÆ® VC¿¡´ëÇØ ÃÊ±â ÆÄÆ¼¿¡´ëÇÑ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù. ÀÌVC´Â MCM¹Ì´ÏÆ÷Æ®°¡ ProtocolCmMakeCallÇÔ¼ö¿¡´ëÇÑ ÀÔ·Â ÆÄ¶ó¹ÌÅÍ·Î½á ¾ò¾îÁø °ÍÀÌ´Ù. ¸¸¾à ÁÖ¾îÁø NdisVcHandleÀÌ Æ÷ÀÎÆ®-Æ÷ÀÎÆ®VC¸¦ ³ªÅ¸³½´Ù¸é, ÀÌ ÆÄ¶ó¹ÌÅÍ´Â NULLÀÌ´Ù.

CallMgrPartyContext
MCM¹Ì´ÏÆ÷Æ®°¡ ÆÄƼ´ç »óÅ Á¤º¸¸¦ À¯ÁöÇÒ È£ÃâÀÚ ÇÒ´ç »óÁÖ ÄÁÅýºÆ® ¿µ¿ª¿¡´ëÇÑ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù. ȤÀº ¸¸¾à NdisPartyHandleÀÌ NULLÀ̸é, ÀÌ ÆÄ¶ó¹ÌÅÍ´Â NULLÀÌ´Ù. ¸ÖƼÆ÷ÀÎÆ® VC¿¡´ëÇØ, NDIS´Â ¸ðµç ¼øÂ÷ÀûÀΠȣÃâ¿¡¼­ÀÇ ÀÌ MCMµå¶óÀ̹ö Áö¿ø CallManagerPartyContextÇÚµéÀ» ÀÌ ÆÄƼ¸¦ ÁÖ¸ñÇÏ´Â ProtocolCmXxxÇÔ¼ö¿¡°Ô ³Ñ±ä´Ù. ¸¸¾à Status°¡ NDIS_STATUS_SUCCESSÀÌ¿ÜÀÇ ´Ù¸¥°ÍÀ̶ó¸é, NDIS´Â ÀÌ ÆÄ¶ó¹ÌÅ͸¦ ¹«½ÃÇÑ´Ù.

CallParameters
¸¸¾à Status°¡ NDIS_STATUS_SUCCESSÀ̸é ÀÌ ¿¬°á¿¡´ëÇÑ ÄÝ ÆÄ¶ó¹ÌÅÍ ¼³Á¤À» ÁöÁ¤ÇÏ´ÂCO_CALL_PARAMETERSŸÀÔ ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍ.

ÁÖ¼®

MCMµå¶óÀ̹ö´Â ´ÜÁö ±× VC·Î µ¥ÀÌŸ Àü¼ÛÀ» ¸¸µé Áغñ°¡ µÆÀ»¶§¸¸ NDIS_STATUS_SUCCESS·Î NdisMCmMakeCallCompleteÇÔ¼ö¸¦ È£ÃâÇØ¾ß¸¸ ÇÑ´Ù. Áï, MCMµå¶óÀ̹ö´Â ÀÌ·¯ÇÑ ÄÝ ÆÄ¶ó¹ÌÅ͵鿡´ëÇÑ ´ÐÀÇ ¼³Á¤ VC¿¡´ëÇÑ ÄÝ ÆÄ¶ó¹ÌÅ͸¦ ¼³Á¤ÇϱâÀ§ÇØ ³×Æ®¿÷°ú Çù»óÇÑ´Ù. ±×¸®°í VCȰ¼ºÈ­¸¦ NDIS¿¡°Ô ¾Ë¸®±âÀ§ÇØ NdisMCmActivateVc¸¦ È£ÃâÇÑ´Ù.

MCMµå¶óÀ̹ö´Â ¸¸¾à ProtocolCmMakeCallÇÔ¼ö°¡ ÀÌÀü¿¡ ÁÖ¾îÁø NdisVcHandle¿¡´ëÇØ NDIS_STATUS_PENDINGÀ» ¸®ÅÏÇß´Ù¸é, NdisMCmMakeCallCompleteÇÔ¼ö¸¦ È£ÃâÇØ¾ß¸¸ ÇÑ´Ù. ³ª°¡´Â È£ÃâÀ» Áö¿¬Çϴ Ŭ¶óÀÌ¾ðÆ®´Â ¹Ì´ÏÆ÷Æ®°¡ NDIS_STATUS_SUCCESS·Î NdisMCmMakeCallCompleteÇÔ¼ö¸¦ È£ÃâÇÒ¶§±îÁö Àü¼ÛÀ» ¸¸µé±âÀ§ÇØ VC¸¦ »ç¿ëÇÒ¼ö ¾ø´Ù.

½ÉÁö¾î ½ÃµµµÈ ¿¬°áÀÌ ½ÇÆÐÇÏ´õ¶óµµ, NDIS¿Í Ŭ¶óÀÌ¾ðÆ®´Â MCMµå¶óÀ̹öÀÇ NdisMCmMakeCallComplete ÇÔ¼ö¿¡´ëÇÑ È£ÃâÀÌ ±× Ŭ¶óÀ̾ðÆ®ÀÇ ProtocolClMakeCallCompleteÇÔ¼ö¿¡´ëÇÑ È£ÃâÀ» ¾ß±âÇÒ¶§±îÁö »óŸ¦ À¯ÁöÇϱâÀ§ÇØ ÇÒ´çÇÑ ¸®¼Ò½ºµéÀ» ÇØÁ¦ ÇÒ ¼ö ¾ø´Ù. »ç½Ç, ±×·± ¿¬°áÀ» ¼³Á¤ÇϱâÀ§ÇÑ ½ÇÆÐÇÑ ½Ãµµ¿¡´ëÇÑ NdisMCmMakeCallCompleteÇÔ¼öÀÇ È£Ãâ¿¡´ëÇÑ ¹«½Ã´Â MCMµå¶óÀ̹ö¿¡¼­ÀÇ ¸Þ¸ð¸® ´©¼ö¸¦ ¾ß±âÇÑ´Ù.; ±×°ÍÀº ½ÇÆÐÇÑ ³ª°¡´Â È£Ãâ¿¡´ëÇØ »ý¼ºµÈ VC¸¦ ÇØÁ¦Çϴ°ÍÀ¸·ÎºÎÅÍ Å¬¶óÀÌ¾ðÆ®¸¦ ¿¹¹æÇÏ¿©, MCM¹Ì´ÏÆ÷Æ®ÀÇ ProtocolCoDeleteVcÇÔ¼ö°¡ ±× VC¿¡´ëÇØ ¹Ì´ÏÆ÷Æ®°¡ ÇÒ´çÇÑ ¸®¼Ò½ºµéÀ» ÇØÁ¦ÇϱâÀ§ÇØ È£ÃâµÇÁö ¾Ê´Â´Ù.

¸¸¾à MCMµå¶óÀ̹ö°¡ ¿¡·¯¸¦ ³Ñ±ä´Ù¸é, Status¿¡´ëÇØ NDIS_STATUS_FAILURE¿Í °°Àº°ÍÀº NdisMCmMakeCallCompleteÇÔ¼ö°¡ ÄÁÃß·²À» ¸®ÅÏÇÒ¶§, NdisPartyHandleÀÌ ¹«È¿ÇÏ´Ù°í ¿©°ÜÁ®¾ß¸¸ ÇÑ´Ù. ±× CMÀº NdisMCmMakeCallCompleteÇÔ¼ö°¡ ÄÁÃß·²À» ¸®ÅÏÇÑÈÄ ÁÖ¾îÁø ÆÄƼ¿¡´ëÇÑ »óŸ¦ À¯ÁöÇϱâÀ§ÇØ ÇÒ´çÇÑ ¸®¼Ò½ºµéÀ» Àç»ç¿ë(Àç »ç¿ëÀ» À§ÇØ Àç ÃʱâÈ­)ÇÒ¼ö ÀÖ´Ù. MCMµå¶óÀ̹öÀÇ ProtocolCoDeleteVcÇÔ¼ö´Â MCMµå¶óÀ̹ö°¡ ¿¡·¯ »óŸ¦ NdisMCmMakeCallCompleteÇÔ¼ö¿¡°Ô ³Ñ±æ¶§¸¶´Ù, ¹Ì´ÏÆ÷Æ®°¡ Ŭ¶óÀÌ¾ðÆ®°¡ »ý¼ºÇÑ VCÀÇ »óŸ¦ Æ®·¢Å·ÇϱâÀ§ÇØ ÇÒ´çÇÑ ¸®¼Ò½ºµéÀ» ÇØÁ¦ÇϱâÀ§ÇØ È£ÃâµÉ °ÍÀÌ´Ù.

Ŭ¶óÀÌ¾ðÆ®°¡ ÃʱâÈ­ÇÏ´Â ³ª°¡´Â È£ÃâÀÇ ¼³Á¤Áß¿¡, MCMµå¶óÀ̹ö´Â óÀ½¿¡ ProtocolCmMakeCallÇÔ¼ö¿¡°Ô ³Ñ°ÜÁö´Â Ŭ¶óÀÌ¾ðÆ® Á¦°ø ÄÝ ÆÄ¶ó¹ÌÅ͸¦ ¼öÁ¤ÇÒ¼ö ÀÖ´Ù. ¸¸¾à ±×·¸°Ô ÇÑ´Ù¸é, NdisMCmMakeCallCompleteÇÔ¼ö¸¦ È£ÃâÇÒ¶§, MCM¹Ì´ÏÆ÷Æ®´Â CallParametersÀÇ ¹öÆÛ¿¡ ±× ¼öÁ¤³»¿ëÀ» ³Ñ°Ü¾ß¸¸ ÇÑ´Ù. ¸¸¾à Ŭ¶óÀÌ¾ðÆ®°¡ ÀÌ·¯ÇÑ ¼öÁ¤µÈ ÄÝ ÆÄ¶ó¹ÌÅͰ¡ ¼ö¿ëµÉ¼ö ¾ø´Ù´Â°ÍÀ» ¾È´Ù¸é, MCMµå¶óÀ̹öÀÇ ProtocolCoDeleteVcÇÔ¼ö¿¡´ëÇÑ È£ÃâÀ» ¾ß±â½ÃŰ´Â È£Ãâ ÇØÁ¦¸¦ ÇÒ°ÍÀÌ´Ù.

ÅëÇÕ ÄÝ ¸Å´ÏÁö¸ÕÆ®¸¦ Á¦°øÇÏ´Â ¿¬°áÁöÇâ ¹Ì´ÏÆ÷Æ®¸¸ÀÌ NdisMCmMakeCallCompleteÇÔ¼ö¸¦ È£ÃâÇÒ¼ö ÀÖ´Ù. ½º½º·Î¸¦ NDIS¿¡°Ô ÇÁ·ÎÅäÄÚ·Î½á µî·ÏÇÏ´Â µ¶¸³ÀûÀÎ ¸Å´ÏÀú´Â ´ë½Å NdisCmMakeCallCompleteÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.

NdisMCmMakeCallCompleteÇÔ¼öÀÇ È£ÃâÀÚ´Â IRQL <= DISPATCH_LEVEL¿¡¼­ µ¿À۵ɼö ÀÖ´Ù.