ÇÁ·Î±×·¡¹Ö Áú¹® µå·Á¿ä...(C++) ¸Þ¸ð¸® ÇÒ´çÀ» ¾î¶»°Ô ÇØ¾ß ÇÒ±î¿ä. ¹«°³³ä ÁÖÀÇ

isaiah   
   Á¶È¸ 4497   Ãßõ 0    

 

http://www.2cpu.co.kr/QnA/530713 여기서 이어지는 글인데요..

 간단한 기능 하나 구현하려고 한참 삽질을 하네요.

 이번에도 역시나 기초 가 없어서 막혔습니다.

 ndis 프로토콜 드라이버가 WOL PATTERN을 등록할때 OID_PM_ADD_WOL_PATTERN 을 사용하고 이 때 아래쪽 드라이버로 내려가는 정보는 

구조체 NDIS_OID_REQUST 에 담겨서 내려갑니다.

이 NDIS_OID_REQUST 구조체 내부에는 PVIOD informationBuffer 값이 있는데요 이게 등록되어야 할 패킷 정보를 가진 NDIS_PM_WOL_PATTERN 구조체의 포인터를 담고 있습니다. 


 저는 그래서 ndis 필터 드라이버 셈플을 수정해서 원하는 중간에서 원래 프로토콜 드라이버가 내려 보내는 패턴을 수정해서 제가 원하는

패턴을 등록하려고 하고 있습니다.


  windows 10에서 제가 원하는 대로 작동을 안해서요.

 기본 상태에서 전달 되는 패턴은 NETBIOS name qurry 에 반응 하는 패턴 하나 뿐 이였습니다.

 저는 이걸 수정해서 netbios name qurry, ARP(IP:192.168.1.30),ARP(IP:192.168.1.31) 이렇개 반응하도록 수정하려고 합니다 ARP(IP:192.168.1.31)는 가상 머신에 할당할 IP 입니다.


 패턴 개수가 3개로 늘어나는 건데요. 문제는 OID_PM_ADD_WOL_PATTERN 요청에서 복수의 패턴을 등록하는 방식에 있습니다.

 NDIS_OID_REQUST내부의 PVIOD informationBuffer 이 첫번째 OID_PM_ADD_WOL_PATTERN의 포인트를 담고 있고

 첫번째 OID_PM_ADD_WOL_PATTERN 구조체 내부에 있는 ULONG NextWoLPatternOffset 값이 다음 패턴 데이터를 담고 있는 OID_PM_ADD_WOL_PATTERN 를 오프셋으로 알려 줍니다. 오프셋의 시작 위치는 위에 언급된 NDIS_OID_REQUST 내부의 PVIOD informationBuffer의 주소값 입니다.


 처음에 그냥 malloc으로 OID_PM_ADD_WOL_PATTERN 3개 만들어서 오프셋 계산을 해버렸는데요.

 문제는 음수가 나왔다 양수가 나왔다 합니다. 그런데 오프셋 값을 ULONG을 받으니 음수는 전달을 할 수가 없고요...

NDIS_OID_REQUST + OID_PM_ADD_WOL_PATTERN 이 들어갈 용량을 할당해 두고 중간중간을 포인터로 잡아서 써야 할까요?

 

ªÀº±Û Àϼö·Ï ½ÅÁßÇÏ°Ô.
malloc À» µû·Îµû·Î ÇÏÁö ¸»°í...Çѹø¿¡ 3¹è¼ö·Î Àâ¾Æ¼­...±¸Á¶Ã¼ 3°³¸¦ ³ª¶õÈ÷ ³Ö¾îº¸¼¼¿ä.
Á÷Á¢ Çغ»°Ô ¾Æ´Ï¶ó È®´äÀº ¸ø µå¸®°Ú½À´Ï´Ù¸¸...´À³¦»óÀ¸·Î´Â ±×³É ¹è¿­ ÇüÅ·Π¾îµò°¡¿¡ Àâ¾Æ¼­ ¾²¸é µÉ °Í °°½À´Ï´Ù.
     
isaiah 2016-06
À½ NDIS_OID_REQUST + OID_PM_ADD_WOL_PATTERN 3°³ ºÐ·®À» ¸ù¶¥ ³ÖÀ» °ø°£À» ÇÒ´çÇÏ°í.
 º»·¡ ÇÊÅÍ µå¶óÀ̹ö ¼ÀÇÃÀÌ »ç¿ëÇÏ´ø NDIS_OID_REQUST º¹»çÇؼ­ ³Ö°í ±× À§Ä¡¸¦ Æ÷ÀÎÅÍ·Î ³»·Á º¸³Þ´õ´Ï Ä¿³ÎÆдР³ª³×¿ä.
 ÂÁ...  ÇÊÅÍ µå¶óÀ̹ö ÀÚüµµ À§¿¡¼­ ³»·Á¿Â ¸®Äù½ºÆ®¸¦ ¹Þ¾Æ¼­
        Status = NdisAllocateCloneOidRequest(pFilter->FilterHandle,
                                            Request,
                                            FILTER_TAG,
                                            &ClonedRequest);
¿ä°É·Î ´Ù¸¥ ¸Þ¸ð¸® °ø°£¿¡ º¹»çÇØ µÎ°í ¾²±æ·¡ ±×³É ¾³ º¹»ç Çعö·Áµµ µÇÁö ¾ÊÀ»±î Çߴµ¥ ±×·¸°Ô ´Ü¼øÄ¡´Â ¾ÊÀº ¸ð¾çÀÔ´Ï´Ù.. ÂÁ..
¹«¾Æ 2016-06
¸»¾¸ÇϽŴë·Î Çغ¸¸é ¾Ë°ÚÁö¿ä? Çѹø Çغ¸¼¼¿ä. ÀßµÇ¸é µÇ´Â°ÅÁÒ..

>óÀ½¿¡ ±×³É mallocÀ¸·Î OID_PM_ADD_WOL_PATTERN 3°³ ¸¸µé¾î¼­ ¿ÀÇÁ¼Â °è»êÀ» Çعö·È´Âµ¥¿ä.  ¹®Á¦´Â À½¼ö°¡ ³ª¿Ô´Ù ¾ç¼ö°¡ ³ª¿Ô´Ù ÇÕ´Ï´Ù.

Ç×»ó ¾ç¼ö°¡ ³ª¿Ã ¼ö ÀÖ°Ô ÆÐÅÏ 3°³ÀÇ ¼ø¼­¸¦ Àß Àâ¾ÆÁÖ¸é µÇÁö ¾ÊÀ»±î¿ä?
     
isaiah 2016-06
¸®Äù½ºÆ®¸¦ º¹»çÇÏ´Â ÀÛ¾÷Àº µû·Î ÇÔ¼ö¸¦ ½á¼­ Çϵµ·Ï µÇ¾î ÀÖ´õ¶ó°í¿ä..
        Status = NdisAllocateCloneOidRequest(pFilter->FilterHandle,
                                            Request,
                                            FILTER_TAG,
                                            &ClonedRequest);
 ¿ä·±½ÄÀ¸·Î¿ä.
 
 ÀÌ°Ô ÆÐÅÏÀ§Ä¡¸¦ ±âÁØÀ¸·Î ´ÙÀ½ ÆÐÅÏÀÇ ¿ÀÇÁ¼ÂÀ» ±¸ÇÏ´øÁö Çϴ°Ÿé Àû´çÇÏ°Ô ¸ÂÃâ ¼ö Àְڴµ¥.
 ¸®Äù½ºÆ® ±¸Á¶Ã¼ÀÇ º¯¼öÀÇ ÁÖ¼Ò¸¦ ±âÁØÀ¸·Î ¿ÀÇÁ¼ÂÀ» ±¸ÇØ¾ß ÇÏ´Ï Á¦ ªÀº Áö½ÄÀ¸·Î´Â ±ò²ûÇÏ°Ô ´äÀÌ ¾È³ª¿À³×¿ä...
isaiah 2016-06
¹» ¸ð¸£´ÂÁö ¸ð¸£´Ï Áú¹®µµ Àç´ë·Î ¸øÇ߳׿ä..
 ¾Ë°í º¸´Ï ¼Ò½º¸¦ ¿Ã¸®°í Áú¹®À» Çß¾î¾ß ´äÀ» ±¸ÇÒ ¼ö ÀÖ´Â ºÎºÐÀÌ¿´½À´Ï´Ù.
NdisAllocateCloneOidRequest ¿ä°É·Î ÇÒ´çÇÑ ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÏ´Â ÇÔ¼ö¸¦ Æ÷ÇÔÇÑ ÄݹéÇÔ¼ö¸¦
ÇÊÅÍ µå¶óÀ̹öÀÇ ÇÏÀ§¿¡ Á¸ÀçÇÏ´Â ndis µå¶óÀ̹ö¿¡¼­ È£ÃâÇÏ´Â°Ô µÇ´Â ±¸Á¶¿©¼­..
¾Æ·¡·Î ³»·Á º¸³×´Â Æ÷ÀÎÅ͸¦ ÄݹéÀ¸·Î ´Ù½Ã ¹Þ¾Æ¼­ ÇØÁ¦ Çϸ鼭 »ý±â´Â ¹®Á¦ ¿´³×¿ä.


QnA
Á¦¸ñPage 2204/5684
2015-12   1493755   ¹é¸Þ°¡
2014-05   4957289   Á¤ÀºÁØ1
2015-05   3968   BTclub
2016-06   4498   isaiah
2014-01   5585   µÎ¸®¾È
2019-11   2320   ¹Ì¼ö¸Ç
2021-02   3772   ºí·ç¿µ»ó
2011-08   7759   Á¤ÀºÁØ1
04-30   1100   L2½ºÀ§Ä¡
2021-02   3406   ÇöÀ±À±
2022-09   1382   ¹Ì¼ö¸Ç
05-05   1431   Rich
2011-09   5542   ÀÌÁ¾Çöoph
2022-10   1357   yooni
2022-10   2092   stones
2015-05   4888   ¹Ì¼ö¸Ç
2021-02   5349   ±¸½ÊÆò
05-20   1182   Ãʺ¸ÀÚ¿¡¿ë
2016-07   4457   ¹Ú¸í±ÙTN
2018-10   4759   Æ丣¼¼¿ì½º
2014-02   4016   ¹èÁؼ®
2015-06   6322   À嵿°Ç2014