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
|