IPC-DDE기법 함수정리

kentaro81의 이미지

DDE (Dynamic Data Exchange) 동적 자료교환

Init Day 29 April 2009
Write by 최소영
1. 구현방식

2. 사용API
ddeml.h

3. 사용함수
UINT DdeInitialize(
LPDWORD pidInst,
PFNCALLBACK pfnCallback,
DWORD afCmd,
DWORD ulRes );
첫번째 인자 : 객체 ID 포인터
두번째 인자 : 시스템으로 DDE Transationc 을 수행할 함수
세번째 인자 : AF의 모드(필터링, request 실행…)
네번째 인자 : 예비인자 (0 선택)
사용 : DDE환경 초기화.

HCONV DdeConnect(
DWORD idInst,
HSZ hszService,
HSZ hszTopic,
PCONVCONTEXT pCC );
첫번째 인자 : 객체 ID
두번째 인자 : 서비스 / 서버 이름
세번째 인자 : 토픽 이름
네번째 인자 : 전달Context정보 (null일 경우 XTYP_CONNECT or XTYP_WILDCONNECT
transaction 의 Default 메시지 전달)
사용 : DDE서버 에 연결

HSZ DdeCreateStringHandle(
DWORD idInst,
LPTSTR psz,
int iCodePage );
첫번째 인자 : 객체 ID
두번째 인자 : 문자열 (NULL문자 까지, 최대255)
세번째 인자 : 사용된 문자열의 code(WINANSI, CP_WINUNICODE)
사용 : DDE 문자열로 정의한 핸들 생성

HDDEDATA DdeCreateDataHandle(
DWORD idInst,
LPBYTE pSrc,
DWORD cb,
DWORD cbOff,
HSZ hszItem,
UINT wFmt,
UINT afCmd );
첫번째 인자 : 객체 ID
두번째 인자 : DDE객체에 저장될 Data 버퍼 포인터
세번째 인자 : 버퍼의 크기(0일 경우 배열무시, 문자배열에 null일 경우 종료)
네번째 인자 : 버퍼의 시작위치 offset
다섯번째 인자 : Item 핸들 이름
여섯번째 인자 : data의 표준 Clipboard 형태
일곱번째 인자 : 별도의 플래그(플래그 생성시 명시적으로 핸들을 free해야 함)
사용 : DDE객체를 생성, 각각의 버퍼내용을 저장

HDDEDATA DdeClientTransaction(
LPBYTE pData,
DWORD cbData,
HCONV hConv,
HSZ hszItem,
UINT wFmt,
UINT wType,
DWORD dwTimeout,
LPDWORD pdwResult );
첫번째 인자 : client에서 Server에게 넘길 data의 시작점(pointer), cdData로 핸들이 나눠져 있을 경우 -1, 그 외의 경우 Null
두번째 인자 : pData 의 길이
세번째 인자 : Transaction 연결 핸들
네번째 인자 : Transaction 될 Item
다섯번째 인자 : data의 표준 Clipboard 형태
여섯번째 인자 : Transaction 타입 (XTYP_ADVSTART, XTYP_ADVSTOP, XTYP_EXECUTE, XTYP_POKE, XTYP_REQUEST)
일곱번째 인자 : Transaction Sync time (트랜젝션 연동 시간 1/1000 초)
여덟번째 인자 : Transaction 의 결과값을 받을 포인터
사용 : transaction 수행(client만 호출할 수 있으며, 서버와 연결이 된 후 사용할 수 있다.)

LPBYTE DdeAccessData(
HDDEDATA hData,
LPDWORD pcbDataSize );
첫번째 인자 : DDE 객체의 핸들
두번째 인자 : 연결할 Data의 크기(NULL일 경우 반환값 0)
사용 : DDE객체 의 Data에 접근 (반드시 UnaccessData() 함수가 필요함.)

BOOL DdeUnaccessData(
HDDEDATA hData );
첫번째 인자 : DDE객체 의 핸들
사용 : DDE객체의 접근 해제

BOOL DdeFreeDataHandle(
HDDEDATA hData );
첫번째 인자 : DDE객체 의 핸들
사용 : DDE객체 핸들 삭제

BOOL DdeDisconnect(
HCONV hConv );
첫번째 인자 : DDE서버 연결핸들
사용 : DDE서버의 연결 해제

BOOL DdeFreeStringHandle(
DWORD idInst,
HSZ hsz );
첫번째 인자 : 객체 ID
두번째 인자 : 문자열
사용 : DDE 문자열 핸들 삭제

Epilogue
DDE는 고전적인 IPC기법중 하나이다. 예전에는 IPC기법이 그렇게 많지 않아 사용되었지만 최근에는 메모리 맵핑, 메일슬롯 등으로 많이 대체되었다. 하지만 legacy 시스템에서 사용중인 경우가 있으므로 알아둘 만은 하다. 연결과정이 너무 복잡하다………

File attachments: 
첨부파일 크기
Microsoft Office document icon DDE.doc42 KB
Forums: 

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.