summaryrefslogtreecommitdiff
path: root/audio/simpleaudiosample/Source/Utilities/savedata.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'audio/simpleaudiosample/Source/Utilities/savedata.cpp')
-rw-r--r--audio/simpleaudiosample/Source/Utilities/savedata.cpp104
1 files changed, 66 insertions, 38 deletions
diff --git a/audio/simpleaudiosample/Source/Utilities/savedata.cpp b/audio/simpleaudiosample/Source/Utilities/savedata.cpp
index 7b2a11e9..02c3f602 100644
--- a/audio/simpleaudiosample/Source/Utilities/savedata.cpp
+++ b/audio/simpleaudiosample/Source/Utilities/savedata.cpp
@@ -44,8 +44,9 @@ Abstract:
#define DEFAULT_FRAME_SIZE PAGE_SIZE * 4
#define DEFAULT_BUFFER_SIZE DEFAULT_FRAME_SIZE * DEFAULT_FRAME_COUNT
-#define DEFAULT_FILE_NAME L"\\DosDevices\\C:\\STREAM"
-#define OSDATA_FILE_NAME L"\\DosDevices\\O:\\STREAM"
+#define DEFAULT_FILE_FOLDER1 L"\\DriverData\\Audio_Samples"
+#define DEFAULT_FILE_FOLDER2 L"\\DriverData\\Audio_Samples\\SimpleAudioSample"
+#define DEFAULT_FILE_NAME L"\\DriverData\\Audio_Samples\\SimpleAudioSample\\STREAM"
#define OFFLOAD_FILE_NAME L"OFFLOAD"
#define HOST_FILE_NAME L"HOST"
@@ -444,59 +445,86 @@ CSaveData::Initialize
{
PAGED_CODE();
- NTSTATUS ntStatus = STATUS_SUCCESS;
- WCHAR szTemp[MAX_PATH];
- size_t cLen;
- OBJECT_ATTRIBUTES objectAttributes;
- UNICODE_STRING osDataVolumeString;
- HANDLE osDataFileHandle = NULL;
- IO_STATUS_BLOCK ioStatusBlock;
+ NTSTATUS ntStatus = STATUS_SUCCESS;
+ WCHAR szTemp[MAX_PATH];
+ size_t cLen = 0;
+ IO_STATUS_BLOCK ioStatusBlock = {0};
+ HANDLE fileHandle;
+ OBJECT_ATTRIBUTES objectAttributes;
+ UNICODE_STRING fileName;
DPF_ENTER(("[CSaveData::Initialize]"));
m_ulStreamId++;
- // Probe if OSData volume exists.
- //
- RtlStringCchPrintfW(szTemp, MAX_PATH, L"%s_probe.txt", OSDATA_FILE_NAME);
- RtlInitUnicodeString(&osDataVolumeString, szTemp);
- InitializeObjectAttributes
- (
- &objectAttributes,
- &osDataVolumeString,
- OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE,
- NULL,
- NULL
- );
+ RtlInitUnicodeString(&fileName, DEFAULT_FILE_FOLDER1);
+ InitializeObjectAttributes(
+ &objectAttributes,
+ &fileName,
+ OBJ_KERNEL_HANDLE | OBJ_CASE_INSENSITIVE,
+ NULL,
+ NULL);
- ntStatus =
- ZwCreateFile
- (
- &osDataFileHandle,
- GENERIC_WRITE | SYNCHRONIZE,
+ // Create the folder.
+ ntStatus = ZwCreateFile(
+ &fileHandle,
+ 0,
&objectAttributes,
&ioStatusBlock,
NULL,
FILE_ATTRIBUTE_NORMAL,
0,
- FILE_OVERWRITE_IF,
- FILE_NON_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT,
+ FILE_OPEN_IF,
+ FILE_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT,
NULL,
- 0
- );
+ 0);
+
+ if (NT_SUCCESS(ntStatus))
+ {
+ ZwClose(fileHandle);
+ fileHandle = NULL;
+
+ RtlInitUnicodeString(&fileName, DEFAULT_FILE_FOLDER2);
+ InitializeObjectAttributes(
+ &objectAttributes,
+ &fileName,
+ OBJ_KERNEL_HANDLE | OBJ_CASE_INSENSITIVE,
+ NULL,
+ NULL);
+
+ // Create the folder.
+ ntStatus = ZwCreateFile(
+ &fileHandle,
+ 0,
+ &objectAttributes,
+ &ioStatusBlock,
+ NULL,
+ FILE_ATTRIBUTE_NORMAL,
+ 0,
+ FILE_OPEN_IF,
+ FILE_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT,
+ NULL,
+ 0);
+
+ if (NT_SUCCESS(ntStatus))
+ {
+ ZwClose(fileHandle);
+ fileHandle = NULL;
+ }
+ }
+
if (NT_SUCCESS(ntStatus))
{
- ZwClose(osDataFileHandle);
+ // Allocate data file name.
+ //
+ RtlStringCchPrintfW(szTemp, MAX_PATH, L"%s_%s_%d.wav", DEFAULT_FILE_NAME, HOST_FILE_NAME, m_ulStreamId);
+ m_FileName.Length = 0;
+ ntStatus = RtlStringCchLengthW (szTemp, sizeof(szTemp)/sizeof(szTemp[0]), &cLen);
}
- // Allocate data file name.
- //
- RtlStringCchPrintfW(szTemp, MAX_PATH, L"%s_%s_%d.wav", NT_SUCCESS(ntStatus) ? OSDATA_FILE_NAME : DEFAULT_FILE_NAME, HOST_FILE_NAME, m_ulStreamId);
- m_FileName.Length = 0;
- ntStatus = RtlStringCchLengthW (szTemp, sizeof(szTemp)/sizeof(szTemp[0]), &cLen);
if (NT_SUCCESS(ntStatus))
{
- m_FileName.MaximumLength = (USHORT)((cLen * sizeof(WCHAR)) + sizeof(WCHAR));//convert to wchar and add room for NULL
+ m_FileName.MaximumLength = (USHORT)((cLen * sizeof(WCHAR)) + sizeof(WCHAR));//convert to wchar and add room for NULL
m_FileName.Buffer = (PWSTR)
ExAllocatePool2
(
@@ -574,7 +602,7 @@ CSaveData::Initialize
(
&m_objectAttributes,
&m_FileName,
- OBJ_CASE_INSENSITIVE|OBJ_KERNEL_HANDLE,
+ OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE,
NULL,
NULL
);