다음을 통해 공유


SCOPEDATAITEM 구조체(mmc.h)

SCOPEDATAITEM 구조체는 scope 창에 삽입할 항목을 지정합니다.

구문

typedef struct _SCOPEDATAITEM {
  DWORD      mask;
  LPOLESTR   displayname;
  int        nImage;
  int        nOpenImage;
  UINT       nState;
  int        cChildren;
  LPARAM     lParam;
  HSCOPEITEM relativeID;
  HSCOPEITEM ID;
} SCOPEDATAITEM;

멤버

mask

유효한 데이터를 포함하는 구조체의 멤버를 나타내는 플래그 배열을 지정하는 값입니다. 이 구조체가 IConsoleNameSpace2::GetItem 메서드에서 사용되는 경우 검색할 항목 특성을 나타냅니다. 이 멤버는 다음 값 중 하나일 수 있습니다.

SDI_STR(0x00002)

구조체의 displayname 멤버가 유효합니다. SDI_STRdisplayname 멤버에 대한 값을 지정하는 경우에만 지원됩니다. MMC는 displayname 멤버에 대한 값을 저장하지 않으며 IConsoleNamespace2::GetItem 메서드를 호출하여 검색할 수 없습니다.

SDI_IMAGE(0x00004)

구조체의 nImage 멤버가 유효하거나 채워야 합니다.

SDI_OPENIMAGE(0x00008)

구조체의 nOpenImage 멤버가 유효하거나 채워야 합니다.

SDI_STATE(0x00010)

구조체의 nState 멤버가 유효하거나 채워야 합니다.

SDI_PARAM(0x00020)

구조체의 lParam 멤버가 유효하거나 채워야 합니다.

SDI_CHILDREN(0x00040)

구조체의 cChildren 멤버가 유효하거나 채워야 합니다.

SDI_PARENT(0x00000000)

scope 창에 항목을 삽입할 때만 사용합니다. 구조체의 relativeID 멤버는 부모의 HSCOPEITEM 입니다. 항목은 relativeID에서 참조하는 항목의 마지막 자식으로 삽입됩니다.

SDI_PREVIOUS(0x10000000)

scope 창에 항목을 삽입할 때만 사용합니다. 구조체의 relativeID 멤버는 이전 형제의 HSCOPEITEM 입니다.

SDI_NEXT(0x20000000)

scope 창에 항목을 삽입할 때만 사용합니다. 구조체의 relativeID 멤버는 다음 형제의 HSCOPEITEM 입니다.

SDI_FIRST(0x08000000)

scope 창에 항목을 삽입할 때만 사용합니다. 구조체의 relativeID 멤버는 부모의 HSCOPEITEM 입니다. 항목은 relativeID에서 참조하는 항목의 첫 번째 자식으로 삽입됩니다.

displayname

구조 체가 사용되는 방식에 따라 null로 끝나는 문자열에 대한 MMC_CALLBACK 값 또는 포인터입니다.

  • IConsoleNameSpace2::InsertItem을 사용하여 항목을 삽입하는 경우 이 멤버를 MMC_CALLBACK 설정해야 합니다.
  • 스냅인에 의해 삽입된 항목의 이름이 IConsoleNameSpace2::SetItem을 사용하여 변경되면 이 멤버를 MMC_CALLBACK 설정해야 합니다.
  • 정적 노드의 이름(콘솔에서 삽입하는 항목)이 변경되면 이 멤버를 MMC_CALLBACK 설정하거나 항목 텍스트가 포함된 null로 끝나는 문자열에 대한 포인터가 될 수 있습니다.
스냅인은 MMC_CALLBACK 대신 MMC_TEXTCALLBACK 사용할 수 있습니다. MMC_TEXTCALLBACK 값은 올바른 형식(캐스팅 필요 없음) 버전의 MMC_CALLBACK.

MMC_TEXTCALLBACK MMC 버전 1.2에 도입되었습니다.

nImage

항목이 선택되지 않은 상태일 때 이미지 목록의 가상 이미지 인덱스입니다. 가상 이미지 인덱스는 내부적으로 실제 인덱스로 매핑됩니다. 이 멤버는 콜백 항목( MMC_CALLBACK 또는 MMC_IMAGECALLBACK)으로 지정할 수도 있습니다. MMC_IMAGECALLBACK 올바른 형식(캐스팅 필요 없음) 버전의 MMC_CALLBACK.

MMC_IMAGECALLBACK MMC 버전 1.2에 도입되었습니다.

nOpenImage

항목이 선택된 상태일 때 이미지 목록의 가상 이미지 인덱스입니다. 가상 이미지 인덱스는 내부적으로 실제 인덱스로 매핑됩니다. 항목은 Microsoft Windows Explorer 폴더와 같습니다. 열려 있는 폴더에 대한 아이콘입니다.

nState

항목의 상태 마스크를 지정하는 값입니다. IConsoleNameSpace2::GetItem의 경우 이 멤버는 항목이 한 번 이상 확장된 경우 MMC_SCOPE_ITEM_STATE_EXPANDEDONCE 반환하고, 항목이 확장되지 않은 경우 0을 반환합니다.

이 멤버는 IConsoleNameSpace2::InsertItemIConsoleNameSpace2::SetItem에 대해 무시됩니다.

cChildren

열거된 항목 수를 지정하는 값입니다.

스냅인에서 scope 항목을 삽입하면 cChildren 필드를 0으로 설정하고 다음 조건이 모두 충족되면 SDI_CHILDREN 플래그를 설정해야 합니다.

  • 스냅인에는 삽입된 항목 아래에 추가할 자식 항목이 없습니다.
  • 스냅인은 이 항목에 대한 네임스페이스 확장 스냅인을 동적으로 사용하도록 설정하지 않습니다.
그렇지 않으면 scope 항목을 삽입할 때 cChildren 필드를 1(1)로 설정하거나 전혀 설정하지 않아야 합니다.

나중에 조건이 변경되면 스냅인은 IConsoleNameSpace2::SetItem을 사용하여 cChildren 필드를 수정할 수 있습니다.

자식 수를 결정하는 데 상당한 시간이 걸리는 경우 스냅인은 삽입 시 최상의 추측을 사용하고 MMC 사용자 인터페이스가 잠기지 않도록 다른 스레드에서 실제 결정을 내려야 합니다. 필요한 경우 IConsoleNameSpace2::SetItem 을 사용하여 설정을 수정할 수 있습니다.

MMC는 cChildren 수가 0인 scope 항목을 검색하면 사용자 또는 IRequiredExtensions 인터페이스에서 항목에 대해 정적으로 사용하도록 설정된 네임스페이스 확장을 확인합니다. 사용할 수 없는 경우 더하기(+) 기호가 항목에서 제거됩니다.

항목을 확장한 후 더하기 기호의 상태는 실제 자식 항목 수에 따라 결정됩니다.

lParam

항목과 연결할 사용자가 제공한 32비트 값을 지정하는 값입니다. 쿠키라고도 하는 이 항목은 IComponentData::QueryDataObject에 첫 번째 매개 변수로 전달되는 값입니다.

relativeID

콘솔에서 제공하는 고유 항목 식별자입니다. 항목은 이 멤버가 지정하는 항목을 기준으로 한 위치에 삽입됩니다. 마스크 설정은 상대 위치를 결정합니다.

relativeID가 해석되는 방법을 확인하려면 다음 상수 중 하나를 마스크 멤버로 지정합니다.

SDI_PARENT

relativeID 는 부모의 HSCOPEITEM 입니다. 항목은 부모 항목의 마지막 자식으로 삽입됩니다. SDI_PARENT 값은 기본적으로 부모 항목 ID가 relativeID이기 때문에 no-op임을 나타냅니다.

SDI_PREVIOUS

relativeID 는 이전 형제의 HSCOPEITEM 입니다.

SDI_NEXT

relativeID 는 다음 형제의 HSCOPEITEM 입니다.

SDI_FIRST

항목이 첫 번째 자식으로 삽입되는 경우를 제외하고 SDI_PARENT 동일합니다.

ID

scope 항목에 대해 콘솔에서 제공하는 고유 식별자를 지정하는 값입니다. 이 값은 일부 IConsole2 및IConsoleNameSpace2 인터페이스 메서드에 대한 호출의 scope 창에서 항목을 식별하는 데 사용됩니다.

스냅인에서 IConsoleNameSpace2::InsertItem을 사용하여 scope 창에 항목을 삽입한 후 SCOPEDATAITEM 구조체의 ID 멤버에는 새로 삽입된 항목의 HSCOPEITEM 핸들이 포함됩니다. 이 핸들은 scope 항목의 고유 식별자입니다.

정적 노드의 경우 MMC는 스냅인의 scope 창에 항목을 삽입합니다. 그런 다음 MMC는 정적 노드의 HSCOPEITEMMMCN_EXPAND 알림의 매개 변수로 스냅인에 전달합니다.

스냅인은 삽입된 각 항목의 HSCOPEITEM을 저장하고 나중에 IConsole2 및 IConsoleNameSpace2 인터페이스의 메서드를 사용하여 항목을 조작하는 데 사용해야 합니다.

설명

항목을 정적 노드의 형제로 삽입하는 것은 유효하지 않습니다. 스냅인이 relativeID 멤버를 정적 노드의 HSCOPEITEM 으로 설정하고 , SDI_PREVIOUS 또는 SDI_NEXT 플래그를 설정한 다음, IConsoleNameSpace2::InsertItem을 호출하면 MMC는 E_INVALIDARG 반환합니다.

요구 사항

   
지원되는 최소 클라이언트 Windows Vista
지원되는 최소 서버 Windows Server 2008
머리글 mmc.h

참고 항목

IComponentData

IComponentData::GetDisplayInfo

IConsoleNameSpace2::GetItem

IConsoleNameSpace2::InsertItem

IConsoleNameSpace2::SetItem