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¿¡¼ È£ÃâµÇ¾î¾ß¸¸ ÇÑ´Ù.
|