MSHLFLAGS 열거형(wtypesbase.h)
마샬링을 수행할 이유를 지정합니다.
Syntax
typedef enum tagMSHLFLAGS {
MSHLFLAGS_NORMAL = 0,
MSHLFLAGS_TABLESTRONG = 1,
MSHLFLAGS_TABLEWEAK = 2,
MSHLFLAGS_NOPING = 4,
MSHLFLAGS_RESERVED1 = 8,
MSHLFLAGS_RESERVED2 = 16,
MSHLFLAGS_RESERVED3 = 32,
MSHLFLAGS_RESERVED4 = 64
} MSHLFLAGS;
상수
MSHLFLAGS_NORMAL 값: 0 인터페이스 포인터가 한 프로세스에서 다른 프로세스로 전달되기 때문에 마샬링이 발생합니다. 일반적인 경우입니다. 마샬링 프로세스에 의해 생성된 데이터 패킷은 대상 프로세스에서 숨기지 않습니다. 마샬링된 데이터 패킷은 한 번만 숨기거나 전혀 숨기지 않을 수 있습니다. 수신기가 데이터 패킷을 성공적으로 분리하면 데이터 패킷에 대한 CoReleaseMarshalData 함수가 경계 해제 프로세스의 일부로 자동으로 호출됩니다. 수신자가 데이터 패킷을 숨기지 않거나 분리할 수 없는 경우 발신자는 데이터 패킷에서 CoReleaseMarshalData 를 호출해야 합니다. |
MSHLFLAGS_TABLESTRONG 값: 1 데이터 패킷은 전역적으로 액세스할 수 있는 테이블에 저장되어야 하기 때문에 마샬링이 발생합니다. 이 테이블은 하나 이상의 마마샬링이 해제되거나 전혀 숨기지 않을 수 있습니다. 테이블에 데이터 패킷이 있으면 마샬링되는 인터페이스에 대한 강력한 참조로 계산되므로 개체를 활성 상태로 유지하기에 충분합니다. 데이터 패킷이 테이블에서 제거되면 테이블 구현자는 데이터 패킷에서 CoReleaseMarshalData 함수를 호출해야 합니다. MSHLFLAGS_TABLESTRONG 창을 놓기 대상으로 등록할 때 RegisterDragDrop 함수에서 사용됩니다. 이렇게 하면 최종 사용자가 창을 몇 번이나 끌어도 창을 놓기 대상으로 등록할 수 있습니다. RevokeDragDrop 함수는 CoReleaseMarshalData를 호출합니다. |
MSHLFLAGS_TABLEWEAK 값: 2 데이터 패킷은 전역적으로 액세스할 수 있는 테이블에 저장되어야 하기 때문에 마샬링이 발생합니다. 이 테이블은 하나 이상의 마마샬링이 해제되거나 전혀 숨기지 않을 수 있습니다. 그러나 테이블에 데이터 패킷이 있으면 마샬링되는 인터페이스에 대한 약한 참조 역할을 하므로 개체를 활성 상태로 유지하는 데 충분하지 않습니다. 데이터 패킷이 테이블에서 제거되면 테이블 구현자는 데이터 패킷에서 CoReleaseMarshalData 함수를 호출해야 합니다. MSHLFLAGS_TABLEWEAK 일반적으로 ROT(실행 중인 개체 테이블)에 개체를 등록할 때 사용됩니다. 이렇게 하면 ROT에 있는 개체의 항목이 다른 연결이 없는 경우 개체를 활성 상태로 유지할 수 없습니다. 자세한 내용은 IRunningObjectTable::Register 를 참조하세요. |
MSHLFLAGS_NOPING 값: 4 프록시 마샬링이 아닌 원래 개체 마샬링에 이 플래그를 추가하면 해당 개체에 대한 ping 프로토콜이 비활성화됩니다. |
MSHLFLAGS_RESERVED1 값: 8 |
MSHLFLAGS_RESERVED2 값: 16 |
MSHLFLAGS_RESERVED3 값: 32 |
MSHLFLAGS_RESERVED4 값: 64 |
요구 사항
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
머리글 | wtypesbase.h(WTypes.h 포함) |