⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vcddefine.pas

📁 使用DELPHI制作地虚拟光驱
💻 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 + -