다음을 통해 공유


SHChangeNotifyRegister 함수(shlobj_core.h)

파일 시스템에서 알림을 지원하는 경우 파일 시스템 또는 셸에서 알림을 받을 창을 등록합니다.

구문

ULONG SHChangeNotifyRegister(
  [in] HWND                      hwnd,
       int                       fSources,
       LONG                      fEvents,
       UINT                      wMsg,
       int                       cEntries,
  [in] const SHChangeNotifyEntry *pshcne
);

매개 변수

[in] hwnd

형식: HWND

변경 또는 알림 메시지를 수신하는 창에 대한 핸들입니다.

fSources

형식: int

알림을 받을 이벤트 유형을 나타내는 다음 값 중 하나 이상입니다.

참고 이전 버전의 SDK에서는 이러한 플래그가 헤더 파일에 정의되어 있지 않으며 구현자는 이러한 값을 직접 정의하거나 숫자 값을 직접 사용해야 합니다. Windows Vista를 기준으로 이러한 플래그는 Shlobj.h에 정의되어 있습니다.
 

SHCNRF_InterruptLevel(0x0001)

파일 시스템의 인터럽트 수준 알림입니다.

SHCNRF_ShellLevel(0x0002)

셸의 셸 수준 알림입니다.

SHCNRF_RecursiveInterrupt(0x1000)

전체 하위 트리에서 이벤트를 인터럽트합니다. 이 플래그는 SHCNRF_InterruptLevel 플래그와 결합해야 합니다. 이 플래그를 사용하는 경우 pshcne에서 참조하는 해당 SHChangeNotifyEntry 구조체의 fRecursive 멤버를 TRUE로 설정하여 알림을 재귀적으로 만들어야 합니다. 단일 수준 보기에서 SHCNRF_RecursiveInterrupt 사용합니다(예: 상대이고 하나의 SHITEMID만 포함하는 PIDL)는 가장 높은 수준에서 이벤트 알림을 차단하여 재귀 자식 업데이트를 방지합니다. 따라서 폴더 계층 구조의 가장 낮은 수준으로 끌어간 아이콘이 예상대로 보기에 나타나지 않을 수 있습니다.

SHCNRF_NewDelivery(0x8000)

받은 메시지는 공유 메모리를 사용합니다. SHChangeNotification_Lock 호출하여 실제 데이터에 액세스합니다. 완료되면 SHChangeNotification_Unlock 호출하여 메모리를 해제합니다.

참고 이 플래그는 보다 강력한 배달 방법을 제공하기 때문에 이 플래그를 사용하는 것이 좋습니다. 모든 클라이언트는 이 플래그를 지정해야 합니다.
 

fEvents

형식: LONG

알림을 받을 알림 이벤트를 변경합니다. 가능한 값은 SHChangeNotify 에 나열된 SHCNE 플래그를 참조하세요.

wMsg

형식: UINT

창 프로시저에 게시할 메시지입니다.

cEntries

형식: int

pshcne 배열의 항목 수입니다.

[in] pshcne

형식: const SHChangeNotifyEntry*

알림을 포함하는 SHChangeNotifyEntry 구조체의 배열입니다. SHChangeNotifyRegister 또는 SHChangeNotifyDeregister가 제대로 작동하지 않을 때는 항상 이 배열 1로 설정해야 합니다.

반환 값

형식: ULONG

양의 정수 등록 ID를 반환합니다. 메모리가 부족하거나 잘못된 매개 변수에 대한 응답으로 0을 반환합니다.

설명

이 함수의 사용을 보여 주는 전체 예제는 Windows SDK(소프트웨어 개발 키트)의 변경 알림 감시자 샘플을 참조하세요.

변경 알림 이벤트가 발생하면 wMsg 로 표시된 메시지가 hwnd 매개 변수로 지정된 창으로 전달됩니다.

  • SHCNRF_NewDelivery 지정하면 메시지의 wParamlParam 값이 각각 hChangedwProcID 매개 변수로 SHChangeNotification_Lock 전달되어야 합니다.
  • SHCNRF_NewDelivery 지정하지 않으면 wParam 은 두 개의 PIDLIST_ABSOLUTE 포인터에 대한 포인터이며 lParam 은 이벤트를 지정합니다. 전송되는 이벤트에 따라 두 PIDLIST_ABSOLUTE 포인터는 NULL일 수 있습니다.
관련 파일 시스템 이벤트가 발생하며 hwnd 매개 변수가 NULL이 아닌 경우 wMsg 로 표시된 메시지가 지정된 창에 게시됩니다. 그렇지 않으면 pshcne 매개 변수가 NULL이 아니면 해당 알림 항목이 사용됩니다.

성능상의 이유로 여러 알림을 단일 알림으로 결합할 수 있습니다. 예를 들어 동일한 폴더의 파일에 대해 많은 수의 SHCNE_UPDATEITEM 알림이 생성되는 경우 단일 SHCNE_UPDATEDIR 알림에 조인할 수 있습니다.

Windows Vista를 기준으로 더 이상 사용할 수 없는 NTSHChangeNotifyRegister 함수는 SHCNRF_NewDelivery 플래그가 있는 SHChangeNotifyRegister 와 동일합니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 shlobj_core.h(Shlobj.h 포함)
라이브러리 Shell32.lib
DLL Shell32.dll(버전 5.0 이상)
API 세트 ext-ms-win-shell-shell32-l1-2-1(Windows 10 버전 10.0.10240에 도입됨)