mirror of
https://github.com/TalAloni/SMBLibrary.git
synced 2025-07-21 08:45:54 +02:00
SMB2Client: Implemented QueryDirectory method
This commit is contained in:
parent
e03037d241
commit
c3a88d59ab
1 changed files with 24 additions and 1 deletions
|
@ -126,7 +126,30 @@ namespace SMBLibrary.Client
|
|||
|
||||
public NTStatus QueryDirectory(out List<QueryDirectoryFileInformation> result, object handle, string fileName, FileInformationClass informationClass)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
result = new List<QueryDirectoryFileInformation>();
|
||||
QueryDirectoryRequest request = new QueryDirectoryRequest();
|
||||
request.FileInformationClass = informationClass;
|
||||
request.Reopen = true;
|
||||
request.FileId = (FileID)handle;
|
||||
request.OutputBufferLength = m_client.MaxTransactSize;
|
||||
request.FileName = fileName;
|
||||
|
||||
TrySendCommand(request);
|
||||
SMB2Command response = m_client.WaitForCommand(SMB2CommandName.QueryDirectory);
|
||||
if (response != null)
|
||||
{
|
||||
while (response.Header.Status == NTStatus.STATUS_SUCCESS && response is QueryDirectoryResponse)
|
||||
{
|
||||
List<QueryDirectoryFileInformation> page = ((QueryDirectoryResponse)response).GetFileInformationList(informationClass);
|
||||
result.AddRange(page);
|
||||
request.Reopen = false;
|
||||
TrySendCommand(request);
|
||||
response = m_client.WaitForCommand(SMB2CommandName.QueryDirectory);
|
||||
}
|
||||
return response.Header.Status;
|
||||
}
|
||||
|
||||
return NTStatus.STATUS_INVALID_SMB;
|
||||
}
|
||||
|
||||
public NTStatus GetFileInformation(out FileInformation result, object handle, FileInformationClass informationClass)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue