| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package smb
- import "imuslab.com/smb/driver/mod/smb/encoder"
- // request_CHANGE_NOTIFY
- type CompletionFilter uint32
- const (
- FILE_NOTIFY_CHANGE_FILE_NAME CompletionFilter = 0x00000001
- FILE_NOTIFY_CHANGE_DIR_NAME CompletionFilter = 0x00000002
- FILE_NOTIFY_CHANGE_ATTRIBUTES CompletionFilter = 0x00000004
- FILE_NOTIFY_CHANGE_SIZE CompletionFilter = 0x00000008
- FILE_NOTIFY_CHANGE_LAST_WRITE CompletionFilter = 0x00000010
- FILE_NOTIFY_CHANGE_LAST_ACCESS CompletionFilter = 0x00000020
- FILE_NOTIFY_CHANGE_CREATION CompletionFilter = 0x00000040
- FILE_NOTIFY_CHANGE_EA CompletionFilter = 0x00000080
- FILE_NOTIFY_CHANGE_SECURITY CompletionFilter = 0x00000100
- FILE_NOTIFY_CHANGE_STREAM_NAME CompletionFilter = 0x00000200
- FILE_NOTIFY_CHANGE_STREAM_SIZE CompletionFilter = 0x00000400
- FILE_NOTIFY_CHANGE_STREAM_WRITE CompletionFilter = 0x00000800
- )
- var _ encoder.BinaryMarshallable = CompletionFilter(0)
- func (c CompletionFilter) MarshalBinary(meta *encoder.Metadata) ([]byte, error) {
- return MarshalBinary(c, meta, c)
- }
- func (c CompletionFilter) UnmarshalBinary(data []byte, meta *encoder.Metadata) (interface{}, error) {
- return UnmarshalBinary(c, data, meta, c)
- }
- func init() {
- commandRequestMap[CommandChangeNotify] = func() DataI {
- return &ChangeNotifyRequest{}
- }
- }
- type ChangeNotifyRequest struct {
- Header
- StructureSize uint16
- Flags uint16
- OutputBufferLength uint32
- FileId GUID
- CompletionFilter CompletionFilter //CompletionFilter
- Reserved uint32
- }
- type ChangeNotifyResponse struct {
- Header
- StructureSize uint16
- OutputBufferOffset uint16 `smb:"offset:OutputBuffer"`
- OutputBufferLength uint32 `smb:"len:OutputBuffer"`
- OutputBuffer []byte
- }
- func (data *ChangeNotifyRequest) ServerAction(ctx *DataCtx) (interface{}, error) {
- data.Header.Flags = SMB2_FLAGS_RESPONSE
- data.Header.Status = STATUS_PENDING
- ctx.session.notify[data.FileId] = data
- return ERR(data.Header, STATUS_PENDING)
- }
|