476{
489 WCHAR ShortNameBuffer[13];
491
493
496
497
499#if 0
500
502 IrpContext->
Irp->MdlAddress ==
NULL &&
503 IrpContext->
Irp->UserBuffer !=
NULL)
504 {
506 }
507#endif
509
512 {
516
518 }
519
522 {
527
529 }
530
531
534
535
536
537
538
539
540
541
542 if (pSearchPattern &&
544 {
546 {
553 {
557 }
560 }
561 }
563 {
570 {
574 }
578 }
579
581 {
583 }
585 {
587 }
588 else
589 {
591 }
592
594
597 DirContext.LongNameU.MaximumLength =
sizeof(LongNameBuffer);
598 DirContext.ShortNameU.Buffer = ShortNameBuffer;
599 DirContext.ShortNameU.MaximumLength =
sizeof(ShortNameBuffer);
600
601 Written = 0;
603 {
605 pFcb,
608 FirstCall);
610
612
615 {
617 {
623 &Written,
625 break;
626
632 &Written,
634 break;
635
641 &Written,
643 break;
644
649 &Written,
651 break;
652
653 default:
655 break;
656 }
657
659 break;
660 }
661 else
662 {
664 break;
665 }
666
671
673 break;
674
676 }
677
678 if (Buffer0)
679 {
683 }
684 else
685 {
689 }
690
693
695}
_In_ PFCB _In_ PDIRENT_ENUM_CONTEXT DirContext
#define NT_SUCCESS(StatCode)
#define IRPCONTEXT_CANWAIT
static NTSTATUS VfatGetFileBothInformation(PVFAT_DIRENTRY_CONTEXT DirContext, PDEVICE_EXTENSION DeviceExt, PFILE_BOTH_DIR_INFORMATION pInfo, ULONG BufferLength, PULONG Written, BOOLEAN First)
static NTSTATUS VfatGetFileFullDirectoryInformation(PVFAT_DIRENTRY_CONTEXT DirContext, PDEVICE_EXTENSION DeviceExt, PFILE_FULL_DIR_INFORMATION pInfo, ULONG BufferLength, PULONG Written, BOOLEAN First)
static NTSTATUS VfatGetFileNamesInformation(PVFAT_DIRENTRY_CONTEXT DirContext, PFILE_NAMES_INFORMATION pInfo, ULONG BufferLength, PULONG Written, BOOLEAN First)
static NTSTATUS VfatGetFileDirectoryInformation(PVFAT_DIRENTRY_CONTEXT DirContext, PDEVICE_EXTENSION DeviceExt, PFILE_DIRECTORY_INFORMATION pInfo, ULONG BufferLength, PULONG Written, BOOLEAN First)
NTSTATUS VfatLockUserBuffer(IN PIRP Irp, IN ULONG Length, IN LOCK_OPERATION Operation)
PVOID VfatGetUserBuffer(IN PIRP Irp, IN BOOLEAN Paging)
UNICODE_STRING * PUNICODE_STRING
#define ExAllocatePoolWithTag(hernya, size, tag)
#define ExAcquireResourceExclusiveLite(res, wait)
#define ExAcquireResourceSharedLite(res, wait)
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
#define BooleanFlagOn(F, SF)
@ FileDirectoryInformation
@ FileFullDirectoryInformation
@ FileBothDirectoryInformation
enum _FILE_INFORMATION_CLASS FILE_INFORMATION_CLASS
struct _FILE_NAMES_INFORMATION * PFILE_NAMES_INFORMATION
static OUT PIO_STATUS_BLOCK OUT PVOID IN ULONG IN FILE_INFORMATION_CLASS FileInformationClass
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
#define STATUS_INVALID_INFO_CLASS
#define STATUS_BUFFER_OVERFLOW
PDEVICE_EXTENSION DeviceExt
UNICODE_STRING SearchPattern
#define STATUS_NO_SUCH_FILE
#define STATUS_INSUFFICIENT_RESOURCES
#define STATUS_NO_MORE_FILES
#define LONGNAME_MAX_LENGTH
struct _VFATCCB * PVFATCCB
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
#define SL_INDEX_SPECIFIED
#define SL_RETURN_SINGLE_ENTRY