NdisCmRegisterAddressFamily

NDIS_STATUS 

    NdisCmRegisterAddressFamily(

      IN NDIS_HANDLE  NdisBindingHandle,

      IN PCO_ADDRESS_FAMILY  AddressFamily,

      IN PNDIS_CALL_MANAGER_CHARACTERISTICS  CmCharacteristics,

      IN UINT  SizeOfCmCharacteristics

      );

NdisCmRegisterAddressFamilyÇÔ¼ö´Â CMÁöÁ¤ ¾îµå·¹½º ÆÐ¹Ð¸®¿¡ ´ëÇÑ ¿¬°áÁöÇâ Åë½Å¿¡´ëÇÑ ÄÝ ¸Å´ÏÀú Áö¿ø ÇÔ¼öÀÇ ¼³Á¤À» µî·ÏÇÑ´Ù.

¸Å°³º¯¼ö

NdisBindingHandle
Ÿ°Ù ´ÐȤÀº È£ÃâÀÚ°¡ ¹ÙÀεùµÈ ´ÙÀ½ ÇÏÀ§ µå¶óÀ̹öÀÇ °¡»ó ¾Æ´äÅ͸¦ È®ÀÎÇÏ´Â NdisOpenAdapterÇÔ¼ö¿¡ÀÇÇØ ¸®ÅÏµÈ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù.

AddressFamily
ÀÌ ¹ÙÀεùÀ» Áö¿øÇÏ´ÂÄÝ ¸Å´ÏÀú¿Í ¾îµå·¹½º ÆÐ¹Ð¸®¸¦ È®ÀÎÇÏ´Â CO_ADDRESS_FAMILYŸÀÔ ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍ.

ÁÖ¾îÁø AddressFamily´Â °°Àº ¿¬°áÁöÇâ ´Ð ¹Ì´ÏÆ÷Æ®¿¡°Ô ¹ÙÀεùµÈ ¸ðµç Ŭ¶óÀ̾ðÆ®ÀÇ ProtocolCoAfRegisterNotifyÇÔ¼öÀÇ ÀÔ·Â ÆÄ¶ó¹ÌÅͰ¡ µÈ´Ù.

CmCharacteristics
È£ÃâÀÚ¿¡ÀÇÇØ ¼³Á¤µÇ´Â NDIS_CALL_MANAGER_CHARACTERISTICS±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍ. CmCharacteristics±¸Á¶Ã¼´Â ´ÙÀ½°ú °°ÀÌ Á¤ÀǵȴÙ.:

typedef struct _NDIS_CALL_MANAGER_CHARACTERISTICS {

    UCHAR  MajorVersion;

    UCHAR  MinorVersion;

    USHORT  Filler;           // ½Ã½ºÅÛ »ç¿ëÀ» À§ÇØ ¿¹¾à

    UINT    Reserved;         // ½Ã½ºÅÛ »ç¿ëÀ» À§ÇØ ¿¹¾à

    CO_CREATE_VC_HANDLER  CmCreateVcHandler;

    CO_DELETE_VC_HANDLER  CmDeleteVcHandler;

    CM_OPEN_AF_HANDLER  CmOpenAfHandler;

    CM_CLOSE_AF_HANDLER  CmCloseAfHandler;

    CM_REG_SAP_HANDLER  CmRegisterSapHandler;

    CM_DEREG_SAP_HANDLER  CmDeregisterSapHandler;

    CM_MAKE_CALL_HANDLER  CmMakeCallHandler;

    CM_CLOSE_CALL_HANDLER  CmCloseCallHandler;

    CM_INCOMING_CALL_COMPLETE_HANDLER

                             CmIncomingCallCompleteHandler;

    CM_ADD_PARTY_HANDLER  CmAddPartyHandler;

    CM_DROP_PARTY_HANDLER  CmDropPartyHandler;

    CM_ACTIVATE_VC_COMPLETE_HANDLER  CmActivateVcCompleteHandler;

    CM_DEACTIVATE_VC_COMPLETE_HANDLER

                             CmDeactivateVcCompleteHandler; 

    CM_MODIFY_CALL_QOS_HANDLER  CmModifyCallQoSHandler;

    CO_REQUEST_HANDLER  CmRequestHandler;

    CO_REQUEST_COMPLETE_HANDLER  CmRequestCompleteHandler;

} NDIS_CALL_MANAGER_CHARACTERISTICS, *PNDIS_CALL_MANAGER_CHARACTERISTICS;

ÇÁ·ÎÅäÄÝÀº ÀÌ ±¸Á¶Ã¼¸¦ ´ÙÀ½ÀÇ ¸â¹öµéÀ» ¼³Á¤ÇϱâÀü¿¡ 0À¸·Î ÃʱâÈ­ÇÑ´Ù.:

MajorVersion
ÄÝ ¸Å´ÏÀú°¡ »ç¿ëÇÏ´Â À̱¸Á¶Ã¼ÀÇ ¸ÞÀÌÀú ¹öÀüÀ» ÁöÁ¤ÇÑ´Ù. ÇöÀç °ªÀº 0x05ÀÌ´Ù.

MinorVersion
ÄÝ ¸Å´ÏÀú°¡ »ç¿ëÇÏ´Â À̱¸Á¶Ã¼ÀÇ ¸¶ÀÌ³Ê ¹öÀüÀ» ÁöÁ¤ÇÑ´Ù. ÇöÀçÀÇ °ªÀº 0x00ÀÌ´Ù.

Filler ¿Í Reserved
È£ÃâÀÚ´Â ÀÌ ¸â¹ö¸¦ ÀÌ ±¸Á¶Ã¼°¡ 0À¸·Î ÃʱâÈ­µÈÈÄ ¹«½ÃÇÑ´Ù.

CmCreateVcHandler
È£ÃâÀÚÀÇ ProtocolCoCreateVcÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÅ͸¦ ÁöÁ¤ÇÑ´Ù.

CmDeleteVcHandler
È£ÃâÀÚÀÇ ProtocolCoDeleteVcÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.

CmOpenAfHandler
È£ÃâÀÚÀÇ ProtocolCmOpenAf ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.

CmCloseAfHandler
È£ÃâÀÚÀÇ ProtocolCmCloseAf ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.

CmRegisterSapHandler
È£ÃâÀÚÀÇ ProtocolCoDeleteVcÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.

CmDeregisterSapHandler
È£ÃâÀÚÀÇ ProtocolCmDeregisterSap ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.

CmMakeCallHandler
È£ÃâÀÚÀÇ ProtocolCmMakeCall ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.

CmCloseCallHandler
È£ÃâÀÚÀÇ ProtocolCmCloseCall ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.

CmIncomingCallCompleteHandler
È£ÃâÀÚÀÇ ProtocolCmIncomingCallComplete ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.

CmAddPartyHandler
È£ÃâÀÚÀÇ ProtocolCmAddParty ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.

CmDropPartyHandler
È£ÃâÀÚÀÇ ProtocolCmDropParty ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.

CmActivateVcCompleteHandler
È£ÃâÀÚÀÇ ProtocolCmActivateVcComplete ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.

CmDeactivateVcCompleteHandler
È£ÃâÀÚÀÇ ProtocolCmDeactivateVcComplete ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.

CmModifyCallQoSHandler
È£ÃâÀÚÀÇ ProtocolCmModifyCallQoS ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.

CmRequestHandler
È£ÃâÀÚÀÇ ProtocolCoRequest ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.

CmRequestCompleteHandler
È£ÃâÀÚÀÇ ProtocolCoRequestComplete ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.

SizeOfCmCharacteristics
È£ÃâÀÚÀÇ CmCharacteristics ÇÔ¼öÀÇ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ÁöÁ¤ÇÑ´Ù.

¸®Åϰª

NdisCmRegisterAddressFamily ÇÔ¼ö´Â ´ÙÀ½Áß ¾î¶²°ÍÀ» ¸®ÅÏÇÒ¼ö ÀÖ´Ù.:

NDIS_STATUS_SUCCESS
ÇÁ·ÎÅäÄÝÀº NDIS·Î ÁÖ¾îÁø ¾îµå·¹½º ÆÐ¹Ð¸®¿¡´ëÇØ ÄÝ ¸Å´ÏÀú·Î½á µî·Ï ÇÒ¼ö ÀÖ´Ù. ±×·¡¼­ NDIS´Â ½º½º·Î °°Àº ´Ð µå¶óÀ̹ö¿Í ¹ÙÀεùÇÏ´Â ¸ðµç Å©¶óÀ̾ðÆ®ÀÇ ProtocolCoAfRegisterNotifyÇÔ¼ö¸¦ È£Ãâ ÇÒ°ÍÀÌ´Ù.

NDIS_STATUS_RESOURCES
¿äûµÈ ¿¬»êÀº NDIS°¡ ÃæºÐÇÑ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÒ¼ö ¾ø°Å³ª ÄÝ ¸Å´ÏÀú ȤÀº ÀÌ ¾îµå·¹½º ÆÐ¹Ð¸®¸¦ Æ®·¢ÇϱâÀ§ÇØ »ç¿ëÇÏ´Â »óŸ¦ ÃʱâÈ­ÇÒ¼ö ¾ø±â ¶§¹®¿¡ ½ÇÆÐÇÑ´Ù.

NDIS_STATUS_FAILURE
NDIS´Â ÀÌ È£ÃâÀ» ½ÇÆÐÇÑ´Ù. ´ÙÀ½ ÀÌÀ¯Áß Çϳª¿¡´ëÇØ¼­ °¡´ÉÇÏ´Ù.:

  • ÀÌ È£ÃâÀÚ´Â ¿¬°áÁöÇâ ÇÁ·ÎÅäÄÝ·Î½á µî·Ï µÇÁö ¾Ê¾Ò´Ù.
  • È£ÃâÀÚ°¡ ¹ÙÀεùµÈ ´Ð µå¶óÀ̹ö°¡ ¿¬°áÁöÇâ ¹Ì´ÏÆ÷Æ®·Î µî·ÏµÇÁö ¾Ê¾Ò´Ù.
  • ¶Ç´Ù¸¥ ÄÝ ¸Å´ÏÀú°¡ ÀÌ¹Ì ÀÌ ¾îµå·¹½º ÆÐ¹Ð¸®·Î µî·Ï µÆ´Ù.
  • È£ÃâÀÚ´Â CmCharacteristics¿¡ ¹ÂÈ¿Çϰųª ÃæºÐÄ¡ ¾ÊÀº Á¤º¸¸¦ Á¦°øÇÑ´Ù.
  • È£ÃâÀÚÀÇ ¹ÙÀεùÀÌ ´ÝÈ÷°í ÀÖ´Ù.

ÁÖ¼®

½º½º·Î¸¦ NdisRegisterProtocolÇÔ¼ö·Î NDISÇÁ·ÎÅäÄÝ µå¶óÀ̹ö·Î½á µî·ÏÇÏ´Â µ¶¸³ÀûÀÎ ÄÝ ¸Å´ÏÀú¸¸ÀÌ NdisCmRegisterAddressFamilyÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. ±×·± µå¶óÀ̹ö´Â ½º½º·Î¸¦ NDIS·Î ÁöÁ¤ÇÑ ¹ÙÀεù¿¡ µî·Ï ÇϱâÀ§ÇØ ProtocolBindAdapterÇÔ¼ö·ÎºÎÅÍ NdisCmRegisterAddressFamily ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.

µ¶¸³ÀûÀÎ ÄÝ ¸Å´ÏÀúÀÇ ProtocolBindAdapterÇÔ¼ö´Â NdisCmRegisterAddressFamilyÇÔ¼ö°¡ È£ÃâµÇ±âÀü¿¡ óÀ½ ÇÏÀ§ ´Ð ¹Ì´ÏÆ÷Æ®¿Í NdisOpenAdapter·Î ¹ÙÀεùÀ» ¼º¸³ÇÒ°ÍÀÌ´Ù. NDIS°¡ ProtocolBindAdapterÇÔ¼ö¸¦ ´Ù¸¥ BindContextÇÚµé·Î È£ÃâÇÒ¶§¸¶´Ù, ÀÌ ÄÝ ¸Å´ÏÀúÇÔ¼ö´Â ¹ÙÀεùÀ» ¼º¸³Çϰí Áö¿øÇÏ´Â ¾îµå·¹½º ÆÐ¹Ð¸®¸¦ µî·ÏÇÑ´Ù. ´Ù½Ã ¸»Çϸé, µ¶¸³¤¸°ÅÀÎ ÄÝ ¸Å´ÏÀú´Â °á±¹ ¾îµå·¹½º ÆÐ¹Ð¸®¸¦ µî·ÏÇÏ°í ¿¬°áÁöÇâ Ŭ¶óÀÌ¾ðÆ®¿¡°Ô ÄݸŴÏÁö¸ÕÆ® ¼­ºñ½º¸¦ Áö¿øÇÏ´Â °¢ ´Ð¿¡´ëÇÑ ProtocolCm/CoXxxÇÔ¼ö¸¦ Àçµî·ÏÇÑ´Ù. ÄÝ ¸Å´ÏÀú´Â ¹ÙÀεùµÇ¾îÀÖ´Â ¸ðµç ´Ð µå¶óÀ̹öµé¿¡´ëÇØ ÇϳªÀÌ»óÀÇ ¾îµå·¹½º ÆÐ¹Ð¸®¸¦ Áö¿øÇÒ¼ö ÀÖ´Ù.±×·¯³ª ÀÌ·¯ÇÑ °æ¿ì, ÄÝ ¸Å´ÏÀú´Â ¹ÙÀεù¿¡´ëÇÑ °¢ ¾îµå·¹½º ÆÐ¹Ð¸®¿¡´ëÇØ °°Àº ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ µî·ÏÇØ¾ß¸¸ÇÑ´Ù. ´ÜÁö ÇϳªÀÇ ÄÝ ¸ÅÁöÀú¸¸ÀÌ ¾î¶² ÁöÁ¤µÈ ´Ð µå¶óÀ̹ö¿Í ¹ÙÀεùµÈ Ŭ¶óÀÌ¾ðÆ®¿¡´ëÇØ ÁöÁ¤µÈ ¾îµå·¹½º ÆÐ¹Ð¸® ŸÀÔÀ» Áö¿øÇÒ¼ö ÀÖ´Ù.

°á°úÀûÀ¸·Î, ±×·± ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â ½º½º·Î¸¦ µ¶¸³ÀûÀÎ ÄÝ ¸Å´ÏÀú·Î µî·ÏÇϰí NdisCmRegisterAddressFamilyÇÔ¼ö¸¦ È£ÃâÇÒ¶§ °°Àº ¹Ì´ÏÆ÷Æ®¿Í ¹ÙÀεùµÈ ¸ðµç Ŭ¶óÀÌ¾ðÆ®¿¡´ëÇÑ Æ¯º°ÇÑ ½Ã±×³Î¸µ ¼­ºñ½º¸¦ ¾Ë¸°´Ù. ProtocolBindAdapterÇÔ¼ö°¡ µ¶¸³ÀûÀÎ ÄÝ ¸Å´ÏÀú·Î½áÀÇ µî·ÏÀ» ¼º°øÀûÀ¸·Î ¸®ÅÏÇÑÈÄ, NDIS´Â °°Àº ´Ð ¹Ì´ÏÆ÷Æ®¿Í ¹ÙÀεùµÈ ¸ðµç Ŭ¶óÀÌ¾ðÆ®µéÀÇ ProtocolCoRegisterAfNotifyÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. ´ÙÀ½À¸·Î ÀÌ·¯ÇÑ Å¬¶óÀÌ¾ðÆ®µéÀº NDIS·Î ÇÏ¿©±Ý ÄݸŴÏÀú°¡ ¸· ¾îµå·¹½º ÆÐ¹Ð¸®¿¡´ëÇØ µî·ÏÇß´ø ProtocolCmOpenAfÇÔ¼ö¸¦ È£ÃâÇϵµ·Ï ÇÑ´Ù.

µ¶¸³ÀûÀÎ ÄÝ ¸Å´ÏÀú´Â µé¾î¿À´Â È£Ãâ°ú ³ª°¡´Â È£ÃâµéÀ» Áö¿øÇÏÁö ¾Ê´õ¶óµµ NdisCmRegisterAddressFamilyÇÔ¼ö¸¦ È£ÃâÇÒ¶§ µå¶óÀ̹öÁö¿ø ProtocolCm/CoXxxÇÔ¼ö¿¡´ëÇÑ NDIS_CALL_MANAGER_CHARACTERISTICS±¸Á¶Ã¼³»ÀÇ ¸ðµçCmXxx¸â¹öµéÀ» ¼³Á¤Çؾ߸¸ÇÑ´Ù. ±×·± ÄÝ ¸Å´ÏÀú°¡ Áö¿øÇÏÁö¾Ê´Â ¿¬°áÁöÇâ ±â´ÉÀÇ ÇÑ ºÎºÐ¿¡´ëÇØ, ÀÚ¸® ¼ÒÀ¯ÀÚ(placeholder)ProtocolCmXxxÇÔ¼öµéÀº °£´ÜÈ÷ NDIS_STATUS_NOT_SUPPORTED¸¦ ¸®ÅÏÇÑ´Ù.

µ¶¸³ÀûÀÎ ÄÝ ¸Å´ÏÀú°¡ NdisCmRegisterAddressFamilyÇÔ¼ö¸¦ ¼º°øÀûÀ¸·Î È£ÃâÇÑÈÄ, NDIS´Â CM°¡ ÀÌÀü¿¡ NdisRegisterProtocolÇÔ¼ö¿¡°Ô ³Ñ±ä NDIS_PROTOCOL_CHARACTERISTICSÇÔ¼öÀÇ RequestHandler ¿Í RequestCompleteHandler¸â¹ö³»¿¡ ÁöÁ¤ÇÑ ¾î¶² ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ¹«½ÃÇÑ´Ù.

µ¶¸³ÀûÀÎ ÄÝ ¸Å´ÏÀúµé°ú ´ëÁ¶ÀûÀ¸·Î, ¶ÇÇÑ MCMµå¶óÀ̹ö ȤÀº MCM¹Ì´ÏÆ÷Æ®¶ó ºÒ¸®´Â ÅëÇÕ ÄÝ ¸Å´ÏÀú¸ÕÆ®¸¦ Áö¿øÇÏ´Â ¿¬°áÁöÇâ ´Ð ¹Ì´ÏÆ÷Æ®´Â NDIS·Î ProtocolCmXxxÇÔ¼ö¿Í ProtocolCoXxxÇÔ¼öµéÀ» µî·ÏÇϱâÀ§ÇØ NdisMCmRegisterAddressFamilyÇÔ¼ö¸¦ È£ÃâÇÒ°ÍÀÌ´Ù. ±×·± ¹Ì´ÏÆ÷Æ®´Â °áÄÚ NdisRegisterProtocol ȤÀº NdisOpenAdapterÇÔ¼ö¸¦ È£ÃâÇÏÁö ¾ÊÀ»°ÍÀÌ´Ù.

NdisCmRegisterAddressFamilyÇÔ¼öÀÇ È£ÃâÀÚ´Â ÀϹÝÀûÀ¸·Î IRQL PASSIVE_LEVEL¿¡¼­ ±×¸®°í ½Ã½ºÅÛ ½º·¹½º ÄÁÅØ½ºÆ®³»¿¡¼­ µ¿ÀÛÇÑ´Ù. NdisCmRegisterAddressFamilyÇÔ¼ö´Â IRQL < DISPATCH_LEVEL¿¡¼­ È£ÃâµÇ¾î¾ß¸¸ ÇÑ´Ù.