Repository URL to install this package:
Version:
3.0.0 ▾
|
{******************************************************************************}
{ }
{ 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 att chello dott 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 }
{ APILIB home page, located at http://jedi-apilib.sourceforge.net }
{ }
{ 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 }
{ }
{******************************************************************************}
// $Id: JwaLmShare.pas,v 1.12 2007/09/05 11:58:51 dezipaitor Exp $
{$IFNDEF JWA_OMIT_SECTIONS_LM}
unit JwaLmShare;
{$WEAKPACKAGEUNIT}
{$ENDIF JWA_OMIT_SECTIONS_LM}
{$HPPEMIT ''}
{$HPPEMIT '#include "lmshare.h"'}
{$HPPEMIT ''}
{$IFNDEF JWA_OMIT_SECTIONS_LM}
{$I jediapilib.inc}
interface
uses
JwaLmCons, JwaWinNT, JwaWinType;
{$ENDIF JWA_OMIT_SECTIONS_LM}
{$IFNDEF JWA_IMPLEMENTATIONSECTION}
//
// 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}
SHI1005_FLAGS_FORCE_SHARED_DELETE = $0200; // Used to allows force shared delete
{$EXTERNALSYM SHI1005_FLAGS_FORCE_SHARED_DELETE}
SHI1005_FLAGS_ALLOW_NAMESPACE_CACHING = $0400; // The clients may cache the namespace
{$EXTERNALSYM SHI1005_FLAGS_ALLOW_NAMESPACE_CACHING}
//
// 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 or SHI1005_FLAGS_FORCE_SHARED_DELETE or SHI1005_FLAGS_ALLOW_NAMESPACE_CACHING;
{$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
sesi502_cname: LMSTR; // client name (no backslashes)
sesi502_username: LMSTR;
sesi502_num_opens: DWORD;
sesi502_time: DWORD;
sesi502_idle_time: DWORD;
sesi502_user_flags: DWORD;
sesi502_cltype_name: LMSTR;
sesi502_transport: LMSTR;
end;
{$EXTERNALSYM _SESSION_INFO_502}
SESSION_INFO_502 = _SESSION_INFO_502;
{$EXTERNALSYM SESSION_INFO_502}
TSessionInfo502 = SESSION_INFO_502;
PSessionInfo502 = PSESSION_INFO_502;
//
// Special Values and Constants - Session
//
//
// Bits defined in sesi1_user_flags.
//
const
SESS_GUEST = $00000001; // session is logged on as a guest
{$EXTERNALSYM SESS_GUEST}
SESS_NOENCRYPTION = $00000002; // session is not using encryption
{$EXTERNALSYM SESS_NOENCRYPTION}
SESI1_NUM_ELEMENTS = 8;
{$EXTERNALSYM SESI1_NUM_ELEMENTS}
SESI2_NUM_ELEMENTS = 9;
{$EXTERNALSYM SESI2_NUM_ELEMENTS}
//
// CONNECTION API
//
//
// Function Prototypes - CONNECTION
//
function NetConnectionEnum(servername, qualifier: LMSTR; level: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; entriesread, totalentries, resume_handle: LPDWORD): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetConnectionEnum}
//
// Data Structures - CONNECTION
//
type
LPCONNECTION_INFO_0 = ^CONNECTION_INFO_0;
{$EXTERNALSYM LPCONNECTION_INFO_0}
PCONNECTION_INFO_0 = ^CONNECTION_INFO_0;
{$EXTERNALSYM PCONNECTION_INFO_0}
_CONNECTION_INFO_0 = record
coni0_id: DWORD;
end;
{$EXTERNALSYM _CONNECTION_INFO_0}
CONNECTION_INFO_0 = _CONNECTION_INFO_0;
{$EXTERNALSYM CONNECTION_INFO_0}
TConnectionInfo0 = CONNECTION_INFO_0;
PConnectionInfo0 = PCONNECTION_INFO_0;
LPCONNECTION_INFO_1 = ^CONNECTION_INFO_1;
{$EXTERNALSYM LPCONNECTION_INFO_1}
PCONNECTION_INFO_1 = ^CONNECTION_INFO_1;
{$EXTERNALSYM PCONNECTION_INFO_1}
_CONNECTION_INFO_1 = record
coni1_id: DWORD;
coni1_type: DWORD;
coni1_num_opens: DWORD;
coni1_num_users: DWORD;
coni1_time: DWORD;
coni1_username: LMSTR;
coni1_netname: LMSTR;
end;
{$EXTERNALSYM _CONNECTION_INFO_1}
CONNECTION_INFO_1 = _CONNECTION_INFO_1;
{$EXTERNALSYM CONNECTION_INFO_1}
TConnectionInfo1 = CONNECTION_INFO_1;
PConnectionInfo1 = PCONNECTION_INFO_1;
//
// FILE API
//
//
// Function Prototypes - FILE
//
function NetFileClose(servername: LMSTR; fileid: DWORD): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetFileClose}
function NetFileEnum(servername, basepath, username: LMSTR; level: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; entriesread, totalentries, resume_handle: PDWORD_PTR): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetFileEnum}
function NetFileGetInfo(servername: LMSTR; fileid, level: DWORD; var bufptr: LPBYTE): NET_API_STATUS; stdcall;
{$EXTERNALSYM NetFileGetInfo}
//
// Data Structures - File
//
// File APIs are available at information levels 2 & 3 only. Levels 0 &
// 1 are not supported.
//
type
LPFILE_INFO_2 = ^FILE_INFO_2;
{$EXTERNALSYM LPFILE_INFO_2}
PFILE_INFO_2 = ^FILE_INFO_2;
{$EXTERNALSYM PFILE_INFO_2}
_FILE_INFO_2 = record
fi2_id: DWORD;
end;
{$EXTERNALSYM _FILE_INFO_2}
FILE_INFO_2 = _FILE_INFO_2;
{$EXTERNALSYM FILE_INFO_2}
TFileInfo2 = FILE_INFO_2;
PFileInfo2 = PFILE_INFO_2;
LPFILE_INFO_3 = ^FILE_INFO_3;
{$EXTERNALSYM LPFILE_INFO_3}
PFILE_INFO_3 = ^FILE_INFO_3;
{$EXTERNALSYM PFILE_INFO_3}
_FILE_INFO_3 = record
fi3_id: DWORD;
fi3_permissions: DWORD;
fi3_num_locks: DWORD;
fi3_pathname: LMSTR;
fi3_username: LMSTR;
end;
{$EXTERNALSYM _FILE_INFO_3}
FILE_INFO_3 = _FILE_INFO_3;
{$EXTERNALSYM FILE_INFO_3}
TFileInfo3 = FILE_INFO_3;
PFileInfo3 = PFILE_INFO_3;
//
// Special Values and Constants - File
//
//
// bit values for permissions
//
const
PERM_FILE_READ = $1; // user has read access
{$EXTERNALSYM PERM_FILE_READ}
PERM_FILE_WRITE = $2; // user has write access
{$EXTERNALSYM PERM_FILE_WRITE}
PERM_FILE_CREATE = $4; // user has create access
{$EXTERNALSYM PERM_FILE_CREATE}
{$ENDIF JWA_IMPLEMENTATIONSECTION}
{$IFNDEF JWA_OMIT_SECTIONS_LM}
implementation
//uses ...
{$ENDIF JWA_OMIT_SECTIONS_LM}
{$IFNDEF JWA_INTERFACESECTION}
{$IFDEF DYNAMIC_LINK}
var
_NetShareAdd: Pointer;
function NetShareAdd;
begin
GetProcedureAddress(_NetShareAdd, netapi32, 'NetShareAdd');
asm
MOV ESP, EBP
POP EBP
JMP [_NetShareAdd]
end;
end;
var
_NetShareEnum: Pointer;
function NetShareEnum;
begin
GetProcedureAddress(_NetShareEnum, netapi32, 'NetShareEnum');
asm
MOV ESP, EBP
POP EBP
JMP [_NetShareEnum]
end;
end;
var
_NetShareEnumSticky: Pointer;
function NetShareEnumSticky;
begin
GetProcedureAddress(_NetShareEnumSticky, netapi32, 'NetShareEnumSticky');
asm
MOV ESP, EBP
POP EBP
JMP [_NetShareEnumSticky]
end;
end;
var
_NetShareGetInfo: Pointer;
function NetShareGetInfo;
begin
GetProcedureAddress(_NetShareGetInfo, netapi32, 'NetShareGetInfo');
asm
MOV ESP, EBP
POP EBP
JMP [_NetShareGetInfo]
end;
end;
var
_NetShareSetInfo: Pointer;
function NetShareSetInfo;
begin
GetProcedureAddress(_NetShareSetInfo, netapi32, 'NetShareSetInfo');
asm
MOV ESP, EBP
POP EBP
JMP [_NetShareSetInfo]
end;
end;
var
_NetShareDel: Pointer;
function NetShareDel;
begin
GetProcedureAddress(_NetShareDel, netapi32, 'NetShareDel');
asm
MOV ESP, EBP
POP EBP
JMP [_NetShareDel]
end;
end;
var
_NetShareDelSticky: Pointer;
function NetShareDelSticky;
begin
GetProcedureAddress(_NetShareDelSticky, netapi32, 'NetShareDelSticky');
asm
MOV ESP, EBP
POP EBP
JMP [_NetShareDelSticky]
end;
end;
var
_NetShareCheck: Pointer;
function NetShareCheck;
begin
GetProcedureAddress(_NetShareCheck, netapi32, 'NetShareCheck');
asm
MOV ESP, EBP
POP EBP
JMP [_NetShareCheck]
end;
end;
var
_NetSessionEnum: Pointer;
function NetSessionEnum;
begin
GetProcedureAddress(_NetSessionEnum, netapi32, 'NetSessionEnum');
asm
MOV ESP, EBP
POP EBP
JMP [_NetSessionEnum]
end;
end;
var
_NetSessionDel: Pointer;
function NetSessionDel;
begin
GetProcedureAddress(_NetSessionDel, netapi32, 'NetSessionDel');
asm
MOV ESP, EBP
POP EBP
JMP [_NetSessionDel]
end;
end;
var
_NetSessionGetInfo: Pointer;
function NetSessionGetInfo;
begin
GetProcedureAddress(_NetSessionGetInfo, netapi32, 'NetSessionGetInfo');
asm
MOV ESP, EBP
POP EBP
JMP [_NetSessionGetInfo]
end;
end;
var
_NetConnectionEnum: Pointer;
function NetConnectionEnum;
begin
GetProcedureAddress(_NetConnectionEnum, netapi32, 'NetConnectionEnum');
asm
MOV ESP, EBP
POP EBP
JMP [_NetConnectionEnum]
end;
end;
var
_NetFileClose: Pointer;
function NetFileClose;
begin
GetProcedureAddress(_NetFileClose, netapi32, 'NetFileClose');
asm
MOV ESP, EBP
POP EBP
JMP [_NetFileClose]
end;
end;
var
_NetFileEnum: Pointer;
function NetFileEnum;
begin
GetProcedureAddress(_NetFileEnum, netapi32, 'NetFileEnum');
asm
MOV ESP, EBP
POP EBP
JMP [_NetFileEnum]
end;
end;
var
_NetFileGetInfo: Pointer;
function NetFileGetInfo;
begin
GetProcedureAddress(_NetFileGetInfo, netapi32, 'NetFileGetInfo');
asm
MOV ESP, EBP
POP EBP
JMP [_NetFileGetInfo]
end;
end;
{$ELSE}
function NetShareAdd; external netapi32 name 'NetShareAdd';
function NetShareEnum; external netapi32 name 'NetShareEnum';
function NetShareEnumSticky; external netapi32 name 'NetShareEnumSticky';
function NetShareGetInfo; external netapi32 name 'NetShareGetInfo';
function NetShareSetInfo; external netapi32 name 'NetShareSetInfo';
function NetShareDel; external netapi32 name 'NetShareDel';
function NetShareDelSticky; external netapi32 name 'NetShareDelSticky';
function NetShareCheck; external netapi32 name 'NetShareCheck';
function NetSessionEnum; external netapi32 name 'NetSessionEnum';
function NetSessionDel; external netapi32 name 'NetSessionDel';
function NetSessionGetInfo; external netapi32 name 'NetSessionGetInfo';
function NetConnectionEnum; external netapi32 name 'NetConnectionEnum';
function NetFileClose; external netapi32 name 'NetFileClose';
function NetFileEnum; external netapi32 name 'NetFileEnum';
function NetFileGetInfo; external netapi32 name 'NetFileGetInfo';
{$ENDIF DYNAMIC_LINK}
{$ENDIF JWA_INTERFACESECTION}
{$IFNDEF JWA_OMIT_SECTIONS_LM}
end.
{$ENDIF JWA_OMIT_SECTIONS_LM}