다음을 통해 공유


IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG IOCTL(ntddstor.h)

드라이버는 IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG 사용하여 디바이스에서 내부 상태 데이터를 가져올 수 있습니다.

주 코드

IRP_MJ_INTERNAL_DEVICE_CONTROL

입력 버퍼

쿼리할 데이터 형식을 식별하는 GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST 구조체입니다.

입력 버퍼 길이

Parameters.DeviceIoControl.InputBufferLength는 = sizeof(GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST)여야 >하는 Irp-AssociatedIrp.SystemBuffer>의 매개 변수 버퍼 크기를 바이트 단위로 나타냅니다.

출력 버퍼

드라이버는 Irp-AssociatedIrp.SystemBuffer>의 버퍼에 출력을 반환합니다. 이 버퍼에는 디바이스의 내부 상태 있는 DEVICE_INTERNAL_STATUS_DATA 구조가 포함됩니다.

출력 버퍼 길이

I/O 스택 위치의 Parameters.DeviceIoControl.OutputBufferLength는 = sizeof(DEVICE_INTERNAL_STATUS_DATA)여야 >하는 매개 변수 버퍼의 크기를 바이트 단위로 나타냅니다.

입력/출력 버퍼

해당 없음

입력/출력 버퍼 길이

해당 없음

상태 블록

Irp->요청이 성공하면 IoStatus.Status 가 STATUS_SUCCESS 설정됩니다. 그렇지 않으면 상태가 NTSTATUS 코드로 적절한 오류 조건으로 설정됩니다. 자세한 내용은 NTSTATUS 값을 참조하세요.

설명

IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG 모든 스토리지 디바이스에서 호스트 시작 디바이스 원격 분석 로그를 반환합니다. 다음 의사 코드는 원격 분석 데이터 헤더를 요청하는 방법을 보여 줍니다.

// Allocate a GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST structure, then
// initialize it with a data header request:
//   request.Version = sizeof(GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST);
//   request.Size = sizeof(GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST);
//   request.RequestDataType = DeviceCurrentInternalStatusDataHeader;

// Allocate a DEVICE_INTERNAL_STATUS_DATA structure in which
// to return the header data, with outputBufferLength set to
// (sizeof(DEVICE_INTERNAL_STATUS_DATA) + 512).

// Get the device internal status data.
BOOL result = TRUE;
ULONG returnedLength = 0;
result = DeviceIoControl(deviceHandle,
            IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG,
            &request,
            sizeof(GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST),
            &outputBuffer,
            outputBufferLength,
            &returnedLength,
            NULL);

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10, 버전 2004
머리글 ntddstor.h

추가 정보

DEVICE_INTERNAL_STATUS_DATA

GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST