DdeInitializeA 함수(ddeml.h)

DDEML( 동적 데이터 교환 관리 라이브러리 )에 애플리케이션을 등록합니다. 애플리케이션은 다른 DDEML(동적 데이터 교환 관리 라이브러리) 함수를 호출하기 전에 이 함수를 호출해야 합니다.

구문

UINT DdeInitializeA(
  [in, out] LPDWORD     pidInst,
  [in]      PFNCALLBACK pfnCallback,
  [in]      DWORD       afCmd,
            DWORD       ulRes
);

매개 변수

[in, out] pidInst

형식: LPDWORD

애플리케이션 instance 식별자입니다. 초기화 시 이 매개 변수는 0을 가리킵니다. 함수가 성공하면 이 매개 변수는 애플리케이션의 instance 식별자를 가리킵니다. 이 값은 필요한 다른 모든 DDEML 함수에서 idInst 매개 변수로 전달되어야 합니다. 애플리케이션이 DDEML DLL(동적 연결 라이브러리)의 여러 인스턴스를 사용하는 경우 애플리케이션은 각 instance 대해 다른 콜백 함수를 제공해야 합니다.

pidInst가 0이 아닌 값을 가리키는 경우 DDEML의 다시 초기화가 암시됩니다. 이 경우 pidInst는 유효한 애플리케이션 instance 식별자를 가리킵니다.

[in] pfnCallback

형식: PFNCALLBACK

애플리케이션 정의 DDE 콜백 함수에 대한 포인터입니다. 이 함수는 시스템에서 보낸 DDE 트랜잭션을 처리합니다. 자세한 내용은 DdeCallback 콜백 함수를 참조하세요.

[in] afCmd

형식:DWORD

APPCMD_, CBF_MF_ 플래그 집합입니다. APPCMD_ 플래그는 DdeInitialize에 대한 특별한 지침을 제공합니다. CBF_ 플래그는 특정 유형의 트랜잭션이 콜백 함수에 도달하지 못하도록 하는 필터를 지정합니다. MF_ 플래그는 DDE 모니터링 애플리케이션이 모니터링하는 DDE 작업의 유형을 지정합니다. 이러한 플래그를 사용하면 콜백 함수에 대한 불필요한 호출을 제거하여 DDE 애플리케이션의 성능을 향상시킵니다.

이 매개 변수는 다음 값 중 하나 이상일 수 있습니다.

의미
APPCLASS_MONITOR
0x00000001L
애플리케이션이 시스템에서 DDE 작업을 모니터링할 수 있도록 합니다. 이 플래그는 DDE 모니터링 애플리케이션에서 사용하기 위한 것입니다. 애플리케이션은 하나 이상의 모니터 플래그를 APPCLASS_MONITOR 플래그와 결합하여 모니터링할 DDE 작업의 유형을 지정합니다. 자세한 내용은 다음 주의 섹션을 참조하세요.
APPCLASS_STANDARD
0x00000000L
애플리케이션을 표준(비모니터링) DDEML 애플리케이션으로 등록합니다.
APPCMD_CLIENTONLY
0x00000010L
애플리케이션이 DDE 대화의 서버가 되는 것을 방지합니다. 애플리케이션은 클라이언트만 될 수 있습니다. 이 플래그는 DDEML에 의한 리소스 소비를 줄입니다. 여기에는 CBF_FAIL_ALLSVRXACTIONS 플래그의 기능이 포함됩니다.
APPCMD_FILTERINITS
0x00000020L
애플리케이션이 문자열 핸들을 만들고 서비스 이름을 등록하거나 DdeNameService 또는 DdeInitialize 함수에 대한 후속 호출을 통해 필터링을 해제할 때까지 DDEML이 애플리케이션에 XTYP_CONNECT 및 XTYP_WILDCONNECT 트랜잭션을 보내지 못하도록 합니다. 이 플래그는 애플리케이션이 플래그를 지정하는지 여부에 관계없이 애플리케이션이 처음으로 DdeInitialize 를 호출할 때 항상 적용됩니다. DdeInitialize에 대한 후속 호출에서 이 플래그를 지정하지 않으면 애플리케이션의 서비스 이름 필터가 꺼지지만 지정하면 애플리케이션의 서비스 이름 필터가 켜집니다.
CBF_FAIL_ALLSVRXACTIONS
0x0003f000
콜백 함수가 서버 트랜잭션을 수신하지 못하도록 합니다. 시스템은 이 애플리케이션에 트랜잭션을 보내는 각 클라이언트에 DDE_FNOTPROCESSED 반환합니다. 이 플래그는 모든 CBF_FAIL_ 플래그를 결합하는 것과 같습니다.
CBF_FAIL_ADVISES
0x00004000
콜백 함수가 XTYP_ADVSTARTXTYP_ADVSTOP 트랜잭션을 수신하지 못하도록 합니다. 시스템은 XTYP_ADVSTART 또는 XTYP_ADVSTOP 트랜잭션을 서버에 보내는 각 클라이언트에 DDE_FNOTPROCESSED 반환합니다.
CBF_FAIL_CONNECTIONS
0x00002000
콜백 함수가 XTYP_CONNECTXTYP_WILDCONNECT 트랜잭션을 수신하지 못하도록 합니다.
CBF_FAIL_EXECUTES
0x00008000
콜백 함수가 XTYP_EXECUTE 트랜잭션을 수신하지 못하도록 합니다. 시스템은 서버에 XTYP_EXECUTE 트랜잭션을 보내는 클라이언트에 DDE_FNOTPROCESSED 반환합니다.
CBF_FAIL_POKES
0x00010000
콜백 함수가 XTYP_POKE 트랜잭션을 수신하지 못하도록 합니다. 시스템은 서버에 XTYP_POKE 트랜잭션을 보내는 클라이언트에 DDE_FNOTPROCESSED 반환합니다.
CBF_FAIL_REQUESTS
0x00020000
콜백 함수가 XTYP_REQUEST 트랜잭션을 수신하지 못하도록 합니다. 시스템은 서버에 XTYP_REQUEST 트랜잭션을 보내는 클라이언트에 DDE_FNOTPROCESSED 반환합니다.
CBF_FAIL_SELFCONNECTIONS
0x00001000
콜백 함수가 애플리케이션의 자체 instance XTYP_CONNECT 트랜잭션을 수신하지 못하도록 합니다. 이 플래그는 애플리케이션이 자체 instance DDE 대화를 설정하지 못하도록 합니다. 애플리케이션 자체의 다른 인스턴스와 통신 해야 하지만 자체와 통신 해야 하는 경우이 플래그를 사용 해야 합니다.
CBF_SKIP_ALLNOTIFICATIONS
0x003c0000
콜백 함수가 알림을 받지 못하도록 합니다. 이 플래그는 모든 CBF_SKIP_ 플래그를 결합하는 것과 같습니다.
CBF_SKIP_CONNECT_CONFIRMS
0x00040000
콜백 함수가 XTYP_CONNECT_CONFIRM 알림을 받지 못하도록 합니다.
CBF_SKIP_DISCONNECTS
0x00200000
콜백 함수가 XTYP_DISCONNECT 알림을 받지 못하도록 합니다.
CBF_SKIP_REGISTRATIONS
0x00080000
콜백 함수가 XTYP_REGISTER 알림을 받지 못하도록 합니다.
CBF_SKIP_UNREGISTRATIONS
0x00100000
콜백 함수가 XTYP_UNREGISTER 알림을 받지 못하도록 합니다.
MF_CALLBACKS
0x08000000
트랜잭션이 시스템의 DDE 콜백 함수로 전송 될 때마다 콜백 함수를 알 수 있습니다.
MF_CONV
0x40000000
대화가 설정되거나 종료될 때마다 콜백 함수에 알 수 있습니다.
MF_ERRORS
0x10000000
DDE 오류가 발생할 때마다 콜백 함수에 알림
MF_HSZ_INFO
0x01000000
DDE 애플리케이션이 문자열 핸들의 사용 횟수를 생성, 해제 또는 증가하거나 DdeUninitialize 함수 호출의 결과로 문자열 핸들이 해제 될 때마다 콜백 함수에 알려줍니다.
MF_LINKS
0x20000000
advise 루프가 시작되거나 종료될 때마다 콜백 함수에 알 수 있습니다.
MF_POSTMSGS
0x04000000
시스템 또는 애플리케이션이 DDE 메시지를 게시할 때마다 콜백 함수에 알 수 있습니다.
MF_SENDMSGS
0x02000000
시스템 또는 애플리케이션이 DDE 메시지를 보낼 때마다 콜백 함수에 알 줍니다.

ulRes

형식:DWORD

예약; 를 0으로 설정해야 합니다.

반환 값

형식: UINT

함수가 성공하면 반환 값이 DMLERR_NO_ERROR.

함수가 실패하면 반환 값은 다음 값 중 하나입니다.

설명

DDEML의 여러 인스턴스를 사용하는 애플리케이션은 인스턴스 간에 DDEML 개체를 전달해서는 안 됩니다.

DDE 모니터링 애플리케이션은 동일한 애플리케이션 instance 컨텍스트 내에서 DDE 작업(대화 설정, 트랜잭션 발급 등)을 시도해서는 안 됩니다.

동일한 태스크의 instance 이미 진행 중인 동기 트랜잭션이 있는 경우 동기 트랜잭션이 DMLERR_REENTRANCY 오류와 함께 실패합니다.

CBF_FAIL_ALLSVRXACTIONS 플래그를 사용하면 DDEML이 모든 서버 트랜잭션을 필터링하고 DdeInitialize에 대한 후속 호출을 통해 변경할 수 있습니다. APPCMD_CLIENTONLY 플래그는 DDEML이 서버에 대한 키 리소스를 만들지 못하게 하며 DdeInitialize에 대한 후속 호출로 변경할 수 없습니다.

ANSI 버전과 DdeInitialize의 유니코드 버전이 있습니다. 라는 버전은 DDE 대화(ANSI 또는 유니코드)를 제어하는 데 사용되는 창 프로시저의 유형과 CONVCONTEXT 구조체(CP_WINANSI 또는 CP_WINUNICODE)의 iCodePage 멤버에 대한 기본값을 결정합니다.

참고

ddeml.h 헤더는 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 DdeInitialize를 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

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

추가 정보

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