📄 vcddefine.pas
字号:
unit VCDDefine;
interface
uses
Types, Windows;
const
METHOD_BUFFERED = 0;
METHOD_IN_DIRECT = 1;
METHOD_OUT_DIRECT = 2;
METHOD_NEITHER = 3;
FILE_ANY_ACCESS = 0;
FILE_SPECIAL_ACCESS = (FILE_ANY_ACCESS);
FILE_READ_ACCESS = ( $0001 ); // file & pipe
FILE_WRITE_ACCESS = ( $0002 ); // file & pipe
DEVICE_MAGIC = $AAFFFFAA;
DEVICE_VERSION = $00000001;
const
DEVICE_BASE_NAME = '\VCD';
DEVICE_DIR_NAME = '\Device' + DEVICE_BASE_NAME;
DEVICE_FULL_NAME = DEVICE_DIR_NAME + DEVICE_BASE_NAME;
FILE_DEVICE_FILE_DISK = $8000;
FILE_DEVICE_FILE_SYSTEM = $00000009;
var
//自定义的
IOCTL_VCD_OPEN_FILE : DWORD;
IOCTL_VCD_CLOSE_FILE : DWORD;
IOCTL_VCD_QUERY_DEVICE : DWORD;
//从DDK翻译过来的
FSCTL_LOCK_VOLUME : DWORD;
FSCTL_DISMOUNT_VOLUME : DWORD;
FSCTL_UNLOCK_VOLUME : DWORD;
FSCTL_IS_VOLUME_MOUNTED : DWORD;
FSCTL_IS_PATHNAME_VALID : DWORD;
FSCTL_MARK_VOLUME_DIRTY : DWORD;
Type
_VCD_DEVICE_INFORMATION = record
Magic : ULONG;
Version : ULONG;
Index : ULONG;
MediaIn : BOOL;
FileName : array[0..MAX_PATH-1] of char;
Descaption : array[0..MAX_PATH-1] of char;
end;
VCD_DEVICE_INFORMATION = _VCD_DEVICE_INFORMATION;
PVCD_DEVICE_INFORMATION = ^VCD_DEVICE_INFORMATION;
Function CTL_CODE(_DeviceType, _Function, _Method, _Access:DWORD):DWORD;
implementation
Function CTL_CODE(_DeviceType, _Function, _Method, _Access:DWORD):DWORD;
begin
Result := ((_DeviceType) shl 16) or ((_Access) shl 14) or ((_Function) shl 2) or (_Method)
end;
initialization
IOCTL_VCD_OPEN_FILE := CTL_CODE(FILE_DEVICE_FILE_DISK, $800, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS);
IOCTL_VCD_CLOSE_FILE := CTL_CODE(FILE_DEVICE_FILE_DISK, $801, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS);
IOCTL_VCD_QUERY_DEVICE := CTL_CODE(FILE_DEVICE_FILE_DISK, $802, METHOD_BUFFERED, FILE_READ_ACCESS);
FSCTL_LOCK_VOLUME := CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS);
FSCTL_UNLOCK_VOLUME := CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED, FILE_ANY_ACCESS);
FSCTL_DISMOUNT_VOLUME := CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED, FILE_ANY_ACCESS);
FSCTL_IS_VOLUME_MOUNTED := CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 10, METHOD_BUFFERED, FILE_ANY_ACCESS);
FSCTL_IS_PATHNAME_VALID := CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 11, METHOD_BUFFERED, FILE_ANY_ACCESS); // PATHNAME_BUFFER,
FSCTL_MARK_VOLUME_DIRTY := CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 12, METHOD_BUFFERED, FILE_ANY_ACCESS);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -