DdeClientTransaction 함수(ddeml.h)

클라이언트와 서버 간의 데이터 트랜잭션을 시작합니다. DDE(동적 데이터 교환) 클라이언트 애플리케이션만 이 함수를 호출할 수 있으며, 애플리케이션은 서버와의 대화를 설정한 후에만 사용할 수 있습니다.

구문

HDDEDATA DdeClientTransaction(
  [in, optional]  LPBYTE  pData,
  [in]            DWORD   cbData,
  [in]            HCONV   hConv,
  [in, optional]  HSZ     hszItem,
  [in]            UINT    wFmt,
  [in]            UINT    wType,
  [in]            DWORD   dwTimeout,
  [out, optional] LPDWORD pdwResult
);

매개 변수

[in, optional] pData

형식: LPBYTE

클라이언트가 서버에 전달해야 하는 데이터의 시작입니다.

필요에 따라 애플리케이션은 서버에 전달할 데이터 핸들(HDDEDATA)을 지정할 수 있으며, 이 경우 cbData 매개 변수를 -1로 설정해야 합니다. 이 매개 변수는 wType 매개 변수가 XTYP_EXECUTE 또는 XTYP_POKE 경우에만 필요합니다. 그렇지 않으면 이 매개 변수는 NULL이어야 합니다.

pData가 데이터 핸들인 트랜잭션을 XTYP_POKE 이 매개 변수의 선택적 사용의 경우 wFmt 매개 변수에 지정된 것과 동일한 데이터 형식을 사용하여 DdeCreateDataHandle 함수에 대한 이전 호출을 통해 핸들을 만들어야 합니다.

[in] cbData

형식:DWORD

데이터가 문자열인 경우 종료 NULL을 포함하여 pData 매개 변수가 가리키는 데이터의 길이(바이트)입니다. 값 -1은 pData 가 전송되는 데이터를 식별하는 데이터 핸들임을 나타냅니다.

[in] hConv

형식: HCONV

트랜잭션이 수행되는 대화에 대한 핸들입니다.

[in, optional] hszItem

형식: HSZ

트랜잭션 중에 데이터가 교환되는 데이터 항목에 대한 핸들입니다. 이 핸들은 DdeCreateStringHandle 함수에 대한 이전 호출에 의해 만들어졌어야 합니다. wType 매개 변수가 XTYP_EXECUTE 경우 이 매개 변수는 무시되며 0L로 설정해야 합니다.

[in] wFmt

형식: UINT

데이터 항목이 제출되거나 요청되는 표준 클립보드 형식입니다.

wType 매개 변수로 지정된 트랜잭션이 데이터를 전달하지 않거나 XTYP_EXECUTE 경우 이 매개 변수는 0이어야 합니다.

wType 매개 변수로 지정된 트랜잭션이 실행되지 않는 DDE 데이터(XTYP_POKE, XTYP_ADVSTART, XTYP_ADVSTOP, XTYP_REQUEST)를 참조하는 경우 wFmt 값은 유효한 미리 정의된(CF_) DDE 형식이거나 유효한 등록된 클립보드 형식이어야 합니다.

[in] wType

형식: UINT

트랜잭션 유형입니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.

의미
XTYP_ADVSTART
0x1030
advise 루프를 시작합니다. 대화 내에는 임의의 수의 고유한 조언 루프가 있을 수 있습니다. 애플리케이션은 XTYP_ADVSTART 트랜잭션 형식을 다음 플래그 중 하나 이상과 결합하여 advise 루프 형식을 변경할 수 있습니다.
  • XTYPF_NODATA. 실제로 데이터를 보내지 않고 클라이언트에 데이터 변경 내용을 알리도록 서버에 지시합니다. 이 플래그는 클라이언트가 알림을 무시하거나 서버에서 변경된 데이터를 요청하는 옵션을 제공합니다.
  • XTYPF_ACKREQ. 클라이언트가 다음 데이터 항목을 보내기 전에 이전 데이터 항목을 수신했음을 인정할 때까지 대기하도록 서버에 지시합니다. 이 플래그는 빠른 서버가 클라이언트에서 처리할 수 있는 것보다 빠르게 데이터를 전송하지 못하도록 합니다.
XTYP_ADVSTOP
0x8040
advise 루프를 종료합니다.
XTYP_EXECUTE
0x4050
실행 트랜잭션을 시작합니다.
XTYP_POKE
0x4090
찌르기 트랜잭션을 시작합니다.
XTYP_REQUEST
0x20B0
요청 트랜잭션을 시작합니다.

[in] dwTimeout

형식:DWORD

클라이언트가 동기 트랜잭션에서 서버 애플리케이션의 응답을 기다리는 최대 시간(밀리초)입니다. 이 매개 변수는 비동기 트랜잭션에 대해 TIMEOUT_ASYNC 합니다.

[out, optional] pdwResult

형식: LPDWORD

트랜잭션 결과를 수신하는 변수에 대한 포인터입니다. 결과를 검사 않는 애플리케이션은 이 값에 NULL을 사용할 수 있습니다. 동기 트랜잭션의 경우 이 변수의 하위 순서 단어에는 트랜잭션으로 인한 적용 가능한 DDE_ 플래그가 포함됩니다. 이렇게 하면 DDE_APPSTATUS 비트에 종속된 애플리케이션이 지원됩니다. 그러나 애플리케이션은 DDEML( 동적 데이터 교환 관리 라이브러리 )의 이후 버전에서 지원되지 않을 수 있으므로 더 이상 이러한 비트를 사용하지 않는 것이 좋습니다. 비동기 트랜잭션의 경우 이 변수는 DdeAbandonTransaction 함수 및 XTYP_XACT_COMPLETE 트랜잭션에 사용할 고유한 트랜잭션 식별자로 채워집니다.

반환 값

형식: HDDEDATA

함수가 성공하면 반환 값은 클라이언트가 서버에서 데이터를 기대하는 성공적인 동기 트랜잭션에 대한 데이터를 식별하는 데이터 핸들입니다. 반환 값은 성공적인 비동기 트랜잭션 및 클라이언트가 데이터를 기대하지 않는 동기 트랜잭션의 경우 0이 아닙니다. 반환 값은 실패한 모든 트랜잭션에 대해 0입니다.

DdeGetLastError 함수를 사용하여 다음 값 중 하나일 수 있는 오류 코드를 가져올 수 있습니다.

설명

애플리케이션이 DdeClientTransaction에서 반환된 데이터 핸들을 사용하여 완료되면 애플리케이션은 DdeFreeDataHandle 함수를 호출하여 핸들을 해제해야 합니다.

트랜잭션은 동기 또는 비동기적일 수 있습니다. 동기 트랜잭션 중에 DdeClientTransaction 은 트랜잭션이 성공적으로 완료되거나 실패할 때까지 반환되지 않습니다. 동기 트랜잭션으로 인해 클라이언트는 다양한 비동기 이벤트를 기다리는 동안 모달 루프를 입력합니다. 이 때문에 클라이언트 애플리케이션은 동기 트랜잭션을 기다리는 동안 사용자 입력에 응답할 수 있지만 애플리케이션은 첫 번째 트랜잭션과 연결된 작업으로 인해 두 번째 동기 트랜잭션을 시작할 수 없습니다. 동일한 작업의 instance 이미 진행 중인 동기 트랜잭션이 있는 경우 DdeClientTransaction이 실패합니다.

비동기 트랜잭션 중에 DdeClientTransaction 은 트랜잭션이 시작된 후 를 반환하고 참조할 트랜잭션 식별자를 전달합니다. 서버의 DDE 콜백 함수가 비동기 트랜잭션 처리를 완료하면 시스템은 클라이언트에 XTYP_XACT_COMPLETE 트랜잭션을 보냅니다. 이 트랜잭션은 DdeClientTransaction을 호출하여 시작한 비동기 트랜잭션의 결과를 클라이언트에 제공합니다. 클라이언트 애플리케이션은 DdeAbandonTransaction 함수를 호출하여 비동기 트랜잭션을 중단하도록 선택할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 ddeml.h(Windows.h 포함)
라이브러리 User32.lib
DLL User32.dll

추가 정보

개념

DdeAbandonTransaction

DdeAccessData

DdeConnect

DdeConnectList

DdeCreateDataHandle

DdeCreateStringHandle

DdeFreeDataHandle

동적 데이터 교환 관리 라이브러리

참조

XTYP_ADVSTART

XTYP_ADVSTOP

XTYP_EXECUTE

XTYP_POKE

XTYP_REQUEST