윈7 64비트에서 델 7로 불러보니 잘 되는데요~~
procedure TNpcForm.Button1Click(Sender: TObject);
var
VolumeName: String;
FileSystemName: String;
VolumeSerialNumber: DWORD;
MaximumComponentLength,
FileSystemFlags: DWORD;
begin
SetLength(VolumeName, MAX_PATH);
SetLength(FileSystemName, MAX_PATH);
GetVolumeInformation(
'C:\',
PChar(VolumeName), MAX_PATH,
@VolumeSerialNumber,
MaximumComponentLength, FileSystemFlags,
PChar(FileSystemName), MAX_PATH
);
SetLength(VolumeName, StrLen(PChar(VolumeName)));
SetLength(FileSystemName, StrLen(PChar(FileSystemName)));
ShowMessage(VolumeName + ', ' + FileSystemName);
end;
땅거지 님이 쓰신 글 :
: 안녕하세요
: 제가 운영체제를 2개를 사용하고 있습니다.
: 1. win7 64 bit
: 2. wm winXP
:
: 델파이7 입니다.
:
: var
: name: array [0..2] of char;
: begin
: GetVolumeInformation( name , szVolumeName , MAX_PATH, nil, nil, nil, nil, MAX_PATH);
: end
:
: 대충 이런식으로 작성을 하면
:
: szVolumeName 에서 win7 64bit는 깨짐
: winXP 는 정상입니다.
:
: 그래서
: var
: name: PChar;
:
: 변경후 델파이에서 돌릴때 , EXE 돌릴때
:
: szVolumeName 에서 win7 64bit는 가져오지 못합니다.
: winXP 는 정상입니다.
: 순간 ntdll.dll 에서 에러가 납니다.
:
: 1. win7 64 bit
: 2. wm winXP
: 2개의 운영체제 때문일까요 ?
|