// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0 > or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT >, at your option.
// All files in the project carrying such notice may not be copied, modified, or distributed
// except according to those terms.
//! This module defines the API function prototypes and data structures
use shared::basetsd::PDWORD_PTR;
use shared::guiddef::GUID;
use shared::lmcons::{LMSTR, NET_API_STATUS, PARMNUM_BASE_INFOLEVEL};
use shared::minwindef::{DWORD, LPBYTE, LPDWORD, ULONG};
use um::winnt::{BOOLEAN, PSECURITY_DESCRIPTOR};
extern "system" {
pub fn NetShareAdd(
servername: LMSTR,
level: DWORD,
buf: LPBYTE,
parm_err: LPDWORD,
) -> NET_API_STATUS;
pub fn NetShareEnum(
servername: LMSTR,
level: DWORD,
bufptr: *
mut LPBYTE,
prefmaxlen: DWORD,
entriesread: LPDWORD,
totalentries: LPDWORD,
resumehandle: LPDWORD,
) -> NET_API_STATUS;
pub fn NetShareEnumSticky(
servername: LMSTR,
level: DWORD,
bufptr: *
mut LPBYTE,
prefmaxlen: DWORD,
entriesread: LPDWORD,
totalentries: LPDWORD,
resumehandle: LPDWORD,
) -> NET_API_STATUS;
pub fn NetShareGetInfo(
servername: LMSTR,
netname: LMSTR,
level: DWORD,
bufptr: *
mut LPBYTE,
) -> NET_API_STATUS;
pub fn NetShareSetInfo(
servername: LMSTR,
netname: LMSTR,
level: DWORD,
buf: LPBYTE,
parm_err: LPDWORD,
) -> NET_API_STATUS;
pub fn NetShareDel(
servername: LMSTR,
netname: LMSTR,
reserved: DWORD,
) -> NET_API_STATUS;
pub fn NetShareDelSticky(
servername: LMSTR,
netname: LMSTR,
reserved: DWORD,
) -> NET_API_STATUS;
pub fn NetShareCheck(
servername: LMSTR,
device: LMSTR,
_
type : LPDWORD,
) -> NET_API_STATUS;
pub fn NetShareDelEx(
servername: LMSTR,
level: DWORD,
buf: LPBYTE,
) -> NET_API_STATUS;
}
STRUCT !{
struct SHARE_INFO_0 {
shi0_netname: LMSTR,
}}
pub type PSHARE_INFO_0 = *
mut SHARE_INFO_0;
pub type LPSHARE_INFO_0 = *
mut SHARE_INFO_0;
STRUCT !{
struct SHARE_INFO_1 {
shi1_netname: LMSTR,
shi1_type: DWORD,
shi1_remark: LMSTR,
}}
pub type PSHARE_INFO_1 = *
mut SHARE_INFO_1;
pub type LPSHARE_INFO_1 = *
mut SHARE_INFO_1;
STRUCT !{
struct SHARE_INFO_2 {
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,
}}
pub type PSHARE_INFO_2 = *
mut SHARE_INFO_2;
pub type LPSHARE_INFO_2 = *
mut SHARE_INFO_2;
STRUCT !{
struct SHARE_INFO_501 {
shi501_netname: LMSTR,
shi501_type: DWORD,
shi501_remark: LMSTR,
shi501_flags: DWORD,
}}
pub type PSHARE_INFO_501 = *
mut SHARE_INFO_501;
pub type LPSHARE_INFO_501 = *
mut SHARE_INFO_501;
STRUCT !{
struct SHARE_INFO_502 {
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,
}}
pub type PSHARE_INFO_502 = *
mut SHARE_INFO_502;
pub type LPSHARE_INFO_502 = *
mut SHARE_INFO_502;
STRUCT !{
struct SHARE_INFO_503 {
shi503_netname: LMSTR,
shi503_type: DWORD,
shi503_remark: LMSTR,
shi503_permissions: DWORD,
shi503_max_uses: DWORD,
shi503_current_uses: DWORD,
shi503_path: LMSTR,
shi503_passwd: LMSTR,
shi503_servername: LMSTR,
shi503_reserved: DWORD,
shi503_security_descriptor: PSECURITY_DESCRIPTOR,
}}
pub type PSHARE_INFO_503 = *
mut SHARE_INFO_503;
pub type LPSHARE_INFO_503 = *
mut SHARE_INFO_503;
STRUCT !{
struct SHARE_INFO_1004 {
shi1004_remark: LMSTR,
}}
pub type PSHARE_INFO_1004 = *
mut SHARE_INFO_1004;
pub type LPSHARE_INFO_1004 = *
mut SHARE_INFO_1004;
STRUCT !{
struct SHARE_INFO_1005 {
shi1005_flags: DWORD,
}}
pub type PSHARE_INFO_1005 = *
mut SHARE_INFO_1005;
pub type LPSHARE_INFO_1005 = *
mut SHARE_INFO_1005;
STRUCT !{
struct SHARE_INFO_1006 {
shi1006_max_uses: DWORD,
}}
pub type PSHARE_INFO_1006 = *
mut SHARE_INFO_1006;
pub type LPSHARE_INFO_1006 = *
mut SHARE_INFO_1006;
STRUCT !{
struct SHARE_INFO_1501 {
shi1501_reserved: DWORD,
shi1501_security_descriptor: PSECURITY_DESCRIPTOR,
}}
pub type PSHARE_INFO_1501 = *
mut SHARE_INFO_1501;
pub type LPSHARE_INFO_1501 = *
mut SHARE_INFO_1501;
STRUCT !{
struct SHARE_INFO_1503 {
shi1503_sharefilter: GUID,
}}
pub type PSHARE_INFO_1503 = *
mut SHARE_INFO_1503;
pub type LPSHARE_INFO_1503 = *
mut SHARE_INFO_1503;
extern "system" {
pub fn NetServerAliasAdd(
servername: LMSTR,
level: DWORD,
buf: LPBYTE,
) -> NET_API_STATUS;
pub fn NetServerAliasDel(
servername: LMSTR,
level: DWORD,
buf: LPBYTE,
) -> NET_API_STATUS;
pub fn NetServerAliasEnum(
servername: LMSTR,
level: DWORD,
bufptr: *
mut LPBYTE,
prefmaxlen: DWORD,
entriesread: LPDWORD,
totalentries: LPDWORD,
resumehandle: LPDWORD,
) -> NET_API_STATUS;
}
STRUCT !{
struct SERVER_ALIAS_INFO_0 {
srvai0_alias: LMSTR,
srvai0_target: LMSTR,
srvai0_default: BOOLEAN,
srvai0_reserved: ULONG,
}}
pub type PSERVER_ALIAS_INFO_0 = *
mut SERVER_ALIAS_INFO_0;
pub type LPSERVER_ALIAS_INFO_0 = *
mut SERVER_ALIAS_INFO_0;
pub const SHARE_NETNAME_PARMNUM: DWORD =
1 ;
pub const SHARE_TYPE_PARMNUM: DWORD =
3 ;
pub const SHARE_REMARK_PARMNUM: DWORD =
4 ;
pub const SHARE_PERMISSIONS_PARMNUM: DWORD =
5 ;
pub const SHARE_MAX_USES_PARMNUM: DWORD =
6 ;
pub const SHARE_CURRENT_USES_PARMNUM: DWORD =
7 ;
pub const SHARE_PATH_PARMNUM: DWORD =
8 ;
pub const SHARE_PASSWD_PARMNUM: DWORD =
9 ;
pub const SHARE_FILE_SD_PARMNUM: DWORD =
501 ;
pub const SHARE_SERVER_PARMNUM: DWORD =
503 ;
pub const SHARE_REMARK_INFOLEVEL: DWORD = PARMNUM_BASE_INFOLEVEL + SHARE_REMARK_PARMNUM
;
pub const SHARE_MAX_USES_INFOLEVEL: DWORD = PARMNUM_BASE_INFOLEVEL + SHARE_MAX_USES_PARMNUM;
pub const SHARE_FILE_SD_INFOLEVEL: DWORD = PARMNUM_BASE_INFOLEVEL + SHARE_FILE_SD_PARMNUM;
pub const SHI1_NUM_ELEMENTS: DWORD = 4 ;
pub const SHI2_NUM_ELEMENTS: DWORD = 10 ;
pub const STYPE_DISKTREE: DWORD = 0 ;
pub const STYPE_PRINTQ: DWORD = 1 ;
pub const STYPE_DEVICE: DWORD = 2 ;
pub const STYPE_IPC: DWORD = 3 ;
pub const STYPE_MASK: DWORD = 0 x000000FF;
pub const STYPE_RESERVED1: DWORD = 0 x01000000;
pub const STYPE_RESERVED2: DWORD = 0 x02000000;
pub const STYPE_RESERVED3: DWORD = 0 x04000000;
pub const STYPE_RESERVED4: DWORD = 0 x08000000;
pub const STYPE_RESERVED_ALL: DWORD = 0 x3FFFFF00;
pub const STYPE_TEMPORARY: DWORD = 0 x40000000;
pub const STYPE_SPECIAL: DWORD = 0 x80000000;
pub const SHI_USES_UNLIMITED: DWORD = -1 i32 as u32;
pub const SHI1005_FLAGS_DFS: DWORD = 0 x0001;
pub const SHI1005_FLAGS_DFS_ROOT: DWORD = 0 x0002;
pub const CSC_MASK_EXT: DWORD = 0 x2030;
pub const CSC_MASK: DWORD = 0 x0030;
pub const CSC_CACHE_MANUAL_REINT: DWORD = 0 x0000;
pub const CSC_CACHE_AUTO_REINT: DWORD = 0 x0010;
pub const CSC_CACHE_VDO: DWORD = 0 x0020;
pub const CSC_CACHE_NONE: DWORD = 0 x0030;
pub const SHI1005_FLAGS_RESTRICT_EXCLUSIVE_OPENS: DWORD = 0 x00100;
pub const SHI1005_FLAGS_FORCE_SHARED_DELETE: DWORD = 0 x00200;
pub const SHI1005_FLAGS_ALLOW_NAMESPACE_CACHING: DWORD = 0 x00400;
pub const SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUM: DWORD = 0 x00800;
pub const SHI1005_FLAGS_FORCE_LEVELII_OPLOCK: DWORD = 0 x01000;
pub const SHI1005_FLAGS_ENABLE_HASH: DWORD = 0 x02000;
pub const SHI1005_FLAGS_ENABLE_CA: DWORD = 0 x04000;
pub const SHI1005_FLAGS_ENCRYPT_DATA: DWORD = 0 x08000;
pub const SHI1005_FLAGS_RESERVED: DWORD = 0 x10000;
pub const SHI1005_VALID_FLAGS_SET: DWORD = CSC_MASK | SHI1005_FLAGS_RESTRICT_EXCLUSIVE_OPENS
| SHI1005_FLAGS_FORCE_SHARED_DELETE | SHI1005_FLAGS_ALLOW_NAMESPACE_CACHING
| SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUM | SHI1005_FLAGS_FORCE_LEVELII_OPLOCK
| SHI1005_FLAGS_ENABLE_HASH | SHI1005_FLAGS_ENABLE_CA | SHI1005_FLAGS_ENCRYPT_DATA
| SHI1005_FLAGS_RESERVED;
extern "system" {
pub fn NetSessionEnum(
servername: LMSTR,
UncClientName: LMSTR,
username: LMSTR,
level: DWORD,
bufptr: *mut LPBYTE,
prefmaxlen: DWORD,
entriesread: LPDWORD,
totalentries: LPDWORD,
resumehandle: LPDWORD,
) -> NET_API_STATUS;
pub fn NetSessionDel(
servername: LMSTR,
UncClientName: LMSTR,
username: LMSTR,
) -> NET_API_STATUS;
pub fn NetSessionGetInfo(
servername: LMSTR,
UncClientName: LMSTR,
username: LMSTR,
level: DWORD,
bufptr: *mut LPBYTE,
) -> NET_API_STATUS;
}
STRUCT !{struct SESSION_INFO_0 {
sesi0_cname: LMSTR,
}}
pub type PSESSION_INFO_0 = *mut SESSION_INFO_0;
pub type LPSESSION_INFO_0 = *mut SESSION_INFO_0;
STRUCT !{struct SESSION_INFO_1 {
sesi1_cname: LMSTR,
sesi1_username: LMSTR,
sesi1_num_opens: DWORD,
sesi1_time: DWORD,
sesi1_idle_time: DWORD,
sesi1_user_flags: DWORD,
}}
pub type PSESSION_INFO_1 = *mut SESSION_INFO_1;
pub type LPSESSION_INFO_1 = *mut SESSION_INFO_1;
STRUCT !{struct SESSION_INFO_2 {
sesi2_cname: LMSTR,
sesi2_username: LMSTR,
sesi2_num_opens: DWORD,
sesi2_time: DWORD,
sesi2_idle_time: DWORD,
sesi2_user_flags: DWORD,
sesi2_cltype_name: LMSTR,
}}
pub type PSESSION_INFO_2 = *mut SESSION_INFO_2;
pub type LPSESSION_INFO_2 = *mut SESSION_INFO_2;
STRUCT !{struct SESSION_INFO_10 {
sesi10_cname: LMSTR,
sesi10_username: LMSTR,
sesi10_time: DWORD,
sesi10_idle_time: DWORD,
}}
pub type PSESSION_INFO_10 = *mut SESSION_INFO_10;
pub type LPSESSION_INFO_10 = *mut SESSION_INFO_10;
STRUCT !{struct SESSION_INFO_502 {
sesi502_cname: LMSTR,
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,
}}
pub type PSESSION_INFO_502 = *mut SESSION_INFO_502;
pub type LPSESSION_INFO_502 = *mut SESSION_INFO_502;
pub const SESS_GUEST: DWORD = 0 x00000001;
pub const SESS_NOENCRYPTION: DWORD = 0 x00000002;
pub const SESI1_NUM_ELEMENTS: DWORD = 8 ;
pub const SESI2_NUM_ELEMENTS: DWORD = 9 ;
extern "system" {
pub fn NetConnectionEnum(
servername: LMSTR,
qualifier: LMSTR,
level: DWORD,
bufptr: *mut LPBYTE,
prefmaxlen: DWORD,
entriesread: LPDWORD,
totalentries: LPDWORD,
resume_handle: LPDWORD,
) -> NET_API_STATUS;
}
STRUCT !{struct CONNECTION_INFO_0 {
coni0_id: DWORD,
}}
pub type PCONNECTION_INFO_0 = *mut CONNECTION_INFO_0;
pub type LPCONNECTION_INFO_0 = *mut CONNECTION_INFO_0;
STRUCT !{struct CONNECTION_INFO_1 {
coni1_id: DWORD,
coni1_type: DWORD,
coni1_num_opens: DWORD,
coni1_num_users: DWORD,
coni1_time: DWORD,
coni1_username: LMSTR,
coni1_netname: LMSTR,
}}
pub type PCONNECTION_INFO_1 = *mut CONNECTION_INFO_1;
pub type LPCONNECTION_INFO_1 = *mut CONNECTION_INFO_1;
extern "system" {
pub fn NetFileClose(
servername: LMSTR,
fileid: DWORD,
) -> NET_API_STATUS;
pub fn NetFileEnum(
servername: LMSTR,
basepath: LMSTR,
username: LMSTR,
level: DWORD,
bufptr: *mut LPBYTE,
prefmaxlen: DWORD,
entriesread: LPDWORD,
totalentries: LPDWORD,
resume_handle: PDWORD_PTR,
) -> NET_API_STATUS;
pub fn NetFileGetInfo(
servername: LMSTR,
fileid: DWORD,
level: DWORD,
bufptr: *mut LPBYTE,
) -> NET_API_STATUS;
}
STRUCT !{struct FILE_INFO_2 {
fi2_id: DWORD,
}}
pub type PFILE_INFO_2 = *mut FILE_INFO_2;
pub type LPFILE_INFO_2 = *mut FILE_INFO_2;
STRUCT !{struct FILE_INFO_3 {
fi3_id: DWORD,
fi3_permissions: DWORD,
fi3_num_locks: DWORD,
fi3_pathname: LMSTR,
fi3_username: LMSTR,
}}
pub type PFILE_INFO_3 = *mut FILE_INFO_3;
pub type LPFILE_INFO_3 = *mut FILE_INFO_3;
pub const PERM_FILE_READ: DWORD = 0 x1;
pub const PERM_FILE_WRITE: DWORD = 0 x2;
pub const PERM_FILE_CREATE: DWORD = 0 x4;
Messung V0.5 in Prozent C=96 H=100 G=97
¤ Dauer der Verarbeitung: 0.1 Sekunden
(vorverarbeitet am 2026-06-18)
¤
*© Formatika GbR, Deutschland