ReDim 是重新分配数组
GetFileVersionInfo
The GetFileVersionInfo function returns version information about a specified file. As with other file installation functions, GetFileVersionInfo works only with Win32 file images. It does not work with 16-bit Windows file images. BOOL GetFileVersionInfo(
  LPTSTR lptstrFilename,  // pointer to filename string
  DWORD dwHandle,         // ignored
  DWORD dwLen,            // size of buffer
  LPVOID lpData           // pointer to buffer to receive 
                          // file-version info.
);
 
Parameters
lptstrFilename 
Pointer to a null-terminated filename string that specifies the file of interest. 
Windows 95 and Windows 98: The short path form of the specified file name must be less than 126 characters. dwHandle 
This parameter is ignored. 
dwLen 
Specifies the size, in bytes, of the buffer pointed to by the lpData member. 
Call the GetFileVersionInfoSize function first to determine the size, in bytes, of a file's version information. The dwLen member should be equal to or greater than that value. If the buffer pointed to by lpData is not large enough, the function truncates the file's version information to the size of the buffer. lpData 
Pointer to a buffer to receive file-version information. 
You can use this value in a subsequent call to the VerQueryValue function to retrieve data from the buffer. The file version information is always in Unicode format. Return Values
If the function succeeds, the return value is nonzero.If the function fails, the return value is zero. To get extended error information, callGetLastError. VerQueryValue
The VerQueryValue function returns selected version information from the specified version-information resource. To retrieve the appropriate resource, before you call VerQueryValue, you must first call the GetFileVersionInfoSize function, and then the GetFileVersionInfo function. As with the other file installation functions, VerQueryValue works only with Win32 file images. It does not work with 16-bit Windows file images. BOOL VerQueryValue(
  const LPVOID pBlock, // address of buffer for version resource
  LPTSTR lpSubBlock,   // address of value to retrieve
  LPVOID *lplpBuffer,  // address of buffer for version value pointer
  PUINT puLen          // address of length buffer
);
 
Parameters
pBlock 
Pointer to the buffer containing the version-information resource returned by the GetFileVersionInfo function. 
lpSubBlock 
Pointer to a zero-terminated string specifying which version-information value to retrieve. The string must consist of names separated by backslashes (\) and it must have one of the following forms: Form Description 
\ Specifies the root block. The function retrieves a pointer to the VS_FIXEDFILEINFO structure for the version-information resource. 
\VarFileInfo\Translation Specifies the translation array in a Var variable information structure. The function retrieves a pointer to an array of language and code page identifiers. An application can use these identifiers to access a language-specific StringTable structure in the version-information resource. 
\StringFileInfo\lang-codepage\string-name Specifies a value in a language-specific StringTable structure. The lang-codepage name is a concatenation of a language and code page identifier pair found as a DWORD in the translation array for the resource. Here the lang-codepage name must be specified as a hexadecimal string. The string-name name must be one of the predefined strings described in the following Res section. The function retrieves a string value specific to the language and code page indicated.  
lplpBuffer 
Pointer to a variable that receives a pointer to the requested version information in the buffer pointed to by pBlock. The memory pointed to by *lplpBuffer is freed when the associated pBlock memory is freed. 
puLen 
Pointer to a buffer that receives the length, in characters, of the version-information value. 
Return Values
If the specified version-information structure exists, and version information is available, the return value is nonzero. If the address of the length buffer is zero, no value is available for the specified version-information name.If the specified name does not exist or the specified resource is not valid, the return value is zero. 
MoveMemory
The MoveMemory function moves a block of memory from one location to another. VOID MoveMemory (
  PVOID Destination,  // address of move destination
  CONST VOID *Source, // address of block to move
  DWORD Length        // size, in bytes, of block to move
);
 
Parameters
Destination 
Pointer to the starting address of the destination of the move. 
Source 
Pointer to the starting address of the block of memory to move. 
Length 
Specifies the size, in bytes, of the block of memory to move. 
Return Values
This function has no return value.