Share via


NtDeviceIoControlFile 함수(winternl.h)

더 이상 사용되지 않습니다. 제공된 버퍼에 대한 설명자를 빌드하고 형식화되지 않은 데이터를 파일 핸들과 연결된 디바이스 드라이버에 전달합니다. NtDeviceIoControlFileDeviceIoControl로 대체됩니다.

구문

__kernel_entry NTSTATUS NtDeviceIoControlFile(
  [in]  HANDLE           FileHandle,
  [in]  HANDLE           Event,
  [in]  PIO_APC_ROUTINE  ApcRoutine,
  [in]  PVOID            ApcContext,
  [out] PIO_STATUS_BLOCK IoStatusBlock,
  [in]  ULONG            IoControlCode,
  [in]  PVOID            InputBuffer,
  [in]  ULONG            InputBufferLength,
  [out] PVOID            OutputBuffer,
  [in]  ULONG            OutputBufferLength
);

매개 변수

[in] FileHandle

컨트롤 정보를 제공해야 하는 파일 또는 디바이스에 대한 파일 핸들을 엽니다.

[in] Event

작업이 완료될 때 상태로 설정할 signaled 이벤트에 대한 핸들입니다. 이 매개 변수는 NULL일 수 있습니다.

[in] ApcRoutine

작업이 완료되면 호출할 프로시저입니다. 이 매개 변수는 NULL일 수 있습니다. APC(비동기 프로시저 호출)에 대한 자세한 내용은 비동기 프로시저 호출을 참조하세요.

[in] ApcContext

작업이 완료되면 ApcRoutine 에 전달할 포인터입니다. ApcRoutine이 지정된 경우 이 매개 변수가 필요합니다.

[out] IoStatusBlock

최종 완료 상태 및 작업에 대한 정보를 수신하는 변수입니다. 정보를 반환하는 서비스 호출은 이 변수의 정보 필드에 있는 출력 버퍼에 기록되는 데이터의 길이를 반환합니다.

[in] IoControlCode

실행할 디바이스 I/O 제어 함수를 나타내는 코드입니다.

[in] InputBuffer

대상 디바이스에 제공될 정보를 포함하는 버퍼에 대한 포인터입니다. 이 매개 변수는 NULL일 수 있습니다. 이 정보는 디바이스에 종속됩니다.

[in] InputBufferLength

InputBuffer의 길이(바이트)입니다. 버퍼가 제공되지 않으면 이 값은 무시됩니다.

[out] OutputBuffer

대상 디바이스에서 디바이스 종속 반환 정보를 수신하는 버퍼에 대한 포인터입니다. 이 매개 변수는 NULL일 수 있습니다.

[in] OutputBufferLength

OutputBuffer의 길이(바이트)입니다. 버퍼가 제공되지 않으면 이 값은 무시됩니다.

반환 값

다양한 NTSTATUS 값은 NTSTATUS에 정의됩니다. H는 Windows DDK와 함께 배포됩니다.

반환 코드 설명
STATUS_SUCCESS
컨트롤 작업이 I/O 시스템에 제대로 큐에 대기되었습니다. 작업이 완료되면 I/O 상태 블록의 상태 필드를 검사하여 상태 확인할 수 있습니다.

설명

NtDeviceIoControlFile 서비스는 애플리케이션이 시스템 내의 다양한 디바이스에 대해 갖는 컨트롤을 확장하는 디바이스 종속 인터페이스입니다. 이 API는 애플리케이션과 드라이버에 통신 인터페이스를 지정하는 디바이스 종속 메서드를 제공하면서 입력 및 출력 데이터를 시스템에 일관되게 표시합니다.

호출자가 필요로 하는 파일에 대한 액세스 유형은 수행 중인 실제 작업에 따라 달라집니다.

서비스가 완료되면 Event(지정된 경우)가 상태로 설정 signaled 됩니다. Event 매개 변수를 지정하지 않으면 FileHandle에서 지정한 파일 개체가 상태로 설정 signaled 됩니다. ApcRoutine을 지정하면 ApcContextIoStatusBlock을 인수로 사용하여 호출됩니다.

이 함수에 대한 가져오기 라이브러리가 없으므로 GetProcAddress를 사용해야 합니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 winternl.h
라이브러리 ntdll.lib
DLL ntdll.dll

추가 정보

비동기 프로시저 호출