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를 반환합니다.
출력 버퍼 길이
없음
입력/출력 버퍼
해당 없음
입력/출력 버퍼 길이
해당 없음
상태 블록
작업이 성공하면 상태 필드가 STATUS_SUCCESS 설정되고 정보 필드가 로 sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO)
설정됩니다.
InputBufferLength가 보다 sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO)
작거나 OutputBufferLength가 보다 sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO)
작으면 상태 필드가 STATUS_INVALID_PARAMETER.
설명
자세한 내용은 스토리지 클래스 드라이버에서 탑재 관리자 요청 지원을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
헤더 | mountmgr.h(Mountmgr.h 포함) |