9.1 TAPI Äõ¸® Á¤º¸ ¿äûµé

±¸Á¶Ã¼ Á¤ÀÇ¿¡ ÀÖ´Â "OUT" Á¢µÎ¾î¿¡ ÀÇÇØ¼­ Ç¥½ÃµÇ´Â ¿¬°üµÈ ±¸Á¶Ã¼¿¡ ÀÖ´Â Çϳª ÀÌ»óÀÇ ¸â¹öµé¿¡ ÀÖ´Â ¼Â-Á¤º¸ ¿äûµé°ú´Â ´Ù¸£°Ô Äõ¸®Á¤º¸ ¿äûµéÀº ¿äûÀÇ ¹ß±âÀÎ(initiator)¿¡°Ô ¾Æ·¡ÀÇ ¹Ì´ÏÆ÷Æ®°¡ ¸®ÅÏÇØ¾ßÇÏ´Â Á¤º¸¸¦ À§Çؼ­ ¿¹¾àµÈ´Ù. WAN NIC µå¶óÀ̹öµéÀº Àбâ-Àü¿ëÀ¸·Î "IN" À¸·Î Á¢µÎ¾îµÈ ±¸Á¶Ã¼ ¸â¹öµéÀ» ´Ù·ï¾ßÇÑ´Ù.

Äõ¸®-Á¤º¸ ¿äûµé¿¡ »ç¿ëµÈ ¸ðµç ±¸Á¶Ã¼µéÀÇ Ã¹¹øÂ° ¸â¹öÀÎ ulRequestID´Â ¹Ì·¡ »ç¿ëÀ» À§Çؼ­ ¿¹¾àµÇ¾îÀÖ´Ù. ¹Ì´ÏÆ÷Æ® µå¶óÀ̹ö´Â ÀÌ ¸â¹ö¸¦ ¹«½ÃÇØ¾ß ÇÑ´Ù.

OID_TAPI_GET_ADDRESS_CAPS

ÀÌ OID ´Â WAN NIC µå¶óÀ̹ö¿¡°Ô ±×°ÍÀÇ ÅÚ·¹Æ÷´Ï ´É·Âµé¿¡ °üÇØ¼­ ÁöÁ¤µÈ ¶óÀÎ»ó¿¡ ÀÖ´Â ÁöÁ¤µÈ ÁÖ¼Ò¸¦ À§Çؼ­ Á¤º¸¸¦ ¸®ÅÏÇÒ °ÍÀ» ¿äûÇÑ´Ù.

ÀÌ ¿äû¿¡ ´ëÇÑ Áö¿øÀº Àǹ«ÀûÀÌ´Ù.

ÀÌ ¿äûÀº ÁöÁ¤µÈ ÁÖ¼ÒÀÇ ÅÚ·¹Æ÷´Ï ´É·ÂµéÀ» Äõ¸®Çϱâ À§Çؼ­ ¾Æ·¡¿¡ Á¤ÀÇµÈ NDIS_TAPI_GET_ADDRESS_CAPS ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù.:




typedef struct _NDIS_TAPI_GET_ADDRESS_CAPS { 

    IN ULONG               ulRequestID; 

    IN ULONG               ulDeviceID; 

    IN ULONG               ulAddressID; 

    IN ULONG               ulExtVersion; 

    OUT LINE_ADDRESS_CAPS  LineAddressCaps; 

} NDIS_TAPI_GET_ADDRESS_CAPS, *PNDIS_TAPI_GET_ADDRESS_CAPS; 

ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹öµéÀº ¾Æ·¡ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.:

ulRequestID
¿¹¾àµÊ.

ulDeviceID
¸µÅ© ¶Ç´Â Äõ¸®µÉ µ¥ÀÌÅÍ Ã¤³ÎÀ» ÁöÁ¤ÇÑ´Ù. À̰ÍÀº ¾ÕÀÇ OID_TAPI_GET_ID ¿äûÀ¸·Î ¼³Á¤µÈ´Ù.

ulAddressID
¸®ÅϵǾî¾ßÇÒ ´É·ÂµéÀ» À§Çؼ­ ÁÖ¾îÁø ¸µÅ©»ó¿¡ ÀÖ´Â ÁÖ¼Ò¸¦ ÁöÁ¤ÇÑ´Ù. ÀÌ ¸â¹öÀÇ °ªÀº ÀÌ ¿äûÀÌ ¸¸µé¾îÁú¶§ NDISTAPI ¿¡ ÀÇÇØ¼­ ÀÔÁõµÇÁö(validated) ¾Ê´Â´Ù.

ulExtVersion
»ç¿ëµÉ ¹Ì´ÏÆ÷Æ®-ƯÁ¤ È®Àå(extensions)ÀÇ ¹öÀü ¹øÈ£¸¦ ÁöÁ¤ÇÑ´Ù. ¸¸¾à ¾î¶°ÇÑ ÀåÄ¡-ƯÁ¤ È®ÀåµéÀÌ »ç¿ëµÇÁö ¾Ê´Â´Ù¸é, ÀÌ ¸â¹ö´Â 0ÀÌ´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ³ôÀº-¼ø¼­(high-order) ¹ÙÀÌÆ®µéÀº ¸ÞÀÌÀú(major) ¹öÀü ³Ñ¹ö¸¦ Æ÷ÇÔÇϰí, ³·Àº-¼ø¼­(low-order) ¹ÙÀÌÆ®µéÀº ¸¶À̳Ê(minor) ¹öÀü ³Ñ¹ö¸¦ Æ÷ÇÔÇÑ´Ù. ÀÌ ¸â¹öÀÇ °ªÀº ÀÌ ¿äûÀÌ ¸¸µé¾îÁú¶§ NDISTAPI ¿¡ ÀÇÇØ¼­ ÀÔÁõµÇÁö ¾Ê´Â´Ù.

LineAddressCaps
ŸÀÔ LINE_ADDRESS_CAPSÀÇ °¡º¯-Å©±â(variable-size) ±¸Á¶Ã¼ÀÇ º£À̽º °¡»ó ÁÖ¼Ò¸¦ ÁöÁ¤ÇÑ´Ù. ÀÚ¼¼ÇÑ °ÍÀº ndistapi.h ¸¦ ºÁ¶ó.

ÀÌ ±¸Á¶Ã¼´Â Àû¾îµµ ¿¹¾àµÈ sizeof(LINE_ADDRESS_CAPS) ¹ÙÀÌÆ® ÀÌ´Ù.

ÀÌ ¿äûÀÇ ¼º°øÀûÀÎ ¿Ï·á¶§, ¹Ì´ÏÆ÷Æ®´Â ÀÌ ±¸Á¶Ã¼¸¦ ÁÖ¼Ò ´É·Â Á¤º¸·Î ä¿î´Ù.

MiniportQueryInformation ÇÔ¼ö´Â ¾Æ·¡ÀÇ Çϳª¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù.:
NDIS_STATUS_SUCCESS
NDIS_STATUS_PENDING
NDIS_STATUS_TAPI_INCOMPATIBLEEXTVERSION
NDIS_STATUS_TAPI_INVALADDRESSID
NDIS_STATUS_TAPI_NODRIVER
NDIS_STATUS_FAILURE

OID_TAPI_GET_ADDRESS_ID

ÀÌ OID ¿äû´Â WAN NIC ¿¡°Ô ÁöÁ¤µÈ ¶óÀÎ»ó¿¡ ÀÖ´Â ´Ù¸¥ Æ÷¸ä¿¡ ÁÖ¼Ò¿Í ¿¬°üµÈ ÁÖ¼Ò ID¸¦ ¸®ÅÏÇÒ°ÍÀ» ¿äûÇÑ´Ù.

ÀÌ ¿äû¿¡ ´ëÇÑ Áö¿øÀº Àǹ«ÀûÀÌ´Ù.

ÀÌ ¿äûÀº ¾Æ·¡¿¡ Á¤ÀÇµÈ NDIS_TAPI_GET_ADDRESS_ID ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù.:




typedef struct _NDIS_TAPI_GET_ADDRESS_ID { 

    IN ULONG      ulRequestID; 

    IN HDRV_LINE  hdLine; 

    OUT ULONG     ulAddressID; 

    IN ULONG      ulAddressMode; 

    IN ULONG      ulAddressSize; 

    IN CHAR       szAddress[1]; 

} NDIS_TAPI_GET_ADDRESS_ID, *PNDIS_TAPI_GET_ADDRESS_ID; 

ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹öµéÀº ¾Æ·¡ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.:

ulRequestID
¿¹¾àµÊ.

hdLine
ȸ¼öµÇ¾î¾ß ÇÒ ÁÖ¼Ò ID¸¦ À§Çؼ­ ¶óÀο¡ ´ëÇÑ ¹Ì´ÏÆ÷Æ®ÀÇ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù. À̰ÍÀº ¾ÕÀÇ OID_TAPI_OPEN ¿äûÀ¸·Î ¼³Á¤µÈ´Ù.

ulAddressID
¿äûµÈ ÁÖ¼Ò ID ¸¦ ÁöÁ¤ÇÑ´Ù. ¹Ì´ÏÆ÷Æ®´Â ÀÌ ¿äûÀ» ¼º°øÀûÀ¸·Î ¿Ï¼ºÇϱâ À§Çؼ­ szAddress ¿Í ÀÏÄ¡ÇÏ´Â ÁÖ¼Ò ID ·Î ÀÌ ¸â¹ö¿¡ ä¿î´Ù.

ulAddressMode
szAddress ¿¡ Æ÷ÇÔµÈ ÁÖ¼ÒÀÇ ÁÖ¼Ò ¸ðµå¸¦ ÁöÁ¤ÇÑ´Ù. ÀÌ ¸â¹ö´Â ´ÜÁö ¾Æ·¡ÀÇ LINEADDRESSMODE Ç÷¡±× ¼³Á¤ Àϼö ÀÖ´Ù.:

LINEADDRESSMODE_DIALABLEADDR

ulAddressSize
szAddress ¿¡ ÀÖ´Â ÁÖ¼ÒÀÇ ¹ÙÀÌÆ® Å©±â¸¦ ÁöÁ¤ÇÑ´Ù.

szAddress
¶óÀÎ ÀåÄ¡¿¡ ÇÒ´çµÈ ÁÖ¼Ò¸¦ Æ÷ÇÔÇÏ´Â °¡º¯-Å©±â ±¸Á¶Ã¼ÀÇ °¡»ó ÁÖ¼Ò¸¦ ÁöÁ¤ÇÑ´Ù. ÁÖ¼ÒÀÇ Æ÷¸äÀº ulAddressMode ¸â¹ö¿¡ ÀÇÇØ¼­ °áÁ¤µÈ´Ù. ¸¸¾à ±×°ÍÀÌ LINEADDRESSMODE_DIALABLEADDR À̸é, szAddress ´Â °øÅë(common) µð½º¿¡ÀÌºí ¸â¹ö Æ÷¸äÀ» »ç¿ëÇϰí 0-Á¾·áµÈ´Ù.

MiniportQueryInformation ÇÔ¼ö´Â ¾Æ·¡ÁßÀÇ Çϳª¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù.:
NDIS_STATUS_SUCCESS
NDIS_STATUS_PENDING
NDIS_STATUS_TAPI_INVALLINEHANDLE
NDIS_STATUS_TAPI_INVALADDRESS
NDIS_STATUS_TAPI_RESOURCEUNAVAIL
NDIS_STATUS_FAILURE

OID_TAPI_GET_ADDRESS_STATUS

ÀÌ OID´Â ¹Ì´ÏÆ÷Æ®¿¡°Ô ÁöÁ¤µÈ ÁÖ¼ÒÀÇ ÇöÀç»óŸ¦ ¸®ÅÏÇÒ °ÍÀ» ¿äûÇÑ´Ù.

ÀÌ ¿äû¿¡ ´ëÇÑ Áö¿øÀº Àǹ«ÀûÀÌ´Ù.

ÀÌ ¿äûÀº ÁöÁ¤µÈ ÁÖ¼ÒÀÇ ÇöÀç»óŸ¦ Äõ¸®Çϱâ À§Çؼ­ ¾Æ·¡¿¡ Á¤ÀÇµÈ NDIS_TAPI_GET_ADDRESS_ID ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù.:


typedef struct _NDIS_TAPI_GET_ADDRESS_STATUS { 

    IN ULONG                 ulRequestID; 

    IN HDRV_LINE             hdLine; 

    IN ULONG                 ulAddressID; 

    OUT LINE_ADDRESS_STATUS  LineAddressStatus; 

} NDIS_TAPI_GET_ADDRESS_STATUS, *PNDIS_TAPI_GET_ADDRESS_STATUS; 



ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹öµéÀº ¾Æ·¡ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.:

ulRequestID
¿¹¾àµÊ.

hdLine
¶óÀο¡ ´ëÇÑ ¹Ì´ÏÆ÷Æ®ÀÇ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù.

ulAddressID
ÁÖ¾îÁø ¿ÀÇ ÀåÄ¡»ó¿¡ ÀÖ´Â ÁÖ¼Ò¸¦ ÁöÁ¤ÇÑ´Ù. À̰ÍÀº ¸®ÅϵǾî¾ßÇÒ »óÅ¿¡ ´ëÇÑ ÁÖ¼ÒÀÌ´Ù. ÀÌ ¸â¹öÀÇ °ªÀº ÀÌ ¿äûÀÌ ¸¸µé¾îÁú¶§ NDISTAPI ¿¡ ÀÇÇØ¼­ ÀÔÁõµÇÁö(validated) ¾Ê´Â´Ù.

LineAddressStatus
ŸÀÔ LINE_ADDRESS_STATUSÀÇ °¡º¯-Å©±â ±¸Á¶Ã¼ÀÇ °¡»ó ÁÖ¼Ò¸¦ ÁöÁ¤ÇÑ´Ù. ¼¼ºÎÀûÀΰÍÀº ndistapi.h À» ºÁ¶ó.

¹Ì´ÏÆ÷Æ®´Â ÀÌ ¿äûÀ» ¼º°øÀûÀ¸·Î ¿Ï¼ºÇϱâ À§Çؼ­ ÁÖ¼Ò »óÅ Á¤º¸·Î ÀÌ ±¸Á¶Ã¼¸¦ ä¿î´Ù.

LineAddressStatus ¸â¹ö´Â Àû¾îµµ ¿¹¾àµÈ sizeof(LINE_ADDRESS_STATUS) ¹ÙÀÌÆ®¸¦ °¡Áø´Ù.

MiniportQueryInformation ÇÔ¼ö´Â ¾Æ·¡ÁßÀÇ Çϳª¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù.:
NDIS_STATUS_SUCCESS
NDIS_STATUS_PENDING
NDIS_STATUS_TAPI_INVALLINEHANDLE
NDIS_STATUS_TAPI_INVALADDRESSID
NDIS_STATUS_TAPI_RESOURCEUNAVAIL
NDIS_STATUS_FAILURE

OID_TAPI_GET_CALL_ADDRESS_ID

ÀÌ OID ´Â ÁöÁ¤µÈ È£Ãâ¿¡ ´ëÇÑ ÁÖ¼Ò¸¦ ¸®ÅÏÇÒ °ÍÀ» ¹Ì´ÏÆ÷Æ®¿¡°Ô ¿äûÇÑ´Ù.

ÀÌ ¿äû¿¡ ´ëÇÑ Áö¿øÀº Àǹ«ÀûÀÌ´Ù.

ÀÌ ±¸Á¶Ã¼´Â ¾Æ·¡¿¡ Á¤ÀÇµÈ NDIS_TAPI_GET_CALL_ADDRESS_ID ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù.:


typedef struct _NDIS_TAPI_GET_CALL_ADDRESS_ID { 

    IN ULONG      ulRequestID; 

    IN HDRV_CALL  hdCall; 

    OUT ULONG     ulAddressID; 

} NDIS_TAPI_GET_CALL_ADDRESS_ID, *PNDIS_TAPI_GET_CALL_ADDRESS_ID; 

ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹öµéÀº ¾Æ·¡ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.:

ulRequestID
¿¹¾àµÊ.

hdCall
ȸ¼öµÇ¾î¾ßÇÒ ID¸¦ À§Çؼ­ È£Ãâ¿¡ ´ëÇÑ ¹Ì´ÏÆ÷Æ®ÀÇ ÇÚµéÀ» ¸®ÅÏÇÑ´Ù. ÀÌ ÇÚµéÀº ¾ÕÀÇ OID_TAPI_MAKE_CALL ¿äû¿¡¼­ ¶Ç´Â ¹Ì´ÏÆ÷Æ®°¡ µé¾î¿À´Â È£ÃâÀ» Á¦ÃâÇϱâ À§Çؼ­ NdisMIndicateStatus ¸¦ È£ÃâÇßÀ»¶§ ¼³Á¤µÈ´Ù.

ulAddressID
ÁÖ¼Ò ID¸¦ ÁöÁ¤ÇÑ´Ù. ¹Ì´ÏÆ÷Æ®´Â ÀÌ ¿äûÀ» ¼º°øÀûÀ» ¿Ï¼ºÇϱâ À§Çؼ­ hdCall ¿¡ ´ëÇÑ ÀÏÄ¡ÇÏ´Â ÁÖ¼Ò ID·Î ÀÌ ¸â¹ö¸¦ ä¿î´Ù.
MiniportQueryInformation ÇÔ¼ö´Â ¾Æ·¡ÁßÀÇ Çϳª¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù.:
NDIS_STATUS_SUCCESS
NDIS_STATUS_PENDING
NDIS_STATUS_TAPI_RESOURCEUNAVAIL
NDIS_STATUS_FAILURE

OID_TAPI_GET_CALL_INFO

ÀÌ OID´Â ¹Ì´ÏÆ÷Æ®¿¡°Ô ÁöÁ¤µÈ È£Ãâ¿¡ ´ëÇÑ ¼¼ºÎ Á¤º¸¸¦ ¸®ÅÏÇÒ °ÍÀ» ¿äûÇÑ´Ù.

ÀÌ ¿äû¿¡ ´ëÇÑ Áö¿øÀº Àǹ«ÀûÀÌ´Ù.

ÀÌ ¿äûÀº ¾Æ·¡¿¡ Á¤ÀÇµÈ NDIS_TAPI_GET_CALL_INFO ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù.:


typedef struct _NDIS_TAPI_GET_CALL_INFO { 

    IN ULONG            ulRequestID; 

    IN HDRV_CALL        hdCall; 

    OUT LINE_CALL_INFO  LineCallInfo; 

} NDIS_TAPI_GET_CALL_INFO, *PNDIS_TAPI_GET_CALL_INFO; 

ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹öµéÀº ¾Æ·¡ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.:

ulRequestID
¿¹¾àµÊ.

hdCall
Á¤º¸¸¦ ¸®ÅÏÇØ¾ßÇϴ ȣÃâ¿¡ ´ëÇÑ ¹Ì´ÏÆ÷Æ®ÀÇ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù.

LineCallInfo
ŸÀÔ LINE_CALL_INFOÀÇ °¡»ó ÁÖ¼Ò °¡º¯-Å©±â µ¥ÀÌÅÍ ±¸Á¶Ã¼¸¦ ÁöÁ¤ÇÑ´Ù. ¼¼ºÎÀûÀΰÍÀº ndistapi.h À» ºÁ¶ó.

¹Ì´ÏÆ÷Æ®´Â ÀÌ ¿äûÀ» ¼º°øÀûÀ¸·Î ¿Ï¼ºÇϱâ À§Çؼ­ È£Ãâ-¿¬°üµÈ Á¤º¸·Î ÀÌ ±¸Á¶Ã¼¸¦ ä¿î´Ù.

LineCallInfo ¿¡ ±¸Á¶Ã¼´Â Àû¾îµµ ¿¹¾àµÈ sizeof(LINE_CALL_INFO) ¹ÙÀÌÆ®¸¦ °¡Áø´Ù.

MiniportQueryInformation ÇÔ¼ö´Â ¾Æ·¡ÁßÀÇ Çϳª¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù.:
NDIS_STATUS_PENDING
NDIS_STATUS_TAPI_INVALCALLHANDLE
NDIS_STATUS_TAPI_RESOURCEUNAVAIL
NDIS_STATUS_FAILURE

OID_TAPI_GET_CALL_STATUS

ÀÌ OID´Â ÁöÁ¤µÈ È£ÃâÀÇ ÇöÀç »óŸ¦ ¸®ÅÏÇÒ °ÍÀ» ¹Ì´ÏÆ÷Æ®¿¡°Ô ¿äûÇÑ´Ù.

ÀÌ ¿äû¿¡ ´ëÇÑ Áö¿øÀº Àǹ«ÀûÀÌ´Ù.

ÀÌ ¿äûÀº ¾Æ·¡¿¡ Á¤ÀÇµÈ NDIS_TAPI_GET_CALL_STATUS ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù.:


typedef struct _NDIS_TAPI_GET_CALL_STATUS { 

    IN ULONG              ulRequestID; 

    IN HDRV_CALL          hdCall; 

    OUT LINE_CALL_STATUS  LineCallStatus; 

} NDIS_TAPI_GET_CALL_STATUS, *PNDIS_TAPI_GET_CALL_STATUS; 

ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹öµéÀº ¾Æ·¡ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.:

ulRequestID
¿¹¾àµÊ.

hdCall
¸®ÅϵǾî¾ß ÇÒ ÇöÀç»óŸ¦ À§Çؼ­ È£Ãâ¿¡ ´ëÇÑ ¹Ì´ÏÆ÷Æ®ÀÇ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù.

LineCallStatus
ŸÀÔ LINE_CALL_STATUSÀÇ °¡º¯-Å©±â ±¸Á¶Ã¼ÀÇ °¡»óÁÖ¼Ò¸¦ ÁöÁ¤ÇÑ´Ù. ¼¼ºÎÀûÀÎ °ÍÀº ndistapi.h À» ºÁ¶ó.

¹Ì´ÏÆ÷Æ®´Â ÀÌ ¿äûÀ» ¼º°øÀûÀ¸·Î ¿Ï¼ºÇϱâ À§Çؼ­ È£Ãâ »óÅ·ΠÀÌ ±¸Á¶Ã¼¸¦ ä¿î´Ù.

LineCallStatus ¿¡¼­ ±¸Á¶Ã¼´Â Àû¾îµµ ¿¹¾àµÈ sizeof(LINE_CALL_STATUS) ¹ÙÀÌÆ®¸¦ °¡Áø´Ù.

MiniportQueryInformation ÇÔ¼ö´Â ¾Æ·¡ÁßÀÇ Çϳª¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù.:
NDIS_STATUS_SUCCESS
NDIS_STATUS_PENDING
NDIS_STATUS_TAPI_INVALCALLHANDLE
NDIS_STATUS_TAPI_RESOURCEUNAVAIL
NDIS_STATUS_FAILURE

OID_TAPI_GET_DEV_CAPS

ÀÌ OID´Â ÁöÁ¤µÈ ¶óÀÎ ÀåÄ¡ÀÇ ÅÚ·¹Æ÷´Ï ´É·ÂµéÀ» ¸®ÅÏÇÒ°ÍÀ» ¹Ì´ÏÆ÷Æ®¿¡°Ô ¿äûÇÑ´Ù. ¸®ÅÏµÈ Á¤º¸´Â ÁÖ¾îÁø ¶óÀÎ ÀåÄ¡¿¡ ´ëÇØ¼­ ¸ðµç Áּҵ鿡°Ô À¯È¿ÇÏ´Ù.

ÀÌ ¿äû¿¡ ´ëÇÑ Áö¿øÀº Àǹ«ÀûÀÌ´Ù.

ÀÌ ¿äûÀº ¾Æ·¡¿¡ Á¤ÀÇµÈ NDIS_TAPI_GET_DEV_CAPS ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù.:


typedef struct _NDIS_TAPI_GET_DEV_CAPS { 

    IN ULONG           ulRequestID; 

    IN ULONG           ulDeviceID; 

    IN ULONG           ulExtVersion; 

    OUT LINE_DEV_CAPS  LineDevCaps; 

} NDIS_TAPI_GET_DEV_CAPS, *PNDIS_TAPI_GET_DEV_CAPS; 

ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹öµéÀº ¾Æ·¡ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.:

ulRequestID
¿¹¾àµÊ.

ulDeviceID
¿ä±¸µÉ ¸µÅ© ¶Ç´Â µ¥ÀÌÅÍ Ã¤³ÎÀ» ÁöÁ¤ÇÑ´Ù. À̰ÍÀº ¾ÕÀÇ OID_TAPI_GET_ID ¿äû¿¡¼­ ¼³Á¤µÈ´Ù.

ulExtVersion
¸¸¾à ÀÖ´Ù¸é, Çù»óµÈ È®Àå ¹öÀü ³Ñ¹ö¸¦ ÁöÁ¤ÇÑ´Ù.

ÀÌ °ªÀº OID_TAPI_NEGOTIATE_EXT_VERSION ¿äûÀ» ÅëÇØ¼­ ÀÌ ÀåÄ¡¸¦ À§Çؼ­ ÀÌ¹Ì Çù»óµÇ¾îÀÖ´Ù. ÀÌ ¸â¹öÀÇ °ªÀº ÀÌ ¿äûÀÌ ¸¸µé¾îÁú¶§ ÀÔÁõµÇÁö ¾Ê´Â´Ù.

LineDevCaps
ŸÀÔ LINE_DEV_CAPS ÀÇ °¡º¯-Å©±â ±¸Á¶Ã¼ÀÇ °¡»óÁÖ¼Ò¸¦ ÁöÁ¤ÇÑ´Ù. ¼¼ºÎÀûÀÎ °ÍÀº ndistapi.h À» ºÁ¶ó.

NIC µå¶óÀ̹ö´Â ÀÌ ¿äûÀ» ¼º°øÀûÀ¸·Î ¿Ï¼ºÇϱâ À§Çؼ­ ¶óÀÎ ´É·Â Á¤º¸·Î ÀÌ ±¸Á¶Ã¼¸¦ ä¿î´Ù.

LineDevCaps ¿¡¼­ ±¸Á¶Ã¼´Â Àû¾îµµ ¿¹¾àµÈ sizeof(LINE_DEV_CAPS) ¹ÙÀÌÆ®¸¦ °¡Áø´Ù.

LINE_DEV_CAPS ÀÇ dwProviderInfoOffset ¸â¹ö¿¡ ÀÖ´Â Áö¿øµÈ Á¦°øÀÚ(provider) Á¤º¸´Â ¾Æ·¡ÀÇ Æ÷¸äÀ» °¡Á®¾ßÇÑ´Ù.:

MediaName\0ProviderName\0 

where 

MediaName Àº ISDN, SW56, FrameRelay, ±âŸ µîµî, ÀûÇÕÇÑ °ÍÀ¸·Î

and 

ProviderName Àº ¸¸¾à ÀÖ´Ù¸é, ÀåÄ¡ÀÇ Á¦Á¶¾÷ÀÚ(manufacturer)ÀÇ À̸§°ú ÀåÄ¡ÀÇ À¯ÀÏÇÑ À̸§ÀÌ´Ù.



¿¹¸¦µé¸é, SomeIHV Inc. ·ÎºÎÅÍ ISDN ÀåÄ¡ÀÇ µå¶óÀ̹ö´Â ½ºÆ®¸µ "ISDN\0SomeIHV\0" ¿¡ ´ëÇÑ Æ÷ÀÎÅÍ·Î dwProviderInfoOffset ¸â¹ö¸¦ ¼³Á¤ÇؾßÇÑ´Ù.

MiniportQueryInformation ÇÔ¼ö´Â ¾Æ·¡ÁßÀÇ Çϳª¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù.:
NDIS_STATUS_SUCCESS
NDIS_STATUS_PENDING
NDIS_STATUS_TAPI_NODRIVER
NDIS_STATUS_TAPI_RESOURCEUNAVAIL
NDIS_STATUS_FAILURE

OID_TAPI_GET_DEV_CONFIG

ÀÌ OID´Â ¹Ì´ÏÆ÷Æ®¿¡°Ô ƯÁ¤ÇÑ ¶óÀο¡ ÀÏ´ëÀÏ(one-to-one)·Î ¿¬°üµÈ ÀåÄ¡ÀÇ ÇöÀç ±¸¼ºÀ» ¸®ÅÏÇÒ °ÍÀ» ¿äûÇÑ´Ù.

ÀÌ ¿äû¿¡ ´ëÇÑ Áö¿øÀº Àǹ«ÀûÀÌ´Ù.

ÀÌ ¿äûÀº ¾Æ·¡¿¡ Á¤ÀÇµÈ NDIS_TAPI_GET_DEV_CONFIG ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù.:


typedef struct _NDIS_TAPI_GET_DEV_CONFIG { 

    IN ULONG        ulRequestID; 

    IN ULONG        ulDeviceID; 

    IN ULONG        ulDeviceClassSize; 

    IN ULONG        ulDeviceClassOffset; 

    OUT VAR_STRING  DeviceConfig; 

} NDIS_TAPI_GET_DEV_CONFIG, *PNDIS_TAPI_GET_DEV_CONFIG; 

ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹öµéÀº ¾Æ·¡ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.:

ulRequestID
¿¹¾àµÊ.

ulDeviceID
¿ä±¸µÉ ¶óÀÎ ÀåÄ¡¸¦ ÁöÁ¤ÇÑ´Ù. ÀÌ °ªÀº ¾ÕÀÇ OID_TAPI_PROVIDER_INITIALIZE ¿äû¿¡¼­ ¼³Á¤µÈ´Ù.

ulDeviceClassSize
ÀåÄ¡-Ŭ·¡½º ½ºÆ®¸µ¿¡ ÀÖ´Â ¹ÙÀÌÆ® ¼ö¸¦ ÁöÁ¤ÇÑ´Ù.

ulDeviceClassOffset
±¸¼ºÀÌ ¿ä±¸µÇ´Â ÀåÄ¡ÀÇ Å¬·¡½º¸¦ ÁöÁ¤ÇÏ´Â Ä«¿îÆ®µÈ °¡º¯-Å©±âÀÎ, 0-Á¾·á±îÁö ¹ÙÀÌÆ®¿¡¼­ ¿É¼ÂÀ» ÁöÁ¤ÇÑ´Ù. À¯È¿ÇÑ ÀåÄ¡ Ŭ·¡½º ½ºÆ¼¸µÀº ±×°ÍÀÌ "¶óÀÎ" ÀåÄ¡¿¡ Àû¿ëµÉ ¶§ OID_TAPI_GET_ID ¿äûÀ» À§Çؼ­ ÁöÁ¤µÈ ÀÌ·¯ÇÑ °Í°ú ¶È°°´Ù. (ulSelect ´Â °ª LINECALLSELECT_LINE¸¦ °¡Áø´Ù.)

DeviceConfig
¿¬°üµÈ ÀåÄ¡¸¦ À§ÇÑ ÀåÄ¡ ±¸¼º Á¤º¸¸¦ Æ÷ÇÔÇϱâ À§Çؼ­ ŸÀÔ VAR_STRING ÀÇ ±¸Á¶Ã¼ÀÇ °¡»ó ÁÖ¼Ò¸¦ ÁöÁ¤ÇÑ´Ù.

VAR_STRING ±¸Á¶Ã¼ÀÇ ulStringFormat ¸â¹ö´Â STRINGFORMAT_BINARY¿¡ ¼³Á¤µÇ¾î¾ß ÇÑ´Ù.

¹Ì´ÏÆ÷Æ®´Â ÀÌ ¿äûÀ» ¼º°øÀûÀ¸·Î ¿Ï¼ºÇϱâ À§Çؼ­ ÀåÄ¡ ±¸¼º Á¤º¸·Î ÀÌ ±¸Á¶Ã¼¸¦ ä¿î´Ù.

ÀϹÝÀûÀ¸·Î, NDIS_TAPI_GET_DEV_CONFIG ±¸Á¶Ã¼ÀÇ ³»¿ëÀº(contents) NIC µå¶óÀ̹öÀÇ ¶óÀΰú ÀåÄ¡ Ŭ·¡½º¿¡ ƯÁ¤ÀûÀÌ´Ù.

MiniportQueryInformation ÇÔ¼ö´Â ¾Æ·¡ÁßÀÇ Çϳª¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù.:
NDIS_STATUS_SUCCESS
NNDIS_STATUS_TAPI_INVALDEVICECLASS
NDIS_STATUS_TAPI_STRUCTURETOOSMALL
NDIS_STATUS_TAPI_NODRIVER
NDIS_STATUS_TAPI_RESOURCEUNAVAIL
NDIS_STATUS_FAILURE

OID_TAPI_GET_ID

ÀÌ OID´Â ¼±ÅÃµÈ ¶óÀÎ, ÁÖ¼Ò, ¶Ç´Â È£Ãâ°ú ¿¬°üµÈ ÁöÁ¤µÈ ÀåÄ¡ Ŭ·¡½º¿¡ ´ëÇÑ ÀåÄ¡¸¦ ¸®ÅÏÇÒ °ÍÀ» ¹Ì´ÏÆ÷Æ®¿¡°Ô ¿äûÇÑ´Ù.

ÀÌ ¿äû¿¡ ´ëÇÑ Áö¿øÀº Àǹ«ÀûÀÌ´Ù.

ÀÌ ¿äûÀº ¾Æ·¡¿¡ Á¤ÀÇµÈ NDIS_TAPI_GET_ID ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù.:


typedef struct _NDIS_TAPI_GET_ID { 

    IN ULONG        ulRequestID; 

    IN HDRV_LINE    hdLine; 

    IN ULONG        ulAddressID; 

    IN HDRV_CALL    hdCall; 

    IN ULONG        ulSelect; 

    IN ULONG        ulDeviceClassSize; 

    IN ULONG        ulDeviceClassOffset; 

    OUT VAR_STRING  DeviceID; 

} NDIS_TAPI_GET_ID, *PNDIS_TAPI_GET_ID; 

ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹öµéÀº ¾Æ·¡ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.:

ulRequestID
¿¹¾àµÊ.

hdLine
¶óÀο¡ ´ëÇÑ ¹Ì´ÏÆ÷Æ®ÀÇ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù.

ulAddressID
ÁÖ¾îÁø ¿ÀÇ ¶óÀÎ ÀåÄ¡»ó¿¡ ÀÖ´Â ÁÖ¼Ò¸¦ ÁöÁ¤ÇÑ´Ù. ÀÌ ¸â¹öÀÇ °ªÀº ÀÌ ¿äûÀÌ ¸¸µé¾îÁú¶§ NDISTAPI ¿¡ ÀÇÇØ¼­ ÀÔÁõµÇÁö(validated) ¾Ê´Â´Ù.

hdCall
È£Ãâ¿¡ ´ëÇÑ ¹Ì´ÏÆ÷Æ®ÀÇ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù.

ulSelect
ÀåÄ¡ ID°¡ ¶óÀÎ, ÁÖ¼Ò ¶Ç´Â ¾Æ·¡ÁßÀÇ Çϳª·Î½á ½Ìµé È£ÃâÀÎÁö¸¦ ÁöÁ¤ÇÑ´Ù.:

LINECALLSELECT_LINE
ÁöÁ¤µÈ ¶óÀÎ ÀåÄ¡¸¦ ¼±ÅÃÇÑ´Ù. hdLine ¸â¹ö´Â À¯È¿ÇÑ ¶óÀÎ ÇÚµéÀ» Æ÷ÇÔÇØ¾ß ÇÑ´Ù; hdCall ¿Í ulAddressID´Â »ç¿ëµÇÁö ¾Ê´Â´Ù.

LINECALLSELECT_ADDRESS
¶óÀÎ»ó¿¡ ÀÖ´Â ÁöÁ¤µÈ ÁÖ¼Ò¸¦ ¼±ÅÃÇÑ´Ù. hdLine ¿Í ulAddressID ¸ðµÎ À¯È¿ÇؾßÇÑ´Ù.; hdCall ´Â »ç¿ëµÈÁö ¾Ê´Â´Ù.

LINECALLSELECT_CALL
ÁöÁ¤µÈ È£ÃâÀ» ¼±ÅÃÇÑ´Ù. hdCall ¸â¹ö´Â ÀÔÁõµÇ¾î¾ß ÇÑ´Ù.; hdLine ¿Í ulAddressID´Â »ç¿ëµÇÁö ¾Ê´Â´Ù.

ulDeviceClassSize
¸®ÅϵǾî¾ß ÇÏ´Â ±¸¼ºÀ» À§ÇÑ ÀåÄ¡ÀÇ ÀåÄ¡ Ŭ·¡½º¸¦ ÁöÁ¤ÇÏ´Â °¡º¯-Å©±â ½ºÆ®¸µÀÎ 0-Á¾·áµÇ´Â ¹ÙÀÌÆ® Å©±â¸¦ ÁöÁ¤ÇÑ´Ù.

ulDeviceClassOffset
ÀåÄ¡-Ŭ·¡½º ½ºÆ®¸µ¿¡ ´ëÇÑ ¹ÙÀÌÆ® ¿É¼ÂÀ» ÁöÁ¤ÇÑ´Ù.

DeviceID
¸®ÅϵǾî¾ß ÇÏ´Â ÀåÄ¡ ID ¿¡ Àִ ŸÀÔ VAR_STRING ÀÇ µ¥ÀÌÆ® ±¸Á¶Ã¼ÀÇ °¡»ó ÁÖ¼Ò¸¦ ÁöÁ¤ÇÑ´Ù.

¹Ì´ÏÆ÷Æ®´Â ÀÌ ¿äûÀ» ¼º°øÀûÀ¸·Î ¿Ï¼ºÇϱâ À§Çؼ­ ÀåÄ¡ ID·Î ÀÌ ±¸Á¶Ã¼¸¦ ä¿î´Ù.

ÇöÀç, WAN NIC µå¶óÀ̹ö¿¡ ÀÇÇØ¼­ Áö¿øµÇ¾î¾ß ÇÏ´Â ÀÌ ¿äûµéÀÇ 2°¡Áö ŸÀÔÀÌ ÀÖ´Ù.:


1. IN DeviceClass = "ndis" // ´ë¼Ò¹®ÀÚ ±¸ºÐ ¾ÈÇÔ(case insensitive)

IN ulSelect = LINECALLSELECT_CALL

IN hdCall = ActiveCallHandle

OUT DeviceID = ConnectionWrapperID 



DeviceID ´Â ¸µÅ©¸¦ ¼³¸³Çϱâ À§Çؼ­ óÀ½ÀÇ NDIS_STATUS_WAN_LINE_UP ¾Ë¸²¿¡ ´ëÇÑ NDIS_MAC_LINE_UP ±¸Á¶Ã¼¿¡¼­ NDISWAN ¿¡ ÀÇÇØ¼­ ¸®ÅÏµÈ NdisLinkContext Çڵ鿡 ¼³Á¤µÇ¾î¾ß ÇÑ´Ù.



¹Ì´ÏÆ÷Æ®´Â ÀÌ DeviceID °ªÀ» Áö¿øÇϱâ À§Çؼ­ ÀÌ ¿äûÀ¸·ÎºÎÅÍ ¸®ÅϵDZâ Àü¿¡, ¸µÅ©¸¦ ¼³¸³Çϱâ À§Çؼ­(¶Ç´Â ¶óÀÎ»ó¿¡ ÀÖ´Â µ¥ÀÌÅÍ Ã¤³ÎÀ» ¿ÀÇÂÇϱâ À§Çؼ­) óÀ½ÀÇ ¶óÀÎ-¾÷ ¾Ë¸²À» ¸¸µé¾î¾ß ÇÑ´Ù.





2. IN DeviceClass = "tapi/line"

IN ulSelect = LINECALLSELECT_LINE

IN hdLine = OpenLineHandle

OUT DeviceID = ulDeviceID 



DeviceID ´Â ¶óÀÎ ÇÚµé°ú ¿¬°üµÈ ¹Ì´ÏÆ÷Æ®-°áÁ¤µÈ(miniport-determined) DeviceID ¿¡ ¼³Á¤µÉ °ÍÀÌ´Ù.

MiniportQueryInformation ÇÔ¼ö´Â ¾Æ·¡ÁßÀÇ Çϳª¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù.:
NDIS_STATUS_SUCCESS
NDIS_STATUS_PENDING
NDIS_STATUS_TAPI_INVALLINEHANDLE
NDIS_STATUS_TAPI_INVALADDRESSID
NDIS_STATUS_TAPI_INVALCALLHANDLE
NDIS_STATUS_TAPI_NODEVICE
NDIS_STATUS_TAPI_RESOURCEUNAVAIL
NDIS_STATUS_FAILURE

OID_TAPI_GET_LINE_DEV_STATUS

ÀÌ OID´Â ÁöÁ¤µÈ ¿ÀÇ ¶óÀÎ ÀåÄ¡¿¡ ´ëÇÑ ÇöÀç»óŸ¦ ¸®ÅÏÇÒ °ÍÀ» ¹Ì´ÏÆ÷Æ®¿¡°Ô ¿äûÇÑ´Ù. ¸®ÅÏµÈ Á¤º¸´Â ¶óÀÎ»ó¿¡ ÀÖ´Â ¸ðµç Áּҵ鿡°Ô Àü¿ªÀÌ´Ù(global).

ÀÌ ¿äû¿¡ ´ëÇÑ Áö¿øÀº Àǹ«ÀûÀÌ´Ù.

ÀÌ ¿äûÀº ¾Æ·¡¿¡ Á¤ÀÇµÈ NDIS_TAPI_GET_LINE_DEV_STATUS ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù.:


typedef struct _NDIS_TAPI_GET_LINE_DEV_STATUS { 

    IN ULONG             ulRequestID; 

    IN HDRV_LINE         hdLine; 

    OUT LINE_DEV_STATUS  LineDevStatus; 

} NDIS_TAPI_GET_LINE_DEV_STATUS, *PNDIS_TAPI_GET_LINE_DEV_STATUS; 

ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹öµéÀº ¾Æ·¡ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.:

ulRequestID
¿¹¾àµÊ.

hdLine
¿ä±¸µÇ´Â ÀåÄ¡¿¡ ´ëÇÑ ¹Ì´ÏÆ÷Æ®ÀÇ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù.

LineDevStatus
ŸÀÔ LINE_DEV_STATUSÀÇ °¡º¯-Å©±â ±¸Á¶Ã¼¸¦ ÁöÁ¤ÇÑ´Ù.

Specifies a variable-sized structure of type LINE_DEV_STATUS. ¼¼ºÎÀûÀÎ °ÍÀº ndistapi.h À» ºÁ¶ó.

¹Ì´ÏÆ÷Æ®´Â ÀÌ ¿äûÀ» ¿Ï¼ºÇϱâ À§Çؼ­ ¶óÀÎÀÇ ÇöÀç ÀåÄ¡ »óÅ·ΠÀÌ ±¸Á¶Ã¼·Î ä¿ï °ÍÀÌ´Ù.

LineDevStatus
LineDevStatus ¿¡¼­ ±¸Á¶Ã¼´Â Àû¾îµµ ¿¹¾àµÈ sizeof(LINE_DEV_STATUS) ¹ÙÀÌÆ®¸¦ °¡Áø´Ù.

MiniportQueryInformation ÇÔ¼ö´Â ¾Æ·¡ÁßÀÇ Çϳª¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù.:
NDIS_STATUS_SUCCESS
NDIS_STATUS_PENDING
NDIS_STATUS_TAPI_INVALLINEHANDLE
NDIS_STATUS_TAPI_RESOURCEUNAVAIL
NDIS_STATUS_FAILURE

OID_TAPI_MAKE_CALL

ÀÌ OID´Â ÁöÁ¤µÈ ¸ñÀûÁö ÁÖ¼Ò¿¡ ÁöÁ¤µÈ ¶óÀÎ»ó¿¡ È£ÃâÀ» ³õÀ» °ÍÀ» ¹Ì´ÏÆ÷Æ®¿¡°Ô ¿äûÇÑ´Ù. Ãß°¡ÀûÀ¸·Î, ¸¸¾à ¹Ì´ÏÆ÷Æ®°¡ ±âº» È£Ãâ-¼³Á¤(call-setup) ÆÄ¶ó¹ÌÅ͵麸´Ù ¾î¶²°ÍÀ» »ç¿ëÇÑ´Ù¸é, Ãß°¡ÀûÀΠȣÃâ ÆÄ¶ó¹ÌÅ͵éÀº ÁöÁ¤µÉ ¼ö ÀÖ´Ù.

ÀÌ ¿äû¿¡ ´ëÇÑ Áö¿øÀº Àǹ«ÀûÀÌ´Ù.

ÀÌ ¿äûÀº ¾Æ·¡¿¡ Á¤ÀÇµÈ NDIS_TAPI_MAKE_CALL ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù.:


typedef struct _NDIS_TAPI_MAKE_CALL { 

    IN ULONG             ulRequestID; 

    IN HDRV_LINE         hdLine; 

    IN HTAPI_CALL        htCall; 

    OUT HDRV_CALL        hdCall; 

    IN ULONG             ulDestAddressSize; 

    IN ULONG             ulDestAddressOffset; 

    IN BOOLEAN           bUseDefaultLineCallParams; 

    IN LINE_CALL_PARAMS  LineCallParams; 

} NDIS_TAPI_MAKE_CALL, *PNDIS_TAPI_MAKE_CALL; 

ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹öµéÀº ¾Æ·¡ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.:

ulRequestID
¿¹¾àµÊ.

hdLine
¹ß»ýµÇ´Â »õ·Î¿î È£Ãâ»ó¿¡ ÀÖ´Â ¶óÀο¡ ´ëÇÑ ¹Ì´ÏÆ÷Æ®ÀÇ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù.

htCall
È£Ãâ¿¡ ´ëÇÑ NDISTAPIÀÇ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù.

¹Ì´ÏÆ÷Æ®´Â ´ÙÀ½ÀÇ ÅëÁöµé¿¡¼­ »ç¿ëÀ» À§Çؼ­, Ưº°È÷ ¸µÅ©³ª µ¥ÀÌÅÍ Ã¤³ÎÀ» ¼³¸³Çϱâ À§Çؼ­ óÀ½ÀÇ NDIS_MAC_LINE_UP ÅëÁöµé, ÀÌ ÇÚµéÀ» ÀúÀåÇÑ´Ù.

hdCall
È£Ãâ¿¡ ´ëÇÑ ¹Ì´ÏÆ÷Æ®ÀÇ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù. ¹Ì´ÏÆ÷Æ®´Â ÀÌ ¿äûÀÌ ¼º°øÀûÀ¸·Î ¿Ï¼ºÇϱâÀü¿¡ È£Ãâ¿¡ ´ëÇÑ ±×°ÍÀÇ ÇÚµé·Î ÀÌ ¸â¹ö¸¦ ä¿ö¾ßÇÑ´Ù. ÀÌ ÇÚµéÀº ¸¸¾à ¹Ì´ÏÆ÷Æ®°¡ ¿¡·¯ »óŸ¦ ¸®ÅÏÇÑ´Ù¸é ¹«½ÃµÈ´Ù.

ulDestAddressSize
¸ñÀûÁö ÁÖ¼Ò¸¦ Æ÷ÇÔÇÏ´Â ulDestAddressOffset ¿¡¼­ °¡º¯-Å©±â ¹öÆÛÀÇ ¹ÙÀÌÆ® Å©±â¸¦ ÁöÁ¤ÇÑ´Ù.

ÀÌ ¸â¹ö´Â Ç×»ó ÀÚµ¿ÀûÀ¸·Î ¹Ì¸®Á¤ÀÇµÈ ¹øÈ£¿¡ ¿¬°áÇÏ´Â ÇÖ Æù(hot phone)°°Àº undialed ÁÖ¼ÒµéÀ» À§Çؼ­ ¶Ç´Â ¶Ç´Â ´ÙÀ̾ó¸µÀÌ OID_TAPI_DIAL ¿äûÀÌ ´ÙÀ½¿¡ ÇàÇØÁú ¶§ 0ÀÌ µÉ ¼ö ÀÖ´Ù.

ulDestAddressOffset
ÀÌ ±¸Á¶Ã¼ÀÇ ½ÃÀÛºÎÅÍ ¸ñÀûÁö ÁÖ¼Ò±îÁö ¹ÙÀÌÆ® ¿É¼ÂÀ» ÁöÁ¤ÇÑ´Ù. ÀÌ ¸ñÀûÁö ÁּҴ ǥÁØ dialable ³Ñ¹ö Æ÷¸ËÀÌ´Ù. ¸¸¾à ulDestAddressSize °¡ 0À̸é, ÀÌ ¸â¹ö´Â 0 ÀÏ ¼ö ÀÖ´Ù. ¸¸¾à ´ÙÀ̾ó¸µÀÌ OID_TAPI_DIAL ¿äûÀÌ ´ÙÀ½¿¡ ÇàÇØÁú °ÍÀ̶ó¸é, µå¶óÀ̹ö´Â ÀÌ ¿äûÀ» ¹Þ´Â Áï½Ã °¡´ÉÇÑ È£Ãâ ÃâÇö(appearance)À» ÇÒ´çÇØ¾ßÇϰí, ´ÙÀ̾óÀÌ ½ÃÀÛÇÒ¶§±îÁö ´ÙÀ̾óÅæ »óŸ¦ À¯ÁöÇØ¾ßÇÑ´Ù.

¹Ý´ëÀÇ(inverse) ¸ÖƼÇ÷º½Ì ´É·ÂµéÀ» °¡Áö´Â NICµéÀÇ µå¶óÀ̹öµéÀº ¾îÇø®ÄÉÀ̼ÇÀÌ Çѹø¿¡ ¸¹Àº ÁÖ¼ÒµéÀ» ÁöÁ¤ÇÏ´Â °ÍÀ» Çã¶ôÇÒ ¼ö ÀÖ´Ù.

bUseDefaultLineCallParams
¹Ì´ÏÆ÷Æ®°¡ ±âº» È£Ãâ-¼³Á¤ ÆÄ¶ó¹ÌÅ͵éÀ» »ç¿ëÇÒ °ÍÀÎÁö ¶Ç´Â È£Ãâ ¸¸µé¶§ LineCallParams ¿¡ ÀÖ´Â ÁöÁ¤µÈ ÆÄ¶ó¹ÌÅ͵éÀ» »ç¿ëÇÒ °ÍÀÎÁö¸¦ ÁöÁ¤ÇÑ´Ù. ¸¸¾à ÀÌ ¸â¹ö°¡ FALSE À̸é, µå¶óÀ̹ö´Â LineCallParams¸¦ ¹«½ÃÇØ¾ß ÇÑ´Ù.

LineCallParams
ÀÌ ¸â¹ö¿¡ ÀÖ´Â LINE_CALL_PARAMS ±¸Á¶Ã¼´Â ¾î¶»°Ô È£ÃâÀÌ ¼³Á¤µÉ ¼ö ÀÖ´ÂÁö¸¦ ÁöÁ¤ÇÑ´Ù. ±×°ÍÀº È£ÃâÀÇ Àü´ÞÀÚ(bearer) ¸ðµå, µ¥ÀÌÅÍ ºñÀ²(rate), ¿¹±âµÈ ¹Ìµð¾î ¸ðµå, origination address, È£Ãâ ID Á¤º¸ÀÇ ºí·¯Å·, ±×¸®°í ´ÙÀÌ¾ó¸µ ÆÄ¶ó¹ÌÅ͵é°ú °°Àº ¿¤·¯¸ÕÆ®(elements)¸¦ ¼±ÅÃÇÑ´Ù. ¼¼ºÎÀûÀÎ °ÍÀº ndistapi.h À» ºÁ¶ó.

¾ÕÀÇ ¿ÀÇÂµÈ ¶óÀÎ»ó¿¡ ÅÚ·¹Æ÷´Ï È£ÃâÀ» ³õ±â À§Çؼ­, ¾îÇø®ÄÉÀ̼ÇÀº ÁöÁ¤ÇÑ ¸ñÀûÁö ÁÖ¼Ò¿Í ¾î¶»°Ô ÅÚ·¹Æ÷´Ï È£ÃâÀÌ ¼³Á¤µÉ ¼ö ÀÖ´ÂÁö¸¦ ÁöÁ¤ÇÏ´Â Á¤º¸¸¦ ÁöÁ¤ÇÑ´Ù. NDISWAN µå¶óÀ̹ö´Â ÀÌ ÁÖ¼Ò¿Í Á¤º¸¸¦ ¼ö½ÅÇϰí, ÁÖ¾îÁø ¶óÀÎ»ó¿¡ È£ÃâÀ» ³õ±â À§Çؼ­ WAN ¹Ì´ÏÆ÷Æ®¿¡°Ô NDIS_TAPI_MAKE_CALL ±¸Á¶Ã¼¿¡ ±×µéÀ» ¾Æ·¡·Î Åë°ú½ÃŲ´Ù. ¿¹¸¦µé¸é, ¾Æ·¡ÀÇ X.25 ³×Æ®¿öÅ©¸¦ À§Çؼ­, X.25 WAN ¹Ì´ÏÆ÷Æ®´Â NDIS_TAPI_MAKE_CALL·ÎºÎÅÍ ¾Æ·¡ÀÇ Á¤º¸¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Ù.:

  • ulDestAddressOffset ¸â¹ö·ÎºÎÅÍ X.25 ³×Æ®¿öÅ© ÁÖ¼Ò
  • LineCallParams ¸â¹ö¿¡¼­ È£Ãâ ÆÄ¶ó¹ÌÅ͵éÀ» »ç¿ëÇÒ °ÍÀ» X.25 WAN ¹Ì´ÏÆ÷Æ®¿¡°Ô ¾Ë¸®±â À§Çؼ­ bUseDefaultLineCallParams ¸â¹ö·ÎºÎÅÍ TRUE
  • LineCallParams ¸â¹öÀÇ ulDevSpecificOffset ¸â¹ö·ÎºÎÅÍ X.25-facilities Á¤º¸
  • LineCallParams ¸â¹öÀÇ ulUserUserInfoOffset ¸â¹ö·ÎºÎÅÍ X.25-user Á¤º¸

MiniportQueryInformation ÇÔ¼ö´Â ¾Æ·¡ÁßÀÇ Çϳª¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù.:
NDIS_STATUS_SUCCESS
NDIS_STATUS_PENDING
NDIS_STATUS_TAPI_ADDRESSBLOCKED
NDIS_STATUS_TAPI_BEARERMODEUNAVAIL
NDIS_STATUS_TAPI_CALLUNAVAIL
NDIS_STATUS_TAPI_DIALBILLING
NDIS_STATUS_TAPI_DIALQUIET
NDIS_STATUS_TAPI_DIALDIALTONE
NDIS_STATUS_TAPI_DIALPROMPT
NDIS_STATUS_TAPI_INUSE
NDIS_STATUS_TAPI_INVALBEARERMODE
NDIS_STATUS_TAPI_INVALMEDIAMODE
NDIS_STATUS_TAPI_INVALLINESTATE
NDIS_STATUS_TAPI_INVALRATE
NDIS_STATUS_TAPI_INVALLINEHANDLE
NDIS_STATUS_TAPI_INVALADDRESS
NDIS_STATUS_TAPI_INVALADDRESSID
NDIS_STATUS_TAPI_INVALCALLPARAMS
NDIS_STATUS_TAPI_RESOURCEUNAVAIL
NDIS_STATUS_TAPI_RATEUNAVAIL
NDIS_STATUS_TAPI_USERUSERINFOTOOBIG
NDIS_STATUS_FAILURE

OID_TAPI_OPEN

ÀÌ OID´Â ÁÖ¾îÁø ÀåÄ¡ ID ¿¡ ÀÇÇØ¼­ ³ªÅ¸³­(designated) ¶óÀÎ ÀåÄ¡¸¦ ¿­°ÍÀ» ¹Ì´ÏÆ÷Æ®¿¡°Ô ¿äûÇϰí ÀåÄ¡¿¡ ´ëÇÑ NIC µå¶óÀ̹öÀÇ ÇÚµéÀ» ¸®ÅÏÇÑ´Ù.

ÀÌ ¿äû¿¡ ´ëÇÑ Áö¿øÀº Àǹ«ÀûÀÌ´Ù.

ÀÌ ¿äûÀº ¾Æ·¡¿¡ Á¤ÀÇµÈ NDIS_TAPI_OPEN ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù.:


typedef struct _NDIS_TAPI_OPEN { 

    IN ULONG       ulRequestID; 

    IN ULONG       ulDeviceID; 

    IN HTAPI_LINE  htLine; 

    OUT HDRV_LINE  hdLine; 

} NDIS_TAPI_OPEN, *PNDIS_TAPI_OPEN; 

ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹öµéÀº ¾Æ·¡ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.:

ulRequestID
¿¹¾àµÊ.

ulDeviceID
¿ä±¸µÇ´Â ¶óÀÎ ÀåÃ÷¸¦ ÁöÁ¤ÇÑ´Ù. À̰ÍÀº ¾ÕÀÇ OID_TAPI_PROVIDER_INITIALIZE ¿äû¿¡¼­ ¼³Á¤µÈ´Ù.

htLine
¶óÀÎÀ» ½Äº°Çϱâ À§Çؼ­ LINE_EVENT Äݹé ÇÁ·Î½ÃÁ®¿¡ ´ÙÀ½ÀÇ È£Ãâ¿¡ »ç¿ëµÇ±â À§ÇÑ ¶óÀÎ ÀåÄ¡¿¡ ´ëÇÑ NDISTAPIÀÇ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù.

hdLine
¶óÀÎ ÀåÄ¡¿¡ ´ëÇÑ ¹Ì´ÏÆ÷Æ® NIC µå¶óÀ̹öÀÇ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù.

NIC µå¶óÀ̹ö´Â ÀÌ ¿äûÀ» ¼º°øÀûÀ¸·Î ¿Ï¼ºÇϱâ À§Çؼ­ ¶óÀÎ ÀåÄ¡¿¡ ´ëÇÑ ±×°ÍÀÇ ÇÚµé·Î ÀÌ À§Ä¡¸¦ ä¿î´Ù. ¸¸¾à ¹Ì´ÏÆ÷Æ®°¡ ÀÌ ¿äûÀ» ¿¡·¯ »óÅ·Π¿Ï¼ºÇÑ´Ù¸é ÀÌ ÇÚµéÀº ¹«½ÃµÈ´Ù.

MiniportQueryInformation ÇÔ¼ö´Â ¾Æ·¡ÁßÀÇ Çϳª¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù.:
NDIS_STATUS_SUCCESS
NDIS_STATUS_PENDING
NDIS_STATUS_TAPI_ALLOCATED
NDIS_STATUS_TAPI_INVALMEDIAMODE
NDIS_STATUS_FAILURE

¹Ì´ÏÆ÷Æ®´Â LINE_EVENT ±¸Á¶Ã¼¸¦ »ç¿ëÇÔÀ¸·Î½á ´ÙÀ½ÀÇ NDIS_TAPI_EVENT ÅëÁöµé¿¡ »ç¿ëÀ» À§Çؼ­ NDISTAPI ¿¡ ÀÇÇØ¼­ Á¦°øµÈ ÀåÄ¡¸¦ À§ÇÑ htLine ÇÚµéÀ» À¯ÁöÇÑ´Ù.

OID_TAPI_PROVIDER_INITIALIZE

ÀÌ OID ´Â ¹Ì´ÏÆ÷Æ®°¡ TAPI Á¦°øÀڷμ­ ±× ÀÚü¸¦ ÃʱâÈ­ÇÒ °ÍÀ» ¿äûÇÑ´Ù. µå¶óÀ̹ö´Â TAPI·ÎºÎÅÍ µé¾î¿À´Â ¿äûµéÀ» ´õµë±â(track)À§Çؼ­ »ç¿ëÇÏ´Â ³»ºÎÀÇ »óŰ¡ ¹«¾ùÀ̵çÁö ¼³Á¤ÇؾßÇÑ´Ù.

ÀÌ ¿äû¿¡ ´ëÇÑ Áö¿øÀº Àǹ«ÀûÀÌ´Ù.

ÀÌ ¿äûÀº ¾Æ·¡¿¡ Á¤ÀÇµÈ NDIS_TAPI_PROVIDER_INITITIALIZE ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù.:


typedef struct _NDIS_TAPI_PROVIDER_INITIALIZE { 

    IN ULONG   ulRequestID; 

    IN ULONG   ulDeviceIDBase; 

    OUT ULONG  ulNumLineDevs; 

    OUT ULONG  ulProviderID; 

} NDIS_TAPI_PROVIDER_INITIALIZE, *PNDIS_TAPI_PROVIDER_INITIALIZE; 

ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹öµéÀº ¾Æ·¡ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.:

ulRequestID
¿¹¾àµÊ.

ulDeviceIDBase
¹Ì´ÏÆ÷Æ®¿¡ ÀÇÇØ¼­ Áö¿øµÈ ¶óÀÎ ÀåÄ¡µé¿¡ ´ëÇÑ ÃÖÇÏÀ§(lowest) ÀåÄ¡ ID¸¦ ÁöÁ¤ÇÑ´Ù. ÀÌ ¿äû ´ÙÀ½¿¡, µå¶óÀ̹ö´Â 0-±âÃÊµÈ ¶óÀÎ ÀåÄ¡ ½Äº°ÀÚ °ªÀ¸·Î½á ÀÌ °ªÀ» »ç¿ëÇÑ´Ù. ±×°ÍÀº, ¸¸¾à ulNumLineDevs ÀÌ 1º¸´Ù Å©´Ù¸é, ulDeviceID °ªÀº Â÷·Ê·Î ù¹øÂ° ¶óÀο¡ ´ëÇÑ ÀÌ °ªÀ» Æ÷ÇÔÇÏ´Â OID_TAPI_OPEN °ú °°Àº ¿äû¿¡ Åë°ú½Ã۰í, ÀÌ °ªÀº µÎ¹øÂ° ¶óÀÎÀ» À§Çؼ­ Çϳª¸¦ ´õÇϰí, µîµî

ulNumLineDevs
ÀÌ ¿äûÀ» ¼º°øÀûÀ» ¿Ï¼ºÇϱâ À§Çؼ­ ¹Ì´ÏÆ÷Æ®¿¡ ÀÇÇØ¼­ Áö¿øµÈ ¶óÀÎ ÀåÄ¡µéÀÇ ¼ö¸¦ ÁöÁ¤ÇÏ´Ù.

ulProviderID
¸¸¾à ¿äûÀÌ ¼º°øÀûÀ¸·Î ¿Ï¼ºµÈ´Ù¸é, WAN NIC µå¶óÀ̹ö¸¦ À§ÇÑ ID¸¦ ÁöÁ¤ÇÑ´Ù. ÀÌ °ªÀº TAPI¸¦ Áö¿øÇÏ´Â WAN µå¶óÀ̹öµéÀÇ ÁýÇÕ³»¿¡¼­ À¯ÀÏÇØ¾ßÇÑ´Ù.; MiniportInitialize ÇÔ¼ö¿¡ Åë°úµÈ NdisMiniportContext ÇÚµéÀº º¸ÁõµÈ À¯ÀÏÇÑ °ªÀ» Á¦°øÇϱâ À§Çؼ­ »ç¿ëµÉ ¼ö ÀÖ´Ù.

MiniportQueryInformation ÇÔ¼ö´Â ¾Æ·¡ÁßÀÇ Çϳª¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù.:
NDIS_STATUS_SUCCESS
NDIS_STATUS_PENDING
NDIS_STATUS_TAPI_RESOURCEUNAVAIL
NDIS_STATUS_FAILURE

OID_TAPI_CONFIG_DIALOG

ÀÌ OID ´Â ÁöÁ¤µÈ ÀåÄ¡¸¦ ±¸¼ºÇϱâ À§Çؼ­ ·ÎµåµÇ°í È£ÃâµÉ ¼ö ÀÖ´Â »ç¿ëÀÚ-¸ðµå µ¿Àû-¸µÅ© ¶óÀ̺귯¸®ÀÇ À̸§À» ¸®ÅÏÇÒ °ÍÀ» ¹Ì´ÏÆ÷Æ®¿¡°Ô ¿äûÇÑ´Ù.

±×·± ±¸¼º DLLÀº ¾Æ·¡ÀÇ ÇÔ¼ö¸¦ À̸§¼øÀ¸·Î ÀͽºÆ÷Æ® ÇÑ´Ù.:

LONG
WINAPI
ConfigDialog(
IN HWND hwndOwner,
IN ULONG ulDeviceID,
IN LPCSTR lpszDeviceClass
);

ÀÌ ¿äû¿¡ ´ëÇÑ Áö¿øÀº Ãß°¡ÀûÀÌ´Ù. ÀÌ ¿äûÀº RAS¿¡ ÀÇÇØ¼­ ¸¸µé¾îÁöÁö ¾Ê´Â´Ù.

¾Æ·¡¿¡ Á¤ÀÇµÈ NDIS_TAPI_CONFIG_DIALOG ±¸Á¶Ã¼´Â ÁöÁ¤µÈ ÀåÄ¡¸¦ ±¸¼ºÇϱâ À§Çؼ­ È£ÃâµÉ ¼ö ÀÖ´Â »ç¿ëÀÚ-¸ðµå µ¿Àû ¸µÅ© ¶óÀ̺귯¸®ÀÇ À̸§À» ȸ¼öÇϱâ À§Çؼ­ ÀÌ OID¸¦ °¡Áö°í »ç¿ëµÈ´Ù.


typedef struct _NDIS_TAPI_CONFIG_DIALOG { 

    IN ULONG  ulRequestID; 

    IN ULONG  ulDeviceID; 

    IN ULONG  ulDeviceClassSize; 

    IN ULONG  ulDeviceClassOffset; 

    IN ULONG  ulLibraryNameTotalSize; 

    OUT ULONG ulLibraryNameNeededSize; 

    OUT CHAR  szLibraryName[1]; 

} NDIS_TAPI_CONFIG_DIALOG, *PNDIS_TAPI_CONFIG_DIALOG; 

ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹öµéÀº ¾Æ·¡ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.:

ulRequestID
¿¹¾àµÊ.

ulDeviceID
±¸¼ºµÇ¾î¾ßÇÒ ¶óÀÎ ÀåÄ¡¸¦ ÁöÁ¤ÇÑ´Ù. À̰ÍÀº ¾ÕÀÇ OID_TAPI_PROVIDER_INITIALIZE ¿äû¿¡¼­ ¼³Á¤µÈ´Ù.

ulDeviceClassSize
ÀåÄ¡-Ŭ·¡½º ½ºÆ®¸µÀÇ ¹ÙÀÌÆ® Å©±â¸¦ ÁöÁ¤ÇÑ´Ù.

ulDeviceClassOffset
±¸¼ºÀÌ ¿ä±¸µÇ´Â ÀåÄ¡ÀÇ Å¬·¡½º¸¦ ÁöÁ¤ÇÏ´Â Ä«¿îÆ®µÈ °¡º¯-Å©±âÀÎ, 0-Á¾·á±îÁö ¹ÙÀÌÆ®¿¡¼­ ¿É¼ÂÀ» ÁöÁ¤ÇÑ´Ù. À¯È¿ÇÑ ÀåÄ¡ Ŭ·¡½º ½ºÆ¼¸µÀº ±×°ÍÀÌ "¶óÀÎ" ÀåÄ¡¿¡ Àû¿ëµÉ ¶§ OID_TAPI_GET_ID ¿äûÀ» À§Çؼ­ ÁöÁ¤µÈ ÀÌ·¯ÇÑ °Í°ú ¶È°°´Ù. (ulSelect ´Â °ª LINECALLSELECT_LINE¸¦ °¡Áø´Ù.)

ulLibraryNameTotalSize
szLibraryName ¸â¹öÀÇ ¹ÙÀÌÆ® Å©±â¸¦ ÁöÁ¤ÇÑ´Ù.

ulLibraryNameNeededSize
¸ðµç ¸®ÅÏµÈ Á¤º¸¸¦ º¸À¯Çϱâ(hold)À§Çؼ­ ÇÊ¿äÇÑ ¹ÙÀÌÆ® Å©±â¸¦ ÁöÁ¤ÇÏ´Ù.

szLibraryName
¿äûµÈ ÀåÄ¡¿¡ ´ëÇÑ ±¸¼º DLLÀ» À̸§À¸·Î ÇÏ´Â(nameing) 0-Á¾·áµÈ ½ºÆ®¸µÀ» À§ÇÑ °ø°£À» ÁöÁ¤ÇÑ´Ù. NamesÀº ±âº» °æ·Î¿Í È®ÀåµéÀ» °áÁ¤Çϱâ À§ÇÑ Win32 LoadLibrary ¿¡ ÀÇÇØ¼­ »ç¿ëµÈ ·ê¿¡ Á¿ìµÉ(subject) ¿Ï¼º °æ·Î¿Í È®ÀåµéÀ» Æ÷ÇÔÇÏÁö ¾Ê´Â´Ù. ¸¸¾à ¹Ì´ÏÆ÷Æ®°¡ ÀÌ ¹öÆÛ°¡ ¸ðµç Á¤º¸¸¦ º¸À¯Çϴµ¥ ³Ê¹« ÀÛ´Ù¸é, ±×°ÍÀº ulLibraryNameNeededSize ¸â¹ö¿¡ ÇÊ¿äÇÑ Å©±â¸¦ ÁöÁ¤ÇؾßÇϰí, NDIS_STATUS_TAPI_STRUCTURETOOSMALL ¿¡·¯¸¦ ¸®ÅÏÇØ¾ßÇÑ´Ù.

MiniportQueryInformation ÇÔ¼ö´Â ¾Æ·¡ÁßÀÇ Çϳª¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù.:
NDIS_STATUS_SUCCESS
NDIS_STATUS_PENDING
NDIS_STATUS_TAPI_STRUCTURETOOSMALL
NDIS_STATUS_TAPI_INVALDEVICECLASS
NDIS_STATUS_TAPI_OPERATIONUNAVAIL
NDIS_STATUS_TAPI_RESOURCEUNAVAIL
NDIS_STATUS_FAILURE

OID_TAPI_DEV_SPECIFIC

ÀÌ OID´Â ´Ù¸¥ OID ¿äûµéÀ» ÅëÇØ¼­ Á¢±ÙµÉ ¼ö ¾ø´Â Çüŵ鿡(features) Á¢±ÙÀ» Á¦°øÇÒ °ÍÀ» ¹Ì´ÏÆ÷Æ®¿¡°Ô ¿äûÇÑ´Ù. È®ÀåÀÇ Àǹ̴ ÀåÄ¡-ƯÁ¤À̾, ¾îÇø®ÄÉÀ̼ÇÀº ÀÌ·± È®ÀåµéÀ» ÀÌ¿ëÇϱâ À§Çؼ­ ±×µéÀ» ¿ÏÀüÈ÷ ¾Ë¾Æ¾ßÇÑ´Ù.

ÀÌ ¿äû¿¡ ´ëÇÑ Áö¿øÀº Ãß°¡ÀûÀÌ´Ù.

ÀÌ ¿äûÀº ´Ù¸¥ TAPI OID ¿äûµé¿¡ ÁöÁ¤µÇÁö ¾ÊÀº Çüŵ鿡 ´ëÇÑ Á¢±ÙÀ» Äõ¸®Çϰí Á¢±ÙÇϱâ À§Çؼ­ ¾Æ·¡¿¡ Á¤ÀÇµÈ NDIS_TAPI_DEV_SPECIFIC ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù.:


typedef struct _NDIS_TAPI_DEV_SPECIFIC { 

    IN ULONG      ulRequestID; 

    IN HDRV_LINE  hdLine; 

    IN ULONG      ulAddressID; 

    IN HDRV_CALL  hdCall; 

    IN OUT ULONG  ulParamsSize; 

    IN OUT UCHAR  Params[1]; 

} NDIS_TAPI_DEV_SPECIFIC, *PNDIS_TAPI_DEV_SPECIFIC; 

ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹öµéÀº ¾Æ·¡ÀÇ ÀåÄ¡-ƯÁ¤ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.:

ulRequestID
¿¹¾àµÊ.

hdLine
µ¿À۵Ǵ ¶óÀο¡ ´ëÇÑ ¹Ì´ÏÆ÷Æ®ÀÇ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù.

ulAddressID
µ¿À۵Ǵ ÁöÁ¤µÈ ¶óÀÎ»ó¿¡ ÀÖ´Â ÁÖ¼Ò¸¦ ÁöÁ¤ÇÑ´Ù.

hdCall
µ¿À۵Ǵ ȣÃâ¿¡ ´ëÇÑ ¹Ì´ÏÆ÷Æ®ÀÇ ÇÚµéÀ» ÁöÁ¤ÇÑ´Ù. ÀÌ ¸â¹ö´Â NULL ÀÏ ¼ö ÀÖ´Ù.

ulParamsSize
¾Æ·¡ÀÇ ÆÄ¶ó¹ÌÅÍ ºí·°¿¡ ÀÖ´Â ¹ÙÀÌÆ® ¼ö¸¦ ÁöÁ¤ÇÑ´Ù. ÁøÀÔ(entry)¿¡¼­, ÀÌ ¸â¹ö´Â ¹Ì´ÏÆ÷Æ®¿¡ Åë°úµÈ ÆÄ¶ó¹ÌÅÍ ºí·°ÀÇ ¹ÙÀÌÆ® Å©±â¸¦ Æ÷ÇÔÇÒ °ÍÀÌ´Ù.

¸¸¾à ¹Ì´ÏÆ÷Æ®°¡ ÆÄ¶ó¹ÌÅÍ ºí·°¿¡ Á¤º¸¸¦ ¸®ÅÏÇϸé, ±×°ÍÀº ÀÔ·Â ulParamsSize ¸¦ ÃʰúÇÒ ¼ö ¾ø´Â ¸®ÅÏµÈ Á¤º¸ÀÇ ¹ÙÀÌÆ® Å©±â¸¦ ÀÌ ¸â¹ö¿¡ ¼³Á¤ÇØ¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ¹Ì´ÏÆ÷Æ®´Â ±×°ÍÀÌ ¾î¶°ÇÑ Á¤º¸µµ ¸®ÅÏÇÏÁö ¾Ê´Â´Ù´Â °ÍÀ» ¾Ë¸®±â À§Çؼ­ 0À» ÀÌ ¸â¹ö¸¦ ¼³Á¤ÇؾßÇÑ´Ù.

Params
ÀåÄ¡-ƯÁ¤ ÆÄ¶ó¹ÌÅÍ ºí·°À» ÁöÁ¤ÇÑ´Ù.

MiniportQueryInformation ÇÔ¼ö´Â ¾Æ·¡ÁßÀÇ Çϳª¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù.:
NDIS_STATUS_SUCCESS
NDIS_STATUS_PENDING
NDIS_STATUS_TAPI_INVALLINEHANDLE
NDIS_STATUS_TAPI_INVALADDRESSID
NDIS_STATUS_TAPI_OPERATIONUNAVAIL
NDIS_STATUS_TAPI_RESOURCEUNAVAIL
NDIS_STATUS_FAILURE

OID_TAPI_GET_EXTENSION_ID

ÁöÁ¤µÈ ¶óÀÎ ÀåÄ¡¿¡ ´ëÇÑ È®Àå ID¸¦ ¸®ÅÏÇÒ °ÍÀ» ¹Ì´ÏÆ÷Æ®¿¡°Ô ¿äûÇÑ´Ù.

ÀÌ ¿äû¿¡ ´ëÇÑ Áö¿øÀº Ãß°¡ÀûÀÌ´Ù.

ÀÌ ¿äûÀº ¾Æ·¡¿¡ Á¤ÀÇµÈ NDIS_TAPI_GET_EXTENSION_ID ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù.:


typedef struct _NDIS_TAPI_GET_EXTENSION_ID { 

    IN ULONG               ulRequestID; 

    IN ULONG               ulDeviceID; 

    OUT LINE_EXTENSION_ID  LineExtensionID; 

} NDIS_TAPI_GET_EXTENSION_ID, *PNDIS_TAPI_GET_EXTENSION_ID; 

ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹öµéÀº ¾Æ·¡ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.:

ulRequestID
¿¹¾àµÊ.

ulDeviceID
¿ä±¸µÇ´Â ¸µÅ©³ª µ¥ÀÌÅÍ Ã¤³ÎÀ» ÁöÁ¤ÇÑ´Ù. À̰ÍÀº ¾ÕÀÇ OID_TAPI_GET_ID ¿äû¿¡¼­ ¼³Á¤µÈ´Ù.

LineExtensionID
ŸÀÔ LINE_EXTENSION_ID ÀÇ ±¸Á¶Ã¼¸¦ °¡¸®Å²´Ù. ¼¼ºÎÀûÀÎ °ÍÀº ndistapi.h À» ºÁ¶ó.

¸¸¾à ¹Ì´ÏÆ÷Æ®°¡ ÀåÄ¡-ƯÁ¤ È®ÀåµéÀ» Áö¿øÇÑ´Ù¸é, ±×°ÍÀº ÀÌ·¯ÇÑ È®ÀåµéÀÇ È®Àå ID·Î ÀÌ ±¸Á¶Ã¼¸¦ ä¿î´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ±×°ÍÀº ÀÌ ±¸Á¶Ã¼¸¦ 0À¸·Î ä¿î´Ù.

¹Ù¿îµå ÇÁ·ÎÅäÄÝÀ» À§Çؼ­, À¯È¿ÇÑ È®Àå ID´Â ¸ðµÎ 0µé·Î ±¸¼ºÇÒ ¼ö ¾ø´Ù.

MiniportQueryInformation ÇÔ¼ö´Â ¾Æ·¡ÁßÀÇ Çϳª¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù.:
NDIS_STATUS_SUCCESS
NDIS_STATUS_PENDING
NDIS_STATUS_TAPI_RESOURCEUNAVAIL
NDIS_STATUS_FAILURE

OID_TAPI_NEGOTIATE_EXT_VERSION

ÀÌ OID´Â ¹Ì´ÏÆ÷Æ®°¡ °¡´ÉÇÑ È®Àå ¹öÀüµéµéÀÇ ¹üÀ§ ÁÖ¾îÁø ÀÌ ÀåÄ¡ÇÏ¿¡¼­ µ¿ÀÛÇÒ ¹Ì´ÏÆ÷Æ®ÀÇ ÃÖ»óÀ§ ¹öÀü È®Àå ¹øÈ£¸¦ ¸®ÅÏÇÒ °ÍÀ» ¹Ì´ÏÆ÷Æ®¿¡°Ô ¿äûÇÑ´Ù.(¾Ö¸Å??)

ÀÌ ¿äû¿¡ ´ëÇÑ Áö¿øÀº Ãß°¡ÀûÀÌ´Ù.

ÀÌ ¿äûÀº ¾Æ·¡¿¡ Á¤ÀÇµÈ NDIS_TAPI_NEGOTIATE_EXT_VERSION ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ´Ù.:


typedef struct _NDIS_TAPI_NEGOTIATE_EXT_VERSION { 

    IN ULONG   ulRequestID; 

    IN ULONG   ulDeviceID; 

    IN ULONG   ulLowVersion; 

    IN ULONG   ulHighVersion; 

    OUT ULONG  ulExtVersion; 

} NDIS_TAPI_NEGOTIATE_EXT_VERSION, *PNDIS_TAPI_NEGOTIATE_EXT_VERSION; 

ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹öµéÀº ¾Æ·¡ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.:

ulRequestID
¿¹¾àµÊ.

ulDeviceID
¼öÇàµÇ´Â È®Àå ¹öÀü Çù»ó¿¡ ´ëÇÑ ¸µÅ©¿Í µ¥ÀÌÅÍ Ã¤³ÎÀ» ÁöÁ¤ÇÑ´Ù. ÀÌ INITIALIZE_NEGOTIATION ´Â »ç¿ëµÉ ¼ö ¾ø´Ù. À̰ÍÀº ¾ÕÀÇ OID_TAPI_GET_ID ¿¡¼­ ¼³Á¤µÈ´Ù.

ulLowVersion
NDISTAPI ¶Ç´Â ±×°ÍÀÇ Å¬¶óÀÌ¾ðÆ® ¾îÇø®ÄÉÀ̼ÇÀÌ µ¿ÀÛÇÒ ¾Æ·¡¿¡¼­ ÃÖÇÏÀ§ È®ÀåÀ» ÁöÁ¤ÇÑ´Ù. ÃÖ»óÀ§ µÎ°³ÀÇ ¹ÙÀÌÆ®(most significant two bytes)´Â ¸ÞÀÌÀú ¹öÀüÀ» ÁöÁ¤Çϰí ÃÖÇÏÀ§ µÎ°³ÀÇ ¹ÙÀÌÆ®(least significant two bytes)´Â ¸¶ÀÌ³Ê ¹öÀüÀ» ÁöÁ¤ÇÑ´Ù. ÀÌ ¿äûÀÌ ¸¸µé¾îÁú ¶§, ÀÌ ¸â¹öÀÇ °ªÀº NDISTAPI¿¡ ÀÇÇØ¼­ ÀÔÁõµÇÁö ¾Ê´Â´Ù.

ulHighVersion
NDISTAPI ¶Ç´Â ±×°ÍÀÇ Å¬¶óÀÌ¾ðÆ® ¾îÇø®ÄÉÀ̼ÇÀÌ µ¿ÀÛÇÒ ¾Æ·¡¿¡¼­ ÃÖ»óÀ§ È®ÀåÀ» ÁöÁ¤ÇÑ´Ù. ÃÖ»óÀ§ µÎ°³ÀÇ ¹ÙÀÌÆ®(most significant two bytes)´Â ¸ÞÀÌÀú ¹öÀüÀ» ÁöÁ¤Çϰí ÃÖÇÏÀ§ µÎ°³ÀÇ ¹ÙÀÌÆ®(least significant two bytes)´Â ¸¶ÀÌ³Ê ¹öÀüÀ» ÁöÁ¤ÇÑ´Ù. ÀÌ ¿äûÀÌ ¸¸µé¾îÁú ¶§, ÀÌ ¸â¹öÀÇ °ªÀº NDISTAPI¿¡ ÀÇÇØ¼­ ÀÔÁõµÇÁö ¾Ê´Â´Ù.

ulExtVersion
ulLowVersion ¿Í ulHighVersion¿¡ ÀÇÇØ¼­ ÁöÁ¤µÈ ¹üÀ§³»¿¡¼­ ¹Ì´ÏÆ÷Æ®ÀÇ È®Àå ¹öÀüÀ» ÁöÁ¤ÇÑ´Ù. ÃÖ»óÀ§ µÎ°³ÀÇ ¹ÙÀÌÆ®(most significant two bytes)´Â ¸ÞÀÌÀú ¹öÀüÀ» ÁöÁ¤Çϰí ÃÖÇÏÀ§ µÎ°³ÀÇ ¹ÙÀÌÆ®(least significant two bytes)´Â ¸¶ÀÌ³Ê ¹öÀüÀ» ÁöÁ¤ÇÑ´Ù.

¹Ì´ÏÆ÷Æ®´Â ÀÌ ¿äûÀ» ¼º°øÀûÀ¸·Î ¿Ï¼ºÇϱâ À§Çؼ­ µ¿ÀÛÇÒ ¾Æ·¡¿¡¼­, È£ÃâÀÚ¿¡ ÀÇÇØ¼­ ¿äûµÈ ¹üÀ§³»¿¡¼­ ÃÖ»óÀ§ È®Àå ¹öÀü ³Ñ¹ö·Î ÀÌ ¸â¹ö¸¦ ä¿î´Ù.

¸¸¾à ulLowVersion ¿Í ulHighVersion¿¡ ÁöÁ¤µÈ ¿äûµÈ ¹üÀ§°¡ ¹Ì´ÏÆ÷Æ®¿¡ ÀÇÇØ¼­ Áö¿øµÈ ¹üÀ§¿¡ ÁßøÇÏÁö ¾Ê´Â´Ù¸é, ±×°ÍÀº NDIS_STATUS_TAPI_INCOMPATIBLEEXTVERSION À» ¸®ÅÏÇÑ´Ù.

MiniportQueryInformation ÇÔ¼ö´Â ¾Æ·¡ÁßÀÇ Çϳª¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù.:
NDIS_STATUS_SUCCESS
NDIS_STATUS_PENDING
NDIS_STATUS_TAPI_INCOMPATIBLEEXTVERSION
NDIS_STATUS_TAPI_NODRIVER
NDIS_STATUS_TAPI_RESOURCEUNAVAIL
NDIS_STATUS_FAILURE