2017-03-22 1 views
0

디스크에서 파일의 실제 위치를 가져 오려고합니다.오류 87 DeviceIoControl (FSCTL_GET_RETRIEVAL_POINTERS)을 사용하는 경우

pywintypes.error: (87, 'DeviceIoControl', '\xfe\xfe\xe4\xf4\xf8\xee\xe8\xf8 \xf9 
\xe2\xe5\xe9.') 

이 오류는 "잘못된 매개 변수"입니다 : 내가 코드를 실행하려고 할 때이 오류가

import win32file 
import winioctlcon 

handle = win32file.CreateFile(raw_input("File: "), win32file.GENERIC_READ, win32file.FILE_SHARE_READ | win32file.FILE_SHARE_WRITE, None, win32file.OPEN_EXISTING, win32file.FILE_ATTRIBUTE_NORMAL | win32file.FILE_FLAG_OVERLAPPED,None) 
loc = win32file.DeviceIoControl(handle, winioctlcon.FSCTL_GET_RETRIEVAL_POINTERS,"",8192,None) 

: 이 현재 코드입니다. 어떤 매개 변수를 잘못 사용 했습니까?

+0

물론 물론 잘못된 매개 변수입니다. 보다 적은 매개 변수가 있어야합니다. 'STARTING_VCN_INPUT_BUFFER'은 어디에 있습니까? 'RETRIEVAL_POINTERS_BUFFER'은 어디에 있습니까? – RbMm

+0

이 매개 변수의 값을 얻으려면 어떻게해야합니까? –

답변

0

this MSDN 사이트를 방문하십시오.

귀하의 매개 변수 개수가 잘못되었습니다. 입력 버퍼와 출력 버퍼가 필요합니다. 입력은 시작 VCN (> = 0)이며 핸들은 대체 스트림, 파일, 볼륨 또는 디렉토리 핸들이되어야합니다. 입력 버퍼는 'DeviceIoControl`을 절대 호출하지 않기 때문에

typedef struct { 
    LARGE_INTEGER StartingVcn; 
} STARTING_VCN_INPUT_BUFFER, *PSTARTING_VCN_INPUT_BUFFER; 
+0

실제로'StartingVcn> = 0' ('> 0'이 아님)이고 file은 * volume * 핸들이 될 수 없습니다. 유일한 스트림, 파일 또는 디렉토리 – RbMm

+0

올바른 VCN> = 0입니다. 핸들은 볼륨 핸들 일 수 있습니다. "이 매개 변수는 선택적으로 NTFS 볼륨에 대한 핸들이 될 수 있습니다." – bkausbk

관련 문제