mirror of
https://github.com/reactos/reactos.git
synced 2025-07-27 00:14:42 +00:00
[KMTESTS]
- Add KmtSendWStringToDriver to easily send unicode strings to special-purpose drivers - Add TESTENTRY_NO_EXCLUSIVE_DEVICE flag for non-exclusive devices in special-purpose drivers ROSTESTS-104 svn path=/trunk/; revision=58812
This commit is contained in:
parent
a8618f38c2
commit
a3ee37624f
3 changed files with 29 additions and 1 deletions
|
@ -66,6 +66,7 @@ typedef enum
|
||||||
TESTENTRY_NO_CREATE_DEVICE = 1,
|
TESTENTRY_NO_CREATE_DEVICE = 1,
|
||||||
TESTENTRY_NO_REGISTER_DISPATCH = 2,
|
TESTENTRY_NO_REGISTER_DISPATCH = 2,
|
||||||
TESTENTRY_NO_REGISTER_UNLOAD = 4,
|
TESTENTRY_NO_REGISTER_UNLOAD = 4,
|
||||||
|
TESTENTRY_NO_EXCLUSIVE_DEVICE = 8,
|
||||||
} KMT_TESTENTRY_FLAGS;
|
} KMT_TESTENTRY_FLAGS;
|
||||||
|
|
||||||
NTSTATUS TestEntry(IN PDRIVER_OBJECT DriverObject, IN PCUNICODE_STRING RegistryPath, OUT PCWSTR *DeviceName, IN OUT INT *Flags);
|
NTSTATUS TestEntry(IN PDRIVER_OBJECT DriverObject, IN PCUNICODE_STRING RegistryPath, OUT PCWSTR *DeviceName, IN OUT INT *Flags);
|
||||||
|
@ -98,6 +99,7 @@ VOID KmtCloseDriver(VOID);
|
||||||
|
|
||||||
DWORD KmtSendToDriver(IN DWORD ControlCode);
|
DWORD KmtSendToDriver(IN DWORD ControlCode);
|
||||||
DWORD KmtSendStringToDriver(IN DWORD ControlCode, IN PCSTR String);
|
DWORD KmtSendStringToDriver(IN DWORD ControlCode, IN PCSTR String);
|
||||||
|
DWORD KmtSendWStringToDriver(IN DWORD ControlCode, IN PCWSTR String);
|
||||||
DWORD KmtSendBufferToDriver(IN DWORD ControlCode, IN OUT PVOID Buffer OPTIONAL, IN DWORD InLength, IN OUT PDWORD OutLength);
|
DWORD KmtSendBufferToDriver(IN DWORD ControlCode, IN OUT PVOID Buffer OPTIONAL, IN DWORD InLength, IN OUT PDWORD OutLength);
|
||||||
#else /* if !defined KMT_KERNEL_MODE && !defined KMT_USER_MODE */
|
#else /* if !defined KMT_KERNEL_MODE && !defined KMT_USER_MODE */
|
||||||
#error either KMT_KERNEL_MODE or KMT_USER_MODE must be defined
|
#error either KMT_KERNEL_MODE or KMT_USER_MODE must be defined
|
||||||
|
|
|
@ -187,6 +187,31 @@ KmtSendStringToDriver(
|
||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name KmtSendStringToDriver
|
||||||
|
*
|
||||||
|
* Unload special-purpose driver (stop the service)
|
||||||
|
*
|
||||||
|
* @param ControlCode
|
||||||
|
* @param String
|
||||||
|
*
|
||||||
|
* @return Win32 error code as returned by DeviceIoControl
|
||||||
|
*/
|
||||||
|
DWORD
|
||||||
|
KmtSendWStringToDriver(
|
||||||
|
IN DWORD ControlCode,
|
||||||
|
IN PCWSTR String)
|
||||||
|
{
|
||||||
|
DWORD BytesRead;
|
||||||
|
|
||||||
|
assert(ControlCode < 0x400);
|
||||||
|
|
||||||
|
if (!DeviceIoControl(TestDeviceHandle, KMT_MAKE_CODE(ControlCode), (PVOID)String, (DWORD)wcslen(String) * sizeof(WCHAR), NULL, 0, &BytesRead, NULL))
|
||||||
|
return GetLastError();
|
||||||
|
|
||||||
|
return ERROR_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @name KmtSendBufferToDriver
|
* @name KmtSendBufferToDriver
|
||||||
*
|
*
|
||||||
|
|
|
@ -122,7 +122,8 @@ DriverEntry(
|
||||||
Status = IoCreateDevice(DriverObject, 0, &DeviceName,
|
Status = IoCreateDevice(DriverObject, 0, &DeviceName,
|
||||||
FILE_DEVICE_UNKNOWN,
|
FILE_DEVICE_UNKNOWN,
|
||||||
FILE_DEVICE_SECURE_OPEN | FILE_READ_ONLY_DEVICE,
|
FILE_DEVICE_SECURE_OPEN | FILE_READ_ONLY_DEVICE,
|
||||||
TRUE, &TestDeviceObject);
|
Flags & TESTENTRY_NO_EXCLUSIVE_DEVICE ? FALSE : TRUE,
|
||||||
|
&TestDeviceObject);
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue