Fixed inheritance of LPVOID and simplified access to CoTaskMem*
Esse commit está contido em:
@@ -230,7 +230,7 @@ public interface Ole32 extends StdCallLibrary {
|
|||||||
* @param cb The size of the memory block to be allocated, in bytes.
|
* @param cb The size of the memory block to be allocated, in bytes.
|
||||||
* @return If the function succeeds, it returns the allocated memory block. Otherwise, it returns NULL.
|
* @return If the function succeeds, it returns the allocated memory block. Otherwise, it returns NULL.
|
||||||
*/
|
*/
|
||||||
LPVOID CoTaskMemAlloc(SIZE_T cb);
|
Pointer CoTaskMemAlloc(long cb);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Changes the size of a previously allocated block of task memory. This function changes the size of a previously
|
* Changes the size of a previously allocated block of task memory. This function changes the size of a previously
|
||||||
@@ -256,7 +256,7 @@ public interface Ole32 extends StdCallLibrary {
|
|||||||
* @param cb The size of the memory block to be reallocated, in bytes. This parameter can be 0.
|
* @param cb The size of the memory block to be reallocated, in bytes. This parameter can be 0.
|
||||||
* @return If the function succeeds, it returns the reallocated memory block. Otherwise, it returns NULL.
|
* @return If the function succeeds, it returns the reallocated memory block. Otherwise, it returns NULL.
|
||||||
*/
|
*/
|
||||||
LPVOID CoTaskMemRealloc(LPVOID pv, SIZE_T cb);
|
Pointer CoTaskMemRealloc(Pointer pv, long cb);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Frees a block of task memory previously allocated through a call to the {@link #CoTaskMemAlloc} or
|
* Frees a block of task memory previously allocated through a call to the {@link #CoTaskMemAlloc} or
|
||||||
@@ -265,6 +265,6 @@ public interface Ole32 extends StdCallLibrary {
|
|||||||
* pointed to by pv is invalid and can no longer be used.
|
* pointed to by pv is invalid and can no longer be used.
|
||||||
* @param pv A pointer to the memory block to be freed. If this parameter is NULL, the function has no effect.
|
* @param pv A pointer to the memory block to be freed. If this parameter is NULL, the function has no effect.
|
||||||
*/
|
*/
|
||||||
void CoTaskMemFree(LPVOID pv);
|
void CoTaskMemFree(Pointer pv);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ public abstract class Shell32Util {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String result = outPath.getValue().getWideString(0);
|
String result = outPath.getValue().getWideString(0);
|
||||||
Ole32.INSTANCE.CoTaskMemFree(new LPVOID(outPath.getPointer().getLong(0)));
|
Ole32.INSTANCE.CoTaskMemFree(outPath.getValue());
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -978,7 +978,7 @@ public interface WinDef extends StdCallLibrary {
|
|||||||
public static class PVOID extends PointerType {
|
public static class PVOID extends PointerType {
|
||||||
|
|
||||||
public PVOID() {
|
public PVOID() {
|
||||||
// TODO Auto-generated constructor stub
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -992,25 +992,23 @@ public interface WinDef extends StdCallLibrary {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Message parameter.
|
* LPVOID is simply a Windows API typedef for void* - to pointer to any type so to speak.
|
||||||
*/
|
*/
|
||||||
public static class LPVOID extends LONG_PTR {
|
public static class LPVOID extends PointerType {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new lpvoid.
|
* Instantiates a new instance to NULL.
|
||||||
*/
|
*/
|
||||||
public LPVOID() {
|
public LPVOID() {
|
||||||
this(0);
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new lpvoid.
|
* Instantiates a new instance using a given pointer.
|
||||||
*
|
* @param p the pointer
|
||||||
* @param value
|
|
||||||
* the value
|
|
||||||
*/
|
*/
|
||||||
public LPVOID(long value) {
|
public LPVOID(Pointer p) {
|
||||||
super(value);
|
super(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -110,21 +110,21 @@ public class Ole32Test extends TestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testCoTaskMemAlloc() {
|
public void testCoTaskMemAlloc() {
|
||||||
LPVOID ptr = Ole32.INSTANCE.CoTaskMemAlloc(new SIZE_T(256));
|
Pointer ptr = Ole32.INSTANCE.CoTaskMemAlloc(256);
|
||||||
|
|
||||||
assertTrue(ptr.longValue() != 0);
|
assertTrue(!ptr.equals(Pointer.NULL));
|
||||||
|
|
||||||
Ole32.INSTANCE.CoTaskMemFree(ptr);
|
Ole32.INSTANCE.CoTaskMemFree(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testCoTaskMemRealloc() {
|
public void testCoTaskMemRealloc() {
|
||||||
LPVOID ptr = Ole32.INSTANCE.CoTaskMemAlloc(new SIZE_T(256));
|
Pointer ptr = Ole32.INSTANCE.CoTaskMemAlloc(256);
|
||||||
|
|
||||||
assertTrue(ptr.longValue() != 0);
|
assertTrue(!ptr.equals(Pointer.NULL));
|
||||||
|
|
||||||
ptr = Ole32.INSTANCE.CoTaskMemRealloc(ptr, new SIZE_T(128));
|
ptr = Ole32.INSTANCE.CoTaskMemRealloc(ptr, 128);
|
||||||
|
|
||||||
assertTrue(ptr.longValue() != 0);
|
assertTrue(!ptr.equals(Pointer.NULL));
|
||||||
|
|
||||||
Ole32.INSTANCE.CoTaskMemFree(ptr);
|
Ole32.INSTANCE.CoTaskMemFree(ptr);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ public class Shell32Test extends TestCase {
|
|||||||
GUID guid = KnownFolders.FOLDERID_Fonts;
|
GUID guid = KnownFolders.FOLDERID_Fonts;
|
||||||
HRESULT hr = Shell32.INSTANCE.SHGetKnownFolderPath(guid, flags, token, outPath);
|
HRESULT hr = Shell32.INSTANCE.SHGetKnownFolderPath(guid, flags, token, outPath);
|
||||||
|
|
||||||
Ole32.INSTANCE.CoTaskMemFree(new LPVOID(outPath.getPointer().getLong(0)));
|
Ole32.INSTANCE.CoTaskMemFree(outPath.getValue());
|
||||||
|
|
||||||
assertTrue(W32Errors.SUCCEEDED(hr.intValue()));
|
assertTrue(W32Errors.SUCCEEDED(hr.intValue()));
|
||||||
}
|
}
|
||||||
|
|||||||
Referência em uma Nova Issue
Bloquear um usuário