IOCTL_MOUNTMGR_CHANGE_NOTIFY IOCTL(mountmgr.h)
클라이언트는 탑재 관리자의 영구 기호 링크 이름 데이터베이스가 변경될 때마다 알림을 받을 수 있도록 이 IOCTL을 탑재 관리자로 보냅니다.
탑재 관리자는 마지막 시작 이후 영구 이름 데이터베이스에서 발생한 변경 횟수를 기록하는 EpicNumber 카운터를 유지 관리합니다. 클라이언트는 모든 변경 알림 요청 IRP를 사용하여 탑재 관리자에 번호를 보내고 탑재 관리자는 다음과 같은 방식으로 응답합니다.
클라이언트에서 제공하는 숫자가 EpicNumber같지 않으면 탑재 관리자는 STATUS_SUCCESS 반환하며, 이는 클라이언트가 마지막으로 탑재 관리자의 EpicNumber해당 수를 비교한 이후 변경이 발생했음을 나타냅니다.
클라이언트에서 제공하는 번호가 EpicNumber동일한 경우 탑재 관리자는 이를 영구 이름 데이터베이스에 대한 다음 변경에 대한 알림을 요청으로 해석하고 변경 알림 IRP를 큐에 대기시키고 STATUS_PENDING 반환합니다. 데이터베이스에서 변경이 발생할 때마다 탑재 관리자는 보류 중인 모든 변경 알림 IRP를 완료하여 클라이언트에 변경 사항을 알릴 수 있습니다.
특정 볼륨의 변경 내용만 알리려는 클라이언트는 플러그 앤 플레이 대상 디바이스 알림에 등록하고 GUID_IO_VOLUME_NAME_CHANGE 감시하는 것이 좋습니다.
주 코드
입력 버퍼
탑재 관리자 클라이언트는 Irp->AssociatedIrp.SystemBuffer버퍼의 시작 부분에서 MOUNTMGR_CHANGE_NOTIFY_INFO 구조를 초기화합니다.
입력 버퍼 길이
IRP의 I/O 스택 위치에 있는 parameters.DeviceIoControl.InputBufferLength 입력 버퍼의 크기(바이트)를 나타내며 이는 sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO)
보다 크거나 같아야 합니다.
출력 버퍼
탑재 관리자는 Irp->AssociatedIrp.SystemBuffer버퍼의 시작 부분에 있는 MOUNTMGR_CHANGE_NOTIFY_INFO 구조에서 현재 EpicNumber 반환합니다.
출력 버퍼 길이
없음.
입력/출력 버퍼
해당(N/A)
입력/출력 버퍼 길이
해당(N/A)
상태 블록
작업이 성공하면 상태 필드는 STATUS_SUCCESS 설정되고 정보 필드는 sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO)
설정됩니다.
InputBufferLengthsizeof(MOUNTMGR_CHANGE_NOTIFY_INFO)
미만이거나 OutputBufferLength sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO)
미만이면 상태 필드가 STATUS_INVALID_PARAMETER 설정됩니다.
발언
자세한 내용은 스토리지 클래스 드라이버 탑재 관리자 요청을 지원하는참조하세요.
요구 사항
요구 | 값 |
---|---|
헤더 | mountmgr.h(Mountmgr.h 포함) |