NDIS_REQUEST

typedef struct _NDIS_REQUEST {

    UCHAR             MacReserved[16];

    NDIS_REQUEST_TYPE RequestType;

    union _DATA {

        struct QUERY_INFORMATION {

            NDIS_OID  Oid;

            PVOID     InformationBuffer;

            UINT      InformationBufferLength;

            UINT      BytesWritten;

            UINT      BytesNeeded;

        } QUERY_INFORMATION;

        struct SET_INFORMATION {

            NDIS_OID  Oid;

            PVOID     InformationBuffer;

            UINT      InformationBufferLength;

            UINT      BytesRead;

            UINT      BytesNeeded;

        } SET_INFORMATION;

   } DATA;

} NDIS_REQUEST, *PNDIS_REQUEST;

NDIS_REQUEST´Â NdisRequest ÇÔ¼ö¿¡ ´ëÇÑ È£ÃâÀ» À§ÇØ ÇÁ·ÎÅäÄÝ È¤Àº NDIS¿¡ ÀÇÇØ ¼³Á¤µÈ ÆÐŶÀ» ÁöÁ¤ÇÑ´Ù. NDIS´Â ¾Æ·¡ µå¶óÀ̹öÀÇ MiniportQueryInformation ȤÀº MiniportSetInformation ÇÔ¼öµé¿¡ ÀÌ·¯ÇÑ ¿ä±¸µéÀ» Á¦ÃâÇÑ´Ù.

¸â¹ö

MacReserved[16]
¾Æ·¡ µå¶óÀ̹ö¿¡ ÀÇÇØ »ç¿ëÀÌ ¿¹¾àµÈ 16¹ÙÀÌÆ® ¿µ¿ªÀ» ÁöÁ¤ÇÑ´Ù.

RequestType
´ÙÀ½°ú °°Àº Çϳª·Î ¿ä±¸ ŸÀÔÀ» ÁöÁ¤ÇÑ´Ù:

NdisRequestQueryInformation
Äõ¸® Á¤º¸ ¿ä±¸¸¦ ÁöÁ¤ÇÑ´Ù. NDIS´Â ±×·¯ÇÑ ¿ä±¸¸¦ ¾Æ·¡ µå¶óÀ̹öÀÇ MiniportQueryInformation ÇÔ¼ö¿¡ Æ÷¿öµåÇÑ´Ù.

NdisRequestSetInformation
¼³Á¤ Á¤º¸ ¿ä±¸¸¦ ÁöÁ¤ÇÑ´Ù. NDIS´Â ¾Æ·¡ µå¶óÀ̹öÀÇ MiniportSetInformation ÇÔ¼ö¿¡ ´ëÇÑ ¿ä±¸¸¦ Æ÷¿öµåÇÑ´Ù.

NdisRequestQueryStatistics
Äõ¸® Åë°è ¿ä±¸¸¦ ÁöÁ¤ÇÑ´Ù. ´ëºÎºÐÀÇ Åë°è Äõ¸®¿¡¼­, NDIS´Â ±× ÀÚü·Î ¿ä±¸¸¦ ¸¸Á·ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é, NDIS´Â ±×·¯ÇÑ ¿ä±¸¸¦ ¾Æ·¡ µå¶óÀ̹öÀÇ MiniportQueryInformation ÇÔ¼ö·Î Æ÷¿öµåÇÑ´Ù. ÀÌ·¯ÇÑŸÀÔÀÇ ¿ä±¸´Â ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö°¡ °áÄÚ ¾Æ´Ñ »ç¿ëÀÚ ¸ðµå ¾îÇø®ÄÉÀ̼ǿ¡¼­ ¿Ô´Ù.

¼±Çà°ªµéÀÇ ¾î¶² °ªÀ» À§ÇØ, Oid ¸â¹ö³»¿¡ ÁöÁ¤µÈ OID_XXX´Â ¿ä±¸µÈ ¿¬»êÀÇ Å¸ÀÔÀ¸·Î ȣȯµÉ °ÍÀÌ´Ù.

NdisRequestOpen
ÀÌ·¯ÇÑ Å¸ÀÔÀº Æó±âµÇ¾ú´Ù. ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â ±× ´ë½Å¿¡ NdisOpenAdapter ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.

NdisRequestClose
ÀÌ Å¸ÀÔÀº Æó±âµÇ¾ú´Ù. ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â ±× ´ë½Å¿¡ NdisCloseAdapter ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.

NdisRequestSend
ÀÌ Å¸ÀÔÀº Æó±âµÇ¾ú´Ù. ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â NdisSend ȤÀº NdisSendPackets ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.

NdisRequestTransferData
ÀÌ Å¸ÀÔÀº Æó±âµÇ¾ú´Ù. ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â NdisTransferData ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.

NdisRequestReset
ÀÌ Å¸ÀÔÀº Æó±âµÇ¾ú´Ù. ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö´Â NdisReset ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.

NdisRequestGeneric1
NIC µå¶óÀ̹ö ƯÁ¤ ¿ä±¸¸¦ ÁöÁ¤ÇÑ´Ù.

NdisRequestGeneric2
NIC µå¶óÀ̹ö ƯÁ¤ ¿ä±¸¸¦ ÁöÁ¤ÇÑ´Ù.

NdisRequestGeneric3
NIC µå¶óÀ̹ö ƯÁ¤ ¿ä±¸¸¦ ÁöÁ¤ÇÑ´Ù.

NidsRequestGeneric4
NIC µå¶óÀ̹ö ƯÁ¤ ¿ä±¸¸¦ ÁöÁ¤ÇÑ´Ù.

Oid
¿ä±¸µÈ ¿¬»êÀÇ °´Ã¼ Áö½ÃÀÚ¸¦ ÁöÁ¤ÇÑ´Ù. ÀÌ °ªÀº OID_XXX ÄÚµåÀÌ´Ù.

InformationBuffer
¾Æ·¡ µå¶óÀ̹ö ȤÀº NDIS´Â ¾Æ·¡ µå¶óÀ̹ö°¡ ¼³Á¤µéÀ» À§ÇÑ È£ÃâÀÚ Á¦°ø Á¤º¸¸¦ Àоî¿À´Â °ÍÀ¸·ÎºÎÅÍ È¤Àº Äõ¸®¸¦ À§ÇÑ ¿ä±¸µÈ Á¤º¸¸¦ ¸®ÅÏÇÏ´Â ¹öÆÛ¸¦ °¡¸®Å²´Ù.

InformationBufferLength
InformationBufferÀÎ ¹öÆÛÀÇ ¹ÙÀÌÆ® Å©±â¸¦ ÁöÁ¤ÇÑ´Ù. Oid °ªÀº ÀÌ ¸â¹ö¿¡ Àû´çÇÑ °ªÀ» °áÁ¤ÇÑ´Ù.

BytesWritten
¾Æ·¡ µå¶óÀ̹ö ȤÀº NDIS°¡ Äõ¸® Á¤º¸ ¿ä±¸µéÀ» À§ÇÑ InfomationBufferÀÎ ¹öÆÛ·Î Àü¼ÛÇÏ´Â ¹ÙÀÌÆ® ¼ö¸¦ ÁöÁ¤ÇÑ´Ù. ¸¸¾à NdisRequest ÇÔ¼ö°¡ NDIS_STATUS_INVALID_LENGTH¸¦ ¸®ÅÏÇϸé, ÀÌ ¸â¹öÀÇ °ªÀº Àǹ̰¡ ¾ø´Ù.

BytesNeeded
Äõ¸® Á¤º¸¸¦ ¸®ÅÏÇϰųª ȤÀº ÁÖ¾îÁø OID_XXX Äڵ忡 ÀÇÇØ ¿ä±¸µÈ ¼³Á¤ ¿¬»êÀ» ½ÇÇàÇϱâ À§ÇØ ÇÊ¿äÇÑ ¹ÙÀÌÆ® ¼ö¸¦ ÁöÁ¤ÇÑ´Ù.

¸¸¾à NdisRequest ÇÔ¼ö°¡ NDIS_STATUS_SUCCESS¸¦ ¸®ÅÏÇϸé, ÀÌ ¸â¹öÀÇ °ªÀº Àǹ̰¡ ¾ø´Ù. ¸¸¾à InformationBufferLength´Â Äõ¸®¿¡¼­ ÁÖ¾îÁø OID_XXX °ªÀÌ ³Ê¹« °ª´Ù¸é, ÀÌ ¸â¹ö´Â ¾ó¸¶³ª Å« ¹öÆÛ°¡ ÀÌ ¿ä±¸¸¦ ¸¸Á·ÇÏ´Â µ¥ ÇÊ¿äÇÑÁö¸¦ °¡¸®Å²´Ù. ¸¸¾à InformationBufferÀÎ ¹öÆÛ°¡ ¼³Á¤¿¡¼­ ÁÖ¾îÁø OID_XXX ¸¦ À§ÇØ ÃæºÐÇÑ µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏÁö ¾Ê´Â´Ù¸é, ÀÌ ¸â¹ö´Â ¾ó¸¶³ª ¸¹Àº µ¥ÀÌÅͰ¡ ¿ä±¸µÇ´ÂÁö¸¦ °¡¸®Å²´Ù.

ÁÖ¼®

ÇÁ·ÎÅäÄÝÀº InformationBufferÀÎ ¹öÆÛ¸¦ À§ÇÑ ±×¸®°í NDIS_REQUEST ÆÐŶ ±× ÀÚü¸¦ À§ÇØ ºñÆäÀÌÁöÈ­µÈ ¸Þ¸ð¸®¸¦ ÇÒ´çÇØ¾ß ÇÑ´Ù.

ÆäÀÌÁöÈ­µÈ ¸Þ¸ð¸®·ÎºÎÅÍ ÇÒ´çµÈ ÆÐŶ ȤÀº ¹öÆÛ¸¦ Àü´ÞÇÏ´Â °ÍÀº ¾Æ·¡ µå¶óÀ̹ö°¡ ¿ä±¸µÈ ¿¬»êÀ» ½ÇÇàÇϱâ À§ÇØ IRQL DISPATCH_LEVEL¿¡¼­ ½ÇÇàÇϱ⠶§¹®¿¡ Ä¡¸íÀûÀÎ ÆäÀÌÁö ÆúÆ®µéÀ» ¾ß±âÇÒ ¼ö ÀÖ´Ù.

NDIS_REQUEST ±¸Á¶Ã¼´Â ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö°¡ ¾Æ·¡ µå¶óÀ̹ö¿¡ ¿ä±¸ÇÒ ¼ö ÀÖ´Â °¢ ŸÀÔÀÇ ¿¬»êÀ» À§ÇÑ DATA ±¸Á¶Ã¼¸¦ Æ÷ÇÔÇÑ´Ù. NdisRequest ÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡, ÇÁ·ÎÅäÄÝÀº Oid ¸â¹ö¸¦ ÁöÁ¤ÇÏ´Â Äõ¸® ȤÀº ¼³Á¤ ¿¬»êÀ» ³ªÅ¸³»´Â ¼­ºê±¸Á¶Ã¼ÀÇ °ü°èµÈ ¸â¹öµéÀ» ä¿î´Ù. NDIS ȤÀº ¾Æ·¡ µå¶óÀ̹ö¹ö´Â È£ÃâÀÚ¿¡°Ô Á¦¾î¸¦ ¸®ÅÏÇϱâ Àü¿¡ ³²¾ÆÀÖ´Â ¸â¹öµéÀ» ä¿î´Ù. OID_XXX ÄÚµåµé¿¡ ´ëÇÑ ´õ ¸¹Àº Á¤º¸¿Í ¾î´À ½Ã½ºÅÛ Á¤ÀÇ OIDµéÀÌ Äõ¸®, Åë°è Äõ¸®µé ȤÀº ¼³Á¤ Äõ¸®µéÀ» Çã¿ëÇÏ´Â °¡¿¡ ´ëÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â Part 2¸¦ ºÁ¶ó.

NdisRequestGenerics ŸÀÔµéÀº ±×µé ÀÚ½ÅÀÇ ³»ºÎ ¿ä±¸µéÀ» ¸¸µå´Â NIC µå¶óÀ̹öµéÀ» À§ÇØ ÀÌ¿ëÇÒ¼ö ÀÖ´Ù. ¿ä±¸µÈ ¿¬»êÀ» ÀεðÄÉÀÌÆ®Çϱâ À§ÇØ, NIC µå¶óÀ̹ö´Â ³»ºÎ º¯¼ö¸¦ ÀÌ·¯ÇÑ Å¸ÀÔµéÀÇ Çϳª·Î ¼³Á¤ÇÑ´Ù.