NET_API_STATUS NetSessionEnum( LPTSTR servername,
LPTSTR UncClientName,
LPTSTR username,
DWORD level,
LPBYTE *bufptr,
DWORD prefmaxlen,
LPDWORD entriesread,
LPDWORD totalentries,
LPDWORD resume_handle
);
我想把这个函数转换成delphi的形式,高手请指点。。
LPTSTR UncClientName,
LPTSTR username,
DWORD level,
LPBYTE *bufptr,
DWORD prefmaxlen,
LPDWORD entriesread,
LPDWORD totalentries,
LPDWORD resume_handle
);
我想把这个函数转换成delphi的形式,高手请指点。。
LPTSTR UncClientName,
LPTSTR username,
DWORD level, //DWORD
LPBYTE *bufptr, //PBYTE 可以声明成 PByte = ^Byte;
DWORD prefmaxlen,
LPDWORD entriesread, //LPDWORD 指向DORD 的指针,直接可用。
LPDWORD totalentries,
LPDWORD resume_handle
);
_SESSION_INFO_0 = Record
Client : Array[0..4095] Of lpWStr;
SESSION_INFO_0 = _SESSION_INFO_0;Function NetSessionEnum(ServerName,ClientName,UserName : lpWStr;
Level : DWord;
Var Buffer : Pointer;
PrefMaxLen : DWord;
Var EntriesRead,TotalEntries : DWord;
Resume_Handle : lpDWord) : LongInt; StdCall;Implementation Declarations :Function NetSessionEnum; External 'NETAPI32.DLL';
Function GetNetSessionData : Boolean;
Var
NET_API_RESULT : LongInt;
NSE_Buffer : Pointer;
NSE_STRUCT : SESSION_INFO_0;
I : Integer;
PDCServerName : Array[0..255] of Char;
EntriesRead,TotalEntries,ResumeHandle : DWord;
Begin
ResumeHandle := 0;StringToWideChar(PChar('UNC path of server),@PDCServerName,256); ResumeHandle := 0; NetAPIBufferAllocate(SizeOf(SESSION_INFO_0),NSE_Buffer); NET_API_RESULT := NetSessionEnum(@PDCServerName,Nil,@IdentBuffer,0,NSE_Buffer,SizeOf(SESSION_INFO_0),EntriesRead,TotalEntries,@ResumeHandle); If NET_API_RESULT = 0 Then
Begin
NSE_STRUCT := SESSION_INFO_0(NSE_Buffer^);
If NSE_Buffer <> Nil Then For I := 0 To EntriesRead - 1 Do ShowMessage('Client : ' + WideCharToString(NSE_STRUCT.Client[I])); End; NetAPIBufferFree(NSE_Buffer);
End;End;