ProtocolRequestComplete
VOID
ProtocolRequestComplete(
IN NDIS_HANDLE ProtocolBindingContext,
IN PNDIS_REQUEST NdisRequest,
IN NDIS_STATUS Status
);
|
ProtocolRequstComplete ÇÔ¼ö´Â NdisRequest ÇÔ¼ö°¡ NDIS_STATUS_PENDINGÀ¸·Î ¸®ÅÏµÈ ÇÁ·ÎÅäÄÝ
Ãʱâ Äõ¸® ȤÀº ¼³Á¤ÀÇ Ã³¸®¸¦ ¿Ï¼ºÇÏ´Â µ¥ ÇÊ¿äÇÑ µå¶óÀ̹ö ÇÔ¼öÀÌ´Ù.
NdisRequest ÇÔ¼ö°¡ ¾Æ´Ñ NdisCoRequest ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ¿¬°á ÁöÇâ ÇÁ·ÎÅäÄÝÀº ProtocolRequestComplete ÇÔ¼ö
º¸´Ù ¿ÀÈ÷·Á ¿ÏÀüÈ÷ ±â´ÉÀûÀÎ ProtocolCoRequestComplete ÇÔ¼ö¸¦ °¡Á®¾ß ÇÑ´Ù.
¸Å°³º¯¼ö
- ProtocolBindingContext
- ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â ¹ÙÀεù´ç ·±Å¸ÀÓ »óŸ¦ À¯ÁöÇÏ´Â ÇÁ·ÎÅäÄÝ ÇÒ´ç ÄÁÅØ½ºÆ® ¿µ¿ª¿¡ ´ëÇÑ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù.
µå¶óÀ̹ö´Â NdisOpenAdapter ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ ÀÌ ÇÚµéÀ» Á¦°øÇÑ´Ù.
- NdisRequest
- NdisRequest ÇÔ¼ö¿¡ Àü¿¡ Àü´ÞµÈ ÇÁ·ÎÅäÄÝ Á¦°ø ±¸Á¶Ã¼¸¦ °¡¸®Å²´Ù.
- Status
- ¾Æ·¡ µå¶óÀ̹ö ȤÀº NDIS¿¡ ÀÇÇØ ¼³Á¤µÈ ¿ä±¸ÀÇ ¸¶Áö¸· »óŸ¦ ÁöÁ¤ÇÑ´Ù. ÀÌ ¸Å°³º¯¼ö´Â ProtocolRequestComplete
ÇÔ¼ö°¡ NdisRequest ÇÔ¼ö¿¡ ±× Á¤º¸·Î ¾î¶² ÀÏÀ» Çß´ÂÁö °áÁ¤ÇÑ´Ù.
ÁÖ¼®
ProtocolRequestComplete ÇÔ¼ö´Â ´ÙÀ½°ú °°Àº ÀÔ·Â Status °ªÀ» »ç¿ëÇÑ´Ù:
- ¸¸¾à ÀÌ ¸Å°³º¯¼ö°¡ NDIS_STATUS_SUCCESS¶ó¸éÀº, NDIS_REQUEST ±¸Á¶Ã¼ÀÇ BytesRead ȤÀº BytesWritten ¸â¹öÀ̸éÀº
¾ó¸¶³ª ¸¹Àº ÇÁ·ÎÅäÄÝ Á¦°ø Á¤º¸°¡ ¼³Á¤ ¿¬»ê¿¡¼ NIC¿¡°Ô InformationBuffer ¹öÆÛ·ÎºÎÅÍ Àü¼ÛµÇ´ÂÁö ȤÀº
Äõ¸® ¿¬»ê¿¡ ´ëÇÑ ÀÀ´äÀ¸·Î InformationBuffer ¿¡ ¾ó¸¶³ª ¸¹Àº Á¤º¸°¡ ¸®ÅϵǴÂÁö¸¦ ÁöÁ¤Çϱâ À§ÇØ ¾Æ·¡ µå¶óÀ̹ö
ȤÀº NDIS¿¡ ÀÇÇØ ¼³Á¤µÈ´Ù.
¸¸¾à ÇÁ·ÎÅäÄÝÀÌ Äõ¸®¸¦ ÇÑ´Ù¸éÀº, ProtocolRequestComplete ÇÔ¼ö´Â Oid ¸â¹öÀÇ °ª¿¡ ÀÇÁ¸ÇÏ¸é¼ ¾î¶² ÇÁ·ÎÅäÄÝ
°áÁ¤ ¹æ¹ýÀ¸·Î InformationBuffer¿¡ ¸®ÅÏµÈ µ¥ÀÌÅ͸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
¿¹¸¦ µé¾î, ¸¸¾à ÇÁ·ÎÅäÄÝÀÌ ¿ø·¡ OID_GEN_MAXIMUM_SEND_PACKET Äõ¸®¿¡ ÃʱâȵǾîÁø´Ù¸éÀº, ProtocolRequestComplete
ÇÔ¼ö´Â ProtocolBindingContext ¿µ¿ª¿¡ µå¶óÀ̹ö´Â NdisSendPackets ÇÔ¼ö¿¡ ´ëÇÑ °è¼ÓÀûÀΠȣÃâµéÀ» À§ÇØ
µå¶óÀ̹ö°¡ ¼³Á¤ÇÒ ¹ß»ýÇÏ´Â º¸³»±âµéÀÇ ¼ö¸¦ ¸·±â À§ÇØ ProtocolBindingContext ¿µ¿ª¿¡ »óÅ º¯¼öµéÀ» ¼³Á¤ÇÒ
°ÍÀÌ´Ù.
- ¸¸¾à ÀÌ·¯ÇÑ ¸Å°³º¯¼ö´Â NDIS_STATUS_INVALID_LENGTH ȤÀº NDIS_STATUS_BUFFER_TOO_SHORTÀ̸éÀº,
BytesNeeded ¸â¹ö´Â ¿ä±¸µÈ ¿¬»êÀ» ½ÇÇàÇϱâ À§ÇØ ÇÊ¿äÇÑ InformationBufferLength ÀÇ Oid ƯÁ¤ °ªÀ» ÁöÁ¤ÇÑ´Ù.
ÀÌ·¯ÇÑ È¯°æµé¿¡¼, ProtocolRequestComplete ÇÔ¼ö´Â ¿ä±¸¸¦ À§ÇØ ÃæºÐÇÑ ¹öÆÛ °ø°£À» ÇÒ´çÇÒ ¼ö ÀÖ°í,
ÇÊ¿äÇÑ InformationBufferLength¿Í °°Àº Oid·Î ¶Ç ÇϳªÀÇ NDIS_REQUEST ±¸Á¶Ã¼¸¦ ¼³Á¤Çϰí NdisRequest ÇÔ¼ö¿¡
´ëÇÑ È£ÃâÀ» ´Ù½Ã ½ÃµµÇÑ´Ù.
- ¸¸¾à ÀÌ·¯ÇÑ ¸Å°³º¯¼ö´Â ȸº¹ÇÒ ¼ö ¾ø´Â ¿¡·¯ÀÎ NDIS_STATUS_XXX À̸éÀº, ProtocolReqeustComplete ÇÔ¼ö´Â
NDIS_REQUEST ±¸Á¶Ã¼¸¦ À§ÇØ ÇÒ´çµÈ ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇØ¾ß Çϰí, µå¶óÀ̹ö°¡ NdisReset ÇÔ¼ö¸¦ È£ÃâÇØ¾ß ÇÏ´ÂÁö¸¦
°áÁ¤ÇØ¾ß Çϰí, ¹ÙÀεùÀ» ´Ý¾Æ¾ß Çϰí ȤÀº ¹ÙÀεù½Ã¿¡ °è¼ÓµÈ ³×Æ®¿öÅ© I/O ¿¬»êµéÀ» ´Ù·ç±â À§ÇØ
¹ÙÀεù ƯÁ¤ »óÅ Á¤º¸¸¦ Á¶Á¤ÇؾßÇÑ´Ù.
global Äõ¸®µé°ú ¼³Á¤µéÀ» À§ÇØ, NdisMQueryInformationComplete ÇÔ¼ö ȤÀº NdisMSetInformationComplete ÇÔ¼ö¿¡
´ëÇÑ ¾Æ·¡ ºñ¿¬°á ÁöÇâ ¹Ì´ÏÆ÷Æ®ÀÇ È£ÃâÀº NDIS°¡ ProtocolRequestComplete ÇÔ¼ö¸¦ È£ÃâÇϵµ·Ï ÇÑ´Ù.
NDIS´Â ProtocolRequestComplete ÇÔ¼ö¿¡ ´ëÇÑ ÀÔ·Â Status·Î¼ NdisM..InformationComplete ÇÔ¼ö¿¡ Àü´ÞµÈ
¹Ì´ÏÆ÷Æ® °áÁ¤ Status¿¡ Æ÷¿öµåÇÑ´Ù.
¹ÙÀεù ƯÁ¤ Äõ¸®µé¿¡ ´ëÇØ, NDIS´Â ProtocolRequestComplete ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. NDIS ¶óÀ̺귯¸®´Â ¸ðµç ¹Ì´ÏÆ÷Æ®µéÀ»
À§ÇØ ¹ÙÀεùµéÀ» À¯ÁöÇϱ⠶§¹®¿¡, NDIS´Â ½Ã½ºÅÛÀÌ ÇÊÅÍ ¶óÀ̺귯¸®¸¦ Á¦°øÇϱâ À§ÇÑ °ÍÀ¸·Î¼ ±×µéÀÇ ¹Ìµð¾ö ŸÀÔÀ»
º¸°íÇÏ´Â ¾Æ·¡ µå¶óÀ̹ö¿¡ ´ëÇØ ´ÜÁö ¹ÙÀεù ƯÁ¤ Á¤º¸¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù.
NDIS´Â ´Ù¸¥ ¹Ì´ÏÆ÷Æ®µé¿¡ ´ëÇØ ÇÁ·ÎÅäÄÝ ÃʱâÈµÈ ¹ÙÀεù ƯÁ¤ Äõ¸®µéÀ» À§ÇØ NDIS_STATUS_NOT_SUPPORTED¸¦ ¸®ÅÏÇÑ´Ù.
½Ã½ºÅÛ Á¤ÀÇ OIDµé¿¡ ´ëÇÑ ´õ ¸¹Àº Á¤º¸¿¡ ´ëÇØ¼ Part 2¸¦ ºÁ¶ó.
ProtocolRequestComplete ÇÔ¼ö´Â ÇÁ·ÎÅäÄÝÀÌ NdisRequest ÇÔ¼ö°¡ Status·Î ¸®ÅÏÇÏ´Â »óÅ Äڵ带 Á¶»çÇÒ ½Ã°£À»
°¡Áö±â Àü¿¡ È£ÃâµÇ¾îÁú ¼ö ÀÖ´Ù.
µðÆúÆ®·Î, ProtocolReqeustComplete ÇÔ¼ö´Â arbitrary ¾²·¹µå ÄÁÅØ½ºÆ®³»¿¡¼ IRQL DISPATCH_LEVEL¿¡¼ ½ÇÇàÇÑ´Ù.
|