IMPLEMENT_DYNAMIC error

IMPLEMENT_DYNAMIC(CLauncherListDlg, CSkinDialog)

위와 같은 경우에 CSkinDialog를 도무지 못알아먹겠다고 하는 경우가 있다.

이때 Base클래스가 되는 CSkinDialog로 가서
헤더에
DECLARE_DYNAMIC(CSkinDialog)
cpp의 맨위에 헤더보다는 아래에
IMPLEMENT_DYNAMIC(CSkinDialog, CDialog)
이렇게 넣어주자~

이것때문에 거의 2시간을 헤매었다.

stdafx.h include 에러 ▣ 컴터야그 ▣

프로젝트 디렉토리 구조가

a 프로젝트 폴더
-이부분에 a.sln파일이 들어있습니다.
src폴더
- a프로젝트 폴더의 내부에 src폴더가 들어있는데 여기에 소스 파일이 들어있습니다.
이 폴더에 소스파일과 stdafx.h도 들어있구요~
그리고, src폴더 안에 b라는 폴더(소스들어있는)가 있습니다.

이런식의 구조일때 모든 소스에서 #include "stdafx.h"
를 해주었구요
프로젝트 속성에서도 기본적인 설정(미리컴파일된 헤더 사용)으로 해주었구요...

이렇게 해서 컴파일을 하게 되면, 미리 컴파일된 헤더 파일을 열수 없다고 나오네요...
어떻게 세팅을 해주어야 할까요?

=====================================================================================
=====================================================================================
우선 stdafx.h 파일은 어떤 소스에서도 그대로 인클루드 해주면 됩니다.
경로를 따로 지정을 하지 않는거죠~

예를 들어...
A(메인 프로젝트 폴더)
---- B(내부 폴더)
---- C(내부 폴더)
---- 소스파일 (stdafx.h 파일존재)

이렇게 있을때 B, C폴더에 있는 소스도 단순히 #include "stdafx.h만 해주면 된다는 거죠~

그리고, stdafx.cpp 파일은 미리컴파일된 헤더 만들기로 되어 있어야 합니다.
나머지 소스들은 미리컴파일된 헤더 사용으로 되어 있어야 합니다.

----> GPG Study의 질답란데서 퍼옴

NDIS_PHYSICAL_MEDIUM 관련 컴파일 에러

오류 3 error C2146: 구문 오류 : ';'이(가) 'PhysicalMediumType' 식별자 앞에 없습니다.

오류 4 error C4430: 형식 지정자가 없습니다. int로 가정합니다. 참고: C++에서는 기본 int를 지원하지 않습니다.

기존 프로젝트를 VS2008에서 컴파일 하는 도중 만난 에러다.

컴퓨터를 포맷했기에 WinPcap이 깔려있지 않은 상태라 그런가보다..하고

WinPcap 4.0.2를 설치했다. 그런 후 컴파일 해보니 증상은 동일...

잘 모르는건 구글링 -_-;;(초보 개발자의 한계 ㅠㅠ)

어찌 저찌 찾아보니 netioapi.h의 #include <ntddndis.h> 이 부분을 #include "ntddndis.h"로 바꾼 다음에

컴파일 해보란다. 해결.

참조 : http://geekswithblogs.net/dotnetnomad/archive/2008/01/30/119088.aspx

퍼옴 : http://suri.egloos.com/1875333

winpcap함수

winpcap library API
http://www.winpcap.org/docs/docs31/html/group__wpcapfunc.html#ga55

1. typedef void(*pcap_handler) (u_char *user, const struct pcap_pkthdr *pkt_header, const u_char *pkt_data)


[ 기능 ]

패킷을 받는 콜백 함수의 프로토타입

[ 파라미터 ]

u_char *user : pcap_dispatch()나 pcap_loop()를 호출할 때 전달하는 u_char 포인터

const struct pcap_pkthdr *pkt_header : 패킷의 정보를 기지고 있는 pcap_pkthdr 구조체

const u_char *pkt_data : 패킷의 데이터를 가리키고 있는 u_char 포인터

 
2. pcap_t *pcap_open_live (char *device, int snaplen, int promisc, int to_ms, char *ebuf)

[ 기능 ]

네트워크의 패킷들을 보기위해 필요한 packet capture descriptor를 얻기위해 사용된다.

[ 파라미터 ]

char *device : 사용할 네트워크 디바이스를 지시하는 스트링

int snaplen : 캡쳐할 최대 bytes

int promisc : NIC가 promiscuous mode로 동작할 지 여부

int to_ms : millisecond 단위의 read timeout

char *ebuf : pcap_open_live()가 실패할 경우에만 에러 메시지가 저장된다. 보통 NULL

[ 반환 ]

성공 : 패킷 캡쳐 descriptor

실패 : NULL

 
3. pcap_t * pcap_open_dead (int linktype, int snaplen)

[ 기능 ]

libpcap의 다른 함수를 호출할 때 pcap_t structure를 생성한다.

 
4. pcap_t *pcap_open_offline(char *fname, char *ebuf)

[ 기능 ]

기존에 저장된 파일에서 패킷을 읽기 위해 사용된다.

stdin에서 읽기 위해서는 파일 이름을 "-"으로 한다.

[ 파라미터 ]

char *fname : 오픈할 파일의 이름

char *ebuf : 실패할 경우 에러 메시지가 저장된다 .

[ 리턴 ]

성공 : descriptor

실패 : NULL

 
5. pcap_dumper_t *pcap_dump_open(pcap_t *p, char *fname)

[ 기능 ]

캡쳐한 내용을 파일에 저장하기 위해서 파일을 오픈한다.

stdout을 지시하려면 파일이름을 "-"를 이용한다.

[ 파라미터 ]

pcap_t *p : pcap_open_offline()이나 pcap_open_live()에서 return되는 descriptor

char *fname : 오픈할 파일의 이름

[ 리턴 ]

성공 : pcap_dumper_t로 패킷 덤프와 관련된 구조체

실패 : NULL

 
6. int pcap_setnonblock(pcap_t *p, int nonblock, char *errbuf)

[ 기능 ]

블록킹과 논블록킹 모드를 바꾼다.

[ 파라미터 ]

pcap_t *p : pcap_open_offline()이나 pcap_open_live()에서 return되는 descriptor

int nonblock : non-zero 혹은 zero 값을 지닌다.

char *errbuf : 실패시 에러 메시지가 채워진다.

[ 리턴 ]

성공 : 0

실패 : -1


7. int  pcap_getnonblock (pcap_t *p, char *errbuf)

[ 기능 ]

인터페이스의 non-blocking 상태를 얻는다.

[ 파라미터 ]

pcap_t *p : pcap_open_offline()이나 pcap_open_live()에서 return되는 descriptor

char *errbuf : 실패시 에러 메시지가 채워진다.

[ 리턴 ]

성공 : 0

실패 : -1

 
8. int  pcap_findalldevs (pcap_if_t **alldevsp, char *errbuf)

[ 기능 ]

pcap_open_live()로 열린 네트워크 디바이스의 리스트를 구한다.

[ 파라미터 ]

pcap_if_t **alldevsp : 네트워크 다비이스의 리스트 포인터

char *errbuf : 실패시 에러 메시지가 채워진다.

[ 반환 ]

성공 : 0

실패 : -1

 
9. void  pcap_freealldevs (pcap_if_t *alldevsp)

[ 기능 ]

pcap_findalldevs()에 의해 리턴된 인터페이스 리스트를 해제한다.

[ 파라미터 ]

pcap_if_t **alldevsp : 네트워크 다비이스의 리스트 포인터

 
10. char *  pcap_lookupdev (char *errbuf)

[ 기능 ]

패킷을 캡쳐할 적당한 네트워크 디바이스(NIC : Network Interface Card)를 찾아

그 디바이스를 지칭하는 스트링을 리턴한다.

네트워크 디바이스를 지칭하는 스트링은 각 운영체제 별로 표현되는 별명(alias)를

말하며 Linux의 경우 "eth0", "eth1" 식으로 표현되고 BSD 계열은 각 네트워크

디바이스 벤더별로 별도로 명명된다.

[ 파라미터 ]

char *errbuf : 실패시 에러 메시지가 채워진다.

[ 리턴 ]

성공 : 네트워크 디바이스의 별명(alias)

실패 : NULL

 
11. int  pcap_lookupnet (char *device, bpf_u_int32 *netp, bpf_u_int32 *maskp, char *errbuf)

[ 기능 ]

네트워크 디바이스의 네트워크 주소와 netmask 정보를 가져오기위해 사용된다.

[ 파라미터 ]

char *device : 네트워크 디바이스의 별명(alias)

bpf_u_int32 *netp : 네트워크 디바이스의 네트워크 주소가 저장될 주소

bpf_u_int32 *maskp : 네트워크 디바이스의 netmask가 저장될 주소

char *errbuf : 에러 발생시 에러 메시지 저장

[ 리턴 ]

성공 : 0

실패 : -1

 
12. int  pcap_dispatch (pcap_t *p, int cnt, pcap_handler callback, u_char *user)

[ 기능 ]

프로세스 패킷을 구성할 때 사용된다.

[ 파라미터 ]

pcap_t *p : pcap_open_offline()이나 pcap_open_live()에서 return되는 descriptor

int cnt : 읽을 패킷의 갯수

pcap_handler callback : 패킷을 처리할 루틴

u_char *user : 패킷 데이타 포인터

[ 리턴 ]

성공 : 읽은 패킷의 수

실패 : -1


13. int  pcap_loop (pcap_t *p, int cnt, pcap_handler callback, u_char *user)

[ 기능 ]

패킷의 그룹을 모은다.

[ 파라미터 ]

pcap_t *p : pcap_open_offline()이나 pcap_open_live()에서 return되는 descriptor

int cnt : 읽을 패킷의 갯수

pcap_handler callback : 패킷을 처리할 루틴

u_char *user : 패킷 데이타 포인터

[ 리턴 ]

성공 : 읽은 패킷의 수

실패 : -1

 
14 void  pcap_dump (u_char *user, const struct pcap_pkthdr *h, const u_char *sp)

[ 기능 ]

pcap_dump_open()을 통해 저장할 파일을 결정했다면 이 함수로 실제 저장이 이루어진다.

callback 루틴을 호출할 때와 같은 파라미터를 가진다.

[ 파라미터 ]

u_char *user : 사용자 데이터

struct pcap_pkthdr *h : 패킷의 정보를 가리키고 있는 포인터

u_char *sp : 패킷의 데이터를 가리키고 있는 u_char 포인터

 
15. int  pcap_compile (pcap_t *p, struct bpf_program *fp, char *str, int optimize, bpf_u_int32 netmask)

[ 기능 ]

스트링 형태의 필터링 룰을 해석해 bpf_program 구조체에 저장한다.

[ 파라미터 ]

pcap_t *p : 패킷 캡쳐 descriptor

struct bpf_program *fp : 필터링 룰에 따라 결정될 구조체

char *str : 스트링 형태의 필터링 룰

int optimize : 결과 코드를 수행할 때 최적화 여부

bpf_u_int32 netmask : 네트워크의 mask


16.int  pcap_compile_nopcap (int snaplen_arg, int linktype_arg, structbpf_program *program, char *buf, int optimize, bpf_u_int32 mask)

[ 기능 ]

어댑터를 열지 않고 패킷 필터를 컴파일한다.

커널레벨의 필터링룰에 의해 인터프리트될 수 있는 프로그램에서

높은레벨의 필터링표현을 변환한다.

[ 파라미터 ]

int snaplen_arg :

int linktype_arg :

struct bpf_program *program : 필터링 룰에 따라 결정될 구조체

char *buf : 스트링 형태의 필터링 룰

int optimize : 결과 코드를 수행할 때 최적화를 물어본다

bpf_u_int32 mask : mask

[ 리턴 ]

성공 :

실패 : -1

 
17. int  pcap_setfilter (pcap_t *p, struct bpf_program *fp)

[ 기능 ]

pcap_compile()을 통해 결정된 bpf_program 구조체를 적용할 때 사용된다.

[ 파라미터 ]

pcap_t *p : 패킷 캡쳐 descriptor

struct bpf_program *fp : 보통 pcap_compile()에서 결과

[ 리턴 ]

성공 : 0

실패 : -1

 
18. void  pcap_freecode (struct bpf_program *fp)

[ 기능 ]

필터를 해제한다.

[ 파라미터 ]

struct bpf_program *fp : 보통 pcap_compile()에서 결과


19. u_char *  pcap_next (pcap_t *p, struct pcap_pkthdr *h)

[ 기능 ]

다음 패킷의 포인터를 리턴한다. 내부적으로 pcap_dispatch()를 호출한다.

[ 파라미터 ]

pcap_t *p : 패킷 캡쳐 descriptor

struct pcap_pkthdr *h : 패킷의 정보를 가리키고 있는 포인터

[ 리턴 ]

성공 : 패킷을 가리키는 포인터

실패 : NULL

 
20. int  pcap_datalink (pcap_t *p)

[ 기능 ]

link의 type을 리턴한다.

pcap_t의 멤버 중 linktype.

linke type은 bpf.h에 정의되어 있다.

[ 파라미터 ]

pcap_t *p : 패킷 캡쳐 descriptor

[ 리턴 ]

성공 : link type

 
21. int  pcap_snapshot (pcap_t *p)

[ 기능 ]

pcap_open_live()가 호출될 때 지정된 길이인 snapshot length를 리턴한다.

pcap_t의 멤버 중 snapshot

[ 파라미터 ]

pcap_t *p : 패킷 캡쳐 descriptor

[ 리턴 ]

성공 : snapshot length

실패 :

 
22. int  pcap_is_swapped (pcap_t *p)

[ 기능 ]

사용하고 있는 저장 파일과 사용하는 시스템이 같은 byte order를 사용하는지 여부를

알 수 있다.

[ 파라미터 ]

pcap_t *p : 패킷 캡쳐 descriptor

[ 리턴 ]

0 : 같은 byte order를 사용할 경우

1 : 다른 byte order를 사용할 경우


23. int pcap_major_version(pcap_t *p)

[ 기능 ]

저장 파일에 사용된 pcap의 메이저 버전을 리턴한다.

[ 파라미터 ]

pcap_t *p : 패킷 캡쳐 descriptor

[ 리턴 ]

성공 : pcap의 메이저 버전

 
24. int pcap_minor_version(pcap_t *p)

[ 기능 ]

저장 파일에 사용된 pcap의 마이너 버전을 리턴한다.

[ 파라미터 ]

pcap_t *p : 패킷 캡쳐 descriptor

[ 리턴 ]

성공 : pcap의 마이너 버전

 
25. int pcap_stats(pcap_t *p, struct pcap_stat *ps)

[ 기능 ]

패킷 캡쳐에 관한 상태 정보를 ps에 저장한다. 송수신된 패킷의 갯수나 에러 발생 정보 등의 통계 정보를 알 수 있다.

[ 파라미터 ]

pcap_t *p : 패킷 캡쳐 descriptor

struct pcap_stat *ps : 패킷 캡쳐 상태 정보 구조체

[ 리턴 ]

성공 : 0

실패 : -1

 
26. FILE *pcap_file(pcap_t *p)

[ 기능 ]

p가 가리키는 패킷 캡쳐에서 사용하는 저장 파일의 FILE 포인터를 넘겨준다.

[ 파라미터 ]

pcap_t *p : 패킷 캡쳐 descriptor

[ 리턴 ]

성공 : 파일 포인터

 
27. int pcap_fileno(pcap_t *p)

[ 기능 ]

p가 가리키는 패킷 캡쳐에서 사용하는 저장 파일의 descriptor를 넘겨준다.

[ 파라미터 ]

pcap_t *p : 패킷 캡쳐 descriptor

[ 리턴 ]

성공 : file descriptor

 
28. void pcap_perror(pcap_t *p, char *prefix)

[ 기능 ]

최근에 발생한 에러에 대해 에러메시지를 stderr에 출력한다.

[ 파라미터 ]

pcap_t *p : 패킷 캡쳐 descriptor

char *prefix : 메시지를 출력할 때 앞에 추가할 내용

 
29. char *pcap_geterr(pcap_t *p)

[ 기능 ]

최근에 발생한 에러에 대한 메시지를 리턴한다.

[ 파라미터 ]

pcap_t *p : 패킷 캡쳐 descriptor

[ 리턴 ]

성공 : 최근 발생한 에러 메시지

 
30. char *pcap_strerror(int error)

[ 기능 ]

strerror(1)이 없을 경우를 위해 제공된다.

[ 파라미터 ]

int error : error number

[ 리턴 ]

성공 : error 메시지


31. void  pcap_close (pcap_t *p)

[ 기능 ]

패킷을 닫고 메모리 해제

[ 파라미터 ]

pcap_t *p : pcap_open_offline()이나 pcap_open_live()에서 return되는 descriptor

 
32. void pcap_dump_close(pcap_dumper_t *p)

[ 기능 ]

저장 파일을 닫는다.

[ 파라미터 ]

pcap_dumper_t *p : 패킷 덤프 descriptor

 
33. int  pcap_setbuff (pcap_t *p, int dim)

[ 기능 ]

어댑터와 연결된 커널 버퍼의 크기를 지정한다.

[ 파라미터 ]

pcap_t *p : pcap_open_offline()이나 pcap_open_live()에서 return되는 descriptor

int dim : 버퍼의 사이즈

[ 리턴 ]

성공 : 0

실패 : -1

 
34. int  pcap_setmode (pcap_t *p, int mode)

[ 기능 ]

인터페이스 p의 모드를 지정한다.

[ 파라미터 ]

pcap_t *p : pcap_open_offline()이나 pcap_open_live()에서 return되는 descriptor

int mode : 모드(MODE_CAPT : 기본캡춰모드, MODE_STAT : 통계모드)


35. int  pcap_sendpacket (pcap_t *p, u_char *buf, int size)

[ 기능 ]

로우 패킷을 보낸다.

[ 파라미터 ]

pcap_t *p : pcap_open_offline()이나 pcap_open_live()에서 return되는 descriptor

u_char *buf : 보내어진 패킷의 데이터

int size : 버퍼 크기

[ 리턴 ]

성공 : 0

실패 : -1

 
36. int  pcap_setmintocopy (pcap_t *p, int size)

[ 기능 ]

싱글 호출에서 커널에 의해 받아진 데이터의 최소 크기를 지정한다.

[ 파라미터 ]

pcap_t *p : pcap_open_offline()이나 pcap_open_live()에서 return되는 descriptor

int size : 사이즈

[ 리턴 ]

성공 : 0

실패 : -1

 
37. HANDLE  pcap_getevent (pcap_t *p)

[ 기능 ]

인터페이스 p와 연결된 이벤트의 핸들을 구한다.

[ 파라미터 ]

pcap_t *p : pcap_open_offline()이나 pcap_open_live()에서 return되는 descriptor

[ 리턴 ]

성공 : 핸들

 
38. pcap_send_queue *  pcap_sendqueue_alloc (u_int memsize)

[ 기능 ]

send queue를 할당한다.

[ 파라미터 ]

u_int memsize : 큐의 최소 사이즈


39. void pcap_sendqueue_destroy  (  pcap_send_queue *queue  )  

[ 기능 ]

send queue를 해제한다.

[ 파라미터 ]

pcap_send_queue *queue : 큐 포인터

 
40. int  pcap_sendqueue_queue (pcap_send_queue *queue, const struct pcap_pkthdr *pkt_header, const u_char *pkt_data)

[ 기능 ]

send queue의 끝에 패킷을 추가한다.

[ 파라미터 ]

pcap_send_queue *queue :

const struct pcap_pkthdr *pkt_header : 패킷의 헤더와 길이를 포함하는 pcap_pkthdr 자료구조의 포인터

const u_char *pkt_data : 패킷의 데이터를 포함하는 버퍼의 포인터

 
41. u_int  pcap_sendqueue_transmit (pcap_t *p, pcap_send_queue *queue, int sync)

[ 기능 ]

로우 패킷의 큐를 네트워크로 보낸다.

[ 파라미터 ]

pcap_t *p : 보내어진 패킷을 가진 어댑터의 포인터

pcap_send_queue *queue : 보내기 위한 패킷을 포함하는 pcap_send_queue 자료구조의 포인터

int sync : 동기화, 비동기화의 여부로 non-zero(TRUE)일 경우 동기화가 된다.

[ 리턴 ]

성공 : 실제 보내어진 바이트 수

 
42. int  pcap_next_ex (pcap_t *p, struct pcap_pkthdr **pkt_header, u_char **pkt_data)

[ 기능 ]

오프라인 캡처로부터 혹은 인터페이스로부터 패킷을 읽는다.

[ 파라미터 ]

pcap_t *p : 보내어진 패킷을 가진 어댑터의 포인터

struct pcap_pkthdr **pkt_header :

u_char **pkt_data :

[ 리턴 ]

1 : 성공

0 : timeout이 만기될 경우

-1 : 에러 발생

-2 : EOF

 
43. int  pcap_live_dump (pcap_t *p, char *filename, int maxsize, int maxpacks)

[ 기능 ]

인터페이스로부터 네트워크 트래픽 덤프를 파일로 저장한다.

[ 파라미터 ]

pcap_t *p : 어댑터의 포인터

char *filename : 파일 이름

int maxsize : 최대 사이즈

int maxpacks : 최대 패킷

[ 리턴 ]

성공 : 1

실패 : 0

 
44. int  pcap_live_dump_ended (pcap_t *p, int sync)

[ 기능 ]

커널 덤프 프로세스의 상태를 구한다.

[ 파라미터 ]

pcap_t *p : 어댑터의 포인터

int sync : nonzero면 덤프가 끝날때까지 함수는 블록킹 된다.

[ 리턴 ]

성공 : 1

실패 : -1

 
45. pcap_stat *  pcap_stats_ex (pcap_t *p, int *pcap_stat_size)

[ 기능 ]

현재 캡춰한 통계를 보여준다.

[ 파라미터 ]

pcap_t *p : 어댑터의 포인터

int *pcap_stat_size : pcap_stat 자료구조의 사이트를 포함한다.

[ 리턴 ]

성공 : pcap_stat 포인터로 현재 디바이스의 통계를 저장

실패 : NULL

 
46. char* pcap_strerror  (  int    error  )  

[ 기능 ]

strerror()가 이용가능하지 않을때 제공된다.

[ 파라미터 ]

int error : 에러

[ 리턴 ]

성공 : 에러 메시지

출처 : Tong - ssabro님의 Network Programming

1 2 3 4 5 6 7 8 9 10 다음