ReactOS 0.4.16-dev-306-g647d351
atomtest.c
Go to the documentation of this file.
1#include <stdio.h>
2#include <string.h>
3#define WIN32_NO_STATUS
4#include <windows.h>
5#define NTOS_MODE_USER
6#include <ndk/ntndk.h>
7
8#define BUFFER_SIZE 256
9
10int main(int argc, char* argv[])
11{
12 PRTL_ATOM_TABLE AtomTable = NULL;
13 RTL_ATOM AtomA = -1, AtomB = -1, AtomC = -1;
16 ULONG NameLength, Data1, Data2;
17
18 printf("Atom table test app\n\n");
19
20 printf("RtlCreateAtomTable()\n");
22 &AtomTable);
23 printf(" Status 0x%08lx\n", Status);
24
25 if (NT_SUCCESS(Status))
26 {
27 printf(" AtomTable %p\n", AtomTable);
28
29 printf("RtlAddAtomToAtomTable()\n");
30 Status = RtlAddAtomToAtomTable(AtomTable,
31 L"TestAtomA",
32 &AtomA);
33 printf(" Status 0x%08lx\n", Status);
34 if (NT_SUCCESS(Status))
35 {
36 printf(" AtomA 0x%x\n", AtomA);
37 }
38
39 printf("RtlAddAtomToAtomTable()\n");
40 Status = RtlAddAtomToAtomTable(AtomTable,
41 L"TestAtomB",
42 &AtomB);
43 printf(" Status 0x%08lx\n", Status);
44 if (NT_SUCCESS(Status))
45 {
46 printf(" AtomB 0x%x\n", AtomB);
47 }
48
49
50 printf("RtlLookupAtomInAtomTable()\n");
52 L"TestAtomA",
53 &AtomC);
54 printf(" Status 0x%08lx\n", Status);
55 if (NT_SUCCESS(Status))
56 {
57 printf(" AtomC 0x%x\n", AtomC);
58 }
59
60
61 printf("RtlPinAtomInAtomTable()\n");
62 Status = RtlPinAtomInAtomTable(AtomTable,
63 AtomC);
64 printf(" Status 0x%08lx\n", Status);
65
66 printf("RtlPinAtomInAtomTable()\n");
67 Status = RtlPinAtomInAtomTable(AtomTable,
68 AtomC);
69 printf(" Status 0x%08lx\n", Status);
70
71
72// printf("RtlDeleteAtomFromAtomTable()\n");
73// Status = RtlDeleteAtomFromAtomTable(AtomTable,
74// AtomC);
75// printf(" Status 0x%08lx\n", Status);
76
77
78// printf("RtlEmptyAtomTable()\n");
79// Status = RtlEmptyAtomTable(AtomTable,
80// TRUE);
81// printf(" Status 0x%08lx\n", Status);
82
83
84// printf("RtlLookupAtomInAtomTable()\n");
85// Status = RtlLookupAtomInAtomTable(AtomTable,
86// L"TestAtomA",
87// &AtomC);
88// printf(" Status 0x%08lx\n", Status);
89
90
91 printf("RtlQueryAtomInAtomTable()\n");
92 NameLength = sizeof(WCHAR) * BUFFER_SIZE;
94 AtomC,
95 &Data1,
96 &Data2,
97 Buffer,
98 &NameLength);
99 printf(" Status 0x%08lx\n", Status);
100 if (NT_SUCCESS(Status))
101 {
102 printf(" RefCount %ld\n", Data1);
103 printf(" PinCount %ld\n", Data2);
104 printf(" NameLength %lu\n", NameLength);
105 printf(" AtomName: %S\n", Buffer);
106 }
107
108 printf("RtlDestroyAtomTable()\n");
109 RtlDestroyAtomTable(AtomTable);
110
111
112 printf("Atom table test app finished\n");
113 }
114
115 return(0);
116}
static int argc
Definition: ServiceArgs.c:12
#define BUFFER_SIZE
Definition: atomtest.c:8
LONG NTSTATUS
Definition: precomp.h:26
Definition: bufpool.h:45
#define NULL
Definition: types.h:112
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
int main()
Definition: test.c:6
#define printf
Definition: freeldr.h:97
Status
Definition: gdiplustypes.h:25
unsigned short RTL_ATOM
Definition: atom.c:42
struct atom_table ** PRTL_ATOM_TABLE
Definition: atom.c:43
#define argv
Definition: mplay32.c:18
NTSYSAPI NTSTATUS NTAPI RtlPinAtomInAtomTable(_In_ PRTL_ATOM_TABLE AtomTable, _In_ RTL_ATOM Atom)
NTSYSAPI NTSTATUS NTAPI RtlDestroyAtomTable(IN PRTL_ATOM_TABLE AtomTable)
Definition: atom.c:203
NTSYSAPI NTSTATUS NTAPI RtlAddAtomToAtomTable(_In_ PRTL_ATOM_TABLE AtomTable, _In_ PWSTR AtomName, _Out_ PRTL_ATOM Atom)
NTSYSAPI NTSTATUS NTAPI RtlLookupAtomInAtomTable(_In_ PRTL_ATOM_TABLE AtomTable, _In_ PWSTR AtomName, _Out_ PRTL_ATOM Atom)
NTSYSAPI NTSTATUS NTAPI RtlCreateAtomTable(_In_ ULONG TableSize, _Inout_ PRTL_ATOM_TABLE *AtomTable)
NTSYSAPI NTSTATUS NTAPI RtlQueryAtomInAtomTable(_In_ PRTL_ATOM_TABLE AtomTable, _In_ RTL_ATOM Atom, _Out_opt_ PULONG RefCount, _Out_opt_ PULONG PinCount, _Out_opt_z_bytecap_(*NameLength) PWSTR AtomName, _Inout_opt_ PULONG NameLength)
#define L(x)
Definition: ntvdm.h:50
uint32_t ULONG
Definition: typedefs.h:59
__wchar_t WCHAR
Definition: xmlstorage.h:180