IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG IOCTL(ntddstor.h)

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

주 코드

IRP_MJ_DEVICE_CONTROL

입력 버퍼

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

입력 버퍼 길이

Parameters.DeviceIoControl.InputBufferLengthIrp->AssociatedIrp.SystemBuffer 에서 매개 변수 버퍼의 크기(바이트)를 나타내며, >= sizeof(GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST) 여야 합니다.

출력 버퍼

드라이버는 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