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

📄 jwalmshare.pas

📁 比较全面的win32api开发包
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{******************************************************************************}
{                                                       	               }
{ Lan Manager Shares API interface Unit for Object Pascal                      }
{                                                       	               }
{ Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft          }
{ Corporation. All Rights Reserved.                                            }
{ 								               }
{ The original file is: lmshare.h, released November 2001. The original Pascal }
{ code is: LmShare.pas, released Februari 2002. The initial developer of the   }
{ Pascal code is Marcel van Brakel (brakelm@chello.nl).                        }
{                                                                              }
{ Portions created by Marcel van Brakel are Copyright (C) 1999-2001            }
{ Marcel van Brakel. All Rights Reserved.                                      }
{ 								               }
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI)        }
{								               }
{ You may retrieve the latest version of this file at the Project JEDI home    }
{ page, located at http://delphi-jedi.org or my personal homepage located at   }
{ http://members.chello.nl/m.vanbrakel2                                        }
{								               }
{ The contents of this file are used with permission, subject to the Mozilla   }
{ Public License Version 1.1 (the "License"); you may not use this file except }
{ in compliance with the License. You may obtain a copy of the License at      }
{ http://www.mozilla.org/MPL/MPL-1.1.html                                      }
{                                                                              }
{ Software distributed under the License is distributed on an "AS IS" basis,   }
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
{ the specific language governing rights and limitations under the License.    }
{                                                                              }
{ Alternatively, the contents of this file may be used under the terms of the  }
{ GNU Lesser General Public License (the  "LGPL License"), in which case the   }
{ provisions of the LGPL License are applicable instead of those above.        }
{ If you wish to allow use of your version of this file only under the terms   }
{ of the LGPL License and not to allow others to use your version of this file }
{ under the MPL, indicate your decision by deleting  the provisions above and  }
{ replace  them with the notice and other provisions required by the LGPL      }
{ License.  If you do not delete the provisions above, a recipient may use     }
{ your version of this file under either the MPL or the LGPL License.          }
{ 								               }
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
{ 								               }
{******************************************************************************}

unit JwaLmShare;

{$WEAKPACKAGEUNIT}

{$HPPEMIT ''}
{$HPPEMIT '#include "lmshare.h"'}
{$HPPEMIT ''}

{$I WINDEFINES.INC}

interface

uses
  JwaLmCons, JwaWinNT, JwaWinType;

//
// Function Prototypes - Share
//

function NetShareAdd(servername: LMSTR; level: DWORD; buf: LPBYTE; parm_err: LPDWORD): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetShareAdd}

function NetShareEnum(servername: LMSTR; level: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; entriesread, totalentries, resume_handle: LPDWORD): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetShareEnum}

function NetShareEnumSticky(servername: LMSTR; level: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; entriesread, totalentries, resume_handle: LPDWORD): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetShareEnumSticky}

function NetShareGetInfo(servername, netname: LMSTR; level: DWORD; var bufptr: LPBYTE): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetShareGetInfo}

function NetShareSetInfo(servername, netname: LMSTR; level: DWORD; buf: LPBYTE; parm_err: LPDWORD): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetShareSetInfo}

function NetShareDel(servername, netname: LMSTR; reserved: DWORD): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetShareDel}

function NetShareDelSticky(servername, netname: LMSTR; reserved: DWORD): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetShareDelSticky}

function NetShareCheck(servername, device: LMSTR; type_: LPDWORD): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetShareCheck}

//
// Data Structures - Share
//

type
  LPSHARE_INFO_0 = ^SHARE_INFO_0;
  {$EXTERNALSYM LPSHARE_INFO_0}
  PSHARE_INFO_0 = ^SHARE_INFO_0;
  {$EXTERNALSYM PSHARE_INFO_0}
  _SHARE_INFO_0 = record
    shi0_netname: LMSTR;
  end;
  {$EXTERNALSYM _SHARE_INFO_0}
  SHARE_INFO_0 = _SHARE_INFO_0;
  {$EXTERNALSYM SHARE_INFO_0}
  TShareInfo0 = SHARE_INFO_0;
  PShareInfo0 = PSHARE_INFO_0;

  LPSHARE_INFO_1 = ^SHARE_INFO_1;
  {$EXTERNALSYM LPSHARE_INFO_1}
  PSHARE_INFO_1 = ^SHARE_INFO_1;
  {$EXTERNALSYM PSHARE_INFO_1}
  _SHARE_INFO_1 = record
    shi1_netname: LMSTR;
    shi1_type: DWORD;
    shi1_remark: LMSTR;
  end;
  {$EXTERNALSYM _SHARE_INFO_1}
  SHARE_INFO_1 = _SHARE_INFO_1;
  {$EXTERNALSYM SHARE_INFO_1}
  TShareInfo1 = SHARE_INFO_1;
  PShareInfo1 = PSHARE_INFO_1;

  LPSHARE_INFO_2 = ^SHARE_INFO_2;
  {$EXTERNALSYM LPSHARE_INFO_2}
  PSHARE_INFO_2 = ^SHARE_INFO_2;
  {$EXTERNALSYM PSHARE_INFO_2}
  _SHARE_INFO_2 = record
    shi2_netname: LMSTR;
    shi2_type: DWORD;
    shi2_remark: LMSTR;
    shi2_permissions: DWORD;
    shi2_max_uses: DWORD;
    shi2_current_uses: DWORD;
    shi2_path: LMSTR;
    shi2_passwd: LMSTR;
  end;
  {$EXTERNALSYM _SHARE_INFO_2}
  SHARE_INFO_2 = _SHARE_INFO_2;
  {$EXTERNALSYM SHARE_INFO_2}
  TShareInfo2 = SHARE_INFO_2;
  PShareInfo2 = PSHARE_INFO_2;

  LPSHARE_INFO_501 = ^SHARE_INFO_501;
  {$EXTERNALSYM LPSHARE_INFO_501}
  PSHARE_INFO_501 = ^SHARE_INFO_501;
  {$EXTERNALSYM PSHARE_INFO_501}
  _SHARE_INFO_501 = record
    shi501_netname: LMSTR;
    shi501_type: DWORD;
    shi501_remark: LMSTR;
    shi501_flags: DWORD;
  end;
  {$EXTERNALSYM _SHARE_INFO_501}
  SHARE_INFO_501 = _SHARE_INFO_501;
  {$EXTERNALSYM SHARE_INFO_501}
  TShareInfo501 = SHARE_INFO_501;
  PShareInfo501 = PSHARE_INFO_501;

  LPSHARE_INFO_502 = ^SHARE_INFO_502;
  {$EXTERNALSYM LPSHARE_INFO_502}
  PSHARE_INFO_502 = ^SHARE_INFO_502;
  {$EXTERNALSYM PSHARE_INFO_502}
  _SHARE_INFO_502 = record
    shi502_netname: LMSTR;
    shi502_type: DWORD;
    shi502_remark: LMSTR;
    shi502_permissions: DWORD;
    shi502_max_uses: DWORD;
    shi502_current_uses: DWORD;
    shi502_path: LMSTR;
    shi502_passwd: LMSTR;
    shi502_reserved: DWORD;
    shi502_security_descriptor: PSECURITY_DESCRIPTOR;
  end;
  {$EXTERNALSYM _SHARE_INFO_502}
  SHARE_INFO_502 = _SHARE_INFO_502;
  {$EXTERNALSYM SHARE_INFO_502}
  TShareInfo502 = SHARE_INFO_502;
  PShareInfo502 = PSHARE_INFO_502;

  LPSHARE_INFO_1004 = ^SHARE_INFO_1004;
  {$EXTERNALSYM LPSHARE_INFO_1004}
  PSHARE_INFO_1004 = ^SHARE_INFO_1004;
  {$EXTERNALSYM PSHARE_INFO_1004}
  _SHARE_INFO_1004 = record
    shi1004_remark: LMSTR;
  end;
  {$EXTERNALSYM _SHARE_INFO_1004}
  SHARE_INFO_1004 = _SHARE_INFO_1004;
  {$EXTERNALSYM SHARE_INFO_1004}
  TShareInfo1004 = SHARE_INFO_1004;
  PShareInfo1004 = PSHARE_INFO_1004;

  LPSHARE_INFO_1005 = ^SHARE_INFO_1005;
  {$EXTERNALSYM LPSHARE_INFO_1005}
  PSHARE_INFO_1005 = ^SHARE_INFO_1005;
  {$EXTERNALSYM PSHARE_INFO_1005}
  _SHARE_INFO_1005 = record
    shi1005_flags: DWORD;
  end;
  {$EXTERNALSYM _SHARE_INFO_1005}
  SHARE_INFO_1005 = _SHARE_INFO_1005;
  {$EXTERNALSYM SHARE_INFO_1005}
  TShareInfo1005 = SHARE_INFO_1005;
  PShareInfo1005 = PSHARE_INFO_1005;

  LPSHARE_INFO_1006 = ^SHARE_INFO_1006;
  {$EXTERNALSYM LPSHARE_INFO_1006}
  PSHARE_INFO_1006 = ^SHARE_INFO_1006;
  {$EXTERNALSYM PSHARE_INFO_1006}
  _SHARE_INFO_1006 = record
    shi1006_max_uses: DWORD;
  end;
  {$EXTERNALSYM _SHARE_INFO_1006}
  SHARE_INFO_1006 = _SHARE_INFO_1006;
  {$EXTERNALSYM SHARE_INFO_1006}
  TShareInfo1006 = SHARE_INFO_1006;
  PShareInfo1006 = PSHARE_INFO_1006;

  LPSHARE_INFO_1501 = ^SHARE_INFO_1501;
  {$EXTERNALSYM LPSHARE_INFO_1501}
  PSHARE_INFO_1501 = ^SHARE_INFO_1501;
  {$EXTERNALSYM PSHARE_INFO_1501}
  _SHARE_INFO_1501 = record
    shi1501_reserved: DWORD;
    shi1501_security_descriptor: PSECURITY_DESCRIPTOR;
  end;
  {$EXTERNALSYM _SHARE_INFO_1501}
  SHARE_INFO_1501 = _SHARE_INFO_1501;
  {$EXTERNALSYM SHARE_INFO_1501}
  TShareInfo1501 = SHARE_INFO_1501;
  PShareInfo1501 = PSHARE_INFO_1501;

//
// Special Values and Constants - Share
//

//
// Values for parm_err parameter.
//

const
  SHARE_NETNAME_PARMNUM      = 1;
  {$EXTERNALSYM SHARE_NETNAME_PARMNUM}
  SHARE_TYPE_PARMNUM         = 3;
  {$EXTERNALSYM SHARE_TYPE_PARMNUM}
  SHARE_REMARK_PARMNUM       = 4;
  {$EXTERNALSYM SHARE_REMARK_PARMNUM}
  SHARE_PERMISSIONS_PARMNUM  = 5;
  {$EXTERNALSYM SHARE_PERMISSIONS_PARMNUM}
  SHARE_MAX_USES_PARMNUM     = 6;
  {$EXTERNALSYM SHARE_MAX_USES_PARMNUM}
  SHARE_CURRENT_USES_PARMNUM = 7;
  {$EXTERNALSYM SHARE_CURRENT_USES_PARMNUM}
  SHARE_PATH_PARMNUM         = 8;
  {$EXTERNALSYM SHARE_PATH_PARMNUM}
  SHARE_PASSWD_PARMNUM       = 9;
  {$EXTERNALSYM SHARE_PASSWD_PARMNUM}
  SHARE_FILE_SD_PARMNUM      = 501;
  {$EXTERNALSYM SHARE_FILE_SD_PARMNUM}

//
// Single-field infolevels for NetShareSetInfo.
//

  SHARE_REMARK_INFOLEVEL   = (PARMNUM_BASE_INFOLEVEL + SHARE_REMARK_PARMNUM);
  {$EXTERNALSYM SHARE_REMARK_INFOLEVEL}
  SHARE_MAX_USES_INFOLEVEL = (PARMNUM_BASE_INFOLEVEL + SHARE_MAX_USES_PARMNUM);
  {$EXTERNALSYM SHARE_MAX_USES_INFOLEVEL}
  SHARE_FILE_SD_INFOLEVEL  = (PARMNUM_BASE_INFOLEVEL + SHARE_FILE_SD_PARMNUM);
  {$EXTERNALSYM SHARE_FILE_SD_INFOLEVEL}

  SHI1_NUM_ELEMENTS = 4;
  {$EXTERNALSYM SHI1_NUM_ELEMENTS}
  SHI2_NUM_ELEMENTS = 10;
  {$EXTERNALSYM SHI2_NUM_ELEMENTS}

//
// Share types (shi1_type and shi2_type fields).
//

  STYPE_DISKTREE = 0;
  {$EXTERNALSYM STYPE_DISKTREE}
  STYPE_PRINTQ   = 1;
  {$EXTERNALSYM STYPE_PRINTQ}
  STYPE_DEVICE   = 2;
  {$EXTERNALSYM STYPE_DEVICE}
  STYPE_IPC      = 3;
  {$EXTERNALSYM STYPE_IPC}

  STYPE_TEMPORARY = $40000000;
  {$EXTERNALSYM STYPE_TEMPORARY}
  STYPE_SPECIAL   = DWORD($80000000);
  {$EXTERNALSYM STYPE_SPECIAL}

  SHI_USES_UNLIMITED = DWORD(-1);
  {$EXTERNALSYM SHI_USES_UNLIMITED}

//
// Flags values for the 501 and 1005 levels
//

  SHI1005_FLAGS_DFS      = $01; // Share is in the DFS
  {$EXTERNALSYM SHI1005_FLAGS_DFS}
  SHI1005_FLAGS_DFS_ROOT = $02; // Share is root of DFS
  {$EXTERNALSYM SHI1005_FLAGS_DFS_ROOT}

  CSC_MASK               = $30; // Used to mask off the following states
  {$EXTERNALSYM CSC_MASK}

  CSC_CACHE_MANUAL_REINT = $00; // No automatic file by file reintegration
  {$EXTERNALSYM CSC_CACHE_MANUAL_REINT}
  CSC_CACHE_AUTO_REINT   = $10; // File by file reintegration is OK
  {$EXTERNALSYM CSC_CACHE_AUTO_REINT}
  CSC_CACHE_VDO          = $20; // no need to flow opens
  {$EXTERNALSYM CSC_CACHE_VDO}
  CSC_CACHE_NONE         = $30; // no CSC for this share
  {$EXTERNALSYM CSC_CACHE_NONE}

  SHI1005_FLAGS_RESTRICT_EXCLUSIVE_OPENS = $0100;          // Used to disallow read-deny read behavior
  {$EXTERNALSYM SHI1005_FLAGS_RESTRICT_EXCLUSIVE_OPENS}

//
// The subset of 1005 infolevel flags that can be set via the API
//

  SHI1005_VALID_FLAGS_SET = (CSC_MASK or SHI1005_FLAGS_RESTRICT_EXCLUSIVE_OPENS);
  {$EXTERNALSYM SHI1005_VALID_FLAGS_SET}

//
// SESSION API
//

//
// Function Prototypes Session
//

function NetSessionEnum(servername, UncClientName, username: LMSTR; level: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; entriesread, totalentries, resume_handle: LPDWORD): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetSessionEnum}

function NetSessionDel(servername, UncClientName, username: LMSTR): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetSessionDel}

function NetSessionGetInfo(servername, UncClientName, username: LMSTR; level: DWORD; var bufptr: LPBYTE): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetSessionGetInfo}

//
// Data Structures - Session
//

type
  LPSESSION_INFO_0 = ^SESSION_INFO_0;
  {$EXTERNALSYM LPSESSION_INFO_0}
  PSESSION_INFO_0 = ^SESSION_INFO_0;
  {$EXTERNALSYM PSESSION_INFO_0}
  _SESSION_INFO_0 = record
    sesi0_cname: LMSTR; // client name (no backslashes)
  end;
  {$EXTERNALSYM _SESSION_INFO_0}
  SESSION_INFO_0 = _SESSION_INFO_0;
  {$EXTERNALSYM SESSION_INFO_0}
  TSessionInfo0 = SESSION_INFO_0;
  PSessionInfo0 = PSESSION_INFO_0;

  LPSESSION_INFO_1 = ^SESSION_INFO_1;
  {$EXTERNALSYM LPSESSION_INFO_1}
  PSESSION_INFO_1 = ^SESSION_INFO_1;
  {$EXTERNALSYM PSESSION_INFO_1}
  _SESSION_INFO_1 = record
    sesi1_cname: LMSTR; // client name (no backslashes)
    sesi1_username: LMSTR;
    sesi1_num_opens: DWORD;
    sesi1_time: DWORD;
    sesi1_idle_time: DWORD;
    sesi1_user_flags: DWORD;
  end;
  {$EXTERNALSYM _SESSION_INFO_1}
  SESSION_INFO_1 = _SESSION_INFO_1;
  {$EXTERNALSYM SESSION_INFO_1}
  TSessionInfo1 = SESSION_INFO_1;
  PSessionInfo1 = PSESSION_INFO_1;

  LPSESSION_INFO_2 = ^SESSION_INFO_2;
  {$EXTERNALSYM LPSESSION_INFO_2}
  PSESSION_INFO_2 = ^SESSION_INFO_2;
  {$EXTERNALSYM PSESSION_INFO_2}
  _SESSION_INFO_2 = record
    sesi2_cname: LMSTR; // client name (no backslashes)
    sesi2_username: LMSTR;
    sesi2_num_opens: DWORD;
    sesi2_time: DWORD;
    sesi2_idle_time: DWORD;
    sesi2_user_flags: DWORD;
    sesi2_cltype_name: LMSTR;
  end;
  {$EXTERNALSYM _SESSION_INFO_2}
  SESSION_INFO_2 = _SESSION_INFO_2;
  {$EXTERNALSYM SESSION_INFO_2}
  TSessionInfo2 = SESSION_INFO_2;
  PSessionInfo2 = PSESSION_INFO_2;

  LPSESSION_INFO_10 = ^SESSION_INFO_10;
  {$EXTERNALSYM LPSESSION_INFO_10}
  PSESSION_INFO_10 = ^SESSION_INFO_10;
  {$EXTERNALSYM PSESSION_INFO_10}
  _SESSION_INFO_10 = record
    sesi10_cname: LMSTR; // client name (no backslashes)
    sesi10_username: LMSTR;
    sesi10_time: DWORD;
    sesi10_idle_time: DWORD;
  end;
  {$EXTERNALSYM _SESSION_INFO_10}
  SESSION_INFO_10 = _SESSION_INFO_10;
  {$EXTERNALSYM SESSION_INFO_10}
  TSessionInfo10 = SESSION_INFO_10;
  PSessionInfo10 = PSESSION_INFO_10;

  LPSESSION_INFO_502 = ^SESSION_INFO_502;
  {$EXTERNALSYM LPSESSION_INFO_502}
  PSESSION_INFO_502 = ^SESSION_INFO_502;
  {$EXTERNALSYM PSESSION_INFO_502}
  _SESSION_INFO_502 = record

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -