BOOLEAN WINAPI AuditQuerySystemPolicy(
_In_ const GUID *pSubCategoryGuids,
_In_ ULONG PolicyCount,
_Out_ PAUDIT_POLICY_INFORMATION *ppAuditPolicy
);import com.sun.jna.platform.win32.Win32Exception;
import com.sun.jna.ptr.PointerByReference;
public class LocalAuditPolicyTest
{
public static void main(String[] args)
{
try
{
PointerByReference guidref = new PointerByReference(); <== How do you input the right GUID values? Not sure if that is correct?
PointerByReference bufptr = new PointerByReference();
boolean retStatus = WinAuditPolicy.INSTANCE.AuditQuerySystemPolicy(guidref, 1, bufptr);
WinAuditPolicy.AUDIT_POLICY_INFORMATION advapi32 = new WinAuditPolicy.AUDIT_POLICY_INFORMATION(bufptr.getValue());
System.out.printf("TEST ANSWER: %d, Status = %s%n", advapi32.AuditingInformation, retStatus);
}
catch (UnsatisfiedLinkError | NoClassDefFoundError | Win32Exception exc)
{
exc.printStackTrace();
}
}
}Hi,
Look at SetupApi and SetupApiTest:
https://github.com/java-native-access/jna/blob/84cc37948f7359ff3c51f17d993291c22a7884aa/contrib/platform/test/com/sun/jna/platform/win32/SetupApiTest.java
Christophe
Enter codeHDEVINFO SetupDiGetClassDevs(
_In_opt_ const GUID *ClassGuid,
_In_opt_ PCTSTR Enumerator,
_In_opt_ HWND hwndParent,
_In_ DWORD Flags
);
import com.sun.jna.platform.win32.Guid;
...
Guid.GUID monitorGuid = new Guid.GUID("E6F07B5F-EE97-4a90-B076-33F57BF4EAA7");
WinNT.HANDLE hDevInfo = SetupApi.INSTANCE.SetupDiGetClassDevs(monitorGuid, null, null,
SetupApi.DIGCF_PRESENT | SetupApi.DIGCF_DEVICEINTERFACE);
... pSubCategoryGuids [in]
A pointer to an array of GUID values that specify the subcategories for which to query audit policy. For a list of defined audit-policy subcategories, see Auditing Constants.
ppAuditPolicy [out]
A pointer to a single buffer that contains both an array of pointers to AUDIT_POLICY_INFORMATION structures and the structures themselves. The AUDIT_POLICY_INFORMATION structures specify the system audit policy for the subcategories specified by the pSubCategoryGuids array.import com.sun.jna.platform.win32.Guid.GUID;
import com.sun.jna.platform.win32.Win32Exception;
import com.sun.jna.ptr.PointerByReference;
public class LocalAuditPolicyTest
{
public static void main(String[] args)
{
try
{
PointerByReference bufptr = new PointerByReference();
//See guid constants in https://msdn.microsoft.com/en-us/library/windows/desktop/bb648638(v=vs.85).aspx).
GUID[] guidArray = {new GUID("69979850-797a-11d9-bed3-505054503030")};
boolean retStatus = WinAuditPolicy.INSTANCE.AuditQuerySystemPolicy(guidArray, 1, bufptr);
WinAuditPolicy.AUDIT_POLICY_INFORMATION advapi32 = new WinAuditPolicy.AUDIT_POLICY_INFORMATION(bufptr.getValue());
System.out.printf("TEST ANSWER: %d, Status = %s%n", advapi32.AuditingInformation, retStatus); <== How do you access advapi32.AuditingInformation as an array? }
catch (UnsatisfiedLinkError | NoClassDefFoundError | Win32Exception exc)
{
exc.printStackTrace();
}
}
}
import java.util.Arrays;
import java.util.List;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.Structure;
import com.sun.jna.platform.win32.Guid.GUID;
import com.sun.jna.ptr.PointerByReference;
import com.sun.jna.win32.StdCallLibrary;
import com.sun.jna.win32.W32APIOptions;
public interface WinAuditPolicy extends StdCallLibrary
{
WinAuditPolicy INSTANCE = (WinAuditPolicy) Native.loadLibrary("advapi32", WinAuditPolicy.class, W32APIOptions.UNICODE_OPTIONS);
public static class AUDIT_POLICY_INFORMATION extends Structure
{
public GUID AuditSubCategoryGuid; // GUID
public int AuditingInformation; // ULONG
public GUID AuditCategoryGuid; // GUID
public AUDIT_POLICY_INFORMATION()
{
}
public AUDIT_POLICY_INFORMATION(Pointer p)
{
super(p);
read();
}
@Override
protected List<String> getFieldOrder()
{
return Arrays.asList(new String[]{"AuditSubCategoryGuid", "AuditingInformation", "AuditCategoryGuid"});
}
}
boolean AuditQuerySystemPolicy(GUID[] guidptr, int count, PointerByReference bufptr);
void AuditFree(PointerByReference bufptr);
}
Pointer stopEnum=first.getPointer(0);
{
import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.Guid.GUID;
import com.sun.jna.platform.win32.Win32Exception;
import com.sun.jna.ptr.PointerByReference;
public class LocalAuditPolicyTest
{
public static void main(String[] args)
{
try
{
PointerByReference bufptr = new PointerByReference();
GUID[] guidArray = new GUID[1];
guidArray[0] = new GUID("6997984a-797a-11d9-bed3-505054503030");
boolean retStatus = WinAuditPolicy.INSTANCE.AuditQuerySystemPolicy(guidArray, guidArray.length, bufptr);
int i = 0;
// Read pointer to first object of array
Pointer first = bufptr.getValue();
// When we reach the data of the first object, we can stop
Pointer stopEnum = first.getPointer(0);
// Is our array read cursor at the first object i.e. end of pointer array?
while (!first.share(i * Pointer.SIZE).equals(stopEnum))
{
WinAuditPolicy.AUDIT_POLICY_INFORMATION advapi32 = new WinAuditPolicy.AUDIT_POLICY_INFORMATION(first.getPointer(i * Pointer.SIZE));
System.out.printf("TEST ANSWER: %d, Status = %s%n", advapi32.AuditingInformation, retStatus);
i++;
}
}
catch (UnsatisfiedLinkError | NoClassDefFoundError | Win32Exception exc)
{
exc.printStackTrace();
}
}
}import java.util.List;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.Structure;
import com.sun.jna.platform.win32.Advapi32;
import com.sun.jna.platform.win32.Guid.GUID;
import com.sun.jna.platform.win32.WinDef.ULONG;
import com.sun.jna.platform.win32.WinDef.ULONGByReference;
import com.sun.jna.ptr.PointerByReference;
import com.sun.jna.win32.W32APIOptions;
public class WindowsPolicyTest {
public static void main(String... args) {
WinAuditPolicy p = WinAuditPolicy.INSTANCE;
PointerByReference ppAuditCategoriesArray = new PointerByReference();
ULONGByReference pCountReturned = new ULONGByReference();
p.AuditEnumerateCategories(ppAuditCategoriesArray, pCountReturned);
System.out.println(pCountReturned.getValue());
int cnt = pCountReturned.getValue().intValue();
long offset = 0L;
Pointer ptr = ppAuditCategoriesArray.getValue();
List<GUID> categories = new ArrayList<>(cnt);
System.out.println("---------------- Categories --------------------------");
for (int i = 0; i < cnt; ++i) {
GUID guid = new GUID(ptr);
categories.add(guid);
offset += guid.size();
ptr = ppAuditCategoriesArray.getValue().share(offset);
System.out.println(guid.toGuidString());
}
System.out.println("------------------ Sub Categories ------------------------");
List<GUID> subcategories = new ArrayList<>();
for (GUID cat : categories) {
PointerByReference ppAuditSubCategoriesArray = new PointerByReference();
pCountReturned = new ULONGByReference();
if (p.AuditEnumerateSubCategories(cat, false, ppAuditSubCategoriesArray, pCountReturned)) {
cnt = pCountReturned.getValue().intValue();
offset = 0L;
ptr = ppAuditSubCategoriesArray.getValue();
for (int i = 0; i < cnt; ++i) {
GUID guid = new GUID(ptr);
subcategories.add(guid);
offset += guid.size();
ptr = ppAuditCategoriesArray.getValue().share(offset);
System.out.println(guid.toGuidString());
}
p.AuditFree(ppAuditSubCategoriesArray.getPointer());
}
}
System.out.println("==================");
for (GUID subcat : subcategories) {
WinAuditPolicy.AUDIT_POLICY_INFORMATION result = new WinAuditPolicy.AUDIT_POLICY_INFORMATION();
if (p.AuditQuerySystemPolicy(subcat, new ULONG(1), result)) {
WinAuditPolicy.AUDIT_POLICY_INFORMATION policy = result;
System.out.println(policy.AuditingInformation);
System.out.println(policy.AuditCategoryGuid.toGuidString());
System.out.println(policy.AuditSubCategoryGuid.toGuidString());
}
p.AuditFree(result.getPointer());
}
p.AuditFree(ppAuditCategoriesArray.getPointer());
}
public interface WinAuditPolicy extends Advapi32 {
WinAuditPolicy INSTANCE = Native.loadLibrary("advapi32", WinAuditPolicy.class, W32APIOptions.DEFAULT_OPTIONS);
/*
* typedef struct _AUDIT_POLICY_INFORMATION { GUID AuditSubCategoryGuid;
* ULONG AuditingInformation; GUID AuditCategoryGuid; }
* AUDIT_POLICY_INFORMATION, *PAUDIT_POLICY_INFORMATION;
*/
public static class AUDIT_POLICY_INFORMATION extends Structure {
public GUID AuditSubCategoryGuid;
public long AuditingInformation;
public GUID AuditCategoryGuid;
public static class ByReference extends AUDIT_POLICY_INFORMATION implements Structure.ByReference {
}
public static final List<String> FIELDS = createFieldsOrder("AuditSubCategoryGuid", "AuditingInformation",
"AuditCategoryGuid");
public AUDIT_POLICY_INFORMATION() {
super();
}
/**
* @param pointer
*/
public AUDIT_POLICY_INFORMATION(Pointer pointer) {
super(pointer);
}
@Override
protected List<String> getFieldOrder() {
return FIELDS;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("AUDIT_POLICY_INFORMATION [AuditSubCategoryGuid=").append(AuditSubCategoryGuid.toGuidString())
.append(", AuditingInformation=").append(AuditingInformation).append(", AuditCategoryGuid=")
.append(AuditCategoryGuid.toGuidString()).append("]");
return builder.toString();
}
}
boolean AuditEnumerateCategories(PointerByReference ppAuditCategoriesArray, ULONGByReference pCountReturned);
boolean AuditEnumerateSubCategories(GUID pAuditCategoryGuid, boolean bRetrieveAllSubCategories,
PointerByReference ppAuditSubCategoriesArray, ULONGByReference pCountReturned);
void AuditFree(Pointer buffer);
boolean AuditQuerySystemPolicy(GUID[] guidptr, ULONG count, AUDIT_POLICY_INFORMATION[] bufptr);
boolean AuditQuerySystemPolicy(GUID guidptr, ULONG count, AUDIT_POLICY_INFORMATION bufptr);
}
}--
You received this message because you are subscribed to the Google Groups "Java Native Access" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jna-users+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
for (GUID subcat : subcategories)
{
WinAuditPolicy.AUDIT_POLICY_INFORMATION result = new WinAuditPolicy.AUDIT_POLICY_INFORMATION();
-->> if (p.AuditQuerySystemPolicy(subcat, new ULONG(1), result)) <<-- ?? int COUNT = 1;
for (GUID subcat : subcategories)
{
PointerByReference pref = new PointerByReference();
if (p.AuditQuerySystemPolicy(subcat, new ULONG(COUNT), pref))
{
Pointer base = pref.getValue();
Pointer[] structPointers = base.getPointerArray(0, COUNT);
for (Pointer sptr : structPointers)
{
WinAuditPolicy.AUDIT_POLICY_INFORMATION policy = new WinAuditPolicy.AUDIT_POLICY_INFORMATION(sptr);
// policy.read(); <-- it doesnt work as it causes issues so I commented it out
System.out.println(policy.AuditingInformation);
System.out.println(policy.AuditCategoryGuid.toGuidString());
System.out.println(policy.AuditSubCategoryGuid.toGuidString());
}
p.AuditFree(base);
}
}import java.util.List;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.Structure;
import com.sun.jna.platform.win32.Advapi32;
import com.sun.jna.platform.win32.Guid.GUID;
import com.sun.jna.platform.win32.WinDef.ULONG;
import com.sun.jna.platform.win32.WinDef.ULONGByReference;
import com.sun.jna.ptr.PointerByReference;
import com.sun.jna.win32.W32APIOptions;
public interface WinAuditPolicy extends Advapi32
{
WinAuditPolicy INSTANCE = Native.loadLibrary("advapi32", WinAuditPolicy.class, W32APIOptions.DEFAULT_OPTIONS);
/*
* From
* https://msdn.microsoft.com/en-us/library/windows/desktop/aa965467(v=vs.85
* ).aspx
*
* typedef struct _AUDIT_POLICY_INFORMATION
* {
* GUID AuditSubCategoryGuid;
* ULONG AuditingInformation;
* GUID AuditCategoryGuid;
* } AUDIT_POLICY_INFORMATION, *PAUDIT_POLICY_INFORMATION;
*/
public static class AUDIT_POLICY_INFORMATION extends Structure
{
public GUID AuditSubCategoryGuid;
public long AuditingInformation;
public GUID AuditCategoryGuid;
public static class ByReference extends AUDIT_POLICY_INFORMATION implements Structure.ByReference
{
}
public static final List<String> FIELDS = createFieldsOrder("AuditSubCategoryGuid", "AuditingInformation", "AuditCategoryGuid");
public AUDIT_POLICY_INFORMATION()
{
super();
}
/**
* @param pointer
*/
public AUDIT_POLICY_INFORMATION(Pointer pointer)
{
super(pointer);
}
@Override
protected List<String> getFieldOrder()
{
return FIELDS;
}
@Override
public String toString()
{
StringBuilder builder = new StringBuilder();
builder.append("AUDIT_POLICY_INFORMATION [AuditSubCategoryGuid=").append(AuditSubCategoryGuid.toGuidString())
.append(", AuditingInformation=").append(AuditingInformation).append(", AuditCategoryGuid=")
.append(AuditCategoryGuid.toGuidString()).append("]");
return builder.toString();
}
}
boolean AuditEnumerateCategories(PointerByReference ppAuditCategoriesArray, ULONGByReference pCountReturned);
boolean AuditEnumerateSubCategories(GUID pAuditCategoryGuid, boolean bRetrieveAllSubCategories, PointerByReference ppAuditSubCategoriesArray, ULONGByReference pCountReturned);
void AuditFree(Pointer buffer);
--> boolean AuditQuerySystemPolicy(GUID guidptr, ULONG count, PointerByReference bufptr); <--
}Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)
at java.lang.reflect.Method.invoke(Method.java:620)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.Error: Invalid memory access
at com.sun.jna.Native.getInt(Native Method)
at com.sun.jna.Pointer.getInt(Pointer.java:589)
at com.sun.jna.Pointer.getValue(Pointer.java:391)
at com.sun.jna.Structure.readField(Structure.java:720)
at com.sun.jna.Structure.read(Structure.java:580)
at com.sun.jna.Pointer.getValue(Pointer.java:379)
at com.sun.jna.Structure.readField(Structure.java:720)
at com.sun.jna.Structure.read(Structure.java:580)
--> at WinAuditPolicy$AUDIT_POLICY_INFORMATION.<init>(WinAuditPolicy.java:51) <-- from my Structure.read() code
at WindowsPolicyTest.main(WindowsPolicyTest.java:84)
... 5 more public static class AUDIT_POLICY_INFORMATION extends Structure
{
public GUID AuditSubCategoryGuid;
public long AuditingInformation;
public GUID AuditCategoryGuid;
public static class ByReference extends AUDIT_POLICY_INFORMATION implements Structure.ByReference
{
}
public static final List<String> FIELDS = createFieldsOrder("AuditSubCategoryGuid", "AuditingInformation", "AuditCategoryGuid");
public AUDIT_POLICY_INFORMATION()
{
super();
}
/**
* @param pointer
*/
public AUDIT_POLICY_INFORMATION(Pointer pointer)
{
super(pointer);
--> read(); <--To unsubscribe from this group and stop receiving emails from it, send an email to jna-users+...@googlegroups.com.
for (GUID subcat : subcategories) {
PointerByReference policyRef = new PointerByReference();
if (p.AuditQuerySystemPolicy(subcat, new ULONG(1), policyRef)) {
base = policyRef.getValue();
if (base == null) {
continue;
}
System.out.println(new WinAuditPolicy.AUDIT_POLICY_INFORMATION(base));
p.AuditFree(base);
}
}
GUID g = new GUID("{0cce923f-69ae-11d9-bed3-505054503030}");
GUID g1 = new GUID("{0cce9227-69ae-11d9-bed3-505054503030}");
GUID.ByReference guidByRef= new GUID.ByReference();
GUID[] guids = (GUID[]) guidByRef.toArray(2);
guids[0].Data1 = g.Data1;
guids[0].Data2 = g.Data2;
guids[0].Data3 = g.Data3;
guids[0].Data4 = g.Data4;
guids[1].Data1 = g1.Data1;
guids[1].Data2 = g1.Data2;
guids[1].Data3 = g1.Data3;
guids[1].Data4 = g1.Data4;
PointerByReference ptrByRef = new PointerByReference();
if (p.AuditQuerySystemPolicy(guidByRef, new ULONG(2), ptrByRef)) {
Pointer base = ptrByRef.getValue();
if (base != null) {
offset = 0;
for (int i = 0; i < guids.length; ++i) {
WinAuditPolicy.AUDIT_POLICY_INFORMATION auditPolicy = new WinAuditPolicy.AUDIT_POLICY_INFORMATION(
base.share(offset));
System.out.println("====> " + auditPolicy);
offset += auditPolicy.size();
}
p.AuditFree(base);
}
}boolean AuditQuerySystemPolicy(GUID guidptr, ULONG count, PointerByReference bufptr);
boolean AuditQuerySystemPolicy(Pointer guidptr, ULONG count, PointerByReference bufptr);Structure.read() is used in the constructor (see code below) but it still causes an exception error. Are we sure Pointer[] structPointers = base.getPointerArray(0, COUNT) is not the reason?Sorry I am not fully knowledgeable in JNA yet and appreciate if someone please explain what is missing out in my final part (which contains the line: WinAuditPolicy.AUDIT_POLICY_INFORMATION policy = new WinAuditPolicy.AUDIT_POLICY_INFORMATION(sptr)) above?
public static class AUDIT_POLICY_INFORMATION extends Structure
{
public GUID AuditSubCategoryGuid;
public long AuditingInformation;
public GUID AuditCategoryGuid;
public static class ByReference extends AUDIT_POLICY_INFORMATION implements Structure.ByReference
{
}
public static final List<String> FIELDS = createFieldsOrder("AuditSubCategoryGuid", "AuditingInformation", "AuditCategoryGuid");
public AUDIT_POLICY_INFORMATION()
{
super();
}
/**
* @param pointer
*/
public AUDIT_POLICY_INFORMATION(Pointer pointer)
{
super(pointer);
--> read(); <--
}
@Override
protected List<String> getFieldOrder()
{
return FIELDS;
}
@Override
public String toString()
{
StringBuilder builder = new StringBuilder();
builder.append("AUDIT_POLICY_INFORMATION [AuditSubCategoryGuid=").append(AuditSubCategoryGuid.toGuidString())
.append(", AuditingInformation=").append(AuditingInformation).append(", AuditCategoryGuid=")
.append(AuditCategoryGuid.toGuidString()).append("]");
return builder.toString();
}
}
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)
at java.lang.reflect.Method.invoke(Method.java:620)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.Error: Invalid memory access
at com.sun.jna.Native.getInt(Native Method)
at com.sun.jna.Pointer.getInt(Pointer.java:589)
at com.sun.jna.Pointer.getValue(Pointer.java:391)
at com.sun.jna.Structure.readField(Structure.java:720)
at com.sun.jna.Structure.read(Structure.java:580)
at com.sun.jna.Pointer.getValue(Pointer.java:379)
at com.sun.jna.Structure.readField(Structure.java:720)
at com.sun.jna.Structure.read(Structure.java:580)
--> at WinAuditPolicy$AUDIT_POLICY_INFORMATION.<init>(WinAuditPolicy.java:51) <-- from my Structure.read() code
at WindowsPolicyTest.main(WindowsPolicyTest.java:84)
... 5 more
On Tuesday, July 25, 2017 at 5:42:56 AM UTC+10, runedelve wrote:
To unsubscribe from this group and stop receiving emails from it, send an email to jna-users+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
byte[] HEX_CHAR = new byte[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
for (GUID subcat : subcategories)
{
PointerByReference policyRef = new PointerByReference();
if (p.AuditQuerySystemPolicy(subcat, new ULONG(1), policyRef))
{
Pointer base = policyRef.getValue();
if (base == null)
{
continue;
}
StringBuffer sb = new StringBuffer();
for (int i = 0; i < base.SIZE; i++)
{
sb.append("0x").append((char) (HEX_CHAR[(base.getChar(i) & 0x00F0) >> 4])).append((char) (HEX_CHAR[base.getChar(i) & 0x000F])).append(" ");
}
System.out.printf("HEX DUMP: %s%n", sb.toString());
WinAuditPolicy.AUDIT_POLICY_INFORMATION policy = new WinAuditPolicy.AUDIT_POLICY_INFORMATION(base);
System.out.printf("Value: %s%n", policy.AuditingInformation);
System.out.println(policy.AuditCategoryGuid.toGuidString());
System.out.println(policy.AuditSubCategoryGuid.toGuidString());
p.AuditFree(base);
}
}Length found: 9
---------------- Categories --------------------------
{69979848-797A-11D9-BED3-505054503030}
{69979849-797A-11D9-BED3-505054503030}
{6997984A-797A-11D9-BED3-505054503030}
{6997984B-797A-11D9-BED3-505054503030}
{6997984C-797A-11D9-BED3-505054503030}
{6997984D-797A-11D9-BED3-505054503030}
{6997984E-797A-11D9-BED3-505054503030}
{6997984F-797A-11D9-BED3-505054503030}
{69979850-797A-11D9-BED3-505054503030}
------------------ Sub Categories ------------------------
{0CCE9210-69AE-11D9-BED3-505054503030}
{69979849-797A-11D9-BED3-505054503030}
{6997984A-797A-11D9-BED3-505054503030}
{6997984B-797A-11D9-BED3-505054503030}
{6997984C-797A-11D9-BED3-505054503030}
{0CCE9215-69AE-11D9-BED3-505054503030}
{69979849-797A-11D9-BED3-505054503030}
{6997984A-797A-11D9-BED3-505054503030}
{6997984B-797A-11D9-BED3-505054503030}
{6997984C-797A-11D9-BED3-505054503030}
{6997984D-797A-11D9-BED3-505054503030}
{6997984E-797A-11D9-BED3-505054503030}
{6997984F-797A-11D9-BED3-505054503030}
{69979850-797A-11D9-BED3-505054503030}
{00000000-0000-0000-A6E0-3A31F68F0000}
{00E08380-0000-0000-404C-DF0000000000}
{0CCE921D-69AE-11D9-BED3-505054503030}
{69979849-797A-11D9-BED3-505054503030}
{6997984A-797A-11D9-BED3-505054503030}
{6997984B-797A-11D9-BED3-505054503030}
{6997984C-797A-11D9-BED3-505054503030}
{6997984D-797A-11D9-BED3-505054503030}
{6997984E-797A-11D9-BED3-505054503030}
{6997984F-797A-11D9-BED3-505054503030}
{69979850-797A-11D9-BED3-505054503030}
{00000000-0000-0000-A6E0-3A31F68F0000}
{00E08380-0000-0000-404C-DF0000000000}
{00380039-0034-0034-3800-2D0031003000}
{00310030-005C-0000-A4E2-3338FF8F0010}
{00E12B90-0000-0000-20AB-DF0000000000}
{0CCE9228-69AE-11D9-BED3-505054503030}
{69979849-797A-11D9-BED3-505054503030}
{6997984A-797A-11D9-BED3-505054503030}
{0CCE922B-69AE-11D9-BED3-505054503030}
{69979849-797A-11D9-BED3-505054503030}
{6997984A-797A-11D9-BED3-505054503030}
{6997984B-797A-11D9-BED3-505054503030}
{6997984C-797A-11D9-BED3-505054503030}
{6997984D-797A-11D9-BED3-505054503030}
{0CCE922F-69AE-11D9-BED3-505054503030}
{69979849-797A-11D9-BED3-505054503030}
{6997984A-797A-11D9-BED3-505054503030}
{6997984B-797A-11D9-BED3-505054503030}
{6997984C-797A-11D9-BED3-505054503030}
{6997984D-797A-11D9-BED3-505054503030}
{0CCE9235-69AE-11D9-BED3-505054503030}
{69979849-797A-11D9-BED3-505054503030}
{6997984A-797A-11D9-BED3-505054503030}
{6997984B-797A-11D9-BED3-505054503030}
{6997984C-797A-11D9-BED3-505054503030}
{6997984D-797A-11D9-BED3-505054503030}
{0CCE923B-69AE-11D9-BED3-505054503030}
{69979849-797A-11D9-BED3-505054503030}
{6997984A-797A-11D9-BED3-505054503030}
{6997984B-797A-11D9-BED3-505054503030}
{0CCE923F-69AE-11D9-BED3-505054503030}
{69979849-797A-11D9-BED3-505054503030}
{6997984A-797A-11D9-BED3-505054503030}
{6997984B-797A-11D9-BED3-505054503030}
==================
HEX DUMP: 0x10 0x92 0xCE 0x0C 0xAE 0x69 0xD9 0x11
Value: 7608717530470809603
{11D9797A-D3BE-5050-5450-30301192CE0C}
{0CCE9210-69AE-11D9-BED3-505054503030}
HEX DUMP: 0x15 0x92 0xCE 0x0C 0xAE 0x69 0xD9 0x11
Value: 7608717534765776899
{11D9797A-D3BE-5050-5450-30301692CE0C}
{0CCE9215-69AE-11D9-BED3-505054503030}
HEX DUMP: 0x1D 0x92 0xCE 0x0C 0xAE 0x69 0xD9 0x11
Value: 7608717539060744195
{11D9797A-D3BE-5050-5450-30301E92CE0C}
{0CCE921D-69AE-11D9-BED3-505054503030}
HEX DUMP: 0x2B 0x92 0xCE 0x0C 0xAE 0x69 0xD9 0x11
Value: 7608717547650678787
{11D9797A-D3BE-5050-5450-30302C92CE0C}
{0CCE922B-69AE-11D9-BED3-505054503030}
HEX DUMP: 0x2F 0x92 0xCE 0x0C 0xAE 0x69 0xD9 0x11
Value: 7608717551945646080
{11D9797A-D3BE-5050-5450-30303092CE0C}
{0CCE922F-69AE-11D9-BED3-505054503030}
HEX DUMP: 0x35 0x92 0xCE 0x0C 0xAE 0x69 0xD9 0x11
Value: 7608717556240613376
{11D9797A-D3BE-5050-5450-30303692CE0C}
{0CCE9235-69AE-11D9-BED3-505054503030}
HEX DUMP: 0x3B 0x92 0xCE 0x0C 0xAE 0x69 0xD9 0x11
Value: 7608717560535580672
{11D9797A-D3BE-5050-5450-30303C92CE0C}
{0CCE923B-69AE-11D9-BED3-505054503030}
HEX DUMP: 0x3F 0x92 0xCE 0x0C 0xAE 0x69 0xD9 0x11
Value: 7608717564830547968
{11D9797A-D3BE-5050-5450-30304092CE0C}
{0CCE923F-69AE-11D9-BED3-505054503030}3F 92 CE 0C AE 69 D9 11
3B
35
2F
2B
1D
15
10
My previous dump contents were corrupted when I posted so here is the dump output file that Tim requested.
{<span style="color: #066;" class="styled-by
COUNT CATEGORY GUID CATEGORY NAME SUB CATEGORY GUID SUB CATEGORY NAME VALUE
1 {69979848-797A-11D9-BED3-505054503030} System {0CCE9210-69AE-11D9-BED3-505054503030} Security State Change 0
2 {69979848-797A-11D9-BED3-505054503030} System {0CCE9211-69AE-11D9-BED3-505054503030} Security System Extension 0
3 {69979848-797A-11D9-BED3-505054503030} System {0CCE9212-69AE-11D9-BED3-505054503030} System Integrity 0
4 {69979848-797A-11D9-BED3-505054503030} System {0CCE9213-69AE-11D9-BED3-505054503030} IPsec Driver 0
5 {69979848-797A-11D9-BED3-505054503030} System {0CCE9214-69AE-11D9-BED3-505054503030} Other System Events 0
6 {69979849-797A-11D9-BED3-505054503030} Logon/Logoff {0CCE9215-69AE-11D9-BED3-505054503030} Logon 0
7 {69979849-797A-11D9-BED3-505054503030} Logon/Logoff {0CCE9216-69AE-11D9-BED3-505054503030} Logoff 0
8 {69979849-797A-11D9-BED3-505054503030} Logon/Logoff {0CCE9217-69AE-11D9-BED3-505054503030} Account Lockout 0
9 {69979849-797A-11D9-BED3-505054503030} Logon/Logoff {0CCE9218-69AE-11D9-BED3-505054503030} IPsec Main Mode 0
10 {69979849-797A-11D9-BED3-505054503030} Logon/Logoff {0CCE9219-69AE-11D9-BED3-505054503030} IPsec Quick Mode 0
11 {69979849-797A-11D9-BED3-505054503030} Logon/Logoff {0CCE921A-69AE-11D9-BED3-505054503030} IPsec Extended Mode 0
12 {69979849-797A-11D9-BED3-505054503030} Logon/Logoff {0CCE921B-69AE-11D9-BED3-505054503030} Special Logon 0
13 {69979849-797A-11D9-BED3-505054503030} Logon/Logoff {0CCE921C-69AE-11D9-BED3-505054503030} Other Logon/Logoff Events 0
14 {69979849-797A-11D9-BED3-505054503030} Logon/Logoff {0CCE9243-69AE-11D9-BED3-505054503030} Network Policy Server 0
15 {69979849-797A-11D9-BED3-505054503030} Logon/Logoff {0CCE9247-69AE-11D9-BED3-505054503030} User / Device Claims 0
16 {69979849-797A-11D9-BED3-505054503030} Logon/Logoff {0CCE9249-69AE-11D9-BED3-505054503030} Group Membership 0
17 {6997984A-797A-11D9-BED3-505054503030} Object Access {0CCE921D-69AE-11D9-BED3-505054503030} File System 3
18 {6997984A-797A-11D9-BED3-505054503030} Object Access {0CCE921E-69AE-11D9-BED3-505054503030} Registry 3
19 {6997984A-797A-11D9-BED3-505054503030} Object Access {0CCE921F-69AE-11D9-BED3-505054503030} Kernel Object 3
20 {6997984A-797A-11D9-BED3-505054503030} Object Access {0CCE9220-69AE-11D9-BED3-505054503030} SAM 3
21 {6997984A-797A-11D9-BED3-505054503030} Object Access {0CCE9221-69AE-11D9-BED3-505054503030} Certification Services 3
22 {6997984A-797A-11D9-BED3-505054503030} Object Access {0CCE9222-69AE-11D9-BED3-505054503030} Application Generated 3
23 {6997984A-797A-11D9-BED3-505054503030} Object Access {0CCE9223-69AE-11D9-BED3-505054503030} Handle Manipulation 3
24 {6997984A-797A-11D9-BED3-505054503030} Object Access {0CCE9224-69AE-11D9-BED3-505054503030} File Share 3
25 {6997984A-797A-11D9-BED3-505054503030} Object Access {0CCE9225-69AE-11D9-BED3-505054503030} Filtering Platform Packet Drop 3
26 {6997984A-797A-11D9-BED3-505054503030} Object Access {0CCE9226-69AE-11D9-BED3-505054503030} Filtering Platform Connection 3
27 {6997984A-797A-11D9-BED3-505054503030} Object Access {0CCE9227-69AE-11D9-BED3-505054503030} Other Object Access Events 3
28 {6997984A-797A-11D9-BED3-505054503030} Object Access {0CCE9244-69AE-11D9-BED3-505054503030} Detailed File Share 3
29 {6997984A-797A-11D9-BED3-505054503030} Object Access {0CCE9245-69AE-11D9-BED3-505054503030} Removable Storage 3
30 {6997984A-797A-11D9-BED3-505054503030} Object Access {0CCE9246-69AE-11D9-BED3-505054503030} Central Policy Staging 3
31 {6997984B-797A-11D9-BED3-505054503030} Privilege Use {0CCE9228-69AE-11D9-BED3-505054503030} Sensitive Privilege Use 0
32 {6997984B-797A-11D9-BED3-505054503030} Privilege Use {0CCE9229-69AE-11D9-BED3-505054503030} Non Sensitive Privilege Use 0
33 {6997984B-797A-11D9-BED3-505054503030} Privilege Use {0CCE922A-69AE-11D9-BED3-505054503030} Other Privilege Use Events 0
34 {6997984C-797A-11D9-BED3-505054503030} Detailed Tracking {0CCE922B-69AE-11D9-BED3-505054503030} Process Creation 0
35 {6997984C-797A-11D9-BED3-505054503030} Detailed Tracking {0CCE922C-69AE-11D9-BED3-505054503030} Process Termination 0
36 {6997984C-797A-11D9-BED3-505054503030} Detailed Tracking {0CCE922D-69AE-11D9-BED3-505054503030} DPAPI Activity 0
37 {6997984C-797A-11D9-BED3-505054503030} Detailed Tracking {0CCE922E-69AE-11D9-BED3-505054503030} RPC Events 0
38 {6997984C-797A-11D9-BED3-505054503030} Detailed Tracking {0CCE9248-69AE-11D9-BED3-505054503030} Plug and Play Events 0
39 {6997984C-797A-11D9-BED3-505054503030} Detailed Tracking {0CCE924A-69AE-11D9-BED3-505054503030} Token Right Adjusted Events 0
40 {6997984D-797A-11D9-BED3-505054503030} Policy Change {0CCE922F-69AE-11D9-BED3-505054503030} Audit Policy Change 0
41 {6997984D-797A-11D9-BED3-505054503030} Policy Change {0CCE9230-69AE-11D9-BED3-505054503030} Authentication Policy Change 0
42 {6997984D-797A-11D9-BED3-505054503030} Policy Change {0CCE9231-69AE-11D9-BED3-505054503030} Authorization Policy Change 0
43 {6997984D-797A-11D9-BED3-505054503030} Policy Change {0CCE9232-69AE-11D9-BED3-505054503030} MPSSVC Rule-Level Policy Change 0
44 {6997984D-797A-11D9-BED3-505054503030} Policy Change {0CCE9233-69AE-11D9-BED3-505054503030} Filtering Platform Policy Change 0
45 {6997984D-797A-11D9-BED3-505054503030} Policy Change {0CCE9234-69AE-11D9-BED3-505054503030} Other Policy Change Events 0
46 {6997984E-797A-11D9-BED3-505054503030} Account Management {0CCE9235-69AE-11D9-BED3-505054503030} User Account Management 0
47 {6997984E-797A-11D9-BED3-505054503030} Account Management {0CCE9236-69AE-11D9-BED3-505054503030} Computer Account Management 0
48 {6997984E-797A-11D9-BED3-505054503030} Account Management {0CCE9237-69AE-11D9-BED3-505054503030} Security Group Management 0
49 {6997984E-797A-11D9-BED3-505054503030} Account Management {0CCE9238-69AE-11D9-BED3-505054503030} Distribution Group Management 0
50 {6997984E-797A-11D9-BED3-505054503030} Account Management {0CCE9239-69AE-11D9-BED3-505054503030} Application Group Management 0
51 {6997984E-797A-11D9-BED3-505054503030} Account Management {0CCE923A-69AE-11D9-BED3-505054503030} Other Account Management Events 0
52 {6997984F-797A-11D9-BED3-505054503030} DS Access {0CCE923B-69AE-11D9-BED3-505054503030} Directory Service Access 0
53 {6997984F-797A-11D9-BED3-505054503030} DS Access {0CCE923C-69AE-11D9-BED3-505054503030} Directory Service Changes 0
54 {6997984F-797A-11D9-BED3-505054503030} DS Access {0CCE923D-69AE-11D9-BED3-505054503030} Directory Service Replication 0
55 {6997984F-797A-11D9-BED3-505054503030} DS Access {0CCE923E-69AE-11D9-BED3-505054503030} Detailed Directory Service Replication 0
56 {69979850-797A-11D9-BED3-505054503030} Account Logon {0CCE923F-69AE-11D9-BED3-505054503030} Credential Validation 2
57 {69979850-797A-11D9-BED3-505054503030} Account Logon {0CCE9240-69AE-11D9-BED3-505054503030} Kerberos Service Ticket Operations 2
58 {69979850-797A-11D9-BED3-505054503030} Account Logon {0CCE9241-69AE-11D9-BED3-505054503030} Other Account Logon Events 2
59 {69979850-797A-11D9-BED3-505054503030} Account Logon {0CCE9242-69AE-11D9-BED3-505054503030} Kerberos Authentication Service 2A few questions before we close this:Q1 - Why do we need to put "public static class ByReference extends AUDIT_POLICY_INFORMATION implements Structure.ByReference{}" in my interface even it is empty? Is there a reason we have to put it?
Q2 - Why cant we just extend StdCallLibrary not Advapi32 in my interface because in most cases, StdCallLibrary is the correct interface to extend in sub-interfaces?
Q3 - Why cannot Pointer.getValue().getString(0) cover full the string length? ie it only prints out the first character of the string, but Pointer.getValue().getWideString(0) covers the full length. Why is that different between these 2?
Once again, thank you for your help. Much appreciated.Trevor
A few questions before we close this:Q1 - Why do we need to put "public static class ByReference extends AUDIT_POLICY_INFORMATION implements Structure.ByReference{}" in my interface even it is empty? Is there a reason we have to put it?
--